v22.0.0 — Decoupled Build + Simplified Recovery Model
MAJOR. Retroactive release covering PRs #89–#102 (2026-05-06 through 2026-06-12). Three breaking changes — read the upgrade notes.
Breaking
- Source decoupling (#89, #91). The deployable YAML and
configurator.htmlare now generated from modularsrc/files vianpm run build. The hand-maintainedmap2-auto-tagger-optimized.yamlmonolith is gone; CI fails any PR whose committed artifacts are stale. Forks that patched the YAML directly must re-apply changes againstsrc/. Developer guide:docs/DEVELOPMENT.md. - Reconciliation Lambda removed (#95). The real-time tagger with SQS buffering (14-day retention, 5 retries × 180s) is the sole tagging path. DLQ events no longer self-heal — operators must redrive the DLQ after resolving the cause. Long-provisioning resources (notably AWS Managed Microsoft AD, 25–45 min) exhaust the 900s retry budget and require manual redrive; see LIMITATIONS.md.
- Edit and Upgrade configurator flows disabled (#97–#99). Upgrade reset
scoped_account_idsto["ALL"]on templates predating the new CFN parameters; Edit was incompatible with the!Sub-based SSM config. Day-2 account add/remove is via CloudShellupdate-stack-setcommands (INSTRUCTIONS.md); upgrades are delete-and-redeploy.
Changed
- SSM MapConfig built from CFN parameters (
ScopedAccountIds,ScopedVpcIds,TagNonVpcServices) via!Sub— stack updates withUsePreviousValuepreserve real customer scope (#95). - StackSet AutoDeployment always enabled (#93). CloudFormation stacks no longer tagged (#92, not MAP-eligible). MPE ID length limit removed; CFN
MpeIdMaxLength 20 → 44 (#94, #96).
Added
- FSx for NetApp ONTAP volume tagging via
CreateVolume(#100). CloudFrontCreateDistributionhandler (#96).
Fixed
- Kinesis silent tag loss (#102). AWS began emitting a malformed
resources-array ARN onCreateStreamevents (stream name in the account-ID field, literalnullas the resource name); the generic ARN scan trusted it verbatim, so every Kinesis Data Stream silently lost its tag — no DLQ, no alert. A new well-formedness gate rejects structurally invalid resources-array ARNs and falls through to the dedicated per-service handlers. Live-verified. This was an AWS-side event-shape change, not a regression. - CT5 chaos-test fixes (#96): SSM config cache invalidation on fetch failure; delete-flow log-group guard; per-failure SNS alert flood replaced with a CloudWatch Logs Insights query in the DLQ alarm description.
Full details in CHANGELOG.md.
🤖 Generated with Claude Code