wai-quantum 0.6.15 and wai-quantum-cli 0.1.3: generators, the workbench, and a program's history, attributed #478

Merged
dcharlot merged 6 commits from wai/quantum-0.6.15-history into main 2026-10-26 02:04:34 -04:00
Owner

The release of #466, #468 and #469 to the package registry, as wai-quantum 0.6.15 and wai-quantum-cli 0.1.3, together with the co-design report's feature 6: a program's attributed, branchable history, sealed into receipts.

Stacked on #469, which carries #468. The diff shows all three until #469 lands. Two commits:

  • wai-quantum: a program's history, attributed, and the Studio's Versions: the feature, below.
  • wai-quantum 0.6.15 and wai-quantum-cli 0.1.3: the release.

The release

  • wai-quantum 0.6.15:
    • OpenQASM 3 generators;
    • the workbench (engine::discover, equiv::same_state);
    • engine::energy;
    • job::lint_with and critique::critique_with;
    • engine::versions.
  • wai-quantum-cli 0.1.3 requires it. It adds:
    • --input on every command, and instance;
    • discover … and history …;
    • --history on run, submit and verify;
    • the MCP's discover and history tools.
  • The desktop app requires 0.6.15 too.
  • Lockfiles: every lockfile that holds wai-quantum or wai-quantum-cli moves with them, twelve in all. On the build host, cargo metadata --locked reads each of the twelve workspaces with no change, and cargo publish --dry-run --locked packages and compiles wai-quantum 0.6.15.
  • The changelog heads the four entries with the release.

How #468 lands

#468 is carried here and by #469.

  • On #468's own run, one job failed: "macOS energy backends", in jouleclaw-energy's process_gpu test. #468 touches no jouleclaw file.
  • The test found another process on the shared runner's GPU ("the GPU was shared"), so its GPU-time counter came out 28 ms off the test's own timing.
  • The same job passed on #469's run, whose tree holds every one of #468's commits.

#469 also needed one fix, cbb56effc. wai-web-wasm.yml pins the count of wai-web's native quantum_engine:: tests, and #469's workbench test made it 7. This branch's history test makes it 8.

The history

Feature 6 of the co-design report: attributed, branchable history sealed into receipts. Every version of a program records who made each change and how, and whose hand each line and gate is in. A run's receipt binds that count, and anyone holding the history recomputes it.

The engine: engine::versions

  • A chain of versions:

    • each version names its parents: none for the first, one for a change, two for a merge;
    • each names who made it: the person, the assistant (a model), an outside agent, the engine, or where the program came from;
    • each names how: an edit, a proposal reviewed change by change, or a merge.

    Each digest covers the parents' digests, and the recording host's key seals it. History::verify checks every digest and seal, and that each review gives its version's source.

  • Change by change (changes, apply, History::propose):

    • the changes are a line diff: Myers' algorithm, checked against a brute-force longest common subsequence on 400 random pairs;
    • only the accepted changes reach the program;
    • the version keeps the whole proposal and which changes were taken.
  • Whose hand (blame, authorship, gate_hands):

    • a line keeps its author until someone changes it;
    • a model's or an agent's line that the person edits is in both hands (assistant_then_person, agent_then_person);
    • an edit back to an earlier program (an undo) keeps that program's authors;
    • a merge keeps each side's authors;
    • gates follow their lines, so a generator's are counted at its inputs.
  • On the receipt:

    • attest gives the head's digest and the gates and lines in each hand, and a job's request carries it as history. The receipt binds it, so a changed count fails the signature.
    • check_job recomputes the account, and checks that the job ran that version's program (a generator's instance at the inputs named).
    • The job service stores and seals the whole request, so it needs no change.
  • versions::call: the same operations by name with JSON arguments, for the page and the desktop app.

The command line and MCP

  • Commands: wai-quantum history start | commit | changes | propose | merge | log | blame | verify, with the history beside the program (prog.history.json). Also run --history, submit --history and verify --history.
  • MCP tools: history_commit, history_changes, history_blame and history_log. An agent's edit is always recorded as an outside agent's, under the name its client gave in initialize. The test has an agent call itself "person", and the server records it as agent (test-agent).

