Filed unassigned, observation-class, by the skills PM seat at stand-down (session session_018WuTtyckQa1VcXwgd52JpN). Recording only, not grading — this seat's shift is ending and lane-local grading passes to the successor.
Fact
The claim comment for the union-HEAD-binding card (#8550) recorded the surface as "not under the fable-mandatory roots" and the card was dispatched at opus. The surface in fact included .claude/skills/pm-dispatch/references/review-checklist.md, which is under .claude/skills/pm-dispatch/** — a fable-mandatory root, references included. The dev flagged the discrepancy in the PR body (PR #8635) instead of inheriting the claim's read; the review publicly acknowledged the breach and compensated with a fable-tier line-by-line re-review of the mandatory half before verdict. The PR then merged on the maintainer's explicit authorization, so no delivered harm — but the guardrail was crossed and only a downstream seat's skepticism caught it.
Mechanism
Tier assignment currently rests on the PM recalling the mandatory-roots list and writing free prose into the claim comment. Nothing mechanical compares the card's recorded file surface against the mandatory globs, so a single misclassification sentence flows unchecked from claim → dispatch → model choice. This is the same failure family the lane already fixed once for gate selection: gate families used to be hand-recalled per card until scripts/pm/dispatch-gates.mjs derived them from the actual file list.
Suggested direction (⛔ not a ruling)
Derive the tier the way gate families are derived. Cheapest shapes, for whoever grades this:
dispatch-gates.mjs (which already takes the changed-path list as argv) additionally emits the minimum required model tier for that surface, so claim comments quote a derived value rather than a recalled one.- Alternatively a report-only check that flags a claim comment whose recorded tier contradicts the card's file surface — comparable to the half-states detector in shape.
Either way the invariant becomes: a fable-mandatory path in the surface ⇒ the dispatch record cannot say otherwise without something noticing at claim time rather than at PR time.
Related
#8550 / PR #8635 (the incident and its acknowledgment) · scripts/pm/dispatch-gates.mjs (the derivation precedent).
Filed unassigned, observation-class, by the skills PM seat at stand-down (session
session_018WuTtyckQa1VcXwgd52JpN). Recording only, not grading — this seat's shift is ending and lane-local grading passes to the successor.Fact
The claim comment for the union-HEAD-binding card (#8550) recorded the surface as "not under the fable-mandatory roots" and the card was dispatched at opus. The surface in fact included
.claude/skills/pm-dispatch/references/review-checklist.md, which is under.claude/skills/pm-dispatch/**— a fable-mandatory root, references included. The dev flagged the discrepancy in the PR body (PR #8635) instead of inheriting the claim's read; the review publicly acknowledged the breach and compensated with a fable-tier line-by-line re-review of the mandatory half before verdict. The PR then merged on the maintainer's explicit authorization, so no delivered harm — but the guardrail was crossed and only a downstream seat's skepticism caught it.Mechanism
Tier assignment currently rests on the PM recalling the mandatory-roots list and writing free prose into the claim comment. Nothing mechanical compares the card's recorded file surface against the mandatory globs, so a single misclassification sentence flows unchecked from claim → dispatch → model choice. This is the same failure family the lane already fixed once for gate selection: gate families used to be hand-recalled per card until
scripts/pm/dispatch-gates.mjsderived them from the actual file list.Suggested direction (⛔ not a ruling)
Derive the tier the way gate families are derived. Cheapest shapes, for whoever grades this:
dispatch-gates.mjs(which already takes the changed-path list as argv) additionally emits the minimum required model tier for that surface, so claim comments quote a derived value rather than a recalled one.Either way the invariant becomes: a fable-mandatory path in the surface ⇒ the dispatch record cannot say otherwise without something noticing at claim time rather than at PR time.
Related
#8550 / PR #8635 (the incident and its acknowledgment) ·
scripts/pm/dispatch-gates.mjs(the derivation precedent).