wai-quantum-service: the quantum stack as a public job service; wai-quantum 0.6.3: the wide tableau, any-angle MPS, tiled state vectors, branching trajectories, threaded sparse Pauli #297

Merged
dcharlot merged 17 commits from wai/quantum-service into main 2026-10-18 10:19:55 -04:00
Owner

This PR adds wai-quantum-service, an HTTP job service over the WAI quantum stack. Anyone can send an OpenQASM program, with no account and no key. Each result says which method produced it, how accurate it is, and carries an Ed25519 signature that anyone can check.

Live at https://wai.transaction.science/quantum-jobs/v1, deployed from this branch. The smoke checks pass against the public URL.

It also releases wai-quantum 0.6.3, which adds quantum_tableau: wide stabilizer simulation on up to 32768 qubits.

  • Packing: the Aaronson–Gottesman tableau is packed qubit by qubit, with 32-bit indices.
  • Sampling: the computational-basis outcomes are computed once, as the affine subspace they are uniform over (elimination with signs tracked). Each shot is then a random combination of that subspace's basis.
  • Expectations: exact ±1/0 values of Pauli strings, from the destabilizers.
  • Timings for a random Clifford circuit of 100k gates on 10,000 qubits: the gates take 49 ms, the outcome subspace 353 ms, and 1000 full-width shots 154 ms.
  • Correctness: on 40 random circuits, the outcome set, its uniform probabilities and 800 expectation values match the dense state vector.

The service's stabilizer method runs on it, so it now takes up to 32768 qubits and answers expectations as well as counts. Over the public URL, a 2000-qubit GHZ state with a phase flip gives ⟨X^⊗2000⟩ = −1 in 260 ms.

It also adds quantum_mpsim: matrix product states for circuits with any angles, on up to 4096 qubits.

  • Method: the chain is kept in mixed-canonical form, with the center moved by QR. Each two-qubit gate is a two-site update M. It keeps the leading eigenvectors U of M·M† and makes U†·M the new center, so no singular value is divided by. The update is truncated to the bond limit and a cutoff. Gates on distant qubits are routed by swaps. The eigensolver (Householder, then QL with implicit shifts) is new in linalg and deterministic.
  • Reporting: every truncation is reported, with the bonds used, the summed discarded weight and the fidelity estimate.
  • Correctness: with nothing truncated, every amplitude and expectation matches the dense state vector to 1e-10. Under truncation, the estimate tracks the true fidelity.
  • Speed, on the same machine against the crate's Jacobi split: 500 qubits at depth 10 in 0.75 s against 3.1 s; depth 20 at bond 64 in 8.1 s against 35.9 s. The fidelity estimates are the same under both splits.

In the service, mps sits after the exact methods in auto, at bond dimension up to 256 within a work estimate. A truncated result is labelled heuristic, carries its fidelity estimate, and gets a warning below 0.9. Over the public URL, a 300-qubit continuous-angle circuit was sampled in 7 ms.

Speed work, folded in

The ranked next items from the research are folded into this release, so one CI run covers everything.

  • Tiled state-vector passes (quantum_sv). run groups consecutive gates into passes. Each tile, the amplitudes that agree outside the pass's local bits, is copied into a cache-sized buffer; every gate is applied there, and the tile is copied back.
    • Diagonal gates join any pass.
    • Gate order and each amplitude's arithmetic are unchanged, so the schedule never changes a bit. A test compares tiled and untiled bit for bit, and the bit-identity pin is unchanged.
    • Gates of three or more qubits on the top qubits no longer fall onto one thread.
    • At 26 qubits on a 16-core desktop processor:
      • brickwork depth 20: 5.2 → 2.3 s;
      • QFT: 2.9 → 1.6 s;
      • QAOA: 2.9 → 0.95 s.
  • Branching trajectories (quantum_noisy::branching_trajectories). Every shot is an independent noisy trajectory in law, but shots that took the same errors share one state.
    • Splits are binomial, drawn by geometric gaps; damping uses the group's own jump probability.
    • Estimates and counts depend on neither the thread count nor the memory limit.
    • It matches the exact density matrix.
    • Against independent trajectories (18 qubits, 300 shots): 28× faster at two-qubit error 10⁻³, 5.6× at 5·10⁻³, 1.9× at 2·10⁻² with damping.
  • The sparse-Pauli engine on a worker pool (quantum_spd). Workers start once per run. Consecutive Clifford gates go in one pass. A rotation's new terms have distinct strings, so each coefficient receives at most one addition.
    • The result is bit-identical at any thread count: tested at 1, 2, 3 and 8 threads, and the signed receipts reproduce.
    • The 127-qubit kicked-Ising run at threshold 10⁻⁴ takes 9.4 s, against 49 s on one thread.
  • The service uses all four:
    • trajectories runs every shot as a branching trajectory and reports histories;
    • pauli returns a threshold ladder (the value and bound a decade at a time), so convergence is visible and signed;
    • mps goes to bond 256.

