### `wai.neural.int_hyper` and `wai.video.int_hyper` through the integer operator set

- **The decode.** `int_hyper_synth::decode_conditional_checked` (so the `WIH1` dispatch,
  the keyframe of a `WIV1` with keyframe 1, the staged sink and the browser crate) plans
  both networks as [integer-payloads](extensions/integer-payloads.md) §7 orders, checks
  the payload's shapes against them, lowers `h_s` by `whm1/1` and `g_s` by `whm1/1` with
  the RGB8 step ([integer-operators](extensions/integer-operators.md) §13.2, §13.0),
  loads each under `acc64` with its bounds certificate, decodes the hyper-latent, runs
  `h_s` through the operator set's interpreter, splits its output into `σ` and `μ`,
  decodes the latent against the tables `σ` selects, and runs `g_s`. Every
  convolution, transposed convolution and inverse GDN runs on the fast kernels behind
  the interpreter. The graphs' `check` ranges are the checks the direct decode made
  before each layer, so the same streams are refused (`field_range`). Every committed
  output is unchanged, byte for byte (the conformance vector, the neural-keyframe clip,
  and the pretrained set's image and clip regenerated in `wai-sota-vectors.yml`), and
  every committed refusal fixture keeps its code. The direct decode is kept, test-only
  (feature `legacy_int`), in the differential tests and their nightly run.
- **Planned breaks** (SPEC §8, integer-operators §15.3 item 3), as for
  `wai.splat.int_codec`, in either network: new refusals of sets no committed corpus
  contains, each `model_mismatch` after the payload's shapes are checked and before
  either stream is decoded. A scan of every committed set of the two capabilities, and
  of every committed `WIH1` payload wherever it is carried, finds none affected.
- **The inverse GDN on the fast kernel.** The interpreter now lends an inverse GDN to the
  fast IGDN kernel, as it lends convolutions, wherever the values present keep every
  term and norm within `i128` and the root and output within `i64`, which every
  certified graph does; the splat and audio decodes use it too. Their outputs are
  unchanged.
- **The unchecked decode is removed.** `int_hyper_synth::decode_conditional`, which ran
  both networks with no exactness check, is gone; its callers (the examples, the
  benchmark, the tests and the byte-exact neural-keyframe golden) decode through
  `decode_conditional_checked`, so through the lowering with its `check` ranges, with
  every output equal. The layer-by-layer guard `run_net_checked` stays while
  `wai.neural.int_mlicpp` still runs its networks through it.
- **The tools' JSON models.** The browser crate's debug decode of the tools' JSON
  form now refuses (`model_mismatch`) a JSON model holding a weight past `i16` or an
  inverse-GDN `γ` past `i32`, the widths `WHM1` gives them and its lowering writes;
  the committed models hold none.
- **Their `ops` member in the registry** ([integer-operators](extensions/integer-operators.md)
  §11). `registry/capabilities.json` gives `wai.neural.int_hyper` and
  `wai.video.int_hyper` the member `{"set": "wai-ops/1", "profile": "acc64", "subset":
  "full", "lowering": "whm1/1", "stage": {"rans64": {"table": "t4097", "escape":
  "lenient", "end": "canonical"}, "bucket": "ceil"}}`. SPEC §5's rows cite the payloads
  ([integer-payloads](extensions/integer-payloads.md) §4, and §3 for the clip) and the
  lowering (integer-operators §13.2), and SPEC §7 names both capabilities among those
  that decode through the operator set.

