Filed and dispatched on direct maintainer instruction (2026-08-14, verbatim, untranslated): the maintainer asked whether 「合并即关账」 and 「下班即改贴」 should be codified into the skill; the seat's assessment was that both rules already exist as text and today's failures were execution failures, so the fix is one clause plus two mechanizations; the maintainer ruled 「现在开工派发」. Maintainer-pulled, so it outranks the process-class-last ordering rule.
Measured evidence (one day's worth)
- Seven
pm:seat posts corrected in one day for the same failure: the seat's own stand-down/handover was written in comments while the title stayed 🟢 (registry desync; two of today's corrections were themselves race-error re-corrections). - ~13 hotcrm rc-era cards carried explicit "recommends closing" retest comments — some for 9 days — that nobody executed; a 34-row verdict table sat unapplied for 3 days.
- A theme-seat pre-work audit found five cards whose delivering
Part of PR had MERGED with the protocol's paired write (drop pm:dispatched, re-grade the remainder) never made.
Deliverables (three, one PR)
- Runbook clause —
.claude/skills/pm-dispatch/references/dispatch-runbook.md: a verdict executes in the round that produces it. Writing "recommends closing" (or any re-test verdict) without performing the close/label write in the same round is itself a half-state, on the same footing the half-states family already names — record-and-walk-away is prohibited; if the actor lacks authority to execute, the verdict must name who does and carry the state to their inbox, not sit in a comment. Fit the runbook's existing style; ⛔ no issue numbers in operational text (id-lint). - H8 detector —
scripts/pm/check-half-states.mjs: a new report-only half-state: a card's delivering PR is MERGED while the card still carries pm:dispatched. Follow H7's shape (exported predicate + report-only wiring); extend the self-test suite accordingly; keep the existing export pattern so gates can reuse the predicate. - Triage-Routine patrol clause — first establish where the triage Routine's prompt lives: if it is versioned in-repo, patch it; if it is platform-side (trigger config), deliver the exact clause text in the report for the PM to apply. Clause: each patrol, scan
pm:seat titles showing 🟢 against the incumbent's own recent activity; a seat silent beyond threshold is demoted to ⏳ vacant with an evidence comment (today's seven hand-corrections are the precedent and the template).
Constraints
- Surface includes
.claude/skills/pm-dispatch/references/** ⇒ fable-mandatory dispatch and ADR-class merge path: draft PR, human merge, auto-merge never armed. SKILL.md untouched (686/686, headroom 0 — nothing in this card needs it).- Union of gates runs after the final commit with
git rev-parse --short HEAD quoted in the report and PR body, per the contract that landed today.
Filed and dispatched on direct maintainer instruction (2026-08-14, verbatim, untranslated): the maintainer asked whether 「合并即关账」 and 「下班即改贴」 should be codified into the skill; the seat's assessment was that both rules already exist as text and today's failures were execution failures, so the fix is one clause plus two mechanizations; the maintainer ruled 「现在开工派发」. Maintainer-pulled, so it outranks the process-class-last ordering rule.
Measured evidence (one day's worth)
pm:seatposts corrected in one day for the same failure: the seat's own stand-down/handover was written in comments while the title stayed 🟢 (registry desync; two of today's corrections were themselves race-error re-corrections).Part ofPR had MERGED with the protocol's paired write (droppm:dispatched, re-grade the remainder) never made.Deliverables (three, one PR)
.claude/skills/pm-dispatch/references/dispatch-runbook.md: a verdict executes in the round that produces it. Writing "recommends closing" (or any re-test verdict) without performing the close/label write in the same round is itself a half-state, on the same footing the half-states family already names — record-and-walk-away is prohibited; if the actor lacks authority to execute, the verdict must name who does and carry the state to their inbox, not sit in a comment. Fit the runbook's existing style; ⛔ no issue numbers in operational text (id-lint).scripts/pm/check-half-states.mjs: a new report-only half-state: a card's delivering PR is MERGED while the card still carriespm:dispatched. Follow H7's shape (exported predicate + report-only wiring); extend the self-test suite accordingly; keep the existing export pattern so gates can reuse the predicate.pm:seattitles showing 🟢 against the incumbent's own recent activity; a seat silent beyond threshold is demoted to ⏳ vacant with an evidence comment (today's seven hand-corrections are the precedent and the template).Constraints
.claude/skills/pm-dispatch/references/**⇒ fable-mandatory dispatch and ADR-class merge path: draft PR, human merge, auto-merge never armed.SKILL.mduntouched (686/686, headroom 0 — nothing in this card needs it).git rev-parse --short HEADquoted in the report and PR body, per the contract that landed today.