ActionBoxDOCS

Decisions and Outcomes

Understand terminal Action states, version-bound decisions, signed receipts, and reported execution outcomes.

An Action begins in open state and can become resolved, cancelled, or expired. Terminal state is immutable.

Version and fingerprint binding

Material changes advance action_version and change the canonical fingerprint. High-risk clients should send both values when resolving so a stale review fails closed.

Newly resolved Actions include a compact Ed25519-signed receipt bound to the Action ID, version, fingerprint, response, and resolution metadata. Fetch trusted public keys from:

https://api.actionbox.cloud/.well-known/actionbox-receipt-keys.json

Older terminal rows created before receipt support may not contain a receipt.

Execution outcomes

A human decision records authorization; it does not prove the software operation succeeded. After executing an approved operation, report one outcome for the exact resolved Action snapshot.

outcome = resolved.report_outcome(
    "success",
    duration_ms=48_312,
    rollback=False,
)

Exact retries are idempotent. A conflicting second outcome is rejected.

Webhook authenticity

Webhook transport uses a separate per-Source HMAC secret. Verify the exact raw callback body and timestamp as described in Webhooks and callbacks. Do not confuse the HMAC delivery signature with the offline-verifiable Ed25519 decision receipt.

On this page