Area: Admin deep-dive (trust/safety) (audit p15a) · Surface: /admin/moderation (AdminModerationController) · Dimension: Competitor-gap feature (#2) · Severity: major
Zendesk, Intercom, and Help Scout center their whole workflow on assignment — a ticket has an owner, so two agents never duplicate work and you can route by expertise. Discourse's review queue shows who's claimed an item. Without per-report ownership, a Mobieus mod team either silently double-handles reports or coordinates out-of-band in chat. The 'in_progress' status is a tenant-wide flag, not 'mine vs theirs', so it doesn't prevent collisions. This becomes painful exactly when a tenant has more than one moderator — which is the configuration our mod-assignment system (AdminModsController, four scopes) is built to encourage.
Evidence
The only 'claim' in the controller is bulkMarkInProgress (AdminModerationController.php:643), which flips status to 'in_progress' tenant-wide with no owner column. `grep -in 'assigned_to|assignee|assigned_mod' AdminModerationController.php` finds nothing; reports schema (schema.sql:6753-6779) has resolved_by but no assigned_to. Two mods can both open the same in-progress report with no indication either is already on it.
Suggested fix. Add reports.assigned_to (nullable FK to users) + a Claim/Reassign action; show an 'assigned to @x' badge in the queue; optionally auto-claim on first action. Reuse the existing CAS pattern from escalate() (lines 1197-1212) to make claim race-free.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus