Two independent reproductions, two machines, same shape. This breaks the one receipt field that was verified as never-wrong in the #409 review.
Evidence A — M1 Pro, mimirClaude surfaces 4 and 5, both panes
spawn_agent returned:
"boot_prompt_receipt": {
"delivered": true, "terminal": true, "typed": true,
"submit_attempted": true, "submit_verified": true,
"delivery": "submitted", "delivery_state": "submitted", "bytes": 369
}
The panes at that moment:
› Read and follow /Users/happycampr/Gits/mimir/docs.local/plans/…/S1-HYGIENE-BRIEF.md
cmuxlayer mailbox contract for mimirClaude-e9f217f8: monitor with tail -n0 -F …
0 tokens
Fable 5 | $0.00 | 0m
Prompt still in the composer. 0 tokens. $0.00. 0m. The agent never processed anything. Both surfaces, independently.
Evidence B — this Mac, surface:1068, ~90 minutes earlier
Same: spawn_agent reported the boot prompt submitted; the pane showed › Res[Pasted Content 1038 chars] unsubmitted. Distinguishing detail captured there: an MCP server (computer-history) timed out after 30 seconds during boot, and the codex banner showed MCP startup incomplete.
Why this is worse than the earlier receipt bugs
submit_verified: true is the strong claim — it is supposed to mean the composer was observed to clear. The #404/#409 work made the weak fields honest and the #409 reviewer explicitly verified "a delivered:true receipt was never wrong — zero false positives on the strong claim, under every adversarial condition I could build." These are counter-examples, and they were not reachable by that reviewer's method because they require a slow real boot, not a constructed screen.
Consequence in practice: a lead spawns a worker, gets a fully-verified receipt, walks away — and the worker sits at 0 tokens forever with its entire brief unsent. That is the "spawned worker idle with its whole assignment unsent" failure we have hit repeatedly, now with a mechanism.
Likely mechanism
A boot-timing race: the submit verification window elapses while the CLI is still initialising (MCP servers connecting, banner rendering), so the check inspects a composer that is not yet in its post-submit state and reads that as success. It is not machine-specific — the M1 case had no MCP timeout in view, so slow boot alone appears sufficient.
The cheap discriminator we should be using
0 tokens is definitive. An agent that was handed a prompt and has consumed zero tokens did not receive it, whatever the receipt says. Token count is already parsed and displayed (read_screen returns token_count). Post-boot verification should require evidence of consumption — a nonzero token count or an observable turn start — not merely a composer that looks clear.
Suggested
- Boot-prompt verification must not accept a composer state observed before the CLI is ready; gate it on readiness, not on elapsed time.
- Require positive evidence of consumption (
token_count > 0, or a parsed turn start) before emitting submit_verified: true for a boot prompt.
- Add a probe that spawns against a deliberately slow boot (stall an MCP server) and asserts the receipt does not claim verified while the prompt sits unsent. The existing tests cannot catch this — they do not boot a real slow CLI.
Related: #415 (spawn reports failure while creating a live agent — the mirror of this), #424 (prompt_text bloat, visible in the same receipt), skillcreator's defect #1 (3 occurrences reported 2026-08-13).
— cmuxlayerClaude (lead) · claude-code/claude-opus-5
Two independent reproductions, two machines, same shape. This breaks the one receipt field that was verified as never-wrong in the #409 review.
Evidence A — M1 Pro,
mimirClaudesurfaces 4 and 5, both panesspawn_agentreturned:The panes at that moment:
Prompt still in the composer.
0 tokens.$0.00.0m. The agent never processed anything. Both surfaces, independently.Evidence B — this Mac,
surface:1068, ~90 minutes earlierSame:
spawn_agentreported the boot prompt submitted; the pane showed› Res[Pasted Content 1038 chars]unsubmitted. Distinguishing detail captured there: an MCP server (computer-history) timed out after 30 seconds during boot, and the codex banner showed MCP startup incomplete.Why this is worse than the earlier receipt bugs
submit_verified: trueis the strong claim — it is supposed to mean the composer was observed to clear. The #404/#409 work made the weak fields honest and the #409 reviewer explicitly verified "adelivered:truereceipt was never wrong — zero false positives on the strong claim, under every adversarial condition I could build." These are counter-examples, and they were not reachable by that reviewer's method because they require a slow real boot, not a constructed screen.Consequence in practice: a lead spawns a worker, gets a fully-verified receipt, walks away — and the worker sits at
0 tokensforever with its entire brief unsent. That is the "spawned worker idle with its whole assignment unsent" failure we have hit repeatedly, now with a mechanism.Likely mechanism
A boot-timing race: the submit verification window elapses while the CLI is still initialising (MCP servers connecting, banner rendering), so the check inspects a composer that is not yet in its post-submit state and reads that as success. It is not machine-specific — the M1 case had no MCP timeout in view, so slow boot alone appears sufficient.
The cheap discriminator we should be using
0 tokensis definitive. An agent that was handed a prompt and has consumed zero tokens did not receive it, whatever the receipt says. Token count is already parsed and displayed (read_screenreturnstoken_count). Post-boot verification should require evidence of consumption — a nonzero token count or an observable turn start — not merely a composer that looks clear.Suggested
token_count > 0, or a parsed turn start) before emittingsubmit_verified: truefor a boot prompt.Related: #415 (spawn reports failure while creating a live agent — the mirror of this), #424 (
prompt_textbloat, visible in the same receipt), skillcreator's defect #1 (3 occurrences reported 2026-08-13).— cmuxlayerClaude (lead) · claude-code/claude-opus-5