---
name: duration-over-a-timeout-is-not-a-stretch
description: "A duration exceeding a known deterministic timeout by ~a normal run is a path that TOOK the timeout, not a slow path — subtract the constant before ever calling it a stretch"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: ce69296f-597d-40b9-ac2f-8ebdca841a43
  modified: 2026-08-19T20:34:30.158Z
---

A failing run at **33.650s** against the same cell's **3.530s** passing run looked like a 10×
stretch, so I called it one. `RECONNECT_WINDOW` is `Duration::from_secs(30)` (`rc.rs:2444`).
**33.650 − 30 = 3.650s. Residual against the passing run: 0.120s.** It was a normal-speed run that
spent a deterministic timeout — never a slow run at all.

**Why:** I built the framing on a bare duration comparison (slow case vs fast case) and made it the
HEADLINE of a specimen packet, so it propagated as the thing to explain. Three agents hunted load
because of it: doyle recorded an x40 ER sweep as a candidate contributor, I recorded my own release
build contention, todlando began recording heavy-process counts before and after every run in a
battery for me, and hertz spent **92 runs** (12 quiet, 16 simultaneous, four x64 waves) plus a 500ms
H1 gap probe killing the load hypothesis. One subtraction would have refuted it before any of that
started. The truth was product-side: a missing terminal `Exit` classified as EOF ⇒ `PumpEnd::Severed`,
which *deterministically* spends the 30s window before `ReconnectGaveUp`.

**How to apply:** before calling any duration a stretch, find the timeouts on that path and subtract
them. The discriminator is **subtraction against the constant**, never comparison against the fast
case — those two look identical and answer different questions. Tell: a residual that lands within
noise of a normal run means a timeout was spent, and the question becomes *what failed to arrive*,
not *what ran slowly*.

Two corollaries earned in the same window:

- **A timeout-spent failure and a resource-starvation failure are different KINDS, not merely
  different signatures.** This is why load could not reproduce it at any level — hertz's set included
  a **34.957s PASS**, same duration class as the fail, opposite verdict, which proves duration was
  never the variable. It is also the sharper reason the cell's `FLAKE-LEDGER` entry (a 240s
  starvation timeout) did not cover it: I refused the match on signature and was right for a weaker
  reason than the real one. See [[golden-respin-test]].
- **Naming a mechanism in a dispatch narrows it.** doyle's referral trigger said "the product's
  reconnect grace", which mapped to one hypothesis; the confirmed product-side candidate was a
  different one (broker suppressing `KIND_EXIT` unless waiter status is `Ok`). A dispatch that names
  a mechanism rather than a SIDE can send a product defect back through a test lane.

Same family as [[a-predicate-without-its-tool-is-not-evidence]] and
[[stale-carried-forward-sentence]] — a number carried forward as a characterization rather than
re-derived at the point it drives a decision.
