Skip to content

fix(#623): claude/.app DM logs early /events progress beat (kills perceived drop/hang) - #631

Merged
100yenadmin merged 1 commit into
mainfrom
fix/623-live-progress-claude-dm
Jun 3, 2026
Merged

fix(#623): claude/.app DM logs early /events progress beat (kills perceived drop/hang)#631
100yenadmin merged 1 commit into
mainfrom
fix/623-live-progress-claude-dm

Conversation

@100yenadmin

@100yenadmin 100yenadmin commented Jun 3, 2026

Copy link
Copy Markdown
Member

Closes the root cause of #623 (the biggest story-persona satisfaction lever). Forensics (measure-first, sweep_v8): the DM beats ran clean (85-157s, ttft 2-5s, all recorded, zero errors) but viewer.log streaming-refs=0 — play_party.sh (the .app + claude-lane sweep DM path) lacked the LIVE_PROGRESS_LOG_RULE that play_codex_dm.sh has, so the claude DM emitted nothing to /events until the full beat finished → blank viewer → perceived drop/hang. Fix: prepend the live-progress rule to every DM turn message in play_party.sh (parity). Lands in BOTH the shipped .app and the VM sweeps. Guard: test_play_party_dm_has_live_progress_rule. Expected effect: the next VM sweep should show streaming refs > 0 and lift the narrative/newbie scores (8+ writing no longer dragged to 6 by the false drop/hang).

Summary by CodeRabbit

  • Bug Fixes

    • Fixed missing event streaming during extended narration sequences, ensuring real-time gameplay updates flow continuously to players.
  • Tests

    • Added regression test to verify and maintain event streaming consistency during game narrative beats.

…perceived drop/hang)

worldos-latency-forensics (measure-first on sweep_v8 narrative): the 'silent drop' +
'10-min hang' were NOT real DM unreliability — beats ran clean (85-157s, ttft 2-5s, all
recorded, zero errors), but viewer.log streaming-refs=0. Root cause: play_codex_dm.sh
applies a LIVE_PROGRESS_LOG_RULE (DM logs an early log_event narration beat so /events
shows progress mid-turn), but play_party.sh — the .app's AND the VM claude-lane sweep's
DM path — had it ZERO times. So the claude DM emitted nothing until the full 85-157s beat
finished → the viewer showed blank → the player/persona perceived a dropped/hung beat (the
single biggest story-persona satisfaction drag).

Fix: define CLAWDND_LIVE_PROGRESS_RULE in play_party.sh (parity with play_codex_dm.sh) and
prepend it to every DM turn message. Now the claude DM logs an early progress beat → /events
streams visible story progress while the turn composes. Affects the .app AND the sweeps.

Guard: test_play_party_dm_has_live_progress_rule (asserts the rule is defined + applied +
parity with the codex path) — prevents the three DM harnesses from drifting again.

bash -n clean; guard passes.
@100yenadmin 100yenadmin added this to the v0.3 Sprint 6 — Depth & Legibility milestone Jun 3, 2026
@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e6767eab-9a4b-42d8-a7de-7dca7ceedaf6

📥 Commits

Reviewing files that changed from the base of the PR and between 55cdeb6 and 9fb2ef0.

📒 Files selected for processing (2)
  • scripts/play_party.sh
  • servers/engine/tests/test_dm_session_remint.py

📝 Walkthrough

Walkthrough

The PR introduces a live-progress narration streaming feature by defining CLAWDND_LIVE_PROGRESS_RULE in play_party.sh to instruct the DM to emit early narration events before long resolution work, then applies this rule to every DM turn. A regression test verifies the rule is defined and consistently used across DM wrapper scripts.

Changes

Live progress narration streaming

Layer / File(s) Summary
Live progress rule definition and DM integration
scripts/play_party.sh
Introduces CLAWDND_LIVE_PROGRESS_RULE prompt directive instructing the DM to log one early narration progress event after consuming live context, before longer resolution work. The DM turn function prepends this rule to every prompt, ensuring consistent early event emission.
Regression test for live progress rule parity
servers/engine/tests/test_dm_session_remint.py
Adds test_play_party_dm_has_live_progress_rule() to verify the rule is defined and applied in play_party.sh, and confirms the companion LIVE_PROGRESS_LOG_RULE exists in play_codex_dm.sh for consistent live-progress behavior.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • electricsheephq/WorldOS#532: Introduces the companion LIVE_PROGRESS_LOG_RULE in play_codex_dm.sh with gating logic and test coverage for similar early-narration progress streaming.

Poem

🐰 A prompt whispered true,
Early beats now shine through—
No more blank-streamed waits,
Progress tells the fates.
Rules aligned, tests pass, hooray!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description explains the problem, root cause, and solution clearly, but is missing the required CLA and Validation sections from the template. Complete the Licensing/CLA and Validation sections of the pull request description template to ensure compliance and document checks performed.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main fix: adding live /events progress logging to the DM to resolve the perceived hang issue #623.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant