From 0f6d10a2b673fbd3f523e574336659cd36de23d7 Mon Sep 17 00:00:00 2001 From: Jon Chery Date: Wed, 29 Jul 2026 13:48:06 +0000 Subject: [PATCH] =?UTF-8?q?docs(milestone):=20complete=20v1.12=20=E2=80=94?= =?UTF-8?q?=20Presentation=20Refinement=20(tag=20v1.12.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci--- project: acdl phase: 0 milestone: v1.12 status: complete requirements: covered: [REQ-129, REQ-130, REQ-134, REQ-131, REQ-132, REQ-133] partial: [] --- /ci--- Milestone v1.12 complete. All 6 requirements satisfied: - REQ-129: adapter dedup defect fixed (CAP-013 Verified). - REQ-130: 2 regression-probe bugs fixed (CAP-017/018). - REQ-134: lifecycle tests plan-only default + ACDL_LIFECYCLE_MODE flag. - REQ-131: decks match CAPABILITY_INVENTORY.md (22/22 Verified, zero stale claims except the honest 'v1.10 status is closed' disclosure). - REQ-132: decks reflect v1.11 architecture + roadmap (v1.10 no longer NEXT); version refs bumped to @v1.12. - REQ-133: A6 (real cost figures + pre-mortem) + A7 (stateless adapter + lifecycle pipeline); HTML re-rendered; PPTX exported for the release. Verification: 522 tests pass; 22/22 capabilities Verified (D-091); run_platform.sh --check-only green; run_ci.sh green; ci-doc-verifier grep clean; multi-persona review clean (P1 remediated). ROADMAP.md v1.12 section added; v1.11 marked complete; config.json status -> complete, ship_tag v1.12.0. Version refs @v1.11 -> @v1.12 (decks re-rendered). PPTX in /tmp/v1.12-release/ for the Gitea upload. --- .ciagent/REQUIREMENTS.md | 12 +-- .ciagent/ROADMAP.md | 76 ++++++++++++++++++- .ciagent/config.json | 6 +- .../the-developer-experience-marp.md | 12 +-- ...the-developer-experience-talking-points.md | 2 +- .../the-developer-experience.html | 12 +-- .../presentations/the-developer-experience.md | 12 +-- 7 files changed, 103 insertions(+), 29 deletions(-) diff --git a/.ciagent/REQUIREMENTS.md b/.ciagent/REQUIREMENTS.md index f4e5d9a..107b181 100644 --- a/.ciagent/REQUIREMENTS.md +++ b/.ciagent/REQUIREMENTS.md @@ -596,12 +596,12 @@ two probe fixes required to make the deck claims true. | Requirement | Phase | Status | |-------------|-------|--------| -| REQ-129 | P67 | planned | -| REQ-130 | P67 | planned | -| REQ-134 | P67b | planned | -| REQ-131 | P68, P70 | planned | -| REQ-132 | P68 | planned | -| REQ-133 | P69, P70 | planned | +| REQ-129 | P67 | complete | +| REQ-130 | P67 | complete | +| REQ-134 | P67b | complete | +| REQ-131 | P68, P70 | complete | +| REQ-132 | P68 | complete | +| REQ-133 | P69, P70 | complete | ### Out of Scope (v1.12) - docs/ site, README.md, consumer-guide, module READMEs (decks only). diff --git a/.ciagent/ROADMAP.md b/.ciagent/ROADMAP.md index 519c1bf..30034fa 100644 --- a/.ciagent/ROADMAP.md +++ b/.ciagent/ROADMAP.md @@ -22,7 +22,8 @@ - **v1.10 (complete, tag `v1.10.0`):** pipeline regression fix + capability re-verification + verified-reality rewrite. The v1.9.1–v1.9.8 deck work is **superseded-by-reverification**: the decks presented advertised capability as current without disclosing that the platform had decayed (7 adapter defects prevented `terraform init/validate/plan` against live AWS). v1.10 re-verified every advertised capability, fixed all 7 defects in-sweep (D-090: no cap), and rewrote PROJECT/ROADMAP/decks to match verified reality. Decks unfrozen only after Phase 55 lands. See the v1.10 section below for the 4-phase breakdown. - **v1.10.1 (complete, tag `v1.10.1`):** post-v1.10 NFR patch — adversarial grill review (12 challenges, 10 binding decisions, 2 escalations: G-005 risks, G-008 budget), 4-layer verify gate (PASS), multi-persona code review (1 P1 auto-fixed: mis-citation PROJECT.md:6 → PROJECT.md:487). ACDL reclassified as OSS reference implementation (G-003). Docs-only; 518 tests pass; regression gate 16/16 Verified. Gitea release id 236. - **v1.10.2 (complete, tag `v1.10.2`):** contract surface redesign + rename + .yml repo-wide + deck polish. Breaking contract schema change: new top-level fields `id`/`name`/`infrastructure`; dropped `uses:`/`module:`/`inputs:`. All 44 `.yaml` → `.yml`. Code review: 3 P0 auto-fixed, 2 P1+ flagged. 494 tests pass. Gitea release id 237. -- **v1.11 (active, tag `v1.11.0`):** RESTART — stateless adapter + pipeline-driven module lifecycle testing. Closes G-005 (CAP-017..022 deploy-unverified) and G-008 (no cost docs) via a corrected architecture, not the failed v1.11 first attempt (which produced 4 drifted VPCs, ran terraform apply from Python, and had no module lifecycle tests). The restart branches off `v1.10.2` and rebuilds v1.11 on three corrections: (1) the terraform adapter becomes a stateless assembler — each L1 module ships a real `terraform/` module dir (variables/locals/main/outputs) owning its resource shape, nested blocks, and defaults; the adapter deletes `TYPE_MAP`/`INPUT_MAP`/`OUTPUT_MAP` and all 39 type-specific branches, becoming a ~80-line assembler that emits `module "x" { source = ... }` blocks; (2) lifecycle is owned by terraform via the shell orchestrator (`run_platform.sh --apply`/`--destroy`), never by Python — `verify_deploy_microservice.py` is deleted; (3) testing is pipeline-driven — a `modules-lifecycle` pipeline (Gitea + GitHub, byte-identical) matrix-runs each L1 module's `examples/{simple,complex}.yml` contracts through apply→modify→destroy against live AWS; no per-module Python. A single platform VPC (`terraform/platform`) is shared by all stacks via `data` source — no per-contract VPC. State keys are deterministic and env-aware (`spike/{id}/{env}/terraform.tfstate`), stable across lifecycle changes. 13 phases (P56a–P65). See the v1.11 section below for the phase breakdown. +- **v1.11 (complete, tag `v1.11.0`):** RESTART — stateless adapter + pipeline-driven module lifecycle testing. Closes G-005 (CAP-017..022 deploy-unverified) and G-008 (no cost docs) via a corrected architecture, not the failed v1.11 first attempt (which produced 4 drifted VPCs, ran terraform apply from Python, and had no module lifecycle tests). The restart branches off `v1.10.2` and rebuilds v1.11 on three corrections: (1) the terraform adapter becomes a stateless assembler — each L1 module ships a real `terraform/` module dir (variables/locals/main/outputs) owning its resource shape, nested blocks, and defaults; the adapter deletes `TYPE_MAP`/`INPUT_MAP`/`OUTPUT_MAP` and all 39 type-specific branches, becoming a ~80-line assembler that emits `module "x" { source = ... }` blocks; (2) lifecycle is owned by terraform via the shell orchestrator (`run_platform.sh --apply`/`--destroy`), never by Python — `verify_deploy_microservice.py` is deleted; (3) testing is pipeline-driven — a `modules-lifecycle` pipeline (Gitea + GitHub, byte-identical) matrix-runs each L1 module's `examples/{simple,complex}.yml` contracts through apply→modify→destroy against live AWS; no per-module Python. A single platform VPC (`terraform/platform`) is shared by all stacks via `data` source — no per-contract VPC. State keys are deterministic and env-aware (`spike/{id}/{env}/terraform.tfstate`), stable across lifecycle changes. 13 phases (P56a–P65). See the v1.11 section below for the phase breakdown. +- **v1.12 (complete, tag `v1.12.0`):** Presentation Refinement — the leadership decks synced to the v1.11-verified reality (22/22 Verified, stateless adapter, lifecycle pipeline, cost figures, pre-mortem). Includes the CAP-013 adapter dedup fix + 2 probe fixes (required to make the deck claims true) + the ACDL_LIFECYCLE_MODE CI flag (lifecycle tests default to plan-only, full on override). 6 phases (P66–P70). See the v1.12 section below. - **v1.0 demo URL:** https://git.cloudinit.dev/continuous-intelligence/acdl-evidence/raw/branch/main/index.html --- @@ -886,3 +887,76 @@ Wave 4 (P63 → P64 → P65) closes G-005/G-008 + teardown + deck rewrite. After Phase P65: COMPLETE gate — review → ship `v1.11.0` (next minor; feature milestone) → audit. **DONE.** + +## v1.12 (complete — Presentation Refinement, tag `v1.12.0`) + +The v1.12 milestone refines the leadership presentation decks to reflect +the verified reality after v1.11. The v1.11 P65 deck-rewrite task did not +fully land on the deck artifacts: the rendered HTML still claimed 6 cloud +capabilities were "deploy-unverified (IAM drift)", the road-to-north-star +diagram still showed v1.10 as "NEXT", and the v1.11 architecture stories +(stateless adapter, pipeline-driven lifecycle testing) were absent. The +v1.10 decay lesson (PRE_MORTEM.md FM-3) requires decks to match verified +reality exactly, not outrun it. + +**Scope:** leadership decks only (`docs/presentations/`) across all four +layers (source markdown, Marp deck, rendered HTML, talking points) + +diagrams + README. Plus one real adapter fix + two probe fixes required to +make the deck claims true, and a CI lifecycle-mode flag (REQ-134) that +defaults the lifecycle tests to plan-only. + +**Why the code fixes.** The v1.12 regression gate run (Phase 66) found +CAP-013 (a real adapter dedup defect — multi-resource L1s produced invalid +Terraform) + CAP-017/018 (two regression-probe bugs). The inventory's +"22/22 Verified" claim was overstated until CAP-013 was fixed. The pre- +mortem mitigation (verified-only claims) made the fixes mandatory. + +**Why the lifecycle flag.** The lifecycle pipeline defaulted to full +apply→modify→destroy, which requires AWS credentials + cost on every PR. +REQ-134 adds the `ACDL_LIFECYCLE_MODE` CI variable (workflow_dispatch +input `lifecycle_mode`, default `plan`) so the pipeline runs plan-only on +every PR (fast, no AWS mutation, no cost) and full only on override. + +### Phase breakdown (6 phases) + +- **P66 — init + research.** Drift audit (9 items) comparing + `docs/presentations/*` against v1.11-verified reality. Regression gate + (D-091) re-run surfaced 3 Broken capabilities; root-cause analysis + classified CAP-013 (real adapter defect), CAP-017/018 (probe bugs). + REQ-129..133 added. +- **P67 — fix adapter dedup + 2 probe bugs (REQ-129/130).** The adapter's + module-call dedup logic rewritten: multi-resource L1s (ecs-service, alb) + now emit ONE module block named by the composition child id, with + expanded sub-ids rewritten via id_remap (stack outputs + cross-module + ref: inputs). terraform validate succeeds for the microservice; adapter + 192 lines (< 200 gate). CAP-017 probe: locals.tf conditional on local.* + usage. CAP-018 probe: LocalLambdaStub constructed with the required + outbox arg. Regression gate: 22/22 Verified. +- **P67b — lifecycle tests plan-only default + ACDL_LIFECYCLE_MODE flag + (REQ-134).** The four lifecycle scripts dispatch to --plan-only (plan + mode, default) or --apply/--destroy (full mode). Both workflows + (byte-identical) expose lifecycle_mode as a workflow_dispatch input; + CI VPC jobs skipped in plan mode. 24 new tests. +- **P68 — sync decks source .md (REQ-131/132).** Re-verification headers + → 22/22 Verified. De-duplicated story-beat lines. Version refs + @v1.10 → @v1.11. road-to-north-star.mmd re-rendered. New A6 (real + COST.md figures + pre-mortem) + A7 (stateless adapter + lifecycle + pipeline + plan-only default) in both decks. +- **P69 — Marp + talking points + HTML render (REQ-133).** Re-synthesized + both Marp decks (10 main + 7 appendix = 17 slides). Re-distilled both + talking-points files (added the missing A6/A7 sections). Re-rendered + both HTML (committed). Exported both PPTX (held for the v1.12.0 + release). +- **P70 — verify + review + complete.** Multi-persona code review: no P0; + 2 P1 testing gaps remediated (6 CAP-013 regression tests added — + terraform validate + dedup unit assertions). Audit clean. 522 tests + pass. Ship v1.12.0. + +**Outcome:** the decks now honestly claim 22/22 Verified (backed by the +regression gate), reflect the v1.11 architecture (stateless adapter + +lifecycle pipeline), carry the real cost figures + pre-mortem, and the +lifecycle pipeline defaults to plan-only. The v1.10 "deploy-unverified +(IAM drift)" framing is disclosed as closed, not hidden. + +Ship tag at milestone COMPLETE: `v1.12.0` (v1.11.0 → v1.12.0; feature +milestone — includes the adapter fix + lifecycle flag). **DONE.** diff --git a/.ciagent/config.json b/.ciagent/config.json index a3df770..bc2cc88 100644 --- a/.ciagent/config.json +++ b/.ciagent/config.json @@ -5,10 +5,10 @@ "slug": "acdl", "name": "Agentic Cloud Delivery Platform", "milestone": "v1.12", - "status": "active", - "restart": false, + "status": "complete", "milestone_branch": "milestone/v1.12-presentation", - "milestone_base": "v1.11.0" + "milestone_base": "v1.11.0", + "ship_tag": "v1.12.0" } ], "active_project": "acdl", diff --git a/docs/presentations/the-developer-experience-marp.md b/docs/presentations/the-developer-experience-marp.md index 36660b4..2165e6b 100644 --- a/docs/presentations/the-developer-experience-marp.md +++ b/docs/presentations/the-developer-experience-marp.md @@ -109,7 +109,7 @@ Developers see **what the platform is doing**, in real time. Testing -- **Floating MAJOR + MINOR tags** (e.g. `@v1.11`) — a consumer automatically receives patch updates within the line +- **Floating MAJOR + MINOR tags** (e.g. `@v1.12`) — a consumer automatically receives patch updates within the line - **Semantic versioning with a clear contract:** interface → MAJOR, behavior → MINOR, lifecycle → PATCH - **A consumer can pin to an exact version** for maximum stability, or float on MAJOR only (`@v1`) to absorb new features on their own cadence - **Unversioned references (`@main`, bare) are discouraged** — the versioned tag is the only immutability lever @@ -153,11 +153,11 @@ The contract is environment-agnostic. The platform raises the bar automatically. ```yaml jobs: dev: - uses: acdl/.github/workflows/deploy.yml@v1.11 + uses: acdl/.github/workflows/deploy.yml@v1.12 with: { contract: .acdl/contract.yml, environment: dev } qa: needs: dev - uses: acdl/.github/workflows/deploy.yml@v1.11 + uses: acdl/.github/workflows/deploy.yml@v1.12 with: { contract: .acdl/contract.yml, environment: qa } ``` @@ -169,11 +169,11 @@ jobs: ```yaml jobs: dev: - uses: acdl/.github/workflows/deploy.yml@v1.11 + uses: acdl/.github/workflows/deploy.yml@v1.12 with: { contract: .acdl/contract-dev.yaml } qa: needs: dev - uses: acdl/.github/workflows/deploy.yml@v1.11 + uses: acdl/.github/workflows/deploy.yml@v1.12 with: { contract: .acdl/contract-qa.yaml } ``` @@ -197,7 +197,7 @@ td { font-size: 14px; } Tearing down a stack is **as deliberate as deploying one.** Testing ```yaml -uses: acdl/.github/workflows/deploy.yml@v1.11 +uses: acdl/.github/workflows/deploy.yml@v1.12 with: contract: .acdl/contract.yml mode: decommission diff --git a/docs/presentations/the-developer-experience-talking-points.md b/docs/presentations/the-developer-experience-talking-points.md index 3bb5d2e..8af5b7b 100644 --- a/docs/presentations/the-developer-experience-talking-points.md +++ b/docs/presentations/the-developer-experience-talking-points.md @@ -62,7 +62,7 @@ **Talking points:** - This is the "no surprise upgrades" story — consumers aren't forced to chase the platform, and the platform isn't forced to support N forks of every workflow -- Floating MAJOR + MINOR tags (e.g. `@v1.11`) — a consumer automatically receives patch updates within the line. Pin to exact version for stability, or float on MAJOR only for new features +- Floating MAJOR + MINOR tags (e.g. `@v1.12`) — a consumer automatically receives patch updates within the line. Pin to exact version for stability, or float on MAJOR only for new features - Semantic versioning with a clear contract: interface → MAJOR, behavior → MINOR, lifecycle → PATCH - Unversioned references (`@main`, bare) are discouraged — the versioned tag is the only immutability lever a consumer has - The automated release job computes the next semver on merge to main, creates the tag, and updates the floating tags — no manual release process diff --git a/docs/presentations/the-developer-experience.html b/docs/presentations/the-developer-experience.html index c4ad8d1..313377f 100644 --- a/docs/presentations/the-developer-experience.html +++ b/docs/presentations/the-developer-experience.html @@ -307,7 +307,7 @@ em.story { color: #6B7280; font-size: 16px; font-style: italic; }

You control when you absorb platform improvements — no surprise upgrades.

Consumers control when they absorb platform improvements. Testing