Skip to content

docs: Release-As is always the current version plus one patch; a behaviour-changing refactor is not a hidden type - #74

Merged
TzuH-Hsu merged 4 commits into
mainfrom
docs/73-release-as-patch-only
Sep 21, 2026
Merged

TzuH-Hsu merged 4 commits into
mainfrom
docs/73-release-as-patch-only

Conversation

@TzuH-Hsu

Copy link
Copy Markdown
Owner

Summary

Re-lands commit 5155034, the answer to Codex's two P2 findings on #71, which was pushed after #71 had already been squash-merged and its branch deleted, so it never reached main. Cherry-picked verbatim (-x).

  • skills/branch-and-commit rule 3: drop "a behaviour-changing refactor" as an example of a hidden-type change that ships via Release-As — a refactor that changes behaviour is a fix or a feat. Say first that a change users notice is usually not a hidden type at all, and bound the footer: X.Y.Z is the current version plus one patch, pointing at release-management rule 2.
  • skills/release-management rule 2 ("version bump is derived, not chosen"): state the one exception — a genuinely hidden-type change that adopters must pick up — with the same patch-only bound, and note that a hidden type also keeps the change out of the changelog. The pitfall now refers to rule 2 instead of restating the recipe.

Docs only, hidden type, no release.

Related issue

Closes #73

Validation

Pick validation depth by blast radius. A level that applies but could not run becomes a RISK: line below. See AGENTS.md for the validation ladder.

  • L0 static — make lint
  • L1 unit — make test (placeholder target; make check runs the node tests, both green)
  • L2 integration — not applicable, prose only
  • L3 e2e / preview — not applicable

Risk / rollback

Rollback: revert this PR; two skill files change, nothing executes them

Checklist

Before merging:

  • Conventional Commit PR title (<type>: <description>)
  • Linked issue using "Closes #N"
  • No secrets, no *.local.md files committed
  • Documentation updated where affected

…ule 2; drop the refactor example

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 5155034)
@TzuH-Hsu TzuH-Hsu added the area:skills Skills knowledge modules label Sep 21, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 21, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-21T04:47:16.925654Z 21df179 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aca01cf990

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/branch-and-commit/SKILL.md Outdated
Comment on lines +34 to +35
"No version bump" means release-please does not open a release PR for it at
all — it is a hidden type. A change users will notice that only fits a hidden
type (a new CI gate under `ci`, a behaviour-changing `refactor`) still has to
ship: put a `Release-As: X.Y.Z` footer in the PR body (the body becomes the
squash commit's message) and release-please cuts that version.
all — it is a hidden type, and it is also left out of the changelog. So first

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not claim hidden commits stay out of the changelog

When a non-triggering commit carries Release-As, release-please can still render that commit in the generated changelog. This repository already demonstrates the opposite of the new guidance: docs: commit 819ce60 used Release-As: 0.5.2, and CHANGELOG.md lines 6–8 include it under “Documentation.” Conflating “does not trigger a release” with “is omitted from the changelog” will therefore mislead maintainers; document these as separate behaviors.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, and verified in the source: conventional-changelog-conventionalcommits writer-opts.js sets discard = false for any commit whose footer or body matches Release-As, so the carrier is rendered under its type's section whatever the type, while the other hidden-type commits in the range stay out. Both skills now say exactly that, plus the consequence this repository already shows — v0.5.2's changelog names the docs follow-up that carried the footer and not the CI gate it released — and tell the author to put the footer on the PR that is the change (9b0caf8).

…tever its type

Hidden-type commits are omitted from the generated changelog, but the one
that carries the `Release-As` footer is not: conventional-changelog's
conventionalcommits writer un-discards it ("Add an entry in the CHANGELOG
if special Release-As footer is used", writer-opts.js). v0.5.2 shows the
consequence — the changelog lists the docs follow-up that carried the
footer and not the CI gate it released. Say so, and say the footer goes on
the PR that is the change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9b0caf82d2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/branch-and-commit/SKILL.md Outdated
Comment on lines +40 to +41
the body becomes the squash commit's message — with X.Y.Z the current version
plus one patch; anything larger means the type was wrong (see

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve pending semver bumps before forcing a patch

When a release PR already contains an unreleased feat or breaking commit, this unconditional patch-only recipe can under-version the whole release: Release-As overrides release-please's normal version calculation for the accumulated commit range, so a later hidden-type PR specifying the current version plus one patch can turn a pending minor or major release into a patch. Require checking the unreleased commits or merging the existing release first rather than saying that any larger version proves the hidden commit's type was wrong.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed — buildNewVersion returns the footer's version for the whole range whenever any commit carries it. Both skills now say to use the footer only when no release is pending, and that with a release PR already open the hidden-type change should simply ride along without a footer (or the pending release be merged first) (0a058ea).

…s the computed version for the whole range

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0a058eafa9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/branch-and-commit/SKILL.md Outdated
Comment on lines +40 to +41
the body becomes the squash commit's message — with X.Y.Z the current version
plus one patch; anything larger means the type was wrong (see

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the configured initial release version

For a freshly de-templated adopter repository, no current release exists: docs/setup/bootstrap.md resets the manifest to 0.0.0 and deliberately configures the first release as 0.1.0, including Release-As: 0.1.0 as the immediate-release recipe. Applying this new unconditional “current version plus one patch” rule either yields an undefined version or incorrectly suggests 0.0.1; carve out the first release and use the configured initial-version there.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added to rule 2: before the first release there is no current version — that release is numbered by initial-version (0.1.0 here, per docs/setup/bootstrap.md), so a footer there names that version. (bootstrap.md does not itself recommend a Release-As: 0.1.0 footer; the first feat/fix triggers v0.1.0 without one.) (21df179)

Comment thread skills/branch-and-commit/SKILL.md Outdated
Comment on lines +42 to +45
`skills/release-management` rule 2). Only do this when no release is already
pending: the footer overrides the computed version for every commit since the
last tag, so with a release PR open (an unreleased `feat` or `fix`) a patch
footer would under-version it — leave the footer out and let the change ride

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep the Release-As rule in one canonical skill

This repeats the full Release-As policy in branch-and-commit while also pointing to the same policy in release-management, contrary to the one-home/link-not-copy rule in skills/docs-hygiene/SKILL.md. The copies already differ over whether merging the pending release first is an option, and corrections such as the first-release exception can now leave contradictory agent guidance; keep the complete rule in release-management and make this section only link to it.

AGENTS.md reference: AGENTS.md:L73-L73

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done: branch-and-commit rule 3 now only says hidden types ship nothing and points at release-management rule 2 for the Release-As recipe, its limits and the changelog exception; the full rule lives in one place (21df179).

…rst-release clause

branch-and-commit rule 3 now points at release-management rule 2 instead of
restating it (docs-hygiene rule 2, one home per fact). Rule 2 gains the
first-release case: there is no current version before the first release,
which `initial-version` numbers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@TzuH-Hsu
TzuH-Hsu merged commit 4d3d064 into main Sep 21, 2026
1 check passed
@TzuH-Hsu
TzuH-Hsu deleted the docs/73-release-as-patch-only branch September 21, 2026 04:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:skills Skills knowledge modules

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Task: land the Codex fixes to #71 that were pushed after the merge

1 participant