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
| State | Meaning |
|---|---|
BUILT | The exact unsigned transaction has been built and is awaiting a signature. |
AWAITING_APPROVALS | The request needs additional approver signatures before it can proceed (see Approval states). |
SIGNED | The required signature(s) have been collected. |
FINALIZED | The signed package has passed finalization checks (byte-identity re-verification, covenant-signature extraction, exact-fee re-verification). |
PREFLIGHT_VERIFIED | The finalized transaction passed a real virtual-machine preflight check before submission. |
SUBMITTING | The transaction is being submitted to the network. |
SUBMITTED | The transaction was accepted by the node for broadcast. This is not success — PolicyVault never treats SUBMITTED as a completed spend; see Transaction pending. |
CHAIN_VERIFIED | Terminal success: the network confirmed the transaction and PolicyVault independently verified the exact expected successor state on-chain. |
Fail-closed / recoverable states
| State | Meaning |
|---|---|
WALLET_REJECTED | The user declined the signing request in their wallet. |
SIGNATURE_INVALID | A returned signature failed verification. |
PREFLIGHT_FAILED | The virtual-machine preflight check rejected the transaction before submission — the covenant would have refused it. |
INSUFFICIENT_APPROVALS | The request was attempted without enough valid approver signatures to meet the threshold. |
AUTHORIZATION_FAILED | The signer was not authorized for the role it attempted to act in. |
BUILD_FAILED | The request could not be built at all (for example, a policy check failed — see Error codes). |
STALE | The vault's live state advanced since this request was built; it no longer applies to the current state and must be rebuilt. |
CLAIM_CONFLICT | A transition claim for the vault's current outpoint already exists (a durable-write safety conflict, not a chain failure). |
SUBMISSION_REJECTED | The node rejected the submission outright. |
RECONCILIATION_REQUIRED | The outcome is ambiguous from the durable record alone and requires reconciliation against actual chain state before it can be resolved either way. |
TERMINATED_UNKNOWN | Fail-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.