An error edge routes a failure instead of raising it
The rule
Normative: this is the rule
- An edge whose source handle ends with
-output-erroris an error edge. - When a node that has one fails, the failure is routed rather than raised: the node's job is recorded as failed and marked as having been routed, the node yields an error payload of
{message, code, node_id, retryable}, and the run continues along the error edge.
What it means
A failing step whose failure has somewhere to go does not raise it: the run continues down the error wire instead, carrying a payload built for that purpose rather than the step's own output. The step is still recorded as having failed — routing a failure is not the same outcome as the step succeeding — but that failure is marked as having been routed, so a resume does not treat it as the kind of failure that stops the run.
Example
A step named boom fails, and carries one outgoing wire from its error
output:
{ "source": "boom", "source_handle": "boom-output-error", "target": "handler", "target_handle": "handler-input-input" }"boom blew up"The payload's node_id is boom; the step's job is recorded as failed and
marked as routed, never as completed.
Without that wire, the same failure is never routed: it stops the run instead.
Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · EDGE-6 · changed in spec 1.0