Developers

Run lifecycle and uncertain effects

A completed HTTP request is not necessarily a completed business action. Track execution progress, verification results, and system effects separately so applications can distinguish completion from an unresolved operation.

Developers · Technical architectsInspect the invoice workflow

Track three different facts

Execution state describes what the runtime is doing. Verification state describes whether the required checks established a passing result. Effect state describes what is known about the destination system. Collapsing these into one success flag loses information when a write response is interrupted.

For example, a run may have completed verification, attempted the authorized write, and entered reconciliation because the response was lost. Reporting an ordinary failure would invite an unsafe retry; reporting completion would invent confirmation.

json
{
  "sample": true,
  "run_id": "sample_run_001",
  "state": "reconciling",
  "verification_status": "passed",
  "effect_status": "unknown",
  "operation_id": "sample_operation_001"
}

Progress states

StateMeaning
queuedAccepted for processing; no business effect claimed.
runningPreparing context or producing a candidate result.
verifyingEvaluating the required checks.
actingAttempting the authorized system operation.
reconcilingChecking the outcome of an uncertain operation.
needs_inputAdditional evidence or a policy decision is required.
completedThe specific contract boundary has been fulfilled.
failedProcessing ended unsuccessfully; inspect effect status separately.

Completion depends on the contract

For a read-only contract, a verified output may be enough. For invoice.create_draft, completion also requires confirming the saved bill. The receipt should identify which definition applied, rather than treating every completed run as a system mutation.

A destination may expose a committed write before all read replicas reflect it. The integration design must define which confirmation source is authoritative and how to bound reconciliation. Repeated model calls do not resolve an uncertain database effect.

Cancellation and deadlines cannot undo history

A cancellation request can stop future work where possible; it cannot prove that an already submitted mutation did not happen. Similarly, a deadline tells the caller how long it waited, not whether the destination committed. Final state should retain that distinction.

Applications should display an unresolved operation as unresolved and preserve its identifier for investigation. A later reconciliation can add confirmed evidence. It should not erase the earlier uncertainty or create a second business action under a fresh run.

Missing a detail or found a problem?

Send a documentation question →

Define the first outcome together.

Talk through its inputs, decision boundaries, and definition of completion with the team.

Inspect the invoice workflow

Search Outcomatic

Search products, documentation, articles, and help.

Open full search pageEsc to close

Analytics preferences

Optional analytics help us understand which pages and journeys are useful. They are off by default.

When enabled, we count page views and selected actions by page and day. We do not store visitor identifiers, search terms, form contents, or cookies in analytics. Your browser’s Do Not Track or Global Privacy Control signal takes priority.

Allow anonymous aggregate analytics?

Read the website privacy notice