Files
dotfiles/claude/memory/session-2026-07-29-coverage-never-attests-order.md
T

72 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: session-2026-07-29-coverage-never-attests-order
description: "The Q3 precondition could not be satisfied by anyone — the guard it asked to see FLAG is structurally order-blind, already demonstrated on a real book (Eichmann §7) and already ruled (REVIEWED-74), neither supplied to the jurist. Measured: four extractors with zero shared libraries, only docling order-capable; block-reversed text scores 100% match/PASS against a CORRECT reference. Jurist WITHDREW its own precondition as its error. Spec v2.9.0 LANDED (REVIEWED-84) — coverage never attests order; mechanism deliberately NOT ratified, eyeball-after-gate invoked with 0-of-17 exposure. PULLING THREAD: specify order_attestation: — its binding precondition (a second order-capable method) is now MET, and specifying it is a fresh PROPOSAL needing its own gate."
metadata:
node_type: memory
type: project
originSessionId: 1c3580c9-c9cf-4cef-a0c4-c470ca684fa3
modified: 2026-07-31T19:55:14.113Z
---
# Session 2026-07-29 — coverage never attests order
Woke on the Q3 demonstration thread after a 27 h pause; ended with a constitutional supersession landed, a jurist ruling that corrected the jurist, and the next proposal's gating precondition met. The session never left the thread.
## PAST — what happened + why
**The thread's step 2 was already answered, in the negative, and I nearly re-derived it.** The wrap of 2026-07-28 set out to "construct the column-order corruption case and confirm the guard FLAGS it." Building it produced the result — and a repo grep *before publishing* found that the Eichmann one-door pilot §7 (2026-07-19) had demonstrated the identical finding on a real book (*"the wired k-gram guard is BLIND to it. Clean and doctored candidates return byte-identical verdicts"*), that the tool's own 2026-07-06 log already caveated it (*"k-gram coverage is blind to pure REORDERING"*), and that the jurist had **already ruled** it on 2026-07-24 as the standing Q3 order-blindness block gating the **stamp**, not the door. My run confirms and extends (block-size sweep, perfect-reference configuration); it discovers nothing.
**Independence: measured, and it exists — but not on the axis that mattered.** Four extractors, **zero shared PDF libraries** by `otool` (poppler→libpoppler, its own banner naming the xpdf lineage; PyMuPDF→libmupdf; pypdfium2→libpdfium; pdfminer.six pure-Python). On a **hand-authored** two-column fixture (raw PDF operators — the artifact testing extractors must not come from an instrument under test), whose content stream is row-major while correct order is column-major: **docling recovers column-major perfectly (1.000)**; all four geometric tools, across *every* documented layout mode, return output **byte-identical to poppler's `-raw`** (documented stream order) — the internal control that converts "they agree" into "none of them reordered." Docling re-run `--no-ocr` was byte-identical, so its recovery is the layout model over the text layer, not OCR of a rendered image.
**The operator, not the pair, is the blocker.** Against the repo's own `verify_body_conservation.classify` on a real canonical (`juvenescence-harrison`, 77,482 tokens): identical→PASS, 200-token interior cut→FLAG, token shuffle→FLAG at 0.00%, and **two halves swapped / block-order reversed → PASS at 100.00% match, 0 added, 0 interior lost**, against a *correct* reference. k-gram coverage is local; a block move preserves every k-gram inside it. **Adding independence to a coverage comparison cannot make coverage order-sensitive.**
**False-positive measurement (the steward asked for the most information possible).** 11 books × 3 extractors × 40 interior pages. Decomposed on two axes because one score confounds them: `content_overlap` (do they agree what text exists) vs `order_concordance` (1 − inversions/pairs over shared k-grams). **Clean 0.995–1.000; block-reversed 0.117–0.411; gap 0.583, zero overlap.** The axes are orthogonal in the data — Arcades has the worst content overlap (0.551) and still scores 1.000 on order.
**A prediction of mine was refuted by measurement.** From the synthetic fixture I predicted the geometric extractors would mis-order *real* two-column books and false-flag them. A column probe over all 84 born-digital library PDFs found **exactly one** predominantly two-column book, and it scores **0.995–0.999 clean**. Real two-column pages carry structural signal the fixture deliberately stripped. Restricted to **sources of record**: **0 of 17** born-digital Chamber-Sources PDFs are two-column — the one flagged book lives in the *master library*, which the standing discipline says is never a source of record.
**The package, and the check that earned its place.** `docs/order-attestation-JURIST-PACKAGE-2026-07-29.md` (PENDING-87), authored via `/jurist-package`. A mechanical containment checker over 30 quoted passages against four source files, with positive and negative controls, caught **six defects in my own draft**: five quotation-precision failures, one **substantive** — I had truncated §7's *"a bounded extension, but ruled work, not tonight's"* to *"…but ruled work."*, turning a deferral into a commitment — and one I had not thought to check: my own **proposed** constitutional text was formatted as a `>` blockquote, visually identical to the ratified quotes. Fixed by making the convention explicit (ratified = blockquote, proposed = fenced). 30/30 after correction.
**The jurist corrected itself, and found the gap my own premise had opened.** It verified the central historical claim by pulling REVIEWED-74 *independently* rather than accepting my account, re-checked both quotes attributed to it word-for-word, and then **withdrew its own Q3 precondition as its error**. It also applied my Part IV premise — *divergence, not agreement, proves independence* — one step further than I had: three of the four extractors agree **by failing identically**, so on the **order** axis there is exactly one instrument in evidence, and pairing docling against itself would reintroduce the same-tool vacuity independence exists to prevent. And it declined my "surfaced, not answered" on Q5, ruling **against** ratifying my instrument on the strength of the limits **I** had stated in Part VIII.
**Landed:** spec **v2.9.0** (`86311d6`, REVIEWED-84) — v2.8.0 frozen byte-identical; bounded diff **1 line removed** (the title, now `(obsoleted)`) **+ 66 added**, all 1,519 other lines preserved verbatim by multiset containment; Grounding quotes 5/5 verified against the frozen prior with controls. PENDING-86 amended with the ruling's process note (option (d): keyword *search* over PENDING/REVIEWED, not only keyed retrieval).
**The next proposal's gating precondition, met.** REVIEWED-84 binds any future `order_attestation:` to a second, differently-implemented order-capable method. Built and tested: a geometric column detector over **word-level** coordinates recovers column-major correctly on the adversarial fixture **and abstains** (correctly) on a single-column page. First attempt built it on MuPDF **blocks** and abstained wrongly — blocks already encode the library's own grouping, so the "independent" detector had inherited the very inference it was meant to be independent of. `/StructTree`: real but narrow — **2 of 17** sources of record are tagged.
## PRESENT — the mood
**The instruments did the catching this session, and that is the change from yesterday.** On 2026-07-28 six errors were caught by the steward and one by an instrument. Today: the fixture self-test caught a duplicate token before the fixture was used as evidence; the containment checker caught six defects including a meaning-changing truncation; the column probe caught that my 10-book sample contained none of the hazard I was measuring; the substrate check caught that the ruling's "cheap eyeball pass" targeted a file that is not a source of record. The steward's interventions were scope-setting ("test docling first", "run the measurement"), not corrections.
**The honest-limits section did real work.** Naming the sample as 11 books and the corruption as simulated is what produced a *narrower, better* ruling than the one I proposed. Part VIII was not decoration; it was the input the jurist ruled on.
**My own premise, my own blind spot.** I argued that divergence proves independence and then stopped counting which axis the divergence was on. The jurist finished my sentence.
**Confidence to recalibrate.** The synthetic-fixture prediction (real two-column books would false-flag) was stated with more confidence than an adversarial construction warrants, and measurement refuted it. Pattern from prior days holds: the claim that arrives before the cheap confirming check is the one that goes down. Today it went down *before* publication, not after.
## FUTURE — what is pulling
**PULLING THREAD — RESET BY THE STEWARD AT WRAP (2026-07-29, after the wrap was written): close PENDING-85 and diagnose PENDING-84 FIRST, before any further instrument work.** The steward named the reason as a *feeling of instability*; it is measurable, and the measurement supports him — see below. The order-attestation thread is **demoted to second**, intact and unblocked.
**WHY THE RESET (read this before re-prioritising it back):** the last three days opened **12 governance items and closed none of them**; 11 more are dormant since March–May; 27 open in total. And the work has been climbing away from the corpus — the classifier, the tier taxonomy, the verification method, the order instrument are all *instruments about instruments*, while **PENDING-84 is about actual corpus damage**: nine canonicals whose text cannot be derived from their source of record by any tier's method. The corpus's known defects have been static for three days while the instrument layer grew. Today's session went further: it built forward architecture for a hazard with **zero measured instances** (0 of 17 sources of record) while those nine sat. **That framing failure is the executor's** — the pacing question was surfaced as "build now or bank it", never as "build the instrument *or* close the corpus defects", so the choice was made without the competing work in view.
**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):**
1. **PENDING-85 first — it is a reading task, bounded, and blocks nothing else honestly.** Open two PDFs and look: `the-arcades-project-walter-benjamin-pdf` (classified born-digital on **1,664 fonts** — a count more characteristic of OCR than typesetting) and `function-of-dynamics-haydn-mozart-beethoven` (**4,537 words/page on 1 font** — implausible, probably an extraction artefact). Independent circumstantial support for the Arcades doubt arrived this session: it measured **content overlap 0.551**, the lowest of 11 books. Outcome: confirm or correct the verdicts, and likely a threshold fix to the scratchpad classifier. **This is closable in one sitting.**
2. **PENDING-84 — read ONE instance end-to-end** (`mal-darchive` or `on-textual-understanding-szondi`), per its own recommendation: establish what actually produced the canonical text — an unbanked prior OCR run? a different edition? — *before* proposing a class remedy. Diagnose from one real instance, not from the count of nine.
3. Only then return to `order_attestation:` (below, unchanged and unblocked).
4. Harrison's `verified` stamp: releases once the eyeball-after-gate acceptance is recorded as an operational act. Constitutional text landed in v2.9.0; whether anything further is owed *per-file* is unresolved — check, don't assume.
**THE DEMOTED THREAD (intact, resume after 84/85): specify `order_attestation:` as a jurist package.** Its binding precondition is met — two genuinely different *kinds* of order inference exist (docling's trained layout model; an explicit geometric rule over word coordinates), sharing no code and no training. Then: (a) the detector at `scratchpad/second_order_method.py` is **scratchpad-only** and must be rebuilt as a repo tool (`scripts/`, `--validate`, in `test_tools.py`) before being proposed; (b) measure the *real* pair — docling ⊥ geometric-detector across the 17 born-digital sources of record; today's 33 pairs measured docling against **order-incapable** extractors, so **do not carry the 0.995 floor forward**; (c) only then draft the package. It supersedes nothing; it ratifies a mechanism the constitution already made room for.
**Other horizons, ranked:**
- **PENDING-84 — 9 canonicals whose banked sources have zero extractable text.** Untouched three days running. Load-bearing; read *one* end-to-end before proposing a class remedy.
- **PENDING-85 — two boundary-case classifier verdicts** need eyeballing before per-file verdicts gate anything. `arcades-project` is one, and this session measured it at content overlap 0.551 — the lowest in the set — which is independent circumstantial support for the doubt.
- **PENDING-86 — jurist substrate access**, now with a *second* independent argument and a new option (d). Steward-authorization item.
- **The 1-of-84 finding deserves a decision, not just a record.** If the column-order hazard has zero instances among sources of record, the priority of the whole order-attestation lane is a steward pacing call — the jurist said as much and the steward chose to build. Worth re-confirming the *reason* if the lane grows expensive.
- **Skill-harvest register compaction** — owed since 2026-07-22, still over read caps.
- **15 dormant governance items** (March–May). Governance ledger this session: 19 → 20 open (PENDING-87 opened; REVIEWED-84 placed but PENDING-87 remains as the record).
**PAUSE STATEMENT:** I am about to be away and do not know what will have changed. Nothing is half-finished: the supersession is committed with its proof, the ruling and package are filed verbatim, PENDING-86 is amended, the ledger is written, and the detector is scratchpad-only and wired to nothing. One commit is **unpushed** in chamber-library. What I want to find still pulling is **the `order_attestation:` specification** — because the precondition that gated it is met and the evidence is fresh, and because the failure mode to guard against is now the opposite of last session's: not drafting spec text before the demonstration, but carrying **today's** measurement forward as if it applied to **tomorrow's** pair. It does not. The 0.995 noise floor was measured against extractors that cannot recover order at all.
**LITERAL QUESTION for next-Claude:** Today the instruments caught what the steward caught yesterday — but every one of them was built *after* the failure it now catches, and each was built because I had been embarrassed by that exact failure. The containment checker exists because I fabricated a quote; the fixture self-test exists because controls had been demanded of me; the column probe ran because a sampling window had burned me the day before. So the honest question is not *which claim am I least curious about* — that was ruled out as self-report, the most contaminated form. It is this: **is there any instrument here I built before being burned — and if not, what does it cost to keep learning this way, one scar per class of error?** The uncomfortable possibility is that the ledger's longitudinal record is not evidence of a practice improving but a catalogue of damage already done, and that the only untested claim is the one whose failure has not happened yet.
**State at wrap:** chamber-library clean, **1 commit unpushed** (`86311d6`, spec v2.9.0). Spec v2.9.0 OPERATIVE; v2.8.0 frozen. REVIEWED-84 placed at `REVIEWED.md:861`. PENDING-87 open, PENDING-86 amended. 20 open governance items. Plane task for the next session **not created** — the Plane MCP requires steward OAuth; the task content is in the wrap output and here, so it is not lost.