{
  "version": 1,
  "language": "en",
  "title": "Reasoning pauses for a tool",
  "description": "This example has a queue, prefill, reasoning, a tool wait, more reasoning and an answer. History retention is different from active model computation. The exact hosted sequence and cache management stay unknown.",
  "caption": "This request example has visible output, model work, tool waits and retained history. Until the answer, the user may see only an optional preamble. A tool wait is different from active model computation. Longer work can keep state for a longer time, but the exact hosted sequence and retention stay unknown. The author made this explanatory diagram with example playback, and animation time is not measured runtime.",
  "alt": "Request flow: the model continues reasoning after a tool wait, then generates an answer. Computation and retained history are in different lanes.",
  "sources": [
    {
      "path": "content/blog/2026-07-22_reasoning-effort-inference-systems/post.md",
      "description": "Article explanation and retained source citations"
    }
  ],
  "limitations": [
    "The execution is an example. Playback duration is not measured runtime.",
    "State-owner changes are examples, not measurements or a description of a proprietary KV/cache scheduler. Tool latency and animation time are independent."
  ],
  "targets": {
    "queue": {
      "id": "mechanism-queue",
      "kind": "node",
      "label": "Queue"
    },
    "prefill": {
      "id": "mechanism-prefill",
      "kind": "node",
      "label": "Prefill"
    },
    "reasonA": {
      "id": "mechanism-reasonA",
      "kind": "node",
      "label": "Reason A"
    },
    "call": {
      "id": "mechanism-call",
      "kind": "node",
      "label": "Tool call"
    },
    "tool": {
      "id": "mechanism-tool",
      "kind": "node",
      "label": "External tool"
    },
    "finish": {
      "id": "mechanism-finish",
      "kind": "node",
      "label": "Complete"
    },
    "answer": {
      "id": "mechanism-answer",
      "kind": "node",
      "label": "Answer"
    },
    "reasonB": {
      "id": "mechanism-reasonB",
      "kind": "node",
      "label": "Reason B"
    },
    "admit": {
      "id": "mechanism-admit",
      "kind": "edge",
      "label": "admit the request"
    },
    "promptReason": {
      "id": "mechanism-promptReason",
      "kind": "edge",
      "label": "start reasoning"
    },
    "reasonCall": {
      "id": "mechanism-reasonCall",
      "kind": "edge",
      "label": "call the tool"
    },
    "executeTool": {
      "id": "mechanism-executeTool",
      "kind": "edge",
      "label": "operate the tool"
    },
    "resume": {
      "id": "mechanism-resume",
      "kind": "edge",
      "label": "continue reasoning"
    },
    "respond": {
      "id": "mechanism-respond",
      "kind": "edge",
      "label": "give the answer"
    },
    "cleanup": {
      "id": "mechanism-cleanup",
      "kind": "edge",
      "label": "release state"
    }
  },
  "stateLabels": {
    "phase": "Request phase",
    "state": "Request-state role",
    "model": "Model work",
    "user": "User-visible progress"
  },
  "scenarios": [
    {
      "id": "one-tool",
      "title": "Request with a tool",
      "description": "This request example uses an external tool.",
      "initial": {
        "phase": "Not admitted",
        "state": "Metadata only",
        "model": "No model work",
        "user": "Answer pending"
      },
      "unselected": [],
      "steps": [
        {
          "title": "Put the request in the queue",
          "description": "The request enters the queue.",
          "duration": 3000,
          "active": [
            "queue"
          ],
          "paths": [],
          "state": {
            "phase": "Queued",
            "state": "Request metadata",
            "model": "No model work",
            "user": "Answer pending"
          }
        },
        {
          "title": "Prefill the prompt",
          "description": "Prefill uses the prompt.",
          "duration": 3000,
          "active": [
            "prefill"
          ],
          "paths": [
            "admit"
          ],
          "state": {
            "phase": "Prefill",
            "state": "Active context",
            "model": "Prompt computation",
            "user": "Answer pending"
          }
        },
        {
          "title": "Generate reasoning before the tool",
          "description": "The model generates reasoning before the tool call.",
          "duration": 3000,
          "active": [
            "reasonA"
          ],
          "paths": [
            "promptReason"
          ],
          "state": {
            "phase": "Reason A",
            "state": "Active context",
            "model": "Reasoning",
            "user": "Answer pending"
          }
        },
        {
          "title": "Give tool arguments",
          "description": "The model generates the tool-call arguments.",
          "duration": 3000,
          "active": [
            "call"
          ],
          "paths": [
            "reasonCall"
          ],
          "state": {
            "phase": "Tool call",
            "state": "History retained",
            "model": "Call argument generation",
            "user": "Answer pending"
          }
        },
        {
          "title": "Wait for external work",
          "description": "The external tool does its work.",
          "duration": 3000,
          "active": [
            "tool"
          ],
          "paths": [
            "executeTool"
          ],
          "state": {
            "phase": "External tool wait",
            "state": "History retained",
            "model": "This example does not claim active model work.",
            "user": "Answer pending"
          }
        },
        {
          "title": "Continue with the result",
          "description": "The model continues reasoning with the tool result.",
          "duration": 3000,
          "active": [
            "reasonB"
          ],
          "paths": [
            "resume"
          ],
          "state": {
            "phase": "Reason B",
            "state": "Active context",
            "model": "Resumed model work",
            "user": "Answer pending"
          }
        },
        {
          "title": "Generate the visible answer",
          "description": "The model generates the visible answer.",
          "duration": 3000,
          "active": [
            "answer"
          ],
          "paths": [
            "respond"
          ],
          "state": {
            "phase": "Visible answer",
            "state": "Active context",
            "model": "Visible decoding",
            "user": "Useful output"
          }
        },
        {
          "title": "Complete the request",
          "description": "The request ends, and its state is released.",
          "duration": 3000,
          "active": [
            "finish"
          ],
          "paths": [
            "cleanup"
          ],
          "state": {
            "phase": "End",
            "state": "Released",
            "model": "No model work",
            "user": "End of response"
          }
        }
      ]
    }
  ]
}
