- Shipped
- August 27, 2026 at 8:16 PM UTC
- Author
- Kamo
- Commit
- 2b2fb03
Per VIEWER, not per bug, and that is the whole reason it is a table rather than a first_viewed_at column on system_bug: triage is worked by several people at once, and a column would let whoever opened a report first clear it off everybody else's badge. Deliberately not a status either. "Somebody has read this" and "somebody has triaged this" are different facts — folding reading into status_name would move a report out of NEW because a passer-by opened it, with no way back. The two axes cross: a report is new to you when its status is NEW AND there is no row here for you. The unique index on (bug_id, member_id) is load-bearing rather than tidiness: opening a card fires the mark every time, from every tab, so the index is what makes the write idempotent instead of unbounded. Lands before MediaService needs it — this service has no CI, so the DDL has to be run here first or the reads 500 on a relation that does not exist.