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/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-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/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 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-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" 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