open-standards/wai/changes
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 79a94d3d94
All checks were successful
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 21s
wai-ledger service / does this change touch it (push) Successful in 11s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 22s
wai-audit collector and player integration / does this change touch it (push) Successful in 24s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 37s
WAI operation catalogue / does this change touch it (push) Successful in 23s
wai-quantum for JavaScript / does this change touch it (push) Successful in 16s
wai-quantum for Python / does this change touch it (push) Successful in 26s
wai-quantum studio and desktop / does this change touch it (push) Successful in 25s
wai-quantum views in agent hosts / does this change touch it (push) Successful in 25s
wai-sink-android native sink library / does this change touch it (push) Successful in 16s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 1m26s
wai-sink-swift native sink package / does this change touch it (push) Successful in 27s
WAI Studio / does this change touch it (push) Successful in 29s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 1m29s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m29s
wai-quantum editors / does this change touch it (push) Successful in 1m19s
wai-quantum command line / does this change touch it (push) Successful in 1m20s
wai-fleet service / does this change touch it (push) Successful in 1m20s
wai-quantum contract / does this change touch it (push) Successful in 1m21s
wai-quantum docs, course and locales / does this change touch it (push) Successful in 1m20s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m51s
wai-ledger service / service · macos (push) Successful in 1m59s
wai-ledger service / service · linux (push) Successful in 2m13s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 2m28s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 1m12s
wai-quantum for Python / python · macos (push) Successful in 2m52s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 53s
wai-quantum for JavaScript / javascript · linux (push) Successful in 3m46s
wai-audit collector and player integration / collector · linux (push) Successful in 4m15s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 32s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 6m2s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 5m1s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 5m53s
wai-quantum views in agent hosts / views · the page and its engine (push) Successful in 4m17s
wai-quantum contract / the policy is linked, and the deprecations page reads (push) Successful in 7s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 6m20s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 5m51s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 5m49s
wai-quantum views in agent hosts / views · a scripted host (push) Successful in 4m52s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 1m43s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 6m58s
wai-quantum editors / editors · macos (push) Successful in 1m28s
wai-quantum for Python / python · linux (push) Successful in 7m31s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 8m20s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (push) Successful in 10s
wai-fleet service / service · macos (push) Successful in 36s
wai-quantum studio and desktop / studio · browser (push) Successful in 8m5s
wai-quantum command line / command line · macos (push) Successful in 3m7s
wai-fleet service / service · linux (push) Successful in 2m20s
wai-quantum contract / API compatibility · linux (push) Successful in 5m10s
wai-quantum editors / editors · linux (push) Successful in 3m37s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 6m28s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 10m45s
wai-quantum docs, course and locales / the course and the command line's languages · linux (push) Successful in 3m50s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 11m58s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 13m1s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 11m2s
wai-quantum contract / schemas and the committed tool lists · linux (push) Successful in 7m43s
WAI Studio / Studio in WebKit · linux (push) Successful in 12m22s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 16m5s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 17m44s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 16m14s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 16m24s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (push) Successful in 17m39s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 11m45s
wai-quantum command line / command line · linux (push) Successful in 33m47s
wai_pq_vectors fits Windows' 1 MiB main-thread stack: the hybrid key's ML-DSA key on the heap, and the conformance leg's 8 MiB link flag gone
wai_pq_vectors verify, in the debug build the conformance workflow runs, stopped with
STATUS_STACK_OVERFLOW on Windows (6ca202b8a), and the corpus step's Windows leg was linked with
an 8 MiB main-thread stack to pass. The cause is in wai's own code, not in RustCrypto's: a
pq_sig::HybridKey held its ExpandedSigningKey<MlDsa65> by value, about 47 KiB (the matrix and
vectors in the NTT domain), and an unoptimised build gives every key a function makes or moves
a slot of its own. corpus::logs makes and moves dozens; under ulimit -s on the Framework the tool
needed more than 3.3 MiB of main-thread stack, and gdb at the overflow found that one frame past
1 MiB on its own. The key now holds the expanded key in a Box: logs' frame is 32 KiB, and the
tool needs about 0.75 MiB, most of it ML-DSA's key generation in the crate's own unoptimised
frames (SigningKey::from_seed, 270 KiB), which wai cannot shrink. The keys, the signatures and
the corpus are the same bytes: wai_pq_vectors verify regenerates vectors.json byte for byte and
every case reaches its verdict at ulimit -s 1024, and the pq_sig library tests and
tests/pq_signatures.rs pass. A thread with a stack of its own would have hidden the frame, not
removed it, and left every other caller of the library with it.

