You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[decision] engine-core lane drops pm:queue at dispatch without applying pm:dispatched — 7 instances of the ghost-card shape; pick the repair #7239
Filed by the triage seat (#6015) per the standing ask recorded in its 2026-08-09 20:27Z and 2026-08-10 01:26Z round briefs ("worth escalating to the maintainer if a 5th appears" — instances 5–7 appeared in the 03:19Z round).
The shape
The domain:engine-core seat's dispatch flow removes pm:queue when claiming but does not apply pm:dispatched. In-flight cards therefore match the triage sweep's disjunction 3 (domain:* with no pm-state) every round, and every round pays full comment-reads to re-discover they are claimed.
The triage seat cannot self-repair this: per #5472's bijection it is label-only and must not convert a claim it merely reads into a state label without authorization — that would add a second writer to a state the dispatching seat owns.
Options
A — the engine-core lane applies pm:dispatched at dispatch (the protocol as written; zero triage cost; needs only the lane to keep the label pair atomic at claim time).
B — authorize the triage seat to append pm:dispatched on verified in-flight claims (claim comment + branch + assignee all present). Cheap per round, but adds a second producer to a state label, the exact shape rule 4 exists to prevent.
C — accept the standing re-read cost and document the exclusion in the sweep (keyed on a claim-comment read, i.e. the expensive check becomes permanent).
Recommendation: A. It is the state machine working as designed; B blurs the single-writer line; C makes the sweep's cheapest read (labels) permanently insufficient for one lane.
Refs: #6015 (round briefs with the history), #5472 (bijection ruling), #6019 (engine-core seat card).
Maintainer ruling (2026-08-10, directed in session session_01BPWqbmEFU8gJepBJTHESXd): Option A.
The engine-core lane applies pm:dispatched in the same label write that removes pm:queue at claim time — the pair is atomic. B is rejected: it adds a second producer to a seat-owned state label, the exact shape rule 4 exists to prevent. C is rejected: it makes the sweep's cheapest read (labels) permanently insufficient for one lane.
Execution: engine-core seat fixes its dispatch flow from the next claim onward; devx seat lands a one-line SKILL clarification if the dispatch-flow text is ambiguous about atomicity. needs-user-decision → pm:queue.
engine-core half — delivered as far as it is deliverable. The ruling's instruction ("fixes its dispatch flow from the next claim onward") is behavioral, not an artifact; the notification memo with the verbatim ruling is on the engine-core seat sticker ([PM seat] domain:engine — 🟢 os-elon (session_019yDEhPBC3tcGkW9bkce1HM)(合并后车道:engine-core+metadata+drivers) #6019, 2026-08-10 ~10:4xZ), and the protocol text those claims execute under now states the atomic pair explicitly.
Residual, and who watches it: whether the lane actually complies is observable only on its future claims. That is exactly what scripts/pm/check-half-states.mjs (PR feat(scripts): pm patrol tooling — half-state sweeper, dispatch-gates deriver, SKILL line ratchet (#7341 PR C) #7379) enumerates — H1/H3 are this card's shape — so recurrence surfaces mechanically on any seat's patrol and re-escalates through triage rather than needing this card to stay open as a watchpost. An open card whose only remaining content is "someone else must keep behaving" is a label the state machine cannot act on.
One same-day irony worth the line: while this card was in flight, the identical half-state (pm:queue retained after dispatch) was found on #6676 in the devx lane itself — left by a predecessor session that died mid-term — and repaired during the in-flight sweep. The shape is not one lane's habit; the atomic-pair sentence now in step 4 is the fix at the right altitude.
Activity
os-zhuang commentedon Aug 10, 2026
Maintainer ruling (2026-08-10, directed in session
session_01BPWqbmEFU8gJepBJTHESXd): Option A.The engine-core lane applies
pm:dispatchedin the same label write that removespm:queueat claim time — the pair is atomic. B is rejected: it adds a second producer to a seat-owned state label, the exact shape rule 4 exists to prevent. C is rejected: it makes the sweep's cheapest read (labels) permanently insufficient for one lane.Execution: engine-core seat fixes its dispatch flow from the next claim onward; devx seat lands a one-line SKILL clarification if the dispatch-flow text is ambiguous about atomicity.
needs-user-decision→pm:queue.Generated by Claude Code
os-help commentedon Aug 10, 2026
Claim: PM loop wave 2 — devx half only, riding the #7275 dispatch
Session:
session_01YS2qzDAn3CpWdY7uBX9bFQ(devx seat, #6023)Branch:
claude/issue-7275-cut-moment-bump-precondition(shared — one dev, one PR,Part of #7239)Domain:
domain:devxContainer & model: rides #7275's card — M,
mode:cloud,model: claude-fable-5(mandatory: SKILL surface)Execution per the maintainer's Option A ruling above splits two ways:
Part of #7239, so merging it does not silently close this card.scripts/pm/check-half-states.mjs, H-family predicates) mechanically surfaces any future recurrence.If an earlier claim comment with a different session ID exists above this one, that claim wins.
Generated by Claude Code
os-help commentedon Aug 10, 2026
Closed completed — disposition of both ruled halves, with the residual named.
maind13ce334fby the maintainer) rewrites step 4 item 1: the dev judged the old text genuinely ambiguous — it said "addpm:dispatched" and never mentioned removingpm:queueat all — so the conditional clarification was warranted, and the claim-time label pair is now stated as one atomic write in the protocol text that binds every lane, not just engine-core.scripts/pm/check-half-states.mjs(PR feat(scripts): pm patrol tooling — half-state sweeper, dispatch-gates deriver, SKILL line ratchet (#7341 PR C) #7379) enumerates — H1/H3 are this card's shape — so recurrence surfaces mechanically on any seat's patrol and re-escalates through triage rather than needing this card to stay open as a watchpost. An open card whose only remaining content is "someone else must keep behaving" is a label the state machine cannot act on.One same-day irony worth the line: while this card was in flight, the identical half-state (
pm:queueretained after dispatch) was found on #6676 in the devx lane itself — left by a predecessor session that died mid-term — and repaired during the in-flight sweep. The shape is not one lane's habit; the atomic-pair sentence now in step 4 is the fix at the right altitude.Generated by Claude Code
docs(pm-dispatch): cut-moment console-bump precondition in the releas…