docs: reconcile consolidated defense story
This commit is contained in:
@@ -15,7 +15,7 @@ describe("PresenterRoute", () => {
|
||||
expect(screen.getByRole("main", { name: /lda.chat presenter notes/i })).toBeInTheDocument();
|
||||
expect(screen.getByText(/This project began with the goal/i)).toBeInTheDocument();
|
||||
expect(screen.getByText("the system underneath the chat").tagName).toBe("STRONG");
|
||||
expect(screen.getByRole("navigation", { name: /presenter note navigation/i })).toHaveTextContent("1 / 43");
|
||||
expect(screen.getByRole("navigation", { name: /presenter note navigation/i })).toHaveTextContent("1 / 39");
|
||||
expect(screen.getByRole("link", { name: "Next →" })).toHaveAttribute("href", "#scene/thesis/substrate");
|
||||
expect(screen.getByRole("link", { name: /open audience slide/i })).toHaveAttribute("href", "/present#scene/thesis/title");
|
||||
expect(screen.queryByText(/live target/i)).not.toBeInTheDocument();
|
||||
|
||||
@@ -14,8 +14,10 @@ import {
|
||||
describe("presenter note catalog", () => {
|
||||
it("has exactly one note for every current storyboard beat", () => {
|
||||
const noteKeys = presenterNotes.map((note) => `${note.sceneId}/${note.beatId}`);
|
||||
const canonicalKeys = mainScenes.flatMap((scene) => scene.beats.map((beat) => `${scene.id}/${beat.id}`));
|
||||
|
||||
expect(new Set(noteKeys).size).toBe(noteKeys.length);
|
||||
expect([...noteKeys].sort()).toEqual([...canonicalKeys].sort());
|
||||
for (const scene of mainScenes) {
|
||||
for (const beat of scene.beats) {
|
||||
const note = presenterBeatNoteFor(scene.id, beat.id);
|
||||
@@ -24,7 +26,7 @@ describe("presenter note catalog", () => {
|
||||
}
|
||||
}
|
||||
|
||||
expect(noteKeys).toHaveLength(mainScenes.flatMap((scene) => scene.beats).length);
|
||||
expect(noteKeys).toHaveLength(canonicalKeys.length);
|
||||
});
|
||||
|
||||
it("keeps the planned scene timing and complete-deck cap", () => {
|
||||
@@ -44,18 +46,33 @@ describe("presenter note catalog", () => {
|
||||
75,
|
||||
]);
|
||||
expect(completeDeckTargetSeconds()).toBe(735);
|
||||
expect(completeDeckTargetSeconds()).toBeLessThanOrEqual(780);
|
||||
expect(completeDeckTargetSeconds()).toBeLessThanOrEqual(900);
|
||||
expect(presenterSceneNotes("prepared-lifecycle")).toHaveLength(6);
|
||||
for (const note of presenterSceneNotes("prepared-lifecycle")) {
|
||||
expect(note.targetSeconds).toBeGreaterThanOrEqual(8);
|
||||
expect(note.targetSeconds).toBeLessThanOrEqual(10);
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps removed scene and beat IDs out of timed notes", () => {
|
||||
expect(presenterNotes.some((note) => note.sceneId === ("authoring" as typeof mainScenes[number]["id"]))).toBe(false);
|
||||
expect(presenterBeatNoteFor("prepared-lifecycle", "validate")).toBeUndefined();
|
||||
expect(presenterBeatNoteFor("architecture", "node-use")).toBeUndefined();
|
||||
});
|
||||
|
||||
it("describes structured diagnosis and the focused output-map repair", () => {
|
||||
expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay).toMatch(/structured diagnostics/i);
|
||||
expect(presenterBeatNoteFor("prepared-lifecycle", "repair")?.mustSay).toMatch(/focused output-map edit/i);
|
||||
});
|
||||
|
||||
it("keeps NodeUse out of timed notes while retaining the architecture spine", () => {
|
||||
expect(presenterBeatNoteFor("architecture", "node-use")).toBeUndefined();
|
||||
expect(presenterBeatNoteFor("architecture", "overview")).toBeDefined();
|
||||
expect(presenterBeatNoteFor("architecture", "api")).toBeDefined();
|
||||
expect(presenterBeatNoteFor("architecture", "runtime")).toBeDefined();
|
||||
});
|
||||
|
||||
it("keeps the must-say speech within the defense word budget", () => {
|
||||
expect(mainSpeechWordCount()).toBeGreaterThanOrEqual(750);
|
||||
expect(mainSpeechWordCount()).toBeGreaterThanOrEqual(650);
|
||||
expect(mainSpeechWordCount()).toBeLessThanOrEqual(850);
|
||||
});
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ export const presenterNotes = [
|
||||
"prepared-lifecycle",
|
||||
"discover",
|
||||
9,
|
||||
"The later issue-review example first inspects configured local.lda_docs, report, and issue-board capabilities.",
|
||||
"It inspects sources, capabilities, and schemas rather than guessing at hidden interfaces.",
|
||||
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
||||
{ qnaBranchIds: ["prepared-replay-boundary", "why-schemas", "validation-diagnostics"] },
|
||||
),
|
||||
@@ -207,7 +207,7 @@ export const presenterNotes = [
|
||||
"prepared-lifecycle",
|
||||
"draft",
|
||||
9,
|
||||
"It creates and edits a Draft for report generation, making the proposal visible before execution.",
|
||||
"Focused operations modify mutable authoring state before execution.",
|
||||
["examples/lda_report_workflow", "deployment inspect replay evidence", "CLI documentation", "Draft authoring API"],
|
||||
{ qnaBranchIds: ["raw-plan-import"] },
|
||||
),
|
||||
@@ -215,7 +215,7 @@ export const presenterNotes = [
|
||||
"prepared-lifecycle",
|
||||
"diagnose",
|
||||
9,
|
||||
"Validation returns structured diagnostics, affected paths, repair hints, and suggested next actions.",
|
||||
"Structured diagnostics identify the missing output projection.",
|
||||
["examples/lda_report_workflow", "deployment inspect replay evidence"],
|
||||
{ qnaBranchIds: ["validation-diagnostics"] },
|
||||
),
|
||||
@@ -223,7 +223,7 @@ export const presenterNotes = [
|
||||
"prepared-lifecycle",
|
||||
"repair",
|
||||
9,
|
||||
"These surfaces make invalid intermediate drafts repairable; they support a loop, but no hint guarantees success.",
|
||||
"One focused output-map edit resolves it; hints do not guarantee automatic repair.",
|
||||
["Validation and diagnostics", "Challenge UX findings"],
|
||||
{ warning: "Do not promise that diagnostics automatically repair every workflow.", qnaBranchIds: ["validation-diagnostics"] },
|
||||
),
|
||||
@@ -238,9 +238,9 @@ export const presenterNotes = [
|
||||
"prepared-lifecycle",
|
||||
"deployment",
|
||||
9,
|
||||
"This later issue-review example is richer than the thesis three-node deterministic report case study: it is an implementation extension built on the same platform. Deployment binds and validates a ready configuration but does not run the workflow.",
|
||||
"Deployment binds and validates three local sources; execution starts in the next scene.",
|
||||
["examples/lda_report_workflow", "deployment inspect replay evidence", "Thesis deterministic report case study"],
|
||||
{ warning: "Do not present issue-board output from this later example as the thesis case study.", 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"] },
|
||||
),
|
||||
beatNote(
|
||||
"run-from-deployment",
|
||||
|
||||
Reference in New Issue
Block a user