Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
14 KiB
name, description, metadata
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| session-2026-07-29-coverage-never-attests-order | 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. |
|
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: specify order_attestation: as a jurist package. Its binding precondition is now 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. Specifying the mechanism is a fresh PROPOSAL needing its own gate, not a continuation of REVIEWED-84.
ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):
- The detector is at
scratchpad/second_order_method.py, scratchpad-only. It must be rebuilt as a repo tool (scripts/,--validateself-test idiom, exercised bytest_tools.py) before it can be proposed as a mechanism — the fleet discipline, not an optional polish. - Measure the pair properly: docling ⊥ geometric-detector order concordance across the 17 born-digital sources of record. Today's 33 pairs measured docling against order-incapable extractors, which is the wrong comparison for the ratified mechanism. Expect a different noise floor and do not carry today's 0.995 forward as if it applied.
- Only then draft the package: declared data (
graduation-spec.yamlorder_attestation:— measure, k, threshold, per-tier pair), the demonstration, and the honest limit. It supersedes nothing; it ratifies a mechanism the constitution already made room for. - Harrison's
verifiedstamp: releases once the eyeball-after-gate acceptance is recorded as an operational act. The constitutional text landed in v2.9.0; whether anything further is owed per-file is unresolved and should be checked, not assumed.
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-projectis 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.