What's in it

  • OpenQASM front end (src/qasm.rs). It reads OpenQASM 3 and the OpenQASM 2 forms in common use: registers with broadcast, user gate definitions inlined with their parameters, angle expressions, and every terminal-measurement form. Mid-circuit measurement, classical control and gate modifiers are refused, with the line they're on.

    • Each circuit is lowered three ways, each exact up to a global phase: matrix gates, Pauli rotations, and the dyadic gate set.
    • The tests check each lowering against the others on every gate.
    • This was needed because the library's only importer accepts dyadic angles alone, so rz(0.3) was refused.
  • Seven methods plus auto (src/catalog.rs, src/run.rs):

    Method Accuracy Limit
    exact bit-exact 26 qubits
    statevector exact 32 qubits within a job's memory
    stabilizer exact, counts and expectation values 32768 qubits
    pauli bounded, each value with its truncation bound 1024 qubits
    mps exact if nothing was truncated, otherwise heuristic with a fidelity estimate 4096 qubits
    tensor_network exact amplitudes, with the contraction cost —
    density_matrix exact noise 12 qubits
    trajectories estimate with standard errors —

    auto picks the first method that can take the job, and explains why it rejected the others.

  • Running safely on a shared host (src/jobs.rs):

    • Every job is planned before it is queued, and one over the per-job memory cap is refused immediately.
    • Running jobs share a total memory budget. A large job waits until the host's free memory covers it plus a reserve.
    • Each job runs in its own child process at lower priority, is watched for memory and time, and is stopped if it exceeds either.
    • Each client has limits on active jobs and submissions, and the queue is bounded.
  • Receipts (src/receipt.rs): a BLAKE3 digest over the request and the result, signed with Ed25519. POST /v1/verify checks one.

Measured

  • Tests: the service's 29 pass on Linux (the AMD box) and macOS (the build host), with clippy clean under -D warnings. All 632 library tests pass with every feature, and the wasm32 build succeeds.
  • smoke.sh, run against local instances and the public URL. All of these held:
    • a 40-qubit GHZ state via the stabilizer method, with only the two all-equal outcomes;
    • a receipt that verifies, and a changed result that fails;
    • expectation values for a 100-qubit circuit via sparse Pauli dynamics, each within its bound and with its ladder;
    • 2000 noisy shots of a 14-qubit circuit by branching trajectories (88 histories);
    • a refusal that gives its reason.
  • Limits and isolation:
    • A client's fourth active job got 429.
    • An oversized job was refused at admission.
    • A job that outgrew its 1 GiB allowance was stopped at 1.4 GiB, and the job reported why.

Deployment

The service runs on the build host under launchd (science.transaction.wai-quantum-service), from ~/wai-quantum-service/bin, with its key at ~/.config/wai-quantum-service/signing.key.

  • Network path: it listens on the host's localhost:8241, and tailscale serve --tcp 8241 publishes that on the tailnet. This avoids opening the host's firewall to an unsigned binary.
  • Prod's Caddy routes /quantum-jobs/* to it. The commit is in site-ops, not pushed.
  • Resource limits: 96 GB in total, 72 GB per job, 4 jobs at once, and 15% of the host's memory kept free.
  • Client addresses: Cloudflare's client address is forwarded as X-Forwarded-For, so per-client limits apply to real clients.

