modules.incident_log is disabled, Halt does not create or expose incident records.
Statuses
Change with
/halt incident <id> status <status> or the GUI. The change is appended to the note timeline with actor and old/new status.
Chat workflow
Player not found. instead of dumping the unfiltered list.
/halt scan <player> shows decayed current risk (highest first) plus a short recent-incident section.
Staff GUI
/halt gui (halt.gui). Hub actions: incidents, lockdown, scan, status.
Incident list chrome: search, type filter, status filter, sort, reset, paging. Search matches player name, incident id, and summary. Type cycles ALL → CRASH → DUPE → MINE → FREECAM. Status cycles ALL → OPEN → REVIEWED → RESOLVED → IGNORED. Sort cycles Newest → Oldest → Severity.
Scan picker: search by name, filter Online → Has risk → Contained, sort Name → Risk high.
Java clients type search in an anvil. Folia, Geyser/Bedrock, and failed anvil open fall back to chat. Send - or a blank query to clear.
Incident detail: cycle status, assign to self, add a review note, start the suggested lockdown. Back restores the previous list page, query, filters, and sort.
GUI pages use the inner 7-wide grid. Chat /halt logs page size is display.pagination.logs_page_size (default 10).
Correlation
incident_correlation.enabled (default true) links same-player OPEN incidents within window_seconds (default 300) for link_types via parent_id. Related hopper / value-growth / mining signals become one case instead of a row storm.
CRITICAL unarmed incidents can suggest lockdown.suggest_profile (default economy) in chat, Discord, and GUI. Suggest never auto-starts lockdown.
Export
plugins/Halt/exports/: incidents, notes, assignments, risk scores, and lockdown history. Use it with CoreProtect around the evidence coords. Halt does not run rollback for you.
Punish templates
punish.enabled defaults false. When on, /halt incident <id> punish runs owner punish.commands with {player} {uuid} {incident} {type} {severity}.
This is still staff-triggered. Halt does not auto-ban.
Retention
storage.retention_days schedules automatic purge of RESOLVED and IGNORED incidents. 0 disables scheduled retention. /halt purge removes resolved incidents using that window, or all resolved incidents when retention is 0.