The Studio: Versions

  • Recording:
    • what the reader types is recorded as theirs when they pause, before a run, and before anything else changes the program;
    • an example, a file, a link or an earlier run is recorded as where the program came from.
  • Proposals: every proposal is offered change by change, and the editor waits until the reader chooses. This covers the assistant's program, an alternative (the engine's or the model's) and a generator opened from the Workbench. A fix is recorded as the engine's.
  • Lines of work: shown in lanes.
    • "Open" puts an older version in the editor, and an edit from it starts a line of its own.
    • "Bring in" reviews another line's head against the program, change by change, and records a merge.
  • "Who wrote it" marks each line in the editor's gutter and each gate on the diagram. The pane shows each contributor's gates and lines.
  • On the receipt:
    • a run's request carries the account, and the result shows "written by" and the account recomputed from the versions;
    • the versions are kept in the browser, each sealed with its key;
    • "Download" saves program.qasm and program.history.json for wai-quantum history verify.
  • window.quantumStudio.propose(qasm, by, note) lets an embedding page offer a program as someone's proposal.

Checked on the build host

  • wai-quantum (--features full, engine::): 82 tests pass, 11 of them the new module's. Clippy reports nothing in versions.rs.

  • wai-quantum-cli: every test passes, including the agent-label test. clippy --all-targets -D warnings is clean.

  • The built binary, end to end:

    1. a history started from an example, then a person's edit;
    2. a proposal with 1 of its 2 changes taken;
    3. log and blame (2 gates from the start, 1 from the assistant);
    4. run --history, after which verify --history and history verify --job pass;
    5. a job with a forged count is refused: the signature fails, and the account is not the history's.
  • wai-web (quantum_engine::): 8 of 8 tests pass, and clippy reports nothing in the binding.

  • The desktop app: 5 of 5 tests pass, and clippy is clean.

  • The Studio in Chrome (STUDIO_SKIP_SERVICE=1 node test/studio.test.mjs): every check passes, 75 in all. The new ones:

    • a typed edit is recorded as the reader's;
    • a proposal of 2 changes is shown while the editor waits, and taking 1 of 2 reaches the program as the assistant's, the rejected change kept;
    • the gutter and the diagram mark the assistant's line and gate;
    • the reader's edit of that line is in both hands;
    • the run's receipt binds "1 by the assistant, then you (scripted) · of 3 gates", recomputed in the page;
    • an older version opened and edited gives 2 heads, and bringing one in records a merge that keeps every line's author;
    • all of it comes back after a reload;
    • the download is the program and its history, every version sealed.

    The existing Apply, Open-in-editor and Fix checks now go through the review.

  • Public names: scripts/check-public-names.sh is clean.

🤖 Generated with Claude Code

