diff --git a/PENDING.md b/PENDING.md
index 1c809e0..c2afbc6 100644
--- a/PENDING.md
+++ b/PENDING.md
@@ -1653,4 +1653,16 @@ Disposition (verbatim capture + executor action-list: `chamber-library/docs/libr
**Package DRAFTED 2026-07-22** — `chamber-library/docs/PENDING-69-boundary-drop-attestation-JURIST-PACKAGE-2026-07-22.md` (via `/jurist-package`; hook-passed, GROUNDED-IN §Tiering&Fence one-door + §V Tier-3 + §VII + §II + REVIEWED-57 + the gate's ratified verdict logic, all quoted verbatim). Substrate-first finding (the literal question, answered from `verify_body_conservation.py`): the gate classifies boundary runs by POSITION+SIZE only, takes no drop-declaration argument, and provably cannot tell a spec-class drop (index) from a keep (endnotes) or a relocation-residue drop (the NOTES husk) — it emits REVIEW and stops. So the honest mechanized part = coverage (every derived run attested) + interior-zero (teeth unchanged) + attribution; the drop-vs-keep judgment stays human, turned into checkable data. Seven gate questions posed (Q1 landing · Q2 the split-vs-vocabulary fork = the literal question · Q3 the honest gate/human division · Q4 bind-to-derived-runs · Q5 relocation two-sidedness/`moved_to` · Q6 omnibus interaction · Q7 Eichmann-as-first-fixture ratification condition). Executor lean throughout: attest-never-default resolution, minimal constitutional sentence + declared-data mechanism, forward-only (no re-verify storm; 0 files hold `verified`).
**DESIGN-GATE PASSED 2026-07-22** (`chamber-library/docs/PENDING-69-boundary-drop-attestation-JURIST-RULING-2026-07-22.md`, filed verbatim; dispositions in the package Addendum). Spine confirmed (positive attributed attestation only; interior teeth untouched; never a bypass). **Q2 RULED (b) vocabulary-only AGAINST the executor lean** — `trim.drop` is a controlled label set, not pre-verified drops; every run is per-file attested (the gate can never confirm class membership; a privileged spec-class = trust-by-name, the `app[]`/ABSTAIN collision shape). One layer, not two; `relocation` is another label distinguished only by `moved_to`. **Q3** floor confirmed + structural-falsification check ADOPTED (executor decision, recorded, steward-overridable) for `index`/`table-of-contents` only (signature mismatch HOLDS for reconciliation, never silent pass / never un-overridable block); declined where no clean signature. **Q4** bind-to-derived-runs ELEVATED to a required property. **Q5** `moved_to` required (incomplete = rejected attestation; fabrication-exclusion scoped to exactly the named span). **Q6** per-candidate; omnibus interior-run interaction named for the Levi pilot. **Q7** Eichmann first fixture + deliberate negatives (un-attested run→HOLD; interior deletion→FLAG). **Named tension:** wires human-in-the-loop for discipline, not removal — the 47-file wave is NOT unattended batch. **REVIEWED-69 draft in the package Addendum; awaiting steward placement.**
**MECHANISM BUILT test-first 2026-07-22** (branch `reviewed-69-boundary-drop-resolution` @ `21e3499`, NOT on main — steward merges on confirmation, per the session commitment "nothing lands on main without your confirmation"). `verify_body_conservation.resolve_review` (pure; additive `boundary_run_sig`, ratified verdict logic UNCHANGED + seed-test re-confirmed) + `graduate_to_canonical._resolve_boundary_review` (thin consumer; no attestation → REVIEW HOLDS) + `graduation-spec.yaml` `boundary_drops:` (declared-data vocabulary/policy, GROUNDED-IN the ruling). Corrected shape built: Q2 vocabulary-only, Q3 signature-falsification (index/ToC), Q4 bind-to-derived-runs, Q5 moved_to presence. Fleet 214→216. **Q7 CAPSTONE PASSED on the REAL Eichmann** — verdict=REVIEW, interior_loss=0, boundary_runs=8 (3 leading front-matter + 5 trailing index fragments) reproduces the hand-verified 1:1 reconciliation as a mechanical PASS; both negatives refuse (un-attested→HOLD; interior deletion→FLAG). Substrate lesson captured (tool-log): the k-gram aligner is move-blind → boundary runs are DROPS, `relocation` is the rare reordered case (my package's husk-as-relocation-run framing was imprecise; the 8 runs are front-matter+index, no relocation among them). Added-side fabrication-exclusion (Q5 second clause) = scoped follow-on, conservative absence (FLAGs, never silent-pass).
-**Awaiting:** steward — (1) place REVIEWED-69 (draft in the package Addendum); (2) merge the branch to main + push both remotes (or authorize me to); (3) vehicle call on the ONE constitutional §Tiering&Fence sentence (fold into next supersession vs standalone MINOR bump) — drafted, held. Then: the Levi curation-bearing second pilot before scale (`promotion.scale_application`, unchanged) → the 47-file wave (human-in-the-loop, Zibaldone next).
+**RESOLVED 2026-07-23 — all three steward actions complete; PENDING-69 CLOSED.** (1) REVIEWED-69 placed (steward). (2) Branch `reviewed-69-boundary-drop-resolution` fast-forward-merged to chamber `main` (`f466ed0`) + pushed both remotes (github + origin) — the mechanism (`21e3499`) is live. (3) Vehicle call resolved by fact — **standalone MINOR bump, spec v2.4.0**: the ruling permitted folding into the next assembling supersession *if one were pending*, none was (v2.3.0 landed, everything since is FIX work), so the one ruled §Tiering & Fence sentence landed operative now (`f466ed0`; v2.3.0 frozen byte-identical `-v2.3.0.md`; bounded diff proven; fleet 216/216). **Next (unchanged, now unblocked):** the Levi curation-bearing second pilot before scale (`promotion.scale_application`) → the 47-file wave (human-in-the-loop, Zibaldone next). Literal question held for the pilot: do curation-bearing divergences classify tractably into the ruled vocabulary, and is the mechanism's silence on inter-work (interior) drops correct at multi-work scale? **[SUPERSEDED as the next step by PENDING-70 — the pilot is HELD pending that ruling.]**
+
+## PENDING-70 — The legacy witness: what curation-preservation and scale-application mean when the canon predates the fleet
+**Date:** 2026-07-23
+**Tag:** [PROPOSAL] — gate-acceptance class (changes what `scale_application` requires + how the `curation_preservation` obligation reads for the legacy body). Change-class test = yes (changes what the scale gate accepts) → PROPOSAL → jurist ruling + steward authorization.
+**Summary:** Prepping the Levi second pilot surfaced that the chosen witness is not editorially curated but silently DAMAGED — a 2026-06-16 image-drop cleanliness pass mutilated character-bearing glyphs mid-word (verified live: Wstawać→Wstawa ×9, Brașov→Braov, Oświęcim→Owicim, each confirmed by the passage's own gloss). The steward named the structural cause: the ENTIRE canon was converted before this constitution and before the current fleet, so the extant canonical is a pre-fleet conversion, not a trustworthy hand-curated witness — and some divergence classes may be structurally un-exercisable against the extant body.
+**Census (2026-07-23, dated observation):** `canonical_texts/` = 1,297 `.md`; ~23 still carry image refs, the rest image-free. 248 have a diffable backup; **13 of those carry mid-word character-glyph drops (55 sites)** — Jung *Collected Works* (18), Levi (18), Derrida, Jung *Black Books*, *Lexique de l'Imprimerie Nationale*, Leopold, Donne, Blake, Bakewell, Leopardi *Zibaldone*, *Huang Po*, Lichtenberg (German), Leibowitz. **Lower bound** — undetectable from text for the ~1,049 files with no backup; only re-conversion from source reveals it.
+**Rationale:** The constitution already holds the decisive frame — for V-TEXT *"the source *is* ground truth,"* and *"converted"* means *"Not yet trustworthy … merely converted + filed."* So this is an APPLICATION of the constitution, not an overturning: the witness comparison's claim scope degrades with the witness (curated → curation-preserved; legacy → no-regression-floor), and `scale_application`'s "genuinely hand-curated witness" requirement may be unsatisfiable against the extant body. A dropped character-glyph is also a §V Tier-3 word-alteration-by-omission (forbidden), making the legacy calibre+strip front-end retro-ineligible and the one-door wave a verbatim-fidelity restoration.
+**Package (self-contained, jurist-ready):** `chamber-library/docs/scale-application-legacy-body-JURIST-PACKAGE-2026-07-23.md` (GROUNDED-IN v2.4.0 §V + §Tiering & Fence + the declared data, quoted verbatim; four gate questions with leans: Q1 curated/legacy witness split · Q2 reframe scale condition · Q3 character-as-image = Tier-3 by omission + corpus-integrity · Q4 honest-degradation surface).
+**Recommendation:** relay to the jurist. Executor leans in the package (Q1 yes · Q2 option-a reframe · Q3 yes both · Q4 yes light).
+**Files affected (on ratification):** spec supersession v2.4.0→v2.5.0 (requirements only) + `graduation-spec.yaml` declared data (`scale_application.condition` reworded, `witness_class` field, glyph-map, census). No re-verify storm (no file holds `verified`).
+**RULING RECEIVED 2026-07-23 — design-gate PASSED** (`docs/scale-application-legacy-body-JURIST-RULING-2026-07-23.md`; Addendum + REVIEWED-70 draft appended to the package). Q1/Q3/Q4 CONFIRMED (Q1 corrects a defect in the one-door ruling's own wording; Q4 mandatory-not-optional). **Q3 HARD PRECONDITION:** glyph-mapping wired + demonstrated on Levi's 3 sites (Wstawać/Brașov/Oświęcim) before ANY imaged source enters the lane — incl. the pilot's own conversion (else re-conversion re-inflicts Tier-3 damage under a PASS-reporting gate). **Q2 accepted in principle, SUBSTITUTE CONDITION ruled** (my reframe dropped the judgment-cost test): (a) enumerate demonstrable classes in advance; (b) pilot MUST report judgment cost incl. source-adjudication of mutilation sites; (c) both curation-to-carry un-exercised w/ reason, first demo bound to first curated work; (d) scale opens for legacy-witness promotions ONLY. Representativeness discharged: 5% (13/248) is NOT a corpus rate (curation-selected batch); the 13 are a confirmed floor.
+**STEP 1 DONE 2026-07-23 — REVIEWED-70 placed; spec v2.5.0 LANDED on main (`e37e076`, pushed both remotes).** Constitution: Q1 claim-scope split (§Tiering & Fence) + Q3 Tier-3-by-omission (§V) + Q4 legacy-fidelity-not-self-certifiable (§Trust Attestation). Declared data: reframed `scale_application` (substitute Q2 condition) + `witness_class` + `character_as_image` (census + Levi glyph-map candidates, demonstration-owed). v2.4.0 frozen byte-identical; bounded-diff proven; fleet 216/216. **REMAINING (ordered):** STEP 2 = glyph-mapping lane build — wire char-image→Unicode into `convert_lane_borndigital.py` + **demonstrate on Levi's 3 sites** (extract src images 000042/000023/000034/000004, confirm ć/ș/ś/ę) [the Q3 hard precondition]; STEP 3 = run the Levi pilot on the substitute condition (needs judgment-cost reporting). **The pilot is HELD until glyph-mapping is demonstrated.** Next bite = STEP 2.
diff --git a/REVIEWED.md b/REVIEWED.md
index e386b14..a9c73d7 100644
--- a/REVIEWED.md
+++ b/REVIEWED.md
@@ -669,4 +669,15 @@ born-digital lane (whole-EPUB injection → per-spine) + promotion.scale_applica
- Q6 — per-candidate; the omnibus interior-run interaction named (inter-work drops surface as interior runs and FLAG — the boundary-drop mechanism is correctly silent on them; for the Levi second pilot).
- Q7 — Eichmann as the first fixture PLUS deliberate negatives (un-attested run -> HOLD; interior deletion -> FLAG regardless of a complete boundary attestation).
- Named tension: this wires human-in-the-loop for discipline, not removal — the 47-file wave is not unattended batch work.
-**If AUTHORIZED:** Q1 minimal constitutional sentence in the §Tiering & Fence one-door subsection (gate-acceptance property; doctrinal-traceability), MINOR — fold into the next assembling supersession or a standalone bump (steward call); mechanism as declared data (attestation schema + controlled vocabulary) in graduation-spec.yaml; the gate's thin-consumer check built test-first with the Eichmann fixture + the two negatives as the ratification condition. Tag commits REVIEWED-69.
\ No newline at end of file
+**If AUTHORIZED:** Q1 minimal constitutional sentence in the §Tiering & Fence one-door subsection (gate-acceptance property; doctrinal-traceability), MINOR — fold into the next assembling supersession or a standalone bump (steward call); mechanism as declared data (attestation schema + controlled vocabulary) in graduation-spec.yaml; the gate's thin-consumer check built test-first with the Eichmann fixture + the two negatives as the ratification condition. Tag commits REVIEWED-69.
+
+## REVIEWED-70 — PENDING-70 — The legacy witness, scale-application, and character-as-image (design-gate passed with a substitute Q2 condition)
+**Date:** 2026-07-23
+**Decision:** AUTHORIZED — proceed per the ruling (filed verbatim at chamber-library/docs/scale-application-legacy-body-JURIST-RULING-2026-07-23.md; package + Addendum: chamber-library/docs/scale-application-legacy-body-JURIST-PACKAGE-2026-07-23.md).
+**Notes:** Corrections in force:
+- Q1 — claim scope degrades with the witness (curated → curation-preserved; legacy → no-regression-floor), stated with the obligation; corrects a defect in the one-door ruling's own wording. `witness_class: curated|legacy` = positive attributed attestation (by/date), never inferred from date/conversion_method.
+- Q3 — a character-bearing image dropped from a word is a §V Tier-3 alteration by omission (constitutional); glyph→Unicode map = catalogued Tier-2 declared data. HARD PRECONDITION: glyph-mapping wired AND demonstrated on Levi's three sites (Wstawać, Brașov, Oświęcim) before any imaged source enters the one-door lane — including the pilot's own conversion. calibre+cruft-strip retro-diagnosed ineligible for imaged sources (2nd application of the v2.3.0 rule). Wave reframed as verbatim-fidelity restoration.
+- Q4 — the A3 honest-degradation cross-reference is mandatory, not optional.
+- Q2 — accepted in principle; the manufactured-instance path rejected. Substitute condition: (a) enumerate demonstrable classes in advance (converter-better, regression, converter-worse isolated/systematic, inter-work interior); (b) the pilot MUST report judgment cost (human-minutes/file incl. source-adjudication of mutilation sites; count of source-consultations), not only class coverage; (c) both curation-to-carry classes reported un-exercised with reason, first demonstration bound to the first curated work (open condition); (d) scale opens for legacy-witness promotions ONLY.
+- Representativeness: the ~5% (13/248) is not a corpus rate (backup set is a curation-selected batch); the 13 are a confirmed floor.
+**If AUTHORIZED:** land the reframe as spec supersession v2.4.0 → v2.5.0 (requirements) + declared data (Q2 condition, witness_class, glyph-map, census); wire + demonstrate glyph-mapping on Levi's three sites (the Q3 precondition) before the pilot's fresh conversion; then run the Levi pilot on the substitute condition. Tag commits REVIEWED-70.
\ No newline at end of file
diff --git a/claude/memory/MEMORY-reference.md b/claude/memory/MEMORY-reference.md
index ff71624..fb81813 100644
--- a/claude/memory/MEMORY-reference.md
+++ b/claude/memory/MEMORY-reference.md
@@ -29,6 +29,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-22 — PENDING-69 boundary-drop mechanism drafted→ruled→BUILT + /model-handoff; demoted on promote at the 2026-07-23 wrap)
+- [Session 2026-07-22 — PENDING-69 boundary-drop mechanism drafted→ruled→BUILT (Q7 capstone passed) · /model-handoff](session-2026-07-22-pending69-boundary-drop-mechanism-built-model-handoff.md) — The whole PENDING-69 arc in one remote session (steward in Salzburg, machine at home): package DRAFTED reading the gate's code FIRST (literal-q honored — the gate classifies boundary runs by POSITION+SIZE only, provably CANNOT confirm class identity → REVIEW stops, no channel for the human id) → **RULING PASSED with corrections, Q2 OVERTURNED my lean to (b) vocabulary-only** (a privileged "spec-class" = **trust-by-name**; `trim.drop` is a label vocabulary, every run per-file attested) → **mechanism BUILT test-first** on branch `reviewed-69-boundary-drop-resolution` @ `21e3499` (NOT main): `resolve_review` + additive `boundary_run_sig` (ratified verdict logic UNCHANGED, seed re-confirmed) + `boundary_drops` declared data + `_resolve_boundary_review` thin consumer; fleet 214→216; **Q7 CAPSTONE PASSED on the REAL Eichmann** (verdict=REVIEW, interior_loss=0, **8 boundary runs** = 3 front-matter + 5 index → mechanical PASS; both negatives refuse). Then **`/model-handoff` BUILT** (authorized ⚖ Stroke 3). Honored "nothing lands on main without your confirmation" — branched, did NOT push. Substrate lesson: the k-gram aligner is **MOVE-BLIND** → boundary runs are DROPS, `relocation` the rare reordered case (corrected my own package framing). Q5 added-side exclusion scoped OUT (conservative). **PULLING THREAD: the Levi curation-bearing SECOND PILOT — the last gate before the 47-file wave; BLOCKED on the steward's 3 actions (2026-07-23 pm): place REVIEWED-69 · merge `21e3499`→main+push · vehicle-call the ONE constitutional §Tiering&Fence sentence (drafted). LITERAL Q: when the Levi omnibus (14 works, hand-curated) runs the one-door lane, do its curation-bearing divergences classify tractably (fidelity-restoring vs source-departing — the JUDGMENT cases Eichmann exercised 0×), or does a real case resist? + is the mechanism's SILENCE on inter-work (interior) drops genuinely correct at multi-work scale, or does an inter-work drop hide a real loss? Read the Q6 ruling + `promotion.witness`/`witness_comparison` declared data FIRST.** Read the session file at wake.
+
## Archived (2026-07-20/21 — verify-guard arc complete · Eichmann graduated through the one-door; demoted on promote at the 2026-07-22 wrap)
- [Session 2026-07-20/21 — verify-guard arc COMPLETE · EICHMANN GRADUATED through the one-door](session-2026-07-21-verify-guard-chain-fold-eichmann-graduated.md) — The F2 fix ran test-first to proof at both ruled scales (markup-token class rule = the verify's own tokenizer eating a sup-star link's text; de-glue fold vs UNUSED credits → **chain-fold** after the Zibaldone census byte-accounted the whole residual; **in-table refusal** caught a REAL pandoc table-drop loss the guard alone saw — Zibaldone verbatim-clean at 3,795+2 refusals; fleet 202/202). Then the steward opened the door: **Eichmann GRADUATED via the born-digital lane** (`780106b`; sha `145e6edd…`, kindle_residue 0, 10 native footnotes ref↔def NON-EMPTY, engine re-anchored + caveat RETIRED, ingest_gate 13/13; class 48→47 — the telos concrete in one file). **Two lane defects were invisible to EVERY wired gate, caught only by seam probes**: per-spine `-f html` emits EMPTY defs (whole-EPUB `-f epub` is the lane; runbook corrected); pandoc puts defs AFTER the index (trim swallowed them once; non-empty-defs assertion = the new teeth). Instrument fixes test-first: strip_cruft escaped-bracket spans; verify_conversion zero-width span semantics. **PULLING THREAD was: PENDING-69 — the attested boundary-drop resolution mechanism** (delivered 2026-07-22: drafted→ruled Q2-vocabulary-only→BUILT test-first, Q7 capstone passed on the real Eichmann; on branch `21e3499`, awaiting steward merge). Read the session file at wake.
diff --git a/claude/memory/MEMORY.md b/claude/memory/MEMORY.md
index 8834dc4..d449cf0 100644
--- a/claude/memory/MEMORY.md
+++ b/claude/memory/MEMORY.md
@@ -6,7 +6,7 @@ metadata:
type: note
permalink: claude-memory/memory
originSessionId: 22915403-bc5d-4796-9c7d-196b7c30d2f9
- modified: 2026-07-22T12:37:03.415Z
+ modified: 2026-07-23T19:25:00.272Z
permalink: claude-memory/memory
---
@@ -49,14 +49,14 @@ permalink: claude-memory/memory
- [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 (RESOLVED STALE 2026-07-19 — initials present). 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, 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.)
+- [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). **MECHANISM BUILT 2026-07-23 (REVIEWED-70/v2.5.0): `chamber-library/scripts/apply_char_glyphs.py`** — letter-adjacent glyph `
`→declared SOURCE Unicode (`graduation-spec.yaml` `character_as_image.glyph_map`, per-source), REFUSES unclassified (attest-never-default); wired into the born-digital lane as a hard precondition. §V Tier-3-by-omission is now constitutional. Discipline: VIEW the glyph, map to SOURCE form not "corrected" (ş cedilla, not ș). Census = 13/248-backup canonicals carry it (floor); per-source glyph-maps owed (Alter's Psalms among them).
- [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 + the **[architectural charter](reference-studium-engine-architectural-charter.md)**. Steps 0–7 built; corpus CLEAN; **V1 `verify-quote` BUILT + `fidelity_equivalence@2` GOVERNING (2026-07-19; @1 frozen; dash refused/evidence-gated; Greek/Latin census owed → @3)**. **Stage-1 rebuild plan** (`studium-engine/docs/stage-1-rebuild-plan-2026-07-05.md`): V0+N0 ruled · V1 done → V2→V4 / N1→N3. Collaboration = [[feedback-studium-engine-sixtus-v-collaboration]].
- [L1 reliability](project-L1-reliability.md) — canonical L1 tracker (est. 2026-05-28). Latest: N6 deploy #175 live+holds; CapableHands-as-BMF-clasp = PRIORITY (PENDING-41). L1 behind the Studium/chamber focus. Read the tracker before 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-22 — PENDING-69 boundary-drop mechanism drafted→ruled→BUILT (Q7 capstone passed) · /model-handoff](session-2026-07-22-pending69-boundary-drop-mechanism-built-model-handoff.md) — The whole PENDING-69 arc in one remote session (steward in Salzburg, machine at home): package DRAFTED reading the gate's code FIRST (literal-q honored — the gate classifies boundary runs by POSITION+SIZE only, provably CANNOT confirm class identity → REVIEW stops, no channel for the human id) → **RULING PASSED with corrections, Q2 OVERTURNED my lean to (b) vocabulary-only** (a privileged "spec-class" = **trust-by-name**; `trim.drop` is a label vocabulary, every run per-file attested) → **mechanism BUILT test-first** on branch `reviewed-69-boundary-drop-resolution` @ `21e3499` (NOT main): `resolve_review` + additive `boundary_run_sig` (ratified verdict logic UNCHANGED, seed re-confirmed) + `boundary_drops` declared data + `_resolve_boundary_review` thin consumer; fleet 214→216; **Q7 CAPSTONE PASSED on the REAL Eichmann** (verdict=REVIEW, interior_loss=0, **8 boundary runs** = 3 front-matter + 5 index → mechanical PASS; both negatives refuse). Then **`/model-handoff` BUILT** (authorized ⚖ Stroke 3). Honored "nothing lands on main without your confirmation" — branched, did NOT push. Substrate lesson: the k-gram aligner is **MOVE-BLIND** → boundary runs are DROPS, `relocation` the rare reordered case (corrected my own package framing). Q5 added-side exclusion scoped OUT (conservative). **PULLING THREAD: the Levi curation-bearing SECOND PILOT — the last gate before the 47-file wave; BLOCKED on the steward's 3 actions (2026-07-23 pm): place REVIEWED-69 · merge `21e3499`→main+push · vehicle-call the ONE constitutional §Tiering&Fence sentence (drafted). LITERAL Q: when the Levi omnibus (14 works, hand-curated) runs the one-door lane, do its curation-bearing divergences classify tractably (fidelity-restoring vs source-departing — the JUDGMENT cases Eichmann exercised 0×), or does a real case resist? + is the mechanism's SILENCE on inter-work (interior) drops genuinely correct at multi-work scale, or does an inter-work drop hide a real loss? Read the Q6 ruling + `promotion.witness`/`witness_comparison` declared data FIRST.** Read the session file at wake.
+- [Session 2026-07-23 — REVIEWED-69 merged + v2.4.0 · character-as-image finding → PENDING-70 ruling → v2.5.0 · glyph-mapping BUILT](session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md) — A very long single session that ran the whole PENDING-69/70 arc to ground. **(1)** merged the boundary-drop mechanism to main + cut spec **v2.4.0** (REVIEWED-69; standalone MINOR bump — vehicle resolved by fact, nothing assembling; `f466ed0`). **(2) Prepping the Levi pilot surfaced a corpus-integrity finding:** the witness is silently DAMAGED — a 2026-06-16 image-drop MUTILATED char-bearing glyphs mid-word (Wstawać→Wstawa, Brașov→Braov, Oświęcim→Owicim), verified live, each confirmed by the passage's own gloss. Steward named the structural cause: **the whole canon predates the constitution + the fleet** → the extant witness is a pre-fleet conversion, not editorial gold; census = **13/248-backup files** carry mid-word glyph drops (Jung 18, Levi 18, Derrida, Zibaldone, Lichtenberg…), a confirmed floor. **(3)** drafted the legacy-body reframe as a jurist package (PENDING-70) → **RULED**: Q1/Q3/Q4 confirmed (Q1 corrects a defect in the one-door ruling's OWN wording; `witness_class`=positive attributed attestation), **Q2 accepted-in-principle but SUBSTITUTE CONDITION ruled** (my reframe dropped the JUDGMENT-COST test the condition existed for — enumerate demonstrable classes in advance · report judgment cost · legacy-witness-promotions-only) → **spec v2.5.0 landed** (`e37e076`). **(4) glyph-mapping BUILT + DEMONSTRATED** (`apply_char_glyphs.py`, the Q3 hard precondition; `3852d46`; fleet 216→**222**): letter-adjacent glyph `
`→declared SOURCE Unicode, REFUSES unclassified (attest-never-default); VIEWED the 4 source glyphs (ca=ć, as=**ş cedilla** steward-confirmed NOT comma-below ș, s=ś, e=ę); demonstrated on the real 527-doc Levi EPUB (substituted=9, unclassified=0 corpus-wide, survives pandoc end-to-end). **PULLING THREAD: the Levi second pilot ITSELF (step 3) — now unblocked, the gate before the 47-file verbatim-fidelity-restoration wave.** First move = derive + interior-verify the 14 witness brackets (La Chute lesson) → run the full lane (`convert_lane_borndigital.py … the-complete-works-of-primo-levi-primo-levi`) → 14 per-work comparisons + **JUDGMENT-COST reporting** (the substitute Q2 condition). **LITERAL Q: when the Levi pilot runs (14 works, ~18 mutilation sites now repaired), does the judgment cost stay tractable, or explode when the easy mechanical patterns run out (the jurist's actual worry)? + do the 14 brackets interior-verify cleanly at omnibus scale?** ⚠ origin (Gitea) 2 commits behind (`5d61f2d`,`3852d46`) — retry when it recovers. Read the session file 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).
diff --git a/claude/memory/knowledge-graph.jsonl b/claude/memory/knowledge-graph.jsonl
index 333c4e6..4ff1bc9 100644
--- a/claude/memory/knowledge-graph.jsonl
+++ b/claude/memory/knowledge-graph.jsonl
@@ -421,3 +421,8 @@
{"subject": "chamber-library", "predicate": "one-door-first-landing", "object": "Eichmann graduated 2026-07-21 (chamber 780106b, engine edbaf60): sha 145e6edd, 1,070 lines, kindle_residue 0 (was 4,712), 10 native footnotes ref-def non-empty, engine substrate-caveat RETIRED, ingest_gate 13/13. Class 48→47. Door proven but NOT repeatable: PENDING-69 (REVIEW-hold resolution mechanism) gates the remaining 47.", "valid_from": "2026-07-21", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-21-verify-guard-chain-fold-eichmann-graduated.md", "extracted_at": "2026-07-21"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "trust-by-name — a privileged label/class drawn from a shared vocabulary reads as more-verified than a per-item claim, when the gate never confirmed membership. Caught by the jurist on PENDING-69 Q2 (my 'declared spec-class' lean, overturned to vocabulary-only on the package's OWN Part-II evidence that the gate can't confirm class identity). The honest shape: a label constrains what you may CALL a thing, never certifies what it IS. Kin to the app[]/ABSTAIN shared-name collision family. Antidote: when the substrate proves a gate can't verify a category, don't let a shared vocabulary smuggle it back in as trusted.", "valid_from": "2026-07-22", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-22-pending69-boundary-drop-mechanism-built-model-handoff.md", "extracted_at": "2026-07-22"}
{"subject": "verify_body_conservation", "predicate": "substrate-fact", "object": "the k-gram body-conservation aligner (classify, k=8) is MOVE-BLIND — a verbatim block >= k tokens matches wherever it lands, so cleanly relocated content is COVERED, not a lost boundary run. Boundary runs are therefore dominated by genuine DROPS (front-matter/ToC/index); `relocation` is the RARE label for reordered/short moved fragments (words present but k-grams don't match at the new position). Reading the gate's verdict code BEFORE designing the PENDING-69 resolution was decisive and corrected the package's own 'NOTES-husk = relocation boundary run' framing (the 8 real Eichmann runs are front-matter + index, no relocation among them).", "valid_from": "2026-07-22", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-22-pending69-boundary-drop-mechanism-built-model-handoff.md", "extracted_at": "2026-07-22"}
+{"subject": "claude-code", "predicate": "drift-pattern", "object": "reframe-drops-the-condition's-telos — reframing a RULED condition by what it literally required, not what it was FOR (its purpose). Caught by the jurist on PENDING-70 Q2: my legacy-body reframe ('the classes the body produces') faithfully replaced the witness requirement but DROPPED the judgment-cost test the condition existed to enforce, and was unbounded/self-fulfilling. A faithful 'reframe' that answers a neighboring question is a miss. Antidote: trace the condition's PURPOSE (here: can a human classify judgment-requiring divergences tractably at scale?), state the replacement in advance of the evidence that satisfies it. Kin to transcribe-ruled-finding-inverts-inference, one level up — the condition's telos, not its words.", "valid_from": "2026-07-23", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md", "extracted_at": "2026-07-23"}
+{"subject": "claude-code", "predicate": "drift-pattern", "object": "assert-from-derivation-not-substrate RECURRENCE (glyph-mapping) — verify-the-glyph-not-the-filename caught TWO of my own errors at the tail of a long session: (1) I keyed the glyph-map on calibre's 000042-style OUTPUT numbers (a derived identifier from its conversion-time renaming) instead of the EPUB-internal names; (2) I inferred Brașov's glyph as comma-below ș from the place-name's standard orthography — the source image is ş CEDILLA, and mapping to ș would have been the exact Tier-3 source-departing 'correction' the whole arc forbids. VIEWING the 4 source images corrected both. Existing consolidated flag (Symmetria §3 assert-from-derived); the discipline earned its keep even when exhausted.", "valid_from": "2026-07-23", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md", "extracted_at": "2026-07-23"}
+{"subject": "chamber-library-specification", "predicate": "operative-version", "object": "v2.4.0", "valid_from": "2026-07-23", "valid_to": "2026-07-23", "confidence": 1.0, "source_file": "session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md", "extracted_at": "2026-07-23"}
+{"subject": "chamber-library-specification", "predicate": "operative-version", "object": "v2.5.0 — lands the PENDING-70 ruling (REVIEWED-70): Q1 witness-comparison claim-scope split (curated vs legacy) · Q3 §V Tier-3 alteration-by-omission (character-bearing images are content) · Q4 legacy-fidelity-not-self-certifiable; declared data = reframed scale_application substitute condition + witness_class + character_as_image glyph-map/census", "valid_from": "2026-07-23", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md", "extracted_at": "2026-07-23"}
+{"subject": "character-as-image-hazard", "predicate": "remedy-mechanism", "object": "chamber-library/scripts/apply_char_glyphs.py (REVIEWED-70/v2.5.0) — letter-adjacent glyph
-> declared SOURCE Unicode; REFUSES unclassified (attest-never-default); wired into convert_lane_borndigital.py as the Q3 hard precondition (an imaged source without a complete policy is refused). Levi glyph-map DEMONSTRATED; per-source maps owed for the other 12 census-flagged files", "valid_from": "2026-07-23", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md", "extracted_at": "2026-07-23"}
diff --git a/claude/memory/session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md b/claude/memory/session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md
new file mode 100644
index 0000000..fa3a1d8
--- /dev/null
+++ b/claude/memory/session-2026-07-23-reviewed69-70-v2.4-v2.5-character-as-image-glyph-mapping.md
@@ -0,0 +1,54 @@
+---
+name: session-2026-07-23-reviewed-69-merged-v2-4-0-character-as-image-finding-pending-70-ruling-v2-5-0-glyph-mapping-built-demonstrated
+description: "A very long single session that ran the whole PENDING-69/70 arc to ground: merged the boundary-drop mechanism to main + cut spec v2.4.0 (REVIEWED-69); prepping the Levi second pilot surfaced that the chosen witness is silently DAMAGED (a 2026-06-16 image-drop mutilated char-bearing glyphs mid-word: Wstawać→Wstawa, Brașov→Braov, Oświęcim→Owicim) — the steward named the structural cause (the whole canon predates the constitution + the fleet, so the extant witness is not editorial gold); drafted the legacy-body reframe as a jurist package (PENDING-70), the jurist ruled it (Q1/Q3/Q4 confirmed, Q2 substitute condition), landed spec v2.5.0, then BUILT + DEMONSTRATED glyph-mapping (apply_char_glyphs.py) as the Q3 hard precondition. PULLING THREAD: the Levi pilot itself (step 3) — now unblocked, the gate before the 47-file wave."
+metadata:
+ node_type: memory
+ type: project
+ modified: 2026-07-23T19:22:33.325Z
+ originSessionId: d6f7ee32-e448-465c-967f-54c1d9f9c8a2
+---
+
+# Session 2026-07-23 — the PENDING-69/70 arc, end to end
+
+An unusually long, dense session (remote/driving mode — the steward authorized each boundary in turn: "let's do both 1 and 2", "prep the Levi pilot", "yes to all three", "reviewed-70 placed", "Let's build"). It carried the boundary-drop work to main, then a Levi-pilot prep surfaced a corpus-integrity finding that reshaped the scale gate, then built the mechanism that finding demanded.
+
+## PAST — what happened + why
+
+**1. REVIEWED-69 merged + spec v2.4.0 (the boundary-drop constitutional sentence).** At wake, verified against the substrate that only ONE of the three gated actions was done (REVIEWED-69 placed; branch NOT merged; vehicle un-called) — a third state the wrap's all-or-nothing frame didn't enumerate. Steward said "do both 1 and 2." Vehicle resolved by fact: no supersession was assembling → **standalone MINOR bump v2.4.0** (makes the boundary-drop REVIEW-resolution sentence operative now). Froze v2.3.0, added the ruled sentence to §Tiering & Fence, bounded-diff proven, fleet 216/216, fast-forward merged `reviewed-69-boundary-drop-resolution` → main (`f466ed0`), pushed both remotes. PENDING-69 CLOSED.
+
+**2. Levi pilot prep → the character-as-image finding.** Prepping the second pilot, checked the witness against the substrate rather than the "genuinely hand-curated" premise: frontmatter says `conversion_method: calibre`, and the 2026-06-16 backup diff showed the "curation" was a whole-file image-drop (522 removed, 18 added, 0 remaining) that **silently mutilated character-bearing glyphs mid-word** — verified live, each confirmed by the passage's own gloss: `Wstawać`→`Wstawa` (×9), `Brașov`→`Braov`, `Oświęcim`→`Owicim`. This is a Tier-3 alteration by omission in a GRADUATED canonical.
+
+**3. The steward's structural reframe.** "The whole canon was converted before the constitution + the capable fleet; it may not be possible to test some of these against the extant body." Census (2026-07-23): 1,297 canonicals, ~23 still carry image refs; of 248 with a diffable backup, **13 carry mid-word char-glyph drops (55 sites)** — Jung *Collected Works* (18), Levi (18), Derrida, Zibaldone, Lichtenberg (German), the Lexique, Blake, Donne, more. Lower bound — undetectable from text for the ~1,049 without backups.
+
+**4. The jurist package (PENDING-70) → ruling.** Drafted the reframe via `/jurist-package` (self-contained, GROUNDED-IN v2.4.0 §V + evidence-tiers verbatim). The spine: it's an APPLICATION of the constitution's own frame (V-TEXT "the source IS ground truth"; "converted ≠ verified"), not an overturning. Jurist ruled (`docs/scale-application-legacy-body-JURIST-RULING-2026-07-23.md`): **Q1** confirmed (claim scope degrades with witness; corrects a defect in the one-door ruling's own wording; `witness_class` = positive attributed attestation, never inferred). **Q3** confirmed both halves + hardened (glyph-mapping wired + demonstrated is a HARD PRECONDITION before any imaged source). **Q4** confirmed + mandatory. **Q2** accepted in principle but ruled with a **substitute condition** — my reframe ("classes the body produces") dropped the JUDGMENT-COST test the original condition existed for.
+
+**5. Spec v2.5.0 landed** (`e37e076`, REVIEWED-70): Q1 §Tiering&Fence claim-scope split · Q3 §V Tier-3-by-omission · Q4 §Trust legacy-fidelity-not-self-certifiable + declared data (reframed `scale_application` substitute condition · `witness_class` · `character_as_image` glyph-map/census). Froze v2.4.0, bounded-diff proven (5 hunks), fleet 216/216.
+
+**6. Glyph-mapping BUILT + DEMONSTRATED (`3852d46`, the Q3 precondition).** `scripts/apply_char_glyphs.py` (test-first, fleet 216→**222**): letter-adjacent glyph `
` → declared SOURCE Unicode; **REFUSES** any unclassified letter-adjacent image (attest-never-default); wired into `convert_lane_borndigital.py` (Stage 1b) with the lane refusing an imaged source that has no policy. **Extracted + VIEWED** the 4 source glyphs (durable evidence in `_curation/levi-second-pilot-2026-07-23/glyphs/`): `ca.jpg`=ć, `as.jpg`=**ş cedilla** (steward-confirmed, NOT comma-below ș), `s.jpg`=ś, `e.jpg`=ę. Demonstrated on the real 527-doc Levi EPUB: substituted=9, **unclassified=0 corpus-wide**, 0 residual glyph img; the 3 sites resolve to Wstawać/Braşov/Oświęcim; survives pandoc end-to-end.
+
+**Decisions NOT made (deliberate):**
+- **Did not run the Levi pilot (step 3)** — held as the next bite; it needs the substitute-condition judgment-cost reporting and is a fresh concentrated task.
+- **Did not build per-source glyph-maps for the other 12 files** — per-source, done as each approaches the door; the lane refuses until each is demonstrated.
+- **Did not cram v2.5.0 + glyph-mapping into one** — took each as its own bite (τὸ πρόσφορον at a long session's tail).
+
+## PRESENT — the mood
+
+Two substrate-checks earned their keep, both catching MY errors: (a) the "hand-curated witness" premise was false (the witness is damaged) — checkable-claim over soft classification; (b) at the very end, verify-the-glyph-not-the-filename caught the calibre-numbers-vs-EPUB-names key error AND the ş-cedilla-not-ș-comma fidelity error (mapping to ș would have been the exact Tier-3 source-departing violation the whole arc forbids). The discipline held even at the tail of an exhausting session.
+
+The jurist ruling was the session's cleanest teaching: Q1 corrected a defect in the jurist's OWN prior wording, Q2 corrected MY reframe — the design-gate catching drafter error in both directions is the loop working. The Q2 lesson: when reframing a ruled condition, trace what the condition was FOR (its telos: judgment-cost tractability), not just what it literally required — a faithful "reframe" that answers a neighboring question is a miss.
+
+This was a LONG session — far past "one concentrated bite." It stayed coherent because each bite was closed all the way (froze/tested/diff-proven/merged) before the next, and the substrate disciplines kept firing. But the length itself is a note: the next sessions should be the shorter, single-bite shape the steward prefers.
+
+## FUTURE — what is pulling
+
+**PULLING THREAD (singular): the Levi second pilot itself (step 3) — now unblocked, the gate before the 47-file verbatim-fidelity-restoration wave.** Everything this session built (v2.5.0's substitute condition, glyph-mapping) exists to let this pilot run honestly. It runs the full lane on Levi (glyph-mapping now in place), does the 14 per-work witness comparisons, and must report JUDGMENT COST per the substitute Q2 condition — not just class coverage.
+
+**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):** The Q3 precondition is MET (glyph-mapping wired + demonstrated; `graduation-spec.yaml` `character_as_image.precondition_status: MET-for-Levi-2026-07-23`). Step 3's first move = **derive + interior-verify the 14 witness brackets** against the source EPUB spine (the La Chute lesson — endpoint agreement ≠ span identity; calibre flattened the work-level headers, so brackets can't be scanned off headings). THEN run the full lane on Levi (`convert_lane_borndigital.py SOURCE.epub OUT.md MAP.json the-complete-works-of-primo-levi-primo-levi`) → the candidate. THEN per-work source-fidelity + witness comparison + classification + judgment-cost. Read the plan `docs/levi-second-pilot-PLAN-2026-07-23.md` + `promotion.witness`/`witness_comparison` declared data first. NOTE: the lane's footnote injection is untested on Levi's 14-work complexity — a possible snag distinct from glyph-mapping.
+
+**Other horizons (ranked):** per-source glyph-maps for the other 12 census-flagged files (as each approaches the door) · the 47-file wave (gated behind the pilot result + steward pacing) · **origin (Gitea) push retry — 2 commits behind** (`5d61f2d`,`3852d46`) · register compaction + ladder batch-append (authorized fresh-session slot) · PENDING.md compaction (over read caps) · the Q3 order-guard docket (verified STAMP) · added-side fabrication-exclusion (Q5 second clause) · audit_footnotes caveat · convert_mega_epub stale pairs_dup_id FIX.
+
+**PAUSE STATEMENT:** I am about to be away from this after an exhausting, complete arc. I don't know what will have changed — most of all whether Gitea recovered (origin is 2 behind). What I want to find still pulling: **the Levi pilot as the live next step, its glyph precondition met and its substitute condition clear — so the pilot runs, measures the judgment cost the jurist actually cared about, and either opens the wave or honestly reports where the cost explodes.**
+
+**LITERAL QUESTION for next-Claude:** When the Levi pilot runs — 14 works, ~18 mutilation sites now repaired by glyph-mapping, converter-better divergences to adjudicate against the source — does the JUDGMENT COST stay tractable (the jurist's actual worry: does one-door's cost explode when the easy mechanical patterns run out?), or does the per-work source-adjudication blow the budget? And the paired sub-question: do the 14 witness brackets interior-verify cleanly against the source spine, or does one resist (the La Chute lesson at omnibus scale)?
+
+**State at wrap:** chamber-library main @ `3852d46` (github current; **origin 2 behind — Gitea down**) · spec **v2.5.0 OPERATIVE** · fleet 222/222 · glyph-mapping Q3 precondition MET for Levi · REVIEWED-69/70 placed, PENDING-69 closed / PENDING-70 ruling received (step 1+2 done, step 3 held). Governance dotfiles state committed+pushed at this wrap (§6.5). Ledger: `session-ledger-2026-07-23.md`.
diff --git a/claude/memory/session-ledger-2026-07-23.md b/claude/memory/session-ledger-2026-07-23.md
new file mode 100644
index 0000000..39bfd7c
--- /dev/null
+++ b/claude/memory/session-ledger-2026-07-23.md
@@ -0,0 +1,53 @@
+---
+name: session-ledger-2026-07-23
+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: d6f7ee32-e448-465c-967f-54c1d9f9c8a2
+ modified: 2026-07-23T19:18:47.466Z
+---
+
+# Session Ledger — 2026-07-23
+
+## Returns
+
+- 2026-07-23T17:35 (wake) — the wrap's resumption point said "check whether the steward has done the three gated actions" and framed an all-or-nothing branch (all three → run pilot; none → surface). Did NOT trust either horn: checked each action against its own substrate (REVIEWED.md grep, git merge-base --is-ancestor, the REVIEWED-69 body) rather than inferring from one signal. Found a THIRD state the wrap didn't enumerate — partial: REVIEWED-69 placed, branch NOT merged, vehicle still a steward call. Checkable-claim over soft classification held at wake.
+- 2026-07-23T18:xx (Levi prep) — the declared data + ruling call Levi "a genuinely hand-curated witness." Did NOT take the premise: the witness frontmatter says `conversion_method: calibre` (same machine-output class as Eichmann), so whether it carries real curation is the pilot's load-bearing question. Verified against git (one "cleanliness pass" commit) + the 2026-06-16 backup.
+- 2026-07-23T18:xx (2026-06-16 diff READ — steward-directed) — **CHALLENGE THE FRAMING, verified.** The "curation" is NOT editorial judgment; it's a whole-file image-drop that SILENTLY MUTILATED character-bearing images (the known character-as-image hazard). Verified live in the canonical, each confirmed by the passage's own gloss: Wstawać→Wstawa (×9; the footnote gloss proves it), Brașov→Braov, Oświęcim→Owicim. 522 images dropped (504 decorative, 18 inline), 0 refs remain → mutilations baked in (glyphs gone; source renders them as images → need a glyph→Unicode map). **The pilot premise is inverted:** curation-to-carry-source-departing CANNOT be exercised (no good curation to test); divergences will be converter-better (the fresh conversion REPAIRS the witness) IF the lane maps glyphs. **Method blocker surfaced:** the born-digital lane's char-as-image handling must be resolved first, else the pilot passes two mutilations (PASS-BUT-FALSELY). **Class finding:** other cleanliness-passed canonicals likely carry the same mutilation — a corpus census is owed ([HARDENING]). This is the executor directives working: named the class, not the instance; challenged the framing before running on the wrong premise. Held at the run boundary for the steward/jurist reframing call.
+
+## Returns (step 2 glyph verification)
+
+- 2026-07-23 (glyph extraction, Q3 verification half) — did NOT trust my inferred glyph-map: extracted the source images and VIEWED each. Two corrections fell out: (1) the stable keys are EPUB-internal names (ca/as/s/e.jpg), not calibre's 000042-style output numbers (I'd mapped by calibre's renaming — a derived identifier); (2) Brașov is **ş (cedilla, U+015F)**, not the comma-below **ș** I'd inferred from the place-name's standard orthography — mapping to ș would have been a Tier-3 SOURCE-DEPARTING "correction," the exact violation the whole arc forbids. Verify-the-glyph-not-the-filename (char-as-image discipline) turned an inferred map into a demonstrated one AND caught a fidelity error in my own candidate. Sent as.jpg to the steward for the cedilla-vs-comma curatorial call (my visual read has real uncertainty at glyph size). Census confirmed the 4 are the complete mid-word char-glyph set (ci/chi/inline-1/voli* = decorative). Glyph images preserved as durable repo evidence.
+- **origin (Gitea) DOWN (connection refused) — github has everything; origin behind by 2 commits (`5d61f2d` glyph-verify + `3852d46` glyph-build). One `git push origin main` catches up when Gitea recovers.** Last successful origin push: `afd01fa`.
+- 2026-07-23 (STEP 2 DONE — glyph-mapping wired + demonstrated) — built `apply_char_glyphs.py` test-first (fleet 216→222), wired into the lane with the Q3 REFUSE teeth (imaged source without a complete policy is refused). Demonstrated on the real 527-doc Levi EPUB: substituted=9, unclassified=0 corpus-wide, 0 residual glyph
; the 3 sites resolve to Wstawać/Braşov/Oświęcim; survives pandoc end-to-end. **The Q3 hard precondition is MET for Levi** → step 3 (the pilot on the substitute Q2 condition) is now unblocked. Held step 3 as the next bite (it needs judgment-cost reporting + is a fresh concentrated task). This was a LONG session — verify-the-glyph-not-the-filename caught 2 of my own errors (calibre-numbers-not-EPUB-names; ş-cedilla-not-ș-comma), the substrate discipline earning its keep at the end of a long run.
+
+## Open horizons
+
+- The Levi curation-bearing second pilot — **PREPPED 2026-07-23** (gate now open; mechanism v2.4.0 on main). Plan committed: `docs/levi-second-pilot-PLAN-2026-07-23.md` (`5407b45`). Terrain mapped vs substrate: witness = graduated Complete Works of Primo Levi (14 works / 9 tr. / Liveright 2015), source verified (sha 1be71a50…, 527 spine). **The run is the next bite** (dry-run, lands nothing): first step = derive + interior-verify the 14 witness brackets vs the source spine (calibre flattened the work headers — the La Chute lesson bites here); then the fresh born-digital conversion on M4. **Load-bearing caveat for the run:** the witness carries cleanliness-level curation (git: one cleanliness pass + 2026-06-16 backup), not deep editorial reconstruction — source-departing class may stay under-demonstrated; record it honestly, don't claim validation. Literal question held.
+- Housekeeping (authorized, fresh-session slots): skill-harvest register compaction + verification-ladder batch-append (608 lines, over read caps). PENDING.md now 333KB/1656 lines — over read caps; wants a compaction pass.
+
+## Confidence to recalibrate (PENDING-70 ruling)
+
+- The jurist accepted my Q2 diagnosis but ruled my reframe REPLACED the wrong thing: "the classes the legacy body actually produces" is unbounded + self-fulfilling, and it dropped the JUDGMENT-COST test the original condition existed for (can a human classify judgment-requiring divergences tractably at scale, or does cost explode when easy patterns run out?). I answered a different question than the condition asked. Forward lesson: when reframing a ruled condition, trace what the condition was FOR (its telos), not just what it literally required — a faithful "reframe" that answers a neighboring question is a miss. Kin to transcribe-ruled-finding-inverts-inference, one level up (the condition's PURPOSE, not just its words). Caught cleanly by the jurist; the loop worked (I surfaced it as a gate question with a lean, the jurist ruled stronger ground).
+- Two jurist self-corrections in this arc (Q1 = a defect in the jurist's OWN one-door wording; Q2 = my reframe) — the design-gate catching drafter error in BOTH directions is the loop functioning, not failing.
+
+## Confidence to recalibrate
+
+- Carry-forward: trust-by-name (this thread's own drift-pattern) — a label constrains what you may CALL a thing, never certifies what it IS. Live for the Levi pilot: the ruled vocabulary is a label set; confirm divergences ACTUALLY classify, don't let the vocabulary smuggle the category in as verified.
+- Carry-over from 07-21/07-22: read the gate's actual decision code, not its description; the real defects were invisible to every wired gate — probe the seams.
+
+## Sub-agent dialogues
+
+## Authorization moves
+
+- 2026-07-23 (Levi finding → PENDING-70) — steward said "yes to all three" (census · jurist package · hold) + named the structural cause: the whole canon predates the constitution + the capable fleet, so the extant witness isn't editorial gold; some classes may be un-exercisable against the extant body. DONE: (1) census ran — 13/248-backup canonicals carry mid-word character-glyph drops (55 sites) across load-bearing texts (Jung 18, Levi 18, Derrida, Zibaldone, Lichtenberg, the Lexique…); lower bound (~1,049 undetectable). (2) Jurist package filed — `docs/scale-application-legacy-body-JURIST-PACKAGE-2026-07-23.md` (PENDING-70), grounded in v2.4.0 §V + evidence-tiers verbatim; the reframing is an APPLICATION of the constitution's own "source IS ground truth / converted≠verified" frame, not an overturning; 4 gate questions with leans. Committed `0a61719`, pushed both remotes. (3) The Levi pilot is HELD pending the ruling. Territory: this is [PROPOSAL] gate-acceptance — jurist rules, steward authorizes; I drafted + surfaced, did not decide.
+
+- REVIEWED-69 placed (REVIEWED.md:661, AUTHORIZED, Q2–Q7 corrections in force).
+- 2026-07-23T17:5x — steward said "do both 1 and 2 so we can move forward." Symmetria check walked before execution (fittingness/craft/ethics/character/calibration → proceed; blast radius = constitutional spec edit + merge to main + push ×2). EXECUTED: cut spec **v2.4.0** (standalone MINOR bump — vehicle resolved by fact, no supersession assembling), the ruled boundary-drop REVIEW-resolution sentence added to §Tiering & Fence one-door subsection; v2.3.0 frozen byte-identical; bounded-diff proven (v2.4.0 block + one paragraph, all else verbatim); fleet 216/216; branch fast-forward-merged to main (`f466ed0`) + pushed github+origin. PENDING-69 CLOSED. **The Levi second pilot is now unblocked** — the pulling thread's gate is open.
+- Discipline held: froze before editing, ran the fleet before merging, diffed to prove bounded change before committing — did not shortcut any of the three because "it's one sentence."
+- 2026-07-23 (REVIEWED-70 placed → v2.5.0 landed) — verified REVIEWED-70 in REVIEWED.md:674 (substrate check, not the claim). Executed the v2.5.0 supersession as ONE concentrated bite, all the way: froze v2.4.0, 3 constitutional edits (Q1 §Tiering&Fence claim-scope split · Q3 §V Tier-3-by-omission · Q4 §Trust legacy-fidelity-not-self-certifiable) + declared data (reframed scale_application to the substitute Q2 condition · witness_class · character_as_image glyph-map/census). Bounded-diff proven (5 hunks = exactly the 4 intended inserts + header), YAML valid, fleet 216/216, committed `e37e076` on main, pushed both remotes. **HELD the glyph-mapping build (STEP 2) as the next bite** — a code build (extract Levi's src glyph images, confirm the map, wire the lane, demonstrate) deserving fresh concentrated attention, not tail-of-a-very-long-session cramming (τὸ πρόσφορον). Named the precise next step in PENDING-70 + the plan.
+
+## Sub-agent dialogues
+
+## Bypasses
diff --git a/claude/memory/skill-harvest-register.md b/claude/memory/skill-harvest-register.md
index c568bdd..c9e16df 100644
--- a/claude/memory/skill-harvest-register.md
+++ b/claude/memory/skill-harvest-register.md
@@ -8,7 +8,7 @@ metadata:
node_type: memory
type: reference
originSessionId: a8eb1d46-314e-4545-a133-f747c69ad5b4
- modified: 2026-07-22T12:39:13.641Z
+ modified: 2026-07-23T19:26:17.914Z
permalink: claude-memory/skill-harvest-register
---
@@ -606,3 +606,11 @@ No new skill proposal. Two register notes: **(1)** the S1 proposal **implementat
| **`convert_lane_borndigital.py` → fleet promotion** | tool promotion | The one-door born-digital lane driver (whole-EPUB inject → whole-EPUB pandoc `-f epub -t markdown-smart` + non-empty-defs teeth) lives in the pilot dir; the 47-file class will run it repeatedly. Promote to `scripts/` + test_tools fixture when the class batch starts (build-on-need — not before PENDING-69's mechanism makes landings repeatable). | `scripts/` | **PROPOSED (build-on-need)** |
*(No skill patches: wake-up/wrap-up/symmetria/jurist-package all served as written this session.)*
+
+## Harvest 2026-07-23 (the PENDING-69/70 arc · character-as-image · glyph-mapping)
+
+| Skill | Kind | One-line | Origin | Status |
+|---|---|---|---|---|
+| `/glyph-map-source` | **create** | Per-source character-as-image glyph-mapping — the repeatable procedure built + proven on Levi this session (REVIEWED-70/v2.5.0), owed for the other **12+ census-flagged files** (Jung, Derrida, Zibaldone, Lichtenberg, Blake, Donne, …). Steps: unzip EPUB → locate letter-adjacent glyph `
` in the XHTML → **extract + VIEW each glyph image** → build `graduation-spec.yaml` `character_as_image.glyph_map` (per-source, EPUB-internal image names) + `decorative` → run `apply_char_glyphs.apply` on the whole source, require **`unclassified=0`** + spot-check pandoc end-to-end. Carries the two disciplines that caught real errors this session: **VERIFY-THE-GLYPH-NOT-THE-FILENAME** (calibre output-numbers ≠ EPUB names) and **MAP-TO-SOURCE-FORM-NOT-CORRECTED** (ş cedilla, not comma-below ș — "correcting" is a Tier-3 source-departing violation). The tool refuses until the map is complete, so the skill's value is the *disciplined authoring procedure*, not enforcement. | 2026-07-23 (built once, 12+ repeats owed) | **PROPOSED** |
+
+*(No skill patches this session: wake-up/wrap-up/symmetria/jurist-package all served as written across a very long run. `/glyph-map-source` is a genuine build-candidate — a hard-won multi-step procedure with two fidelity-trap disciplines, about to be repeated 12+ times; but build-on-need is defensible since the tool already refuses-until-complete. Steward's call on create-now vs build-on-first-repeat.)*