--- id: ERR-3 family: RT-ERR level: core profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/rt-err/err-3 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # ERR-3 — A failure that is not node-level fails the run *RT-ERR (Part II) · level: core · profiles: runtime · added in 1.0* ## The rule > **Normative.** This is the rule. > > 1. A failure that is not converted into an error output escapes the node: the node is recorded as failed, no output exists for it, no error edge is followed, and the run fails. > > 2. The failure reported to the caller preserves the original cause. ## What it means A failure that never becomes a routable error output is not a milder version of ERR-1's outcome — it is the escape hatch that has to exist for an error edge to mean anything at all. The node itself is recorded failed, and no output exists for it, so there is nothing an error edge could route to, however the workflow wires the node downstream: the run fails outright. What does carry forward is the original cause — the failure reported to the caller keeps it, rather than a generic message that discards where the failure actually came from. ## Example The same kind of node run as ERR-1, but with a failure the runtime does not convert. ```json title="The status trail broadcast for an escaping failure" verdict="failed" ["running", "failed"] ``` Contrast ERR-1's trail for a converted failure: it never reaches `failed`. ## Related rules - Names: ERR-1, ERR-8 - Referenced by: ERR-1 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.