Commit Graph

5 Commits

Author SHA1 Message Date
Jon Chery eb7634da28 fix(P5): doc drift — Nova rebrand stale refs in docs/decks/roadmap/arch
v1.15-Nova rebrand doc verification (phase/05-final-review-ship) found
stale ACDL references where the code/terraform already uses Nova names.

Critical drift fixed (doc said old name; code uses new):
- README.md: `.acdl/contract.yml` -> `.nova/contract.yml`;
  `acdl-spike-runner` -> `nova-spike-runner`; ABAC tag keys
  `acdl:owner|contract` -> `nova:owner|contract`.
- docs/environments/index.md: `acdl-contract-ingestor` -> `nova-contract-ingestor`;
  `aws:PrincipalTag/acdl:owner` -> `nova:owner`; `acdl-contracts` -> `nova-contracts`.
- docs/consumer-guide.md: `acdl-change-requests` -> `nova-change-requests`;
  state bucket example `acdl-qa-state` -> `nova-qa-state`.
- docs/presentations/* (4 decks + 2 HTML + talking-points): `acdl:owner|contract|
  environment|cost-center` -> `nova:*`; `ACDL_LIFECYCLE_MODE` -> `NOVA_LIFECYCLE_MODE`.
- pipelines/modules-lifecycle.yml comments: `ACDL_LIFECYCLE_MODE` ->
  `NOVA_LIFECYCLE_MODE` (workflows already use NOVA_; the contract comments were stale).
- docs/NOVA_MIGRATION.md: status banner -> COMPLETE (P5 cutoff passed).
- .ciagent/ARCHITECTURE.md: header `ACDL` -> `Nova`; NOVA_LIFECYCLE_MODE
  rename noted in the live lifecycle-mode section (v1.15 addendum already correct).
- .ciagent/ROADMAP.md: v1.15 phase statuses P1-P4 pending -> complete
  (v1.15.1..v1.15.4); P5 -> in progress (phase/05-final-review-ship).

Verification:
- grep for `acdl:*` tag keys / `.acdl/contract` / `acdl-contract-ingestor` /
  `acdl-contracts` / `ACDL_LIFECYCLE_MODE` in README/docs/pipelines -> 0 hits
  (excluding explicitly-unchanged repo path `acdl/.github/...`,
  `continuous-intelligence/acdl`, and historical narrative).
- core/output_publisher.py uses `/nova`; schemas/tagging-standard.json uses
  `nova:*`; terraform uses `nova-*` (0 `acdl-` in *.tf) — docs now match.
- git tag v1.15.0..v1.15.4 exist.
- pytest tests/test_lifecycle_mode_flag.py tests/test_pipeline_contract.py
  -> 111 passed.

---ci---
project: acdl
2026-07-30 02:11:12 +00:00
Jon Chery 63f3a2b66c feat(P1): Nova rebrand — docs/decks/prose/schema-$id/release-titles (REQ-155/156/157)
Rebrand ACDL/Agentic Cloud Delivery Platform → Nova across README, docs/,
decks (markdown + mermaid .mmd + HTML), pyproject.toml name/description,
schema $id URLs (acdl.cloudinit.dev→nova.cloudinit.dev), release.yml
title/workflow-name. Nova tagline added to README header + both deck title
slides + docs/vision.md (alongside existing North Star, D-106). S&P theme
untouched (D-107). New docs/NOVA_MIGRATION.md consumer guide. Data values
(env vars, resource names, tag keys, SSM/consumer paths) left for P2-P4.

---ci---
project: acdl
phase: 1
milestone: v1.15
status: execute
---/ci---
2026-07-30 00:56:19 +00:00
Jon Chery 41c3377b96 feat(P67b): lifecycle tests default to plan-only; ACDL_LIFECYCLE_MODE flag overrides to full (REQ-134)
---
ci---
project: acdl
phase: 67b
milestone: v1.12
status: execute
---
/ci---

The modules-lifecycle pipeline now defaults to plan-only (fast, no AWS
mutation, no credentials, no cost) so it runs on every PR. A CI variable
ACDL_LIFECYCLE_MODE (workflow_dispatch input 'lifecycle_mode', default
'plan') overrides to 'full' for the real apply->modify->destroy against
live AWS.

Scripts: run_lifecycle_test.sh / run_lifecycle_destroy.sh /
run_l2_lifecycle_test.sh / run_l2_lifecycle_destroy.sh read the flag and
dispatch to --plan-only (plan mode) or --apply/--destroy (full mode).
Destroy is a no-op exit 0 in plan mode (nothing was applied). VPC-output
injection is gated on full mode.

Workflows: both .github + .gitea (byte-identical) expose lifecycle_mode
as a workflow_dispatch input (choice: plan/full), pass it via env:
ACDL_LIFECYCLE_MODE to every lifecycle step, skip ci-vpc-apply +
ci-vpc-destroy + Read-CI-VPC-outputs in plan mode, and run the lifecycle
+ l2-lifecycle jobs with if: always() so they execute (plan-only) even
when ci-vpc-apply is skipped.

Contract + schema: pipelines/modules-lifecycle.yml gains default_mode:
plan; the schema accepts default_mode (enum plan|full) and a richer
workflow_dispatch inputs shape.

Tests: 14 new tests in test_lifecycle_mode_flag.py (script dispatch) +
10 new tests in TestModulesLifecyclePipeline (workflow flag wiring,
byte-identity, plan-mode skips). Updated test_platform_vpc_destroy to
reflect the plan-mode skip. 516 tests pass; smoke-tested plan mode on
the s3 module (--plan-only green, no AWS apply).
2026-07-29 13:16:03 +00:00
Jon Chery 361fe600a9 feat(P61): L2 lifecycle pipeline — extend matrix + workflows + tests
Extend the modules-lifecycle pipeline with L2 composition modules
(static-assets, microservice) per REQ-128:

- pipelines/modules-lifecycle.yml: added l2-lifecycle-apply/modify/destroy
  stages + l2_modules matrix entry
- .gitea/workflows/modules-lifecycle.yml + .github/workflows/modules-lifecycle.yml:
  added l2-lifecycle job (byte-identical), matrix over [static-assets,
  microservice], needs ci-vpc-apply, has apply/modify/destroy steps.
  ci-vpc-destroy now needs both [lifecycle, l2-lifecycle].
- schemas/modules-lifecycle-pipeline.schema.json: added l2_modules to matrix
- scripts/run_l2_lifecycle_test.sh + run_l2_lifecycle_destroy.sh: L2 wrappers
  that set ACDL_REMOTE_STATE_KEY=spike/ci-vpc/terraform.tfstate so the
  microservice composition's terraform_remote_state reads from the CI VPC
- adapters/terraform/adapter.py: parameterized remote_state key via
  ACDL_REMOTE_STATE_KEY env var (default: platform/terraform.tfstate)
- modules/l2/static-assets/examples/complex.yml: fixed bucket_name to match
  simple (my-static-site) so terraform modifies in-place (adds CDN + WAF)
- modules/l2/microservice/examples/complex.yml: fixed bucket_name to match
  simple (my-microservice-demo), added desired_count:2 (modify variant)
- tests/test_pipeline_contract.py: 7 new L2 tests (l2 job exists, matrix
  lists both modules, apply/modify/destroy steps, needs ci-vpc-apply,
  ci-vpc-destroy needs both, contract matrix lists l2_modules)
- pipelines/README.md: updated stages for L2

Regression: 485 passed, 5 deselected. Gitea + GitHub workflows byte-identical.

---ci---
project: acdl
phase: P61
milestone: v1.11
status: execute
---/ci---
2026-07-28 20:17:27 +00:00
Jon Chery 7ba72bf656 feat(P59): L1 module lifecycle pipeline — author workflows + schema + tests
EXECUTE stage. Authors the modules-lifecycle pipeline that matrix-tests
every L1 module's examples/{simple,complex}.yml contracts through
apply→modify→destroy against live AWS. No per-module Python.

New files:
- pipelines/modules-lifecycle.yml: declarative contract (5 stages:
  platform-vpc-apply, lifecycle-apply, lifecycle-modify, lifecycle-destroy,
  platform-vpc-destroy). Matrix over 12 L1 modules.
- .gitea/workflows/modules-lifecycle.yml + .github/workflows/modules-lifecycle.yml:
  byte-identical workflows. 3 jobs: platform-vpc-apply (prerequisite),
  lifecycle (matrix of 12 modules × apply/modify/destroy), platform-vpc-destroy
  (always runs, cleanup). Triggers: pull_request to main + workflow_dispatch.
- schemas/modules-lifecycle-pipeline.schema.json: schema for the new pipeline
  shape (extends pipeline.schema.json with workflow_dispatch + matrix).

Tests (tests/test_pipeline_contract.py):
- TestModulesLifecyclePipeline: 12 tests (schema valid, contract validates,
  byte-identical, workflow name, 3 jobs, triggers, matrix lists all 12 L1
  modules, apply/modify/destroy steps present, platform-vpc-destroy always runs).

pipelines/README.md: added modules-lifecycle to the pipeline table.

Regression: 479 passed, 0 skipped, 5 deselected (slow).

---ci---
project: acdl
phase: P59
milestone: v1.11
status: execute
---/ci---
2026-07-28 16:07:57 +00:00