The step/handle outcomes, with shape validation.
{:next, step, state} # transition, runnable, attempt := 0
{:next, step, state, opts} # …with per-transition opts: rate_limit, weight
{:retry, state, delay_ms} # same step, runnable, attempt += 1, eligible_at += delay
{:await, names, next_step, state} # park; on any of `names`, run next_step
{:await, names, next_step, state, opts} # …with opts: timeout (ms; wake with what's
# in the inbox when it fires)
{:done, result} # terminal, done
{:stop, reason} # terminal, failedStep names and signal names are normalized to strings. :await accepts a single
name or a list of names; both normalize to a list. :next accepts an optional 4th
keyword opts (rate_limit:, weight:), :await an optional 5th (timeout:);
both normalize to an opts map in the tuple's last position.
Summary
Functions
The outcome's tag, for telemetry/metadata.