Quantum Studio
The saved source is circuit.json:
{"name":"Bell state","qubits":["q0","q1"],"gates":[{"gate":"H","target":0},{"gate":"CX","control":0,"target":1}],"shots":1024}
Limits: 1–8 uniquely named qubits, 256 gates, 1–100,000 shots. Gates apply in array order.
Targets and controls are zero-based. The basis is |q(n−1)…q1q0⟩: qubit 0 is the rightmost bit.
Supported gates: H, X, Y, Z, S, T, SDG, TDG, RX, RY, RZ, CX (alias CNOT), CZ, SWAP.
Rotations use theta in radians in JSON; the UI slider displays degrees. Two-qubit gates require
distinct control and target. Arbitrary matrices and mid-circuit measurements are not supported.
Terminal measure markers may be present, but the displayed state is premeasurement. The shot
sampler draws computational-basis outcomes from the joint Born probabilities, without collapse,
noise, hardware jobs or persistent quantum state.
Bloch vectors are reduced single-qubit expectations. A Bell pair has individually maximally mixed qubits (purity 0.5), not unit vectors. Preserve their lengths; do not normalize them for display.
Build and prove
sh "$QUANTUM_SKILLS/quantum/scripts/build-quantum.sh"
node "$QUANTUM_SKILLS/quantum/scripts/proof.mjs" circuit.json
node "$QUANTUM_SKILLS/quantum/scripts/screenshot.mjs" "$HARNESS_WORKSPACE/index.html"
node "$QUANTUM_SKILLS/quantum/scripts/perf.mjs" "$HARNESS_WORKSPACE/index.html"
Build validates the schema and finite normalized state, safely embeds JSON, and updates the verdict.
Failures clear readiness even if an older HTML export remains. Add assertions for the expected state,
not just its norm. engine.mjs exports simulate, probabilities, bloch and sampleShots for tests.
The browser proof also needs Playwright + Chromium (shared viewer installation or PLAYWRIGHT_MODULE)
and a current proof.json interaction recipe. It checks actual results, records errors/hashes and
captures .harness/last.png. Inspect the image, stepping, edits, undo/redo and narrow layout.
The user can edit gates, scrub the timeline, change rotation phase and sample shots directly. Those edits stay in browser memory. Download the circuit and save it to the workspace to preserve it; never imply the viewer wrote back to disk.