| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 6s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 8s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 7s
WAI conformance / does this change touch it (pull_request) Successful in 7s
WAI energy receipts / does this change touch it (pull_request) Successful in 7s
WAI JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Successful in 7s
WAI neural sink gates / does this change touch it (pull_request) Successful in 6s
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 9s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 9s
wai-quantum command line / does this change touch it (pull_request) Successful in 11s
wai-quantum CUDA member / does this change touch it (pull_request) Successful in 10s
wai-quantum dataflow member / does this change touch it (pull_request) Successful in 8s
wai-quantum signal processor / does this change touch it (pull_request) Successful in 7s
wai-quantum FPGA member / does this change touch it (pull_request) Successful in 6s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 1m48s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 28s
wai-quantum HIP member / does this change touch it (pull_request) Successful in 9s
wai-quantum Metal member / does this change touch it (pull_request) Successful in 8s
wai-quantum npu-cores member / does this change touch it (pull_request) Successful in 6s
wai-quantum neural-processor member / does this change touch it (pull_request) Successful in 6s
wai-quantum-qpu / does this change touch it (pull_request) Successful in 5s
wai-quantum OpenCL member / does this change touch it (pull_request) Successful in 7s
wai-quantum service / does this change touch it (pull_request) Successful in 7s
wai-quantum HIP member / member · HIP (framework-128gb) (pull_request) Successful in 21s
wai-quantum matrix-extension member / does this change touch it (pull_request) Successful in 7s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 6s
wai-quantum tensor-engine member / does this change touch it (pull_request) Successful in 6s
wai-quantum on every processor / emulated · aarch64-unknown-linux-gnu (pull_request) Successful in 2m16s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 2m36s
wai-quantum portable tensor program / does this change touch it (pull_request) Successful in 7s
wai-quantum CPU vector units / does this change touch it (pull_request) Successful in 6s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m40s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 6s
wai-web wasm32 / does this change touch it (pull_request) Successful in 5s
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Successful in 7s
wai-quantum on every processor / emulated · armv7-unknown-linux-gnueabihf (pull_request) Successful in 1m30s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 31s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 17s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 20s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 3m15s
wai-quantum npu-cores member / member · npu-cores, neural processor (framework-128gb silicon) (pull_request) Successful in 1m11s
wai-quantum OpenCL member / member · OpenCL GPU (framework-128gb) (pull_request) Successful in 13s
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Successful in 8s
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Successful in 10s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m52s
wai-quantum on every processor / emulated · loongarch64-unknown-linux-gnu (pull_request) Successful in 3m25s
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Successful in 3m11s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 6s
wai-quantum on every processor / emulated · powerpc64-unknown-linux-gnu (pull_request) Successful in 5m31s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 5m31s
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 28s
wai-quantum on every processor / emulated · riscv64gc-unknown-linux-gnu (pull_request) Successful in 6m13s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 25s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 9m29s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m12s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 21s
wai-quantum on every processor / emulated · sparc64-unknown-linux-gnu (pull_request) Successful in 6m46s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m47s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 50s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 1m25s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 7m42s
wai-quantum on every processor / emulated · s390x-unknown-linux-gnu (pull_request) Successful in 8m52s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 12m7s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 7m55s
wai-quantum on every processor / emulated · i686-unknown-linux-gnu (pull_request) Successful in 7m46s
wai-pack / wai-pack · linux (pull_request) Successful in 1m41s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 24s
wai-quantum command line / command line · linux (pull_request) Successful in 1m32s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 3m6s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m9s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 5m57s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 18s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 23s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 17s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 19s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 21s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 3m55s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 14s
wai-quantum service / service · linux (pull_request) Successful in 41s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 4m54s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m17s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 37s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 14s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 9m24s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 24s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 23s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 17m44s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 17s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 10m3s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 14s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 22s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m43s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 19m57s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 31s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 25s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 16m10s
wai-quantum command line / command line · macos (pull_request) Successful in 46s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m39s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 29s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m34s
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Successful in 18s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m4s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 5m0s
wai-pack / wai-pack · macos (pull_request) Successful in 3m9s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Successful in 1m24s
wai-quantum Metal member / member · Metal (macos) (pull_request) Successful in 28s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m17s
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Successful in 21s
wai-quantum service / service · macos (pull_request) Successful in 46s
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Successful in 21m55s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Failing after 3m8s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 10s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m22s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 13m8s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 15s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 14s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m33s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m18s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m38s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m35s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m44s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 15m35s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 20m29s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 9m40s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 48m39s
This carries the person's rules for proposals, what is new in a program, a person's taste, checked rewrites with equivalence proved by them, and the convergence monitor to the package registry, with 0.6.15's entry, which reached the binaries and the taps but not the registry. - wai-quantum 0.6.16: engine::locks, engine::novelty, engine::taste, engine::rewrite (equiv answers how: rewrites) and engine::converge. - wai-quantum-cli 0.1.4 requires it: locks, novelty, discover novelty, taste, rewrite and converge, and their MCP tools. - The desktop app requires 0.6.16 too. - Every lockfile that holds wai-quantum or wai-quantum-cli moves with them, so a --locked build still reads its own. Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| discover | ||
| release | ||
| src | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
| smoke.sh | ||
wai-quantum
The command line of the WAI quantum stack. It runs OpenQASM programs on this machine, planned and run by the same engine as the quantum job service (wai_quantum::engine), so a job gives the same result here as there. It also sends programs to the service, checks and draws them, verifies receipts, and serves its tools to agents over MCP.
Installing it
| Where | How |
|---|---|
| Any platform with Rust | cargo install wai-quantum-cli (installs the wai-quantum binary) |
| macOS or Linux, with Homebrew | brew tap transaction-science/tap https://git.transaction.science/Transaction-Science/homebrew-tap then brew install wai-quantum |
| Windows, with Scoop | scoop bucket add transaction-science https://git.transaction.science/Transaction-Science/scoop-bucket then scoop install wai-quantum |
| Anywhere | a prebuilt archive from the releases tagged wai-quantum-cli-v… |
The prebuilt archives are:
- macOS for Apple silicon and for Intel, with the GPU state vector;
- Linux for x86_64 and arm64, linked statically, so any distribution runs them;
- Windows for x86_64.
Each archive has a .sha256 file beside it (shasum -a 256 -c). A tag wai-quantum-cli-v<version> builds them on the project's own runners (release/, .github/workflows/wai-quantum-cli-release.yml), and writes the Homebrew formula and the Scoop manifest for them.
Running a program
wai-quantum run bell.qasm --shots 1000
wai-quantum run prog.qasm -o "Z0 Z1" -o "0.5 X2" -a 000 -a 111
wai-quantum run prog.qasm --noise depolarizing_2q=0.01 --noise readout=0.02
wai-quantum run prog.qasm --method mps --option max_bond=128
cat prog.qasm | wai-quantum run --json > job.json
A program is OpenQASM 3, or the OpenQASM 2 forms in common use. The reader accepts:
- registers, and a gate applied to a whole register;
- the standard gates;
ctrlandnegctrlmodifiers;- gate definitions;
- measurement and
resetanywhere, andifon measured bits; - generators: integer
inputs,consts andforloops, so one program describes a family of circuits.
It refuses while, inv and pow, giving the line of each.
A generator takes its inputs with --input, which every command accepts, and instance writes the circuit out:
cat > ghz.qasm <<'QASM'
OPENQASM 3.0;
input uint n;
qubit[n] q;
h q[0];
for uint i in [0:n-2] { cx q[i], q[i + 1]; }
QASM
wai-quantum run ghz.qasm --input n=40 --shots 100
wai-quantum instance ghz.qasm --input n=3
--method auto (the default) picks the strongest method the program admits:
| Method | Takes |
|---|---|
| exact | dyadic angles; the state vector, the same bits on every machine |
| statevector | any angle |
| stabilizer | Clifford circuits, to tens of thousands of qubits |
| mps | matrix product states |
| pauli | Pauli dynamics, for expectation values |
| tensor_network | amplitudes |
| cutrank | a Clifford circuit with a layer of rotations |
| density_matrix, trajectories | noise |
wai-quantum methods lists each method's reach in a job's memory here (--memory-gb, default 16).
Each result names:
- its method, and why that method was chosen;
- its accuracy class;
- the counts, expectation values or amplitudes asked for;
- its receipt.
Receipts
Every result is signed over the request and the result in their canonical JSON. The service signs with its key; this tool signs with this user's key:
--key FILE, or$WAI_QUANTUM_KEY, names a file holding the key;- otherwise the key is
$XDG_CONFIG_HOME/wai/quantum-key, or~/.config/wai/quantum-key. It is made from the system's random source on first use and is readable by its owner only.
wai-quantum key prints the key's did:key. --demo-key signs with the published demo key. Its receipts show only that a result is unaltered, not who signed it.
wai-quantum run prog.qasm --json > job.json
wai-quantum verify job.json # VALID, and the signer's did:key
wai-quantum submit prog.qasm --json > svc.json
wai-quantum verify svc.json # the same check on the service's receipt
A receipt shows that this key signed this request and this result, and anyone can rerun the request to compare. It does not say who holds the key.
Checking and drawing
wai-quantum lint prog.qasm # ok, with its shape, or the line of the first problem
wai-quantum plan prog.qasm # the method and why, the memory and work, without running
wai-quantum draw prog.qasm --width 80
q0: ─────H─────●──M0──────
│
q1: ───────────⊕──●───M1──
│
q2: ──Rz(π/4)─────⊕───M2──
Critique, equivalence and improvement
wai-quantum critique prog.qasm # its measures, a modelled fidelity, and its smells with their lines
wai-quantum equivalent a.qasm b.qasm # the same circuit? exit 0 the same, 1 different, 2 unchecked
wai-quantum improve prog.qasm > better.qasm # its smells fixed; what changed, and the check, on standard error
wai-quantum shortcuts prog.qasm # each exact classical route to simulating it, and its cost here
The critique's figures are computed, not estimated: gates by kind, two-qubit gates, depth and two-qubit depth, the T count, and whether the program is a Clifford circuit. Its fidelity is a model at reference error rates, and says so. Its smells are gates that cancel, rotations that merge or do nothing, idle qubits, and qubits acted on but never measured.
equivalent compares two programs up to a global phase. Clifford circuits are compared by their tableaus at any size, and others on every basis state up to 8 qubits. Wider than that, it tries to rewrite one program followed by the other's inverse to nothing, each rewrite checked on the qubits it touches (rewrites, below): when that works it is a proof at any width, with any gates. Otherwise, between 8 and 22 qubits, it compares them on random product states, which is evidence, not proof. Beyond that it answers unchecked, with the reason. improve rewrites only statements alone on their lines, and prints a rewrite only when the check does not find it different.
shortcuts lists every exact classical route the engine knows for simulating the program, each with its memory and operations, and names the cheapest. The routes:
- the stabilizer tableau, for Clifford circuits;
- the cut-rank sum, for a Clifford circuit followed by one layer of one-qubit gates;
- an exact matrix product state, at a bond bounded across each cut by the operator Schmidt ranks of the gates that cross it;
- the light cone of a one-qubit expectation value;
- a tensor-network contraction, with
--thorough, which also searches longer for a cut-rank order; - the state vector.
A cheap route proves a design classically easy. None being cheap proves nothing about hardness: other methods, approximate ones above all, may cost far less.
The service
wai-quantum submit sends a job to https://wai.transaction.science/quantum-jobs, or to --service URL (also read from $WAI_QUANTUM_SERVICE). It waits for a long job to finish, then prints the result just as run does.
For agents
wai-quantum mcp is a Model Context Protocol server on standard input and output. Its tools are:
run_quantum_circuitplan_quantum_circuitlint_qasmcritique_qasmcheck_equivalentimprove_qasmclassical_shortcutsdraw_circuitverify_quantum_resultdiscover_evaluate,discover_submitanddiscover_archive(the workbench, below)novelty_qasmanddiscover_novelty(what is new, below)rewrite_qasm(rewrites, below)converge_cohortandconverge_history(convergence, below)taste_rankandtaste_next(your taste, below)history_commit,history_changes,history_blameandhistory_log(a program's history, below)list_methods
A tool that takes a program also takes a generator, with its inputs' values in inputs. Runs happen on this machine and are signed with this user's key; nothing is sent anywhere. In an MCP client's configuration:
{ "mcpServers": { "wai-quantum": { "command": "wai-quantum", "args": ["mcp"] } } }
The workbench
wai-quantum discover searches for cheaper circuits that provably do the same job. A specification (JSON) says:
- what a family of circuits must do: the same unitary as a reference generator (
equivalent), or the same state from |0…0⟩ (prepares); - the sizes to check it at;
- the gates and connectivity a candidate may use;
- what it costs: weights on the engine's measures (depth, two-qubit gates, T count …), summed over the sizes;
- the two measures the archive is laid out on.
Proposers write generators: you, an agent through wai-quantum mcp, or the built-in search. The engine checks each one at every size, never a model's judgement. The archive keeps the cheapest verified generator in every cell of the two axes, with its parent, proposer and note, so different ideas mature side by side.
cd discover # the shipped specifications
wai-quantum discover new ghz-all.json # the archive, seeded with the reference
wai-quantum discover search ghz-all.json # the built-in search: blind, seeded edits
wai-quantum discover submit ghz-all.json mine.qasm --note "doubling layers"
wai-quantum discover show ghz-all.json # what was spent, the best, the front
wai-quantum discover verify ghz-all.json # every sealed verdict
Each kept generator is sealed with your key. Its receipt binds the specification, the source, its proposer and the engine's verdict at every size. A search reports what it spent: evaluations, seconds and, on macOS, the joules its own process used as the kernel counts them. So the result is a cost per verified improvement, not just a best circuit.
The built-in search is the baseline any proposer should beat. On ghz-all.json, 1,500 blind edits took 4.6 s and 24 J: 139 were verified and 29 kept, and none beat the reference. The doubling tree, which a person or a model writes in a few lines, costs 25 against the reference's 49.
A program's history
wai-quantum history keeps a program's versions in a file beside it (prog.qasm → prog.history.json): who made each change, how, and whose hand each line and gate is in.
wai-quantum history start prog.qasm # the program as it is: the first version
wai-quantum history commit prog.qasm --note "a third qubit"
wai-quantum history changes prog.qasm theirs.qasm # what another program would change, numbered
wai-quantum history propose prog.qasm theirs.qasm --accept 1 --name qwen
wai-quantum history log prog.qasm # every version: who, how, when, what it changed
wai-quantum history blame prog.qasm --input n=5 # each line's author, and the gates in each hand
wai-quantum history merge prog.qasm v4 v6 # the file as two lines of work brought together
wai-quantum run prog.qasm --history prog.history.json --json > job.json
wai-quantum verify job.json --history prog.history.json
- Who: each version is made by the person, the assistant (a model), an outside agent, the engine (a rewrite or the blind search), or where the program came from before the history began.
--byand--namesay which. - A proposal is reviewed change by change.
proposekeeps only the changes accepted and writes the result to the program. The version keeps the whole proposal and which changes were taken, so the rejected ones stay readable. - Whose hand: a line keeps its author until someone changes it. A model's or an agent's line that the person then edits is in both hands. An edit back to an earlier program (an undo) keeps that program's authors. The gates follow their lines, and a generator's are counted at
--input. - The chain: each version's digest covers its parents' digests, its source, who made it and how, and each is sealed with this user's key.
history verifychecks every digest, seal and review. - On the receipt:
run --history(andsubmit --history) puts the head's account in the job's request: its digest, and the gates and lines in each hand. The receipt binds it, so a changed count fails the signature.verify --historyrecomputes the account from the history, and checks that the job ran that version's program.
Through wai-quantum mcp, an agent's edits (history_commit) are recorded as an outside agent's, under the name its client gave when it connected. An agent cannot record a change as the person's.
The person's rules for proposals
A proposal (a model's, an agent's, an engine rewrite) must keep the person's rules, and the engine checks it change by change:
-
Held blocks, marked in the program itself: the lines from a
// @lockcomment to the next// @unlock, the markers included. -
The other rules, in
prog.locks.jsonbeside the program:{ "gates": ["h", "cx", "rz"], "qubits": true, "avoid_gates": ["t"], "avoid_text": ["reset"], "region": [4, 9] }gates: the only gates a change may add;qubits: hold the qubit declarations;avoid_gatesandavoid_text: what no change may add;region: the lines a rewrite must keep to.
wai-quantum locks check prog.qasm theirs.qasm # each change, and the rules it breaks (exit 1 if any)
wai-quantum locks brief prog.qasm # the rules as a model is told them
What the person types is theirs to change; the rules bind proposals. Only what a change adds is judged, so a gate the program already uses is never a proposal's breach.
- The history:
history changesnames each change's breaches.history proposerefuses to accept a change that breaks a rule,--accept alltakes only the changes the rules allow, and the version records the rest as blocked. - For agents: through
wai-quantum mcp,history_commitrefuses an agent's edit that breaks a rule, with the rule, andhistory_changesshows each change's breaches and the rules as sentences.
What is new
wai-quantum novelty says what is new in a program, and what is a known construction found again:
wai-quantum novelty mine.qasm # its nearest known construction, and what it is found to be
wai-quantum novelty mine.qasm --against draft.qasm # compared with your own programs too
wai-quantum novelty gen.qasm --input n=6 --reference ref.qasm --weigh depth,two_qubit
wai-quantum discover novelty ghz-all.json e12 # one entry of an archive, against the others
- The known constructions are GHZ by a chain of CNOTs, by doubling and by fan-out from one qubit, the uniform superposition, and the quantum Fourier transform, each built at the program's width (to 12 qubits).
--againstadds programs to compare with;discover noveltycompares an entry with the archive's other elites. - The distance is structural: each gate a token (its kind, and its qubits relative to its first), two programs compared as multisets of those tokens and of consecutive pairs of them. It is 0 when they are built alike and 1 when they share nothing. It says nothing about what a program does.
- Found again: when the engine proves a program does what a known construction does (the same state from |0…0⟩ for a preparation, the same circuit otherwise), it names it. Built unlike it (a distance of 0.5 or more), it is a different route to a known result, the case worth a second look. A program that is itself one known construction is not a different route to another.
- Strengths not asked for: with
--reference, the measures it beats the reference on that--weighdoes not name. - An aberration: in the workbench, a candidate that breaks only the specification's rules (its gates, its connectivity) and would be verified without them. It is never kept.
discover evalanddiscover submitsay what it would cost and which rule it breaks, as a reason to revise the rule.
A high distance is a reason to look, not a claim that nobody has built it: the engine knows the constructions above and the programs it is given, not the literature.
Rewrites
wai-quantum rewrite makes an optimisation one checked step at a time:
wai-quantum rewrite options prog.qasm # every rewrite it admits, each with its id, in words
wai-quantum rewrite apply prog.qasm merge:6,7 # the program with that one made
wai-quantum rewrite simplify prog.qasm # every rewrite to a fixed point: the steps, then the result
wai-quantum rewrite explain prog.qasm theirs.qasm # how one becomes the other, as a chain
- The rules propose; the engine decides. A gate and its inverse cancel; two rotations about one axis merge, and
t,sandzadd up; a gate between two Hadamards becomes its conjugate (h x hisz, andcxbetween twohon its target iscz); a gate that does nothing is dropped; a gate is carried past gates it commutes with to cancel or merge with its partner; and two gates that commute trade places. - Each rewrite is checked on just the qubits it touches, by their tableaus or on every basis state. Replacing a few gates by others with the same unitary keeps the whole circuit's, so a chain of rewrites proves two programs equal at any width and with any gates.
- Each option is an edit to the program's own lines. A merge writes
rz(0.25 + 0.5), comments and the other lines stay as they are, and the result is read back and compared gate for gate before it is offered. A generator is rewritten as the circuit it writes out. explainsimplifies both programs and compares what is left. The steps are a readable account of why an optimisation is the same circuit.
Convergence
wai-quantum converge says whether your designs are converging on a model's, and how diverse a set of designs is:
wai-quantum converge history prog.qasm # along its history: how far your versions are from a model's proposals
wai-quantum converge cohort designs/*.qasm --input n=6 # the Vendi score, the centroid, and the score over time
- Along a history: for each version you made after a model proposed, its structural distance from the proposals in its line of work, and the share of its gates in a model's hand. It is converging when most of the program is the model's, or when your last versions come closer to its proposals each time.
- On your own: versions noted
organic exploration(the Studio's "Explore on my own") are the assistant-off probes. Their distance from the proposals is set beside the rest. - A cohort: programs for one task, a group's or yours over months. The Vendi score is the effective number of distinct designs, from 1 when they are all built alike to the number of programs. Each program's distance to the centroid is given, with the medoid and the one built least like the rest. With times (a history's last version, or the file's), the score is taken in windows, and a narrowing is named.
Everything is read from the files given, and nothing is sent anywhere.
Your taste
wai-quantum taste learns your taste in circuits from your own choices:
wai-quantum taste choose mine.qasm theirs.qasm --part clarity # you prefer mine: recorded once the engine proves them equal
wai-quantum taste show # what it has learned, and how many of your choices it predicts
wai-quantum taste rank a.qasm b.qasm c.qasm --novelty 0.5 # ranked by your taste, each with its typicality
wai-quantum taste next --spec ghz-all.json # the pair of an archive's elites it is least sure of
- Only between equals. A choice is recorded only when the engine proves the two programs the same circuit (or, with
--task prepares, the same state from |0…0⟩). So a choice is about taste, never about correctness. - Decomposed.
--partsays what a choice was about: economy, clarity, insight, precision or utility. Each part is learned from its own choices, and a ranking says where a part, or the cost, puts another program first. - Plural and personal.
--profile NAMEkeeps several (for teaching, for one device). They live inquantum-taste.jsonbeside your key (--taste FILEfor another), and nothing pools them. - Typicality is shown, never learned. Each program in a ranking shows how near the known constructions it is built. The profile never learns it.
--novelty(−1 to 1) blends the order by your taste with the order by novelty: 0 is your taste alone, and either end orders by novelty alone. - Measured.
showsays how many of your choices it predicts, each from the ones before it and each held out from the rest.ranksays whether its first three are built more alike than the first three by cost.
The model is a Bradley–Terry logistic over differences of what the engine measures: the gate counts and depths, the modelled error, and the program's text (its statements, its kinds of gate, how much repeats, its comments). It is fitted with a ridge penalty, so the same choices give the same weights everywhere. Through wai-quantum mcp an agent can rank programs by your profile (taste_rank) and ask which pair to show you next (taste_next), but it cannot record a choice: only you choose.
The research tools
wai-quantum lab … holds the research tools:
- algorithms from the catalogue, OpenQASM and QIR export, and receipts over them;
- error correction at circuit level;
- qLDPC memory;
- fault-tolerant resource estimates and architectures;
- DMRG, TDVP and molecules;
- neural quantum states;
- Gaussian boson sampling;
- optimisation;
- the compute fabric;
- information and transport.
wai-quantum lab help lists them. wai-quantum verify also checks the receipts they sign.
Builds
- Default:
submit, over HTTPS. --features metal: the single-precision state vector on the GPU (--method statevector_single), on macOS.--no-default-features --target wasm32-wasip2: a WASI component withoutsubmit. It gives the same output under any WASI runtime.
wai-quantum completions zsh (or bash, fish, elvish, PowerShell) prints shell completion.