From 71f0f1a05d613d7a9d668a71143e6da6e56049e7 Mon Sep 17 00:00:00 2001 From: Jon Chery Date: Tue, 11 Aug 2026 19:18:09 +0000 Subject: [PATCH 1/5] =?UTF-8?q?docs(init):=20validate=20specification=20?= =?UTF-8?q?=E2=80=94=20v1.22=20milestone=20(REQ-254..262)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Established active_milestone: v1.22 (Nova Deck Layout Fix). Added v1.22 objective to PROJECT.md (NFR milestone, 7 phases, tags on v1.21.x line). Added REQ-254..262 to REQUIREMENTS.md covering theme CSS (padding, overflow, image rules, title chrome), render scripts (delete render_deck.sh, pin versions, 2x scale), mermaid re-layout (LR + 2-row wrap), deck content (trim/split 8 overflowing slides), and re-render + layout/aspect-ratio tests. Root cause (per investigation): nova-sp-theme.css has zero section padding (declares /* @theme nova-sp */ as a comment, not the @theme directive; does not @import Marp default theme). Combined with overflow:hidden, blunt img max-height:320px, header+footer chrome on every slide, and two P5 diagrams with extreme aspect ratios (13.52x and 0.63x), 8 of 19 slides overflow. NOT a P5 regression — theme CSS byte-identical P3->P5; P5 denser content made pre-existing flaws visible. ---ci--- project: acdl phase: 0 milestone: v1.22 status: specify ---/ci--- --- .ciagent/PROJECT.md | 77 ++++++++++++++++ .ciagent/REQUIREMENTS.md | 188 +++++++++++++++++++++++++++++++++++++++ .ciagent/config.json | 2 +- 3 files changed, 266 insertions(+), 1 deletion(-) diff --git a/.ciagent/PROJECT.md b/.ciagent/PROJECT.md index d73fb86..ed2a54a 100644 --- a/.ciagent/PROJECT.md +++ b/.ciagent/PROJECT.md @@ -1419,3 +1419,80 @@ wrong commit standard, wrong repo. | D-145 | Trigger = manual-only (`--release` / `RELEASE_CONFIRMED=1`). | The 2nd release is a deliberate human action, not a CI side-effect. The gate guarantees it can never fire from Gitea Actions, GitHub Actions, or accidental invocation. | Script exits 2 without `--release`. | | D-146 | Domain grouping = 13 fixed-order domains by path prefix; messages map positionally over CHANGED domains only. | Avoids the kitchen-sink commit; gives `~/nova` a reviewable, conventional history tailored to platform consumers. Positional-over-changed mapping lets the human supply exactly the messages needed, in domain order, without padding for unchanged domains. | `--list-domains` prints order; `--dry-run` previews; count-mismatch errors clearly. | | D-147 | coreci / Atelier review gate = deferred this milestone. | The vendored Atelier (`mcp/atelier/vendor`) could review the synced tree before commit and block on P0, but that's an additive hardening step, not part of establishing the pipeline. Deferred to a future milestone. | Sync ships consumer contents as-is; no review gate. | + +## Objective for Milestone v1.22 (active — Nova Deck Layout Fix) + +v1.22 fixes the systemic layout/formatting problems in the Nova +presentation deck that made every slide look "out of whack" after the +v1.21 P5 re-render. A full investigation determined the root cause is +**not a P5 regression** — the `nova-sp-theme.css` has had zero `section` +padding since it was authored (it declares `/* @theme nova-sp */` as a +comment, not the `@theme` directive, and does not `@import` Marp's +default theme, so Marp's default `section { padding: 56px 64px }` never +applies). Combined with `overflow:hidden` (silent clip), a blunt +`img { max-height: 320px }` rule, header+footer chrome on every slide, +and two new P5 diagrams with extreme aspect ratios (13.52× and 0.63×), +8 of 19 slides overflow and the rest look jammed against the edges. + +This milestone is a **comprehensive fix** across four layers: (1) the +theme CSS (padding, overflow handling, aspect-ratio-aware image rules, +title-slide chrome suppression, paragraph/list/table spacing); (2) the +render scripts (delete the stale unthemed `render_deck.sh`, pin +marp-cli/mermaid-cli versions, add 2x scale + transparent bg to +mermaid); (3) the two problematic mermaid diagrams (re-layout to LR + +2-row wrap); (4) the deck content (trim/split the 8 overflowing slides, +remove the redundant `header:` from frontmatter). It also adds the +**layout/aspect-ratio/theme-structural tests** that were missing — the +gap that let this regression through undetected. + +**Milestone type:** NFR (all phases are fix/docs/test — no feat/breaking). +Tags run on the **v1.21.x** patch line (previous minor per +branch-strategy): `v1.21.0` (P0) → `v1.21.1..v1.21.5` (P1–P5) → +`v1.21.6` (P6 final = milestone release). + +**Phase count:** 7 (P0 pre-execution + 5 execution + 1 final). + +**Wave ordering:** +- Wave 1 (P1 + P2, parallel): theme CSS + render scripts — no + interdependency. P1 establishes the padding/overflow/image budget that + P4's content trimming relies on; P2 fixes the render pipeline that P3's + PNG re-render depends on. +- Wave 2 (P3 + P4, parallel): mermaid re-layout + deck content. P3 + depends on P2 (2x scale flag); P4 depends on P1 (padding budget). +- Wave 3 (P5): re-render HTML + PPTX + add tests. Depends on all above. +- Wave 4 (P6): final review + audit + milestone ship. + +**Hard constraints:** +- DO NOT change the deck narrative or the 4-beat arc (Problem → Solution + → Proof → Roadmap + Ask) — only fix layout/formatting. +- DO NOT re-introduce badges, version strings, or internal citations + (D-###/REQ-###/.py paths) that v1.21 removed. +- The slide count may change from 18 main + 1 appendix to 20 main + 1 + appendix (splitting slides 3 and 8 to relieve overflow). The + `test_marp_deck_slide_count` test + README "18 main + 1 appendix" + convention must be updated to match. +- PPTX remains a first-class committed artifact + release attachment. +- No code changes outside `docs/presentations/`, `scripts/render*.sh`, + and `tests/test_slides_pipeline.py`. + +### Requirements + +New requirements REQ-254..REQ-262 — see `REQUIREMENTS.md` §v1.22. Summary: + +- **REQ-254:** Theme CSS — add `section` padding + overflow handling. +- **REQ-255:** Theme CSS — aspect-ratio-aware image rules (replace blunt + `max-height:320px`). +- **REQ-256:** Theme CSS — title-slide chrome suppression + paragraph/ + list/table spacing tightening. +- **REQ-257:** Render scripts — delete `render_deck.sh` (or fix `--theme`); + pin marp-cli/mermaid-cli versions. +- **REQ-258:** `render_slides.sh` — add `-s 2 -b transparent` to mermaid-cli + (README spec). +- **REQ-259:** Re-layout `telemetry-live-ops.mmd` from `flowchart TB` → + `flowchart LR`; re-render PNG at 2x transparent. +- **REQ-260:** Re-layout `platform-pipeline.mmd` to 2-row subgraph wrap; + re-render PNG at 2x transparent. +- **REQ-261:** Trim/split 8 overflowing slides (3, 5, 6, 8, 9, 12, 15, + A1) + remove redundant `header:` from frontmatter. +- **REQ-262:** Re-render HTML + PPTX + add layout/aspect-ratio/theme- + structural tests. diff --git a/.ciagent/REQUIREMENTS.md b/.ciagent/REQUIREMENTS.md index 2c9c4a8..1db0007 100644 --- a/.ciagent/REQUIREMENTS.md +++ b/.ciagent/REQUIREMENTS.md @@ -1716,3 +1716,191 @@ release; attach the PPTX. | REQ-251 | P3 | complete | | REQ-252 | P2 | complete | | REQ-253 | P5 | complete | + +## v1.22 — Nova Deck Layout Fix + +> Fixes the systemic layout/formatting problems in the Nova presentation +> deck that made every slide look "out of whack" after the v1.21 P5 +> re-render. Root cause (per investigation): `nova-sp-theme.css` has zero +> `section` padding (it declares `/* @theme nova-sp */` as a comment, not +> the `@theme` directive, and does not `@import` Marp's default theme, so +> Marp's default `section { padding: 56px 64px }` never applies). Combined +> with `overflow:hidden` (silent clip), a blunt `img { max-height: 320px }` +> rule, header+footer chrome on every slide, and two new P5 diagrams with +> extreme aspect ratios (13.52× and 0.63×), 8 of 19 slides overflow and +> the rest look jammed against the edges. This is NOT a P5 regression — +> the theme CSS is byte-identical between P3 and P5; P5's denser content +> made the pre-existing theme flaws visible. +> +> Comprehensive fix across four layers: theme CSS, render scripts, mermaid +> diagrams, deck content. Adds the layout/aspect-ratio/theme-structural +> tests that were missing (the gap that let this through). +> +> Tags run on the v1.21.x line (milestone v1.22 → tags v1.21.0, v1.21.1, …). + +### REQ-254 — Theme CSS: section padding + overflow handling + +`docs/presentations/assets/nova-sp-theme.css` adds a `section` padding +rule so content is not jammed against the slide edges. The padding +reserves space for the header (top) and footer (bottom) chrome: e.g. +`section { padding: 48px 56px 40px; }`. The theme also adds explicit +overflow handling on `section` so dense content is not silently clipped +by the marpit base `overflow:hidden` — either `overflow: auto` as an +authoring-time signal, or a documented shrink-to-fit rule. The fix does +NOT re-introduce Marp's default theme via `@import` (the theme remains +standalone); it explicitly sets the padding the default would have +provided. + +### REQ-255 — Theme CSS: aspect-ratio-aware image rules + +The blunt `img { max-height: 320px }` rule is replaced with an +aspect-ratio-aware rule that does not break the Marp `w:`/`h:` directives: +`img { max-width: 100%; max-height: 380px; object-fit: contain; }`. A +`.wide` / `.tall` class convention is added for diagrams (wide diagrams: +`max-height: 280px`; tall diagrams: `max-height: 480px`) so authors can +opt into the right bound per diagram instead of fighting a single blunt +rule. The `w:900` directive on a tall image (slide 9) no longer gets +silently overridden by `max-height`. + +### REQ-256 — Theme CSS: title-slide chrome + spacing tightening + +- `section.title header, section.title footer { display: none; }` — the + title slide and appendix slide no longer render header/footer chrome + that collides with content (the `` + + `` directives only suppress the page number, + not the chrome). +- `section h2 + p { margin-top: 0.2em; }` — tightens the spacing between + the `## Slide N — Title` heading and the bold lead paragraph that + follows it on every content slide (reclaims ~22px per slide). +- `section p { margin: 0.4em 0; }` — reduces default `

