Request states

The exact states a spend or policy request moves through, from build to confirmed chain proof or a specific failure.

Every request (a spend, a policy change, or another covenant operation) moves through the pipeline intent → build → sign → finalize → submit → reconcile, and its state is always one of the following — never an ambiguous or generic "failed."

Progress states

StateMeaning
BUILTThe exact unsigned transaction has been built and is awaiting a signature.
AWAITING_APPROVALSThe request needs additional approver signatures before it can proceed (see Approval states).
SIGNEDThe required signature(s) have been collected.
FINALIZEDThe signed package has passed finalization checks (byte-identity re-verification, covenant-signature extraction, exact-fee re-verification).
PREFLIGHT_VERIFIEDThe finalized transaction passed a real virtual-machine preflight check before submission.
SUBMITTINGThe transaction is being submitted to the network.
SUBMITTEDThe transaction was accepted by the node for broadcast. This is not success — PolicyVault never treats SUBMITTED as a completed spend; see Transaction pending.
CHAIN_VERIFIEDTerminal success: the network confirmed the transaction and PolicyVault independently verified the exact expected successor state on-chain.

Fail-closed / recoverable states

StateMeaning
WALLET_REJECTEDThe user declined the signing request in their wallet.
SIGNATURE_INVALIDA returned signature failed verification.
PREFLIGHT_FAILEDThe virtual-machine preflight check rejected the transaction before submission — the covenant would have refused it.
INSUFFICIENT_APPROVALSThe request was attempted without enough valid approver signatures to meet the threshold.
AUTHORIZATION_FAILEDThe signer was not authorized for the role it attempted to act in.
BUILD_FAILEDThe request could not be built at all (for example, a policy check failed — see Error codes).
STALEThe vault's live state advanced since this request was built; it no longer applies to the current state and must be rebuilt.
CLAIM_CONFLICTA transition claim for the vault's current outpoint already exists (a durable-write safety conflict, not a chain failure).
SUBMISSION_REJECTEDThe node rejected the submission outright.
RECONCILIATION_REQUIREDThe outcome is ambiguous from the durable record alone and requires reconciliation against actual chain state before it can be resolved either way.
TERMINATED_UNKNOWNFail-closed: PolicyVault could not positively verify what happened to this request.

What never happens

A request never silently disappears, and a stage never marks success without the next stage's proof — builders never broadcast, and finalizers never mark chain state changed. A crash at any point in this pipeline leaves a durable, recoverable record in one of the states above, never an ambiguous gap.

See also: Vault states, Approval states, Troubleshoot a pending request.