From 065ff240b124adef19f03330863d41aa5784426a Mon Sep 17 00:00:00 2001 From: David F Glidden Date: Thu, 10 Sep 2026 19:35:03 +0200 Subject: [PATCH] memory: bank the sharpened grain rule before it can be lost MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01T1i5VRfHjD79hfaXjWsBXA --- claude/memory/MEMORY.md | 1 + ...ck-read-at-the-grain-it-was-produced-at.md | 49 +++++++++++++++++++ claude/memory/session-ledger-2026-09-10.md | 48 ++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 claude/memory/feedback-read-at-the-grain-it-was-produced-at.md create mode 100644 claude/memory/session-ledger-2026-09-10.md diff --git a/claude/memory/MEMORY.md b/claude/memory/MEMORY.md index a900a35..b95b013 100644 --- a/claude/memory/MEMORY.md +++ b/claude/memory/MEMORY.md @@ -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. - [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. +- [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. **Loud trigger — pointer suffices** diff --git a/claude/memory/feedback-read-at-the-grain-it-was-produced-at.md b/claude/memory/feedback-read-at-the-grain-it-was-produced-at.md new file mode 100644 index 0000000..999ddeb --- /dev/null +++ b/claude/memory/feedback-read-at-the-grain-it-was-produced-at.md @@ -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]] diff --git a/claude/memory/session-ledger-2026-09-10.md b/claude/memory/session-ledger-2026-09-10.md new file mode 100644 index 0000000..a6b7f45 --- /dev/null +++ b/claude/memory/session-ledger-2026-09-10.md @@ -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