Files
dotfiles/claude/memory/session-2026-05-17-evening-chamber-reconvert-pipeline.md
T
David F GliddenandClaude Opus 4.8 3f9a89b00c chore(memory): Basic Memory trial begins — sync normalization baseline (283 files)
Basic Memory v0.21.6 first sync over the live memory dir (steward-authorized
live-dir trial, Option A 2026-06-06): adds permalink: to frontmatter, refolds
long YAML description lines, strips final newlines. Bodies untouched —
verified via full diff classification. From this commit forward, any diff in
claude/memory shows only what Basic Memory or the session writes.

Trial design: MemPalace untouched as incumbent; git status check on this dir
at every wrap; end-of-day evaluation (recall quality, sync robustness,
rebuild-from-files, malformed-file behavior).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 09:52:17 +02:00

27 KiB
Raw Blame History

name, description, metadata, permalink
name description metadata permalink
session-2026-05-17-evening-chamber-library-reconvert-pipeline-validated-end-to-end-7-commits-on-main-pulling-thread-is-adorno-aesthetics-reconvert-lfs-migration-decision Long evening session executing the chamber-library Tier 3 conversion infrastructure end-to-end. ARC branch docs/spec-extraction-2026-05 pushed to both Skemantix + GitHub-backup (10 commits). Ruder + Tschichold reconverted (ocrmac with Apple Vision LiveText; --columns 3 for trilingual Ruder, --columns 1 for Tschichold; both replace prior chamber files that were synthetic placeholder + Adobe Acrobat 8.12 damage respectively). EPUB pipeline test: Adorno Minima Moralia (clean Class A) + Calvino Six Memos (impoverished NCX → hand-craft chapter promotion) filed; Adorno Aesthetics deferred (structural heading surgery needed). 7 chamber-library commits landing on main (3e18734 → e9e9437); branch now 14 ahead of origin (was 7). LFS architectural discussion: §10.3 settlement makes MD canonical, LFS not needed at chamber's scale, but migration deferred per steward — push to Gitea no-LFS once Seb fixes server. Calibre 9.8.0 installed via brew cask (all 21 CLI tools on PATH). Tier 3 silent-loss finding: Hochuli + scripts + toolset-study were untracked. Pulling thread: Adorno Aesthetics reconvert (structural heading surgery: 'Notes' x8 + 'Guide'/'Pages' pseudo-chapters); behind it the 154-file reconvert backlog and the LFS-decide → GitHub-mirror setup. Literal question: does Calibre EPUB→EPUB normalization improve Aesthetics's heading structure, or is manual surgery the only path?
node_type type originSessionId
memory project 63d0fba0-946e-437b-a76f-21a99d64e040
claude-memory/session-2026-05-17-evening-chamber-reconvert-pipeline

Session 2026-05-17 (evening) — chamber-library reconvert pipeline + 7 commits

The pulling thread (singular)

Adorno Aesthetics reconvert — the third planned EPUB in tonight's trio, deferred for fresh attention. Pandoc produces 24 ## headings with the wrong shape: "Guide" + "Pages" + "Notes" repeated 8 times (each chapter's notes section incorrectly promoted to chapter level). Needs structural heading surgery, plus the standard soft-hyphen + EPUB-artifact cleanup pass. Before manual surgery, worth testing whether Calibre's ebook-convert EPUB→EPUB normalization produces a different (cleaner) chapter structure.

Behind it: the larger arc of the 154-file reconvert backlog. Tonight banked 4 conversions total (Ruder + Tschichold earlier; Adorno Minima Moralia + Calvino Six Memos now). ~150 to go. The conversion-skill plan §12 has 8 preconditions; tonight discharged 4 of them.

Literal question for next-Claude

Does Calibre's ebook-convert EPUB→EPUB normalization on Adorno Aesthetics (~5 MB EPUB) produce a cleaner pandoc heading structure — fewer or no "Notes" promotions; no "Guide" / "Pages" pseudo-chapters — or do we need targeted manual heading surgery as the only path? Quick empirical test (5 min: ebook-convert in.epub out.epub → pandoc -f epub -t gfm-raw_html out.epub → compare heading count) that determines whether Aesthetics is a Class A-with-normalization win or a heading-surgery exercise.

