Session record, KG (9 lines incl. one soft-invalidate), the null-search feedback memory, and MEMORY.md. MEMORY.md: the afternoon Active Session is ADDED ALONGSIDE the morning's rather than promoting-and-demoting it. Two sessions ran today and both wrapped; the protocol is date-keyed and single-writer, which is PENDING-174, filed today. Neither record supersedes the other. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wn9mxsFjHJkzYjuDdrtxwp
4.6 KiB
name, description, metadata
| name | description | metadata | ||||
|---|---|---|---|---|---|---|
| feedback-a-null-search-is-evidence-about-the-query | 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. |
|
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.
- 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. - A glob matched a literal space.
find -iname '*early recordings*'againstEarly_recordings_and_musical_style.pdf. On that null result I told the steward he did not own Robert Philip'sEarly Recordings and Musical Style. He owned it. It was in the library the whole time. - A name search could not reach the thing at all. Joachim & Moser's
Violinschulesat in the working folder underIMSLP29616/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. git add PENDING.mdstaged a shared file by name. Nogit diff --cachedfirst. It annexed a second session's uncommittedPENDING-176/-177into commit860c3dfunder this session's trailers — content unharmed, attribution wrong, and git will report it that way permanently. Disclosed rather than rewritten, in7578f5a.
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 <shared file>, readgit 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).