From 116ccbca72d3024949f180f8dc76e9ac7f34542a Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 12:30:05 +0000 Subject: [PATCH] =?UTF-8?q?docs(agents):=20a=20PR=20declaring=20clause-?= =?UTF-8?q?=E2=91=A1=20grades=20its=20changeset=20at=20least=20minor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Post-Task Checklist's changeset rule and the maintainer's level ruling disagreed on the same PR: a bug fix in a released package takes `patch`, while a purely additive widening of a published package's public surface takes at least `minor`. An author declaring `Clause-②: yes` could satisfy either and cite it, and which one got caught depended on what the gate could see. The checklist item now carries the ruled exception, and the ratchet ceiling for AGENTS.md rises by the one line it costs, with the ruling recorded in the map's ledger-comment form. The LEVEL axis of check-changeset-no-major.mjs already judges a clause-② PR this way, so the text moves to the gate, not the gate to the text. Claude-Session: https://claude.ai/code/session_01YKEjmbYNvYWJvWGSWx26zK Co-authored-by: Claude --- AGENTS.md | 3 ++- scripts/pm/check-skill-line-ratchet.mjs | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 94cac72c99..d756b7c087 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1040,7 +1040,8 @@ registry? Add it to `OPEN_CAPABILITY_REGISTRIES` in the same PR that fixes it. 3. **Add a changeset for anything that publishes.** Feature, functional improvement or fix — run `pnpm changeset` (or add a `.changeset/*.md` entry) describing it before committing. A bug fix in a released package takes a **`patch`** changeset — never none, and ⛔ never `skip-changeset`: that label is for a diff that publishes - nothing from any released package. + nothing from any released package. A PR that declares `Clause-②: yes` takes at least **`minor`** instead — + the widening it declares is what makes it more than a patch, whatever else the diff fixes. **Breaking changesets must carry their migration.** If the change removes or renames anything an author can write (a spec key, an export, a config field), the changeset body must state the FROM → TO mapping and the one-line fix — this text ships to consumers as `CHANGELOG.md` inside the npm package and is what an upgrading agent greps after the diff --git a/scripts/pm/check-skill-line-ratchet.mjs b/scripts/pm/check-skill-line-ratchet.mjs index 5ef34f9136..15bf988a3c 100644 --- a/scripts/pm/check-skill-line-ratchet.mjs +++ b/scripts/pm/check-skill-line-ratchet.mjs @@ -1066,7 +1066,24 @@ export const CEILINGS = new Map([ // option A; recorded by the director on #16851 comment 5617189215, which also // rules the net budget of 6). AGENTS.md is not a CROSS_FILE_MOVES destination, // so no `ruledRaises` record applies. Landed count, headroom 0, same convention. - ['AGENTS.md', 1074], + // + // 1074 → 1075 (card #16973): the Post-Task Checklist's changeset rule gains the + // ruled exception — a bug fix in a released package takes `patch` UNLESS the PR + // declares `Clause-②: yes`, in which case at least `minor`. Until this line the + // two live authorities disagreed on the same PR — this item's sentence and the + // maintainer's own level ruling — and an author could satisfy either and cite it; + // the LEVEL axis of check-changeset-no-major.mjs has judged it the second way + // since #16055, so the text is being brought to the gate, not the gate to the + // text. +1 line against the ruled budget of 2, and forced: the item's paragraph + // measures 543 bytes of prose, which four lines cannot hold under the 120-byte + // rule above (4 × 120 = 480), so there is no lossless rewrap at any width. + // Maintainer ruling, verbatim and untranslated: 「其他同意」 (decision batch #111 + // item 3, 2026-09-10, on analysis 5615846581 option A, forward-only; recorded by + // the director on #16973 comment 5617188486, which also rules the net budget of 2 + // and holds the gate's LEVEL axis unchanged). AGENTS.md is not a CROSS_FILE_MOVES + // destination, so no `ruledRaises` record applies. Landed count, headroom 0, same + // convention. + ['AGENTS.md', 1075], // #9965: root CLAUDE.md is the other repo-root instruction file — same read // path (every seat session), same governance (Prime Directive #14). It is // structurally growth-prone in the way the ratchet is built for: it exists to