Transaction statuses
The Consensus v0.6 contracts define 14 numeric status values. A transaction has one stored, materialized status. Time-dependent lifecycle projection and the next resolution action are separate fields; finalization readiness is never synthesized as another status.
| Code | Status | Meaning |
|---|---|---|
| 0 | Uninitialized | No transaction is initialized for this ID. |
| 1 | Pending | The transaction is queued and waiting for activation. |
| 2 | Proposing | A leader is assigned and must propose an execution receipt. |
| 3 | Committing | The committee is submitting encrypted vote commitments. |
| 4 | Revealing | Committee members are revealing their committed votes. |
| 5 | Accepted | The committee accepted the proposed receipt; the appeal window is open. |
| 6 | Undetermined | The round did not reach a result and no funded rotation remained; a leader appeal is possible. |
| 7 | Finalized | The appeal process is complete and finalization was recorded. |
| 8 | Canceled | The transaction was canceled before completing consensus. |
| 9 | AppealRevealing | A fresh validator-appeal committee is revealing votes. |
| 10 | AppealCommitting | A fresh validator-appeal committee is committing votes. |
| 11 | ValidatorsTimeout | A validator majority reported that validation timed out; the appeal window is open. |
| 12 | LeaderTimeout | The leader reported an execution timeout; the appeal window is open. |
| 13 | LeaderRevealing | The leader must reveal execution data and keys before committee vote reveals. |
Status is not execution success
Accepted means the validator committee reached consensus on the receipt. The receipt itself can represent a successful return, a user error, a GenVM error, or a timeout. Inspect the receipt's execution result in addition to its consensus status.
Similarly, Finalized means the decided receipt is no longer appealable. It does not convert an error result into a successful contract call.
Stored status and lifecycle projection
gen_getTransactionStatus returns only the exact stored status. A deadline passing does not change that response until a protocol action materializes a transition.
Advanced tooling can use gen_getTransactionLifecycle to read the stored status, its time-dependent projection, the active decision, and the resolution kernel's next action from one snapshot. When an appeal window has elapsed, the stored and projected statuses can both remain Accepted while resolutionAction is Finalize. There is deliberately no ReadyToFinalize status and no parallel canFinalize boolean.
Use the numeric codes for program logic and display the names to users. Bind decision-scoped actions only when the lifecycle response reports an active, non-null decisionId.