WAI dev and the relay close a WebSocket cleanly; Quantum Studio opens its course from a link #533

Closed
dcharlot wants to merge 4 commits from wai/relay-ws-close-drain into main

2026-10-29

Transaction Science
Two tests held to what they test: a set's items less their paths, Ctrl+Enter by its entry
Some checks failed
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (pull_request) Successful in 2m27s
wai-quantum for Python / python · linux (pull_request) Successful in 2m32s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 17s
wai-quantum service / service · linux (pull_request) Successful in 2m14s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 2m40s
wai-quantum OpenQASM reader / reader and corpus · linux (pull_request) Successful in 5m55s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 19s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 51s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 18s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 49s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 3m25s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 30s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 2m44s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m14s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Failing after 2m46s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Successful in 1m49s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 4m49s
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Successful in 2m32s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 59s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 15m37s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m35s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m55s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 15m2s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 6m13s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 5m3s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 10m7s
wai-quantum views in agent hosts / views · a scripted host (pull_request) Successful in 10m40s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 11m22s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 58m1s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 15m0s
- wai-quantum engine::sets: "the same set runs to the same bytes, less the wall
  clock" stripped each item's elapsed_ms and receipt but kept its Merkle path.
  A path's sibling leaves digest the other items' results, elapsed_ms included,
  so two runs whose items took different times gave different paths, as on a
  loaded linux runner (#533, sets.rs:556: the second path hash differed). The
  path goes too; verify() still checks it against the root.
- Quantum Studio's browser test: after Ctrl+Enter it waited for the run button
  and an idle status, which can both hold before the run has begun, and then
  counted the history. It now waits for the history's new entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 08:18:57 -04:00
Transaction Science
wai dev: the relay's tunnel half-closes and reads the client's last bytes
Some checks failed
WAI energy receipts / energy receipts · linux (pull_request) Failing after 10m34s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m7s
wai-quantum service / service · macos (pull_request) Successful in 1m59s
wai-quantum studio and desktop / studio · browser (pull_request) Failing after 4m8s
wai-quantum for Python / python · macos (pull_request) Successful in 2m22s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 7m39s
wai-quantum views in agent hosts / views · a scripted host (pull_request) Successful in 3m22s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 4m18s
wai-quantum for Python / python · linux (pull_request) Successful in 7m10s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 16m53s
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Successful in 7m12s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 10m52s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 5m14s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 12m10s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 18m17s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m0s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 10m11s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 8m37s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 9m27s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 5m17s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 17m59s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m0s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 11m32s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 27s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 22m6s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m17s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m16s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 6m49s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 44m15s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 58m45s
wai dev's origin tunnels /moq to the relay. When the relay ended its side, the
tunnel shut the client's socket both ways at once (and the relay's when the
client ended first). A browser's WebSocket Close, sent right after its
CLOSE_SESSION, was then still unread, and a socket shut with the peer's bytes
unread is reset, not closed. WebKit reports the reset ("WebSocket connection to
ws://…/moq failed: Socket is not connected"): WAI Studio's "no console error"
check failed in WebKit on macOS after its pre-call test (no error after leaving
the room, one after the pre-call test).

Each side's end now goes on as a half-close. After the relay's end the tunnel
reads on (discarding what can no longer go to the relay) until the client ends
its side, or for at most 2 s. A relay that does not end its side after the
client has gone is shut after 5 s.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 07:01:59 -04:00
Transaction Science
joule-moq-relay: a closed session's pipe is read until the peer ends it
When a session closed (the peer's WT_CLOSE_SESSION, or this end's), the mux's
reader stopped reading at once; the writer then sent its Close and the socket
went. A browser sends its WebSocket Close right after its CLOSE_SESSION, so
that frame was still unread when the socket was shut, and a socket shut with
unread bytes is reset rather than closed. WebKit reports the reset on the
console ("WebSocket connection to ws://…/moq failed: Socket is not
connected"), which failed WAI Studio's "no console error" check in WebKit on
macOS after its pre-call test (which opens the relay's binding, waits for
SETUP and closes). Counted per step: no error after leaving the room, one after
the pre-call test.

The reader now reads on after the close, discarding, until the peer ends the
pipe or for at most 2 s, so the closing handshake finishes and the socket
closes cleanly.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 06:57:24 -04:00
Transaction Science
Quantum Studio: #course opens the circuits course; llms.txt lists the site's pages
- Quantum Studio: `#course` in the page's address opens the Course pane, and
  `#course=<lesson>` opens it at that lesson; it goes with `#qasm=…`. A test
  opens `/#course=bell` and finds the pane open at the Bell lesson, with no
  console error. Both READMEs say so.
- The generated llms.txt (and llms-full.txt) list the quantum IDE, the
  interference course and WAI's home beside the console and Quantum Studio,
  and say the Studio's course opens from `#course`. The site's sync no longer
  needs to add them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 06:57:00 -04:00