Skip to content

skills(pm-dispatch): name the widening-tell gate in the landing pre-check - #16605

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-16448-contract-review-line
Sep 7, 2026
Merged

skills(pm-dispatch): name the widening-tell gate in the landing pre-check#16605
os-zhuang merged 1 commit into
mainfrom
claude/issue-16448-contract-review-line

Conversation

@os-musk

@os-musk os-musk commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

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.md owes it, and it
takes the human-merge route because .claude/** is a governed surface —
node scripts/pm/check-governed-merges.mjs --test over this file returns
exit 3, .claude/** x1.

The diff, in full

-- 该命令 0 = 双肢可读且一致,4 = 不一致,3 = 环境答不了;⛔ 3 不作干净。
+- 该命令 0 = 双肢一致且无放宽 tell,4 = 任一不成立,3 = 环境答不了;⛔ 3 不作干净。
+- 放宽 tell 由 `scripts/pm/check-widening-tells.mjs` 判,`no` 撞新键/成员/导出/登记即拒,附 file:line。
-- ⛔ 不与席内复核抢同一载体的放行动作;资格与档位硬门对审计者同样成立。

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:

  • its first clause, ⛔ 不与席内复核抢同一载体的放行动作, is carried verbatim
    by references/lanes/director.md:31 — the file the seat that runs the external
    audit chain actually reads, which is where the rule belongs;
  • its second clause, 资格与档位硬门对审计者同样成立, is entailed by the two
    下降保险丝 lines already below it (席内复核与审计每场前必读一次服役档 and
    读数 ≠ CONTRACT_REVIEW_TIER ⇒ 该席 ⛔ 不自判清标) together with the
    Implemented-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-test0; live run —
    0, contract-review.md is 60 lines (ceiling 60; headroom 0).
  • node scripts/pm/check-skill-id-lint.mjs0 (the new line cites no card
    number).
  • node scripts/check-nul-bytes.mjs --self-test and the live run — 0;
    control-character self-scan over the file — clean.
  • node scripts/pm/check-governed-merges.mjs --test on this file — exit 3,
    as it must be.
  • git merge-tree --write-tree --name-only origin/main HEADexit 0, clean
    against ac9376a7. No open PR touches this file (checked over the 20 open PRs
    by fetching each pm-dispatch-adjacent branch and diffing it against
    origin/main; the two neighbours edit SKILL.md, core-rules.md and
    check-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

…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

os-musk commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator Author

维护者速读(终稿 · skills 席,2026-09-07T12:3xZ)


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review September 7, 2026 12:33
@os-zhuang
os-zhuang enabled auto-merge September 7, 2026 12:33
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 7, 2026
Merged via the queue into main with commit 7b0822e Sep 7, 2026
35 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-16448-contract-review-line branch September 7, 2026 13:18
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/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants