open-standards/wai/changes/2026-11-10-conformance-on-windows.md
Transaction Science 6ca202b8a8
All checks were successful
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 13s
joule-moq-remote host agent / joule-moq-remote · 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 21s
wai-audit collector and player integration / does this change touch it (push) Successful in 13s
wai-fleet service / does this change touch it (push) Successful in 26s
wai-sink-android native sink library / does this change touch it (push) Successful in 29s
wai-quantum studio and desktop / does this change touch it (push) Successful in 38s
wai key · Windows / does this change touch it (push) Successful in 45s
wai-app and Create / wai-app · does this change touch it (push) Successful in 46s
wai-sink-swift native sink package / does this change touch it (push) Successful in 18s
wai-ledger service / does this change touch it (push) Successful in 46s
wai-quantum for JavaScript / does this change touch it (push) Successful in 46s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 54s
WAI Studio / does this change touch it (push) Successful in 15s
WAI operation catalogue / does this change touch it (push) Successful in 47s
wai-fleet service / service · macos (push) Successful in 46s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 1m8s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 1m32s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m45s
wai-ledger service / service · macos (push) Successful in 1m19s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 1m46s
wai-audit collector and player integration / collector · linux (push) Successful in 1m45s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m32s
wai-fleet service / service · linux (push) Successful in 2m28s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 2m42s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 4m36s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 4m34s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 5m7s
wai-ledger service / service · linux (push) Successful in 5m5s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 6m27s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 6m2s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 6m47s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 6m58s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 7m59s
wai-quantum for JavaScript / javascript · linux (push) Successful in 7m57s
wai-quantum studio and desktop / studio · browser (push) Successful in 9m10s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 9m46s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 11m6s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 11m48s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 18m32s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 10m0s
wai key · Windows / wai key and the toolchain's tests · windows (push) Successful in 2m30s
WAI Studio / Studio in WebKit · linux (push) Successful in 40m4s
CI: Windows back in the conformance matrix's cargo-class leg
wai-conformance.yml's cargo-class matrix has its windows leg again (cbio-windows, a host
runner, out since 2026-09-30). The leg was run by hand on cbio-device-0000 first, three
times. Each run wrapped every step as act_runner wraps a pwsh step (the wrapper read from
a script the runner wrote there) and ran it on a real checkout under the host's
core.autocrlf=true. The last run was from a fresh checkout of this commit. What it found:

- pwsh fails a step on its last command's status alone. An early cargo failure in a
  two-command step passed it (exit 0). So the bare steps of two commands chain them with
  `&&`, which sh, bash and pwsh 7 all read, and the pwsh steps of more than one command
  set $PSNativeCommandUseErrorActionPreference. The two bash steps that would have run on
  Windows (under WSL there) are bare steps now.
- `python3` on that host is the WindowsApps alias, which runs no Python. The leg puts a
  venv of the host's Python first on the PATH, with its launcher copied to python3.exe.
  Rust's Command starts only an .exe, and wai mcp's conformance_run spawns python3.
- The checkout turned the corpora's LF into CR LF, and the fields corpus's re-derived
  vectors.json then differed from the committed one. wai/.gitattributes now keeps every
  *-conformance/ tree unconverted, as it already kept four, and the browser demo's
  int_synth copies, which tests/int_synth_ops.rs holds to the corpus byte for byte.
- Two tests assumed a Unix checkout or tool. catalogue's verb-list test now reads its
  texts as lines, and cli_app copies a project with std::fs, not `cp -R`. Both still
  pass on Linux (the Framework).
- wai_pq_vectors overflows Windows' 1 MiB main-thread stack in its debug build
  (STATUS_STACK_OVERFLOW). It passes linked with 8 MiB, as Linux's default gives, so the
  corpora step links with that on the Windows target alone. The workflow states that this
  is a stand-in for a fix of the tool.

The byte-exact job's stale comment now points at wai-byte-equality.yml, which holds the
Windows byte-equality leg.

Planted faults, each caught by hand on cbio-device-0000, using the job's own step scripts
under the runner's wrapper with the first command made to fail: Install Rust (Windows),
the floor, the wai http, and the agents steps. The floor step without `&&`, as it was
before this change, passed with the same fault.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 22:46:07 -05:00

16 lines
1.4 KiB
Markdown

### The conformance matrix runs on Windows x86_64 again
- **`wai-conformance.yml`**'s cargo-class matrix has its `windows` leg back: the build, the
library's tests, the fast-kernel steps in both profiles, the carriage, floor, `wai http`, agent,
Create, world, staged, C ABI, signer-id and key-log tests, and every cargo-class corpus against
its frozen hashes. A step of two commands chains them with `&&`, and a pwsh step of more than one
sets `$PSNativeCommandUseErrorActionPreference`, so a command that fails stops its step there, as
`sh -e` does on the other legs. That runner's `python3` is an alias that runs no Python, so the
leg puts the host's own Python first on the PATH under that name. The corpus tools there are
linked with an 8 MiB main-thread stack, as Linux gives one: `wai_pq_vectors`' debug build needs
more than the 1 MiB Windows gives. Byte equality on Windows stays with `wai-byte-equality.yml`.
- **Line endings.** A checkout under `core.autocrlf`, as that runner's is, turned the corpora's LF
into CR LF, and a corpus whose `verify` re-derives its `vectors.json` then found it changed:
`.gitattributes` now keeps every `*-conformance/` tree, and the browser demo's byte copies of
the `int_synth` corpus, unconverted. `catalogue`'s verb-list test reads the texts it compares as
lines, and `cli_app`'s copies a project with the standard library rather than `cp`.