The 8 MiB link flag comes out of wai-conformance.yml. It was a stand-in for this fix, and kept, it
would hide from the Windows leg any other tool or test that outgrows the 1 MiB a user's build of
it gets on Windows, which is what that leg is there to see; it also gave the corpus step rustc
flags no other step has, so cargo compiled every crate of the step again. The workflow's comment
now says the tools run on each platform's own main-thread stack.

tests/pq_signatures.rs ran its generation and verification on a 64 MiB thread. It now gives them
1 MiB, what Windows gives a main thread, so an unoptimised build that outgrows it fails on every
leg, not on Windows alone. With the key planted back by value, that test fails (stack overflow).

On cbio-device-0000 (Windows x86_64, pwsh 7, debug builds linked with the platform's default
1 MiB main-thread stack, no RUSTFLAGS): main's wai_pq_vectors verify stops with
STATUS_STACK_OVERFLOW (0xC00000FD); with this change it passes, and with its stack reserve set
lower by editbin it still passes at 768 KiB and stops at 704 KiB, as under ulimit on Linux. The
corpus step as the workflow runs it (wai-conformance-lists.py corpora --verify, python3 from a
venv as the leg makes it), without the flag, passes every corpus there, pq-signatures among
them. On the Framework, the pq_sig library tests, synthesis::pq_tests and tests/pq_signatures.rs
pass as the hybrid-signatures step runs them; wai breaking against main finds no break.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-10 03:20:49 -05:00
..
2026-11-05-job-service-writes-program-for-task.md wai-quantum-service: POST /v1/write and write_circuit, a program written for a task on the service's own model 2026-11-09 20:59:46 -05:00
2026-11-06-wai-quantum-cli-energy-estimate.md wai-quantum: an energy ceiling held by a live reading, and the command line can give one 2026-11-09 17:42:46 -05:00
2026-11-06-wai-quantum-planner-under-a-contract.md wai-quantum: an energy ceiling held by a live reading, and the command line can give one 2026-11-09 17:42:46 -05:00
2026-11-09-audience-decisions-and-territories.md wai: audience decisions and territories — blackouts decided from a location aggregated in the session, and where a publisher may be shown 2026-11-09 19:55:54 -05:00
2026-11-09-command-line-doors-rooms-sessions-logs-priors.md wai: the development room, its logs and sessions, and parameter sets on the command line; the catalogue over MCP, --fields and --features full 2026-11-09 20:06:07 -05:00
2026-11-09-compose-fields-and-conditioned-layers.md wai-web compose: fields and conditioned refinements computed in the page, each stage held to its signed digest 2026-11-09 19:22:49 -05:00
2026-11-09-compose-opus-floor.md wai-web compose: an Ogg Opus piece trimmed to its pre-skip and end 2026-11-09 16:54:46 -05:00
2026-11-09-conditioned-refinement.md wai: a refinement conditioned on side information both ends hold, wai.image.int_cond_refine 2026-11-09 17:50:44 -05:00
2026-11-09-int-neural-fields.md wai: a neural field's levels as refinements, wai.field.int_refine 2026-11-09 17:32:12 -05:00
2026-11-09-quantum-provider-no-price-own-record-failed-cancel.md wai-quantum provider protocol: a billing with no price, a provider's own record of the confirmation, and the cancel of a failed job 2026-11-09 21:32:26 -05:00
2026-11-09-relay-and-quantum-service-answer-metrics.md wai-relay answers /metrics on its control listener, and wai-quantum-service on its API 2026-11-09 20:06:07 -05:00
2026-11-09-release-c-swift-kotlin-images.md wai release: the Maven publication and the images wait for the owner's setup 2026-11-09 18:35:05 -05:00
2026-11-09-sink-predicates-and-per-session-ad-tracks.md wai: sink-evaluated predicates and per-session ad tracks — targeting and frequency caps decided on the sink from its own state, and a session's own ad bound into a room's ad frame 2026-11-09 21:15:45 -05:00
2026-11-09-wai-h-the-c-interface-alone.md wai.h: the header holds the C interface alone 2026-11-09 18:21:14 -05:00
2026-11-09-waism-det-module-probe-jpegai.md wai-det-jpegai: the JPEG AI exact decoder as the float level's module of record, with F1 and F2 on two instruction sets 2026-11-09 18:37:15 -05:00
2026-11-09-whep-gateway-forwards-first-dispatch.md joule-moq-ingest: the WHEP gateway forwards each player the rendition its sink dispatches first 2026-11-09 18:14:21 -05:00
2026-11-10-archive-doctor-first-starts.md archive_doctor.py starts the relay and the room service once before the doctor, so their first start is not the doctor's 6 s 2026-11-09 22:19:35 -05:00
2026-11-10-ci-vulkan-and-riscv.md CI: the integer decoders on Vulkan GPUs, and the golden suite on RISC-V under a pinned emulator 2026-11-09 21:38:51 -05:00
2026-11-10-cli-reader-gone-ends-quietly.md wai, wai-pack and wai-quantum: a reader that stops reading ends the run quietly, as it ends a Unix tool 2026-11-10 03:20:49 -05:00
2026-11-10-conformance-on-windows.md CI: Windows back in the conformance matrix's cargo-class leg 2026-11-09 22:46:07 -05:00
2026-11-10-conformance-records-published.md wai conformance records: CI signs WAI's own per-suite records with WAI's key and publishes them 2026-11-10 03:11:58 -05:00
2026-11-10-determinism-tiers-windows-legs.md determinism-tiers §6: what runs on Windows x86_64 now, and what does not 2026-11-10 03:20:49 -05:00
2026-11-10-energy-shown-as-what-it-is.md wai: a figure shown as what it is; the world page never prints unmetered as zero 2026-11-10 02:19:57 -05:00
2026-11-10-every-test-program-written-apart.md wai-rs tests: every program a test runs is written by a process of its own 2026-11-09 22:50:40 -05:00
2026-11-10-one-command-small-folds.md wai: one command for the rest of the toolchain: audit, serve, quantum, cmcd, receipt create, and every record kind in wai verify 2026-11-10 02:57:54 -05:00
2026-11-10-pack-gpu-kernels-integer-only.md wai-pack-gpu: the packer's kernels held to integer types on naga's IR 2026-11-10 02:09:05 -05:00
2026-11-10-pq-keys-fit-a-windows-main-thread.md wai_pq_vectors fits Windows' 1 MiB main-thread stack: the hybrid key's ML-DSA key on the heap, and the conformance leg's 8 MiB link flag gone 2026-11-10 03:20:49 -05:00
2026-11-10-quantum-service-tests-bind-their-own-ports.md wai-quantum-service's tests: each service binds its own port, the pid 1 test runs only where the kernel makes its namespaces, and the long checks fit the host 2026-11-09 22:36:05 -05:00
2026-11-10-settle-kernel-refuses-unsupported-grade.md wai/changes: the settle kernel's source changes acknowledged for wai breaking 2026-11-10 02:30:19 -05:00
2026-11-10-sink-profiles-what-platforms-give.md energy-measurement §6.3, §9.3, §9.4: what a Linux, Android and iOS sink can read 2026-11-10 02:21:59 -05:00
README.md Changelog entries and the conformance workflow's lists move into files a change adds 2026-11-05 01:41:29 -05:00

