---ci--- project: acdl phase: 0 milestone: v1.30 status: plan ---/ci---
13 KiB
PLAN — v1.30 Single-shot Leadership Deck
Milestone: v1.30 (feature — single-shot PPTX leadership deck). Tags on the v1.29.x line:
v1.29.1(P0) →v1.29.2(P1 execution) →v1.29.3(P2 final = milestone release). The final phase's patch IS the milestone release. Branch:milestone/v1.30-leadership-deck. Phase branches:phase/00-pre-execution,phase/01-leadership-deck,phase/02-final-review-ship.Tags:
v1.29.1(P0) →v1.29.2(P1) →v1.29.3(P2 final = milestone release). 1 execution phase (P1) — this is a single-shot artifact, not a multi-phase build.
Milestone goal
A single-shot, 7-slide PPTX leadership deck for Infrastructure &
Operations leadership (CTO + VP Technology + Product Management),
presented live in August 2026, securing architecture endorsement and
a November 2026 runway. Authored as Marp markdown, rendered via the
existing scripts/render_pptx.py (narrowly extended per D-242),
verified by scripts/check_leadership_deck.sh. The deck is discrete
from the existing citizen-developer pitch (D-241: NOT a compression).
Requirements
12 requirements: REQ-372.1..REQ-372.12 (full text in
.ciagent/REQUIREMENTS.md §v1.30). 1 capability: CAP-042. 3
decisions: D-241..D-243 (CLARIFY). Vision grounding: [1] →
docs/vision.md.
Phase breakdown
Phase P1 — leadership-deck (REQ-372.1..REQ-372.12)
Goal: Author the Marp markdown deck source, extend the render pipeline, render the PPTX, author the smoke test, and append the ship-wave records (CAP-042, D-241). The deck is a single-shot artifact; all 12 REQs ship in this one phase.
Personas: lead-developer, backend-engineer, ci-doc-writer (phase-specific), ci-cli-engineer.
Territory: docs/presentations/nova-leadership-deck-marp.md
(ci-doc-writer), scripts/render_pptx.py +
docs/presentations/nova-leadership-deck.pptx (backend-engineer),
scripts/check_leadership_deck.sh (ci-cli-engineer),
.ciagent/STATE.md + .ciagent/PROJECT.md (lead-developer).
Wave 1 — render pipeline prerequisite (backend-engineer)
Task P1.W1.T1: Extend scripts/render_pptx.py per D-242:
- Accept an explicit source
.mdpath as argv[1] (if it ends in.mdand contains a/, treat as a path; else treat as a deck name per the existing convention — backward compatible). - Accept
--output <path>for the custom output filename. Default: derive from the source name (strip-marp.md→ add.pptx) for backward compatibility. - Add a
_add_footer(slide, text)helper that adds a right-aligned textbox at the bottom of every slide with the exact stringNova Platform - Infrastructure & Operations(grey, small). Call it in bothrender_title_slideandrender_content_slide. - The footer text is read from the Marp frontmatter
footer:directive if present; else default to the existing deck's footer (backward compatible). Parse the frontmatter to extract thefooter:value (the existing code strips frontmatter without reading it — add a frontmatter parser). - No other renderer change. Speaker notes remain skipped (acceptable per RESEARCH R1).
Must-haves:
python3 scripts/render_pptx.py docs/presentations/nova-leadership-deck-marp.md --output docs/presentations/nova-leadership-deck.pptxworks.python3 scripts/render_pptx.py nova-autonomous-cloud-deliverystill works (backward compatible — renders{deck}-marp.md→{deck}-python.pptx).- Every rendered slide has a right-aligned footer textbox.
python3 -m py_compile scripts/render_pptx.pyexits 0.
REQs covered: (prerequisite, not REQ-372 directly — per spec §3.3 Edge 2 + D-242).
Wave 2 — deck source (ci-doc-writer)
Task P1.W2.T1: Author
docs/presentations/nova-leadership-deck-marp.md:
- Header comment (REQ-372.9): an HTML comment at the top (before
frontmatter) naming this deck as the leadership artifact for
Infrastructure & Operations, August 2026 presentation date, and
naming
nova-autonomous-cloud-delivery-marp.mdas a related-but- distinct artifact that this deck does not compress or modify. - Frontmatter (cover note):
marp: true; theme: default; footer: "Nova Platform - Infrastructure & Operations"; paginate: false; size: 16:9+ astyle:block using ONLY the 4 S&P tokens (#D6002A,#1B1B1B,#FFFFFF,#F0F0F0). Replace the existing deck's#2E2E2Eblockquote color with#1B1B1Bto satisfy REQ-372.6. - 7 slides delimited by
---on its own line (REQ-372.3). All slides use##H2 titles (content slides, white bg, red title bar — per RESEARCH R1 final call for visual consistency). - On-slide body per the Slide Content Map in PROJECT.md §v1.30
(REQ-372.7). Use
>blockquotes for the italic callouts,**...**bold lead for the slide titles' sub-headings,-bullets with→prefix for the arrow lines (so they render as proper bullets). - Speaker notes per slide as HTML comments
<!-- ... -->within the slide body before the next---(REQ-372.4). Word counts: slides 1/2/4/6 in 150–300; slides 3/5 in 250–400; slide 7 in 200–300. [1]citations (REQ-372.12): at least one[1]in speaker notes of slides 3, 5, 7 (the architecture-load slides), grounding todocs/vision.mdtenets/anti-goals/boundaries.- No hex colors outside the 4 S&P tokens anywhere in the source (REQ-372.6).
Must-haves:
- File exists, parses as valid Marp, exactly 7
----delimited slides. - Header comment present with all 3 elements (REQ-372.9).
- Frontmatter has the exact footer string +
paginate: false. - Per-slide speaker-note word counts in band.
[1]present in slides 3, 5, 7 speaker notes.grep -oiE '#[0-9A-Fa-f]{6}'returns only the 4 S&P tokens.
REQs covered: REQ-372.1, REQ-372.3, REQ-372.4, REQ-372.6, REQ-372.7, REQ-372.9, REQ-372.12.
Wave 3 — smoke test (ci-cli-engineer)
Task P1.W3.T1: Author scripts/check_leadership_deck.sh:
- Shebang
#!/usr/bin/env bash,set -euo pipefail, header comment with Usage + Returns. - Assertions (REQ-372.8 a–f):
- (a)
docs/presentations/nova-leadership-deck-marp.mdexists. - (b) slide count = 7 (count
^---\s*$lines after frontmatter end, +1; or count---separators — careful with frontmatter). - (c) per-slide speaker-note word counts in band (extract
<!-- ... -->content per slide,wc -w; slides 1/2/4/6: 150–300; 3/5: 250–400; 7: 200–300). Exit non-zero on violation. - (d) footer string
Nova Platform - Infrastructure & Operationspresent in source (frontmatterfooter:directive). - (e) only S&P hex colors in source (
grep -oiE '#[0-9A-Fa-f]{6}',sort -u, compare to 4-token allow-list). - (f)
docs/presentations/nova-leadership-deck.pptxexists (hard fail per Q-M4).
- (a)
- Exit 0 on pass, non-zero (1) on fail. Runnable from repo root.
- NOT wired as a CI gate (no
.github/workflows/orworkflows-src/integration).
Must-haves:
bash scripts/check_leadership_deck.shexits 0 after the deck + PPTX are authored/rendered.- Exits non-zero if any assertion fails (test by temporary mutation).
REQs covered: REQ-372.8.
Wave 4 — render + ship-wave records (backend-engineer + lead-developer)
Task P1.W4.T1 (backend-engineer): Render the PPTX:
python3 scripts/render_pptx.py docs/presentations/nova-leadership-deck-marp.md --output docs/presentations/nova-leadership-deck.pptx- Verify: PPTX written with 7 slides, python-pptx raised no exceptions, footer textbox present on every slide.
- Run
bash scripts/check_leadership_deck.sh→ exits 0.
Task P1.W4.T2 (lead-developer): Append CAP-042 to STATE.md:
- CAP-042 row in the capability table: artifact paths
(
nova-leadership-deck-marp.md,nova-leadership-deck.pptx), audience (Infrastructure & Operations leadership), single-shot intent, presentation month (August 2026), milestone v1.30 / tagv1.29.3.
Task P1.W4.T3 (lead-developer): Record D-241 in PROJECT.md:
- D-241 entry in the decisions section: single-shot nature, audience, August 2026 anchor + November 2026 runway, explicit decision not to compress the existing citizen-developer deck.
Must-haves:
- PPTX exists with 7 slides.
- Smoke test exits 0.
- CAP-042 row in STATE.md.
- D-241 record in PROJECT.md.
REQs covered: REQ-372.2, REQ-372.5, REQ-372.8, REQ-372.10, REQ-372.11.
Phase P2 — final-review-ship (review + audit + milestone ship)
Goal: Multi-persona review of the milestone changes, project-
health audit, and milestone ship (merge to main, tag v1.29.3 =
milestone release, delete milestone branches).
Personas: lead-developer (review + audit + ship coordination).
Tasks:
- Review all v1.30 changes (deck source, render extension, smoke test, STATE.md/PROJECT.md records). Auto-apply P0 fixes; flag P1+ for post-hoc review.
- Audit: reconstruction test (git log matches
.ciagent/files), file discipline, branch hygiene, commit discipline. - Ship: merge
phase/02→milestone/v1.30-leadership-deck→main, tagv1.29.3, create release, delete milestone branches. - Complete: mark REQ-372.1..12 complete in REQUIREMENTS.md, mark v1.30 complete in ROADMAP.md.
Wave dependency graph
W1 (render_pptx.py extension) ─┐
├─→ W4.T1 (render PPTX) ─→ W4.T2/T3 (records)
W2 (deck source) ──────────────┤ │
│ ↓
W3 (smoke test) ───────────────┴────────────────────────→ P1 VERIFY
│
↓
P1 SHIP (v1.29.2)
│
↓
P2 (v1.29.3)
W1, W2, W3 are independent (no cross-dependencies at author time). W4 depends on W1 + W2 (render needs the extension + the source) + W3 (smoke test validates the render). W4.T2/T3 (records) depend on W4.T1 (render confirms ship readiness).
User-Facing Surface
- The PPTX deck (
docs/presentations/nova-leadership-deck.pptx) — the primary leadership-facing artifact, presented live in August 2026. - The Marp markdown source
(
docs/presentations/nova-leadership-deck-marp.md) — the source- of-truth, reproducible viascripts/render_pptx.py. - The smoke test (
scripts/check_leadership_deck.sh) — runnable on demand by the PO/presenter to verify deck integrity before presentation.
Happy Path
J1 — PO presents the deck live (from spec §3.2):
- PO authors
nova-leadership-deck-marp.mdagainst the Slide Content Map;bash scripts/check_leadership_deck.shexits 0 (verifies content). (REQ-372.1, .4, .6, .7, .8, .12.) - PO renders the markdown to PPTX via
python3 scripts/render_pptx.py docs/presentations/nova-leadership-deck-marp.md --output docs/presentations/nova-leadership-deck.pptx; visual inspection confirms 7 slides + footer. (REQ-372.2, .5.) - PO presents live to Infrastructure & Operations leadership; speaker notes carry architecture depth. (REQ-372.4.)
- PO updates STATE.md with CAP-042 and PROJECT.md with D-241 at the v1.30 ship wave. (REQ-372.10, .11.)
UX Acceptance Criteria
bash scripts/check_leadership_deck.shexits 0 (all 6 assertions a–f pass).docs/presentations/nova-leadership-deck.pptxexists, has 7 slides, and python-pptx raised no exceptions during render.- Visual review: each slide N (1–7) matches the Slide Content Map in PROJECT.md §v1.30 (on-slide body + speaker notes fingerprint).
- Footer
Nova Platform - Infrastructure & Operationsis visible (right-aligned) on every rendered slide. - Only S&P theme colors appear in the source markdown.
[1]citations present in slides 3, 5, 7 speaker notes.- CAP-042 row in STATE.md; D-241 record in PROJECT.md.
nova-autonomous-cloud-delivery-marp.mdis unmodified (D-241 discrete-artifact constraint).
Risks (from RESEARCH + GRILL)
| Risk | Mitigation |
|---|---|
| python-pptx render fails on the new frontmatter/style block | The python-pptx path strips frontmatter without reading it; the style: block is source-only (Marp CLI). No render risk. |
| Footer textbox overlaps content | Place footer at SLIDE_H - 0.3" (bottom margin); content area tops out at ~6.5". No overlap. |
| Speaker notes word-count band violation | ci-doc-writer counts words per slide during authoring; smoke test (8c) is the gate. |
→ lines render as plain text (not bullets) |
Use - → ... bullets so the renderer treats them as bullet blocks with the arrow in the text. |
*italic* in source matches unordered-list regex |
Verified in RESEARCH R1: *italic* (no space after *) does NOT match [-*+]\s+. Safe. |
| CAP-024 regression policy collides | Verified in RESEARCH R7: CAP-024 validates fixtures, not deck files. No collision. |
slides.yml CI interferes |
Verified in RESEARCH R8: CI only renders the citizen-developer deck (hardcoded DECK). No interference. |