Let the reporter confirm their own fix, and carry a denial's reason

FeatureMediaService
Shipped
September 6, 2026 at 7:07 AM UTC
Author
Kamo
Commit
c054b74

Adds POST /{id}/verify-fix — the one status change in this feature that is not gated on MANAGE_SYSTEM_BUGS. A separate endpoint rather than a hole in the one beside it, and that is the whole design: changeStatus takes a status name from the body, so relaxing its gate would have handed the member who filed a report the ability to set any status on it, including Won't Fix on somebody else's decision. This takes nothing. The destination is VERIFIED, the departures are REQUIRES_VERIFICATION, and the caller is the reporter or a platform administrator. There is no parameter here for a future change to widen. mayVerifyFix answers both halves — whether to draw the button **************** and whether to honour the press — because two implementations is how a button appears for an action the endpoint refuses, and the version of that bug found last is the one where it works for administrators and not for the reporters it was built for. changeStatus carries the denial reason, and applyStatus writes it for WONT_FIX and clears it for everything else in the same write as the status. A caller with nothing to say passes null rather than skipping it: a denial with no reason still has to clear whatever a previous denial left behind. The status filter accepts REQUIRES_VERIFICATION as a reserved token in ?status=. Not a SystemBugStatusType — it is a saved question rather than a state a report can be in, and adding it to the enum would have put it in the triage dropdown, on every card, and in the status_name of any row somebody selected it on. An unknown or retired status name still reads as "every status", so a bookmark naming one of the three just-retired ones lands on a full list rather than an error. The detail no longer projects the AI dispatch history. It told a reader nothing about the report — which model a hand-off used is operational detail for the person making the hand-off, and Send To AI's own preflight already serves it from SecurityService. The audit rows are untouched; a query per drawer open goes.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing