--- id: ERR-4 family: RT-ERR level: extended profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/rt-err/err-4 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # ERR-4 — An interrupt propagates unchanged *RT-ERR (Part II) · level: extended · profiles: runtime · added in 1.0* An interrupt is a request for something outside the run (human input, an external resolution), not a failure. Treating it as one would route it down an error edge. ## The rule > **Normative.** This is the rule. > > 1. A node that interrupts sets its status to interrupted, the interrupt is announced, and the interrupt itself propagates unchanged to the caller. > > 2. It is never converted into an error output and never takes an error edge. ## What it means An interrupt is not a third kind of failure sitting between ERR-1 and ERR-3 — it gets its own status, distinct from both, and it must reach the caller as the exact object the node raised, not wrapped or replaced, because whatever resolves the interrupt needs its own identity intact. That identity is read from whatever attached itself to the interrupt along the way, not fixed by the node itself: a run with nothing attached still pauses, carrying empty identity fields rather than failing where a stricter reading might expect one. ## Example ```json title="The status trail broadcast for an interrupting node" verdict="interrupted" ["running", "interrupted"] ``` ```json title="What the broadcast carries when nothing attaches an identity" verdict="empty" {"interrupt_id": "", "interrupt_type": ""} ``` ## Related rules - Names: ERR-1, ORC-13 - Referenced by: ORC-13 --- 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.