session 2026-07-01: Making graduations (Mumford I+II) + graduation rail; session memory + ledger + skill-harvest + CapableHands auth

This commit is contained in:
David F Glidden
2026-07-02 00:05:37 +02:00
parent fc7ba776be
commit 998dc47c8c
5 changed files with 163 additions and 0 deletions
+4
View File
@@ -12,6 +12,7 @@ permalink: claude-memory/memory
# Claude Code Memory
## Standing preferences
- [CapableHands standing authorization](reference-capablehands-standing-authorization.md) — M4 mini david@10.0.1.136 durably authorized for remote OCR/inference; don't re-ask permission to use it (steward 2026-07-01).
- [Typography palace — query via CLI](reference-typography-palace-cli.md) — the type masters (Bringhurst/Tschichold/Hochuli/Lupton/Sousa, ~20-21 sources) live in a dedicated MemPalace at `~/.mempalace/palace-chamber-typography`; query with `mempalace --palace <that> search "…"` (CLI, NOT the MCP tools which point at palace-memory). For ARC typography work — don't re-ask where it lives.
- [Fowler's rules for quotation](feedback_fowlers_rules_quotation.md) — single quotes primary, double for nested, logical British punctuation order. Apply across all writing.
- [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.
@@ -50,6 +51,9 @@ 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`.
## Active Session
- [Session 2026-07-01 — Making-source graduations + the graduation rail](session-2026-07-01-making-graduations-and-the-rail.md) — Graduated **Mumford Myth-of-the-Machine I + II** into `canonical/…/environmental/` (both gates PASS, verbatim intact, plates gathered, title-case). **Jonas HELD** on a degraded-scan gap (p248 = appendix conclusion; steward finding a clean copy). **Built the machine-readable graduation RAIL** (steward-initiated after catching two of my misses — hand-written-not-runbook instructions + graduating-with-a-flagged-gap): `_curation/graduation-spec.yaml` (conventions as data, incl. the layer separation I got wrong — `source_sha256`→reading-index SIDECAR not frontmatter) + `scripts/verify_graduation.py` (spec-driven validator, caught every divergence) + `graduate_to_canonical.py` now FAIL-CLOSED on the gate + runbook pointer. **PENDING-44** (dotfiles `fc7ba77`). Class-fix: `gaps_BLOCK_graduation`. Tier-A dedupe applied (`998fe7a`, 934MB). Derrida 2-up scramble caught+fixed (split_spreads.py, re-OCR queued). chamber `main @ d9be3e4` pushed. **PULLING THREAD: come through the ~12 pending Making sources fast now that the rail exists (most are EPUBs=fast path) + build `/graduate-chamber-source`.** In flight: Empedocles OCR done→Greek-cross-check, Derrida-redo, Catafalque text-layer. Q: did Derrida-redo finish clean + did steward find a Jonas copy?
## Archived (2026-07-01 — Making graduations + the rail)
- [Session 2026-06-30 evening — Loom/Mill convergence + consolidation reframe](session-2026-06-30-evening-loom-mill-and-consolidation.md) — Two converging arcs. **ARC 1 (Loom/Mill):** Seb's instance shared the Spec Loom & Mill methodology (2026-06-28); I acted by GROUNDED reconciliation not theory (the docs name theory-bloat as the most-acute disease) — two halves of one four-party team independently re-derived ONE governance genome; we've built its instruments by hand (ratchet=skill-harvest+tool-evolution-log+ladder; two-register split=MemPalace↔MEMORY.md already executed; diseases=Symmetria §3 flags), and hold pieces they only NAME (authorization-taxonomy=governance-of-the-ratchet; contamination-problem=mechanism under "judge-overwhelmed-into-assent"). Built+pushed CM-AI `2a53ac3`: reconciliation + governance field-guide + David→Seb message. **SLM-1 (Chamber's independence) = David's ticket; the Chamber is THE Chamber.** **ARC 2 (consolidation):** CHALLENGED THE FRAMING (steward: Calibre was only a cheap catalogue means) → reframed substrate to **plain files + regenerable manifest**, Calibre demoted to disposable view (dissolves byte-preservation tension by construction); rewrote the read-only plan. **Audited Ars Legendi** (steward's PRE-PIPELINE ARC-spec source collection, all critical): 48 books = 19 dupe/3 same-work/**26 UNIQUE** (several = chamber needs-locate) → absorb selectively. **PULLING THREAD: the Chamber consolidation IS the methodology's real test slice (=SLM-1); execute Phase 0→1 tomorrow from the substrate-correct plan, gated on steward's Tier-A cut + Q-answers + Seb's clasp instructions.** Steward ended low/tired — released to rest. Q: did Seb send clasp instructions overnight + has steward made his Tier-A cut?
## Archived (2026-06-30 evening — Loom/Mill + consolidation reframe)
@@ -0,0 +1,12 @@
---
name: reference-capablehands-standing-authorization
description: "CapableHands (M4 mini, david@10.0.1.136) is durably steward-authorized for remote operation — do NOT re-ask for permission to use it."
metadata:
node_type: memory
type: reference
originSessionId: 7d92573b-80fa-4d25-9d65-45abd76ca80d
---
CapableHands = the steward's M4 mini OCR/inference workhorse at **david@10.0.1.136** (~/capablehands/olmocr_mlx.py, splice_pages.py; uv + mlx). The steward has **durably authorized remote operation on this host** for OCR/inference work and asked not to be asked again about it (2026-07-01). Don't re-prompt the steward for permission to use CapableHands for these jobs.
Related: [[project-L1-reliability]] (CapableHands built as a BMF clasp), [[project-source-library-link-and-dedupe]], [[project-making-sequence-source-set]].
@@ -0,0 +1,61 @@
---
name: session-2026-07-01-making-source-graduations-building-the-graduation-rail
description: "Graduated Mumford Myth-of-the-Machine I+II into the chamber; built the machine-readable graduation RAIL (spec + validator + fail-closed graduate-tool gate) after the steward challenged why agents diverged. Jonas HELD on a degraded-scan gap (p248, appendix conclusion) — the gate now blocks flagged-not-resolved gaps. PULLING THREAD: come through the ~12 pending Making sources efficiently now that the rail is built (most are EPUBs = fast path) + build /graduate-chamber-source. In flight: Empedocles OCR done→Greek-cross-check+graduate, Derrida-redo finishing, Catafalque text-layer candidate."
metadata:
node_type: memory
type: project
originSessionId: 7d92573b-80fa-4d25-9d65-45abd76ca80d
---
# Session 2026-07-01 — Making-source graduations + the graduation rail
Long, foundational session. Started as /wake-up (steward better after a low evening), turned into a full day of Chamber Library graduation work that built lasting infrastructure. Steward's closing note: "taking more time than I anticipated, but I know it's a solid foundation." It is — today was rail-building, not source-moving; that's why it was slow and why tomorrow is fast.
## PAST — what we did + why
**Library dedupe (morning):** Steward approved collapsing all Tier A. Built `scripts/apply_dedupe.py` (governed: recomputed-sha256 byte-identity gate per removal, trash-not-delete to `~/Documents/___The Library [ePub_AWZ3]/_trash/dedupe-20260701`, op-record, count reconcile). 115 files / 934.2 MB collapsed, reversible. Committed `998fe7a`.
**Three graduations attempted (Jonas + Mumford I + II — the Making-OCR-queue trio):** Built candidates via parallel agents, then FIXED them against a spec (see rail). Outcome:
- **Mumford I (Technics and Human Development) + Mumford II (Pentagon of Power) GRADUATED** into `canonical_texts/traditions/contemporary_voices/environmental/` (steward chose environmental, beside Technics and Civilization; year 1967 per title page). Both gates PASS, verbatim intact (body word-counts reconcile; only apparatus dropped), OCR corrections logged, plates gathered into `# Plates` sections, title-case headings.
- **Jonas (The Imperative of Responsibility) HELD** in `converted_texts/.../phenomenology/` — blocked on a degraded-scan gap at PDF p248 (the **conclusion of the Appendix**, cut off at "…perhaps even the ignorabimus;"). No better copy in the library; contrast-recovery+OCR couldn't read it. Steward will look for a clean copy.
- Committed `d9be3e4`, pushed both repos.
**THE RAIL (the session's real product) — steward-initiated via two challenges:**
1. *"Did the agents not use the rulebook?"* — caught my miss: I gave agents hand-written instructions, not `conversion-runbook.yaml`, AND invented frontmatter fields `tradition_path`/`source_sha256` that aren't the convention. Steward's memory corrected me: `source_sha256` is REAL but lives in the reading-index SIDECAR (spec §VI, hash-bound), NOT text frontmatter. Verified against `reading-indices/*.yaml`. Layer separation was the thing I got wrong.
2. *"Shouldn't there be a machine-readable version referred to whenever we do this work?"* → built:
- `_curation/graduation-spec.yaml` — conventions AS DATA (frontmatter schema+layer-separation, heading title-case/levels, trim keep/drop, normalize flags incl. --no-heading-recovery + --lang, OCR-defect policy, integrity/scan-layout, gates). Operationalizes chamber spec §§II–VI.
- `scripts/verify_graduation.py` — spec-driven validator. PROVEN: caught every divergence on all 3 candidates automatically.
- `scripts/graduate_to_canonical.py` — now runs verify_graduation FAIL-CLOSED (cruft==0 necessary but not sufficient).
- runbook `policy.graduation_conventions` points to the spec.
- PENDING-44 (dotfiles `fc7ba77`), steward-authorized verbally; REVIEWED-46 owed.
**Steward-confirmed policies (locked in spec):** (1) fix unambiguous OCR doublings + LOG each; (2) convert `\textit`→`*..*` but verify genuinely italic in source; (3) gather plate captions into `# Plates` end-of-volume.
**Derrida 2-up scramble (caught + fixed):** Derrida source is a 2-up scan; olmOCR scrambled/dropped a page (écheveau→éche+filiation; page 73 content vanished). Built `split_spreads.py` (rotation-aware pixmap split), re-OCR queued on CapableHands (`derrida-split.pdf`, 160 pages). → spec rule: census scan-layout (rotation/2-up) BEFORE choosing OCR engine.
## PRESENT — mood / returns (from the ledger)
- **Clean returns:** challenged-the-framing repeatedly honored (I OWNED each miss the steward caught — the frontmatter-field invention, graduating-with-a-gap); census-through-a-pattern caught myself (KB-sized dedupe rows; wrong INDEX line in word-accounting); verify-before-delete (didn't remove the 2 differing leftovers); stopped main-thread line-by-line mapping when it mis-fired (delegated instead).
- **The load-bearing return: the steward caught me graduating Jonas WITH a known p248 gap** — "if there was a problem, how could we have graduated it?" I let "honestly flagged" substitute for "resolved" (contamination shape: honest-degradation excusing incomplete work). My OWN spec even permitted it. Fixed the class: spec `gaps_BLOCK_graduation` + validator `no_unresolved_gaps` + graduate-tool gate; un-graduated Jonas. The gate then also flagged the 2 stale leftovers as non-conformant (bonus).
- Recalibration to hold: **cite the governed doc; don't re-derive it in a prompt.** The whole rail exists because I re-derived instructions instead of pointing agents at the runbook.
## FUTURE — what is pulling
**PULLING THREAD (singular):** **Come through the Making sources efficiently, now that the graduation rail is built.** 29 Making sources; ~13 graduated; ~12 genuinely pending — and MOST ARE EPUBs (Sebald ×2, Crawford, Winnicott, Agamben, Borgmann, Steiner, Calasso, Celan, Virilio-Information-Bomb) = the fast pandoc path, no OCR. Today built the rail; tomorrow moves sources.
**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):**
- *First:* sort the ~12 pending by source-type (EPUB → pandoc path fast; scan → OCR). Census which are EPUB vs scan-only in `_curation/making-sources-index.json` + the library.
- *Then:* **build `/graduate-chamber-source`** (proposed skill since 2026-06-26, "build when the batch begins" — now is that time, and the rail it needs [spec+validator+gate] exists). It codifies census→OCR/EPUB→normalize→structure→frontmatter→2 gates→graduate.
- *Then:* batch — EPUBs first (fast wins), scans parallel; both gates fail-closed; steward rules per-source curatorial calls (tradition, edition, gaps).
- *In flight (already started):* **Empedocles OCR DONE (201/201)** → build candidate WITH the Greek cross-check (olmOCR body + tesseract-grc verify — the tooling proven this session; grc installed locally). **Derrida-redo** finishing (~done by now; `scratch/derrida-split.md` on CapableHands) → candidate. **Catafalque** → text-layer extract candidate (`scratch/catafalque-raw.txt`, 238,909 words, needs em-dash/hyphen cleanup + structure).
**Other open horizons, ranked:**
- *Held/special:* Jonas (p248 — steward finding a clean copy; then render/OCR/verify/splice/re-graduate); Alter's Psalms (Hebrew glyph-images — parked, needs steward's Hebrew per [[feedback-character-as-image-hazard]]).
- *Cleanup:* the 2 stale `converted_texts` leftovers (nature-of-order-vol-1-alexander, the-drowned-and-the-saved-levi) DIFFER from canonical + are non-conformant (old-form, no frontmatter) — investigate whether to discard or finish (they're the "Form B unfinished" Alexander-overnight class).
- *Paper debts (steward-owed):* REVIEWED-44 (operations.yaml), -45 (Chamber spec), -46 (graduation-spec/PENDING-44).
- *Deferred-with-reason:* the reading-index sidecars (source_sha256 layer) stay deferred per PENDING-42 §VI (settle corpus to gold first).
**PAUSE STATEMENT:** Away now. By return, Derrida-redo should be done, and the steward may have a clean Jonas copy. What I most want to find still pulling: **the Making sources moving fast on the rail we built** — the slow foundational work is behind us; the next hand's job is to turn ~12 pending sources (mostly EPUBs) into graduated, gate-passing canonical texts, and to build the /graduate-chamber-source skill that makes each near-one-command.
**LITERAL QUESTION for next-Claude:** *Did Derrida-redo finish clean (page 73 recovered, no scramble)? Did the steward find a clean copy of Jonas's Imperative for p248? And which of the ~12 pending Making sources are EPUBs (fast) vs scans (OCR)?*
**State:** chamber-library `main @ d9be3e4` clean, pushed (git.skemantix.com). dotfiles `fc7ba77` pushed (PENDING-44). Graduated: Mumford I+II (environmental). Held: Jonas (converted_texts, p248). In flight on CapableHands: Empedocles (done), Derrida-redo, split_spreads. Local: Catafalque raw, Greek-OCR tooling (tesseract grc).
@@ -0,0 +1,75 @@
---
name: session-ledger-2026-07-01
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: 7d92573b-80fa-4d25-9d65-45abd76ca80d
---
# Session Ledger — 2026-07-01
## Returns
- 2026-07-01T11:45 — census-through-a-pattern caught (self): cut-sheet parser regex matched only `(NN.NMB)`, silently dropped 30 KB-sized removal lines → reported 85 files/0.90GB vs the true 115/934.2MB. Verified against source summary before presenting; fixed unit handling (KB/MB/GB); reconciled exact. The drift flag paid for itself.
## Open horizons
- 2026-07-01T11:30 — Chamber consolidation = SLM-1, the methodology's live test slice. Phase 0 (flat Tier-A cut-sheet, read-only) doable now; Phase 1 gated on steward Tier-A cut + Q2/Q3 + Seb's clasp instructions. Plan: chamber-library/_curation/library-consolidation-plan-2026-06-30.md.
- Clasp: Seb's instance may have sent instructions overnight (Messages). Founders-mesh = alignment-not-inference; CapableHands-as-local-inference-clasp target.
- PENDING-43 [ESCALATE] two-register-genome — four-party, DO NOT act.
- Paper debts owed to steward: REVIEWED-44 (operations.yaml), REVIEWED-45 (Chamber spec).
## OCR jobs in flight (2026-07-01 ~13:00)
- Derrida Mal d'Archive: olmOCR running on CapableHands (PID 10885), ~40/80pp, ~40min. → scratch/derrida-mal-darchive.md. Recovers stripped accents.
- Empedocles: QUEUED (emp-after-derrida.sh PID 12115, waits for Derrida) → scratch/kingsley-empedocles.md. ~3hr. Then Greek cross-check (tesseract-grc).
- Catafalque: LOCAL text-layer extraction DONE — chamber-library/scratch/catafalque-raw.txt, 238,909 words, clean (Adobe layer good). Cleanup left: hyphen→em-dash, strip running-heads/page-numbers. No re-OCR needed.
- ALL graduations deferred — steward wants to do them together.
## GRADUATION BACKLOG (converted, NOT graduated — from prior sessions, on CapableHands scratch)
- Jonas — The Imperative of Responsibility (olmOCR Jun 29)
- Mumford — Technics and Human Development (Myth of the Machine I) (Jun 29)
- Mumford — The Pentagon of Power (Myth of the Machine II) (Jun 30)
- (Alexander 4 vols + Levi Drowned-and-Saved already IN canonical; scratch copies are leftovers. 2 stale staging copies in converted_texts/ to clean.)
- Docket once OCR lands: Jonas + 2 Mumford (ready) + Derrida + Catafalque + Empedocles.
## Confidence to recalibrate
- 2026-07-01T11:30 — Literal question unresolved from memory alone: whether Seb sent clasp instructions + steward made Tier-A cut. Held open, not inferred.
## Authorization moves
- 2026-07-01T11:55 — Steward approved "collapse all Tier A". EXECUTED via new scripts/apply_dedupe.py (sha256 byte-identity gate recomputed on every removal; dry-run clean 115/115; trash-not-delete). 115 files → ~/Documents/___The Library [ePub_AWZ3]/_trash/dedupe-20260701 (934.2 MB), op-record at _curation/dedupe-ops/. Reversible until quarantine emptied.
- 2026-07-01T11:58 — OCR graduation asks (Kingsley + Derrida re-convert) SURFACED for decision, not executed. Findings: Derrida mal-darchive.md diacritics-stripped (defective) → fresh olmOCR (source image-only, 80pp French). Kingsley = 2 works: Catafalque (821pp, GOOD Adobe text layer → extract+clean, no fresh OCR) + Empedocles Ancient Philosophy (201pp, image-only, dense polytonic Greek = unsolved-OCR-gap hazard). CapableHands ssh read blocked by classifier — need steward host-authorization. Awaiting: Greek handling + scope + host OK.
## Greek-OCR bake-off (2026-07-01T12:40)
- Decisive test on Empedocles p.123/p.130 (Greek-dense footnotes). BOTH engines read polytonic Greek.
- olmOCR (CapableHands): superior English body (reading order, char-accuracy — confirms steward); DOES produce Greek, BUT as a VLM can silently normalize/hallucinate Greek toward plausible-but-wrong forms (verbatim-killer). Real divergences vs tesseract on same footnotes.
- Tesseract-grc (local, grc traineddata installed): transcribes Greek glyphs literally (won't invent plausible Greek), noisier on layout/reading-order.
- DESIGN CONCLUSION (grounded): olmOCR = primary body engine; Greek spans get a CROSS-CHECK/verify layer vs tesseract-grc, divergences flagged for review. "Free the reader, tighten the verifier" applied to Greek. This IS the Greek tooling — NOT "olmOCR does Greek, done" (that's the contamination-shaped easy answer; verbatim guarantee forbids it).
- Running: Derrida full olmOCR (PID 10885, 80pp, ~1hr) on CapableHands scratch/derrida-mal-darchive.md.
- Next (deliberate): build the Greek cross-check tool; Empedocles full run + Greek verify; Catafalque extract+clean (has good Adobe text layer).
## Sub-agent dialogues
- 2026-07-01 ~pm — Launched 3 parallel general-purpose agents to build graduation candidates (Jonas a3f2d32c1cd832410; Mumford-I a27df16982c7fe67d; Mumford-II a2da39c1c74f5846c). Each: trim→verbatim-gated normalize→verified structure map (dry-run to clean)→frontmatter→verify_conversion gate→placeholder scan. Return structure tree + flags. MUST review rigorously before presenting (verbatim guarantee). Switched to delegation after main-thread line-by-line mapping proved error-prone (mis-attributed a subsection).
- Convention locked: # = top division (Part where present; else Chapter; Preface/Appendix/Conclusion = # book divisions), ## = Chapter (under Parts) or subsection, ### = subsection under Parts. Verified vs insert_chapter_headings.py spec + graduated Musil. None of the 3 have Parts → # chapters / ## subsections.
- Graduation form = Form A (frontmatter + chapter/section structure, no page markers). Form B (Alexander, page markers) = UNFINISHED graduations to retrofit later (4 Alexander vols + check Levi).
- Still owed: Catafalque candidate (text-layer path — em-dash/hyphen cleanup + structure); Jonas p248 single-page re-OCR (olmOCR placeholder gap); Empedocles + Derrida-redo OCR finishing.
## Candidate-build divergences to reconcile (2026-07-01)
Two Mumford candidates built (gates pass) but the agents diverged — reconcile to ONE standard before graduating:
1. Subsection heading FORM: Mumford-I used ToC title-case "## N. Title" (matches graduated Musil); Mumford-II kept body ALL-CAPS "## N: TITLE". → title-case is the precedent (verify w/ steward).
2. normalize --no-heading-recovery: Mumford-I used it (correct per normalize doc for ToC-structured works) and had NO heading/body fusion; Mumford-II did NOT and got 5 fused-heading lines (normalize reflow joined bare heading to body → structure step duplicated). → standardize on --no-heading-recovery; re-do Mumford-II or de-dup the 5.
3. Blank-plate HTML comments (<!-- page N: no text -->): Mumford-I removed; Mumford-II kept. → remove (pure apparatus).
4. OCR-defect deferred lists (~20 each: clear doublings like extraorordinary/compoments/indedependent + real compounds): STEWARD POLICY NEEDED — hand-fix obvious doublings (faithful?) vs leave flagged (strict verbatim)?
5. Plate captions (illustrated Mumford): both kept in place as text; flag for possible later gathering into a plates block. STEWARD call.
Candidates: scratch/mumford1-canon.md, scratch/mumford2-canon.md. Jonas agent still running (a3f2d32c1cd832410).
## Governance win — machine-readable graduation rail (steward-initiated 2026-07-01)
- Steward challenged: "did the agents not use the rulebook?" → caught my miss (I wrote my own instructions, not conversion-runbook.yaml; AND invented frontmatter fields tradition_path/source_sha256 that aren't the convention). Steward's memory corrected me: source_sha256 IS real — in the reading-index SIDECAR (spec §VI, hash-bound), NOT text frontmatter. Verified vs reading-indices/*.yaml (harrison/alexander/mauss/david-after-the-reply all carry it). Layer separation was the thing I got wrong.
- Steward's insight: "shouldn't there be a machine-readable version referred to whenever we do this work?" → built it:
- `_curation/drafts/graduation-spec-DRAFT-2026-07-01.yaml` — conventions AS DATA (layer separation, frontmatter schema req/opt/FORBIDDEN, heading title-case+levels, trim, normalize flags, OCR-defect policy, integrity/scan-layout, gates). Operationalizes chamber spec §§II-VI (which governs).
- `scripts/verify_graduation.py` — spec-driven validator (the enforced gate). PROVEN: caught every divergence on all 3 candidates automatically (frontmatter forbidden/missing, Mumford-II 82 ALL-CAPS + 5 blank comments, Jonas 7 latex spans).
- 3 STEWARD-CONFIRMED policies locked into spec: (1) fix unambiguous OCR doublings + LOG each; (2) convert \textit->*..* but verify genuinely italic in source; (3) gather plate captions into '# Plates' at end-of-volume.
- Frontmatter convention (Musil/Levi): title/author/translator/lang/canonical/source/converted_with/date_converted/work/voice/note + a **title block** as opening body; tradition = directory path.
- AWAITING STEWARD RATIFICATION: promote spec drafts/->_curation/graduation-spec.yaml + runbook pointer + PENDING/REVIEWED. This is a [PROPOSAL]/[HARDENING] to governed tooling.
- 3 fix-agents running against the rail (Jonas a5770260ffcacdb63; Mumford-I ac01f6f5bb1e21bf2; Mumford-II abde5ad24293a845f) — must end BOTH validators PASS. Review rigorously before graduation.
- NEW SKILL-HARVEST CANDIDATE: the graduation-spec+validator pattern (machine-readable convention consumed-at-action + enforced gate) — the steward's instrument; log to skill-harvest-register at wrap.
## Bypasses
+11
View File
@@ -277,3 +277,14 @@ The single place proposed skills live so they don't evaporate between sessions.
| **Symmetria §3 flag: tool-creep-into-substrate (name genome-or-phenotype before building on a tool)** | Symmetria §3 flag | A convenience tool proposed for one job silently becoming the **durable substrate** (the source of truth) is contamination shape — it solves the immediate need at the cost of inheritability/durability, the wrong *level*. Caught HARD tonight: Calibre, suggested only as "a cheap way to build a catalogue," was about to become the library's substrate (an app-owned `metadata.db` that rewrites files + only Calibre reads → fails the next-hand-can-`cd`-into-it test + byte-preservation). Antidote (now sharpened by the Loom/Mill frame we adopted same evening): before building on a tool, **name whether it is genome (durable, must be plain/inheritable) or phenotype (a disposable view)** — the substrate is plain files + a regenerable manifest; any UI is thrown-away and re-rendered. Kin to `reinvented-governed-tooling-without-checking-it-exists`, one level up (this is about a tool becoming the *substrate*, not about reinventing one). | Symmetria §3 | **PROPOSED** |
*(One, load-bearing — it names the exact wrong-level the steward's "Calibre was only a means" let me catch, and it composes cleanly with the genome/phenotype vocabulary now entering the four-party lexicon. Not manufactured: it was the session's central return. The Loom/Mill reconciliation itself is a one-off artifact, not a skill; the cadence-governor insight lives in the reconciliation doc, not here.)*
### Harvest 2026-07-01 (Making graduations + the graduation rail)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| **`/graduate-chamber-source`** (proposed 06-26/27/28) | **BUILD NOW** | The empirical spec is complete AND the rail it needs now exists (`graduation-spec.yaml` + `verify_graduation.py` + graduate-tool gate). It should codify: census-scan-layout→pick-engine (OCR: single-page olmOCR / split-if-2up via split_spreads.py; or EPUB pandoc path)→normalize (--lang, --no-heading-recovery)→structure (insert_chapter_headings from ToC)→frontmatter+title-block (spec convention)→**both** gates fail-closed→graduate_to_canonical→catalogue. **"Build when the batch begins" = now** (the ~12 pending Making sources, most EPUBs). Yardstick met: the steward watched me + 3 agents run this flow twice today; a skill carries it so the batch doesn't re-derive it per source. | new skill | **PROPOSED (build-first tomorrow)** |
| **graduation-spec.yaml + verify_graduation.py + graduate-tool gate** | BUILT (governed instrument) | The steward's insight realized: conventions as machine-readable DATA consumed at the moment of action + an enforced validator gate (fail-closed in graduate_to_canonical). Sibling of ARC `operations.yaml` + the verification-ladder. Governed via PENDING-44. This is a NEW named instrument for the field guide / tool-evolution-log — record it. | `_curation/graduation-spec.yaml`; tool-evolution-log | **BUILT (governed, PENDING-44)** |
| **Symmetria §3 flag: graduated-with-a-flagged-gap-instead-of-resolved** | Symmetria §3 flag | Letting "honestly flagged" substitute for "resolved" — shipping a known-incomplete text because the hole is *marked*. Contamination shape (honest-degradation excusing incomplete work). Steward caught it on Jonas p248; my own spec even permitted it. Antidote codified: `gaps_BLOCK_graduation` (resolve or explicit STEWARD-RULED marker). Kin to the "non-fatal accepted at face value" directive. | Symmetria §3 | **PROPOSED** |
| **Symmetria §3 flag: re-derived-instructions-instead-of-citing-the-governed-doc** | Symmetria §3 flag | Wrote agents hand-made instructions (and invented fields) instead of pointing them at `conversion-runbook.yaml`/the spec — the direct cause of the graduation divergence. Kin to `reinvented-governed-tooling-without-checking-it-exists`, at the *instruction* layer. Antidote: cite the governed doc; if it's silent, that's a runbook gap to close, not a prompt to improvise into. | Symmetria §3 | **PROPOSED** |
*(Four. The load-bearing two: BUILD `/graduate-chamber-source` now [it's the throughput multiplier for the whole Making batch], and record the graduation-spec+validator+gate as a named governed instrument [the steward's own idea, proven]. The two §3 flags are the session's real returns — both steward-caught, both class-fixed in the spec/gate. Not manufactured.)*