FlowDrop Workflow Specification 1.0-draft

A tool node emits artifacts on a reserved key that never reaches the model

The rule

Normative: this is the rule
  1. A tool node's output may carry the reserved artifacts key, a list of {type, payload} maps.
  2. It is a system channel, exempt from output-port exposure, and so survives whether or not the author exposed the port.
  3. On a successful call those entries are lifted off the node's output and attached to the tool result: an entry with a string type and a map payload is kept, and any other entry is dropped without failing the call.
  4. The reserved key is always removed from the result's data, so it never reaches the prose a tool-consuming node feeds the model.
  5. A call that failed or was declined carries no artifacts.

What it means

The reserved key is not a strict channel: an author can put anything on it, and a malformed entry does not fail the call — it is silently dropped, and the well-formed entries beside it still get through. Only an entry with both a string type and a map payload survives; a bare string, an entry missing type, or a payload that is not a map is discarded on its own, without touching its neighbours. Whatever happens to the entries, the reserved key itself is always stripped from the node's output before that output becomes the result's data — even a node that emitted nothing valid on it still loses the key from data.

Example

A node's output carries four entries on the reserved key: a bare string, one missing its type, one whose payload is not a map, and one well-formed.

What the node's output carries on the reserved keymixed
[
  "not-an-array",
  { "type": "", "payload": { "a": 1 } },
  { "type": "link", "payload": "not-an-array" },
  { "type": "link", "payload": { "url": "https://ok.example.com" } }
]
What the tool result's artifacts holdlifted
[{ "type": "link", "payload": { "url": "https://ok.example.com" } }]
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-2 · changed in spec 1.0