--- 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:39:14.378Z 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)? **THE FRAME WE WAKE INTO (the altitude, steward-affirmed at close — "we wake to this"; VERIFIED against the plans 2026-07-23, an earlier draft's sequencing drift CORRECTED):** Read the telos (`project-studium-engine-telos-chamber-of-voices.md`) + the engine charter-update (`studium-engine/docs/the-studium-engine-charter-update-after-the-substrate-2026-07-04.md` Part V) FIRST. **The telos is the measure** — the charter's hinge, *"a counsel surfaced from a corrupted source is not counsel; it is the simulacrum v1 already was,"* is why today's char-as-image finding is telos-level, not a chore. **BUT the shape is TWO PARALLEL TRACKS advancing together, NOT a linear four-movement arc** (that was my drift; the plans correct it): - **Corpus track:** grow the VERIFIED tier via one-door (the fence — converted/verified/fenced — already handles tiered trust; the engine reasons only over *verified*, which grows one source at a time). The char-as-image finding TIGHTENS the graduation gate (glyph-check now part of what makes a file *verified*) — it does NOT invalidate the corpus. **The Levi pilot gates whether the tier can grow AT SCALE** (`scale_application`). Order restoration by TELOS (the Making sources the engine grounds first) — a steward-PACING call that slots alongside the plan's other open-corpus tracks (Loeb apparatus recovery, source-match remediation), NOT a re-ordering the plan already fixes. - **Engine track (already underway, in parallel — "the engine cannot outrun the corpus" = paced-together, NOT corpus-first-then-engine):** verifier-first. V0 ratified, **V1 verify-quote BUILT + `fidelity_equivalence@2` GOVERNING**; **NEXT = N1 (navigation-tree builder) → V2**, NOT the pattern-finder (`pattern_finder.py` was built AHEAD of sequence, pass-1 PASS-BUT-FALSELY — the standing reason the verifier leads; the "L2 pattern-finder next" in my first draft + the 35-day-old telos memory is STALE). The **voices (L3, the chamber-of-voices telos) are the FRONTIER, behind the verifier track** (Steps 8–9) — correctly last. **The pilot is still tomorrow's right work and still a hinge — but the hinge on the CORPUS track's ability to SCALE, running parallel to an engine track already several organs in.** And it is a genuine fork, not a formality: hold its judgment-cost number as a measurement willing to surprise — tractable → the verified tier grows as a paced telos-ordered march; explodes → learned before hundreds of hours, and the legacy-body verification strategy changes. Let the substrate answer, not the hope. **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`.