The release of #466, #468 and #469 to the package registry, as wai-quantum 0.6.15 and wai-quantum-cli 0.1.3, together with the co-design report's feature 6: a program's attributed, branchable history, sealed into receipts. Stacked on #469, which carries #468. The diff shows all three until #469 lands. Two commits: - `wai-quantum: a program's history, attributed, and the Studio's Versions`: the feature, below. - `wai-quantum 0.6.15 and wai-quantum-cli 0.1.3`: the release. ## The release - **wai-quantum 0.6.15:** - OpenQASM 3 generators; - the workbench (`engine::discover`, `equiv::same_state`); - `engine::energy`; - `job::lint_with` and `critique::critique_with`; - `engine::versions`. - **wai-quantum-cli 0.1.3** requires it. It adds: - `--input` on every command, and `instance`; - `discover …` and `history …`; - `--history` on `run`, `submit` and `verify`; - the MCP's discover and history tools. - **The desktop app** requires 0.6.15 too. - **Lockfiles:** every lockfile that holds wai-quantum or wai-quantum-cli moves with them, twelve in all. On the build host, `cargo metadata --locked` reads each of the twelve workspaces with no change, and `cargo publish --dry-run --locked` packages and compiles wai-quantum 0.6.15. - **The changelog** heads the four entries with the release. ## How #468 lands #468 is carried here and by #469. - On #468's own run, one job failed: "macOS energy backends", in `jouleclaw-energy`'s `process_gpu` test. #468 touches no `jouleclaw` file. - The test found another process on the shared runner's GPU ("the GPU was shared"), so its GPU-time counter came out 28 ms off the test's own timing. - The same job passed on #469's run, whose tree holds every one of #468's commits. #469 also needed one fix, `cbb56effc`. `wai-web-wasm.yml` pins the count of wai-web's native `quantum_engine::` tests, and #469's workbench test made it 7. This branch's history test makes it 8. ## The history Feature 6 of the co-design report: attributed, branchable history sealed into receipts. Every version of a program records who made each change and how, and whose hand each line and gate is in. A run's receipt binds that count, and anyone holding the history recomputes it. ### The engine: `engine::versions` - **A chain of versions:** - each version names its parents: none for the first, one for a change, two for a merge; - each names who made it: the person, the assistant (a model), an outside agent, the engine, or where the program came from; - each names how: an edit, a proposal reviewed change by change, or a merge. Each digest covers the parents' digests, and the recording host's key seals it. `History::verify` checks every digest and seal, and that each review gives its version's source. - **Change by change** (`changes`, `apply`, `History::propose`): - the changes are a line diff: Myers' algorithm, checked against a brute-force longest common subsequence on 400 random pairs; - only the accepted changes reach the program; - the version keeps the whole proposal and which changes were taken. - **Whose hand** (`blame`, `authorship`, `gate_hands`): - a line keeps its author until someone changes it; - a model's or an agent's line that the person edits is in both hands (`assistant_then_person`, `agent_then_person`); - an edit back to an earlier program (an undo) keeps that program's authors; - a merge keeps each side's authors; - gates follow their lines, so a generator's are counted at its inputs. - **On the receipt:** - `attest` gives the head's digest and the gates and lines in each hand, and a job's request carries it as `history`. The receipt binds it, so a changed count fails the signature. - `check_job` recomputes the account, and checks that the job ran that version's program (a generator's instance at the inputs named). - The job service stores and seals the whole request, so it needs no change. - **`versions::call`:** the same operations by name with JSON arguments, for the page and the desktop app. ### The command line and MCP - **Commands:** `wai-quantum history start | commit | changes | propose | merge | log | blame | verify`, with the history beside the program (`prog.history.json`). Also `run --history`, `submit --history` and `verify --history`. - **MCP tools:** `history_commit`, `history_changes`, `history_blame` and `history_log`. An agent's edit is always recorded as an outside agent's, under the name its client gave in `initialize`. The test has an agent call itself "person", and the server records it as `agent` (`test-agent`). ### The Studio: Versions - **Recording:** - what the reader types is recorded as theirs when they pause, before a run, and before anything else changes the program; - an example, a file, a link or an earlier run is recorded as where the program came from. - **Proposals:** every proposal is offered change by change, and the editor waits until the reader chooses. This covers the assistant's program, an alternative (the engine's or the model's) and a generator opened from the Workbench. A fix is recorded as the engine's. - **Lines of work:** shown in lanes. - "Open" puts an older version in the editor, and an edit from it starts a line of its own. - "Bring in" reviews another line's head against the program, change by change, and records a merge. - **"Who wrote it"** marks each line in the editor's gutter and each gate on the diagram. The pane shows each contributor's gates and lines. - **On the receipt:** - a run's request carries the account, and the result shows "written by" and the account recomputed from the versions; - the versions are kept in the browser, each sealed with its key; - "Download" saves `program.qasm` and `program.history.json` for `wai-quantum history verify`. - **`window.quantumStudio.propose(qasm, by, note)`** lets an embedding page offer a program as someone's proposal. ## Checked on the build host - **wai-quantum** (`--features full`, `engine::`): 82 tests pass, 11 of them the new module's. Clippy reports nothing in `versions.rs`. - **wai-quantum-cli:** every test passes, including the agent-label test. `clippy --all-targets -D warnings` is clean. - **The built binary, end to end:** 1. a history started from an example, then a person's edit; 2. a proposal with 1 of its 2 changes taken; 3. `log` and `blame` (2 gates from the start, 1 from the assistant); 4. `run --history`, after which `verify --history` and `history verify --job` pass; 5. a job with a forged count is refused: the signature fails, and the account is not the history's. - **wai-web** (`quantum_engine::`): 8 of 8 tests pass, and clippy reports nothing in the binding. - **The desktop app:** 5 of 5 tests pass, and clippy is clean. - **The Studio in Chrome** (`STUDIO_SKIP_SERVICE=1 node test/studio.test.mjs`): every check passes, 75 in all. The new ones: - a typed edit is recorded as the reader's; - a proposal of 2 changes is shown while the editor waits, and taking 1 of 2 reaches the program as the assistant's, the rejected change kept; - the gutter and the diagram mark the assistant's line and gate; - the reader's edit of that line is in both hands; - the run's receipt binds "1 by the assistant, then you (scripted) · of 3 gates", recomputed in the page; - an older version opened and edited gives 2 heads, and bringing one in records a merge that keeps every line's author; - all of it comes back after a reload; - the download is the program and its history, every version sealed. The existing Apply, Open-in-editor and Fix checks now go through the review. - **Public names:** `scripts/check-public-names.sh` is clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
wai-quantum: the specification-and-evaluator workbench
All checks were successful
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 7m28s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m20s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 19s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m9s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 47s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m33s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 14m25s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 26s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 34s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m58s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 4m41s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m37s
wai-quantum command line / command line · macos (pull_request) Successful in 32s
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Successful in 15s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Successful in 1m10s
wai-quantum Metal member / member · Metal (macos) (pull_request) Successful in 27s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 6m50s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 22s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 22s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 19s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 5m45s
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Successful in 20s
wai-quantum service / service · macos (pull_request) Successful in 40s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 11s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m11s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 15s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 13s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m27s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m43s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 41m4s
5496c23d3f
A person writes what a family of circuits must do and what it costs;
proposers write generators; the engine checks each one at every size and
an archive keeps the cheapest verified generator of every kind. The
largest unbuilt feature of the co-design research: the evaluator is the
engine, never a model's judgement.