Changelog entries, one a file

A change to WAI adds its changelog entry here, as a file of its own, and does not edit the head of ../CHANGELOG.md. Two changes' entries are then two files, and the changelog no longer makes the two changes conflict, unless both pick one name (below).

  • The name is <yyyy-mm-dd>-<slug>.md: the date the entry is written, then a few words of its title, lowercase, joined by hyphens (2026-11-04-pin-by-default.md). Two changes that pick the same name collide as files, which git reports, and one of them renames its file.
  • The content is exactly the entry the changelog holds, in its form: a ### title line, a blank line, and the entry's text (bullets, paragraphs, **Breaking:** lines), with no other heading outside a code block, and one newline at the end.
  • A break is acknowledged here as in the changelog: wai breaking reads the lines a change adds to these files as it reads the lines it adds to CHANGELOG.md, so a **Breaking:** line naming the finding's id in backticks passes it.
  • A release runs python3 scripts/changelog-assemble.py --write from the repository's root: every entry goes to the head of ## Unreleased, newest date first and, within a date, by file name, and the files are removed. Without --write it prints the section it would write; --check checks every file.
  • The check. scripts/check-changelog-fragment.py, in the repository checks, fails a pull request that changes anything under wai/ and adds or edits no entry file here. A file goes directly in this directory: one in a subdirectory fails, since the assembler and wai breaking read only this one. A change with nothing for the changelog to say ends one of its commit messages with the trailer line Changelog: none, exactly, in the message's trailer block (its last paragraph, after a blank line, beside any other Key: value trailers). A release's change, which renders these files and removes them, passes.
  • The transition. A pull request opened before the check reached main passes as it is, with an edit of CHANGELOG.md or with no entry at all. One opened since that adds its entry to the head of CHANGELOG.md's Unreleased section fails, and is told to add the file here instead. The check reads when the pull request was opened from the event payload. It reads when the check reached main from the first-parent history of the pull request's base: the committer time of the first commit there whose tree holds the check, which is the merge that brought it in. Until the check is on main, every pull request counts as opened before it.