6.5 KiB
Presentation Demo Chrome Ownership
Status
Approved design direction for the next presentation slice.
Problem
The presentation currently renders the live-target truth badge in the footer of
every main scene. It also renders launch controls inside the Scene 9 operation
content. The target-health model mixes service availability with replay/live
playback, so a healthy live service can appear as Replay evidence while a
direct replay route is being primed. These independent state changes produce
stale labels, layout shifts, and visible flicker when the presenter backtracks.
The input file browser has a separate honesty problem: it displays selected / read, but the rows are not interactive and the recording only contains input
paths, not file contents or a read operation.
Goals
- Show live-target truth only where the prepared workflow demo is active.
- Move prepared-run and retry actions into the persistent presentation footer.
- Make footer content derive from the current scene and beat, so backtracking cannot retain a previous beat's status or copy.
- Separate target health from demo playback mode.
- Keep the footer slot geometrically stable while target health is checking or the run changes phase.
- Make the prepared-run control available throughout the demo arc without repeating large buttons inside individual scenes.
- Replace unsupported file claims with factual input-manifest language.
Non-goals
- Do not implement file selection, file reading, or file-content preview in this slice. Those require content-backed fixtures or a source-read operation.
- Do not change the workflow graph, trace facts, approval form, or live RPC protocol.
- Do not make the presentation footer a second application navigation system.
Demo scope
The demo control rail is visible only for the prepared workflow arc:
- Scene 7:
agent-handoff - Scene 8:
prepared-lifecycle - Scene 9:
run-from-deployment - Scene 10:
typed-human-boundary - Scene 11:
resume-output-evidence
Scene 7 (agent-handoff) remains a scripted conversation, but gains the same
small footer control rail so the presenter can start the prepared run without
adding another large button to the chat composition. All narrative,
architecture, evaluation, conclusion, and discussion locations hide the target
badge and demo actions.
State model
The presentation uses two independent concepts:
Target health
PresentationTargetHealth describes the external service:
checking: the configured target is being probedready: the target responded successfully and no run is activeactive: a live run is in progressfailed: the target is unavailable and replay is the fallbackreplay: no live target is configured
When the target is healthy, the status remains ready even if the current
timeline is showing a reviewed replay. Replay evidence is not a substitute
for Live target ready; playback mode is separate state.
Playback mode
The demo timeline continues to own whether the current walkthrough is live or
replay. This value controls action labels and execution behavior, not the
target-health badge.
Footer composition
PresentationFooter owns one stable demo slot between scene progress and the
evidence receipt. The slot is reserved for every Scene 7–11 location and is
empty elsewhere.
For non-demo scenes, the slot is absent and no target-health copy is rendered. For the demo arc, the slot is always present with a stable minimum width and height. It shows exactly one of these states:
- Before execution: a compact primary action,
Run prepared workflowwhen the live target is healthy orPlay replay walkthroughwhen it is unavailable. - While checking: a compact
Checking live servicestate with the same footprint. - While running: a non-interactive
Running workflow...information label, not a disabled button. - While
demo.state.phase === "review"on Scene 10 (typed-human-boundary):Run paused - review required. This is the only scene that exposes the paused label. - After completion:
Run complete. - After Submit or Deny/Revision is clicked, remove the paused label immediately;
the rail may show a short
Resuming workflow...state while the operation is in flight before returning to the next factual state. - When retry is meaningful: a compact secondary
Retry live serviceaction may sit beside the primary action without changing the slot's size.
The large DemoRunLaunchControl section is removed from scene content layouts.
Its behavior is preserved through this footer rail. There is only one actual
prepared-run action; chat remains explanatory and does not gain a duplicate
run button.
Input manifest language
Until source content is available, each input row says included in prepared run. The row is not a button and does not claim that the presenter can open or
read the file. The output destination remains a factual manifest field.
A later slice may introduce a RunInputFilePreview backed by bundled fixture
content or a real source-read operation. That slice must add an actual click
target, preview content, and tests for the read path rather than relabeling the
current static rows.
Verification contract
The implementation must test:
- title and non-demo scenes render no target badge or demo controls;
- every Scene 7–11 beat renders exactly one compact demo rail;
- the pre-run demo rail renders the run action without an in-scene launch panel;
- a running demo renders an information label instead of a disabled run button;
- Scene 10 alone renders the review-required information label while the decision form is waiting;
- submitting or denying/revising the decision removes the paused label before the next scene is shown;
- a completed demo renders the terminal information label;
- a healthy target remains
Live target readywhile the timeline is replaying; - failed health renders replay fallback only inside demo scope;
- backtracking between Scene 7–11 updates the rail from current state without retaining stale copy;
- backtracking from the demo arc to title removes the rail immediately;
- checking does not change footer dimensions or mount a stale replay label;
- input rows use
included in prepared runand expose no unsupported button or preview affordance.
Deferred follow-up
Build a real input-file preview surface with content-backed fixtures or a source-read RPC. Keep it separate from this chrome ownership slice so target truth and file-content evidence do not become another mixed state machine.