session 2026-07-27 evening: PENDING-76/77/78 placed; governance drift-check built + wired into /wake-up

PENDING-76 remanded by jurist — required count returned 0 of 11 (the package's own
IV.2 refinement proved its target category empty); executor recommends withdrawal.
PENDING-77 (5 structural defects) and PENDING-78 (.app preferences) released by the
ruling from needing it. Drift check reports contradicted state claims at every wake
and corrects nothing — detection needs no authorization, correction does.

MEMORY.md compacted 20.5KB -> 17.1KB (budget hook); prior Active Session demoted to
MEMORY-reference.md. CLAUDE.md and REVIEWED.md untouched.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xefg5EXwcpd9RMAr63dWrD
This commit is contained in:
David F Glidden
2026-07-27 22:14:25 +02:00
co-authored by Claude
parent 84a23d8550
commit e8b6ce06a3
8 changed files with 338 additions and 9 deletions
+4 -1
View File
@@ -5,7 +5,7 @@ metadata:
node_type: memory
type: reference
originSessionId: d1e67361-d1b9-4dac-a0c4-e7a0e26211c4
modified: 2026-07-25T07:21:09.435Z
modified: 2026-07-27T20:10:02.871Z
---
# MEMORY — Reference layer (consult on demand)
@@ -29,6 +29,9 @@ 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 (2026-07-25→27 — two supersessions v2.7.0/v2.8.0 + the sweep that caught its own fix; demoted on promote at the 2026-07-27 evening wrap)
- [Session 2026-07-25→27 — two supersessions (v2.7.0 kind-scoping · v2.8.0 voice-purity) + the sweep that caught its own fix](session-2026-07-25-to-27-two-supersessions-and-the-sweep-that-caught-its-own-fix.md) — Landed **TWO ruled supersessions**. **v2.7.0 / REVIEWED-75** (placed 07-27) kind-scopes the verification criterion — the criterion was **VACUOUS** on a non-text work (empty re-extraction is trivially prose-word-identical to itself), now *explicitly-unhandled*; both jurist corrections applied (**deterministic/scan split PRESERVED** — V-SCAN has no ground-truth text; **anti-bypass guard rebound to the PROPERTY**, not enrollment); I caught a wrong-direction cross-ref in the drafted Edit 2. **This is the constitutional enabler of [[project-chamber-versioned-releases]]** — image-works enter a LATER version as a new declared kind, additively. **v2.8.0 / REVIEWED-73** = **voice-purity, the engine-consumable bar**, framed on the **orthogonality** (trim asks *should this be preserved*, voice-purity asks *whose words are these*; the Eichmann leak was content the trim CORRECTLY kept ⇒ **extending the trim is the WRONG fix**). Built `verify_voice_purity.py` (16 invariants, negatives-first) + declared data + `migrate_voice_purity_sidecars.py` + **gate WIRED** + single-reading-pass DESIGNED. Fleet 248→**288**. ⚑ **The rule validated itself on first contact:** 3 ARC sidecars with unassigned tails + **`musil-mwq-tome-1` served to the engine with boundaries shifted by 6 lines**, unknown to anyone (HELD for re-derivation); and **the ruling's own cited instance was wrong** (all 5 ARC bindings verify clean). Backfill 18 migrated / 1 held. ⚑⚑ **The steward-directed base-rate sweep caught MY OWN `source_lines` fix one commit old** — `splitlines()` also breaks on `\f`/U+2028 (**lintott off by 308 LINES**); **BOTH prior formulas wrong on complementary subsets** ⇒ no single sample distinguishes all three ⇒ banked [[feedback-derive-the-rule-from-the-consumer-not-from-the-survivor]]. Root cause fixed: ONE implementation, producers import it. Steward's *"confirm the rule, not the sample"* had already prevented corrupting **36/1,297** files. **PULLING THREAD unchanged and still UNTOUCHED: which purpose anchors Chamber V1** — twice re-pointed, twice displaced by library work. State: all 4 repos **clean, 0 unpushed**; spec v2.8.0 operative.
## Archived (2026-07-24 night — the V-TEXT wave's first bite censused the whole class; the unlock is named, the engine track is independent; demoted on promote at the 2026-07-25 wrap)
- [Session 2026-07-25 — cleaner A (footnote-aware) built + the mechanism-census that ended the guessing](session-2026-07-25-cleaner-a-footnote-aware-and-the-mechanism-census-that-ended-the-guessing.md) — Built **cleaner A** (`scripts/strip_source_presentation.py`) test-first into a **footnote-aware presentational stripper** per the steward's **3-gate ruling**: (1) apparatus-preservation guard INSIDE the tool (`verify_apparatus` — note elements + href→id link graph; the failure `verify_lossless` is blind to; text-losslessness ≠ apparatus-preservation), (2) relational rules throughout (unwrap gated on `epub:type` + live link graph, never a name list), (3) policy as governed declared data, not a tool default (`unwrap_wrappers` OFF by default). Fleet 234→248 (commits `6d7ff84`→`73ae8e3`). Proved on `the-shape-of-a-pocket`: solves layer-1 (class→0) + layer-2 (div-fences 150→48) **footnote-safe** (7 defs); residual is **curation-policy, not a tool gap**. **LITERAL Q "is heavy-styled one fix deep?" ANSWERED: NO** (class markers · fences · internal-nav · art plates are distinct kinds). **⚑ Two self-corrections (assert-from-derived, twice): buggy `\b` census + `^..\d+..:` def-count regexes** → caught vs substrate; the false "div-unwrap breaks footnotes 7→0" had shaped part of the ruling, corrected before propagating. **The reflective turn (steward: "could we have foreseen this? whack-a-mole?")** → banked **[[feedback-census-by-mechanism-not-proxy]]** + RAN a **mechanism-census over 48 wave files** (`_curation/mechanism-census-2026-07-25.tsv`, `a527e0a`; volume-census superseded `06331fb`): **8 clean/near-clean · 21 internal-nav (one ruling) · 2 MIXED 2nd-mechanism · 8 pandoc-class-leak [all French/translation] · 8 glyph-needed · 1 azw3.** Dominant lever = **ONE internal-nav CURATION RULING (~31 files), NOT one cleaner.** Steward's held-point validated (banked lesson's first live test): "ONE ruling clears 23" is inference-from-composition (the gap that falsified the volume census) → checked → clears **21/23**; 2 hide a 2nd mechanism. **PULLING THREAD = the internal-nav curation ruling** (constitutional-adjacent: *what a canonical IS*), deferred to a **fresh head**; first validate on ONE file (composition ≠ what-removal-does), pre-frame as a SPLIT (carrier-dangling `#filepos` vs surviving-target), second-hand-check the census tool in a different bucket. State: 5 commits UNPUSHED (Gitea flaky — steward's call); `graduation-spec.yaml` WIP uncommitted (last session's); no canonical touched. Read the session file + the census TSV at wake.
- [Session 2026-07-24 night — the V-TEXT wave's first bite censused the whole class; the unlock is named, the engine track is independent](session-2026-07-24-night-vtext-wave-censused-cleaner-unlock-engine-tracks.md) — Ran ONE file (Moby-Dick) end-to-end: **calibration ANSWERED** (clean PASS, fab 0, threshold-40 holds) but a cascade (edition-swap Penguin→B&N · imaged `$` glyph the backup-only census MISSED, caught by the lane's live guard · `strip_cruft` can't clean nested calibre spans) resolved into a ROOT — **`test_tools` = 35 unit tests / 0 integration tests**, so the REVIEWED-72 writer switch (`gfm-raw_html`→`markdown-smart`) silently **orphaned `clean_pandoc_html_residue` AND the ratified footnote fallback (REVIEWED-54 §5)**. Turned whack-a-mole into a **finite census** (`_curation/v-text-wave-gap-census-2026-07-24.md`) — **SUPERSEDED IN PART 2026-07-25** by the mechanism-census (its "31→one fix" was a volume proxy; see [[feedback-census-by-mechanism-not-proxy]]). **PULLING THREAD was: build the unlock, prove it by graduating `the-shape-of-a-pocket`** — done 2026-07-25 (cleaner A built; the answer: NOT one fix deep). LITERAL Q ("is 'heavy-styled' one fix deep") → ANSWERED no.