5.2 KiB
Presentation Evidence Handoff Hardening Plan
Status: Completed on 2026-07-11.
For agentic workers: execute this plan task-by-task, keep the canonical replay as the source of truth, and run the review skill before completion.
Goal
Make the trace beat a reliable factual handoff from replay/live execution into
the presentation proof surface. Reaching
#scene/resume-output-evidence/trace must show the three canonical trace
frames, rather than an empty-state message caused by route timing or incomplete
stage priming.
The same path must remain honest in live mode: a trace is shown only after the
workflow.runs.trace read has completed for the resumed run. Cancellation must
remain terminal and must not manufacture submitted-run trace evidence.
Current Boundary
- Keep
lda-report-success.v1.jsonas the replay source of truth. - Keep
projectDemoRunFacts()andRunTraceFactsas the presentation projection seam; do not add a second trace model or hand-authored frame fixture. - Keep the existing
useDemoTimelinereplay/live controller and JSON-RPC transport. Do not add a new transport or a second server endpoint. - Keep the continuous Scene 8/9 authoring chat unchanged except for integration regressions exposed by this slice.
- Do not reintroduce the removed authoring trace modal or evidence drawer.
Tasks
1. Reproduce and pin the empty-trace failure
Inspect the direct-hash lifecycle in PresentationRoute and
useDemoTimeline.
- Add a route-level regression test that mounts the trace hash from a fresh
replay state and waits for
workflow trace frames. - Assert that the empty message
No trace frames captured.is absent. - Assert all three canonical node IDs are visible:
list_documents,review_issues, andfinalise_report. - Assert the route reaches
trace_readbefore rendering the facts. - Add a test for a trace hash entered after a previous scene so stale
appliedCountor stale location state cannot hide the frames.
2. Harden replay stage priming
Use the existing primeReplayToStage("trace_read") seam and make its contract
explicit.
- Verify that priming includes the required event itself, not only the events before it.
- Ensure the effect is safe when the recording is loaded, the route changes, or React effects run twice in development.
- Avoid calling
next()for replay trace priming; replay should remain a pure projection of recorded events. - Keep the operation/evidence record for
workflow.runs.tracealigned with the same canonical event used byRunTraceFacts.
3. Harden live trace completion
Audit the existing live trace effect in PresentationRoute and the timeline
controller.
- After a live
run_resume, issue exactly oneworkflow.runs.traceread when the trace beat is reached. - Do not issue the trace read before the resumed run exists.
- Do not issue it twice on rerender, repeated navigation, or React Strict Mode effect replay.
- Do not issue it after a cancelled approval.
- Surface a truthful live error if the trace read fails; do not fall back to replay frames while claiming the live run is active.
4. Make the proof surface explicit and readable
Keep the current factual panel, but make the successful state unambiguous.
- Show a clear
3 framessummary tied to the trace operation. - Keep node ID, step type, outcome, resolved input, output, and state changes visible for every frame.
- Preserve internal scrolling for long values without resizing the primary presentation canvas.
- Keep the compact output summary secondary to trace evidence.
- Preserve the existing empty state for genuinely missing trace data; it must only appear when the required trace event has no frames.
5. Browser smoke and review
Verify both supported presentation geometries:
1280x720athttp://127.0.0.1:5173/present#scene/resume-output-evidence/trace1024x768at the same hash- Previous scene -> trace navigation with ArrowRight
- Fresh direct trace navigation
- Replay cancellation path, confirming no submitted trace appears
- Live path with the example RPC server, if available
Capture screenshots and inspect them visually. Confirm no old modal, receipt, blank trace panel, clipped frame content, or unintended outer-page scroll.
Run:
pnpm --dir web test
pnpm --dir web typecheck
pnpm --dir web build
git diff --check
Run the repository review skill before archiving this plan. Archive the plan to
docs/historical/superpowers/plans/ only after the browser and test gates pass.
Out Of Scope
- Renaming source IDs from
local.lda_docstolda_docs.local. - Adding live LLM credentials or a new assistant runtime.
- Reworking the full presentation visual language.
- Replacing the
/consolelifecycle explorer. - Adding remote phone control or a second presenter server.
Success Criteria
- Direct trace navigation consistently renders the three canonical frames.
- Replay and live modes cannot display evidence from the wrong run or branch.
- Cancellation remains terminal and produces no submitted trace evidence.
- The trace proof is readable at both 16:9 and 4:3 without page-level scrolling.
- All web tests, typechecks, build, review, and screenshot checks pass.