Review: DNS: SPF/DKIM/DMARC records for westsidekingsandqueens.com (re-review)

review-1738-2026-07-03-r2 Review

review ready

Verdict: READY

Re-review of board item #1738. All four issues from the prior review (review-1738-2026-07-03) have been resolved.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- dependencies documented with board item IDs
  • [x] Repo -- ldraney/pal-e-platform
  • [x] User Story -- well-formed As/I want/So that
  • [x] Context -- includes record types and values
  • [x] File Targets -- terraform/dns.tf
  • [x] Feature Flag -- none (infrastructure work)
  • [x] Acceptance Criteria -- 5 criteria, all testable
  • [x] Test Expectations -- dig commands provided
  • [x] Constraints -- merge existing SPF, propagation window
  • [x] Checklist -- standard checklist present
  • [x] Related -- references stalwart-email project

Traceability

  • [x] story:custom-domain label -- "As platform admin, I want each app to send from its own domain so emails look professional and build domain reputation"
  • [x] story note verified -- found in project-stalwart-email user-stories section (custom-domain row)
  • [x] arch:dns label -- DNS Management component
  • [x] arch note verified -- arch-dns note exists in pal-e-docs (project: stalwart-email, created 2026-07-04)
  • [x] Forgejo issue -- https://forgejo.tail5b443a.ts.net/ldraney/pal-e-services/issues/166, open

File Targets

  • [x] terraform/dns.tf -- verified: exists at /home/ldraney/pal-e-platform/terraform/dns.tf (26 lines). Contains A records for palinks.app, landscaping-assistant.app, and westsidekingsandqueens.com using godaddy_dns_record resources. No SPF/DKIM/DMARC records yet -- clean addition.

Repo Placement

OK -- Issue filed on pal-e-services for project tracking; implementation in pal-e-platform. Explicitly documented in the issue body. File target confirmed in pal-e-platform codebase.

Dependencies

  • Board #1733 (pal-e-platform#498): Stalwart install -- type:infra, arch:stalwart (backlog). Required before DKIM key extraction.
  • Board #1736 (pal-e-services#164): Stalwart domain/account setup -- type:config, arch:stalwart (backlog). Produces the DKIM public key this ticket needs.
  • Both dependencies are in backlog; this ticket is correctly also in backlog.
  • Minor lineage typo: issue body says "pal-e-platform#498 / board #1736" but board #1736 is pal-e-services#164. Non-blocking (lineage is for humans per template spec).

Acceptance Criteria

5 criteria, all agent-verifiable via dig commands. Test commands are real and specific. The DKIM criterion requires the public key from Stalwart (dependency), which means final validation cannot happen until the dependency chain completes. This is acceptable -- the implementation can use a placeholder pending key extraction.

Blast Radius

  • Board #1737 (pal-e-services#165) is the identical pattern for landscaping-assistant.app -- same labels, same structure. Changes here serve as the template for that sibling ticket.
  • dns.tf is isolated -- only DNS records, no application code affected.
  • No existing SPF/DKIM/DMARC records in the terraform directory for any domain.

Decomposition Assessment

No decomposition needed:
  • 1 file target in 1 repo
  • 5 acceptance criteria (at threshold but all in same file, same resource pattern)
  • Estimated agent work: 2-3 minutes (adding 4 TXT resource blocks to existing file)

Observations (non-blocking)

  • DKIM selector: issue says default._domainkey, arch-dns note says mail._domainkey. Will be resolved when Stalwart dependency produces the actual key. Agent should use whatever selector Stalwart generates.
  • Resource type: actual code uses godaddy_dns_record; arch note says godaddy_domain_record. Minor arch note inaccuracy, does not affect implementation.

Recommendation

No action needed. Ticket is ready for implementation once dependency chain (Stalwart install -> Stalwart domain config) completes.