`
-or `--theme-set`, Marp cannot resolve `nova-sp` and **falls back to the
-default theme** (or errors). The committed HTML was rendered by
-`render_slides.sh` (which correctly passes `--theme`), so the committed
-artifact is fine — but `render_deck.sh` is a stale, dangerous script
-that would produce an unthemed/default-themed deck if anyone ran it.
-The README (line 201) documents `render_slides.sh` as canonical;
-`render_deck.sh` is not mentioned in the build-commands section.
-
-## FINDING 6 — render_slides.sh missing 2x scale + transparent bg (CONFIDENCE: HIGH)
-
-`render_slides.sh` mermaid invocation (lines 51-55) does **NOT** pass
-`-s 2` (2x scale) or `-b transparent`, despite the README (line 193)
-documenting both as required. This is why `platform-pipeline.png` is
-only 1568px wide (1x) instead of 3136px (2x) — the rendered PNGs are
-lower resolution than the README specifies, contributing to illegibility
-when scaled.
-
-## FINDING 7 — P5 marp-cli version bump (CONFIDENCE: LOW — not the cause)
-
-The P3→P5 HTML diff is 831 changed lines, but the **theme CSS portion
-is byte-identical** (verified: `font-size:22px`, `max-height:320px`,
-`marpit-root-font-size:22px`, `--sp-red:#D6002A` all match; `sp-red`
-appears exactly once in both). The large diff is:
-- (a) marp-cli boilerplate (bespoke-marp presenter/overview/transition
- CSS) changed due to a marp-cli version bump (neither script pins a
- version — both use `@latest`), and
-- (b) content changes: title "No-Humans Infrastructure Platform" →
- "Autonomous Cloud Delivery Platform", footer "Act %{page}/5 — v1.20"
- → deck title, slide count 20 → 19.
-
-The version bump did **not** alter the slide layout engine or the theme
-rules. **This is not the regression source.** The layout problems are
-inherent to the theme CSS (zero padding, no overflow handling, blunt
-image rule) which has been unchanged. P5 made the content denser (new
-diagrams with extreme aspect ratios, longer deck-title header/footer)
-which made the pre-existing theme flaws more visible.
-
-## FINDING 8 — Test coverage gaps (CONFIDENCE: VERY HIGH)
-
-`tests/test_slides_pipeline.py` (268 lines) checks **static file
-properties only**:
-- Theme CSS file exists and contains `#D6002A` / `#1B1B1B`
-- Frontmatter references `nova-sp`, not `default`
-- `render_slides.sh` exists, is executable, invokes mermaid-cli + marp-cli
-- Every `.mmd` has a `.png`
-- No maturity badges, no version in footer, slide count = 18+1
-- No D-###/REQ-###/internal `.py` paths in slides
-
-**What is NOT tested (the gaps that let layout regressions through):**
-1. NO rendered-dimension / overflow test — no test renders the HTML and
- checks that each slide's content height ≤ 720px.
-2. NO theme-CSS structural test — no test asserts `section` has
- `padding`, that `overflow` is handled, or that `img` rules don't
- conflict with `w:`/`h:` directives.
-3. NO image aspect-ratio / legibility test — no test checks that PNG
- dimensions are reasonable for a 16:9 slide.
-4. NO render-script theme-flag test — no test asserts `render_deck.sh`
- passes `--theme` (it doesn't), so the broken script passes CI.
-5. NO rendered-HTML structural assertion — no test parses the committed
- HTML to verify the theme is actually embedded.
-6. NO mermaid render-scale test — no test verifies PNGs are 2x scale.
-
-**Conclusion:** A layout regression — including the current zero-padding,
-image-clamping, and table-overflow problems — would pass every existing
-test. This is why the user's "completely out of whack" report was not
-caught.
-
-## Theme CSS gaps (summary)
-
-1. NO `padding` on `section` (lines 21-26 set font/color/bg only).
-2. NO `overflow` handling on `section`.
-3. NO `@import` of a base theme (line 1 is a comment, not `@theme`).
-4. NO rule for the `h2` + bold-lead-paragraph pattern (default ``
- margins waste ~44px each).
-5. Table cell padding `6px 10px` too generous for 10-13 row tables.
-6. `img { max-height: 320px }` is a blunt instrument that breaks `w:`
- directives on tall images and does nothing for ultra-wide images.
-7. Header/footer have no padding/margin — collide with content at 0
- section padding.
-8. `section.title` does not suppress header/footer.
-9. NO rule for `ol` (only `ul`/`li` styled).
-10. NO `@media print` overrides for PPTX export fidelity.
-
-## Assumptions logged (v1.22)
-
-- **A1 (0.95):** The theme CSS is the primary root cause. Adding
- `section { padding: 48px 56px 40px; }` alone would fix the "jammed
- against edges" look on all 19 slides. Confidence grounded in the
- grep verification (zero padding matches in rendered HTML).
-- **A2 (0.9):** The P5 re-render is NOT a regression — the theme CSS is
- byte-identical P3→P5. P5's denser content (new diagrams, longer
- header/footer) made pre-existing flaws visible. Grounded in the
- byte-level diff comparison.
-- **A3 (0.9):** `render_deck.sh` should be deleted, not fixed. The
- README already documents `render_slides.sh` as canonical; keeping a
- second broken script is a footgun. Grounded in the README build-
- commands section (line 201) which does not mention `render_deck.sh`.
-- **A4 (0.85):** Splitting slides 3 and 8 (18 → 20 main) is preferable
- to trimming content, because the content is leadership-relevant and
- should not be lost. The slide-count test + README convention are
- updated to match. Grounded in the overflow estimates (slides 3 and 8
- are the densest at ~780px).
-- **A5 (0.8):** Pinning marp-cli/mermaid-cli versions is necessary to
- prevent uncontrolled boilerplate-CSS drift. The exact pinned versions
- will be determined during P2 execution by testing which version
- produces stable output in this environment.
-
-## Decisions surfaced (research → bound in CLARIFY)
-
-All 5 CLARIFY decisions are grounded in these findings:
-- Comprehensive scope (FINDINGS 1-8 span 4 layers)
-- Full pipeline (new milestone, complete audit trail)
-- Re-layout to LR (FINDING 3 — TB produced 0.63 aspect)
-- Delete render_deck.sh (FINDING 5 — stale, unthemed)
-- Split slides 3+8 (FINDING 2 — densest overflow)
-
----
-
-## v1.23 RESEARCH — Nova Deck Cleanup & Python PPTX
-
-> Phase: 0 RESEARCH. Milestone v1.23 (Nova Deck Cleanup & Python PPTX).
-> docs/render/test NFR milestone. Surface: deck markdown, Marp inline
-> style CSS, Python render scripts, tests, CI YAML, README.
-> Researcher: ci-researcher. Sources: ACDL codebase (v1.22 tree) +
-> the deleted clean reference HTML at /root/gl/acdl/docs/presentations/
-> the-developer-experience.html + python-pptx docs + Marp rendered HTML
-> inspection.
-
-### FINDING 1 — Marp `default` theme + inline `style:` block (the clean reference)
-
-The deleted clean reference deck
-`/root/gl/acdl/docs/presentations/the-developer-experience.html`
-(commit eb43e08) used `theme: default` + an inline `style:` block in the
-Marp frontmatter. The exact inline CSS (extracted from the `data-style`
-attribute repeated on every `` in the rendered HTML) is:
-
-```css
-section {
- font-family: "Akkurat Pro", "Helvetica Neue", "Arial", sans-serif;
- font-size: 26px;
- color: #1B1B1B;
-}
-h1 { color: #D6002A; font-size: 40px; margin-bottom: 0.3em; }
-h2 { color: #D6002A; font-size: 32px; margin-bottom: 0.2em; }
-section.title { background: #1B1B1B; color: #fff; border-top: 8px solid #D6002A; }
-section.title h1 { color: #fff; }
-table { font-size: 22px; width: 100%; }
-th { background: #F0F0F0; }
-blockquote { border-left: 4px solid #D6002A; color: #2E2E2E; font-size: 24px; }
-pre { font-size: 16px; line-height: 1.3; }
-code { font-size: 16px; }
-img { display: block; margin: 0 auto; max-height: 280px; }
-.badge {
- display: inline-block; padding: 2px 8px; border-radius: 4px;
- font-size: 16px; font-weight: 600;
-}
-.planned { background: #fef3c7; color: #78350f; }
-```
-
-**What Marp's built-in `default` theme provides for free** (from the
-embedded `@theme default` CSS in the reference HTML):
-- `section { width:1280px; height:720px; box-sizing:border-box; overflow:hidden; position:relative }`
- — slide dimensions + box model.
-- Base section typography: `font-family: var(--fontStack-sansSerif)`
- (system sans), `font-size: 16px`, `line-height: 1.5`, `color:
- var(--fgColor-default)`, `background: var(--bgColor-default)` (white).
- **Note: default does NOT set padding** — wait, correction: the
- `default` theme's embedded CSS in this Marp version does NOT include
- an explicit `padding` on `section`; the nova-sp-theme.css comment
- claiming `padding: 56px 64px` was for a different Marp version. The
- inline `style:` block above does not set padding either, implying the
- default theme's inheriting UA stylesheet padding or Marp's container
- provides it. **This is the key thing to verify in P2:** whether
- `theme: default` + the inline `style:` block produces padding that
- reserves header/footer chrome space. The v1.22 root-cause was ZERO
- padding with the standalone theme; the inline `style:` block above
- also does not set padding, so the clean look may have relied on the
- default theme's own padding (which Marp's default theme CSS
- *does* set: `section{padding:56px 64px}` is in the default theme's
- canonical CSS even if not visible in this rendered HTML's inlined
- subset — the rendered HTML strips the theme CSS into a `