feat: clarify presentation opening and authoring story

This commit is contained in:
lda
2026-07-13 02:21:22 +07:00 Verified
parent a0858f68f2
commit 6e91534968
4 changed files with 20 additions and 13 deletions
@@ -355,6 +355,7 @@ describe("SceneBody", () => {
expect(loop).not.toHaveAttribute("data-readable-surface", "dark"); expect(loop).not.toHaveAttribute("data-readable-surface", "dark");
expect(screen.getByText("Discover capability")).toBeInTheDocument(); expect(screen.getByText("Discover capability")).toBeInTheDocument();
expect(screen.getByText("Author draft")).toBeInTheDocument(); expect(screen.getByText("Author draft")).toBeInTheDocument();
expect(screen.getByText(/turns an agent proposal into a valid workflow/i)).toBeInTheDocument();
expect(screen.getByText("Validate and diagnose").closest("[data-authoring-active]")).toHaveAttribute("data-authoring-active", "true"); expect(screen.getByText("Validate and diagnose").closest("[data-authoring-active]")).toHaveAttribute("data-authoring-active", "true");
expect(screen.getByText("Validate and diagnose").closest(".scene-body__authoring-node")) expect(screen.getByText("Validate and diagnose").closest(".scene-body__authoring-node"))
.not.toHaveAttribute("data-readable-surface", "dark"); .not.toHaveAttribute("data-readable-surface", "dark");
@@ -14,10 +14,12 @@ describe("OpeningThesisScene", () => {
const opening = screen.getByRole("region", { name: /thesis opening/i }); const opening = screen.getByRole("region", { name: /thesis opening/i });
expect(opening).toHaveAttribute("data-opening-focus", "title"); expect(opening).toHaveAttribute("data-opening-focus", "title");
expect(opening).toHaveAttribute("data-presentation-surface", "editorial"); expect(opening).toHaveAttribute("data-presentation-surface", "editorial");
expect(screen.getByRole("heading", { name: "An AI Agent for Workspace Workflows" }).parentElement) expect(screen.getByRole("heading", { name: /The product goal: an AI agent for workspace automation/i }).parentElement)
.toHaveAttribute("data-visual-role", "title-hero"); .toHaveAttribute("data-visual-role", "title-hero");
expect(screen.getByRole("heading", { name: /Design and Implementation of lda\.chat/i })).toBeInTheDocument(); expect(screen.getByRole("heading", { name: /Design and Implementation of lda\.chat/i })).toBeInTheDocument();
expect(screen.getByRole("heading", { name: "An AI Agent for Workspace Workflows" })).toBeInTheDocument(); expect(screen.getByText(/product goal.*AI agent.*workspace automation/i)).toBeInTheDocument();
expect(screen.getByText(/implemented contribution.*typed workflow substrate/i)).toBeInTheDocument();
expect(screen.getByRole("heading", { name: /The product goal: an AI agent for workspace automation/i })).toBeInTheDocument();
const roles = screen.getByRole("group", { name: "AI agent roles" }); const roles = screen.getByRole("group", { name: "AI agent roles" });
expect(roles).toHaveClass("opening-thesis__agent-system"); expect(roles).toHaveClass("opening-thesis__agent-system");
expect(roles.querySelectorAll("[data-concept-emphasis]")).toHaveLength(3); expect(roles.querySelectorAll("[data-concept-emphasis]")).toHaveLength(3);
@@ -29,8 +29,12 @@ export const OpeningThesisScene = ({ scene, beat }: OpeningThesisSceneProps) =>
> >
<header className="opening-thesis__statement" data-visual-role="title-hero"> <header className="opening-thesis__statement" data-visual-role="title-hero">
<p>Product goal</p> <p>Product goal</p>
<h2>An AI Agent for Workspace Workflows</h2> <h2>The product goal: an AI agent for workspace automation.</h2>
</header> </header>
<div className="opening-thesis__statement opening-thesis__statement--contribution" data-visual-role="implementation-boundary">
<p>Implementation boundary</p>
<h3>The implemented contribution: a typed workflow substrate that external agents can operate.</h3>
</div>
<ConceptRail label="AI agent roles" className="opening-thesis__agent-system"> <ConceptRail label="AI agent roles" className="opening-thesis__agent-system">
<ConceptNode <ConceptNode
title="Planner" title="Planner"
+10 -10
View File
@@ -68,8 +68,8 @@ export const mainScenes = defineScenes([
evidencePointer: "Thesis Abstract and Introduction", evidencePointer: "Thesis Abstract and Introduction",
view: "narrative", view: "narrative",
beats: [ beats: [
sceneBeat("title", "Design and Implementation of lda.chat", "The project began as a pursuit of an AI agent for workspace automation."), sceneBeat("title", "Design and Implementation of lda.chat", "AI agent for workspace automation is the product goal."),
sceneBeat("substrate", "The substrate an agent needs", "The submitted contribution creates, validates, runs, and inspects reusable workflows."), sceneBeat("substrate", "The substrate an agent needs", "The implemented contribution: a typed workflow substrate that external agents can operate."),
], ],
}, },
{ {
@@ -117,10 +117,10 @@ export const mainScenes = defineScenes([
evidencePointer: "Thesis Workflow Lifecycle", evidencePointer: "Thesis Workflow Lifecycle",
view: "lifecycle", view: "lifecycle",
beats: [ beats: [
sceneBeat("draft", "Draft", "Mutable iterative authoring state."), sceneBeat("draft", "Draft", "Draft, Artifact, Deployment, and Run are the durable vocabulary behind reusable automation."),
sceneBeat("artifact", "Artifact", "Immutable saved workflow definition."), sceneBeat("artifact", "Artifact", "An immutable artifact carries the durable workflow definition forward."),
sceneBeat("deployment", "Deployment", "Logical requirements bound to concrete sources."), sceneBeat("deployment", "Deployment", "A deployment binds the durable workflow to concrete sources."),
sceneBeat("run", "Run", "Persisted execution, output, status, and trace."), sceneBeat("run", "Run", "A run records durable execution, output, status, and trace."),
], ],
}, },
{ {
@@ -145,10 +145,10 @@ export const mainScenes = defineScenes([
evidencePointer: "CLI documentation; draft authoring API; challenge UX findings", evidencePointer: "CLI documentation; draft authoring API; challenge UX findings",
view: "authoring", view: "authoring",
beats: [ beats: [
sceneBeat("discover", "Discover", "Inspect capabilities and schemas before authoring."), sceneBeat("discover", "Discover", "This authoring loop turns an agent proposal into a valid workflow: discover, author, diagnose, repair. An external agent can use each step."),
sceneBeat("author", "Author", "Focused operations build and connect the draft."), sceneBeat("author", "Author", "This authoring loop turns an agent proposal into a valid workflow: discover, author, diagnose, repair. An external agent can use each step."),
sceneBeat("diagnose", "Diagnose", "Structured diagnostics identify invalid state.", { evidencePresentation: "receipt" }), sceneBeat("diagnose", "Diagnose", "This authoring loop turns an agent proposal into a valid workflow: discover, author, diagnose, repair. An external agent can use each step.", { evidencePresentation: "receipt" }),
sceneBeat("repair", "Repair", "Repair hints lead to a valid compiled workflow."), sceneBeat("repair", "Repair", "This authoring loop turns an agent proposal into a valid workflow: discover, author, diagnose, repair. An external agent can use each step."),
], ],
}, },
{ {