docs: complete defense speech simplification

This commit is contained in:
lda
2026-07-13 22:44:29 +07:00 Verified
parent d47d2eeaaa
commit 6069384bb4
2 changed files with 32 additions and 30 deletions
+9 -7
View File
@@ -353,13 +353,15 @@ separate activity after these surfaces are stable.
Presentation wishlist / defense readiness: Presentation wishlist / defense readiness:
### Next: Simpler Speech ### Completed: Simpler Speech
1. Planned: give every beat one audience goal and one to three anchor terms, 1. Completed: gave every beat one audience goal and one to three anchor terms,
then simplify the timed presenter path through Scenes 1-8 to one suggested then simplified the timed presenter path through Scenes 1-8 to one suggested
sentence per beat. Keep essential vocabulary such as Workflow API and sentence per beat. Keep essential vocabulary such as Workflow API and
lifecycle record names, while moving detailed qualification into optional lifecycle record names, while moving detailed qualification into optional
notes or Q&A. notes or Q&A. The current catalog contains a 9:27 must-say path with a
500-700 word budget and a 10:42 complete-deck target. Implementation:
[`defense speech simplification`](historical/superpowers/plans/2026-07-13-defense-speech-simplification.md).
### Completed: Factual Scene 8 Evidence ### Completed: Factual Scene 8 Evidence
@@ -439,11 +441,11 @@ Design:
exact URLs, keyboard controls, live RPC/demo fallback steps, story spine, exact URLs, keyboard controls, live RPC/demo fallback steps, story spine,
timing, and short speaker notes for what to say if the live demo fails. timing, and short speaker notes for what to say if the live demo fails.
[`defense speech and claim audit`](runbooks/defense-speech-and-claim-audit.md) [`defense speech and claim audit`](runbooks/defense-speech-and-claim-audit.md)
provides the current 11-minute speech plus navigation buffer, evidence qualifications, and provides the current 9:27 speech plus navigation buffer, evidence qualifications, and
prioritized 12-minute Q&A. prioritized 12-minute Q&A.
Completed: [`defense story reweighting`](historical/superpowers/plans/2026-07-13-defense-story-reweighting.md) Completed: [`defense story reweighting`](historical/superpowers/plans/2026-07-13-defense-story-reweighting.md)
now provides a typed 39-beat presenter-note catalog, a 650-850-word must-say now provides a typed 39-beat presenter-note catalog, a 500-700-word must-say
path, evidence warnings, and a 12:15 complete-deck timing contract. Completed: path, evidence warnings, and a 10:42 complete-deck timing contract. Completed:
[`interactive graphs and Scenes 3-6 choreography`](historical/superpowers/plans/2026-07-13-scenes-3-6-kernel-choreography.md) [`interactive graphs and Scenes 3-6 choreography`](historical/superpowers/plans/2026-07-13-scenes-3-6-kernel-choreography.md)
adds restrained Scene 3-5 choreography, a semantic-zoom architecture map, adds restrained Scene 3-5 choreography, a semantic-zoom architecture map,
the readable `wf_core` and NodeUse figures, and a factual prepared-run graph the readable `wf_core` and NodeUse figures, and a factual prepared-run graph
@@ -31,7 +31,7 @@
- Consumes: `presenterNotes`, `presenterSceneNotes()`, `mainSpeechWordCount()`. - Consumes: `presenterNotes`, `presenterSceneNotes()`, `mainSpeechWordCount()`.
- Produces: regression constraints for the rewritten catalog. - Produces: regression constraints for the rewritten catalog.
- [ ] **Step 1: Replace the old timing and word-budget expectations** - [x] **Step 1: Replace the old timing and word-budget expectations**
Assert scene totals of `[30, 30, 35, 40, 36, 32, 12, 42, 35, 30, 50, 120, 75]`, a complete-deck target of `642` including the existing 75-second navigation buffer, and a `500-700` word budget. Check every beat has a non-empty `goal` and one to three non-empty `keywords`. Separately check that no suggested `mustSay` value in Scenes 1-8 exceeds 28 words. Assert scene totals of `[30, 30, 35, 40, 36, 32, 12, 42, 35, 30, 50, 120, 75]`, a complete-deck target of `642` including the existing 75-second navigation buffer, and a `500-700` word budget. Check every beat has a non-empty `goal` and one to three non-empty `keywords`. Separately check that no suggested `mustSay` value in Scenes 1-8 exceeds 28 words.
@@ -60,7 +60,7 @@ for (const note of presenterNotes.filter((item) => openingSceneIds.has(item.scen
} }
``` ```
- [ ] **Step 2: Replace the obsolete diagnostic assertions** - [x] **Step 2: Replace the obsolete diagnostic assertions**
```ts ```ts
expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay) expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay)
@@ -71,7 +71,7 @@ expect(presenterBeatNoteFor("prepared-lifecycle", "diagnose")?.mustSay)
.not.toMatch(/output projection/i); .not.toMatch(/output projection/i);
``` ```
- [ ] **Step 3: Run the focused test and verify RED** - [x] **Step 3: Run the focused test and verify RED**
Run: Run:
@@ -81,7 +81,7 @@ pnpm --dir web --filter @lda/console test -- src/presentation/presenter/presente
Expected: failures for timing, word budget, maximum beat length, and the obsolete diagnostic text. Expected: failures for timing, word budget, maximum beat length, and the obsolete diagnostic text.
- [ ] **Step 4: Commit the failing contract** - [x] **Step 4: Commit the failing contract**
```powershell ```powershell
git add web/apps/console/src/presentation/presenter/presenter-notes.test.ts git add web/apps/console/src/presentation/presenter/presenter-notes.test.ts
@@ -98,7 +98,7 @@ git commit -m "test: define simpler defense speech contract"
- Consumes: `beatNote()` and the existing note metadata. - Consumes: `beatNote()` and the existing note metadata.
- Produces: presenter goals, anchor terms, and suggested speech rendered by `/presenter`. - Produces: presenter goals, anchor terms, and suggested speech rendered by `/presenter`.
- [ ] **Step 1: Set the new target seconds** - [x] **Step 1: Set the new target seconds**
Use these per-beat values: Use these per-beat values:
@@ -113,7 +113,7 @@ Use these per-beat values:
// Scene 8: 7, 7, 7, 7, 7, 7 // Scene 8: 7, 7, 7, 7, 7, 7
``` ```
- [ ] **Step 2: Extend the presenter note type and constructor** - [x] **Step 2: Extend the presenter note type and constructor**
Add these required fields: Add these required fields:
@@ -132,7 +132,7 @@ export type PresenterBeatNote = {
Add `goal` and `keywords` parameters to `beatNote()` before `mustSay`. Keep Add `goal` and `keywords` parameters to `beatNote()` before `mustSay`. Keep
`mustSay` as the existing field name to avoid unrelated navigation churn. `mustSay` as the existing field name to avoid unrelated navigation churn.
- [ ] **Step 3: Add exact goals and keywords for every beat** - [x] **Step 3: Add exact goals and keywords for every beat**
Use this catalog in storyboard order: Use this catalog in storyboard order:
@@ -178,7 +178,7 @@ conclusion/conclusion: Goal "Restate the implemented contribution and planner-ru
conclusion/questions: Goal "Open structured examiner discussion without introducing new claims." Keywords "defense questions", "evidence" conclusion/questions: Goal "Open structured examiner discussion without introducing new claims." Keywords "defense questions", "evidence"
``` ```
- [ ] **Step 4: Replace the exact `mustSay` values for Scenes 1-8** - [x] **Step 4: Replace the exact `mustSay` values for Scenes 1-8**
Use these sentences in storyboard order: Use these sentences in storyboard order:
@@ -218,11 +218,11 @@ Finally, a deployment connects it to the three local sources it needs.
Preserve the existing warnings, fallbacks, evidence pointers, and Q&A branch IDs. Move the existing qualification about fixed definitions/provider variability into `optionalDetail` on `planner-runtime/runtime` if it is not already represented by `warning`. Preserve the existing warnings, fallbacks, evidence pointers, and Q&A branch IDs. Move the existing qualification about fixed definitions/provider variability into `optionalDetail` on `planner-runtime/runtime` if it is not already represented by `warning`.
- [ ] **Step 5: Run the focused test and verify only UI/runbook synchronization remains RED** - [x] **Step 5: Run the focused test and verify only UI/runbook synchronization remains RED**
Run the focused presenter-note test. Expected: catalog/timing/word constraints pass; synchronization fails because the readable runbook still contains the old speech. Run the focused presenter-note test. Expected: catalog/timing/word constraints pass; synchronization fails because the readable runbook still contains the old speech.
- [ ] **Step 6: Commit the typed catalog rewrite** - [x] **Step 6: Commit the typed catalog rewrite**
```powershell ```powershell
git add web/apps/console/src/presentation/presenter/presenter-notes.ts web/apps/console/src/presentation/presenter/presenter-notes.test.ts git add web/apps/console/src/presentation/presenter/presenter-notes.ts web/apps/console/src/presentation/presenter/presenter-notes.test.ts
@@ -240,30 +240,30 @@ git commit -m "docs: simplify opening defense speech"
- Consumes: `PresenterBeatNote.goal`, `keywords`, and `mustSay`. - Consumes: `PresenterBeatNote.goal`, `keywords`, and `mustSay`.
- Produces: a rehearsal surface that distinguishes the slide goal, anchor terms, and flexible wording. - Produces: a rehearsal surface that distinguishes the slide goal, anchor terms, and flexible wording.
- [ ] **Step 1: Write failing presenter-note tests** - [x] **Step 1: Write failing presenter-note tests**
Assert the current note renders regions labelled `Beat goal`, `Anchor terms`, Assert the current note renders regions labelled `Beat goal`, `Anchor terms`,
and `Suggested wording`. Assert every keyword is visible and that the old label and `Suggested wording`. Assert every keyword is visible and that the old label
`Must say` is absent. `Must say` is absent.
- [ ] **Step 2: Run the focused test and verify RED** - [x] **Step 2: Run the focused test and verify RED**
Run `PresenterNote.test.tsx` directly. Run `PresenterNote.test.tsx` directly.
- [ ] **Step 3: Render the three-level rehearsal hierarchy** - [x] **Step 3: Render the three-level rehearsal hierarchy**
Render the goal first as one concise sentence, keywords second as a plain list Render the goal first as one concise sentence, keywords second as a plain list
of one to three strong terms, and the Markdown sentence under `Suggested of one to three strong terms, and the Markdown sentence under `Suggested
wording`. Do not render keywords as decorative pills; use readable inline text wording`. Do not render keywords as decorative pills; use readable inline text
or a compact list. or a compact list.
- [ ] **Step 4: Style for desktop and mobile rehearsal** - [x] **Step 4: Style for desktop and mobile rehearsal**
Keep the goal visually strongest, keywords high-contrast and scannable, and Keep the goal visually strongest, keywords high-contrast and scannable, and
suggested wording readable but subordinate. Preserve the stable Previous/Next suggested wording readable but subordinate. Preserve the stable Previous/Next
bar and existing Q&A sidebar. bar and existing Q&A sidebar.
- [ ] **Step 5: Run tests and commit** - [x] **Step 5: Run tests and commit**
```powershell ```powershell
pnpm --dir web --filter @lda/console test -- src/presentation/presenter/PresenterNote.test.tsx pnpm --dir web --filter @lda/console test -- src/presentation/presenter/PresenterNote.test.tsx
@@ -285,15 +285,15 @@ Add each beat's **Goal** and **Anchor terms** throughout the runbook. For Scenes
1-8, also replace the **Suggested wording** with the exact plain-text version of 1-8, also replace the **Suggested wording** with the exact plain-text version of
Task 2's `mustSay` value so the existing synchronization test stays meaningful. Task 2's `mustSay` value so the existing synchronization test stays meaningful.
- [ ] **Step 1: Update timing prose and table** - [x] **Step 1: Update timing prose and table**
Change the must-say target from `11:00` to `9:27`, retain a `1:15` navigation buffer, and set the complete-deck target to `10:42`. Update the Scenes 1-8 segment times to match Task 2; leave Scenes 9-13 targets unchanged. Change the must-say target from `11:00` to `9:27`, retain a `1:15` navigation buffer, and set the complete-deck target to `10:42`. Update the Scenes 1-8 segment times to match Task 2; leave Scenes 9-13 targets unchanged.
- [ ] **Step 2: Replace the Scene 1-8 `Say:` blocks verbatim** - [x] **Step 2: Replace the Scene 1-8 `Say:` blocks verbatim**
Use the exact plain-text versions of Task 2's sentences. Keep claim qualifications below each block; do not require the presenter to speak them. Use the exact plain-text versions of Task 2's sentences. Keep claim qualifications below each block; do not require the presenter to speak them.
- [ ] **Step 3: Run verification** - [x] **Step 3: Run verification**
```powershell ```powershell
pnpm --dir web --filter @lda/console test -- src/presentation/presenter/presenter-notes.test.ts pnpm --dir web --filter @lda/console test -- src/presentation/presenter/presenter-notes.test.ts
@@ -303,11 +303,11 @@ git diff --check
Expected: all presenter tests pass, typecheck is clean, and no whitespace errors are reported. Expected: all presenter tests pass, typecheck is clean, and no whitespace errors are reported.
- [ ] **Step 4: Verify `/presenter` at desktop and mobile widths** - [x] **Step 4: Verify `/presenter` at desktop and mobile widths**
Open `/presenter#scene/planner-runtime/boundary` and `/presenter#scene/architecture/api` at `1280x720` and `390x844`. Confirm bold phrases remain readable, Previous/Next controls stay stable, and the simplified `mustSay` text does not overflow. Open `/presenter#scene/planner-runtime/boundary` and `/presenter#scene/architecture/api` at `1280x720` and `390x844`. Confirm bold phrases remain readable, Previous/Next controls stay stable, and the simplified `mustSay` text does not overflow.
- [ ] **Step 5: Commit the synchronized runbook** - [x] **Step 5: Commit the synchronized runbook**
```powershell ```powershell
git add docs/runbooks/defense-speech-and-claim-audit.md git add docs/runbooks/defense-speech-and-claim-audit.md
@@ -324,15 +324,15 @@ git commit -m "docs: synchronize simplified defense runbook"
- Consumes: verified implementation from Tasks 1-3. - Consumes: verified implementation from Tasks 1-3.
- Produces: accurate live roadmap status and historical implementation record. - Produces: accurate live roadmap status and historical implementation record.
- [ ] **Step 1: Mark only the speech item completed** - [x] **Step 1: Mark only the speech item completed**
Leave the Scene 8 evidence item planned until its separate plan is implemented. Leave the Scene 8 evidence item planned until its separate plan is implemented.
- [ ] **Step 2: Move this completed plan and verify links** - [x] **Step 2: Move this completed plan and verify links**
Update the roadmap link to the historical path, run `git diff --check`, and confirm no live document points to the old active-plan path. Update the roadmap link to the historical path, run `git diff --check`, and confirm no live document points to the old active-plan path.
- [ ] **Step 3: Commit docs closure** - [x] **Step 3: Commit docs closure**
```powershell ```powershell
git add docs/current_roadmap.md docs/superpowers/plans/2026-07-13-defense-speech-simplification.md docs/historical/superpowers/plans/2026-07-13-defense-speech-simplification.md git add docs/current_roadmap.md docs/superpowers/plans/2026-07-13-defense-speech-simplification.md docs/historical/superpowers/plans/2026-07-13-defense-speech-simplification.md