A pause does not destroy artifacts, and does not deliver them twice
The rule
Normative: this is the rule
- 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.
- 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.
- 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.
- 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.
- 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
{ "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.
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-7 · changed in spec 1.0