- driver: tool_results arrive as type:'user' content blocks (not bare); parse them - route: tool_result content is a JSON string; parse it for pending_change_id → draft event - propose_change: inject ctx.space_id into create payloads (model can't know the uuid; tables require it) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>