The switch. int_synth::decode_from_spec (and so decode, decode_bytes, the
int_payload dispatch, the neural sink and the browser crate) decodes through
the integer operator set: the payload checked, the set lowered by int_synth/1,
loaded under acc64 with its bounds certificate, run by the interpreter with the
fast kernels behind it. The direct decode (int_synth::legacy, its serde specs,
conv_transpose2d, reference_output_side and the scalar reference) is behind
cfg(any(test, feature = "legacy_int")). byte-exact-conformance declares
legacy_int; tests/int_synth_ops.rs, which compares the two, requires it.
Every committed output is unchanged: the fast-kernel steps' tests in both
profiles (int_kernels_vectors' corpus under every policy, int_payload,
int_synth_ops, the differential), the int-synth corpus loop, byte-exact's
goldens, and the browser crate's wasm32 decode of the corpus under Node.
The planned breaks take effect. tests/int_kernels_geometry.rs: a stride past
32 bits, an uncropped output past 2^26 (pad 2^12; pad 2^9 still decodes to the
bias) and the u32 and 2^62 fields of the size-overflow case are refused under
every policy and in every build, where the direct decode returned or panicked.
O12 (tests/int_synth_ops.rs): every committed int_synth set has layers, each
with out_ch, k and stride at least 1, fields below 2^32 and a shift of at most
63, and lowers and loads under acc64 (overflow_acc64, the falsification set,
alone fails); every committed payload has a reserved byte of 0, C >= 1, C*S*S
<= 2^26, its exact length, and decodes.
Text: integer-payloads §13 (a non-empty layers list, fields below 2^32,
out_ch, k and stride at least 1; the reference decoder decodes through the
lowering), integer-operators §13.1's load checks (at least one layer, the
32-bit fields, out_ch >= 1), §15.3 (no layers, out_ch 0, a field of 2^32 or
more), its status note, SPEC §8 *Planned breaks*, and the CHANGELOG.
Co-Authored-By: Claude Opus 5.5 <[email protected]>