Case status

How a case's status moves in the ops schema, as the code enforces it. Drawn from the code on November 8, 2026.

The short version

  1. Every case is born active, and no code ever changes its status after that.
  2. Closed, rejected and withdrawn exist in the schema, but nothing writes them.
  3. What stops a case counting is three timestamps: excluded, quarantined or archived.
ops.cases status machine as the code enforces it A lifecycle diagram generated by Archify. Retainer signed, no live case · no active case for claimant + campaign · Lifecycle state · birth branch 01 Retainer signed, no live case no active case for claimant + campaign birth branch Birth gate · duplicate, weak evidence, cross tort · Lifecycle state · runs before the INSERT 02 Birth gate duplicate, weak evidence, cross tort runs before the INSERT Counted signed case · active, not archived, not excluded · Lifecycle state · counts as signed 03 Counted signed case active, not archived, not excluded counts as signed Quarantined at birth · held and co-excluded in one INSERT · Lifecycle state · super_admin review queue Quarantined at birth held and co-excluded in one INSERT super_admin review queue Operator excluded · status still active, never counted · Lifecycle state · reversible Operator excluded status still active, never counted reversible Archived (soft delete) · archived_at set, exclusion kept · Lifecycle state · no un-archive writer found Archived (soft delete) archived_at set, exclusion kept no un-archive writer found closed, rejected, withdrawn · CHECK allows, no writer found · Lifecycle state · never written closed, rejected, withdrawn CHECK allows, no writer found never written birth branch no reason: born active reason set: born quarantined Approve / confirm_separate Reject Merge duplicate Exclude button Restore / evidence reopen no writer found Legend initial state waiting decision success failure / exit neutral final state

From you

nothing