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]>
1 line
5.6 KiB
JSON
1 line
5.6 KiB
JSON
{"status":"done","method":"pulse","why":"a pulse schedule of 164 samples (82 ns) on $0 at 2 levels: 164 steps of 0.5 ns, each a series of order 12, the error within 3.512e-21 with rounding estimated at 2.840e-12; the cheapest of the 1 of 1 routes that meet the contract","estimate":{"memory_bytes":33566400,"work":55104},"request":{"qasm":"OPENQASM 3.0;\ndefcalgrammar \"openpulse\";\ncal {\n extern port d0;\n extern port a0;\n frame q0 = newframe(d0, 5.0e9, 0);\n frame c0 = newframe(a0, 5.0e9, 0);\n}\ndefcal x $0 { play(q0, drag(0.4, 64dt, 16dt, 0.2)); }\ndefcal measure $0 -> bit { return capture_v2(c0, 100dt); }\nbit c;\nx $0;\nc = measure $0;\n","shots":50,"seed":2,"method":"pulse","contract":{"exactness":"bounded","deadline_seconds":60.0}},"result":{"method":"pulse","qubits":1,"gates":2,"accuracy":{"class":"bounded","bound":2.8403945897125026e-12,"truncation_bound":3.511502073909511e-21,"rounding_estimate":2.8403945862010005e-12,"tolerance":1e-6,"norm":"trace","note":"every probability is within bound of the exact solution of the pulse model's master equation: the series' truncation proved, the rounding an estimate; the model itself (its levels, the rotating frame and the rotating-wave approximation, the envelope held for each sample) is what is solved"},"counts":{"1":46,"0":4},"distinct_outcomes":2,"omitted_shots":0,"shots":50,"diagnostics":[{"code":"Q453","outcome":"lowered","message":"a `cal` block read as OpenPulse and run here","line":3,"column":1,"length":5},{"code":"Q453","outcome":"lowered","message":"the `defcal` of x read as OpenPulse; it runs at each call","line":9,"column":1,"length":53},{"code":"Q453","outcome":"lowered","message":"the `defcal` of measure read as OpenPulse; it runs at each call","line":10,"column":1,"length":58}],"pulse":{"read":"the captures, at their one first sample, into the program's bits","outcome_bits":["c"],"distribution":{"0":0.12956041250210984,"1":0.8704395874978892},"populations":{"0":0.12956041250210984,"1":0.8704395874978892},"simulated_qubits":[0],"captures":[{"frame":"c0","qubit":0,"start":64,"start_ns":32.0,"bit":"c","p1":0.8704395874978892,"p2":0.0}],"trace":0.999999999999999,"density_hash":"09778fae666fc72fbac7b86d35f38c7a7e7fc16eb3c3799b0db32da0dc8767a4","duration":164,"duration_ns":82.0,"integrator":{"name":"taylor","order":12,"dt_ns":0.5,"substeps":1,"step_ns":0.5,"steps":164,"norm_max":0.2512047429452378,"frame":"each sample in the frame of each qubit's tone, the generator constant over it, then a diagonal phase back"},"device":{"levels":2,"dt_ns":0.5,"qubits":[{"qubit":0,"frequency_hz":5000000000.0,"rabi_hz":50000000.0,"anharmonicity_hz":-300000000.0,"from":{"frequency":"default","rabi":"default","anharmonicity":"default","t1":"none","t2":"none"}}],"couplings":[],"model":"each qubit a ladder of its levels in the frame rotating at its frequency, under the rotating-wave approximation, the envelope held for each sample; relaxation and pure dephasing from T1 and T2; static ZZ couplings"},"calibration":{"program":"f9b61296e932d2a5a5e9ab81f405f05bcf9900dacf27cbbeadf9ccaef001e0bb","calibrations":"48d81e250c5a875c58ba41229b4e2477f160e6e84f85a901dfff3fd7682b1a89","schedule":"9424e49a95d76eb70bf89923d05b5f7aca92678bd95520953373d415cc1b9267","device":"b18083ab12fd0d2f46d3d125c855119ca7f7dc0f2d73dace7d7fe5e557668b39"},"not_modelled":["the readout: a capture reads its qubit's state at its first sample, a level above 0 as 1"]},"verdict":{"schema":"wai.quantum.verdict/1","level":"executed","rank":2,"holds":null,"statement":"Executed on pulse (bounded); no intent was given, so nothing was checked against one.","parsed":{"ok":true,"diagnostics":[{"code":"Q453","outcome":"lowered","message":"a `cal` block read as OpenPulse and run here","line":3,"column":1,"length":5},{"code":"Q453","outcome":"lowered","message":"the `defcal` of x read as OpenPulse; it runs at each call","line":9,"column":1,"length":53},{"code":"Q453","outcome":"lowered","message":"the `defcal` of measure read as OpenPulse; it runs at each call","line":10,"column":1,"length":58}]},"executed":{"method":"pulse","accuracy":"bounded"},"intent":[],"critique":[],"repairs":[]},"engine":{"name":"wai-quantum","version":"0.8.1"},"schema":"wai.quantum.job-result/1","planner":{"format":"wai.quantum.planner/1","wanted":"bounded","wanted_from":"contract","named":"method:pulse","question":"counts","auto":null,"host":{"job_bytes":17179869184,"providers":[]},"routes":[{"route":"method:pulse","kind":"local","method":"pulse","class":"bounded","host_dependent":false,"auto_rank":null,"price":{"money":{"free":true},"time":{"seconds":0.000055104,"basis":"nominal"},"memory_bytes":33566400,"work":55104,"energy":{"joules":null,"why":"this host estimates no job's energy before it runs"},"leaves_out":[]},"outcome":"chosen"}],"choice":"method:pulse","why":"the cheapest of the 1 of 1 routes that meet the contract","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:pulse"],"digest":"66699259c0f19f46979dc8a807893b52eaa894a2d6db6a3d7722004e484db32b","choice":true},"kept":{"deadline":{"seconds":60.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":"645a9ebd1f46804cf7c7e3eb4ea5f24bcceb875368f154a21a4bb1ea853ffd00","signature":"8c6b7778c8e3a1a7344f6c751e8c3f96dbbe24ba4363d3254af22980ec0769b23679cd7397c2a298c2221437550041a8d31534a9ea9320c203432575721a3203"}}}
|