docs(agents): a PR declaring clause-② grades its changeset at least minor - #17415
Conversation
…inor 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 <noreply@anthropic.com>
维护者速读改了什么 —— 为什么改 —— 你在批 #111 第 3 项裁的方案 A(「其他同意」),只往前生效,#16650 不重评不重发。此前两条同时有效的权威文本对同一张 PR 给出相反答案:这句说 风险与代价(含回滚) —— 只改一句文字,不改门禁谓词、不改任何已发版本。代价:保守声明 席位意见 —— 通过。本席在契约复审档对照 diff 自读:例外句与裁决字面一致( 你要做的 —— 一个动作:人工合并本 draft PR。 skills 席,session Generated by Claude Code |
Fixes #16973
The Post-Task Checklist's changeset rule now carries the ruled exception: a bug fix in a released package takes a
patchchangeset unless the PR declares clause ② asyes, in which case the changeset takes at leastminor.Ruling — the maintainer's 「其他同意」 on decision batch #111 item 3 (option A of the director's analysis 5615846581), executed by the director in comment 5617188486, verbatim and untranslated:
Forward-only: #16650 is not re-graded and not re-released — triage 5595827965 measured its entry shipping inside the
17.4.0minor — and the gate's LEVEL axis is untouched.The sentence — before / after
Before —
AGENTS.md:1040–:1043, 4 lines, 374 bytes:After — :1040–:1044, 5 lines, 543 bytes (the last two lines are the diff; the first three are unchanged):
AGENTS.mdtotal linesCEILINGS)Why the line cannot be re-wrapped away. The ceilinged-file rule caps a line at 120 bytes, so four lines hold at most 480; the paragraph now measures 543, and
ceil(543 / 120) = 5. Net growth is +1 line, inside the ruled budget of 2.What is untouched. 「never none, and ⛔ never
skip-changeset: that label is for a diff that publishes nothing from any released package」 is byte-identical — it is a context line in the diff, and the exception attaches after it. Neitherscripts/check-changeset-no-major.mjsnor § 3 (landed with PR #17398) is touched, and no other file is.The ratchet raise
scripts/pm/check-skill-line-ratchet.mjs:['AGENTS.md', 1074]→['AGENTS.md', 1075], in the map's own ledger-comment form — the shape the1068 → 1074entry PR #17398 added established: a comment block above the constant, carrying the raise's arithmetic, the reason it cannot be paid in place, and the ruling verbatim (「其他同意」, decision batch #111 item 3, on analysis 5615846581 option A, recorded on #16973 comment 5617188486).AGENTS.mdis not aCROSS_FILE_MOVESdestination, so noruledRaisesrecord applies. Landed count, headroom 0, same convention.What the gate already does — confirmed, not assumed
scripts/check-changeset-no-major.mjs:814–:815 states the LEVEL axis's predicate in its own words:So the text is being brought to the gate, not the gate to the text — which is what makes this edit forward-safe rather than a new obligation. One grain note for the record (⛔ not a gap filed here, and ⛔ not a change to the axis, which the ruling holds fixed): the gate's predicate is existential — at least one moved package graded
minor+ — while the sentence is about the changeset the PR writes. The gate names that residual itself (discharged), and the two agree exactly on a single-package PR.Verification
dispatch-gates --commandson the real diff ⇒ 37; all 37 rundispatch-gates --ran⇒ 37 derived / 37 run / 0 NOT-MEASURED / 0 UNRUN, each line carrying an exit code captured before any pipecheck:pm-skill-ratchet,check:pm-skill-id-lint,check:pm-governed-prose,check:nul-bytes— exit 0check:pm-dispatch-gatestail --pid, exit read from the redirected log:GATE_EXIT=0(1678 self-test cases)check-governed-merges.mjs --test AGENTS.md scripts/pm/check-skill-line-ratchet.mjs⇒ GOVERNED (AGENTS.md×1)skip-changesetAGENTS.mdorscripts/infiles[]; positive controlpackages/speclists ten real entriesLanding
Governed surface (
AGENTS.md) ⇒ draft only. ⛔ No seat flips it ready, enqueues it or arms auto-merge; the maintainer merges it by hand (Prime Directive #14).维护者速读(草稿)
改了什么。
AGENTS.md收尾清单第 3 条那句「修 bug 就是patch」后面补了一句例外:PR 如果声明了走契约复核(clause ② 那一行写yes),changeset 级别就至少minor。一句话,净增 1 行;顺带把 ratchet 的上限 1074 抬到 1075,并在它自己的台账注释里记下您的裁决。为什么改。 之前两条都还生效的权威文本对同一个 PR 给出不同答案:这一条说
patch,您 9 月 4 日的裁决说「纯加法式扩大公开面至少minor」。作者读哪条都能自圆其说,谁被抓到取决于门禁看得见看不见——门禁刚修好,下一张同形状的 PR 会被当场拦下。现在文本和门禁说的是同一件事。风险与代价(含回滚)。 只改文字,不改任何门禁谓词、不改 #16650、不重发任何版本。代价是保守声明
yes的 PR 版本级别会偏高一点;实测 69 个包同一fixed组、由当期最高 changeset 定版,所以几乎不改变实际发布结果。回滚 = revert 本 PR 两个文件(上限跟着退回 1074),零迁移、零消费者影响。席位意见。
你要做的。 一个动作:人工合并本 draft PR。
Generated by Claude Code