Batch status workflow
The lifecycle of a batch — what each status means, when it changes automatically, and what requires a motivated override.
Lifecycle
draftmanualquarantineQC passreleasedauto: qty=0consumed
Side branches:quarantineinvestigateholdresolvedreleased·quarantineQC failrejected
Statuses
| Status | Meaning | Allows | How it gets set |
|---|---|---|---|
| draft | Newly created. Not yet inspected or approved. | Edit, split, combine, transform. Sale requires override. | Set on creation. |
| quarantine | Awaiting QC sign-off — analytes pending or in review. | Edit, split, combine, transform. Sale requires override. | Manual. |
| hold | Temporarily blocked (investigation, customer dispute…). | Edit allowed. Movements/sales require override. | Manual. |
| released | Cleared for sale and downstream use. | All actions allowed without override (unless expired). | Manual — typically after passing QC. |
| consumed | Quantity is zero. No further actions possible. | Read-only. Hard-blocked from sale/movement. | Auto when quantity reaches zero via sale, split, combine or transform. |
| rejected | Failed QC or non-conforming. Cannot be sold or processed. | Read-only. Hard-blocked from sale/movement. | Manual. |
Transitions
| From | To | Trigger | Audit |
|---|---|---|---|
| draft | quarantine | Manual — when sent for QC. | Reason required. |
| quarantine | released | Manual — after QC pass. | Reason required. |
| quarantine | hold | Manual — investigation needed. | Reason required. |
| quarantine | rejected | Manual — QC failure. | Reason required. |
| hold | released | Manual — issue resolved. | Reason required. |
| hold | rejected | Manual — confirmed non-conforming. | Reason required. |
| released | consumed | Auto — quantity drawn down to zero. | Reason logged automatically. |
| any | consumed | Auto — split/combine/transform fully draws down parent. | Reason logged automatically. |
Override rules
Hard blocks (cannot override)
Selling, splitting, combining or transforming a consumed or rejected batch is never allowed.
Soft blocks for sales
Selling a batch in draft, quarantine or hold, or any expired batch, requires an explicit override + justification of at least 10 characters. The override is written to the audit log.
Soft blocks for movements (split / combine / transform)
If the batch's product line declares target assays, every required analyte must have a passing lab result. Missing analytes trigger a soft-block warning that can be overridden with a motivated justification (≥ 10 chars), recorded in the audit log.