---
name: v02532-verdict-not-catchall
description: "2026-08-03 SHIPPED v0.25.32 — the tag-send confirm said NO PERCH for outcomes it never observed (failed spt spawn, empty/unrecognized answer); plus the trap that a trace covering ONE of two dispatch legs reads exactly like a complete one"
metadata: 
  node_type: memory
  type: project
  originSessionId: 2e95d9a2-6254-43fb-a2fd-119532b97f2b
  modified: 2026-08-04T01:18:09.230Z
---

**v0.25.32 SHIPPED 2026-08-03** (released, mirrored, `71deef0` + `05956ff`). Two defects, both mine.

1. **`SendOutcome::Failed` was an `else` branch** collapsing four states — core's real `NO_PERCH:`,
   an empty answer, an unrecognized token, and **`spt_send` returning `None` (the `spt` binary could
   not be SPAWNED)** — and rendering all four as the flat claim `NO PERCH (not delivered)`. A failed
   process spawn on this node was reported as a fact about a PEER's perch. Now split into
   `NoPerch` / `SpawnFailed` / `Unrecognized`, the raw token carried into the confirm.
2. **The PreToolUse leg logged nothing** while the Stop leg logged everything.

**Why it matters (deployah's polarity, keep it):** a false NO PERCH invites the sender to resend or
to conclude the target is unreachable — so the cost is DUPLICATE delivery plus a wrong roster belief.
It cost nothing this time only because the duplicated bodies happened to agree.

**⭐⭐ THE TRAP I FELL IN, which is the reusable part.** I quoted a three-row hook-trace table as
"ground truth" and told doyle his 4/4 report was really 1/4. The trace could only ever show
**Stop-leg** sends — the leg that surfaced his verdicts wrote nothing. **An instrument that silently
covers one of two paths reads exactly like one that covers both.** Establish the population before
the verdict. He then refuted my "you merged it in the retelling" with bytes on disk (the adapter
really did compose one batched `NO PERCH → todlando, hertz, hertz`). Both retractions were mine.

**Also mine:** I carried doyle's own disk figure (0.01–0.04 GB free) into my hypothesis without
measuring it; he produced two readings against it (24.4 GiB, 23.98 GiB). Name the instrument for
every number you repeat, or don't repeat it. The hypothesis dropped the cause, kept the falsifier
(false verdicts cluster inside the incident window, absent outside — untestable until the PreToolUse
trace exists, which is the point of fix 2).

**Found in passing:** `send_landed_recognizes_delivery_tokens_only` had **no `#[test]` attribute** and
had never run — zero coverage on the exact function being changed, reading as coverage. Revived. And
the new guard was **proven red against the old behaviour** before restoring, so it can fail, not just
pass. See [[list-vs-predicate-assertions]], [[signature-match-is-not-root-cause]].
