A Workload Passport is a JSON document that records everything needed to reproduce a run and two SHA-256 digests that let anyone check it. Version 0.1 is a draft implemented by the browser Lab and the Python connector.
Machine-readable: /schema/passport-0.1.json (JSON Schema 2020-12). Validate passports with any JSON Schema tool; hashes and counts still need a re-run (Lab verifier or the connector).
Fields
| Field | Type | Meaning |
|---|---|---|
| passport_version | string | Always "0.1-draft" for this version. |
| workload.qubits | integer | Number of qubits n (verifier accepts 1–20). |
| workload.gates | string[] | Ordered gate list in canonical form (see grammar). |
| workload.sha256 | hex | SHA-256 of the canonical JSON of { qubits, gates }. |
| backend.id | string | Registered backend identifier (see Adapter specification). |
| precision | string | Numeric precision, e.g. "fp64". |
| noise_model | string | "none", "depolarizing(p=…)" (p ≤ 0.2, after every gate on each qubit it touches), "readout_bitflip(p=…)" (p ≤ 0.5), or both joined by "+", depolarizing first. |
| seed | integer | Seed for the sampling PRNG. |
| shots | integer | Number of measurements. |
| output.counts | object | Outcome bitstring → count; zero counts omitted. |
| output.sha256 | hex | SHA-256 of the canonical JSON of output.counts. |
| runtime_ms, cost, timestamp | various | Recorded for context; not part of the verification. |
Gate grammar
GATE := NAME [ "(" ANGLE ")" ] " " QUBITS
NAME := H | X | Z | RX | RY | RZ | CX | CZ
ANGLE := decimal with exactly 6 fractional digits (radians), e.g. 1.570796
QUBITS := "q" INDEX { " q" INDEX } ; 1 qubit, or 2 for CX/CZ (control first)
Examples: "H q0" "RZ(1.240000) q1" "CX q0 q2"Conventions
- Qubit 0 is the leftmost character of every outcome bitstring.
- Canonical JSON is JavaScript JSON.stringify output: no whitespace, and object keys in JavaScript property order — keys that are canonical array indices ("11", "10") come first in numeric order, then other keys ("00", "01") in insertion order.
- Rotation gates use the standard definitions RX(θ)=exp(−iθX/2), RY(θ)=exp(−iθY/2), RZ(θ)=exp(−iθZ/2).
Example
{
"passport_version": "0.1-draft",
"workload": {
"name": "bell",
"qubits": 2,
"gates": ["H q0", "CX q0 q1"],
"sha256": "2ec29ebbd6ba928947dd690166884712aa57a3115a0f647456edc3b1e4378af6"
},
"framework": "[email protected]",
"compiler": "none (gates applied as written)",
"backend": { "id": "browser.statevector.fp64", "kind": "classical simulator", "location": "visitor device", "quantum_hardware": false },
"precision": "fp64",
"noise_model": "none",
"seed": 42,
"shots": 2048,
"runtime_ms": 0.21,
"cost": { "amount": 0, "currency": "none" },
"output": { "counts": { "11": 1026, "00": 1022 }, "sha256": "0f4333419a1da909…" },
"result_quality": { "tvd_vs_exact": 0.00098 },
"timestamp": "2026-10-14T12:00:00.000Z",
"disclaimer": "Classical simulation in a web browser. Not a QAISS production backend and not quantum hardware."
}