Junction Quantum Hack 2026 · follow-up

Surface code on IQM Emerald

The d = 3 surface-code memory that turned random by round — at the hackathon now stays below random for all — rounds we ran on the same chip, with a logical error of — (memory X) to — (memory Z) per round.

A follow-up to team gate_crushers' entry in the IQM error-correction challenge at Junction Quantum Hack 2026 (June 5–7). Same task, same IQM Emerald computer, the same qubits (QB13 to QB45). The main change is the circuit sent to the chip.

Error per round, memory X · Oct 12 — Oct 4: —
Error per round, memory Z · Oct 12 — Oct 4: —
June circuit after 3 rounds · logical error, memory X — 0.5 is a coin flip. Current circuit, same day: —
Time per syndrome round — → — µs June circuit → current circuit

Same chip, same day: the June circuit against the current one

Logical error rate after each number of syndrome rounds, with ~68% intervals. Both Oct 12 runs used the same qubits and the same calibration, two minutes apart; the June circuit was rebuilt gate for gate from the hackathon code. 0.5 means the stored bit is lost. At 1 round the June circuit has no mid-circuit resets yet and does as well or better; the gap opens once rounds repeat.

    Memory Z
    Memory X

    Data: ler_by_round.json, built from baselines/post_hackathon/hw_20261012 and baselines/hackathon_2026-06-07

    Why the June circuit failed

    In June every ancilla measurement was followed by a Qiskit reset. On IQM hardware a reset is itself a measurement followed by a conditional π pulse, and placed between the readouts it kept them from running in parallel. One round took — µs, and the data qubits waited through it without dynamical decoupling. By round 3 the logical bit was gone: even after decoding, the result is a coin flip.

    The current circuit reads all ancillas out at once and does not reset them; each check compares an ancilla with its outcome two rounds earlier instead (Gehér et al.). IQM's dynamical decoupling protects the idle qubits, and a round takes — µs.

    Time per syndrome round

    From IQM's pulse compiler against the Emerald calibration on Oct 12: the schedule time each extra round adds. The data qubits sit idle for most of it.

    Data: round_time.json, from round_time_pulla_20261012.csv

    The logical bit before any correction

    How often the logical bit has flipped when it is read out, before any correction (Oct 12). Uncorrected errors pile up in every memory. The June circuit reaches a coin flip by round 3; the current circuit gets there much later, and decoding still recovers most of its errors.

      Memory Z
      Memory X

      Data: raw_observable.json, from the round-by-round diagnosis in hw_20261012

      Error per round, measured and predicted

      Logical error per round from a binomial maximum-likelihood fit over all round counts, ±1σ. Filled dots are hardware; hollow dots are the simulator's predictions, pushed to GitHub before each run.

        Memory Z
        Memory X

        Data: error_per_round.json, from the per-round fits in baselines/post_hackathon

        Hardware runs in October

        QPU execution time per job, from IQM's job records. In these runs IQM Resonance charged about one credit per second of execution. Total: — s over — shots.

        DateIQM jobWhat ranShotsQPU timeOutcome

        Data: hardware_jobs.json, from hardware_jobs.csv

        How these numbers were made

        Each run stores a logical bit in a d = 3 rotated surface code (17 qubits), repeats the stabilizer checks for a given number of rounds, reads the bit out and decodes it with minimum-weight matching built from IQM's calibration data. Memory Z and memory X test the two kinds of logical error. Before each main run the simulator's prediction was pushed to GitHub, so a wrong prediction stays visible, as with the decoupling result above.

        Code, configurations and every archived result: github.com/kazulak/JunctionHackathon. The June 7 curve is the hackathon's own hardware run; the submission is frozen under the tag junction-quantum-hackathon-final-2026, and everything else on this page came after the event.