| # | Model | Score | Steps | In tok | Out tok | Avg cost | Avg time |
|---|---|---|---|---|---|---|---|
| 1 | Claude Fable 5.1 | 0.8686 ±0.012 | 282 | 72.9M | 310k | $43.99 | 9.6h |
| 2 | GPT-5.6 | 0.7471 ±0.037 | 515 | 111.7M | 220k | $94.28 | 8.2h |
| 3 | GLM-5.3 | 0.6845 ±0.062 | 339 | 90.3M | 313k | $32.83 | 16.4h |
| 4 | Kimi K3 | 0.6838 ±0.056 | 467 | 162.6M | 550k | $60.62 | 19.9h |
| 5 | Grok 4.6 | 0.6693 ±0.052 | 313 | 76.8M | 490k | $80.91 | 5.1h |
| 6 | Gemini 3.7 Flash | 0.6539 ±0.066 | 190 | 31.8M | 219k | $6.14 | 3.6h |
| 7 | Muse Spark 1.2 | 0.5861 ±0.021 | 255 | 46.1M | 340k | $9.23 | 3.3h |
| 8 | DeepSeek V4 Flash Exp | 0.5146 ±0.074 | 409 | 137.0M | 424k | $2.55 | 10.2h |
| 9 | Qwen3.8-Max | 0.4780 ±0.158 | 414 | 83.8M | 780k | $26.21 | 18.9h |
| 10 | Inkling | 0.2102 ±0.156 | 110 | 4.9M | 42k | $4.81 | 1.5h |
A quantum processor can run a two-qubit gate only between physically adjacent qubits, so a compiler's router inserts SWAP operations to walk logical qubits along hardware edges until each pending gate's operands sit next to each other. Every SWAP costs time and occupies an edge, so routing is a combinatorial scheduling problem: pick which SWAPs to run in parallel each timestep so the whole circuit finishes as early as possible.
The task's environment models real hardware coupling graphs (grid topologies plus the connectivity of IBM Q 16 and Q 20, Rigetti Acorn, and Google Sycamore) and four timing models in which SWAPs and CNOTs lock edges for different durations. Circuits come from synthetic generator families and from real OpenQASM benchmark suites, and the routing engine ships with no router in it: the algorithm is written from scratch.
Implement route_instance(instance) -> list[list[int]] in /app/router.py: the outer list is timesteps, each inner list the indices into instance["edges"] to SWAP in parallel that step. After each timestep the simulator runs any gate whose operands are adjacent on an unlocked edge.
instance["max_steps"]; a schedule that leaves a gate unfinished, or that the simulator rejects, counts for nothing.uniform, instant_cnot, slow_cnot_3x, and slow_swap_2x.route_instance call gets 10 seconds (an overrun abandons that circuit), and the whole scored run shares a 5400-second budget./app.The routing engine at /app/qubit_routing/ (the timestep/edge-lock simulator, the device set, circuit generators, and the instance format, but no router), plus a training split of normalized OpenQASM benchmark circuits at /app/qubit_routing/qasm_training/. Running python3 -m qubit_routing.run (with --limit 50for a quick pass) routes the local circuits with the agent's router.py and writes routing_results.json with circuits finished, timesteps used, and per-call time. /app/README.md documents the contract in full. The machine is offline, and the environment is deliberately dependency-light: Python 3.13 with the standard library only.
A clean-room verifier, separate from the agent's environment, rebuilds the scored package from a pristine baked copy of the engine plus only the agent's own .py files (anything shadowing the engine is dropped), then generates a hidden, deterministically seeded instance pool spanning the same devices, timing models, and circuit families, but on held-out OpenQASM circuits and fresh synthetic seeds. The candidate driver runs de-rooted with the 10-second per-call cap, and every returned schedule is independently re-simulated on the pristine engine before it can score.
2**u - 1 in speedup space between the two./app, the reward directory is locked before any agent code runs, and stray agent processes are killed before scoring.router.py or a package-boundary violation zeroes the result.| Base image | python:3.13-slim |
| Tools available | Python 3 |
| Compute | 4 CPUs · 16 GB RAM |
| Time limit | 20h |