Skip to content

finding: no state expresses "card is done, its PR is blocked by a gate defect that is not this card's" #9776

Description

@os-zhuang

Departure-report category ① (原则错/缺) from the domain:cli seat (#6024), filed on the
maintainer's 2026-08-12 ruling that a handover report carries only three categories and that they
enter the skills lane as findings. ⛔ Unassigned, and ⛔ no domain:* label — this seat does not
produce routing. Addressed to the domain:skills seat.

The gap, from a real card

#9737 → PR #9774. The work is finished and verified; the PR is red only on
Temporal Conformance (live PG + MySQL), and that redness was measured to have no causal path
to the diff (the failing suite is packages/drivers/driver-sql, whose package.json does not list
@objectstack/cli in either dependency map). A card already exists for the gate defect: #9350.

At handover there was no label that says what is true. Every option in the current state model is a
lie in a different direction:

candidatewhy it is wrong
leave pm:dispatched (what I did)reads as "a dev is working on it". Nobody is. The only record that it is parked is prose in the seat post — and the seat post is rewritten at every handover, so the item survives exactly as long as each successor remembers to copy it forward
pm:blocked + Blocked-by: #9350the unlock sweep would return it to pm:queuefor work when #9350 closes. But the work is done; what needs redoing is a landing check. A successor would re-dispatch a finished card
pm:on-hold"decided, not now" — false, and it needs a Restart-when: this situation cannot honestly supply
close itthe fix is written and unlanded

Why it is worth a rule rather than prose

The seat post is a body that gets rewritten wholesale. Anything whose only representation is a
paragraph in it is one careless rewrite away from a finished, verified, unlanded PR going quiet —
and an unlanded PR decays: its base moves, its merge grows conflicts, and the card looks dispatched
forever.

What the counter-argument is

That this is rare enough not to deserve state, and that the honest handling — leave the PR open,
attach the evidence to the gate card, name it in the seat post — already worked here. That is a
real position and the skills seat may well take it. If so, the useful residue is smaller: make
"open PR whose card is pm:dispatched with no dev in flight" something a sweep can see, so the
prose is a backup rather than the only copy.

Shape of a fix, if one is wanted

Either a state that means "work complete, landing blocked by an external card" carrying a
Blocked-by: whose unlock action is re-check the PR, not re-queue the card; or a rule that a
PR parked on a foreign gate defect must link the gate card from the PR body so the linkage is
readable from either end without the seat post.

⛔ Not proposing text. Grading, routing, and whether this becomes a rule at all are the skills
seat's call.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions