FlowDrop Workflow Specification 1.0-draft

A gate pause leaves no phantom failure in the tool trail

A pause is not a failure, and the record of a tool call must not say otherwise; a mislabelled attempt either holds a finished run open or trips the run's unhandled-failure check.

The rule

Normative: this is the rule
  1. An interrupt escaping a tool invocation records the attempt as interrupted, not failed.
  2. When the call is resumed it records itself as a new attempt and closes the superseded interrupted one as cancelled, because an attempt left interrupted would hold a finished run paused.
  3. A failed tool call is recorded as a handled failure by construction (it is delivered to the consumer as a model-recoverable result), so it must not count towards the run's unhandled failures (ERR-9).
  4. One pause raises exactly one question, however many times the tool plane observes the same interrupt.

What it means

A paused tool call is not a failure sitting in the trail waiting to be relabelled. It is recorded as interrupted from the start, and resuming it does not simply flip that same record to a finished state: the interrupted attempt is closed out as cancelled, superseded by a new attempt of its own that carries the finished status. Two records, not one repurposed — and neither of them is ever a failure, so neither counts toward the run's unhandled failures.

Example

The tool's own record while the run sits paused on the gate:

The tool job while the run is paused on the gateinterrupted
{ "status": "interrupted", "output": {} }

The same node's two job records once the call is resumed:

The same node's job records once resumedreconciled
["cancelled", "completed"]
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 · RT-GATE-6 · changed in spec 1.0