` margins + (~1em top/bottom) that waste vertical space on dense slides. +- `ol` styling added (matches `ul`/`li`). +- Table cell padding reduced to `4px 8px` for tables with ≥8 rows (via + a `table.dense` class or a `:nth-child` heuristic) so 10-13 row tables + (slides 8, 12, A1) fit. +- `@media print` overrides added for PPTX export fidelity. + +### REQ-257 — Render scripts: delete render_deck.sh + pin CLI versions + +`scripts/render_deck.sh` is **deleted** (it omits `--theme`, relying on +the frontmatter `theme: nova-sp` which Marp cannot resolve as a custom +theme without `--theme-set` — it falls back to the default theme, +producing unthemed output). The README already documents +`render_slides.sh` as the canonical script. Both `render_slides.sh` and +the deleted `render_deck.sh` references are removed from any docs/tests. +`render_slides.sh` pins marp-cli and mermaid-cli to specific versions +(replace `@latest` with pinned versions) to prevent uncontrolled +boilerplate-CSS drift like the P3→P5 HTML diff. + +### REQ-258 — render_slides.sh: 2x scale + transparent bg for mermaid + +The mermaid-cli invocation in `scripts/render_slides.sh` (lines 51-55) +adds `-s 2 -b transparent` to match the README spec (line 193). This +produces crisp 2x PNGs with transparent backgrounds instead of the +current 1x renders (e.g. `platform-pipeline.png` is only 1568px wide +instead of the 3136px a 2x render would produce). + +### REQ-259 — Re-layout telemetry-live-ops.mmd to LR + +`docs/presentations/assets/mmd/telemetry-live-ops.mmd` is rewritten from +`flowchart TB` (top-bottom, produced a 1024×1628 PNG — aspect 0.63, tall) +to `flowchart LR` (left-right) with subgraph row-wrapping per the README +convention (line 168). The re-rendered PNG (at 2x transparent, per +REQ-258) has an aspect ratio in [1.2, 2.5] suitable for a 16:9 slide. +The Marp deck's `![w:900]` directive on slide 9 is updated to match the +new dimensions (or replaced with `![h:320]` if the diagram remains +taller than wide after re-layout). + +### REQ-260 — Re-layout platform-pipeline.mmd to 2-row wrap + +`docs/presentations/assets/mmd/platform-pipeline.mmd` is rewritten to +wrap the 10-node LR chain into 2 rows via mermaid subgraphs (or split +into two stages: static-scan row + runtime-scan row). The current +1568×116 PNG (aspect 13.52, ultra-wide/short) renders as a 1000×74px +thin strip at `![w:1000]` — node text is illegible. The re-rendered +PNG (at 2x transparent) has an aspect ratio in [1.2, 2.5] suitable for +a 16:9 slide. + +### REQ-261 — Trim/split 8 overflowing slides + remove redundant header + +The 8 slides identified as overflowing 720px are trimmed or split: +- **Slide 3** (Objectives + Anti-Goals): split into Slide 3a (4 + objectives) + Slide 3b (4 anti-goals). Main slide count 18 → 19. +- **Slide 5** (RACI): apply `table.dense` class (from REQ-256) to + reduce cell padding; keep 8 rows. +- **Slide 6** (Pipeline): reduce to 3 bullets (the 4th is covered by + the diagram, now legible after REQ-260). +- **Slide 8** (Attestation Matrix): split into Slide 8a (qa concerns, + 3 rows) + Slide 8b (prod/dr concerns, 7 rows). Main slide count + 19 → 20. +- **Slide 9** (Telemetry): reduce to 3 bullets; image now legible + after REQ-259. +- **Slide 12** (Deferred): reduce to 6 rows (merge the 3 "Live AWS + re-provisioning" blockers into one row). +- **Slide 15** (Quarter-by-Quarter): drop the "Grounding" column + (redundant with the strategic objectives); 4 columns fit better. +- **Appendix A1** (Glossary): apply `table.dense` class (16px font); + keep 13 rows. + +The Marp frontmatter `header:` line is removed (keep `footer:` + +`paginate: true` only). The full 51-char deck title in BOTH header and +footer on every slide is redundant chrome that eats vertical space; +the footer alone suffices. The title slide and appendix already use +`` which (after REQ-256) suppresses chrome. + +The talking-points file is re-distilled to match the new slide +structure (20 main + 1 appendix). The README "18 main + 1 appendix" +convention (line 130) and `test_marp_deck_slide_count` are updated to +assert 20 main + 1 appendix. + +### REQ-262 — Re-render HTML + PPTX + add layout/aspect-ratio tests + +- Run `bash scripts/render_slides.sh nova-autonomous-cloud-delivery` → + re-render all mermaid PNGs (2x transparent) + HTML + PPTX. Verify + slide count (20 main + 1 appendix = 21) and media embedding. +- Add tests to `tests/test_slides_pipeline.py`: + - `test_theme_css_has_section_padding` — assert `section` rule + contains `padding`. + - `test_theme_css_suppresses_title_chrome` — assert + `section.title header` / `section.title footer` `display: none`. + - `test_png_aspect_ratios_sane` — for every PNG in `assets/png/`, + assert aspect ratio ∈ [1.2, 2.5] (catches the 13.52× and 0.63× + outliers). + - `test_render_slides_has_2x_scale` — assert `render_slides.sh` + contains `-s 2` and `-b transparent`. + - `test_render_deck_removed` — assert `render_deck.sh` does not + exist. + - `test_html_embeds_theme` — assert committed HTML contains + `--sp-red` and `padding` in the inline `