`. The resolver skips children
with `enabled: false`. (Phase P4)
- **REQ-237** — `deploy.yml` reads feature flags from forge repository
variables (`vars.ENABLE_*`) and passes them as `-var` flags to terraform,
enabling per-client feature toggles without version upgrades. (Phase P4)
- **REQ-238** — Stale artifact path `/tmp/acdl_platform_run_v18` in
`deploy.yml` fixed to use `NOVA_WORK_DIR`. (Phase P4)
- **REQ-239** — A dedicated S&P Global theme CSS file
(`docs/presentations/assets/nova-sp-theme.css`) is the Marp theme for all
Nova presentation decks. The theme applies the S&P Red/Black/White palette
(`#D6002A`, `#1B1B1B`, `#FFFFFF`) to all slide chrome (background,
header/footer, pagination, tables, blockquotes), not just headings. (Phase P2)
- **REQ-240** — A dedicated render pipeline (`scripts/render_slides.sh`)
builds the presentation deck end-to-end: (1) renders all
`assets/mmd/*.mmd` → `assets/png/*.png` via `mermaid-cli --configFile
sp-theme.json`; (2) renders the Marp deck → HTML + PPTX via `marp-cli`;
(3) stages all rendered artifacts to git. Supersedes `render_deck.sh`.
(Phase P2)
- **REQ-241** — A CI workflow (`workflows-src/slides.yml` +
`.github/workflows/slides.yml`) runs `render_slides.sh` on any change to
`docs/presentations/**` and commits the rendered HTML/PPTX/PNGs back. No
manual re-render step; no artifact drift. (Phase P2)
- **REQ-242** — `tests/test_slides_pipeline.py` validates: (1) the Marp
deck frontmatter references `nova-sp-theme.css`; (2) the CSS contains the
S&P colors; (3) every `.mmd` has a corresponding `.png`; (4) the HTML
exists and is newer than the Marp `.md`. (Phase P2)
- **REQ-243** — `docs/presentations/README.md` directory layout is updated
to remove retired decks (`how-the-platform-works-*`,
`the-developer-experience-*`) and document the render pipeline + theme CSS.
(Phase P2)
- **REQ-244** — A 12-month product roadmap (4 quarters, product-outcome
oriented, grounded in NORTH_STAR strategic objectives + deferred-metric
candidate milestones) is added to the presentation deck as Slide 20 +
Slide 21. The roadmap is distinct from Slide 15's deferred-metric unblock
paths. A matching talking-points section is added. (Phase P3)
### Out of Scope (v1.20)
- **Multi-cloud (Azure/GCP) implementation** — deferred; only the product
roadmap references it as a Q4 aspiration.
- **ML anomaly-forecasting service** — deferred; only the product roadmap
references it as a Q4 aspiration.
- **Actual pilot estate activation** — deferred (requires live AWS
re-provisioning, D-096 lift); the product roadmap references it as Q1.
- **Token rotation for `NOVA_GITEA_TOKEN`** — out of scope; the `.env` files
are correctly excluded from sync. Flagged for awareness only.
### v1.20 Traceability
| REQ | Phase | Status |
|-----|-------|--------|
| REQ-230 | P1 | complete |
| REQ-231 | P1 | complete |
| REQ-232 | P1 | complete |
| REQ-233 | P4 | complete |
| REQ-234 | P4 | complete |
| REQ-235 | P4 | complete |
| REQ-236 | P4 | complete |
| REQ-237 | P4 | complete |
| REQ-238 | P4 | complete |
| REQ-239 | P2 | complete |
| REQ-240 | P2 | complete |
| REQ-241 | P2 | complete |
| REQ-242 | P2 | complete |
| REQ-243 | P2 | complete |
| REQ-244 | P3 | complete |
## v1.21 — Nova Deck Refinement & Pipeline Hardening
> Leadership-deck refinement based on 33 review notes on the v1.20 deck
> (v1.20 shipped as `nova-no-humans-platform*`). This milestone renames the
> deck to the professional "Autonomous Cloud Delivery Platform" framing,
> restructures the narrative (Problem → Solution → Proof → Roadmap + Ask),
> removes internal provenance from audience-facing slides, hardens the
> policy pipeline (Checkov before plan, Wiz-or-Checkov on plan), and moves
> the strategic integration objective into the North Star.
>
> Tags run on the v1.20.x line (milestone v1.21 → tags v1.20.0, v1.20.1, …).
### REQ-245 — Deck rename + restructure
The deck files are renamed from `nova-no-humans-platform*` to
`nova-autonomous-cloud-delivery*` across all five artifacts
(source `.md`, `-marp.md`, `.html`, `.pptx`, `-talking-points.md`).
The in-deck title becomes "Nova — The Autonomous Cloud Delivery Platform"
(professional, conveys autonomy without the provocative "no-humans"
wording). The narrative restructures to 18 main + 1 appendix slides:
1. The Problem (merged old 1+2; broader problem framing; no "arc"; no
"18 capabilities verified"; not "humans are the problem"; add tribal
knowledge / rockstar-operator framing)
2. Nova's Vision
3. Strategic Objectives + Anti-Goals
4. Scope: Downstream of PDLC (moved up)
5. RACI: Who Owns What (moved up)
6. The Platform Pipeline
7. The Decision Ledger
8. The Attestation Matrix
9. Telemetry & Live Ops
10. Decision Ledger + Attestation Coverage
11. Cost & ROI
12. What's Deferred — and Why
13. Roadmap to the North Star
14. 12-Month Product Roadmap
15. Quarter-by-Quarter Outcomes
16. Production-Grade Guidance via Atelier (1/2)
17. Production-Grade Guidance via Atelier (2/2)
18. Recap + Ask
A1. Metrics Glossary
Removed: old Slide 10 (Capability Health), old Slide 12 (Zero-Touch
Efficiency), old Appendix A2 (Operating Model & Cost). Slide 5's first
table removed.
### REQ-246 — Thesis rename + reframe
`.ciagent/NO_HUMANS_THESIS.md` is renamed (git mv) to
`.ciagent/AUTONOMY_THESIS.md`. Content reframes from "removing humans" to
"autonomy in operations, human at stage gates" — professional, not
provocative. The operator-bottleneck framing is softened; the attestation
model + provable trust are emphasized. Anti-claims are retained and
reworded for a tech-leadership audience. All references across the repo
are updated to the new filename + framing.
### REQ-247 — Strategic-docs sync (NORTH_STAR + PROJECT)
`NORTH_STAR.md` is updated:
- Vision polished for a technical audience concerned about security,
security remediation velocity, and reliability; "infrastructure
operations become visible" is preserved as a recurring theme.
- Strategic Objective #2 (provable trust) is reworded: trust is
established by deterministic scripts that calculate a score, not by
AI. The platform functions without AI. "AI decisions" are really
automated decisions.
- Strategic Objective #3 (ROI) is reworded with four CTO-grade metrics:
Lead Time (PR → Production), Infrastructure Vulnerability Count
(downward trend), MTTR, Cloud Spend Reduction. All flow into PowerBI
views and are captured by the telemetry pipeline.
- Strategic Objective #4 is replaced: integrate with externally owned
PDLC, SDLC, Agentic, and Citizen Developer platforms regardless of
source; Nova provides skills + MCP endpoints to make applications
production-grade; all intents to deploy to production go through the
same rigorous controls and quality gates.
- Anti-goals #1 (hyperscaler competitor), #4 (legacy untagged), and #5
(sold to operators) are removed. Two new anti-goals added: not an
upstream development platform; not a replacement for the Product
Lifecycle (PDLC).
- Anti-goal #3 reworded to remove the "removes humans" framing.
`PROJECT.md` mission statement + scope are synchronized with the
integration objective and the reworded strategic objectives.
### REQ-248 — RACI restructure (Quality Engineering + SRE)
The RACI matrix (slide + `docs/raci.md`) is restructured:
- A **Quality Engineering** column is added.
- The Platform column no longer holds the **A** for release attestation;
accountability is reassigned to QA or SRE as appropriate.
- "Release Management" is renamed to **SRE**.
- "Release attestation" is split into two rows: the SRE part is
**Production Readiness** (operational readiness sign-off).
- The slide is sized to fit (text shrunk / low-impact rows dropped).
### REQ-249 — Atelier split (2 slides)
Slide 19 (Production-Grade Guidance via Atelier) is split into two slides:
- **16 (1/2):** Skills + MCP server overview (the 9 skills, the 4 MCP
tools, the plugin-registry + stdio surface).
- **17 (2/2):** Agentic validation beyond deterministic scanners +
vendored Atelier for audit reproducibility.
The benefit wording is improved; the same spirit is retained.
### REQ-250 — Pipeline hardening (Checkov before plan; Wiz-or-Checkov on plan)
`scripts/run_platform.sh` (and `scripts/run_postapply.sh` where
relevant) implement the two-stage policy scan:
1. **Checkov runs on static code** (the generated `main.tf` / TF
directory) **before** `terraform plan` — fail-fast, quick developer
feedback on policy violations in the authored code.
2. **After `terraform plan`:** if `WIZ_API_TOKEN` + `WIZ_API_URL` are
set, run **Wiz against the plan**; otherwise run **Checkov against
the plan** as a drop-in replacement. **Wiz and Checkov are never
both run on the plan.**
`adapters/wiz/wiz_adapter.py` is updated if needed for plan-mode
input. Slide 6 + `docs/scope.md` reflect the new flow. Tests
(`tests/test_pipeline.py`, `tests/test_pipeline_contract.py`, and
any checkov/wiz tests) are updated and pass.
### REQ-251 — Theme CSS fix (Appendix A1) + footer cleanup
`docs/presentations/assets/nova-sp-theme.css` is fixed so the Appendix
A1 Metrics Glossary table is readable (the table background color is
corrected). The Marp footer no longer shows the version (`v1.20`) or
the `Act %{page}/5` artifact. The title-slide subtitle no longer shows
`v1.18 — Citizen Developer & Production-Grade Guidance`; it becomes
"Product Development & Citizen Developer Overview" (or similar) to
convey the audience for the platform.
### REQ-252 — Global citation + badge + version removal
Across all audience-facing slides (the Marp deck, the source-of-truth
markdown, and the talking points):
- All internal citations are removed: `D-###` decision IDs,
`REQ-###` requirement IDs, and internal file paths
(e.g. `outbox_writer.py`, `confidence_signal.py`).
- All `Planned` badges are removed.
- The version is removed from the footer and the title slide.
Every benefit callout is rewritten for a tech-leadership audience
(security, remediation velocity, reliability, lead time). A "less is
more / no fluff" final prose pass is applied; the story stays clear.
### REQ-253 — Render + verify + ship
Changed/new mermaid diagrams are re-rendered (slide 1 new diagram, slide
9 expand, Atelier split). HTML + PPTX are re-rendered via
`scripts/render_slides.sh`. `tests/test_slides_pipeline.py` passes:
asserts 18 main + 1 appendix slides, no badge spans, no version in the
footer, no `D-###`/`REQ-###`/`.py` paths in audience-facing slides, and
filename refs updated in render scripts + CI workflow + README.
`tests/test_no_forge_mentions.py` passes. Full `pytest` passes
(pipeline-hardening tests green). `run_platform.sh --check-only` passes.
Milestone ship: tag the final phase on the v1.20.x line; create a
release; attach the PPTX.
### Out of Scope (v1.21)
- **Live pilot estate activation** — still deferred (D-096).
- **ML anomaly-forecasting service** — still deferred.
- **Multi-cloud (Azure/GCP) implementation** — still deferred.
- **Tamper-evident ledger (S3 Object Lock + JWS)** — still deferred
(D-083); the deck describes it as a roadmap item without citing the
decision ID in the audience-facing slides.
### v1.21 Traceability
| REQ | Phase | Status |
|-----|-------|--------|
| REQ-245 | P2 | complete |
| REQ-246 | P1 | complete |
| REQ-247 | P1 | complete |
| REQ-248 | P2 | complete |
| REQ-249 | P2 | complete |
| REQ-250 | P4 | complete |
| 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 `