name: WAI conformance # WAI's load-bearing claim is bit-exact reconstruction on every machine, # no tolerance parameter. This workflow enforces it mechanically: every # cargo-class corpus — and the one neural decoder that can make the same # promise, the integer-synthesis path (i64-only, no float ONNX) — is # re-derived on a four-platform matrix (x86-64 + arm64 across Linux, macOS, # Windows) and must reproduce its frozen BLAKE3 hashes; and the integer # byte-equality goldens (rANS / int_synth / JPEG-AI mANS, generated once on # a reference machine) must decode identically everywhere. All of it is pure # Rust (no C codec chain, no ONNX Runtime), so the matrix needs no system # dependencies. on: push: branches: [main] paths: - 'wai/wai-rs/**' - 'wai/*-conformance/**' - 'wai/byte-exact-conformance/**' - '.github/workflows/wai-conformance.yml' pull_request: paths: - 'wai/wai-rs/**' - 'wai/*-conformance/**' - 'wai/byte-exact-conformance/**' - '.github/workflows/wai-conformance.yml' defaults: run: shell: bash jobs: cargo-classes: name: cargo-class corpora · ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: # Both architectures across all three OS families. x86_64 is covered # by ubuntu-latest + windows-latest, arm64 by ubuntu-24.04-arm + # macos-latest — what matters for the Fx integer floor is the arch, # not the OS. The deprecated Intel-Mac runner (macos-13) is omitted: # it adds no arch coverage and its hosted runners are scarce. os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] steps: - uses: actions/checkout@v5 - name: Rust 1.96.0 run: rustup toolchain install 1.96.0 --profile minimal && rustup default 1.96.0 - name: Build the cargo classes (pure Rust, no C codec chain) working-directory: wai/wai-rs # neural_int joins the pure-Rust set: the integer-synthesis decoder is # i64-only (no ONNX, no float), so it carries the same bit-exact promise # and is checkable on this matrix with no ONNX Runtime present. run: cargo build --no-default-features --features world,audio_scene,haptic,splat4d,score,provenance,neural_int,film - name: Library unit tests (the fixed-point determinism floors) working-directory: wai/wai-rs run: cargo test --lib --no-default-features --features world,audio_scene,haptic,splat4d,score,provenance,neural_int,film - name: Carriage conformance — every registered capability round-trips byte-exact working-directory: wai/wai-rs run: cargo test --no-default-features --test carriage - name: Every cargo-class corpus reproduces its frozen hashes working-directory: wai/wai-rs run: | set -euo pipefail F=world,audio_scene,haptic,splat4d,score,provenance,neural_int,film v() { echo "::group::$1"; cargo run -q --no-default-features --features "$F" --bin "$2" -- verify "$3"; echo "::endgroup::"; } v worlds wai_world_vectors ../world-conformance v spatial-audio wai_audio_vectors ../audio-conformance v haptics wai_haptic_vectors ../haptic-conformance v state-feeds wai_feed_vectors ../feed-conformance v avatars wai_avatar_vectors ../avatar-conformance v volumetric wai_splat4d_vectors ../volumetric-conformance v score wai_score_vectors ../score-conformance v int-synth wai_int_synth_vectors ../neural-conformance v film wai_film_vectors ../film-conformance byte-exact: name: cross-arch byte-equality · ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: # Both architectures across all three OS families. x86_64 is covered # by ubuntu-latest + windows-latest, arm64 by ubuntu-24.04-arm + # macos-latest — what matters for the Fx integer floor is the arch, # not the OS. The deprecated Intel-Mac runner (macos-13) is omitted: # it adds no arch coverage and its hosted runners are scarce. os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] steps: - uses: actions/checkout@v5 - name: Rust 1.96.0 run: rustup toolchain install 1.96.0 --profile minimal && rustup default 1.96.0 - name: Integer rANS + int_synth + JPEG-AI mANS goldens (one machine → every machine) working-directory: wai/byte-exact-conformance run: cargo test --release