Review: Add computed_fields to CNPG kubernetes_manifest resources

review-1107-2026-04-26 Doc

review ready

Review: Board Item #1107

Verdict: READY (APPROVED)
Forgejo issue: forgejo_admin/pal-e-services#69
Item type: issue (Feature) | Labels: type:feature, story:superuser-deploy, arch:cnpg, arch:terraform

Template Completeness

Issue body conforms to template-issue-feature. All required sections present: Type, Lineage, Repo, User Story, Context, File Targets, Acceptance Criteria, Test Expectations, Constraints, Checklist, Related.

Traceability Triangle

  • User Story (story:superuser-deploy): PRESENT. Verified in project-pal-e-platform user-stories table — "I can deploy infrastructure changes via tofu plan/apply and see them succeed in Woodpecker CI without manual intervention." Direct fit: this ticket eliminates a non-zero exit code that blocks CI.
  • Architecture (arch:cnpg, arch:terraform): Labels present, BUT no backing notes arch-cnpg or arch-terraform exist in pal-e-docs (search returned []). [SCOPE] recommendation: Create architecture notes arch-cnpg and arch-terraform for these components. Not blocking — work can proceed; flag for separate doc backlog item.
  • Forgejo issue: URL valid, issue #69 OPEN, body well-formed.

File Target Verification

  • terraform/cnpg.tf EXISTS (180 lines, /home/ldraney/pal-e-services/terraform/cnpg.tf).
  • kubernetes_manifest.cnpg_cluster resource confirmed at line 62.
  • kubernetes_manifest.cnpg_scheduled_backup resource confirmed at line 158.
  • Neither resource currently declares computed_fields — fix has clean attach point.
  • Minor: issue references "terraform/cnpg.tf:60-61" for the existing operator-drift comment — actual location is lines 57-60. Off by one; not blocking.

Repo Placement

Correct. Issue is on forgejo_admin/pal-e-services, file lives in same repo. Single-repo change.

Dependencies / Blast Radius

  • Companion ticket #1106 (ArgoCD label drift) is mentioned in Lineage — separate scope, no blocker relationship. Fine.
  • No items in in_progress blocking this. No items currently depend on it.
  • Blast radius: contained. Only affects how Terraform state tracks two manifests; runtime CNPG behavior is operator-driven and untouched. The Constraints section explicitly forbids changing desired-state spec.

Acceptance Criteria Assessment

All four ACs are agent-verifiable: tofu apply exit code, tofu plan output, kubectl cluster status, kubectl scheduledbackup status. Test Expectations include a baseline-vs-after comparison (good). Constraints precisely scope the fix (no resource-type swap, dotted-path format, no spec changes).

Decomposition Assessment (5-minute rule)

  • 1 file target, 1 repo. PASS.
  • 4 ACs. PASS.
  • Estimated work: identify operator-injected paths (kubectl get cluster -o yaml against live cluster), add 2 computed_fields blocks, run tofu plan/apply. Well under 5 minutes for a dev agent.
No decomposition needed.

Recommendations (non-blocking)

  • [SCOPE] Create arch-cnpg and arch-terraform architecture notes (separate doc tickets — not gating this one).
  • Minor: agent should derive the exact list of computed_fields paths from a live kubectl get cluster pal-e-postgres -o yaml diff against the desired manifest, not from the issue's hand-listed examples. Issue body mentions this implicitly via "~20 postgres parameters" — clear enough.

Verdict

READY / APPROVED. Scope is tight, file targets verified, traceability is complete enough (story confirmed; missing arch notes are doc debt, not scoping debt), single-agent single-pass work. Safe to advance backlog → todo → next_up.