Some checks failed
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
no-vanity-metrics / WAI public text names no comparison (pull_request) Successful in 3s
no-vanity-metrics / WAI public text names no company or product (pull_request) Successful in 3s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m57s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m23s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m12s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m10s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 3m37s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 23s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 3m51s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 13s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 2m13s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 46s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 1m7s
wai formal verification (integer core) / kani (pull_request) Successful in 4m26s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 1m1s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Successful in 1m15s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 57s
WAI section references / cited sections exist (pull_request) Successful in 11s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 3m51s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 1m43s
standards workspaces build + test / jouleclaw-rs (pull_request) Has been cancelled
standards workspaces build + test / aac-rs (pull_request) Has been cancelled
standards workspaces build + test / arl-rs (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (pull_request) Has been cancelled
standards workspaces build + test / joule-ui-rs (pull_request) Has been cancelled
standards workspaces build + test / joulecontract-rs (pull_request) Has been cancelled
standards workspaces build + test / jouledesk-rs (pull_request) Has been cancelled
standards workspaces build + test / joulehook-rs (pull_request) Has been cancelled
standards workspaces build + test / map-rs (pull_request) Has been cancelled
standards workspaces build + test / mesh-rs (pull_request) Has been cancelled
standards workspaces build + test / openpay (pull_request) Has been cancelled
standards workspaces build + test / sense-rs (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Has been cancelled
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Has been cancelled
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
- SPEC §8 gains *Completing a registration*: a revision may complete the registration of a WAI-native string whose row named a decoder and fixed no byte layout by pinning one; envelopes carrying another form become non-conforming, still parse, and are listed in §5; "fixed forever" starts at the pin. SPEC §5, integer-payloads.md §1 and §11, REGISTRY and the CHANGELOG cite it, no longer say the pin redefines nothing, and say that wai.neural.int_hyper's and wai.video.int_hyper's rows named their decoders only. - integer-payloads.md §8: a refusal of the payload or of the set against it is final; set_incomplete, not_dispatchable and unsupported_capability route as SPEC §4 routes a capability the sink cannot decode. The neural sink now moves on to the fallback (WAI1) or the next entry (WAI2) when the build has no decoder for the capability, as it does for set_incomplete. - SPEC §4 and jwp-receipts §7.9 name int_payload::resolve as a place check 5 runs. The CHANGELOG says what JSON the deprecated JSON entry points now refuse, flags the breaking API changes (neural::Decoded gains Int and is non_exhaustive; ParamSource and IntParams), and names the integer capabilities instead of counting them. - The int_hyper demo says it decodes the export tool's debug JSON. - Tests: the WIV1/WIA1/WIS1 equivalence tests say what they compare, and video_nk is anchored to the FNV-1a hashes recorded before this revision; the preflight's hyper-latent case now exceeds the parser's cap and says so. CI runs the conformance workflow on an edit of integer-payloads.md. Test: neural_native_decode::an_integer_capability_without_a_decoder_moves_on_to_the_fallback (added to the neural gates step). Co-Authored-By: Claude Opus 5.5 <[email protected]>
58 lines
3.9 KiB
HTML
58 lines
3.9 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>WAI — integer-exact conditional codec, in-browser</title>
|
||
<style>
|
||
:root { --bg:#06080c; --bg2:#0d1117; --border:#1e2736; --text:#e6edf5; --text2:#8b99ad; --text3:#4a5568; --g:#00e5a0; --w:#f0b429; --mono:'JetBrains Mono','SF Mono',Menlo,monospace; }
|
||
* { box-sizing:border-box; margin:0; padding:0; }
|
||
body { background:var(--bg); color:var(--text); font-family:var(--mono); padding:24px; }
|
||
h1 { font-size:15px; letter-spacing:.04em; margin-bottom:4px; } h1 em { font-style:normal; color:var(--g); }
|
||
.sub { font-size:11px; color:var(--text2); margin-bottom:14px; max-width:880px; line-height:1.5; }
|
||
code { color:var(--w); }
|
||
canvas { background:#04060a; border:1px solid var(--border); border-radius:10px; display:block; image-rendering:pixelated; }
|
||
.hud { display:flex; gap:22px; margin-top:10px; font-size:11px; color:var(--text2); flex-wrap:wrap; }
|
||
.hud b { color:var(--text); } .hash { color:var(--g); }
|
||
#badge { font-size:12px; padding:4px 12px; border-radius:99px; display:inline-block; background:var(--bg2); color:var(--text2); border:1px solid var(--border); margin-top:10px; }
|
||
#badge.ok { background:rgba(0,229,160,.12); color:var(--g); border-color:rgba(0,229,160,.5); }
|
||
#badge.bad { background:rgba(255,107,107,.12); color:#ff6b6b; border-color:rgba(255,107,107,.5); }
|
||
.note { margin-top:14px; font-size:10.5px; color:var(--text3); max-width:880px; line-height:1.55; }
|
||
.note b { color:var(--text2); }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<h1>WAI <em>integer-exact conditional codec</em> — in-browser, no ML runtime</h1>
|
||
<p class="sub">
|
||
This tab decodes the export tool's debug form of a <code>wai.neural.int_hyper</code> bitstream
|
||
(<code>cond_bitstream.json</code>; the payload an envelope carries is <code>WIH1</code>, which
|
||
<code>decodeWih1</code> reads): a factorized side-stream <code>z</code> and the
|
||
Gaussian-conditional main stream <code>y</code>, both rANS-coded. It decodes them to RGB with the
|
||
<b>same pure-i64 Rust</b> that decodes natively, compiled to wasm32 — <b>no onnxruntime-web, no WebGPU,
|
||
no float anywhere</b>. The <i>whole</i> path is integer: factorized <code>z</code> → integer
|
||
hyper-decoder → integer-σ entropy bucketing → integer synthesis. Because of that (the integer-entropy
|
||
contract) the reconstruction is byte-identical on every machine, so the page re-checks its FNV-1a against
|
||
the hash the native reference produced — a pretrained learned codec verified client-side, no server.
|
||
</p>
|
||
<canvas id="c" width="512" height="512"></canvas>
|
||
<div id="badge">loading model…</div>
|
||
<div class="hud">
|
||
<span>image <b id="dims">—</b></span>
|
||
<span>bitstream <b id="bits">—</b></span>
|
||
<span>quality <b id="psnr">—</b></span>
|
||
<span>decoded hash <b class="hash" id="got">—</b></span>
|
||
<span>native hash <b class="hash" id="want">—</b></span>
|
||
</div>
|
||
<p class="note">
|
||
<b>Why the whole decode is integer:</b> a float learned codec's entropy decode can desync on ~1e-5 of
|
||
cross-platform drift in the scale σ, so its output is reproducible only on the same build.
|
||
<code>int_hyper</code> is the pretrained mbt2018_mean mean-scale hyperprior, post-training-quantized to
|
||
integer (CI requires its decode within 1 dB of the same model's float decode on a pinned test
|
||
photograph), and its entire decode is integer, so the hash above is portable: this browser, a native
|
||
sink, and the conformance corpus all produce the same bytes. The wire carries only the bitstream (its
|
||
size is shown above); the model is the installed codec. <b>Note:</b> the model files are large (PTQ weights) and not committed —
|
||
generate them with <code>tools/wai_sota_int_synth_export.py</code> into <code>demo/int_hyper/</code>.
|
||
</p>
|
||
<script type="module" src="int_hyper.js"></script>
|
||
</body>
|
||
</html>
|