feat: compress Scene 11 storyboard beats

This commit is contained in:
lda
2026-07-12 09:00:56 +07:00 Verified
parent 2b4914f21c
commit 3efb51672b
3 changed files with 17 additions and 5 deletions
@@ -57,7 +57,6 @@ describe("defense storyboard catalog", () => {
expect(findBeat("run-from-deployment", "input")?.chatMode).toBe("hidden");
expect(findBeat("run-from-deployment", "graph")?.chatMode).toBe("hidden");
expect(findBeat("typed-human-boundary", "approval")?.chatMode).toBe("hidden");
expect(findBeat("typed-human-boundary", "cancel")?.chatMode).toBe("hidden");
expect(findBeat("resume-output-evidence", "resume")?.chatMode).toBe("hidden");
expect(findBeat("resume-output-evidence", "output")?.chatMode).toBe("hidden");
expect(findBeat("resume-output-evidence", "trace")?.chatMode).toBe("hidden");
@@ -86,12 +85,21 @@ describe("defense storyboard catalog", () => {
expect(findBeat("run-from-deployment", "graph")).toBeDefined();
expect(findBeat("typed-human-boundary", "interrupt")).toBeDefined();
expect(findBeat("typed-human-boundary", "approval")).toBeDefined();
expect(findBeat("typed-human-boundary", "cancel")).toBeDefined();
expect(findBeat("resume-output-evidence", "resume")).toBeDefined();
expect(findBeat("resume-output-evidence", "output")).toBeDefined();
expect(findBeat("resume-output-evidence", "trace")).toBeDefined();
});
it("compresses Scene 11 into interrupt context and one operator decision beat", () => {
expect(findScene("typed-human-boundary")?.beats.map((beat) => beat.id)).toEqual([
"interrupt",
"approval",
]);
expect(findBeat("typed-human-boundary", "interrupt")?.caption).toMatch(/boundary|interrupt/i);
expect(findBeat("typed-human-boundary", "approval")?.caption).toMatch(/decision|resume/i);
expect(findBeat("typed-human-boundary", "cancel")).toBeUndefined();
});
it("defines discussion branches across multiple scenes", () => {
expect(discussionBranches.length).toBeGreaterThanOrEqual(5);
const positioningBranches = discussionBranches.filter((b) => b.parentSceneId === "positioning");
@@ -199,8 +199,12 @@ export const mainScenes = defineScenes([
view: "demo",
beats: [
sceneBeat("interrupt", "Interrupt payload", "Execution reaches a declared issue-review boundary.", { chatMode: "hidden", chatTheme: "light" }),
sceneBeat("approval", "Approval", "The operator reviews a schema-backed resume request.", { chatMode: "hidden", chatTheme: "light" }),
sceneBeat("cancel", "Cancel path", "Replay cancellation stays honest and does not show submitted evidence.", { chatMode: "hidden", chatTheme: "light" }),
sceneBeat(
"approval",
"Approval",
"The operator makes a decision by choosing a submitted or revision-requested outcome for the paused run.",
{ chatMode: "hidden", chatTheme: "light" },
),
],
},
{