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
+1
View File
@@ -31,6 +31,7 @@ permalink: claude-memory/memory
- [Grounding finds my errors, not my support](feedback-grounding-pass-finds-errors-not-support.md) — **three packages running, every omission cut AGAINST my own case.** Ground in TWO passes: (1) what did I get wrong? (2) **what already says this?** Search the register for the CONCLUSION, not just the citations. ⚠ Quote from the FILE, never from the relayed message — placement adds and cuts. - [Grounding finds my errors, not my support](feedback-grounding-pass-finds-errors-not-support.md) — **three packages running, every omission cut AGAINST my own case.** Ground in TWO passes: (1) what did I get wrong? (2) **what already says this?** Search the register for the CONCLUSION, not just the citations. ⚠ Quote from the FILE, never from the relayed message — placement adds and cuts.
- [A dated measurement is not a status](feedback-a-dated-measurement-is-not-a-status.md) — a claim true when written reads later as **present tense**, and nothing marks the difference. **Re-measure a dated finding BEFORE ruling on it.** ⚠ **Read the whole block, not the field you came for** — `Awaiting:` is where the eye goes and the last thing anyone updates; `Status:`/superseded lines sit above it and win. Five instances in two days, four of them self-falsifying *in the same item further down*. - [A dated measurement is not a status](feedback-a-dated-measurement-is-not-a-status.md) — a claim true when written reads later as **present tense**, and nothing marks the difference. **Re-measure a dated finding BEFORE ruling on it.** ⚠ **Read the whole block, not the field you came for** — `Awaiting:` is where the eye goes and the last thing anyone updates; `Status:`/superseded lines sit above it and win. Five instances in two days, four of them self-falsifying *in the same item further down*.
- [A null search is evidence about the query](feedback-a-null-search-is-evidence-about-the-query.md) — **a search that finds nothing is a fact about the QUERY** until the query is proven able to find the thing; and acting on a handle (filename, regex, path) without inspecting the referent is the same error reversed. ⚠ Never report *"you don't have X"* from a name search. Four instances, two sessions, 2026-08-31. - [A null search is evidence about the query](feedback-a-null-search-is-evidence-about-the-query.md) — **a search that finds nothing is a fact about the QUERY** until the query is proven able to find the thing; and acting on a handle (filename, regex, path) without inspecting the referent is the same error reversed. ⚠ Never report *"you don't have X"* from a name search. Four instances, two sessions, 2026-08-31.
- [Read at the grain it was produced at](feedback-read-at-the-grain-it-was-produced-at.md) — **correct numbers and correct text, read at a grain other than the one they were produced at.** Two kinds: *population* mismatch (catchable by asking what a number counts over) and *parser-vs-reader* mismatch (renders correctly, parses as nothing — **not catchable by reading at all**). ⚠ Don't let the second vanish into the first. **Run a check, don't read harder** — over four instances in one sitting reading caught none, exact-string + negative control caught all four.
- [Resurface banked notes before re-deriving](feedback-resurface-banked-notes-before-rederiving.md) · [Checkable claim surfaces bugs](feedback-checkable-claim-surfaces-bugs.md) · [Census by mechanism, not proxy](feedback-census-by-mechanism-not-proxy.md) · [Completion is a tripwire](feedback-completion-is-a-tripwire.md) · [Trust prior pass frame](feedback-trust-prior-pass-frame.md) — the five epistemic disciplines. Kernels: **read the banked note before re-deriving** · **a checkable claim over a soft classification is itself a defect-detector** · **census by RUNNING the real pipeline** · **the feeling of "done" is the cue to verify the tail** · **re-run a prior verification at the scope of your extension**. ⚠ Also carried as Symmetria §3 flags — *two surfaces, deliberately*: §3 loads only when Symmetria is invoked, so these stay here for sessions where it isn't. - [Resurface banked notes before re-deriving](feedback-resurface-banked-notes-before-rederiving.md) · [Checkable claim surfaces bugs](feedback-checkable-claim-surfaces-bugs.md) · [Census by mechanism, not proxy](feedback-census-by-mechanism-not-proxy.md) · [Completion is a tripwire](feedback-completion-is-a-tripwire.md) · [Trust prior pass frame](feedback-trust-prior-pass-frame.md) — the five epistemic disciplines. Kernels: **read the banked note before re-deriving** · **a checkable claim over a soft classification is itself a defect-detector** · **census by RUNNING the real pipeline** · **the feeling of "done" is the cue to verify the tail** · **re-run a prior verification at the scope of your extension**. ⚠ Also carried as Symmetria §3 flags — *two surfaces, deliberately*: §3 loads only when Symmetria is invoked, so these stay here for sessions where it isn't.
**Loud trigger — pointer suffices** **Loud trigger — pointer suffices**
@@ -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]]
@@ -0,0 +1,48 @@
---
name: Session Ledger 2026-09-10
description: Practice-of-return ledger maintained by /symmetria — returns, open horizons, recalibrations, authorization moves, sub-agent dialogues, bypasses.
type: feedback
---
# Session Ledger — 2026-09-10
## Returns
- 2026-09-10T18:45 — Wake. N-now re-measured rather than relayed: **59** total,
**31 real / 28 mumble** by a first-user-turn predicate that knows BOTH generator
prompts. ⚠ Named at the point of reporting: the banked 36.9% was measured with the
ONE-prompt signature, so the two composition figures are **not commensurable** —
the pulling thread's own hazard occurring in the figure the thread owes. Reported
as non-comparable rather than as a rise.
## What held
- The wake's substrate-check discipline: REVIEWED-137's broken title, left open in the
steward's daily note, was checked against `REVIEWED.md:3116` instead of relayed —
it is whole. One line closed by looking rather than repeating.
## Open horizons
- The nine-item carry list (`01. Daily/2026-09-09.md` §"Carry to the rested sitting"),
read but not yet drafted into an item list. `tick_id` leads by the wrap's own ordering.
- ⚑ Two items marked BUILT that no REVIEWED entry names (PENDING-139, PENDING-177) —
gap in the record, surfaced not corrected.
- 1 stopped worker still ARMED with `--reply-on-resume`; respawn behaviour NOT ESTABLISHED.
- Skill-harvest **C** (fail-arm detector) awaiting steward authorization.
## Confidence to recalibrate
- **Verified this wake:** N-now and its split (by enumeration, own predicate) ·
REVIEWED-137 title (exact read) · drift-check clean, 65/65, no deferral due ·
dotfiles tree clean but for the thread-query log it just wrote.
- **Inherited, not re-verified:** everything in last night's session memory, including
the 44/50 vs 1/52 partition and condition G's state at `3d45e3a`.
- **Weak instrument result:** `thread-query` returned 5, four lexical noise, one weak
adjacency (`session-ledger-2026-05-08.md`). Logged as an effectively-null run — the
trial needs the nulls recorded, not smoothed.
## Authorization moves
## Sub-agent dialogues
## Bypasses