Automation ↔ NOT_REPORTABLE, Auditor ↔ REPORTABLE, Insufficient Data ↔ MANUAL_REVIEW), so do not branch twice on both for the same if/else.
How queues are assigned and rolled up: Routing & Queues.
Queue → recommended action
Use when you consume queue (alone or with decision).
Rollup priority:
Insufficient Data > Auditor > Automation. One charge in Insufficient Data escalates the case, court, and search.
Decision → recommended action
Use when you consume decision (alone or with queue). At aggregated levels (record_decision, court_decision, case_decision), decision mirrors queue:
Per-charge
charge_decision works the same way for offense-level reportability. Note: identity match can change queue relative to a naive decision-only rule — if your workflow is desk/routing based, prefer the queue tables instead.
Using rationale, cited_rules, and citations
These live on each offense underdecision.court_decisions[].case_decisions[].offenses[]:
For Auditor / REPORTABLE paths, treat these three fields as the default audit packet alongside identity match (
id_match) and routing detail.
For Automation / NOT_REPORTABLE, you usually do not need a human to read them — still persist them for audit trails.
For Insufficient Data / MANUAL_REVIEW, prefer validation.issues for what is missing; use rationale for the narrative why automation stopped.
Resubmit vs human review
Resubmission is optional. Most integrations send one evaluate and stop. Details: Resubmission Workflow.
