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(screen.getByText("Discover capability")).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(".scene-body__authoring-node"))
.not.toHaveAttribute("data-readable-surface", "dark");
@@ -14,10 +14,12 @@ describe("OpeningThesisScene", () => {
const opening = screen.getByRole("region", { name: /thesis opening/i });
expect(opening).toHaveAttribute("data-opening-focus", "title");
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");
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" });
expect(roles).toHaveClass("opening-thesis__agent-system");
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">
<p>Product goal</p>
<h2>An AI Agent for Workspace Workflows</h2>
<h2>The product goal: an AI agent for workspace automation.</h2>
</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">
<ConceptNode
title="Planner"
+10 -10
View File
@@ -68,8 +68,8 @@ export const mainScenes = defineScenes([
evidencePointer: "Thesis Abstract and Introduction",
view: "narrative",
beats: [
sceneBeat("title", "Design and Implementation of lda.chat", "The project began as a pursuit of an AI agent for workspace automation."),
sceneBeat("substrate", "The substrate an agent needs", "The submitted contribution creates, validates, runs, and inspects reusable workflows."),
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 implemented contribution: a typed workflow substrate that external agents can operate."),
],
},
{
@@ -117,10 +117,10 @@ export const mainScenes = defineScenes([
evidencePointer: "Thesis Workflow Lifecycle",
view: "lifecycle",
beats: [
sceneBeat("draft", "Draft", "Mutable iterative authoring state."),
sceneBeat("artifact", "Artifact", "Immutable saved workflow definition."),
sceneBeat("deployment", "Deployment", "Logical requirements bound to concrete sources."),
sceneBeat("run", "Run", "Persisted execution, output, status, and trace."),
sceneBeat("draft", "Draft", "Draft, Artifact, Deployment, and Run are the durable vocabulary behind reusable automation."),
sceneBeat("artifact", "Artifact", "An immutable artifact carries the durable workflow definition forward."),
sceneBeat("deployment", "Deployment", "A deployment binds the durable workflow to concrete sources."),
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",
view: "authoring",
beats: [
sceneBeat("discover", "Discover", "Inspect capabilities and schemas before authoring."),
sceneBeat("author", "Author", "Focused operations build and connect the draft."),
sceneBeat("diagnose", "Diagnose", "Structured diagnostics identify invalid state.", { evidencePresentation: "receipt" }),
sceneBeat("repair", "Repair", "Repair hints lead to a valid compiled workflow."),
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", "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", "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", "This authoring loop turns an agent proposal into a valid workflow: discover, author, diagnose, repair. An external agent can use each step."),
],
},
{