session 2026-07-13 (afternoon): 18 body-deficit cause-analysed → 3 remedy tracks; REORDER?→0; PENDING-57 CLOSED

This commit is contained in:
David F Glidden
2026-07-13 17:53:44 +02:00
parent 6272c7f685
commit bc52c520bb
6 changed files with 75 additions and 1 deletions
@@ -14,6 +14,8 @@ metadata:
- Literal-question ANSWER (substrate-verified): source IS reachable at gate-time — NOT from frontmatter `source:` (prose/bare-filename, e.g. Levi "olmOCR of Vintage International…"), but via gate zero's existing resolution: canonical_slug → Chamber Sources manifest (324 entries, each carries `archived_file`) or resolve_pending_source(slug) for a just-staged source. Source-access needs NO greenfield design — just a path-returning resolver sibling to manifest_has (which returns bool only). Tier derivable from archived extension (.epub→V-TEXT / .pdf→V-SCAN-abstain / Loeb DSL→V-DSL, forward-only: 0 Loeb canon graduated yet).
## Open horizons
- 2026-07-13T15:53 — WAKE (20-min brief-pause, post-keystone-landed). Thread Confirmed: the B2 corpus reprocess the map now sizes. First station = the 2b sidecar-wiring graduation amendment, gated on the steward's Loeb-first-vs-full-corpus scoping call. Concentrated candidate bite = the 18 BODY-DEFICIT books (the wrap's literal question: same apparatus story as the 126, or genuinely different?). Nothing moved externally (chamber @ 9afb0cf, dotfiles clean). Doc-drift to fix: PENDING-57 block still reads "awaiting jurist" though REVIEWED-57 authorized → mark CLOSED. Steward pref active: shorter, very concentrated.
- 2026-07-13T15:5x — RETURN (steward-caught): my wake briefing said "REVIEWED-55 placement still owed" — FALSE. Verified against substrate: REVIEWED-55 IS placed (~/REVIEWED.md:490, dated 2026-07-12, AUTHORIZED, full dispositions). Inherited a stale "owed" from this ledger's Authorization-moves shorthand and relayed it uncheck­ed = `inherited-marker-read-as-current-state`. Nothing owed on -55. Antidote reaffirmed: verify a governance item's state against REVIEWED/PENDING before relaying.
- 2026-07-13 — STEWARD-FLAGGED, for step 5 (the sweep), NOT now: "cross-extractor drift-tolerance" is under-defined and doing real work in that sentence. Must be spelled out with the same rigor V-DSL's reflow-vs-loss got (the whole reason V-DSL needed rebuilding was reflow looking like loss) BEFORE the retroactive sweep runs — do not assume it from the name. Present a written definition for concurrence when step 5 comes up.
- 2026-07-13 — Integration point CONCURRED (steward): body_word_conservation lands as its OWN gate step in the graduation flow (with/after source_gate, source-in-hand layer), NOT inside collect_checks. FIX-class (where the call lives, not what it decides — the gate was ratified REVIEWED-57). Reuse gate zero's canonical_slug resolution (PENDING-52 holding under a use it wasn't built for). Build order: (1) resolver → (2) source_dispatch → (3) gate step → (4) spec reflect → (5) sweep [needs the drift-tolerance definition first].
- 2026-07-13T07:56 — PULLING THREAD: land the keystone. Wire `verify_body_conservation` into `verify_graduation.py` + `graduation-spec.yaml` (per-tier dispatch V-DSL/V-TEXT/V-SCAN → FLAG/REVIEW/PASS), fold the cross-extractor drift-tolerance (retroactive probe: 7/9 PASS, 2 false-positive stopword drift), run the diagnostic sweep → corpus-health map. PENDING-57 ratified (REVIEWED-57 filed), schema LOCKED, B2 fleet-v1 built.
@@ -37,6 +39,17 @@ metadata:
- DISPOSITION for the diagnostic sweep (read-only, produces the corpus-health MAP; not a hard forward gate): residual 0 → clean · residual>0 → surface by size + contiguity note for human triage → sizes the 952-book reprocess.
- Probe scripts: scratchpad probe_drift.py (raw) + probe_drift_accounted.py (mechanism). AWAITING STEWARD CONCURRENCE before building/running the 952-sweep.
## THE 18 — literal question ANSWERED by reading the missing spans (probe_18_spans.py, read-only)
- METHOD: full-census script-mix of the missing multiset (greek=source-original vs latin-script=translation/apparatus) + top-3 uncovered runs read as actual text, per book. Script-mix is FULL census; the run reads are top-N sample (honest scope).
- ANSWER: NO — the 18 do NOT resolve into the 126's apparatus story, and they are NOT one mechanism. They are THREE:
· (D) MATCHER ERROR, not loss — 2 books: plutarch-moralia-other-fragments (true key "Other Fragments" 13891≈cand13399; matched to "...Other Named Works" 59997) + suetonius-grammarians-rhetoricians (candidate=Rhetoricians text, matched to Grammarians sibling key; fab=rhetorician/rhetor/antony). fab>0 is a reliable sub-110% wrong-match detector. SAME root cause as the 4 MATCH-SUSPECT → pull from reprocess; fix = matcher key-selection. Re-matched they likely go CLEAN.
· (B) BILINGUAL SOURCE-HALF DROPPED — Greek/Latin ORIGINAL column under-captured, translation retained: aristotle-history-of-animals 89.5% (top runs all Greek source), demosthenes-42 88.8% (one Greek run), + the Greek-verse portion of the Aeschylus plays (persians/suppliants/eumenides) + sophocles-trachis. B2 preserve-the-typing recovers it. KEY: the deficit is BODY, not apparatus → does NOT go in app[].
· (C) REAL MIXED BODY LOSS — continuous TRANSLATION passages genuinely gone + source + apparatus, large magnitude: athenaeus 70.1%(199k), macrobius 67.8%(79k, an 18847-tok pure-English run missing), euripides-dramatic-fragments 81.8%, philo-special-laws 84.4%, sextus-empiricus 75.8%, longus 57.9%, catullus 57.2%, pindar-fragments 58.9%, aristophanes-attributed-fragments 82.7%, plautus-three-dollar-day 87.0%. Genuine reconversion targets; must VERIFY passages recovered, not just re-typed.
- COROLLARY (the wrap's held sub-question): for the 18, DSL-full ≠ candidate-body + sidecar-app[] by multiset — the deficit is body, so app[]-population will NOT reconcile it (unlike the 126). ⇒ a clean DISCRIMINATING TEST once B2 runs: reconciles→apparatus(126); doesn't→body(18).
- CONSEQUENCE for the pulling thread: the B2 reprocess is NOT one sidecar-population job. B2+sidecar solves (B)+the 126; the matcher fix solves (D); (C) needs genuine body-recovery reconversion + per-book verify. Three tracks, not one.
- LANDED (steward-directed "write it"): map folded (via a wrong-match-by-fabrication rule in classify_book, m_fab>5% cand → MATCH-SUSPECT) + regenerated with BOUNDED-CHANGE PROOF (exactly plutarch+suetonius change disp; augustine/philo detail-only flag; 948/952 byte-identical; new tallies 802/126/16/6-MATCH-SUSPECT/2) + findings note `_curation/loeb-body-deficit-cause-analysis-2026-07-13.md` + tool-evolution-log entry + CLAUDE.md pointer. Fleet 119/119. Committed `eb21eca` [FIX], pushed BOTH remotes. augustine/philo surfaced-not-folded (larger fab, spans unread → flagged, held in REORDER?). Matcher key-selection fix now gates 6 MATCH-SUSPECT + 2 REORDER? leads = highest-leverage small corpus-health fix.
- CLOSED the augustine/philo lead (steward-directed, same method): span-read + CHECKABLE re-match to the truer key each span pointed to. BOTH resolved to fab=0/lost=0 CLEAN against true key (augustine = PARTIAL key: candidate is full 'Confessions', matched to 'Books 1-8'; philo = WRONG sibling: true 'On Abraham', matched to 'On the Migration of Abraham'). The REORDER? displacement was a pure wrong/partial-key ARTIFACT; REORDER? has 0 genuine members on this corpus. Classifier now validates key BEFORE arrangement. Reclassified to MATCH-SUSPECT (verified, not on the number). Bounded-change proven (exactly augustine+philo change disp; 948/952 byte-identical). Tallies now 802/126/16/8-MATCH-SUSPECT/0-REORDER?. Fleet 119/119. Committed 836b665 [FIX], pushed both remotes. These 2 = cheapest map wins (re-match to named true key -> graduate CLEAN, no reconversion). Steward's context-caution earned real info: the fab signal is a reliable match-problem detector even inside a reordering context; the reorder was a symptom of the wrong key, not an independent phenomenon.
## Sub-agent dialogues
## RETURN — the verse cluster (caught by staying with the run, 25-book batch)