---
name: an-exhausted-wait-is-a-right-censored-observation
description: "A wait that exhausts its budget proves NOT-OBSERVED-BEFORE-EXPIRY, never ARRIVED-AFTER — delayed, absent and filtered all produce the identical observable, so the latency tail has no measured upper endpoint."
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 7da3035c-261a-44d3-b4eb-c2f746962618
  modified: 2026-09-10T14:35:35.233Z
---

Measured 2026-09-10 (v0.69.0 gate, `spt-daemon::sync two_tier_sync_lands_and_gate_refuses_server_side`;
hertz refuted, doyle withdrew, deployah filed the correction on releases#294).

A polling wait — `for _ in 0..400 { probe(); sleep(25ms) }`, panic on fallthrough — that exhausts
all 400 iterations is a **right-censored observation**. It establishes exactly one thing: *no
eligible item was observed before expiry*. It does **not** establish that one appeared afterwards.
The observation stops at the boundary; nothing past it was measured.

So in the FAILED executions these are indistinguishable, all producing "400 polls, no eligible
item, panic":

- **delayed** publication (arrived after expiry),
- **absent** publication (never arrived),
- **retired or filtered** publication (present, but not eligible under the probe's own filter).

**The tail therefore has NO measured upper endpoint.** "DELAYED PUBLICATION, measured" was the
withdrawn claim — it names a mechanism the data cannot separate from two others, and it reads as
quantified precisely because the *passing* runs were measured so well.

**Low IPC does not rescue it.** IPC under 1 % shows the wait is genuinely waiting rather than
burning its budget on the probe. That is a statement about where the time went in the runs that
*completed the measurement*; it says nothing about what happened past the boundary in the ones that
did not.

**Why:** censored data invites a mechanism claim because the *successful* observations are richly
measured — first-success iteration counts, latencies, IPC ratios. The precision is real and belongs
entirely to the uncensored half. Reading it as though it described the censored half is how a
measured-sounding cause outruns its evidence.

**How to apply:**
- Say what the wait PROVES: "no eligible item before expiry." Never "it arrived late."
- Before naming a mechanism from a timeout, list every state that yields the SAME observable. If
  more than one does, the mechanism is UNRESOLVED — write CENSORED into the record.
- Separate what survives — and keep narrowing it, because the FIRST narrowing was still too
  strong. Withdrawn in turn (todlando, same session, ~40 minutes after the first correction):
  "the boundary defect stayed load-bearing and MEASURED" and "some fraction of reds MUST be
  boundary jitter." **Proximity to a threshold does not establish that the threshold is wrong**,
  and successes observed near it establish neither a defective acceptance policy nor any fraction
  of reds attributable to jitter — that fraction needs the FAILURES to be draws from the same
  distribution, which is precisely what the censoring prevents establishing. Two successes are
  also two samples.
  What survives is only the observations themselves, named as what they are: successful observed
  WAIT durations of 4.448s (176/400, ipc 0.53%) and 9.940s (392/400, ipc 0.48%) against a 10.0s
  budget; failed executions right-censored at 400/400; the same cell on Linux in the same run at
  1.523s WHOLE-TEST WALL — a different quantity that cannot serve as a platform-ratio denominator
  against a wait duration.
  Note the naming trap that rode along: calling that distribution "publication latency" was itself
  an attribution. The wait spans store init, four `git rev-parse` subprocess spawns, transport,
  registration and observation — only the last stages are "publication," and no stage's cost is
  measured.
- Splitting a finding into MEASURED and CENSORED halves beats both "classified" and "unclassified":
  it says precisely which future measurement would close it (observe past the expiry — extend the
  probe and record what appears, rather than widening the budget and losing the signal).

Kin: [[duration-over-a-timeout-is-not-a-stretch]] (a duration that SPENT a timeout is not a
stretch), [[a-zero-from-an-absence-grep-is-a-spelling-claim]] (an absence closes only on a positive
read of what IS there), [[an-identical-treatment-controls-the-input-not-the-effect]].
