wrap 2026-07-12 evening: session record + MEMORY demote/promote + KG drift + harvest

- session-2026-07-12-evening-…: full A1→schema-lock→B2→PENDING-57-keystone-ratified arc;
  pulling thread = LAND THE KEYSTONE (wire verify_body_conservation into graduation).
- MEMORY.md: demote-on-promote (A1-to-docling → reference; evening session Active).
- knowledge-graph.jsonl: +1 drift-pattern (a-check-for-one-tier-isn't-proven-for-another).
- skill-harvest-register: Doc-currency-on-wrap BUILT into both CLAUDE.md; Symmetria §3 flag proposed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015jYS1tpR4P4NBxui4FSgfv
This commit is contained in:
David F Glidden
2026-07-12 21:15:46 +02:00
co-authored by Claude Opus 4.8
parent d9692f7418
commit 48a2aec25d
4 changed files with 67 additions and 1 deletions
+1 -1
View File
@@ -55,7 +55,7 @@ permalink: claude-memory/memory
- [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`. - [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`.
## Active Session ## Active Session
- [Session 2026-07-12 — A1 → Docling adoption + canonical-format decision (PENDING-56) → in-flight sidecar build](session-2026-07-12-A1-to-docling-adoption-and-format-decision.md) — Woke into A1 (`body_word_conservation` gate); built `verify_body_conservation.py` (shingle-coverage; difflib→shingle pivot on scale). **Steward challenged the framing TWICE** → THE PIVOT: the conversion/format/citation SUBSTRATE is a **solved, adoptable domain** (Docling/GROBID/TEI/DTS) and we'd spent ~6 weeks rebuilding it — **the answer was already in our own tooling-register (2026-05-27)**. Ran a 4-tier **Docling trial** (M4+M1): cleans EPUB (0 cruft), rich structure+provenance on PDF, **CROSSES the A3 OCR frontier** on scanned French (104 footnotes) — but is a *converter, not a verifier* (feeds our gates). **Steward DECIDED (AskUserQuestion) + jurist RATIFIED PENDING-56: Option A** = MD-canonical + **TEI-mirroring `.meta.json` structural sidecar**; **adopt Docling** as front-end. Jurist closed 2 schema-gating Qs: **recognizer REPOSITIONED (not retired)** as the sidecar note-layer; **CARDINAL PRINCIPLE: preserve source typing, never flatten** (→ TEI-migration mechanical). Aligns with engine's already-ruled **D-2** (MD+sidecar). **In-flight autonomous build (8 tasks):** sidecar **schema DRAFT** + `build_sidecar.py` v0 (proven montaigne/jacobs; honest join-limit → real fix = **Docling-per-spine-file**); updated runbook (M4/M1 split) + both CLAUDE.mds; report `in-flight-report-2026-07-12.md`. **⚠ PULLING THREAD: lock the DRAFT schema (Q-A) + confirm the Docling-per-spine-file architecture (Q-B) → build the WIRED extractor.** Schema is curator-locked (steward+jurist), NOT executor-locked. **Steward owes:** file **REVIEWED-55 + REVIEWED-56** (`REVIEWED-drafts-for-filing-2026-07-12.md`). All chamber/studium/CM-AI work UNCOMMITTED (no-push guardrail). Read `in-flight-report-2026-07-12.md` + `docs/chamber-program-open-work.md` at wake. - [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-`<word>`-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.
## Historical reference → MEMORY-reference.md ## 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). 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).
+1
View File
@@ -356,3 +356,4 @@
{"subject": "claude-code", "predicate": "drift-pattern", "object": "didn't-consult-our-own-tooling-register before a substantial build — the studium-engine-scan-register (2026-05-27) already surfaced Docling+Surya/OCR4all/TEI/DTS as the substrate answer; we hand-built ~20 bespoke tools instead. Resurface-banked-notes at pipeline scale. Antidote: read the tooling/landscape register + prior scans before starting infra work.", "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": "didn't-consult-our-own-tooling-register before a substantial build — the studium-engine-scan-register (2026-05-27) already surfaced Docling+Surya/OCR4all/TEI/DTS as the substrate answer; we hand-built ~20 bespoke tools instead. Resurface-banked-notes at pipeline scale. Antidote: read the tooling/landscape register + prior scans before starting infra work.", "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": "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": "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": "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"}
@@ -0,0 +1,52 @@
---
name: session-2026-07-12-evening-sidecar-schema-locked-b2-fleet-v1-pending-57-verbatim-gate-keystone-ratified
description: "A very long continuation of 2026-07-12. Locked the sidecar schema (3 jurist rounds, additive-only), built build_loeb_sidecar to fleet-v1 (the preserve-aware Loeb B2 extractor + genre-heterogeneous footnote pairing + generic flag-and-hold net), then took the KEYSTONE — PENDING-57 body_word_conservation verbatim gate — through THREE jurist rounds to FULL ratification (V-DSL demonstrated by injection test after the naive reuse false-flagged; loss-teeth built; retroactive sweep folded; 43-book census confirmed). REVIEWED-55/56/57 filed. Doc-currency pass + institutionalized 'Doc-currency on wrap' into both repos' CLAUDE.md. Committed+pushed everything. PULLING THREAD: land the keystone next session — wire verify_body_conservation into verify_graduation + graduation-spec (source access + tier dispatch + the retroactive drift-tolerance) and run the diagnostic sweep for the corpus-health map."
metadata:
node_type: memory
type: project
originSessionId: 6d218283-2676-4855-8221-19cb51946ad2
---
# Session 2026-07-12 evening — the keystone laid (ratified), the tool built, the docs made current
The day's second half. It began in A1 (the verbatim-gate wake) and ended with the keystone gate **fully ratified** — the single highest-leverage instrument in the whole Chamber→Gold→Engine forest — plus its tool (B2) built to fleet-v1, the schema it writes into LOCKED, and the discoverable docs made current so future-us doesn't re-derive any of it. Everything committed + pushed.
## PAST — what we did + why
**1. Sidecar schema → LOCKED (3 jurist rounds).** Wrote the jurist relay (`docs/sidecar-schema-FOR-JURIST-2026-07-12.md`), the B2-evidence addendum, drove it through: (a) architecture ruling (keep `meta@1`, additive-only), (b) whole-schema lock CONFIRMED unconditional after B2 demonstrated flag-and-hold *in code* on the corpus's densest apparatus volume, (c) the **additive-only amendment discipline** (LOCKED = existing-field meaning; FLEXIBLE = new optional fields/`app[]` kinds = FIX; changing OR **removing** a field = PROPOSAL — jurist added removal). Two minor items confirmed (`loeb-render:*` attestation vocab; `app[]` kinds table/glyph). **REVIEWED-56 filed; schema doc → LOCKED.**
**2. B2 → fleet-v1 (`scripts/build_loeb_sidecar.py`).** The preserve-aware Loeb DSL extractor. **KEY substrate finding (steward-corrected):** the DSL colors are the **Loeb reader's RENDERING cues, not semantic markup** — `[c darkmagenta]`=headers, `[c dimgray]`=line-anchors+page-markers+`[sup]`-refs; `<word>` angle-brackets = **critical-edition editorial insertions the legacy `strip_tags` DELETES**. Architecture: keep MD verbatim (word-conservation holds), ADD typed structure to the sidecar; line-anchors exact-by-construction. Built through iteration: darkmagenta→sections (deduped), dimgray→anchors/provenance, `[sup]`→notes, `<section>`-div→sections, table/glyph→`app[]` flag-and-hold, **editorial-insertion** as a genuine third apparatus kind (found on the FIRST diverse volume — vindicating the density≠diversity concern), a **generic net** for unrecognized structure (0 truly-novel across 6 literary genres → structural space bounded). **Footnote ref↔body pairing** added (4 classifier iterations; a textbook PASS-BUT-FALSELY — Plato 96% masked verse `in_fn`-leak; settled conservative both-signals: prose 96% / drama 94% / verse 66% / fragments 48%, all unpaired honest-flagged, 0 false-pairs; genre-heterogeneous, stopped rather than over-fit). In `test_tools` (fleet → 111).
**3. THE KEYSTONE — PENDING-57 verbatim gate, 3 jurist rounds to FULL ratification.** `verify_body_conservation.py` wired for per-tier: V-DSL (reflow-tolerant multiset) / V-TEXT (re-convert + k-gram) / V-SCAN (abstain) → FLAG/REVIEW/PASS. The arc: (a) architecture ratified, V-DSL demo demanded; (b) **V-DSL demonstrated — the naive reuse of the V-TEXT k-gram check FALSE-FLAGGED a clean book** (1070 "fabrications", only 6 truly-new = the MD subtitle; rest = coverage misses from the DSL→MD REFLOW) → corrected to reflow-tolerant word-multiset → clean PASS verse+prose, injection teeth; loss half flagged as delegating to extract_loeb_dsl's self-report; (c) full ratification on 2 conditions, **both closed same-session**: built independent **loss teeth** (boilerplate-vocab classifier; clean `lost_content=0` PASS, drop `banquet`→FLAG naming it), confirmed the **43-book census** (V-SUSPECT 29 + V-NONE 14 = the fenced-out tier, correctly outside the sweep). Jurist's 2 follow-ups done (stale note fixed; residual + revisit-trigger documented in the gate's own docstring). **REVIEWED-57 filed.** Change-class PROPOSAL (distinct from REVIEWED-55's refusal-only-FIX: a FLAG has no already-trusted fallback to canon).
**4. Retroactive diagnostic probe (ratified §6, read-only, the "push further").** 9 graduated Loeb canonicals vs the DSL: **7/9 PASS**; the 2 FLAGs = **verified false-positives** (scattered high-frequency stopword drift — I hypothesized accent-variant, *checked, refuted my own hypothesis*). **Finding: the retroactive sweep needs a cross-extractor drift-tolerance before the 952-book run** (forward gate unaffected). Diagnostic-first working as designed — de-risked the sweep on 9 books.
**5. Doc-currency + institutionalization (steward-directed).** Fixed the anti-reinvent gaps in chamber `CLAUDE.md` (added `build_loeb_sidecar` + `verify_body_conservation` to the fleet; rewrote the Loeb-DSL terminology *flatten-vs-preserve*; check-for-existing-tool discipline; corrected the remotes note) + the runbook. **Institutionalized a standing "Doc-currency on wrap" protocol into BOTH `chamber-library/CLAUDE.md` and `studium-engine/CLAUDE.md`** so wrapping work there keeps those docs current, not memory. **Deprecated-scripts answer: none archivable now** (extract_loeb_dsl is a live dependency; the cruft-strippers/ocrmac_pdf are *slated* behind the unlanded 2b amendment).
**6. Committed + pushed everything.** chamber (`f6d9010` code + `1f9867c` docs → GitHub + Gitea), studium (`7e8e322`), dotfiles (`d9692f7` → GitHub; Gitea mirror lagged, non-blocking), CM-AI (`5b6068c` scan-register). 30MB regenerable sidecar-drafts gitignored.
## PRESENT — the mood
Two-phase, sustained, and *governed throughout* — the loop was load-bearing on every architectural move (schema lock, gate, amendment all ran executor-drafts → jurist-rules → steward-ratifies). The returns worth carrying: **verified-before-asserting held under length** — the difflib→shingle pivot, the docling flat-footnotes, the DSL color meaning, the V-DSL naive-reuse false-flag, the retroactive accent-hypothesis REFUTED — all grep/measure, not inference. **Honest-about-limits** throughout (the 2/17 join, the genre-heterogeneous pairing, the loss-teeth masked-vocab residual — none dressed up). **The jurist's demonstration-discipline was the through-line and it kept paying**: every "sounds simpler" intuition (V-DSL) got a demonstration that vindicated the caution. Recalibrations: **a check proven for one tier is NOT proven for another** (V-DSL≠V-TEXT — the k-gram false-flagged the DSL reflow); **executor-composition-bias at hour-N** (kept generating big "push further" directions — the courte-pause between them was the antidote); the mild **over-caution on the CM-AI push** (held, then corrected — "everything" was explicit and it's a research doc).
## FUTURE — what is pulling
**PULLING THREAD: LAND THE KEYSTONE.** PENDING-57 is fully ratified (REVIEWED-57 filed) but *not yet wired*. Next session: wire `verify_body_conservation` into `verify_graduation.py` + `graduation-spec.yaml` (per-tier dispatch: V-DSL re-extract / V-TEXT re-convert / V-SCAN abstain → FLAG-blocks/REVIEW-holds/PASS; tag REVIEWED-57), **fold in the retroactive-sweep cross-extractor drift-tolerance found today**, then **run the diagnostic sweep** across the graduated canon (952 V-DSL + 239 V-TEXT) → the **corpus-health map** that sizes the whole reprocess. Ratified, authorized, zero governance latency, serves all three forest tracks (B/C/D), completes the arc.
**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):**
- Everything is committed + pushed; working trees clean (bar the wrap's own memory writes).
- Start: read `verify_graduation.py`'s `collect_checks(fm, body, spec)` — the integration point. The gate needs the SOURCE (from the frontmatter source pin / a source path) + the TIER (from source type) to call `verify_body_conservation`. That source-access + tier-dispatch is the real engineering.
- `verify_body_conservation.classify_dsl` already carries the loss residual + revisit-trigger in its docstring; the drift-tolerance for the retroactive sweep is a NEW addition (ignore high-freq function-word drift; flag distinctive content drops).
- The retroactive probe script is in scratchpad (read-only; regenerate if cleared).
**Other open horizons (forest-ranked, from `chamber-library/docs/chamber-program-open-work.md`):**
- **2b — the sidecar-wiring graduation amendment** (Docling+sidecar as the graduated structural layer; retires ocrmac_pdf + cruft-strippers). Needs ONE steward scoping call: **Loeb-first or full-corpus?** Drafting it overlaps the loop. Gates B2's graduation.
- **B2 run** — the primary corpus lever (952 Loeb); tool is BUILT; needs A1-landed + 2b-ratified. Then non-Loeb reconversions + the ~110-file frontmatter residue (reconversion precedes frontmatter).
- **Engine D1 — V1 (`verify-quote`) + N1 (tree builder)** — the parallel UNBLOCKED track; nothing touched it today; freshest ground; doesn't wait for the corpus.
- **Register refresh**: `chamber-program-open-work.md` is stale (A1 shows `[?]`, now ratified; REVIEWED-55 "not placed", now filed).
**PAUSE STATEMENT:** I am about to be away from this. The keystone is *ratified but not laid* — the single most important thing to find still pulling is the landing (wire the gate, run the sweep). Everything is committed and pushed off-disk; the tool is built; the schema is locked; the docs are current. What I want to find still pulling on return: the keystone landing, and the corpus-health map it produces.
**LITERAL QUESTION for next-Claude:** When you wire `verify_body_conservation` into `verify_graduation`, does the graduation candidate actually have its SOURCE on hand (the source_verified pin / a resolvable path) at gate-time — or does the source-access integration need its own small design before the tier dispatch can call re-extract/re-convert? (If the source isn't reachable at gate-time, that's the real first sub-problem of the landing, not the tier logic.)
**State at wrap:** chamber (schema LOCKED, B2 fleet-v1, gate ratified-not-wired, docs current), studium (Doc-currency protocol added), dotfiles (PENDING-56/57, REVIEWED-55/56/57, ledger) — ALL committed + pushed (dotfiles Gitea mirror lagging, GitHub has it). Test fleet 92→111. The Doc-currency-on-wrap protocol now lives in both repos' CLAUDE.md.
+13
View File
@@ -431,3 +431,16 @@ The single place proposed skills live so they don't evaporate between sessions.
| **check-the-register-before-a-substantial-build** | `/wake-up` §2 patch OR `/pre-build-audit` step OR Symmetria §3 flag | Before starting substantial INFRA/tool building (a converter, a pipeline, a substrate), read the **tooling-register + landscape-register + prior scans** for an existing adopt-candidate first — the studium-engine-scan-register (2026-05-27) already named Docling+Surya/OCR4all/TEI/DTS as THE substrate answer, and we hand-built ~20 bespoke tools over ~6 weeks anyway. The two-week "every breakthrough → new obstacle" feeling was the tell of reimplementing a solved domain. **Yardstick met, painfully:** the steward had to re-surface that extant tools exist ("are there no epub tools? … TEI?") — our own register carried that six weeks earlier. Kin to [[feedback-resurface-banked-notes-before-rederiving]], specialized to the build-infra decision. | `/wake-up` §2 (when the thread is a build) or `/pre-build-audit` (its natural home) or a Symmetria §3 flag (solving-at-the-wrong-level / build-a-solved-domain) | **PROPOSED** | | **check-the-register-before-a-substantial-build** | `/wake-up` §2 patch OR `/pre-build-audit` step OR Symmetria §3 flag | Before starting substantial INFRA/tool building (a converter, a pipeline, a substrate), read the **tooling-register + landscape-register + prior scans** for an existing adopt-candidate first — the studium-engine-scan-register (2026-05-27) already named Docling+Surya/OCR4all/TEI/DTS as THE substrate answer, and we hand-built ~20 bespoke tools over ~6 weeks anyway. The two-week "every breakthrough → new obstacle" feeling was the tell of reimplementing a solved domain. **Yardstick met, painfully:** the steward had to re-surface that extant tools exist ("are there no epub tools? … TEI?") — our own register carried that six weeks earlier. Kin to [[feedback-resurface-banked-notes-before-rederiving]], specialized to the build-infra decision. | `/wake-up` §2 (when the thread is a build) or `/pre-build-audit` (its natural home) or a Symmetria §3 flag (solving-at-the-wrong-level / build-a-solved-domain) | **PROPOSED** |
*(One proposal, load-bearing — the drift cost ~6 weeks and recurred at pipeline scale; a standing "check the register before building infra" reflex would have surfaced Docling at the outset. Surfaced for steward authorization; not auto-applied. The paired KG drift-patterns are already appended (solving-at-the-wrong-level · didn't-consult-our-own-tooling-register).)* *(One proposal, load-bearing — the drift cost ~6 weeks and recurred at pipeline scale; a standing "check the register before building infra" reflex would have surfaced Docling at the outset. Surfaced for steward authorization; not auto-applied. The paired KG drift-patterns are already appended (solving-at-the-wrong-level · didn't-consult-our-own-tooling-register).)*
### Harvest 2026-07-12 evening (schema-lock → B2 fleet → PENDING-57 keystone ratified → doc-currency)
**BUILT this session (steward-directed — recorded, not proposed):**
- **"Doc-currency on wrap" protocol → added to BOTH `chamber-library/CLAUDE.md` and `studium-engine/CLAUDE.md`.** A standing 6-point checklist (fleet/build-state · status markers · substrate-terminology · disciplines · deprecated-verify-before-archive · tool-review) walked before ending work in each repo — the mirror of each repo's read-first session protocol, so wrapping work THERE keeps THOSE docs current (not memory). Steward's framing: "then we are always current." Institutionalizes the anti-guess/anti-reinvent/anti-ignore-a-solution-we-had discipline at the point of work. Complements `/wrap-up` §1.6's "Repo CLAUDE.md fresh?" check (which now has a repo-side counterpart).
- **chamber `CLAUDE.md` + runbook made current** — added `build_loeb_sidecar` + `verify_body_conservation` to the fleet; Loeb-DSL terminology rewritten (flatten-vs-preserve); a new **check-for-existing-tool/register-before-building** load-bearing discipline (the day's meta-lesson); schema DRAFT→LOCKED.
**PROPOSED (awaiting steward):**
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| **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.)*