Pause statement

I am about to be away from this. Today closed substantial chamber-library infrastructure work — the conversion pipeline now exists as a working system with two registries, two scripts, two plans, and four real reconvert validations. The Tier 3 framing from the v3 plan is operative end-to-end. What I want to find still pulling when I return: the Aesthetics reconvert — both as the immediate next conversion test AND as the question of whether the pandoc-plus-cleanup approach scales to the harder structural-surgery cases, or whether the custom EbookLib pipeline (v3 §6 Class A/B research-grade) needs to be the next infrastructure investment.


What happened tonight

Phase 1 — ARC branch push + iCloud typography audit + conversion-skill-plan migration (~early evening)

  • ARC branch pushed: docs/spec-extraction-2026-05 (10 commits from today's morning Stage-D matrix work) pushed to both origin (Skemantix Gitea) and github-backup (GitHub mirror at davidglidden/arc-backup). Both pushes clean.
  • iCloud typography audit: surveyed ~/Library/Mobile Documents/com~apple~CloudDocs/Documents/___The Library [ePub_AWZ3]/__PDF/Typography/ against chamber-library's typography collection. Discovered:
    • emil_ruder_structure.md in chamber was a synthetic AI-generated summary placeholder — frontmatter declared extraction_note: "Full extraction not feasible - conceptual summary provided". Real Ruder had never been ingested.
    • neue_typography_tschichold.md had l→t OCR damage in headings (Catifornia, Tschichofd, Educationat); source PDF metadata identified Adobe Acrobat 8.12 Paper Capture Plug-in (circa-2007) as the OCR engine — the iCloud 107 MB PDF source has the same damage signature in its text-layer (Waiter Dexel, finesl, TH E ELECTRO-LI BRARY, etc.).
    • The 12 MB "Principles of the New Typography" PDF is a chapter excerpt of the full Tschichold book chamber already has (verified by grep finding the chapter title at line 539); confirmed redundant.
  • Plan migration: moved conversion-skill-plan-2026-05-{16,17}.md from studium-engine/docs/ to chamber-library/docs/ (rationale: the skill operationally belongs with its operands and registries, which live in chamber-library; the Studium Engine Tier 3 framing is conceptual rooting, not operational placement); left a pointer at studium-engine/docs/conversion-skill-pointer.md.

Phase 2 — Ruder reconvert (the harder case) + registry authoring (~mid-evening)

  • Docling+rapidocr Tier 3 discovery on Ruder: docling-venv had rapidocr installed but missing onnxruntime. Engine wouldn't initialize on image-only PDF. Installed onnxruntime 1.26.0 + flatbuffers + protobuf. Re-ran docling — completed in 18.6 min (MPS) but output failed Stage 5 verification: word boundaries selectively destroyed at character transitions (After21yearsof, theauthor, inspiteofcertain). docling+rapidocr is partially_validated for image-only PDFs with dense Swiss typography — the v3 plan's binary validated|broken categories needed extending.
  • Marker discovered installed (steward caught my shallow "not installed" check — Marker venv at ~/.local/marker-venv/ with full binary suite; was off PATH).
  • Authored scripts/ocrmac_pdf.py: pdf2image rasterisation + ocrmac (Apple Vision LiveText, line mode) + reading-order reassembly. Initial single-column smoke test on trilingual Ruder showed interleaved languages; added --columns N flag for column-major reading order (bbox x-centroid bucketing into N equal-width columns, sort column-major). Validated on pages 5-7; ran full Ruder.
  • Ruder filing: 71,548 words across trilingual de/en/fr; 575.9 sec (~9.6 min) at 0.7 pg/sec; Stage 5 PASSES; filed at converted_texts/collections/typography/typography_ruder.md with rich frontmatter; original 121 MB PDF moved to archive.
  • Registries authored:
    • _curation/installation-status.yaml (~150 lines): 18 tools tracked with subsystem-state for tools that can fail independently (docling subsystems: layout_reconstruction validated, ocr_rapidocr partially_validated)
    • _curation/per-author-quirks.md (~120 lines): entry shape established with Bringhurst (qualified per 2026-05-17 finding), Heidegger, Bachelard, Vico, Tschichold (pre-flagged), Ruder
  • AldineXXI spec audit for Ruder citations: grep across docs/AldineXXI-Codex/ returned zero Ruder citations. The silent-reliance concern (steward: "we thought we was there, but wasn't") was averted by the spec NEVER having cited Ruder. Only one decorative mention in scss/AldineXXI/_frontispiece.scss (// Conversational scale for reflection - Ruder/Carter approved) — rhetorical garnish, not load-bearing.
  • Ruder-eye reading of spec: discussed; steward chose option C (defer to dedicated session) — the masters' reading discipline is slow/dialogic, shouldn't be squeezed into a tool-heavy session.

Phase 3 — Tschichold reconvert (three pipelines attempted) + scratch cleanup (~mid-evening)

  • Attempt 1 — docling layout-reconstruction: 14 min; 60,339 words; FAILED Stage 5. docling inherited the source's Adobe Acrobat 8.12 damage signatures rather than running fresh OCR (5× Waiter Dexel, finesl, wor'ds, hear'd, TH E ELECTRO-LI BRARY); plus line-break-hyphenation noise (be­tween, cit­izen); plus heading mis-promotion (149 ## headings, many from display text). Lesson: docling layout-reconstruction works for character-level damage (Bringhurst e→&) but does NOT work for text-flow-level damage (hyphenation, word-internal noise).
  • Attempt 2 — Marker --force_ocr --strip_existing_ocr: 77 min elapsed, only 48 of 3237 text-recognition steps done. Surya's TableRecEncoderDecoderModel not MPS-compatible → entire OCR pipeline runs on CPU when --force_ocr is set. Per-step latency 1.4-500 sec; tool-reported ETA 17-88 hours. Aborted — Marker --force_ocr is structurally infeasible for >50-page books on Apple Silicon CPU.
  • Attempt 3 — ocrmac --columns 1: 4.6 min; 127,261 words (~2x the prior chamber file's 63,931); 0 of 15 probed Adobe damage signatures present; Stage 5 PASSES. Filed at converted_texts/collections/typography/neue_typography_tschichold.md; original 107 MB PDF moved to archive.
  • Archive folder setup: _2026 chamber source cleanup/{1. PDF, 2. EPUB}/<tradition>/ (mirrors chamber-library/converted_texts/ structure; README written explaining the tradition-mirroring convention).
  • Scratch cleanup: Ruder + Tschichold scratch dirs cleaned after conversion notes captured all evidence.

Phase 4 — 6 chamber-library commits + LFS architectural discussion + Calibre install (~late evening)

Six commits landed on main:

  • 3e18734 typography reconverts (Ruder + Tschichold) + conversion infrastructure
  • 9ece60b track load-bearing chamber additions and skill substrate (Tier 3 hygiene — 338 files including Hochuli + scripts + toolset-study that had been sitting in working tree)
  • b5a71a1 chore: .gitignore extension (mempalace.yaml + entities.json + _backups/ + scratch/)
  • a7f213f remove cruft and reorganization-duplicates surfaced by failed mining (752 deletions: 614 mining-stage images + 88 Loeb duplicates + 15 Harvard Classics + 13 observer-problem-sources + derrida orphan)
  • d53d76d remove stale tradition READMEs (8)
  • 91b52b9 in-place cruft cleanup of 37 retained chamber files (LFS pointer updates)

LFS architectural discussion:

  • Gitea push blocked: Seb's Gitea install has LFS server issues; steward wants to push without LFS once Seb fixes
  • Discussion of GitHub backup mirror — steward wants a private repo at davidglidden/chamber-library-backup
  • LFS-need analysis: chamber is text-only at chamber's actual scale (largest file 15 MB; nothing approaches GitHub's 50 MB warning); §10.3 settlement makes MD + sidecar canonical; LFS doesn't earn its keep architecturally
  • Refined recommendation: migrate off LFS now (free Gitea push, drop GitHub LFS quota anxiety); scope LFS narrowly to TEI-native subset if it ever lands (per §10.3 settlement's deferred TEI-native trigger)
  • Steward chose to defer LFS migration: push to Gitea no-LFS once Seb fixes; investigate further later. Migration deferred-with-reason, not rejected.
  • Calibre 9.8.0 installed via brew cask (replaced manual install with 8.4.0 that only had ebook-convert symlinked; brew cask symlinked all 21 CLI tools including ebook-polish, ebook-meta, calibredb)

Phase 5 — EPUB pipeline test (Adorno + Calvino filed; Aesthetics deferred) (~very late)

  • Adorno Minima Moralia (350 KB EPUB, Class A well-formed): pandoc 1.17 sec + custom cleanup pass (stripped 43,584 U+00AD soft hyphens + EPUB cover/SVG/internal-anchor TOC artifacts). 91,523 words; 4 # (Dedication + 3 Parts) + 100+ ### (aphorisms 1-153). Stage 5 PASSES — structure is CORRECT for the aphoristic form. Filed; source EPUB archived.
  • Calvino Six Memos (152 KB EPUB, Class A with impoverished NCX — only 1 entry "Start"): pandoc → cleanup → hand-craft chapter promotion via regex (digit+blank+ALLCAPS → ## N. TITLE). 5 chapters detected from in-body pattern (LIGHTNESS / QUICKNESS / EXACTITUDE / VISIBILITY / MULTIPLICITY), zero false positives. repair_epub_headings.py couldn't help (NCX had no chapter content to promote); Calibre ebook-convert normalization didn't enrich the NCX either. 38,397 words. Filed; source EPUB archived.
  • Adorno Aesthetics (5.1 MB EPUB): pandoc raw produces 24 ## headings with wrong shape ("Guide" + "Pages" + "Notes" repeated 8 times — each chapter's notes section gets promoted to chapter level). Deferred for fresh attention.
  • Seventh commit e9e9437: EPUB reconverts — Adorno Minima Moralia + Calvino Six Memos; updated per-author-quirks.md with Adorno and Calvino entries.

Decisions locked tonight (and rationale)

Decision Rationale Where recorded
Conversion-skill-plan v2+v3 lives in chamber-library, not studium-engine Operational artifact belongs with operands; registries (per-author-quirks, installation-status) cited by plan REQUIRE living in chamber-library/_curation/ per §8/§9; splitting plan from registries across repos creates long cross-repo dependency chamber-library/docs/conversion-skill-plan-2026-05-{16,17}.md + studium-engine/docs/conversion-skill-pointer.md
docling.subsystems.ocr_rapidocr: partially_validated (richer status than v3 plan's binary categories anticipated) Engine works on MPS; output quality fails Stage 5 on image-only PDFs with dense Swiss-typography spacing (token-boundary destruction); acceptable as last-resort fallback only _curation/installation-status.yaml
docling.subsystems.layout_reconstruction: validated_with_limits Works for character-level damage (Bringhurst e→&); does NOT work for text-flow-level damage (Tschichold hyphenation, word-internal noise) — those pass through verbatim _curation/installation-status.yaml
Marker constrained: cpu-only pipeline structurally infeasible for >50-page books on Apple Silicon Tschichold evidence (77 min, 48/3237 steps, ETA 17-88 hours); Surya's TableRecEncoderDecoderModel not MPS-compatible _curation/installation-status.yaml
ocrmac validated against two real sources Ruder (trilingual image-only) + Tschichold (single-column English with damaged text-layer) — both pass Stage 5 _curation/installation-status.yaml + _curation/per-author-quirks.md
Source PDF/EPUB archival convention: tradition-mirroring subfolders Mirrors chamber-library/converted_texts/ structure; 1:1 mapping makes archive a progress indicator; scales to the 154-file backlog ~/Documents/___The Library [ePub_AWZ3]/_2026 chamber source cleanup/README.md
Calibre install via brew cask All 21 CLI tools on PATH; future upgrades via brew upgrade --cask calibre; replaces hand-installed 8.4.0 that had only ebook-convert symlinked brew-managed; reflected in _curation/installation-status.yaml
§12 precondition #9 added: heuristic body-column filter for ocrmac_pdf.py Tschichold reconvert ~10-20% of pages had body prose interleaved with sidebar text; per-page bbox x-centroid histogram + body-column band detection would address this class; reusable for any single-column-with-marginalia source. Steward's "keep this close, it seems like A may be very useful for us" anchored as load-bearing. docs/conversion-skill-plan-2026-05-17.md §12 + TODO marker in scripts/ocrmac_pdf.py

Decisions explicitly NOT made — and why

  • Did NOT migrate off LFS — steward chose to defer; can push to Gitea no-LFS once Seb fixes server; migration evaluated and ready when steward picks it up
  • Did NOT set up GitHub backup mirror — held until LFS handling decision lands
  • Did NOT reconvert Adorno Aesthetics — structural heading surgery on 24 ## headings warrants fresh session; rushing the heading-mode decisions on a canonical text was the wrong tempo
  • Did NOT push the 14 chamber-library commits — Gitea blocked by Seb's LFS server issue; GitHub mirror not yet set up; both wait on LFS decision
  • Did NOT do the Ruder-eye spec reading — steward chose C (defer to dedicated session); masters' reading discipline is slow/dialogic
  • Did NOT build the custom EbookLib pipeline (v3 §6 Class A/B research-grade) — out of scope; precondition for several deferred items
  • Did NOT touch the 8 stale tradition READMEs as part of the cruft commit — separated into its own commit (d53d76d) because the shape was different from mining-scratch cleanup
  • Did NOT promote scripts/strip_epub_artifacts.py as a reusable script — used inline Python for the cleanup pass; promotion is queued (the pattern recurred on both Adorno EPUBs, so it's earned its place; just not authored tonight)

Mood / present-tense returns

Pattern that held tonight: quote/read/verify before composing — applied at every articulation-gate (Stage 2) before each conversion attempt. The discipline produced honest classifications:

  • Ruder PDF classified as image-only (verified via pdftotext returning empty at front/mid/end) → routed to ocrmac
  • Tschichold PDF classified as text-layer-present-but-damaged (verified via pdftotext sample + Producer metadata) → routed first to docling, then ocrmac after failure
  • Adorno EPUB classified as Class A well-formed (verified container+OPF+NCX present + pandoc dry-run clean) → routed to pandoc direct
  • Calvino EPUB classified as Class A with impoverished NCX (verified NCX has only 1 entry "Start") → routed through hand-craft promotion workaround

Drift patterns named and corrected this session:

  • "Marker not installed" (was wrong) — initial check shallow (which + pipx list only); steward caught it; venv-internal binary at ~/.local/marker-venv/bin/marker_single. Same drift family as past acting-on-inferred-not-read.
  • "These typography files are at reasonable depth" (was wrong) — anchored on word count without examining content; steward pushed back on dismissing Tschichold 107 MB PDF; the l→t damage discovery was the consequence of actually-looking-at-the-file. New entry in the drift catalogue: anchoring on word count without examining content.
  • "Tschichold reconvert is the Bringhurst-shaped case" (partially wrong) — docling layout-reconstruction worked for Bringhurst's character-level damage but doesn't work for Tschichold's text-flow-level damage. The shape match was superficial; the actual damage classification matters.

Patterns to hold forward:

  • The Tier 3 framing is operative end-to-end — installation-status registry with subsystem-state for tools that can fail independently is the kind of substrate the v3 plan §1 calls for; honest "partially_validated" status is more useful than binary categories.
  • Honest restraint vs contamination-shaped self-effacement (from earlier today's Studium handoff): held during LFS discussion. When steward chose to defer migration, didn't push back — the deferral was reason-based (waiting for Seb), not avoidance.
  • Decisions made in dialogue land cleaner than decisions made unilaterally — every reconvert and registry choice tonight came through articulation-then-confirm; the steward's redirects (LFS deferred, Aesthetics deferred, READMEs separate commit) all improved the work.

Recalibrations:

  • Estimating runtime against past-trauma — was wildly off again. Estimated docling at 2-4h based on Bringhurst's CPU runtime; actual was 18.6 min on MPS. Ocrmac estimated similarly; actual ~5-10 min. Hardware-accelerated tools deserve their own estimation baseline.
  • Treating LFS as "obviously remove" — needed steward's "but I might have had compelling reasons to accept it" challenge to actually trace the legitimate adoption rationale. Trajectory-question framing landed better than recommendation-first.

Open horizons after this session

Tier 0 — Immediate, atomic (next session start)

  • Adorno Aesthetics reconvert — the singular pulling thread; Calibre normalization test first, then heading surgery decision, then file
  • Push the 14 chamber commits — once LFS decision lands and/or Seb fixes Gitea
  • Set up GitHub backup mirror (davidglidden/chamber-library-backup) — blocks on LFS decision

Tier 1 — Held for steward decisions

  • LFS migration (migrate off entirely, keep, or scope-narrow when TEI lands) — affects backup-mirror setup + future repo-size trajectory
  • Custom EbookLib pipeline build (v3 §6 Class A/B research-grade) — the disciplined path for impoverished-NCX sources like Calvino; ~1-2 hours setup; ~5 min per book thereafter

Tier 2 — The larger arc

  • 154-file reconvert backlog: tonight banked 4 (Ruder + Tschichold + Adorno Minima + Calvino); ~150 to go. Top items: Lévi-Strauss Mythologiques 1-4, Heidegger Being and Time, Bachelard 3 works, Moby Dick, Adorno Aesthetics (pulling thread), Taruskin Oxford History (massive), Davies Europe: A History (massive)
  • v3 plan §12 preconditions — 4 of 8 discharged tonight (#2 quirks log ✓, #3 install registry ✓, #4 docling rapidocr fix ✓, #5 ocrmac integration ✓). Remaining: #1 toolset-study revision, #6 GROBID test, #7 Marker multilingual verification, #8 pdfplumber integration, #9 (added today) body-column heuristic
  • Toolset study revision (docs/conversion-toolset-study-2026-05-13.md) — substantial pending update: Calibre markdown_output rejected, ocrmac added, docling-first preference with subsystem qualifier, TEI input class, GROBID promotion

Held externally

  • Seb fixing Gitea LFS server — blocks Gitea push (chamber + ARC backups); not my workstream
  • Jurist response to executor-as-user handoff — ~/_Dev/studium-engine/docs/executor-as-user-considerations-2026-05-17.md; when Jurist analyses, may reshape Studium Engine work

State references

  • Branch: chamber-library main, 14 commits ahead of origin (no push possible until LFS handling resolves)
  • Tonight's commits (chamber-library): 3e18734 (typography reconverts), 9ece60b (Tier 3 hygiene), b5a71a1 (gitignore), a7f213f (cruft removal), d53d76d (README removal), 91b52b9 (LFS pointer updates), e9e9437 (EPUB reconverts)
  • ARC pushed: docs/spec-extraction-2026-05 to both origin (Skemantix Gitea) and github-backup (GitHub mirror at davidglidden/arc-backup)
  • Source EPUBs archived: ~/Documents/___The Library [ePub_AWZ3]/_2026 chamber source cleanup/2. EPUB/{frankfurt_school,literature/contemporary}/
  • Source PDFs archived: same archive folder, 1. PDF/typography/
  • New scripts: chamber-library/scripts/ocrmac_pdf.py
  • New registries: chamber-library/_curation/installation-status.yaml, _curation/per-author-quirks.md
  • New conversion notes: _curation/conversions/{typography_ruder,neue_typography_tschichold,minima-moralia,six-memos}.notes.md
  • Plan migration: chamber-library/docs/conversion-skill-plan-2026-05-{16,17}.md; pointer at studium-engine/docs/conversion-skill-pointer.md
  • New ocrmac-venv: ~/.local/ocrmac-venv/ (ocrmac 1.0.1 + pdf2image 1.17.0 + pyobjc-framework-Vision/Quartz/CoreML/Cocoa)
  • Calibre upgraded: brew cask calibre 9.8.0; replaces manual 8.4.0; all 21 CLI tools on PATH
  • Studium Engine: 4 untracked items (jurist settlements + executor-as-user handoff + conversion-skill-pointer + plan v2 — which was moved to chamber but still untracked at studium origin); these are all expected-untracked

Working-state notes for next-Claude

  • Hooks active (Stop + PreCompact mining to palace-memory).
  • 14 commits local on chamber-library main, none pushed. Don't attempt push without re-checking LFS decision state.
  • Aesthetics scratch was NOT preserved — scratch was cleaned. Re-conversion in next session takes ~1 sec (pandoc on the source EPUB still at iCloud working location — has NOT been archived yet because the conversion wasn't completed).
  • Source EPUB for Aesthetics: ~/Documents/___The Library [ePub_AWZ3]/The Library [ePub_AWZ3]/Theodor W. Adorno/Aesthetics (1260)/Aesthetics - Theodor W. Adorno.epub (5.1 MB).
  • The two-EPUB test validated: pandoc EPUB→MD is fast (1-2 sec/book); the hard work is structural surgery on impoverished-NCX or wrong-promotion cases.
  • Backup of prior Aesthetics chamber file: _backups/2026-05-17/aesthetics.md.preconversion-backup (we made this preemptively expecting the conversion; it's there ready).
  • The Calvino → custom EbookLib pipeline lesson: hand-craft regex worked for THIS source because the pattern was regular (digit+blank+ALLCAPS). Won't work for sources with irregular chapter visibility. The custom EbookLib pipeline remains the disciplined path; tonight's hand-craft is documented as a workaround.

Pickup orientation for the pulling thread

  1. Read MEMORY.md — Active Session points at this file.
  2. Read this session memory in full.
  3. Read _curation/conversions/six-memos.notes.md — the impoverished-NCX case study; informs the Aesthetics approach if same pattern recurs.
  4. Check the Aesthetics source EPUB at ~/Documents/___The Library [ePub_AWZ3]/The Library [ePub_AWZ3]/Theodor W. Adorno/Aesthetics (1260)/Aesthetics - Theodor W. Adorno.epub is still present (steward archives sources AFTER successful conversion).
  5. Answer the literal question first: try Calibre ebook-convert EPUB→EPUB on Aesthetics; pandoc the normalised version; compare heading count + shape. 5-min test.
  6. If Calibre helped: proceed with Class B pipeline + cleanup + file. If not: propose heading-surgery approach to steward (demote ## Notes → ### Notes; strip ## Guide/## Pages); execute on approval.
  7. File typography Aesthetics with same pattern as the other 3 (frontmatter + conversion notes + quirks entry + source archive); commit (likely 8th session commit).

Do not touch (per current scope and steward direction):

  • LFS migration (steward deferred)
  • GitHub backup mirror setup (blocks on LFS decision)
  • Push to Gitea (waits on Seb)
  • Toolset study revision (deferred to dedicated session)
  • Custom EbookLib pipeline build (deferred to dedicated session)

End of session memory. Authored 2026-05-17 past midnight at session wrap-up. The pulling thread is Adorno Aesthetics reconvert; the literal question is whether Calibre normalization solves the heading-promotion problem before manual surgery is needed. Branch is durable on disk at 14 commits ahead of origin; the conversion pipeline is operative end-to-end; the four real reconvert validations (Ruder + Tschichold + Adorno Minima + Calvino Six Memos) establish the Tier 3 substrate is real.