### Learned-image codec family — decoders implemented and validated

- The reference crate now decodes the full conditional-entropy family
  natively, not just the factorized baseline: **`wai.neural.mbt2018_mean`**
  (mean-scale hyperprior, Gaussian-conditional), **`wai.neural.elic`**
  (checkerboard spatial context), **`wai.neural.mlicpp`**
  (channel-autoregressive multi-reference), and the integer-exact
  **`wai.neural.int_synth`** (all-integer transposed-conv synthesis — a
  decode that is bit-identical on every machine *by construction*, the
  first capability that can soundly back `intent=replicate` cross-hardware).
  The rANS + entropy decode live in `wai-rs`; the analysis/synthesis nets
  are sink-supplied ONNX.
- **Current-SOTA entries added as live routes:** `wai.neural.mlicv2`
  (MLICv2/v2+, the current SOTA learned image) and `wai.neural.cmic`
  (Content-Aware Mamba) both decode through the multi-reference core —
  their entropy model is the same channel-slice + checkerboard structure;
  the gains live in their sink-supplied transforms.
- **Validation against the reference codec.** `bmshj2018` and
  `mbt2018_mean` are checked byte-for-byte against pretrained CompressAI
  models (reconstruction matches to within final-layer float rounding);
  `elic`/`mlicpp` are checked end-to-end against minimal CompressAI-
  compatible models; `int_synth` against a constructed integer model.
  Surfacing this also caught (and the spec now documents) a real
  determinism hazard: a learned codec's entropy decode desyncs unless the
  encoder and decoder compute the scale buckets with the *same* model —
  float drift between two implementations of `h_s` flips bucket
  assignments and corrupts the stream.

