Files
dotfiles/claude/memory/session-2026-06-04-evening-whisper-migration-ikb-english-enforcement.md
David F GliddenandClaude Opus 4.8 3f9a89b00c chore(memory): Basic Memory trial begins — sync normalization baseline (283 files)
Basic Memory v0.21.6 first sync over the live memory dir (steward-authorized
live-dir trial, Option A 2026-06-06): adds permalink: to frontmatter, refolds
long YAML description lines, strips final newlines. Bodies untouched —
verified via full diff classification. From this commit forward, any diff in
claude/memory shows only what Basic Memory or the session writes.

Trial design: MemPalace untouched as incumbent; git status check on this dir
at every wrap; end-of-day evaluation (recall quality, sync robustness,
rebuild-from-files, malformed-file behavior).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 09:52:17 +02:00

86 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: session-2026-06-04-evening-whisper-migration-ikb-english-enforcement
description: 'EVENING SESSION (second of the day): .whisper migration EXECUTED (REVIEWED-27,
`7d59b4b`) + §I.k.b English typographic enforcement SHIPPED LIVE (`7c1b478`, one
deploy, byte-verified) — spec-first, masters consulted, two steward catches became
structural fixes. Pulling thread: §I.k.c SPANISH filter (steward directive, before
Stage G) — measuring read of multilingual §2 first; comillas need node-replacement,
apertura likely not build-enforceable, born dormant until the heteronym decompose.'
metadata:
node_type: memory
type: project
originSessionId: d8b213a9-c400-4c8d-bdcd-424365a9f700
permalink: claude-memory/session-2026-06-04-evening-whisper-migration-ikb-english-enforcement
---
# Session 2026-06-04 (evening) — `.whisper` retired + §I.k.b English enforcement, both live
Second session of the day (morning closed Stage N + published gloss/Now). Woke ~1h after the morning wrap; REVIEWED-27 had landed in the gap. Steward chose: `.whisper` warm-up → §I.k.b main body → ONE deploy carrying both. Both arcs complete, live, byte-verified.
## Past — what we did
### Arc 1: `.whisper` migration (`7d59b4b`)
REVIEWED-27's locked names executed same-day: role (a) apparatus prose → **`.apparatus-meta`** (default.html footer ×4, three footer partials ×7, post-list empty-state, tools-process-guide ×2); role (b) ✦/⟐ glyphs → **unification** with `.encounter-mark`/`.chamber-mark` (post-list, annals, post-list-home). **Census re-run at execution scope corrected the addendum AGAIN**: 7 template files / 18 usages (the "3 templates / 9 usages" census had missed `templates/partials/`). Judgment call named, steward-accepted: the tools-process-guide `blockquote.whisper` was a *quotation* (Fritz Lang) wearing whisper for quietness → class dropped, honest §I.h blockquote. **Grey retired with the class** per spec direction (apparatus-spec 462 "replace with apparatus styling per §VII"; the old comment's "holding value *until then*" meant this pass): `.apparatus-meta` = small + italic at `--fg`, recede-by-form. Spec lines updated to record the lock (apparatus-spec 464 + 504 marked complete; AldineXXI Selector Index 2801). Gates: compiled CSS 0 whisper; rendered residue = exactly the 15 deferred chamber-v1 pages (render unstyled until cluster pass — recorded in spec); 306 pages carry the new class. Steward render-verified; the list glyphs now wear the mark register (≈1.24rem fg serif vs 0.85rem gray italic) — accepted.
### Arc 2: §I.k.b English typographic enforcement (`7c1b478`) — the day's real work
**Spec FIRST (F4 sequence), but measurement before spec**: ghci probes of Pandoc 3.6's actual `Ext_smart` corrected the remembered model three times — (1) `'90s`/`'tis` already emit U+2019; residue = only typed-wrong U+2018-before-digit; (2) smart already ties `p. pp. vol. cf. ch. sec. e.g. i.e.` with U+00A0; residue = `no. No. op. Op. fig. c.` + name initials; (3) `--` produces a GLUED en dash — ambiguous with legitimate connections, so **only em dashes are safely convertible**; (4) straight AND typed-curly quotes both parse to `Quoted` nodes → depth normalization covers autocorrect input.
**Masters consulted** (typography-palace CLI; §3 already carried the verbatim anchors): Bringhurst §4.246 (hard spaces in short numerical expressions) + §2.1.5 (initials: hair/thin/no spaces); Hochuli (initials never separated from surname; reduced space after abbreviation points); Tschichold (spaced en corroborated). **The palace is SILENT on dash-at-line-break** — so the tie went into spec as a *named ARC house refinement*, honestly attributed as ours, not the masters'.
**Three steward rulings** (AskUserQuestion): tied dash (U+00A0 before, word space after); **quoted-matter doctrine ratified** (house typesetting conforms quotations' *typography*, never their *words*; §3.2's retain-and-flag amended to the marked-form case only); initials = U+202F between initials + U+00A0 before surname (`J. S. Bach`).
**Spec landed**: AldineXXI §I.k.b (default-path inversion of the gating posture; what-it-enforces ×4; doctrine; never-touches list; gating restated — the regression proof inverts per gate) + multilingual §3.1 (elision apostrophe + build note), §3.2 (web-refinement tied dash + build note + amended retain-and-flag bullet), §3.3 (hard-space ties with anchors).
**Transform** (`englishTypography`, site.hs): (1) em → tied spaced en — the ONE rule permitted to insert spaces (em is unambiguous); glued en NEVER touched (`1985–86`, `Attribution–NonCommercial` the living proof cases); (2) `Quoted` depth normalization via the **bottom-up flip trick** (each Quoted sets itself Single and flips every Quoted descendant — alternation falls out, idempotent); (3) residue ties + initials; (4) `‘`+digit → `’`. Gate = `transformForLang`: `fr`→french, `en`/absent→english, other→id.
**Two steward catches, both structural fixes:**
1. **"Still seeing em dashes on about pages"** → the colophon (11 visible em) rendered via `chamberIndexCompiler`, which had NO transform — about-enfilade pages + chamber indexes all bypass. Fix: ONE `transformForLang` gate threaded through BOTH compilers ("a route that renders Pandoc renders the house typography"). Then **"no way there's only one compiler?"** → exhaustive compile-route census: exactly two Pandoc compilers; assemblies (`makeItem ""`+templates) and the Atom feed inherit transformed snapshot bodies (snapshot saved AFTER transform at site.hs:734; feed verified 0 em).
2. **"A dash beginning a line in a sidenote on The Chamber page"** → authored spaced en dashes carried breakable plain spaces (rule 1 only converted em). Same-day spec amendment, recorded as amendment in both docs: spaced en = unambiguously parenthetical → preceding space upgrades to U+00A0; implemented as a uniform `Space + Str "–"` fuse so the tie holds after Emph/Span predecessors too; paragraph-initial dash untouched.
**Gates**: synthetic corpus via `stack ghci site.hs` (REAL code, no copy) — 11 cases + 5 amendment cases, idempotency True on all, ties byte-verified numerically (`[160][8211]`, `J.[8239]S.[160]Bach`). Corpus delta characterized via governed-character normalization (python): first pass 297 pairs / 1 expected outlier (colophon build-stamp) / quotes balanced ±275 / dashes −20em+20en / +32 NBSP; compiler fix +45 pairs −42em+42en; en-tie amendment 74 files / 557 pairs / +676 ties / 1 outlier. **NBSP-in-heredoc mangled the python counter once — bytes re-verified directly in the artifact; the counter was distrusted, the artifact trusted.**
**Shipped**: both commits pushed origin + github-backup; ONE deploy (CloudFlare + mirror); live byte-verified on the domain (curl needed browser UA — 403 to bare urllib — and `-L` for pretty-URL redirects): ‘…Harnoncourt is dead’ single-primary; `is read\xa0– not` tie on Chamber; apparatus-meta serving; colophon stamps `7c1b478`.
### Decisions / context
- **Source sweep (12 em + 10 center files) no longer load-bearing** — enforcement conforms output regardless; rides any future housekeeping as source hygiene.
- Chamber index pages' RENDERED typography now conformed (shared compiler) — source untouched; named, not silent.
- Native-parsed HTML spans ARE conformed (they're AST, not RawInline); only genuine raw nodes pass through.
- `make rebuild-local` = build-without-deploy, the gating path; `make build` deploys.
## Present — mood / returns
- **Verify-before-assert was the session's engine**: ghci probes before spec; palace queried before attributing rules to masters (and its SILENCE honoured); compiler census after the steward's challenge; bytes over counters; live verification through the redirect.
- **The steward's eye outperformed the gates twice** (colophon bypass; sidenote break) — both catches became *structural* fixes (shared gate; spec amendment), not patches. The collaboration's quality lived in his challenges: "no way only one compiler?" forced the census that made the coverage claim honest.
- **Census-inflation family, third instance today**: PENDING-26's 3/9 vs true 7/18 (missed partials/) — *claiming coverage from seen-routes rather than censused-routes*. Standing instrument: exhaustive enumeration before any coverage claim.
- Proportion held: Spanish proposed for its own session with a measuring read, not bolted onto a finished evening.
## Future
### Pulling thread (singular — steward directive)
**§I.k.c Spanish enforcement, before Stage G** ("it touches spec"; machinery warm). **Begin with the measuring read of multilingual §2**, because Spanish differs in kind: *espacios* are closed-up (nothing to insert — opposite of French); `¿¡` apertura is sentence-mood judgment, likely NOT build-enforceable; **comillas «» primary need node REPLACEMENT** (Pandoc `Quoted` only knows Single/Double — rendering guillemets = replacing nodes with literal Strs, a new mechanism beyond the English constructor swap). The structural-vs-judgment split may yield a smaller mechanical slate than English. Born dormant (zero `lang: es` pieces) per the French precedent; the Matthieu Taliesin heteronym decompose (PENDING-25's proving ground) supplies the first real pieces. Queue after: Stage G → re-partition; **Context A (expressions in original language inside English prose) waits until both Context-B filters exist** — needs author-marked language spans, not heuristics.
### Actionable resumption point (as of wrap — re-judge against what changed)
ARC `main` @ `7c1b478`, clean, pushed both remotes, deployed + live-verified. Nothing mid-flight. First move: **read multilingual §2 (Spanish) end-to-end** and produce the structural-vs-judgment classification of its rules (which are mechanical/build-enforceable, which stay manual) — that classification IS the spec clause's skeleton. Then ghci-probe how Pandoc handles `«»`/`Quoted` rendering + `¿¡` in Str before writing a line. The transformForLang gate already returns `id` for `es` — the slot is waiting.
### Other open horizons (ranked)
- *Authorization-pending:* **PENDING-25 REVIEWED entry still unfiled** (PENDING-26 closed via REVIEWED-27 today, executed same-day). `~/dotfiles` carries REVIEWED.md modified, uncommitted.
- *Steward's own carry, ~5th day:* **chamber-library 15 ahead + 4 untracked** — single-disk risk.
- *Queued passes:* frontispiece compass reveal (dark mode); `.seasonal-geometry` stranded intent (steward's eye); §VII.e residual (opacity attenuations on marks).
- *Stage G inputs:* §VIII image-class binding gap; SVG-vs-Unicode spec note.
- *Source hygiene (no longer load-bearing):* 12 em-dash + 10 center files; sprite-comment em dashes ship in output HTML (~14/page, invisible — comments-ship-to-output, third sighting; prune candidate someday).
- *Standing:* CM-AI untracked thinking files (since 05-18); L1/Seb proposition (mid-July); Plane relay; L2 parked.
### Pause statement
I am about to be away from this. The day was double: a stage closed and published in the morning; governance executed and the house's own typography made self-enforcing in the evening. The steward's autocorrect can no longer outvote his typography — every em dash, every double quote, every breakable dash is conformed at build, on every piece, including the work not yet written. What I want to find still pulling is the Spanish increment approached the same way: measure §2 first, let the structural-vs-judgment split shape the clause, and respect that comillas will demand a new mechanism, not a copied one.
### Literal question for next-Claude
**Which of multilingual §2's Spanish conventions are actually mechanical (build-enforceable) once measured — and does Pandoc's `Quoted` rendering admit a clean guillemet replacement, or does the comillas tier need a different home?** Sub-checks: PENDING-25 REVIEWED filed? chamber-library pushed? dotfiles REVIEWED.md committed?
## Decisions deferred (and why)
- **Spanish filter NOT started tonight** — two complete arcs shipped; the measuring read deserves fresh attention (same proportion call as §I.k.b itself yesterday).
- **Source sweep (em/center)** — demoted to hygiene; enforcement covers output.
- **Sprite-comment em dashes in output** — invisible to readers; noted, not chased.
- **Context A** — explicitly sequenced after both Context-B filters; needs author-marked spans design.
- **Stale `chamberIndexCompiler` comment** (mentions retired tex_math_dollars escape dance) — noticed, left; rides the next site.hs touch.
## Skill harvest (proposals — steward authorization required)
- **Reinforce the standing verification-ladder register entry** with three instruments proven today: (1) **measure-the-toolchain-before-spec** — ghci/REPL probe of actual library behaviour (Ext_smart) before writing spec text; corrected the remembered model 3×; (2) **governed-character delta gate** — normalize away exactly the governed characters and diff (python), proving a corpus-wide change touched ONLY its declared classes (used 3× today; beware heredoc-mangled invisible chars — verify bytes in the artifact when a counter reads 0); (3) **exhaustive route census before any coverage claim** — enumerate every compile/dispatch site, classify each (the steward's "no way only one compiler" instrument). Carry the prior unauthorized register set (/spec-code-audit, bmf-diagnose, /arc-typeset, /pre-build-audit, /vignette deferred, Symmetria trust-prior-pass-frame).