Filed unassigned by the domain:spec executor seat (session session_01B4h3medzvhB9rpfoja9jcw) for the skills lane — a protocol-text change candidate for .claude/skills/pm-dispatch/SKILL.md.
The ruling (maintainer, live PM chat, 2026-08-21, verbatim, untranslated)
你自己就是 Fable,自己就可以审核
Context: the spec seat had three ACCEPTed, CI-green PRs (#10617 / #10669 / #10733) parked on needs:contract-review for ~5.6h because the triage Routine's clearing sub-round stalled, and the seat refused to self-clear per SKILL.md's reviewer-eligibility rule (① contract-review tier; ② not the dispatching seat — 「犯规席在结构上无资格补救自己的犯规」). The maintainer's ruling relaxes condition ②: a PM seat that itself runs at CONTRACT_REVIEW_TIER (machine-verified via get_session, not self-description) may perform the contract review and clear the label on cards it dispatched.
Why the relaxation is coherent (for the skills seat's edit)
The gate compensates for the DEV's dispatch tier being below the contract-review tier — the risk is un-reviewed contract-face content from a lower-tier implementer. The PM never writes code (standing invariant), so a fable PM reviewing its own dispatch's PR is not reviewing its own work product; condition ② was guarding against a different failure (a seat rubber-stamping to unblock itself), which the maintainer has now judged acceptable for a fable-tier seat against the measured cost (two multi-hour sub-round stalls in two shifts, three green PRs parked each time).
What the SKILL.md edit should preserve
- Condition ① stays hard: the reviewing session's
external_metadata.last_served_model must equal CONTRACT_REVIEW_TIER (machine reading, no self-description, the existing 降档保险丝). - The review itself stays: a one-line-or-more verdict on the card covering the contract-face increment, before the label is cleared — the ruling waives the separate seat, not the review.
- The triage sub-round remains the default clearing path; seat self-clear is the fallback when the seat is at tier (so opus-session seats still wait, per the 2026-08-20 席位档策略).
This card records the ruling; the skills seat owns the wording and the PR (governed face, fable mandate per the protocol-semantics clause, human merge).
Filed unassigned by the
domain:specexecutor seat (sessionsession_01B4h3medzvhB9rpfoja9jcw) for the skills lane — a protocol-text change candidate for.claude/skills/pm-dispatch/SKILL.md.The ruling (maintainer, live PM chat, 2026-08-21, verbatim, untranslated)
Context: the spec seat had three ACCEPTed, CI-green PRs (#10617 / #10669 / #10733) parked on
needs:contract-reviewfor ~5.6h because the triage Routine's clearing sub-round stalled, and the seat refused to self-clear per SKILL.md's reviewer-eligibility rule (① contract-review tier; ② not the dispatching seat — 「犯规席在结构上无资格补救自己的犯规」). The maintainer's ruling relaxes condition ②: a PM seat that itself runs atCONTRACT_REVIEW_TIER(machine-verified viaget_session, not self-description) may perform the contract review and clear the label on cards it dispatched.Why the relaxation is coherent (for the skills seat's edit)
The gate compensates for the DEV's dispatch tier being below the contract-review tier — the risk is un-reviewed contract-face content from a lower-tier implementer. The PM never writes code (standing invariant), so a fable PM reviewing its own dispatch's PR is not reviewing its own work product; condition ② was guarding against a different failure (a seat rubber-stamping to unblock itself), which the maintainer has now judged acceptable for a fable-tier seat against the measured cost (two multi-hour sub-round stalls in two shifts, three green PRs parked each time).
What the SKILL.md edit should preserve
external_metadata.last_served_modelmust equalCONTRACT_REVIEW_TIER(machine reading, no self-description, the existing 降档保险丝).This card records the ruling; the skills seat owns the wording and the PR (governed face, fable mandate per the protocol-semantics clause, human merge).