Found: 2026-06-05 sweep-3b (build f093901), adversarial persona — [MAJOR], dropped sat 9→4.
Symptom (adversarial, verbatim): "After submitting the Do action ('Stand down. That child is with me.') via Enter, the text appeared in the chronicle log but the DM never responded for 3+ minutes. No spinner, no narration, no error — the UI sat idle with all action buttons still enabled. The DM only began narrating after the player manually clicked the 'Continue' button."
Root-cause hypothesis (needs repro): both the Enter-submit Do (screen-table.jsx composer → postMove, line ~754; Enter at line ~1100) and the Continue quick-action go through the SAME postMove. But after an Enter-submit the viewer's pending/narrating state does not arm (no spinner, can_act stays true) — so the player gets zero feedback while play_party.sh is actually composing the beat (~150s). They perceive "no DM", click Continue, which re-arms pending + surfaces the reply. This is the recurring viewer-state-machine class (armPending post-await race at line 450-451; the is_live_view/can_act lockout family, cf #35/#36).
Why it matters: intermittent (adversarial sat was 9 the prior sweep — it didn't fire then), so it's a key driver of G3 single-run variance. Blocks a clean multi-run mean.
Acceptance: an Enter-submitted Do reliably arms the narrating spinner (or an equivalent "DM is composing" affordance) immediately, and the DM beat fires without a manual Continue. Add a deterministic guard (the move-sink → pending-arm contract) so it can't regress silently.
Repro lane: VM 5-persona sweep, adversarial persona; or a focused Playwright harness run that Enter-submits a Do and asserts the spinner arms + a DM beat lands.
Found: 2026-06-05 sweep-3b (build f093901), adversarial persona —
[MAJOR], dropped sat 9→4.Symptom (adversarial, verbatim): "After submitting the Do action ('Stand down. That child is with me.') via Enter, the text appeared in the chronicle log but the DM never responded for 3+ minutes. No spinner, no narration, no error — the UI sat idle with all action buttons still enabled. The DM only began narrating after the player manually clicked the 'Continue' button."
Root-cause hypothesis (needs repro): both the Enter-submit Do (
screen-table.jsxcomposer →postMove, line ~754; Enter at line ~1100) and the Continue quick-action go through the SAMEpostMove. But after an Enter-submit the viewer's pending/narrating state does not arm (no spinner,can_actstays true) — so the player gets zero feedback whileplay_party.shis actually composing the beat (~150s). They perceive "no DM", click Continue, which re-arms pending + surfaces the reply. This is the recurring viewer-state-machine class (armPendingpost-await race at line 450-451; theis_live_view/can_act lockout family, cf #35/#36).Why it matters: intermittent (adversarial sat was 9 the prior sweep — it didn't fire then), so it's a key driver of G3 single-run variance. Blocks a clean multi-run mean.
Acceptance: an Enter-submitted Do reliably arms the narrating spinner (or an equivalent "DM is composing" affordance) immediately, and the DM beat fires without a manual Continue. Add a deterministic guard (the move-sink → pending-arm contract) so it can't regress silently.
Repro lane: VM 5-persona sweep, adversarial persona; or a focused Playwright harness run that Enter-submits a Do and asserts the spinner arms + a DM beat lands.