open-standards/.github/wai-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science f3cfb2ecf1 wai-module-check: WebAssembly's specification tests in CI, from a pinned copy; R12's reason and the custom-section row
spec-tests/ holds test/core's scripts at a named commit, under their Apache-2.0
licence, unpacked by a script that checks the digest first. spectest now fails on
what it only used to print, and the step runs it and the differential on them.

R12's reason said the rule kept a checker small. It doesn't: R2 comes first, so a
checker holds a full validator anyway. The rule stands, for what a sink's engine
runs. The custom-section row now says the identifier is the section's contents.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-06 18:25:56 -05:00
..
corpora Changelog entries and the conformance workflow's lists move into files a change adds 2026-11-05 01:41:29 -05:00
verifiers wai-module-check: WebAssembly's specification tests in CI, from a pinned copy; R12's reason and the custom-section row 2026-11-06 18:25:56 -05:00
baseline.json Changelog entries and the conformance workflow's lists move into files a change adds 2026-11-05 01:41:29 -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

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 the independent-verifiers job. Its body is the step's shell, run in wai/ (or working-directory:) with bash -eo pipefail, as a workflow step runs. Its header, the leading # key: value lines, gives step: (its name), order: (steps run in ascending order, a tie by file name), features: (each list compiles alone in features-alone, and every feature joins WAI_FEATURES), and where it needs them alone:, build: pq, release-features:, bins:, pq-bins:, paths: (the extension texts it reads, which the workflow's gate then runs on) and working-directory:. Prose comments follow the header, after a # line.
  • corpora/<name>.txt: one cargo-class corpus, verified by its own tool on every leg of cargo-classes (corpus:, order:, bin:, dir:).
  • A test file of wai/wai-rs/tests/ whose first line is // wai-conformance: int-kernels runs 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.