Appearance
Statuses
Report statuses
Constrained by reports_status_check (migration 017); mirrored in reports_service._ALL_STATUSES / _ALL_STATUS_TITLES.
| Status | Lifecycle role | Reached via |
|---|---|---|
Open | Initial state | create (default) |
Pending | Pre-investigation hold; post-conclude | create, PATCH, conclude |
Under Investigation | Investigation in progress | action=investigate, /investigation/begin |
Validated | Concluded positive | action=validate |
Invalidated | Concluded negative | action=invalidate |
Closed | Closed | create/PATCH (bot-supplied) |
Completed | Completed | create/PATCH (bot-supplied) |
Appealed | Under appeal (manual status) | PATCH /update |
Rules:
PATCH /updatemay only setOpen,Pending,Appealed(409 otherwise); whileUnder Investigationthe only PATCH status isPending(conclude path).validate/invalidaterequire exactlyUnder Investigation(409 otherwise) and close any open contact thread.investigateis allowed fromOpen/Pending; reopening fromClosed/Completed/Validated/Invalidatedrequires clearance 4+.- The dashboard treats
closed,validated,invalidated,appealedas closed for aggregation.
Punishment statuses
PUNISHMENT_STATUSES in punishment_service.py (CHECK-constrained, migration 029).
| Status | Meaning |
|---|---|
Active | In force |
Ongoing | Investigation phase |
Appealed | Under appeal |
Revoked | Withdrawn by DPS (terminal; via revoke endpoint only) |
Expired | Naturally expired (no automatic scheduler yet) |
Action queue statuses (pending_actions)
pending → processing → success / failed (stale recovery: 10-minute timeout, 3-attempt cap, then failed).
Discipline queue statuses (discipline_queue)
pending → processing → completed / failed (paced retries via available_at + retry_after_seconds; stale recovery same 10-min/3-attempt policy). Deliberately separate from the punishment status enum.
Training session statuses
pending → active ⇄ paused → completed; aborted from any non-terminal state.
Training scenario instance statuses
waiting → active → completed (per training_session_scenarios).
Agent statuses
active · inactive · onboarding (only active/onboarding may hold a browser session; only onboarding agents are training-eligible).