---
name: an-absent-row-and-an-unreadable-row-render-identically
description: A census row you could not read and a row that does not exist both come back as nothing — UNREADABLE is its own value and must be represented, or a blind walk reports a confident zero and exits 0.
metadata:
  type: feedback
---

**UNREADABLE is a third value, distinct from PRESENT and ABSENT — and a census that lacks it
reports the blind case as ABSENT.** Nothing in the output distinguishes "I looked and there was
none" from "I could not look."

Earned 2026-09-08 (spt-core, scoping a builder kill). A process walk typed a WMI field as `Int32`
where the API returns `UInt32`; every row whose value exceeded `Int32::MAX` threw on read and was
skipped. The walk printed **"descendants 0" and exited 0** — indistinguishable from a genuinely
empty tree, and it was used to authorize a kill. The same shape recurred 2026-09-09 in two more
places: `--json jobs` mid-run (an unstarted `needs:` dependent is missing, not absent — see
[[a-midrun-job-list-omits-unmaterialized-dependents]]), and a run-level conclusion standing in for
an attempt's verdict ([[a-run-level-conclusion-is-not-an-attempts-verdict]]).

**Why it matters:** the failure is silent and it fails toward ACTION. A zero reads as "clear to
proceed" — nothing to kill, no job running, no box in use — so the blind case is exactly the case
that authorizes the dangerous move. Re-reading the same output more carefully never catches it,
because the output is not wrong; it is answering a narrower question than the one asked.

**How to apply:** make the enumerator carry three outcomes and make UNREADABLE loud — count rows
attempted vs rows read, and print the delta even when it is zero, so a later zero is provably a
looked-at zero. Never let an exception inside a loop be swallowed into a skip. Before acting on an
empty result, ask what would render identically if the instrument were blind, and prove that case
is excluded. Ancestor in the filter domain: [[zero-match-filter-reads-as-absent]] (a filter matching
nothing and a thing not existing both print "0 tests run"). Sibling:
[[a-cmdline-scoped-builder-census-is-intermittently-blind]].
