Skip to content

Commit b337a13

Browse files
baozhoutaoclaude
andauthored
docs(ci): the bump-level rule — an additive widening of a published surface is at least minor (#15380)
Record the maintainer's ruling (2026-09-04, decision batch #35) where authors already read the changeset rules: the `Check Changeset` step's route-1 prose in `.github/workflows/pr-automation.yml`, plus a one-line cross-reference from the header of `scripts/check-changeset-no-major.mjs`, which already carries the launch-window reasoning the rule's last sentence depends on. Prose only: no new gate, no behaviour change, nothing retro-fixed. Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk Co-authored-by: Claude <noreply@anthropic.com>
1 parent 095df7f commit b337a13

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

.github/workflows/pr-automation.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,23 @@ jobs:
664664
1. It releases something
665665
-> run 'pnpm changeset' and name the packages it releases.
666666
667+
WHICH LEVEL: A purely additive widening of a published package's
668+
public surface (a new exported symbol on an `index`, a new accepted
669+
key or value) takes at least `minor`. The commit type may raise a
670+
bump but never lower it below what the act requires; a `fix(` that
671+
widens an index is therefore `minor`, and a `fix(` that changes no
672+
public surface stays `patch`. During the launch window `major` stays
673+
refused by `check-changeset-no-major` and breaking-ness is carried by
674+
the BREAKING banner plus the ADR-0087 disposition, not by the level.
675+
Ruled by the maintainer on 2026-09-04 (decision batch #35) on #15294,
676+
which recorded two contract reviews reading the repo's own history to
677+
OPPOSITE bumps for the same additive act. The commit type is not the
678+
discriminator it looked like: it correlates with the act, and when
679+
they disagree the act wins. The 64 historical `patch` precedents are
680+
pre-rule and nothing is retro-fixed. This is prose, not a gate -- no
681+
check computes it; `check-changeset-no-major.mjs` refuses `major` and
682+
says why in its header, and the two remaining levels are yours.
683+
667684
2. It releases nothing (.github/, .claude/, skills/, docs/, content/,
668685
examples/, tests-only, and the like)
669686
-> apply the 'skip-changeset' label. <<< PREFERRED

scripts/check-changeset-no-major.mjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@
5151
* change that states neither). They are not documentation niceties — during the
5252
* window they are the only signal there is.
5353
*
54+
* CHOOSING BETWEEN THE TWO LEVELS THIS GUARD LEAVES: a purely additive widening
55+
* of a published package's public surface takes at least `minor`, and the commit
56+
* type may raise a bump but never lower it — the rule is written out in full in
57+
* the `Check Changeset` step's prose in `.github/workflows/pr-automation.yml`
58+
* ("WHICH LEVEL"), where the author who is told a changeset is missing reads it
59+
* (maintainer ruling, 2026-09-04 decision batch #35, on #15294).
60+
*
5461
* ⇒ **THIS GUARD IS WHAT GETS DISARMED AT GA.** The end condition lives in the
5562
* file that enforces the convention, rather than in a prose home elsewhere, so
5663
* that declared = enforced stays in one place: whoever closes the launch window

0 commit comments

Comments
 (0)