Filed by the triage seat (session_01VxjMEAhT53WHUCtP9WMrSU, R+236) after the maintainer asked whether a seat error was caused by unclear skill text. It was not — but answering that question surfaced one line that is declared and unenforced.
The declaration
.claude/skills/pm-dispatch/SKILL.md 〈分诊座位职责〉:
- 两级盘点:小时轮以 `since` 窗口读增量,锚 = 座位贴上一份收班简报的时间戳。
- 每日一 fire 跑全仓全量对账并归集日频职责。
- 选层按 fire 时刻,⛔ 不用计数器;简报写明本轮跑的层。
The selector itself is not ambiguous — references/dispatch-runbook.md 〈分诊两级盘点细则〉 pins it: 「每日层(当日首 fire)= 四仓全量对账 + 归集本就日频的职责」. ⛔ This card is not a request to clarify that; it is clear, correctly layered, and one hop from a pointer that sits directly beneath the rule.
What has no reader is the last clause: 「简报写明本轮跑的层」.
Measured — the absence, with lit controls
Reading taken 2026-09-15T15:1xZ on origin/main 827cacbf4b.
grep -rnE "跑的层|本轮跑的|tier.*brief|brief.*tier|盘点层" scripts/pm/ .claude/skills/pm-dispatch/
(excluding SKILL.md and dispatch-runbook.md, i.e. the declaration itself)
-> 0 hits
⭐ Two lit controls on the same instrument and the same corpus, so the zero is a reading and ⛔ not a dead instrument:
grep -cE "^\s*\*\s+H[0-9]+" scripts/pm/check-half-states.mjs -> 131 (H-rows exist)
grep -cE "triage|分诊" scripts/pm/check-half-states.mjs -> 180 (it does cover this seat)
⇒ The half-state patrol carries 131 H-rows and mentions this seat 180 times, and none of them reads a round brief for its tier.
Why it matters, with the one instance that produced it
The clause is the forcing function for the two-tier rule: a seat that must name the tier in its brief cannot skip choosing one. With nothing reading it, the clause is satisfied by silence.
Instance (n=1, and stated as such): this seat ran a full-board enumeration on R+235 and again on R+236, and named the tier in neither brief. R+235 was the day's first fire, so its full run was correct; R+236 was the day's second fire and should have read a since window. The error was invisible until the maintainer asked an unrelated question. Had the brief required a named tier, the seat would have had to look the selector up — which is exactly what it failed to do.
⚠️ Evidence strength is one occurrence, by the seat filing this card. ⛔ Not offered as a rate, and 「纯计数不追记」 — this is filed because the line is a declared discipline with zero readers, not because it was missed once.
The fork — ⛔ not decided here, and remove is a first-class outcome
SKILL.md routes this shape itself: 「declared≠enforced 观察类 ⇒ 转 enforce-or-remove 通道」.
- Enforce — a half-state H-row: a triage round brief or round-open marker carrying no named tier is a half-state. Cheap; the patrol already parses this seat's artefacts.
- Remove — delete the clause. If no reader exists and none is wanted, 「失效修法按序取:先删掉容许出错的构造,再让正确形态成为唯一拼写,最后才加检查」 puts deletion ahead of adding a checker. A discipline nobody reads is the "构造" that permits the error.
⛔ The filing seat does not prefer one. The domain:skills seat grades this per 「skills 车道 finding 由该席自分诊,全仓轮跳过」.
查重词
简报写明本轮跑的层 · 两级盘点 · 每日层 当日首 fire · declared unenforced brief tier · check-half-states 分诊简报
⛔ Per 「立卡者不查重,只附 3–5 个查重词」 the filing seat ran no dedup search; the grading seat searches its own list.
Generated by Claude Code
Filed by the triage seat (
session_01VxjMEAhT53WHUCtP9WMrSU, R+236) after the maintainer asked whether a seat error was caused by unclear skill text. It was not — but answering that question surfaced one line that is declared and unenforced.The declaration
.claude/skills/pm-dispatch/SKILL.md〈分诊座位职责〉:The selector itself is not ambiguous —
references/dispatch-runbook.md〈分诊两级盘点细则〉 pins it: 「每日层(当日首 fire)= 四仓全量对账 + 归集本就日频的职责」. ⛔ This card is not a request to clarify that; it is clear, correctly layered, and one hop from a pointer that sits directly beneath the rule.What has no reader is the last clause: 「简报写明本轮跑的层」.
Measured — the absence, with lit controls
Reading taken 2026-09-15T15:1xZ on
origin/main827cacbf4b.⭐ Two lit controls on the same instrument and the same corpus, so the zero is a reading and ⛔ not a dead instrument:
⇒ The half-state patrol carries 131 H-rows and mentions this seat 180 times, and none of them reads a round brief for its tier.
Why it matters, with the one instance that produced it
The clause is the forcing function for the two-tier rule: a seat that must name the tier in its brief cannot skip choosing one. With nothing reading it, the clause is satisfied by silence.
Instance (n=1, and stated as such): this seat ran a full-board enumeration on R+235 and again on R+236, and named the tier in neither brief. R+235 was the day's first fire, so its full run was correct; R+236 was the day's second fire and should have read a
sincewindow. The error was invisible until the maintainer asked an unrelated question. Had the brief required a named tier, the seat would have had to look the selector up — which is exactly what it failed to do.The fork — ⛔ not decided here, and remove is a first-class outcome
SKILL.md routes this shape itself: 「declared≠enforced 观察类 ⇒ 转 enforce-or-remove 通道」.
⛔ The filing seat does not prefer one. The
domain:skillsseat grades this per 「skills 车道 finding 由该席自分诊,全仓轮跳过」.查重词
简报写明本轮跑的层·两级盘点·每日层 当日首 fire·declared unenforced brief tier·check-half-states 分诊简报⛔ Per 「立卡者不查重,只附 3–5 个查重词」 the filing seat ran no dedup search; the grading seat searches its own list.
Generated by Claude Code