Review: feat: deployment overlays, dev environment subdomain, and Makefile (v2)

review-1868-2026-07-17-v2 Review

review approved

Verdict: APPROVED

Re-review after refinement applied from review-1868-2026-07-17. All BODY, SCOPE, and DECOMPOSE issues resolved.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Standalone, references #3, #4, #5, PR #534; now includes decomposition references (#78, #79, #80)
  • [x] Repo -- Multi-repo (3 repos listed, correctly: intelligentstaffingsystems, pal-e-deployments, pal-e-platform)
  • [x] User Story -- Developer-focused, well-formed
  • [x] Context -- Thorough current state and deliverables, now with sub-ticket cross-references
  • [x] File Targets -- Delegated to sub-tickets with per-repo scoping
  • [x] Feature Flag -- none (infrastructure, acceptable)
  • [x] Acceptance Criteria -- Delegated to sub-tickets (#78: 5 AC, #79: 4 AC, #80: 7 AC)
  • [x] Test Expectations -- Delegated to sub-tickets
  • [x] Constraints -- 8 items, well-scoped, repo references corrected
  • [x] Checklist -- 7 items, includes sub-ticket creation step
  • [x] Related -- Comprehensive cross-references including sub-tickets

Traceability

  • [x] story:project-setup label -- verified in project-iss user-stories section (Key: project-setup, Backing: "README + docs/architecture.md + docs/adoption-plan.md", Role: Developer)
  • [x] arch:infra label -- present on board item 1868
  • [x] arch note verified -- arch-infra note exists in pal-e-docs (slug: arch-infra, project: paldocs, covers Hetzner edge, DNS, Caddy, Tailscale funnel pattern used by ISS). Note: v1 review's search missed this note.
  • [x] Forgejo issue -- #77, open, valid URL

File Targets

File targets are now delegated to sub-tickets. Each sub-ticket's targets are within a single repo:
  • [x] #78 (pal-e-deployments) -- 6 files to create + reference patterns. Single repo. Verified: overlays/westside-ror/prod/ and overlays/westside-ror/dev/ exist as reference patterns.
  • [x] #79 (pal-e-platform) -- 2 files to modify: terraform/dns.tf, salt/pillar/caddy.sls. Single repo.
  • [x] #80 (intelligentstaffingsystems) -- 1 file to create (Makefile), 5 files to modify. Single repo.

Repo Placement

FIXED. All references to ldraney/godaddy-tofu replaced with ldraney/pal-e-platform. DNS records correctly placed in terraform/dns.tf, Caddy vhosts in salt/pillar/caddy.sls. PR #534 correctly attributed to pal-e-platform. Constraints section correctly states "DNS changes go through pal-e-platform/terraform/ (using the godaddy-tofu provider)".

Dependencies

  • #3 (Bootstrap Rails app -- done) -- foundation, no blocker
  • #4 (Register ISS in pal-e-services -- done) -- created tfvars entry this overlay fulfills
  • #5 (Deployment overlay stub -- done) -- original stub, superseded by this ticket
  • PR #534 (pal-e-platform, closed) -- wired apex domain, reference for dev subdomain DNS
  • #69 (config.hosts DNS rebinding -- validation) -- established the config.hosts pattern; not a blocker
  • No blocking dependencies. All foundation work is done.

Acceptance Criteria

Decomposed into sub-tickets with per-scope AC:
  • #78: 5 AC (overlay existence, kustomize build, mermaid READMEs) -- all testable by agent
  • #79: 4 AC (DNS record, Caddy vhost, dig resolution, dev tunnel access) -- all testable by agent
  • #80: 7 AC (make targets, no host Ruby, docs, config.hosts) -- 7 exceeds the >5 threshold but all targets are in a single repo with tightly coupled changes (Makefile creation + related doc updates); acceptable without further decomposition

Blast Radius

  • config.hosts changes for the dev subdomain only affect the Rails production environment -- low risk since the same pattern was established in #69.
  • The Makefile wraps existing docker compose commands -- no new runtime behavior.
  • Keycloak redirect URI additions (if needed) affect authentication flow -- must stay in sync.
  • The dev-tunnel overlay introduces a new kubernetes deployment path -- review the existing dev-tunnel pattern carefully.

Decomposition Assessment

COMPLETE. Original ticket (14+ file targets across 3 repos, 14 AC) decomposed into 3 sub-tickets:
  • #78 -- pal-e-deployments overlays (6 files, 1 repo, 5 AC)
  • #79 -- pal-e-platform DNS + Caddy (2 files, 1 repo, 4 AC)
  • #80 -- ISS Makefile + docs (6 files, 1 repo, 7 AC)
Each sub-ticket is within a single repo. #80 has 7 AC (above >5 threshold) but the changes are tightly coupled (Makefile + related docs in one repo) and estimated under 5 minutes of agent work. No further decomposition needed.

Recommendation

No action needed. All issues from v1 review resolved:
  • [BODY] Repo placement: FIXED -- godaddy-tofu replaced with pal-e-platform throughout
  • [BODY] Constraints: FIXED -- DNS mechanism correctly described
  • [BODY] Checklist: FIXED -- repo list corrected
  • [SCOPE] arch-infra note: EXISTS -- found at slug arch-infra (v1 search missed it)
  • [DECOMPOSE] Sub-tickets created: #78, #79, #80