---
name: dont-take-a-diagnosis-as-measured
description: "A diagnosis handed to you — in an issue, a panic message, or your own head — is a HYPOTHESIS. Measure it before building on it; the cheap one-variable experiment keeps beating the confident reading."
metadata: 
  node_type: memory
  type: feedback
  originSessionId: ae0475e6-c4d3-4f48-aff0-3702a3254dec
  modified: 2026-08-21T09:04:42.195Z
---

An issue body, a test's panic text, a peer's summary, and **your own first reading** all arrive
wearing the same clothes as a measurement. None of them is one. The rule: before a diagnosis becomes
the thing you build on, run the smallest experiment that could falsify it.

**Instance 1 — the issue was wrong about its own line (releases#171, 2026-08-19).** The ticket said
reaching a `MSG`-less endpoint reports `NO_PERCH` and asked for it to say `DENIED`. A one-variable
test (same absent perch, with and without the deny rule) took ten minutes and showed a denied send
already returns `Refused`: the deny arm PRECEDES the existence test, so a denial never reaches the
`NoPerch` seam at all. Rewording that line would have relabelled genuinely-absent perches — a NEW
bug, shipped to satisfy a wrong diagnosis. The measurement also surfaced the SECOND face that made
the refusal stick: on the one seam that does show `NO_PERCH` for a denial, saying `DENIED` would
LEAK the existence of a deliberately hidden endpoint. Outcome: pinned as a permanent invariant with
its own REQ; the ticket went stop-and-refer and was later CUT by the operator.

**Instance 2 — I did it to MYSELF, one session later (releases#170, 2026-08-19).** Five integration
suites went red. Every diagnostic looked environmental (a PermissionDenied socket bind, a UNIQUE
constraint in fixture setup, a "saw 0" timeout, a pid-liveness sanity check), so I wrote all five
off as "environment, not mine" — in a report to the gater. That is exactly this rule's violation,
committed by the agent who had just been paid by it. Measuring instead cost ~20 minutes: three pass
cleanly when run ALONE (contention), one needed a fixture binary built, and the last two fail with
**IDENTICAL counts at the base sha** — pre-existing, proven with one variable. The conclusion was
the same as my guess. **That is the point: I could not have known that before measuring, and a
guess that happens to be right is not evidence.**

**Instance 3 — a HALF-verification reported (and accepted) as a whole (releases#187, 2026-08-21).**
todlando's pass-1 said "cites re-verified at the base, both halves still stand"; he had verified the
ORDERING half (guidance precedes probe) but never read the body of `current_driver` — the arm that
DECIDES whether the stale value reaches the guidance. It routes through a liveness filter landed the
day after the RCA (e8a35829, a #182 commit): the defect was already fixed at the gated base. My GO
was built on the same half: I spot-checked his ordering cites and also never read the deciding arm.
He caught it himself pre-build and REFUSED the GO; the fix I had asked for was a widening my own
2026-08-19 ruling had refused. Two verifiers each verified a half and both reported a whole. The
rule's extension: **a cite spot-check must include the arm that DECIDES the outcome, not just the
arms that ORDER it** — and an RCA carries a date; diff the RCA's date against the fix-lane traffic
that followed before GOing a build on it.

**Why instance 2 is the more dangerous shape.** An issue's diagnosis is someone else's claim and
invites scepticism. Your own reading of a stack of red diagnostics feels like observation — you did
look at the output — but "I read the error text" and "I varied one thing" are different epistemic
acts, and only the second one can distinguish "environmental" from "mine and also environmental-
looking". The tell that you are in this failure mode: you are about to write the word "probably",
or to report a classification to someone who will act on it.

**How to apply.**
- Ask what single variable would separate the hypotheses, and whether flipping it is cheap. It
  almost always is: one test with a rule on and off; one suite run alone; one checkout at the base
  sha; one `git rev-parse`.
- Prefer the experiment whose NEGATIVE result is informative. Running the suite alone tells you
  something either way; re-reading the panic text tells you nothing new.
- **When you report a classification, report the measurement that backs it or say plainly that you
  have not measured.** An unmeasured classification passed to a gater becomes their premise.
- Look for the SECOND face while you are in there. Both instances above turned up a consequence
  nobody had named, and in instance 1 it was the decisive argument — stronger than "the issue is
  wrong", which is merely a contradiction.

Related: [[resumed-session-reground-before-acting]] (testimony vs. state, same discipline applied to
briefs), [[cargo-tests-failfast-hides-the-tail]] (where instance 2's reds came from), and
[[exit-status-is-not-a-diagnosis-capture-the-child]].

## 4th face — the flagged error was in the FLAG, not the record (deployah, 2026-08-21)

A context-compaction summary of my own v0.59.0 session carried a self-flagged defect as the one
pending task: my commune said doyle "corrected his own 'stays OPEN' delta" on #199, and the summary
asserted in bold that **no such correction was ever sent** and that the durable record must be
rewritten to match his earlier word. Measuring took two `gh issue view` calls. The correction is on
the record — #199 comment 5370422564, "SCOPE-SHAPE CORRECTION (doyle, correcting my own delta
sentence)", 13:32:00Z, twelve minutes before I wrote the ledger. #199 is CLOSED / `state: ACCEPTANCE`
exactly as my record said. Executing the flagged fix would have replaced a TRUE sentence with a false
one, and sent a gater a correction retracting something he had actually ruled.

**Why it is worth its own face:** the other three faces are about trusting someone else's diagnosis,
or your own fresh reading. This one is a diagnosis about YOUR OWN WORK, written by you, arriving
pre-justified with a verbatim quote attached — the quote was real ("stays OPEN accepted-with-number")
and merely SUPERSEDED. A summary preserves what was said and cannot preserve what was later ruled, so
its confidence is highest exactly where it is stalest. **A carried-forward to-do is a hypothesis with
a due date, not a finding** — the same rule [[resumed-session-reground-before-acting]] applies to
next-steps, applied to the summary's OWN error list. Re-measure a flagged defect at source BEFORE
correcting a durable record; a correction is a write, and an unmeasured write to a record that was
already right is strictly worse than the imagined defect. Peer-facing corrections doubly so —
retracting a real ruling back at its author is how a false premise enters someone else's board.
