Raxx · internal docs

internal · gated

RCA — Console migration 0237 triple-claim collision

Incident ID: 2026-07-18-console-migration-0237-collision Date: 2026-07-18 (incident ID); the resolving merges landed 2026-07-19 UTC Severity: SEV-3 Duration: 0m total (detected pre-merge, resolved before any migration ran) Blast radius: develop branch only; no migration was applied to any database Author: sre-agent

Summary

Three separate PRs in the ticketing system chain each independently claimed console migration number 0237. PR #4276 (renumbered from 0233) and PRs #4277 and #4273 (both originally assigned 0237) would have produced a multi-head Alembic chain on develop, preventing alembic upgrade head from completing on the next deploy. The collision was detected via check_migration_collision.py before any PR merged and resolved by renumbering the three migrations into a linear chain (0237→0238→0239).

Timeline (all times UTC)

The times for detection and the fix were not recorded in the repo. An earlier draft listed 05:00 to 06:45 UTC for the whole sequence; that does not match the GitHub merge record, so only the verifiable times are given below.

  1. PR chain merge session begins; migration-collision-check FAILURE observed on #4277 and #4273
  2. Root cause identified: #4276 renumbered from 0233→0237 collides with the original 0237 claims on #4277 and #4273
  3. Fix: #4276 keeps 0237 (down_revision=0236), #4277 renamed 0237→0238 (down_revision=0237), #4273 renamed 0237→0239 (down_revision=0238)
  4. Local dry-run of check_migration_collision.py confirms no collisions
  5. 2026-07-19 05:04:41Z, 05:05:46Z, 05:06:10Z — #4276 → #4277 → #4273 merged into develop in sequence (GitHub merge times); chain verified 0236→0237→0238→0239
  6. 2026-07-19 05:10:46Z — this RCA committed

Impact

What went well

What didn't go well

Root cause analysis

Detection

Resolution

Action items

# Action Owner Due Issue
1 Add migration-number reservation to the feature-flag migration template so authors claim a number atomically (e.g., a script that reads the current develop head and writes the file) operator 2026-08-01 —

Status of action item 1 (checked 2026-10-30 UTC): not done and past its due date. No reservation script or template exists on develop; scripts/ci/check_migration_collision.py and scripts/ci/check_alembic_single_head.sh remain the only (detective) controls.

References