You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## What changed
- enforce a CloudFormation stack policy after every applied deploy or
upgrade so retained DynamoDB, S3, and inbound KMS resources cannot be
replaced or deleted by an ordinary update
- enable and verify CloudFormation termination protection after
deployment, including no-template-change reconciliation
- add `status aws --detect-drift` with bounded polling and metadata-only
drift output
- require `operational` status to have verified termination protection,
the retained-resource policy, and an `IN_SYNC` drift result
- make protected cleanup plan-able but require the exact stack name plus
`--disable-termination-protection`; restore protection when delete
submission fails
- update the dedicated AWS integration workflow and operator
documentation for the protected lifecycle
## Why
The AWS path is the active Certified candidate, but a successful
CloudFormation deployment alone did not protect the stack from
accidental deletion, did not prevent updates from replacing retained
customer-data resources, and only exposed the last reported drift state.
These controls are required before the path can be treated as a credible
Resend migration target.
This is the first implementation tranche of #174. It does not claim SES
production readiness or close the terminal-delivery and dogfood evidence
gates.
## User and operator impact
Applied deploys and upgrades now finish only after both stack
protections are verified. A fresh drift check is explicit because it
performs an AWS operation. Deletion remains possible, but the normal
protected stack needs a separate, visible acknowledgement before the CLI
disables termination protection.
## Validation
- `npm ci` — 0 vulnerabilities
- `npm outdated --json` — no outdated npm dependencies
- `npm run check`
- `npm test` — 607 passed, 6 skipped
- `npm run build`
- `npm run check:conformance`
- `npm run lint:openapi`
- `npm run check:workers` — 38 passed and Wrangler dry-run passed
- `npm run site:build && npm run site:verify`
- `actionlint .github/workflows/aws-integration.yml`
- `git diff --check`
## Safety
No AWS resources are changed by this PR itself. All AWS mutation remains
exact-account gated and explicit. Drift output excludes property
differences and values. Cleanup never purges retained customer data.
0 commit comments