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
9.4 KiB
Nova Migration Guide — What Consumers Must Know
STATUS: COMPLETE (milestone v1.15.4, 2026-07-30). The Nova rebrand is fully rolled out. The dual-read / parallel-write grace period has ended (P5 cutoff passed). All
ACDL_*env var fallbacks,.acdl/consumer-path fallbacks,/acdl/SSM-path fallbacks,acdl:*tag-key fallbacks, andacdl-*AWS resource names are removed. Consumers must use theNOVA_*/.nova///nova//nova:*/nova-*names exclusively. If you have not yet migrated, follow the steps below.
Nova is the new product brand for the platform formerly known as ACDL (Agentic Cloud Delivery Platform). This guide documents the breaking changes from the rebrand rollout (Phases P2–P4, cutoff P5) and tells you exactly what to do.
What is NOT changing
- The Gitea repository name (
continuous-intelligence/acdl) is not changing. Only the product brand is changing. Theuses:reference (acdl/.github/workflows/deploy.yml@vX.Y) and the GitHubacdl/acdlrepo path are unchanged for the duration of the rebrand; the workflowuses:reference will be migrated in a later, separately-announced step. - The platform behavior is unchanged. Same pipeline stages, same contract schema, same confidence model, same evidence stream, same modules. Only the brand, the on-disk path, the env var names, the SSM path, the AWS tag keys, and the AWS resource names are changing.
The 5 breaking changes
Five things that consumers may reference are being renamed. Each is scheduled into a phase, ships with a grace period, and has a cutoff.
1. Consumer contract path — Phase P2
- Old:
.acdl/contract.yml - New:
.nova/contract.yml - Phase: P2 (env vars + consumer path)
- Grace period: during P2–P4 the deploy workflow reads both paths
(
.nova/contract.ymlfirst, falling back to.acdl/contract.ymlif the new path is absent). Your existing contracts keep working until P5. - Cutoff: P5 removes the
.acdl/fallback. Move your contract file before P5. - What you must do: rename the directory in your consumer repo from
.acdl/to.nova/and update anycontract:workflow input that points at the old path. Nothing else changes in the contract content.
2. Environment variables — Phase P2
- Old:
ACDL_*(e.g.ACDL_LIFECYCLE_MODE,ACDL_AWS_ACCOUNT_ID,ACDL_BOOTSTRAP_AWS_ACCESS_KEY_ID, …) - New:
NOVA_*(e.g.NOVA_LIFECYCLE_MODE,NOVA_AWS_ACCOUNT_ID,NOVA_BOOTSTRAP_AWS_ACCESS_KEY_ID, …) - Phase: P2 (env vars + consumer path)
- Grace period — dual-read fallback: during P2–P4 the platform reads
NOVA_*first, then falls back toACDL_*if the Nova variable is unset. This means your CI secrets, workflow env blocks, and local.env.secretskeep working unchanged through P4. You do not need to rename everything in one shot — rename a variable and the dual-read picks it up; leave one old and it still resolves. - Cutoff: P5 removes the
ACDL_*fallback. After P5, onlyNOVA_*is read. - What you must do: rename your
ACDL_*CI secrets, workflowenv:blocks, and any local.env.secretsentries toNOVA_*. Because of the dual-read, you can do this incrementally across P2–P4 — but it must be complete before P5.
3. SSM parameter path — Phase P3 (DONE)
- Old:
/acdl/{env}/{contractId}/{output} - New:
/nova/{env}/{contractId}/{output} - Phase: P3 (SSM paths + tag keys) — shipped in P3
- Grace period — parallel-write: during P3–P4 the platform writes
every output to both the
/acdl/…and/nova/…SSM paths, and reads from/nova/…first (falling back to/acdl/…). Any hardcoded SSM path reads in your application code keep resolving through P4. The P3 migration script (scripts/migrate_ssm_paths.py) copies existing/acdl/…parameters to/nova/…, verifies the copy, and deletes the old ones. - Cutoff: P5 stops writing to
/acdl/…and removes the read fallback. After P5 only/nova/…exists. - What you must do: if your application code or runbooks read deploy
outputs from SSM by hardcoded path, update the path prefix from
/acdl/to/nova/. If you consume outputs only via the PR-comment / GitHub issue surface, you do nothing — the platform republishes under the new path automatically.
4. AWS tag keys — Phase P3 (DONE)
- Old:
acdl:owner,acdl:environment,acdl:contract,acdl:cost-center,acdl:ref - New:
nova:owner,nova:environment,nova:contract,nova:cost-center,nova:ref - Phase: P3 (SSM paths + tag keys) — shipped in P3
- Grace period — parallel-tag period: during P3–P4 the platform
tags every resource with both the
acdl:*andnova:*keys (same values). The ABAC session policy matches on either key set, so your existing scoped permissions keep working. The default cost-center value moves fromacdl-defaulttonova-default(both written during the parallel-tag period). Terraform now emitsnova:*keys; oldacdl:*tags on pre-P3 live resources are removed by the P4 runbook'sscripts/untag_acdl_keys.pystep after thenova:*tags are applied live. - Cutoff: P5 stops writing the
acdl:*keys and the ABAC policy matches only onnova:*. After P5, resources created before P5 still carry the oldacdl:*tags (tags are not retroactively rewritten) but new resources are taggednova:*only, and the policy no longer grants access viaacdl:*. - What you must do: if you have IAM policies, Cost Explorer filters,
or billing groupings that key off
acdl:*tag keys, add a parallelnova:*condition (or migrate tonova:*) before P5. The platform handles the dual-tagging; you only need to update your own tag-key references.
5. AWS resource names — Phase P4
- Old:
acdl-*(DynamoDB tablesacdl-contracts,acdl-change-requests; Lambdaacdl-contract-ingestor; SNSacdl-sod-halt; security groupacdl-ecs-sg; KMS aliasalias/acdl-platform; ECS services, ECR repos, IAM useracdl-spike-runner, state bucketacdl-tfstate-*, ALBacdl-alb,acdl-deploy-*) - New:
nova-*(the same resources, prefixednova-) - Phase: P4 (resource names) — maintenance window
- Grace period: P4 is a planned maintenance window. AWS resources
cannot be renamed in place, so P4 provisions the
nova-*resources, migrates data (DynamoDB tables, S3 state), repoints the platform, and tears down theacdl-*resources. The platform team schedules and announces the window; consumers do not provision or rename anything themselves. - Cutoff: the
acdl-*resources are decommissioned at the end of the P4 maintenance window. After P4, onlynova-*resources exist. - What you must do: nothing for the resource names themselves — the
platform owns the rename. If your application code or runbooks reference
a specific
acdl-*resource by name (e.g. a hardcoded DynamoDB table name or ECR URI), update it to thenova-*name during P4. The platform publishes the exact old → new name mapping with the P4 announcement.
Timeline at a glance
| Phase | What ships | Grace period | Cutoff |
|---|---|---|---|
| P1 (this phase) | Brand prose, docs, decks, schema $id, release titles |
n/a (prose only) | n/a |
| P2 | .nova/ contract path + NOVA_* env vars |
dual-read: .nova/→.acdl/, NOVA_*→ACDL_* |
P5 removes fallback |
| P3 | /nova/ SSM path + nova:* tag keys |
parallel-write (SSM) + parallel-tag (ABAC matches either) | P5 removes old path/tags |
| P4 | nova-* AWS resource names |
maintenance window (platform-owned migration) | end of P4 window |
| P5 | Fallback removal | — | ACDL_* env vars, .acdl/ path, /acdl/ SSM, acdl:* tags stop working |
What consumers must do (checklist)
- Before P5 — contract path: move
.acdl/contract.yml→.nova/contract.ymlin your consumer repo; update thecontract:workflow input. (Can be done any time in P2–P4.) - Before P5 — env vars: rename
ACDL_*CI secrets / workflowenv:blocks / local.env.secretstoNOVA_*. (Incremental during P2–P4; dual-read keeps you green.) - Before P5 — SSM reads: if you read deploy outputs from SSM by
hardcoded
/acdl/…path, update to/nova/…. (Skip if you consume outputs via PR comments only.) - Before P5 — tag-key references: if you have IAM policies, Cost
Explorer filters, or billing groupings keyed off
acdl:*, add or migrate tonova:*. (Platform handles dual-tagging.) - During P4 — resource-name references: if your code or runbooks
reference a specific
acdl-*AWS resource by name, update to thenova-*name per the P4 mapping announcement. (Platform owns the rename itself.)
Questions
If anything in this guide is unclear, or you are unsure whether your consumer repo references a renamed value, open an issue on the platform repo. The platform team will confirm what you need to change and when.
Note: the real Gitea repository name (
continuous-intelligence/acdl) is not changing — only the product brand. Theuses:workflow reference and repo path are migrated in a separately-announced later step; until then, keep youruses: acdl/.github/workflows/deploy.yml@vX.Yreference as-is.