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
StatusMeaningAllowsHow it gets set
draftNewly created. Not yet inspected or approved.Edit, split, combine, transform. Sale requires override.Set on creation.
quarantineAwaiting QC sign-off — analytes pending or in review.Edit, split, combine, transform. Sale requires override.Manual.
holdTemporarily blocked (investigation, customer dispute…).Edit allowed. Movements/sales require override.Manual.
releasedCleared for sale and downstream use.All actions allowed without override (unless expired).Manual — typically after passing QC.
consumedQuantity is zero. No further actions possible.Read-only. Hard-blocked from sale/movement.Auto when quantity reaches zero via sale, split, combine or transform.
rejectedFailed QC or non-conforming. Cannot be sold or processed.Read-only. Hard-blocked from sale/movement.Manual.
Transitions
FromToTriggerAudit
draftquarantineManual — when sent for QC.Reason required.
quarantinereleasedManual — after QC pass.Reason required.
quarantineholdManual — investigation needed.Reason required.
quarantinerejectedManual — QC failure.Reason required.
holdreleasedManual — issue resolved.Reason required.
holdrejectedManual — confirmed non-conforming.Reason required.
releasedconsumedAuto — quantity drawn down to zero.Reason logged automatically.
anyconsumedAuto — 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.