Review: Update .woodpecker.yaml to match platform CI pattern

review-1770-2026-07-04 Review

review ready

Verdict: READY

Template Completeness

Checked against template-issue-feature (Type: Feature).
  • [x] Type
  • [x] Lineage
  • [x] Repo
  • [x] User Story
  • [x] Context
  • [x] File Targets
  • [x] Feature Flag
  • [x] Acceptance Criteria
  • [x] Test Expectations
  • [x] Constraints
  • [x] Checklist
  • [x] Related

Traceability

  • [x] story:platform-setup label -- "Platform Setup"
  • [x] story note verified -- story-prediction-assistant-platform-setup exists in project-prediction-assistant user-stories section
  • [x] arch:ci-pipeline label -- CI pipeline component
  • [ ] arch note MISSING -- no arch-ci-pipeline note found in pal-e-docs. Non-blocking: platform-wide documentation gap, not specific to this ticket. [SCOPE] Create architecture note arch-ci-pipeline for component ci-pipeline.
  • [x] Forgejo issue -- #91, open

File Targets

  • [x] .woodpecker.yaml -- verified: exists at repo root, contains bare-bones config (ruby:3.4, plugin-docker-buildx, pushes to harbor.tail5b443a.ts.net/ldraney/prediction-assistant). Matches issue description of "minimal version" needing upgrade.
  • [x] Dockerfile -- verified: exists, correctly marked "don't touch" (multi-stage Ruby 3.4.9 build)
  • [x] Gemfile -- verified: exists, correctly marked "don't touch"

Repo Placement

OK. Issue filed on ldraney/prediction-assistant, file target is .woodpecker.yaml in the same repo. Single-repo change.

Dependencies

  • #1696 "CI/CD pipeline -- Woodpecker config" (sprint:2, validation) -- predecessor, original CI setup already done
  • #1773 "Activate repo in Woodpecker + first green build" (sprint:10, backlog) -- downstream dependency, validates end-to-end pipeline after this ticket completes
  • #1767 "Add prediction-assistant to services terraform" (sprint:9, backlog) -- parallel infra work, may update image references in ArgoCD/Kustomize
  • No items in in_progress that block this ticket

Acceptance Criteria

6 criteria, all agent-verifiable by reading the resulting YAML:
  • In-cluster clone step (alpine/git, Forgejo HTTP) -- check YAML step
  • ruby-rails-build:latest base image -- check image field
  • Test step: bin/rails test with Postgres service -- check commands and services
  • kaniko build-and-push -- check kaniko step config
  • In-cluster Harbor registry -- check registry URL
  • Build-and-push only on main -- check when condition
Test expectations: "pipeline runs green on first push after merge" is only verifiable post-deploy, which is appropriate for CI pipeline work and covered by downstream ticket #1773.

Blast Radius

Note: K8s deployment files reference the old image path that this ticket changes:
  • k8s/base/deployment.yaml -- 2 references to harbor.tail5b443a.ts.net/ldraney/prediction-assistant:latest
  • k8s/base/worker-deployment.yaml -- 1 reference to same
After this ticket, CI pushes to prediction-assistant/app:${CI_COMMIT_SHA} via in-cluster Harbor. The k8s deployments still reference the old path. This is handled by downstream tickets (#1767 services terraform, #1773 activation) and is not a blocker for this ticket's scope.
No other files in the repo reference CI-specific patterns (woodpecker, kaniko, ruby-rails-build). Blast radius is contained to the single file.

Decomposition Assessment

1 file target in 1 repo. 6 AC but all describe aspects of a single YAML file rewrite -- tightly coupled. Estimated agent time well under 5 minutes. No decomposition needed.

Recommendation

  • [SCOPE] Create architecture note arch-ci-pipeline for the CI pipeline component. Non-blocking platform documentation gap.
No other action needed. Ticket is READY for development.