- relay, a kind of its own, with the suite moqt in the live area: the new corpus moqt-conformance/cases.json lists the eight interop test cases and wai-receipts, each with the drafts it is a test at, so a record names its corpus by digest. joule-moq-interop runs each case against the relay's moqt:// or https:// URL at --draft 22, 18 or 16, and its TAP version 14 is read as the cases: ok passes; not ok, TODO, no point, exit 127 or a timeout fails; a skip passes only at a draft the case lists no test for. The client is found as wai dev finds its daemons (WAI_MOQ_INTEROP_BIN, beside wai, PATH). The record's adapter is command, its impl the client's command line with the URL and draft, its files the client. - joule-moq-interop closes every session's endpoint and waits it idle after each test: run a test a process, it exited before the CONNECTION_CLOSE left, the relay kept the dead publisher's namespace, and subscribe-before-announce and announce-subscribe failed against wai-relay at every draft. Now every case passes at 22, 18 and 16 over QUIC and at 22 over WebTransport. - verifier pq: pq-conformance case by case, each case given as the corpus with it alone; its independent verifier pq_verify.py now has its verdicts file in its # independent: line. - wai conformance gen --suite <corpus>[,...] [--verify] [--bin-dir <dir>] (conformance.generate, maintainer toolset): build.rs reads .github/wai-conformance/corpora/*.txt into the table of generators, and a corpus file whose dir: names no corpus, or whose bin: is no [[bin]] of wai-rs, fails the build. The files gain gen: where a tool's generator is not its gen mode (pin, staged-measure; oer: none). One cargo build serves every tool a run names. - wai-breaking.yml runs the new tests with pq_signatures, pq_verify.py through wai conform beside the claim, JWP and signer verifiers, and the reference relay at each draft, every record admitted. Co-Authored-By: Claude Opus 5.5 <[email protected]>
3.1 KiB
What wai-conformance.yml runs, one file a step
wai-conformance.yml keeps no hand list of its verifier steps, corpora or kernel tests. Its
lists are derived, when it runs, from the files here and from tags in the test files, by
scripts/wai-conformance-lists.py, whose
docstring states every key; its gate reads the steps' paths: through
scripts/pr-touches-paths.py. A change that adds a verifier, a corpus or a kernel test adds
a file, or a line to a file of its own, and edits no line of the workflow, unless a step's
paths: names a file under none of the trigger's paths (check names it). Its features and
[[test]] entries in wai/wai-rs/Cargo.toml stay shared
(wai/CONTRIBUTING.md).
verifiers/<name>.sh: one step of theindependent-verifiersjob. Its body is the step's shell, run inwai/(orworking-directory:) withbash -eo pipefail, as a workflow step runs. Its header, the leading# key: valuelines, givesstep:(its name),order:(steps run in ascending order, a tie by file name),features:(each list compiles alone infeatures-alone, and every feature joinsWAI_FEATURES), and where it needs themalone:,build: pq,release-features:,bins:,pq-bins:,paths:(the extension texts it reads, which the workflow's gate then runs on) andworking-directory:. Its corpus's independent verifier is anindependent:line,<name> <area> [needs=<packages>] [verdicts=<file>] [dir=<dir>] python3 [-I] <script> <args>, the command line its README gives, run inwai/by the job's one stepwai conform --independentand never by the body;wai-rs/build.rsreads the binary's table of independent verifiers from these lines. A file with such lines and no body is a declaration: its verifiers run in that step alone. Prose comments follow the header, after a#line.corpora/<name>.txt: one cargo-class corpus, verified by its own tool on every leg ofcargo-classes(corpus:,order:,bin:,dir:), and written by it throughwai conformance gen --suite <corpus>: itsgenmode, or the modesgen:names in order (nonewhere the tool writes nothing and the corpus's README says what does).wai-rs/build.rsreads these files for that command's table, and adir:that names no corpus fails the build.- A test file of
wai/wai-rs/tests/whose first line is// wai-conformance: int-kernelsruns in the fast integer kernels' steps of both profiles (int-kernels-release: the release step only;int-kernels-amd: the AVX-512 host too). The steps' features are the tagged tests'required-features. baseline.json: the lists the workflow kept by hand before they were derived. The repository checks require every derived list to hold every entry of it, and every step it names to run.
To see what the workflow runs: python3 scripts/wai-conformance-lists.py dry-run (of another
commit: --ref <commit>; two of them diff line by line). To run one step as CI does:
python3 scripts/wai-conformance-lists.py run --only <name>. To check the files:
python3 scripts/wai-conformance-lists.py check.