The same model (claude-sonnet-5-5) and the same four tasks, 3 runs per task per arm, at most 10 iterations each.
Runner: scripts/ablation.py. Per-run rows: results.json.
Every run’s trace, report and final sources: runs/<arm>/<example>/run<n>/. The wrong softmax port is runs/baseline/softmax_hecbench/run1/final/.
--baseline. The agent has migrate, compile and the file tools, and is told the tolerance. The run ends when the agent calls finish.Both arms are then graded the same way by a hidden check the agent never sees (--evaluate): compile the final sources, run verify against the C++ reference, and count dpct helpers.
| Arm | correct output + 0 dpct helpers | wrong output | dpct helpers left | said “done” but wasn’t | model cost |
|---|---|---|---|---|---|
| toolkit | 12/12 | 0/12 | 0/12 | 0/12 | $0.90 |
| baseline | 7/12 | 1/12 | 4/12 | 5/12 | $0.67 |
Per example: SUMMARY.md.
finish with the raw migration’s dpct helpers still in the code (saxpy 11, FIR 14, softmax 9).finish summary said “I did not run the binary or compare its output with the reference.”sycl::native::exp with sycl::exp. The model knows about that pitfall; the bug it shipped was a different one. That is the case for behavioural checks over checklists.