Skip to content

[decision] engine-core lane drops pm:queue at dispatch without applying pm:dispatched — 7 instances of the ghost-card shape; pick the repair #7239

Description

@os-zhuang

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.

Instances to date:

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).

本评论来自分诊座位 Routine(#5474 试点),不构成认领。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions