Re-landed from PR #668 (branch wai/quantum-planner-contract, merged with main
495651ddd at 37350335b) as one commit on main, under the land-it model. Five
review rounds; round 5's findings (two high: workers that died as PID 1) were
fixed on the branch, and its CI reds were traced and fixed before landing.
A job may carry a contract (deadline, energy ceiling, cost, accuracy); the
planner chooses a route that meets it or refuses with every route's reason,
and its reasoning is sealed in the receipt. Under #676's reading child the
contract job is planned in the child from the per-method timings the parent
sends, bounded as a job naming its chosen method plus its reasoning, kept
across a restart. Both verifiers (Rust and receipt_verify.py) check the
planner statement beside wasmQ's; the receipts corpus is regenerated with
both kinds (268 crafted receipts, 14 plants caught). The views page carries
its engine raw-deflated and stays under its 1 MiB limit (669,484 bytes).
Passed before the push (Framework, linux; M3, macOS): every repository
check, receipts conformance, breaking, corpora, catalogue, the qpu clients,
energy (wai-rs, wai-quantum full, serve), the CLI tests and clippy, writer,
smoke, cross-simulator corpus, job receipts, wasmQ tests and vectors, the
engine with and without receipts under -D warnings, the docs pages, and the
service suite with clippy.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
312 lines
9.1 KiB
JSON
312 lines
9.1 KiB
JSON
{
|
|
"status": "done",
|
|
"method": "exact",
|
|
"why": "bit-exact state vector of 3 qubits; what auto picks, which meets the contract: the contract names no class, so it keeps auto's (1 of 13 routes meet it)",
|
|
"estimate": {
|
|
"memory_bytes": 134218112,
|
|
"work": 40
|
|
},
|
|
"request": {
|
|
"qasm": "OPENQASM 3.0;\ninclude \"stdgates.inc\";\nqubit[3] q;\nbit[3] c;\nh q[0];\nt q[0];\ncx q[0], q[1];\nrz(pi/8) q[2];\ncx q[1], q[2];\nc = measure q;\n",
|
|
"shots": 500,
|
|
"seed": 3,
|
|
"contract": {
|
|
"deadline_seconds": 600.0
|
|
}
|
|
},
|
|
"result": {
|
|
"method": "exact",
|
|
"qubits": 3,
|
|
"gates": 5,
|
|
"accuracy": {
|
|
"class": "bit-exact"
|
|
},
|
|
"state_hash": "5f1ae3e98c0555290986daf0d573de16a34ba01d1993f13f134e0b1daf6f1ab5",
|
|
"counts": {
|
|
"000": 254,
|
|
"111": 246
|
|
},
|
|
"distinct_outcomes": 2,
|
|
"omitted_shots": 0,
|
|
"elapsed_ms": 0,
|
|
"engine": {
|
|
"name": "wai-quantum",
|
|
"version": "0.8.1"
|
|
},
|
|
"schema": "wai.quantum.job-result/1",
|
|
"planner": {
|
|
"format": "wai.quantum.planner/1",
|
|
"wanted": "bit-exact",
|
|
"wanted_from": "auto",
|
|
"named": null,
|
|
"question": "amplitudes",
|
|
"auto": "method:exact",
|
|
"host": {
|
|
"job_bytes": 17179869184,
|
|
"providers": []
|
|
},
|
|
"routes": [
|
|
{
|
|
"route": "method:exact",
|
|
"kind": "local",
|
|
"method": "exact",
|
|
"class": "bit-exact",
|
|
"host_dependent": false,
|
|
"auto_rank": 20,
|
|
"price": {
|
|
"money": {
|
|
"free": true
|
|
},
|
|
"time": {
|
|
"seconds": 2e-07,
|
|
"basis": "nominal"
|
|
},
|
|
"memory_bytes": 134218112,
|
|
"work": 40,
|
|
"energy": {
|
|
"joules": null,
|
|
"why": "this host estimates no job's energy before it runs"
|
|
},
|
|
"leaves_out": []
|
|
},
|
|
"outcome": "chosen"
|
|
},
|
|
{
|
|
"route": "method:statevector",
|
|
"kind": "local",
|
|
"method": "statevector",
|
|
"class": "exact",
|
|
"host_dependent": false,
|
|
"auto_rank": 30,
|
|
"price": {
|
|
"money": {
|
|
"free": true
|
|
},
|
|
"time": {
|
|
"seconds": 4e-08,
|
|
"basis": "nominal"
|
|
},
|
|
"memory_bytes": 268447588,
|
|
"work": 40,
|
|
"energy": {
|
|
"joules": null,
|
|
"why": "this host estimates no job's energy before it runs"
|
|
},
|
|
"leaves_out": []
|
|
},
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is exact, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:statevector_single",
|
|
"kind": "local",
|
|
"method": "statevector_single",
|
|
"class": "single",
|
|
"host_dependent": true,
|
|
"auto_rank": 40,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is single, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:stabilizer",
|
|
"kind": "local",
|
|
"method": "stabilizer",
|
|
"class": "exact",
|
|
"host_dependent": false,
|
|
"auto_rank": 10,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is exact, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:pauli",
|
|
"kind": "local",
|
|
"method": "pauli",
|
|
"class": "bounded",
|
|
"host_dependent": false,
|
|
"auto_rank": null,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is bounded, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:mps",
|
|
"kind": "local",
|
|
"method": "mps",
|
|
"class": "heuristic",
|
|
"host_dependent": false,
|
|
"auto_rank": 60,
|
|
"price": {
|
|
"money": {
|
|
"free": true
|
|
},
|
|
"time": {
|
|
"seconds": 0.024723456,
|
|
"basis": "nominal"
|
|
},
|
|
"memory_bytes": 270794752,
|
|
"work": 16482304,
|
|
"energy": {
|
|
"joules": null,
|
|
"why": "this host estimates no job's energy before it runs"
|
|
},
|
|
"leaves_out": []
|
|
},
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is heuristic, and exact only when nothing is truncated, which it cannot know before it runs; the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:stabilizer_rank",
|
|
"kind": "local",
|
|
"method": "stabilizer_rank",
|
|
"class": "exact",
|
|
"host_dependent": false,
|
|
"auto_rank": null,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is exact, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:tensor_network",
|
|
"kind": "local",
|
|
"method": "tensor_network",
|
|
"class": "exact",
|
|
"host_dependent": false,
|
|
"auto_rank": null,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is exact, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:cutrank",
|
|
"kind": "local",
|
|
"method": "cutrank",
|
|
"class": "exact",
|
|
"host_dependent": false,
|
|
"auto_rank": 50,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is exact, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:cutrank_single",
|
|
"kind": "local",
|
|
"method": "cutrank_single",
|
|
"class": "single",
|
|
"host_dependent": true,
|
|
"auto_rank": null,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is single, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:density_matrix",
|
|
"kind": "local",
|
|
"method": "density_matrix",
|
|
"class": "exact",
|
|
"host_dependent": false,
|
|
"auto_rank": null,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is exact, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:trajectories",
|
|
"kind": "local",
|
|
"method": "trajectories",
|
|
"class": "estimate",
|
|
"host_dependent": false,
|
|
"auto_rank": null,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is estimate, and the job wants bit-exact"
|
|
}
|
|
},
|
|
{
|
|
"route": "method:pulse",
|
|
"kind": "local",
|
|
"method": "pulse",
|
|
"class": "bounded",
|
|
"host_dependent": false,
|
|
"auto_rank": null,
|
|
"price": null,
|
|
"outcome": "rejected",
|
|
"rejected": {
|
|
"code": "class",
|
|
"why": "its class is bounded, and the job wants bit-exact"
|
|
}
|
|
}
|
|
],
|
|
"choice": "method:exact",
|
|
"why": "what auto picks, which meets the contract: the contract names no class, so it keeps auto's (1 of 13 routes meet it)",
|
|
"stable": {
|
|
"scope": "digest: what each route that depends on nothing of the host costs, the same for this request and job memory on every host of one engine; choice: whether the route chosen is one of those whatever the host",
|
|
"routes": [
|
|
"method:exact",
|
|
"method:statevector",
|
|
"method:stabilizer",
|
|
"method:pauli",
|
|
"method:mps",
|
|
"method:stabilizer_rank",
|
|
"method:tensor_network",
|
|
"method:cutrank",
|
|
"method:density_matrix",
|
|
"method:trajectories",
|
|
"method:pulse"
|
|
],
|
|
"digest": "d859d0ec175157bdd2b0e221a569afd4d2d94e347cbd550027c714ab35bdb061",
|
|
"choice": true
|
|
},
|
|
"kept": {
|
|
"deadline": {
|
|
"seconds": 600.0,
|
|
"elapsed_ms": 0,
|
|
"kept": true
|
|
}
|
|
}
|
|
},
|
|
"energy": {
|
|
"unmetered": "the command line does not meter a run's energy"
|
|
},
|
|
"receipt": {
|
|
"alg": "ed25519",
|
|
"canon": "rfc8785",
|
|
"key": "197f6b23e16c8532c6abc838facd5ea789be0c76b2920334039bfa8b3d368d61",
|
|
"digest": "284244ed02df6c6f31e2bc4ed41553bb04d1878f6c38c14c4186941a92c76db7",
|
|
"signature": "db84d76890b160ac506199f085ceb9cd753aabea3d25395a41f07acc1155b029f66e1f835947ed1d4bca5dff1ca588b65d8c82146d90ee96c03038f42464c201"
|
|
}
|
|
}
|
|
}
|