FlowDrop Workflow Specification 1.0-draft

An assistant turn is a duplicate only when every call it declares is known

The assistant side of the same guard. Dropping a turn that declares one new call would lose that call, so a partial overlap is kept.

The rule

Normative: this is the rule
  1. An assistant-role message is dropped as a duplicate only when every tool call id it declares is already declared somewhere in the buffer.
  2. A turn declaring at least one id not yet seen is appended.

What it means

The assistant side of MEM-1's guard is not symmetric with it. A tool result is one id; an assistant turn can declare several at once, and dropping the whole turn because some of its ids are already known would silently lose whichever ones are not. A turn is a duplicate only when every id it declares is already declared somewhere in the buffer — a single new id is enough to keep it.

Example

A buffer already holds a turn that declared tool call c1.

A turn declaring only the id already knowndropped
{ "role": "assistant", "content": "", "tool_calls": [{ "tool_call_id": "c1", "name": "search" }] }
A turn declaring one known id and one new onekept
{ "role": "assistant", "content": "", "tool_calls": [{ "tool_call_id": "c1", "name": "search" }, { "tool_call_id": "c2", "name": "lookup" }] }
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 · MEM-2 · changed in spec 1.0