Next

  • a noisy frame sampler on the wide tableau;
  • reduced-precision state vectors, for 34–36 qubits;
  • an Apple GPU state-vector path;
  • in-cache kernel efficiency: the tiled passes are now compute-bound on wide cores.

🤖 Generated with Claude Code

This PR adds `wai-quantum-service`, an HTTP job service over the WAI quantum stack. Anyone can send an OpenQASM program, with no account and no key. Each result says which method produced it, how accurate it is, and carries an Ed25519 signature that anyone can check. **Live at https://wai.transaction.science/quantum-jobs/v1**, deployed from this branch. The smoke checks pass against the public URL. It also releases **wai-quantum 0.6.3**, which adds **`quantum_tableau`**: wide stabilizer simulation on up to 32768 qubits. - **Packing:** the Aaronson–Gottesman tableau is packed qubit by qubit, with 32-bit indices. - **Sampling:** the computational-basis outcomes are computed once, as the affine subspace they are uniform over (elimination with signs tracked). Each shot is then a random combination of that subspace's basis. - **Expectations:** exact ±1/0 values of Pauli strings, from the destabilizers. - **Timings** for a random Clifford circuit of 100k gates on 10,000 qubits: the gates take 49 ms, the outcome subspace 353 ms, and 1000 full-width shots 154 ms. - **Correctness:** on 40 random circuits, the outcome set, its uniform probabilities and 800 expectation values match the dense state vector. The service's `stabilizer` method runs on it, so it now takes up to 32768 qubits and answers expectations as well as counts. Over the public URL, a 2000-qubit GHZ state with a phase flip gives ⟨X^⊗2000⟩ = −1 in 260 ms. It also adds **`quantum_mpsim`**: matrix product states for circuits with any angles, on up to 4096 qubits. - **Method:** the chain is kept in mixed-canonical form, with the center moved by QR. Each two-qubit gate is a two-site update `M`. It keeps the leading eigenvectors `U` of `M·M†` and makes `U†·M` the new center, so no singular value is divided by. The update is truncated to the bond limit and a cutoff. Gates on distant qubits are routed by swaps. The eigensolver (Householder, then QL with implicit shifts) is new in `linalg` and deterministic. - **Reporting:** every truncation is reported, with the bonds used, the summed discarded weight and the fidelity estimate. - **Correctness:** with nothing truncated, every amplitude and expectation matches the dense state vector to 1e-10. Under truncation, the estimate tracks the true fidelity. - **Speed,** on the same machine against the crate's Jacobi split: 500 qubits at depth 10 in 0.75 s against 3.1 s; depth 20 at bond 64 in 8.1 s against 35.9 s. The fidelity estimates are the same under both splits. In the service, `mps` sits after the exact methods in `auto`, at bond dimension up to 256 within a work estimate. A truncated result is labelled heuristic, carries its fidelity estimate, and gets a warning below 0.9. Over the public URL, a 300-qubit continuous-angle circuit was sampled in 7 ms. ## Speed work, folded in The ranked next items from the research are folded into this release, so one CI run covers everything. - **Tiled state-vector passes** (`quantum_sv`). `run` groups consecutive gates into passes. Each tile, the amplitudes that agree outside the pass's local bits, is copied into a cache-sized buffer; every gate is applied there, and the tile is copied back. - Diagonal gates join any pass. - Gate order and each amplitude's arithmetic are unchanged, so the schedule never changes a bit. A test compares tiled and untiled bit for bit, and the bit-identity pin is unchanged. - Gates of three or more qubits on the top qubits no longer fall onto one thread. - At 26 qubits on a 16-core desktop processor: - brickwork depth 20: 5.2 → 2.3 s; - QFT: 2.9 → 1.6 s; - QAOA: 2.9 → 0.95 s. - **Branching trajectories** (`quantum_noisy::branching_trajectories`). Every shot is an independent noisy trajectory in law, but shots that took the same errors share one state. - Splits are binomial, drawn by geometric gaps; damping uses the group's own jump probability. - Estimates and counts depend on neither the thread count nor the memory limit. - It matches the exact density matrix. - Against independent trajectories (18 qubits, 300 shots): 28× faster at two-qubit error 10⁻³, 5.6× at 5·10⁻³, 1.9× at 2·10⁻² with damping. - **The sparse-Pauli engine on a worker pool** (`quantum_spd`). Workers start once per run. Consecutive Clifford gates go in one pass. A rotation's new terms have distinct strings, so each coefficient receives at most one addition. - The result is bit-identical at any thread count: tested at 1, 2, 3 and 8 threads, and the signed receipts reproduce. - The 127-qubit kicked-Ising run at threshold 10⁻⁴ takes 9.4 s, against 49 s on one thread. - **The service uses all four:** - `trajectories` runs every shot as a branching trajectory and reports `histories`; - `pauli` returns a threshold `ladder` (the value and bound a decade at a time), so convergence is visible and signed; - `mps` goes to bond 256. ## What's in it - **OpenQASM front end** (`src/qasm.rs`). It reads OpenQASM 3 and the OpenQASM 2 forms in common use: registers with broadcast, user `gate` definitions inlined with their parameters, angle expressions, and every terminal-measurement form. Mid-circuit measurement, classical control and gate modifiers are refused, with the line they're on. - Each circuit is lowered three ways, each exact up to a global phase: matrix gates, Pauli rotations, and the dyadic gate set. - The tests check each lowering against the others on every gate. - This was needed because the library's only importer accepts dyadic angles alone, so `rz(0.3)` was refused. - **Seven methods plus `auto`** (`src/catalog.rs`, `src/run.rs`): | Method | Accuracy | Limit | |---|---|---| | `exact` | bit-exact | 26 qubits | | `statevector` | exact | 32 qubits within a job's memory | | `stabilizer` | exact, counts and expectation values | 32768 qubits | | `pauli` | bounded, each value with its truncation bound | 1024 qubits | | `mps` | exact if nothing was truncated, otherwise heuristic with a fidelity estimate | 4096 qubits | | `tensor_network` | exact amplitudes, with the contraction cost | — | | `density_matrix` | exact noise | 12 qubits | | `trajectories` | estimate with standard errors | — | `auto` picks the first method that can take the job, and explains why it rejected the others. - **Running safely on a shared host** (`src/jobs.rs`): - Every job is planned before it is queued, and one over the per-job memory cap is refused immediately. - Running jobs share a total memory budget. A large job waits until the host's free memory covers it plus a reserve. - Each job runs in its own child process at lower priority, is watched for memory and time, and is stopped if it exceeds either. - Each client has limits on active jobs and submissions, and the queue is bounded. - **Receipts** (`src/receipt.rs`): a BLAKE3 digest over the request and the result, signed with Ed25519. `POST /v1/verify` checks one. ## Measured - **Tests:** the service's 29 pass on Linux (the AMD box) and macOS (the build host), with clippy clean under `-D warnings`. All 632 library tests pass with every feature, and the wasm32 build succeeds. - **`smoke.sh`,** run against local instances and the public URL. All of these held: - a 40-qubit GHZ state via the stabilizer method, with only the two all-equal outcomes; - a receipt that verifies, and a changed result that fails; - expectation values for a 100-qubit circuit via sparse Pauli dynamics, each within its bound and with its ladder; - 2000 noisy shots of a 14-qubit circuit by branching trajectories (88 histories); - a refusal that gives its reason. - **Limits and isolation:** - A client's fourth active job got 429. - An oversized job was refused at admission. - A job that outgrew its 1 GiB allowance was stopped at 1.4 GiB, and the job reported why. ## Deployment The service runs on the build host under launchd (`science.transaction.wai-quantum-service`), from `~/wai-quantum-service/bin`, with its key at `~/.config/wai-quantum-service/signing.key`. - **Network path:** it listens on the host's localhost:8241, and `tailscale serve --tcp 8241` publishes that on the tailnet. This avoids opening the host's firewall to an unsigned binary. - **Prod's Caddy** routes `/quantum-jobs/*` to it. The commit is in site-ops, not pushed. - **Resource limits:** 96 GB in total, 72 GB per job, 4 jobs at once, and 15% of the host's memory kept free. - **Client addresses:** Cloudflare's client address is forwarded as `X-Forwarded-For`, so per-client limits apply to real clients. ## Next - a noisy frame sampler on the wide tableau; - reduced-precision state vectors, for 34–36 qubits; - an Apple GPU state-vector path; - in-cache kernel efficiency: the tiled passes are now compute-bound on wide cores. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
An OpenQASM 3 front end (registers, broadcast, user gates, angle
expressions, every terminal measurement form) lowered three ways: matrix
gates, Pauli rotations, and the dyadic gate set, each held to the others
by tests. A planner that picks the strongest method a circuit admits
(exact, statevector, stabilizer, pauli, tensor_network, density_matrix,
trajectories), with stated accuracy classes. Jobs run in child processes
inside a memory budget at low priority; per-client limits and a bounded
queue; results sealed with an Ed25519 key. 23 tests pass on Linux.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
smoke.sh holds a running instance to its promises (methods, a 40-qubit GHZ
by the stabilizer, receipts that verify and a changed result that does
not, rotations by the state vector, a 100-qubit circuit's expectations by
sparse Pauli dynamics with bounds, a refusal with its reason). CI runs the
tests, clippy -D warnings and the smoke checks against a local instance.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-service: README and CHANGELOG; live at wai.transaction.science/quantum-jobs/v1
Some checks failed
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
standards workspaces build + test / which workspaces this change touches (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
WAI energy receipts / does this change touch it (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
wai-quantum service / does this change touch it (pull_request) Has been cancelled
wai-quantum service / service · linux (pull_request) Has been cancelled
wai-quantum service / service · macos (pull_request) Has been cancelled
49a7714de0
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum 0.6.3: the wide stabilizer tableau; the service's stabilizer method on it
Some checks failed
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been cancelled
wai-quantum tensor-engine member / does this change touch it (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / does this change touch it (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum CPU vector units / does this change touch it (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
60adc03d22
quantum_tableau (new, in full): Clifford circuits on up to 32768 qubits,
the Aaronson-Gottesman tableau packed qubit by qubit with u32 indices.
Tableau::support gives the affine subspace the computational-basis
outcomes are uniform over (Gaussian elimination with signs tracked); a
Sampler draws each shot as a random combination of its basis on the
measured qubits. Tableau::expectation gives the exact +-1/0 of a Pauli
string from the destabilizers. At 10,000 qubits: 100k gates in 49 ms,
the subspace in 353 ms, 1000 full-width shots in 154 ms. Against the
dense state vector on 40 random circuits: the outcome set, its uniform
probabilities and 800 expectation values agree.

The service lowers Clifford circuits to it (quarter-turn rotations,
half-turn controlled phases), answers counts and expectations up to
32768 qubits, and caps a counts map's size. Live: a 2000-qubit GHZ with
a phase flip reads <X^2000> = -1 in 260 ms. 25 service tests.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot changed title from wai-quantum-service 0.1.0: the quantum stack as a public job service to wai-quantum 0.6.3 (wide stabilizer tableau) and wai-quantum-service 0.1.0: the quantum stack as a public job service 2026-10-17 10:05:38 -04:00
wai-quantum 0.6.3: matrix product states at any angle; the service's mps method
All checks were successful
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 18s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 4m48s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m58s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 7m56s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 29s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 16s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 25s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 13m31s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 13s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 15s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 17s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m10s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m12s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m19s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m29s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 16s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 27s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m4s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 2m30s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m31s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 12m5s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 25s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m24s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 11m46s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 24s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 22s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m19s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 18s
123c057967
quantum_mpsim (new, in full): a chain in mixed-canonical form, the center
moved by QR; each two-qubit gate a two-site update split by the crate's
deterministic Jacobi SVD and truncated to max_bond and a cutoff; distant
gates routed by swaps. Every truncation is reported (bonds, summed
discarded weight, fidelity estimate). Amplitudes, Pauli expectations by
transfer matrices, shots by sequential conditional sampling. Untruncated
it agrees with the dense state vector to 1e-10; the estimate tracks the
true fidelity under truncation. Brickwork depth 10: 100 qubits in 0.46 s,
500 in 2.4 s.

The service lowers three-qubit gates to one- and two-qubit ones for it,
adds mps (4096 qubits, bond up to 128 under a work estimate) to auto
after the exact methods, and labels its results exact or heuristic with
the fidelity estimate, warning below 0.9. Live: 300 qubits in 7 ms.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot changed title from wai-quantum 0.6.3 (wide stabilizer tableau) and wai-quantum-service 0.1.0: the quantum stack as a public job service to wai-quantum 0.6.3 (wide stabilizer tableau, any-angle MPS) and wai-quantum-service 0.1.0: the quantum stack as a public job service 2026-10-17 10:37:01 -04:00
Merge main into wai/quantum-service
Some checks failed
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Has been cancelled
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Has been cancelled
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Has been cancelled
a08c7aabf2
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge the state-vector, trajectory, sparse-Pauli and MPS speed work into wai-quantum 0.6.3
Some checks failed
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been cancelled
wai-quantum tensor-engine member / does this change touch it (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / does this change touch it (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum CPU vector units / does this change touch it (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
8d7b638bd3
Folds wai/quantum-sim-speed into this release, so one CI run covers both:
tiled state-vector passes, branching noisy trajectories, the sparse-Pauli
engine on a worker pool, and the MPS split by Gram eigenvectors, with the
service using all four. 0.6.3 is unpublished, so its CHANGELOG entry now
describes the whole release.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot changed title from wai-quantum 0.6.3 (wide stabilizer tableau, any-angle MPS) and wai-quantum-service 0.1.0: the quantum stack as a public job service to wai-quantum-service: the quantum stack as a public job service; wai-quantum 0.6.3: the wide tableau, any-angle MPS, tiled state vectors, branching trajectories, threaded sparse Pauli 2026-10-17 16:14:36 -04:00
Merge main into wai/quantum-service; the tensor-engine fix joins the 0.6.3 notes
All checks were successful
wai-quantum service / service · linux (pull_request) Successful in 42s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 20s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 28s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 19s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 28s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 13s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 10s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 14s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m5s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m15s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 8m13s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 16s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 10s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 24s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m7s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 51s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m35s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 2m36s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m0s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m15s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 9m39s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m43s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 16s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m6s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 3m54s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 22s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 30s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 18s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 12m44s
8d73990691
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum: a word-sized counter for branching trajectories' trees (no 64-bit atomics on some targets)
All checks were successful
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 29s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Successful in 1m11s
wai-quantum Metal member / member · Metal (macos) (pull_request) Successful in 29s
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Successful in 21s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m42s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m57s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 9m8s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 52s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 16m32s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 43s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 57s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 18s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 25s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 41s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 34s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 19s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 18s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 20s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 15m11s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 5m53s
wai-quantum service / service · macos (pull_request) Successful in 22s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 10s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 3m24s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 14s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 4m22s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m24s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m46s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m14s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 7m15s
7a1fc8d2c0
The emulated signal-processor leg (a 32-bit target) failed to build:
AtomicU64 does not exist there. Checked: cargo check for a 32-bit target
without 64-bit atomics passes with the fix and fails without it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge main into wai/quantum-service: both CHANGELOG entries kept
All checks were successful
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 7m54s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 26s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 16s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 32s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 3m0s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 10s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 11s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 13m26s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m7s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m2s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m0s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 6m34s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m45s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 1m25s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m32s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 1m4s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 49s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m25s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 20m53s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 4m40s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 14m0s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 56s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 25m18s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 3m3s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m3s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 1m0s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m46s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 54s
ac8fd493c3
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge main into wai/quantum-service again: every CHANGELOG entry kept
Some checks failed
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Has been cancelled
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Has been cancelled
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Successful in 18m53s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m10s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m8s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 5m7s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m49s
78623b98f6
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!297
No description provided.