Skip to content

release skill: own PGXS-target modifications, pin DEBUG exception, gh-repo-sync preflight - #69

Merged
jnasbyupgrade merged 3 commits into
Postgres-Extensions:masterfrom
jnasbyupgrade:release-skill/combined-improvements
Jul 31, 2026
Merged

release skill: own PGXS-target modifications, pin DEBUG exception, gh-repo-sync preflight#69
jnasbyupgrade merged 3 commits into
Postgres-Extensions:masterfrom
jnasbyupgrade:release-skill/combined-improvements

Conversation

@jnasbyupgrade

Copy link
Copy Markdown
Contributor

Summary

Combines what was previously merged separately as #68 with a follow-up
improvement to the same preflight script, into one PR (master was reset
to before #68 and this replaces it).

  • CLAUDE.md: pgxntool's own modifications to PGXS-named targets (e.g.
    installcheck's prerequisites) are now explicitly in-scope for the
    user-facing API surface definition, rather than excluded by the old
    "Known gap" clause -- this loophole caused two real documentation misses
    (a stale README claim about test's prerequisites, and near-miss on
    issue #79 during 2.3.0 release prep).
  • CLAUDE.md: DEBUG's non-documentation is now pinned as a standing,
    non-flaggable exception, so future /release API-doc reviews don't
    re-litigate it every release.
  • .claude/skills/release/scripts/release-preflight.sh: local master and
    the fork (origin) are now synced from upstream using gh repo sync
    (the CLI equivalent of GitHub's "Sync fork" button) instead of
    hand-rolled git fetch/merge/push plumbing. Both local and fork are
    checked and fixed independently and unconditionally (the prior version
    only checked the fork when local was also behind, missing the case
    where local already matched upstream but the fork was separately
    stale). Fast-forward only, never --force -- fails loudly rather than
    creating a merge commit or hard-resetting if a true fast-forward isn't
    possible on either side.
  • Also fixes a real bug caught during testing: [ -n "$output" ] && echo ... silently killed the script under set -e whenever a sync was a
    no-op (the common case) -- the short-circuited && chain's own exit
    status is non-zero when the right side doesn't run. Fixed with a proper
    if/fi block.
  • .claude/skills/release/SKILL.md: prose updated to match, plus a fix
    for ambiguous PR-body wording in the release-PR templates that caused a
    real mix-up during 2.3.0 (a reviewer briefly mistook the real release PR
    for the do-not-merge companion PR).

Test plan

…to-sync preflight (Postgres-Extensions#68)

Three related dev-tooling improvements to the `/release` skill and its
supporting definitions, all found/decided during 2.3.0 release prep. No
changes to pgxntool-test's own test suite or template.
…lumbing

Replaces the manual git fetch/merge-base/merge --ff-only/push sequence
with 'gh repo sync' -- the CLI equivalent of GitHub's 'Sync fork' button.
It's fast-forward-only by default and refuses (non-zero exit) rather than
creating a merge commit if a true fast-forward isn't possible, same
guarantee as before with less code to maintain.

Also fixes a real bug in the prior version: local and the fork (origin)
are now checked and synced independently and unconditionally, not just
when local was found behind. The previous version only checked/pushed the
fork inside the 'local was behind' branch, so if local already matched
upstream (e.g. from an earlier session) but the fork was separately stale,
it would silently skip fixing the fork.

Caught via manual testing: '[ -n "$output" ] && echo ...' silently killed
the script under 'set -e' whenever a sync was a no-op (output empty) --
the short-circuited && chain's own exit status is non-zero when the right
side doesn't run. Fixed with a proper if/fi block.
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d2f566fc-0c98-4605-a3ac-b70ad7b9dbe3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…t -e

'slug=$(fork_slug "$repo_path")' was a bare, unguarded assignment. If
fork_slug fails (e.g. no 'origin' remote configured), set -e aborts the
whole script immediately -- before errors+=() is ever set, before
=== Summary ===, before === Remote Names ===. Same bug class as the
output-guard fix earlier in this file, just missed on this line. Caught
by a background test agent reproducing it in an isolated scratch repo.

Low-probability in practice (every real clone here has both origin and
upstream configured), but the fix is cheap and closes the gap.
@jnasbyupgrade
jnasbyupgrade merged commit e2f8f72 into Postgres-Extensions:master Jul 31, 2026
10 checks passed
@jnasbyupgrade
jnasbyupgrade deleted the release-skill/combined-improvements branch July 31, 2026 23:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant