### Load step 8 in closed form

- **The bounds pass.** `wai_ops::bounds` now computes each `conv`'s and `conv_transpose`'s term hull and partial-sum interval ([integer-operators](extensions/integer-operators.md) §8.2) from a few sums per output channel, or per residue for `conv_transpose`:
  - the least and greatest weight;
  - the sums of the positive and of the negative weights. These are kept in `i64` where the tap count times the largest magnitude shows that every partial sum fits, and in `i128` otherwise.

  An `igdn` row now folds in `i128`. These forms give the rule's integers wherever no operation of its fold can saturate. The pass checks that condition: both input ends in `i128` with `l ≤ h`, the result within `±2^255`, and no `i128` overflow. Anywhere else it folds term by term in 512 bits, as before. §8.2 gains an informative note on the closed form. No certificate, verdict, refusal or output changes.
- **The oracle.** The pass as it stood is kept as `wai_ops::bounds_oracle`, test-only; another crate's tests reach it through the `oracle` feature. The two passes must agree node for node, with the same refusals and the same first failures, on:
  - every committed lowered graph and graph vector;
  - the pretrained conditional-codec set, when `WAI_SOTA_INT_DIR` names it;
  - random operators over input intervals the pass never forms (the ends of `i64` and `i128`, up to `2^255`, and `l > h`);
  - random graphs that reach saturation;
  - every graph the integer-operator differential's generators lower (`tests/int_ops_differential.rs`).
- **The lowering and the load.**
  - `Builder::finish` now returns the graph it parsed back from its bytes.
  - `whm1_net_loaded` and `wam1_net_loaded` (new) load that graph without writing and parsing its bytes a second time (`graph::load_lowered`, crate-only). They give `load`'s result, refusal for refusal. The `int_hyper`, splat and audio drivers use them.
  - The `WHM1` and `WAM1` lowerings now move each layer's lists into the graph instead of copying them.
  - The `WHG1` writer now adds a list's bytes at once and stores each value as one array.
  - The pass reads a node's weight range once.
- **SHA-256 on 64-bit Arm.** `wai-rs` now enables sha2's `asm` feature on `aarch64` targets other than Windows. The processor's SHA-2 instructions are used where it has them, detected at run time. The digests are the same, and the wasm32 build is byte-identical. The lockfiles of the workspaces that build `wai-rs` now include `sha2-asm`.
- **Cost.** For the pretrained conditional-codec set, lowering and loading both networks is now a small part of one decode, natively and in wasm32. A decode that loads its set now costs about what a decode that finds it held costs. The browser demo is one such decode: it decodes once per view.

