FlowDrop Workflow Specification 1.0-draft

A tool-calling pass reports whether it did any work

An all-repeat pass returns a full list of tool messages and a successful outcome while having invoked nothing, so an agent loop gated on "messages non-empty" re-enters forever. This is the port that answers the question directly.

The rule

Normative: this is the rule
  1. A node that invokes tools reports executed_any, a boolean, and executed, the call identifiers behind it, the complement of the skipped list.
  2. executed_any is true when at least one call was handled for the first time in this run, which includes a call naming a tool that is not wired: nothing was invoked, but the recoverable "not an available tool" result is new and the model must re-plan against it.
  3. An empty batch reports false.
  4. The two lists partition only the calls that reach the guard: a call with no identifier always runs and appears in neither while setting executed_any, and a malformed call (one that is not a map, or whose name is blank or not a scalar) is dropped before the guard, appears in neither, and leaves executed_any false.
  5. executed_any is exposed by default; executed is not.
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-TOOL-10 · changed in spec 1.0