session 2026-07-28 mid-afternoon: PENDING-83/REVIEWED-83 (V-DPDF design gate passed) + PENDING-84/85/86 + maps home + memory-pointer portability
Harrison re-gate pilot broke the mechanism before converting a byte, and the break was constitutional: tier_of() faithfully implements the ratified evidence-tier table, which enumerates tiers by FORMAT, so 16 born-digital-PDF canonicals with real ground truth receive a false ABSTAIN. Jurist design-gate PASSED with two corrections (independence into the constitutional text, NOT by analogy with V-TEXT which ruled the other way; the demonstration is of two instruments and the second has no control). REVIEWED-83 placed by the steward. Also: steward-facing maps given a durable home after one was lost and four more found unbacked; memory pointers made home-anchored and self-diagnosing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
This commit is contained in:
co-authored by
Claude Opus 5
parent
19bddd5ecb
commit
7059d32ff0
+117
@@ -459,3 +459,120 @@ Delete the Cowork party entry and every reference to `COWORK.md`. Grounds, now t
|
||||
|
||||
**Files affected:** new `~/dotfiles/scripts/governance-mcp.py`; `~/dotfiles/scripts/wake-digest.py` (`item_spans()` fence-awareness + 3 controls). Awaiting steward hand: `claude_desktop_config.json`, Claude.app §Your Role and §Standing Context.
|
||||
**Awaiting:** Steward authorization to install the `mcpServers` key. The server itself is inert until then — nothing loads it.
|
||||
|
||||
## PENDING-83 — The evidence tier is decided by file extension, so a born-digital PDF gets a false ABSTAIN
|
||||
**Date:** 2026-07-28
|
||||
**Tag:** [PROPOSAL]
|
||||
**Summary:** `verify_body_conservation.tier_of()` classifies by suffix — `.pdf` → `V-SCAN` → the body-conservation gate ABSTAINS and the candidate proceeds unverified — but every PDF-sourced canonical tested has a real text layer, so ground truth exists and the strongest available check is being skipped on the grounds that it is impossible.
|
||||
|
||||
**Rationale.** Surfaced by the Harrison re-gate pilot, at its first gate question, before any conversion ran. `tier_of()` (`scripts/verify_body_conservation.py:457-467`) reads the source's extension only: `.epub/.azw3/.mobi` → V-TEXT, `.pdf` → V-SCAN, else V-UNKNOWN. V-SCAN abstains by design, and the spec is explicit that this abstention is the *permanent, tier-level* kind — "this tier has NO ground truth" — which **proceeds**, unlike the contingent run-level UNVERIFIED, which holds.
|
||||
|
||||
The premise is false for this source and, on the evidence, for the class. `the-dominion-of-the-dead-harrison.pdf` (banked, sha `06f0158a…`, match_cov 1.0) carries four embedded Type-1C subset fonts and yields 1,549 words from pages 1-12 via `pdftotext`. It is a typeset born-digital PDF, not a scan. The landed canonical was itself produced by `pdftotext + python`, and the 2026-07-28 Docling trial measured 90,155 words against a 90,955-word source extraction — 99.1%. Ground truth not only exists, it has already been used to measure this exact file twice.
|
||||
|
||||
Consequence for the pilot: Harrison — chosen *because* it is the known-worst apparatus case, to exercise the mechanism where it is most likely to break — would graduate with **no verbatim verification performed**, and the gate would report an honest-looking abstention while doing so. Per the jurist's 2026-07-14 ruling (PENDING-55 res.a): **"A false ABSTAIN is as much a lie as a false PASS."** This is also the fifth-instance shape v2.7.0 named — a reported non-failure where no verification occurred.
|
||||
|
||||
**Grounding — this is arguably a conformance gap against already-ratified text, not a new direction.** Spec v2.7.0 (§Tiering & Fence evidence-tiers preamble, REVIEWED-75) ratified that verification method is **declared for the work's kind**, with an **anti-bypass guard bound to the property, not enrollment** — *no work may weaken its applicable method by re-labelling*. `tier_of()` binds the method to a **label** (the filename suffix), which is precisely the coupling that clause forbids. A born-digital PDF is not a different kind from a born-digital EPUB with respect to the property that matters — extractable ground-truth text — and the extension is doing the re-labelling automatically.
|
||||
|
||||
**Exposure — bounded measurement, stated as such.** 6 canonicals declare `source_format: pdf`; 5 fell within the read-slice I sampled and all 5 resolve to banked PDFs with a text layer (born-digital 5 · scan-like 0). One file is unaccounted for by my slice. **This is a sample, not a census** — a full census over the corpus is a separate measurement and is not claimed here. On the sample, the V-SCAN tier presently contains no scans at all.
|
||||
|
||||
**Options.**
|
||||
- **(a) Probe the property, not the extension.** `tier_of` gains a decidable text-layer probe for `.pdf`: extractable text above a declared threshold → V-TEXT; below → V-SCAN. Threshold and probe live in `graduation-spec.yaml` as declared data (the house requirement/mechanism split). Mechanically decidable, carries its own positive and negative control, and applies the v2.7.0 property-not-label guard to the one place it was not applied.
|
||||
- **(b) Per-file declared tier.** An attested `evidence_tier:` in frontmatter or the sidecar, attest-never-default. Honest, but pushes judgment onto a curator for something a probe can decide, and adds an attestation surface to every PDF.
|
||||
- **(c) Narrow the change to the pilot.** Re-tier Harrison alone by hand and leave the classifier. Rejected on its face: it fixes the instance and leaves the class, which the executor directives forbid.
|
||||
|
||||
**Recommendation: (a).** It is the only option that binds the method to the property the spec already says it must bind to; it is mechanically decidable rather than curator-judged; and its discriminator is already demonstrated on real material (the pdffonts + pdftotext probe run above, which correctly separates a typeset PDF from a scan and would return the opposite verdict on a scan). Per v2.7.0's extension path, a method must be **demonstrated on real material before ratification** — that demonstration is the natural first deliverable if authorized, and it should include a true scan as the negative control, which the corpus does not presently appear to contain and may need to be supplied.
|
||||
|
||||
**Change class.** PROPOSAL, not FIX: it changes what the gate accepts (a class of candidates moves from abstain-and-proceed to verified-or-held). The amendment discipline is explicit that this crossing is what makes a change PROPOSAL-class, even where the change restores conformance with ratified text.
|
||||
|
||||
**What this does NOT block.** Harrison's reconversion, cleaning, `strip_cruft`/`verify_conversion`, the running-head handling, the boundary-drop attestation, and the voice-purity **reading pass** are all unaffected and proceed. What is blocked is the final graduation stamp, which would otherwise land on an unverified file.
|
||||
|
||||
**Files affected:** `scripts/verify_body_conservation.py` (`tier_of`, + controls in `test_tools.py`); `_curation/graduation-spec.yaml` (`body_conservation:` — probe + threshold as declared data). No canonical, no hash, no binding touched by this item.
|
||||
**Awaiting:** Steward authorization. Harrison holds at the graduation stamp until ruled; every prior step proceeds.
|
||||
|
||||
### PENDING-83 — ADDENDUM 1 (2026-07-28, same session, before any ruling): the recommendation is corrected to a distinct V-DPDF tier
|
||||
**Superseding my own Recommendation (a) above, on the steward's correction.** The original item proposed probing the property and re-tiering born-digital PDFs — with V-TEXT as the implied destination. That destination is wrong, and the item should not be ruled on as written.
|
||||
|
||||
**Why V-TEXT cannot receive them.** The V-TEXT criterion is not merely a policy that could be pointed at a new format; its ratified reference conversion is **`pandoc -f epub -t markdown-smart` — source-anchored AND writer-matched** (REVIEWED-72, `graduation-spec.yaml` `body_conservation.reference_writer`). There is no `-f epub` for a PDF. Routing PDFs into V-TEXT would inherit a criterion whose reference cannot be produced for the substrate, which is precisely the failure this repo already has a named lesson for: *"a check proven for one tier is NOT proven for another (V-DSL ≠ V-TEXT — the k-gram check false-flagged the DSL's reflow) — demonstrate per case, don't reuse-and-assume."* I reached for the nearest existing tier without asking whether its method transfers. It does not.
|
||||
|
||||
**Why a distinct tier is the right shape, on the ratified test.** v2.7.0 holds that verification method is **declared for the work's kind**. A born-digital PDF differs from a born-digital EPUB in the property that decides the method: an EPUB carries an explicit reading order and reflowable structure, while a PDF's reading order is *inferred from page layout*. That is not a smaller version of the same problem — it is the layer-2 PASS-BUT-FALSELY case §VII already names (column reassembly across a gutter: same words, wrong order, invisible to any word-guard). It also brings hyphenation at line breaks and running heads interleaved into the text stream — the running-head defect already blocking this very pilot. Same *property* (ground truth exists), different *kind* (how ground truth is recovered, and what can go wrong recovering it). Two tiers, two declared methods.
|
||||
|
||||
**Revised recommendation: add `V-DPDF` as a declared kind with its own method**, entering by v2.7.0's extension path (new kind by PROPOSAL, method demonstrated on real material before ratification). `tier_of()` stops deciding by suffix and dispatches on a structural probe: `.pdf` → V-DPDF if born-digital, V-SCAN if scanned. The deterministic/scan split v2.7.0 preserved is thereby preserved and *extended*, not flattened.
|
||||
|
||||
**On self-declaration — the steward's question, answered plainly: a PDF cannot reliably declare its own origin.** There is no standard "I am a scan" flag. `/Producer` and `/Creator` are self-report — frequently absent, frequently wrong (a scan re-saved through Acrobat reports Acrobat), and overwritten by any post-processing. PDF/A conformance declares archival intent, not origin. **Metadata is testimony; structure is evidence** — the same distinction this corpus already applies to every other attestation. But the structure IS decidable, on a triad: extractable text density on **interior** pages · embedded text fonts · page-sized image coverage per page. Born-digital = text drawn, fonts embedded, no page-sized image. Scanned-with-OCR = text over one page-sized image per page. Bare scan = no usable text.
|
||||
|
||||
**Demonstration status.** A read-only classifier implementing that triad is built and self-tested in scratchpad (`classify_pdf_origin.py`, 8 controls incl. a live end-to-end); it is deliberately NOT a fleet tool and NOT wired to any gate — it exists to produce the evidence v2.7.0 requires before ratification. Its own first version **failed its live control**, classifying a 68-font typeset Harrison as `inconclusive` at 42.7 words/page: it sampled pages 1-8, which are half-title, title, copyright and contents. Corrected to sample the interior, the same file reads **397.6 words/page** — a 9x error caused purely by the measurement window, and caught only because the control ran against a known answer. That failure is itself an argument for this item: an instrument that samples the wrong region reports a confident wrong verdict, exactly as `tier_of()` does.
|
||||
|
||||
**Still owed before ratification:** a true scan as the **negative control**. A classifier that has only ever returned `born-digital` has not been shown capable of returning `scanned`. A corpus-wide census over the master library (385 PDFs) is running to find one; if the corpus contains no genuine scan, that is itself a finding — and the control must then be supplied deliberately rather than assumed.
|
||||
**Awaiting:** Steward authorization, on the revised V-DPDF shape rather than the original recommendation (a).
|
||||
|
||||
### PENDING-83 — ADDENDUM 2 (2026-07-28, same session, before any ruling): the exposure figure in the original item is WRONG and is retracted
|
||||
**Retracting my own measurement.** The original item reported: *"6 canonicals declare `source_format: pdf`; 5 fell within the read-slice and all 5 resolve to banked PDFs with a text layer (born-digital 5 · scan-like 0) … On the sample, the V-SCAN tier presently contains no scans at all."* **That is false.** Do not rule on it.
|
||||
|
||||
**How it was wrong, twice over.** (1) The probe sampled pages 1-10 and thresholded on raw word count — pages 1-10 of a typeset book are front matter, so it measured half-title and contents pages and generalised to the book. The same defect later made the corrected classifier's first version call a 68-font Harrison `inconclusive` at 42.7 words/page against its true interior 397.6. (2) It enumerated candidates by grepping `source_format: pdf` in **frontmatter**, which is a *declaration*, not the resolved source. `juvenescence-harrison` declares nothing useful here: its banked source is an **`.epub`**, and the PDF I found bearing that title was a master-library copy, not the canonical source. The standing invariant already says this — *a canonical's source is whatever `resolve_archived_source` returns, never a path in frontmatter, never the master library* — and I violated it while writing an item about verification.
|
||||
|
||||
**The corrected census, by mechanism** (resolve every canonical's source, then classify the ones that are PDFs):
|
||||
|
||||
| resolved-PDF canonicals | count |
|
||||
|---|---|
|
||||
| scanned-with-OCR | 35 |
|
||||
| bare-scan | 9 |
|
||||
| born-digital | 16 |
|
||||
| **total** | **60** |
|
||||
|
||||
**44 of 60 (73%) are genuine scans.** The steward stated this from direct knowledge of the library before the measurement returned; the measurement agrees with him.
|
||||
|
||||
**This strengthens the proposal rather than weakening it, and changes its shape.** V-SCAN is **not** a vestigial or empty tier to be corrected away — it is *correct* for 44 canonicals and must keep its abstention, exactly as v2.7.0's preserved deterministic/scan split requires. The defect is narrower and sharper than I first stated: **16 canonicals whose sources carry real ground truth are being abstained on as though they carried none.** That is the false-ABSTAIN population, and it includes the pilot's own book. Same author, same subtradition folder, opposite tiers: `the-dominion-of-the-dead-harrison` is born-digital (68 fonts, no page image) while `forests-shadow-of-civilization-harrison` is scanned-with-OCR (805 fonts, one page-sized image per page). **Neither the author, the collection, nor the folder can decide the tier — only the file's own structure can**, which is the argument for a structural probe stated as a demonstrated fact rather than a prediction.
|
||||
|
||||
**Two further findings, surfaced not resolved.**
|
||||
- **9 bare-scans** (e.g. `mal-darchive`, `on-textual-understanding-szondi`) have **zero extractable text — 0 fonts, 0 words per page.** Their canonicals exist, so text was obtained somehow; from the banked source it cannot have been. Whatever produced those canonicals is unverifiable against the archived source by any mechanical means. Not part of this item; named because it was found and would otherwise be lost.
|
||||
- **Boundary cases needing eyeball before any of them gate a graduation:** `function-of-dynamics-haydn-mozart-beethoven` reads 4,537 words/page on 1 font — implausible for a book page and probably an extraction artefact; `the-arcades-project-walter-benjamin-pdf` reads born-digital on 1,664 fonts, a font count far more characteristic of OCR, and may be a scan whose images fall under the classifier's page-image threshold. **The classifier is sound enough to establish that the tier split is needed; it is NOT yet sound enough for its per-file verdicts to gate anything.** Per §VII, eyeball-after-gate is discipline where no stronger mechanical check exists — these are exactly that case.
|
||||
|
||||
**Negative control: satisfied, abundantly.** The earlier concern that a classifier which has only ever returned `born-digital` has not been shown able to return `scanned` is discharged: across 385 library PDFs it returns 164 bare-scan · 59 scanned-with-OCR · 62 born-digital, and within the canon 44 scans against 16 born-digital. The instrument demonstrably detects both presence and absence.
|
||||
|
||||
**Unchanged:** the V-DPDF recommendation of Addendum 1, and the hold on Harrison's graduation stamp.
|
||||
**Awaiting:** Steward authorization on the V-DPDF shape, reading the exposure figures from THIS addendum and not from the original item.
|
||||
|
||||
### PENDING-83 — ADDENDUM 3 (2026-07-28): routed to the jurist; the framing is corrected a third time
|
||||
**Jurist package filed:** `~/_Dev/chamber-library/docs/vdpdf-tier-JURIST-PACKAGE-2026-07-28.md` (self-contained; 45 quoted clauses verified verbatim against the ratified spec with a positive control; five gate questions with executor leans).
|
||||
|
||||
**Third correction, and it inverts the item's premise.** The original item and both prior addenda argued that `tier_of()` was *wrong* — that the code decided the tier by file extension where the constitution intended otherwise. Reading §Tiering & Fence from the substrate (rather than from the repo `CLAUDE.md` summary I had been quoting) shows the opposite: the ratified evidence-tier table itself enumerates the tiers **by format** — *"V-TEXT (born-digital: **epub/azw3/mobi**)"* and *"V-SCAN (**scanned pdf**)"*. The suffix map in the code reproduces those parentheticals exactly. **The code is faithful; the constitution is what conflates the container with the origin.** A reviewer comparing code against spec would find agreement, which is why the defect survived — and it is why this is a constitutional supersession rather than a code fix.
|
||||
|
||||
**The argument is also stronger than filed.** The same ratified subsection carries the anti-bypass clause: *"a text-bearing work is verified by the method declared for text-bearing kinds, and **no work may weaken its applicable method by declaring itself a new kind**."* A born-digital PDF is text-bearing, and §V confirms *"Tier 3 governs every canonical whose content is words."* The weakening that clause forbids is therefore **already occurring** — not because any work declared anything, but because the table's format enumeration performs the re-labelling automatically by reading a file extension. Whether that reading extends the clause past its ratified reach is put to the jurist as Q4 rather than assumed.
|
||||
|
||||
**A fabricated quote was caught in the package's own Grounding section before filing.** The draft rendered a promotion-criterion clause as *"the §V prose-word guard we already have."* The spec says *"the §V prose-word guard we already run is the promotion test. The bar for 93% (1,191/1,284) of the corpus."* — invented ending, in the one section whose entire purpose is that the jurist can trust the wording without repository access, in a package about verification. Caught by a mechanical containment check over every quoted line, run with a positive control; the true text is materially stronger for the argument than the invention. Recorded rather than quietly repaired: it is the fourth instance today of a claim composed from a summary of a document rather than the document.
|
||||
|
||||
**Awaiting:** jurist design-gate ruling (steward-relayed), then steward authorization. Harrison holds at the graduation stamp; its prior steps are unblocked and unaffected.
|
||||
|
||||
### PENDING-83 — ADDENDUM 4 (2026-07-28): design gate PASSED with two required corrections
|
||||
**Ruling filed verbatim:** `~/_Dev/chamber-library/docs/vdpdf-tier-JURIST-RULING-2026-07-28.md`. **Executor disposition:** the Addendum appended to `docs/vdpdf-tier-JURIST-PACKAGE-2026-07-28.md` (Parts I–VIII preserved unrewritten as the text ruled on). **REVIEWED-83 drafted for steward placement** — in the ruling and the package Addendum, plain-fenced.
|
||||
|
||||
Q1, Q4, Q5 affirmed as filed; **Q4 on stronger grounds than argued** (REVIEWED-75's drafting note states the anti-bypass guard was rebound *"to the property, not enrollment"* because the declaration-only reading *"would open the moment the door is first used"* — the extension is inside the clause's ratified reach). Two corrections supersede the drafted design: **(1)** independence of the reference conversion from the ground-truth extraction is a **constitutional requirement**, not declared data — and REVIEWED-72's V-TEXT precedent must **not** be carried across, because it ruled the *other* way (a shared pandoc reader was accepted there since *reader-loss cancels a priori* over unambiguous markup; PDF recovery is inference over page geometry, so nothing cancels). **(2)** the demonstration is of **two** instruments, and the executor conflated them: the classifier's controls are complete, but the *verification method* has no control at all, and requires a deliberately constructed **column-order corruption** case run through a genuinely independent extractor pair. **Harrison's graduation stamp holds until that passes**; its earlier steps proceed.
|
||||
**Awaiting:** steward placement of REVIEWED-83, then the Q3 demonstration.
|
||||
|
||||
## PENDING-84 — Nine canonicals whose banked sources carry no extractable text at all
|
||||
**Date:** 2026-07-28
|
||||
**Tag:** [HARDENING]
|
||||
**Summary:** Nine canonicals resolve to archived sources with zero embedded fonts and zero extractable words (bare scans), yet their canonical texts exist — so the text came from somewhere that is not mechanically recoverable from the source of record.
|
||||
**Rationale:** Surfaced by the PENDING-83 census and docketed separately on the jurist's process note (PENDING-55 residual-item precedent: findings named-not-lost still have to be findable). Whatever produced these canonicals cannot be re-derived from the banked source by any extraction, which means they are unverifiable against their own provenance by *any* tier's method — not V-SCAN's, not a future V-DPDF's. This is a distinct condition from "hard to verify": it is "no mechanical path from the source of record to the canonical exists." Instances observed 2026-07-28 include `mal-darchive` and `on-textual-understanding-szondi`; the full set of 9 is in the census.
|
||||
**Recommendation:** Read one end-to-end first — establish what actually produced the text (a prior OCR run whose output was not banked? a different edition?) before proposing a class remedy. Diagnose the class, but from one real instance rather than from the count.
|
||||
**Files affected:** none yet — diagnosis precedes any change.
|
||||
**Awaiting:** Steward triage of priority. Not urgent; not to be lost.
|
||||
|
||||
## PENDING-85 — Two PDF-origin classifier verdicts require human eyeball before any per-file use
|
||||
**Date:** 2026-07-28
|
||||
**Tag:** [FIX]
|
||||
**Summary:** Two of the 60 classified canonical PDF sources carry verdicts the classifier's own numbers make doubtful, and they must be eyeballed before any per-file verdict is relied on.
|
||||
**Rationale:** `the-arcades-project-walter-benjamin-pdf` classifies born-digital on **1,664 embedded fonts** — a count far more characteristic of OCR output than of typesetting, suggesting a scan whose page images fall below the classifier's page-image threshold. `function-of-dynamics-haydn-mozart-beethoven` reads **4,537 words/page on 1 font**, implausible for a book page and probably an extraction artefact. Both were stated as caveats on the instrument's own output (§VII: a measurement carrying a known reliability caveat states it in the same breath as its count) and the jurist affirmed they were correctly held out of the PENDING-83 population claim. The population claim (16/44) does not depend on either.
|
||||
**Recommendation:** Open both PDFs and look. This is §VII's eyeball-after-gate, which the spec names as the genuine ceiling where no stronger mechanical check exists — not a deferral.
|
||||
**Files affected:** none — a reading task; may yield a threshold correction to the scratchpad classifier.
|
||||
**Awaiting:** Nothing blocking; do before the classifier's per-file verdicts gate anything.
|
||||
|
||||
## PENDING-86 — The jurist cannot read the constitution it design-gates
|
||||
**Date:** 2026-07-28
|
||||
**Tag:** [HARDENING]
|
||||
**Summary:** `governance_read` exposes `claude-md`, `pending`, `pending-archive`, `reviewed`, `app-brief` and `memory-index` — but not `chamber-library-specification.md`, so a constitutional supersession of §Tiering & Fence was ruled on by a party who could not read §Tiering & Fence.
|
||||
**Rationale:** Disclosed by the jurist unprompted at the head of the PENDING-83 ruling, which is the mechanism working: it corroborated the package's load-bearing quotes against REVIEWED-75/-72/-67 and PENDING-55 — genuinely independent of the package, but **one layer short of the primary substrate**, and said so rather than letting the ruling imply a check it had not made. The ruling's substance is unaffected; the standing arrangement is the problem. This is the same shape as the defect PENDING-83 repairs, one level up: an instrument reporting on a domain it does not reach. At present the only instrument reading the primary substrate for this class of package is **the executor's own verbatim self-check** — which is exactly what should not be sole, since that self-check caught a fabricated quote the executor had itself introduced into the Grounding section of a package about verification.
|
||||
**Options:** (a) add the chamber constitution (and `graduation-spec.yaml`) to `governance_read`'s document keys, read-only, alongside the existing six; (b) keep the jurist repo-blind by design and require every package to carry a mechanical verbatim-containment proof over its quoted clauses, reported in the package; (c) both.
|
||||
**Recommendation:** (c). (a) removes the gap for the documents the loop actually rules on and costs two keys on an already-built read-only server; (b) is worth keeping regardless, because self-containment is what makes a package rulable at all and the containment check has already proven it catches executor fabrication. They are complements, not alternatives.
|
||||
**Files affected:** `~/dotfiles/scripts/governance-mcp.py` (document keys). Extends PENDING-82.
|
||||
**Awaiting:** Steward authorization — it widens what the jurist can read, which is the steward's call, not the executor's.
|
||||
|
||||
Reference in New Issue
Block a user