SSM path /acdl/{env}/{contractId}/{output} → /nova/... across
core/output_publisher + contract resolver + consumer docs. New
scripts/migrate_ssm_paths.py (copy/verify/delete, dry-run default).
AWS tag keys acdl:owner|environment|contract|cost-center|ref → nova:*
across terraform tagging + ABAC session policies (iam:ResourceTag/acdl:*
→ iam:ResourceTag/nova:*). nova_tagging.py hard mode (D-109 warn→hard).
tagging-standard.json tag-key values → nova:*. New
scripts/untag_acdl_keys.py (remove old acdl:* tags, dry-run default).
Test fixtures updated; pytest + run_ci.sh PASS.
---ci---
project: acdl
phase: 3
milestone: v1.15
status: execute
---/ci---
9.3 KiB
Nova Migration Guide — What Consumers Must Know
Nova is the new product brand for the platform formerly known as ACDL (Agentic Cloud Delivery Platform). This guide announces the scheduled breaking changes coming in the rebrand rollout (Phases P2–P4) and tells you exactly what to do, when, and how long you have.
The product is being rebranded A C D L → Nova. The rebrand is staged across phases so that no consumer deployment breaks during the transition. Phases P2–P4 ship the breaking changes behind a dual-read / parallel-write grace period; Phase P5 removes the fallback and the old names stop working. This document is the consumer-facing contract for that rollout.
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.