Repository navigation
Commit 079deea
pm(contract-review): name ④'s rules face as the governed register, scenario per surface (#26651)
<!-- claude-projects-attribution: {"github_login":"os-steve"} -->
_Requested by **Steve** · [project
thread](https://claude.ai/code/project/chan_01FdL1XeUyvVNxLreh3F4Qi9?thread=cmsg_01FdL1XeUyvVNxLreh3F4Qi94Tjp2AWynvuMR9crB9WD2o)_
Part of #26527 (items 1 and 2; item 3, design judgment on the narrowing
face, stays open for the maintainer's word and goes to the decision box
after this PR)
Clause-②: no
Metadata-protocol: none
## 维护者速读
- 改了什么:契约复审模板里 ④
设计判断那段说明,把规则面写成「受管登记表」而不是三个面;模板说明和复审简报都按文件类型写明验收场景(技能、schema、ADR 各一句)。
- 为什么改:PR #26514 的复审留下的两条 should-fix:规则面读起来像只有 spec、skills、ADR 三个面,简报只给
ADR 写了验收场景。
- 风险与回滚:只改 `scripts/pm/record-recognisers.mjs` 打印的提示文字和它的自测,不碰任何读取逻辑;回滚即
revert 这一个提交。
- 先看:`scripts/pm/record-recognisers.mjs` 的 `--template` ④ 说明段和
`contractReviewBriefLines` 的 ④ 段,再看两条新 pin。
- 两分钟验证:`node scripts/pm/record-recognisers.mjs --brief-template --face
rules`,④ 段应出现 skill / schema / ADR 三句场景。
- 需要你做的:无,席位落地。
## What changes
- `--template` ④ note (`contractReviewTemplateLines`): the rules face
now reads as "the published spec, and the governed register, which holds
the skills and ADR surfaces the full-review order names among its rows"
instead of "the published spec, skills and ADR surfaces". The governed
register does not hold `packages/spec` (that is the schema face), so the
card's suggested sentence was taken in the equivalent form the card
allows, keeping the two faces apart.
- Both the note and the reviewer brief (`contractReviewBriefLines`) now
name the accepted scenario per surface: a skill file against the card's
eval prompt and the spec it teaches on `main`; a schema file against the
ruling or ADR it implements and its first consumer; an ADR against its
first consumer and its execution plan.
- The brief's docblock says the same.
- Self-test: one new pin in the template battery (governed-register
wording present, the three-surface wording absent, the skill and schema
scenarios present) and one in the brief battery (the three per-surface
scenarios). Battery floors 27 → 28 and 16 → 17, comment updated. No
existing pin was edited; the pins on 'first consumer and its execution
plan' and 'scenario it is accepted against' still hold unchanged.
- `.claude/skills/pm-dispatch/references/contract-review.md` is NOT
touched: its ④ line (L30) already names the schema and
governed-rules-text faces with spec, skills and ADRs inside them, so it
does not say "three surfaces". The diff touches no governed path.
## Tests
- `node scripts/pm/record-recognisers.mjs --self-test`: 217 cases pass,
exit 0, at `84e6125b`.
- One-shot mutation of each new pin, trap-restored, restore checked
byte-identical against the HEAD blob:
- brief text back to "A skill file against the spec": exit 1, the new
brief pin fails (1 of 217).
- template text back to "the published spec, skills and ADR surfaces
the": exit 1, the new template pin fails (1 of 217).
- A first attempt at the brief leg anchored on text that occurs twice
(source and pin), so the replace refused and nothing ran; it was
re-anchored on the source line alone.
## Acceptance notes
- Other rules-face rows (`AGENTS.md`, `.github/workflows/**`,
`.claude/agents/**`, hooks) keep only the generic "the scenario it is
accepted against"; the card names scenarios for skill, schema and ADR
files only.
## Verification
All at head `84e6125b` (after the last commit), in this worktree.
<details><summary>dispatch-gates --commands: 31 derived, 31 run, 0
NOT-MEASURED, 0 UNRUN (DERIVED zero)</summary>
```text
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
node scripts/check-declaration-mirrors.mjs :: exit 0
node scripts/check-declaration-mirrors.mjs --self-test :: exit 0
node scripts/check-self-test-wired.mjs :: exit 0
node scripts/check-self-test-wired.mjs --self-test :: exit 0
node scripts/check-self-test-workflow-commands.mjs :: exit 0
node scripts/check-self-test-workflow-commands.mjs --self-test :: exit 0
node scripts/check-whole-set-label-write.mjs :: exit 0
node scripts/check-whole-set-label-write.mjs --self-test :: exit 0
node scripts/ci/plan-test-core-shards.mjs --self-test :: exit 0
node scripts/pm/bare-root-worklist.mjs --self-test :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:bash32-floor :: exit 0
pnpm check:ci-filter-parity :: exit 0
pnpm check:cli-command-ids :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:entry-guard :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:parse-guard :: exit 0
pnpm check:pm-record-recognisers :: exit 0
pnpm check:pnpm-filter-targets :: exit 0
pnpm check:pnpm-flag-spellings :: exit 0
pnpm check:ratchet-remedy-authority :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:scripts-symbol-anchors :: exit 0
pnpm check:watch-hint-literal :: exit 0
pnpm check:pm-skill-ratchet :: exit 0
pnpm check:pm-dispatch-gates :: exit 0
```
`pnpm check:pm-skill-ratchet` is outside this diff's derivation (no
`.claude/**` path) and was run because the card's acceptance names it.
`pnpm check:pm-dispatch-gates`: fast tier, 1935 cases pass, 479.4 s.
</details>
CI families (lint, type check, tests) are the PR's check-runs; not
re-run locally.
## Human Minimum
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
(not touched)
- [x] 2. Every name I added uses the casing for its kind. (no new names)
- [ ] 3. No formatter ran; `pnpm lint` passes. (no formatter ran; `pnpm
lint` is CI's run, see check-runs)
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. A change that publishes carries a changeset, and both
declaration lines are filled in here and in the changeset. (publishes
nothing: `scripts/pm/**` only, `skip-changeset`)
- [x] 6. `packages/spec` touched: its generated artifacts are
regenerated and committed. (not touched)
- [x] 7. No hand edits to `content/docs/references/`,
`packages/*/CHANGELOG.md` or `content/docs/releases/`.
- [x] 8. Title, body and comments are in English. (the 维护者速读 block is
the repo's required Chinese summary)
- [ ] The *Before Submitting* list in CONTRIBUTING.md is done. (the
local subset per the dispatch contract; the full suite is CI's)
---
_Generated by [Claude
Code](https://claude.ai/code/session_01ADHkmSpW72m8tVh1b1rPxQ)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent cabe2ed commit 079deea
1 file changed
Lines changed: 22 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1102 | 1102 | | |
1103 | 1103 | | |
1104 | 1104 | | |
1105 | | - | |
1106 | | - | |
1107 | | - | |
1108 | | - | |
1109 | | - | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
1110 | 1113 | | |
1111 | 1114 | | |
1112 | 1115 | | |
| |||
1203 | 1206 | | |
1204 | 1207 | | |
1205 | 1208 | | |
1206 | | - | |
1207 | | - | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
1208 | 1213 | | |
1209 | 1214 | | |
1210 | 1215 | | |
| |||
1267 | 1272 | | |
1268 | 1273 | | |
1269 | 1274 | | |
1270 | | - | |
1271 | | - | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
1272 | 1279 | | |
1273 | 1280 | | |
1274 | 1281 | | |
| |||
1415 | 1422 | | |
1416 | 1423 | | |
1417 | 1424 | | |
1418 | | - | |
| 1425 | + | |
1419 | 1426 | | |
1420 | 1427 | | |
1421 | | - | |
| 1428 | + | |
1422 | 1429 | | |
1423 | 1430 | | |
1424 | 1431 | | |
| |||
1432 | 1439 | | |
1433 | 1440 | | |
1434 | 1441 | | |
1435 | | - | |
| 1442 | + | |
| 1443 | + | |
1436 | 1444 | | |
1437 | 1445 | | |
1438 | 1446 | | |
| |||
1836 | 1844 | | |
1837 | 1845 | | |
1838 | 1846 | | |
| 1847 | + | |
1839 | 1848 | | |
1840 | 1849 | | |
1841 | 1850 | | |
| |||
1875 | 1884 | | |
1876 | 1885 | | |
1877 | 1886 | | |
| 1887 | + | |
1878 | 1888 | | |
1879 | 1889 | | |
1880 | 1890 | | |
| |||
0 commit comments