c0e3e901d0
Closes brain-retro 2026-05-20 #7 — each tool_result.is_error now emits { kind:'error', tool:<name>, summary:<first 80 chars> }. Allows aggregation by tool (Bash/Edit/Read) + cause prefix (ENOENT/timeout/ 'String to replace not found'). Required updating existing 'emits error events for tool_result with is_error' test assertion (old shape had bare 'message' field). 4 new vitest tests + 1 existing relaxed, 286/286 GREEN. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>