# ADR-0211: Conformal Falsification Bench

**Status:** Accepted
**Date:** 2026-06-06
**Domains:** `sensorium/environment/`, `evals/environment_falsification/`
**Depends on:** ADR-0198, ADR-0208, ADR-0209

## Context

ADR-0208 established `ObservationFrame` as a deterministic bundle of already
compiled afferent units. ADR-0209 established sensorimotor feedback as afferent
evidence. ADR-0198 established that real motor emission is fail-closed until a
verdict-enforcing efferent gate exists.

The missing contract was falsification: a replayable way to say, "this expected
environmental evidence was or was not observed," without turning observation
frames into fusion, memory mutation, hardware control, or learned truth.

## Decision

CORE will use the Conformal Falsification Bench as a Python-reference replay
contract:

```text
hypothesis / plan
  -> ExpectedObservationFrame
  -> actual ObservationFrame
  -> FalsificationRun
  -> replay-stable report
```

The v1 bench is exact and binary:

- `SUPPORTED` when every expected slot is present with the expected merge key and
  no unexpected slot appears.
- `FALSIFIED` when any expected slot is missing, changed, or accompanied by
  unexpected evidence.

## Contract

- `ObservationFrame` remains afferent-only evidence, not fusion and not a
  mutable world model.
- `ExpectedObservationFrame` and `FalsificationRun` are replay artifacts, not
  learned truth, reviewed memory, or pack mutation proposals.
- v1 verdicts are only `SUPPORTED` and `FALSIFIED`.
- No probabilistic confidence, numeric tolerance, hardware-noise envelope, or
  learned latent is part of the v1 verdict.
- No motor/efferent unit, actuator trace, raw pixel buffer, PCM buffer, event
  payload, decoded action payload, Vault mutation, or `generate/*` dependency is
  allowed in the bench.
- Public API names are stable:
  `ObservationUnitRef`, `ExpectedObservationFrame`, `FalsificationResidual`,
  `FalsificationRun`, `build_expected_observation_frame`, and
  `compare_expected_to_observation`.

## Consequences

The bench gives CORE a falsifiable environmental replay surface before any
hardware, motor, native backend, or learned world model is admitted. Later event
vision, witness-log import, tabletop lab, and motor governance work must feed or
consume this contract rather than bypass it.

## Proof Obligations

- Expected frame hashes are order-invariant and duplicate-safe.
- Raw payloads and efferent units are rejected before traces are built.
- Missing, unexpected, or changed evidence yields `FALSIFIED`.
- Exact matched evidence yields `SUPPORTED`.
- The bench does not import `generate`, mutate Vault, or call
  `ModalityRegistry.decode`.
- `core eval environment-falsification --json` is hash-pinned.
