FlowDrop Workflow Specification 1.0-draft

An interrupt propagates unchanged

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

The status trail broadcast for an interrupting nodeinterrupted
["running", "interrupted"]
What the broadcast carries when nothing attaches an identityempty
{"interrupt_id": "", "interrupt_type": ""}
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 · ERR-4 · changed in spec 1.0