Review: Bug: update-kustomize-tag skipped when CI tests fail

review-901-2026-04-08 Doc

review ready

Verdict: READY

Template Completeness

  • [x] Type — Bug
  • [x] Lineage — discovered during #389 validation (PR #397)
  • [x] Repo — forgejo_admin/basketball-api
  • [x] What Broke — clear description: update-kustomize-tag skipped when test step fails, image pushed but never deployed
  • [x] Repro Steps — 4-step reproduction
  • [x] Expected Behavior — stated clearly
  • [x] Environment — Woodpecker CI, basketball-api pipeline, push to main
  • [x] File Targets — .woodpecker.yaml with specific change described
  • [x] Acceptance Criteria — 3 testable criteria
  • [x] Test Expectations — YAML parse validation command provided
  • [x] Constraints — references pal-e-platform PR #275 pattern, YAML validation requirement per feedback_yaml_parse_validation
  • [x] Checklist — 3 discrete steps
  • [x] Related — PR #275, blocked #389 validation

Traceability

  • [x] story:WS-S17 — "As a parent, I want to register my child online..." (verified in project-westside-basketball user-stories section, stories-parent-list block)
  • [x] arch:ci — CI pipeline component. Note: no arch-ci note exists in pal-e-docs yet. Foundational infrastructure — acceptable, but backlog item recommended.
  • [x] Forgejo issue — forgejo_admin/basketball-api#405, open

File Targets

  • [x] .woodpecker.yaml — verified: file exists at ~/basketball-api/.woodpecker.yaml (84 lines). The update-kustomize-tag step is at lines 60-83. The when clause at lines 81-83 currently has only event: push and branch: main. Confirmed missing status: [success, failure]. Fix is exactly as described in the ticket.

Repo Placement

Correct. Issue filed on basketball-api, fix is in basketball-api's .woodpecker.yaml. Single-repo change. No cross-repo work needed for this ticket.

Dependencies

  • [x] pal-e-platform PR #275 (reference pattern) — satisfied, merged as commit 1d54939
  • [x] No blocking dependencies. Board item #733 ("Fix 9 failing jersey/checkout tests", in_progress, arch:ci) is related context but not a blocker — the kustomize-tag fix is independent of test failures.

Acceptance Criteria

All 3 ACs are testable and specific:
  • AC1: "update-kustomize-tag step includes status: [success, failure] in its when clause" — verifiable via grep
  • AC2: "Step still only runs on push to main" — verifiable via grep for event: push and branch: main
  • AC3: "Step still depends on build-and-push" — verifiable via grep for depends_on
YAML parse validation is specified in Test Expectations and Constraints — agent must run python3 -c "import yaml; yaml.safe_load(open('.woodpecker.yaml'))" before committing.

Blast Radius

WARNING — 3 other repos have the same bug:
  • westside-app/.woodpecker.yaml — MISSING status: [success, failure] fix
  • pal-e-docs/.woodpecker.yaml — MISSING status: [success, failure] fix
  • pal-e-app/.woodpecker.yaml — MISSING status: [success, failure] fix
The pal-e-platform reference template (PR #275, commit 1d54939) has the fix committed. These consuming repos were never updated. Each needs a separate Forgejo issue.
Rollback is trivial — revert the one-line YAML addition. No downstream consumers affected by the fix itself; the fix only changes when the step runs, not what it does.

Decomposition Assessment

No decomposition needed.
  • 1 file target in 1 repo — under three-thing limit
  • 3 acceptance criteria — under five-AC threshold
  • Estimated agent time: under 2 minutes (add one line to YAML, validate, commit)
  • No independent subtasks to parallelize

Recommendation

  • No action needed on this ticket — scope is solid, ready for agent dispatch.
  • [SCOPE] Create Forgejo issues for the same fix in westside-app, pal-e-docs, and pal-e-app repos (discovered scope — blast radius).
  • [SCOPE] Create architecture note arch-ci for CI pipeline component (non-blocking, backlog).