fix: close presentation review findings

This commit is contained in:
lda
2026-07-10 23:18:26 +07:00 Verified
parent 0da27e2b2c
commit 93b6edae4e
12 changed files with 129 additions and 44 deletions
@@ -77,17 +77,17 @@ describe("ConclusionScene", () => {
expect(screen.getByRole("list", { name: "future work layers" })).toHaveAttribute("data-state", "receded");
});
it("keeps evidence as a separately identified node after the runtime", () => {
it("attaches evidence vertically beneath the typed substrate rather than extending the contribution line", () => {
render(<ConclusionScene scene={scene} beat={beat("future")} />);
const nodes = [...screen.getByLabelText("contribution flow").children];
expect(nodes.map((node) => node.getAttribute("data-node-id"))).toEqual([
const executionNodes = [...screen.getByLabelText("contribution flow").children]
.filter((node) => node.getAttribute("data-evidence-attachment") !== "vertical");
expect(executionNodes.map((node) => node.getAttribute("data-node-id"))).toEqual([
"planner",
"substrate",
"runtime",
"evidence",
]);
expect(nodes[2]).toHaveAttribute("data-node-id", "runtime");
expect(nodes[3]).toHaveAttribute("data-node-id", "evidence");
expect(screen.getByText("Persisted, inspectable evidence").closest("[data-node-id='evidence']"))
.toHaveAttribute("data-evidence-attachment", "vertical");
});
it("marks every future-work icon neutral while substrate stays the sole emphasis", () => {
@@ -4,6 +4,7 @@ import { StageCaption } from "../StageCaption.js";
import type { SceneBeatDefinition, SceneDefinition } from "../storyboard.js";
import {
contributionNodes,
evidenceNode,
futureWorkBranches,
isConclusionBeatId,
nonClaims,
@@ -43,9 +44,17 @@ export const ConclusionScene: FC<ConclusionSceneProps> = ({ scene, beat }) => {
>
<span className="conclusion-map__node-index">0{index + 1}</span>
<strong>{node.label}</strong>
{node.id === "evidence" && <small>saved traces and receipts</small>}
</div>
))}
<div
className={`conclusion-map__node conclusion-map__node--${evidenceNode.id}`}
data-evidence-attachment="vertical"
data-node-id={evidenceNode.id}
>
<span className="conclusion-map__node-index">04</span>
<strong>{evidenceNode.label}</strong>
<small>saved traces and receipts</small>
</div>
</div>
<ul
@@ -1,5 +1,5 @@
import { describe, expect, it } from "vitest";
import { contributionNodes, futureWorkBranches, isConclusionBeatId, nonClaims } from "./conclusion-model.js";
import { contributionNodes, evidenceNode, futureWorkBranches, isConclusionBeatId, nonClaims } from "./conclusion-model.js";
describe("conclusion model", () => {
it("defines the stable contribution boundary", () => {
@@ -7,8 +7,8 @@ describe("conclusion model", () => {
{ id: "planner", label: "External planner" },
{ id: "substrate", label: "Typed workflow substrate" },
{ id: "runtime", label: "Deterministic runtime" },
{ id: "evidence", label: "Persisted, inspectable evidence" },
]);
expect(evidenceNode).toEqual({ id: "evidence", label: "Persisted, inspectable evidence" });
});
it("keeps the closing claims bounded", () => {
@@ -5,9 +5,11 @@ export const contributionNodes = [
{ id: "planner", label: "External planner" },
{ id: "substrate", label: "Typed workflow substrate" },
{ id: "runtime", label: "Deterministic runtime" },
{ id: "evidence", label: "Persisted, inspectable evidence" },
] as const;
// Evidence is attached to the substrate, not another step in the execution line.
export const evidenceNode = { id: "evidence", label: "Persisted, inspectable evidence" } as const;
export const nonClaims = ["Not a production sandbox", "Not a scheduler", "Not a broad agent benchmark"] as const;
export const futureWorkBranches = [