refactor: make scene 8 a single chat entry beat

This commit is contained in:
lda
2026-07-12 06:15:19 +07:00 Verified
parent f22077da37
commit c5f9bed26d
12 changed files with 42 additions and 120 deletions
@@ -22,12 +22,12 @@
## Task 1: Remove The Redundant Scene 8 Handoff Beat
- [ ] Write failing storyboard/navigation and Scene 8 tests before changing the catalog. Cover the single-beat count, valid request hash, invalid/removed handoff hash fallback, and footer progress.
- [ ] Modify `web/apps/console/src/presentation/storyboard.ts` so `agent-handoff` contains only the `request` beat. Update its caption/title wording if needed so it describes the request-to-first-turn interaction rather than a separate durable-work handoff.
- [ ] Simplify `AgentHandoffScene.tsx` and its tests: remove the `handoff` branch, deployment projection, and any comments claiming Scene 8 renders the full authoring transcript. Keep the local empty/submitted reducer and `Scene8ChatEntry` behavior.
- [ ] Remove stale `/handoff` references from `PresentationRoute.test.tsx`, `SceneBody.test.tsx`, `web/README.md`, and nearby docs. Do not add a compatibility alias for a route that has no real persisted/external contract; invalid hashes should use the existing fail-closed default.
- [ ] Confirm the full authoring conversation remains available through Scene 9 and is not deleted with the route cleanup.
- [ ] Run focused storyboard, route, and Scene 8 tests plus typecheck. Commit as `refactor: make scene 8 a single chat entry beat`.
- [x] Write failing storyboard/navigation and Scene 8 tests before changing the catalog. Cover the single-beat count, valid request hash, invalid/removed handoff hash fallback, and footer progress.
- [x] Modify `web/apps/console/src/presentation/storyboard.ts` so `agent-handoff` contains only the `request` beat. Update its caption/title wording if needed so it describes the request-to-first-turn interaction rather than a separate durable-work handoff.
- [x] Simplify `AgentHandoffScene.tsx` and its tests: remove the `handoff` branch, deployment projection, and any comments claiming Scene 8 renders the full authoring transcript. Keep the local empty/submitted reducer and `Scene8ChatEntry` behavior.
- [x] Remove stale `/handoff` references from `PresentationRoute.test.tsx`, `SceneBody.test.tsx`, `web/README.md`, and nearby docs. Do not add a compatibility alias for a route that has no real persisted/external contract; invalid hashes should use the existing fail-closed default.
- [x] Confirm the full authoring conversation remains available through Scene 9 and is not deleted with the route cleanup.
- [x] Run focused storyboard, route, and Scene 8 tests plus typecheck. Commit as `refactor: make scene 8 a single chat entry beat`.
## Task 2: Vendor And Validate The Assistant Thread Surface
@@ -97,8 +97,8 @@ When Send is activated with non-empty text:
The send action must not call `workflow.runs.start`, `workflow.runs.resume`, or
any other workflow RPC. It is a scripted presentation entry event.
If the presenter advances with `ArrowRight`, the existing storyboard location
changes to `#scene/agent-handoff/handoff`, and the full prepared authoring
Scene 8 has no second handoff beat. Advancing with `ArrowRight` moves directly
to Scene 9's first lifecycle beat, where the full prepared authoring
conversation becomes visible through the existing phase projection.
If the composer is empty or contains only whitespace, Send is disabled and no
@@ -176,8 +176,6 @@ encoded in the URL hash.
- Whitespace-only draft: treated as blank.
- Send while already submitted: disabled or ignored; it must not duplicate the
prepared conversation.
- Direct navigation to the handoff beat: render the full prepared conversation
without requiring the request-beat send transition.
- Missing recording data: preserve the existing bounded presentation fallback
and render an explicit unavailable state rather than inventing a live result.
@@ -191,13 +189,11 @@ Add or update tests for:
3. sending reveals the prepared request/assistant/Discover content and does not
call workflow RPC operations;
4. sending twice does not duplicate the first conversation;
5. direct navigation to the handoff beat still renders the full prepared
conversation;
6. Scene 8 no longer renders the standalone `Run prepared workflow` button or
5. Scene 8 no longer renders the standalone `Run prepared workflow` button or
the old phase rail;
7. 1280x720 and 1024x768 browser smoke captures show the composer without
6. 1280x720 and 1024x768 browser smoke captures show the composer without
clipping or horizontal overflow;
8. reduced-motion mode does not hide the submitted conversation.
7. reduced-motion mode does not hide the submitted conversation.
## Out Of Scope
@@ -214,6 +210,6 @@ Add or update tests for:
The slice is complete when the presenter can open
`#scene/agent-handoff/request`, see a credible full-screen chat entry, press
Send, see the first prepared authoring turn, advance to the handoff beat, and
continue into Scene 9 without a standalone run button or a second chat state
runtime. The behavior is covered by focused tests and 16:9/4:3 browser smoke.
Send, see the first prepared authoring turn, and continue directly into Scene 9
without a standalone run button or a second chat state runtime. The behavior is
covered by focused tests and 16:9/4:3 browser smoke.