Walk through the Incident state model.
New → In Progress → On Hold → Resolved → Closed, with Canceled as a terminal side-branch. Resolved requires close_code + close_notes; Closed is set by a scheduled job (default 7 days after resolution).
- State field is `incident_state` (integer). Values: 1 New, 2 In Progress, 3 On Hold, 6 Resolved, 7 Closed, 8 Canceled.
- `On Hold` requires a `hold_reason` (Awaiting Caller, Awaiting Change, Awaiting Problem, Awaiting Vendor).
- Moving to Resolved requires close_code and close_notes — enforced by the 'Incident state' UI Policy + a Business Rule.
- Closed is normally set by the 'Incidents auto-close' scheduled job. Users cannot re-open a Closed incident; they must create a new one linked via `parent_incident`.