docs: simplify opening defense speech
This commit is contained in:
@@ -79,7 +79,7 @@ describe("presenter note catalog", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("describes the missing route and focused route repair", () => {
|
it("describes the missing route and focused route repair", () => {
|
||||||
expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay).toMatch(/missing.*route/i);
|
expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay).toMatch(/no route.*ok outcome/i);
|
||||||
expect(presenterBeatNoteFor("prepared-lifecycle", "repair")?.mustSay).toMatch(/adds.*route|route.*validation passes/i);
|
expect(presenterBeatNoteFor("prepared-lifecycle", "repair")?.mustSay).toMatch(/adds.*route|route.*validation passes/i);
|
||||||
expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay).not.toMatch(/output projection/i);
|
expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay).not.toMatch(/output projection/i);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ export type PresenterBeatNote = {
|
|||||||
readonly sceneId: MainSceneId;
|
readonly sceneId: MainSceneId;
|
||||||
readonly beatId: string;
|
readonly beatId: string;
|
||||||
readonly targetSeconds: number;
|
readonly targetSeconds: number;
|
||||||
|
readonly goal: string;
|
||||||
|
readonly keywords: readonly [string, ...string[]];
|
||||||
readonly mustSay: string;
|
readonly mustSay: string;
|
||||||
readonly optionalDetail: string | null;
|
readonly optionalDetail: string | null;
|
||||||
readonly warning: string | null;
|
readonly warning: string | null;
|
||||||
@@ -29,6 +31,8 @@ const beatNote = <const EvidencePointers extends readonly [string, ...string[]]>
|
|||||||
sceneId: MainSceneId,
|
sceneId: MainSceneId,
|
||||||
beatId: string,
|
beatId: string,
|
||||||
targetSeconds: number,
|
targetSeconds: number,
|
||||||
|
goal: string,
|
||||||
|
keywords: readonly [string, ...string[]],
|
||||||
mustSay: string,
|
mustSay: string,
|
||||||
evidencePointers: EvidencePointers,
|
evidencePointers: EvidencePointers,
|
||||||
options: PresenterBeatNoteOptions = {},
|
options: PresenterBeatNoteOptions = {},
|
||||||
@@ -36,6 +40,8 @@ const beatNote = <const EvidencePointers extends readonly [string, ...string[]]>
|
|||||||
sceneId,
|
sceneId,
|
||||||
beatId,
|
beatId,
|
||||||
targetSeconds,
|
targetSeconds,
|
||||||
|
goal,
|
||||||
|
keywords,
|
||||||
mustSay,
|
mustSay,
|
||||||
optionalDetail: options.optionalDetail ?? null,
|
optionalDetail: options.optionalDetail ?? null,
|
||||||
warning: options.warning ?? null,
|
warning: options.warning ?? null,
|
||||||
@@ -52,8 +58,10 @@ export const presenterNotes = [
|
|||||||
beatNote(
|
beatNote(
|
||||||
"thesis",
|
"thesis",
|
||||||
"title",
|
"title",
|
||||||
22,
|
15,
|
||||||
"This project began with the goal in the title: **an AI agent for creating and automating workspace workflows**. The difficult engineering problem became **the system underneath the chat**.",
|
"Separate the AI-agent ambition from the implemented contribution.",
|
||||||
|
["AI-agent goal", "platform underneath"],
|
||||||
|
"The title describes the original goal: an AI agent for workspace automation. My contribution is the platform underneath that agent.",
|
||||||
["Thesis Abstract and Introduction"],
|
["Thesis Abstract and Introduction"],
|
||||||
{
|
{
|
||||||
warning: "Do not present the submitted system as a bundled autonomous planner.",
|
warning: "Do not present the submitted system as a bundled autonomous planner.",
|
||||||
@@ -63,132 +71,170 @@ export const presenterNotes = [
|
|||||||
beatNote(
|
beatNote(
|
||||||
"thesis",
|
"thesis",
|
||||||
"substrate",
|
"substrate",
|
||||||
23,
|
15,
|
||||||
"The submitted contribution is a **typed workflow substrate**: an external planner can propose work while **the platform owns definitions, validation, bindings, execution records, traces, and explicit resume boundaries**.",
|
"State what the platform lets its users do.",
|
||||||
|
["agents and humans", "build, run, inspect"],
|
||||||
|
"It lets agents and humans build workflows, run them, and inspect what happened.",
|
||||||
["Thesis Abstract and Introduction", "Thesis Contributions"],
|
["Thesis Abstract and Introduction", "Thesis Contributions"],
|
||||||
{ qnaBranchIds: ["where-is-ai-agent", "not-just-cli"] },
|
{ qnaBranchIds: ["where-is-ai-agent", "not-just-cli"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"problem",
|
"problem",
|
||||||
"direct-actions",
|
"direct-actions",
|
||||||
22,
|
15,
|
||||||
"A model can call tools and complete one task, but **a tool transcript is not reusable automation**.",
|
"Show why one successful chat is not yet automation.",
|
||||||
|
["tool calls", "not reusable"],
|
||||||
|
"Like the chat example, an agent can call tools and finish one task. But that conversation is not yet a reusable workflow.",
|
||||||
["Thesis Problem Statement and Requirements"],
|
["Thesis Problem Statement and Requirements"],
|
||||||
{ qnaBranchIds: ["direct-orchestration", "not-just-scripts"] },
|
{ qnaBranchIds: ["direct-orchestration", "not-just-scripts"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"problem",
|
"problem",
|
||||||
"missing-contracts",
|
"missing-contracts",
|
||||||
23,
|
15,
|
||||||
"Reuse needs **schemas, source bindings, persistence, traces, and declared recovery boundaries**, with **planning kept separate from execution**.",
|
"Name the minimum durable properties reusable automation needs.",
|
||||||
|
["saved definition", "validation", "execution records"],
|
||||||
|
"Reusable automation needs a saved definition, validation, execution records, and a clear way to pause and continue.",
|
||||||
["Thesis Problem Statement and Requirements"],
|
["Thesis Problem Statement and Requirements"],
|
||||||
{ qnaBranchIds: ["why-schemas", "run-persistence"] },
|
{ qnaBranchIds: ["why-schemas", "run-persistence"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"positioning",
|
"positioning",
|
||||||
"landscape",
|
"landscape",
|
||||||
22,
|
18,
|
||||||
"Related systems have different centers of gravity: tool loops act now, scripts package code, hosted platforms operate workflows, agent graphs organize planners, and MCP exposes capabilities.",
|
"Place the work beside familiar adjacent systems.",
|
||||||
|
["Python / n8n / Zapier", "LangGraph", "MCP"],
|
||||||
|
"Existing systems solve different parts of this problem: Python scripts, n8n, Zapier, LangGraph, and MCP.",
|
||||||
["Thesis Positioning and Related Systems"],
|
["Thesis Positioning and Related Systems"],
|
||||||
{ qnaBranchIds: ["direct-orchestration", "generated-scripts", "hosted-automation", "durable-agent-graphs", "mcp-agent-scale"] },
|
{ qnaBranchIds: ["direct-orchestration", "generated-scripts", "hosted-automation", "durable-agent-graphs", "mcp-agent-scale"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"positioning",
|
"positioning",
|
||||||
"lda-position",
|
"lda-position",
|
||||||
23,
|
17,
|
||||||
"lda.chat takes a narrower position: a typed, provider-neutral lifecycle for workflows authored or operated by external agents, not a replacement or superiority claim.",
|
"State the platform's narrow position without a superiority claim.",
|
||||||
|
["provider-neutral", "workflow layer", "not a replacement"],
|
||||||
|
"My platform does not replace them. It provides a provider-neutral workflow layer that agents and humans can operate.",
|
||||||
["Thesis Positioning and Related Systems", "Thesis Source Model"],
|
["Thesis Positioning and Related Systems", "Thesis Source Model"],
|
||||||
{ warning: "Provider neutrality is demonstrated for the implemented source families, not arbitrary future providers.", qnaBranchIds: ["not-just-scripts"] },
|
{ warning: "Provider neutrality is demonstrated for the implemented source families, not arbitrary future providers.", qnaBranchIds: ["not-just-scripts"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"planner-runtime",
|
"planner-runtime",
|
||||||
"planner",
|
"planner",
|
||||||
18,
|
12,
|
||||||
"An **external model or human proposes and revises workflow structure**; this keeps planning outside the runtime.",
|
"Assign workflow decisions to an external planner.",
|
||||||
|
["human or AI planner"],
|
||||||
|
"A human or AI planner decides what workflow to build.",
|
||||||
["Thesis Architecture Overview"],
|
["Thesis Architecture Overview"],
|
||||||
{ qnaBranchIds: ["where-is-ai-agent", "not-just-cli"] },
|
{ qnaBranchIds: ["where-is-ai-agent", "not-just-cli"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"planner-runtime",
|
"planner-runtime",
|
||||||
"runtime",
|
"runtime",
|
||||||
18,
|
16,
|
||||||
"For **fixed definitions and handler results**, the runtime validates the graph, resolves sources, executes steps, records state and traces, and **resumes only at declared boundaries**.",
|
"Assign execution and recording to the runtime.",
|
||||||
|
["validation", "step-by-step execution", "state and traces"],
|
||||||
|
"The runtime validates the graph, executes it step by step, records state and traces, and pauses at declared boundaries.",
|
||||||
["Thesis Workflow Core", "Thesis Architecture Overview"],
|
["Thesis Workflow Core", "Thesis Architecture Overview"],
|
||||||
{ warning: "Qualify determinism; provider code, resource reads, and external side effects can vary.", qnaBranchIds: ["run-persistence", "typed-interrupts"] },
|
{
|
||||||
|
optionalDetail: "This explanation assumes fixed workflow definitions and handler results.",
|
||||||
|
warning: "Qualify determinism; provider code, resource reads, and external side effects can vary.",
|
||||||
|
qnaBranchIds: ["run-persistence", "typed-interrupts"],
|
||||||
|
},
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"planner-runtime",
|
"planner-runtime",
|
||||||
"boundary",
|
"boundary",
|
||||||
19,
|
12,
|
||||||
"**Typed CLI and JSON-RPC operations reach the same Workflow API**, making schemas, diagnostics, and lifecycle state machine-readable without importing runtime internals.",
|
"Introduce the public seam between clients and runtime.",
|
||||||
|
["Workflow API", "CLI", "JSON-RPC"],
|
||||||
|
"Both sides communicate through the Workflow API. Today, clients reach it through the CLI or JSON-RPC without accessing runtime internals directly.",
|
||||||
["Thesis Architecture Overview", "docs/source_architecture.md"],
|
["Thesis Architecture Overview", "docs/source_architecture.md"],
|
||||||
{ qnaBranchIds: ["not-just-cli"] },
|
{ qnaBranchIds: ["not-just-cli"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"lifecycle",
|
"lifecycle",
|
||||||
"draft",
|
"draft",
|
||||||
11,
|
9,
|
||||||
"**Draft** is mutable authoring state.",
|
"Introduce the editable lifecycle state.",
|
||||||
|
["Draft", "being built"],
|
||||||
|
"A workflow moves through four lifecycle stages. Draft means the workflow is still being built.",
|
||||||
["Thesis Workflow Lifecycle"],
|
["Thesis Workflow Lifecycle"],
|
||||||
{ optionalDetail: "Raw plans can also create artifacts without passing through a Draft." },
|
{ optionalDetail: "Raw plans can also create artifacts without passing through a Draft." },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"lifecycle",
|
"lifecycle",
|
||||||
"artifact",
|
"artifact",
|
||||||
11,
|
9,
|
||||||
"**Artifact** is an immutable workflow definition.",
|
"Introduce the immutable saved definition.",
|
||||||
|
["Artifact", "immutable version"],
|
||||||
|
"Artifact is a saved, immutable version.",
|
||||||
["Thesis Workflow Lifecycle"],
|
["Thesis Workflow Lifecycle"],
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"lifecycle",
|
"lifecycle",
|
||||||
"deployment",
|
"deployment",
|
||||||
11,
|
9,
|
||||||
"**Deployment** binds an artifact version to concrete sources and runtime context.",
|
"Connect a saved definition to a runnable environment.",
|
||||||
|
["Deployment", "sources", "ready"],
|
||||||
|
"Deployment connects that version to the sources it needs and checks whether it is ready.",
|
||||||
["Thesis Workflow Lifecycle"],
|
["Thesis Workflow Lifecycle"],
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"lifecycle",
|
"lifecycle",
|
||||||
"run",
|
"run",
|
||||||
12,
|
9,
|
||||||
"**Run** records one execution, including status, diagnostics, output, trace, and an explicit stopped or interrupted state.",
|
"Introduce one persisted execution record.",
|
||||||
|
["Run", "status", "output and trace"],
|
||||||
|
"Run is one recorded execution, including its status, output, and trace.",
|
||||||
["Thesis Workflow Lifecycle"],
|
["Thesis Workflow Lifecycle"],
|
||||||
{ qnaBranchIds: ["lifecycle-states", "run-persistence"] },
|
{ qnaBranchIds: ["lifecycle-states", "run-persistence"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"architecture",
|
"architecture",
|
||||||
"overview",
|
"overview",
|
||||||
7,
|
6,
|
||||||
"First, the **implemented architecture spine** and its ownership boundaries.",
|
"Show how the implementation realizes the earlier concepts.",
|
||||||
|
["architecture spine"],
|
||||||
|
"This is how those concepts are organized in the implementation.",
|
||||||
["Thesis System Architecture", "docs/project_map.md"],
|
["Thesis System Architecture", "docs/project_map.md"],
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"architecture",
|
"architecture",
|
||||||
"client",
|
"client",
|
||||||
10,
|
8,
|
||||||
"Humans and agents share **one public lifecycle surface**.",
|
"Show that humans and agents share one public surface.",
|
||||||
|
["shared operations"],
|
||||||
|
"Humans and agents use the same public workflow operations.",
|
||||||
["Thesis System Architecture", "docs/project_map.md"],
|
["Thesis System Architecture", "docs/project_map.md"],
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"architecture",
|
"architecture",
|
||||||
"api",
|
"api",
|
||||||
11,
|
9,
|
||||||
"WorkflowApi owns lifecycle operations; **JSON-RPC only adapts transport**.",
|
"Identify the system's public front door.",
|
||||||
|
["Workflow API", "public boundary"],
|
||||||
|
"The Workflow API is the front door. It exposes lifecycle operations without exposing runtime internals.",
|
||||||
["Thesis System Architecture", "docs/source_architecture.md"],
|
["Thesis System Architecture", "docs/source_architecture.md"],
|
||||||
{ qnaBranchIds: ["not-just-cli"] },
|
{ qnaBranchIds: ["not-just-cli"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"architecture",
|
"architecture",
|
||||||
"runtime",
|
"runtime",
|
||||||
13,
|
9,
|
||||||
"WorkflowServer composes **records, capabilities, API, and kernel**; providers remain outside the core.",
|
"Explain what the server composes behind the API.",
|
||||||
|
["WorkflowServer", "records and capabilities", "execution core"],
|
||||||
|
"Behind it, the workflow server brings together stored records, available capabilities, and the execution core.",
|
||||||
["Thesis System Architecture", "docs/source_architecture.md"],
|
["Thesis System Architecture", "docs/source_architecture.md"],
|
||||||
{ qnaBranchIds: ["provider-security"] },
|
{ qnaBranchIds: ["provider-security"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"agent-handoff",
|
"agent-handoff",
|
||||||
"request",
|
"request",
|
||||||
20,
|
12,
|
||||||
"I will now show a **prepared demonstration built on this platform**. The chat is a presentation interface, **not the autonomous planner evaluated by the thesis**. The chat translates a report request into the same public lifecycle operations an external agent could call. This prepared path demonstrates product behavior and recorded evidence, not a fresh model-performance result.",
|
"Disclose the prepared demonstration before it begins.",
|
||||||
|
["prepared example", "not an autonomous planner"],
|
||||||
|
"This is a prepared example, not a live autonomous AI agent. It shows how an agent could use the platform to build and run a workflow.",
|
||||||
["Constrained demo agent and prepared replay recipe"],
|
["Constrained demo agent and prepared replay recipe"],
|
||||||
{
|
{
|
||||||
fallback: "This is the reviewed recording, not a live model planning this workflow.",
|
fallback: "This is the reviewed recording, not a live model planning this workflow.",
|
||||||
@@ -198,47 +244,59 @@ export const presenterNotes = [
|
|||||||
beatNote(
|
beatNote(
|
||||||
"prepared-lifecycle",
|
"prepared-lifecycle",
|
||||||
"discover",
|
"discover",
|
||||||
9,
|
7,
|
||||||
"It inspects sources, capabilities, and schemas rather than guessing at hidden interfaces.",
|
"Show that authoring starts with interface discovery.",
|
||||||
|
["sources", "capabilities"],
|
||||||
|
"First, the agent checks which sources and operations are available.",
|
||||||
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
||||||
{ qnaBranchIds: ["prepared-replay-boundary", "why-schemas", "validation-diagnostics"] },
|
{ qnaBranchIds: ["prepared-replay-boundary", "why-schemas", "validation-diagnostics"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"prepared-lifecycle",
|
"prepared-lifecycle",
|
||||||
"draft",
|
"draft",
|
||||||
9,
|
7,
|
||||||
"Focused operations modify mutable authoring state before execution.",
|
"Show mutable workflow authoring.",
|
||||||
|
["Draft", "editable workflow"],
|
||||||
|
"Then it builds an editable workflow draft.",
|
||||||
["examples/lda_report_workflow", "deployment inspect replay evidence", "CLI documentation", "Draft authoring API"],
|
["examples/lda_report_workflow", "deployment inspect replay evidence", "CLI documentation", "Draft authoring API"],
|
||||||
{ qnaBranchIds: ["raw-plan-import"] },
|
{ qnaBranchIds: ["raw-plan-import"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"prepared-lifecycle",
|
"prepared-lifecycle",
|
||||||
"diagnose",
|
"diagnose",
|
||||||
9,
|
7,
|
||||||
"Structured diagnostics identify the missing output projection.",
|
"Show a concrete structured validation failure.",
|
||||||
|
["validation", "missing_outcome_edge"],
|
||||||
|
"Validation finds that the analyze step has no route for its ok outcome.",
|
||||||
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
||||||
{ qnaBranchIds: ["validation-diagnostics"] },
|
{ qnaBranchIds: ["validation-diagnostics"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"prepared-lifecycle",
|
"prepared-lifecycle",
|
||||||
"repair",
|
"repair",
|
||||||
9,
|
7,
|
||||||
"One focused output-map edit resolves it; hints do not guarantee automatic repair.",
|
"Show the exact focused correction and revalidation.",
|
||||||
|
["set-route", "validation passes"],
|
||||||
|
"The agent adds that route, and validation passes.",
|
||||||
["Validation and diagnostics", "Challenge UX findings"],
|
["Validation and diagnostics", "Challenge UX findings"],
|
||||||
{ warning: "Do not promise that diagnostics automatically repair every workflow.", qnaBranchIds: ["validation-diagnostics"] },
|
{ warning: "Do not promise that diagnostics automatically repair every workflow.", qnaBranchIds: ["validation-diagnostics"] },
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"prepared-lifecycle",
|
"prepared-lifecycle",
|
||||||
"artifact",
|
"artifact",
|
||||||
9,
|
7,
|
||||||
"It saves the validated plan as immutable artifact lda_report_case_study version 1.",
|
"Show the transition to an immutable saved version.",
|
||||||
|
["Artifact", "immutable"],
|
||||||
|
"The valid workflow is saved as an immutable artifact.",
|
||||||
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
||||||
),
|
),
|
||||||
beatNote(
|
beatNote(
|
||||||
"prepared-lifecycle",
|
"prepared-lifecycle",
|
||||||
"deployment",
|
"deployment",
|
||||||
9,
|
7,
|
||||||
"Deployment binds and validates three local sources; execution starts in the next scene.",
|
"Show source binding and readiness before execution.",
|
||||||
|
["Deployment", "three local sources"],
|
||||||
|
"Finally, a deployment connects it to the three local sources it needs.",
|
||||||
["examples/lda_report_workflow", "deployment inspect replay evidence", "Thesis deterministic report case study"],
|
["examples/lda_report_workflow", "deployment inspect replay evidence", "Thesis deterministic report case study"],
|
||||||
{ warning: "This later issue-review example is richer than the thesis case study; do not present its issue-board output as thesis output.", qnaBranchIds: ["prepared-replay-boundary"] },
|
{ warning: "This later issue-review example is richer than the thesis case study; do not present its issue-board output as thesis output.", qnaBranchIds: ["prepared-replay-boundary"] },
|
||||||
),
|
),
|
||||||
@@ -246,6 +304,8 @@ export const presenterNotes = [
|
|||||||
"run-from-deployment",
|
"run-from-deployment",
|
||||||
"input",
|
"input",
|
||||||
11,
|
11,
|
||||||
|
"Show the concrete inputs supplied before execution.",
|
||||||
|
["run input", "selected documents"],
|
||||||
"The deployment receives selected local documents and an issue-board path.",
|
"The deployment receives selected local documents and an issue-board path.",
|
||||||
["workflow.runs.start replay evidence"],
|
["workflow.runs.start replay evidence"],
|
||||||
),
|
),
|
||||||
@@ -253,6 +313,8 @@ export const presenterNotes = [
|
|||||||
"run-from-deployment",
|
"run-from-deployment",
|
||||||
"operation",
|
"operation",
|
||||||
12,
|
12,
|
||||||
|
"Show that one public operation creates a persisted execution.",
|
||||||
|
["workflow.runs.start", "persisted Run"],
|
||||||
"The public **workflow.runs.start** operation validates the deployment and input, creates a **persisted Run**, and begins the reusable graph.",
|
"The public **workflow.runs.start** operation validates the deployment and input, creates a **persisted Run**, and begins the reusable graph.",
|
||||||
["workflow.runs.start replay evidence"],
|
["workflow.runs.start replay evidence"],
|
||||||
{ qnaBranchIds: ["run-persistence"] },
|
{ qnaBranchIds: ["run-persistence"] },
|
||||||
@@ -261,6 +323,8 @@ export const presenterNotes = [
|
|||||||
"run-from-deployment",
|
"run-from-deployment",
|
||||||
"graph",
|
"graph",
|
||||||
12,
|
12,
|
||||||
|
"Show the reusable workflow executing beyond the chat conversation.",
|
||||||
|
["workflow graph", "declared interrupt"],
|
||||||
"The graph reads documents, analyzes them, builds a report, drafts proposed issues, and pauses at a declared review interrupt before issue-board changes.",
|
"The graph reads documents, analyzes them, builds a report, drafts proposed issues, and pauses at a declared review interrupt before issue-board changes.",
|
||||||
["workflow.runs.start replay evidence", "examples/lda_report_workflow"],
|
["workflow.runs.start replay evidence", "examples/lda_report_workflow"],
|
||||||
{ fallback: "The operation view is replay-backed evidence of the prepared path, not a newly completed live run." },
|
{ fallback: "The operation view is replay-backed evidence of the prepared path, not a newly completed live run." },
|
||||||
@@ -269,6 +333,8 @@ export const presenterNotes = [
|
|||||||
"typed-human-boundary",
|
"typed-human-boundary",
|
||||||
"interrupt",
|
"interrupt",
|
||||||
15,
|
15,
|
||||||
|
"Show what the paused workflow asks from the operator.",
|
||||||
|
["issue_review", "interrupt payload", "resume schema"],
|
||||||
"Execution pauses at a **typed issue_review interrupt** exposing request data, allowed outcomes, request schema, and resume schema.",
|
"Execution pauses at a **typed issue_review interrupt** exposing request data, allowed outcomes, request schema, and resume schema.",
|
||||||
["Typed interrupt payload and resume contract"],
|
["Typed interrupt payload and resume contract"],
|
||||||
{ qnaBranchIds: ["typed-interrupts", "why-schemas"] },
|
{ qnaBranchIds: ["typed-interrupts", "why-schemas"] },
|
||||||
@@ -277,6 +343,8 @@ export const presenterNotes = [
|
|||||||
"typed-human-boundary",
|
"typed-human-boundary",
|
||||||
"approval",
|
"approval",
|
||||||
15,
|
15,
|
||||||
|
"Show that the operator chooses a declared continuation.",
|
||||||
|
["submitted", "revision-requested", "typed resume"],
|
||||||
"The operator chooses submitted or revision-requested; this is a typed interrupt and resume contract, not a production approval gate, role system, or policy engine.",
|
"The operator chooses submitted or revision-requested; this is a typed interrupt and resume contract, not a production approval gate, role system, or policy engine.",
|
||||||
["Typed interrupt payload and resume contract"],
|
["Typed interrupt payload and resume contract"],
|
||||||
{ warning: "Both outcomes resume through declared workflow branches; this is not production approval governance.", qnaBranchIds: ["typed-interrupts", "security-production-boundary"] },
|
{ warning: "Both outcomes resume through declared workflow branches; this is not production approval governance.", qnaBranchIds: ["typed-interrupts", "security-production-boundary"] },
|
||||||
@@ -285,6 +353,8 @@ export const presenterNotes = [
|
|||||||
"resume-output-evidence",
|
"resume-output-evidence",
|
||||||
"resume",
|
"resume",
|
||||||
16,
|
16,
|
||||||
|
"Show continuation of the same recorded run.",
|
||||||
|
["workflow.runs.resume", "same Run"],
|
||||||
"On the submitted path, **workflow.runs.resume continues the recorded interrupted Run**.",
|
"On the submitted path, **workflow.runs.resume continues the recorded interrupted Run**.",
|
||||||
["workflow.runs.resume replay evidence", "Revision replay identity"],
|
["workflow.runs.resume replay evidence", "Revision replay identity"],
|
||||||
{ fallback: "The submitted replay demonstrates same-run continuation; the revision branch is recorded separately.", qnaBranchIds: ["replay-provenance", "prepared-replay-boundary"] },
|
{ fallback: "The submitted replay demonstrates same-run continuation; the revision branch is recorded separately.", qnaBranchIds: ["replay-provenance", "prepared-replay-boundary"] },
|
||||||
@@ -293,6 +363,8 @@ export const presenterNotes = [
|
|||||||
"resume-output-evidence",
|
"resume-output-evidence",
|
||||||
"output",
|
"output",
|
||||||
16,
|
16,
|
||||||
|
"Show the persisted terminal results of the submitted path.",
|
||||||
|
["report output", "issue-board changes"],
|
||||||
"The workflow creates the report and issue-board changes, then records terminal output.",
|
"The workflow creates the report and issue-board changes, then records terminal output.",
|
||||||
["workflow.runs.resume replay evidence", "examples/lda_report_workflow"],
|
["workflow.runs.resume replay evidence", "examples/lda_report_workflow"],
|
||||||
{ warning: "Identify these issue-board changes as later example evidence, not output from the thesis three-node case study." },
|
{ warning: "Identify these issue-board changes as later example evidence, not output from the thesis three-node case study." },
|
||||||
@@ -301,6 +373,8 @@ export const presenterNotes = [
|
|||||||
"resume-output-evidence",
|
"resume-output-evidence",
|
||||||
"trace",
|
"trace",
|
||||||
18,
|
18,
|
||||||
|
"Show that execution evidence remains inspectable after completion.",
|
||||||
|
["trace frames", "protocol evidence"],
|
||||||
"Trace frames and protocol evidence remain inspectable; this is declared-boundary resumability, not arbitrary crash recovery or exactly-once execution. The revision replay is a separate prepared recording.",
|
"Trace frames and protocol evidence remain inspectable; this is declared-boundary resumability, not arbitrary crash recovery or exactly-once execution. The revision replay is a separate prepared recording.",
|
||||||
["workflow.runs.resume replay evidence", "Revision replay identity"],
|
["workflow.runs.resume replay evidence", "Revision replay identity"],
|
||||||
{ warning: "Never claim run-ID continuity for the prepared revision recording.", qnaBranchIds: ["replay-provenance", "demo-reliability"] },
|
{ warning: "Never claim run-ID continuity for the prepared revision recording.", qnaBranchIds: ["replay-provenance", "demo-reliability"] },
|
||||||
@@ -309,6 +383,8 @@ export const presenterNotes = [
|
|||||||
"evaluation",
|
"evaluation",
|
||||||
"cohort",
|
"cohort",
|
||||||
40,
|
40,
|
||||||
|
"Describe the external-agent evaluation design.",
|
||||||
|
["36 trials", "two challenges", "three profiles"],
|
||||||
"The evaluation combines conformance tests, deterministic case studies, and a **manually audited external-agent campaign**: 36 trials across two challenges, two hosted models, three instruction profiles, and three waves, with three attempts per cell.",
|
"The evaluation combines conformance tests, deterministic case studies, and a **manually audited external-agent campaign**: 36 trials across two challenges, two hosted models, three instruction profiles, and three waves, with three attempts per cell.",
|
||||||
["Thesis Evaluation and Appendix C"],
|
["Thesis Evaluation and Appendix C"],
|
||||||
{ qnaBranchIds: ["evaluation-validity"] },
|
{ qnaBranchIds: ["evaluation-validity"] },
|
||||||
@@ -317,6 +393,8 @@ export const presenterNotes = [
|
|||||||
"evaluation",
|
"evaluation",
|
||||||
"validity",
|
"validity",
|
||||||
40,
|
40,
|
||||||
|
"Separate audited valid evidence from contaminated samples.",
|
||||||
|
["27 pass", "8 invalid", "1 fail"],
|
||||||
"The author audit classified 27 trials as clean product-path passes, eight as invalid samples, and one as a failure. Invalid samples included contamination such as reading implementation files, prior artifacts, adjacent attempts, or evaluator state.",
|
"The author audit classified 27 trials as clean product-path passes, eight as invalid samples, and one as a failure. Invalid samples included contamination such as reading implementation files, prior artifacts, adjacent attempts, or evaluator state.",
|
||||||
["Thesis Evaluation and Appendix C", "Author audit"],
|
["Thesis Evaluation and Appendix C", "Author audit"],
|
||||||
{ qnaBranchIds: ["evaluation-validity"] },
|
{ qnaBranchIds: ["evaluation-validity"] },
|
||||||
@@ -325,6 +403,8 @@ export const presenterNotes = [
|
|||||||
"evaluation",
|
"evaluation",
|
||||||
"findings",
|
"findings",
|
||||||
40,
|
40,
|
||||||
|
"State what the evaluation supports and what it cannot prove.",
|
||||||
|
["longitudinal evidence", "not a benchmark"],
|
||||||
"Because prompts, product snapshots, and hosted conditions changed across waves, these results are **longitudinal engineering evidence**. They expose authoring and diagnostic gaps, **not a benchmark** of model success, token reduction, retry reduction, or superiority.",
|
"Because prompts, product snapshots, and hosted conditions changed across waves, these results are **longitudinal engineering evidence**. They expose authoring and diagnostic gaps, **not a benchmark** of model success, token reduction, retry reduction, or superiority.",
|
||||||
["Thesis Evaluation and Appendix C", "Thesis Threats to Validity"],
|
["Thesis Evaluation and Appendix C", "Thesis Threats to Validity"],
|
||||||
{ warning: "Use non-benchmark wording; do not report the counts as general model performance.", qnaBranchIds: ["evaluation-validity"] },
|
{ warning: "Use non-benchmark wording; do not report the counts as general model performance.", qnaBranchIds: ["evaluation-validity"] },
|
||||||
@@ -333,6 +413,8 @@ export const presenterNotes = [
|
|||||||
"conclusion",
|
"conclusion",
|
||||||
"limits",
|
"limits",
|
||||||
18,
|
18,
|
||||||
|
"Bound the prototype claims before the final contribution statement.",
|
||||||
|
["prototype", "not production security"],
|
||||||
"The prototype uses trusted in-process Python and file-backed stores; it does not provide production authentication, RBAC, sandboxing, scheduling, arbitrary crash recovery, or a bundled autonomous planner.",
|
"The prototype uses trusted in-process Python and file-backed stores; it does not provide production authentication, RBAC, sandboxing, scheduling, arbitrary crash recovery, or a bundled autonomous planner.",
|
||||||
["Thesis Limitations"],
|
["Thesis Limitations"],
|
||||||
{ qnaBranchIds: ["security-production-boundary", "production-readiness"] },
|
{ qnaBranchIds: ["security-production-boundary", "production-readiness"] },
|
||||||
@@ -341,6 +423,8 @@ export const presenterNotes = [
|
|||||||
"conclusion",
|
"conclusion",
|
||||||
"future",
|
"future",
|
||||||
18,
|
18,
|
||||||
|
"Name the surrounding layers left as future work.",
|
||||||
|
["live agent", "scheduling", "controlled evaluation"],
|
||||||
"A live agent interface, transactional storage, richer debugging, security hardening, scheduling, and controlled comparative evaluation remain future work.",
|
"A live agent interface, transactional storage, richer debugging, security hardening, scheduling, and controlled comparative evaluation remain future work.",
|
||||||
["Thesis Future Work"],
|
["Thesis Future Work"],
|
||||||
{ qnaBranchIds: ["production-readiness"] },
|
{ qnaBranchIds: ["production-readiness"] },
|
||||||
@@ -349,6 +433,8 @@ export const presenterNotes = [
|
|||||||
"conclusion",
|
"conclusion",
|
||||||
"conclusion",
|
"conclusion",
|
||||||
20,
|
20,
|
||||||
|
"Restate the implemented contribution and planner-runtime boundary.",
|
||||||
|
["planner proposes", "platform executes"],
|
||||||
"The contribution is **architectural and implemented**: external planners can propose workflows while a typed platform **validates, binds, executes, persists, interrupts, resumes, and inspects** them through public operations.",
|
"The contribution is **architectural and implemented**: external planners can propose workflows while a typed platform **validates, binds, executes, persists, interrupts, resumes, and inspects** them through public operations.",
|
||||||
["Thesis Contributions", "Thesis Conclusion"],
|
["Thesis Contributions", "Thesis Conclusion"],
|
||||||
{ qnaBranchIds: ["where-is-ai-agent", "not-just-cli"] },
|
{ qnaBranchIds: ["where-is-ai-agent", "not-just-cli"] },
|
||||||
@@ -357,6 +443,8 @@ export const presenterNotes = [
|
|||||||
"conclusion",
|
"conclusion",
|
||||||
"questions",
|
"questions",
|
||||||
19,
|
19,
|
||||||
|
"Open structured examiner discussion without introducing new claims.",
|
||||||
|
["defense questions", "evidence"],
|
||||||
"That boundary is the claim I will defend: reusable agent-operated automation is inspectable because planning and execution have explicit contracts. I welcome questions.",
|
"That boundary is the claim I will defend: reusable agent-operated automation is inspectable because planning and execution have explicit contracts. I welcome questions.",
|
||||||
["Thesis Conclusion", "Defense Q&A index"],
|
["Thesis Conclusion", "Defense Q&A index"],
|
||||||
{ qnaBranchIds: ["where-is-ai-agent", "evaluation-validity", "production-readiness"] },
|
{ qnaBranchIds: ["where-is-ai-agent", "evaluation-validity", "production-readiness"] },
|
||||||
|
|||||||
Reference in New Issue
Block a user