Each attempt has its own execution state. Retrying creates a new attempt identifier under the same task; it never reopens the failed attempt. Delivery, acceptance and payment are separate axes so that operational dashboards do not confuse these outcomes.
Swipe or scroll to view all columns →
| Attempt state | Meaning | Permitted next states |
|---|---|---|
| submitted | Attempt recorded; executor acceptance pending | accepted, rejected, cancelled |
| accepted | Executor accepted valid work and authority | running, failed, cancelled, expired |
| running | Work has started under the lease | delivered, failed, cancelled, expired |
| delivered | An authorized output submission was durably recorded | None on this execution axis |
| rejected | Executor did not accept the attempt | None |
| failed | Execution failed with a recorded reason | None |
| cancelled | Cancellation confirmed for the attempt | None |
| expired | Execution authority or deadline expired | None |
State invariants#
STATE-01 A transition MUST compare the current state version, check the active lease where applicable and commit its event atomically. STATE-02 Terminal execution records are immutable. Later evaluation or dispute records reference them. STATE-03 A delivered attempt is not automatically an accepted result or a paid task.
Delivery submission checks structural validity, authorization, current attempt and accessible output metadata. Acceptance then checks identity evidence, content integrity and the frozen evaluation rules. Content that later fails evaluation remains associated with the delivered attempt for investigation.
Event ordering#
Every state event includes event_id, task_id, attempt_id where applicable, entity_type, previous_state, next_state, sequence, recorded_at and actor identity. Sequence is strictly increasing within its declared entity stream; timestamps do not define a global event order. Consumers deduplicate by event_id and reconcile gaps against authoritative state.
This separated state model refines the earlier design draft, which presented validated and settled in one linear sequence. It changes proposed network semantics only; reference 0.2 has no network state machine.