docs(pm-dispatch): triage closes a report-only instrument fix card not_planned at first grade, citing ruling 208 - #21691
Conversation
…not_planned at first grade, citing ruling 208 instrument-discipline.md says a report-only instrument gets no card, no dev and no PR, and that its only in-flight work is deletion (ruling 208). Nothing on the triage path read that line, so the grade never asked it. One sentence in the grading block of references/triage-duties.md now does: a card whose fix lands in a report-only instrument (the widening tell, the half-state patrols) closes not_planned at first touch, citing ruling 208, and the instrument's only in-flight work is deletion. No new gate, label or script. Enumeration pin (the two instances where the line was not read; a third is a red reading of this sentence, not a new card): - #20969 / PR #21016 (landed) - #21465 / PR #21679 (held) Paid in place, net 0 lines (120 -> 120, ceiling unchanged, no re-wrap): the deleted line is the triage-side restatement of the filing door's four classes; its owning copy stays in references/filing-gate.md (the class list and the refusal of everything else, one line, with the four class heads on the lines below it), reached from the pointer line kept right under the deleted one. Claude-Session: https://claude.ai/code/session_01CB6W87z22K2yjUCDyVrJRk Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Read-only shape otherwise: the diff against the merge base 251a7dd, card #21681 with every comment, the owning copy of the deleted line on ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS |
Fixes #21681
Clause-②: no
Tier S (
.claude/**only). Draft; this run does not flip it ready, queue it or arm auto-merge — the owning seat lands it after its at-tier contract review.What changed
One protocol sentence in the grading block of
.claude/skills/pm-dispatch/references/triage-duties.md, as the triage ruling on the card (comment 5976725561) specifies: a card whose fix lands in a report-only instrument (the widening tell, the half-state patrols — the judge-intent classinstrument-discipline.mdnames) is closednot_plannedat first touch, citing ruling 208, and the instrument's only in-flight work is deletion. No new gate, label or script.It is paid in place: one restated line of the same file is deleted, so the file stays at 120 lines under its 120 ceiling. No other line is touched (no re-wrap), and
SKILL.md,instrument-discipline.mdandscripts/pm/check-skill-line-ratchet.mjsare untouched.The enumeration pin — the two instances where the rule was not read — is named in the commit message: #20969 / PR #21016 (landed) and #21465 / PR #21679 (held). A third such card is a red reading of this sentence, not a new card.
Reading 1 (读数一): placement and payment
Tree:
objectstack-ai/objectstackatbc85776a87(branch head), base251a7dd4b4.toolingline), so the grading block now carries all three close-at-grade cases together:references/filing-gate.mdline 11, the same rule (four classes only, everything else refused), with the four class heads on lines 12 / 16 / 17 / 18:The triage reader reaches it through the pointer line kept right under the deleted one (now line 40):
首行写立卡门类别 ①–④;四类定义、⛔ 清单、三答与配额见 references/filing-gate.md. The deleted line entered the protocol as the summary of that file, in the same commit that createdfiling-gate.md(37ed9ae04b), and moved here verbatim with the principle-only cut; it is a restatement rather than a ruled clause: the ruled clause, with its provenance quotation, lives infiling-gate.mdand is unchanged.Reading 2 (读数二): gate output
Run at
bc85776a87, after the final commit, exit codes captured before any pipe:ruling 208is spelled without a hash prefix, the wayinstrument-discipline.mdrecords it; the issue and PR numbers of the pin are in the commit message only.The full derived set (
node scripts/pm/dispatch-gates.mjs --commands, no paths, change set read from the merge base) is the same 18 commands the dispatch listed, all exit 0.--ranreconciliation:18 derived, 18 run, 0 NOT-MEASURED, 0 UNRUN(a derived zero — every line carried its exit code). One first-runexit 3is not a measurement:check:doc-formula-expressionsrefused with PREREQUISITE NOT MET (unbuilt@objectstack/formula/@objectstack/lint); after the build it names (run under the shared verify lock,VERDICT command-exit 0) it exited 0.check:nul-bytesexit 0, plus a control-byte self-scan of the edited file: zero hits.No changeset:
.claude/**publishes nothing.Acceptance notes
instrument-discipline.mdpointer; both of its key terms still lead there (「只报告的仪器」 is that file's rule line, and 「裁决 208」 its ruling record), andreading-discipline.mdkeeps its pointer to it. 「在途只有删除」 echoes that file's own 「它的在途工作只有删除」.scripts/pm/check-widening-tells.mjs.维护者速读(草稿)
改了什么: 分诊职责文件
triage-duties.md的定级段加了一句:修复落在「只报告仪器」(放宽 tell、半状态巡查)上的卡,首次定级就以 not_planned 关闭,并引裁决 208;这类仪器的在途工作只有删除。同时删掉同一文件里一行重复的「立卡门四类」摘要(完整原文仍在filing-gate.md),文件仍是 120 行,行数上限不动。为什么改: 裁决 208 早就规定只报告的仪器不立卡、不派开发、不开 PR,但分诊定级时并不读这条,于是两张这类卡被定级入队、派了开发,一张已经合并,一张被扣住,白花两轮开发。把规则写进分诊每次都读的定级段,首次定级就能拦住。
风险与代价(含回滚): 只改内部协议的一行文字,不新增门禁、标签或脚本。风险是分诊把与巡查同文件的硬门禁修复也误关,句子按「只报告」身份判断而不按文件路径,可以避免。已经合并的那份代码要不要删,不在本 PR 范围,留给您另行决定。回滚就是撤销这一个 commit。
席位意见:
你要做的: 无需操作:本 PR 是 Tier S(只改
.claude/**),席位复核通过后经合并队列落地;不同意请回一句。Generated by Claude Code