int_synth + int_entropy are pure i64 (no ort, no float), so the SAME Rust that
decodes natively compiles to wasm32 and runs in the browser with no ML runtime
at all — and the bytes are identical to native on every machine. This is the
integer-entropy contract's payoff made visible: a learned-codec reconstruction
whose hash is portable.
- int_synth: factor the decode into `decode_from_spec(payload, spec_bytes)` (no
std::fs); `decode(payload, path)` now reads the spec and delegates. WASM/no-FS
sinks call the bytes entry point with host-supplied weights. Behavior-
identical (4 int_synth tests green).
- wai-web: add the `neural_int` feature + a `neural_int` wasm-bindgen module:
decodeIntSynth(payload, specJson) -> RGB, the int_entropy primitives
(fixedScaleEdges / quantizeScale / detBuildIndex), and blake3Hex for the
in-page receipt check. Compiles to wasm32 (web + nodejs targets).
- demo: int_synth.html/.js — decode a vector to a canvas and verify its BLAKE3
against the frozen native hash in-page. verify_int_synth.sh +
verify_int_synth_wasm.mjs — reproducible CLI proof.
Verified: all four conformance vectors (incl. the real trained 128×128 photo
model, 21.6 dB) decode in wasm32 byte-identical to the frozen NATIVE corpus
hashes. Deterministic learned-codec decode in-browser, zero JS ML runtime.
Co-Authored-By: Claude Opus 4.8 <[email protected]>