# Pre-flight checklist — 18 gates before the first measurement

Binary pass/fail. Any unchecked box is a reason not to start yet.

Version 1.0 · 2026-09-09

---

## Independence (3)

- [ ] **1.** The method was written by someone who is not executing the run.
- [ ] **2.** The reviewer is a different model family, or a different person, from the
      producer — and is named before the run, not chosen afterwards.
- [ ] **3.** If only one reviewer is available, that limitation is written into the method as
      a declared weakness rather than left unstated.

## Freezing (3)

- [ ] **4.** The method document is complete: question, hypotheses, matrix, controls,
      metrics, environment, stop-loss, conclusion limits, dataset, review.
- [ ] **5.** The frozen region is delimited by an explicit line, and the append-only region
      below it is empty.
- [ ] **6.** The frozen region has been hashed and **the hash is recorded in the run log
      before the run starts.** (Hash the region, not the file — the file will grow.)

## Design (5)

- [ ] **7.** The null hypothesis is stated.
- [ ] **8.** Sample size and repeat count are fixed, with the combination rule named.
- [ ] **9.** Cells cannot shadow one another.
- [ ] **10.** The reading table maps every possible observation to exactly one verdict, and
      was written while the results were still unknown.
- [ ] **11.** The verdict enumeration has a value meaning **"no measurement"** that is
      distinct from a bad score.

## Controls and limits (4)

- [ ] **12.** At least one control proves the environment works; at least one proves a
      negative result is genuine.
- [ ] **13.** The validity floor is stated: which control failures void the run.
- [ ] **14.** The validity floor and the stop-loss both say, in words, that **they bind this
      run**.
- [ ] **15.** Environment limits are declared up front, including the sentence stating what
      is *not* being claimed.

## Recording (3)

- [ ] **16.** Every result row will carry run ID, script version, and the full command as
      executed — not an idealised version of it.
- [ ] **17.** The measuring instrument's own version is recorded. If a second application
      receives the output, **its version too** — the receiver is part of the instrument.
- [ ] **18.** Raw outputs will be kept, including those of any aborted attempt.

---

## The three that get skipped

**Gate 6.** "We wrote the method first" is unverifiable without a hash. It takes one command.

**Gate 14.** A stop-loss with no "applies to this run" clause becomes a way to justify
choices made after the results are visible.

**Gate 17.** It is easy to record the version of the thing you are studying and forget the
version of the thing you are studying it *with*. If your metric is "does it open correctly
in another application," an unversioned application makes the result unrepeatable — and any
sentence claiming a specific version becomes unsupported by your own log.
