[FIX] Repair 39 files' frontmatter — including 3 I damaged an hour earlier

The 2026-06-06 normalization sweep (3f9a89b, 283 files) prepended a stray
permalink-only frontmatter block to 39 memory files, 20 of them session wrap
records. Any real frontmatter parser reads the FIRST block, gets `permalink`
alone, and never sees name/description/type.

The sharp case: `strip_frontmatter` exists specifically to stop thread extraction
from matching inside `description:` — its docstring says so. On those 20 wrap
records it strips the stray block and hands the real frontmatter back AS BODY,
producing exactly the condition it was written to prevent.

Repair merges permalink into the real block and drops the duplicate. Nothing
retyped: frontmatter and body are carried as slices, body md5 asserted unchanged.

TWO DEFECTS OF MY OWN, both found only after claiming success:

1. THREE FILES DAMAGED BY THIS SESSION'S OWN STAMPING COMMIT (ef6fa94). That
   script located frontmatter with a non-greedy `^---\n.*?\n---\n`, which on a
   stray-block file matches the STRAY block — so it appended superseded_by to the
   wrong block and orphaned the real frontmatter into the body. That is the same
   non-greedy-first-block blindness diagnosed in strip_frontmatter one hour
   earlier, reproduced in the tool written to clean up after it.
   And the post-stamp check reported "malformed: none" because it asked "does the
   file start with frontmatter then a banner" — true for all three — while the
   claim was "the stamp preserved the record's metadata". The control's subject
   was adjacent to the claim's, for the sixth time today and the first time in my
   own verification. Repaired, verified against the pre-stamp file from git: no
   key lost, prose preserved.

2. REPAIRING 20 APRIL-MAY WRAP RECORDS MOVED THEIR MTIMES TO TODAY, and
   `sec_pause` picked "newest wrap" by mtime — so the digest promoted an April
   session to `Last wrap` and lost both the pulling thread and the open question.
   Caught by the DEGRADED section, which is the honest-degradation mechanism doing
   its job. `sec_pause` now selects by git add-time, like `wrap_events`. Residual
   stated in the comment: add-time lags the wrap by hours, so `Last wrap` is an
   upper bound — wrong by hours where mtime was wrong by months.

Verified after: 0 two-block patterns, 0 orphaned frontmatter, 16 stamps intact
with name: present, 381 pointers resolve, 0 dead, selftest PASS, drift clean,
digest reports 0 degraded sections and the correct last wrap.

Not defects: context-discipline.md and relational-gap-analysis.md use the
`title:`/`type: note` convention and have no `name:` — flagged by my check, correct
as they stand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Y6t6qx7cpaCu5xGdD36u4
This commit is contained in:
David F Glidden
2026-08-17 19:49:02 +02:00
co-authored by Claude Opus 5
parent ef6fa94dcd
commit c2df868104
43 changed files with 65 additions and 179 deletions
@@ -1,12 +1,9 @@
---
permalink: claude-memory/session-2026-05-05-substrate-recovery-and-chamber-composed
---
---
name: Session 2026-05-05 — substrate recovered + Chamber door composed + sidenote-fix-whitespace-trade pulling for tomorrow
description: Long substantive day across two arcs. MORNING/AFTERNOON — substrate restoration arc — Diagnosed silent drawer-write break (chromadb 0.6.x legacy config in palace), repaired max_seq_id poisoning, validated fresh-palace strategy, kicked off comprehensive ARC reference set mining (~614k drawers added; 5 shelves remaining), Marker bulk PDF run (6 of 15 done; Rutter currently converting). Caught my own previous-night false-reassurance about ingestion (vault frozen 27 days). EVENING — composition arc — Death of a Hero footnote apparatus realignment (3 Pandoc footnotes → none were footnotes per §VII; [^1] → §XII sidenote, [^2][^3] → §VII.b Sources, em-dash convention orphaned a 2-entry list and steward caught it); chamber/index.md rewritten end-to-end as proper about-enfilade door (4-doc thinking-folder substrate + Hearth register-anchor + composition-in-dialogue with steward); 4 polish fixes (publication name italicized + restructured, sidenote collision, mobile footer centring, hr before reading compass). Build-pipeline gotcha caught: SCSS partial edits don't trigger Hakyll recompile (only tracks `scss/main.scss`); silent stale-CSS deploy until I checked. **Pulling thread**: paragraph-with-sidenote layout — `:has()` fix solved collision but introduced body-column whitespace exactly as the original SCSS comment had warned against; third-path solution deferred to tomorrow. Steward deferred. **Question for next-Claude**: is there a CSS-only third path between absolute-position (collision risk) and grid (whitespace risk) for paragraph-with-sidenote, or does the right solution require shaping content rather than CSS? Multiple drift-pattern-recurrences: *defended-the-spec-against-the-eye* (em-dash on 2-entry list); *stale-memory-not-actively-applied* (publication-name italics rule available, not retrieved pre-draft); *traded-off-without-flagging-the-trade* (whitespace cost shipped without surfacing the trade); *structural-counter-as-health-signal-without-functional-validation* recurring twice today (morning: mempalace counter; evening: build-pipeline counter).
type: project
originSessionId: a156edbb-0c3d-4285-b3ed-f5a45b8dda66
permalink: claude-memory/session-2026-05-05-substrate-recovery-and-chamber-composed
---
# Session 2026-05-05 — substrate recovered + Chamber door composed