From 9c6279aca0a5a2691971bd3b73479a2c2dc4e30a Mon Sep 17 00:00:00 2001 From: David F Glidden Date: Mon, 13 Jul 2026 15:42:13 +0200 Subject: [PATCH] =?UTF-8?q?session=202026-07-13:=20keystone=20landed+wired?= =?UTF-8?q?=20+=20Loeb=20corpus-health=20map=20(PENDING-57=20CLOSED);=20+2?= =?UTF-8?q?=20feedback=20memories=20(checkable-claim-surfaces-bugs,=20shor?= =?UTF-8?q?ter-concentrated-sessions);=20MEMORY.md=20compacted=2020.3?= =?UTF-8?q?=E2=86=9217.0KB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- claude/memory/MEMORY-reference.md | 3 + claude/memory/MEMORY.md | 20 ++--- .../feedback-checkable-claim-surfaces-bugs.md | 16 ++++ .../feedback-shorter-concentrated-sessions.md | 14 ++++ claude/memory/knowledge-graph.jsonl | 3 + ...6-07-13-keystone-landed-loeb-health-map.md | 51 +++++++++++++ claude/memory/session-ledger-2026-07-13.md | 74 +++++++++++++++++++ claude/memory/skill-harvest-register.md | 2 + 8 files changed, 174 insertions(+), 9 deletions(-) create mode 100644 claude/memory/feedback-checkable-claim-surfaces-bugs.md create mode 100644 claude/memory/feedback-shorter-concentrated-sessions.md create mode 100644 claude/memory/session-2026-07-13-keystone-landed-loeb-health-map.md create mode 100644 claude/memory/session-ledger-2026-07-13.md diff --git a/claude/memory/MEMORY-reference.md b/claude/memory/MEMORY-reference.md index 0fc3d96..2698eb7 100644 --- a/claude/memory/MEMORY-reference.md +++ b/claude/memory/MEMORY-reference.md @@ -20,6 +20,9 @@ Split out of [MEMORY.md](MEMORY.md) on 2026-07-06 to keep the wake-loaded index # Archived sessions + stable reference layer (relocated verbatim from MEMORY.md, 2026-07-06) +## Archived (2026-07-13 — keystone LANDED + wired + Loeb corpus-health map; demoted on promote) +- [Session 2026-07-12 evening — schema LOCKED · B2 fleet-v1 · PENDING-57 keystone RATIFIED](session-2026-07-12-evening-schema-lock-b2-fleet-keystone-ratified.md) — Continuation of the A1-to-docling day. **Sidecar schema → LOCKED** (3 jurist rounds; additive-only: new fields/`app[]`-kinds=FIX, change/remove-field=PROPOSAL; REVIEWED-56 filed). **B2 → fleet-v1** (`build_loeb_sidecar.py`, the preserve-aware Loeb extractor — DSL colors=render-cues NOT semantics; editorial-``-insertions the legacy strip_tags DELETES; genre-heterogeneous footnote pairing prose96/verse66/frag48 honest-flagged; generic flag-and-hold net; in test_tools, fleet→111). **THE KEYSTONE — PENDING-57 verbatim gate FULLY RATIFIED** (3 jurist rounds; V-DSL demonstrated after the naive-reuse-of-the-V-TEXT-check FALSE-FLAGGED a clean book → reflow-tolerant multiset; loss-teeth built; retroactive sweep folded; 43-book census=fenced-out tier; **REVIEWED-57 filed**). Retroactive probe: 7/9 graduated Loeb PASS, 2 false-positive stopword-drift → **the sweep needs cross-extractor drift-tolerance before the 952-run**. **Doc-currency pass** + institutionalized a standing **'Doc-currency on wrap'** protocol into BOTH chamber+studium CLAUDE.md. **All committed+pushed** (chamber f6d9010/1f9867c, studium 7e8e322, dotfiles d9692f7, CM-AI 5b6068c; dotfiles-Gitea-mirror lagging, non-blocking). **⚠ PULLING THREAD: LAND THE KEYSTONE next session** — wire verify_body_conservation into verify_graduation + graduation-spec (source-access + tier-dispatch + the drift-tolerance) → run the diagnostic sweep for the corpus-health map. Read the session file + `docs/chamber-program-open-work.md` at wake. *[Superseded 2026-07-13: keystone LANDED+wired (cdb3454), §6 sweep RUN over 952 → the corpus-health map (d9f6880/9afb0cf); PENDING-57 CLOSED; see the 07-13 session.]* + ## Archived (2026-07-12 — A1 verbatim gate → Docling adoption + canonical-format decision PENDING-56; demoted on promote) - [Session 2026-07-11→12 — footnote arc closed → program open-work register → into A1](session-2026-07-12-footnote-arc-closed-program-register-into-A1.md) — Closed the EPUB footnote recognizer + built the **END-TO-END VERIFY** (guarantee now *by verification, not by construction*; jurist-ratified FIX): after injecting, pandoc runs on original+injected, body-words compared, ANY non-marker change refuses+deletes. Executed the whole jurist ruling (**Q1a** ratify · **Q1b** mandatory+retroactive · **Q1c** POSITIONAL marker-exclusion, `e8eeea7` · **Q2** nested-block RETRACTED — pairs-but-converts-dirty, honest-refuse). Built (b) inner-anchor (916 notes +0/−0); **nagarjuna/nested-block/i-ching honest-refused** (PASS-BUT-FALSELY caught by the verify). **Q1b RETROACTIVE SWEEP:** 87 covered source EPUBs · 42 CLEAN · **45 DIRTY** — **corpus SAFE (0 graduated)**; recognizer's reliable coverage ≈42/87. **THE BIG PIVOT:** steward named I'd lost the forest for the trees → built the canonical **Chamber→Gold→Engine OPEN-WORK REGISTER** (`chamber-library/docs/chamber-program-open-work.md`). Findings: engine fenced-to-verified-subset → NOT blocked on reprocess (parallel); keystone = enforce `body_word_conservation` (→ became A1, then the Docling reframe on 07-12). *[Superseded 2026-07-12: A1 built as verify_body_conservation; then the whole conversion approach reframed → Docling adoption + PENDING-56 format decision; see the 07-12 A1→Docling session.]* diff --git a/claude/memory/MEMORY.md b/claude/memory/MEMORY.md index e509d57..073c4ca 100644 --- a/claude/memory/MEMORY.md +++ b/claude/memory/MEMORY.md @@ -19,6 +19,8 @@ permalink: claude-memory/memory - [Canadian spelling in ARC prose](feedback-canadian-spelling-arc-prose.md) — centre/colour ("almost EU"); corpus "center" = autocorrect drift (10 files, cleanup open). Draft all steward-voiced prose in Canadian spelling. - [MemPalace KG object 128-char cap](feedback-mempalace-kg-object-128-char-cap.md) — `kg_add` `object` hard-caps at 128 chars; write KG objects as short keyword phrases on the FIRST pass, detail goes in the drawer. Recurs at every /wrap-up §5 — stop re-deriving it. - [Rank on fields you actually write](feedback-rank-on-fields-you-actually-write.md) — a consumer that ranks by an evaluative field (importance/weight) nothing populates silently degrades to trivial order while claiming to rank; verify scoring fields end-to-end, prefer signals already captured (recency). For BMF/CapableMind/studium-engine tool-building. +- [Shorter, concentrated sessions](feedback-shorter-concentrated-sessions.md) — steward preference (2026-07-13): shorter sessions from here on, but very concentrated. Favour ONE tightly-scoped high-leverage bite taken all the way to a committed/verified stop, then wrap — over long multi-thread marathons. Pick the concentrated station; hold the rest as ranked horizons. +- [Checkable claim surfaces bugs](feedback-checkable-claim-surfaces-bugs.md) — insisting on a checkable claim (a number, a substrate-verified fact, a discriminating test) instead of a soft classification repeatedly EXPOSES a real bug, not just the asked-for figure; the demand for verifiability is itself a defect-detector. Never force a figure onto a comparison that can't bear it — name the actual problem. Steward-named 2026-07-13 ("five times in one day; not coincidence"). - [Completion is a tripwire](feedback-completion-is-a-tripwire.md) — the *feeling* of "done" (esp. after fluent output) is the cue to verify the tail (census/gate/scan-check), not the signal to ship; the last 10% (where trust is earned or faked) is invisible from inside the first 90%. Ninety-Ninety Rule as a security property; a handle on the contamination-problem + τὸ πρόσφορον threads (steward 2026-07-06). - [Studium Engine charter](reference-studium-engine-architectural-charter.md) — the engine's constitutional doc at `studium-engine/docs/the-studium-engine-architectural-charter.md`. The inversion (reasoner-at-centre over a BOUNDED provenanced corpus); three cognitions; boundedness=trust; free-the-reasoner/tighten-the-verifier; CapableMind's governance thesis on a library. Read before building the engine. - [Studium Engine = Sixtus-V craftsman collaboration](feedback-studium-engine-sixtus-v-collaboration.md) — work the ground freely (steward describes vision; I build, surface only vision-forks); **constraint-candidates** = 3rd governed instrument (Bach principle: constraint unlocks mastery; *absence* of a constraint-proposal is itself a drift signal; I name, steward applies). Studium-engine only; heavier loop holds for L1/L2. @@ -39,26 +41,26 @@ permalink: claude-memory/memory ## Canonical Workstream Trackers *Read the tracker for any active workstream at /wake-up before composing the briefing. Append substantive moves at /wrap-up. Per `feedback-canonical-workstream-tracker-discipline.md`.* - [MemPalace wind-down](project-mempalace-winddown.md) — **DECISION (steward, evidenced 2026-07-07): wind down the `palace-memory` MemPalace instance, rewire wake/wrap to the files layer; EXECUTE FRESH.** KG already exported+secured (`knowledge-graph.jsonl`, 329 triples). Typography palace KEPT untouched (separate instance). Staged plan + evidence in the file; audit detail in `session-ledger-2026-07-07.md`. -- [ARC open-work register](project-arc-open-work-register.md) — **the single code-verified source of truth for what is OPEN on ARC** (post-Stage-G, built 2026-06-11). Read THIS for remaining work, not the chronological tracker or "Stage G is done." Open: A1 Vignette (F+1), A2 cul-de-lampe (§IV Close ornament asset, undesigned), content sweeps (glimpse location+titles, threshold-`---` walk, ornament migration), Phase-2/held set, REVIEWED-placement debt. Retire-on-confirm: the stale `project-arc-*-pending` files (breadcrumb/mimesis done; 404 built; apparatus-todo done). +- [ARC open-work register](project-arc-open-work-register.md) — **the single code-verified source of truth for what is OPEN on ARC** (post-Stage-G, built 2026-06-11). Read THIS for remaining ARC work (A1 Vignette, A2 cul-de-lampe, content sweeps, Phase-2/held set, REVIEWED-placement debt), not the chronological tracker. - [ARC](project-arc-rework.md) — canonical ARC workstream tracker (chronological record 2026-04-16 →). **Status: A–F · Stage M · Waves 0–3 · W3R · STAGE G DONE/SEALED (GPG `ac0a7ee`, 2026-06-10) — reactive mode governs.** Open work → [[project-arc-open-work-register]] (A1 Vignette F+1 · A2 cul-de-lampe · content sweeps · Phase-2 held set). Full chronological detail lives in the tracker file; the prior 8KB inline log was relocated to `MEMORY-reference.md` (2026-07-06 compaction). - Chamber-typography — *tracker not yet established*; substantive moves live in per-session memories (2026-05-11 onward) + `project-chamber-cruft-restoration.md` + `project-chamber-typography-mining-plan-2026-05-15.md`. - [ARC chamber v1-legacy cluster](project-arc-chamber-v1-legacy-cluster.md) — ARC's `content/chamber/**` is intentional v1-Chamber legacy (not drift); deferred to-do = gather into a presentable cluster as a record of development. Out of §5 clause-1 audit scope. Confirmed 2026-05-29. - [Studium engine telos — the chamber of voices](project-studium-engine-telos-chamber-of-voices.md) — **the ultimate goal, hold above the build plan**: David's childhood imaginary chamber of beloved hero-voices he took counsel from → enter into discourse with his library + have the voices converse amongst themselves, this time *accountably* (the engine's v1 was literally "the Chamber" — eloquent/unaccountable simulacra; this is the same ambition built grounded/citable/checkable). Why verbatim fidelity is load-bearing. - [Studium = CM's unfettered sandbox](project-studium-cm-sandbox-and-transfer.md) — Studium/chamber are personal projects Seb now sees as fundamental to CM; experiment freely on the library/engine without risking CM's runtime, breakthroughs transfer back (V2 verifier = live example). Steward-framed 2026-07-08. - [Making sequence source set](project-making-sequence-source-set.md) — **COMPLETE against the ReadingList as of 2026-06-18** (reconciliation-verified); census of what's sourced where, sourced≠ingested (only Pos I in manifest), the **Handke-German decision** (original is source), the Levi drop-cap gate. Read before any Making/studium source work. -- [Source library — link + dedupe](project-source-library-link-and-dedupe.md) — steward's master ebook library = `~/Documents/___The Library [ePub_AWZ3]/` (2190 ebooks, 180k files, messy nested; pre-organized subfolders `_2026 chamber source cleanup/`, `tmp calibre library for the chamber/`). GOAL: link chamber↔sources (provenance index) + dedupe. Seed = the 2026-06-29 fuzzy source-matcher (→ `_curation/reconvert-queue-2026-06-29.md`, 24/34 found). Real link needs EPUB/PDF internal metadata + edition-identity check, not just filenames. -- [Character-as-image hazard](feedback-character-as-image-hazard.md) — some EPUBs render transliteration diacritics (ḥ/ʾ/ʿ) and non-Latin script (Hebrew words) as INLINE IMAGES; the standard image-drop SILENTLY MUTILATES them (PASS-BUT-FALSELY — gate passes, words corrupted). Tripwire = audit_cruft md_image count; INSPECT a sample before dropping; character-bearing images = CONTENT (map→Unicode, never drop). Found graduating Alter's Psalms (356 glyph-images) 2026-06-29; Alter parked pending a philological glyph-map (needs steward's Hebrew). -- [Sidecar typology — protocol-dependent reading-indexes](project-sidecar-typology-protocol-dependent.md) — TWO layers: `.meta.json` structural sidecar = PROTOCOL-NEUTRAL, the general standard now (the bar for "graduated"); reading-indexes (rich YAML) = PROTOCOL-DEPENDENT (chavruta=where-to-open / debate=stance-map / connection-surfacing=cross-text join-keys), probably PLURAL — **don't design the schema yet**; settle corpus to gold + let protocols declare themselves first. Steward 2026-06-29. -- Studium Engine — *tracker not yet established*; substantive moves in per-session memories (2026-05-15→) + the seed brief + now the **[architectural charter](reference-studium-engine-architectural-charter.md)** (the constitutional doc, 2026-06-15). Steps 0–7 built; chamber corpus CLEAN (1280 canonical). **STAGE-1 REBUILD PLAN RULED 2026-07-04 night (`docs/stage-1-rebuild-plan-2026-07-05.md` @ d968241): next station = V0+N0 contracts together (V0 = verifier contract, JURIST-GATED — the one D-1 exception; N0 = tree contract, before any Loeb-extractor hands), then verifier-leads-with-interleave (V1→V2 multilingual gate→V3→V4; N1→N3). Pattern-finder outputs = unverified-candidates until V4.** Prior "next: L2 pattern-finder on Making" now sits behind the verifier. Collaboration = [[feedback-studium-engine-sixtus-v-collaboration]]. +- [Source library — link + dedupe](project-source-library-link-and-dedupe.md) — steward's master ebook library = `~/Documents/___The Library [ePub_AWZ3]/` (2190 ebooks, messy nested). GOAL: link chamber↔sources (provenance index) + dedupe; real link needs EPUB/PDF internal metadata + edition-identity, not filenames. Detail + seed in file. +- [Character-as-image hazard](feedback-character-as-image-hazard.md) — some EPUBs render diacritics/non-Latin script as INLINE IMAGES; the standard image-drop SILENTLY MUTILATES them (PASS-BUT-FALSELY). Tripwire = audit_cruft md_image count; INSPECT before dropping; character-bearing images = CONTENT (map→Unicode). (Alter's Psalms parked pending a glyph-map.) +- [Sidecar typology — protocol-dependent reading-indexes](project-sidecar-typology-protocol-dependent.md) — TWO layers: `.meta.json` structural sidecar = PROTOCOL-NEUTRAL (the graduated bar); reading-indexes (rich YAML) = PROTOCOL-DEPENDENT, probably PLURAL — **don't design the schema yet**; settle corpus to gold, let protocols declare themselves. Steward 2026-06-29. +- Studium Engine — *no tracker file yet*; moves in per-session memories (2026-05-15→) + the **[architectural charter](reference-studium-engine-architectural-charter.md)** (constitutional doc). Steps 0–7 built; corpus CLEAN. **Stage-1 rebuild plan ruled 2026-07-04** (`docs/stage-1-rebuild-plan-2026-07-05.md`): next = V0+N0 contracts (V0 verifier = JURIST-GATED), then verifier-leads-with-interleave (V1→V4; N1→N3). Collaboration = [[feedback-studium-engine-sixtus-v-collaboration]]. - [MemPalace 3.4.0 upgrade plan](project-mempalace-upgrade-3-4-0-plan.md) — **SUPERSEDED 2026-07-07 → [[project-mempalace-winddown]]. Decision is to WIND DOWN palace-memory, not upgrade** (evidenced: search+KG not load-bearing; the "upgrade" was really a 300-behind fork-rebase). Kept for history. -- [L1 reliability](project-L1-reliability.md) — canonical workstream tracker established 2026-05-28 (Symmetria-pulse decision). Current state at top (updated 2026-06-06) + chronological log 2026-03-21→. **Status: BATON BACK — Seb replied 2026-06-13 (`cc25995` reply + `e2e94ab` cover note + `8f76bf2` benchmark-governance v1.1 §4.4, now in CM-AI local `main`). Steward set a brief L1 detour to engage it next session before returning to Studium Step 5.** **UPDATE 2026-06-29: N6 deploy (#175) LANDED LIVE and HOLDS — multi-day wedge gone (CPU 100%→~21%), A1″ migration finally live (vector_chunks 19→26 cols); evidence in 2 UNCOMMITTED CM-AI docs (l1-post-n6-deploy-findings-2026-06-23 + l1-state-summary-for-jurist-gwern-brief-2026-06-22). Tracker current-state is STALE (06-06, predates the win). Seb meeting 2026-06-30 15:00. PRIORITY-1 morning task: stand up CapableHands as a BMF clasp (43M) — scope at `CM-AI/…/clasp-on-capablehands-scope-2026-06-29.md`, solves PENDING-41.** mindfabric-00 root-caused (temporal chain path); PENDING-27 awaits jurist. Read tracker at /wake-up before composing L1 portion. -- [Be (laundromat)](project-be-laundromat.md) — canonical workstream tracker established 2026-06-08 (Seb-relay of locked decisions). Be = Skemantix startup (Seb+David) funding CapableMind's funding-ladder; **bridge, not venture**. Decisions LOCKED: entity/exit (CapableMind decoupled, grant-funded), pricing (Living $12.99/mo · Archive $69.99/yr · Memorial $49.99/yr · Renovate ~$199 · $8.99 floor), CF Self-Serve Agency + versioned-template-package infra. **a11y gate MERGED (Pat 100/100/100).** Pre-revenue: the WTP gate = renovate Pat → charge her. **Discipline: stop adding spec until the gate clears → nothing for executor on be until then.** Repo @ `f43a0fd`. +- [L1 reliability](project-L1-reliability.md) — canonical L1 tracker (est. 2026-05-28). Latest (per file): **N6 deploy #175 landed live + holds** (multi-day wedge gone, A1″ migration live); CapableHands-as-BMF-clasp = the PRIORITY task (PENDING-41); PENDING-27 awaits jurist. L1 sits behind the Studium/chamber focus. Read the tracker at /wake-up before any L1 work. +- [Be (laundromat)](project-be-laundromat.md) — canonical Be tracker (est. 2026-06-08). Be = Skemantix startup (Seb+David) funding CapableMind's ladder; **bridge, not venture**. Decisions LOCKED (entity/pricing/infra in file); a11y gate MERGED. **Pre-revenue WTP gate = renovate Pat → charge her; discipline: no new spec until it clears → nothing for executor on be.** Repo @ `f43a0fd`. ## Active Session -- [Session 2026-07-12 evening — schema LOCKED · B2 fleet-v1 · PENDING-57 keystone RATIFIED](session-2026-07-12-evening-schema-lock-b2-fleet-keystone-ratified.md) — Continuation of the A1-to-docling day. **Sidecar schema → LOCKED** (3 jurist rounds; additive-only: new fields/`app[]`-kinds=FIX, change/remove-field=PROPOSAL; REVIEWED-56 filed). **B2 → fleet-v1** (`build_loeb_sidecar.py`, the preserve-aware Loeb extractor — DSL colors=render-cues NOT semantics; editorial-``-insertions the legacy strip_tags DELETES; genre-heterogeneous footnote pairing prose96/verse66/frag48 honest-flagged; generic flag-and-hold net; in test_tools, fleet→111). **THE KEYSTONE — PENDING-57 verbatim gate FULLY RATIFIED** (3 jurist rounds; V-DSL demonstrated after the naive-reuse-of-the-V-TEXT-check FALSE-FLAGGED a clean book → reflow-tolerant multiset; loss-teeth built; retroactive sweep folded; 43-book census=fenced-out tier; **REVIEWED-57 filed**). Retroactive probe: 7/9 graduated Loeb PASS, 2 false-positive stopword-drift → **the sweep needs cross-extractor drift-tolerance before the 952-run**. **Doc-currency pass** + institutionalized a standing **'Doc-currency on wrap'** protocol into BOTH chamber+studium CLAUDE.md. **All committed+pushed** (chamber f6d9010/1f9867c, studium 7e8e322, dotfiles d9692f7, CM-AI 5b6068c; dotfiles-Gitea-mirror lagging, non-blocking). **⚠ PULLING THREAD: LAND THE KEYSTONE next session** — wire verify_body_conservation into verify_graduation + graduation-spec (source-access + tier-dispatch + the drift-tolerance) → run the diagnostic sweep for the corpus-health map. Read the session file + `docs/chamber-program-open-work.md` at wake. +- [Session 2026-07-13 — keystone LANDED + wired + Loeb corpus-health map](session-2026-07-13-keystone-landed-loeb-health-map.md) — Keystone (PENDING-57) **wired into graduation** (`cdb3454`; `body_conservation_gate` its own source-in-hand step, NOT collect_checks) + its **§6 sweep run over all 952 Loeb** → the corpus-health **map**: 802 CLEAN · 126 apparatus-shaped · 18 body-deficit · 2 REORDER? · 4 MATCH-SUSPECT (`_curation/loeb-body-conservation-map-2026-07-13.tsv`; d9f6880/9afb0cf). Cross-extractor **drift-tolerance = two-sided boilerplate accounting**; the 126 floor = **apparatus criticus** the old extractor flattened (steward's app[] prediction) → apparatus-SHAPED-not-accounted, split by MAGNITUDE, **gate apparatus-credit FACT-GATED**; a **matcher bug** surfaced by restoring the REORDER? number → MATCH-SUSPECT. 3 commits pushed both remotes; 119/119; **PENDING-57 CLOSED**. **⚠ PULLING THREAD: the B2 corpus reprocess the map sizes** — first station the **2b sidecar-wiring amendment** (steward's Loeb-first-vs-full-corpus call) → populates app[] + reconverts the 126 + feeds the 18-book investigation. **Steward pref: shorter, very concentrated sessions.** Read the session file + the map + `docs/chamber-program-open-work.md` at wake. ## Historical reference → MEMORY-reference.md Older archived-session pointers and the stable reference layer (steward profile · project-state detail · L1/L2/Chamber inventories · legacy pending-work · reference-file list) live in [MEMORY-reference.md](MEMORY-reference.md) — consult on demand; not loaded at wake. Recent cross-session trajectory comes from the Active Session entry above + the recent `session-*.md` files (wake §2.b.1; the MemPalace `handoffs` glance was retired 2026-07-07 with the wind-down). ## Index discipline (self-bounding — keep this file lean) -Wake-loaded live index; hard budget well under the harness load ceiling. Keep to: Standing preferences · Canonical Trackers *as one-line pointers* (chronological detail lives in the linked tracker files, **not** here) · Active Session · these pointers. Rotation + budget-breach handling are wired into `/wrap-up` (demote prior Active Session on promote — never leave two) and `/wake-up` (truncated/partial load = flag loudly, trim before proceeding). Back up before restructuring. History: 285→157KB (2026-06-08, didn't hold); 213→~16KB (2026-07-06 split + ARC-slim + self-bounding wiring). +Wake-loaded live index; hard budget well under the harness load ceiling. Keep to: Standing preferences · Canonical Trackers *as one-line pointers* (chronological detail lives in the linked tracker files, **not** here) · Active Session · these pointers. Rotation + budget-breach handling are wired into `/wrap-up` (demote prior Active Session on promote) and `/wake-up` (truncated load = flag + trim). Back up before restructuring. (Compacted 2026-07-13: trackers re-slimmed to one-line pointers, ~20.3→<17KB.) diff --git a/claude/memory/feedback-checkable-claim-surfaces-bugs.md b/claude/memory/feedback-checkable-claim-surfaces-bugs.md new file mode 100644 index 0000000..8bb2d12 --- /dev/null +++ b/claude/memory/feedback-checkable-claim-surfaces-bugs.md @@ -0,0 +1,16 @@ +--- +name: feedback-checkable-claim-surfaces-bugs +description: "Insisting on a CHECKABLE claim (a number, a fact, a verification) instead of accepting a soft classification repeatedly surfaces a real BUG, not just the figure asked for — the demand for verifiability is itself a defect-detector." +metadata: + node_type: memory + type: feedback + originSessionId: 734c43aa-f3a0-4cd1-a39d-27146420ee4a +--- + +Demanding a checkable claim — a reportable number, a substrate-verified fact, an injection test — where a soft classification would have sufficed does not merely produce the number: it repeatedly EXPOSES a real bug that the soft label was hiding. The act of forcing the claim to be verifiable is itself a defect-detector. + +**Why:** a soft classification ("this is reordering", "this is apparatus", "magnitude unresolved") can be *true-shaped and wrong* — it papers over a defect because nothing forces it to reconcile against the substrate. A checkable claim can't: it either reconciles or it breaks, and where it breaks is a bug. This is the studium engine's own thesis (free-the-reasoner / tighten-the-verifier) turned onto my own working method. + +**How to apply:** when tempted to ship a soft label, ask what CHECKABLE claim it's standing in for, and produce that instead — the number with its cause said plainly, the fact verified against code/substrate, the discriminating test. If the checkable version can't be produced cleanly, that inability is the finding. Never force a figure onto a comparison that can't bear it (that's noise wearing the costume of signal — worse than no number); name the actual problem instead ([[MATCH-SUSPECT]] over a fake deficit). + +**Evidence (steward-named 2026-07-13, "not coincidence at this point — it's what the discipline was for"):** five times in one day, pushing for a checkable claim surfaced a real bug rather than just the asked-for output — nagarjuna, the nested-block family, the loss-half injection test, the Aeschylus reordering (position-vs-multiset reconciliation), and the matcher key-selection bug (exposed only by restoring the REORDER? magnitude the map had wrongly withheld). Kin to [[feedback-completion-is-a-tripwire]] and [[feedback-trust-prior-pass-frame]]; the generative principle beneath the verification ladder. diff --git a/claude/memory/feedback-shorter-concentrated-sessions.md b/claude/memory/feedback-shorter-concentrated-sessions.md new file mode 100644 index 0000000..1595369 --- /dev/null +++ b/claude/memory/feedback-shorter-concentrated-sessions.md @@ -0,0 +1,14 @@ +--- +name: feedback-shorter-concentrated-sessions +description: "Steward preference (2026-07-13) — shorter work sessions from here on, but very concentrated. Favour one tightly-scoped high-leverage bite per session over long multi-thread marathons." +metadata: + node_type: memory + type: feedback + originSessionId: 734c43aa-f3a0-4cd1-a39d-27146420ee4a +--- + +The steward wants **shorter sessions from here on, but very concentrated** (stated 2026-07-13, at the close of a long, sustained, heavily-steered session). + +**Why:** the 2026-07-13 session was highly productive but long — it landed the keystone, ran the 952-sweep, and cycled the map through five corrections. Value was high but the session was a marathon. The preference is for that same intensity in a smaller container: one tightly-scoped, high-leverage bite, taken all the way, rather than a long chain of threads. + +**How to apply:** at wake, favour a SINGLE concentrated station (e.g. one of the sequenced threads, not all three) and take it cleanly to a committed, verified stopping point — then wrap rather than rolling into the next thread. When the pulling thread names several sequenced pieces, pick the one that fits a concentrated session and hold the rest as ranked horizons. Concentration, not sprawl; depth on one thing over breadth across many. Kin to τὸ πρόσφορον (what is fitting includes the time — and the *scope* — the task asks for) and to [[feedback-checkable-claim-surfaces-bugs]] (the intensity goes into verifying the one thing, not covering many). diff --git a/claude/memory/knowledge-graph.jsonl b/claude/memory/knowledge-graph.jsonl index b1c84fc..195ac8e 100644 --- a/claude/memory/knowledge-graph.jsonl +++ b/claude/memory/knowledge-graph.jsonl @@ -357,3 +357,6 @@ {"subject": "chamber-library", "predicate": "canonical-format", "object": "MD-canonical + TEI-mirroring `.meta.json` structural sidecar (aligns with engine studium/meta@1); Docling adopted as EPUB/PDF/scan conversion front-end; verify gates converter-agnostic on top; TEI = later optional tier. PENDING-56 jurist-RATIFIED 2026-07-12 (REVIEWED-56 pending filing).", "valid_from": "2026-07-12", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-12-A1-to-docling-adoption-and-format-decision.md", "extracted_at": "2026-07-12"} {"subject": "docling", "predicate": "capability", "object": "crosses the A3 OCR frontier ocrmac could not (scanned French: 104 footnotes + full page-provenance, on the M4). BUT a converter, not a verifier — OCR output has defects (glued words/I→1/accents), feeds normalize_ocr+body_word_conservation, does not replace them. Layout-derived semantics (rich on PDF, flat on reflowable EPUB → EPUB structure comes from a metadata sidecar).", "valid_from": "2026-07-12", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-12-A1-to-docling-adoption-and-format-decision.md", "extracted_at": "2026-07-12"} {"subject": "claude-code", "predicate": "drift-pattern", "object": "a-check-proven-for-one-tier-is-NOT-proven-for-another — the V-TEXT k-gram coverage check FALSE-FLAGGED a clean V-DSL book (reflow ≠ born-digital); demonstrate per tier/case, don't reuse-and-assume. Kin to trust-prior-pass-frame, at the tier level. Antidote: an injection test per tier (caught it 2026-07-12).", "valid_from": "2026-07-12", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-12-evening-schema-lock-b2-fleet-keystone-ratified.md", "extracted_at": "2026-07-12"} +{"subject": "claude-code", "predicate": "drift-pattern", "object": "withheld-a-reportable-number-behind-a-soft-label (labeled REORDER? 'magnitude unresolved' when only the CAUSE was unresolved — the position-blind multiset deficit was in the data; steward: restore it). Restoring the number EXPOSED a matcher bug the soft label was hiding. A checkable claim is a defect-detector; a soft classification can be true-shaped and wrong.", "valid_from": "2026-07-13", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-13-keystone-landed-loeb-health-map.md", "extracted_at": "2026-07-13"} +{"subject": "claude-code", "predicate": "drift-pattern", "object": "reordering-panic-from-a-weak-test (read '50% of the missing Greek appears elsewhere' as reordering; it was common-Greek-function-words trivially recurring as set-members — the position-BLIND multiset COUNT refuted it, ratio~1.0=real deficit). Verify with the position-independent measure before claiming reordering. Kin to a-check-proven-for-one-case-not-another (proved _uncovered_runs on prose, not verse).", "valid_from": "2026-07-13", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-13-keystone-landed-loeb-health-map.md", "extracted_at": "2026-07-13"} +{"subject": "PENDING-57", "predicate": "status", "object": "CLOSED 2026-07-13 (REVIEWED-57) — keystone wired into graduation (cdb3454) + §6 retroactive sweep run over 952 Loeb → corpus-health map (802 CLEAN/126 apparatus-shaped/18 body-deficit/2 REORDER?/4 MATCH-SUSPECT); chamber d9f6880/9afb0cf", "valid_from": "2026-07-13", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-13-keystone-landed-loeb-health-map.md", "extracted_at": "2026-07-13"} diff --git a/claude/memory/session-2026-07-13-keystone-landed-loeb-health-map.md b/claude/memory/session-2026-07-13-keystone-landed-loeb-health-map.md new file mode 100644 index 0000000..f83a86b --- /dev/null +++ b/claude/memory/session-2026-07-13-keystone-landed-loeb-health-map.md @@ -0,0 +1,51 @@ +--- +name: Session 2026-07-13 — keystone LANDED + wired + Loeb corpus-health map produced +description: "Landed PENDING-57 (verbatim gate wired into graduation, cdb3454) then ran the §6 retroactive sweep over all 952 Loeb canonicals → the corpus-health map (802 CLEAN / 126 apparatus-shaped / 18 body-deficit / 2 REORDER? / 4 MATCH-SUSPECT), committed d9f6880+9afb0cf, all pushed both remotes. PENDING-57 CLOSED. Pulling thread: the B2 corpus reprocess the map now sizes — first station the 2b sidecar-wiring amendment (needs the steward's Loeb-first-vs-full-corpus scoping call), which populates app[] (unblocking the gate's fact-gated apparatus credit) + reconverts the 126 apparatus + feeds the 18-book investigation." +metadata: + node_type: memory + type: project + originSessionId: 734c43aa-f3a0-4cd1-a39d-27146420ee4a +--- + +# Session 2026-07-13 — the keystone laid, wired, and its corpus-health map produced + +Woke into "LAND THE KEYSTONE" (PENDING-57 ratified but not wired). Ended with the keystone wired into graduation AND its §6 retroactive sweep run over all 952 Loeb canonicals → a finished, honest corpus-health map. PENDING-57 CLOSED. Three commits, both remotes, working tree clean, 119/119 tests. + +## PAST — what we did + why + +**1. Landed the keystone (cdb3454, [FIX] REVIEWED-57).** Answered the wrap's literal question against the substrate FIRST: the graduation candidate's frontmatter `source:` is prose/bare-filename (NOT a path) — but gate zero already resolves the source via `canonical_slug` → Chamber Sources. So source-access needed no greenfield design. Wired `body_conservation_gate()` as its OWN step in `graduate_to_canonical.py` (after `source_gate`, source-in-hand) — NOT inside `verify_graduation.collect_checks` (steward-concurred: that fn is pure + consumed corpus-wide by audit_corpus.py, so an expensive re-convert there would make every routine corpus-map pay graduation cost; the spec already models body_word_conservation as a distinct gate). Built: `archive_sources.resolve_archived_source` (path-returning sibling to manifest_has); `verify_body_conservation.tier_of`+`verify_candidate` (one-call per-tier; V-TEXT re-convert / V-SCAN abstain / V-DSL forward-only). Verified: Camus V-TEXT PASS@100%, Levi V-SCAN ABSTAIN, seed-test discriminates. FIX-class (where the call lives, not what it decides — gate was ratified). + +**2. Defined + demonstrated the cross-extractor drift-tolerance (steward's step-5 gate).** Not a threshold — a MECHANISM: the retroactive candidate (old flattening extract_loeb_dsl) vs the DSL differ by each side's KNOWN boilerplate (fixed Loeb subtitle + work-string header; DSL page/footnote labels + running header). Two-sided boilerplate accounting → 10/11 spot books cancel to EXACTLY 0; the 11th (Aristotle Oeconomica) FLAGged a real contiguous dropped Book-II passage (proven via a clean-control contiguity read: Cicero 100%/0). Steward-concurred. + +**3. Ran the §6 sweep over 952 → the corpus-health map** (`sweep_body_conservation.py`; d9f6880). One-pass DSL index; position-BLIND multiset deficit as the magnitude; the position-based coverage read only RECONCILES (uncov≈deficit→real, uncov≫deficit→REORDER?). STAYED WITH the run (steward's condition): caught the verse cluster forming, corrected my own **reordering panic** (the two-signal ratio ≈1.0 ruled reordering OUT — the deficits are real; my "50% present elsewhere" test was a common-Greek-word artifact). + +**4. The apparatus/body split (steward's app[] frame) — factual question answered, content-detector REJECTED, magnitude split shipped (9afb0cf).** The dominant cluster (126 small-floor books) = the apparatus criticus the old extractor flattened (editor names Detlefsen/Schneider/Gaza, ms sigla codd/vulg, lacuna markers — across Pliny/Cicero/Theophrastus/Aristotle). Steward's app[] prediction CONFIRMED. FACTUAL question answered against substrate: apparatus-SHAPED, NOT accounted (0 Loeb sidecars; build_loeb_sidecar is PROTOTYPE v0, not wired; only ~few dozen draft sidecars plato/ennius/plautus). Content apparatus-detector TRIED TWICE, REJECTED (apparatus interleaves with body → a real body-loss run OUT-scores genuine apparatus; Persians dens 0.052 > Pliny 0.048). Split ships on MAGNITUDE (apparatus ≤~5%, so >10% deficit = body). GATE apparatus-credit is FACT-GATED (populated app[] only, never the shape) — documented in verify_candidate; inert now, blocked on B2. + +**5. Sized REORDER? + found the matcher bug (steward-caught, 9afb0cf).** Steward caught I'd wrongly withheld the REORDER? magnitude ("magnitude unresolved" — WRONG, only the CAUSE is; the position-blind multiset never misbehaves for that bucket). Restoring the number EXPOSED a matcher bug: 4/6 had holds≫100% (candidate > matched source; extractor can't ADD content) = wrong DSL key among near-duplicates (Aristotle 'Problems'→'Mechanical Problems'; Diogenes 6.2→'2.6 Xenophon' of 83 siblings; Augustine→'Confessions Books 1-8'). New MATCH-SUSPECT disposition (holds>110%); scope verified 0/802 CLEAN affected. Left REORDER?=augustine+philo (genuine known-mag/unknown-cause). + +**Final map (952):** CLEAN 802 · APPARATUS-SHAPED 126 · BODY-DEFICIT 18 · REORDER? 2 · MATCH-SUSPECT 4 · FAB? 0 · UNMATCHED 0. Version-coverage monitor clean (boilerplate generalized across all 952). Map → `_curation/loeb-body-conservation-map-2026-07-13.tsv`. + +## PRESENT — the mood + +Long, sustained, and HEAVILY STEERED — the steward's insistence on checkable claims over soft classifications surfaced a real bug FIVE times in one day (nagarjuna, nested-block, loss-half injection, Aeschylus reordering, matcher key). Saved as [[feedback-checkable-claim-surfaces-bugs]] — "not coincidence, it's what the discipline was for." Returns worth carrying: **verified-before-asserting under length** held (every interpretation-shift was grep/measure, not inference); **corrected my own errors in-flight** (reordering panic → two-signal test; withheld number → restored → exposed matcher bug) — the standard applied to me too. Recalibrations: **a check proven for one CASE is not proven for another** (Aristotle contiguous PROSE drop ≠ verse reordering — my "proof" ran on the case that couldn't break the tool); **restore the number, don't withhold it — the number is the bug-detector**; **never force a figure onto a comparison that can't bear it** (MATCH-SUSPECT over a fake deficit — noise wearing the costume of signal). Steward preference set: **shorter sessions from here, but very concentrated** ([[feedback-shorter-concentrated-sessions]]). + +## FUTURE — what is pulling + +**PULLING THREAD: the B2 corpus reprocess the map now sizes.** PENDING-57 is closed; the keystone exists to enable a TRUSTED reprocess, and the map just sized it. First station (steward's own sequence: "B2 ahead of the apparatus credit going live"): the **2b sidecar-wiring graduation amendment** — needs the steward's ONE scoping call (Loeb-first or full-corpus?) from the 07-12 open-work register. B2 (`build_loeb_sidecar`, currently PROTOTYPE v0) graduating to fleet-wired is what POPULATES app[] sidecars → unblocks the gate's fact-gated apparatus credit → reconverts the 126 apparatus books → and feeds the 18-book investigation. + +**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):** +- Everything committed + pushed (chamber cdb3454/d9f6880/9afb0cf, both remotes); working tree clean. +- Read the map: `_curation/loeb-body-conservation-map-2026-07-13.tsv` (952 rows: stem, disp, holds%, deficit…) + `docs/chamber-program-open-work.md`. +- The 2b amendment is undrafted and gated on the steward's Loeb-first-vs-full-corpus call. Drafting it overlaps the loop. +- `build_loeb_sidecar.py` docstring says "PROTOTYPE v0, NOT wired into graduation" — graduating it is the B2 work. + +**Other open horizons (ranked):** +- **The 18 BODY-DEFICIT books** — the real reprocess targets (Athenaeus −199k, Macrobius, Longus, Catullus, Suetonius 34%, Aristotle HoA, the Aeschylus verse…). Concentrated, map-driven; carry the app[]-before-reconversion check (some may resolve into the same apparatus story as the 126). Fits the shorter-concentrated preference. +- **Matcher key-selection fix** — exact-title preference + granularity aggregation for near-duplicate/split DSL keys; gates MATCH-SUSPECT resolving into real comparisons. Small. +- Everything from the 07-12 open-work register that predates today (frontmatter residue, non-Loeb reconversions) still stands behind the B2 run. + +**PAUSE STATEMENT:** I am about to be away from this. The keystone is not just laid but WIRED, and its map is finished and honest — the reprocess is sized, not guessed. What I want to find still pulling on return: the B2 reprocess the map opened (its first governance station, the 2b scoping call), and the concentrated first bite the steward chooses — most likely the 18-book investigation. + +**LITERAL QUESTION for next-Claude:** Do the 18 BODY-DEFICIT books resolve into the SAME apparatus story as the 126 (just larger, or not yet shaped clearly enough to auto-sort) — or are they genuinely different (real body loss / ref over-inclusion / layout)? The answer decides whether the reprocess is ONE mechanism (B2 + sidecar) or THREE — and it's the first thing the map can't yet tell you without reading the actual missing spans. (Corollary to hold: when B2 populates app[], does DSL-full = candidate-body + sidecar-app[] by multiset — i.e. does the apparatus↔body boundary partition cleanly enough for the gate's fact-based apparatus credit to reconcile?) + +**State at wrap:** chamber-library clean + 3 commits pushed both remotes; 119/119 tests; map committed at `_curation/loeb-body-conservation-map-2026-07-13.tsv`; PENDING-57 CLOSED under REVIEWED-57; CLAUDE.md doc-currency updated (sweep in the fleet). dotfiles committed+pushed at wrap. diff --git a/claude/memory/session-ledger-2026-07-13.md b/claude/memory/session-ledger-2026-07-13.md new file mode 100644 index 0000000..b2bd45b --- /dev/null +++ b/claude/memory/session-ledger-2026-07-13.md @@ -0,0 +1,74 @@ +--- +name: session-ledger-2026-07-13 +description: "Practice-of-return ledger maintained by /symmetria — returns, open horizons, recalibrations, authorization moves, sub-agent dialogues, bypasses." +metadata: + node_type: memory + type: feedback + originSessionId: 734c43aa-f3a0-4cd1-a39d-27146420ee4a +--- + +# Session Ledger — 2026-07-13 + +## Returns +- 2026-07-13T08:1x — RETURN on the wrap's stated integration point. The wrap said "wire verify_body_conservation into verify_graduation.py's collect_checks." Verified against substrate: WRONG LAYER. `collect_checks(fm,body,spec)` is documented pure + consumed corpus-wide by audit_corpus.py:154 (over rglob every canonical .md); embedding an expensive source re-convert there breaks purity + explodes the corpus-map cost. The spec ALREADY models `body_word_conservation` as its OWN gate (graduation-spec.yaml:136, distinct from verify_graduation.py:135). Correct integration = a NEW gate step in graduate_to_canonical.py, at the source-in-hand layer (with/after source_gate), NOT collect_checks. Answers the literal question. +- Literal-question ANSWER (substrate-verified): source IS reachable at gate-time — NOT from frontmatter `source:` (prose/bare-filename, e.g. Levi "olmOCR of Vintage International…"), but via gate zero's existing resolution: canonical_slug → Chamber Sources manifest (324 entries, each carries `archived_file`) or resolve_pending_source(slug) for a just-staged source. Source-access needs NO greenfield design — just a path-returning resolver sibling to manifest_has (which returns bool only). Tier derivable from archived extension (.epub→V-TEXT / .pdf→V-SCAN-abstain / Loeb DSL→V-DSL, forward-only: 0 Loeb canon graduated yet). + +## Open horizons +- 2026-07-13 — STEWARD-FLAGGED, for step 5 (the sweep), NOT now: "cross-extractor drift-tolerance" is under-defined and doing real work in that sentence. Must be spelled out with the same rigor V-DSL's reflow-vs-loss got (the whole reason V-DSL needed rebuilding was reflow looking like loss) BEFORE the retroactive sweep runs — do not assume it from the name. Present a written definition for concurrence when step 5 comes up. +- 2026-07-13 — Integration point CONCURRED (steward): body_word_conservation lands as its OWN gate step in the graduation flow (with/after source_gate, source-in-hand layer), NOT inside collect_checks. FIX-class (where the call lives, not what it decides — the gate was ratified REVIEWED-57). Reuse gate zero's canonical_slug resolution (PENDING-52 holding under a use it wasn't built for). Build order: (1) resolver → (2) source_dispatch → (3) gate step → (4) spec reflect → (5) sweep [needs the drift-tolerance definition first]. +- 2026-07-13T07:56 — PULLING THREAD: land the keystone. Wire `verify_body_conservation` into `verify_graduation.py` + `graduation-spec.yaml` (per-tier dispatch V-DSL/V-TEXT/V-SCAN → FLAG/REVIEW/PASS), fold the cross-extractor drift-tolerance (retroactive probe: 7/9 PASS, 2 false-positive stopword drift), run the diagnostic sweep → corpus-health map. PENDING-57 ratified (REVIEWED-57 filed), schema LOCKED, B2 fleet-v1 built. +- Literal question to answer FIRST: does the graduation candidate have its SOURCE reachable at gate-time (source_verified pin / resolvable path), or does source-access need its own small design before tier dispatch can call re-extract/re-convert? + +## Confidence to recalibrate +- Hold today: a check proven for ONE tier is NOT proven for another (V-DSL≠V-TEXT — the k-gram false-flagged the DSL reflow 2026-07-12). When writing tier dispatch, demonstrate each tier, don't reuse-and-assume. +- Hold today: keystone-first / forest-view — don't lose altitude in the wiring engineering (2026-07-12 drift: lost-the-forest-for-the-trees in a long execution arc). + +## Authorization moves +- 2026-07-13 — KEYSTONE LAID (FIX-class landing of REVIEWED-57). Steps 1–4 done + verified: (1) archive_sources.resolve_archived_source (path-returning sibling to manifest_has); (2) verify_body_conservation.tier_of + verify_candidate (one-call per-tier entry; header de-staled — REVIEWED-57 has ruled); (3) graduate_to_canonical.body_conservation_gate wired after source_gate (FLAG refuses / REVIEW holds / PASS+ABSTAIN proceed); (4) doc-currency: graduation-spec.yaml gate comment + chamber CLAUDE.md gate status (not-wired → WIRED). Evidence: seed-test still discriminates (legit-trim→REVIEW, interior-del→FLAG); real-data — Camus V-TEXT PASS @100%, Levi V-SCAN ABSTAIN; fleet 111→118 (2 new tests, 7 assertions). NOT committed (awaiting steward — push boundary held per the outward-action drift-pattern). +- HONEST LIMIT: no real FLAG/REVIEW case ran through the FULL graduate_to_canonical flow (the 7 inbox candidates were all pre-gated by health/conventions, so 0 reached the source-in-hand gate). The composition IS covered — seed-test proves verify_candidate's FLAG/REVIEW; the unit test proves body_conservation_gate's verdict→disposition mapping — but not a single real end-to-end FLAG-through-graduation. +- STEP 5 HELD: retroactive diagnostic sweep NOT done — blocked on the cross-extractor drift-tolerance definition (steward-flagged, above). Do not run the sweep until it's defined + concurred. + +## Cross-extractor drift-tolerance — DEFINED (step 2, for concurrence) +- MECHANISM (not a threshold — the V-DSL-reflow parallel one level over): the retroactive sweep compares a LEGACY candidate (old extract_loeb_dsl, flattened, page-markers, dup headers) against the DSL reference (current strip_tags+_tokens). They differ by each side's KNOWN boilerplate, derived mechanically per-work: + · extractor_tokens (fab-side) = fixed Loeb subtitle {loeb,classical,library,bilingual,original,english,p} ∪ work-string tokens (the `# AUTHOR, Work` header). + · boilerplate_tokens (loss-side) = DSL labels {page,number,footnotes} ∪ work-string tokens (DSL per-page running header). +- PROVEN on 11 real books: 10/11 → PASS with residual EXACTLY 0 both sides (drift cancels completely, incl. Homer Iliad 298k). 1/11 (Aristotle Oeconomica) → FLAG, residual 216 = REAL (candidate has 97% of DSL Greek, missing ~187 Greek tokens) — tolerance did NOT wash out real loss. +- HONEST EDGE (the remaining rigor to settle before the sweep): the residual after accounting still needs a contiguity/position read to split TRUE loss (contiguous dropped run) from finer tokenization drift (scattered, esp. Greek elision/final-sigma/accent). The V-TEXT path's _uncovered_runs already does exactly this — apply it to the residual. Aristotle is the test case. +- DISPOSITION for the diagnostic sweep (read-only, produces the corpus-health MAP; not a hard forward gate): residual 0 → clean · residual>0 → surface by size + contiguity note for human triage → sizes the 952-book reprocess. +- Probe scripts: scratchpad probe_drift.py (raw) + probe_drift_accounted.py (mechanism). AWAITING STEWARD CONCURRENCE before building/running the 952-sweep. + +## Sub-agent dialogues + +## RETURN — the verse cluster (caught by staying with the run, 25-book batch) +- Built sweep_body_conservation.py (one-pass DSL index; live version-fab-cluster monitor; --validate OK). Ran 25 books: 14 CLEAN / 8 LOSS / 3 DRIFT?. STAYED WITH IT and a cluster formed: LOSS concentrated in Aeschylus verse with HUGE contiguity runs (persians 4081, suppliants 4118). +- First hypothesis "verse=Greek-loss" FALSIFIED same batch: Aristophanes acharnians/birds/clouds/frogs are CLEAN at 32-36% Greek (extractor CAN capture Greek verse fully). Magnitudes variable (persians 64% / suppliants 73% / eumenides 82% Greek captured) — no clean genre split. +- ROOT: the CONTIGUITY read (coverage/_uncovered_runs) is CONFOUNDED for bilingual verse by REORDERING — 50% of persians' "missing" Greek run appears elsewhere in the candidate. Coverage is blind to reordering (its own docstring caveat). My Aristotle "proof" was a clean contiguous PROSE drop — never exercised reordering. EXACTLY the steward's prediction ("_uncovered_runs hasn't been asked the verse question yet"). Proved the contiguity read on the one case that couldn't break it. +- RELIABLE signal = the MULTISET residual (classify_dsl, reordering-tolerant): persians genuinely 0.70 ratio / 64% Greek by COUNT → real deficit exists, but I CANNOT cleanly attribute it (real loss vs arrangement vs apparatus-handled-differently) with current tools. +- DECISION: STOPPED before the full 952 — a contiguity-based LOSS/DRIFT map would mislabel verse reordering as loss (a map that can't be trusted is worse than none — the substrate thesis). sweep tool NOT committed (classifier not corpus-ready for verse). Surfaced to steward for direction: (a) make the map's primary axis the reordering-tolerant multiset-deficit % + restrict contiguity to prose, or (b) understand the verse DSL-vs-extractor arrangement first. + +## THE 952 SWEEP — ran, map produced, dominant cluster explained (staying-with-it caught it) +- MAP: CLEAN 802 · DEFICIT 144 (>25%:10, 10-25%:8, 1-10%:126) · REORDER? 6 · FAB? 0 · UNMATCHED 0. TSV: scratchpad/loeb-health-map.tsv (952 rows). +- Version-coverage monitor CLEAN: every residual-fab shape 1× (no vintage cluster) — the boilerplate set generalized across all 952. Steward's version-watch came up empty (good). +- DOMINANT CLUSTER = the small-deficit floor: 124/144 DEFICIT books hold 93-99% (1-10% bucket), same ~2-5% contiguous shape everywhere. PINNED IT: the block is the APPARATUS CRITICUS — editor names (Detlefsen/Mayhoff/Schneider/Gaza), ms sigla (codd/vulg/u), lacuna markers — across 4 max-diverse authors (Pliny/Cicero/Theophrastus/Aristotle). The old extract_loeb_dsl FLATTENED/dropped the apparatus footnotes; B2 (build_loeb_sidecar) PRESERVES them into typed sidecar fields. ⇒ NOT body loss — the steward's app[]-sidecar prediction CONFIRMED (he flagged exactly this before the run: "apparatus handled differently = a sidecar-modeling question, not reconversion"). These 124 are body-clean, apparatus-divergent. +- REAL large deficits: ~18 books >10% (athenaeus 70%/199k, macrobius 68%, longus 58%, catullus 57%, suetonius 34%, plutarch-moralia-other-fragments 22%, the Aeschylus verse 70-79%, aristotle history-of-animals 89.5%/21.8k) — a DIFFERENT phenomenon (real body loss / ref over-inclusion), mixed prose+verse. THIS is the target of the cause-investigation. +- 6 REORDER? (augustine confessions, galen art-of-medicine, aristotle problems, philo on-abraham, lucian dialogues-of-the-gods, diogenes 6.2) — arrangement; magnitude unresolved. Confound detector working. +- sweep_body_conservation.py BUILT + --validate OK. NOT committed pending steward read: should the DEFICIT label split into apparatus-divergent (body-clean) vs body-deficit, per the app[] frame? That reclassification is the steward's app[]-modeling territory. + +## Apparatus split — factual question answered, content-detector rejected, magnitude split shipped +- Factual answer (steward's shaped-vs-accounted question) VERIFIED against substrate: apparatus-SHAPED, NOT accounted. 0 Loeb canonicals have .meta.json sidecars; build_loeb_sidecar = PROTOTYPE v0, NOT wired into graduation (~few dozen draft sidecars plato/ennius/plautus only). So the 93-99% floor is content-shape-diagnosed, not sidecar-verified. +- CONTENT apparatus-detector TRIED TWICE, REJECTED: apparatus INTERLEAVES with body, so a real body-loss run sweeps up embedded apparatus and OUT-SCORES genuine apparatus (Persians dens 0.052 > Pliny 0.048, even high-precision Latin-only). Shipping it would hide a real loss as apparatus — dangerous false-negative. Not shipped. +- SPLIT by MAGNITUDE (robust; apparatus inherently ≤~5%, so >10% deficit can't be apparatus): APPARATUS-SHAPED (holds≥90%, magnitude+spot-check diagnosis, minority=small real drops but all low-priority) vs BODY-DEFICIT (holds<90%, investigation target). GATE apparatus-credit FACT-GATED (populated app[] only, never the shape diagnosis) — documented in verify_candidate V-DSL branch; inert now (0 sidecars), blocked on B2 run. +- Committing sweep tool + map + gate-note (steward: commit once split's in, don't hold beyond). + +## RETURN — restoring the REORDER? number exposed a matcher bug (steward-caught gap) +- Steward caught: I labeled REORDER? "magnitude unresolved" — WRONG, only the CAUSE is unresolved; the position-blind multiset deficit is a clean reportable number (Augustine 29673), never misbehaves for that bucket. My error (withheld a number that was in the data). Fixed: REORDER? now carries holds%+deficit, "known magnitude / unknown cause" said as both. +- Restoring the number EXPOSED a matcher bug: 4/6 REORDER? had holds≫100% (cand ≫ matched ref). Diagnosed: wrong DSL key chosen among near-duplicates — aristotle-problems (217k) matched 'Mechanical Problems' (21k) not 'Problems'; diogenes 6.2 matched '2.6 Xenophon' (83 sibling keys); augustine matched 'Confessions Books 1-8' (partial) not 'Confessions'. The extractor CANNOT add content, so cand>110% of source = reference wrong/partial. +- Scope quantified: 0/802 CLEAN have holds>110% (subset-match fear RULED OUT — matcher bug did NOT hide in CLEAN); contained to exactly the 4. 946 well-matched. +- FIX: MATCH-SUSPECT disposition (holds>110% → comparison invalid, no deficit/reorder claim), checked before CLEAN/deficit so a subset-match can't masquerade as clean. Leaves REORDER? = only augustine(104%)+philo(88%), the genuine known-mag/unknown-cause cases. Re-running (sweep4). +- FOLLOW-UP (noted, not this session): the matcher's key-selection among near-duplicate/split DSL keys needs improvement (exact-title preference + granularity aggregation) — but MATCH-SUSPECT flags them honestly meanwhile. + +## Bypasses + +## State at wake +- Dotfiles dirty: `M claude/memory/skill-harvest-register.md` uncommitted (likely prior wrap's §1.6 append unpushed) — surfaced at wake, not touched. +- One new chamber commit since wrap: `378efdc` gitignore comment-format fix (trivial, beside the thread). diff --git a/claude/memory/skill-harvest-register.md b/claude/memory/skill-harvest-register.md index 8b76f55..049fab6 100644 --- a/claude/memory/skill-harvest-register.md +++ b/claude/memory/skill-harvest-register.md @@ -444,3 +444,5 @@ The single place proposed skills live so they don't evaporate between sessions. | **Symmetria §3 flag: a check proven for one tier/case is NOT proven for another** | Symmetria §3 flag | Reusing a verification method across a boundary it wasn't demonstrated on is contamination shape — the V-TEXT k-gram coverage check FALSE-FLAGGED a clean V-DSL book (reflow ≠ born-digital). Antidote: an injection/demonstration test PER tier/case, don't reuse-and-assume. Kin to `trust-prior-pass-frame` (one level up: not "extend the same pass" but "reuse the same *instrument*"). | Symmetria §3 | **PROPOSED** | *(One proposal, genuinely recurring-shaped — the jurist's demonstration-discipline is the human version of this flag; making it a §3 flag would make the executor reach for a per-tier demonstration before shipping a reused check. The Doc-currency protocol is BUILT, not proposed — steward directed it explicitly.)* + +> **⏭ STEWARD REQUEST (2026-07-12): hold a full skill-harvest REVIEW next session (2026-07-13).** Walk the open proposals accumulated in this register (the 2026-06-05-style full review) — rule each PROPOSED item (build / authorize / defer / reject), prune the built/stale, and specifically rule the new **Symmetria §3 flag: a-check-for-one-tier-isn't-proven-for-another**. Surface this at /wake-up.