Review: CI pipeline: Woodpecker build + Harbor push
Verdict: NEEDS_REFINEMENT
Re-review of board item #801 (Forgejo issue #22). Previous review flagged 4 body issues -- all confirmed fixed. This re-review found 1 new issue: Harbor image path mismatch.
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- prerequisite for #21, depends on #3
- [x] Repo -- forgejo_admin/twitch-2k-wager
- [x] User Story -- clear developer story about CI automation
- [x] Context -- references existing platform CI pattern with specific repos
- [x] File Targets -- .woodpecker.yaml to create, Dockerfile listed as do-not-touch
- [x] Acceptance Criteria -- 7 testable criteria
- [x] Test Expectations -- 4 verification steps
- [x] Constraints -- pattern matching, tag format, credentials, overlay dependency, token
- [x] Checklist -- PR opened, tests pass, no unrelated changes
- [x] Related -- project page, arch note, dependency #3, dependent #21
Traceability
- [x] story:challenger-auth label -- Challenger Twitch Login
- [x] story note verified -- found in project-twitch-2k-wager user-stories table (key: challenger-auth, note: story-twitch-2k-wager-challenger-auth id 1157)
- [x] arch:deployment-twitch-2k-wager label -- Deployment architecture
- [x] arch note verified -- arch-deployment-twitch-2k-wager (id 1156) exists with full Mermaid diagram including ArgoCD + Kustomize components
- [x] Forgejo issue -- forgejo_admin/twitch-2k-wager#22, open
File Targets
- [x]
.woodpecker.yaml-- to create. Verified does NOT exist yet in repo. - [x]
Dockerfile-- listed as do-not-touch. Verified EXISTS in repo (from #8, closed/merged).
Targets are specific enough for an agent to act on. Reference pattern in basketball-api/.woodpecker.yaml is explicitly called out in Context.
Repo Placement
OK. Issue filed on
forgejo_admin/twitch-2k-wager. Primary file target (.woodpecker.yaml) belongs in same repo. The update-kustomize-tag step writes to pal-e-deployments but uses the shared platform script downloaded at runtime -- no cross-repo PR needed.Dependencies
- [x] #3 (kustomize overlay) -- satisfied. Issue closed. Overlay at
overlays/twitch-2k-wager/prod/kustomization.yamlconfirmed to exist in pal-e-deployments. - [x] #8 (SvelteKit scaffold + Dockerfile) -- satisfied. Issue closed. Dockerfile confirmed to exist in repo.
- [x] #21 (validation) -- depends on this ticket. Correctly documented in Lineage. No blocker.
Acceptance Criteria
7 AC, all testable. Agent can verify programmatically:
- AC 1-3: file content inspection + Woodpecker pipeline trigger
- AC 4: Harbor image check (but path is wrong -- see Blast Radius)
- AC 5: kustomization.yaml update verification
- AC 6: Woodpecker secret activation via MCP tool
- AC 7: end-to-end pipeline run verification
No ambiguous language. All criteria are specific and observable.
Blast Radius
Harbor image path mismatch. AC #4 says image pushed to
harbor.tail5b443a.ts.net/playme2k/app:${CI_COMMIT_SHA}. But the kustomization.yaml in pal-e-deployments defines the image as harbor.tail5b443a.ts.net/twitch-2k-wager/app. The Harbor project is twitch-2k-wager, not playme2k. An agent following the issue body would configure Kaniko to push to the wrong Harbor project. ArgoCD would never find the image, causing a failed deployment.The reference pattern in
basketball-api/.woodpecker.yaml uses basketball-api/api as the Harbor repo (matching the overlay directory name), confirming the convention is {overlay-name}/{image-name}. Correct path: twitch-2k-wager/app.Rollback is straightforward -- revert the .woodpecker.yaml commit. No data migration or state change involved.
Decomposition Assessment
Apply three-thing limit and five-minute rule:
- 1 file target in 1 repo -- well under the 3-file threshold
- 7 AC but all focused on a single
.woodpecker.yamlconfiguration plus Woodpecker secret activation via MCP tool - No independent subtasks that need parallelization -- this is a single coherent unit
- Estimated agent time: under 5 minutes
No decomposition needed.
Recommendation
- [BODY] Fix Harbor image path in AC #4:
harbor.tail5b443a.ts.net/playme2k/app:${CI_COMMIT_SHA}toharbor.tail5b443a.ts.net/twitch-2k-wager/app:${CI_COMMIT_SHA}