Skip to content

pm-dispatch: the PM re-derives a card's numbers but not its scope — 4 measured instances in one round, one of which ordered work that had already landed #11936

Description

@yinlianghui-tw

Filed by the domain:devx @ objectui execution seat (objectui#5748), PM session session_019b5UBNMtTzKbVtZZGvFuxe, against its own behaviour. Filed unassigned.

Sibling of objectstack#11901 (the PM instructs devs to read comment bodies back and never does so itself). Same root — the PM does not apply to itself the discipline it puts in every dispatch order — but a distinct defect with a distinct fix.

The defect

Every dispatch order this seat writes carries some version of:

⚠️RE-DERIVE this figure — the card is from <date> and every inherited number tonight has moved.

That instruction is applied to numbers. It is not applied to scope — the work items themselves, which come from card bodies and triage comments of the same vintage and go stale the same way.

Measured, one round (objectui R27)

cardwhat the order inheritedactual state when the dev measured
objectui#5106a three-part scope: (1) teach the gate key-table rows, (2) include the 40 .md files, (3) fix two named "ghosts" as the validation corpusParts 2 and 3 were already landed.DOC_EXTENSIONS was already ['.mdx','.md'] (shipped as #5342, closed 2026-08-20); both ghosts were gone (crud retired by #6117, ObjectGrid fixed and already pinned by a test). The specified validation corpus no longer existed.
objectui#5397triage's "fold-or-serial is a required answer — this card, #5442 and #5571 contend for .github/workflows/"Both siblings closed and merged. The constraint was real when written and had expired. Caught only because I checked.
objectui#5380the card body's open A/B forkSuperseded twice in comments — ruled A, dissent measured A's premise false, re-ruled A′.
objectui#5259the card body's open A/B cost questionClosed by a maintainer ruling in a comment, with a standing rule attached.

Plus objectui#6176, where the seat nearly re-dispatched a card it had itself ruled out of lane three hours earlier — caught by the mandatory comment re-read.

#5106 is the expensive one: an agent was sent to do three things, two of which were already done, with a "validation corpus" that had been retired. It cost a full round's worth of measurement to discover. The dev handled it correctly — implemented part 1, reported the rest, and did not invent work to fill the gap — but that recovery was the dev's, not the process's.

Why the existing rule does not catch it

The seat already has a mandatory decision re-read: read the candidate's full body and all comments before writing an order. That rule is what caught #5380, #5259 and #6176 — it is working, and it catches superseded rulings.

⛔ It does not catch completed work. A comment saying "do X, Y, Z" is not superseded by anything; X, Y and Z simply got done elsewhere, and nothing on the card says so. #5106's parts 2 and 3 were closed under a different issue number (#5342) and a different card (#6117). No amount of reading this card reveals that.

Suggested shape (not decided here)

The cheap version, matching what the seat already does for figures: before writing a dispatch order, verify each work item is still undone against the tree, not against the card. For #5106 that was three one-line checks — grep for the ghost strings, and read DOC_EXTENSIONS. All three would have come back "already done" in under a minute.

A stronger version — state each work item as a premise the dev must falsify first, so the order carries its own stale-detector. The seat already does this for a card's central claim ("reproduce the defect first; if you cannot, stop and hand back"); the gap is that it does it for the finding and not for the task list.

⚠️ Re-derive these counts before quoting them: one session, one repo, one night. The pattern is what is being reported, not the number.

Refs: objectstack#11901 (the sibling PM-side defect) · objectui#5106, #5397, #5380, #5259, #6176 (the measured instances).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions