From 8025bb647d077734f83cdfd37e205b87acf6553a Mon Sep 17 00:00:00 2001 From: David F Glidden Date: Sun, 5 Jul 2026 18:41:46 +0200 Subject: [PATCH] =?UTF-8?q?session=202026-07-05:=20exclusion=20path=20rati?= =?UTF-8?q?fied+applied=20(PENDING-47)=20=E2=80=94=20Region=201=20closed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exclusion path jurist-ratified with 2 §1 corrections, applied; 4 FPs excluded (confirmed-wrong, Instrument-B 0/5). Region 1 closed for the known cases. Frontmatter- sweep-at-scale surfaced [needs-authorization]. Ledger + PENDING-47. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01Dsqe1x23NgWaRdiFWSotur --- PENDING.md | 24 ++++++++++++++++++++++ claude/memory/session-ledger-2026-07-05.md | 5 ++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/PENDING.md b/PENDING.md index dcadec8..6c39670 100644 --- a/PENDING.md +++ b/PENDING.md @@ -1220,6 +1220,30 @@ n=100 random non-Loeb, structured query (title + author-P50, no type). **AUTO 27 **FIX-LIST APPLIED (steward "Yes"):** 5 verified FP re-points PINNED to the **permanent Chamber Sources home** (steward correction: pin the permanent home, not the transient library path) with real Instrument-B `against` evidence — the-odyssey, montaigne, lhomme-tome-1, suzuki, berger (5/5 or 4/5). **ARCHIVE-CONTAMINATION FINDING (steward's permanent-home reminder surfaced it):** the FP contamination had reached the permanent archive — `archive_sources.py` had copied WRONG sources under right slugs + `dest.exists()` locked them in; 5 CS copies were the wrong source (0/5) → force-replaced with verified-correct (governed rezip/sha, manifest `corrected-2026-07-04`). **Implication: full archive↔matches reconciliation owed post-gate** (contamination likely in every archived FP). **DEFERRED:** 2 CS-corrected-but-pin-deferred (orthotypo-vol-2, semaison — NO frontmatter, a new corpus-integrity defect beyond the 4 stubs); 4 needs-locate (reverie needs FRENCH ed, meditations/ecrits/nietzsche not on disk — no correct source to pin; the pin mechanism has NO exclusion path → these persist as algorithmic-FPs until an exclusion path or the Axis-A gate). **COMMITTED + PUSHED** the day's chamber-library work (stress-test artifacts, persistence layer, study/tooling docs, 5 pins). `_scratch/` + the nature-of-order-vol-1 untracked file EXCLUDED (not ours). **STILL OPEN:** exclusion-path design (for FPs with no correct source) OR rely on the Axis-A gate; the 2 no-frontmatter canonicals' frontmatter repair; the 4 needs-locate source hunts; works-eliot disambiguation; the 2 scope-under-coverage calls; full archive reconciliation; jurist ratification of the work-identity study (item 4). +### PENDING-47 — EXCLUSION PATH (Region 1.1) BUILT + TESTED 2026-07-05 → surfaced for jurist ratification. HELD from real canonicals. +The ratified pin has no way to attest ABSENCE, so the 4 no-source FPs (reverie / meditations / ecrits / nietzsche) fall through to `classify()` and re-derive the algorithmic FP every run. **Built the exclusion path** (test-first, the hash-locality pattern): an attested `source_verified.result` verdict — `confirmed-wrong` | `none-on-disk` — makes `match_sources.py` emit NO confirmed link (never the FP), routing the canonical to needs-locate. Same attestation shape + guard the jurist ratified: a bare / pipeline / unrecognized verdict is NOT honored (**positive attestation of absence, never a default**). Emits an auditable `excluded` record (`conf:"excluded"` → `archive_sources.py` ignores it by its `conf=="high"` filter, verified — no archiver change). +**PROOF:** 37/37 tool self-tests (7 new exclusion cases: the two verdicts · both positive-attestation guards [pipeline / unattested] · incomplete-attestation · unrecognized-verdict · presence-pin regression · nested-frontmatter parse). The 5 existing presence pins still honored. **Full real-corpus matcher run byte-identical** (source-matches.json + report unchanged) → INERT until an exclusion is declared → ZERO regression (the pin layer's "0 pins → inert" proof). +**Files (uncommitted, held for review):** `scripts/match_sources.py` (`attested_pin` generalized to `{kind: pin|exclusion}`; `main` splits pinned/excluded + EXCLUDED report + `excluded` json record), `scripts/test_tools.py` (+`test_source_match_exclusion`), `_curation/graduation-spec.yaml` (`source_verified.result` documented — generative-from-spec). +**FOR THE JURIST (ratify the pattern, as with hash-locality):** (1) attested-absence via a `result:` verdict on `source_verified` — right shape? (2) the verdict vocabulary `confirmed-wrong` / `none-on-disk`, kept distinct for auditability (the V-SUSPECT/V-NONE-distinctness spirit, condition 6). (3) the auditable `excluded` json record (honest-degradation: the exclusion is visible in the data layer, not silent) vs report-only. (4) once ratified, is applying it to the 4 real FPs `[agentic]` (the FIX-list = Region 1.2), or does each attestation need its own beat? +**HELD:** not applied to any real canonical yet — the exclusion attestations for the 4 FPs (with real Instrument-B `against` evidence) are the FIX-list application (Region 1.2), sequenced AFTER the jurist ratifies the pattern (hash-locality sequencing: ratify pattern → then pin/exclude). +**Awaiting:** jurist ratification of the exclusion pattern (steward relay) → then Region 1.2 (attest + exclude the 4 FPs, regenerate, verify the FPs are gone). Also still open: the 4 needs-locate source hunts (Region 2), the 2 no-frontmatter repairs + stubs (Region 3), works-eliot + the 2 scope calls (steward), full archive reconciliation, item-4 work-identity. + +### PENDING-47 — EXCLUSION PATH: JURIST RULING RECEIVED 2026-07-05 → RATIFIED-WITH-CORRECTIONS; §1 corrections APPLIED (Phase A). Region 1.2 unblocked. +Jurist disposition: **ratified with two required §1 corrections** (not as-submitted). §2 vocabulary ratified (**closed-but-extensible**: a 3rd verdict under the same guard is D-1). §3 emission ratified (the auditable `excluded` record; report-only rejected — the JSON is the durable record). §4: Region 1.2 = `[agentic]` batch, **no per-instance re-gating**, with a **diff-before-commit legibility check**. Cross-ref: same doctrine as the Studium V0 ruling today (a verdict never claims more than what was attested; the process that produced an error never attests its own correction — `conversion-pipeline` excluded as attestor ≙ "never the generating model checking itself"). +**§1 CORRECTIONS APPLIED (Phase A — mechanical / D-1):** +1. **Exclusion moved to its OWN top-level key `source_excluded:`** — not a `result:` verdict inside `source_verified:` (which asserts the opposite of what an exclusion means). Shared guard `_valid_attestation()` (defined once, can't drift), two honestly-named keys — the `sectionless:` precedent followed literally. +2. **`result: verified` now REQUIRED explicitly on `source_verified:`** (no default-by-absence, even for presence) → **the 5 existing pins migrated** (one line each: the-odyssey / montaigne / lhomme-T1 / suzuki / berger). +**PROOF:** 37/37 tool self-tests green under the corrected schema (source_excluded block · result:verified required · co-present exclusion-precedence · unrecognized-verdict refused). Matcher run: **5 pins still honored**; `source-matches.json` + report **byte-identical** → corrections + migration clean, zero regression. +**Files (uncommitted, held for review):** `scripts/match_sources.py` (`_valid_attestation` shared guard + two-block `attested_pin`), `scripts/test_tools.py`, `_curation/graduation-spec.yaml` (`source_verified.result` required + `source_excluded` block, closed-but-extensible note), + 5 canonical frontmatters (`result: verified`). +**REGION 1.2 (now `[agentic]`, diff-before-commit):** attest + exclude the 4 FPs — reverie (`confirmed-wrong`: on-disk *Poetics of Reverie* is English, canonical needs the French — Instrument-B mismatch evidence) + meditations / ecrits / nietzsche (`none-on-disk`: inventory-search absence). Regenerate `source-matches.json`, then **surface the diff (4 `against` strings + before/after json) before commit**. **One methodological point to settle first:** the adequate `against` for a `none-on-disk` attestation — there is nothing to fingerprint, so the evidence is a negative inventory search (`by: manual` + a documented search), vs the confirmed-wrong case (Instrument-B fingerprint mismatch). +**Awaiting:** steward go for Region 1.2 (+ the none-on-disk evidence standard). Still open beyond: Region 2 source hunts, Region 3 repairs + stubs, works-eliot + the 2 scope calls, full archive reconciliation, item-4. + +### PENDING-47 — REGION 1.2 APPLIED 2026-07-05 (steward approved the diff "reads right"). The 4 FPs excluded. COMMITTED. +**All 4 FPs attested `source_excluded: confirmed-wrong`** — verifying against the substrate CORRECTED the map's "3 none-on-disk": each had a concrete wrong on-disk candidate the matcher was picking — reverie → Poétique de l'**espace** (same-author-wrong-work, `suspect=False`, the exact blind spot this arc exists to catch); meditations → Bourdieu *Pascalian Meditations*; ecrits → *Écrits radiophoniques*; nietzsche → *A Nietzsche Reader*. **Real evidence:** Instrument-B **0/5 probe-windows (frac 0.0)** for each — the canonical's prose wholly absent from the matched candidate. Regenerated `source-matches.json`: the 4 → excluded records (conf `excluded`, no link, routed to needs-locate); **every OTHER of the 315 records byte-identical** (change provably bounded to the 4). 37/37 tests. Noted: the 4 canonicals lack a `source:` field — a pre-existing frontmatter gap (feeds the sweep below). +**COMMITTED + PUSHED** the exclusion-path arc (§1 corrections + 5-pin migration + 4 exclusions). +**Region 1 (the non-Loeb FP loop) is CLOSED for the known cases:** 5 pinned, 4 excluded. The *correct* sources for the 4 remain needs-locate (Region 2). REVIEWED entry still owed. +**NEW WORKSTREAM (steward-surfaced 2026-07-05): frontmatter sweep at scale.** The v2 frontmatter spec (`graduation-spec.yaml`) was defined recently, well after most works entered the library → ~1,073 lack v2 frontmatter (+ the 4 FP canonicals' missing `source:`, + Region 3 no-frontmatter/stubs). **[needs-authorization]** — scope-first: a read-only gap census against the spec + a migration plan surfaced for authorization BEFORE touching files. **Honesty constraint (load-bearing):** provenance fields (`source`, `converted_with`, `date_converted`, `source_verified`) cannot be mass-fabricated for works whose provenance isn't known — derive the mechanical ones, mark the unknown honestly, curate the rest. Same anti-default discipline as the exclusion path. + ## PENDING-48 — Studium Engine V0 (verifier contract) — jurist method-gate **Date:** 2026-07-05 **Tag:** [PROPOSAL] — routed to the jurist as a **method gate**. This is the *one named exception* to the engine's steward-direct D-1 governance (cluster-a-data-model.md §0; rebuild-plan §8.5, steward-ruled 2026-07-04): V0 defines *what the engine may assert as verified and when it must abstain*, and everything downstream inherits that standard, so the jurist gates the method before V1 (the byte-existence checker) is built against it. diff --git a/claude/memory/session-ledger-2026-07-05.md b/claude/memory/session-ledger-2026-07-05.md index f8deb10..2c23855 100644 --- a/claude/memory/session-ledger-2026-07-05.md +++ b/claude/memory/session-ledger-2026-07-05.md @@ -30,7 +30,10 @@ metadata: - 2026-07-05 — **PENDING-48 filed** (`~/PENDING.md`): routes Studium V0 (verifier contract) to the jurist as a method-gate — the one named D-1 exception (rebuild-plan §8.5). Two decisions surfaced, leans given not decided: §2 the "unaltered" equivalence relation (the held literal question; lean (B) normalizer@1, flagged possibly-doctrine); §5 the pre-registered V2 thresholds (CP-upper-bound; small-n honesty). **Held at the boundary: no V1 code.** - 2026-07-05 — V0 drafted (`studium-engine/docs/spec/v0-verifier-contract.md`, DRAFT-awaiting-jurist) + N0 drafted (`docs/spec/n0-navigation-tree-contract.md`, D-1, inhabitable, no jurist gate). Both grounded in code read this session (normalizer@1, sidecar schema, coverage-ledger warrant), not the plan's prose. **Uncommitted — commit+push held for steward's word** (studium is D-1 direct-to-main; not explicitly asked to push). - Contamination watch honored: did not let V0 silently decide the doctrine question (surfaced with lean, marked jurist's); thresholds presented as pre-registered-pending-gate, not settled; resisted the pull to build V1 past the boundary. -- 2026-07-05 — **Jurist gate CLEARED (both §2, §5), with conditions.** Ruling recorded at source, not just relayed: V0 DRAFT→v1.0 (Ruling section); the **`fidelity_equivalence@1` fork** landed in `cluster-a-data-model.md` §5.1 (doctrine split visible at source, per the ruling's explicit instruction); PENDING-48 closed (REVIEWED entry owed). Standing conditions carried: proportional-expansion rule (§5), display↔threshold coupling (§5), diplomatic-gold caveat (§2). V1 + N1 now unblocked. Still uncommitted — commit/push held for steward's word. +- 2026-07-05 — **Jurist gate CLEARED (both §2, §5), with conditions.** Ruling recorded at source, not just relayed: V0 DRAFT→v1.0 (Ruling section); the **`fidelity_equivalence@1` fork** landed in `cluster-a-data-model.md` §5.1 (doctrine split visible at source, per the ruling's explicit instruction); PENDING-48 closed (REVIEWED entry owed). Standing conditions carried: proportional-expansion rule (§5), display↔threshold coupling (§5), diplomatic-gold caveat (§2). V1 + N1 now unblocked. Then committed+pushed on steward's word (studium `4140fad`, dotfiles `70ad599`). +- 2026-07-05 — **Shift to chamber. Region 1.1 exclusion path BUILT + TESTED (`[agentic + flag]`).** Diagnosed the pin mechanism, traced the archiver consumer (conf=="high" → excluded records ignored, no archiver change), built test-first: attested-absence via `source_verified.result: confirmed-wrong|none-on-disk`; positive-attestation guard preserved. 37/37 tests (7 new), full real-corpus run byte-identical (inert → zero regression). Surfaced for jurist ratification (PENDING-47 sub-entry); **held from real canonicals** until the pattern is ratified. Uncommitted. +- 2026-07-05 — **Exclusion path RATIFIED-WITH-CORRECTIONS; §1 corrections applied (Phase A).** Jurist required two corrections, both right (closed default-by-absence gaps): (1) exclusion → its own honest key `source_excluded:` (not a verdict inside `source_verified:`); (2) `result: verified` explicit+required on pins → migrated the 5 existing pins. Shared guard `_valid_attestation` (defined once). 37/37 green, matcher byte-identical (5 pins still honored). Recorded per the ruling (PENDING-47 updated; FOR-JURIST banner). **Region 1.2 now `[agentic]` with diff-before-commit** — held for steward go + the none-on-disk evidence standard. Uncommitted. +- 2026-07-05 — **Region 1.2 APPLIED + committed.** Steward "yes and yes" → attested the 4 FPs. Verify-against-substrate CORRECTED the map: all 4 are `confirmed-wrong` (concrete wrong candidate on disk), not 3 none-on-disk — incl. reverie's same-author-wrong-work `suspect=False` blind spot. Instrument-B 0/5 evidence each; source-matches.json change provably bounded to the 4 (315 others byte-identical). Diff surfaced → steward "reads right" → committed+pushed the exclusion arc. **Region 1 CLOSED (known cases).** NEW: frontmatter-sweep-at-scale surfaced ([needs-authorization]; scope-first; honesty constraint = no fabricated provenance). ## Sub-agent dialogues