Raxx · internal docs

internal · gated

RCA — Unintended repo-wide WP manual trigger fan-out during cron-fix verification

Incident ID: 2026-08-23-cron-fix-verification-manual-trigger-fanout Date: 2026-08-23 Severity: SEV-3 (real production-adjacent side effects occurred; net impact was effectively nil, but that was not knowable in advance and one side effect — a real Heroku release on staging — did land) Blast radius: WP CI (ci.moosequest.net), raxx-api-staging (Heroku), api.raxx.app internal billing-retention endpoint (prod, no-op result). No customer-visible impact; no data changed; no emails sent. Author: sre-agent

Summary

While pre-merge-verifying the #4531/#4532/#4533 cron fixes on branch sre/4531-4532-4533-cron-fixes, two separate POST /api/repos/1/pipelines calls (a bare manual trigger, which fans out to every event: manual workflow in the repo — ~55 workflows) were made against that branch. The first call appeared to fail silently (empty local output); it had not — it created pipeline #7070, which ran to substantial completion before being noticed and cancelled. A second, deliberate attempt (pipeline #7071) was correctly observed and cancelled before any workflow started. Real side effects from #7070: a real (idempotent, no-op) prod billing-retention API call, and a real (cosmetic, config-var-only) Heroku release on raxx-api-staging. No customer emails sent, no code deployed.

Timeline (all times UTC)

Impact

What went well

What didn't go well

Root cause analysis

Detection

Resolution

Action items

# Action Owner Due Issue
1 Strengthen docs/ops/runbooks/ci-woodpecker.md's manual-trigger warning with this incident's evidence and the "always GET to confirm, never trust local silence" rule sre-agent 2026-08-23 done, in PR #4538
2 Do not use the bare manual-trigger endpoint for pre-merge cron-fix verification going forward — use the scoped per-cron endpoint, post-merge only sre-agent / operator ongoing (process change, no ticket needed) n/a
3 Consider a WP-side or wrapper-script safeguard that requires an explicit --i-understand-this-fans-out-to-all-workflows flag (or similar) before a bare manual trigger POST is allowed from automation operator (decision) TBD flagged here for operator visibility; not filed as a ticket pending operator's read on priority

References