Area: Admin deep-dive (trust/safety) (audit p15a) · Surface: /admin/moderation (AdminModerationController@index) · Dimension: Competitor-gap feature (#2) · Severity: major
The data model already carries a per-report priority, but the queue treats every open report identically and surfaces them newest-first. Zendesk, Intercom, and Help Scout all rank/triage incoming tickets by priority and let agents filter to high-severity items first; Discourse's review queue scores flags so the worst content floats up. A safety queue that can't say 'a credible self-harm or CSAM-adjacent report outranks a typo complaint' forces mods to read every item to find the dangerous one. This matters most as community size grows — the moment the queue exceeds one screen, FIFO-by-recency means urgent reports wait behind trivia.
Evidence
Schema has it: platform/database/schema.sql:6767 `priority` varchar(20) DEFAULT 'normal' on `reports`. But AdminModerationController@index never reads/sorts/filters it. The list query orders only by status then recency: AdminModerationController.php:85 `ORDER BY FIELD(r.status, 'open', 'in_progress', 'resolved'), r.created_at DESC`. The filter form (lines 39-65) accepts only status/type/date_from/date_to. `grep -n priority AdminModerationController.php` returns nothing.
Suggested fix. Add a priority pill filter and a `FIELD(r.priority,'urgent','high','normal','low')` term to the ORDER BY ahead of created_at; let the existing AI triage (ModerationAIController@bulkTriage) write a suggested priority back so the column is populated, not just defaulted to 'normal'.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus