### `wai.media.exploration`: archives that replay, default-distance, a homogenization meter, and taste as a declared, owned objective

- **The extension** ([exploration](extensions/exploration.md)) registers the record
  `wai.media.exploration`. It builds on the exactness of `wai.generate.spectral`: what elsewhere
  can only be estimated about a generator's outputs is recomputed here.
- **Descriptors.** Six integer derivations over a picture's `RGB8` samples, each from 0 to 1024:
  mean luma, chroma, detail (the mean luma step between neighbours), palette diversity (the
  Gini–Simpson index of a 64-colour quantisation) and the two coordinates of the luma centroid.
  No learned model: they place a picture and judge nothing. A grid of one to four axes bins them
  into niches.
- **Archives.** A generation request may ask for an archive instead of one picture:
  MAP-Elites over a declared grid, through the prompt and up to eight modifiers the person
  declares, run by the pinned schedule `wai-exploration:map-elites/1` from a declared search
  seed. Each elite names its genome (seed, steps, modifier mask) and regenerates; the archive
  replays bit for bit, so an elite dropped or chosen after the fact is refused
  (`archive_replay_mismatch`). The placement rule is `none` (the first trial to reach a niche
  keeps it) or a taste prior.
- **Default-distance.** A prompt's default set is seeds 0 to 15 at four steps. A work's distance
  from it, in descriptors and in samples (0 exactly when the work is a default), is a signed
  `measured` figure for the exact generator, an `estimate` for any other, and `unknown` with
  every figure `null`, never 0.
- **Collection statements.** The descriptor coverage of a grid and the distribution of pairwise
  descriptor distances of a gallery, a room's outputs, a session's candidates or an archive,
  recomputed from the samples.
- **Taste priors.** An integer ranking model over the descriptors (`rise`, `fall`, `near` and
  `far` terms, unsigned throughout), a one-file parameter set pinned as SPEC §3.1 pins one,
  signed by its owner (`taste_not_owner` otherwise) and carrying the owner's `wai.ai.usage`
  statement; a ranking under it reproduces, and states the use it made of the prior, which the
  owner's statement may disallow. Personal and community priors are the same kind of object, and
  none is a default.
- **Disclosure.** Every archive, ranking and pick that an aesthetic or reward model steered names
  it by digest or states `none`. A missing disclosure is reported undisclosed, never `none`; a
  policy may require it (`objective_undisclosed`), and a pick from an archive a prior steered must
  name that prior (`objective_mismatch`). A pick from an archive inherits the elite's genome: the
  slot the contribution record fills to point a `candidates` step at an archive.
- **Reference and corpus.** `wai-rs` feature `exploration` (`src/exploration.rs`), and
  `live-conformance/exploration/`, written from fixed seeds by `wai_exploration_vectors gen`:
  generations that check the generator's restatement, descriptor vectors, archives, distances,
  collections, rankings and picks, accepted and refused at each rule. Checked by
  `tests/exploration.rs` and by `live-conformance/exploration_verify.py`, a second implementation
  that shares no code with `wai-rs`, implements the generator from the extension's Appendix A,
  requires every mutated copy of the corpus to fail and every weakened copy of itself to be
  caught. `wai_exploration_vectors measure` runs an archive against plain seed sampling and
  against uniform sampling of the same genome space at equal compute. The three priors of the
  corpus are written in code with hand-set weights; nothing is trained on anyone's choices.

