Execution model

An instance progresses from explicit graph dependencies. A node becomes executable only when its active path and predecessors allow it; independent branches may advance in parallel, and a wait suspends the instance without losing state or replaying already-completed steps.

Instance lifecycle

StateMeaning
runningThe instance can continue execution.
waitingThe instance is waiting for a deadline, interaction, event, or child execution.
stoppingA stop was requested while active execution still needs to yield cleanly.
completedThe process reached successful completion and its output is available.
failedA terminal error prevents this attempt from continuing.
retry_exhaustedA replayable operation exhausted its durable retry budget.
supersededA corrective continuation replaced this instance in its lineage.
stoppedThe instance was explicitly stopped.

These states describe execution of a process_instance. They are not the business statuses of the order, invoice, Return, or any other resource handled by the process.

The instance list lets you compare statuses, progress, and trigger modes.
The instance list lets you compare statuses, progress, and trigger modes. Enlarge

Persisted step states

An instance's durable history stores a step when a node reaches an observable result. The current persisted states are listed below; a node that has not yet been reached does not need a step pending to be materialized.

StateMeaning
completedThe node completed and its durable outputs are available.
waitingThe node materialized a wait and will resume when that wait is satisfied.
failedThe node could not produce a usable output for this attempt.
skippedThe node was not executed because its branch is inactive or an ancestor made this path impossible.
cancelledA wait or still-active step was interrupted, for example when stopping an instance.
Graph state ≠ persisted step state

The editor or observability UI may visually represent a node as ready, running, or not yet reached. The persisted step contract remains centered on the durable outcomes above.

Dependencies and parallelism

A completed
B branche 1
C branche 2
D attend B + C

After A, B and C have no dependencies on each other and may advance independently. D becomes available only once its active predecessors are satisfied.

In a linear path A → B → C, order is strict. When several active branches leave the same point and have no dependency between them, their execution may overlap; do not rely on implicit ordering between parallel branches.

At convergence, the downstream node waits for predecessors actually belonging to the active path. The same structure is used to verify guaranteed ancestors.

Routing and inactive branches

A router node selects an explicit continuation. Unselected branches are not executed; descendants that are no longer reachable become skipped. The selected route is part of this node execution's result and remains stable when the instance resumes after a wait.

An output produced only in a conditional branch does not therefore automatically become available after convergence. See Routing and decisions.

Suspension and resumption

A durable wait puts the relevant step and instance into waiting. State required for continuation is preserved; when the expected signal arrives, the instance resumes from that wait instead of restarting from the beginning.

FamilleWhat can be awaited
TimerWait or durable retry until a deadline.
User actionForm, choice, display, or extension interaction presented to the participant.
ApprovalHuman decision carried by an `approval_request`.
EventWait for a correlated platform or extension event.
Subworkflow / ForeachWait for one or more child instances according to configured policy.
Agent RunWait for internal completion of an Agent task.
External TaskWait for a typed result supplied by an authorized external service.

A successful wait produces the node output, then unblocks continuations depending on it. Steps already completed completed remain completed and are not replayed merely because the instance was suspended.

Errors and propagation

When a node fails definitively, its step becomes failed and continuations depending on that result are not executed. An independent branch already executable is not retroactively turned into failure because another branch encountered an error.

Before making failure terminal, Ormuz may schedule a durable retry when the error is explicitly classified as replayable and the operation is safe to replay. During that retry wait, the node remains waiting. Retry budget and idempotency guarantees are detailed in Errors, retries, and idempotency.

An unknown error is not automatically replayed

The runtime does not assume a write operation is safe to replay. An error must be recognized as transient and the operation must satisfy the replay guarantees required to enter durable retry.

Process state vs business state

Some process-owned resources — for example onboarding, dispute, or Return — keep the relationship with the instance handling them. This relationship never equates instance status with resource status.

completed means the process contract completed correctly; it must not be interpreted as “invoice paid”, “Return accepted”, or “onboarding approved” without the corresponding business transition. Likewise, stopping the instance does not automatically invent a business cancellation.