{
  "title": "From a tool call to a tool result",
  "caption": "Original teaching trace. Playback timing is illustrative, not measured. This model does not specify every product's stop or retry policy.",
  "alt": "Flow diagram of the agent loop: the harness runs accepted tool calls, rejects cut-off ones, and returns both results to the next model call",
  "sources": [
    {
      "title": "Original author teaching trace",
      "file": "diagram.svg",
      "sha256": "1e1311facc666bc13e9b7be86451858bbcbfb9fa8a3a03ef938212c84c71fbd8"
    },
    {
      "title": "Pi v0.80.6 execution loop",
      "url": "https://github.com/earendil-works/pi/blob/v0.80.6/packages/agent/src/agent-loop.ts"
    },
    {
      "title": "Article evidence and version ledger",
      "file": "SOURCE.md"
    }
  ],
  "limitations": [
    "The preview-cache task, tool-call outcomes, and tool-result counts are constructed teaching examples.",
    "Playback duration is illustrative and does not measure model or tool latency.",
    "The rejected branch models a cut-off tool call and makes no claim that every error in every tool is free of side effects."
  ]
}
