Jon Chery
ad522e6bf7
verify(P4): 4-layer verify PASS — regression-gate policies + docs, 0 regressions
...
---ci---
project: acdl
phase: 4
milestone: v1.25
status: verify
phase_role: execution
requirements:
covered: [REQ-304, REQ-305, REQ-306, REQ-307]
partial: []
---/ci---
2026-08-12 18:43:04 +00:00
Jon Chery
38b51f3e6d
feat(P4): regression-gate policies + docs (REQ-304..307)
...
regression/ policies (3): cap-013-adapter-dedup, cap-023-metrics-collector,
cap-024-deck-structure — declarative mirrors of core/regression_verify.py
over capability-inventory JSON. The imperative regression_verify.py is kept
(drives CI gate); the policies are the declarative mirror (IDEATE I1 quality
improvement).
tests: test_regression_policies.py + clean/drifted fixtures. Skip-without-kj.
docs: adapters/README.md (new kyverno-json row + PolicyEngine Protocol
section with how-to-add-OpaEngine), adapters/kyverno-json/README.md (engine,
install, policy directory layout, 4 categories, severity convention),
schemas/README.md (D-116 engine enum reuse note), modules/STANDARDS.md §10
Policy Authoring Standard, docs/METRICS.md (swappable engine narrative).
---ci---
project: acdl
phase: 4
milestone: v1.25
status: execute
phase_role: execution
requirements:
covered: [REQ-304, REQ-305, REQ-306, REQ-307]
partial: []
---/ci---
2026-08-12 18:42:55 +00:00
Jon Chery
89f62c85ab
docs(ship): P3 complete — v1.24.3 released (id 643)
...
---ci---
project: acdl
phase: 3
milestone: v1.25
status: complete
ship: v1.24.3 (gitea release id 643)
---/ci---
2026-08-12 18:31:02 +00:00
Jon Chery
96d4677fac
merge(phase/03): v1.25 P3 plan-JSON+meta+pipeline complete
...
Nova Slides Render / render (push) Failing after 22s
---ci---
project: acdl
phase: 3
milestone: v1.25
status: complete
phase_role: execution
---/ci---
v1.24.3
2026-08-12 18:30:45 +00:00
Jon Chery
863484e681
verify(P3): 4-layer verify PASS — plan-JSON + meta + pipeline, 0 regressions
...
---ci---
project: acdl
phase: 3
milestone: v1.25
status: verify
phase_role: execution
requirements:
covered: [REQ-300, REQ-301, REQ-302, REQ-303]
partial: []
---/ci---
2026-08-12 18:30:45 +00:00
Jon Chery
7f4b79593a
feat(P3): plan-JSON policies + meta-orchestration + pipeline wiring (REQ-300..303)
...
plan-json/ policies (3): forbid-plaintext-secrets (ports CKV_AWS_41/45/46),
forbid-iam-wildcard (ports CKV_AWS_1/40), require-kms-reference (ports
CKV_AWS_7/33) over terraform show -json output.
meta/ policies (2): block-on-any-critical (declarative source of truth for
critical-block; confidence_signal hard-override stays as defense-in-depth,
D-119) + tagging-rules-agree (cross-checks Checkov NOVA_TAG_NAMING vs kj
KJ_REQUIRE_TAGGING_STANDARD, D-118).
scripts/run_platform.sh Step 5b: parallel kyverno-json plan-JSON pass; merges
Checkov/Wiz + kj PCR lists into the confidence signal policy input; skips
gracefully when kj absent (D-120).
tests: test_plan_json_policies.py, test_meta_policies.py (skip-without-kj),
test_run_platform_plan_json_policies.py (script-substring assertion, no skip).
---ci---
project: acdl
phase: 3
milestone: v1.25
status: execute
phase_role: execution
requirements:
covered: [REQ-300, REQ-301, REQ-302, REQ-303]
partial: []
---/ci---
2026-08-12 18:29:34 +00:00
Jon Chery
35e3de401e
docs(ship): P2 complete — v1.24.2 released (id 642)
...
---ci---
project: acdl
phase: 2
milestone: v1.25
status: complete
ship: v1.24.2 (gitea release id 642)
---/ci---
2026-08-12 18:27:17 +00:00
Jon Chery
814d45b211
merge(phase/02): v1.25 P2 contract+stack-IR policies complete
...
Nova Slides Render / render (push) Failing after 22s
---ci---
project: acdl
phase: 2
milestone: v1.25
status: complete
phase_role: execution
---/ci---
v1.24.2
2026-08-12 18:26:40 +00:00
Jon Chery
0f0d9b9145
verify(P2): 4-layer verify PASS — contract+stack-IR policies, resolver wiring, 0 regressions
...
---ci---
project: acdl
phase: 2
milestone: v1.25
status: verify
phase_role: execution
requirements:
covered: [REQ-295, REQ-296, REQ-297, REQ-298, REQ-299]
partial: []
---/ci---
2026-08-12 18:26:36 +00:00
Jon Chery
e6ee79402b
feat(P2): contract + stack-IR kyverno-json policies + resolver wiring (REQ-295..299)
...
contract/ policies (4): require-id-pattern, require-env-in-enum,
require-infrastructure-min-1, forbid-unknown-fields — declarative
mirrors of contract.schema.json constraints.
stack-ir/ policies (3): require-tagging-standard (nova:owner/contract/
environment/cost-center tags — ports nova_tagging.py), forbid-public-ingress
(v1.0 demo rule, now declarative), require-encryption-by-default (v1.8
D-encryption-default — S3 + EBS encryption config).
core/contract_resolver.py: pre-resolve contract-policy evaluation (REQ-296)
+ post-resolve stack-IR-policy evaluation (REQ-298). Additive — the resolver's
return shape + exceptions unchanged; PCRs attach to stack_instance.policyResults.
Policy evaluation never breaks the resolver (confidence signal decides gate).
tests: test_stack_ir_policies.py + passing/failing fixtures. Skip-without-kj.
16 existing resolver tests unchanged.
---ci---
project: acdl
phase: 2
milestone: v1.25
status: execute
phase_role: execution
requirements:
covered: [REQ-295, REQ-296, REQ-297, REQ-298, REQ-299]
partial: []
---/ci---
2026-08-12 18:25:18 +00:00
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