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 e45f0c830..c9e9d2cf0 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 @@ -3476,7 +3476,7 @@ version = "0.1.0" [[package]] name = "wai-quantum" -version = "0.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/CHANGELOG.md b/wai/CHANGELOG.md index 84ac83406..fc0da8153 100644 --- a/wai/CHANGELOG.md +++ b/wai/CHANGELOG.md @@ -329,6 +329,48 @@ translocated, said it would update itself and could not. It now asks whether the caller to sign. `exact_upscale` now also needs `png_still` and `receipt_claims`. The catalogue's verbs gain `upscale` and `tonemap`. +### wai-quantum 0.8.1, wai-quantum-qpu 0.4.1 and wai-quantum-cli 0.2.4: an optimisation that stops and goes on, a job on a provider that outlives what sent it, and the job service's keys, reruns and tasks + +This release carries the six entries on WAI Quantum's packages below it, from a job on a provider that outlives what +sent it down to an optimisation that stops and goes on; the other entries among them are not part of it, and the +desktop app's are its own 0.1.2. Each of the six only adds or fixes, so each package moves its last number +(`wai-quantum/VERSIONING.md`, "Before 1.0"): `wai-quantum-qpu` 0.4.1 requires `wai-quantum` 0.8.1, and +`wai-quantum-cli` 0.2.4 requires both; the job service is 0.2.2, and the Python package is 0.1.2, carrying the 0.8.1 +engine. `@transaction-science/wai-quantum` stays 0.1.1, as nothing in it changed, and the desktop app stays 0.1.2. +Nothing is deprecated. + +- **wai-quantum 0.8.1:** an optimisation goes on from a checkpoint to the same bytes + (`engine::variational::optimize_resumable`, `call_optimize`, `wai.quantum.optimize-checkpoint/1`); the refusal code + `J034`, for an idempotency key that does not read or that names another request; and `wai.quantum.job/1` lists the + status `interrupted`, which the service has returned since its jobs were first kept across restarts, and gains the + optional `interruptions`. +- **wai-quantum-qpu 0.4.1:** a job on a provider is written down before it is sent (`ledger`), and `job::start`, + `job::check`, `job::follow` and `job::cancel` come back to it from any process. It requires `wai-quantum` 0.8.1. +- **wai-quantum-cli 0.2.4:** `run --provider --no-wait`, `providers jobs | collect | cancel`, and + `optimize --checkpoint | --slice`; `submit` and `task` send each job under a key of their own. The local MCP server + gains `get_provider_job`, `cancel_provider_job` and `list_provider_jobs`, and runs `run_on_provider` as a task. +- **The job service 0.2.2:** `POST /v1/jobs` and `POST /v1/run` take an `Idempotency-Key`, and its MCP server's three + runs an `idempotency_key`; a job it was running when it stopped runs once more (`rerun` in `GET /v1`'s `restored`); + and those three runs are MCP tasks. +- **The Python package 0.1.2:** `Service.submit` and `Service.run` take `idempotency_key`, and a job the service + interrupted ends the wait. Its name is 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 1a9aa0ad… to 49a9fdb8…, the compile's beffb3cb… to 198ea9bd…, + the estimate's db90b147… to acbd7208…), 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:** nothing. +- 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.1. The views page's manifest records the new + digest of `wai-quantum-views`'s lockfile. +- **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.1, as at each release. A conformance run checks a + stored answer with the engine that wrote it: 0.8.0's corpus with 0.8.0, this one with 0.8.1. +- **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-qpu and wai-quantum-cli: a job on a provider outlives what sent it A run on a person's provider waited in its process, and a job that had not finished in two hours was cancelled at the diff --git a/wai/quantum-conformance/answers/bundle.json b/wai/quantum-conformance/answers/bundle.json index a5dc14f3f..bf5619e51 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\":\"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921\",\"signature\":\"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703\"}}\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\":\"740b4568e82f915953179d2396c920d382f1e6c366d42f55fe8cd4b98f5ab217\",\"signature\":\"06734b0397057bfc5938116d3b88b22029aebe24a91f8fc067098154e874e46c625f887c782c274ab4e5248e54211de802c8e538acf048af4ae7eca7d560e602\"}}\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\":\"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921\",\"signature\":\"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703\"}}\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\":\"740b4568e82f915953179d2396c920d382f1e6c366d42f55fe8cd4b98f5ab217\",\"signature\":\"06734b0397057bfc5938116d3b88b22029aebe24a91f8fc067098154e874e46c625f887c782c274ab4e5248e54211de802c8e538acf048af4ae7eca7d560e602\"}}\n" } ] } diff --git a/wai/quantum-conformance/answers/cases/bell-stored-changed.wqa b/wai/quantum-conformance/answers/cases/bell-stored-changed.wqa index 277c7d2e6..1dd1fb00d 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":"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921","signature":"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703"}} +]]>wai:receipt {"statement":"seal","receipt":{"alg":"ed25519","canon":"rfc8785","key":"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1","digest":"740b4568e82f915953179d2396c920d382f1e6c366d42f55fe8cd4b98f5ab217","signature":"06734b0397057bfc5938116d3b88b22029aebe24a91f8fc067098154e874e46c625f887c782c274ab4e5248e54211de802c8e538acf048af4ae7eca7d560e602"}} diff --git a/wai/quantum-conformance/answers/cases/bell-stored.wqa b/wai/quantum-conformance/answers/cases/bell-stored.wqa index 3ab0af2f0..07d404cb6 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":"cb520fe1dd07ac764305a9f073b92c2d379543e75fbf43ba4cf7b5f5acede921","signature":"b4b31ddefc193f8d411f6792dbf78038b3fcd3a231d339ce8fc29c4b6e003e26b655d3d691d93d53febbe1bd5d7628fc8955d6afaa4589891ae3a34ad3133703"}} +]]>wai:receipt {"statement":"seal","receipt":{"alg":"ed25519","canon":"rfc8785","key":"ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1","digest":"740b4568e82f915953179d2396c920d382f1e6c366d42f55fe8cd4b98f5ab217","signature":"06734b0397057bfc5938116d3b88b22029aebe24a91f8fc067098154e874e46c625f887c782c274ab4e5248e54211de802c8e538acf048af4ae7eca7d560e602"}} diff --git a/wai/tools/quantum-meter/Cargo.lock b/wai/tools/quantum-meter/Cargo.lock index 542a2a29f..2798682bc 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/tools/quantum-wgsl-check/Cargo.lock b/wai/tools/quantum-wgsl-check/Cargo.lock index c7135fdd1..979c52fdf 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-audit/Cargo.lock b/wai/wai-audit/Cargo.lock index 57c4da271..dcd68525a 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-key-proxy/Cargo.lock b/wai/wai-key-proxy/Cargo.lock index f0502c22f..08ef6ce25 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-ledger/Cargo.lock b/wai/wai-ledger/Cargo.lock index 53e512cd8..c1435c57f 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-pack/Cargo.lock b/wai/wai-pack/Cargo.lock index 446d3d04d..b610823d8 100644 --- a/wai/wai-pack/Cargo.lock +++ b/wai/wai-pack/Cargo.lock @@ -1257,7 +1257,7 @@ dependencies = [ [[package]] name = "wai-quantum" -version = "0.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-quantum-cli/Cargo.lock b/wai/wai-quantum-cli/Cargo.lock index 81fdbb4ae..dddf3bf30 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "cudarc", @@ -1228,7 +1228,7 @@ dependencies = [ [[package]] name = "wai-quantum-cli" -version = "0.2.3" +version = "0.2.4" dependencies = [ "clap", "clap_complete", @@ -1241,7 +1241,7 @@ dependencies = [ [[package]] name = "wai-quantum-qpu" -version = "0.4.0" +version = "0.4.1" dependencies = [ "blake3", "serde_json", diff --git a/wai/wai-quantum-cli/Cargo.toml b/wai/wai-quantum-cli/Cargo.toml index 5f304fcce..3117b31c1 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.3" +version = "0.2.4" edition = "2024" license = "Apache-2.0" description = "The wai-quantum command line: OpenQASM programs run on this machine as the quantum job service runs them (the strongest method each admits, its accuracy named, the result signed with the user's key), sent to the service, linted, drawn and verified; an MCP server for agents over stdio; and the research tools (error correction, DMRG, neural quantum states, resource estimates)." @@ -41,5 +41,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.8.0", path = "../wai-quantum", default-features = false, features = ["full"] } -wai-quantum-qpu = { version = "0.4.0", path = "../wai-quantum-qpu", optional = true } +wai-quantum = { version = "0.8.1", path = "../wai-quantum", default-features = false, features = ["full"] } +wai-quantum-qpu = { version = "0.4.1", path = "../wai-quantum-qpu", optional = true } diff --git a/wai/wai-quantum-cli/server.json b/wai/wai-quantum-cli/server.json index 7d14deb92..3af91fd11 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.3", + "version": "0.2.4", "websiteUrl": "https://wai.transaction.science/quantum-run/", "packages": [ { "registryType": "cargo", "registryBaseUrl": "https://crates.io", "identifier": "wai-quantum-cli", - "version": "0.2.3", + "version": "0.2.4", "transport": { "type": "stdio" }, diff --git a/wai/wai-quantum-desktop/Cargo.lock b/wai/wai-quantum-desktop/Cargo.lock index 8db342588..c8d233b8e 100644 --- a/wai/wai-quantum-desktop/Cargo.lock +++ b/wai/wai-quantum-desktop/Cargo.lock @@ -4459,7 +4459,7 @@ dependencies = [ [[package]] name = "wai-quantum" -version = "0.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", @@ -4472,7 +4472,7 @@ dependencies = [ [[package]] name = "wai-quantum-cli" -version = "0.2.3" +version = "0.2.4" dependencies = [ "clap", "clap_complete", @@ -4500,7 +4500,7 @@ dependencies = [ [[package]] name = "wai-quantum-qpu" -version = "0.4.0" +version = "0.4.1" dependencies = [ "blake3", "serde_json", diff --git a/wai/wai-quantum-desktop/Cargo.toml b/wai/wai-quantum-desktop/Cargo.toml index aaba73538..4ea7d7131 100644 --- a/wai/wai-quantum-desktop/Cargo.toml +++ b/wai/wai-quantum-desktop/Cargo.toml @@ -15,11 +15,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.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 } +wai-quantum = { version = "0.8.1", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_toolchain", "quantum_qec", "quantum_noise"] } +wai-quantum-cli = { version = "0.2.4", 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.4.0", path = "../wai-quantum-qpu" } +wai-quantum-qpu = { version = "0.4.1", 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-py/Cargo.lock b/wai/wai-quantum-py/Cargo.lock index b4a76d390..4edf3f5b4 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", @@ -514,7 +514,7 @@ dependencies = [ [[package]] name = "wai-quantum-py" -version = "0.1.1" +version = "0.1.2" dependencies = [ "pyo3", "serde_json", diff --git a/wai/wai-quantum-py/Cargo.toml b/wai/wai-quantum-py/Cargo.toml index 051d45bc0..50392089b 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.1" +version = "0.1.2" edition = "2024" license = "Apache-2.0" description = "WAI Quantum in Python: the shared job engine in-process (run, plan, lint, draw, critique, equivalent, verify, seal), a client for the job service, and notebook widgets. Built by maturin as one abi3 wheel per platform." @@ -21,7 +21,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.8.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_qec", "quantum_noise"] } +wai-quantum = { version = "0.8.1", 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 96ff5316b..4743d3147 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.1-cp39-abi3-.whl +pip install wai_quantum-0.1.2-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 acf98a8ff..74d91e706 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.1-cp39-abi3-.whl +pip install wai_quantum-0.1.2-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 b1f47cacb..935985a49 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-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" + "iopub.execute_input": "2026-11-04T19:48:11.562652Z", + "iopub.status.busy": "2026-11-04T19:48:11.562404Z", + "iopub.status.idle": "2026-11-04T19:48:11.577430Z", + "shell.execute_reply": "2026-11-04T19:48:11.576080Z" } }, "outputs": [], @@ -34,10 +34,10 @@ "id": "bell-receipt-2", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:11.580045Z", + "iopub.status.busy": "2026-11-04T19:48:11.579805Z", + "iopub.status.idle": "2026-11-04T19:48:11.586496Z", + "shell.execute_reply": "2026-11-04T19:48:11.585260Z" } }, "outputs": [ @@ -67,17 +67,17 @@ "id": "bell-receipt-3", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:11.589222Z", + "iopub.status.busy": "2026-11-04T19:48:11.589025Z", + "iopub.status.idle": "2026-11-04T19:48:11.652981Z", + "shell.execute_reply": "2026-11-04T19:48:11.651625Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "abb1e0122a7d42229591c0b955738bbe", + "model_id": "fd416e4698f64a0da2b73fcded2193f0", "version_major": 2, "version_minor": 1 }, @@ -105,22 +105,22 @@ "id": "bell-receipt-4", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:11.654700Z", + "iopub.status.busy": "2026-11-04T19:48:11.654595Z", + "iopub.status.idle": "2026-11-04T19:48:11.658527Z", + "shell.execute_reply": "2026-11-04T19:48:11.657599Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8b21729581114c3c9b105acbaf05f8c4", + "model_id": "a673622cb6ad439aaf7d284d5178bdfb", "version_major": 2, "version_minor": 1 }, "text/html": [ - "
receipt verified checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digestab97a7c91deb79cc7cc6b1a15dd68e3c51bd650f6cfe20ec6e968720716ffdbd
signature5f8d2afa9af0ea8d…b84aae21c634c400
formed25519 over rfc8785 canonical JSON
" + "
receipt verified checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digeste87b3cc31884cdd28439720d3b5531beffe8adbba95bc3f17a44cef7d837fe23
signaturedc70df294bc4f805…63a8d87efa4ae908
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-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" + "iopub.execute_input": "2026-11-04T19:48:11.661478Z", + "iopub.status.busy": "2026-11-04T19:48:11.661188Z", + "iopub.status.idle": "2026-11-04T19:48:11.665812Z", + "shell.execute_reply": "2026-11-04T19:48:11.664566Z" } }, "outputs": [ @@ -179,10 +179,10 @@ "id": "bell-receipt-7", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:11.668325Z", + "iopub.status.busy": "2026-11-04T19:48:11.667991Z", + "iopub.status.idle": "2026-11-04T19:48:11.675290Z", + "shell.execute_reply": "2026-11-04T19:48:11.673904Z" } }, "outputs": [ @@ -222,10 +222,10 @@ "id": "bell-receipt-10", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:11.677610Z", + "iopub.status.busy": "2026-11-04T19:48:11.677377Z", + "iopub.status.idle": "2026-11-04T19:48:11.683581Z", + "shell.execute_reply": "2026-11-04T19:48:11.683108Z" } }, "outputs": [ @@ -256,22 +256,22 @@ "id": "bell-receipt-11", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:11.684934Z", + "iopub.status.busy": "2026-11-04T19:48:11.684817Z", + "iopub.status.idle": "2026-11-04T19:48:11.689490Z", + "shell.execute_reply": "2026-11-04T19:48:11.688334Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3d954404748147aa99dae6efeec69367", + "model_id": "da8e984f7d3d488c92e75798d92357f1", "version_major": 2, "version_minor": 1 }, "text/html": [ - "
receipt INVALID checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digestab97a7c91deb79cc7cc6b1a15dd68e3c51bd650f6cfe20ec6e968720716ffdbd
signature5f8d2afa9af0ea8d…b84aae21c634c400
formed25519 over rfc8785 canonical JSON
" + "
receipt INVALID checked here, binding the request and the result as given
signerdid:key:z6MkehRgf7yJbgaGfYsdoAsKdBPE3dj2CYhowQdcjqSJgvVd
key03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8
digeste87b3cc31884cdd28439720d3b5531beffe8adbba95bc3f17a44cef7d837fe23
signaturedc70df294bc4f805…63a8d87efa4ae908
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-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" + "iopub.execute_input": "2026-11-04T19:48:11.692003Z", + "iopub.status.busy": "2026-11-04T19:48:11.691783Z", + "iopub.status.idle": "2026-11-04T19:48:11.694836Z", + "shell.execute_reply": "2026-11-04T19:48:11.694009Z" } }, "outputs": [], @@ -323,7 +323,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.16" + "version": "3.12.14" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/equivalence.ipynb b/wai/wai-quantum-py/notebooks/equivalence.ipynb index 757c9caaa..195269f81 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-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" + "iopub.execute_input": "2026-11-04T19:48:15.115974Z", + "iopub.status.busy": "2026-11-04T19:48:15.115723Z", + "iopub.status.idle": "2026-11-04T19:48:15.135131Z", + "shell.execute_reply": "2026-11-04T19:48:15.133925Z" } }, "outputs": [], @@ -33,10 +33,10 @@ "id": "equivalence-2", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:15.138114Z", + "iopub.status.busy": "2026-11-04T19:48:15.137417Z", + "iopub.status.idle": "2026-11-04T19:48:15.142254Z", + "shell.execute_reply": "2026-11-04T19:48:15.141688Z" } }, "outputs": [ @@ -84,10 +84,10 @@ "id": "equivalence-4", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:15.143778Z", + "iopub.status.busy": "2026-11-04T19:48:15.143660Z", + "iopub.status.idle": "2026-11-04T19:48:15.147717Z", + "shell.execute_reply": "2026-11-04T19:48:15.146785Z" } }, "outputs": [ @@ -127,17 +127,17 @@ "id": "equivalence-5", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:15.150441Z", + "iopub.status.busy": "2026-11-04T19:48:15.150172Z", + "iopub.status.idle": "2026-11-04T19:48:15.206222Z", + "shell.execute_reply": "2026-11-04T19:48:15.204995Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c3da9d748f1945f2aff2b59ea7eb4c62", + "model_id": "b9fe5385c0ac456bbf3d4452dc4db07d", "version_major": 2, "version_minor": 1 }, @@ -166,17 +166,17 @@ "id": "equivalence-6", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:15.209465Z", + "iopub.status.busy": "2026-11-04T19:48:15.209224Z", + "iopub.status.idle": "2026-11-04T19:48:15.215985Z", + "shell.execute_reply": "2026-11-04T19:48:15.214942Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a1878e6caaf94a74ab1da3d3ac5a1080", + "model_id": "0e042ceeae0c40de9f90fa7e7c877def", "version_major": 2, "version_minor": 1 }, @@ -216,7 +216,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.16" + "version": "3.12.14" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/getting-started.ipynb b/wai/wai-quantum-py/notebooks/getting-started.ipynb index 23bd3d05b..72320d90e 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-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" + "iopub.execute_input": "2026-11-04T19:48:09.643306Z", + "iopub.status.busy": "2026-11-04T19:48:09.643072Z", + "iopub.status.idle": "2026-11-04T19:48:09.665996Z", + "shell.execute_reply": "2026-11-04T19:48:09.664858Z" } }, "outputs": [ { "data": { "text/plain": [ - "'0.1.1'" + "'0.1.2'" ] }, "execution_count": 1, @@ -52,10 +52,10 @@ "id": "getting-started-2", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.668323Z", + "iopub.status.busy": "2026-11-04T19:48:09.668136Z", + "iopub.status.idle": "2026-11-04T19:48:09.672194Z", + "shell.execute_reply": "2026-11-04T19:48:09.671380Z" } }, "outputs": [ @@ -95,10 +95,10 @@ "id": "getting-started-4", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.674651Z", + "iopub.status.busy": "2026-11-04T19:48:09.674410Z", + "iopub.status.idle": "2026-11-04T19:48:09.679911Z", + "shell.execute_reply": "2026-11-04T19:48:09.679197Z" } }, "outputs": [ @@ -142,10 +142,10 @@ "id": "getting-started-6", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.682691Z", + "iopub.status.busy": "2026-11-04T19:48:09.682474Z", + "iopub.status.idle": "2026-11-04T19:48:09.688126Z", + "shell.execute_reply": "2026-11-04T19:48:09.687225Z" } }, "outputs": [ @@ -171,14 +171,14 @@ " 'omitted_shots': 0,\n", " 'outcome_dimension': 1,\n", " 'elapsed_ms': 0,\n", - " 'engine': {'name': 'wai-quantum', 'version': '0.8.0'},\n", + " 'engine': {'name': 'wai-quantum', 'version': '0.8.1'},\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': '438d093b41edfae302ee4b499b8134bf1c039e7817eb847987b4c689b8991e60',\n", - " 'signature': 'c61f770d572de5dcdb504e7e26584d1297c69ea8289ca5cd1e5396f22b67d3b943e9ef3c7dc5d76a8dde6f3b62e9511c47ab5cc7c25cbddc0886219418897900'}}}" + " 'digest': 'fcb8a51cbb28755a029649137ab4a3eaf157592ffdcd5fd126c4bfd76722780d',\n", + " 'signature': '1fde66bc4064043aaa533f11d06622e1e7af890964d76eae854e46f954cba088d88f119c680446a878dc9febc92baae3334f6c38f43e6a10782b28d93f0eb702'}}}" ] }, "execution_count": 4, @@ -206,10 +206,10 @@ "id": "getting-started-8", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.690850Z", + "iopub.status.busy": "2026-11-04T19:48:09.690607Z", + "iopub.status.idle": "2026-11-04T19:48:09.695140Z", + "shell.execute_reply": "2026-11-04T19:48:09.694092Z" } }, "outputs": [ @@ -245,10 +245,10 @@ "id": "getting-started-10", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.696260Z", + "iopub.status.busy": "2026-11-04T19:48:09.696175Z", + "iopub.status.idle": "2026-11-04T19:48:09.698601Z", + "shell.execute_reply": "2026-11-04T19:48:09.697874Z" } }, "outputs": [ @@ -277,17 +277,17 @@ "id": "getting-started-11", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.700393Z", + "iopub.status.busy": "2026-11-04T19:48:09.700296Z", + "iopub.status.idle": "2026-11-04T19:48:09.761758Z", + "shell.execute_reply": "2026-11-04T19:48:09.760706Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4ad1e0136ee94ab985bf9acd61d829f4", + "model_id": "862d785d95014d2fa3583c793a677ffa", "version_major": 2, "version_minor": 1 }, @@ -316,10 +316,10 @@ "id": "getting-started-12", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.764493Z", + "iopub.status.busy": "2026-11-04T19:48:09.764358Z", + "iopub.status.idle": "2026-11-04T19:48:09.767042Z", + "shell.execute_reply": "2026-11-04T19:48:09.766246Z" } }, "outputs": [ @@ -355,10 +355,10 @@ "id": "getting-started-14", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.770092Z", + "iopub.status.busy": "2026-11-04T19:48:09.769830Z", + "iopub.status.idle": "2026-11-04T19:48:09.774111Z", + "shell.execute_reply": "2026-11-04T19:48:09.772692Z" } }, "outputs": [ @@ -393,10 +393,10 @@ "id": "getting-started-15", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.776792Z", + "iopub.status.busy": "2026-11-04T19:48:09.776545Z", + "iopub.status.idle": "2026-11-04T19:48:09.781512Z", + "shell.execute_reply": "2026-11-04T19:48:09.780494Z" } }, "outputs": [ @@ -434,17 +434,17 @@ "id": "getting-started-17", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:09.783907Z", + "iopub.status.busy": "2026-11-04T19:48:09.783650Z", + "iopub.status.idle": "2026-11-04T19:48:09.791634Z", + "shell.execute_reply": "2026-11-04T19:48:09.790186Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ac4be8571cc24bf4b2d0d157e78dc1c6", + "model_id": "15a0ab2d6a2544b8aeb22a0dc91a737e", "version_major": 2, "version_minor": 1 }, @@ -481,7 +481,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.16" + "version": "3.12.14" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/noisy-run.ipynb b/wai/wai-quantum-py/notebooks/noisy-run.ipynb index 735392e9f..dc0161764 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-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" + "iopub.execute_input": "2026-11-04T19:48:17.001545Z", + "iopub.status.busy": "2026-11-04T19:48:17.001323Z", + "iopub.status.idle": "2026-11-04T19:48:17.020186Z", + "shell.execute_reply": "2026-11-04T19:48:17.018417Z" } }, "outputs": [], @@ -33,10 +33,10 @@ "id": "noisy-run-2", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:17.023525Z", + "iopub.status.busy": "2026-11-04T19:48:17.023187Z", + "iopub.status.idle": "2026-11-04T19:48:17.027644Z", + "shell.execute_reply": "2026-11-04T19:48:17.027047Z" } }, "outputs": [ @@ -66,10 +66,10 @@ "id": "noisy-run-3", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:17.029453Z", + "iopub.status.busy": "2026-11-04T19:48:17.029307Z", + "iopub.status.idle": "2026-11-04T19:48:17.037241Z", + "shell.execute_reply": "2026-11-04T19:48:17.035584Z" } }, "outputs": [ @@ -108,17 +108,17 @@ "id": "noisy-run-5", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:17.040398Z", + "iopub.status.busy": "2026-11-04T19:48:17.040050Z", + "iopub.status.idle": "2026-11-04T19:48:17.093861Z", + "shell.execute_reply": "2026-11-04T19:48:17.092902Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "006fa7a5f63a4f80b29ccdeda6e4ffcf", + "model_id": "07aa1821a4894e9088f765f6e563df06", "version_major": 2, "version_minor": 1 }, @@ -155,10 +155,10 @@ "id": "noisy-run-7", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:17.097168Z", + "iopub.status.busy": "2026-11-04T19:48:17.096916Z", + "iopub.status.idle": "2026-11-04T19:48:17.102184Z", + "shell.execute_reply": "2026-11-04T19:48:17.101389Z" } }, "outputs": [ @@ -185,17 +185,17 @@ "id": "noisy-run-8", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:17.104861Z", + "iopub.status.busy": "2026-11-04T19:48:17.104654Z", + "iopub.status.idle": "2026-11-04T19:48:17.111704Z", + "shell.execute_reply": "2026-11-04T19:48:17.110708Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "eee07e66a1184af49c60281df28406a5", + "model_id": "da81e0cda7c64447ba633f984b078fc4", "version_major": 2, "version_minor": 1 }, @@ -232,7 +232,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.16" + "version": "3.12.14" } }, "nbformat": 4, diff --git a/wai/wai-quantum-py/notebooks/service-job.ipynb b/wai/wai-quantum-py/notebooks/service-job.ipynb index 80b518afb..15a1a4cdb 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-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" + "iopub.execute_input": "2026-11-04T19:48:17.937223Z", + "iopub.status.busy": "2026-11-04T19:48:17.937015Z", + "iopub.status.idle": "2026-11-04T19:48:17.969012Z", + "shell.execute_reply": "2026-11-04T19:48:17.968243Z" }, "tags": [ "service" @@ -51,10 +51,10 @@ "id": "service-job-2", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:17.971996Z", + "iopub.status.busy": "2026-11-04T19:48:17.971770Z", + "iopub.status.idle": "2026-11-04T19:48:19.849590Z", + "shell.execute_reply": "2026-11-04T19:48:19.848385Z" }, "tags": [ "service" @@ -99,10 +99,10 @@ "id": "service-job-4", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:19.852105Z", + "iopub.status.busy": "2026-11-04T19:48:19.851904Z", + "iopub.status.idle": "2026-11-04T19:48:19.897157Z", + "shell.execute_reply": "2026-11-04T19:48:19.895865Z" }, "tags": [ "service" @@ -137,10 +137,10 @@ "id": "service-job-6", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:19.900294Z", + "iopub.status.busy": "2026-11-04T19:48:19.900004Z", + "iopub.status.idle": "2026-11-04T19:48:19.906124Z", + "shell.execute_reply": "2026-11-04T19:48:19.904736Z" }, "tags": [ "service" @@ -169,10 +169,10 @@ "id": "service-job-7", "metadata": { "execution": { - "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" + "iopub.execute_input": "2026-11-04T19:48:19.908582Z", + "iopub.status.busy": "2026-11-04T19:48:19.908368Z", + "iopub.status.idle": "2026-11-04T19:48:19.953427Z", + "shell.execute_reply": "2026-11-04T19:48:19.952909Z" }, "tags": [ "service" @@ -211,7 +211,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.16" + "version": "3.12.14" } }, "nbformat": 4, diff --git a/wai/wai-quantum-qpu/Cargo.lock b/wai/wai-quantum-qpu/Cargo.lock index 203b2bd3d..77beb9ea6 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "wai-quantum-qpu" -version = "0.4.0" +version = "0.4.1" dependencies = [ "blake3", "serde_json", diff --git a/wai/wai-quantum-qpu/Cargo.toml b/wai/wai-quantum-qpu/Cargo.toml index 3df771f50..a38b555cb 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.4.0" +version = "0.4.1" edition = "2024" license = "Apache-2.0" description = "Quantum processors as members of the wai-quantum fabric, and the person's own providers: clients for the services that run circuits on them, an open provider protocol (HTTP or a local process) with its reference provider and conformance checker, and a registry whose credentials stay in the operating system's keychain. Each circuit is compiled exactly to the processor's own gates and connectivity, checked against the circuit before it is sent, its cost shown before it is submitted, and its counts read back onto the circuit's qubits and sealed in a receipt." @@ -11,6 +11,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.8.0", path = "../wai-quantum", default-features = false, features = ["quantum_fabric", "quantum_engine", "quantum_receipt"] } +wai-quantum = { version = "0.8.1", 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 0a351f353..4bcfc2832 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-quantum-service/Cargo.lock b/wai/wai-quantum-service/Cargo.lock index 390584bdc..a00790795 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", @@ -870,7 +870,7 @@ dependencies = [ [[package]] name = "wai-quantum-service" -version = "0.2.1" +version = "0.2.2" dependencies = [ "axum", "blake3", diff --git a/wai/wai-quantum-service/Cargo.toml b/wai/wai-quantum-service/Cargo.toml index 1d0ffbb5c..9234b1c50 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.1" +version = "0.2.2" edition = "2024" license = "Apache-2.0" description = "The WAI quantum stack as a public job service: OpenQASM 3 circuits run by the strongest method each admits (bit-exact and exact state vectors, stabilizer tableaux, matrix product states, sparse Pauli dynamics), every result naming its method and its accuracy and sealed with the service's key; each job in its own process, inside a memory budget." diff --git a/wai/wai-quantum-service/server.json b/wai/wai-quantum-service/server.json index 3c7ef6f71..14eff53ad 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.1", + "version": "0.2.2", "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 b09cb04d6..66ca86855 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "ed25519-dalek", diff --git a/wai/wai-quantum/Cargo.lock b/wai/wai-quantum/Cargo.lock index da110c57c..a4e2ee451 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.8.0" +version = "0.8.1" dependencies = [ "blake3", "block2", diff --git a/wai/wai-quantum/Cargo.toml b/wai/wai-quantum/Cargo.toml index 37d2d1819..1ac4f6381 100644 --- a/wai/wai-quantum/Cargo.toml +++ b/wai/wai-quantum/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wai-quantum" -version = "0.8.0" +version = "0.8.1" edition = "2024" license = "Apache-2.0" description = "A deterministic quantum stack in pure Rust: byte-exact circuit simulation (statevector / stabilizer / tensor-network MPS / sparse-Pauli backends), sparse Pauli dynamics at utility scale (arbitrary angles, 1024 qubits), belief-propagation tensor networks on the hardware graph, error mitigation, qLDPC decoding, noise learning, circuit-equivalence proofs, a phasor interference-ML layer, information-theoretic limits, noisy channels and state tomography, and signed energy-accounted receipts. No QPU, no cloud, no system libraries in the default features — identical results native, in the browser, and as a WASI component at the edge; the opt-in WebGPU member reaches the platform's GPU interface." diff --git a/wai/wai-quantum/VERSIONING.md b/wai/wai-quantum/VERSIONING.md index cb0f33e18..1588f2a73 100644 --- a/wai/wai-quantum/VERSIONING.md +++ b/wai/wai-quantum/VERSIONING.md @@ -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.8.0" }, +"engine": { "name": "wai-quantum", "version": "0.8.1" }, "schema": "wai.quantum.job-result/1" ``` diff --git a/wai/wai-quantum/views/manifest.json b/wai/wai-quantum/views/manifest.json index 10174b6d1..cd4f7f3e9 100644 --- a/wai/wai-quantum/views/manifest.json +++ b/wai/wai-quantum/views/manifest.json @@ -12,11 +12,11 @@ "engine_js": 399830 }, "sha256": { - "page": "2ec52932b3be97805feb856c8c45fd28090b735600d2d45d2e7e78d94742f1b0", + "page": "116d594d14c367e297e3832b608a74ad329503b1f997fdc1a8d7fbf60050dc05", "script": "3b32f314a4c3d5e253cf70f0cdb53378f6843f82dd1451b9b2c01acdd28c8d9a", "styles": "11ebcd4416c68e9eaf1156ca6f7c92b9a96744895ed13c377eba98fdd8dca9a6", - "engine_wasm": "f4d1cff073594784dba764109d2688f2b47eac8d5698ee47e0e336db3ee9fc15", - "engine_js": "efed599070b69ebd01c7c3a66a08aa085e4ddc7a37a100aa60c40234f9748c53" + "engine_wasm": "95fbb6afbe9b4e0e7b1798414a82770e44677f6b8272dfe3de2ba7b3ba530442", + "engine_js": "374a802274404d8e541277c2144c166722d929148f0686c327b409d76453c96f" }, "sources": { "wai/quantum-studio/build-views.mjs": "da5b161829a990b3d1bb4c1b3ec7c8f254ff7b5078476156e504ae322bc4f010", @@ -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": "83edc2c2e30b8b07fcadfb09c7f65c7b7ae193097ed2584e5b06275e7ed9cccf", + "wai/wai-quantum-views/Cargo.lock": "9a43b475a75eaabee2bfd530bfdcbde63ad39ec9fd5b048ae26794d118c0a361", "wai/wai-quantum-views/Cargo.toml": "6192b41019ef8f54d723fc166280dd44b69b3cd05d50035783eec7ed412ed804", "wai/wai-quantum-views/build.sh": "c7cb7c91ba0a3ee39e1e4427c4b8d5be21d289eab3b036b7466347c774b67871", "wai/wai-quantum-views/src/lib.rs": "a9a20da6399ff58efde84eb5116f8e064ca9110f33b6b99546899ae5971636e0" diff --git a/wai/wai-quantum/views/wai-quantum-views.html b/wai/wai-quantum/views/wai-quantum-views.html index f07910204..88c325ee7 100644 --- a/wai/wai-quantum/views/wai-quantum-views.html +++ b/wai/wai-quantum/views/wai-quantum-views.html @@ -11,7 +11,7 @@
-