## What changed ## Why ## How I verified ## Notes for future me ## Pre-merge checklist - [ ] All tests pass locally (`pytest -v`) - [ ] If this changes the eval pipeline, I re-ran a subset and recorded the number - [ ] If this touches the sandbox or LLM client, the new behavior is covered by a test - [ ] No secrets or API keys committed