skills(pm-dispatch): name the widening-tell gate in the landing pre-check - #16605
Merged
Conversation
…heck Landing pre-check 2 already runs `check-clause2-carriers.mjs --pair`; that predicate now also refuses a diff whose card declares `Clause-2: no` while the diff adds a schema key, a closed-set member, a published export row or a registry entry. The exit-code sentence is corrected to match, and one line names the gate that issues the refusal. Paid for at the 60-line ceiling by deleting a restatement: its first clause is carried verbatim by references/lanes/director.md, and its second by the two downgrade-fuse lines below it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
Collaborator
Author
维护者速读(终稿 · skills 席,2026-09-07T12:3xZ)
Generated by Claude Code |
os-zhuang
approved these changes
Sep 7, 2026
os-zhuang
marked this pull request as ready for review
September 7, 2026 12:33
os-zhuang
enabled auto-merge
September 7, 2026 12:33
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #16448
The governed half of the card. The gate itself is in
#16604 (
Part of #16448,ordinary queue landing); this PR is the one line
.claude/skills/pm-dispatch/references/contract-review.mdowes it, and ittakes the human-merge route because
.claude/**is a governed surface —node scripts/pm/check-governed-merges.mjs --testover this file returnsexit 3,
.claude/** x1.The diff, in full
Two lines in, two out. The file stays at 60 lines against a 60-line ceiling
and every line stays inside the 120-byte budget (the new line is 118 bytes, the
corrected one 107).
How the added line was paid for
⛔ Not by folding two lines into one — a re-wrap that buys a line for new content
is not currency at this ratchet. It was paid by deleting a restatement,
measured rather than judged:
⛔ 不与席内复核抢同一载体的放行动作, is carried verbatimby
references/lanes/director.md:31— the file the seat that runs the externalaudit chain actually reads, which is where the rule belongs;
资格与档位硬门对审计者同样成立, is entailed by the two下降保险丝 lines already below it (
席内复核与审计每场前必读一次服役档and读数 ≠ CONTRACT_REVIEW_TIER ⇒ 该席 ⛔ 不自判清标) together with theImplemented-by:/Reviewed-by:SELF-REVIEW rule in the same section.No rule leaves the tree; one duplicate does.
Measured
node scripts/pm/check-skill-line-ratchet.mjs --self-test— 0; live run —0,
contract-review.md is 60 lines (ceiling 60; headroom 0).node scripts/pm/check-skill-id-lint.mjs— 0 (the new line cites no cardnumber).
node scripts/check-nul-bytes.mjs --self-testand the live run — 0;control-character self-scan over the file — clean.
node scripts/pm/check-governed-merges.mjs --teston this file — exit 3,as it must be.
git merge-tree --write-tree --name-only origin/main HEAD— exit 0, cleanagainst
ac9376a7. No open PR touches this file (checked over the 20 open PRsby fetching each pm-dispatch-adjacent branch and diffing it against
origin/main; the two neighbours editSKILL.md,core-rules.mdandcheck-half-states.mjs).skip-changeset: nothing is published from any package.维护者速读(草稿)
改了什么 — 落地前检的第 2 条(逐对机读
check-clause2-carriers --pair)多了一句:那条命令现在还会看 PR 的 diff,认领写
Clause-②: no却往 schema 加键、往枚举加成员、往已发布导出清单加行、往 registry 加登记,就拒绝并给出 file:line。同时把讲退出码的
那句改准(4 不再只是「双载体不一致」)。删掉一句与
lanes/director.md逐字重复的复述。为什么改 — #16349 把条款②改成方向性的(放宽才触发契约复审,收窄不触发),
维护者当时给的条件是:方向声明必须变成可检查的,而不是被信任的。在这句话落地之前,
一个 dev 只要写
Clause-②: no就能自己把档位调低,没有任何东西读它的 diff。现在有了,而这份文件是席位读到它的地方。
风险与代价(含回滚) — 风险是误报:一条读起来像加键的行会被拦下,作者得改申报或
在认领里解释一句。这是卡片明确接受的代价(漏报才是裁决接受的成本)。
代价是每个
no对多花一次 GitHub 请求,只在--pair上花,巡检不花。回滚:revert 本 PR 即可,
--pair的 C5 行仍在但席位手册不再点名它;要整体回滚就连PR #16604 一起 revert,两者互不依赖。
席位意见 — (留空,待席位定稿)
你要做的 — 只有一件:确认这句话该不该进席位手册。代码那半在 PR #16604,走队列;
这半是受管面,⛔ 不翻 ready、⛔ 不入队,等你人工合并。合并顺序建议 #16604 在先——
本 PR 点名的脚本由它带来。
Generated by Claude Code