Jon Chery
4b6c3a12d8
docs(ship): P1 complete — v1.24.1 released (id 641)
...
---ci---
project: acdl
phase: 1
milestone: v1.25
status: complete
ship: v1.24.1 (gitea release id 641)
---/ci---
2026-08-12 18:22:04 +00:00
Jon Chery
56dab4fdfb
merge(phase/01): v1.25 P1 engine-core complete
...
Nova Slides Render / render (push) Failing after 23s
P1 ships: PolicyEngine Protocol + KyvernoJsonEngine adapter + config +
install + tests. 24 new tests pass (2 skip-without-kj), 132 existing
tests unchanged. Tag v1.24.1.
---ci---
project: acdl
phase: 1
milestone: v1.25
status: complete
phase_role: execution
---/ci---
v1.24.1
2026-08-12 18:21:06 +00:00
Jon Chery
ed387a4f54
verify(P1): 4-layer verify PASS — engine core, 24 new tests, 0 regressions
...
---ci---
project: acdl
phase: 1
milestone: v1.25
status: verify
phase_role: execution
requirements:
covered: [REQ-291, REQ-292, REQ-293, REQ-294, REQ-308, REQ-309]
partial: []
---/ci---
2026-08-12 18:21:03 +00:00
Jon Chery
ac18c98385
feat(P1): kyverno-json engine core + PolicyEngine protocol (REQ-291..294, 308, 309)
...
core/policy_engine.py: PolicyEngine Protocol (PEP 544, runtime_checkable)
+ PolicyEngineRegistry (selects from config.json.policy.engine) + NullEngine
fallback (NULL_ENGINE_INACTIVE when policy key absent).
adapters/kyverno-json/: KyvernoJsonEngine — shells to , translates
native output → list[dict] PCR records (engine: "kyverno", ruleId KJ_ prefix,
severity via nova.cloudinit.dev/severity annotation, default info).
is_configured() guards on → KJ_ENGINE_NOT_CONFIGURED SKIPPED PCR
(distinct from NullEngine). Defensive parsing (malformed → error PCR).
config.json: new object {engine: kyverno-json, policy_root}.
scripts/install-kyverno-json.sh: go install kj@latest (D-115).
CI (.gitea + .github): install Go + kj for policy-engine tests (best-effort;
tests skip when kj absent).
tests: 24 pass, 2 skip (kj not installed). 132 existing tests unchanged.
NullEngine satisfies PolicyEngine Protocol (G-Q8a — proves swap boundary).
---ci---
project: acdl
phase: 1
milestone: v1.25
status: execute
phase_role: execution
requirements:
covered: [REQ-291, REQ-292, REQ-293, REQ-294, REQ-308, REQ-309]
partial: []
---/ci---
2026-08-12 18:19:16 +00:00
Jon Chery
ba816f69ae
docs(ship): P0 complete — v1.25 pre-execution (specify, clarify, research, ideate, plan, grill)
...
Tag v1.24.0 (gitea release id 640). Phase 00 branch deleted.
Next: P1 engine-core → v1.24.1.
---ci---
project: acdl
phase: 0
milestone: v1.25
status: complete
ship: v1.24.0 (gitea release id 640)
---/ci---
2026-08-12 18:14:11 +00:00
Jon Chery
2e519743b5
merge(phase/00): v1.25 pre-execution complete — specify, clarify, research, ideate, plan, grill
...
Nova Slides Render / render (push) Failing after 27s
Phase 0 complete for v1.25 kyverno-json Unified Policy Engine.
19 requirements (REQ-291..309), 4 execution phases + P5 final.
Tags on v1.24.x line: v1.24.0 (this patch) → v1.24.5 (milestone release).
---ci---
project: acdl
phase: 0
milestone: v1.25
status: complete
ship: v1.24.0
---/ci---
v1.24.0
2026-08-12 18:12:16 +00:00
Jon Chery
36c8ae9a80
docs(P00): grill — PROCEED (0.86), 0 escalations, 2 revisions
...
10 challenges red-teamed across feasibility, scope, budget, swap boundary.
8 PROCEED (deterministic-not-AI, swap boundary is the moat, MTTR <1s,
policy count manageable, tagging cross-check worth it, PCR list is valid
payload, phase count matches cadence, severity annotation K8s-standard).
2 REVISE (NullEngine vs kj-not-configured distinct ruleIds; protocol
conformance test via NullEngine). All revisions are PLAN/REQ clarifications
— no requirement changes.
---ci---
project: acdl
phase: 0
milestone: v1.25
status: grill
---/ci---
2026-08-12 18:12:05 +00:00
Jon Chery
ec53302014
docs(P00): create phase plans — v1.25 (4 phases, 4 waves)
...
PLAN.md: 4 execution phases (P1 engine-core, P2 contract+stack-IR policies,
P3 plan-JSON+meta+pipeline wiring, P4 regression-gate+docs) + P5 final
review/ship. Wave ordering with parallelization (3-2-2-3 concurrent personas).
Each phase is a vertical slice (end-to-end: policies + Python wiring + tests +
docs). Tags v1.24.0..v1.24.5. 19 requirements (REQ-291..309) mapped to phases
and personas.
---ci---
project: acdl
phase: 0
milestone: v1.25
status: plan
---/ci---
2026-08-12 18:11:00 +00:00
Jon Chery
7e6ed25ea9
docs(P00): ideate — 5 accepted (into REQ-295..305), 3 deferred, 0 rejected
...
Tier 1 mechanical: I1 regression-gate-as-policy (REQ-304/305), I2 contract-shape
(REQ-295), I3 stack-IR rules (REQ-297).
Tier 2 backend-enriched: I4 plan-JSON RULE_MAP mirrors (REQ-300), I5 meta-policies
(REQ-303). Deferred: I6 env-transition (stateful, not policy-shaped), I7 drift
(D-096 blocker), I8 cross-project (single-project).
Quality improvement headline: I1 — capability regression becomes a declarative
policy artifact, not imperative Python.
---ci---
project: acdl
phase: 0
milestone: v1.25
status: ideate
---/ci---
2026-08-12 18:10:02 +00:00
Jon Chery
f753353ad4
docs(P00): research findings — v1.25 kyverno-json engine surface, 4 policy targets, PolicyEngine swap boundary
...
RESEARCH.md: kyverno-json CLI (kj scan), ValidatingPolicy structure,
assertion trees + ~ modifier + JMESPath, output shape, severity-via-
annotation convention, 4 policy targets (contract/stack-IR/plan-JSON/
meta), PolicyEngine protocol + OPA-equivalent swap surface, latency
<1s (parallel with checkov), deterministic-not-AI tenet, ECS catalog
prior art, 5 logged assumptions (A1..A5).
PERSONAS.md: 4 active personas (lead-developer, backend-engineer,
new policy-engineer, data-engineer); frontend-engineer deactivated.
policy-engineer owns kyverno-json policies + engine translation +
STANDARDS.md policy-authoring section.
ARCHITECTURE.md §12.7: Policy Engine Registry — protocol, registry,
NullEngine fallback, engine enum reuse (D-116), defense-in-depth
critical-override (D-119), graceful degradation (D-120).
---ci---
project: acdl
phase: 0
milestone: v1.25
status: research
---/ci---
2026-08-12 18:09:12 +00:00
Jon Chery
f020178c15
docs(P00): clarify — 6 ambiguities auto-resolved (full autonomy, D-115..D-120)
...
A1 install path → go install (D-115)
A2 engine enum → reuse kyverno, distinguish by ruleId KJ_ prefix (D-116)
A3 checkov/wiz signatures unchanged; meta-policies consume merged PCR list (D-117)
A4 NOVA_TAG_NAMING kept + kyverno-json mirror + tagging-rules-agree meta-policy (D-118)
A5 critical-override kept as defense-in-depth behind declarative meta-policy (D-119)
A6 kyverno-json is deterministic not AI; is_configured guard ensures platform functions without it (D-120)
---ci---
project: acdl
phase: 0
milestone: v1.25
status: clarify
---/ci---
2026-08-12 18:06:05 +00:00
Jon Chery
5a75075616
docs(init): validate specification — v1.25 kyverno-json unified policy engine
...
Establishes the v1.25 milestone: kyverno-json becomes Nova's primary
compliance/policy tool, implemented behind a swappable PolicyEngine
adapter (so OPA can replace it one day). Unified-orchestrator model —
checkov/wiz remain as raw-finding adapters feeding into kyverno-json
meta-policies. Policies cover all 4 Nova artifacts: contract JSON,
resolved Stack IR, terraform plan JSON, and the merged PCR list itself.
Quality improvement from IDEATE: capability regression checks become
declarative kyverno-json policies. New policy-engineer persona.
19 requirements (REQ-291..309), 6 phases (P0 + P1..P4 + P5 final).
Tags on v1.24.x line: v1.24.0 (P0) → v1.24.5 (P5 = milestone release).
---ci---
project: acdl
phase: 0
milestone: v1.25
status: specify
---/ci---
2026-08-12 18:05:04 +00:00
Jon Chery
42c579f7b8
docs(ship): v1.24 milestone checkpoint complete — v1.23.4 released (id 639)
...
acdl-ci / Lint (push) Successful in 10s
acdl-ci / Test (push) Failing after 22s
acdl-ci / Platform check-only (offline) (push) Successful in 22s
---ci---
project: acdl
phase: 4
milestone: v1.24
status: complete
ship: v1.23.4 (gitea release id 639)
---/ci---
2026-08-12 14:36:38 +00:00
Jon Chery
ab7171236a
docs(milestone): complete v1.24 — Consumer Guide Accuracy & Env-Promotion Lifecycle Enforcement
...
acdl-ci / Lint (push) Successful in 10s
acdl-ci / Test (push) Failing after 24s
acdl-ci / Platform check-only (offline) (push) Successful in 23s
Nova Slides Render / render (push) Failing after 23s
---ci---
project: acdl
phase: 4
milestone: v1.24
status: complete
requirements:
covered: [REQ-276,REQ-277,REQ-278,REQ-279,REQ-280,REQ-281,REQ-282,REQ-283,REQ-284,REQ-285,REQ-286,REQ-287,REQ-288,REQ-289,REQ-290]
partial: []
---/ci---
v1.23.4
2026-08-12 14:36:15 +00:00
Jon Chery
fe635c17d5
test(P3): env-transition tests — REQ-288,289
...
acdl-ci / Lint (push) Successful in 9s
acdl-ci / Test (push) Failing after 26s
acdl-ci / Platform check-only (offline) (push) Successful in 26s
Nova Slides Render / render (push) Failing after 25s
- tests/test_env_transition.py: detect_prior_env (5 tests) + record_applied_env (3 tests) + CLI (2 tests) via moto DynamoDB (REQ-288)
- tests/test_run_platform_env_transition.py: Step 0b block assertions (10 tests) + record-applied-env assertions (3 tests) + consumer-repo assertions (2 tests) (REQ-289)
25 new tests pass. 117 total tests pass (no regressions).
---ci---
project: acdl
phase: 3
milestone: v1.24
status: execute
requirements: [REQ-288,REQ-289]
---/ci---
v1.23.3
2026-08-12 14:33:10 +00:00
Jon Chery
d069654367
feat(P2): env-transition detect-and-destroy — REQ-282..287
...
acdl-ci / Lint (push) Successful in 10s
acdl-ci / Test (push) Failing after 24s
acdl-ci / Platform check-only (offline) (push) Successful in 24s
Nova Slides Render / render (push) Failing after 24s
- core/env_transition.py: detect_prior_env() + record_applied_env() via DynamoDB nova-contracts table (REQ-282,283)
- scripts/run_platform.sh Step 0b: detect env change, destroy prior env (deletion_protection=false, terraform init -reconfigure + destroy), emit ENV_DESTROYED evidence event, fail closed on destroy failure (REQ-284)
- scripts/run_platform.sh: record applied env after successful apply (REQ-285)
- .github/workflows/deploy.yml: pass NOVA_CONSUMER_REPO to run_platform.sh (REQ-286)
- adapters/terraform/adapter.py: doc comment on env-scoped state key (REQ-287)
No orphan path: if destroy fails, pipeline exits non-zero (no apply runs).
---ci---
project: acdl
phase: 2
milestone: v1.24
status: execute
requirements: [REQ-282,REQ-283,REQ-284,REQ-285,REQ-286,REQ-287]
---/ci---
v1.23.2
2026-08-12 14:30:24 +00:00
Jon Chery
25427250ad
docs(P1): consumer guide accuracy fixes — REQ-276..281,290
...
acdl-ci / Lint (push) Successful in 9s
acdl-ci / Test (push) Failing after 22s
acdl-ci / Platform check-only (offline) (push) Successful in 24s
Nova Slides Render / render (push) Failing after 24s
- Step 3 contract fields table: stale uses/module → real id/name/environment/infrastructure (REQ-276)
- Step 4 caller: add environment: dev to match Step 2 (REQ-277)
- Step 5 stage 8: (dev only) → (autonomous in dev; higher envs apply after HITL) (REQ-278)
- Step 8: rewrite with Shape A destroy-then-rebuild + Shape B cross-ref (REQ-279)
- Per-env section: add Shape B lead sentence (REQ-280)
- Reference table: @v1.19 wording + .yaml→.yml extension fix (REQ-281)
- Tests: rename no-field-editing → both-promotion-shapes + new destroy-on-env-change test (REQ-290)
---ci---
project: acdl
phase: 1
milestone: v1.24
status: execute
requirements: [REQ-276,REQ-277,REQ-278,REQ-279,REQ-280,REQ-281,REQ-290]
---/ci---
v1.23.1
2026-08-12 14:26:22 +00:00
Jon Chery
eca1181716
docs(ship): P0 complete — v1.24 pre-execution (specify, clarify, research, plan, grill)
...
acdl-ci / Lint (push) Successful in 9s
acdl-ci / Test (push) Failing after 24s
acdl-ci / Platform check-only (offline) (push) Successful in 27s
---ci---
project: acdl
phase: 0
milestone: v1.24
status: complete
ship: v1.23.0 (gitea release id 635)
---/ci---
2026-08-12 14:24:19 +00:00
Jon Chery
0920550ae5
docs(P00): grill — PROCEED (0.82), 0 escalations, 2 revisions (already captured)
...
acdl-ci / Lint (push) Successful in 9s
acdl-ci / Test (push) Failing after 22s
acdl-ci / Platform check-only (offline) (push) Successful in 24s
Nova Slides Render / render (push) Failing after 22s
---ci---
project: acdl
phase: 0
milestone: v1.24
status: grill
---/ci---
v1.23.0
2026-08-12 14:23:55 +00:00
Jon Chery
d8240588c9
docs(P00): create phase plans — v1.24 (4 phases, 4 waves)
...
---ci---
project: acdl
phase: 0
milestone: v1.24
status: plan
---/ci---
2026-08-12 14:23:24 +00:00
Jon Chery
5dc97673e5
docs(P00): research findings — v1.24 env-transition detect-and-destroy
...
---ci---
project: acdl
phase: 0
milestone: v1.24
status: research
---/ci---
2026-08-12 14:22:37 +00:00
Jon Chery
956cf91ce0
docs(P00): clarify — 6 ambiguities auto-resolved (full autonomy)
...
---ci---
project: acdl
phase: 0
milestone: v1.24
status: clarify
---/ci---
2026-08-12 14:21:32 +00:00
Jon Chery
a7a93d95d1
docs(init): validate specification — v1.24 consumer guide accuracy + env-promotion lifecycle
...
---ci---
project: acdl
phase: 0
milestone: v1.24
status: specify
---/ci---
2026-08-12 14:20:34 +00:00
Jon Chery
afca994511
docs(ship): v1.23 milestone checkpoint complete — v1.22.6 released (id 634)
acdl-ci / Lint (push) Successful in 8s
acdl-ci / Platform check-only (offline) (push) Successful in 24s
acdl-ci / Test (push) Failing after 24s
2026-08-12 00:37:59 +00:00
Jon Chery
e63c0cb36e
docs(milestone): complete v1.23 — Nova Deck Cleanup & Python PPTX
...
acdl-ci / Lint (push) Successful in 10s
acdl-ci / Test (push) Failing after 23s
acdl-ci / Platform check-only (offline) (push) Successful in 25s
Nova Slides Render / render (push) Failing after 34s
13 requirements complete (REQ-263..275):
- P1: consolidate-docs — single -marp.md source of truth, speaker notes
+ talking points as HTML comments, delete plain .md (REQ-263,264)
- P2: restore-clean-style — theme:default + inline S&P style, retire
nova-sp-theme.css from render (keep as reference), benefit .benefit
class (REQ-265,266,267)
- P3a: inline-images — scripts/inline_images.py, self-contained HTML
(REQ-268)
- P3b: python-pptx-generator — scripts/render_pptx.py structured
editable S&P-themed PPTX, pyproject [slides] dep, dual PPTX
(REQ-269,270)
- P4: trim-wordcount — ~20-30% trim on 8 verbose slides, remove
'penetrate' repo-wide (G-001) (REQ-271,272)
- P5: ci-tests-readme + review + audit + ship — workflows install
python-pptx, 43 tests pass, README rewritten (REQ-273,274,275)
Tags on v1.22.x line (v1.22.0 P0 -> v1.22.6 P5 final = milestone
release). Grill: PROCEED-WITH-REVISIONS (4 binding revisions G-001..G-004
applied: repo-wide penetrate purge, P3->P4 serialized, P3 split P3a+P3b,
P5+P6 merged). 43 slide/pptx tests pass. Merged to main.
---ci---
project: acdl
phase: 5
milestone: v1.23
status: complete
phase_role: final
requirements:
covered: [REQ-263,REQ-264,REQ-265,REQ-266,REQ-267,REQ-268,REQ-269,REQ-270,REQ-271,REQ-272,REQ-273,REQ-274,REQ-275]
partial: []
---/ci---
2026-08-12 00:36:46 +00:00
Jon Chery
3512261051
docs(milestone): merge v1.23 — Nova Deck Cleanup & Python PPTX to main
...
13 requirements (REQ-263..275) complete. Tags on v1.22.x line.
Final patch v1.22.6 = milestone release.
---ci---
project: acdl
phase: 5
milestone: v1.23
status: complete
phase_role: final
requirements:
covered: [REQ-263,REQ-264,REQ-265,REQ-266,REQ-267,REQ-268,REQ-269,REQ-270,REQ-271,REQ-272,REQ-273,REQ-274,REQ-275]
partial: []
---/ci---
2026-08-12 00:35:23 +00:00
Jon Chery
14c11027a8
test(ship): P5 complete — ci-tests-readme + review + audit + ship (REQ-273,274,275)
...
Nova Slides Render / render (push) Failing after 34s
---ci---
project: acdl
phase: 5
milestone: v1.23
status: complete
phase_role: final
---/ci---
2026-08-12 00:35:18 +00:00
Jon Chery
e07a210c70
test(P5): ci + tests + readme for single-doc dual-pptx pipeline (REQ-273,274,275)
...
CI workflows: install python-pptx, pin CLI versions, stage both PPTX +
inlined HTML. test_slides_pipeline.py: inverted theme assertion (now
default+inline), deleted source-md tests, added 8 new tests
(penetrate absence, image inlining, python-pptx, benefit class, single
source, speaker-notes comments, default theme, css retained). New
test_pptx_generator.py: slide count, title colors, slide titles, table
rendering, image embedding, benefit callout. README rewritten for 3-step
single-document + dual-PPTX + image-inlining pipeline.
---ci---
project: acdl
phase: 5
milestone: v1.23
status: execute
phase_role: execution
---/ci---
2026-08-12 00:34:23 +00:00
Jon Chery
9b8ab75b85
docs(ship): P4 complete — trim-wordcount + penetrate purge (REQ-271,272)
...
Nova Slides Render / render (push) Successful in 1m3s
---ci---
project: acdl
phase: 4
milestone: v1.23
status: complete
phase_role: execution
---/ci---
2026-08-12 00:27:57 +00:00
Jon Chery
9bc37301ba
docs(P4): trim word count + purge 'penetrate' repo-wide (REQ-271,272)
...
Targeted ~20-30% word-count trim on 8 verbose slides (1, 5, 7, 8, 13,
14, 20, appendix). Tables + short slides untouched. Spirit preserved.
Removed 'penetrate' (and derivatives) from docs/scope.md, docs/vision.md,
.ciagent/PROJECT.md, .ciagent/CLARIFY.md, .ciagent/NORTH_STAR.md, and
presentation files (G-001 binding revision). RESEARCH.md/PLAN.md/GRILL.md
exempt as decision-history. Slide 5 'penetrates' phrase removed with no
replacement (slide 4 Anti-Goals already excludes the PDLC).
---ci---
project: acdl
phase: 4
milestone: v1.23
status: execute
phase_role: execution
---/ci---
2026-08-12 00:26:37 +00:00
Jon Chery
5476f8eb24
feat(ship): P3b complete — python-pptx-generator (REQ-269,270)
...
Nova Slides Render / render (push) Successful in 1m2s
---ci---
project: acdl
phase: 3
milestone: v1.23
status: complete
phase_role: execution
---/ci---
2026-08-12 00:21:47 +00:00
Jon Chery
863f482f9c
feat(P3b): python-pptx generator — structured editable S&P-themed PPTX (REQ-269,270)
...
New scripts/render_pptx.py parses the consolidated -marp.md and
produces a structured, editable, S&P-themed PPTX via python-pptx.
16:9; title slide black bg + red top bar; content slides with red H2
titles, bullets, blockquotes, embedded PNGs, native tables, benefit
callouts. Added python-pptx>=0.6.23 to pyproject [slides] optional-dep.
render_slides.sh Step 4 produces it; attach_release_asset.py extended
for dual PPTX. Output: nova-autonomous-cloud-delivery-python.pptx.
---ci---
project: acdl
phase: 3
milestone: v1.23
status: execute
phase_role: execution
---/ci---
2026-08-12 00:21:17 +00:00
Jon Chery
66b13a6d0c
docs(ship): P3a complete — inline-images (REQ-268)
...
Nova Slides Render / render (push) Successful in 59s
---ci---
project: acdl
phase: 3
milestone: v1.23
status: complete
phase_role: execution
---/ci---
2026-08-12 00:17:23 +00:00
Jon Chery
485d105bcd
docs(P3a): inline images for self-contained HTML (REQ-268)
...
New scripts/inline_images.py (stdlib only: base64, re, mimetypes) —
base64-embeds all relative-path <img src='assets/...'> images into
the rendered HTML so it's redistributable without the assets/ folder.
MIME-sniffs by extension (.png->image/png, .svg->image/svg+xml, etc).
render_slides.sh Step 3 invokes it after the MARP HTML render, before
staging. Verified: 2 images inlined, 0 file-path refs remaining.
---ci---
project: acdl
phase: 3
milestone: v1.23
status: execute
phase_role: execution
---/ci---
2026-08-12 00:17:19 +00:00
Jon Chery
df426afd6a
docs(ship): P2 complete — restore-clean-style (REQ-265,266,267)
...
Nova Slides Render / render (push) Successful in 1m10s
---ci---
project: acdl
phase: 2
milestone: v1.23
status: complete
phase_role: execution
---/ci---
2026-08-12 00:14:23 +00:00
Jon Chery
9114227ef1
docs(P2): restore clean style — theme:default + inline style (REQ-265,266,267)
...
Reverted frontmatter theme: nova-sp -> theme: default + inline style:
block with S&P palette (#D6002A, #1B1B1B, Akkurat Pro). Retired
nova-sp-theme.css from render path (kept as reference with header
comment). render_slides.sh drops --theme arg. Converted all 21
**Benefit:** callouts to <div class='benefit'> (red top-rule + black
italic; white on title slides). Matches the old
the-developer-experience.html clean style.
---ci---
project: acdl
phase: 2
milestone: v1.23
status: execute
phase_role: execution
---/ci---
2026-08-12 00:14:07 +00:00
Jon Chery
c9ace0af6e
docs(ship): P1 complete — consolidate-docs (REQ-263,264)
...
Nova Slides Render / render (push) Successful in 59s
---ci---
project: acdl
phase: 1
milestone: v1.23
status: complete
phase_role: execution
---/ci---
2026-08-12 00:11:18 +00:00
Jon Chery
a47c16245a
docs(P1): consolidate deck to single source of truth (REQ-263,264)
...
Fold speaker notes + transitions + talking points into
nova-autonomous-cloud-delivery-marp.md as Marp HTML comments
(<!-- Speaker notes: ... -->, <!-- Transition: ... -->,
<!-- Talking points: ... -->). The -marp.md is now the sole source of
truth. Deleted the plain nova-autonomous-cloud-delivery.md.
talking-points.md kept as standalone synced aid (header updated).
---ci---
project: acdl
phase: 1
milestone: v1.23
status: execute
phase_role: execution
---/ci---
2026-08-12 00:09:37 +00:00
Jon Chery
74e9d4d887
docs(ship): P0 checkpoint complete — v1.22.0 released (id 628)
2026-08-12 00:06:38 +00:00
Jon Chery
818e285fac
docs(ship): P0 complete — v1.23 pre-execution (specify, clarify, research, plan, grill)
...
---ci---
project: acdl
phase: 0
milestone: v1.23
status: complete
phase_role: pre_execution
---/ci---
2026-08-12 00:05:40 +00:00
Jon Chery
b8fbd995a9
docs(P00): grill — 4 revisions applied (PROCEED-WITH-REVISIONS, 0.78)
...
Nova Slides Render / render (push) Failing after 57s
10 axes reviewed. 6 PASS, 4 REVISE. Overall: PROCEED-WITH-REVISIONS.
Empirically cleared (not assumed): image format (plain <img src>, conf
0.95) + Marp <div> passthrough (rendered test, conf 0.95). Versioning
clean (no v1.22.* tags, conf 1.0). Test inversion risk fully enumerated
(conf 0.9).
Revisions (binding):
G-001 (0.85): purge 'penetrate' repo-wide (docs/ + .ciagent/), not just
docs/presentations/. RESEARCH.md/PLAN.md/GRILL.md exempt as decision-
history. P4 verify becomes grep -ri penetrat docs/ .ciagent/PROJECT.md
.ciagent/CLARIFY.md -> nothing.
G-002 (0.85): serialize P3->P4 (not parallel). P4's parser depends on
P3's stable render_slides.sh; P4's trimmed deck is what P3b's parser
consumes. C8 parallelization overruled.
G-003 (0.80): split P3 into P3a (inline_images.py + render_slides.sh +
pyproject — low-risk) + P3b (render_pptx.py + parser +
attach_release_asset.py — high-risk, isolated). Both serial in Wave 3.
G-004 (0.80): merge P5+P6. NFR docs milestone; dedicated review/ship
phase is ceremonial. P5 absorbs review/audit/ship. Net phases 7->6.
Revised phase/tag plan:
v1.22.0 P0 -> v1.22.1 P1 -> v1.22.2 P2 -> v1.22.3 P3a -> v1.22.4 P3b
-> v1.22.5 P4 -> v1.22.6 P5 (final = milestone release).
---ci---
project: acdl
phase: 0
milestone: v1.23
status: grill
---/ci---
v1.22.0
2026-08-12 00:05:34 +00:00
Jon Chery
ea44fdb9d6
docs(P00): grill v1.23 — PROCEED-WITH-REVISIONS (4 binding revisions)
...
Adversarial red-team review of the v1.23 Nova Deck Cleanup & Python PPTX
plan (7 phases, 5 waves). Overall verdict: PROCEED-WITH-REVISIONS (conf 0.78).
Empirically verified (P0 risks cleared):
- Image format: rendered HTML uses plain <img src="assets/png/...">, no
xlink:href → inline_images.py regex will match (Axis 4 PASS, conf 0.95)
- Marp <div> passthrough: minimal test deck through marp-cli@4.5.0 confirms
<div class="benefit"> passes through verbatim (Axis 6 PASS, conf 0.95)
- Versioning: no v1.22.* tags exist (Axis 10 PASS, conf 0.95)
- Test inversion list complete (Axis 3 PASS, conf 0.92)
4 binding revisions:
- G-001: Purge "penetrate" from entire repo (docs/ + .ciagent/), not just
docs/presentations/ — term appears in docs/scope.md:16, docs/vision.md:18,
and all .ciagent/*.md
- G-002: Serialize P3→P4 — "zero file overlap" is false for verification
(P3 parser depends on deck P4 trims; P4 verify render depends on P3's
render_slides.sh being stable)
- G-003: Split P3 into P3a (inline_images + render_slides.sh + pyproject —
low-risk) and P3b (render_pptx.py + parser — high-risk, 10+ markdown
constructs + python-pptx XML constraints)
- G-004: Merge P5+P6 — P6 is ceremonial overhead for an NFR docs milestone;
P5 absorbs review/audit/ship. Net phases: 7 (P1, P2, P3a, P3b, P4, P5+P6)
No escalations (all axes resolved at conf >= 0.78).
---ci---
status: grill
decisions:
- G-001: Purge "penetrate" from docs/ + .ciagent/ (conf 0.85)
- G-002: Serialize P3->P4 (conf 0.85)
- G-003: Split P3 into P3a + P3b (conf 0.80)
- G-004: Merge P5+P6 (conf 0.80)
escalations: []
2026-08-12 00:02:57 +00:00
Jon Chery
e14818875c
docs(P00): create phase plans — v1.23 (7 phases, 5 waves)
...
Vertical-slice plan with wave ordering:
- Wave 1 (P1): consolidate-docs (single -marp.md, delete plain .md,
speaker notes + talking points as HTML comments).
- Wave 2 (P2): restore-clean-style (theme:default + inline style,
retire nova-sp-theme.css from render, benefit callout .benefit class).
- Wave 3 (P3 + P4, parallel): inline-images + python-pptx-generator
(new scripts, zero deck-markdown overlap) || trim-wordcount + remove
'penetrate' (deck markdown, zero script overlap).
- Wave 4 (P5): ci-tests-readme (workflows, tests, README — depends on
all above).
- Wave 5 (P6): final review + audit + milestone ship.
Tags on v1.22.x line: v1.22.0 (P0) -> v1.22.1..v1.22.5 (P1-P5) ->
v1.22.6 (P6 final = milestone release).
---ci---
project: acdl
phase: 0
milestone: v1.23
status: plan
---/ci---
2026-08-11 23:56:39 +00:00
Jon Chery
f496dd9c24
docs(P00): research — v1.23 Nova Deck Cleanup & Python PPTX
...
10 findings grounding the v1.23 milestone plan:
- Marp default theme + inline style block (exact CSS from ref deck)
- HTML passthrough confirmed; python-pptx API mapped; stdlib image
inlining sufficient; 12 tests need updating; attach script +
slides.yml + README structure documented; persona roster (same as
v1.22); 5 pitfalls identified.
---ci---
phase: 0
milestone: v1.23
status: research
decisions:
- id: D-163
decision: Inline Marp style block is lead-developer territory (not frontend-engineer)
rationale: Marp frontmatter CSS is a static stylesheet, not a React/Next.js component system (D-148 precedent from v1.22)
confidence: 0.95
alternatives: [frontend-engineer owns CSS, custom slides-engineer persona]
- id: D-164
decision: No new personas for v1.23
rationale: Work splits cleanly into lead-developer (markdown+CSS+README+metadata) and backend-engineer (Python+bash+tests+CI); python-pptx is backend
confidence: 0.90
alternatives: [custom docs/deck persona, pptx-engineer persona]
---/ci---
2026-08-11 23:54:47 +00:00
Jon Chery
0d22b89a7b
docs(P00): clarify — 8 ambiguities auto-resolved (full autonomy)
...
8 ambiguities identified, all auto-resolved at confidence >= 0.6. No
human escalation (full autonomy). Decisions:
C1 (0.95): speaker notes + talking points embedded as Marp HTML comments
C2 (0.9): python-pptx in new pyproject optional-dep group 'slides'
C3 (0.9): benefit callouts as <div class='benefit'> (Marp HTML passthrough)
C4 (0.95): inline_images.py MIME-sniffs by extension (png/svg/jpg/gif)
C5 (0.9): render_slides.sh order: mermaid -> MARP -> inline -> python-pptx
C6 (0.95): 'penetrate' absence via grep -ri (text files only)
C7 (0.85): release attaches both PPTX (MARP primary, python secondary)
C8 (0.85): wave order P1 -> P2 -> (P3+P4 parallel) -> P5 -> P6
---ci---
project: acdl
phase: 0
milestone: v1.23
status: clarify
---/ci---
2026-08-11 23:50:42 +00:00
Jon Chery
75e9e479db
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---
2026-08-11 23:49:45 +00:00
Jon Chery
d199204367
docs(ship): Gitea releases created for v1.21.0..v1.21.6 + PPTX attached
...
acdl-ci / Lint (push) Successful in 8s
acdl-ci / Test (push) Failing after 22s
acdl-ci / Platform check-only (offline) (push) Successful in 19s
Nova Slides Render / render (push) Failing after 1m1s
All 7 Gitea releases created (ids 621-627) after fixing the token
variable name mismatch (config: ACDL_GITEA_TOKEN vs env:
NOVA_GITEA_TOKEN). Tags pushed to origin. PPTX attached to milestone
release v1.21.6 (asset id 98).
Release URLs: https://git.cloudinit.dev/continuous-intelligence/acdl/releases
---ci---
project: acdl
phase: 6
milestone: v1.22
status: complete
phase_role: final
---/ci---
v1.22.1
v1.22.2
v1.22.3
v1.22.4
v1.22.5
v1.22.6
2026-08-11 22:59:33 +00:00
Jon Chery
6a64b2b337
docs(milestone): merge v1.22 — Nova Deck Layout Fix to main
...
acdl-ci / Lint (push) Successful in 9s
acdl-ci / Test (push) Failing after 24s
acdl-ci / Platform check-only (offline) (push) Successful in 22s
Nova Slides Render / render (push) Failing after 57s
9 requirements (REQ-254..262) complete. Tags on v1.21.x line.
Final patch v1.21.6 = milestone release.
---ci---
project: acdl
phase: 6
milestone: v1.22
status: complete
phase_role: final
requirements:
covered: [REQ-254,REQ-255,REQ-256,REQ-257,REQ-258,REQ-259,REQ-260,REQ-261,REQ-262]
partial: []
---/ci---
v1.21.6
2026-08-11 20:11:51 +00:00
Jon Chery
9274b4b87f
docs(ship): P6 complete — final review + audit + milestone ship
...
---ci---
project: acdl
phase: 6
milestone: v1.22
status: complete
phase_role: final
---/ci---
2026-08-11 20:11:46 +00:00
Jon Chery
25ddc894c2
docs(milestone): complete v1.22 — Nova Deck Layout Fix
...
9 requirements complete (REQ-254..262):
- P1: theme-css — section padding + overflow + image rules + title
chrome + spacing tightening (REQ-254,255,256)
- P2: render-scripts — delete render_deck.sh, pin CLI versions, 2x
scale + transparent bg (REQ-257,258)
- P3: mermaid-relayout — telemetry TB + platform-pipeline 4-node TB,
re-rendered 2x transparent (REQ-259,260)
- P4: deck-content — split slides 3+8 (18->20 main), trim 8
overflowing slides, remove redundant header (REQ-261)
- P5: render-and-test — re-render HTML+PPTX, add 9 layout/aspect-
ratio/theme-structural tests (REQ-262)
- P6: final review + audit + ship (this commit)
Final review fixes: source .md + talking-points re-synced to 20-slide
structure; ![h:480 class:tall] directives applied; README stale
references updated; CSS trailing newline added.
Root cause: nova-sp-theme.css had zero section padding (declared
/* @theme nova-sp */ as a comment, not the @theme directive; did 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 overflowed. NOT a P5 regression — theme CSS byte-identical
P3->P5; P5 denser content made pre-existing flaws visible.
Tags on v1.21.x line (v1.21.0 P0 -> v1.21.6 P6 final = milestone
release). 32 slide tests pass (23 original + 9 new). 94 key-file
tests pass. Pipeline check exit 0.
---ci---
project: acdl
phase: 6
milestone: v1.22
status: complete
phase_role: final
requirements:
covered: [REQ-254,REQ-255,REQ-256,REQ-257,REQ-258,REQ-259,REQ-260,REQ-261,REQ-262]
partial: []
---/ci---
2026-08-11 20:11:43 +00:00