{
  "object_type": "agent_task_lifecycle_standard",
  "version": "2026-06-02.v1",
  "public_safe_note": "Lifecycle states are operator-visible and agent-readable. They do not expose private client data, secrets, wallet keys, or regulated records.",
  "terminal_states": [
    "callback_delivered",
    "failed",
    "closed"
  ],
  "settlement_sensitive_states": [
    "credit_pending",
    "credit_funded",
    "receipt_issued",
    "closed"
  ],
  "canonical_states": [
    {
      "state": "created",
      "meaning": "The agent task exists but has not entered the queue.",
      "entry_trigger": "Accepted run request or prepared task object.",
      "allowed_next_states": [
        "preflight_checked",
        "contract_ready",
        "queued",
        "failed"
      ]
    },
    {
      "state": "preflight_checked",
      "meaning": "The OS has checked capability fit and evidence readiness.",
      "entry_trigger": "Preflight check completed.",
      "required_links": [
        "preflight_url"
      ],
      "allowed_next_states": [
        "contract_ready",
        "trust_pending",
        "failed"
      ]
    },
    {
      "state": "contract_ready",
      "meaning": "The scope, evidence, outputs, metering, and callback policy are written.",
      "entry_trigger": "Run contract created.",
      "required_links": [
        "contract_url"
      ],
      "allowed_next_states": [
        "contract_accepted",
        "failed"
      ]
    },
    {
      "state": "contract_accepted",
      "meaning": "The requesting agent has accepted the run contract.",
      "entry_trigger": "Contract acceptance recorded.",
      "allowed_next_states": [
        "trusted",
        "trust_pending",
        "quoted"
      ]
    },
    {
      "state": "trust_pending",
      "meaning": "The agent is known and awaiting trust approval for the requested action.",
      "entry_trigger": "Trust profile needs review.",
      "allowed_next_states": [
        "trusted",
        "failed"
      ]
    },
    {
      "state": "trusted",
      "meaning": "The trust profile is approved for this run scope.",
      "entry_trigger": "Trust profile approved.",
      "required_links": [
        "trust_profile_url"
      ],
      "allowed_next_states": [
        "quoted"
      ]
    },
    {
      "state": "quoted",
      "meaning": "The run has an estimate or fixed credit cost.",
      "entry_trigger": "Quote generated.",
      "required_links": [
        "quote_url"
      ],
      "allowed_next_states": [
        "credit_pending"
      ]
    },
    {
      "state": "credit_pending",
      "meaning": "The quote exists and settlement confirmation is awaiting credit allocation.",
      "entry_trigger": "Settlement intent or payment request created.",
      "required_links": [
        "settlement_intent_url"
      ],
      "allowed_next_states": [
        "credit_funded",
        "failed"
      ]
    },
    {
      "state": "credit_funded",
      "meaning": "Provider confirmation or manual release funded the entitlement.",
      "entry_trigger": "Settlement webhook or operator funding approval.",
      "required_links": [
        "credit_entitlement_url"
      ],
      "allowed_next_states": [
        "queued"
      ]
    },
    {
      "state": "queued",
      "meaning": "The run is waiting for the runner or operating tool.",
      "entry_trigger": "Task accepted into queue.",
      "allowed_next_states": [
        "operating",
        "exception_open",
        "failed"
      ]
    },
    {
      "state": "operating",
      "meaning": "The OS or operating tool is processing the task.",
      "entry_trigger": "Runner begins work.",
      "allowed_next_states": [
        "evidence_partial",
        "result_ready",
        "exception_open",
        "failed"
      ]
    },
    {
      "state": "evidence_partial",
      "meaning": "The task lacks enough evidence for complete delivery.",
      "entry_trigger": "Evidence gate returns partial.",
      "allowed_next_states": [
        "exception_open",
        "replay_ready",
        "failed"
      ]
    },
    {
      "state": "result_ready",
      "meaning": "A machine-readable and human-readable result package is available.",
      "entry_trigger": "Result package generated.",
      "required_links": [
        "result_url"
      ],
      "allowed_next_states": [
        "attested",
        "receipt_issued"
      ]
    },
    {
      "state": "attested",
      "meaning": "The OS has produced a result attestation trail.",
      "entry_trigger": "Attestation created.",
      "required_links": [
        "attestation_url"
      ],
      "allowed_next_states": [
        "receipt_issued"
      ]
    },
    {
      "state": "receipt_issued",
      "meaning": "Credits consumed and usage receipt is issued.",
      "entry_trigger": "Usage receipt created.",
      "required_links": [
        "receipt_url"
      ],
      "allowed_next_states": [
        "callback_pending",
        "closed"
      ]
    },
    {
      "state": "callback_pending",
      "meaning": "Callback payload is ready or in delivery.",
      "entry_trigger": "Callback payload prepared.",
      "required_links": [
        "callback_payload_url"
      ],
      "allowed_next_states": [
        "callback_delivered",
        "exception_open",
        "failed"
      ]
    },
    {
      "state": "callback_delivered",
      "meaning": "The requesting agent or system received the result callback.",
      "entry_trigger": "Callback delivery confirmed.",
      "allowed_next_states": [
        "closed"
      ]
    },
    {
      "state": "exception_open",
      "meaning": "Something needs repair, evidence, retry, or operator review.",
      "entry_trigger": "Exception ticket opened.",
      "required_links": [
        "exception_url"
      ],
      "allowed_next_states": [
        "replay_ready",
        "failed",
        "closed"
      ]
    },
    {
      "state": "replay_ready",
      "meaning": "The run can be safely retried from a replay package.",
      "entry_trigger": "Replay package created.",
      "required_links": [
        "replay_package_url"
      ],
      "allowed_next_states": [
        "queued",
        "failed"
      ]
    },
    {
      "state": "failed",
      "meaning": "The run cannot continue without new action or a new contract.",
      "entry_trigger": "Failure declared by OS, tool, callback, or operator.",
      "allowed_next_states": [
        "replay_ready",
        "closed"
      ]
    },
    {
      "state": "closed",
      "meaning": "The task is complete, cancelled, or manually closed with a ledger trail.",
      "entry_trigger": "Closeout recorded.",
      "allowed_next_states": []
    }
  ]
}
