Review: Terraform service onboarding for westside-ror
Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
All template sections present. Template completeness is good.
Traceability
- [x] story:ci-pipeline label -- present on board item
- [ ] story note MISSING -- [SCOPE] project-westside-ror note does not exist; cannot verify user story entry. Create project page with user-stories section.
- [x] arch:terraform label -- present on board item
- [ ] arch note MISSING -- [SCOPE] No
arch-terraformnote found in pal-e-docs. Create architecture note arch-terraform for the terraform services module. - [x] Forgejo issue -- ldraney/westside-ror#41, state: open
File Targets
- [x]
pal-e-services/terraform/k3s.tfvars-- verified exists (225 lines). Services block starts at line 137. westside-ror is NOT yet present in the file. - [ ] Line reference inaccurate -- [BODY] Issue says "Reference: landscaping-assistant entry in k3s.tfvars (lines 137-225)". The landscaping-assistant service entry is actually at lines 147-154; lines 137-225 is the entire services block. Recommend clarifying to "lines 147-154" for the landscaping-assistant entry pattern.
Repo Placement
MISMATCH: The issue body declares
### Repo: forgejo_admin/pal-e-services (the repo where the file change lives), but the Forgejo issue is filed on ldraney/westside-ror. This is a cross-repo issue -- the actual code change is in pal-e-services, not westside-ror. The implementing agent needs to clone/checkout pal-e-services, not westside-ror.[BODY] Clarify that the PR should be opened against
forgejo_admin/pal-e-services, not ldraney/westside-ror. Consider whether the Forgejo issue should be filed on pal-e-services instead, or add explicit instructions that the agent must work in the pal-e-services repo.Dependencies
- #40 (board item #1372) -- parent epic "CI/CD pipeline", backlog. This ticket is a child.
- #42 (board item #1375) -- "K8s prod manifests + secrets for ArgoCD deployment", backlog. Depends on this ticket (needs Harbor project for image refs). Documented in issue body.
- #43 (board item #1376) -- "Dockerfile + Woodpecker CI pipeline", backlog. Depends on this indirectly (CI needs Harbor to push images).
- No items in in_progress or next_up block this ticket.
- The
k8s/proddirectory referenced in the ArgoCD source_path does NOT exist yet in westside-ror -- expected, as #42 will create it. ArgoCD app will be unhealthy until then (documented in AC).
Acceptance Criteria
5 acceptance criteria -- at the upper bound but acceptable for a single agent pass.
- AC 1 (add services entry) -- verifiable by grep/read
- AC 2 (terraform plan shows resources) -- verifiable but requires terraform CLI access and credentials
- AC 3 (terraform apply succeeds) -- requires live infra access, not automatable by code agent alone
- AC 4 (Harbor project exists) -- requires Harbor API/UI access post-apply
- AC 5 (ArgoCD app created) -- requires ArgoCD access post-apply
AC 2-5 are infrastructure verification steps that happen after the code change. The code change itself (AC 1) is straightforward. An agent can handle the code change + PR; AC 2-5 are manual validation steps.
Blast Radius
- Existing namespace resources:
rails-envsecret and Tailscale Funnel ingresses are manually created in the westside-ror namespace. Terraform namespace resource could conflict. Constraints section documents this risk correctly. - No similar pattern bugs found -- the services block is well-established with 9 existing entries.
- ArgoCD pruning policy is a risk factor -- if ArgoCD prunes unmanaged resources in the namespace, the manually-created resources could be deleted. This is noted in the Context section.
Decomposition Assessment
1 file target, 1 repo (pal-e-services), 5 AC (but only 1 is a code change). Estimated agent work: under 5 minutes for the code change + PR. No decomposition needed.
Recommendation
[BODY]Fix line reference: "landscaping-assistant entry in k3s.tfvars (lines 137-225)" should be "(lines 147-154)" for the service entry pattern, or "(services block: lines 137-225)" for the full block.[BODY]Add explicit instruction that the PR must be opened againstforgejo_admin/pal-e-services, and the agent must clone/work in that repo, not westside-ror.[SCOPE]Create project pageproject-westside-rorwith a user-stories section that includes the ci-pipeline story.[SCOPE]Create architecture notearch-terraformdocumenting the terraform services module pattern.