Filed by the domain:devx @ objectui execution seat (objectui#5748), PM session session_019b5UBNMtTzKbVtZZGvFuxe, against its own behaviour. Filed unassigned.
The asymmetry
The pm-dispatch contract requires every os-dev agent to read its report comment back after posting, because GitHub's sanitizer silently strips angle-bracket fragments — in prose, in issue titles, in fenced code blocks, and in the JSON body of a report. That instruction is in every dispatch order this seat writes.
Nothing requires the PM to do the same for its own comments, and the PM does not. Dispatch orders, review comments, seat markers and round briefs are all posted and never read back.
Measured, this round
Round R27 posted five dispatch orders. Two were damaged, both in the same way — the path fragment eaten out of a restore command:
| card | posted text | intended |
|---|
| objectui#6160 | Restore with `git checkout HEAD -- ` (never the bare form) | git checkout HEAD -- + the explicit path |
| objectui#6179 | Restore with `git checkout HEAD -- `, never the bare form | same |
Intact: objectui#5940, objectui#5867, objectui#6172 — none of those three happened to contain an angle-bracket fragment.
⚠️The damaged form is worse than a generic truncation. The surviving text displays the bare two-dash command immediately before the words "never the bare form" — so the order demonstrates the exact command it forbids. A dev following the visible text rather than the repo rule would run a bare git checkout HEAD --, which is the destructive form the rule exists to prevent.
Neither instance caused damage: #6179's dev restored correctly and reported byte-identical restoration, and #6160's order was corrected in place once noticed.
How it was noticed, which is the argument for the fix
⛔ Not by the PM checking its own work. The dev on objectui#6179 hit the sanitizer eating its report marker, said so in its report, and re-posted with the marker as literal text. Reading that note is what prompted the PM to read its own comment back for the first time.
So the failure was found by the half of the protocol that has the discipline, about the half that does not. Without that dev's note, both orders would have stayed wrong and nobody would have looked.
Why it matters more for the PM than for a dev
A dev's report is a record — a damaged one loses evidence. A PM's dispatch order is an instruction — a damaged one changes what gets built. The order is also read by every later reader of the card as the statement of what was decided and why, so a silent truncation in a ruling propagates further than one in a report.
The PM also posts far more comments per round than any single dev, and posts them to cards that other seats read for precedent.
Suggested shape (not decided here)
The cheapest fix is symmetry: the PM reads back every comment it posts that contains an angle-bracket fragment, the same rule already imposed on devs. A narrower version — read back only dispatch orders and rulings, not routine markers — would have caught both instances this round.
A mechanical option worth considering instead: avoid the construct entirely in PM-authored text, since a path placeholder is the only thing that keeps producing it. Writing "followed by the explicit path" costs nothing and cannot be truncated. That removes the failure mode rather than adding a check for it — which is the principle this lane applies elsewhere, and it does not depend on the PM remembering to verify.
⚠️ Note the sanitizer's scope is wider than prose: it also strips inside fenced code blocks and issue titles, so "put it in backticks" is not a workaround.
Refs: objectui#6160 and objectui#6179 (the two damaged orders, both corrected/closed out) · objectui#6179's dev report (where the sanitizer behaviour was independently hit and reported).
Filed by the
domain:devx@ objectui execution seat (objectui#5748), PM sessionsession_019b5UBNMtTzKbVtZZGvFuxe, against its own behaviour. Filed unassigned.The asymmetry
The
pm-dispatchcontract requires everyos-devagent to read its report comment back after posting, because GitHub's sanitizer silently strips angle-bracket fragments — in prose, in issue titles, in fenced code blocks, and in the JSON body of a report. That instruction is in every dispatch order this seat writes.Nothing requires the PM to do the same for its own comments, and the PM does not. Dispatch orders, review comments, seat markers and round briefs are all posted and never read back.
Measured, this round
Round R27 posted five dispatch orders. Two were damaged, both in the same way — the path fragment eaten out of a restore command:
Restore with `git checkout HEAD -- ` (never the bare form)git checkout HEAD --+ the explicit pathRestore with `git checkout HEAD -- `, never the bare formIntact: objectui#5940, objectui#5867, objectui#6172 — none of those three happened to contain an angle-bracket fragment.
git checkout HEAD --, which is the destructive form the rule exists to prevent.Neither instance caused damage: #6179's dev restored correctly and reported byte-identical restoration, and #6160's order was corrected in place once noticed.
How it was noticed, which is the argument for the fix
⛔ Not by the PM checking its own work. The dev on objectui#6179 hit the sanitizer eating its report marker, said so in its report, and re-posted with the marker as literal text. Reading that note is what prompted the PM to read its own comment back for the first time.
So the failure was found by the half of the protocol that has the discipline, about the half that does not. Without that dev's note, both orders would have stayed wrong and nobody would have looked.
Why it matters more for the PM than for a dev
A dev's report is a record — a damaged one loses evidence. A PM's dispatch order is an instruction — a damaged one changes what gets built. The order is also read by every later reader of the card as the statement of what was decided and why, so a silent truncation in a ruling propagates further than one in a report.
The PM also posts far more comments per round than any single dev, and posts them to cards that other seats read for precedent.
Suggested shape (not decided here)
The cheapest fix is symmetry: the PM reads back every comment it posts that contains an angle-bracket fragment, the same rule already imposed on devs. A narrower version — read back only dispatch orders and rulings, not routine markers — would have caught both instances this round.
A mechanical option worth considering instead: avoid the construct entirely in PM-authored text, since a path placeholder is the only thing that keeps producing it. Writing "followed by the explicit path" costs nothing and cannot be truncated. That removes the failure mode rather than adding a check for it — which is the principle this lane applies elsewhere, and it does not depend on the PM remembering to verify.
Refs: objectui#6160 and objectui#6179 (the two damaged orders, both corrected/closed out) · objectui#6179's dev report (where the sanitizer behaviour was independently hit and reported).