# Cross-architecture byte-equality conformance for WAI's integer-exact paths. # # Deliberately a SEPARATE tiny crate: it #[path]-includes the pure-integer # sources from wai-rs (rans.rs, int_synth.rs — single source of truth, no copy) # so it compiles with NO system codec libraries and NO ONNX runtime. That is # what lets the CI matrix run it on every OS/arch in about a minute, proving # the `replicate` determinism contract on real silicon rather than asserting it. [package] name = "wai-byte-exact-conformance" version = "0.1.0" edition = "2024" rust-version = "1.97" license = "Apache-2.0" publish = false # The included wai-rs sources carry `cfg(kani)` items (set only by the model # checker in wai-verify). Declared so this crate's builds do not warn on it. [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ["cfg(kani)"] } [dependencies] serde = { version = "1", features = ["derive"] } serde_json = "1" sha2 = "0.10" # The integer operator set the included decoders run their networks through # (`wai-rs/src/int_ops.rs`, included at the crate root). no_std, no dependencies. wai-ops = { path = "../wai-ops" } [features] # wai-rs's test-only switch for the integer decoders' direct decodes (`int_synth::legacy`), # declared so the included source's `cfg` names a known feature. The goldens here decode # as a sink does, through the integer operator set; the crate's own tests compile the # direct decode's unit tests under `cfg(test)`. legacy_int = [] # wai-rs's features for the splat and audio decoders (`int_splat`, `int_audio`), which # this crate always includes: on by default, so the included sources' tests that need # them run here too. splat_int = [] audio_int = [] # wai-rs's feature for the 32-bit forms of the stage operators (E9's by identity), which # the goldens below decode `WIV1` and `WIR1` through on every leg of the matrix as well: # the arithmetic a 32-bit fabric runs, held to the same digests. On by default. i32_forms = ["wai-ops/i32_forms"] default = ["splat_int", "audio_int", "i32_forms"]