Review: Fix westside-app Harbor auth (4 alerts) — v2
Verdict: READY
Template Completeness
Evaluated against the refined scope (comment #5317 on issue #110), not just the original body.
- [x] Lineage — present in original body
- [x] Repo — original listed pal-e-services + pal-e-deployments; refinement correctly adds westside-app
- [x] User Story — present
- [x] Context — thorough root cause analysis with skopeo confirmation
- [x] File Targets — complete in refinement: 4 files across 3 repos with line-level specificity
- [x] Acceptance Criteria — updated in refinement to include CI pipeline success
- [x] Test Expectations — present with kubectl, skopeo, and blackbox probe checks
- [x] Constraints — present (tofu apply -lock=false, CI config caveat)
- [x] Checklist — present
- [x] Related — present (references #109 umbrella and PR #37)
File Targets
- [x]
~/pal-e-services/terraform/k3s.tfvarsline 34 — verified: containsimage_repo = "westside-app/app"under thewestsidekingsandqueensservice key. Mismatch confirmed. - [x]
~/pal-e-deployments/overlays/westsidekingsandqueens/prod/kustomization.yaml— verified: lines 63 and 65 referenceharbor.tail5b443a.ts.net/westside-app/app. Must change towestsidekingsandqueens/app. - [x]
~/westside-app/.woodpecker.yamlline 24 — verified:repo: westside-app/app. Must change towestsidekingsandqueens/app. - [x]
~/pal-e-services/terraform/services.tf— verified:harbor_project.serviceuseseach.keyas project name (line 11), and robot accounts are scoped toharbor_project.service[each.key].name(lines 48, 72). This confirms the architectural root cause.
Repo Placement
Acceptable but noteworthy. Issue is filed on
forgejo_admin/pal-e-platform (the project board repo), but changes land in 3 other repos:forgejo_admin/pal-e-services— k3s.tfvars change + tofu applyforgejo_admin/pal-e-deployments— kustomization image refsforgejo_admin/westside-app— Woodpecker CI push target
This is consistent with how pal-e-platform tracks cross-cutting issues. The agent needs clear execution sequencing (see Recommendation).
Dependencies
- Board item #188 (issue #109) — in_progress. Umbrella "platform cleanup" issue. #110 is a child. No blocking relationship.
- Board item #171 (todo-harbor-pull-secret-drift) — in next_up. Addresses the same class of bug (robot scope mismatch causing ImagePullBackOff). The todo describes a SOPS-based architectural fix. #110 fixes the immediate symptom; #171 prevents recurrence. Cross-reference recommended but no dependency.
- Option B deferred — the refinement explicitly defers the services.tf architectural fix. Should become a separate ticket or fold into #171.
Acceptance Criteria
All criteria are automatable.
curlcheck, pod status, alert clearing, CI pipeline success — all verifiable by agent.
One gap (non-blocking): No criterion for verifying the new Harbor project
westsidekingsandqueens exists after tofu apply. Existing images in westside-app/app won't appear in the new project. The agent must trigger a new CI pipeline after updating .woodpecker.yaml to populate the new project. The refinement implies this via the CI acceptance criterion, but the sequencing dependency is implicit.Blast Radius
- mcd-tracker-app has the same class of mismatch: key=
mcd-tracker-app, image_repo=mcd-tracker/app. Harbor project created asmcd-tracker-app, robot scoped there. But ArgoCD image updater annotation points tomcd-tracker/app(wrong). CI pushes tomcd-tracker-app/appand kustomization referencesmcd-tracker-app/app— so pulls work today. Image updater is broken but masked by manual tag pinning. Ticking time bomb — flag for #171 or separate ticket. - All other services (6 of 8) have matching key/image_repo prefixes — no blast radius.
- Execution order matters: tofu apply must run before kustomization change, or ArgoCD will sync to an empty Harbor project and 401 again.
Recommendation
READY for dispatch with one advisory note for the agent:
- Execution order: (1) Change k3s.tfvars + tofu apply (creates Harbor project + robot), (2) Update + merge westside-app .woodpecker.yaml (CI pushes image to new project), (3) Update pal-e-deployments kustomization with new image path + tag from CI run. Without this sequencing, ArgoCD may sync to an empty project.
- mcd-tracker-app mismatch should be documented as discovered scope — new ticket or fold into #171.
These are execution details an experienced agent can infer, so they do not block dispatch. The scope is solid, all file targets verified, design decision made, and acceptance criteria are complete and automatable.
Previous Reviews
v1 reviews (comments #5263 and #5322 on issue #110) identified: (1) design decision not made, (2) CI push side undocumented, (3) file targets incomplete. All three addressed in refinement comment #5317. Verdict upgraded from NEEDS_REFINEMENT to READY.