- Shipped
- September 6, 2026 at 7:07 AM UTC
- Author
- Kamo
- Commit
- bfbe474
Removes TRIAGED, AWAITING_INFO and CANNOT_REPRODUCE. Each described how confident an operator felt rather than where the report had got to, and none of them moved it anywhere: a triaged bug is one somebody is about to work, which IN_PROGRESS already says, and one nobody could reproduce is either still open or deliberately not being done. AWAITING_INFO took the second half of isReporterEditable() with it — NEW alone now, and an operator who needs more detail moves the report back there, which reopens the same window. status_name stores a NAME, so a surviving row holding one of the three does not degrade to a default: it throws `No enum constant` and takes down every query that touches it. SystemBugSchemaMigration sweeps them to NEW, after the ordinal backfill that can still write them (that backfill is frozen history and must keep mapping the column as it was). The live database held none. VERIFIED keeps its constant and gains the label "Verified as Fixed" under a NEW dictionary key — the wording alone left the reader guessing what had been verified, and translate.ts only visits keys it has not seen, so editing English in place would have pinned all 21 locales to the old word forever. WONT_FIX now carries the operator's reason. It is written with the status in one call, because the reporter's letter goes out on that write — a reason arriving a moment later would be missing from the one place it was asked for. Any move off the status clears it, so a report denied, reopened and later fixed does not keep showing last month's refusal. Optional, deliberately: refusing to record a denial until somebody types a sentence only teaches people to type a full stop. REQUIRES_VERIFICATION is the set with something left to confirm — NEW, IN_PROGRESS, FIXED. One definition, because two surfaces read it and have to agree: the console filter that lists them and the Fix Verified button that acts on one. findVisible narrows by a SET now rather than a single status, never null and never empty — "any status" is the whole enum, which sidesteps the null-collection parameter Hibernate cannot express. The email's callout moves from AWAITING_INFO to FIXED and names the button, since a control the reporter would never go looking for is no use unmentioned.