open-standards/.github/wai-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 5eb38ff836
All checks were successful
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 21s
wai-app and Create / wai-app · does this change touch it (push) Successful in 21s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 25s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 26s
wai-sink-swift native sink package / does this change touch it (push) Successful in 19s
wai-quantum for JavaScript / does this change touch it (push) Successful in 32s
WAI Studio / does this change touch it (push) Successful in 20s
wai-ledger service / does this change touch it (push) Successful in 1m10s
wai-fleet service / does this change touch it (push) Successful in 1m11s
wai-key-proxy / does this change touch it (push) Successful in 1m12s
wai-audit collector and player integration / does this change touch it (push) Successful in 1m24s
WAI operation catalogue / does this change touch it (push) Successful in 1m24s
wai-sink-android native sink library / does this change touch it (push) Successful in 1m10s
wai-quantum studio and desktop / does this change touch it (push) Successful in 1m11s
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 4m39s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 4m58s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 7m3s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 14s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 13s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 1m2s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 2m3s
wai-ledger service / service · linux (push) Successful in 2m3s
wai-quantum for JavaScript / javascript · linux (push) Successful in 4m18s
wai-fleet service / service · linux (push) Successful in 2m47s
wai-key-proxy / proxy · linux (push) Successful in 2m48s
wai-audit collector and player integration / collector · linux (push) Successful in 5m2s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 6m37s
wai-quantum studio and desktop / studio · browser (push) Successful in 9m9s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 12m17s
WAI Studio / Studio in WebKit · linux (push) Successful in 11m47s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 10m38s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 16m1s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m32s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 6m49s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 8m59s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 10m33s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 3m23s
wai-ledger service / service · macos (push) Successful in 2m42s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 8m25s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 18m46s
wai-fleet service / service · macos (push) Successful in 3m27s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 4m58s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 12m24s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 17m11s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 17m37s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 7m15s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 15m40s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 7m14s
wai: marks and highlight reels — a lead's shots, chapters, break candidates and clips derived from its stage index, and a reel each sink assembles for its own viewer
packaging §8.11 registers the record `wai.delivery.marks` (`wai-pack-marks`): a lead's shots (the
pieces that follow a cut of wai.pack.scenecut/1, as its stage index flags them), its chapters
(titled spans, each beginning at the start of the piece its instant falls in), its break
candidates (piece starts a cue began, a chapter begins at or a cut precedes, none inside a clip)
and its clips (the run of whole pieces each moment of the policy covers). They are a pure function
of the lead's stage index, the effective policy and the chapters a packager is given; the index is
held to the policy by digest, so the cuts' thresholds are the policy's, and its moment bits must be
§8.1's. A verifier holding the index and the policy derives them again and compares byte for byte
(`marks-mismatch`); a policy whose threshold differs from the one the index was cut under is
refused (`marks-policy`). They are written as one canonical JSON document, a WebVTT file using
chapter title text, EXT-X-DATERANGE tags of three WAI classes after an EXT-X-PROGRAM-DATE-TIME,
and DASH EventStreams of the scheme tag:transaction.science,2026:wai/marks, each read back to what
it was written from; a reader refuses what its writer would not write (`marks-vtt`, `marks-hls`,
`marks-dash`). Texts read: WebVTT CRD 2026-05-20, draft-pantos-hls-rfc8216bis-22 §4.2 and
§4.4.5.1, and ISO/IEC 23009-1:2026's MPD schema (PeriodType, EventStreamType, EventType, example
G9). The reference packager does not yet write marks into a package.

sink-predicate §9 registers `wai.delivery.sink_reel` (`wai-sink-reel`): a source's signed reel
predicate naming a programme's marks by digest, each reel a list of candidate clips with the tags a
viewer must follow to want each, the regions each is shown in and its caps. A sink assembles each
reel from its own location, exposures and interests (the tags its viewer follows, held on the
device; unidirectional-delivery §2 names the class), takes in order the candidates its interests
want, shown at its location, uncapped and fitting the reel, and presents them in the programme's
order. Nothing about the viewer leaves the device; a reel predicate holding a member that would send
something is refused `predicate_needs_report`. A candidate may want only tags its clip's record
carries (`reel_clip_mismatch`); a sink's log naming a clip with no record in the marks is refused
`reel_clip_unknown`, one presenting a clip its interests do not want `reel_not_wanted`.

The references are wai-rs's `pack_marks` (feature `pack_marks`) and `sink_predicate::reel`
(feature `sink_reel`). The corpora are pack-conformance/marks/ (33 derivations, 18 documents, 26
forms; the indexes of its two fixture cases hold the pieces scenecut/1 cuts the scene-cut corpus's
frames into) and live-conformance/sink-reel/ (49 reel predicates, 22 evaluations, 17 logs).
marks_verify.py and sink_reel_verify.py, their second implementations, agree on every case;
marks_verify.py recomputes the fixtures' cuts from their frames under the policy's thresholds; they
fail every mutated copy (11 of 11, 14 of 14) and catch every weakened verifier (24 of 24, 28 of 28).
Twenty-three faults planted in the references each fail their tests: a threshold changed in the
policy accepted, a fixture's cut moved, a forced piece counted as a shot, a cut inside a clip
offered, a cue inside a clip passed over, a chapter begun off its piece, moment bits, the plan
digest and a live window unchecked, a quoted title, an unescaped WebVTT title, the HLS reader not
held to the writer, DASH events renumbered, a mismatched document verified; and for reels, a reel or
a log naming a clip with no record, a sink without interests wanting every clip, the source's order
presented, exposures not carried across reels, a report member read, the wrong signing domain, a
want the clip's record does not carry, and a reel assembled outside its span.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-10 15:54:41 -05:00
..
corpora wai: integer neural fields, wai.field.int_grid: a scene the sink computes 2026-11-09 17:18:42 -05:00
verifiers wai: marks and highlight reels — a lead's shots, chapters, break candidates and clips derived from its stage index, and a reel each sink assembles for its own viewer 2026-11-10 15:54:41 -05:00
baseline.json wai-conformance starts on a change to joule-ui-catalogue, the crate wai-app now links 2026-11-07 03:10:33 -05:00
README.md wai conform relay --suite moqt holds a relay to the MOQT interop cases, pq joins the verifier suites, and wai conformance gen writes a corpus by its generator 2026-11-08 14:44:52 -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:. Its corpus's independent verifier is an independent: line, <name> <area> [needs=<packages>] [verdicts=<file>] [dir=<dir>] python3 [-I] <script> <args>, the command line its README gives, run in wai/ by the job's one step wai conform --independent and never by the body; wai-rs/build.rs reads 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 of cargo-classes (corpus:, order:, bin:, dir:), and written by it through wai conformance gen --suite <corpus>: its gen mode, or the modes gen: names in order (none where the tool writes nothing and the corpus's README says what does). wai-rs/build.rs reads these files for that command's table, and a dir: that names no corpus fails the build.
  • 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.