Skip to content

[playtest][CRITICAL] DM turn returns empty player-facing narration on engine-heavy beats #357

Description

@100yenadmin

Found by the first honest baseline (build_sha 4267247, v1.0.3). On the faithful play backend (scripts/play_party.sh baldurs-gate <run> 8788), 2 of 3 player beats produced an EMPTY player-facing DM message in the chat panel (a [say] beat and a [check] beat).

Symptom

DM turn result.is_error:false but reply text length = 0. The engine work happened (party moved to Heapside, NPC created, Insight check resolved: roll 13 vs DC16 FAIL with consequence) and the DM ended on a 3rd-person status line. Prose existed only as terse recentEvents "Beat N —" GM-log entries, not player-facing chat. A newbie sees "I acted and the game replied with nothing." Beats 0–1 wrote full ~4400-char prose, so it's intermittent.

Root cause (suspected — needs confirmation in the resolver)

scripts/play.sh (and scripts/play_party.sh) DM resolver loop: the "narration = final reply text" contract. When the DM's final message is a status line rather than 2nd-person prose, the chat gets an empty/near-empty entry.

Acceptance

Every resolved player beat writes non-empty 2nd-person narration to /chat. Either the DM must always end on player-facing prose, or the resolver must fall back to the latest engine narration event when the reply text is empty. Verified on the NEXT build: a [say] and a [check] beat both produce non-empty chat.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingseverity:criticalBlocks play or shatters CRPG framing (#242 Phase 5)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions