Repository navigation
docs(pm-dispatch,os-dev): a PR whose metadata-protocol kind is not none, or whose Clause-② carries (narrowing), owes a Skills-docs line - #26381
Conversation
…ne, or whose Clause-② carries (narrowing), owes a Skills-docs line The dev writes `Skills-docs: updated here | follow-up owed — FILES | follow-up #N | none — REASON` into the PR body from the diff (spelling and division of labour on the claim template); the seat checks the line is present and true, files the owed card and rewrites it to `#N` before ACCEPT; triage writes skills + docs + eval into the done-when of a card that changes what an author can write. No gate or script reads the line. 0 net lines in every file (all four at their ratchet ceiling): one line retired per file that takes a new one, each retired clause already homed elsewhere; the brief line now reads 「声明行后」 because a third declaration line exists on the PRs that owe it. Claude-Session: https://claude.ai/code/session_01LqKsGyMNFwwnbF5FTAqyPn Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewReviewed at 2026-10-27T01:33Z — PR #26381 (card #26184, Part B), an independent contract review of the committed tree; inputs were the card body and its ten comments, the PR body, file list and REST diff, the head's check-runs read three times, the cited files on Served-tier: Gate verdicts read on the head (the check-runs endpoint, ① Derived judgmentsThe ruling the text must say. The maintainer tapped 「B:种类非 none 或带 (narrowing)」 on the seat thread's decision card at 2026-10-27T00:33Z: a (a) Trigger B, one meaning — right in three files, ambiguous in the fourth. os-dev.md L279 「种类非 (b) The line's values and the division of labour — one ruled clause lost. FAIL. The values ( (c) The three retirements are payments. (i) os-dev.md old L284 「受管路径全在 (d) In-place respellings lose nothing. SKILL.md L191: the six items sit under L188's 「其下 (e) Ratchet, byte limit, id-lint. (f) No script keys on the new line. clause2-line.mjs reads two key lines only ( (g) The PR body dogfoods the current shape. Line 1 (h) Claim surface and report shape. Claim 6430787650 names exactly the four files; the PR's file list is those four, +7/−7 in one commit. Report 6431321367 carries ② Semver levelRight. The diff is ③ Boundary flags
Implemented-by: VERDICT: FAIL — item (b): the ruled definition of |
…rcise it; the triage done-when trigger spells `(narrowing)` Rework from the contract review of the previous head, zero budget: - the claim template's definition of `updated here` (inside the ```text fence, so exempt from the byte and line ratchet) had lost the draft's 「并带 eval」 clause; it now reads "this diff teaches it in `skills/**` or the docs and the package's evals exercise it", so a seat cannot ACCEPT an eval-less `updated here` under the 「属实」 check; - triage-duties.md's first-grade done-when line spells the second arm of the trigger as `(narrowing)` instead of 收窄 (106 → 117 B), so a kind-`none` card whose Clause-② narrows is unmistakably in. Claude-Session: https://claude.ai/code/session_01LqKsGyMNFwwnbF5FTAqyPn Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewReviewed at 2026-10-27T01:52Z — PR #26381 (card #26184, Part B) on the rework head, an independent contract review of the committed tree; supersedes record 6431523599 (VERDICT: FAIL on the previous head). Inputs: the rework report 6431681340, the PR body as the seat patched it, the file list and REST diff, Served-tier: What moved between the heads. Gate verdicts read on the head (the check-runs endpoint, ① Derived judgments(a) Trigger B, one meaning, now in one spelling. triage-duties.md L59 reads 「改作者可写面(种类非 (b) The ruled definition of (c) The three retirements — unchanged lines on both sides (os-dev.md and review-checklist.md identical blobs; triage-duties.md differs only at L59, so L5, L32–34 and L80 stand as cited); paid, by reference to record 6431523599. (d) In-place respellings — SKILL.md L191 and os-dev.md L285 are untouched by the rework; right, by reference. (e) Ratchet, byte limit, id-lint, re-read on this head. (f) No script keys on the new line — the rework adds no key and no token a parser names (the two readers of the kind line and the record readers are unchanged on this head); right, by reference. (g) The PR body matches the head. The seat patched it at 2026-10-27T01:47Z. Lines 1–3 unchanged and line-initial: (h) Claim surface and report shape. The file list is still the claim's four files, +7/−7 net against ② Semver levelRight, unchanged: ③ Boundary flags
Implemented-by: VERDICT: PASS |
维护者速读改了什么:pm-dispatch 规则文本多一条 PR 正文声明行 席位核对ACCEPT ·
Generated by Claude Code |
Part of #26184
Clause-②: no
Metadata-protocol: none
维护者速读
Skills-docs:——元数据协议种类非none,或Clause-②:带(narrowing)的 PR,dev 按 diff 写明技能与文档是「已随本 PR 更新 / 欠后续(列文件) / 已有后续卡 / 不欠(写原因)」;席位核对该行、代立后续卡并把它改写成卡号;分诊给会改作者可写面的卡写 skills + docs + eval 三项 done-when。四个.claude/**文件各 0 净行;无门禁、无脚本读它。when落地后技能里一字未提,就是本卡的起因。.claude/agents/os-dev.mdL279(dev 何时写、拼法在哪)与被退掉的 Tier S/H 一行;②.claude/skills/pm-dispatch/references/review-checklist.mdL18(缺即 REWORK)与被退掉的 NUL 理由行(其+0/-0触发词并入 L75);③.claude/skills/pm-dispatch/SKILL.mdL313 认领模板(取值、updated here判据、席位改写#N)。pnpm check:pm-skill-ratchet预期退出 0 且四个文件各印headroom 0;git grep -c 'Skills-docs:' -- .claude预期 os-dev.md 1、SKILL.md 2、review-checklist.md 1,别无命中。What changes
The maintainer chose trigger B on the seat thread's decision card (tap label quoted verbatim in the brief above). The content is Part B's draft, comment 6425690779 on #26184, items 1–4, written for B; triage's 「新增门禁默认否」 holds — the line is read by the seat and by triage, by nothing mechanical.
All four files sit at their line ceilings (SKILL.md 319, os-dev.md 404, review-checklist.md 77, triage-duties.md 103; headroom 0), and every prose line is held to 120 bytes. The draft's after-texts for items 2, 3b and 4 were far over that, so each rule is said once in its shortest true form, and where a rule could not fit in place one line was retired in that file — every clause of a retired line already lives elsewhere, named below.
1.
.claude/skills/pm-dispatch/SKILL.md(319 → 319)Metadata-protocol:line (inside the ```text fence, so length-exempt; 251 → 634 B): the parenthetical now states the trigger (a kind other thannone, or a `(narrowing)` arm), the third line's spelling `Skills-docs: updated here | follow-up owed — FILES | follow-up #N | none — REASON`, what `updated here` means (this diff teaches it in `skills/**` or the docs and the package's evals exercise it), and the division of labour (the dev writes it from the diff; the seat files the owed card and rewrites `owed — FILES` to `#N` before ACCEPT).范围外去向becomes范围外去向+Skills-docs:``. To fit, the reader marker 「(席位读此)」 is dropped — L188 already names this block the seat's (## 席位核对), and review-checklist.md L3 says whose checklist it expands.2.
.claude/agents/os-dev.md(404 → 404)none或带(narrowing)⇒ 按 diff 加写Skills-docs:行;拼法与分工住认领模板。」 — the dev writes it once, in the PR body, from the diff; never files the card..claude/**, landed by the owning seat on a## Contract reviewPASS record; Tier H = an authorized APPROVED review) and Post-Task Checklist step 2 (a governed diff: push, open the PR, stop), and on the seat side in SKILL.md L183–189.3.
.claude/skills/pm-dispatch/references/review-checklist.md(77 → 77)none或带(narrowing):Skills-docs:行在且属实;follow-up owed立卡改#N;缺 ⇒ REWORK。」 — the seat's check, with the verdict word this file uses.+0/-0is no proof of an empty file; NUL makes git render binary and hides the file from grep): its trigger token+0/-0moves onto the action line (L75, 91 → 99 B, now 「+0/-0先疑 NUL,以 blob 定论 …」); the rationale itself is homed in os-dev.md 〈字节与 sanitizer 纪律〉 and in the header ofscripts/check-nul-bytes.mjs, which os-dev.md names as the authority on the harm argument.4.
.claude/skills/pm-dispatch/references/triage-duties.md(103 → 103)none或带(narrowing))的卡,首触 done-when 写 skills + docs + eval 三项。」needs-user-decisionwith the four-axis block and a recommendation, the director seat claims them: homed in this file's L32–34, SKILL.md L107 (state table), L270 (决策卡带选项、推荐、证据、四棱块) and L276 (总监席是唯一呈裁席), filing-gate.md L15 and L27, and lanes/director.md L54–55 (入箱勤务).Deliberately not done: no gate, script or ledger reads the new key (
scripts/pm/clause2-line.mjsandrecord-recognisers.mjsstill read onlyClause-②:andMetadata-protocol:); AGENTS.md is untouched (1112/1112); no back-fill of landed PRs (Part A's eight cards are the back-fill).Tests
Rule text only, all under
.claude/**: no package moves, no test suite is owed, andskills/**is untouched (no before/after readings owed). The surface is held by gates — the local union is thedispatch-gates --commandsderivation at head72b08a34, re-run on the rework head9dd75f01(25 derived / 25 run / 0 NOT-MEASURED), every command run with its exit captured before any pipe and reconciled with--ran(25 derived / 25 run / 0 NOT-MEASURED / 0 UNRUN).check:skill-frame-freshness(local-only, outside the derivation) also ran. Dogfood battery: n/a — no!in the title and no(narrowing)arm.Acceptance notes
Skills-docs:line itself:Metadata-protocol: none, no arm.origin/mainatf02e6443: (1) the draft's line numbers had moved — every target was re-found by its text (SKILL.md L191/L313, os-dev.md L278 as the insertion anchor, review-checklist.md L17, triage-duties.md L58); (2) the separate-line variant's payer (the old three-safe-spellings line) is already gone, so only in-place or retire-to-pay remained; (3)MAX_LINE_BYTES120 binds; fence lines are exempt (the template line widened in place) and table rows carry their own widest-row pin (none touched); (4) 「声明行后」 chosen, reason above; (5) nothing parses a third line-initial key —keyLineRegexis used only forReviewed-by,Served-tier,Local-runs;Skills-docshad zero hits repo-wide before this PR;#Nis not an issue id forcheck:pm-skill-id-lint(pattern#+ three digits); (6) who does which is on the template line and the seat's checklist line.claude/issue-N-slug). It was behindorigin/mainat worktree creation and was fast-forwarded; the single commit was then rebased once ontof02e6443before its first push because the derivation flagged a stale tree — the branch had never been pushed, so no force-push.spec-property-retirement/SKILL.md's table-row pin (326 → 324 headroom 2), unrelated to this diff. carrier: none.Verification
Head
9dd75f01(rework commit on72b08a34: SKILL.md L313 restores the eval clause ofupdated here, triage-duties.md L59 spells 「或带(narrowing)」, per the contract review 6431523599); readings below are from that tree, the two reworked lines re-read on it.Ratchet, id-lint and frame gates — exit 0 each
Derived union — 25 families, each exit captured before any pipe, reconciled with --ran
The one build (prerequisite of check:doc-formula-expressions), under the shared verify lock
Byte table of every added or respelled line (limit 120; fence lines exempt)
Nothing parses the new key
Generated by Claude Code