# Case study 3 — the caught false-accept (comrak, class 3) **This is the most important case study in the project, because it is the one where the machine got it wrong and the process caught it.** ## What happened `phase2-comrak-010`: the unattended agent, reading comrak's cache-sim profile, saw that AST-arena teardown at process exit — `drop_in_place::>>>` plus its share of the glibc free path — cost real instructions and cache misses in a run-to-completion CLI. Its hypothesis: comrak already ends in `process::exit`, so the OS reclaims memory in bulk anyway; wrap the arena in `std::mem::ManuallyDrop` to skip the per-node drop walk, and add a `std::hint::black_box(&arena)` before the scope closes so the leak stays reachable and a leak checker won't flag it. The pipeline ran it: - Upstream tests: **PASS** - Golden replay: **byte-identical** - Interleaved A/B: **+10.7% median, 95% CI [+7.9%, +12.1%]** - Verdict: **`accepted`** A clean, large, CI-significant win. And it was **wrong**. ## The audit overturned it Phase 2 runs a **100% human audit** of every accepted win (SPEC §10). The audit ran the sanitizers the pipeline had not: LeakSanitizer flagged a **384-byte arena chunk as unreachable at exit**. The agent's `black_box(&arena)` keeps the arena live only until its scope *closes* — but `process::exit` runs *after* that scope, so at the moment of exit the arena is genuinely unreachable. A real leak. The agent's own hypothesis had even named the risk ("if the sanitizer still flags the leak, rejected-gates is the honest outcome") — the pipeline simply had no sanitizer gate to trip, because in Phase 2 ASan/LSan were a per-attempt *manual* step. Called per SPEC §10: a **pipeline false accept**, caught by audit **before anything shipped**. The win was never banked. Shipped false accepts across the entire project remain **zero**. ## The fix made the machine enforce the tier The corrective action was not "be more careful." It was structural: `verdict` now **builds the patched tree with ASan+LSan (ASan+UBSan for C/C++) and runs the pinned workload on every would-be accept**, capping any sanitizer-flagged win at `needs-human-review`. The tier rule SPEC §8 always specified is now enforced by the machine, not the auditor. The very next Rust accept (`phase2-tokei-008`) and the first C accept (`phase3-cjson-002`) both passed through this automated gate. The 10k-input differential fuzz on the overturned patch found **0 divergences** — the output equivalence was genuinely real. Only the teardown-leak tier was wrong. That is the subtle failure mode the layered gates exist for: a change can be behaviorally equivalent on output and still unacceptable on a dimension the bench and the golden replay can't see. ## What it demonstrates The product is not "an agent that finds speedups." The product is **trust** — and trust is demonstrated most by the case where the optimistic path failed and the structural controls held. An agent graded only by accept-rate would have banked this win. The ledger is append-only, so the `accepted` row still stands, immutable — with this document as the permanent corrective record beside it.