memory: bank the sharpened grain rule before it can be lost

The jurist corrected my carry-forward formulation, which would have become
doctrine as written: three of the four failures were population mismatches, but
the fourth — a heading that renders correctly and parses as nothing — has no
population and is the counterexample the generalisation would have swallowed.

Banked now rather than at the wrap because it is the sentence most likely to be
quoted and a wrap that does not happen is not a record.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T1i5VRfHjD79hfaXjWsBXA
This commit is contained in:
David F Glidden
2026-09-10 19:35:03 +02:00
co-authored by Claude Opus 5
parent d80afb2f37
commit 065ff240b1
3 changed files with 98 additions and 0 deletions
@@ -0,0 +1,49 @@
---
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]]