--- name: feedback-a-null-search-is-evidence-about-the-query description: "A search that returns nothing is evidence about the QUERY until you have shown the query could have found the thing — and acting on a handle (filename, regex, path) without inspecting the referent is the same error in the other direction. Four instances across two sessions on 2026-08-31." metadata: node_type: memory type: feedback --- **A search that finds nothing is a fact about the query, not about the world** — until the query has been shown capable of finding the thing. And its mirror: **acting on a handle without inspecting what the handle points at** — a filename, a path, a regex shape, a commit message — is the same failure running the other way. Both substitute a surface form for the thing itself. **Four instances, one day (2026-08-31), two sessions, three substrates.** 1. **A regex matched the *shape* of damage across natural language.** The parallel session's conversion-damage counts returned **126,098** "split diacritics" (they were the French preposition *à*) and **788** "dropped ligatures" (they were the words *at*, *full*, *species*). True count: **8.** Two orders of magnitude, twice. Logged by that session in `chamber-library/_curation/tool-evolution-log.md`. 2. **A glob matched a literal space.** `find -iname '*early recordings*'` against `Early_recordings_and_musical_style.pdf`. On that null result I told the steward he did not own Robert Philip's `Early Recordings and Musical Style`. He owned it. It was in the library the whole time. 3. **A name search could not reach the thing at all.** Joachim & Moser's `Violinschule` sat in the working folder under `IMSLP29616/17/21-PMLP66450` — the *Requiem's* plate number. No search on title or author could find it; only reading the PDFs' internal titles did. I had reported it missing. 4. **`git add PENDING.md` staged a shared file by name.** No `git diff --cached` first. It annexed a second session's uncommitted `PENDING-176`/`-177` into commit `860c3df` under this session's trailers — content unharmed, attribution wrong, and git will report it that way permanently. Disclosed rather than rewritten, in `7578f5a`. **Why:** every one of these felt like *looking*. None of them was. A query is a hypothesis about the form a thing takes, and a null result confirms only that the hypothesis was wrong about the form — which is exactly the information a null result cannot distinguish from absence. The cost is asymmetric and quiet: a false positive gets checked because it produces something to check, while a false negative produces silence, and silence is indistinguishable from a clean result. Instances 2 and 3 were caught **only because the steward pointed at the file**; nothing in the apparatus would have surfaced them. ⚠ **This is the non-motivated sibling of Symmetria §3's flag** — *"a search query shaped by what the session wants to find rather than by what it needs to find."* That one is about desire bending the query. This one needs no desire: an honest wrong guess at a surface form produces the identical silence. Do not let the §3 flag's framing ("was I motivated?") certify a query that was merely wrong. ⚠ **Two sessions, both executor.** This says nothing about jurist/executor independence under Constraint 6 — the same party in formation missing the same way is expected, not evidence. What it does establish is a **rule of three for the executor**, on one day, unprompted by any of the three catches. **How to apply:** - **Before reporting an absence, prove the instrument on a known positive.** Search for something you *know* is there, in the same corpus, with the same query form. If the control does not come back, the null tells you nothing. - **Normalise before matching** — underscores, hyphens, case, ligatures, curly vs straight quotes — or match on content rather than name. Filenames are the least reliable surface a thing has. - **Never report "you do not have X" from a name search.** Report "no filename match for X", which is what was actually established. - **Before `git add `, read `git diff --cached`.** The register is one file and staging is a whole-file act; anything else living in it comes along silently. - **When a count is startling, read the matches before believing it.** Two orders of magnitude is a query defect until proven otherwise. Related: [[feedback-census-by-mechanism-not-proxy]] (the instrument must bear the generalization), [[feedback-checkable-claim-surfaces-bugs]], [[feedback-grounding-pass-finds-errors-not-support]] (search the register for the CONCLUSION, not just the citations).