Fix Codex provider live progress in built app - #532
Conversation
📝 WalkthroughWalkthroughThis PR integrates live progress narration detection into app handoff validation and adds provider-side live progress narration beats. The gate accepts session-surface narration when chat hasn't landed; the Codex DM wrapper emits immediate opening/move narration and tests/docs are updated to verify the behavior. ChangesLive Progress Narration Detection and Provider Implementation
Possibly Related PRs
Estimated Code Review Effort🎯 3 (Moderate) | ⏱️ ~25 minutes 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 |
c61ed32 to
6e97a65
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/play_codex_dm.sh`:
- Around line 556-557: The recurring progress line comes from MOVE_PROGRESS_TEXT
passed into log_engine_narration each turn; change the usage so we rotate or
neutralize that string instead of logging the same verbatim text every time:
create a small pool/array of alternate progress variants (or a single brief
neutral phrase) and select one per move before calling
log_engine_narration("$ACTIVE_CAMPAIGN_ID", "$chosen_text"), or implement a
simple round-robin/random pick helper to derive chosen_text from
MOVE_PROGRESS_TEXT variants so the call site remains log_engine_narration with a
non-repeating message.
- Around line 471-474: OPENING_PROGRESS_TEXT currently contains hardcoded Lower
City sensory facts and is logged immediately via log_engine_narration
"$HERO_CAMP" "$OPENING_PROGRESS_TEXT" before start_world("$CLAWDND_WORLD") runs;
change OPENING_PROGRESS_TEXT to a setting-agnostic progress beat (e.g., neutral
"The party prepares to set out…" or a generic "Opening progress" message) or
build it conditionally from the active world/current_location_id after
start_world(...) so you don't commit locale-specific details, and update any
test in qa/test_app_handoff_gate.py that asserts the exact Lower City string to
check for the new neutral message or the conditional construction instead.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: dd03bc5c-cbdb-4ee1-ae3f-8a83512bfc08
📒 Files selected for processing (5)
qa/app_handoff_gate.pyqa/test_app_handoff_gate.pyqa/test_macos_app_static.pyscripts/play_codex_dm.shviewer/openworlds/app.jsx
6e97a65 to
76d5171
Compare
Summary
log_event(kind=\"narration\")progress beat before longer work/session-surfacenarration source when final chat has not landed yetProduct Evidence
/move, live progress, and final DM response for this slice.76d5171passed withhandoff_score=100, dirtyfalse, and zero blockers.76d5171: web scripted smoke, builtdist/WorldOS.appscripted smoke, and builtdist/WorldOS.appCodex-provider playtest, all with zero evidence gaps.Tests
bash -n scripts/play_codex_dm.sh && git diff --checkpython3 -m pytest qa/test_macos_app_static.py qa/test_app_handoff_gate.py viewer/tests/test_live_narration_stream.py -q-> 46 passeduv run --directory servers/engine python -m pytest tests/test_codex_provider_wrapper.py -q -p no:xdist-> 22 passedpython3 qa/app_handoff_gate.py --run-id codex-live-progress-handoff-76d5171 --web-beats 5 --built-beats 5 --codex-moves 1 --art-root <local private-art checkout> --scripted-budget 1.00 --codex-budget 3.00 --timeout 90 --codex-timeout 240-> passed, handoff_score 100Licensing / CLA