# Negative-evidence entry template

<!-- REFERENCE COPY — do not edit this file. Copy the row block below into the
     working ledger at docs/evidence/NEGATIVE_EVIDENCE.md. -->
<!--
  Anti-ceremony (CHECKLIST.md A12):
  - Consumer: the next agent, who must not relitigate what this one disproved.
  - Gate: B4/A5 — every falsified hypothesis banked with a retry predicate; the hook lints every row.
  - Defect class: unbaked rejections relitigated forever; void rejections mistaken for dead levers (frankenscipy: 56.2% of audited REJECTs were void).
  - Delete when: superseded by a machine ledger schema (none in this kit; keep this file).
-->
Copy the block below into `docs/evidence/NEGATIVE_EVIDENCE.md` for every
falsified hypothesis, rejected lever, or dead end. The point is not the
format; the point is that the next agent does not relitigate what this one
already disproved.

## YYYY-MM-DD — VERDICT: one-line summary
- **Bead:** <bead id>
- **Surface:** <subsystem/area>
- **Hypothesis:** <what you believed before the measurement>
- **A/B:** <measured ratio vs baseline, with units>
- **A/A null:** <same-invocation null control result, or VOID-<class> if none>
- **Verdict:** KEEP | REJECT | SURVEY | UNKNOWN | RESURRECTED
- **Retry predicate:** <testable condition for re-attempting — never "later">
- **Lesson:** <one line: what the next agent should remember>

Rules:
- Every REJECT row must carry a retry predicate — never "later". (frankensearch)
- A REJECT without a measured same-invocation null control is VOID, not a
  result; record the class of the missing evidence. (frankenscipy)
- Verdicts: KEEP (shipped), REJECT (disproved, with retry predicate),
  SURVEY (explored, no verdict), UNKNOWN (inconclusive — say why),
  RESURRECTED (a prior REJECT overturned by new evidence; link the old row).

---

## Filled example (real suite case)

## 2026-07-25 — RESURRECTED: BDF exact-diagonal Newton solve
- **Bead:** perf-campaign-20260725 (fleet meta-lever audit)
- **Surface:** linear solve / Newton preconditioning
- **Hypothesis:** exact-diagonal BDF Newton preconditioning beats the incumbent on stiff solves
- **A/B:** 97.68–109.37× vs baseline
- **A/A null:** same-invocation null control, measured
- **Verdict history:** REJECT (killed by the old cv gate) → VOID-CV on the resurrection audit → RESURRECTED as CAMPAIGN-WIN after the gate was rewritten (docs/OPTIMIZATION_PROTOCOL.md, "Rewritten 2026-07-25")
- **Retry predicate:** n/a — shipped; future regressions re-run with the same-invocation A/A null before any new REJECT is allowed
- **Lesson:** the earlier rejection was void because the measurement/gate could not detect the effect — the harness was rejected, not the lever

Origin: frankenscipy docs/LEDGER_RESURRECTION.md §§1–6. The fleet audit found
56.2% of audited REJECT rows were void; three wins were resurrected, this one
the largest.
