Upgrade Strategy¶
Versioning¶
- Treat module changes as semantic versioned releases
- Promote changes from
dev->staging->prod - Pin provider versions to tested ranges in each root stack
- Document breaking changes in
DECISIONS.md
Backwards Compatibility¶
- All new variables must have explicit defaults to avoid breaking existing deployments
- Module output removals or renames are breaking changes and require migration guides
- No silent breaking changes — every interface change must be documented
Upgrade Process¶
- Validate formatting and static checks (
./scripts/validate.sh). - Apply to
envs/devand verify service health and connectivity. - Apply to
envs/stagingand run regression checks. - Apply to
envs/prodduring approved maintenance window.
Rollback Stance¶
- Prefer forward-fixes where possible
- If rollback is required, revert Terraform code and re-apply
- For state-sensitive resources (databases, OpenAI deployments), review destructive diffs before apply
Tier Progression¶
When upgrading from one maturity tier to the next:
- Foundation -> Enterprise: Enable policy baseline, diagnostics, managed identity role assignments
- Enterprise -> Regulated: Enable CMK, private AKS, add APIM, firewall, and egress controls
Each tier extension adds modules to the root stack composition. Existing modules are not modified.