<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Protocol-Repair on cameronqj</title>
    <link>https://cameronqj.com/tags/protocol-repair/</link>
    <description>Recent content in Protocol-Repair on cameronqj</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>Cameron Jones</copyright>
    <lastBuildDate>Sun, 14 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://cameronqj.com/tags/protocol-repair/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>local-tool-proxy</title>
      <link>https://cameronqj.com/projects/local-tool-proxy/</link>
      <pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://cameronqj.com/projects/local-tool-proxy/</guid>
      <description>An archived compatibility proxy for conservative repair of malformed local-model tool calls on raw-completion paths.</description>
      <content:encoded><![CDATA[<p><strong>Status:</strong> Concluded and archived<br>
<strong>Code:</strong> <a href="https://github.com/cameronqj/local-tool-proxy">github.com/cameronqj/local-tool-proxy</a></p>
<p>This started with a concrete failure: a local model expressed a tool call as JSON inside ordinary response text, while the client expected an OpenAI-style structured tool call.</p>
<p>The proxy repairs only a narrow class of responses. It checks the requested name and arguments against the tools declared by the client, then abstains when intent is unclear. On the companion 117-case raw-output corpus, version 0.1.0 reached 87.5% precision and 38.2% recall on recoverable cases, with two unsafe false positives. Real OpenCode samples still failed the final task-level check even when the protocol shape improved.</p>
<p>Later endpoint-controlled testing explained why. Current parsed chat endpoints already returned clean tool calls, including for the seed model. The proxy is therefore relevant mainly to raw-completion consumers and older or misconfigured serving stacks. It is archived because that scope is too narrow to justify an active compatibility layer.</p>
<h2 id="read-the-evidence">Read the evidence</h2>
<ul>
<li><a href="https://github.com/cameronqj/local-tool-proxy/blob/main/docs/experiment-log.md">Experiment log and failed task verification</a></li>
<li><a href="https://github.com/cameronqj/local-tool-proxy/blob/main/docs/model-stops-using-tools-analysis.md">Where protocol repair stops helping</a></li>
<li><a href="https://github.com/cameronqj/toolcall-repair-bench/blob/main/findings/README.md">Serving-stack scope correction</a></li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
