Lifecycle states for an escrow transfer. Conventions match sibling tables
(withdrawal, deposit, swap, redemption): UPPERCASE_SNAKE_CASE, past-tense
terminal states, single PENDING for any in-flight transition.
PENDING — DB row created, on-chain create_escrow not yet confirmed
CREATED — on-chain escrow exists, recipient wallet not yet attached
CANCELLED — sender-initiated recall (terminal). Spelling matches
sibling enums (deposit, ledger_account_transfer both use the en-GB
double-L variant).
REJECTED — recipient- or authority-initiated rejection (terminal)
EXPIRED — auto-expired after 10 days (terminal)
FAILED — non-recoverable error during any transition (terminal)
The cross-cluster backfill collapses every legacy *ing intermediate to
PENDING; the original legacy value is preserved in the row's history
jsonb so nothing is lost.
Lifecycle states for an escrow transfer. Conventions match sibling tables (withdrawal, deposit, swap, redemption): UPPERCASE_SNAKE_CASE, past-tense terminal states, single
PENDINGfor any in-flight transition.PENDING— DB row created, on-chaincreate_escrownot yet confirmedCREATED— on-chain escrow exists, recipient wallet not yet attachedRECIPIENT_SET—update_escrowsucceeded, recipient wallet attachedCLAIMED— funds released to recipient (terminal)CANCELLED— sender-initiated recall (terminal). Spelling matches sibling enums (deposit,ledger_account_transferboth use the en-GB double-L variant).REJECTED— recipient- or authority-initiated rejection (terminal)EXPIRED— auto-expired after 10 days (terminal)FAILED— non-recoverable error during any transition (terminal)The cross-cluster backfill collapses every legacy
*ingintermediate toPENDING; the original legacy value is preserved in the row'shistoryjsonb so nothing is lost.