--- id: RT-TOOL-7 family: RT-TOOL level: extended profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/rt-tool/rt-tool-7 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # RT-TOOL-7 — A pause does not destroy artifacts, and does not deliver them twice *RT-TOOL (Part II) · level: extended · profiles: runtime · added in 1.0* ## The rule > **Normative.** This is the rule. > > 1. Artifacts produced before a run pauses are held durably against the turn that produced them rather than discarded, and are never exposed on the wire while they are held. > > 2. The next write-back for the same execution takes them, prepends them to whatever the resumed run collected, and delivers the merged list on the resumed turn's assistant message. > > 3. Taking is destructive, so a delivered artifact is never delivered a second time, and a resume that pauses again holds everything for the next one. > > 4. A write-back that fails after taking them puts them back before it reports the failure, so a failed write postpones delivery rather than destroying it. > > 5. The held list is itself bounded; where it would exceed the bound, the newest entries are dropped with a warning. ## What it means A pause is the hard case: a tool already ran and produced an artifact before the run stopped to ask a question, and there is no assistant message yet to carry it. The artifact is held rather than lost, but it stays off the wire while it waits — a caller polling the paused turn never sees it. Only the resume's write-back takes it, and taking it is destructive: once delivered on the resumed turn's assistant message, the same artifact is never handed out again, even if the run pauses a second time. ## Example ```json title="What is held against the paused turn" verdict="held" { "type": "link", "payload": { "url": "https://example.com/report" }, "tool_call_id": "call_1" } ``` Answering the question resumes the run and delivers it exactly once, on the resumed turn's assistant message; asking the same question again finds nothing left to deliver. ## Related rules - Names: RT-TOOL-4, RT-TOOL-6 - Referenced by: RT-TOOL-4, RT-TOOL-6 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.