fix(DM): prose-not-scaffolding — DM echoed its planning notes as the scene (narrative crit) - #647
Conversation
…id note-output QA 2026-06-05 (narrative persona, 2 criticals, blocks_progress=True): the .app DM rendered its internal scaffolding notes VERBATIM as the scene — "Devella presses Renn on the seal. Renn: the rangers made that call — no log filed." — instead of lived 2nd-person prose. The #642 runbook injection made it worse: the DM treated the injected arc directive as content to echo. Fix: (1) frame the runbook as "[ARC CUE — internal planning ONLY; do NOT quote/echo this line]" so the DM weaves its INTENT into the scene rather than rendering it verbatim; (2) a hard prose-only output rule carrying the exact failure example (Wrong: 'X presses Y...' / Right: render it lived). Keeps the G1 combat-driving (the runbook still fires — only its FRAMING changed). Guard updated.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThis PR adds an internal planning framing directive to the per-beat DM prompt in the game engine's beat-play orchestrator, marking the runbook and planning content as non-player-facing, and extends test assertions to verify that the DM does not echo this scaffolding into player narration. ChangesDM Prompt Restructuring
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
Comment |
…hronicle leak) The dc0d625 re-baseline sweep narrative persona hit a MAJOR: a DM-internal scene summary leaked into the player Chronicle at the end of the cold open — "Cold open — Lower City, Murl's Rest... Choice: return to Sundries and say nothing, or head for Rivington to find the survivor." — a 3rd-person director's note with a Choice: branch list, not player-facing prose. Root: the #623 live-progress rule (play_party.sh:145) tells the DM to log_event a 'player-facing progress beat' for the /events stream, but — unlike the cold-open REPLY guard (line ~459, which forbids 3rd-person setup briefs/'COLD OPEN —' notation) — it carried NO scaffolding guard, so the DM logged its 3rd-person scene-PLAN as the progress beat and it rendered straight into the chronicle. Fix: extend the live-progress rule to require 2nd-person prose addressed to 'you' and forbid scene summaries, 'Cold open —'/'Scene:'/'Setup:' headers, 'Choice: X or Y' branch lists, bracketed stage directions, and director/planning notes. Mirrors the reply guard. Prompt-only change; validated in the next 5-persona re-sweep (no deterministic unit test for DM prose). Part of the prose-not-scaffolding class (#636/#647).
…hronicle leak) (#678) The dc0d625 re-baseline sweep narrative persona hit a MAJOR: a DM-internal scene summary leaked into the player Chronicle at the end of the cold open — "Cold open — Lower City, Murl's Rest... Choice: return to Sundries and say nothing, or head for Rivington to find the survivor." — a 3rd-person director's note with a Choice: branch list, not player-facing prose. Root: the #623 live-progress rule (play_party.sh:145) tells the DM to log_event a 'player-facing progress beat' for the /events stream, but — unlike the cold-open REPLY guard (line ~459, which forbids 3rd-person setup briefs/'COLD OPEN —' notation) — it carried NO scaffolding guard, so the DM logged its 3rd-person scene-PLAN as the progress beat and it rendered straight into the chronicle. Fix: extend the live-progress rule to require 2nd-person prose addressed to 'you' and forbid scene summaries, 'Cold open —'/'Scene:'/'Setup:' headers, 'Choice: X or Y' branch lists, bracketed stage directions, and director/planning notes. Mirrors the reply guard. Prompt-only change; validated in the next 5-persona re-sweep (no deterministic unit test for DM prose). Part of the prose-not-scaffolding class (#636/#647). Co-authored-by: Eva <arncalso@gmail.com>
QA 2026-06-05 (sweep-3b, narrative persona — 2 criticals,
blocks_progress=True): the .app DM rendered its internal scaffolding notes verbatim as the scene instead of lived prose:The #642 runbook injection made it worse — the DM treated the injected arc directive as content to echo. (newbie/veteran were unaffected at 8/7; narrative dropped 8→4.)
Fix:
[ARC CUE — internal planning ONLY; do NOT quote/echo this line; weave its INTENT into the scene]— so it drives the arc without being rendered.Keeps the G1 win (the runbook still fires → combat still drives; only its framing changed). Guard
test_play_party_drives_the_arc_runbookupdated. bash -n clean; 10 harness tests pass. Validation: next multi-run sweep (does narrative recover + combat hold).Summary by CodeRabbit