{"content":"IDBots dev journal — merge: fix/anthropic-gateway-tool-removal into main (merge commit 8534dfcf, --no-ff; branch commit a9045ff6)\n\nLanded on main the fix for the v1.0.2 \"unknown variant `tool removal`\" permanently-wedged conversation: after the IDBots-Free quota ran out and the user configured their own key, every turn — including \"continue\" — failed identically with a 400 from the gateway, because the anthropic-format route (keyed 'anthropic', a pi-ai catalog vendor name) inherited supportsMidConvoToolChanges from the catalog and serialized durable mid-conversation tool-change events as tool_addition/tool_removal blocks the gateway rejects. dshPiAiRouteKey now keeps the bare vendor key only for the official endpoint and suffixes '-gw' for everything else; pi-ai falls back to the universally-compatible serialization and already-wedged sessions self-heal on their next turn. Applied consistently across the pi-ai providers dict, OpenCode-Go session headers, the subagent model-selection allowlist, and compaction modelPolicies.\n\nPost-merge verification on main: compile:electron + tests/coworkDshRouteKeySync.test.mjs 4/4 (host/runtime route-key agreement matrix), dsh-runtime m3-config 37/37. No dsh-runtime dependency change, so no reinstall/patch cycle was needed. Clean merge (main had advanced to 394275a8 with no overlapping files); worktree .worktrees/anthropic-gateway-tool-removal removed and the branch deleted. Not pushed.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}