--- name: feedback-read-at-the-grain-it-was-produced-at description: Correct numbers and correct text, read at a grain other than the one they were produced at — the week's whole failure class, in two kinds, only one of which reading can catch. metadata: node_type: memory type: feedback --- # Read at the grain it was produced at **The failures were correct numbers and correct text, read at a grain other than the one they were produced at.** Not wrong values. Not sloppy placement. Right things, consumed at the wrong resolution, with nothing in the record marking the substitution. **Two kinds, and the difference is what can catch them:** - **Population mismatch** — a number produced over one population read as answering a question about another. *Catchable by a reader who asks what a number counts over.* Instances: a rejection timestamp that records child-completion read as tick time; my own verification predicates run per-line where the unit was per-paragraph; the jurist attaching the pile-up's `45/45, 0/9` to a partition claim that is the co-occurrence of pile-up **and** lag — both figures true, the label wrong. - **Parser-versus-reader mismatch** — text that is semantically fine and structurally invisible. **Has no population at all**, and **is not catchable by reading.** Instance: a `## REVIEWED-138` heading placed with two leading spaces. CommonMark permits it, so it renders perfectly; every tool here anchors to `^##`, so the ruling existed for the eye and for no machine. ⚠ **Do not let the second disappear into the first.** It is the counterexample to the generalisation, and it is the one a human cannot reach. *(Jurist's correction, 2026-09-10, to my own over-broad formulation — it would have become doctrine as written.)* **Why:** this is the layer beneath *an unruled record is read as ruled*. Counting open items cannot see a sentence inside an open item that quietly acquired authority; and no amount of care can see a heading that reads correctly and parses as nothing. **How to apply:** before consuming any number or placed text, ask **what population / what parser produced this, and is it the one my claim needs?** Then — and this is the half that does the work — **run a check rather than read harder.** Over four instances in one sitting, reading caught none; an exact-string comparison with a negative control caught all four in minutes. If the rule degrades into a linting habit, it has been lost. ⚠ **The failure that looks like success:** finding an instance in a corpus already under audit. The passing case is one in a workstream nobody has touched. Related: [[feedback-a-dated-measurement-is-not-a-status]] · [[feedback-a-null-search-is-evidence-about-the-query]] · [[feedback-checkable-question-over-self-authored-corpus]] · [[feedback-census-by-mechanism-not-proxy]] · [[feedback-completion-is-a-tripwire]]