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:
David F Glidden
2026-07-28 15:21:47 +02:00
co-authored by Claude Opus 5
parent 19bddd5ecb
commit 7059d32ff0
8 changed files with 233 additions and 3 deletions
+117
View File
@@ -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. **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. **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.
+13
View File
@@ -844,3 +844,16 @@ deleting the key. Tag any follow-on commits REVIEWED-82.
when the steward wants the jurist reading the substrate directly rather than through the generated when the steward wants the jurist reading the substrate directly rather than through the generated
brief. No work is blocked meanwhile; `wake-digest.py --brief` remains the fallback. brief. No work is blocked meanwhile; `wake-digest.py --brief` remains the fallback.
## REVIEWED-83 — PENDING-83 — V-DPDF: a new declared deterministic kind for born-digital PDF (design-gate passed with required corrections)
**Date:** 2026-07-28
**Decision:** AUTHORIZED — proceed to demonstration and spec-text drafting per this ruling. Harrison's graduation stamp remains held (unaffected by this authorization) until the Q3 demonstration below passes.
**Notes:**
- **Q1 — constitutional, not code — CONFIRMED.** `tier_of()` is faithful to the ratified table's own format parentheticals; the defect is the table's conflation of container with origin, not implementation drift. PROPOSAL/MINOR confirmed, FIX declined, consistent with REVIEWED-75's resolution of the analogous question for its own edit.
- **Q2 — independence — REQUIRED, AND WRITTEN INTO THE CONSTITUTIONAL TEXT, NOT LEFT TO MECHANISM.** Do not import REVIEWED-72's shared-reader reasoning by analogy: that ruling accepted a shared pandoc EPUB reader because reader-loss cancels a priori over unambiguous markup. PDF recovery is inference over page geometry — two runs of one extractor can agree on the same wrong column order, which is exactly the §VII layer-2 case ("any raw↔canonical comparison — multiset or sequence — passes"). The V-DPDF row must state that reference conversion and ground-truth extraction are produced by independently implemented extractors. If independent extractors cannot be demonstrated, the honest verdict is HELD, not a relaxed deterministic pass.
- **Q3 — demonstration — TWO INSTRUMENTS, ONE STILL OUTSTANDING.** The classifier's positive/negative control (16/44 in-corpus; 62/59/164 across the 385-book library) is complete and sufficient for the tier-routing question. NOT yet demonstrated: the verification method itself (reference-convert + prose-word-guard) against a deliberately constructed layer-2 hazard — column-order corruption, in addition to the already-named running-head case — using the actual independent extractor pair required by Q2. This demonstration is a precondition of ratification, not a nice-to-have.
- **Q4 — anti-bypass clause binds — CONFIRMED, on stronger grounds than filed.** REVIEWED-75's drafting note states the guard was rebound "to the property, not enrollment" precisely to reach beyond literal self-declaration. The extension argued in Part III is within the clause's stated ratified reach, not past it.
- **Q5 — ordering — CONFIRMED.** Pilot (Harrison) proceeds alone as the Q3 demonstration; re-tiering the remaining 15 before the method has been exercised once inverts pilot and wave. Pacing of the 15 is a steward question.
- **Scope affirmed as filed:** V-SCAN untouched (44 canonicals); no reference-converter proposal for V-DPDF (separate §V byte-census question, per REVIEWED-67); Harrison's earlier pipeline steps unaffected; born-digital-EPUB Docling lane untouched.
- **Process note:** the 9 bare-scans and the 2 boundary-case files (Arcades Project; Haydn/Mozart/Beethoven) should be docketed as their own tracked items rather than remain prose-only inside this item, per the PENDING-55 residual-item precedent.
**If corrections satisfied:** land as a MINOR supersession of the §Tiering & Fence evidence-tier table (new V-DPDF row, independence stated as a requirement) plus `graduation-spec.yaml` declared data (discriminator, thresholds, extractor pair). Prior version frozen byte-identical; bounded-diff proof at landing. Tag commits REVIEWED-83.
**Awaiting:** steward placement, then the Q3 demonstration before Harrison's graduation stamp releases.
+5 -2
View File
@@ -8,6 +8,8 @@ and by hand.
TRACKER INDEX (from MEMORY.md — what exists, not what is hot; see repo activity below for that) TRACKER INDEX (from MEMORY.md — what exists, not what is hot; see repo activity below for that)
Chamber as versioned releases (the… steward reframe 2026-07-25: the full 2000-year Chamber (incl.… Chamber as versioned releases (the… steward reframe 2026-07-25: the full 2000-year Chamber (incl.…
The Chamber touchstone the why, and it does not move — seven questions to test work against…
The Chamber vision is NOT in one place honest answer to the steward's 2026-07-28 hope: it lives in seven…
MemPalace wind-down DONE (steward 2026-07-07): palace-memory wound down, wake/wrap rewired… MemPalace wind-down DONE (steward 2026-07-07): palace-memory wound down, wake/wrap rewired…
ARC open-work register the single code-verified source of truth for what is OPEN on ARC… ARC open-work register the single code-verified source of truth for what is OPEN on ARC…
ARC canonical ARC workstream tracker (chronological record 2026-04-16 →).… ARC canonical ARC workstream tracker (chronological record 2026-04-16 →).…
@@ -22,7 +24,7 @@ TRACKER INDEX (from MEMORY.md — what exists, not what is hot; see repo activit
L1 reliability canonical L1 tracker (est. 2026-05-28). Latest: N6 deploy #175… L1 reliability canonical L1 tracker (est. 2026-05-28). Latest: N6 deploy #175…
Be (laundromat) canonical Be tracker (est. 2026-06-08). Be = Skemantix startup… Be (laundromat) canonical Be tracker (est. 2026-06-08). Be = Skemantix startup…
OPEN AUTHORIZATION ITEMS (15) — full text in ~/PENDING.md; closed items in ~/PENDING-archive.md OPEN AUTHORIZATION ITEMS (16) — full text in ~/PENDING.md; closed items in ~/PENDING-archive.md
[FIX] PENDING-4 — Bug D: Idle stall + batch embedding during replay [FIX] PENDING-4 — Bug D: Idle stall + batch embedding during replay
[FIX] PENDING-5 — Recall query path returns 0 results [FIX] PENDING-5 — Recall query path returns 0 results
[PROPOSAL] PENDING-10 — Skip vector embedding during replay (architectural) [PROPOSAL] PENDING-10 — Skip vector embedding during replay (architectural)
@@ -38,6 +40,7 @@ OPEN AUTHORIZATION ITEMS (15) — full text in ~/PENDING.md; closed items in ~/P
[HARDENING] PENDING-S6 — Symmetria §3 contamination flag applications of the Directive elaboration [HARDENING] PENDING-S6 — Symmetria §3 contamination flag applications of the Directive elaboration
[HARDENING] PENDING-S7 — Symmetria `check` mode: add `suspend` outcome (awaiting Q5 + relates to Q4) [HARDENING] PENDING-S7 — Symmetria `check` mode: add `suspend` outcome (awaiting Q5 + relates to Q4)
[HARDENING] PENDING-S9 — Wrap-up §8 output template enriched to match practice [HARDENING] PENDING-S9 — Wrap-up §8 output template enriched to match practice
[PROPOSAL] PENDING-83 — The evidence tier is decided by file extension, so a born-digital PDF gets a fa
LAST RULINGS LAST RULINGS
AUTHORIZED REVIEWED-79 — PENDING-79 — CLAUDE.md doctrine preservation (legs A, B, C) AUTHORIZED REVIEWED-79 — PENDING-79 — CLAUDE.md doctrine preservation (legs A, B, C)
@@ -50,7 +53,7 @@ REPO ACTIVITY (commits, last 30 days)
BetterMemories.io 0 BetterMemories.io 0
chamber-library 165 chamber-library 165
animal-davidglidden-eu 0 animal-davidglidden-eu 0
studium-engine 25 studium-engine 26
GOVERNANCE DRIFT — ~/CLAUDE.md: 0 substrate-contradicted claim(s) GOVERNANCE DRIFT — ~/CLAUDE.md: 0 substrate-contradicted claim(s)
+4
View File
@@ -29,6 +29,10 @@ Split out of [MEMORY.md](MEMORY.md) on 2026-07-06 to keep the wake-loaded index
# Archived sessions + stable reference layer (relocated verbatim from MEMORY.md, 2026-07-06) # Archived sessions + stable reference layer (relocated verbatim from MEMORY.md, 2026-07-06)
## Archived (2026-07-28 early afternoon — the chamber scoped + nine blind instruments; demoted on promote at the 2026-07-28 mid-afternoon wrap)
- [Session 2026-07-28 early afternoon — the chamber scoped, and nine blind instruments](session-2026-07-28-early-afternoon-the-chamber-scoped-and-nine-blind-instruments.md) — **Chamber V1's purpose opened into its own precondition; DECIDED: Harrison as the re-gate pilot.** Steward ruled out the **violin treatise** (conversion pipeline foreseen, not built); the **ARC** dismissal *did not survive the manifest* (all five After-the-Reply essays are ingested; Step 8 chavruta is unbuilt on every path equally ⇒ purpose changes corpus+test, never engine work). Typography recommended on four grounds — incl. a **pre-registered falsifiable claim** (`aldine-xxi.md:29` *"Neither tradition names this exactly"* — a universal negative authored before the engine) and **it is where the steward can catch the engine lying** (on his own essays, ungrounded synthesis arrives as agreement). Two maps drawn: **boundedness** mark→unborn (changes *kind*, with the seam at claims-about-text vs selection/emphasis) and **composition** = *who convokes* (⇒ rungs 4–6 are SAFER than rung 3; order 2→(4,5,6)→3). **Then the corpus inverted twice:** my detector said Harrison had no bibliography → steward read his physical copy → the `.md` retains **96%** of source words; my pattern had omitted the word **"Notes"**, and the corpus is multilingual (`bibliographie` ×19). **"Read the runbook"** → the ledger had already classified it `stranded-suspect`/`C-apparatus` on 07-03. **Docling trial (scratch, nothing graduated): 96.5%→99.1% of source, `## Works Cited` with per-line entries** ⇒ **re-conversion recovers what retrofit cannot**; blocked corpus-wide by the missing running-head detector (14 false headings). **SCOPE VERIFIED: 952/1297 clean · 69 apparatus-defect · but only 11 pass graduation** — the gap is **conformance, not content**; the frame is **re-gate the voice-set a purpose needs**, never the corpus. ⚑ **Nine instances of one shape, none caught by an instrument** (four caught by the steward). Detail in the session file.
## Archived (2026-07-28 afternoon — the jurist got eyes + a second, unauditable cache; demoted on promote at the 2026-07-28 evening wrap) ## Archived (2026-07-28 afternoon — the jurist got eyes + a second, unauditable cache; demoted on promote at the 2026-07-28 evening wrap)
- [Session 2026-07-28 afternoon — the jurist got eyes, and a second cache appeared](session-2026-07-28-afternoon-the-jurist-got-eyes-and-a-second-cache-appeared.md) — **The governance block is CLOSED: PENDING-81 + -82 ruled, applied, verified.** The jurist now **reads the substrate** — `governance-mcp.py`, 5 read-only tools (`governance_item(id)` = verbatim any item/ruling), 29 controls, install **proven from Claude.app's own logs** (2× "started and connected"; live). Four refusals designed in: read-only (AST-audited), **domain = enum not paths**, one imported parser, tool-not-agent. Preferences **rebuilt as repair not rewrite** (steward pasted the live text): 12 doctrine sections proved **byte-identical**, 4 sections added, §Standing Context tiered 3 ways (generated Projects · **Live questions** — *phrased as questions because a status claim decays* · steward-held Personal). **REVIEWED-78/81/82 placed ⇒ 18→15 open**, all 15 dormant Mar–May. Cowork **not a party** (steward). `CLAUDE.md` L27 = *principal **ethics** architect + co-author* — note the conflict resolved **in favour of the document no instrument watches**: currency ≠ authority. **⚑ First find: `8abfe88` claimed "+ archive" and never staged it** — 1,532 lines deleted, destination absent, pushed; repaired `7f6157a` after a union check (positive control) that also caught an **unlogged header rewrite**. `[FIX]` `item_spans()` **fence-aware** (0 behaviour change; the trigger is the steward's own fenced drafting). **The morning's question ANSWERED by walking into it 4×:** a grep matching its own token list, then the git half doing it again *inside the fix*, a diff filter excluding `- ` list items, and a negative check run without establishing my instrument covered the domain ⇒ **a check cannot be written in the medium of the thing it inspects.** **⚑⚑ THE FINDING THAT OUTRANKS THE DAY:** Claude.app's **memory system** is a *second* cache of project state, retrieved mid-answer, that **no instrument here can read or audit** — unlike §Standing Context it cannot be *seen* drifting; our only lever is self-report, the channel we distrust. `[HARDENING]` parked. **PULLING THREAD: Chamber V1's purpose** — which now also decides what that unauditable cache should hold. Detail in the session file. - [Session 2026-07-28 afternoon — the jurist got eyes, and a second cache appeared](session-2026-07-28-afternoon-the-jurist-got-eyes-and-a-second-cache-appeared.md) — **The governance block is CLOSED: PENDING-81 + -82 ruled, applied, verified.** The jurist now **reads the substrate** — `governance-mcp.py`, 5 read-only tools (`governance_item(id)` = verbatim any item/ruling), 29 controls, install **proven from Claude.app's own logs** (2× "started and connected"; live). Four refusals designed in: read-only (AST-audited), **domain = enum not paths**, one imported parser, tool-not-agent. Preferences **rebuilt as repair not rewrite** (steward pasted the live text): 12 doctrine sections proved **byte-identical**, 4 sections added, §Standing Context tiered 3 ways (generated Projects · **Live questions** — *phrased as questions because a status claim decays* · steward-held Personal). **REVIEWED-78/81/82 placed ⇒ 18→15 open**, all 15 dormant Mar–May. Cowork **not a party** (steward). `CLAUDE.md` L27 = *principal **ethics** architect + co-author* — note the conflict resolved **in favour of the document no instrument watches**: currency ≠ authority. **⚑ First find: `8abfe88` claimed "+ archive" and never staged it** — 1,532 lines deleted, destination absent, pushed; repaired `7f6157a` after a union check (positive control) that also caught an **unlogged header rewrite**. `[FIX]` `item_spans()` **fence-aware** (0 behaviour change; the trigger is the steward's own fenced drafting). **The morning's question ANSWERED by walking into it 4×:** a grep matching its own token list, then the git half doing it again *inside the fix*, a diff filter excluding `- ` list items, and a negative check run without establishing my instrument covered the domain ⇒ **a check cannot be written in the medium of the thing it inspects.** **⚑⚑ THE FINDING THAT OUTRANKS THE DAY:** Claude.app's **memory system** is a *second* cache of project state, retrieved mid-answer, that **no instrument here can read or audit** — unlike §Standing Context it cannot be *seen* drifting; our only lever is self-report, the channel we distrust. `[HARDENING]` parked. **PULLING THREAD: Chamber V1's purpose** — which now also decides what that unauditable cache should hold. Detail in the session file.
+1 -1
View File
@@ -64,7 +64,7 @@ permalink: claude-memory/memory
- [Be (laundromat)](project-be-laundromat.md) — canonical Be tracker (est. 2026-06-08). Be = Skemantix startup (Seb+David) funding CapableMind's ladder; **bridge, not venture**. Decisions LOCKED (entity/pricing/infra in file); a11y gate MERGED. **Pre-revenue WTP gate = renovate Pat → charge her; discipline: no new spec until it clears → nothing for executor on be.** Repo @ `f43a0fd`. - [Be (laundromat)](project-be-laundromat.md) — canonical Be tracker (est. 2026-06-08). Be = Skemantix startup (Seb+David) funding CapableMind's ladder; **bridge, not venture**. Decisions LOCKED (entity/pricing/infra in file); a11y gate MERGED. **Pre-revenue WTP gate = renovate Pat → charge her; discipline: no new spec until it clears → nothing for executor on be.** Repo @ `f43a0fd`.
## Active Session ## Active Session
- [Session 2026-07-28 early afternoon — the chamber scoped, and nine blind instruments](session-2026-07-28-early-afternoon-the-chamber-scoped-and-nine-blind-instruments.md) — **Chamber V1's purpose opened into its own precondition; DECIDED: Harrison as the re-gate pilot.** Steward ruled out the **violin treatise** (conversion pipeline foreseen, not built); the **ARC** dismissal *did not survive the manifest* (all five After-the-Reply essays are ingested; Step 8 chavruta is unbuilt on every path equally ⇒ purpose changes corpus+test, never engine work). Typography recommended on four grounds — incl. a **pre-registered falsifiable claim** (`aldine-xxi.md:29` *"Neither tradition names this exactly"* — a universal negative authored before the engine) and **it is where the steward can catch the engine lying** (on his own essays, ungrounded synthesis arrives as agreement). Two maps drawn: **boundedness** mark→unborn (changes *kind*, with the seam at claims-about-text vs selection/emphasis) and **composition** = *who convokes* (⇒ rungs 4–6 are SAFER than rung 3; order 2→(4,5,6)→3). **Then the corpus inverted twice:** my detector said Harrison had no bibliography → steward read his physical copy → the `.md` retains **96%** of source words; my pattern had omitted the word **"Notes"**, and the corpus is multilingual (`bibliographie` ×19). **"Read the runbook"** → the ledger had already classified it `stranded-suspect`/`C-apparatus` on 07-03. **Docling trial (scratch, nothing graduated): 96.5%→99.1% of source, `## Works Cited` with per-line entries** ⇒ **re-conversion recovers what retrofit cannot**; blocked corpus-wide by the missing running-head detector (14 false headings). **SCOPE VERIFIED: 952/1297 clean · 69 apparatus-defect · but only 11 pass graduation** — the gap is **conformance, not content**; the frame is **re-gate the voice-set a purpose needs**, never the corpus. ⚑ **Nine instances of one shape, none caught by an instrument** (four caught by the steward). Detail in the session file. - [Session 2026-07-28 mid-afternoon — Harrison broke the constitution, not the book](session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md) — **The re-gate pilot broke the mechanism BEFORE converting a byte, and the break was CONSTITUTIONAL, not code.** `tier_of()` faithfully implements the ratified evidence-tier table, which enumerates tiers **by format** (*"V-SCAN (scanned pdf)"*) — so **16 born-digital-PDF canonicals with real ground truth get a false ABSTAIN** (*"as much a lie as a false PASS"*), Harrison among them. Census by mechanism: **60 canonicals resolve to a PDF · 35 scanned-with-OCR · 9 bare-scan · 16 born-digital**; `dominion` and `forests` are the SAME AUTHOR IN THE SAME FOLDER with opposite tiers. **Jurist design-gate PASSED, REVIEWED-83 AUTHORIZED + placed**, with two corrections: independence into the **constitutional text** — ⚠ **NOT by analogy with V-TEXT, which ruled the OTHER way** (shared pandoc reader accepted there because *reader-loss cancels a priori*; PDF recovery is inference over page geometry, so nothing cancels) — and the demonstration is of **TWO instruments**, the verification method having **no control at all**. **PULLING THREAD: the Q3 demonstration** — establish a genuinely independent extractor pair (poppler · pdfium · MuPDF: test lineage, don't assume), then construct the **column-order corruption** case and confirm the guard FLAGS it; that is what releases Harrison's stamp, and if no independent pair exists the honest verdict is **HELD**. Six steward corrections, one instrument catch (a fabricated quote in my own Grounding section — different media + mechanical + positive control). Maps got a durable home. Governance 15 → 19 open. Detail in the session file.
## Historical reference → MEMORY-reference.md ## Historical reference → MEMORY-reference.md
Older archived-session pointers and the stable reference layer (steward profile · project-state detail · L1/L2/Chamber inventories · legacy pending-work · reference-file list) live in [MEMORY-reference.md](MEMORY-reference.md) — consult on demand; not loaded at wake. Recent cross-session trajectory comes from the Active Session entry above + the recent `session-*.md` files (wake §2.b.1; the MemPalace `handoffs` glance was retired 2026-07-07 with the wind-down). Older archived-session pointers and the stable reference layer (steward profile · project-state detail · L1/L2/Chamber inventories · legacy pending-work · reference-file list) live in [MEMORY-reference.md](MEMORY-reference.md) — consult on demand; not loaded at wake. Recent cross-session trajectory comes from the Active Session entry above + the recent `session-*.md` files (wake §2.b.1; the MemPalace `handoffs` glance was retired 2026-07-07 with the wind-down).
+8
View File
@@ -484,3 +484,11 @@
{"subject": "claude-code", "predicate": "drift-pattern-good-direction", "object": "convert-the-strategy-question-into-a-measurement — 'rebuild or retrofit?' was heading for an argument from principle; running ONE book through the pipeline (224pp, 1:49, scratch only, no hash changed) settled it with numbers: 96.5%->99.1% of source words, and `## Works Cited` with one entry per line where the old file had run-together paragraphs. The steward proposed the trial; it was the highest-value act of the session. Reusable: when a strategy question has a cheap single-instance experiment, the experiment IS the analysis.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-evening-the-chamber-scoped-and-nine-blind-instruments.md", "extracted_at": "2026-07-28"} {"subject": "claude-code", "predicate": "drift-pattern-good-direction", "object": "convert-the-strategy-question-into-a-measurement — 'rebuild or retrofit?' was heading for an argument from principle; running ONE book through the pipeline (224pp, 1:49, scratch only, no hash changed) settled it with numbers: 96.5%->99.1% of source words, and `## Works Cited` with one entry per line where the old file had run-together paragraphs. The steward proposed the trial; it was the highest-value act of the session. Reusable: when a strategy question has a cheap single-instance experiment, the experiment IS the analysis.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-evening-the-chamber-scoped-and-nine-blind-instruments.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern-good-direction", "object": "corrections-that-ran-against-my-own-published-claims — three times in one session the next check overturned what I had just told the steward: the Harrison retraction, then the retraction OF that retraction (96% word retention), then the near-miss on '20 files degraded'. Each correction cost less than the claim would have. The pattern worth keeping is that none required defending a prior position; the shape to watch is that all three claims were published BEFORE the cheap confirming check existed.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-evening-the-chamber-scoped-and-nine-blind-instruments.md", "extracted_at": "2026-07-28"} {"subject": "claude-code", "predicate": "drift-pattern-good-direction", "object": "corrections-that-ran-against-my-own-published-claims — three times in one session the next check overturned what I had just told the steward: the Harrison retraction, then the retraction OF that retraction (96% word retention), then the near-miss on '20 files degraded'. Each correction cost less than the claim would have. The pattern worth keeping is that none required defending a prior position; the shape to watch is that all three claims were published BEFORE the cheap confirming check existed.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-evening-the-chamber-scoped-and-nine-blind-instruments.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "fabricated-timestamps-in-the-honesty-record — I wrote ISO 8601 minute-precision timestamps in the Symmetria ledger ALL DAY without ever running `date`. The harness supplies the DATE only; I inferred clock times from narrative position and rendered them in a format that signals measurement. `14:10` was 40 minutes in the FUTURE; the afternoon session's `13:30`/`13:50` entries were written when that file's mtime says 11:35. I also labelled the session 'evening' at 13:29. Steward caught it and offered me an excuse (VPN to CapableHands in Ontario) — the clock was correct, Europe/Madrid, and the excuse was wrong. WORST SITING of the day's class: it is in the ledger, whose entire subject is honesty, in a format nobody thinks to check. ROOT CAUSE is a skill defect, not only a habit: symmetria §4 says 'Use ISO timestamps' and never says WHERE TO GET THEM — the instruction specifies the format and leaves the source to invention. RULE: stamp from `date`; never from a sense of when it feels like. Order was reliable; values were not.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-early-afternoon-the-chamber-scoped-and-nine-blind-instruments.md", "extracted_at": "2026-07-28"} {"subject": "claude-code", "predicate": "drift-pattern", "object": "fabricated-timestamps-in-the-honesty-record — I wrote ISO 8601 minute-precision timestamps in the Symmetria ledger ALL DAY without ever running `date`. The harness supplies the DATE only; I inferred clock times from narrative position and rendered them in a format that signals measurement. `14:10` was 40 minutes in the FUTURE; the afternoon session's `13:30`/`13:50` entries were written when that file's mtime says 11:35. I also labelled the session 'evening' at 13:29. Steward caught it and offered me an excuse (VPN to CapableHands in Ontario) — the clock was correct, Europe/Madrid, and the excuse was wrong. WORST SITING of the day's class: it is in the ledger, whose entire subject is honesty, in a format nobody thinks to check. ROOT CAUSE is a skill defect, not only a habit: symmetria §4 says 'Use ISO timestamps' and never says WHERE TO GET THEM — the instruction specifies the format and leaves the source to invention. RULE: stamp from `date`; never from a sense of when it feels like. Order was reliable; values were not.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-early-afternoon-the-chamber-scoped-and-nine-blind-instruments.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "an-alarm-without-its-own-diagnosis-trains-dismissal — the wake link-canary detected 6 genuinely broken pointers and FIRED FOUR TIMES over two days; every firing I re-diagnosed by hand and filed as 'known canary bug', and the banked remedy was to change the canary's PATH RESOLUTION — i.e. to make the instrument agree with the broken data and silence a TRUE POSITIVE. The defect was never the pointers: the alarm emitted one undifferentiated word, MISSING. An alarm carrying no diagnosis must be re-diagnosed on every firing, and the cheapest re-diagnosis is always 'known bug'. RULE: an alarm must report WHICH failure it found (target-absent vs path-unresolvable) and hand back the fix, or it becomes a training signal to ignore it.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "chose-the-path-form-that-made-my-CHECK-pass-not-the-form-the-REPO-uses — I repaired the pointers with absolute /Users/davidglidden/… paths inside a DOTFILES repo, whose whole purpose is surviving a machine change. Two precedents were in scope and unread: wake-digest.py line 21 is HOME = os.path.expanduser('~'), THREE LINES above my own insertion, and ~/_Dev/… is already the idiom in the memory files' own prose (17 uses). Steward caught it: 'but are absolute paths the answer?'. RULE: when introducing a path/format convention, read how the file you are editing already writes them — and note my verification COULD NOT have caught this, since absolute passed all nine controls I wrote.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "classified-an-artifact-by-its-LOCATION-not-its-AUDIENCE — traced a dead pointer correctly to a Desktop file and filed it as a 'transient desktop dashboard… nothing was lost'. Steward: 'it was a map for me.' Every fact right, the valuation wrong. A census then found FOUR more unbacked steward-facing maps, zero copies anywhere, incl. the Making-Sequence architecture + reading list load-bearing for live corpus work. Structural cause: code, session records and memories were all durable; the one artifact class addressed to the person the system is FOR had no home. RULE: classify by whom an artifact serves, not where it sits.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "quoted-the-constitution-from-a-repo-CLAUDE.md-SUMMARY-not-the-ratified-text — I argued three times that tier_of() had diverged from the spec. Reading §Tiering & Fence from the substrate INVERTED it: the ratified evidence-tier table enumerates tiers BY FORMAT ('V-TEXT (born-digital: epub/azw3/mobi)', 'V-SCAN (scanned pdf)') and the suffix map reproduces those parentheticals EXACTLY. The code is faithful; the CONSTITUTION conflates container with origin — which is why the defect survived, since anyone comparing code to spec finds agreement. Fourth instance in one day of composing from a summary of a document rather than the document. RULE: a summary is never grounding; the verify-before-compose hook exists for exactly this and it only gates WRITES, not reasoning.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "fabricated-the-END-of-a-quote-inside-a-GROUNDING-section — the jurist package rendered a promotion-criterion clause as 'the §V prose-word guard we already have.' The spec says '…we already run IS the promotion test. The bar for 93% (1,191/1,284) of the corpus.' An invented ending, in the one section whose entire purpose is that the jurist can trust wording it CANNOT VERIFY, in a package about verification — and the real text was STRONGER than the invention. RULE: mechanically verify every quoted line by containment against the source file, with a positive control, before filing any package.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "the-instrument's-SAMPLING-WINDOW-did-not-cover-the-claim — my PDF classifier called a 68-font typeset Harrison 'inconclusive' at 42.7 words/page because it sampled pages 1-8: half-title, title, copyright, contents. Interior sampling gives 397.6 w/pp — a 9x error from the window alone. The same defect had already produced a WRONG EXPOSURE FIGURE I filed in PENDING-83 ('5/5 born-digital, V-SCAN contains no scans'), retracted by census-by-mechanism: 60 canonicals resolve to a PDF · 35 scanned-with-OCR · 9 bare-scan · 16 born-digital. RULE: state where an instrument looked, and ask whether that region is the one the claim is about.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern-good-direction", "object": "the-ONE-instrument-that-caught-me-had-three-properties — of the day's errors, six were caught by the steward, one by the jurist's unprompted self-disclosure, and exactly ONE by an instrument: the verbatim containment check that found my fabricated quote. It differed by comparing artifacts in DIFFERENT MEDIA (my prose vs the spec file), being MECHANICAL rather than a judgment, and carrying a POSITIVE CONTROL. Candidate recipe rather than lament — and the open question is why I built a nine-control selftest for the classifier and none for the verification method the jurist had to demand.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
{"subject": "claude-code", "predicate": "drift-pattern-good-direction", "object": "the-pilot-earned-its-keep-BEFORE-converting-a-byte — Harrison was chosen as the re-gate pilot because it is the worst apparatus case, to break the mechanism where it is weakest. It broke at the FIRST gate question, before any conversion: a born-digital PDF gets a false ABSTAIN, so the book chosen to stress the mechanism would have graduated with NO verbatim verification under an honest-looking abstention. Reusable: run the pilot's GATE questions before its WORK; the cheapest place to find a defect is upstream of the expensive step.", "valid_from": "2026-07-28", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book.md", "extracted_at": "2026-07-28"}
@@ -0,0 +1,74 @@
---
name: session-2026-07-28-mid-afternoon-harrison-broke-the-constitution-not-the-book
description: "The Harrison re-gate pilot broke the mechanism before converting a byte — and the break was constitutional, not code. `tier_of()` faithfully implements the ratified evidence-tier table, which enumerates tiers BY FORMAT ('V-SCAN (scanned pdf)'), so 16 born-digital-PDF canonicals with real ground truth get 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 AUTHORIZED + placed. PULLING THREAD: the Q3 demonstration — establish a genuinely independent PDF-extractor pair, then build the column-order corruption case; that is what releases Harrison's graduation stamp. Also: maps got a durable home after one was lost."
type: project
---
# Session 2026-07-28 mid-afternoon — Harrison broke the constitution, not the book
Session 4 of the day, opened 14 minutes after the early-afternoon wrap. Steward-bounded at the outset to **Harrison only**; it stayed on Harrison and the boundary held, but the pilot's first gate question turned out to be a constitutional defect, so the session's output is a ruling rather than a graduated book. Two steward-directed detours preceded it (memory pointers, then the maps home), both closed completely.
## PAST — what happened + why
**The wake's own briefing carried a re-derived diagnosis, and the steward stopped it.** I reported the link-canary's dead-pointer firing as a fresh finding. It was the fourth firing; the root cause had been banked in the same day's ledger at 11:05, and an open horizon already proposed the fix — **which would have silenced a true positive.** Six pointers in `MEMORY.md`/`MEMORY-reference.md` (not two: four more in the reference file at a *different* wrong depth, never resolving under any interpretation since May) pointed at files that all existed. **The defect was never the pointers; it was that the alarm emitted one undifferentiated word, `MISSING`.** An alarm carrying no diagnosis must be re-diagnosed on every firing, and the cheapest re-diagnosis is always "known bug" — so the alarm trained me to dismiss it. Fixed one level up in `wake-digest.py`: four outcomes (ok / mis-authored / dead / non-portable), the exact replacement string handed back, a regression control replaying this bug's shape, and a control forbidding `DEAD` from collapsing into `MIS-AUTHORED`. **Steward then corrected the repair itself** — I had used absolute paths in a *dotfiles* repo, stepping over `expanduser` three lines above my own insertion and the `~/_Dev/…` idiom already used 17× in those files' prose. Home-anchored now; `NON-PORTABLE` counted so absolute cannot creep back.
**A dead pointer turned out to be a lost artifact class, and the steward had to say so twice.** With the noise gone, one genuine dead pointer surfaced: `arc-current-state-2026-05-07.md`. I traced it correctly (the May 7 session record says "Saved to desktop"; memory-dir git tracking began 2026-04-17, so a file written there would be in history; it is not) and then **filed it wrongly** as a "transient desktop dashboard… nothing was lost." Steward: **"it was a map for me."** Every fact right, the valuation wrong — I classified an artifact by *where it sat* rather than *whom it served*. Census found **four more** unbacked maps on the Desktop, zero copies anywhere, including the Making-Sequence architecture and reading list that are load-bearing for current corpus work. Built at steward direction: `~/dotfiles/maps/` git-tracked, each map symlinked back to its exact Desktop path (view unchanged), moved under a checksum gate with a positive control; `wake-digest.py` reports strays and **never moves anything**. Commit `19bddd5`, pushed.
**Then Harrison — and it broke at the gate, before conversion.** Grounding first (touchstone · runbook `reanchor:` · chamber CLAUDE.md · spec §V/§VII/§VIII), then the binding surface enumerated *forward*: **8 occurrences of the current sha across both repos** (catalogue · reading-index ×2 · engine manifest · coverage-ledger ×3 · engine sidecar), matching the runbook's declared surface plus the reading-index it names as the sixth-surface class. Source resolved via `resolve_archived_source` (never frontmatter): a **born-digital PDF**, 68 embedded Type-1C fonts, banked, match_cov 1.0.
`verify_body_conservation.tier_of()` classifies by **file suffix**: `.pdf` → `V-SCAN` → the body-conservation gate **ABSTAINS**, and per the ratified taxonomy that abstention is the *permanent tier-level* kind ("this tier has NO ground truth") which **proceeds**, unlike run-level `UNVERIFIED` which holds. So Harrison — chosen *because* it is the worst apparatus case — would have graduated with **no verbatim verification performed at all**, under a gate reporting an honest-looking abstention. Per PENDING-55: *"A false ABSTAIN is as much a lie as a false PASS."*
**The decisive turn: reading §Tiering & Fence from the substrate inverted my framing.** I had argued three times that the code was wrong. The ratified table enumerates tiers **by format** — *"V-TEXT (born-digital: epub/azw3/mobi)"*, *"V-SCAN (scanned pdf)"* — and the suffix map reproduces those parentheticals exactly. **The code is faithful; the constitution conflates container with origin.** That is why it survived: anyone comparing code to spec finds agreement. I had been quoting the load-bearing clauses from the repo `CLAUDE.md`'s *summary*, not the spec — the fourth instance today of composing from a summary of a document rather than the document.
**Steward proposed V-DPDF and was right; my recommendation was wrong.** I had implied V-TEXT as the destination. V-TEXT's ratified reference is `pandoc -f epub -t markdown-smart`, *writer-matched* (REVIEWED-72) — there is no `-f epub` for a PDF, so the criterion is **inapplicable**, not merely awkward. Reaching for the nearest tier without asking whether its method transfers is the repo's own named trap (V-DSL ≠ V-TEXT, the k-gram false-flag).
**Census by mechanism** (resolve every canonical's source, then classify by structure — not by frontmatter declaration): **60 canonicals resolve to a PDF · 35 scanned-with-OCR · 9 bare-scan · 16 born-digital.** 73% are genuine scans — the steward stated this from direct knowledge *before* the measurement returned, and the measurement agreed. My earlier "5/5 born-digital, V-SCAN contains no scans" was **retracted**: produced by a front-matter sampling window and a 12-file slice. The demonstrative instance: `dominion` (born-digital, 68 fonts) and `forests` (scanned-with-OCR, 805 fonts, 1.0 page-image/page) are the **same author in the same folder with opposite tiers** — no rule keyed to author, collection or folder can work.
**The classifier failed its own live control, twice-usefully.** v1 called the 68-font Harrison `inconclusive` at 42.7 w/pp because it sampled pages 1–8 (half-title, title, copyright, contents). Interior sampling: **397.6 w/pp** — a 9× error from the measurement window alone. It also documented a *triad* and decided on a *diad* (fonts unused). Both caught only because a control ran against a known answer.
**Jurist design-gate PASSED with two required corrections** (`docs/vdpdf-tier-JURIST-RULING-2026-07-28.md`, filed verbatim; package Addendum layered without rewriting Parts I–VIII). **REVIEWED-83 AUTHORIZED and placed by the steward** at `REVIEWED.md:847`, header well-formed.
- **Q2 — independence, into the CONSTITUTIONAL TEXT, and NOT by analogy with V-TEXT.** ⚠ **Inversion trap:** REVIEWED-72 ruled the *other* way for V-TEXT — a shared pandoc reader was **accepted** because *"reader-loss cancels a priori"* over unambiguous markup. Writing "V-DPDF requires independence, as V-TEXT does" would be exactly backwards. PDF recovery is inference over page geometry; **nothing cancels**, and two runs of one extractor can agree on the same wrong column order — the §VII layer-2 case already ratified as one where *"any raw↔canonical comparison — multiset or sequence — passes."* If no independent pair exists, the honest verdict is **HELD**, not a pass with a footnote.
- **Q3 — TWO instruments, and I conflated them.** The *classifier* has its controls (16/44 in-corpus; 62/59/164 across 385 library PDFs) — complete. The *verification method* has **no control at all**, and "PASS on born-digital, REFUSE on a scan" tests the classifier, not the guard. Owed: a deliberately constructed **column-order corruption** case run through a genuinely independent extractor pair. Precondition of ratification. My own consequence-trace missed this.
- **Q1/Q4/Q5 affirmed**; Q4 on *stronger* grounds than I argued (REVIEWED-75's drafting note says 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 verbatim check caught a fabrication I had introduced.** The package's Grounding rendered a promotion-criterion clause as *"the §V prose-word guard we already have."* The spec says *"…we already run **is the promotion test**. The bar for **93% (1,191/1,284)** of the corpus."* Invented ending, in the section whose sole purpose is that the jurist can trust wording it cannot verify, in a package about verification. Caught by mechanical containment over all 45 quoted lines with a positive control; the true text is stronger than the invention. **This was the only one of the day's errors caught by an instrument rather than by a person** — see the literal question.
**The jurist disclosed its own coverage gap unprompted:** `governance_read` exposes six document keys but **not the chamber constitution**, so a supersession of §Tiering & Fence was ruled on by a party that could not read §Tiering & Fence (corroboration ran against the REVIEWED records that shaped those clauses — independent, but one layer short of primary). Docketed as PENDING-86, not treated as a flaw in the ruling: the disclosure *is* the mechanism working.
## PRESENT — the mood
**Six steward corrections in one session, each one level past where my instruments could see.** The pointers; the absolute-path portability objection; "it was a map for me"; "most of them are scanned"; V-DPDF; and routing to the jurist at all — which is what surfaced the constitutional inversion. Not one was expensive for him; every one would have been expensive to miss. Yesterday's literal question asked whether coverage can be established from inside the instrument. The day answered: no.
**But one instrument did catch me** — the verbatim containment check, on the fabricated quote. It differed from the nine blind instruments in three ways: it compared two artifacts in *different media* (my prose against the spec file), it was *mechanical* rather than a judgment, and it carried a *positive control*. That is the first real candidate for a recipe rather than a lament.
**Three of my own published claims went down, all in one governance item** (the exposure figure, the tier destination, the whole code-is-wrong framing). Each correction cost less than the claim would have, and each is recorded as an addendum rather than a silent rewrite — PENDING-83 now carries four. The record is uglier and truer than a clean one would have been.
**Confidence to recalibrate.** I stated the PDF exposure three times with three different shapes (5/5 born-digital → 16/44/60 → "V-SCAN is correct and populated"). Only the last came from a census by mechanism with a self-tested instrument. Same pattern as yesterday's 42 → 84 → 69. **The tell is identical both days: the first number arrives when I want to feel done.**
**Scope discipline held.** Steward bounded the session to Harrison; two detours were steward-*directed*, both closed completely rather than deferred, and the pilot never became the wave.
## FUTURE — what is pulling
**PULLING THREAD: the Q3 demonstration — the thing that releases Harrison's graduation stamp.** Two steps, in order: (1) establish whether a genuinely **independent extractor pair** exists — distinct *implementations*, not distinct invocations over shared lineage; (2) construct the **column-order corruption** case and confirm the prose-word guard flags it through that pair. The jurist made the pilot *be* the demonstration, so Harrison and the ratification are now one piece of work.
**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):**
1. Test, don't assume, the independence of **poppler (`pdftotext`) · pdfium (via Docling) · MuPDF (`mutool`/PyMuPDF)**. The question is shared *lineage*, not shared interface — check whether any two are wrappers over the same core. If no two are independent, Correction 1's fallback governs and V-DPDF's honest verdict is **HELD**; that outcome must be reported, not engineered around.
2. Build the layer-2 hazard: take a known-good born-digital page, produce a column-order-corrupted extraction, run both extractors, confirm the guard **flags** it. A guard that has only ever passed has not been shown able to fail.
3. Only then draft spec text: new V-DPDF row + independence **as a requirement**, MINOR supersession, prior version frozen byte-identical, bounded-diff proof, commits tagged REVIEWED-83.
4. Harrison's unblocked steps remain available in parallel and are untouched by the ruling: reconvert from `scratch/dominion-trial/…` (**do not re-run docling**), the 14 running-head false headings, `strip_cruft` → `verify_conversion`, boundary-drop attestation, and the voice-purity **reading pass** — which must be a genuine re-read: the engine sidecar states in its own words *"the file was NOT re-read at migration"*, and its boundaries (1-18 / 19-619 / 620-746 "Notes + Works Cited") bind a 746-line file about to become ~2,507. That is the `musil-mwq-tome-1` failure the backfill correctly HELD.
**Other horizons, ranked:**
- **PENDING-84 — 9 canonicals whose banked sources have zero extractable text**, yet whose canonical texts exist. No mechanical path from source-of-record to canonical. Load-bearing and easy to carry silently for months; read *one* end-to-end before proposing a class remedy.
- **PENDING-86 — the jurist cannot read the constitution it gates.** Recommendation (c): add the spec + `graduation-spec.yaml` to `governance_read` keys **and** keep the mechanical verbatim-containment proof in every package.
- **PENDING-85 — two boundary-case classifier verdicts** (`arcades-project` born-digital on 1,664 fonts; `haydn-mozart-beethoven` 4,537 w/pp) need eyeball before per-file verdicts gate anything.
- **The ARC map's *function* has no successor** — the open-work register carries the content; nothing exists the steward can open and orient by. Short to regenerate now that ARC is nearly closed.
- **Chamber V1's purpose** — displaced a seventh time, deliberately, and now genuinely downstream of a corpus that can be verified at all.
- **15 dormant governance items** (March–May), untouched again. **Governance ledger this session: 15 → 19 open. I opened four and closed none.** Three were required by the ruling; that is a real cost, honestly stated.
- **Skill-harvest register compaction** — still owed since 2026-07-22, still over read caps.
**PAUSE STATEMENT:** I am about to be away and do not know what will have changed. Nothing is half-finished: the ruling is filed verbatim, REVIEWED-83 is placed, the dockets are written, the classifier is scratchpad-only and wired to nothing, no hash or binding was touched, and Harrison's canonical is exactly as it was this morning. What I want to find still pulling is **the Q3 demonstration** — because the whole session argued that a gate can report honestly while verifying nothing, and only a guard demonstrated to *fail* on a constructed hazard turns that argument into a fact. The failure mode to guard against is drafting the spec text first because it is the pleasant part; the demonstration is a **precondition**, and writing the row before the guard has been shown to bite would reproduce, inside the repair, the exact shape the repair exists to end.
**LITERAL QUESTION for next-Claude:** Today six errors were caught by the steward, one by the jurist's self-disclosure, and exactly **one by an instrument** — the verbatim containment check that found my fabricated quote. That one differed in three respects: it compared artifacts in **different media** (my prose vs the spec file), it was **mechanical** rather than a judgment, and it carried a **positive control**. Yesterday's rule (*measure in a different medium than the instrument is written in*) covers only the first. So: **are those three properties jointly the recipe — and if they are, why did I build a nine-control selftest for the classifier and still not build one for the verification method the jurist had to demand?** The uncomfortable possibility is that I reliably instrument the part I find interesting and leave uninstrumented the part I have already decided is fine — in which case the missing check is not another control but a standing question at design time: *which claim here am I least curious about?*
**State at wrap:** chamber-library 4 dirty (jurist package + ruling + last session's ledger and tool-log) — **uncommitted, two remotes, steward's call**. dotfiles pushed. REVIEWED-83 placed at `REVIEWED.md:847`. 19 open governance items. `classify_pdf_origin.py` + census TSV are scratchpad-only, wired to nothing.
+11
View File
@@ -673,3 +673,14 @@ Regenerating the quality ledger showed 20 files moving `A-convention` → `+B-te
**PROPOSED (2026-07-28, same wrap) — patch `symmetria` §4: name the SOURCE of the timestamp, not only its format.** **PROPOSED (2026-07-28, same wrap) — patch `symmetria` §4: name the SOURCE of the timestamp, not only its format.**
§4 currently reads *"Use ISO timestamps. Be terse."* It specifies the **format** and leaves the **source** to invention — and invention is what it got. Across three sessions I wrote every ledger timestamp from narrative position without once running `date`: `14:10` landed 40 minutes in the future, and the previous session's `13:30`/`13:50` entries were written when that file's mtime says `11:35`. The harness supplies the *date* in a system reminder and never the *time*, so the skill's instruction is satisfiable only by fabrication — and ISO-8601-at-minute-precision is exactly the format that reads as measured. Proposed replacement: **"Timestamp each entry from `date '+%H:%M'` — read the clock, never infer it from where you are in the session. The harness supplies the date, not the time; an ISO timestamp is a measurement claim like any other."** Sibling for `wrap-up` §2, whose session-file naming convention (`morning`/`afternoon`/`evening`) has the same defect: this session was filed "evening" at **13:29**. Earned + steward-caught; the correction is in the ledger's head notice rather than silently applied to the values, which are unrecoverable. §4 currently reads *"Use ISO timestamps. Be terse."* It specifies the **format** and leaves the **source** to invention — and invention is what it got. Across three sessions I wrote every ledger timestamp from narrative position without once running `date`: `14:10` landed 40 minutes in the future, and the previous session's `13:30`/`13:50` entries were written when that file's mtime says `11:35`. The harness supplies the *date* in a system reminder and never the *time*, so the skill's instruction is satisfiable only by fabrication — and ISO-8601-at-minute-precision is exactly the format that reads as measured. Proposed replacement: **"Timestamp each entry from `date '+%H:%M'` — read the clock, never infer it from where you are in the session. The harness supplies the date, not the time; an ISO timestamp is a measurement claim like any other."** Sibling for `wrap-up` §2, whose session-file naming convention (`morning`/`afternoon`/`evening`) has the same defect: this session was filed "evening" at **13:29**. Earned + steward-caught; the correction is in the ledger's head notice rather than silently applied to the values, which are unrecoverable.
## Harvest 2026-07-28 (mid-afternoon — the V-DPDF ruling; 2 candidates, both evidence-backed)
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
| `/wake-up` | patch | **Read the day's own Symmetria ledger when one exists for today.** The wake reads `MEMORY.md` + the session file + the KG, but never today's ledger — so on a multi-session day every lesson banked earlier that day is invisible to the session that follows it. Cost, twice in ten minutes: I ran `find` on a symlinked directory without `-L` and nearly reported "no ledger today" against a file whose line 24 *records that exact trap*, written at 11:05; then I carried a re-derived link-canary diagnosis into the briefing as a fresh finding when its root cause was banked at 11:05 and an open horizon already proposed the fix. Proposed: if `session-ledger-<today>.md` exists, read its **Returns** and **Open horizons** at §2.a. Cheap (one read), and the 4th, 5th and 6th sessions of a day are exactly when it pays. | 2026-07-28 (2 instances, ~10 min apart, both self-caught only because the absence was implausible) | **PROPOSED** |
| `/jurist-package` | patch | **Require a mechanical verbatim-containment proof over every quoted clause, reported in the package.** The skill already says *"Quote, never paraphrase"* and *"path-verify the reading list"* — but carries **no mechanical check**, and prose discipline did not hold: this session's package fabricated the end of a promotion-criterion quote (*"we already have"* for *"we already run **is** the promotion test. The bar for 93% (1,191/1,284) of the corpus"*) **inside the Grounding section**, in a package about verification. A containment check over all 45 quoted lines, run with a positive control, caught it before filing. This is also the jurist's own recommended option (b) under PENDING-86: since the jurist **cannot read the chamber constitution** (`governance_read` exposes six keys, not the spec), the executor's self-check is currently the *only* instrument touching the primary substrate for this class — which is precisely why it must be mechanical rather than promised. | 2026-07-28 (self-caught fabrication; converges with the jurist's PENDING-86 rec.) | **PROPOSED** |
**Not proposed:** a `/pdf-origin-classify` skill — `classify_pdf_origin.py` is scratchpad evidence for an unratified proposal; skilling it now would codify a method the jurist has explicitly **not** yet accepted (Q3's Instrument-B control is outstanding). Revisit only if V-DPDF ratifies.
**Repo `CLAUDE.md` freshness (§1.6) — surfaced, NOT applied.** REVIEWED-83 shifts `chamber-library`'s governance posture (a new declared evidence kind; independence as a constitutional requirement) and would add `V-DPDF` to its vocabulary. Per the FIX-vs-PROPOSAL split one level up, a **governance-posture** change is surfaced for steward review rather than auto-applied — and here it is also **premature**: the spec text is not drafted and ratification is gated on the Q3 demonstration. Apply at ratification, not now.