diff --git a/.ciagent/CHECKPOINT.json b/.ciagent/CHECKPOINT.json index d96ccaf..8a2b694 100644 --- a/.ciagent/CHECKPOINT.json +++ b/.ciagent/CHECKPOINT.json @@ -1,19 +1,19 @@ { - "phase": 4, - "stage": "complete", - "milestone": "v1.30", - "phase_role": "final", + "phase": 0, + "stage": "plan", + "milestone": "v1.31", + "phase_role": "pre_execution", "attempts": 0, - "updated_at": "2026-08-20T15:45:00Z", + "updated_at": "2026-08-20T16:18:00Z", "project": "acdl", "projects": ["acdl", "nova-blockchain-exchange"], - "active_milestone": "v1.30", - "milestone_branch": null, - "phase_branch": null, - "tag_line": "v1.29.x", - "phase_name": "final-review-ship", - "milestone_type": "feature", - "reqs_covered": ["REQ-372.1","REQ-372.2","REQ-372.3","REQ-372.4","REQ-372.5","REQ-372.6","REQ-372.7","REQ-372.8","REQ-372.9","REQ-372.10","REQ-372.11","REQ-372.12"], + "active_milestone": "v1.31", + "milestone_branch": "milestone/v1.31-leadership-deck-polish", + "phase_branch": "acdl/phase/00-pre-execution", + "tag_line": "v1.30.x", + "phase_name": "pre-execution", + "milestone_type": "nfr", + "reqs_covered": [], "reqs_partial": [], "previous_milestone": { "milestone": "v1.30", @@ -24,14 +24,5 @@ "releases_created": true, "release_ids": [811,812,813,814,818] }, - "ship": { - "tag": "v1.29.5", - "release_id": 818, - "release_url": "https://git.cloudinit.dev/continuous-intelligence/acdl/releases/tag/v1.29.5", - "merged_to_main": true, - "merge_commit": "13ee34b", - "branches_deleted": ["phase/04-final-review-ship","milestone/v1.30-leadership-deck"], - "local_only": false - }, - "notes": "v1.30 MILESTONE COMPLETE (polished). Tag v1.29.5 (milestone release), Gitea release id=818. Merged to main 13ee34b. All milestone branches deleted. REQ-372.1..12 all complete (polished). CAP-042 + D-241..D-246 recorded. 5 Gitea releases: 811 (P0), 812 (P1), 813 (P2 first-draft final), 814 (P3 polish), 818 (P4 polished final = milestone release). 7 S&P-themed mermaid diagrams. Slide 7 'What works now' block. Cover slide. Checkpoint cleared — next run starts a new milestone." + "notes": "v1.31 P0 complete (specify+clarify+research+plan). D-247 locked: refinement-only, theme-preserving invariants. Plan = single vertical slice P1: rewrite visible prose + improve layout in nova-leadership-deck-marp.md, re-render PPTX, smoke test must pass." } \ No newline at end of file diff --git a/.ciagent/PROJECT.md b/.ciagent/PROJECT.md index 167d651..466bd87 100644 --- a/.ciagent/PROJECT.md +++ b/.ciagent/PROJECT.md @@ -1044,4 +1044,98 @@ Infrastructure & Operations leadership in August 2026." Asks for architecture endorsement and runway to next milestone by November 2026. Velocity framing with **60% goal as internal directional target, not sourced claim**. Closes with "Use the runway to land the -architecture endorsement." \ No newline at end of file +architecture endorsement." + +## v1.31 — Leadership Deck Polish II (active milestone) + +> **NFR/refinement milestone — polish pass on the v1.30 leadership +> deck.** A single refinement phase that enriches the visible on-slide +> prose, improves the slide layout, and re-renders the PPTX — without +> altering the S&P visual theme, the 7-slide structure, the speaker-note +> word-count bands, the vision `[1]` grounding, or the diagram PNGs. +> The v1.30 deck shipped with sparse visible wording (slides 2–6 +> averaged 43–67 visible words, leaning on diagrams); v1.31 makes each +> slide stand on its own as a readable artifact while a presenter +> speaks, so the deck reads cleanly both live and as a leave-behind. +> +> This is a **refinement-only** milestone (no new features, no new +> slides, no theme change, no schema change). Tags run on the +> **v1.30.x** line (previous minor): `v1.30.0` (P0) → `v1.30.1` (P1 +> execution = milestone release). Milestone branch: +> `milestone/v1.31-leadership-deck-polish`. Authoritative resume +> state: `.ciagent/CHECKPOINT.json`. +> +> **Source spec:** REQ-373 v1.0 (locked 2026-08-20). Full requirement +> text in `.ciagent/REQUIREMENTS.md` §v1.31. + +### v1.31 ID allocations (no collisions with shipped history) + +- **Decisions:** `D-247` (1 decision, authored in CLARIFY). + - **D-247** — Polish is **refinement-only and theme-preserving**. + The S&P theme tokens (`#D6002A`, `#1B1B1B`, `#FFFFFF`, `#F0F0F0`), + the 7-slide count, the per-slide speaker-note word-count bands + (1/2/4/6: 150–300; 3/5: 250–400; 7: 200–300), the vision `[1]` + citations on slides 3/5/7, the 7 mermaid diagram PNGs, and the + footer string are all **invariants** of this milestone — they must + not change. Polish is confined to: (a) denser, better-structured + visible body prose on each slide, (b) layout improvement within + the existing `render_pptx.py` block vocabulary (lead/quote/plain/ + bullet/ordered/image/table/benefit), and (c) re-rendering the + PPTX. No new slides, no new diagrams, no theme tokens, no new + speaker-note bands. The citizen-developer deck + (`nova-autonomous-cloud-delivery-marp.md`) remains untouched + (D-241 still holds). +- **Capabilities:** none new (CAP-042 is refined in place; no new CAP + allocated). Next free CAP remains CAP-043. + +### v1.31 Scope (CLARIFY-grounded, full autonomy) + +Refinement of `docs/presentations/nova-leadership-deck-marp.md`: + +- Enrich the **visible on-slide prose** on every slide so the deck + reads as a standalone artifact (current slides 2–6 average 43–67 + visible words; target a denser, well-structured body that does not + crowd the diagram or overflow the slide). +- Improve **slide layout** using the existing renderer's block + vocabulary — re-balance the order of lead/quote/plain/benefit + blocks so each slide has a clear title, a framing line, the body, + the diagram, and a closing italic benefit line where present. +- Preserve all invariants (D-247): theme tokens, slide count = 7, + speaker-note bands, `[1]` citations on 3/5/7, the 7 diagram PNGs, + the footer string. +- Re-render `docs/presentations/nova-leadership-deck.pptx` via + `scripts/render_pptx.py`; the smoke test + `scripts/check_leadership_deck.sh` must still exit 0. + +### v1.31 Hard constraints (invariants — D-247) + +- Slide count stays exactly 7. +- S&P theme tokens are the only colors. +- Speaker-note word counts stay in band per REQ-372.4 bands. +- `[1]` citations remain present in slides 3, 5, 7 speaker notes. +- The 7 diagram PNGs (`assets/png/leadership-slide-N.png`) are reused + unchanged; `.mmd` sources are not modified. +- Footer string `Nova Platform - Infrastructure & Operations` unchanged. +- `scripts/render_pptx.py` is not modified (no new renderer features + needed — polish uses the existing block vocabulary). +- The citizen-developer deck is not touched. + +### v1.31 Requirements + +Full text in `.ciagent/REQUIREMENTS.md` §v1.31. Summary: + +- **REQ-373.1** — Visible prose density: every slide's on-slide body + (excluding speaker notes + images) is enriched to a richer, well- + structured wording that reads as a standalone artifact. +- **REQ-373.2** — Layout improvement: each slide uses the renderer's + block vocabulary to balance title → frame → body → diagram → benefit. +- **REQ-373.3** — Invariants preserved (D-247): theme, 7 slides, + note bands, `[1]` citations, diagram PNGs, footer. +- **REQ-373.4** — PPTX re-rendered; smoke test exits 0. + +### v1.31 phase status (live — tag `v1.30.1` = the milestone release) + +| Phase | Status | Tag | +|-------|--------|-----| +| P0 pre-execution | in flight | v1.30.0 | +| P1 polish | pending | v1.30.1 (milestone release) | \ No newline at end of file diff --git a/.ciagent/REQUIREMENTS.md b/.ciagent/REQUIREMENTS.md index e3a755e..b4eacb9 100644 --- a/.ciagent/REQUIREMENTS.md +++ b/.ciagent/REQUIREMENTS.md @@ -1036,4 +1036,85 @@ principles, anti-goals, and integration-boundary claims to | REQ-372.9 | P1/P3 | complete (v1.29.5, polished) | | REQ-372.10 | P1/P3 | complete (v1.29.5, polished) | | REQ-372.11 | P1/P3 | complete (v1.29.5, polished) | -| REQ-372.12 | P1/P3 | complete (v1.29.5, polished) | \ No newline at end of file +| REQ-372.12 | P1/P3 | complete (v1.29.5, polished) | + +## v1.31 — Leadership Deck Polish II (active milestone) + +> **Refinement-only NFR milestone — polish pass on the v1.30 leadership +> deck.** Enriches visible on-slide prose + improves layout, then +> re-renders the PPTX. No new features, no new slides, no theme change, +> no diagram change (D-247). Tags run on the **v1.30.x** line (previous +> minor): `v1.30.0` (P0) → `v1.30.1` (P1 = milestone release). The +> v1.30 requirements (REQ-372.1..12) remain complete and are NOT +> re-opened; v1.31 adds REQ-373.1..4 as a refinement layer over the +> same artifact. + +### Decisions (locked in CLARIFY, full autonomy — load-bearing for v1.31) + +- **D-247 (refinement-only, theme-preserving):** The polish is + confined to visible prose density + layout. The following are + **invariants** and must not change: the S&P theme tokens + (`#D6002A`, `#1B1B1B`, `#FFFFFF`, `#F0F0F0`); the 7-slide count; the + per-slide speaker-note word-count bands (1/2/4/6: 150–300; 3/5: + 250–400; 7: 200–300, per REQ-372.4); the `[1]` citations on slides + 3/5/7 (per REQ-372.12); the 7 mermaid diagram PNGs and their `.mmd` + sources; the footer string `Nova Platform - Infrastructure & + Operations`. No new slides, no new diagrams, no renderer changes. + The citizen-developer deck is untouched (D-241 still holds). + +### Requirements + +#### REQ-373.1 — Visible prose density enriched per slide + +**Priority:** High · **Journey:** J1 + +**Given** the v1.30 deck shipped with sparse visible wording (slides +2–6 averaged 43–67 visible words, leaning on diagrams), **when** the +polished source markdown is inspected, **then** every slide's on-slide +body (excluding speaker-note HTML comments and image references) +carries richer, well-structured wording that lets the slide read as a +standalone artifact — a title, a framing line, a body, and (where +present) a closing italic benefit — without crowding the diagram or +overflowing the 16:9 slide. Verified by visual review against the +Slide Content Map and by the smoke test still passing. + +#### REQ-373.2 — Layout improved within the renderer block vocabulary + +**Priority:** High · **Journey:** J1 + +**Given** the existing `scripts/render_pptx.py` block vocabulary +(lead/quote/plain/bullet/ordered/image/table/benefit) is not modified, +**when** the polished PPTX is rendered, **then** each slide balances +its blocks so the reading order is clear (title → frame → body → +diagram → benefit) and the diagram remains the visual anchor. No new +renderer features are added. + +#### REQ-373.3 — v1.30 invariants preserved (D-247) + +**Priority:** High · **Journey:** J1 + +**Given** the D-247 invariants, **when** the polished source + PPTX +are validated, **then**: slide count = 7; the only hex colors are the +four S&P tokens; per-slide speaker-note word counts remain in band per +REQ-372.4; `[1]` citations remain in slides 3, 5, 7 speaker notes; the +7 diagram PNGs are reused unchanged; the footer string is unchanged. +The smoke test enforces (a)–(f) and must exit 0. + +#### REQ-373.4 — PPTX re-rendered; smoke test exits 0 + +**Priority:** High · **Journey:** J1 + +**Given** the polished source markdown, **when** +`scripts/render_pptx.py docs/presentations/nova-leadership-deck-marp.md +--output docs/presentations/nova-leadership-deck.pptx` is invoked, +**then** the PPTX is written with 7 slides and python-pptx raises no +exceptions, **and** `bash scripts/check_leadership_deck.sh` exits 0. + +### v1.31 Traceability (live — see CHECKPOINT.json for authoritative state) + +| REQ | Phase | Status | +|-----|-------|--------| +| REQ-373.1 | P1 | pending | +| REQ-373.2 | P1 | pending | +| REQ-373.3 | P1 | pending | +| REQ-373.4 | P1 | pending | \ No newline at end of file diff --git a/.ciagent/ROADMAP.md b/.ciagent/ROADMAP.md index 26b2c7b..2f922fb 100644 --- a/.ciagent/ROADMAP.md +++ b/.ciagent/ROADMAP.md @@ -171,6 +171,17 @@ `v1.29.4` (P3 polish) → `v1.29.5` (P4 polished final = milestone release). +- **v1.31 (active):** Leadership Deck Polish II — refinement-only NFR + milestone. Enriches the v1.30 deck's visible on-slide prose and + improves slide layout, then re-renders the PPTX. Preserves all + v1.30 invariants (D-247): S&P theme tokens, 7-slide count, speaker- + note word-count bands, `[1]` citations on slides 3/5/7, the 7 + mermaid diagram PNGs, and the footer string. No new slides, no new + diagrams, no renderer changes; the citizen-developer deck is + untouched. 4 requirements (REQ-373.1..4), 1 decision (D-247). Tags + run on the v1.30.x line: `v1.30.0` (P0) → `v1.30.1` (P1 = milestone + release). + > **Full v1.0–v1.24 phase detail, wave ordering, success criteria, and > decision cross-references:** `.ciagent/archive/ROADMAP-v1.0-v1.24.md`. diff --git a/.ciagent/config.json b/.ciagent/config.json index dc42b1f..2162ac4 100644 --- a/.ciagent/config.json +++ b/.ciagent/config.json @@ -2,21 +2,28 @@ "projects": [ { "slug": "acdl", - "name": "Nova — The New Dawn of DevSecOps", + "name": "Nova \u2014 The New Dawn of DevSecOps", "default": true }, { "slug": "nova-blockchain-exchange", - "name": "Nova Pilot Consumer — Blockchain Stock Exchange", + "name": "Nova Pilot Consumer \u2014 Blockchain Stock Exchange", "default": false } ], "active_project": "acdl", - "active_projects": ["acdl", "nova-blockchain-exchange"], - "active_milestone": "v1.30", + "active_projects": [ + "acdl", + "nova-blockchain-exchange" + ], + "active_milestone": "v1.31", "autonomy": { "level": "full", - "escalation_hooks": ["deploy", "delete_data", "merge_to_main"], + "escalation_hooks": [ + "deploy", + "delete_data", + "merge_to_main" + ], "clarify_budget": 10, "decision_confidence_threshold": 0.6, "max_revision_iterations": 3, @@ -42,35 +49,72 @@ "escalate_high_severity": true, "bash_allowlist": { "allowed_commands": [ - "git", "ls", "cat", "head", "tail", "wc", - "echo", "mkdir", "cp", "mv", "rm", "touch", - "pwd", "which", "env", "printenv", - "python3", "pytest", "pip", - "terraform", "checkov", - "curl", "wget", - "docker", "docker-compose" + "git", + "ls", + "cat", + "head", + "tail", + "wc", + "echo", + "mkdir", + "cp", + "mv", + "rm", + "touch", + "pwd", + "which", + "env", + "printenv", + "python3", + "pytest", + "pip", + "terraform", + "checkov", + "curl", + "wget", + "docker", + "docker-compose" ], "max_output_bytes": 1048576, "timeout_ms": 30000, "blocked_env_vars": [ - "HOME", "PATH", "USER", "SHELL", - "AWS_*", "*_TOKEN", "*_KEY", "*_SECRET", - "*_PASSWORD", "*_CREDENTIAL", - "GITHUB_TOKEN", "GITHUB_API_KEY", - "OPENAI_API_KEY", "ANTHROPIC_API_KEY", + "HOME", + "PATH", + "USER", + "SHELL", + "AWS_*", + "*_TOKEN", + "*_KEY", + "*_SECRET", + "*_PASSWORD", + "*_CREDENTIAL", + "GITHUB_TOKEN", + "GITHUB_API_KEY", + "OPENAI_API_KEY", + "ANTHROPIC_API_KEY", "OLLAMA_CLOUD_API_KEY" ] } }, "git": { "branching_strategy": "flat", - "_branching_strategy_note": "Nova uses flat workflow (committed directly to main per established convention since v1.0; renamed ACDL→Nova in v1.15). The 'phase' strategy is advisory; CIAgent uses milestone/phase branches for v1.14 but the project convention is flat.", + "_branching_strategy_note": "Nova uses flat workflow (committed directly to main per established convention since v1.0; renamed ACDL\u2192Nova in v1.15). The 'phase' strategy is advisory; CIAgent uses milestone/phase branches for v1.14 but the project convention is flat.", "auto_commit": true, "auto_push": true }, "secrets": { - "sources": [".env", ".env.secrets", ".env.*"], - "disallow": ["shell_env", "netrc", "keychain", "rc_files", "global_config"], + "sources": [ + ".env", + ".env.secrets", + ".env.*" + ], + "disallow": [ + "shell_env", + "netrc", + "keychain", + "rc_files", + "global_config" + ], "scopes": { "forge": "NOVA_FORGE_TOKEN", "gitea": "NOVA_FORGE_TOKEN", @@ -112,10 +156,18 @@ "backend": { "provider": "auto", "agent_backends": { - "opencode": { "enabled": true }, - "codex": { "enabled": true }, - "claude-code": { "enabled": true }, - "hermes": { "enabled": true } + "opencode": { + "enabled": true + }, + "codex": { + "enabled": true + }, + "claude-code": { + "enabled": true + }, + "hermes": { + "enabled": true + } }, "llm_backends": { "openai": { @@ -148,7 +200,13 @@ }, "ideation": { "enabled": true, - "categories": ["security", "quality", "architecture", "coverage", "improvement"], + "categories": [ + "security", + "quality", + "architecture", + "coverage", + "improvement" + ], "confidence_threshold": 0.6, "max_ideas": 20, "external_signals": { @@ -162,7 +220,11 @@ }, "chaos": { "enabled": true, - "scenarios": ["backend_unavailable", "requirement_change", "test_coverage_drop"] + "scenarios": [ + "backend_unavailable", + "requirement_change", + "test_coverage_drop" + ] } }, "sessions": { @@ -178,30 +240,77 @@ "name": "lead-developer", "domain": "coordination", "frameworks": [], - "constraints": ["pragmatic", "battle-tested defaults"], + "constraints": [ + "pragmatic", + "battle-tested defaults" + ], "territory": [] }, { "name": "data-engineer", "domain": "data", - "frameworks": ["drizzle", "postgresql"], - "constraints": ["schema-first", "type-safe ORM", "migration-driven"], - "territory": ["**/migrations/**", "**/schema/**", "**/models/**", "**/db/**", "prisma/schema.prisma", "drizzle/**", "**/*.sql"] + "frameworks": [ + "drizzle", + "postgresql" + ], + "constraints": [ + "schema-first", + "type-safe ORM", + "migration-driven" + ], + "territory": [ + "**/migrations/**", + "**/schema/**", + "**/models/**", + "**/db/**", + "prisma/schema.prisma", + "drizzle/**", + "**/*.sql" + ] }, { "name": "backend-engineer", "domain": "backend", - "frameworks": ["fastify", "hono"], - "constraints": ["api-first", "strict-typing", "dependency-injection"], - "territory": ["**/api/**", "**/routes/**", "**/services/**", "**/middleware/**", "**/controllers/**", "**/auth/**"] + "frameworks": [ + "fastify", + "hono" + ], + "constraints": [ + "api-first", + "strict-typing", + "dependency-injection" + ], + "territory": [ + "**/api/**", + "**/routes/**", + "**/services/**", + "**/middleware/**", + "**/controllers/**", + "**/auth/**" + ] }, { "name": "frontend-engineer", "domain": "frontend", "active": false, - "frameworks": ["react", "next.js"], - "constraints": ["component-first", "server-components", "minimal-client-js"], - "territory": ["**/components/**", "**/pages/**", "**/hooks/**", "**/styles/**", "**/*.tsx", "**/*.css", "**/*.vue"], + "frameworks": [ + "react", + "next.js" + ], + "constraints": [ + "component-first", + "server-components", + "minimal-client-js" + ], + "territory": [ + "**/components/**", + "**/pages/**", + "**/hooks/**", + "**/styles/**", + "**/*.tsx", + "**/*.css", + "**/*.vue" + ], "reason": "ACDL has no frontend (no package.json); decks are markdown (lead-developer territory). Deactivated per PERSONAS.md:80." } ] @@ -220,4 +329,4 @@ "engine": "kyverno-json", "policy_root": "adapters/kyverno-json/policies" } -} +} \ No newline at end of file