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
This commit is contained in:
David F Glidden
2026-07-12 21:06:40 +02:00
co-authored by Claude Opus 4.8
parent 0a424aa6b3
commit d9692f7418
4 changed files with 160 additions and 1 deletions
@@ -41,4 +41,36 @@ Executor-drafted for the steward to file into `~/dotfiles/REVIEWED.md` (Constrai
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.
**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.