Same design as round 1, with two additions:
baseline_shell: the baseline plus run, a bash shell in the work dir. That lets the agent build and run its own tests. The compiled reference binary is in the work dir in every arm.Every final port is graded by the same hidden check, which the agent never sees: compile the final sources, verify against the C++ reference, and count dpct helpers.
scripts/ablation.py --runs 5 --arms toolkit baseline baseline_shell --model <m>, max 10 iterations.results.json.SUMMARY.md.runs/<model>/<arm>/<example>/run<n>/.| Model | Arm | correct + 0 dpct helpers | wrong output | helpers left | said “done” but wasn’t | model cost |
|---|---|---|---|---|---|---|
| claude-sonnet-5-5 | toolkit | 20/20 | 0 | 0 | 0 | $1.37 |
| claude-sonnet-5-5 | baseline | 10/20 | 2 | 10 | 10 | $1.23 |
| claude-sonnet-5-5 | baseline + shell | 7/20 | 0 | 13 | 12 | $1.20 |
| claude-haiku-5-5 | toolkit | 20/20 | 0 | 0 | 0 | $0.08 |
| claude-haiku-5-5 | baseline | 13/20 | 4 | 5 | 7 | $0.07 |
| claude-haiku-5-5 | baseline + shell | 7/20 | 0 | 13 | 13 | $0.10 |
Across both models: toolkit 40/40, baseline 23/40, baseline + shell 14/40.
scan_helpers is what gets the port to idiomatic SYCL.examples/README.md on hardware dependence.