### Reader limits that bound memory: manifest values, and text decode

Two reader limits join the manifest length limit (SPEC §2, *Reader limits*), and with
them a reader's memory is bounded by what the specification states, not by what an
envelope asks for. `SECURITY.md` listed both as known gaps; it now states the bounds
and the tests that measure them.

- **Manifest values.** A reader need accept no manifest of more than 2²² JSON values,
  the manifest object and every value in it at any depth. The reference readers count
  the values before they build anything, refuse one past the limit
  (`manifest_too_many_values`), and build what they read at the size counted: at most
  128 bytes a value and one a byte on a 64-bit target, where a manifest of small
  values at the length limit took several gigabytes to parse. The stdlib Python
  verifiers refuse the same manifests, and the HTTP corpus holds a case at the limit
  and one past it.
- **Text decode.** A `wai.text.zstd` or `wai.text.xz` payload decodes to at most 2²⁷
  bytes and declares at most 2²⁷ bytes of window or dictionary; a reader may refuse
  more (`text_decoded_too_long`, `text_window_too_large`). The reference decoders
  write into a buffer never sized past the limit, refuse a Zstandard frame that
  declares a longer content size before decoding anything, and give the decoding
  library the window limit, so a declaration past it is refused from the stream's
  header. The reference encoders refuse input past the length limit. The C entry
  points `wai_text_zstd_decode` and `wai_text_xz_decode` are bounded the same way; the
  header gains `TEXT_DECODED_MAX_LEN` and `TEXT_WINDOW_MAX_LEN`.
- **Planned break for writers.** A conforming encoder writes no manifest past the value
  limit and no text payload past either text limit. No committed envelope or vector is
  past any of them, and no digest changes.
- **The codec wrappers in CI.** `wai-conformance.yml` gains `codec-wrappers`, on the
  macOS runner: the wrappers' fuzz smoke, the text decode limits and the C entry
  points, built with `codecs`. The step fails if any of its test binaries ran no test,
  which is what a build without the feature does.

