Phase 2 -- Implementation Changelog
A flat, chronological record of what landed during Phase 2 implementation. Cross-references the canonical CHANGELOG entries in the participating repositories.
Repositories and PRs
Section titled “Repositories and PRs”| Repository | PR | Branch | Base | Role |
|---|---|---|---|---|
Arda-cards/documentation | #70 | jmpicnic/email-integration-phase-2-docs | jmpicnic/email-integration-phase-1-docs (PR #69) | Phase 2 planning artifacts; phases.md patches; DQ-R1-006, DQ-R1-008; project-completion byproducts for Phase 1 and Phase 2 |
Arda-cards/infrastructure | #448 | jmpicnic/email-integration-phase-2-infra | jmpicnic/email-integration-phase-1-infra (PR #446) | apps/Root/ rename, RootDnsStack rename, instances/Root/dns.ts, ardamails.com PublicHostedZone (imported), deploy-root.sh path update |
Documentation deliverables (PR #70)
Section titled “Documentation deliverables (PR #70)”CHANGELOG entry: [0.30.0] - 2026-05-05 — Added.
2-root-updates/analysis.md,requirements.md,specification.md,verification.md,exports.md— the Phase 2 planning bundle following the1-external-resources/pattern.2-root-updates/plan/task-plan.md— executable task plan withT-I1..T-I7Implementation,T-V1..T-V8Verification,T-C1..T-C5Closure tasks.phases.md— Phase 2 deliverables row updated (NS-delegation row removed;ardamails.comzone declaration row added); Phase 2 exit criterion narrowed to forward declaration; Phase 3 Corporate stack row extended with theWriteNSRecordsToUpstreamDnsinstantiation.decision-log.md—DQ-R1-006(locus of cross-zone NS-delegation writes) under Round R1-Phase2;DQ-R1-008(adopt-vs-create the existingardamails.comzone) added after Phase 2 implementation surfaced the pre-existing zone.1-external-resources/implementation/— six project-completion byproducts for Phase 1 (changelog, learnings, suggestions, alternatives, skipped, specification-post). Authored from this worktree because Phase 2’sphase-2-docsbranch is the docs head where Phase-1 implementation outcomes were captured after PR #69 stabilised.2-root-updates/implementation/— six project-completion byproducts for Phase 2 (this directory).
Infrastructure deliverables (PR #448)
Section titled “Infrastructure deliverables (PR #448)”CHANGELOG entry: [2.29.0] - 2026-05-05 — Changed + Added.
- Renames (Tasks T-I1, T-I2):
src/main/cdk/apps/rootConfiguration/→src/main/cdk/apps/Root/(folder rename viagit mv; preserves history).src/main/cdk/stacks/root/root-configuration-stack.ts→src/main/cdk/stacks/root/root-dns-stack.ts; classRootConfigurationStack→RootDnsStack.deploy-root.shline 56 —--apppath updated to point at the renamed folder.- In-repo imports of the old class / paths updated.
- CFN stack-name preservation (Task T-I2): the third positional argument to the renamed stack remains the literal string
"RootConfiguration". An inline single-line comment// CFN stack name MUST remain "RootConfiguration" -- changing it would force CloudFormation to delete and recreate the stack.sits immediately above the constructor call inapps/Root/r53-zones.ts. Asserted at test time by V-IAC-003. - Declarative configuration (Task T-I3): new
src/main/cdk/instances/Root/dns.tsexportingROOT_ZONE_NAMES(appArdaCards,ioArdaCards,authArdaCards,assetsArdaCards,ardamails) andexpectedExports(matchingRootDnsStack.exportDefinitionkeys).apps/Root/r53-zones.tsnow consumes the constants from this file for the newardamails.comzone. ardamails.comPublicHostedZone(Task T-I4) declared inRootDnsStack:- Logical ID
ArdamailsZone(CFN-mangled toArdamailsZone1DCDDC15). comment: "HostedZone created by Route53 Registrar"— mirrors the AWS-default comment string on the live zone (DQ-R1-008 forward-compatibility).applyRemovalPolicy(cdk.RemovalPolicy.RETAIN)— defends the imported zone against accidentalcdk destroy.
- Logical ID
- Stack export (Task T-I4):
Builtinterface extended withardamailsZone: string;exportDefinitionextended with{ exportName: "arda-ardamails-zone", description: "The Hosted Zone Id for the ardamails.com mail-root zone" };publish()wires the field through. - Tests (Task T-V1, V-ROOT-001 strict-match):
src/main/cdk/stacks/root/root-dns-stack.test.ts— new strict-equality test that locks the synthesizedAWS::Route53::HostedZoneblock toName: "ardamails.com.",HostedZoneConfig.Comment: "HostedZone created by Route53 Registrar",DeletionPolicy: "Retain",UpdateReplacePolicy: "Retain". Adopts the discipline noted inlearnings.mdL-3.- Existing tests for the four
arda.cardsfamily zones and theAllowCreatingNSRecordsRolecontinue to pass unchanged.
- No new dependencies added by Phase 2 (CDK + Route53 + IAM constructs already present).
Operational state at end of Phase 2 implementation
Section titled “Operational state at end of Phase 2 implementation”The Phase 2 deploy ran in two CloudFormation operations against the live RootConfiguration stack on 2026-05-05 (see learnings.md L-1, L-2):
- IMPORT change-set with a stripped template (deployed-state +
ArdamailsZoneresource only — no Outputs added, no other resource modifications). CFN reportedAction: Import,Replacement: null,Scope: []. Stack transitioned toIMPORT_COMPLETE. The pre-existing zoneZ0721066239FWCD47EJDXis now CDK/CFN-managed under the logical IDArdamailsZone1DCDDC15. The four AWS-assigned nameservers (ns-2046.awsdns-63.co.uk,ns-944.awsdns-54.net,ns-158.awsdns-19.com,ns-1497.awsdns-59.org) are unchanged; the registrar’s NS chain remains intact. - Normal
cdk deploywith the full synthesized template, adding theardamailsZoneOutput (publishing thearda-ardamails-zoneCFN export name) and reconcilingCDKMetadata. Stack transitioned toUPDATE_COMPLETE. Finalcdk diffreported zero differences.
State that downstream phases can rely on:
arda-ardamails-zoneCFN export resolves toZ0721066239FWCD47EJDX.- The
AllowCreatingNSRecordsRoleIAM role (deterministic name fromaws-configuration.ALLOW_WRITE_NS_RECORDS_ROLE.name) is unchanged; Phase 3 Corporate and Phase 4 partition stacks will assume it forWriteNSRecordsToUpstreamDnswrites perDQ-R1-006. - The four
arda.cardsfamily zones (app,io,auth,assets) and their CFN exports are unchanged.
Decisions recorded during Phase 2 implementation
Section titled “Decisions recorded during Phase 2 implementation”| # | Title | Round |
|---|---|---|
DQ-R1-006 | Locus of cross-zone NS-delegation writes | R1-Phase2 |
DQ-R1-008 | Adopt vs create the existing ardamails.com hosted zone | R1-Phase2 |
The full text of each decision is in ../../decision-log.md.
DQ-013 (IAM role extraction from root stack) had been resolved in pre-rev1 work; Phase 2 honours it by leaving the role inside RootDnsStack.
Cross-cutting
Section titled “Cross-cutting”- The per-phase worktree convention introduced in
CLAUDE.mdenabled Phase-2 documentation refinement (phase-2/documentation/) and Phase-2 infrastructure work (phase-2/infrastructure/) to proceed concurrently with Phase-1 PR review (phase-1/...). The DQ-R1-008 remediation — which involved staging a stripped CFN template and running it throughaws cloudformation create-change-set --change-set-type IMPORT— happened end-to-end in thephase-2/infrastructure/worktree without touching the Phase 1 worktrees.
Copyright: © Arda Systems 2025-2026, All rights reserved