spike/m0.py is throwaway. Findings are in docs/inference-contract.md:
cache reuse and tool parsing pass through chat-completions, the tools
array must stay fixed per epoch, and the shared router cannot meet the
slot contract. Clean throughput and slot pinning are still open because
another session was using the GPU.
docs/decisions.md lists the brief changes this implies as proposals.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>