Review: feat: deployment overlays, dev environment subdomain, and Makefile
Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type — Feature
- [x] Lineage — Standalone, references #3, #4, #5, PR #534
- [x] Repo — Multi-repo (3 repos listed)
- [x] User Story — Developer-focused, well-formed
- [x] Context — Thorough current state and deliverables
- [x] File Targets — 14+ targets across 3 repos with exclusion list
- [x] Feature Flag — none (infrastructure, acceptable)
- [x] Acceptance Criteria — 14 items
- [x] Test Expectations — 8 items with run commands
- [x] Constraints — 8 items, well-scoped
- [x] Checklist — 6 items
- [x] Related — comprehensive cross-references
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
- [ ] arch note MISSING — [SCOPE] No
arch-infranote found in pal-e-docs. Create architecture notearch-infrafor the infrastructure component. - [x] Forgejo issue — #77, open, valid URL
File Targets
intelligentstaffingsystems repo (this repo):
- [ ]
Makefile— does not exist yet (create — correct per ticket) - [x]
docker-compose.yml— verified: exists, update target. Currently minimal (web + db services, port 9999). - [x]
docs/local-dev-setup.md— verified: exists, update target. Currently documents docker compose commands manually; Makefile would wrap these. - [x]
docs/architecture.md— verified: exists, update target. - [x]
docs/pipeline.md— verified: exists, update target. - [x]
config/environments/production.rb— verified: exists. Currently hasconfig.hosts << "intelligentstaffingsystems.ai"andconfig.hosts << "iss.tail5b443a.ts.net". Ticket correctly notes dev subdomain may need adding.
pal-e-deployments repo:
- [ ]
overlays/intelligentstaffingsystems/— does not exist yet (create — correct per ticket) - [x]
overlays/westside-ror/prod/— verified: exists as reference pattern with kustomization.yaml, deployment-patch.yaml - [x]
overlays/westside-ror/dev/— verified: exists as reference pattern with deployment.yaml, ingress.yaml, kustomization.yaml, service.yaml - [x]
overlays/dev-tunnel/— verified: exists on main (configmap, deployment, ingress, kustomization, namespace, service, README) - [x]
bases/standard/— verified: exists (deployment, hpa, kustomization, networkpolicy, service, servicemonitor)
godaddy-tofu repo — REPO PLACEMENT ERROR:
- [ ] DNS record for
dev.intelligentstaffingsystems.ai— ISSUE:godaddy-tofuis a custom Go Terraform PROVIDER (manages GoDaddy API). It does NOT contain DNS record configurations. DNS records are managed inpal-e-platform/terraform/dns.tf. PR #534 ("Wire intelligentstaffingsystems.ai to production edge") is inpal-e-platform, notgodaddy-tofu. The Caddy vhost changes are also inpal-e-platform/salt/pillar/caddy.sls.
Repo Placement
MISMATCH: The issue lists
ldraney/godaddy-tofu as one of three target repos for DNS work. However, godaddy-tofu is a Go Terraform provider implementation (manages GoDaddy API). The actual DNS record configurations live in pal-e-platform/terraform/dns.tf, and Caddy vhost configs live in pal-e-platform/salt/pillar/caddy.sls. PR #534, which the issue cites as the reference for domain wiring, is in pal-e-platform, not godaddy-tofu.The correct repo list should be:
ldraney/intelligentstaffingsystems— Makefile, docker-compose, docsldraney/pal-e-deployments— kustomize overlays (prod + dev)ldraney/pal-e-platform— DNS records (terraform/dns.tf) and Caddy vhost (salt/pillar/caddy.sls)
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 but closely related
- No blocking dependencies found. All foundation work is done.
Acceptance Criteria
14 acceptance criteria, all testable by an agent:
- Overlay existence: verifiable with
ls - ArgoCD sync: verifiable with
kustomize build - DNS record: verifiable with
digafter terraform apply - Makefile targets: verifiable by running each
maketarget - No host Ruby: verifiable by inspecting Makefile targets use
docker compose - README with mermaid: verifiable with
read - Doc references: verifiable with
grep - config.hosts: verifiable with
read - Keycloak redirects: verifiable in pal-e-services tfvars
All criteria are well-defined and automatable. However, 14 criteria is well above the 5-criterion decomposition threshold.
Blast Radius
config.hostschanges 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, just a convenience layer.
- Keycloak redirect URI additions (if needed) affect authentication flow — must stay in sync across pal-e-services and the app.
- The dev-tunnel overlay introduces a new kubernetes deployment path — review the existing dev-tunnel pattern carefully to avoid port/ingress conflicts.
- No similar bug patterns found elsewhere; this is new infrastructure creation.
Decomposition Assessment
NEEDS DECOMPOSITION — route to
skill-decompose-ticket- File targets: 14+ across 3 repos (threshold: >3 across >2 repos) — EXCEEDED
- Acceptance criteria: 14 (threshold: >5) — EXCEEDED
- Estimated agent work: Well over 5 minutes — creating overlay directories with kustomization/patches/SOPS secrets, DNS terraform, Caddy vhost, Makefile, docker-compose updates, and 4 doc files — EXCEEDED
Suggested decomposition axes (3 sub-tickets, one per repo):
- pal-e-deployments: prod + dev overlays (kustomization, patches, secrets, READMEs)
- pal-e-platform: dev subdomain DNS record + Caddy vhost
- intelligentstaffingsystems: Makefile + docker-compose updates + docs updates + config.hosts
Recommendation
[BODY]Fix repo placement: replaceldraney/godaddy-tofuwithldraney/pal-e-platformfor DNS/Caddy work. Update File Targets section accordingly — DNS record goes interraform/dns.tf, Caddy vhost insalt/pillar/caddy.sls.[BODY]Fix Constraints section: change "DNS changes go through godaddy-tofu" to "DNS changes go through pal-e-platform/terraform/ (using the godaddy-tofu provider)".[BODY]Fix Checklist: change "one per repo: pal-e-deployments, godaddy-tofu, intelligentstaffingsystems" to "one per repo: pal-e-deployments, pal-e-platform, intelligentstaffingsystems".[SCOPE]Create architecture notearch-infrafor the infrastructure component in pal-e-docs.[DECOMPOSE]14+ file targets across 3 repos, 14 AC, estimated >5 min agent work — route toskill-decompose-ticket. Suggested split: one sub-ticket per repo (pal-e-deployments overlays, pal-e-platform DNS+Caddy, ISS Makefile+docs).