Skip to content

release skill: own PGXS-target modifications, pin DEBUG exception, auto-sync preflight - #68

Merged
jnasbyupgrade merged 2 commits into
Postgres-Extensions:masterfrom
jnasbyupgrade:release-skill/auto-sync-and-api-surface
Jul 31, 2026
Merged

release skill: own PGXS-target modifications, pin DEBUG exception, auto-sync preflight#68
jnasbyupgrade merged 2 commits into
Postgres-Extensions:masterfrom
jnasbyupgrade:release-skill/auto-sync-and-api-surface

Conversation

@jnasbyupgrade

Copy link
Copy Markdown
Contributor

Summary

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.

  1. Tighten the "Known gap" in CLAUDE.md's User-Facing API Surface
    definition.
    pgxntool's own modifications to PGXS-named targets (e.g.
    installcheck: install from issue #79, test's prerequisites, clean's
    EXTRA_CLEAN additions) are now explicitly IN SCOPE for API surface
    tracking, rather than being excluded just because the target shares a
    name with a PGXS target. The underlying PGXS behavior pgxntool didn't
    touch stays out of scope; pgxntool's own authored changes to a
    shared-name target no longer do. This has already caused two real misses
    (a stale README claim, and installcheck: install/#79 almost being waved
    through) — this settles the policy instead of leaving it open-ended.

  2. Pin down the DEBUG documentation exception. CLAUDE.md's item 5 now
    states explicitly that DEBUG's absence from README.asc/CLAUDE.md
    documentation is intentional and not itself a finding, so future
    API-documentation review agents don't re-flag it. This is framed as the
    first entry in a general pattern (standing exceptions get recorded here
    rather than re-litigated release after release). SKILL.md's review-agent
    launch section now points agents at this list instead of duplicating it.

  3. Auto-sync in release-preflight.sh. The sync-status check no longer
    just warns when local master is behind upstream — it self-heals: fetches
    upstream, and if local is a clean fast-forward behind (verified via
    git merge-base --is-ancestor), it fast-forwards with git merge --ff-only (never a plain merge/rebase — master must only ever
    fast-forward, never gain a merge commit) and pushes the result to
    origin (the fork remote). If --ff-only itself refuses, or local has
    commits upstream lacks (true divergence), that's a hard error requiring
    manual resolution — never auto-merged, rebased, or forced. Found during
    2.3.0 prep, where both pgxntool and pgxntool-test local masters and forks
    had drifted behind upstream. SKILL.md's "Run Pre-flight Checks" prose
    updated to match.

Test plan

  • bash -n .claude/skills/release/scripts/release-preflight.sh — syntax check passes
  • Ran the modified script against the real (in-sync) pgxntool/pgxntool-test checkouts — reports "in sync", no errors, no unwanted pushes
  • Extracted the new sync_repo function and exercised it against throwaway local git repos simulating both scenarios:
    • clean fast-forward case: fast-forwards local master and pushes to the fork remote correctly
    • true divergence case (local has a commit upstream lacks): reported as an error, nothing merged/pushed/forced
  • Confirmed set -euo pipefail doesn't abort the script on the expected non-zero exit from merge-base --is-ancestor or a refused merge --ff-only

🤖 Generated with Claude Code

…to-sync preflight

Three related improvements to the /release skill and its supporting
definitions, found during 2.3.0 release prep:

1. Tighten the "User-Facing API Surface" known gap in CLAUDE.md: pgxntool's
   own modifications to PGXS-named targets (added/changed prerequisites,
   recipe bodies, EXTRA_CLEAN entries, etc.) are now explicitly in scope,
   rather than hiding behind "it's a PGXS target" because the old exclusion
   was by name alone. This has now caused two real misses (a stale README
   claim about test's prerequisites, and installcheck: install / issue #79
   nearly being waved through during 2.3.0 prep) -- this settles the policy
   instead of leaving it as an open "revisit if it keeps happening" gap.

2. Make explicit that DEBUG's absence from README.asc/CLAUDE.md is an
   intentional, standing exception, not a finding -- API-documentation
   review agents must not re-flag it. This is the first entry in what's
   now a general pattern: intentional non-documentation decisions get
   recorded in the Terminology section so they aren't re-litigated release
   after release. SKILL.md's review-agent launch section now points at
   this list instead of duplicating it.

3. release-preflight.sh's sync check now self-heals instead of only
   warning: if local master is a clean fast-forward behind upstream, the
   script fast-forwards it (git merge --ff-only, never a plain merge) and
   pushes the result to origin (the fork). Master is only ever updated by
   fast-forward -- if --ff-only itself refuses, or local has commits
   upstream lacks, that's treated as a hard error requiring manual
   resolution, never auto-merged, rebased, or forced. Found during 2.3.0
   prep, where both repos' local masters and forks had drifted behind
   upstream. SKILL.md's pre-flight section prose updated to match.

Co-Authored-By: Claude <noreply@anthropic.com>
@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: 48c69eb7-31cb-4f99-af4b-89a99d2b251a

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.

pgxntool's release PR body read "Companion (do-not-merge, CI trigger
only): pgxntool-test release-VERSION" -- the do-not-merge parenthetical
described the companion PR, but read in isolation it looked like it
applied to the PR itself. During 2.3.0 this caused the reviewer to
mistake the real release PR for a do-not-merge one. Both PR body
templates now state plainly, as their own sentence, whether that PR
should or shouldn't be merged, before ever mentioning the other one, and
cross-reference each other's PR number.
@jnasbyupgrade
jnasbyupgrade merged commit 8f89c31 into Postgres-Extensions:master Jul 31, 2026
10 checks passed
@jnasbyupgrade
jnasbyupgrade deleted the release-skill/auto-sync-and-api-surface branch July 31, 2026 22:55
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