docs(init): validate specification — v1.23 milestone (REQ-263..275)
Established active_milestone: v1.23 (Nova Deck Cleanup & Python PPTX). NFR milestone (docs/render/test only; no features). Tags on v1.22.x line (v1.22.0 P0 -> v1.22.6 P6 final = milestone release). Branch: milestone/v1.23-deck-cleanup-python-pptx. Added REQ-263..275 to REQUIREMENTS.md covering: - Consolidate docs: single -marp.md source of truth, delete plain .md, speaker notes/talking points as Marp HTML comments, keep talking-points.md as synced standalone aid (REQ-263,264) - Restore clean style: theme:default + inline style block (S&P palette), retire nova-sp-theme.css from render (keep as reference), benefit callout restyle (REQ-265,266,267) - Inline images: scripts/inline_images.py for self-contained redistributable HTML (REQ-268) - Python PPTX generator: scripts/render_pptx.py structured editable S&P-themed PPTX via python-pptx, both PPTX outputs produced + attached (REQ-269,270) - Trim word count: targeted ~20-30% trim on verbose slides, remove 'penetrate' term (REQ-271,272) - CI/tests/README: workflows install python-pptx, tests updated, README rewritten (REQ-273,274,275) Driven by user feedback: deck looked 'out of whack'; wanted to return to the clean style of the old the-developer-experience.html. Investigation revealed the 'clean' reference was itself MARP output (default theme + inline style); the standalone nova-sp-theme.css approach was fragile. ---ci--- project: acdl phase: 0 milestone: v1.23 status: specify ---/ci---
This commit is contained in:
@@ -1904,3 +1904,127 @@ assert 20 main + 1 appendix.
|
||||
| REQ-260 | P3 | complete |
|
||||
| REQ-261 | P4 | complete |
|
||||
| REQ-262 | P5 | complete |
|
||||
|
||||
## v1.23 — Nova Deck Cleanup & Python PPTX
|
||||
|
||||
> **NFR milestone** (docs/render/test only; no features). Tags run on the
|
||||
> **v1.22.x** line (milestone v1.23 → tags v1.22.0..v1.22.6). Final patch
|
||||
> `v1.22.6` = milestone release.
|
||||
>
|
||||
> Consolidates the deck to a single source-of-truth markdown document,
|
||||
> restores the clean S&P visual style (Marp `default` theme + inline
|
||||
> `style:` block, matching the old `the-developer-experience.html`),
|
||||
> embeds images as base64 in the HTML for redistribution, builds a
|
||||
> parallel structured python-pptx PPTX generator, and trims verbose
|
||||
> slides. `nova-sp-theme.css` is retained as a styling reference but
|
||||
> retired from the render path.
|
||||
|
||||
### Category: Consolidate Docs
|
||||
- **REQ-263:** `nova-autonomous-cloud-delivery-marp.md` becomes the sole
|
||||
source of truth. Speaker notes + talking points from the plain `.md`
|
||||
are folded into the deck as Marp HTML comments (`<!-- Speaker notes:
|
||||
... -->`, `<!-- Talking points: ... -->`). The plain
|
||||
`nova-autonomous-cloud-delivery.md` is deleted.
|
||||
- **REQ-264:** `nova-autonomous-cloud-delivery-talking-points.md` is kept
|
||||
as a standalone presenter aid, synced from the deck's `<!-- Talking
|
||||
points: -->` comments. Header note documents the mirror relationship.
|
||||
|
||||
### Category: Restore Clean Style
|
||||
- **REQ-265:** Revert deck frontmatter `theme: nova-sp` → `theme:
|
||||
default` and add an inline `style:` block porting the S&P visual
|
||||
language (palette #D6002A/#1B1B1B, Akkurat Pro font, black title slide
|
||||
with red top border, tables, blockquotes, code, aspect-ratio-aware
|
||||
images). Keep current structure (H2 + bold-lead, no header, no badges).
|
||||
- **REQ-266:** `nova-sp-theme.css` is retained as a styling reference
|
||||
(header comment documents its retired status). `render_slides.sh`
|
||||
drops the `--theme "$THEME_CSS"` argument; the inline `style:` block in
|
||||
frontmatter is the sole styling source at render time.
|
||||
- **REQ-267:** Benefit callouts on every slide are restyled: the
|
||||
`**Benefit:**` prefix is removed; the callout becomes a styled
|
||||
element (red top-rule + black italic text; white on title slides)
|
||||
using a `.benefit` class in the inline style block.
|
||||
|
||||
### Category: Inline Images
|
||||
- **REQ-268:** New `scripts/inline_images.py` (stdlib only: `base64`,
|
||||
`re`, `mimetypes`) post-processes the rendered HTML: finds all
|
||||
`<img src="assets/...">` relative paths, replaces each `src` with a
|
||||
`data:image/<mime>;base64,...` URI. HTML becomes self-contained
|
||||
(redistributable without the `assets/` folder). `render_slides.sh`
|
||||
invokes it after the MARP HTML render, before staging.
|
||||
|
||||
### Category: Python PPTX Generator
|
||||
- **REQ-269:** New `scripts/render_pptx.py` parses the consolidated
|
||||
`*-marp.md` and produces a structured, editable, S&P-themed PPTX
|
||||
(`nova-autonomous-cloud-delivery-python.pptx`) using `python-pptx`.
|
||||
16:9 slides; title slide (black bg, red top bar, white H1); content
|
||||
slides (red H2 title, bold lead, bullets, blockquote, embedded PNGs,
|
||||
native PPTX tables, benefit callouts). HTML-comment speaker
|
||||
notes/talking points are skipped. `python-pptx` added to
|
||||
`pyproject.toml`. `render_slides.sh` invokes it as a new step.
|
||||
- **REQ-270:** Both PPTX outputs (MARP image-of-slide + python
|
||||
structured) are produced by `render_slides.sh` and staged. CI
|
||||
workflows install `python-pptx` and commit both. `attach_release_asset.py`
|
||||
attaches both to the release.
|
||||
|
||||
### Category: Trim Word Count
|
||||
- **REQ-271:** Targeted word-count trim on ~8 verbose slides (1, 5, 7,
|
||||
8, 13, 14, 20, plus the appendix) — ~20-30% reduction on trimmed
|
||||
slides. Tables and short slides are untouched. The spirit of each
|
||||
slide is preserved.
|
||||
- **REQ-272:** The term "penetrate" (and derivatives) is removed from
|
||||
all presentation files. Slide 5's "Nova never penetrates it" phrase is
|
||||
removed with no replacement (slide 4 Anti-Goals already excludes the
|
||||
PDLC from scope). `grep -ri penetrat docs/presentations/` returns
|
||||
nothing.
|
||||
|
||||
### Category: CI, Tests, README
|
||||
- **REQ-273:** CI workflows (`workflows-src/slides.yml` + synced
|
||||
`.github`/`.gitea` copies) install `python-pptx`, run `render_slides.sh`
|
||||
(which produces HTML + both PPTX + inlined images), and commit all
|
||||
rendered artifacts. README documents the new pipeline.
|
||||
- **REQ-274:** `tests/test_slides_pipeline.py` is updated for the
|
||||
consolidated doc (no plain `.md`), default theme + inline style
|
||||
assertions (S&P visual properties, not theme filename),
|
||||
`nova-sp-theme.css` retained-as-reference assertion, image-inlining
|
||||
assertions (zero `src="assets/` references, ≥1 base64 per image),
|
||||
python-pptx output existence, benefit callout class, "penetrate"
|
||||
absence. New `tests/test_pptx_generator.py` asserts slide count, title
|
||||
colors, table rendering, image embedding.
|
||||
- **REQ-275:** `docs/presentations/README.md` is rewritten to document
|
||||
the single-document process (author `*-marp.md` → render HTML + both
|
||||
PPTX → talking points mirrored), inline `style:` approach,
|
||||
`nova-sp-theme.css` reference status, image inlining, and dual PPTX
|
||||
output.
|
||||
|
||||
### Out of Scope (v1.23)
|
||||
|
||||
- **Deck narrative / 4-beat arc changes** — the Problem → Solution →
|
||||
Proof → Roadmap + Ask structure is unchanged; only word count is
|
||||
trimmed.
|
||||
- **Re-introduction of badges, version strings, or internal citations**
|
||||
— v1.21 removed these; v1.23 does not re-add them.
|
||||
- **Removal of MARP** — MARP stays for HTML + PPTX; python-pptx runs in
|
||||
parallel for comparison.
|
||||
- **Removal of orphaned `developer-experience-*` assets** — deferred to
|
||||
a future cleanup phase (optional in v1.23 Phase 6 only if time
|
||||
permits).
|
||||
- **Mermaid render scoping** — the mermaid render step continues to
|
||||
render all `.mmd` files; scoping to referenced-only is deferred.
|
||||
|
||||
### v1.23 Traceability
|
||||
|
||||
| REQ | Phase | Status |
|
||||
|-----|-------|--------|
|
||||
| REQ-263 | P1 | pending |
|
||||
| REQ-264 | P1 | pending |
|
||||
| REQ-265 | P2 | pending |
|
||||
| REQ-266 | P2 | pending |
|
||||
| REQ-267 | P2 | pending |
|
||||
| REQ-268 | P3 | pending |
|
||||
| REQ-269 | P3 | pending |
|
||||
| REQ-270 | P3 | pending |
|
||||
| REQ-271 | P4 | pending |
|
||||
| REQ-272 | P4 | pending |
|
||||
| REQ-273 | P5 | pending |
|
||||
| REQ-274 | P5 | pending |
|
||||
| REQ-275 | P5 | pending |
|
||||
|
||||
Reference in New Issue
Block a user