Review: Kustomize overlay (pal-e-deployments) [re-review]

review-788-2026-04-03-r2 Doc

review ready

Verdict: READY

Re-review of board item #788 after complete issue rewrite. All 10 recommendations from review-788-2026-04-03 have been addressed.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Related to #1, dependency documented
  • [x] Repo -- forgejo_admin/pal-e-deployments
  • [x] User Story -- "As a Twitch viewer I want the playme2k website to be publicly accessible and deployed via GitOps"
  • [x] Context -- explains relationship to #1 (pal-e-services creates namespace/ArgoCD app, this ticket creates the overlay)
  • [x] File Targets -- correct paths, correct create/not-touch boundaries
  • [x] Acceptance Criteria -- 6 testable criteria
  • [x] Test Expectations -- 3 items including kustomize build validation
  • [x] Constraints -- references basketball-api/prod as pattern, excludes CNPG/secrets, documents #1 dependency
  • [x] Checklist -- present
  • [x] Related -- project page, arch note, prerequisite issue
All required sections present and complete.

Traceability

  • [x] story:challenger-auth label -- "Sign in with 1 click from stream link"
  • [x] story note verified -- story-twitch-2k-wager-challenger-auth exists in pal-e-docs and is listed in project-twitch-2k-wager user-stories table
  • [x] arch:deployment label -- present on board item
  • [x] arch note verified -- arch-deployment-twitch-2k-wager exists in pal-e-docs (id: 1156, note_type: architecture, status: active). Contains Mermaid deployment diagram showing kustomize overlay, ArgoCD, Tailscale funnel, and all components.
  • [x] Forgejo issue -- forgejo_admin/twitch-2k-wager#3, open
Minor note: Board item label is arch:deployment (generic) while the actual arch note slug is arch-deployment-twitch-2k-wager (project-specific). This is cosmetically imprecise but not blocking -- the issue body correctly references the full slug in the Related section.

File Targets

  • [x] overlays/twitch-2k-wager/prod/kustomization.yaml -- to be created. Path follows established pattern (verified against 12 existing overlays: basketball-api, westsidekingsandqueens, mcd-tracker, etc.). Will reference ../../../bases/standard which exists.
  • [x] overlays/twitch-2k-wager/prod/deployment-patch.yaml -- to be created. Matches the patch pattern used by basketball-api and westsidekingsandqueens overlays. Env vars listed (DATABASE_URL, STRIPE keys, Keycloak config) are appropriate for the app.
  • [x] bases/standard/ correctly excluded -- shared base contains deployment.yaml, service.yaml, hpa.yaml, networkpolicy.yaml, servicemonitor.yaml, kustomization.yaml
  • [x] Other overlay directories correctly excluded
  • [x] pal-e-services files correctly excluded (separate ticket #1)
All file targets verified against the actual pal-e-deployments repo structure. Paths are correct and specific enough for an agent.

Repo Placement

OK. Issue filed on forgejo_admin/twitch-2k-wager (project repo), work targets forgejo_admin/pal-e-deployments. This matches the established pattern where project repos hold issues and pal-e-deployments holds the kustomize overlays. Single-repo scope is clean.

Dependencies

  • [x] Ticket #1 (pal-e-services onboarding) -- DOCUMENTED in Lineage and Constraints. Board item #786 exists in backlog. Sequential dependency is clear: namespace + ArgoCD app must exist before overlay can sync.
  • [x] App image -- acknowledged in Test Expectations: "Pod starts (may CrashLoop until app image exists -- that's expected)." Appropriate for infra-first approach.
  • [x] bases/standard -- exists in pal-e-deployments, verified.
No unresolved or undocumented dependencies.

Acceptance Criteria

6 criteria, all verifiable by an agent after implementation:
  • [x] "kustomization.yaml inherits from bases/standard" -- verifiable by reading the file
  • [x] "Namespace set to twitch-2k-wager" -- verifiable in kustomization.yaml
  • [x] "Deployment patch includes env vars" -- verifiable by reading deployment-patch.yaml
  • [x] "Image reference points to Harbor" -- verifiable in kustomization.yaml images section
  • [x] "Port set to 3000" -- verifiable in deployment-patch.yaml
  • [x] "ArgoCD syncs successfully after merge" -- verifiable post-merge via argocd CLI; depends on #1 completing first (documented)
5 of 6 are file-content verifiable. AC #6 (ArgoCD sync) requires #1 to be completed and applied first, which is correctly documented as a dependency. No ambiguous language.

Blast Radius

Low. New overlay directory creation only. No modifications to existing overlays or shared bases. 12 existing overlays are unaffected. Standard pattern -- same structure used by all services. Rollback = delete the overlay directory.

Decomposition Assessment

No decomposition needed.
  • 2 files to create in 1 repo -- well within 3-file limit
  • 6 AC (5 file-verifiable, 1 post-deploy) -- borderline but all related to the same 2 files
  • Estimated agent work: 3-4 minutes (copy pattern from basketball-api or westsidekingsandqueens, adapt names/env vars)
  • No independent subtasks that could be parallelized -- both files are part of one coherent overlay
  • Well within 5-minute rule

Recommendation

No action needed. Ticket is ready for dispatch.
Optional improvement (not blocking):
  • [LABEL] Refine arch:deployment to arch:deployment-twitch-2k-wager for precise traceability to the arch note. Not required -- issue body already references the correct slug.

Previous Review Resolution

All 10 recommendations from review-788-2026-04-03 (NEEDS_REFINEMENT):
  • [BODY] Wrong file paths -- FIXED. Now correctly uses overlays/twitch-2k-wager/prod/ prefix.
  • [BODY] Remove namespace.yaml -- FIXED. Not mentioned in file targets.
  • [BODY] Move CNPG scope -- FIXED. Constraints explicitly state "Do NOT create CNPG or secrets here."
  • [BODY] Add pal-e-services file targets -- FIXED. Scope limited to pal-e-deployments only. pal-e-services is ticket #1.
  • [BODY] Clarify funnel strategy -- RESOLVED. Funnel is in pal-e-services scope (#1).
  • [BODY] Clarify secrets strategy -- RESOLVED. Constraints exclude secrets from this ticket.
  • [BODY] Narrow AC -- FIXED. AC now focuses on overlay deliverables only.
  • [LABEL] arch label mismatch -- PARTIALLY FIXED. Changed from arch:tailscale-funnel to arch:deployment. Could be more precise but not blocking.
  • [SCOPE] Create arch-deployment-twitch-2k-wager -- FIXED. Note exists (id: 1156).
  • [SCOPE] Create service-onboarding-sop -- OUT OF SCOPE. Not referenced in rewritten issue.