session 2026-08-08: REVIEWED-97 (vi disposition) placed + REVIEWED-98 draft; PENDING-114 authorized, PENDING-115 filed

This commit is contained in:
David F Glidden
2026-08-08 12:53:11 +02:00
parent 65ff40710d
commit 1a6cdf6cf1
11 changed files with 442 additions and 7 deletions
+71
View File
@@ -1464,3 +1464,74 @@ This is the positive-control standard running **forward** in time rather than ba
**Awaiting:** Steward disposition of (vi), which gates step 2 of the remediation order.
---
## PENDING-114 — Scripture quoted inside a host text, unmarked: a live instance in Harrison, and a class no detector reliably sees
**Date:** 2026-08-08
**Tag:** [HARDENING]
**Related:** REVIEWED-96 (Q1, Q3) · PENDING-113 (the (vi) remediation) · REVIEWED-97 (PENDING-113) if placed. **Split out of the (vi) work deliberately** — it is a new finding, not supporting evidence for that disposition, and filing it inside one would be how it evaporates (the REVIEWED-95 shape PENDING-113 already names).
**Summary.** `harrison-dominion` quotes the Gospel of Mark, with verse numbers, inside its own prose; the sidecar declares three sections all inheriting the file voice, so **Mark 16:7–8 is currently served as `voice: harrison`, citable, with no marking of any kind.** This is a second live instance of the class REVIEWED-96 was convened over — and the first one that is scriptural.
**The instance, measured.** `chamber-library/canonical_texts/traditions/critical_modernity/phenomenology/the-dominion-of-the-dead-harrison.md` L426 carries *"…and they said nothing to anyone, for they were afraid" (vv. 7–8)*. (`harrison-dominion` is the **manifest id**, not the filename — the two differ for this source, and an earlier draft of this entry cited a file that does not exist.) `studium-engine/corpus/sidecars/harrison-dominion.meta.json` declares **3 sections** — 1 `text`, 2 `apparatus` — and **none carries a `voice` override**, so the whole body resolves to the catalog voice. The corpus therefore holds Mark's words attributed to Harrison, exactly as it held Stevens, Rilke and Ungaretti (session 2026-08-07 night).
**Why this is a class and not a span.** The obvious detector — scan for scriptural reference markers — was run across all 14 manifested sources and **does not discriminate**. It puts 7 of 14 in range, but the hits are heterogeneous in kind: Weil's *Gravity and Grace* references to the Upanishads and the Gita are **mentions**, not quotations (verified by reading them); Harrison's is an actual quotation with verse numbers. A marker census cannot tell those apart, so its output cannot be trusted as either a finding or an all-clear. This is the *census-by-mechanism-not-proxy* discipline, and the proxy fails here.
**The harder half.** The quotation in Harrison carries **no quotation marking in the sidecar at all** — Harrison has zero `quotation` sections. So no sidecar-based detector can see it either; the only signals are in the prose (verse citations, quotation marks, lead-in formulae), which is precisely the intra-line class that session 2026-08-07 measured at ~6,455 runs across 8 sources, ~94% of them intra-line and therefore not expressible at the current section granularity.
**A point for the per-source note, not resolved here (jurist).** Mark's own authorship is traditionally attributed but treated by scholarship as composite and redacted — closer to the Mahābhārata's situation than to the Qur'án's claim of direct transmission. Harrison's own text says as much at L426, noting the final ten verses are later additions. A `scriptural` bucket would have flattened this pairing too: it is a third distinct claim, alongside *śruti* and revelation-through-a-Prophet. Reasoning: `studium-engine/docs/voice-non-individual-origin-2026-08-08.md` §3.
**Options.**
- **(a) Fix the span.** Mark the Harrison passage and stop. Cheapest, and leaves the class untouched — the shape `118f411` already took once.
- **(b) Census the class properly**, by running a detector whose recall is *demonstrated on real material* rather than assumed: candidate signals are verse-citation patterns, lead-in formulae, and marked quotation runs, each scored against a hand-read sample with known answers before any corpus claim is made.
- **(c) Accept the limit explicitly.** Declare that unmarked intra-line quotation is not currently detectable, record the exposure, and gate the claim rather than the corpus — the honest-degradation route.
**Recommendation: (b), then (c) for whatever (b) cannot reach.** (a) alone repeats the error this thread exists to correct. The discrimination gate applies with full force: a detector must be shown to separate a known-positive (Harrison/Mark) from a known-negative (Weil's mentions) before its silence over any other source is read as absence.
**⚠ Not to be read as a corpus-wide claim.** This entry establishes **one** verified instance and **one** demonstrated non-instance. It does not establish how many others exist. The marker census above is reported as a failed instrument, not as a count.
**Files affected:** none yet. Remediation would touch `corpus/sidecars/harrison-dominion.meta.json` and, if (b) is authorized, add a detector under `engine/` with its own test floor.
**Awaiting:** Steward authorization of (b).
---
## PENDING-115 — Two mechanism defects that block remediation step 3 regardless of any ruling: a served role the ledger does not call served, and a warrant scope computed per source
**Date:** 2026-08-08
**Tag:** [HARDENING]
**Related:** REVIEWED-97 (PENDING-113) step 3 · REVIEWED-96 · D-4. **Filed separately on purpose.** Both were found while drafting the (vi) disposition and were recorded only in `studium-engine/docs/vi-disposition-DRAFT-2026-08-08.md` §4 — a repo document, not the register. The jurist's own words this session: filing a finding as supporting colour inside another item is how findings evaporate. Checked before filing: **0 mentions of either defect anywhere in `~/PENDING.md`**.
**Summary.** Remediation step 3 sets `citable: true` on `role: quotation` sections. Two independent defects make that step unsafe today, and neither depends on how (vi) or the `quotation-in` × `translation-of` composition is ruled.
**(a) A `quotation` section is searchable but is not classified as served.**
`engine/ingest_gate.py:189` writes `"class": ROLE_CLASS.get(s["role"], s["role"])`, and `ROLE_CLASS` has keys for `text`/`paratext`/`apparatus`/`reference` only — **no `quotation`, no `translation`** — so the fallback stores the role name itself. Meanwhile `chunker.SERVED_ROLES` **does** include `quotation` and `translation`, so such a section is chunked, searchable and quotable once citable. `engine/retrieve.py:169` scopes on `classification = 'served'`.
Measured in the live ledger (Mauss): **12 rows `'quotation'` · 13 rows `'served'` (191 chunks) · 3 `'apparatus'` · 1 `'paratext'`**; the four classifications in use corpus-wide are exactly those. After step 3 the twelve quotation sections would be **chunked, searchable and citable while sitting outside the scope the coverage ledger declares was searched** — so `served_sections` / `served_chunks`, the numbers the engine reports as its own coverage, would understate what it actually searched.
D-4's model has three states — served, paratext-inert, apparatus. This is a fourth: **search-active, not ledger-served.** Constraint #4 (honest degradation) is the clause it violates: the engine would be misreporting its own extent.
⚠ `translation` carries the identical gap and it is **presently latent by absence, not by design** — measured: **0 `role: translation` sections exist corpus-wide**. The first Loeb bilingual or any translated section trips it with no warning. A silent safety net that has never fired has not been shown to work.
**(b) The warrant scope is computed per source, so a sub-source voice overclaims.**
`engine/retrieve.py:171-174` scopes to *"served sections whose **source** has any drawer in this voice"* — the subquery selects `source_id`, so every served row of that source enters the scope. Once a `havamal` drawer exists inside Mauss, `--voice havamal` would report its silence as warranted over **13 served sections / 191 chunks, all of them Mauss's own prose**, none of it the Havámál.
This is harmless today only because voice ⟺ source: measured, **max distinct voices per source = 1 across all 14 sources**, and the one sidecar that declares a second voice (`weil-gravity-and-grace`, 17 `voice: thibon` sections) produces no thibon drawers because `citable: false` means never chunked. **REVIEWED-97 activates this defect** — identity at the work level is exactly what puts a second voice inside a source for the first time.
**Related finding, same surface, not itself a defect to fix here.** Because `citable: false` means never chunked, D-4's promise that paratext is *"convocable later — no data migration, only config"* is **not implemented**: convoking Thibon today returns nothing, and reaching him requires a sidecar edit, not a config change. Recorded so the clause is not cited as though it were operative.
**Options.**
- **(a1)** Add `quotation` and `translation` to `ROLE_CLASS` mapping to `served`. Smallest change; makes the ledger agree with the chunker. ⚠ It changes what the ledger classifies and therefore what `retrieve` scopes — by the amendment discipline a change to what a gate accepts is **PROPOSAL-class**, not a silent tool edit, which is why this is lodged rather than applied.
- **(a2)** Introduce an explicit fourth classification and teach `retrieve` to include it in scope. More faithful to D-4's vocabulary; more surface.
- **(b1)** Scope by voice rather than by source: select the served sections whose own declared voice matches, not every section of a source that happens to contain that voice.
- **(b2)** Leave scope per-source and forbid sub-source voices. Rejected on its face — REVIEWED-97 requires them.
**Recommendation: (a1) + (b1), both before step 3, with a test floor.** (a1) because the defect is that two modules disagree about the same predicate and the chunker is the one that is right. (b1) because the warrant is a **claim the engine makes about itself**, and a claim computed at the wrong granularity is false at exactly the moment it matters. Each needs a positive control that discriminates: for (a1), a quotation section that IS in scope after the change and an apparatus section that still is NOT; for (b1), a two-voice source where the two voices return different scopes — which no fixture in the repo currently provides, because no such source exists yet.
**Check that it worked.** After (b1), `--voice <quoted>` on the remediated Mauss must report a scope of the quoted sections only, not 13/191. If it still reports 191, the scope is being computed from the source again.
**Files affected:** `engine/ingest_gate.py` (`ROLE_CLASS`), `engine/retrieve.py` (scope query), `tests/test_ingest_gate.py`, `tests/test_retrieve.py`.
**Awaiting:** Steward authorization. Blocks REVIEWED-97 remediation step 3.
---