D2c M5: wai.neural.int_mlicpp decodes through wai-ops/1 (wmb1/1), goldens unchanged; the direct guard leaves production #273
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/d2c-m5"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
D2c M5:
wai.neural.int_mlicpp(theWIM1payload, theWMB1bundle) decodes through the integer operator setwai-ops/1, lowered bywmb1/1, with every golden unchanged.Stacked on #271 (
wai/bounds-pass-speed, still open): this branch starts from it and uses its loaded-network path (whm1_net_loaded). Until #271 merges, this PR's diff also shows #271's commits.origin/main(#270, outsidewai/) is merged in.What changes
int_mlicpp::decode, and soint_payload::decode_int, the neural sink and every sink that decodes through them, now runs the bundle's three networks through their loweringwmb1/1(integer-operators §13.4):h_s,entropy, theng_swith the RGB8 step, each bywhm1/1, loaded underacc64with its certificate. The driver keeps integer-payloads §14's order:ztables and each network's layer geometry (the direct decode's checks, unchanged);model.wmb);ops::fit: input channels, caps, output shape);zstream,h_s's graph, then for each slice and pass the entropy graph onconcat(y, hyper)withy0 where not yet decoded, the σ/μ split, the bucket and the symbol; theng_s's graph.int_mlicpp::check,hyper_latent,latent), and keept2,lenientandfinal_only(O7): a symbol decoded after a stream ran out is still decoded and fed to the passes after it, and the refusal comes at the end.int_mlicpp::legacy, test-only (legacy_int).run_net_checked,check_layerandigdn_checkmove into the test-onlyint_hyper_synth::legacy, beside the direct decodes that call them.run_netanddecode(the world renderer's unchecked path) stay for M6.opsmember{acc64, full, wmb1/1, rans64 t2/lenient/final_only, bucket ceil};registry/capabilities.jsonregenerated.wmb1/1and states the refusal codes the decoder reports:payload_malformedfor the payload, its streams and its values, andmodel_mismatchfor a bundle that breaks its rules or does not fit the payload. The section said every refusal waspayload_malformed; the decoder has reportedmodel_mismatchfor its bundle since it was registered, and its tests pin that.Planned breaks (integer-operators §15.3 item 3, SPEC §8)
Each is refused
model_mismatchbefore either stream. No committed bundle or payload is affected (the scan below).The other
WHM1decoders' rules, now for any of the three networks: a bias of magnitude2^63 − 1or more; acheckrange its producer cannot meet; no layer of tag 0, 1 or 2; a headershiftorgfof 128 or more that no layer uses.Four checks the direct decode made only when a network ran, now before the streams, with the same code:
shiftorgfof 128 or more that a layer uses;Where a stream or a value was refused first, the bundle now is.
A convolution whose padded side exceeds
2^26, which the operator set's run-time plan caps (§4, §5.2) and the direct decode's geometry did not.Gates, each red once and restored
950cf1c9entropylowered with the RGB8 stepint_mlicpp_ops: the lowering differs from the committedentropy.whg18dfaec11rqfloor → half_up inwhm1/1int_mlicpp_ops(graph bytes; "differs from the direct decode"); byte-exactint_mlicpp_through_its_lowering_is_golden. The file-based golden stays green before the switchigdnsums first, then shifts onceint_mlicppset survives, under both kernel policies; the audio goldens carry this row, as the test plan predictsopsmemberf67f4818,ba9a0b2b,48286590X_ℓ + 1as the check boundynot yet decoded given one unit in place of 0tests/int_mlicpp.rs7 of 9, both byte-exact goldens, the in-crate round trip01753591,eb174546,3e40a9f7fitcompares the image's sides swapped (only non-square images reach it)fad44132int_opsequivalence tests, 5 ofint_mlicpp_ops1d6f1488rqfloor → half_uptests/int_mlicpp, the conformance vector, both neural-dispatch tests, both byte-exact goldensint_payload_cost: "held 341192; the direct decode held 295424"ce755f2f,bad6baa5Gate 3's end-rule test cuts the committed
ystream at every length. Every cut decodes to the last symbol both ways and is refused at the end.Differential (
tests/int_ops_differential.rs)There was no disagreement in any run. Under a planned break the decode through the operator set refused every time.
yvalue pasti64.int_mlicpp_planned_breaks_are_new_refusals.Memory
WIM1declares no cost (integer-payloads §7), so the decode is held to the direct decode it replaces (tests/int_payload_cost.rs, reference kernels).Timings
The timing harness is scratch and not committed. Release builds, host load 52–68, 9 calls per figure, 3 rounds; every call gave the direct decode's image. Times are medians, in ms.
7ef44f3b, 64×6407e1835d, 32×32, payload coded by the harnessChecks
gate.shon the merged head: GREEN.int_payload_costin both profiles, the pretrained-set step (no skip banner),neural_native_decode,neural_cost_limitandffi_neural_pin,registry export --check,cargo check --libwith each integer feature alone, wai-ops in debug and release,wai-verifyandvectors verify,wai_ops_check.py, and wai-web native and wasm32 (wasm-bindgen 0.2.127). Under Node:verify_int_payload_wasm,verify_int_synth_wasm,verify_int_hyper_wasmandverify_staged_wasm.include/wai.his untouched.Left for M6
run_netanddecode, the world renderer's unchecked path (int_world, wai-web'sint_world.rs).int_hyper_synth::kernel_equivalenceand the convolution dispatchrun_netuses.🤖 Generated with Claude Code
int_mlicpp::ops::{lower, load, Nets}: the three WHM1 networks of a WMB1 bundle lowered by whm1/1 (h_s, entropy, then g_s with the RGB8 step; wmb1/1, integer-operators §13.4) from the networks this crate parses (int_ops::whm1_net), and loaded under acc64 with whm1_net_loaded. tests/int_mlicpp_ops.rs: every committed set lowers to its committed graphs from its bytes and from the parsed networks, the certificate is those graphs', and the load gives its verdict (acc64, not acc32; first acc32 failure h_s's input range, 47 bits for the vector's set as Appendix C predicts, 54 for the synthetic one). Named in both fast-kernel steps of wai-conformance.yml. Co-Authored-By: Claude Opus 5.5 <[email protected]>tests/int_mlicpp_ops.rs: (b) 21 fixtures, one per refusal the direct decode makes in integer-payloads §14's order, each one change from the committed bundle or payload (the header; the bundle against it: z tables, each network's shape, the cap; each stream: too short, a value past i64, run out; each network's ranges); both decodes refuse each with the same code and read the same symbols before it; then the sink's codes for a payload that is not one (payload_malformed) and a bundle that is not one (model_mismatch); the end rule final_only: the y stream cut short by 4 to 64 bytes is decoded alike both ways; where it runs out, every symbol after is still decoded and fed to the passes after it, and the refusal comes at the end; the z stream likewise; (c) the edge of every check range of the committed h_s, entropy and g_s (ten layers; a ReLU reads none): at +-X_l both run alike, at +-(X_l + 1) both refuse. codecs::capability_ops: wai.neural.int_mlicpp = {acc64, full, wmb1/1, rans64 t2/lenient/final_only, bucket ceil}; the registry test lists six capabilities. SPEC §5's row cites integer-payloads §14 and integer-operators §13.4; SPEC §7 names it. CHANGELOG section started. Co-Authored-By: Claude Opus 5.5 <[email protected]>