From 3c4b10a261067440c3214895f705e14294ead20b Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Sun, 1 Nov 2026 09:07:09 -0500 Subject: [PATCH 1/4] wai-quantum 0.8.0, wai-quantum-qpu 0.4.0, wai-quantum-cli 0.2.3, the job service 0.2.1 and the Python and JavaScript packages 0.1.1: the release's versions, its changelog heading, and every lock The engine moves to its next 0.y, a major bump before 1.0 (VERSIONING.md): two of the entries it carries change engine::schema::FILES, a public array whose length is part of its type. wai-quantum-qpu, whose functions take the engine's types, moves with it to 0.4.0. The command line, the job service, the Python package and the JavaScript package only gain, so each moves its last number. Every dependent's requirement names the new versions, both server.json files and the JavaScript README follow, and the seventeen lockfiles that resolve any of them move with them, each read with --locked. The desktop app stays 0.1.0. cargo-semver-checks keeps its baselines at the versions last published. The engine's version is among the sealed bytes of a stamped result, so the page's pinned digests move (the course check's 969b2c1c... to 1a9aa0ad..., the compile's ac948133... to beffb3cb..., the estimate's 8715e76b... to db90b147...), the answer set's stored seal is written again (WAI_ANSWER_BUNDLE_WRITE=1), and the notebooks' stored outputs are stored again. The job pins strip the engine and schema and do not move. Co-Authored-By: Claude Opus 5.5 --- .../crates/joule-moq-room/Cargo.lock | 2 +- wai/CHANGELOG.md | 52 +++++++++ wai/quantum-conformance/answers/bundle.json | 4 +- .../answers/cases/bell-stored-changed.wqa | 2 +- .../answers/cases/bell-stored.wqa | 2 +- wai/tools/quantum-meter/Cargo.lock | 2 +- wai/tools/quantum-wgsl-check/Cargo.lock | 2 +- wai/wai-audit/Cargo.lock | 2 +- wai/wai-key-proxy/Cargo.lock | 2 +- wai/wai-ledger/Cargo.lock | 2 +- wai/wai-pack/Cargo.lock | 2 +- wai/wai-quantum-cli/Cargo.lock | 6 +- wai/wai-quantum-cli/Cargo.toml | 6 +- wai/wai-quantum-cli/server.json | 4 +- wai/wai-quantum-desktop/Cargo.lock | 6 +- wai/wai-quantum-desktop/Cargo.toml | 6 +- wai/wai-quantum-js/README.md | 2 +- wai/wai-quantum-js/package.json | 2 +- wai/wai-quantum-py/Cargo.lock | 4 +- wai/wai-quantum-py/Cargo.toml | 4 +- .../notebooks/bell-receipt.ipynb | 84 +++++++-------- .../notebooks/equivalence.ipynb | 46 ++++---- .../notebooks/getting-started.ipynb | 102 +++++++++--------- wai/wai-quantum-py/notebooks/noisy-run.ipynb | 54 +++++----- .../notebooks/service-job.ipynb | 42 ++++---- wai/wai-quantum-qpu/Cargo.lock | 4 +- wai/wai-quantum-qpu/Cargo.toml | 4 +- wai/wai-quantum-serve/Cargo.lock | 2 +- wai/wai-quantum-service/Cargo.lock | 4 +- wai/wai-quantum-service/Cargo.toml | 2 +- wai/wai-quantum-service/server.json | 2 +- wai/wai-quantum-views/Cargo.lock | 2 +- wai/wai-quantum/Cargo.lock | 2 +- wai/wai-quantum/Cargo.toml | 2 +- wai/wai-quantum/VERSIONING.md | 6 +- wai/wai-rs/Cargo.lock | 2 +- wai/wai-rs/Cargo.toml | 2 +- wai/wai-web/Cargo.lock | 2 +- wai/wai-web/src/quantum_engine.rs | 13 +-- 39 files changed, 272 insertions(+), 219 deletions(-) diff --git a/joule-code/joule-code-rs/crates/joule-moq-room/Cargo.lock b/joule-code/joule-code-rs/crates/joule-moq-room/Cargo.lock index 1e6ed4909..e6ce383d2 100644 --- a/joule-code/joule-code-rs/crates/joule-moq-room/Cargo.lock +++ b/joule-code/joule-code-rs/crates/joule-moq-room/Cargo.lock @@ -3474,7 +3474,7 @@ version = "0.1.0" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/CHANGELOG.md b/wai/CHANGELOG.md index 260cb2463..3e007493b 100644 --- a/wai/CHANGELOG.md +++ b/wai/CHANGELOG.md @@ -398,6 +398,58 @@ wire format may change and such changes are recorded here. implementation, `channel_lineup_verify.py`, from the text alone, agrees on every vector, and a CI step runs both. +### wai-quantum 0.8.0, wai-quantum-qpu 0.4.0 and wai-quantum-cli 0.2.3: QIR and jeff, the variational and algorithm library, pulse and dynamics, the state vector on a fabric's members and resident on the GPU, and components a host registers + +This release carries the six entries below it, down to pulse and dynamics. Two of them change +`engine::schema::FILES`, a public array whose length is part of its type, so the engine moves to its next 0.y, +a major bump before 1.0 (`wai-quantum/VERSIONING.md`), and `wai-quantum-qpu`, whose functions take the engine's +types, moves with it. Everything else in them only adds: `wai-quantum-cli` 0.2.3 requires `wai-quantum` 0.8.0 and +`wai-quantum-qpu` 0.4.0; the job service is 0.2.1, and the Python package and `@transaction-science/wai-quantum` +are 0.1.1, each carrying the 0.8.0 engine. The desktop app stays 0.1.0; its installers are released with its update +key. Nothing is deprecated. + +- **wai-quantum 0.8.0:** + - programs in QIR 1.x and 2.x under their profiles, and in jeff 0.3, read and written, each conversion checked by + the equivalence ladder (`engine::formats`, the codes `Q700` to `Q721`); + - the variational and algorithm library: a job's parameters bound, exact gradients, deterministic optimisers, the + variational eigensolver, QAOA and algorithm builders (`engine::variational`, `engine::algorithms`, the schema + `wai.quantum.algorithms/1`, the codes `J050` to `J053`); + - pulse and dynamics: OpenPulse read, a pulse simulator, the method `pulse`, schedules and checks, and receipts + that bind the calibrations (`qasm::pulse`, `quantum_pulse`, `engine::pulse`, `schemas/pulse.v1.json`, the codes + `J040` and `J041`); + - the state vector on a fabric's members, and split across several devices on one node (`engine::fabric`, a job's + `fabric`), and the method `stabilizer_rank` for Clifford+T; + - the state vector resident on the GPU, `auto` placed by committed measurements (`engine::fabric_measured`), and + sparse Pauli dynamics on a GPU with the CPU's bits (`quantum_spd::device`, the `pauli` method on the fabric); + - methods, compiler passes, noise channels and file formats behind four traits, every built-in registered + through them, and a host's own components checked and marked uncertified in what they produce + (`engine::registry`, the codes `J060` to `J065`). +- **wai-quantum-qpu 0.4.0:** requires `wai-quantum` 0.8.0, and nothing else changes. +- **wai-quantum-cli 0.2.3:** `convert`, `components`, `fabric`, `gradient`, `optimize`, `vqe`, `qaoa`, `build`, + `pulse schedule | check`, and `run --fabric | --param | --method pulse`; every verb reads `.ll`, `.qir` and `.jeff`. + The local MCP server gains `convert_program`, `list_components`, `list_fabric`, `gradient_qasm`, `optimize_qasm`, + `vqe_ground_state`, `qaoa_maxcut`, `build_algorithm`, `pulse_schedule` and `pulse_check`. +- **The job service 0.2.1:** `POST /v1/convert`, `/v1/gradient`, `/v1/optimize`, `/v1/vqe`, `/v1/qaoa`, `/v1/build`, + `/v1/pulse/schedule` and `/v1/pulse/check`; a job's `source` in another format, its `fabric` and `params`, and the + method `pulse`; its components in `GET /v1`; and its MCP server's tools to match. +- **The Python package 0.1.1 and `@transaction-science/wai-quantum` 0.1.1:** the 0.8.0 engine; their names are + unchanged. +- **What moves with the version:** the engine's version is among the sealed bytes of a stamped result, so the + page's pinned digests move (the course check's 969b2c1c… to 1a9aa0ad…, the compile's ac948133… to beffb3cb…, the + estimate's 8715e76b… to db90b147…), the answer set's stored seal is written again (`WAI_ANSWER_BUNDLE_WRITE=1`), + and the notebooks' stored outputs are stored again. The job pins strip the engine and schema, and do not move. +- **What a caller may have to change:** `engine::schema::FILES`, as the two entries below say; and a caller of + `wai-quantum-qpu`'s `job::run` or `job::compiled_json` passes 0.8.0's types. +- Every lockfile that holds one of these crates moves with them (seventeen), so a `--locked` build still reads its + own, and `wai-rs`'s optional requirement on the engine moves to 0.8.0. +- **Breaking:** `wire:corpus:wai/quantum-conformance/answers/cases/bell-stored.wqa`: the stored answer's receipt + marker seals the engine's version, so it is written again at 0.8.0, as at each release. A conformance run checks a + stored answer with the engine that wrote it: 0.7.0's corpus with 0.7.0, this one with 0.8.0. +- **Breaking:** `wire:corpus:wai/quantum-conformance/answers/cases/bell-stored-changed.wqa`: the same stored answer + with one sample's shots changed, written again with it; it still does not verify. +- **Breaking:** `wire:corpus:wai/quantum-conformance/answers/bundle.json`: the corpus inline, written again with both + stored answers. + ### wai-quantum: extension points, registration traits for methods, passes, noise channels and formats - **`engine::registry`**: four traits a component implements, and one registry the engine goes through. `Method` diff --git a/wai/quantum-conformance/answers/bundle.json b/wai/quantum-conformance/answers/bundle.json index 4d668dbac..a5dc14f3f 100644 --- a/wai/quantum-conformance/answers/bundle.json +++ b/wai/quantum-conformance/answers/bundle.json @@ -434,7 +434,7 @@ "valid": true } }, - "answer": "root = Answer([bell, counts, check, seal])\n```qasm bell\nOPENQASM 3.0;\nqubit[2] q;\nbit[2] c;\nh q[0];\ncx q[0], q[1];\nc = measure q;\n```\ncounts = Histogram(@Sample(bell, 1000))\ncheck = Verdict(@Check(bell, {\"00\": 0.5, \"11\": 0.5}))\nseal = Receipt(@Seal([bell, counts, check]))\n]]>wai:receipt {\"statement\":\"seal\",\"receipt\":{\"alg\":\"ed25519\",\"canon\":\"rfc8785\",\"key\":\"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1\",\"digest\":\"172dd72f18d77dc7ef99525fc61859062015f4a44a34d8ae5c76a7ba4a1b7c6d\",\"signature\":\"4e0288de0313b8f76b03bcbcfedf01989833fd63fd31e7bf0d981b75541c0362b92af555b161a552e6a4242e5a1793d9f90705ef8297db924a3abd577e6e8907\"}}\n" + "answer": "root = Answer([bell, counts, check, seal])\n```qasm bell\nOPENQASM 3.0;\nqubit[2] q;\nbit[2] c;\nh q[0];\ncx q[0], q[1];\nc = measure q;\n```\ncounts = Histogram(@Sample(bell, 1000))\ncheck = Verdict(@Check(bell, {\"00\": 0.5, \"11\": 0.5}))\nseal = Receipt(@Seal([bell, counts, check]))\n]]>wai:receipt {\"statement\":\"seal\",\"receipt\":{\"alg\":\"ed25519\",\"canon\":\"rfc8785\",\"key\":\"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1\",\"digest\":\"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921\",\"signature\":\"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703\"}}\n" }, { "name": "bell-stored-changed", @@ -456,7 +456,7 @@ "valid": false } }, - "answer": "root = Answer([bell, counts, check, seal])\n```qasm bell\nOPENQASM 3.0;\nqubit[2] q;\nbit[2] c;\nh q[0];\ncx q[0], q[1];\nc = measure q;\n```\ncounts = Histogram(@Sample(bell, 999))\ncheck = Verdict(@Check(bell, {\"00\": 0.5, \"11\": 0.5}))\nseal = Receipt(@Seal([bell, counts, check]))\n]]>wai:receipt {\"statement\":\"seal\",\"receipt\":{\"alg\":\"ed25519\",\"canon\":\"rfc8785\",\"key\":\"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1\",\"digest\":\"172dd72f18d77dc7ef99525fc61859062015f4a44a34d8ae5c76a7ba4a1b7c6d\",\"signature\":\"4e0288de0313b8f76b03bcbcfedf01989833fd63fd31e7bf0d981b75541c0362b92af555b161a552e6a4242e5a1793d9f90705ef8297db924a3abd577e6e8907\"}}\n" + "answer": "root = Answer([bell, counts, check, seal])\n```qasm bell\nOPENQASM 3.0;\nqubit[2] q;\nbit[2] c;\nh q[0];\ncx q[0], q[1];\nc = measure q;\n```\ncounts = Histogram(@Sample(bell, 999))\ncheck = Verdict(@Check(bell, {\"00\": 0.5, \"11\": 0.5}))\nseal = Receipt(@Seal([bell, counts, check]))\n]]>wai:receipt {\"statement\":\"seal\",\"receipt\":{\"alg\":\"ed25519\",\"canon\":\"rfc8785\",\"key\":\"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1\",\"digest\":\"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921\",\"signature\":\"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703\"}}\n" } ] } diff --git a/wai/quantum-conformance/answers/cases/bell-stored-changed.wqa b/wai/quantum-conformance/answers/cases/bell-stored-changed.wqa index 4491f6b87..277c7d2e6 100644 --- a/wai/quantum-conformance/answers/cases/bell-stored-changed.wqa +++ b/wai/quantum-conformance/answers/cases/bell-stored-changed.wqa @@ -10,4 +10,4 @@ c = measure q; counts = Histogram(@Sample(bell, 999)) check = Verdict(@Check(bell, {"00": 0.5, "11": 0.5})) seal = Receipt(@Seal([bell, counts, check])) -]]>wai:receipt {"statement":"seal","receipt":{"alg":"ed25519","canon":"rfc8785","key":"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1","digest":"172dd72f18d77dc7ef99525fc61859062015f4a44a34d8ae5c76a7ba4a1b7c6d","signature":"4e0288de0313b8f76b03bcbcfedf01989833fd63fd31e7bf0d981b75541c0362b92af555b161a552e6a4242e5a1793d9f90705ef8297db924a3abd577e6e8907"}} +]]>wai:receipt {"statement":"seal","receipt":{"alg":"ed25519","canon":"rfc8785","key":"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1","digest":"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921","signature":"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703"}} diff --git a/wai/quantum-conformance/answers/cases/bell-stored.wqa b/wai/quantum-conformance/answers/cases/bell-stored.wqa index 32b4af237..3ab0af2f0 100644 --- a/wai/quantum-conformance/answers/cases/bell-stored.wqa +++ b/wai/quantum-conformance/answers/cases/bell-stored.wqa @@ -10,4 +10,4 @@ c = measure q; counts = Histogram(@Sample(bell, 1000)) check = Verdict(@Check(bell, {"00": 0.5, "11": 0.5})) seal = Receipt(@Seal([bell, counts, check])) -]]>wai:receipt {"statement":"seal","receipt":{"alg":"ed25519","canon":"rfc8785","key":"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1","digest":"172dd72f18d77dc7ef99525fc61859062015f4a44a34d8ae5c76a7ba4a1b7c6d","signature":"4e0288de0313b8f76b03bcbcfedf01989833fd63fd31e7bf0d981b75541c0362b92af555b161a552e6a4242e5a1793d9f90705ef8297db924a3abd577e6e8907"}} +]]>wai:receipt {"statement":"seal","receipt":{"alg":"ed25519","canon":"rfc8785","key":"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1","digest":"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921","signature":"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703"}} diff --git a/wai/tools/quantum-meter/Cargo.lock b/wai/tools/quantum-meter/Cargo.lock index 526982735..542a2a29f 100644 --- a/wai/tools/quantum-meter/Cargo.lock +++ b/wai/tools/quantum-meter/Cargo.lock @@ -1017,7 +1017,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/tools/quantum-wgsl-check/Cargo.lock b/wai/tools/quantum-wgsl-check/Cargo.lock index b0dbc4ee8..c7135fdd1 100644 --- a/wai/tools/quantum-wgsl-check/Cargo.lock +++ b/wai/tools/quantum-wgsl-check/Cargo.lock @@ -599,7 +599,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-audit/Cargo.lock b/wai/wai-audit/Cargo.lock index 8f26af8d1..57c4da271 100644 --- a/wai/wai-audit/Cargo.lock +++ b/wai/wai-audit/Cargo.lock @@ -1005,7 +1005,7 @@ version = "0.1.0" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-key-proxy/Cargo.lock b/wai/wai-key-proxy/Cargo.lock index a21fdcc54..f0502c22f 100644 --- a/wai/wai-key-proxy/Cargo.lock +++ b/wai/wai-key-proxy/Cargo.lock @@ -985,7 +985,7 @@ dependencies = [ [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-ledger/Cargo.lock b/wai/wai-ledger/Cargo.lock index 14c64fa02..53e512cd8 100644 --- a/wai/wai-ledger/Cargo.lock +++ b/wai/wai-ledger/Cargo.lock @@ -1007,7 +1007,7 @@ version = "0.1.0" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-pack/Cargo.lock b/wai/wai-pack/Cargo.lock index 4d51092df..446d3d04d 100644 --- a/wai/wai-pack/Cargo.lock +++ b/wai/wai-pack/Cargo.lock @@ -1257,7 +1257,7 @@ dependencies = [ [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-quantum-cli/Cargo.lock b/wai/wai-quantum-cli/Cargo.lock index 5f4dad27c..81fdbb4ae 100644 --- a/wai/wai-quantum-cli/Cargo.lock +++ b/wai/wai-quantum-cli/Cargo.lock @@ -1213,7 +1213,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "cudarc", @@ -1228,7 +1228,7 @@ dependencies = [ [[package]] name = "wai-quantum-cli" -version = "0.2.2" +version = "0.2.3" dependencies = [ "clap", "clap_complete", @@ -1241,7 +1241,7 @@ dependencies = [ [[package]] name = "wai-quantum-qpu" -version = "0.3.0" +version = "0.4.0" dependencies = [ "blake3", "serde_json", diff --git a/wai/wai-quantum-cli/Cargo.toml b/wai/wai-quantum-cli/Cargo.toml index 4ffbecc0f..a46cb5b24 100644 --- a/wai/wai-quantum-cli/Cargo.toml +++ b/wai/wai-quantum-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wai-quantum-cli" -version = "0.2.2" +version = "0.2.3" edition = "2024" rust-version = "1.97" license = "Apache-2.0" @@ -42,5 +42,5 @@ getrandom = "0.4" # result's receipt still verifies after any JSON writer has carried it. serde_json = { version = "1", features = ["float_roundtrip"] } ureq = { version = "3", optional = true, features = ["json"] } -wai-quantum = { version = "0.7.0", path = "../wai-quantum", default-features = false, features = ["full"] } -wai-quantum-qpu = { version = "0.3.0", path = "../wai-quantum-qpu", optional = true } +wai-quantum = { version = "0.8.0", path = "../wai-quantum", default-features = false, features = ["full"] } +wai-quantum-qpu = { version = "0.4.0", path = "../wai-quantum-qpu", optional = true } diff --git a/wai/wai-quantum-cli/server.json b/wai/wai-quantum-cli/server.json index 69da413ea..7d14deb92 100644 --- a/wai/wai-quantum-cli/server.json +++ b/wai/wai-quantum-cli/server.json @@ -3,14 +3,14 @@ "name": "science.transaction.wai/quantum", "title": "WAI Quantum", "description": "OpenQASM 3 programs run, checked against their intent and signed on this machine.", - "version": "0.2.2", + "version": "0.2.3", "websiteUrl": "https://wai.transaction.science/quantum-run/", "packages": [ { "registryType": "cargo", "registryBaseUrl": "https://crates.io", "identifier": "wai-quantum-cli", - "version": "0.2.2", + "version": "0.2.3", "transport": { "type": "stdio" }, diff --git a/wai/wai-quantum-desktop/Cargo.lock b/wai/wai-quantum-desktop/Cargo.lock index c7b6df903..44ccf44fb 100644 --- a/wai/wai-quantum-desktop/Cargo.lock +++ b/wai/wai-quantum-desktop/Cargo.lock @@ -4453,7 +4453,7 @@ dependencies = [ [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", @@ -4466,7 +4466,7 @@ dependencies = [ [[package]] name = "wai-quantum-cli" -version = "0.2.2" +version = "0.2.3" dependencies = [ "clap", "clap_complete", @@ -4493,7 +4493,7 @@ dependencies = [ [[package]] name = "wai-quantum-qpu" -version = "0.3.0" +version = "0.4.0" dependencies = [ "blake3", "serde_json", diff --git a/wai/wai-quantum-desktop/Cargo.toml b/wai/wai-quantum-desktop/Cargo.toml index e5612c5f8..fb0a824fd 100644 --- a/wai/wai-quantum-desktop/Cargo.toml +++ b/wai/wai-quantum-desktop/Cargo.toml @@ -16,11 +16,11 @@ tauri = { version = "2", features = [] } serde_json = { version = "1", features = ["float_roundtrip"] } # The assistant's model server, called by the app (a local one by default). ureq = { version = "3", features = ["json"] } -wai-quantum = { version = "0.7.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_toolchain", "quantum_qec", "quantum_noise"] } -wai-quantum-cli = { version = "0.2.2", path = "../wai-quantum-cli", default-features = false } +wai-quantum = { version = "0.8.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_toolchain", "quantum_qec", "quantum_noise"] } +wai-quantum-cli = { version = "0.2.3", path = "../wai-quantum-cli", default-features = false } # The person's own providers: their registry, their credentials in the # operating system's keychain, and runs on them sealed with the app's key. -wai-quantum-qpu = { version = "0.3.0", path = "../wai-quantum-qpu" } +wai-quantum-qpu = { version = "0.4.0", path = "../wai-quantum-qpu" } # Updates: a newer release found in its update manifest, and installed only # when its signature verifies with the public key in tauri.conf.json. tauri-plugin-updater = "2.14.0" diff --git a/wai/wai-quantum-js/README.md b/wai/wai-quantum-js/README.md index 59f246c35..ad9bcda1b 100644 --- a/wai/wai-quantum-js/README.md +++ b/wai/wai-quantum-js/README.md @@ -2,7 +2,7 @@ The WAI quantum job service's engine in WebAssembly, for a page or for Node. A job is planned, run and sealed here exactly as the service plans, runs and seals it. The answer is the service's JSON, signed with a key you hold, and any job's receipt, the service's included, is checked here. Programs are linted, drawn and critiqued before they run. -This is version 0.1.0 of the package. It carries the engine of `wai-quantum` 0.7.0, built from `wai-web` with its `quantum_engine` feature. The package keeps its own version line, as the Python package does. The module also holds the rest of `wai-web`'s browser surface (reading WAI envelopes among it); this page is about the quantum engine. +This is version 0.1.1 of the package. It carries the engine of `wai-quantum` 0.8.0, built from `wai-web` with its `quantum_engine` feature. The package keeps its own version line, as the Python package does. The module also holds the rest of `wai-web`'s browser surface (reading WAI envelopes among it); this page is about the quantum engine. ## Install diff --git a/wai/wai-quantum-js/package.json b/wai/wai-quantum-js/package.json index b0122b645..936abc572 100644 --- a/wai/wai-quantum-js/package.json +++ b/wai/wai-quantum-js/package.json @@ -1,6 +1,6 @@ { "name": "@transaction-science/wai-quantum", - "version": "0.1.0", + "version": "0.1.1", "description": "The WAI quantum engine in WebAssembly: OpenQASM programs planned, run and signed in a page or in Node as the WAI quantum job service runs them, receipts checked, programs linted and drawn.", "license": "Apache-2.0", "type": "module", diff --git a/wai/wai-quantum-py/Cargo.lock b/wai/wai-quantum-py/Cargo.lock index 85a487c42..b4a76d390 100644 --- a/wai/wai-quantum-py/Cargo.lock +++ b/wai/wai-quantum-py/Cargo.lock @@ -504,7 +504,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", @@ -514,7 +514,7 @@ dependencies = [ [[package]] name = "wai-quantum-py" -version = "0.1.0" +version = "0.1.1" dependencies = [ "pyo3", "serde_json", diff --git a/wai/wai-quantum-py/Cargo.toml b/wai/wai-quantum-py/Cargo.toml index 4b833ef7a..65fa6c31e 100644 --- a/wai/wai-quantum-py/Cargo.toml +++ b/wai/wai-quantum-py/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wai-quantum-py" -version = "0.1.0" +version = "0.1.1" edition = "2024" rust-version = "1.97" license = "Apache-2.0" @@ -22,7 +22,7 @@ pyo3 = { version = "=0.29.3", features = ["abi3-py39", "extension-module"] } serde_json = { version = "1", features = ["float_roundtrip"] } # quantum_qec: codes, decoders and thresholds (`qec`); quantum_noise: mitigation # in a job (`mitigate`), learned noise models among them. -wai-quantum = { version = "0.7.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_qec", "quantum_noise"] } +wai-quantum = { version = "0.8.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_qec", "quantum_noise"] } [profile.release] lto = "thin" diff --git a/wai/wai-quantum-py/notebooks/bell-receipt.ipynb b/wai/wai-quantum-py/notebooks/bell-receipt.ipynb index 063f17118..b1f47cacb 100644 --- a/wai/wai-quantum-py/notebooks/bell-receipt.ipynb +++ b/wai/wai-quantum-py/notebooks/bell-receipt.ipynb @@ -16,10 +16,10 @@ "id": "bell-receipt-1", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.795118Z", - "iopub.status.busy": "2026-10-28T08:01:08.795034Z", - "iopub.status.idle": "2026-10-28T08:01:08.799657Z", - "shell.execute_reply": "2026-10-28T08:01:08.799448Z" + "iopub.execute_input": "2026-11-01T13:51:55.736123Z", + "iopub.status.busy": "2026-11-01T13:51:55.736056Z", + "iopub.status.idle": "2026-11-01T13:51:55.741092Z", + "shell.execute_reply": "2026-11-01T13:51:55.740773Z" } }, "outputs": [], @@ -34,10 +34,10 @@ "id": "bell-receipt-2", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.800482Z", - "iopub.status.busy": "2026-10-28T08:01:08.800382Z", - "iopub.status.idle": "2026-10-28T08:01:08.802754Z", - "shell.execute_reply": "2026-10-28T08:01:08.802552Z" + "iopub.execute_input": "2026-11-01T13:51:55.741884Z", + "iopub.status.busy": "2026-11-01T13:51:55.741820Z", + "iopub.status.idle": "2026-11-01T13:51:55.744379Z", + "shell.execute_reply": "2026-11-01T13:51:55.744088Z" } }, "outputs": [ @@ -67,17 +67,17 @@ "id": "bell-receipt-3", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.803379Z", - "iopub.status.busy": "2026-10-28T08:01:08.803320Z", - "iopub.status.idle": "2026-10-28T08:01:08.839939Z", - "shell.execute_reply": "2026-10-28T08:01:08.839650Z" + "iopub.execute_input": "2026-11-01T13:51:55.744955Z", + "iopub.status.busy": "2026-11-01T13:51:55.744895Z", + "iopub.status.idle": "2026-11-01T13:51:55.783189Z", + "shell.execute_reply": "2026-11-01T13:51:55.782630Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5361ffd80f1444dcb008849dc8a7eba7", + "model_id": "abb1e0122a7d42229591c0b955738bbe", "version_major": 2, "version_minor": 1 }, @@ -105,22 +105,22 @@ "id": "bell-receipt-4", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.840978Z", - "iopub.status.busy": "2026-10-28T08:01:08.840919Z", - "iopub.status.idle": "2026-10-28T08:01:08.843330Z", - "shell.execute_reply": "2026-10-28T08:01:08.843016Z" + "iopub.execute_input": "2026-11-01T13:51:55.784778Z", + "iopub.status.busy": "2026-11-01T13:51:55.784713Z", + "iopub.status.idle": "2026-11-01T13:51:55.786808Z", + "shell.execute_reply": "2026-11-01T13:51:55.786677Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1c17564bc8f04714913aee26aec298cf", + "model_id": "8b21729581114c3c9b105acbaf05f8c4", "version_major": 2, "version_minor": 1 }, "text/html": [ - "
receipt verified checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digest800d66009e3991cb28a4312ac6fb5b262cab458bd8a025d1b689cb0d5a6edec1
signatureb61adcc941ba7019…c7543e676ad82b0a
formed25519 over rfc8785 canonical JSON
" + "
receipt verified checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digestab97a7c91deb79cc7cc6b1a15dd68e3c51bd650f6cfe20ec6e968720716ffdbd
signature5f8d2afa9af0ea8d…b84aae21c634c400
formed25519 over rfc8785 canonical JSON
" ], "text/plain": [ "Receipt(valid, signed by did:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd)" @@ -151,10 +151,10 @@ "id": "bell-receipt-6", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.844165Z", - "iopub.status.busy": "2026-10-28T08:01:08.844104Z", - "iopub.status.idle": "2026-10-28T08:01:08.845718Z", - "shell.execute_reply": "2026-10-28T08:01:08.845506Z" + "iopub.execute_input": "2026-11-01T13:51:55.788732Z", + "iopub.status.busy": "2026-11-01T13:51:55.788674Z", + "iopub.status.idle": "2026-11-01T13:51:55.790400Z", + "shell.execute_reply": "2026-11-01T13:51:55.790166Z" } }, "outputs": [ @@ -179,10 +179,10 @@ "id": "bell-receipt-7", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.846178Z", - "iopub.status.busy": "2026-10-28T08:01:08.846120Z", - "iopub.status.idle": "2026-10-28T08:01:08.847778Z", - "shell.execute_reply": "2026-10-28T08:01:08.847584Z" + "iopub.execute_input": "2026-11-01T13:51:55.791289Z", + "iopub.status.busy": "2026-11-01T13:51:55.791232Z", + "iopub.status.idle": "2026-11-01T13:51:55.792794Z", + "shell.execute_reply": "2026-11-01T13:51:55.792607Z" } }, "outputs": [ @@ -222,10 +222,10 @@ "id": "bell-receipt-10", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.848344Z", - "iopub.status.busy": "2026-10-28T08:01:08.848288Z", - "iopub.status.idle": "2026-10-28T08:01:08.850125Z", - "shell.execute_reply": "2026-10-28T08:01:08.849948Z" + "iopub.execute_input": "2026-11-01T13:51:55.793708Z", + "iopub.status.busy": "2026-11-01T13:51:55.793651Z", + "iopub.status.idle": "2026-11-01T13:51:55.795486Z", + "shell.execute_reply": "2026-11-01T13:51:55.795203Z" } }, "outputs": [ @@ -256,22 +256,22 @@ "id": "bell-receipt-11", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.850716Z", - "iopub.status.busy": "2026-10-28T08:01:08.850659Z", - "iopub.status.idle": "2026-10-28T08:01:08.852824Z", - "shell.execute_reply": "2026-10-28T08:01:08.852683Z" + "iopub.execute_input": "2026-11-01T13:51:55.796225Z", + "iopub.status.busy": "2026-11-01T13:51:55.796165Z", + "iopub.status.idle": "2026-11-01T13:51:55.798342Z", + "shell.execute_reply": "2026-11-01T13:51:55.798116Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d17f2eb5773445e9a278d806450ca8a5", + "model_id": "3d954404748147aa99dae6efeec69367", "version_major": 2, "version_minor": 1 }, "text/html": [ - "
receipt INVALID checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digest800d66009e3991cb28a4312ac6fb5b262cab458bd8a025d1b689cb0d5a6edec1
signatureb61adcc941ba7019…c7543e676ad82b0a
formed25519 over rfc8785 canonical JSON
" + "
receipt INVALID checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digestab97a7c91deb79cc7cc6b1a15dd68e3c51bd650f6cfe20ec6e968720716ffdbd
signature5f8d2afa9af0ea8d…b84aae21c634c400
formed25519 over rfc8785 canonical JSON
" ], "text/plain": [ "Receipt(INVALID, signed by did:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd)" @@ -294,10 +294,10 @@ "id": "bell-receipt-12", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:08.853480Z", - "iopub.status.busy": "2026-10-28T08:01:08.853423Z", - "iopub.status.idle": "2026-10-28T08:01:08.854691Z", - "shell.execute_reply": "2026-10-28T08:01:08.854461Z" + "iopub.execute_input": "2026-11-01T13:51:55.799069Z", + "iopub.status.busy": "2026-11-01T13:51:55.799016Z", + "iopub.status.idle": "2026-11-01T13:51:55.800268Z", + "shell.execute_reply": "2026-11-01T13:51:55.799997Z" } }, "outputs": [], @@ -323,7 +323,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.15" + "version": "3.12.16" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/equivalence.ipynb b/wai/wai-quantum-py/notebooks/equivalence.ipynb index b52a87d5d..757c9caaa 100644 --- a/wai/wai-quantum-py/notebooks/equivalence.ipynb +++ b/wai/wai-quantum-py/notebooks/equivalence.ipynb @@ -16,10 +16,10 @@ "id": "equivalence-1", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.360760Z", - "iopub.status.busy": "2026-10-28T08:01:09.360511Z", - "iopub.status.idle": "2026-10-28T08:01:09.367481Z", - "shell.execute_reply": "2026-10-28T08:01:09.366910Z" + "iopub.execute_input": "2026-11-01T13:51:56.297938Z", + "iopub.status.busy": "2026-11-01T13:51:56.297867Z", + "iopub.status.idle": "2026-11-01T13:51:56.302893Z", + "shell.execute_reply": "2026-11-01T13:51:56.302556Z" } }, "outputs": [], @@ -33,10 +33,10 @@ "id": "equivalence-2", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.368686Z", - "iopub.status.busy": "2026-10-28T08:01:09.368607Z", - "iopub.status.idle": "2026-10-28T08:01:09.371231Z", - "shell.execute_reply": "2026-10-28T08:01:09.370905Z" + "iopub.execute_input": "2026-11-01T13:51:56.303730Z", + "iopub.status.busy": "2026-11-01T13:51:56.303668Z", + "iopub.status.idle": "2026-11-01T13:51:56.305849Z", + "shell.execute_reply": "2026-11-01T13:51:56.305580Z" } }, "outputs": [ @@ -84,10 +84,10 @@ "id": "equivalence-4", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.371950Z", - "iopub.status.busy": "2026-10-28T08:01:09.371889Z", - "iopub.status.idle": "2026-10-28T08:01:09.376672Z", - "shell.execute_reply": "2026-10-28T08:01:09.376373Z" + "iopub.execute_input": "2026-11-01T13:51:56.306493Z", + "iopub.status.busy": "2026-11-01T13:51:56.306401Z", + "iopub.status.idle": "2026-11-01T13:51:56.309359Z", + "shell.execute_reply": "2026-11-01T13:51:56.309124Z" } }, "outputs": [ @@ -127,17 +127,17 @@ "id": "equivalence-5", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.377620Z", - "iopub.status.busy": "2026-10-28T08:01:09.377552Z", - "iopub.status.idle": "2026-10-28T08:01:09.414487Z", - "shell.execute_reply": "2026-10-28T08:01:09.413939Z" + "iopub.execute_input": "2026-11-01T13:51:56.310172Z", + "iopub.status.busy": "2026-11-01T13:51:56.310116Z", + "iopub.status.idle": "2026-11-01T13:51:56.350625Z", + "shell.execute_reply": "2026-11-01T13:51:56.350206Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b41310c95795476da6e6961600635aa1", + "model_id": "c3da9d748f1945f2aff2b59ea7eb4c62", "version_major": 2, "version_minor": 1 }, @@ -166,17 +166,17 @@ "id": "equivalence-6", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.415600Z", - "iopub.status.busy": "2026-10-28T08:01:09.415533Z", - "iopub.status.idle": "2026-10-28T08:01:09.417916Z", - "shell.execute_reply": "2026-10-28T08:01:09.417634Z" + "iopub.execute_input": "2026-11-01T13:51:56.351678Z", + "iopub.status.busy": "2026-11-01T13:51:56.351609Z", + "iopub.status.idle": "2026-11-01T13:51:56.354391Z", + "shell.execute_reply": "2026-11-01T13:51:56.354116Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d80c745a6b144fedaf718cfa70f41635", + "model_id": "a1878e6caaf94a74ab1da3d3ac5a1080", "version_major": 2, "version_minor": 1 }, @@ -216,7 +216,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.15" + "version": "3.12.16" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/getting-started.ipynb b/wai/wai-quantum-py/notebooks/getting-started.ipynb index 7e301a134..23bd3d05b 100644 --- a/wai/wai-quantum-py/notebooks/getting-started.ipynb +++ b/wai/wai-quantum-py/notebooks/getting-started.ipynb @@ -23,17 +23,17 @@ "id": "getting-started-1", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.853588Z", - "iopub.status.busy": "2026-10-30T18:17:32.853375Z", - "iopub.status.idle": "2026-10-30T18:17:32.871318Z", - "shell.execute_reply": "2026-10-30T18:17:32.870355Z" + "iopub.execute_input": "2026-11-01T13:51:55.199632Z", + "iopub.status.busy": "2026-11-01T13:51:55.199506Z", + "iopub.status.idle": "2026-11-01T13:51:55.207260Z", + "shell.execute_reply": "2026-11-01T13:51:55.206889Z" } }, "outputs": [ { "data": { "text/plain": [ - "'0.1.0'" + "'0.1.1'" ] }, "execution_count": 1, @@ -52,10 +52,10 @@ "id": "getting-started-2", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.873536Z", - "iopub.status.busy": "2026-10-30T18:17:32.873343Z", - "iopub.status.idle": "2026-10-30T18:17:32.877116Z", - "shell.execute_reply": "2026-10-30T18:17:32.876420Z" + "iopub.execute_input": "2026-11-01T13:51:55.208119Z", + "iopub.status.busy": "2026-11-01T13:51:55.208045Z", + "iopub.status.idle": "2026-11-01T13:51:55.210082Z", + "shell.execute_reply": "2026-11-01T13:51:55.209763Z" } }, "outputs": [ @@ -95,10 +95,10 @@ "id": "getting-started-4", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.879466Z", - "iopub.status.busy": "2026-10-30T18:17:32.879270Z", - "iopub.status.idle": "2026-10-30T18:17:32.883948Z", - "shell.execute_reply": "2026-10-30T18:17:32.883150Z" + "iopub.execute_input": "2026-11-01T13:51:55.211031Z", + "iopub.status.busy": "2026-11-01T13:51:55.210971Z", + "iopub.status.idle": "2026-11-01T13:51:55.213179Z", + "shell.execute_reply": "2026-11-01T13:51:55.212969Z" } }, "outputs": [ @@ -142,10 +142,10 @@ "id": "getting-started-6", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.885820Z", - "iopub.status.busy": "2026-10-30T18:17:32.885633Z", - "iopub.status.idle": "2026-10-30T18:17:32.889717Z", - "shell.execute_reply": "2026-10-30T18:17:32.889212Z" + "iopub.execute_input": "2026-11-01T13:51:55.214092Z", + "iopub.status.busy": "2026-11-01T13:51:55.214031Z", + "iopub.status.idle": "2026-11-01T13:51:55.216290Z", + "shell.execute_reply": "2026-11-01T13:51:55.216060Z" } }, "outputs": [ @@ -171,14 +171,14 @@ " 'omitted_shots': 0,\n", " 'outcome_dimension': 1,\n", " 'elapsed_ms': 0,\n", - " 'engine': {'name': 'wai-quantum', 'version': '0.7.0'},\n", + " 'engine': {'name': 'wai-quantum', 'version': '0.8.0'},\n", " 'schema': 'wai.quantum.job-result/1',\n", " 'energy': {'unmetered': \"the Python package does not meter a run's energy\"},\n", " 'receipt': {'alg': 'ed25519',\n", " 'canon': 'rfc8785',\n", " 'key': '03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8',\n", - " 'digest': '57b40878d70402c45a5d04cb2549ec2d3752317bacb9aea890add5069eb9b13a',\n", - " 'signature': '3be4c1a273e3e11c0a0203f06a3660245d397a998a104a1ae3eaffdb5aecfb6d5e336c3af429ab561de0e2ae349204b37e823f38214456ef2500b922acd34b08'}}}" + " 'digest': '438d093b41edfae302ee4b499b8134bf1c039e7817eb847987b4c689b8991e60',\n", + " 'signature': 'c61f770d572de5dcdb504e7e26584d1297c69ea8289ca5cd1e5396f22b67d3b943e9ef3c7dc5d76a8dde6f3b62e9511c47ab5cc7c25cbddc0886219418897900'}}}" ] }, "execution_count": 4, @@ -206,10 +206,10 @@ "id": "getting-started-8", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.890804Z", - "iopub.status.busy": "2026-10-30T18:17:32.890727Z", - "iopub.status.idle": "2026-10-30T18:17:32.892852Z", - "shell.execute_reply": "2026-10-30T18:17:32.892507Z" + "iopub.execute_input": "2026-11-01T13:51:55.217127Z", + "iopub.status.busy": "2026-11-01T13:51:55.217066Z", + "iopub.status.idle": "2026-11-01T13:51:55.218801Z", + "shell.execute_reply": "2026-11-01T13:51:55.218546Z" } }, "outputs": [ @@ -245,10 +245,10 @@ "id": "getting-started-10", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.893855Z", - "iopub.status.busy": "2026-10-30T18:17:32.893793Z", - "iopub.status.idle": "2026-10-30T18:17:32.895781Z", - "shell.execute_reply": "2026-10-30T18:17:32.895369Z" + "iopub.execute_input": "2026-11-01T13:51:55.219585Z", + "iopub.status.busy": "2026-11-01T13:51:55.219528Z", + "iopub.status.idle": "2026-11-01T13:51:55.221051Z", + "shell.execute_reply": "2026-11-01T13:51:55.220802Z" } }, "outputs": [ @@ -277,17 +277,17 @@ "id": "getting-started-11", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.896679Z", - "iopub.status.busy": "2026-10-30T18:17:32.896620Z", - "iopub.status.idle": "2026-10-30T18:17:32.937071Z", - "shell.execute_reply": "2026-10-30T18:17:32.936536Z" + "iopub.execute_input": "2026-11-01T13:51:55.221683Z", + "iopub.status.busy": "2026-11-01T13:51:55.221628Z", + "iopub.status.idle": "2026-11-01T13:51:55.259452Z", + "shell.execute_reply": "2026-11-01T13:51:55.258888Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7c992051b33243fa9a5585cc2c0cfcf3", + "model_id": "4ad1e0136ee94ab985bf9acd61d829f4", "version_major": 2, "version_minor": 1 }, @@ -316,10 +316,10 @@ "id": "getting-started-12", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.938195Z", - "iopub.status.busy": "2026-10-30T18:17:32.938101Z", - "iopub.status.idle": "2026-10-30T18:17:32.940581Z", - "shell.execute_reply": "2026-10-30T18:17:32.940034Z" + "iopub.execute_input": "2026-11-01T13:51:55.260588Z", + "iopub.status.busy": "2026-11-01T13:51:55.260521Z", + "iopub.status.idle": "2026-11-01T13:51:55.262655Z", + "shell.execute_reply": "2026-11-01T13:51:55.262293Z" } }, "outputs": [ @@ -355,10 +355,10 @@ "id": "getting-started-14", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.941942Z", - "iopub.status.busy": "2026-10-30T18:17:32.941847Z", - "iopub.status.idle": "2026-10-30T18:17:32.943927Z", - "shell.execute_reply": "2026-10-30T18:17:32.943548Z" + "iopub.execute_input": "2026-11-01T13:51:55.263404Z", + "iopub.status.busy": "2026-11-01T13:51:55.263342Z", + "iopub.status.idle": "2026-11-01T13:51:55.264893Z", + "shell.execute_reply": "2026-11-01T13:51:55.264679Z" } }, "outputs": [ @@ -393,10 +393,10 @@ "id": "getting-started-15", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.944906Z", - "iopub.status.busy": "2026-10-30T18:17:32.944835Z", - "iopub.status.idle": "2026-10-30T18:17:32.947177Z", - "shell.execute_reply": "2026-10-30T18:17:32.946844Z" + "iopub.execute_input": "2026-11-01T13:51:55.265659Z", + "iopub.status.busy": "2026-11-01T13:51:55.265598Z", + "iopub.status.idle": "2026-11-01T13:51:55.267570Z", + "shell.execute_reply": "2026-11-01T13:51:55.267291Z" } }, "outputs": [ @@ -434,17 +434,17 @@ "id": "getting-started-17", "metadata": { "execution": { - "iopub.execute_input": "2026-10-30T18:17:32.948407Z", - "iopub.status.busy": "2026-10-30T18:17:32.948327Z", - "iopub.status.idle": "2026-10-30T18:17:32.951943Z", - "shell.execute_reply": "2026-10-30T18:17:32.951464Z" + "iopub.execute_input": "2026-11-01T13:51:55.268166Z", + "iopub.status.busy": "2026-11-01T13:51:55.268105Z", + "iopub.status.idle": "2026-11-01T13:51:55.270774Z", + "shell.execute_reply": "2026-11-01T13:51:55.270516Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0578d81f40d747c585ebeaccf83dfb4a", + "model_id": "ac4be8571cc24bf4b2d0d157e78dc1c6", "version_major": 2, "version_minor": 1 }, @@ -481,7 +481,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.14" + "version": "3.12.16" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/noisy-run.ipynb b/wai/wai-quantum-py/notebooks/noisy-run.ipynb index 6267ddd6b..735392e9f 100644 --- a/wai/wai-quantum-py/notebooks/noisy-run.ipynb +++ b/wai/wai-quantum-py/notebooks/noisy-run.ipynb @@ -16,10 +16,10 @@ "id": "noisy-run-1", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.955162Z", - "iopub.status.busy": "2026-10-28T08:01:09.955035Z", - "iopub.status.idle": "2026-10-28T08:01:09.960072Z", - "shell.execute_reply": "2026-10-28T08:01:09.959738Z" + "iopub.execute_input": "2026-11-01T13:51:56.874893Z", + "iopub.status.busy": "2026-11-01T13:51:56.874821Z", + "iopub.status.idle": "2026-11-01T13:51:56.879847Z", + "shell.execute_reply": "2026-11-01T13:51:56.879515Z" } }, "outputs": [], @@ -33,10 +33,10 @@ "id": "noisy-run-2", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.960954Z", - "iopub.status.busy": "2026-10-28T08:01:09.960881Z", - "iopub.status.idle": "2026-10-28T08:01:09.963501Z", - "shell.execute_reply": "2026-10-28T08:01:09.963188Z" + "iopub.execute_input": "2026-11-01T13:51:56.880640Z", + "iopub.status.busy": "2026-11-01T13:51:56.880576Z", + "iopub.status.idle": "2026-11-01T13:51:56.883016Z", + "shell.execute_reply": "2026-11-01T13:51:56.882758Z" } }, "outputs": [ @@ -66,10 +66,10 @@ "id": "noisy-run-3", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.964252Z", - "iopub.status.busy": "2026-10-28T08:01:09.964175Z", - "iopub.status.idle": "2026-10-28T08:01:09.967495Z", - "shell.execute_reply": "2026-10-28T08:01:09.967210Z" + "iopub.execute_input": "2026-11-01T13:51:56.883831Z", + "iopub.status.busy": "2026-11-01T13:51:56.883763Z", + "iopub.status.idle": "2026-11-01T13:51:56.887209Z", + "shell.execute_reply": "2026-11-01T13:51:56.886916Z" } }, "outputs": [ @@ -108,17 +108,17 @@ "id": "noisy-run-5", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:09.968355Z", - "iopub.status.busy": "2026-10-28T08:01:09.968293Z", - "iopub.status.idle": "2026-10-28T08:01:10.003856Z", - "shell.execute_reply": "2026-10-28T08:01:10.003502Z" + "iopub.execute_input": "2026-11-01T13:51:56.887944Z", + "iopub.status.busy": "2026-11-01T13:51:56.887815Z", + "iopub.status.idle": "2026-11-01T13:51:56.928739Z", + "shell.execute_reply": "2026-11-01T13:51:56.928457Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "783d70101e544aae8da9b146ff4fb5ab", + "model_id": "006fa7a5f63a4f80b29ccdeda6e4ffcf", "version_major": 2, "version_minor": 1 }, @@ -155,10 +155,10 @@ "id": "noisy-run-7", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:10.004751Z", - "iopub.status.busy": "2026-10-28T08:01:10.004679Z", - "iopub.status.idle": "2026-10-28T08:01:10.007086Z", - "shell.execute_reply": "2026-10-28T08:01:10.006737Z" + "iopub.execute_input": "2026-11-01T13:51:56.929803Z", + "iopub.status.busy": "2026-11-01T13:51:56.929732Z", + "iopub.status.idle": "2026-11-01T13:51:56.932326Z", + "shell.execute_reply": "2026-11-01T13:51:56.931883Z" } }, "outputs": [ @@ -185,17 +185,17 @@ "id": "noisy-run-8", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:10.007827Z", - "iopub.status.busy": "2026-10-28T08:01:10.007764Z", - "iopub.status.idle": "2026-10-28T08:01:10.010461Z", - "shell.execute_reply": "2026-10-28T08:01:10.010135Z" + "iopub.execute_input": "2026-11-01T13:51:56.933097Z", + "iopub.status.busy": "2026-11-01T13:51:56.933036Z", + "iopub.status.idle": "2026-11-01T13:51:56.935560Z", + "shell.execute_reply": "2026-11-01T13:51:56.935442Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4a647a39572b47a6838cb95bf90ef10b", + "model_id": "eee07e66a1184af49c60281df28406a5", "version_major": 2, "version_minor": 1 }, @@ -232,7 +232,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.15" + "version": "3.12.16" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/service-job.ipynb b/wai/wai-quantum-py/notebooks/service-job.ipynb index 2055ecbcb..80b518afb 100644 --- a/wai/wai-quantum-py/notebooks/service-job.ipynb +++ b/wai/wai-quantum-py/notebooks/service-job.ipynb @@ -18,10 +18,10 @@ "id": "service-job-1", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:10.513477Z", - "iopub.status.busy": "2026-10-28T08:01:10.513403Z", - "iopub.status.idle": "2026-10-28T08:01:10.521129Z", - "shell.execute_reply": "2026-10-28T08:01:10.520803Z" + "iopub.execute_input": "2026-11-01T13:51:57.467938Z", + "iopub.status.busy": "2026-11-01T13:51:57.467863Z", + "iopub.status.idle": "2026-11-01T13:51:57.475246Z", + "shell.execute_reply": "2026-11-01T13:51:57.474914Z" }, "tags": [ "service" @@ -51,10 +51,10 @@ "id": "service-job-2", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:10.522340Z", - "iopub.status.busy": "2026-10-28T08:01:10.522275Z", - "iopub.status.idle": "2026-10-28T08:01:10.735996Z", - "shell.execute_reply": "2026-10-28T08:01:10.735417Z" + "iopub.execute_input": "2026-11-01T13:51:57.476037Z", + "iopub.status.busy": "2026-11-01T13:51:57.475960Z", + "iopub.status.idle": "2026-11-01T13:51:57.689928Z", + "shell.execute_reply": "2026-11-01T13:51:57.689449Z" }, "tags": [ "service" @@ -99,10 +99,10 @@ "id": "service-job-4", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:10.737274Z", - "iopub.status.busy": "2026-10-28T08:01:10.737193Z", - "iopub.status.idle": "2026-10-28T08:01:10.740151Z", - "shell.execute_reply": "2026-10-28T08:01:10.739783Z" + "iopub.execute_input": "2026-11-01T13:51:57.690965Z", + "iopub.status.busy": "2026-11-01T13:51:57.690890Z", + "iopub.status.idle": "2026-11-01T13:51:57.693971Z", + "shell.execute_reply": "2026-11-01T13:51:57.693679Z" }, "tags": [ "service" @@ -137,10 +137,10 @@ "id": "service-job-6", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:10.741138Z", - "iopub.status.busy": "2026-10-28T08:01:10.741051Z", - "iopub.status.idle": "2026-10-28T08:01:10.743060Z", - "shell.execute_reply": "2026-10-28T08:01:10.742790Z" + "iopub.execute_input": "2026-11-01T13:51:57.694794Z", + "iopub.status.busy": "2026-11-01T13:51:57.694730Z", + "iopub.status.idle": "2026-11-01T13:51:57.696807Z", + "shell.execute_reply": "2026-11-01T13:51:57.696548Z" }, "tags": [ "service" @@ -169,10 +169,10 @@ "id": "service-job-7", "metadata": { "execution": { - "iopub.execute_input": "2026-10-28T08:01:10.743837Z", - "iopub.status.busy": "2026-10-28T08:01:10.743775Z", - "iopub.status.idle": "2026-10-28T08:01:10.769694Z", - "shell.execute_reply": "2026-10-28T08:01:10.769271Z" + "iopub.execute_input": "2026-11-01T13:51:57.697505Z", + "iopub.status.busy": "2026-11-01T13:51:57.697426Z", + "iopub.status.idle": "2026-11-01T13:51:57.725830Z", + "shell.execute_reply": "2026-11-01T13:51:57.725338Z" }, "tags": [ "service" @@ -211,7 +211,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.15" + "version": "3.12.16" } }, "nbformat": 4, diff --git a/wai/wai-quantum-qpu/Cargo.lock b/wai/wai-quantum-qpu/Cargo.lock index 4b8bcf98b..203b2bd3d 100644 --- a/wai/wai-quantum-qpu/Cargo.lock +++ b/wai/wai-quantum-qpu/Cargo.lock @@ -423,7 +423,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "wai-quantum-qpu" -version = "0.3.0" +version = "0.4.0" dependencies = [ "blake3", "serde_json", diff --git a/wai/wai-quantum-qpu/Cargo.toml b/wai/wai-quantum-qpu/Cargo.toml index f6796c894..027e82e55 100644 --- a/wai/wai-quantum-qpu/Cargo.toml +++ b/wai/wai-quantum-qpu/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wai-quantum-qpu" -version = "0.3.0" +version = "0.4.0" edition = "2024" rust-version = "1.97" license = "Apache-2.0" @@ -12,6 +12,6 @@ categories = ["science", "api-bindings"] [dependencies] # quantum_engine and quantum_receipt: a provider job is read, compared with the # circuit's exact distribution and sealed by the engine (engine::provider). -wai-quantum = { version = "0.7.0", path = "../wai-quantum", default-features = false, features = ["quantum_fabric", "quantum_engine", "quantum_receipt"] } +wai-quantum = { version = "0.8.0", path = "../wai-quantum", default-features = false, features = ["quantum_fabric", "quantum_engine", "quantum_receipt"] } serde_json = "1" blake3 = "1" diff --git a/wai/wai-quantum-serve/Cargo.lock b/wai/wai-quantum-serve/Cargo.lock index a4b6b4fb6..0a351f353 100644 --- a/wai/wai-quantum-serve/Cargo.lock +++ b/wai/wai-quantum-serve/Cargo.lock @@ -599,7 +599,7 @@ dependencies = [ [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-quantum-service/Cargo.lock b/wai/wai-quantum-service/Cargo.lock index 38d56b23b..390584bdc 100644 --- a/wai/wai-quantum-service/Cargo.lock +++ b/wai/wai-quantum-service/Cargo.lock @@ -857,7 +857,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", @@ -870,7 +870,7 @@ dependencies = [ [[package]] name = "wai-quantum-service" -version = "0.2.0" +version = "0.2.1" dependencies = [ "axum", "blake3", diff --git a/wai/wai-quantum-service/Cargo.toml b/wai/wai-quantum-service/Cargo.toml index 9f8ac98c5..f28065897 100644 --- a/wai/wai-quantum-service/Cargo.toml +++ b/wai/wai-quantum-service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wai-quantum-service" -version = "0.2.0" +version = "0.2.1" edition = "2024" rust-version = "1.97" license = "Apache-2.0" diff --git a/wai/wai-quantum-service/server.json b/wai/wai-quantum-service/server.json index c444db647..3c7ef6f71 100644 --- a/wai/wai-quantum-service/server.json +++ b/wai/wai-quantum-service/server.json @@ -3,7 +3,7 @@ "name": "science.transaction.wai/quantum-jobs", "title": "WAI Quantum job service", "description": "A free quantum job service: OpenQASM 3 run, checked and signed, with no account or key.", - "version": "0.2.0", + "version": "0.2.1", "websiteUrl": "https://wai.transaction.science/quantum-run/", "remotes": [ { diff --git a/wai/wai-quantum-views/Cargo.lock b/wai/wai-quantum-views/Cargo.lock index 036c44f3c..b09cb04d6 100644 --- a/wai/wai-quantum-views/Cargo.lock +++ b/wai/wai-quantum-views/Cargo.lock @@ -416,7 +416,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-quantum/Cargo.lock b/wai/wai-quantum/Cargo.lock index 9f305e04c..da110c57c 100644 --- a/wai/wai-quantum/Cargo.lock +++ b/wai/wai-quantum/Cargo.lock @@ -1079,7 +1079,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "block2", diff --git a/wai/wai-quantum/Cargo.toml b/wai/wai-quantum/Cargo.toml index 4388a8ac0..a3e5723d7 100644 --- a/wai/wai-quantum/Cargo.toml +++ b/wai/wai-quantum/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" edition = "2024" rust-version = "1.97" license = "Apache-2.0" diff --git a/wai/wai-quantum/VERSIONING.md b/wai/wai-quantum/VERSIONING.md index 5955746ce..cb0f33e18 100644 --- a/wai/wai-quantum/VERSIONING.md +++ b/wai/wai-quantum/VERSIONING.md @@ -12,9 +12,9 @@ replacement, are listed in [DEPRECATIONS.md](DEPRECATIONS.md). | Package | Where | Version today | |---|---|---| -| `wai-quantum`, the engine (Rust crate) | `wai/wai-quantum`, published on crates.io | 0.7.x | +| `wai-quantum`, the engine (Rust crate) | `wai/wai-quantum`, published on crates.io | 0.8.x | | `wai-quantum-cli`, the command line `wai-quantum` and its MCP server (Rust crate) | `wai/wai-quantum-cli`, published on crates.io | 0.2.x | -| `wai-quantum-qpu`, quantum processors and the person's own providers (Rust crate) | `wai/wai-quantum-qpu`, published on crates.io | 0.3.x | +| `wai-quantum-qpu`, quantum processors and the person's own providers (Rust crate) | `wai/wai-quantum-qpu`, published on crates.io | 0.4.x | | The job service, its HTTP API and its MCP server | `wai/wai-quantum-service`, at `https://wai.transaction.science/quantum-jobs` | 0.2.x | | `wai-quantum`, the Python package | `wai/wai-quantum-py` | 0.1.x | | The editor extension | `wai/tools/wai-quantum-editor` | 0.1.x | @@ -109,7 +109,7 @@ Every result names the engine that made it and the schema it follows (a compile's result names `wai.quantum.compile-result/1`): ```json fragment -"engine": { "name": "wai-quantum", "version": "0.7.0" }, +"engine": { "name": "wai-quantum", "version": "0.8.0" }, "schema": "wai.quantum.job-result/1" ``` diff --git a/wai/wai-rs/Cargo.lock b/wai/wai-rs/Cargo.lock index 14462e484..521fd30fe 100644 --- a/wai/wai-rs/Cargo.lock +++ b/wai/wai-rs/Cargo.lock @@ -4587,7 +4587,7 @@ dependencies = [ [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-rs/Cargo.toml b/wai/wai-rs/Cargo.toml index 9ea49c070..bea715e8e 100644 --- a/wai/wai-rs/Cargo.toml +++ b/wai/wai-rs/Cargo.toml @@ -115,7 +115,7 @@ getrandom = { version = "0.3", optional = true } # ---- quantum (optional, behind the `quantum*` features) ---- # The quantum stack now lives in its own dependency-light crate so it can be used # without the media/codec chain. `wai` re-exports it unchanged. -wai-quantum = { version = "0.7.0", path = "../wai-quantum", optional = true, default-features = false } +wai-quantum = { version = "0.8.0", path = "../wai-quantum", optional = true, default-features = false } # Create's library (WAI's widgets for joule-ui): `wai create --from app.oui`, `wai app` and # `wai mcp --toolset app`, in a build with the feature `app`. wai-app = { path = "../wai-app", optional = true } diff --git a/wai/wai-web/Cargo.lock b/wai/wai-web/Cargo.lock index ab7479ad5..5b1255042 100644 --- a/wai/wai-web/Cargo.lock +++ b/wai/wai-web/Cargo.lock @@ -1241,7 +1241,7 @@ version = "0.1.0" [[package]] name = "wai-quantum" -version = "0.7.0" +version = "0.8.0" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-web/src/quantum_engine.rs b/wai/wai-web/src/quantum_engine.rs index 3fd4c3bfe..d8a39c602 100644 --- a/wai/wai-web/src/quantum_engine.rs +++ b/wai/wai-web/src/quantum_engine.rs @@ -770,8 +770,9 @@ mod tests { /// BLAKE3 of [`engine_course_check`]'s answer for [`COURSE_CHECK`] on the /// lesson's starter, at 512 MiB, as the native build and the wasm32 one write it. /// A check names the engine that made it (`engine::schema::stamp_as`), so this - /// moves with every release of wai-quantum (374b400e… before checks named it). - pub(super) const COURSE_DIGEST: &str = "969b2c1c19d0fd9c820aa04aae4f0675b165ce7e09e9f51004a92d0ffb910f21"; + /// moves with every release of wai-quantum (374b400e… before checks named it, + /// 969b2c1c… at 0.7.0, 1a9aa0ad… at 0.8.0). + pub(super) const COURSE_DIGEST: &str = "1a9aa0adbdf40ce1a812ee40408caec29259a25bea853c49f853a798b05baa6a"; pub(super) fn starter(id: &str) -> String { let l: Value = serde_json::from_str(&engine_course_lesson(id, "en")).unwrap(); @@ -859,7 +860,7 @@ mod tests { /// names the engine and its schema (`engine::schema::stamp_as`), and its /// certificate names its gate set `basis` (04a03934… when it was `target`). /// The engine's version is among the sealed bytes, so this moves with every - /// release of wai-quantum (0a165415… at 0.6.16, ac948133… at 0.7.0). + /// release of wai-quantum (0a165415… at 0.6.16, ac948133… at 0.7.0, beffb3cb… at 0.8.0). /// The compile sealed before either, whose bytes hashed to 14db506e…, is /// kept in wai-quantum's `src/engine/testdata/compile-legacy.json` and still /// verifies. @@ -868,7 +869,7 @@ mod tests { pub(super) const PULSE_XM: &str = "OPENQASM 3.0;\ndefcalgrammar \"openpulse\";\ncal {\n extern port d0;\n extern port m0;\n extern port a0;\n frame q0 = newframe(d0, 5.0e9, 0);\n frame r0 = newframe(m0, 7.1e9, 0);\n frame c0 = newframe(a0, 7.1e9, 0);\n}\ndefcal x $0 { play(q0, gaussian(0.4, 64dt, 16dt)); }\ndefcal measure $0 -> bit { play(r0, constant(0.1, 200dt)); return capture_v2(c0, 200dt); }\nbit[1] c;\nx $0;\nc[0] = measure $0;\n"; pub(super) const PULSE_XM_DENSITY: &str = "03c0c48a8a3568fdd86e792633c5b4ea98eca3d09dc40d028bb50e13c489828b"; - pub(super) const COMPILE_DIGEST: &str = "ac94813324e9bf7ab83b4bf0290e5abf25bef987826311f0632c2701ebbd045a"; + pub(super) const COMPILE_DIGEST: &str = "beffb3cbdee44a02268bdd04f4de7941d87f9034e072c727c92f7d571d6b03c9"; /// A compile in the page: Clifford+T within the budget, every pass /// recorded, the certificate sealed with the page's key and checked @@ -897,8 +898,8 @@ mod tests { /// names the engine and its schema (`engine::schema::stamp_as`), which /// moved it from aaa42bc8…, the estimate sealed before. The engine's /// version is among the sealed bytes, so this moves with every release of - /// wai-quantum (0cd25cf6… at 0.6.16, 8715e76b… at 0.7.0). - pub(super) const ESTIMATE_DIGEST: &str = "8715e76b04746611834d4bbcee1d3196f5ce457d450aa88d46e084b1ff813da1"; + /// wai-quantum (0cd25cf6… at 0.6.16, 8715e76b… at 0.7.0, db90b147… at 0.8.0). + pub(super) const ESTIMATE_DIGEST: &str = "db90b14718b301f025e1b2979c19b9c1bcd824e259c7fde9a76775244e4cd76a"; /// An estimate in the page: the counts (a ladder through an ancilla), the /// frontier, every receipt sealed with the page's key, the seal checked -- 2.54.0 (Apple Git-157) From fbcdbe795dae513709698b11631edcc10f9dbc2d Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Sun, 1 Nov 2026 12:00:27 -0500 Subject: [PATCH 2/4] wai-quantum release 0.8.0: the wheel the Python README names, and the views page's sources The Python README and its zh-CN translation name the wheel at 0.1.1, the version the docs check holds them to. The views manifest records the new digest of wai-quantum-views's lockfile, which the release moved: rebuilt with wai/wai-quantum-views/build.sh in catthehacker/ubuntu:act-22.04 with Rust 1.98.0, as the views workflow rebuilds it. The page's bytes are unchanged. Co-Authored-By: Claude Opus 5.5 --- wai/wai-quantum-py/README.md | 2 +- wai/wai-quantum-py/README.zh-CN.md | 2 +- wai/wai-quantum/views/manifest.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wai/wai-quantum-py/README.md b/wai/wai-quantum-py/README.md index 845844280..96ff5316b 100644 --- a/wai/wai-quantum-py/README.md +++ b/wai/wai-quantum-py/README.md @@ -19,7 +19,7 @@ pip install "wai-quantum[widgets]" # and the notebook widgets (anywidget) The same wheels are attached, each with its SHA-256, to the `wai-quantum-cli-v` release on the forge that carries them: ```sh norun=install -pip install wai_quantum-0.1.0-cp39-abi3-.whl +pip install wai_quantum-0.1.1-cp39-abi3-.whl ``` To build the wheel yourself, with Rust 1.98 and maturin 1.15.0: diff --git a/wai/wai-quantum-py/README.zh-CN.md b/wai/wai-quantum-py/README.zh-CN.md index 391e11771..acf98a8ff 100644 --- a/wai/wai-quantum-py/README.zh-CN.md +++ b/wai/wai-quantum-py/README.zh-CN.md @@ -23,7 +23,7 @@ pip install "wai-quantum[widgets]" # 另加笔记本小组件(anywidget) 同样的 wheel 也附在代码托管平台(forge)上包含它们的 `wai-quantum-cli-v` 发布版中,每个都附有 SHA-256: ```sh norun=install -pip install wai_quantum-0.1.0-cp39-abi3-.whl +pip install wai_quantum-0.1.1-cp39-abi3-.whl ``` 要自己构建 wheel,需要 Rust 1.98 和 maturin 1.15.0: diff --git a/wai/wai-quantum/views/manifest.json b/wai/wai-quantum/views/manifest.json index 39ddb8e67..09d520955 100644 --- a/wai/wai-quantum/views/manifest.json +++ b/wai/wai-quantum/views/manifest.json @@ -64,7 +64,7 @@ "wai/quantum-studio/src/views/main.js": "4129c45e35f65caaedb9e2fd4e0e2e1a29ba6ff27b33c5190924c8cc13b2a5cd", "wai/quantum-studio/src/views/render.js": "b3f8bd6717bd18b6275ea8fc94cd2be31f81ef0a8d7c46a882e03085a67eaea4", "wai/quantum-studio/src/views/views.css": "6ba324a58e6c320094e7534694c3c6d53d15605326be785d72989432b7b2a1fe", - "wai/wai-quantum-views/Cargo.lock": "8c1633a018b90fd8399a80f6822c51bb646d08e6cda4044bfa63ca9a546e3e66", + "wai/wai-quantum-views/Cargo.lock": "83edc2c2e30b8b07fcadfb09c7f65c7b7ae193097ed2584e5b06275e7ed9cccf", "wai/wai-quantum-views/Cargo.toml": "2de456eaf4a115a7a721f26a27974f5b621295b77e30039d03044922d891bbb2", "wai/wai-quantum-views/build.sh": "c7cb7c91ba0a3ee39e1e4427c4b8d5be21d289eab3b036b7466347c774b67871", "wai/wai-quantum-views/src/lib.rs": "a9a20da6399ff58efde84eb5116f8e064ca9110f33b6b99546899ae5971636e0" -- 2.54.0 (Apple Git-157) From ab3bc1d4f083648c8ac5bb1c4459237d972512b6 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Sun, 1 Nov 2026 18:38:20 -0500 Subject: [PATCH 3/4] wai-quantum release 0.8.0: the requirement the engine's README shows The README and its zh-CN translation show `wai-quantum = "0.8"`, the requirement that takes the crate at 0.8.0, which the docs check holds them to. Co-Authored-By: Claude Opus 5.5 --- wai/wai-quantum/README.md | 2 +- wai/wai-quantum/README.zh-CN.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wai/wai-quantum/README.md b/wai/wai-quantum/README.md index d91d78530..46cbd376a 100644 --- a/wai/wai-quantum/README.md +++ b/wai/wai-quantum/README.md @@ -21,7 +21,7 @@ library. ```toml [dependencies] -wai-quantum = "0.7" +wai-quantum = "0.8" ``` ```rust runnable diff --git a/wai/wai-quantum/README.zh-CN.md b/wai/wai-quantum/README.zh-CN.md index d758f3283..6412c92d7 100644 --- a/wai/wai-quantum/README.zh-CN.md +++ b/wai/wai-quantum/README.zh-CN.md @@ -10,7 +10,7 @@ ```toml [dependencies] -wai-quantum = "0.7" +wai-quantum = "0.8" ``` ```rust runnable -- 2.54.0 (Apple Git-157) From 43e257541ac1c91bb19c3afc369ae514a548e20b Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Sun, 1 Nov 2026 20:40:54 -0500 Subject: [PATCH 4/4] wai-quantum release 0.8.0: CI again, now the arm64 runner has disk The previous run's jobs on linux-arm64 failed at checkout: the runner's host had no space left. Nothing in the tree changes. Co-Authored-By: Claude Opus 5.5 -- 2.54.0 (Apple Git-157)