- engine::discover:
  - Spec: the task (equivalent, or prepares: the same state from
    |0…0⟩, the new equiv::same_state), the reference generator, the
    sizes, the gates and connectivity allowed, the cost (weights on the
    critique's measures, summed over the sizes), two axes and a budget.
  - Evaluator: verified only when it reads, keeps the rules and passes
    the check at every size, stopping at the first failure; the weakest
    check is named.
  - Archive: MAP-Elites over the two axes, with lineage, proposer and
    note; bound to the specification's digest (budget left out); each
    kept entry sealed with the searcher's key, and Archive::verify checks
    every seal binds its entry.
  - mutate and search: the built-in, seeded, blind baseline. The clock
    and the energy reading are passed in, so the module builds wherever
    the engine does.
- engine::energy: the job service's reader moved into the engine, with
  `own()` for a running process. The service keeps only waitid(WNOWAIT);
  the FFI is declared directly, so wai-quantum gains no dependency and
  no lockfile changes.
- critique::measures is public.
- CLI: `wai-quantum discover new|search|eval|submit|show|verify`, with
  specifications that may name their reference as @file.qasm, and two
  shipped specifications (discover/ghz-line.json, discover/ghz-all.json).
- MCP: discover_evaluate, discover_submit, discover_archive; and every
  tool that takes a program takes a generator with `inputs`. The program
  description no longer says loops are refused.

Measured on the build host, ghz-all.json: 1,500 blind edits in 4.6 s and
24 J. 139 were verified and 29 kept, none cheaper than the reference;
the doubling tree costs 25 against its 49. All 29 seals held.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-service: the energy test module is macOS-only, so Linux builds it with no unused import
All checks were successful
wai-quantum service / service · macos (pull_request) Successful in 45s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 12s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 15m35s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 39s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m21s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 9m10s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 22s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 17s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 34s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 35s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 17s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 18s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 20s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m37s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m27s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m47s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m52s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 15m21s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 31s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m0s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m40s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m29s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 5m33s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m53s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 28s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 27s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 20s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 46m5s
256aa21ab4
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Quantum Studio: the Workbench, and generators in the editor
Some checks failed
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 5m1s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m7s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 32s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m12s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m7s
wai-quantum command line / command line · linux (pull_request) Successful in 1m16s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 26s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 3m35s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 4m22s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 20s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 25s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 20s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 23s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 21s
wai-quantum service / service · linux (pull_request) Successful in 42s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 16s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m28s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 12m13s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 26s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 10s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 18s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 12s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 5s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 14s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 7m37s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m11s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m15s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Failing after 3m42s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m27s
52a0fcab68
The workbench from the last change, in the Studio: a family of circuits
searched for its cheapest members, every proposal judged by the engine.
And the editor reads a generator at its inputs' values, which the
Workbench needs and everything else gains from.

- Generators in the editor (generators.js):
  - a field for each declared input under the editor, kept by name;
  - the lint and the critique read the generator at those values and
    keep its own lines (job::lint_with, critique::critique_with; a smell
    in a generator offers no Fix);
  - the diagram, the plan, a run here or on the service, the lens and the
    alternatives take the circuit it writes out (qasm::instantiate, in the
    page and in the desktop app). A new value re-lints through the
    linter's needsRefresh.
- The Workbench pane (workbench.js):
  - a form for the specification, the archive's elites on the two axes
    with the cheapest marked, and an entry's cost, check, seal and lineage,
    with "Open in editor";
  - three proposers, each named on what it found: the reader, the blind
    search (in steps of 25, so its progress shows) and the model;
  - the archive kept in the browser, back with the page, and downloaded
    beside its specification as `wai-quantum discover verify` reads them.
- The model as a proposer (Assistant.propose): it is told the
  specification and shown the cheapest found, with the costs the engine
  measured. The assistant's brief now says while, inv and pow are refused,
  not loops.
- Bindings: discover_start, discover_submit, discover_search,
  discover_evaluate and instantiate in wai-web and the desktop app, which
  also counts a search's seconds and joules.
- Tests:
  - the engine: a generator critiqued at its inputs, with its own lines
    and no Fix;
  - wai-web: the workbench run and sealed in the page;
  - the Studio, in a browser: a generator linted, drawn and run at its
    value; the Workbench started from it, a hundred blind edits judged,
    the reader's log-depth tree kept as the cheapest, opened, downloaded
    and back after a reload; a scripted model's generators judged at every
    size, one kept, a wrong one and a forbidden gate left out with their
    reasons.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-web wasm32: the engine's native tests count the workbench's
All checks were successful
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m23s
wai-quantum command line / command line · linux (pull_request) Successful in 1m10s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 22s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m13s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 3m36s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 4m33s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 19s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 22s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 17s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 22s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 19s
wai-quantum service / service · linux (pull_request) Successful in 40s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 19s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 7m34s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 11m45s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 32s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 19s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 27s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 10s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 14s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m27s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 12s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m11s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m14s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m20s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m22s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m41s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m31s
cbb56effc6
The step pins the count of quantum_engine:: tests so a test that stops
being compiled fails it. The workbench test in the page makes it 7.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Feature 6 of the co-design report: every version of a program, who made
each change and how, and whose hand each line and gate is in, sealed
into the run's receipt.

- engine::versions:
  - versions in a chain, each naming its parents (none, one, or two for
    a merge), who made it (the person, the assistant, an outside agent,
    the engine, or where the program came from) and how (an edit, a
    proposal reviewed change by change, a merge);
  - a version's digest covers its parents' digests, and the recording
    host's key seals it; verify checks every digest, seal and review;
  - changes and apply: a line diff (Myers), so a proposal is taken
    change by change, and the version keeps the whole proposal;
  - blame, authorship and gate_hands: a line keeps its author until
    changed; a model's or an agent's line the person edits is in both
    hands; an undo keeps the earlier authors; a merge keeps each side's;
    gates follow their lines, at a generator's inputs;
  - attest and check_job: a job's request carries the account, the
    receipt binds it, and it is recomputed from the history;
  - call: the history by name with JSON arguments, for the page and the
    desktop app.
- The command line: history start | commit | changes | propose | merge |
  log | blame | verify; run and submit --history; verify --history.
- MCP: history_commit, history_changes, history_blame and history_log.
  An agent's edit is recorded as an outside agent's, under the name its
  client gave in initialize, whatever it says of itself.
- The Studio's Versions pane:
  - what the reader types is theirs, recorded when they pause;
  - every proposal (the assistant's program, an alternative, a generator
    from the Workbench) is offered change by change while the editor
    waits; a fix is the engine's;
  - lines of work in lanes: an older version opened and edited starts
    its own, and "Bring in" merges one change by change;
  - "Who wrote it" marks lines in the gutter and gates on the diagram;
  - the run's receipt binds the account, which the result recomputes;
  - kept in the browser, downloaded for the command line;
  - window.quantumStudio.propose for an embedding page.
- Fixes found by the Studio's test: a run shows it is running before
  the account is made, and the draft is kept as the page goes.
- CI: wai-web's native engine tests count 8, the history's included.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum 0.6.15 and wai-quantum-cli 0.1.3: generators, the workbench, and a program's history
All checks were successful
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 1m22s
wai-pack / wai-pack · linux (pull_request) Successful in 1m44s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 2m22s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 27s
wai-quantum command line / command line · linux (pull_request) Successful in 1m15s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 3m37s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 4m1s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 21s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 26s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 21s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 24s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 23s
wai-quantum service / service · linux (pull_request) Successful in 1m11s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 19s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m28s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 14m21s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 31s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 19s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 8m4s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 26s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 31s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 16s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 16s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 19s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m9s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m24s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m15s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m23s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m37s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m53s
cebfe2801a
This carries OpenQASM 3 generators, the specification-and-evaluator
workbench, the Studio's Workbench pane and a program's attributed history
to the package registry.

- wai-quantum 0.6.15: qasm::parse_with, qasm::inputs and
  qasm::instantiate; engine::discover, with equiv::same_state for the
  prepares task; engine::energy, moved from the job service;
  job::lint_with and critique::critique_with, which read a generator at
  its inputs; and engine::versions.
- wai-quantum-cli 0.1.3 requires it: --input on every command, instance,
  discover new | search | eval | submit | show | verify, history start |
  commit | changes | propose | merge | log | blame | verify, --history on
  run, submit and verify, and the MCP's discover and history tools.
- The desktop app requires 0.6.15 too, for discover, instantiate and the
  history.
- Every lockfile that holds wai-quantum or wai-quantum-cli moves with
  them, so a --locked build still reads its own.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!478
No description provided.