Raxx · internal docs

internal · gated

RCA — queue-docker-smoke WP pipeline permanently broken, blocking Phase 1b branch-protection swap

Incident ID: 2026-09-28-queue-docker-smoke-wp-broken Date: 2026-09-28 Severity: SEV-3 (non-blocking today only because a redundant GHA required check masked it; would have become SEV-2 the moment that GHA context stopped reporting) Duration: ~2h5m (diagnosis start to verified-green merge + branch-protection swap) Blast radius: CI/CD reliability only — ci/woodpecker/pr/queue-docker-smoke (the Woodpecker replacement for the retired GHA Queue Docker build + run smoke check). No user-facing impact, no data integrity or revenue impact. Author: sre-agent

Summary

The Woodpecker replacement for the Queue service's Docker build+smoke gate (.woodpecker/queue-docker-smoke.yaml) had been failing on every real run since it was first ported (f526c3e3cf, #4112) — confirmed on the last several release→main promotion PRs (#4586, #4582, #4580). Tracking issue #4495 could not close its Phase 1b branch-protection swap (retired-GHA-context → WP-context) because the WP context itself had never actually gone green. Root-caused via a live failing pipeline (9252) to two independent bugs in the same file: a nonexistent Woodpecker env var reference, and a cross-step state-passing pattern that silently doesn't work in this WP version. Both fixed, verified green on a real PR (#4614), merged to main, and the branch-protection swap completed. The now-redundant GHA workflow was retired on main (PR #4630), matching the retirement already applied on develop.

Timeline (all times UTC)

(Note: WP pipeline internal clocks and this session's wall-clock references are UTC-consistent; the exact minute-level timestamps above are reconstructed from WP pipeline created/started/finished epochs and GitHub PR timestamps, not live-typed.)

Impact

What went well

What didn't go well

Root cause analysis

Detection

Resolution

Action items

# Action Owner Due Issue
1 Add a lint check: flag any .woodpecker/*.yaml step that reads a /tmp/<name> file written by an earlier step with a different image: (the cross-step-state-without-shared-volume anti-pattern) sre-agent 2026-10-12 TBD (file on close-out)
2 Investigate + fix ci/woodpecker/pr/e2e-smoke and ci/woodpecker/pr/security-zap, both observed failing on unrelated PRs (#4614, #4630) during this incident — neither is in main's required checks today, but sustained failure on non-required checks is exactly what the #4471 weekly sweep should be flagging sre-agent 2026-10-05 TBD (file on close-out)
3 Backport confirmation: verify release branch's copy of .woodpecker/queue-docker-smoke.yaml picks up this fix on the next develop→release promotion (it already had the same two bugs) sre-agent 2026-10-12 TBD (file on close-out)

References