Skip to content

docs(agents): a PR declaring clause-② grades its changeset at least minor - #17415

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-16973-clause2-changeset-minor
Sep 11, 2026
Merged

docs(agents): a PR declaring clause-② grades its changeset at least minor#17415
os-zhuang merged 1 commit into
mainfrom
claude/issue-16973-clause2-changeset-minor

Conversation

@os-litant

Copy link
Copy Markdown
Collaborator

Fixes #16973

The Post-Task Checklist's changeset rule now carries the ruled exception: a bug fix in a released package takes a patch changeset unless the PR declares clause ② as yes, in which case the changeset takes at least minor.

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:

Clause-②: yes 的 PR,changeset 级别至少 minor(裁决 #15294 为准);AGENTS.md:1035「A bug fix in a released package takes a patch changeset」补一句例外:「…unless the PR declares Clause-②: yes, in which case the changeset takes at least minor」(措辞由 skills 席起草、您亲合时定稿)。门 check-changeset-no-major.mjs 的 LEVEL 轴不动(它已按 A 判)。回溯:分诊 5595827965 实测 #16650 随 17.4.0 minor 发出,⛔ 无需重评重发;其余六张 not-measured 不在本裁决内。⛔ 不裁 B / C。」

Forward-only: #16650 is not re-graded and not re-released — triage 5595827965 measured its entry shipping inside the 17.4.0 minor — and the gate's LEVEL axis is untouched.

The sentence — before / after

BeforeAGENTS.md :1040–:1043, 4 lines, 374 bytes:

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.

After — :1040–:1044, 5 lines, 543 bytes (the last two lines are the diff; the first three are unchanged):

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. 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.
reading before after
AGENTS.md total lines 1074 1075
ratchet ceiling (CEILINGS) 1074 1075
the checklist item's paragraph 4 lines / 374 bytes 5 lines / 543 bytes
the one edited line (:1043) 37 bytes 113 bytes
the one added line (:1044) 93 bytes
longest line in the paragraph 115 bytes 115 bytes (cap 120)

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. Neither scripts/check-changeset-no-major.mjs nor § 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 the 1068 → 1074 entry 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.md is not a CROSS_FILE_MOVES destination, so no ruledRaises record 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:

//     A PR that declares clause-② `yes` must grade AT LEAST ONE package whose
//     `packages/**/src/**` it moves at `minor` or above.

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

check reading
derived families dispatch-gates --commands on the real diff ⇒ 37; all 37 run
reconciliation dispatch-gates --ran ⇒ 37 derived / 37 run / 0 NOT-MEASURED / 0 UNRUN, each line carrying an exit code captured before any pipe
named families check:pm-skill-ratchet, check:pm-skill-id-lint, check:pm-governed-prose, check:nul-bytes — exit 0
check:pm-dispatch-gates detached, awaited with tail --pid, exit read from the redirected log: GATE_EXIT=0 (1678 self-test cases)
governed-surface test check-governed-merges.mjs --test AGENTS.md scripts/pm/check-skill-line-ratchet.mjsGOVERNED (AGENTS.md ×1)
skip-changeset measured: 70 published packages, none lists AGENTS.md or scripts/ in files[]; positive control packages/spec lists ten real entries

Landing

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

…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>
@os-litant os-litant added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 10, 2026 — with Claude
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Sep 10, 2026

Copy link
Copy Markdown
Collaborator Author

维护者速读

改了什么 —— AGENTS.md 收尾清单第 3 条「修已发布包里的 bug 就是 patch changeset」后面补一句例外:PR 若声明 Clause-②: yes(它扩大了接受集或公开面),changeset 至少 minor——「它声明的放宽才是让它不只是 patch 的东西,不管 diff 还修了什么」。净增 1 行(裁定预算 2),棘轮上限 1074 → 1075,你的裁决原话记在棘轮脚本自己的台账注释里。门禁 check-changeset-no-major.mjs 的 LEVEL 轴一字未动(它早已这样判)。

为什么改 —— 你在批 #111 第 3 项裁的方案 A(「其他同意」),只往前生效,#16650 不重评不重发。此前两条同时有效的权威文本对同一张 PR 给出相反答案:这句说 patch,你 9 月 4 日的裁决说「纯加法式扩大公开面至少 minor」;作者读哪条都能自圆其说。现在文本与门禁说同一件事。

风险与代价(含回滚) —— 只改一句文字,不改门禁谓词、不改任何已发版本。代价:保守声明 yes 的 PR 版本级别偏高一点;实测各包同一 fixed 组、由当期最高 changeset 定版,几乎不改变实际发布结果。CI 在 head 116ccbca 上收敛中(5 项在跑)。回滚 = revert 本 PR 的两个文件,上限退回 1074。

席位意见 —— 通过。本席在契约复审档对照 diff 自读:例外句与裁决字面一致(Clause-②: yes ⇒ 至少 minor),原句「never none、⛔ never skip-changeset」原样保留;+1 行是被 120 字节行宽逼出来的(段落 543 字节,四行装不下),不是随意扩写;dev 顺手量到门禁的 LEVEL 轴是存在式判据(多包 PR 至少一包 ≥ minor),与本句在单包 PR 上完全一致,门禁自己的注释已记这条残差。受管面(AGENTS.md):本席不翻 ready、不入队、不批准。

你要做的 —— 一个动作:人工合并本 draft PR。

skills 席,session session_01YKEjmbYNvYWJvWGSWx26zK,2026-09-10T12:52Z。


Generated by Claude Code

This was referenced Sep 10, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review September 11, 2026 06:34
@os-zhuang
os-zhuang enabled auto-merge September 11, 2026 06:34
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 11, 2026
Merged via the queue into main with commit 155b875 Sep 11, 2026
40 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-16973-clause2-changeset-minor branch September 11, 2026 07:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-user-decision size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[finding] PR #16650 merged with clause-② yes and both packages it grew graded patch — the LEVEL axis could not see them, so it printed green

3 participants