Files
dotfiles/claude/memory/REVIEWED-drafts-for-filing-2026-07-12.md
T
David F GliddenandClaude Opus 4.8 d9692f7418 session 2026-07-12: PENDING-56/57, REVIEWED filings, ledger
- PENDING-56 (canonical format + sidecar) + PENDING-57 (verbatim gate) filed and carried
  through the jurist rulings; REVIEWED-55/56/57 filed.
- REVIEWED-drafts-for-filing: the paste-ready records.
- Symmetria session-ledger: the full A1 -> schema-lock -> B2 -> verbatim-gate arc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015jYS1tpR4P4NBxui4FSgfv
2026-07-12 21:06:40 +02:00

77 lines
13 KiB
Markdown

# REVIEWED drafts — paste-ready for filing (2026-07-12)
Executor-drafted for the steward to file into `~/dotfiles/REVIEWED.md` (Constraint #1: Claude Code cannot write REVIEWED.md). Both correspond to already-ruled items. Confirm against the source rulings before filing.
---
## REVIEWED-55 — EPUB footnote pre-processor: end-to-end verify + recognizer arc
**Date:** 2026-07-12
**Decision:** AUTHORIZED (as ruled by the jurist; steward-confirmed)
**Corresponds to:** PENDING-55 · Jurist ruling `chamber-library/docs/end-to-end-verify-and-nested-block-JURIST-RULING-2026-07-12.md`
**Notes:** Ratifies the jurist's ruling on the footnote arc:
- **Q1a — end-to-end verify RATIFIED, FIX-class** on the refined test: a §V-chain component is FIX when it (i) only ADDS refusals, (ii) never alters text, (iii) falls back to an already-trusted path. `verify_end_to_end` satisfies all three — turns the guarantee from *verbatim-safe by construction* to *by verification*.
- **Q1b — MANDATORY at graduation** (`--no-verify` forbidden at graduation while `body_word_conservation` is unenforced), PERSISTS after that gate lands (defense-in-depth), **+ RETROACTIVE re-verification required.** [Retroactive sweep DONE (`6c9ca43`): 87 covered books · 42 clean / 45 dirty; **corpus SAFE — 0 dirty graduated**; recognizer's reliable coverage ≈42/87.]
- **Q1c — marker-exclusion made POSITIONAL** (DONE, `e8eeea7`).
- **Q2 — nested-block FIX RETRACTED, honest-refuse CONFIRMED** (the widen pairs but converts dirty; the end-to-end verify caught it; reverted). A fresh PROPOSAL required if ever revisited. Jurist generalization: *structural safety = provisional FIX; end-to-end verbatim proof on real books = final.*
- **Broader flag (jurist):** `body_word_conservation` declared-but-unenforced is the same gap-shape PENDING-52 closed, recurring → now addressed by PENDING-56 (the general verbatim gate = the converter-agnostic trust layer).
**If AUTHORIZED:** Proceed; tag commits REVIEWED-55. Open follow-ons: wire mandatory-at-graduation (flow must not pass `--no-verify`); the recognizer-maturity decision (improve over-pairing vs accept 42-clean + fallback) is now **subsumed by PENDING-56** — the recognizer repositions as the sidecar note-extraction layer.
---
## REVIEWED-56 — Canonical format: adopt Docling + complete MD-canonical + TEI-mirroring structural sidecar
**Date:** 2026-07-12
**Decision:** AUTHORIZED
**Corresponds to:** PENDING-56 · Jurist RATIFICATION 2026-07-12 · Brief `chamber-library/docs/canonical-format-decision-FOR-JURIST-2026-07-12.md`
**Notes:** Steward-decided on the four-tier Docling trial evidence (AskUserQuestion, 2026-07-12); jurist RATIFIED on independently-verified reasoning (not deference):
- **Option A** — canonical = clean Markdown (Docling-converted, verify gates on top) + a `.meta.json` structural sidecar whose vocabulary MIRRORS TEI (`front`/`body`/`back`; `note @place=foot|end`; `milestone`/anchor; reserved `app` slot; `pb`/page-provenance).
- **D1 — adopt Docling** as the EPUB/PDF/scan conversion front-end (MIT, local, per-element provenance); production OCR on CapableHands (M4). Docling **crosses the A3 OCR frontier** `ocrmac` could not.
- **Change-class: PROPOSAL** (changes what graduation produces; touches engine consumer contract §X; whole corpus).
- **Flip-condition tested by the jurist, NOT triggered for v1:** the engine needs neither structured critical-apparatus (A5) as data nor DTS-interoperability in v1 (voice-manifest = interpretive-persona per PENDING-53, not manuscript-variant; the Loeb tier's Stephanus/Bekker need is anchors [B2, which A provides via the sidecar anchor-map], not apparatus). TEI = documented, revisitable future-migration path with those two named triggers.
- **Two schema-gating questions CLOSED before schema lock (brief §8), from substrate evidence:**
- **Q1 — recognizer arc REPOSITIONED, not retired:** Docling emits flat reference-links (0 native `[^N]`, 48 `[*](#…)`; `epub_backend` never reads `epub:type`) → this week's 8-family detection + cross-file anchor resolution + end-to-end verify becomes the sidecar's note-extraction layer; the verify stays as the converter-agnostic verbatim gate.
- **Q2 — CARDINAL EXTRACTOR PRINCIPLE:** the Loeb DSL is typed (`[c dimgray]` 2.15M · `[c darkmagenta]` 471K · `[sup]`) and the current extractor *flattens* it → the extractor MUST **preserve every source-declared typed distinction into a typed sidecar field, never flatten to prose** — makes TEI-migration mechanical-by-construction.
**If AUTHORIZED:** Proceed on the architecture; tag commits REVIEWED-56.
1. Adopt Docling as the conversion front-end; production OCR on CapableHands.
2. Author the `.meta.json` sidecar schema on the two cardinal principles.
3. Build the sidecar extractor (EPUB metadata + Docling PDF labels + note-linkage), honest-flag undeclared roles; prove on montaigne (EPUB2) + jacobs (EPUB3).
4. Keep the trust gates (`verify_body_conservation`, `normalize_ocr` verbatim-guard) on Docling output.
5. Loeb B2: rewrite `extract_loeb_dsl` → MD + sidecar, preserving the DSL color/`[sup]` typing.
6. Spec: v2.x amendment (Docling front-end + sidecar as graduated structural layer) — change-class PROPOSAL, runs the amendment process; retire `ocrmac_pdf` + EPUB cruft-strippers; reshape reprocess track B.
**Per-content check deferred to the B2 build (not a blocker):** whether `[c darkmagenta]` is apparatus-variants vs bilingual source-text — resolve by sampling volumes; the preserve principle covers both. **[RESOLVED 2026-07-12 by substrate probe: `[c darkmagenta]` = Loeb-reader-RENDERED headers (author/work/book), NOT apparatus; `[c dimgray]` = rendered line-anchors + page-markers + `[sup]` refs. The colors are the reader's rendering, usable as reliable role-CUES, attested honestly as `loeb-render:*`.]**
---
## REVIEWED-56 — LOCK ADDENDUM (whole-schema lock ruling, 2026-07-12)
**Date:** 2026-07-12
**Decision:** AUTHORIZED — whole-schema lock CONFIRMED (schema-side, unconditional)
**Corresponds to:** PENDING-56 (schema-lock) · Jurist RULING #2 `chamber-library/docs/...B2-evidence-and-whole-schema-lock-JURIST-RULING-2026-07-12.md` · Executor briefs `docs/sidecar-schema-FOR-JURIST-2026-07-12.md` + `docs/sidecar-schema-lock-addendum-B2-evidence-2026-07-12.md`
**Notes:** Second jurist ruling in the PENDING-56 arc — the schema LOCK (the first ruling ratified the format/architecture; this locks the `.meta.json` sidecar schema itself). Jurist confirmed on independently-checked B2 evidence, not deference:
- **Whole-schema lock CONFIRMED, unconditional on the schema side** → DRAFT (`docs/sidecar-schema-DRAFT-v0-2026-07-12.md`) flips to LOCKED. B2 (`scripts/build_loeb_sidecar.py`) demonstrated flag-and-hold *in code* on the corpus's densest apparatus volume (Ennius FRL Vol I: 44 concordance tables held as typed rows; Diophantus: 38 glyph char-images held with filename preserved) — read back from emitted JSON, not asserted. Every field held; **no missing field**.
- **§3 two minor items CONFIRMED, no schema impact:** (a) `source_declared: "loeb-render:*"` — a new *value* in the existing field's vocabulary, honestly naming a render-cue (weaker than `epub:type`); (b) `app[]` interior shapes `{kind:"table"}` + `{kind:"glyph"}` — principle-5 reserved slot resolved from real evidence.
- **§4 additive-only amendment discipline CONFIRMED + ONE ADDITION:** LOCKED = meaning/shape of every existing field (books trust them); FLEXIBLE (FIX-class, amendment lane) = new optional fields + new `app[]` kinds (backward-compatible; a pre-addition book simply lacks it); PROPOSAL = changing a locked field's meaning **— AND field REMOVAL** (jurist addition: a presence-checking consumer breaks identically from removal as from meaning-change; same silent-retroactive risk → same PROPOSAL treatment).
- **ONE condition MOVES (not closes), extractor-side, does NOT block the lock:** the jurist distinguishes apparatus *density* (what Ennius maximizes) from *diversity of kind*. "Densest volume fit the schema" ≠ "worst case seen" — a sparser volume among 952 could carry a third form (marginal sigla, interlinear glosses; already present in the corpus as `<ul>/<li>` lists + `<h2/h3/h4>` headings, which the v0 prototype does NOT yet hold). **Before B2 runs across the full ~952-book Loeb tier** (not before the lock): confirm/demonstrate a *generic* "unrecognized apparatus shape → flag-and-hold" fallback (mirroring the line-range join's flag-on-unresolvable), so safety is seen-or-unseen-independent. Extractor-completeness, behind the amendment.
**If AUTHORIZED:** file REVIEWED-56 (this addendum); flip the schema doc DRAFT → LOCKED; tag commits REVIEWED-56. Then, as separate additive amendments: the graduation-spec wiring (sidecar as graduated structural layer) + the B2 extractor completeness (generic fallback + `<section>`-div sections + footnote ref↔body pairing). Books may write against the locked schema meanwhile.
---
## REVIEWED-57 — Enforce `body_word_conservation` at graduation (the converter-agnostic verbatim trust gate)
**Date:** 2026-07-12
**Decision:** AUTHORIZED — FULLY RATIFIED (jurist, after a two-round demonstration loop)
**Corresponds to:** PENDING-57 · Jurist rulings (3): architecture → V-DSL-demo condition → full ratification · Brief `chamber-library/docs/verbatim-gate-enforcement-FOR-JURIST-2026-07-12.md`
**Notes:** The PENDING-52 gap closing at the foundational layer — the declared-but-unenforced `body_word_conservation` gate (listed in `graduation-spec.yaml` line 136, not enforced by `verify_graduation.py`) becomes the gate that is actually checked. Ratified by the jurist across three rulings, each demonstration-gated, not deference:
- **Architecture RATIFIED:** three-tier verdict FLAG→blocks · REVIEW→holds-for-curator · PASS→proceeds. REVIEW is real work (endnotes-keep vs index-drop can't be told by alignment position alone), not a soft pass. V-SCAN abstains by construction (no ground truth). Change-class **PROPOSAL** confirmed — distinct from REVIEWED-55's refusal-only-FIX exception because a FLAG / unresolved-REVIEW has NO already-trusted fallback route to canon.
- **Per-tier dispatch:** V-DSL (Loeb, re-extract) · V-TEXT (born-digital, re-convert + prose-word guard — BUILT, caught jacobs 888 / manguel 2856 / montaigne fn-id residue that audit_cruft missed) · V-SCAN (abstain). Provenance verified: spec v2.0.0 §Tiering & Fence is ratified (RATIFIED-SHAPE · OPERATION-BLOCKED) — this un-blocks a ratified shape.
- **V-DSL DEMONSTRATED, both halves (the jurist's demonstration condition):** the naive reuse of the V-TEXT k-gram check FALSE-FLAGGED a clean book (his caution vindicated) → corrected to a **reflow-tolerant word-multiset** on source-content body. FABRICATION: clean Apollonius (verse) + Plato Gorgias (prose) → 0 PASS; inject → FLAG naming tokens. LOSS (2nd condition): independent teeth via a boilerplate-vocab classifier — clean `lost_content 0 PASS`; drop a content word (`banquet`) → FLAG naming it. Both halves now on direct injection proof, not trust. Fleet fixtures both sides (`test_tools` 105→111).
- **Auto-PASS RATIFIED for V-DSL's loss side** — the demonstrated teeth suffices for the general case; the honestly-named residual (a dropped occurrence of a ~15-word boilerplate-vocab token, masked by its header count — can only lose a stopword or the author's name) does NOT warrant blanket REVIEW-routing. **Documented in the gate itself** (`verify_body_conservation.classify_dsl`, tagged REVIEWED-57) with a **revisit-trigger**: if the retroactive sweep ever surfaces a real instance of this masked-vocab failure, weigh tighter checking then.
- **§6 RETROACTIVE sweep RATIFIED as folded:** on landing, the gate runs BACKWARD across graduated canon (V-DSL 952 · V-TEXT 239) — diagnostic-map-first → remediation queue (FLAG=re-verify→reconvert; REVIEW=curator; PASS=re-attest), NOT silent de-graduation. Well-precedented by REVIEWED-55's own retroactive sweep (87 books, 0 had actually graduated dirty). Expect a non-trivial fraction (the 3/3 morning sample: jacobs/manguel/montaigne all graduated-clean, all failed). Companion efficiency (noted, not required): the LOCKED sidecar's `placement:back`+`role` resolves the REVIEW-tier endnotes-keep/index-drop ambiguity declaratively for any book carrying a sidecar.
- **43-book census CONFIRMED:** V-DSL 952 · V-TEXT 239 · V-SCAN 50 · V-SUSPECT 29 · V-NONE 14 = 1,284; the 43 = V-SUSPECT+V-NONE = the fenced-out tier (no confirmed source) → correctly outside the sweep (a provenance problem, not a coverage gap). Jurist noted (not a condition): these 43 are the same gap-shape PENDING-52 closes going forward — worth attention once the queue moves.
**If AUTHORIZED:** land by supersession into `graduation-spec.yaml` (make the listed `body_word_conservation` gate enforced + declare the per-tier dispatch) + `verify_graduation.py` (add the per-tier body-conservation gate with source access + tier dispatch) — tag commits REVIEWED-57. Follow-ons: the retroactive sweep run (diagnostic-first) once landed; the sidecar-declaration REVIEW shortcut when convenient; the 43 fenced-out books to source-location. The V-DSL loss residual + revisit-trigger are already in the gate's docstring.