Review 2: Commit prod deployment manifests

review-1358-2026-06-06-v2 Review

review ready

Verdict: READY

Re-review of board item #1358 after refinement. Previous review review-1358-2026-06-06 returned NEEDS_REFINEMENT with 3 [BODY] fixes and 1 [SCOPE] recommendation. All 3 body fixes have been addressed. The [SCOPE] item (missing project page) is pre-existing platform documentation debt, not a ticket scope problem.

Previous Recommendations Resolved

  • [BODY] Clarify service.yaml file target -- FIXED: removed ambiguous service.yaml entirely. File targets now list only kustomization.yaml and deployment-patch.yaml.
  • [BODY] Add kubectl command for live spec capture -- FIXED: issue now includes kubectl get deployment westside-ror -n westside-ror -o yaml > /tmp/westside-ror-live.yaml.
  • [BODY] Add explicit bases/standard requirement -- FIXED: issue now states "The prod overlay MUST use bases/standard (not standalone resources like the dev overlay)" and references basketball-api/prod/kustomization.yaml as canonical example.
  • [SCOPE] Create project-westside-ror project page -- NOT ADDRESSED (human decision, carried forward as non-blocking).

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- spike #22, prerequisite for #27
  • [x] Repo -- ldraney/pal-e-deployments (primary), ldraney/westside-ror (tracking)
  • [x] User Story -- present and well-formed
  • [x] Context -- thorough, includes live vs committed comparison with specific env vars and patterns
  • [x] File Targets -- 2 files to create, clear do-not-touch list, no ambiguity
  • [x] Acceptance Criteria -- 7 items, all testable
  • [x] Test Expectations -- kustomize build command provided, diff against live deployment
  • [x] Constraints -- explicit bases/standard requirement, references canonical example
  • [x] Checklist -- present
  • [x] Related -- lists project and related issues (#27, #24)
All required Feature template sections present and complete.

Traceability

  • [x] story:subscription-links label -- present on board item
  • [ ] story note MISSING -- no project-westside-ror project page exists in pal-e-docs. Acceptable: user story is fully stated inline in the issue body. Per precedent (review-1356-2026-06-06), not blocking. [SCOPE] Create project-westside-ror project page with user-stories section (low priority, carried from v1).
  • [x] arch:kustomize label -- present on board item
  • [x] arch note verified -- convention-kustomize-overlay exists in pal-e-docs (convention note; kustomize overlays are a convention, not a diagrammable arch component, per precedent review-1044-2026-04-21)
  • [x] Forgejo issue -- ldraney/westside-ror#28, open

File Targets

  • [x] overlays/westside-ror/prod/kustomization.yaml -- verified: directory does NOT exist yet (correct, file to create). bases/standard/ exists with deployment.yaml, service.yaml, hpa.yaml, kustomization.yaml, networkpolicy.yaml, servicemonitor.yaml. Reference pattern basketball-api/prod/kustomization.yaml verified: uses ../../../bases/standard, JSON patches to rename app, deployment-patch.yaml.
  • [x] overlays/westside-ror/prod/deployment-patch.yaml -- verified: file to create. Reference pattern basketball-api/prod/deployment-patch.yaml verified: shows env vars, secretRef, container spec patches.
  • [x] overlays/westside-ror/dev/ -- verified: exists with deployment.yaml, service.yaml, kustomization.yaml, ingress.yaml. Issue correctly says "do not touch".

Repo Placement

OK. Issue filed on ldraney/westside-ror (tracking), work targets ldraney/pal-e-deployments (primary). Explicitly documented in Repo section. PR should be opened against pal-e-deployments.

Dependencies

  • Upstream: spike #22 (done) -- no blocker
  • Downstream: #27 (Stripe webhook needs STRIPE_WEBHOOK_SECRET in deployment config) -- this ticket is a prerequisite. Documented.
  • Downstream: #24 (editable fees, safe deploys needed) -- documented.
  • Board state: No blockers in in_progress. Items #2 and #13 are in progress but unrelated (tournament payments/email).

Acceptance Criteria

7 criteria, all verifiable:
  • [x] AC1: prod/ overlay exists -- verifiable with ls
  • [x] AC2: kustomization.yaml references ../../../bases/standard -- verifiable with grep
  • [x] AC3: JSON patches rename base app -- verifiable in YAML
  • [x] AC4: deployment-patch.yaml matches live pod spec -- verifiable with kubectl diff (issue now provides capture command)
  • [x] AC5: kustomize build produces valid YAML -- verifiable with command
  • [x] AC6: diff between build output and live deployment shows no meaningful divergence -- verifiable with diff
  • [x] AC7: Comment noting STRIPE_WEBHOOK_SECRET for #27 -- verifiable with grep
All criteria are testable by an agent with cluster access.

Blast Radius

Low. This is a "commit what's running" task -- no behavior change. The committed manifests will match the live pod. No sibling services affected. Dev overlay is explicitly excluded.

Decomposition Assessment

2 file targets in 1 repo (pal-e-deployments). 7 acceptance criteria (slightly above the 5 threshold but all are closely related verification steps for the same 2 files). Estimated agent work: ~3 minutes. No decomposition needed.

Recommendations

  • [SCOPE] Create project-westside-ror project page in pal-e-docs with a user-stories section containing the subscription-links story (carried from v1, non-blocking, low priority).
No [BODY] or [LABEL] fixes needed. Ticket is ready for implementation.