wai-quantum-service: POST /v1/write and write_circuit, a program written for a task on the service's own model (stacked on #646) #648

Closed
dcharlot wants to merge 15 commits from wai/quantum-service-write into main
Owner

Re-landed on main as 655b366aa (squash of a local merge with main at e694cb096; the pushed tree is byte-identical to the tested one). Main's contracts had taken J070-J074, so the write's refusals are now J080/J081/J082; admission follows #676's order (window, reading turn, capped reading child). Also fixes a race in main's reading pool (offload.rs) with a new test that fails 3/3 on main. Tested on Linux and macOS build hosts: service 140 + clippy, wai-quantum lib 1,517, engine builds, writer leg, course/docs, smoke with and without a scripted writer, the shipped image.

Stacked on #646 (wai/quantum-writer), which is stacked on #645. Merge those first.

Step 3 of the series: the WAI Quantum job service gains POST /v1/write and the MCP tool write_circuit. A caller sends a task (an exercise in the course's form), the service's own code model writes an OpenQASM program for it with the writer's loop, the engine checks each attempt exactly as it checks a lesson's answer, and the answer is the transcript, signed.

What it does

  • A write is a job (Work::Write): admitted, kept, reloaded and run again as a job is, its request kept in canonical form (RFC 8785) so a rerun hands the model the same text. Its result is the transcript (wai.quantum.write/1) with the writer's energy inside, sealed with the service's receipt, so POST /v1/verify checks it. The job's timing (each reply's and check's seconds) is beside it, outside the signed body.
  • The writer process (wai-quantum-service writer [--model DIR | --script FILE]) starts with the service and serves every write, so the model loads once. It talks JSON lines: one request a line on stdin; a ready line once loaded, then an attempt line for each attempt as it lands, and a last line with the transcript or an error. One that ends is started again for the next write; the write it was running fails, saying so.
  • Its limits. On macOS it runs in the worker's sandbox (no network, no writes, no new processes), with its model's directory named as read. Resident memory is held to WAI_QSVC_WRITER_GB (96), each write to WAI_QSVC_WRITE_SECS (3600). The engine's checks inside it plan within the per-job cap (job_bytes), so check_exercise refuses a program too large for a job.
  • Admission. Writes have their own scheduler: one at a time, in the queue's order, beside the circuit jobs, neither waiting for the other. Each kind fills the queue up to WAI_QSVC_MAX_QUEUE alone. A client holds one queued or running write (429, J030), checked and taken under one lock. A write holds none of the jobs' memory budget.
  • Events. Each attempt is an attempt event on GET /v1/jobs/{id}/events as it lands; a running write's job gives progress.
  • Refusals: J070 (no model on this service, 503), J071 (a task without an intent, or a case without one and no task intent to take, or one not in the course's form or past its sizes), J072 (options out of range, or a member a write does not take). Added to the engine's table, its page and the service's docs. Idempotency-Key works as for a job.
  • Discovery. GET /v1 and quantum_service_info give write: the model's name, licence and digest once it is loaded, or plainly that there is none. OpenAPI has /v1/write and WriteRequest. write_circuit runs as an MCP task; get_quantum_job reads a write with the verdict of the last program it wrote.
  • Testing without the 57 GB model. WAI_QSVC_WRITER_SCRIPT=<file> runs wai_quantum_writer::scripted::Scripted (now public) in the model's place.
  • Docs. README section and variables, self-host page, the changelog entry as a file of its own (wai/changes/2026-11-05-job-service-writes-program-for-task.md, beside #645's and #646's, with wai/CHANGELOG.md main's). smoke.sh writes a Bell pair's program only with SMOKE_WRITE=1; otherwise it checks a model-less service refuses a write. The version is unchanged (versions move at release commits).

Also changed

  • wai-quantum-writer: scripted module (from the tests; a script plays from its start in each conversation, and one that runs out says so), write_with (each attempt handed on as it lands), and check_task (a case with no intent of its own or the task's was checked with no intent, so no program could pass it; now refused up front).
  • wai-quantum: codes J070–J072; course-check.v1.json's lesson may be null, as check_exercise gives it.
  • The circuit scheduler passes over writes and takes a job out of the queue by its id. It used to pop the front, which would also have dropped a job queued but not yet listed.
  • The image builds from the repository's root (context: the engine, the service, the writer, jouleclaw-core and jouleclaw-loader-gguf with their workspace manifest), since the service now links the writer's model runtime. check-image.sh and the self-host page follow.
  • CI: the service workflow also runs on the writer's and the loader's paths. The command line's tool snapshot and agent docs list write_circuit.
  • The course pin: wai-quantum-docs.yml pins the course's tests by count and by name, and this branch carries #645's and #646's. This branch's own commits add none. It says 15, the same lines as #646's.

Review fixes (2026-11-06)

A review of the write loop found these in the service. Each is fixed here, and each new test failed on 72544526f for the reason it states.

  • A task was bounded only by the 1 MiB body. It is now read before it is queued:

    • check_task holds its canonical form to engine::course::exercise_form (#645): whole-number bounds, named constraints, a job of shots, seed and noise, at most 16 cases and 8 intents;
    • its canonical form is at most 64 KiB, and what the model is first told of it at most 8 KiB;
    • its job is read as a job is, on a one-qubit program (shots, noise channels);
    • a program an intent compares with meets the equivalence bounds a job's intent does (J031).

    Before, a non-object job panicked the writer, a malformed intent burned every round, and job.compile and job.repair went through. GET /v1 states the new limits under write.limits. Test: writer::tests::a_write_reads_its_task_and_options_or_says_which_does_not; it failed because {"t_count": 0} was admitted.

  • One write a client was checked and taken in separate steps. Four POSTs at once admitted four. A lock now holds from the check to the job's insertion. Test: jobs::tests::one_client_s_writes_sent_at_once_admit_one, with a store that syncs slowly; it failed with 4 of 4 admitted.

  • A write cancelled while the writer started was sent anyway and ran to its end. Now it is never sent. A write cancelled while it runs stops the writer within a poll, whether or not the kill reached it. Test: tests/write.rs a_write_cancelled_while_the_writer_starts_is_never_written, with a FIFO script that fails the first start; it failed because the cancelled write's job recorded the writer's peak memory.

  • Writes and circuit jobs shared one max_queue, so a backlog of writes refused every circuit job while workers sat idle. Each kind now fills the queue alone, in the dry run (would_refuse) and at admission. Test: jobs::tests::writes_and_circuit_jobs_each_fill_the_queue_alone; it failed because a circuit job was refused behind two writes.

  • The verdict of a write (get_quantum_job, tasks/result) is the last program's against the task's constraints as well as its intents. A broken constraint gives holds: false and is named. A write with no attempt yet has no verdict; it was "refused". Test: writer::tests::a_write_s_verdict_is_its_last_program_s; it failed because a queued write was "refused".

  • The model's digest is tied to its bytes. The writer reads every byte of the model against its manifest as it starts, and loads exactly the files the manifest lists (#646), so a hosted transcript's model says "checked": "blake3".

  • The replay claim is scoped in the README, the tool's description, the OpenAPI summary and the schema to the same arithmetic, which the transcript names. The schema gains the transcript's new fields:

    • check_memory_bytes;
    • decoding.think_max;
    • the model's checked, arch, os and matmul;
    • each attempt's thinking_closed, with thinking_tokens described.

    The command line's tool snapshot and llms-full.txt are regenerated.

  • A test that could not fail: a_task_needs_something_the_program_must_do scripted no reply, so it passed with check_task removed. Its model now has a passing reply. With check_task removed it fails ("the model was asked"); that was checked by mutation.

Second review (2026-11-06)

Each new test failed on 90b4d4073 for the reason it states.

  • Admission order. A write's programs were read three times each, before its sizes, its counts and its client's window. Four 885-byte POSTs held every runtime worker for 26 s. Admission now goes cheapest first:

    1. writer::read_shape refuses what costs nothing to read: the shape, the options, exact numbers, the canonical size, and the number of cases and intents.
    2. A key's resend gets its job; a client holding a write is refused.
    3. The submission is counted, so a write refused after this still counts.
    4. writer::read_programs reads the programs, each once and all within one budget of 1 000 000 statements. That budget is wai_quantum::qasm::within_steps, a per-thread budget and memo that the reader's elaborator spends from. The reading runs as blocking work, off the runtime's workers.

    supervise_write now reads only the options, not the whole task again. Test a_write_s_programs_are_read_last_within_one_budget_and_hold_up_nothing: four writes of eight 10M-statement programs. On the old head, the health check took 88 s. Now each write is refused in moments, three counted with J071 and the fourth refused by the window (J030).

  • Partial inputs. A task whose cases give different inputs could pass no program; check_task now refuses it (the inputs lines of a_task_reads_only_with_something_to_check).

  • OpenAPI. /v1/write's 422 names J031, and GET /v1's limits.queue says it is per kind.

  • A cancelled write held its place in the queue until a scheduler passed it. queued() now counts live entries (a_cancelled_write_holds_no_place_in_the_queue).

  • The admission lock was a std Mutex held across the store's fsyncs on runtime threads. Now a client's write is reserved in memory under the lock, and released once its job is in jobs. A job's record is kept before the queue lock is taken; a full queue takes the record back. Test a_write_waiting_on_the_store_holds_up_no_other_admission: before, another client's write timed out waiting.

  • The maths library the model names (#646) is in the schema and in each statement of the replay claim.

The parser's recursion limit, and the job path's intents being read before its caps, are on main too, and are being fixed there on wai/quantum-parse-depth. This stack takes main once that merges.

Tests

Run at f6e6e6605 on the M4 Max MacBook Pro (macOS aarch64; the M3 Ultra is running the thinking-cap measurement) and the Framework box (Linux x86_64).

macOS Linux
wai-quantum-service cargo test --locked --release, all targets 65 62 (the three macOS-only ones excluded)
clippy -D warnings, service and writer, with and without default features clean clean
wai-quantum-writer, with and without coder 23, 14 23, 14
engine::course:: and engine::schema:: 25 25
  • What the tests hold.
    • tests/write.rs:
      • a Bell task passing after one repair, and the transcript's fields: the thinking cap, the check's memory, and the limits GET /v1 states;
      • the receipt verifying, and a changed one not;
      • two attempt events before the job event;
      • one write a client (J030), with another client's write waiting and running after;
      • an idempotent resend counting as nothing, and the same key with another request refused (J034);
      • J071 and J072;
      • write_circuit as an MCP task with its verdict;
      • a service with no model refusing (J070);
      • the cancel while the writer starts.
    • jobs::tests: the rerun after a restart, the schema in each status, the race, and the queues.
    • writer::tests: the request and its bounds, both energy figures, the verdict, and on macOS the sandbox profile.
  • Other checks:
    • the command line's guide::: 9 passed;
    • check-lockfiles.sh at the head: 61 lockfiles, all current;
    • check-public-names.sh with the denylist: clean over every file the stack changes, and every commit message prints 0.

The real model

This run was made before the review fixes. Its transcripts lack the fields added since: the thinking cap, the check's memory, and the model's arithmetic and check level.

One service on the build host, started with the real checkpoint, sandboxed, under memguard at 100 GB. The model loaded in 4 s, and GET /v1 named it (name, licence, digest 05ce13f9…).

write A (direct) write B (SMOKE_WRITE=1 smoke.sh)
result passed after 1 repair, level proof passed after 1 repair, level proof
time 1,286 s; replies 581 s and 592 s (760 and 972 tokens, 707 and 919 of them thinking), checks 0.03 s 861 s in replies and checks
receipt, events verifies; status, attempt, attempt, job verifies, a changed transcript does not; 2 attempt events, then the job

The transcripts of A and B are the same, compared with energy and receipt removed. Write A held 61.5 GB at its peak, against the writer's cap of 96 GiB, and read 3,893 J over 2,950 s of CPU. The first attempt wrote H and CX in capitals, the reader refused it (Q103), and the repair passed. Host load differed between the two (load average 120 during part of A). Everything else in smoke.sh held against that service too.

What CI exercises first

CI repeats the macOS and Linux runs above, so nothing in it is a first run of the code on those systems. What it adds:

  • A clean container on the linux runner: the first build of the writer and its model runtime from an empty cache, and tests/write.rs there (it needs mkfifo).
  • The linux-hw energy leg runs smoke.sh with no model, so it checks the J070 refusal and not a write's figure.
  • The real model is exercised by nothing in CI: SMOKE_WRITE=1 bash smoke.sh against a service started with WAI_QSVC_MODEL is the check for that, and takes minutes.
  • check-image.sh is in no workflow.

🤖 Generated with Claude Code

**Re-landed on main as 655b366aa** (squash of a local merge with main at e694cb096; the pushed tree is byte-identical to the tested one). Main's contracts had taken J070-J074, so the write's refusals are now **J080/J081/J082**; admission follows #676's order (window, reading turn, capped reading child). Also fixes a race in main's reading pool (offload.rs) with a new test that fails 3/3 on main. Tested on Linux and macOS build hosts: service 140 + clippy, wai-quantum lib 1,517, engine builds, writer leg, course/docs, smoke with and without a scripted writer, the shipped image. Stacked on #646 (`wai/quantum-writer`), which is stacked on #645. Merge those first. Step 3 of the series: the WAI Quantum job service gains `POST /v1/write` and the MCP tool `write_circuit`. A caller sends a task (an exercise in the course's form), the service's own code model writes an OpenQASM program for it with the writer's loop, the engine checks each attempt exactly as it checks a lesson's answer, and the answer is the transcript, signed. ## What it does - **A write is a job** (`Work::Write`): admitted, kept, reloaded and run again as a job is, its request kept in canonical form (RFC 8785) so a rerun hands the model the same text. Its result is the transcript (`wai.quantum.write/1`) with the writer's energy inside, sealed with the service's receipt, so `POST /v1/verify` checks it. The job's `timing` (each reply's and check's seconds) is beside it, outside the signed body. - **The writer process** (`wai-quantum-service writer [--model DIR | --script FILE]`) starts with the service and serves every write, so the model loads once. It talks JSON lines: one request a line on stdin; a `ready` line once loaded, then an `attempt` line for each attempt as it lands, and a last line with the transcript or an error. One that ends is started again for the next write; the write it was running fails, saying so. - **Its limits.** On macOS it runs in the worker's sandbox (no network, no writes, no new processes), with its model's directory named as read. Resident memory is held to `WAI_QSVC_WRITER_GB` (96), each write to `WAI_QSVC_WRITE_SECS` (3600). The engine's checks inside it plan within the per-job cap (`job_bytes`), so `check_exercise` refuses a program too large for a job. - **Admission.** Writes have their own scheduler: one at a time, in the queue's order, beside the circuit jobs, neither waiting for the other. Each kind fills the queue up to `WAI_QSVC_MAX_QUEUE` alone. A client holds one queued or running write (`429`, `J030`), checked and taken under one lock. A write holds none of the jobs' memory budget. - **Events.** Each attempt is an `attempt` event on `GET /v1/jobs/{id}/events` as it lands; a running write's job gives `progress`. - **Refusals:** `J070` (no model on this service, `503`), `J071` (a task without an intent, or a case without one and no task intent to take, or one not in the course's form or past its sizes), `J072` (options out of range, or a member a write does not take). Added to the engine's table, its page and the service's docs. `Idempotency-Key` works as for a job. - **Discovery.** `GET /v1` and `quantum_service_info` give `write`: the model's name, licence and digest once it is loaded, or plainly that there is none. OpenAPI has `/v1/write` and `WriteRequest`. `write_circuit` runs as an MCP task; `get_quantum_job` reads a write with the verdict of the last program it wrote. - **Testing without the 57 GB model.** `WAI_QSVC_WRITER_SCRIPT=<file>` runs `wai_quantum_writer::scripted::Scripted` (now public) in the model's place. - **Docs.** README section and variables, self-host page, the changelog entry as a file of its own (`wai/changes/2026-11-05-job-service-writes-program-for-task.md`, beside #645's and #646's, with `wai/CHANGELOG.md` main's). `smoke.sh` writes a Bell pair's program only with `SMOKE_WRITE=1`; otherwise it checks a model-less service refuses a write. The version is unchanged (versions move at release commits). ## Also changed - **wai-quantum-writer:** `scripted` module (from the tests; a script plays from its start in each conversation, and one that runs out says so), `write_with` (each attempt handed on as it lands), and `check_task` (a case with no intent of its own or the task's was checked with no intent, so no program could pass it; now refused up front). - **wai-quantum:** codes `J070`–`J072`; `course-check.v1.json`'s `lesson` may be null, as `check_exercise` gives it. - **The circuit scheduler** passes over writes and takes a job out of the queue by its id. It used to pop the front, which would also have dropped a job queued but not yet listed. - **The image** builds from the repository's root (context: the engine, the service, the writer, `jouleclaw-core` and `jouleclaw-loader-gguf` with their workspace manifest), since the service now links the writer's model runtime. `check-image.sh` and the self-host page follow. - **CI:** the service workflow also runs on the writer's and the loader's paths. The command line's tool snapshot and agent docs list `write_circuit`. - **The course pin:** `wai-quantum-docs.yml` pins the course's tests by count and by name, and this branch carries #645's and #646's. This branch's own commits add none. It says 15, the same lines as #646's. ## Review fixes (2026-11-06) A review of the write loop found these in the service. Each is fixed here, and each new test failed on 72544526f for the reason it states. - **A task was bounded only by the 1 MiB body.** It is now read before it is queued: - `check_task` holds its canonical form to `engine::course::exercise_form` (#645): whole-number bounds, named constraints, a job of `shots`, `seed` and `noise`, at most 16 cases and 8 intents; - its canonical form is at most 64 KiB, and what the model is first told of it at most 8 KiB; - its job is read as a job is, on a one-qubit program (shots, noise channels); - a program an intent compares with meets the equivalence bounds a job's intent does (`J031`). Before, a non-object `job` panicked the writer, a malformed intent burned every round, and `job.compile` and `job.repair` went through. `GET /v1` states the new limits under `write.limits`. Test: `writer::tests::a_write_reads_its_task_and_options_or_says_which_does_not`; it failed because `{"t_count": 0}` was admitted. - **One write a client was checked and taken in separate steps.** Four POSTs at once admitted four. A lock now holds from the check to the job's insertion. Test: `jobs::tests::one_client_s_writes_sent_at_once_admit_one`, with a store that syncs slowly; it failed with 4 of 4 admitted. - **A write cancelled while the writer started was sent anyway** and ran to its end. Now it is never sent. A write cancelled while it runs stops the writer within a poll, whether or not the kill reached it. Test: `tests/write.rs` `a_write_cancelled_while_the_writer_starts_is_never_written`, with a FIFO script that fails the first start; it failed because the cancelled write's job recorded the writer's peak memory. - **Writes and circuit jobs shared one `max_queue`,** so a backlog of writes refused every circuit job while workers sat idle. Each kind now fills the queue alone, in the dry run (`would_refuse`) and at admission. Test: `jobs::tests::writes_and_circuit_jobs_each_fill_the_queue_alone`; it failed because a circuit job was refused behind two writes. - **The verdict of a write** (`get_quantum_job`, `tasks/result`) is the last program's against the task's constraints as well as its intents. A broken constraint gives `holds: false` and is named. A write with no attempt yet has no verdict; it was "refused". Test: `writer::tests::a_write_s_verdict_is_its_last_program_s`; it failed because a queued write was "refused". - **The model's digest is tied to its bytes.** The writer reads every byte of the model against its manifest as it starts, and loads exactly the files the manifest lists (#646), so a hosted transcript's model says `"checked": "blake3"`. - **The replay claim is scoped** in the README, the tool's description, the OpenAPI summary and the schema to the same arithmetic, which the transcript names. The schema gains the transcript's new fields: - `check_memory_bytes`; - `decoding.think_max`; - the model's `checked`, `arch`, `os` and `matmul`; - each attempt's `thinking_closed`, with `thinking_tokens` described. The command line's tool snapshot and `llms-full.txt` are regenerated. - **A test that could not fail:** `a_task_needs_something_the_program_must_do` scripted no reply, so it passed with `check_task` removed. Its model now has a passing reply. With `check_task` removed it fails ("the model was asked"); that was checked by mutation. ## Second review (2026-11-06) Each new test failed on 90b4d4073 for the reason it states. - **Admission order.** A write's programs were read three times each, before its sizes, its counts and its client's window. Four 885-byte POSTs held every runtime worker for 26 s. Admission now goes cheapest first: 1. `writer::read_shape` refuses what costs nothing to read: the shape, the options, exact numbers, the canonical size, and the number of cases and intents. 2. A key's resend gets its job; a client holding a write is refused. 3. The submission is counted, so a write refused after this still counts. 4. `writer::read_programs` reads the programs, each once and all within one budget of 1 000 000 statements. That budget is `wai_quantum::qasm::within_steps`, a per-thread budget and memo that the reader's elaborator spends from. The reading runs as blocking work, off the runtime's workers. `supervise_write` now reads only the options, not the whole task again. Test `a_write_s_programs_are_read_last_within_one_budget_and_hold_up_nothing`: four writes of eight 10M-statement programs. On the old head, the health check took 88 s. Now each write is refused in moments, three counted with `J071` and the fourth refused by the window (`J030`). - **Partial inputs.** A task whose cases give different inputs could pass no program; `check_task` now refuses it (the inputs lines of `a_task_reads_only_with_something_to_check`). - **OpenAPI.** `/v1/write`'s 422 names `J031`, and GET /v1's `limits.queue` says it is per kind. - **A cancelled write held its place in the queue** until a scheduler passed it. `queued()` now counts live entries (`a_cancelled_write_holds_no_place_in_the_queue`). - **The admission lock** was a std Mutex held across the store's fsyncs on runtime threads. Now a client's write is reserved in memory under the lock, and released once its job is in `jobs`. A job's record is kept before the queue lock is taken; a full queue takes the record back. Test `a_write_waiting_on_the_store_holds_up_no_other_admission`: before, another client's write timed out waiting. - **The maths library** the model names (#646) is in the schema and in each statement of the replay claim. The parser's recursion limit, and the job path's intents being read before its caps, are on main too, and are being fixed there on `wai/quantum-parse-depth`. This stack takes main once that merges. ## Tests Run at f6e6e6605 on the M4 Max MacBook Pro (macOS aarch64; the M3 Ultra is running the thinking-cap measurement) and the Framework box (Linux x86_64). | | macOS | Linux | |---|---|---| | `wai-quantum-service` `cargo test --locked --release`, all targets | 65 | 62 (the three macOS-only ones excluded) | | clippy `-D warnings`, service and writer, with and without default features | clean | clean | | `wai-quantum-writer`, with and without `coder` | 23, 14 | 23, 14 | | `engine::course::` and `engine::schema::` | 25 | 25 | - **What the tests hold.** - `tests/write.rs`: - a Bell task passing after one repair, and the transcript's fields: the thinking cap, the check's memory, and the limits `GET /v1` states; - the receipt verifying, and a changed one not; - two attempt events before the job event; - one write a client (`J030`), with another client's write waiting and running after; - an idempotent resend counting as nothing, and the same key with another request refused (`J034`); - `J071` and `J072`; - `write_circuit` as an MCP task with its verdict; - a service with no model refusing (`J070`); - the cancel while the writer starts. - `jobs::tests`: the rerun after a restart, the schema in each status, the race, and the queues. - `writer::tests`: the request and its bounds, both energy figures, the verdict, and on macOS the sandbox profile. - **Other checks:** - the command line's `guide::`: 9 passed; - `check-lockfiles.sh` at the head: 61 lockfiles, all current; - `check-public-names.sh` with the denylist: clean over every file the stack changes, and every commit message prints 0. ## The real model This run was made before the review fixes. Its transcripts lack the fields added since: the thinking cap, the check's memory, and the model's arithmetic and check level. One service on the build host, started with the real checkpoint, sandboxed, under memguard at 100 GB. The model loaded in 4 s, and `GET /v1` named it (name, licence, digest `05ce13f9…`). | | write A (direct) | write B (`SMOKE_WRITE=1 smoke.sh`) | |---|---|---| | result | passed after 1 repair, level `proof` | passed after 1 repair, level `proof` | | time | 1,286 s; replies 581 s and 592 s (760 and 972 tokens, 707 and 919 of them thinking), checks 0.03 s | 861 s in replies and checks | | receipt, events | verifies; `status, attempt, attempt, job` | verifies, a changed transcript does not; 2 attempt events, then the job | The transcripts of A and B are the same, compared with `energy` and `receipt` removed. Write A held 61.5 GB at its peak, against the writer's cap of 96 GiB, and read 3,893 J over 2,950 s of CPU. The first attempt wrote `H` and `CX` in capitals, the reader refused it (`Q103`), and the repair passed. Host load differed between the two (load average 120 during part of A). Everything else in `smoke.sh` held against that service too. ## What CI exercises first CI repeats the macOS and Linux runs above, so nothing in it is a first run of the code on those systems. What it adds: - **A clean container on the `linux` runner:** the first build of the writer and its model runtime from an empty cache, and `tests/write.rs` there (it needs `mkfifo`). - **The `linux-hw` energy leg** runs `smoke.sh` with no model, so it checks the J070 refusal and not a write's figure. - **The real model** is exercised by nothing in CI: `SMOKE_WRITE=1 bash smoke.sh` against a service started with `WAI_QSVC_MODEL` is the check for that, and takes minutes. - **`check-image.sh`** is in no workflow. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
wai-quantum: any exercise is checked as a lesson is (engine::course::check_exercise)
Some checks failed
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Has been cancelled
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
wai-quantum command line / command line · macos (pull_request) Has been cancelled
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Has been cancelled
wai-quantum editors / editors · macos (pull_request) Has been cancelled
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Has been cancelled
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum Metal member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Has been cancelled
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Has been cancelled
wai-quantum for Python / python · macos (pull_request) Has been cancelled
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum service / service · macos (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
898793622e
The course's check held a program to a lesson's exercise: its cases and intents, its constraints,
the engine's verdict at each, and what went wrong in words. Only the lesson lookup tied it to the
course. check_exercise takes the exercise as a document in the course's own form
(wai.quantum.exercise/1) and checks a program against it the same way, with `lesson` null.

It is the first step toward the job service writing a program for an intent: each attempt is held
to the task as a lesson's answer is, and what went wrong is the feedback for the next attempt.

check now finds its lesson and calls the same function, so a lesson's check is the same bytes as
before. A new test holds both:
- a lesson's own exercise, given as a document, checks byte for byte as the lesson does, for a
  right and a wrong program;
- an exercise written from nothing but a distribution passes a Bell pair by proof and fails a
  program without its CNOT, naming the distribution.

The course's ten tests pass (cargo test --features full --lib engine::course).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-writer: WAI Quantum writes a program for a task, on its own model
All checks were successful
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 13s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m26s
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 16s
wai-quantum service / service · macos (pull_request) Successful in 3m50s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 6m26s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 4m28s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m43s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 5m35s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 16m40s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m53s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 5m55s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 27s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 9m41s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 17m34s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 16m22s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 13s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 44s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m40s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 12m31s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 53s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 24s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 7m51s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 1m19s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 11m49s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 19s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 1m35s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 3m36s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m28s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h35m10s
ef4d02e547
The loop the job service will write programs with, as a crate of its own. The task is an exercise
in the course's form (wai.quantum.exercise/1). A model writes a program, and the engine checks it
against the task exactly as it checks a lesson's answer (engine::course::check_exercise). What went
wrong goes back to the model in the engine's own words, until a program passes or the rounds run
out.

- The code model (src/coder.rs): North Mini Code 1.0 (Apache-2.0) on the pure-Rust runtime
  (jouleclaw-loader-gguf).
  - Decoding is greedy, so the same model files, task and engine give the same programs.
  - The conversation stays in the model's cache: a repair round feeds only the new turn, where
    the measurement harness re-read the whole conversation each round.
  - The loop takes the answer after the model's thinking, so thinking text is never checked as a
    program, and a reply that never leaves its thinking is asked again.
- The model's identity: the digest of a manifest of its files (wai.quantum.model/1,
  wai-model.json). open() checks each file's size against it, and verify reads every byte.
- The transcript (wai.quantum.write/1): the task, model and prompt (version, system and first-turn
  digests), the decoding, the engine's version, and each attempt (program, digest, the engine's
  check, tokens). Timing is returned beside it, since a replay does not reproduce time.
- The engine:
  - course::task_of shows any exercise as a lesson shows its own, its title and task given as one
    string or one per locale;
  - course::exercise gives a lesson's exercise document;
  - lesson() now builds its fields through the same helpers, and a test holds every lesson's
    fields in both locales equal to task_of's.
- The command line: wai-quantum-writer write | course | manifest | verify.
- CI: wai-quantum-cli.yml tests the writer with a scripted model, with and without the model
  compiled in, plus clippy. The workflow now also runs for changes to the writer and to the
  loader crate it depends on.

Tests (all run on the build machines):
- wai-quantum-writer: 7 pass, default features and without them; clippy -D warnings is clean.
- engine::course: 11 pass.
- scripts/check-lockfiles.sh: 61 lockfiles, all current.

Stacked on #645 (check_exercise).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The job service's write (POST /v1/write, write_circuit) refuses with codes of
its own, added to the job layer's table and to its page:

- J070: a write sent to a host with no model to write with (the service
  answers 503);
- J071: a write's task that does not read: an exercise with an intent, or
  cases that each have one;
- J072: a write's options out of range, or a member a write does not take.

A course check's `lesson` may be null in its schema
(wai.quantum.course-check/1), as engine::course::check_exercise gives it for
an exercise that is no lesson's. The service holds each attempt of a write to
that schema.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
- scripted::Scripted, moved out of the tests: a model whose replies are set in
  advance, read from a JSON script (each reply a string, or null for one that
  never left its thinking), and named by the digest of its script. Each
  conversation plays the script from its first reply, so a write run again
  gives the same transcript, as a greedy model's does. The job service's
  writer runs one in the model's place (WAI_QSVC_WRITER_SCRIPT), and a script
  that runs out says so rather than panicking.
- write_with: write, with each attempt and its timing handed to a callback as
  it lands, for a service to stream.
- check_task: a task is a JSON object (naming wai.quantum.exercise/1 if it
  names a form) with an intent, or cases that each have one; a case without
  one takes the task's. write calls it, so a case with no intent of its own
  or of the task's is refused before the model is asked. Before, such a case
  was checked with no intent, and no program could pass it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-service: POST /v1/write and write_circuit, a program written for a task on the service's own model
Some checks failed
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Has been cancelled
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Has been cancelled
wai-quantum for Python / python · macos (pull_request) Has been cancelled
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum service / service · macos (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
WAI examples / WAI examples · portable · linux (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
30c5d6aa83
A service started with a model (WAI_QSVC_MODEL) writes an OpenQASM program for
a task, an exercise in the course's form, with wai-quantum-writer's loop: the
model writes, the engine checks each attempt as it checks a lesson's answer,
and what went wrong goes back for another attempt.

- A write is a job (Work::Write), admitted, kept, reloaded and run again as
  one, and sealed with the service's receipt. Its result is the transcript
  (wai.quantum.write/1) with the writer's energy inside it, so POST /v1/verify
  checks it; its timing is the job's `timing`, outside the signed body. The
  request is kept in canonical form, so a rerun hands the model the same text.
- The writer process (`wai-quantum-service writer`) starts with the service
  and serves every write over JSON lines on stdin and stdout, so the model
  loads once. One that ends is started again for the next write, and the
  write it was running fails, saying so. On macOS it runs in the worker's
  sandbox, its model read. Its resident memory is held to WAI_QSVC_WRITER_GB
  (96), a write to WAI_QSVC_WRITE_SECS (3600), and the engine's checks inside
  it plan within one job's memory.
- Writes have a scheduler of their own: one at a time, in the queue's order,
  beside the circuit jobs, neither holding the other up. The circuit
  scheduler passes over writes and takes a job out of the queue by its id
  (it used to pop the front, which also dropped a job queued but not yet
  listed). A client holds one queued or running write (J030), and a write
  holds none of the jobs' memory budget.
- Each attempt is an `attempt` event on GET /v1/jobs/{id}/events as it lands,
  and a running write's job gives its `progress`.
- Refusals: J070 (no model, 503), J071 (a task that does not read), J072
  (options out of range). Idempotency-Key works as for a job.
- GET /v1 and quantum_service_info give `write`: the model's name, licence
  and digest once it is loaded, or that there is none. The OpenAPI document
  has the route and its request. The MCP server has write_circuit, which runs
  as a task, and get_quantum_job reads a write with the verdict of the last
  program it wrote (its outputSchema, job_or_write; the run tools keep job).
- WAI_QSVC_WRITER_SCRIPT runs a script in the model's place. tests/write.rs
  writes a Bell pair's program with one, through a FIFO that holds the writer
  at its start: a pass after one repair, the transcript's fields, the receipt
  verifying, the two attempt events, one write a client, the order, an
  idempotent resend and the refusals; and a service with no model answering
  503. jobs.rs holds a write run again after a restart to the same transcript,
  and a write's job in each status to its schema.
- smoke.sh writes a Bell pair's program with SMOKE_WRITE=1, and otherwise
  checks that a service with no model refuses a write.
- The image builds from the repository's root, since the service now links
  the writer and its model runtime; the workflow runs on their paths. The
  command line's agent docs and tool snapshot list write_circuit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The workflow pins how many course tests pass and names each one, since a module
filter is satisfied by any one test. This branch carries two tests the pin does
not know: an_exercise_outside_the_course_is_checked_as_a_lesson_is (#645) and
any_exercise_is_shown_as_a_lesson_shows_its_own (#646). So the step failed here
with every test passing. This branch's own commits add no course test.

The lines extend #645's own fix by one name, in the same place, so that #646's
fix, written the same way, merges with them as one change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
So that whoever runs SMOKE_WRITE=1 can read the write afterwards, its energy and
its timing among it, from GET /v1/jobs/{id}.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-service: a write's energy says its window is the write's, on Linux too
Some checks failed
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 27s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 23s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 6m16s
wai-quantum service / service · macos (pull_request) Successful in 5m17s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 5m6s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m59s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m25s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 20m7s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m32s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m21s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 17m22s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Failing after 2m31s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m38s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 38s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 7m19s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 15m22s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 23s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m14s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m12s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 25m36s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 7m47s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m24s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 51s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 12m34s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m12s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 26s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 2m31s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m27s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m26s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h16m33s
4bbddde445
A write on Linux took the words of a job's figure: the packages' energy "from
just before its worker started to just after it exited". The writer neither
starts nor exits in a write's window, and the words are inside what the receipt
seals. A metered write through SMOKE_WRITE=1 on real package counters showed it.
The figure now says what its window is, from just before the write was sent to
just after its last line came back. The macOS figure already said so, but kept
the engine's "billed to the worker" among its exclusions, and now says writer
there too. A test holds both figures to naming no worker.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-docs.yml: the course's new test is required by name, and its count is ten
Some checks failed
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 21s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 18s
wai-quantum service / service · macos (pull_request) Successful in 5m8s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m5s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 8m45s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 4m38s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 20m6s
wai-quantum studio and desktop / desktop app · macos (pull_request) Failing after 11m46s
wai-quantum for Python / python · macos (pull_request) Failing after 15m2s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 10m59s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m30s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 16m57s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Failing after 1m34s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 29s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 7m16s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 28s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 45s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m12s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 18m15s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 18m39s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m23s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 41s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 11m57s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 5m19s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m4s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 44s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 2m46s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m27s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m40s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h35m23s
af83fbbe9f
The workflow pins how many course tests pass and names each one, since a module filter is satisfied
by any one test. check_exercise added a tenth, so the step failed with every test passing.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Main gained fourteen commits since this branch was cut, among them the
changelog's new layout (one entry a file under wai/changes/). Nothing
conflicted; the entry this branch added to the head of wai/CHANGELOG.md
moves to a file in the next commit.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Main now takes one file an entry (wai/changes/README.md), and its
repository checks fail a pull request opened since that adds to the head
of wai/CHANGELOG.md, which is what this branch did. The entry moves, word
for word, to wai/changes/2026-11-05-quantum-any-exercise-checked-as-lesson.md,
and wai/CHANGELOG.md is main's again.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
The branch below this one now carries main's fourteen newer commits, its
count-of-ten pin for the course's tests, and its changelog entry as a
file of wai/changes/.

One conflict, wai/CHANGELOG.md: this branch had added two entries to the
head of Unreleased, the one it inherited and its own. The file is main's
again. The inherited entry is already the file the branch below added,
byte for byte, and this branch's own entry moves, word for word, to
wai/changes/2026-11-05-quantum-writer-writes-program-for-task.md.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
The workflow pins how many course tests pass and names each one, since a
module filter is satisfied by any one test. This branch adds
any_exercise_is_shown_as_a_lesson_shows_its_own to engine::course, and
the pin it now inherits from the branch below counts ten. So the step
failed here with all eleven passing ("test result: ok. 11 passed" in the
job's log, then "the course's tests did not all pass").

The count is eleven and the new name is the last in the list, the same
lines the branch stacked above this one already holds, so the two merge
as one change.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
The two branches below this one now carry main's fourteen newer commits
and their changelog entries as files of wai/changes/. The pin for the
course's eleven tests in wai-quantum-docs.yml is the same lines on both
sides and merged as one change.

One conflict, wai/CHANGELOG.md: this branch had added three entries to
the head of Unreleased, the two it inherited and its own. The file is
main's again. The inherited entries are already the files the branches
below added, byte for byte, and this branch's own entry moves, word for
word, to wai/changes/2026-11-05-job-service-writes-program-for-task.md.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Merge main into wai/quantum-check-exercise
Some checks failed
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 23m41s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 18s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 20m18s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 18s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Has been cancelled
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
13015f77af
Main's two newer commits (the marks, #653) touch nothing this branch does.
No conflict.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Merge wai/quantum-check-exercise (with main) into wai/quantum-writer
Some checks failed
wai-quantum editors / editors · macos (pull_request) Has been cancelled
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Has been cancelled
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Has been cancelled
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum Metal member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Has been cancelled
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Has been cancelled
wai-quantum for Python / python · macos (pull_request) Has been cancelled
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum service / service · macos (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
63fb4a39c8
The branch below this one now carries main's two newer commits (the marks,
#653). They touch nothing this branch does. No conflict.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Merge wai/quantum-writer (with main) into wai/quantum-service-write
Some checks failed
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Has been cancelled
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Has been cancelled
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum Metal member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Has been cancelled
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Has been cancelled
wai-quantum for Python / python · macos (pull_request) Has been cancelled
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 13m31s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum service / service · macos (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
72544526fe
The two branches below this one now carry main's two newer commits (the
marks, #653). They touch nothing this branch does. No conflict.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
A check of an exercise that is no lesson's held vacuously where it read nothing, and
the writer makes that check the only gate on a pass. Now:

- engine::course::exercise_form holds a document to a lesson's form as far as a check
  reads it, and check_exercise refuses what it refuses before anything runs: a bound
  that is not whole numbers, a constraint or field the course does not name, a job
  beyond shots, seed and noise (a non-object job panicked the check; a repair or
  dyadic_bits made the engine prove another program than the one recorded), more than
  MOST_CASES (16) cases or MOST_INTENTS (8) intents. read_exercise shares the same
  reading, and a lesson's cases are still named in every locale.
- A case's inputs bind: a program that does not declare one is refused in that case
  (Q114), where it ran without it (the bit-flip lesson passed with no flip). A case
  whose intent is null takes the exercise's, and a case named with one string is
  shown by it.
- The constraints hold in every case's program, not the first one's, and a broken one
  names its case.
- t_count counts T gates, not names: p and rz by an odd multiple of pi/4 count one, a
  Clifford gate none, and any other gate does not hold to a T count. A three-qubit gate
  does not hold to a two-qubit count. The t-count lesson passed with every T written as
  p(pi/4).

Three tests, each failing on the branch's previous head for the reason it states
(13015f77a: a {"t_count": 0} bound was checked and passed; the no-flip program passed
the bit-flip lesson; the respelled t-count answer passed): course tests 10 -> 13 in
wai-quantum-docs.yml, run on Linux x86_64 and macOS aarch64.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The course tests are fourteen: wai-quantum-docs.yml names each of both branches'.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The loop, as reviewed:
- A task is read in its canonical form (RFC 8785, what task_digest is taken over) and
  held to engine::course::exercise_form before the model is asked anything. The same
  task with its keys in another order, or a bound written 0.0, was two prompts and two
  checks under one digest; a job asking for a repair, a vacuous bound or an unknown
  constraint went to the model.
- The transcript records check_memory_bytes, the memory each check's run is planned in,
  which decides what a check runs: the command line and the service used different caps
  and their transcripts did not say so.
- The replay claim is scoped: the model's identity names the arithmetic it ran in
  (arch, os, and the BF16 matmul kernel: NEON fused multiply-add on aarch64, a scalar
  loop elsewhere), and a test holds the named kernel to the one that runs. The same
  files, task, options and engine give the same bytes in that arithmetic.

The model wrapper:
- CodeModel::open loads exactly the files wai-model.json lists, in its order, and refuses
  a manifest that lists none and a directory holding a model file it does not list or
  lacking one it lists (a stray shard sorting first was bound in place of the listed
  one). It checks sizes, and says so in the identity ("checked": "sizes");
  open_verified (and --verify) reads every byte first and says "blake3".
- answer_of drops <|START_TEXT|> and cuts at <|END_TEXT|>, which landed in the program.

And the measured "no answer" (run 2: 23 of 43 attempts spent the whole budget thinking):
a reply still thinking at its cap (Options::thinking_cap, two thirds of max_new unless
--think-max says) has <|END_THINKING|><|START_TEXT|> fed for it and decodes its answer in
the tokens left. The transcript records the cap and, per attempt, thinking_closed;
`course` prints how many replies gave no program and how many were closed. The decode
loop is a function over a small trait, so a test drives it with a model that thinks
for ever.

Each loop test failed on 63fb4a39c for the reason it states (a malformed task was
written for; one task, two prompts), and the coder tests for theirs (the markers were
in the answer; an unlisted shard was taken). The course's case names given as one
string are shown by it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
check_task now holds a task's canonical form to engine::course::exercise_form after
its own checks, write_with reads the canonical task, and the scripted model and the
writer process take the reply's thinking cap.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The course words these bounds as "at most n" (constraint.t_count, two_qubit, estimate),
and the check read a min too: {"t_count": {"min": 2}} showed the model "at most ? T and
T† gates" while it failed every program with fewer than two. The reader now takes
{"max": n} alone for them (engine::course::at_most), and exercise.v1.json says so
($defs/at_most), with the T count's description saying how T gates are counted. No
lesson uses a min there.

Found sweeping the review's family of claims the check makes that the code does not keep.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
thinking_tokens was the reply's tokens less its answer re-encoded, which is not the
tokens the model gave (a re-encoding splits text its own way, and the answer's markers
counted as thinking). It is now counted on the reply's tokens: up to and including the
one that ends its thinking, all of a reply whose thinking never ended, none of one that
never thought. What run 3 measures of the thinking cap rests on it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The review's findings in the service:
- A task was bounded only by the 1 MiB body. It is now held to the course's form at
  admission (check_task, through engine::course::exercise_form: whole-number bounds,
  named constraints, a job of shots, seed and noise, at most 16 cases and 8 intents),
  its canonical form to 64 KiB (MOST_TASK_BYTES), what the model is first told of it to
  8 KiB (MOST_PROMPT_BYTES), its job read as a job is on a one-qubit program (shots,
  noise channels), and a program an intent compares with to the equivalence bounds a
  job's intent meets (J031). A non-object job panicked the writer; a malformed intent
  burned every round; job.compile and job.repair went through. GET /v1 states the limits.
- One write a client: the check and the admission were separate steps, so four POSTs at
  once admitted four. A lock now holds from the check to the job's insertion.
- A write cancelled while the writer started was sent to it anyway and ran to its end.
  It is no longer sent, and a write cancelled while it runs stops the writer within a
  poll, whether or not the kill reached it.
- Queued writes and circuit jobs shared one max_queue, so a backlog of writes refused
  every circuit job with idle workers. Each kind now fills the queue up to max_queue
  alone, in would_refuse (the dry run) and at admission.
- The verdict get_quantum_job and tasks/result give a write is the last program's
  against the task's constraints as well as its intents (holds: false, naming the broken
  constraint); a write with no attempt yet has none, where it was "refused".
- The writer reads every byte of the model against its manifest as it starts, so a hosted
  transcript's model says "checked": "blake3".
- The replay claim is scoped in the README, the tool's description, the OpenAPI summary
  and the schema: the same bytes in the same arithmetic, which the transcript names. The
  schema has the transcript's new fields (check_memory_bytes, decoding.think_max, the
  model's checked/arch/os/matmul, each attempt's thinking_closed); the command line's
  tool snapshot and llms-full.txt are regenerated.
- The writer's test that a task asks something could not fail (its scripted model had no
  reply to give); its model now has a passing one, so only check_task refuses the task.

Each new test failed on 72544526f for the reason it states: four of four writes admitted;
a circuit job refused behind two writes; a queued write's verdict "refused"; a task with
{"t_count": 0} admitted; a cancelled write run by the writer (its peak memory recorded).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge main into wai/quantum-check-exercise
Some checks failed
wai-quantum extension points / the registry and the example · linux (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum service / service · linux (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Has been cancelled
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
ba59c776eb
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge wai/quantum-check-exercise (with main) into wai/quantum-writer
Some checks failed
wai-quantum extension points / the registry and the example · linux (pull_request) Has been cancelled
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum service / service · linux (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 15s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 29s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 12s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Has been cancelled
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
fbbee6fd98
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge wai/quantum-writer (with main) into wai/quantum-service-write
Some checks failed
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum service / service · linux (pull_request) Has been cancelled
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Has been cancelled
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 55s
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
90b4d40736
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum: an injected error is corrected from the qubits, never read: the error-correction lessons check behaviour
Some checks failed
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m30s
wai-quantum views in agent hosts / views · a scripted host (pull_request) Successful in 11m38s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 9m44s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 6m42s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m25s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 13m13s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 15m4s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 41m50s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Has been cancelled
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m58s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 54s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum service / service energy · linux packages (pull_request) Failing after 57s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 49s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
12496404b5
The second review found finding 1 closed only for undeclared inputs. A program that
declared `input uint err;` and never used it passed the bit-flip lesson at proof, and
one that branched on the classical err passed the syndrome lesson.

A new constraint, `inject`, names the input whose value is the qubit an error flips.
The cases' programs may then differ in that one gate alone, an x on the qubit the case
names, every other gate, measurement and step the same (course::injected). So the error
is in the quantum state, the program cannot read it classically, and what finds and
corrects it is the program's quantum operations, the same in every case. A program
that never applies the error, reads it elsewhere, or flips another qubit fails, saying
which. A second, `qubits` ({"max": n}), closes the last way round: an answer kept on a
qubit no error reaches. bit-flip-code and syndrome set both; their solutions and wrong
answers keep their results. The exercise schema names both, and a case set an
injection cannot be made from is refused.

Test an_injected_error_is_corrected_from_the_qubits_and_never_read, failing on
ba59c776e for the reason it states (the declared, unused input passed bit-flip-code).
Course tests 13 -> 14 in wai-quantum-docs.yml.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The second review's findings in the service:
- Admission order. A write's programs were read, three times each, before its sizes,
  its counts and its client's window: four 885-byte POSTs held every runtime worker for
  26 s. Now writer::read_shape refuses what costs nothing to read (shape, options,
  exact numbers, canonical size, the number of cases and intents); a key's resend is
  answered; a client holding a write is refused; the submission is counted, so a write
  refused after it still counts; and only then writer::read_programs reads the
  programs, each once and all within one budget of 1 000 000 statements
  (wai_quantum::qasm::within_steps, a per-thread budget and memo the reader's elaborator
  spends from), as blocking work off the runtime's workers. supervise_write reads only
  the options, not the whole task again.
- Partial inputs. A task whose cases give different inputs could pass no program;
  check_task refuses it.
- OpenAPI: /v1/write's 422 names J031; GET /v1's limits.queue says it is per kind.
- A cancelled write still counted in the queue until a scheduler passed it; queued()
  counts live entries.
- The admission lock was a std Mutex held across the store's fsyncs on runtime
  threads. A client's write is now reserved in memory under the lock and released once
  its job is in jobs, and a job's record is kept before the queue lock is taken (a
  queue found full takes it back), so no lock is held across the store's writes.

Tests failing on 90b4d4073 for the reasons they state:
a_write_s_programs_are_read_last_within_one_budget_and_hold_up_nothing (integration),
a_cancelled_write_holds_no_place_in_the_queue,
a_write_waiting_on_the_store_holds_up_no_other_admission, the budget lines of
a_write_reads_its_task_and_options_or_says_which_does_not, the inputs lines of
a_task_reads_only_with_something_to_check, and the queue and OpenAPI lines of the
service's write test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The second review's findings in the loop and the model wrapper:
- The cap's edges. A close at the cap could take a reply past max_new (201 tokens of
  200), and one with too few tokens left gave a program cut short to check. A close now
  needs room for itself and MIN_ANSWER (64) tokens; otherwise the reply ends with no
  answer. A reply that thinks again after the close is closed again, and answer_of reads
  the text after the last close. An empty answer is no program: the model is asked
  again, the engine not asked to check nothing.
- "checked": "blake3" held only at check time: verify hashed files by name and bind
  mapped them by name again. open_verified now opens each file once, hashes it through
  the mapping the model reads (map_checked) and parses from that mapping; the config and
  tokenizer from the bytes hashed. The docs say what holds after mapping.
- Replay. --check-memory-bytes gives the command line the check's memory a service
  planned in, so every option a transcript records can be given again. The identity
  names the maths library (glibc's version, or macOS's release and build), whose
  exponentials and sines shape the logits. The matmul test now runs the dispatcher the
  projections call (matmul_bf16_auto, one row and three, and the batch).

Tests failing on fbbee6fd9 for the reasons they state:
the_cap_keeps_within_max_new_and_closes_a_reopened_thinking (201 tokens of 200),
every_recorded_option_can_be_given (the flag ignored), an_empty_answer_is_no_program
(an empty program checked). New: a_shard_is_checked_through_the_mapping_the_model_reads,
the_maths_library_is_named.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge wai/quantum-check-exercise (an injected error is corrected from the qubits) into wai/quantum-writer
Some checks failed
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 8m40s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m1s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 8m31s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 9m5s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 11m35s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 6m57s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m48s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Failing after 22m25s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m56s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 43s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
wai-quantum service / service energy · linux packages (pull_request) Failing after 1m3s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 53s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
5fbf304a41
The course's tests are fifteen: #645's fourteen and this branch's one (git merged the two
raises of the count as one).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The loop's new test takes the public scripted model here.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-service: the transcript's maths library in the schema and the claims; the tool snapshot regenerated
All checks were successful
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m3s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m31s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 9m1s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m26s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 17m13s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m18s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 16m53s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m55s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 2m1s
wai-quantum service / service energy · linux packages (pull_request) Successful in 2m18s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 52s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 18m56s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m47s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 56s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 5m16s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 47s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m17s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 3m5s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 19m9s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 26m13s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m28s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 39s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m31s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m10s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 28s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 3m9s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 21m2s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m35s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 4m20s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h43m9s
f6e6e6605b
The writer's model now names its maths library (#646): the schema describes `libm`, and the
README, the tool's description, the OpenAPI summary and the writer's docs name it beside the
architecture, operating system and matmul kernel. The command line's tool snapshot and
llms-full.txt are regenerated, the service's lock takes the writer's memmap2, and the
store-lock test borrows the service across its threads.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-11-09 21:00:16 -05:00
Some checks failed
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 5s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 6s
wai-audit collector and player integration / does this change touch it (pull_request) Successful in 7s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 6s
WAI operation catalogue / does this change touch it (pull_request) Successful in 6s
WAI conformance / does this change touch it (pull_request) Successful in 7s
WAI energy receipts / does this change touch it (pull_request) Successful in 8s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 7s
wai-quantum command line / does this change touch it (pull_request) Successful in 6s
wai-quantum contract / does this change touch it (pull_request) Successful in 6s
wai-quantum CUDA member / does this change touch it (pull_request) Successful in 7s
wai-quantum dataflow member / does this change touch it (pull_request) Successful in 5s
wai-quantum signal processor / does this change touch it (pull_request) Successful in 6s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 7s
wai-quantum editors / does this change touch it (pull_request) Successful in 10s
wai-quantum resource estimation / does this change touch it (pull_request) Successful in 9s
wai-quantum other formats / does this change touch it (pull_request) Successful in 7s
wai-quantum FPGA member / does this change touch it (pull_request) Successful in 6s
wai-quantum HIP member / does this change touch it (pull_request) Successful in 6s
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 7s
wai-quantum OpenQASM reader / does this change touch it (pull_request) Successful in 6s
wai-quantum Metal member / does this change touch it (pull_request) Successful in 7s
wai-quantum npu-cores member / does this change touch it (pull_request) Successful in 5s
wai-quantum neural-processor member / does this change touch it (pull_request) Successful in 7s
wai-quantum OpenCL member / does this change touch it (pull_request) Successful in 8s
wai-quantum on every processor / emulated · armv7-unknown-linux-gnueabihf (pull_request) Successful in 5m45s
wai-quantum on every processor / emulated · aarch64-unknown-linux-gnu (pull_request) Successful in 6m10s
wai-quantum on every processor / emulated · riscv64gc-unknown-linux-gnu (pull_request) Successful in 4m56s
wai-quantum pulse and dynamics / does this change touch it (pull_request) Successful in 6s
wai-quantum for Python / does this change touch it (pull_request) Successful in 7s
wai-quantum error correction and mitigation / does this change touch it (pull_request) Successful in 7s
wai-quantum-qpu / does this change touch it (pull_request) Successful in 6s
wai-quantum extension points / does this change touch it (pull_request) Successful in 7s
wai-quantum service / does this change touch it (pull_request) Successful in 6s
wai-quantum matrix-extension member / does this change touch it (pull_request) Successful in 5s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 5s
wai-quantum on every processor / emulated · powerpc64-unknown-linux-gnu (pull_request) Successful in 7m54s
wai-quantum tensor-engine member / does this change touch it (pull_request) Successful in 7s
wai-quantum on every processor / emulated · loongarch64-unknown-linux-gnu (pull_request) Successful in 8m27s
wai-quantum portable tensor program / does this change touch it (pull_request) Successful in 10s
wai-quantum variational and algorithm library / does this change touch it (pull_request) Successful in 8s
wai-quantum CPU vector units / does this change touch it (pull_request) Successful in 7s
wai-quantum verdicts and repairs / does this change touch it (pull_request) Successful in 6s
wai-quantum views in agent hosts / does this change touch it (pull_request) Successful in 9s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 7s
WAI Studio / does this change touch it (pull_request) Successful in 5s
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 9s
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 8s
wai-web wasm32 / does this change touch it (pull_request) Successful in 5s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 7s
wai-quantum on every processor / emulated · s390x-unknown-linux-gnu (pull_request) Successful in 10m51s
wai-quantum on every processor / emulated · i686-unknown-linux-gnu (pull_request) Successful in 10m18s
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Successful in 15m50s
wai-quantum on every processor / emulated · sparc64-unknown-linux-gnu (pull_request) Successful in 16m57s
WAI conformance / fast integer kernels, every x86_64 kernel set (AVX-512 silicon) (pull_request) Successful in 4m9s
wai-quantum HIP member / member · HIP (framework-128gb) (pull_request) Successful in 1m31s
wai-quantum npu-cores member / member · npu-cores, neural processor (framework-128gb silicon) (pull_request) Successful in 1m29s
wai-quantum OpenCL member / member · OpenCL GPU (framework-128gb) (pull_request) Successful in 25s
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Successful in 17s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 12m14s
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Successful in 21s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 3m10s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 11m13s
wai-quantum CUDA member / member · CUDA (thor) (pull_request) Successful in 2m4s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (thor) (pull_request) Successful in 49s
wai-audit collector and player integration / collector · linux (pull_request) Successful in 1m8s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 2m47s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Failing after 6m34s
WAI operation catalogue / the catalogue and every door · linux (pull_request) Successful in 7m12s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 2m4s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 29s
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Successful in 24m43s
WAI conformance / faces from keypoints under wasm32-wasip2 (wasmtime) (pull_request) Successful in 5m43s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 10m55s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 12m3s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 43s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m46s
wai-quantum command line / command line · linux (pull_request) Successful in 4m54s
wai-quantum contract / the policy is linked, and the deprecations page reads (pull_request) Successful in 11s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 9m33s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 15m53s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 1m34s
wai-quantum contract / API compatibility · linux (pull_request) Successful in 4m20s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 9s
wai-quantum command line / command line · macos (pull_request) Successful in 1m50s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 1m53s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 2m45s
wai-quantum contract / schemas and the committed tool lists · linux (pull_request) Successful in 6m27s
wai-quantum other formats / the set under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m20s
wai-quantum resource estimation / estimation and calibration · linux, release (pull_request) Successful in 1m42s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 4m46s
wai-quantum OpenQASM reader / corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 46s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 2m20s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 20s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 33s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 35s
wai-quantum OpenQASM reader / reader and corpus · linux (pull_request) Successful in 3m32s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 5m18s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs under wasm32-wasip2 (wasmtime) (pull_request) Successful in 50s
wai-quantum other formats / readers, writers and the set · linux (pull_request) Successful in 6m28s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 54s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs · linux, release (pull_request) Successful in 2m49s
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Successful in 17s
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (pull_request) Successful in 53s
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (pull_request) Successful in 2m25s
wai-quantum for Python / python · linux (pull_request) Successful in 2m43s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 16s
wai-quantum editors / editors · linux (pull_request) Successful in 10m5s
wai-quantum editors / editors · macos (pull_request) Successful in 1m18s
wai-quantum Metal member / member · Metal (macos) (pull_request) Successful in 33s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 16m43s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 20m16s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Successful in 2m56s
wai-quantum extension points / the registry and the example · linux (pull_request) Successful in 4m55s
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Successful in 1m2s
wai-quantum service / service · linux (pull_request) Failing after 5m45s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 30m24s
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Successful in 1m25s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 20m11s
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Successful in 33s
wai-quantum for Python / python · macos (pull_request) Successful in 3m34s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 6m3s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 12s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 6m41s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 20m59s
wai-quantum service / service · macos (pull_request) Successful in 4m8s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 36s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 4m22s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 25m7s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (pull_request) Successful in 1m41s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 13s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 14m19s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 17s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 20s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 16s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 37s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 26s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 9m45s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m22s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Successful in 1m51s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 18m51s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 18s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 1m52s
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Successful in 3m27s
wai-quantum views in agent hosts / views · a scripted host (pull_request) Successful in 5m36s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Successful in 5m21s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 59s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m54s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m45s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m3s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m31s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 9m1s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m26s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 17m13s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m18s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 16m53s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m55s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 2m1s
wai-quantum service / service energy · linux packages (pull_request) Successful in 2m18s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 52s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 18m56s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m47s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 56s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 5m16s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 47s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m17s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 3m5s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 19m9s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 26m13s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m28s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 39s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m31s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m10s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 28s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 3m9s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 21m2s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m35s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 4m20s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h43m9s

Pull request closed

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!648
No description provided.