---
name: wrong-direction-refutation
description: "2026-09-06 lesson — I refuted a peer's CORRECT cursor-replay hypothesis by probing the wrong direction (a HIGH out-of-range cursor answers empty; the hazard was a LOW cursor replaying history). Name the direction a hazard runs in BEFORE choosing the probe. Five same-shape overturns that day."
metadata: 
  node_type: memory
  type: feedback
  originSessionId: b634e01e-b25d-4474-9b82-bedb17444913
  modified: 2026-09-06T08:45:48.991Z
---

**What happened (2026-09-06):** a peer proposed that the io-funnel cursor could REPLAY old
communes into the boundary-arming leg. I "tested" it by feeding an out-of-range HIGH cursor,
got an empty answer, and told him the hypothesis was refuted. The hazard ran the OTHER way — a
LOW cursor (after a seq restart) replays history. He was right; my clean answer to the wrong
question was indistinguishable from a clean answer to the right one. Shipped as v0.38.4
([[v0384-commune-frame-replay]]).

Same day, same shape, four more overturned verdicts — all asserting more than I measured, and
always about the thing that had changed most recently:
- Blamed the quotation mask for a boundary that never armed; the mask was innocent.
- Reported four unrequested clears on a peer from four arm lines in a hook trace — an arm line
  says an arm happened, never who asked for it; three were his own communes.
- Offered the legacy marker as a falsifier; refuted.
- Called a gate green off a `pgrep`-based wait loop; `pgrep` does not exist in MSYS, so the loop
  exited instantly on a run still building.

**Why:** a refutation is only as strong as the probe's coverage of the hypothesis. A probe
that exercises one direction of a two-directional hazard reads exactly like one that covers
both. Overturning a peer's correct hypothesis costs more than a wrong hypothesis of my own —
it removes the one person who was looking in the right place.

**How to apply:**
- Before choosing a probe, write down the DIRECTION the hazard runs in (too-high vs too-low,
  too-early vs too-late, absent vs moved) and confirm the probe exercises THAT direction.
- Do not A/B the symptom; replay the input the predicate actually ran on
  (`spt api io-events … --after <seq>`, non-destructive) and read it.
- A line in a trace proves the event it names, nothing about its cause or requester.
- A wait loop must be proven to WAIT (check the tool exists in MSYS) before its exit is a gate.
- When a peer's hypothesis and mine disagree, refute with an instrument whose population I
  have established — see [[v02532-verdict-not-catchall]] and [[list-vs-predicate-assertions]].
