- Shipped
- August 25, 2026 at 5:40 PM UTC
- Author
- Kamo
- Commit
- 856b6ef
Removing SENT_TO_AI is not a one-line enum edit. It sat at ordinal 3, and system_bug.status was an ORDINAL column: dropping it shifts AWAITING_INFO onto 3, CANNOT_REPRODUCE onto 4, and so on for the whole tail — every existing row starts reading as a different status than the one it is in, with nothing thrown and nothing logged. The class of trap the schema already documents is the opposite one (a frozen CHECK constraint firing when an enum GROWS); no constraint catches this one. So the status is stored by NAME now, in STATUS_NAME and STATUS_APPLIED_NAME. The enum is free to grow, shrink and reorder, which is what one this young is going to keep doing. The dispatch audit gets it doubly: those rows are never rewritten, so an ordinal that changed meaning underneath one would leave the record saying something the operator never did. WONT_FIX is now "Won't Fix / Denied". It is the terminal state for an enhancement nobody is going to build as well as a bug nobody is going to fix, and telling somebody their idea "won't fix" answers a question they did not ask. SystemBugStatusStorageTest fails the build if either field goes back to ORDINAL, if a status name outgrows its column, or if SENT_TO_AI reappears — the first of those is a one-word diff that reads as a tidy-up.