Files
dotfiles/claude/memory/MEMORY.md
T
David F GliddenandClaude Opus 5 3af7207c29 session 2026-09-01 ADDENDUM 1: /doctor ran after the wrap
The wrap was complete and committed; the steward then ran /doctor, which
found and fixed real breakage. Recorded as an addendum to the same session
file rather than a new one — it is the same session, past midnight.

Fixed: 8 sub-agent name collisions across 21 files (15 renamed; 0 remain,
48 unique names — confirmed by the harness, which surfaced 15 previously
invisible agents immediately). 4 invalid SKILL.md frontmatters, latent
rather than live since the harness parses leniently. plane MCP disabled
(0 calls in 41 real sessions). permissions.defaultMode set to auto.
chamber-library/CLAUDE.md trimmed 54,129 -> 22,530 chars, under the
warning threshold, all 42 tool names and all 9 sections preserved.

TWO LOOSE ENDS recorded in ADDENDUM 1 and flagged in MEMORY.md, because
either would strand the next session:

1. chamber-library/CLAUDE.md is UNCOMMITTED — a 31,861-char deletion,
   steward-approved at the doctor gate, left for the steward because the
   doctor protocol forbids the executor committing CLAUDE.md edits. git
   diff --stat reports 11 lines and badly understates it; the cut sections
   were single 16k/20k-char lines.

2. ~/.claude/agents is NOT GIT-TRACKED — 51 hand-edited files, 0 tracked,
   not a symlink into dotfiles. The renames therefore have no version
   history, and the only backup went to a session-scoped scratchpad that
   dies on clear. The full rename mapping is written into ADDENDUM 1 and
   is the only undo that survives.

The wider gap is noticed and NOT filed, per the proposed moratorium: a
governed surface with no version control, in a system whose premise is
that the record must be checkable. Found by accident.

Also logged: a thirteenth instrument error. I reported dotfiles as having
unpushed commits to "origin" by conflating two repos' status lines —
dotfiles has gitea and github and no origin; the origin line was
studium-engine's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017vKkg2EJF1rGwdFdBogwqx
2026-09-02 11:49:24 +02:00

26 KiB
Raw Blame History

name, metadata, permalink
name metadata permalink
node_type title type permalink originSessionId modified
memory MEMORY note claude-memory/memory 22915403-bc5d-4796-9c7d-196b7c30d2f9 2026-08-17T13:20:44.481Z
claude-memory/memory

Claude Code Memory

Standing preferences

Entries keep their rule inline when they fire at a moment I would not recognize as needing a lookup; they shrink to a pointer when the trigger is loud enough that I'd open the file anyway. A ⚠ constraint always travels with the workaround it limits.

Rules that fire silently — keep these in front of me

  • Fowler's rules for quotation — single quotes primary, double for nested, logical British punctuation order. All writing.
  • Canadian spelling in ARC prose — centre/colour ("almost EU"). Draft all steward-voiced prose this way; corpus "center" = autocorrect drift (cleanup open).
  • Close thoroughly — no frequent deferrals — frequent deferrals ARE how the cloud accumulated. Close ALL of a block that's closable-now; for the rest, name the specific dependency.
  • Shorter, concentrated sessions — ONE tightly-scoped high-leverage bite taken all the way, then wrap; hold the rest as ranked horizons.
  • Constitution-as-block, then pull-based corpus — finish the constitution as one block FIRST, then corpus-into-spec pulled by what each engine phase needs. Bounded question → bounded answer; keep open-thread count LOW.
  • Removing a claim ≠ removing the reliance — cutting an unsupported sentence can hide the gap; the dependency survives, now invisible. Test: does the conclusion still need it?
  • Derive the rule from the consumer, not the survivor — choosing between two disagreeing implementations is selection, not derivation. Derive from what a CONSUMER must do.
  • Rank on fields you actually write — a consumer ranking by an evaluative field nothing populates degrades to trivial order while claiming to rank. Verify scoring fields end-to-end; prefer signals already captured.
  • The central path — answerability, not purity — the contamination recursion is probably irresolvable, so bind the claims, don't certify the parties. Route by claim-type: checkable → produce the check + a falsifier; judgment → disclose standpoint in one line, decide, record; undecidable → name it open. One layer, then act — never audit the audit.
  • Notes are part of the work — footnotes/endnotes are integral: KEEP+CONVERT (<sup><a>→[^N]), never drop on graduation.
  • One-shot instruments are proportionate — a measurement answering a question asked once is NOT a directive violation; its counterfactual is an assertion, not a durable tool. The violation is re-writing what's already banked (rule of three → ladder). Too few promoted, not too many built.
  • A checkable question over a self-authored corpus — counting events in a record I wrote is self-report with extra steps. Before leaving any question: who authored the corpus it reads, and would a different author have written it differently? Narrow until it turns on what entries literally say.
  • Grounding finds my errors, not my support — three packages running, every omission cut AGAINST my own case. Ground in TWO passes: (1) what did I get wrong? (2) what already says this? Search the register for the CONCLUSION, not just the citations. ⚠ Quote from the FILE, never from the relayed message — placement adds and cuts.
  • A null search is evidence about the query — a search that finds nothing is a fact about the QUERY until the query is proven able to find the thing; and acting on a handle (filename, regex, path) without inspecting the referent is the same error reversed. ⚠ Never report "you don't have X" from a name search. Four instances, two sessions, 2026-08-31.
  • Resurface banked notes before re-deriving · Checkable claim surfaces bugs · Census by mechanism, not proxy · Completion is a tripwire · Trust prior pass frame — the five epistemic disciplines. Kernels: read the banked note before re-deriving · a checkable claim over a soft classification is itself a defect-detector · census by RUNNING the real pipeline · the feeling of "done" is the cue to verify the tail · re-run a prior verification at the scope of your extension. ⚠ Also carried as Symmetria §3 flags — two surfaces, deliberately: §3 loads only when Symmetria is invoked, so these stay here for sessions where it isn't.

Loud trigger — pointer suffices

  • Chamber work: ground in constitution + charter + runbook FIRST — any chamber work or talk about it begins there (incl. reanchor:). Repo CLAUDE.mds are pointers, not state; corpus claims come from a self-tested tool, never a hand grep.
  • Governance files are dotfiles symlinks — Edit/Write refuse to write through a symlink, so edit the real ~/dotfiles/… path when appending — PENDING/REVIEWED only. ⚠ That refusal is a tool artifact, not a permission check, and this note is the documented route past the only friction guarding the constitution (PENDING-107). ~/CLAUDE.md/~/REVIEWED.md/L2 = [ESCALATE], steward's hand — a jurist sign-off does not authorize one.
  • Verification ladder — the named instruments; reach for the gate the claim's shape demands instead of re-deriving one. ⚠ FROZEN — REVIEWED-123 (2026-08-17): no additions, rewordings, removals or reorderings, from ANY source, whatever its authorization, until the trial is graded (N-now 44/84 as of 2026-08-31 — DOWN 7 from 51 on 08-25, and the direction is the point: the window is shedding faster than it gains, so grading may RECEDE rather than approach; the counter is a 30-day ROLLING WINDOW per PENDING-147, so it rises and falls as transcripts age in and out. Re-measure, never relay: len(glob('~/.claude/projects/-Users-davidglidden/*.jsonl')), the trial's own method at governance-drift-check.py:331). Entries earned meanwhile queue in PENDING-141's owed-entries list (4 rows). Reading it is unaffected — that is the point of the freeze.
  • Skill-harvest register — canonical home for proposed skills (governed analog of PENDING.md for tooling); /wrap-up §1.6 proposes, steward authorizes. Rebuilt 2026-08-07 from the archive: 154 live proposals, grouped by kind, each with an exact archive:L### pointer. ⚠ The 2026-08-01 compaction was lossless but illegible (55 scraped header rows, 95% of cells cut mid-word) — the count it advertised, 177, was never the number. ⚠ THE STROKE-2 BATCH IS AUTHORIZED BUT SHOULD NOT BE EXECUTED YET — PENDING-141. 41 rows stamped S2 are authorized (2026-07-19, execution not a ruling) and 22 are S2? (unsettled). BUT appending them triples the ladder from 20 entries WHILE a pre-registered trial is measuring whether the ladder is reached (baseline 14%, graded at 84 transcripts). Ladder size is an uncontrolled variable in that design, so executing the authorized batch would confound the only check behind REVIEWED-95's causal claim. ⚖ RULED — REVIEWED-123 (2026-08-17): AUTHORIZED (a) HOLD, on six conditions, and the freeze is GENERAL rather than S2-specific. Grading does NOT authorize the append — the batch returns for a ruling. Report N-now at every wake until lifted; 30-day review is a live DEFERRED-DECISION. ⚠ Filing new proposals now requires a declared firing moment (/wrap-up §1.6); one that cannot name it is documentation and must say so.
  • Copy-paste-clean governance drafts — draft PENDING/REVIEWED blocks as plain fenced markdown; display formatting leaks into the placed record.
  • Verify-before-compose hook — chamber constitutional writes are BLOCKED without <!-- GROUNDED-IN: … --> + verbatim Grounding. Don't fight the block.
  • Tool review after each use — review every tool we built after each run, success OR failure. PASS-BUT-FALSELY is the priority signal. Log: chamber-library/_curation/tool-evolution-log.md.
  • Every canon doc's source lives in Chamber Sources — a canonical's source = whatever resolve_archived_source returns, never the master library or a path in frontmatter. Read the banked record before calling a mismatch a defect.
  • Engine sources graduate to the permanent chamber — work added for the engine ALSO becomes permanent collection unless stated otherwise; take it all the way (clean→verify→graduate→catalogue→sidecar). Never leave staged.
  • Bulk indexing runs in tranches, gated on READBACK — never one multi-day mine; order by criticality; prove each tranche by reading back, not by write-success (933k drawers once stored fine and were unreadable). Steward rule 2026-05-04, learned on MemPalace, applies now to engine corpus work.
  • Studium Engine charter — the engine's constitutional doc. Read before building. · Sixtus-V collaboration — build freely, surface only vision-forks; constraint-candidates = 3rd governed instrument. Studium-engine only.
  • CapableHands standing authorization — M4 mini david@10.0.1.136 durably authorized for remote OCR/inference; don't re-ask (steward 2026-07-01).
  • Steward's notebooks + transcription provenance — three notebooks (Journal I B6-slim · A6 field book · A6 "real life"); provenance cites the NOTEBOOK, not the photo; dates are a red rubber stamp; file under the date RECORDED, arrival is metadata. ⚠ Ask each notebook's own archiving form.
  • Typography palace — query via CLI — ~20 type masters at ~/.mempalace/palace-chamber-typography; mempalace --palace <that> search "…". For ARC typography; don't re-ask where it lives.
  • Steward maps live in ~/dotfiles/maps — a map = an artifact David reads directly to orient. Write to ~/dotfiles/maps/, symlink to Desktop, never straight onto the Desktop.
  • Plane coordination workflow — CENTRAL to steward↔Seb: app.plane.so/capablemind, thin effort-tasks [BM #N] over canonical GH issues. ⚠ BBF = BetterBridge product, NOT the board.
  • MemPalace is an unaffiliated stopgap — third-party; don't conflate with BMF/CapableMind. MemPalace PRs await MemPalace's maintainers, not Seb.
  • The maturation of the chamber — a dialogue — the 2026-06-28 exchange on the chamber's telos (fidelity-without-trust; reading-is-unsolvable-is-the-feature). Companion to project-studium-engine-telos-chamber-of-voices.

Canonical Workstream Trackers

Read the tracker for any active workstream at /wake-up before composing the briefing. Append substantive moves at /wrap-up — to the chronological log, not only "current state". Per feedback-canonical-workstream-tracker-discipline.md.

  • Chamber as versioned releases — THE GOVERNING FRAME for all library work. The 2000-year Chamber as versioned releases with soft borders, each serving a PURPOSE; scope every library bite through this. Open decision: which purpose anchors V1. Read the file, not this line — it holds the reframe that resolved the purpose/scope paralysis.
  • Studium Engine — canonical engine tracker. N0–N2 + R0 + voice_stamp built; corpus 14 sources, trilingual, fleet 9 suites / 285 green. fr cell: TWO STEPS FROM CLOSING. REVIEWED-133 (PENDING-137) RULED + EXECUTED 2026-09-01 (2b30425, 496cd7e) — the cell-constant narrowing is now a placed amendment: fr.stratum_amendments carries REVIEWED-121 and REVIEWED-133 as siblings (what cond. 4 turned on). undisclosed_days_in_force deleted, not corrected; direction recorded as INFERENCE, never measurement — ⚠ the narrowing removed the markers the claim turns on, so the before-state is unrecoverable from the file that carries the disclosure. NEXT: PENDING-134's disclosure (⚠ what it now requires is NOT obvious — read REVIEWED-133's If AUTHORIZED with REVIEWED-121 point 9 before touching the file; deliberately not guessed at the wrap), then ratio_A_to_B re-derived ONCE (REVIEWED-116 pt 5). ⚠ PENDING-134 was ruled REVIEWED-121 on 2026-08-14 — this line said "NEXT: rule PENDING-134" for 18 days and aimed the steward at the wrong target. ⚠ PENDING-131 (c) never bound the engine (chunker.py has char_range since Cluster A).
  • Studium engine telos — the chamber of voices — the ultimate goal, above the build plan: the childhood chamber of hero-voices, rebuilt so the counsel is accountably theirs. Why verbatim fidelity is load-bearing.
  • The Chamber touchstone — the why — seven questions to test work against when lost in the trees. Read at Step 0 of any chamber work. Holds no state; does not decay.
  • The Chamber vision is NOT in one place — it lives in seven sources across two repos + memory. A single home would become an eighth unless it supersedes or points.
  • L1 reliability — canonical L1 tracker. BLOCKED ON SEB (PENDING-94); BMF is down and staying down. The replay has never resumed, only restarted (minCursor is a minimum over 11 modules, two never participate ⇒ every start rebuilds from seq 0). Completion is gated by uninterrupted run length, not rate. Recall never worked either (retrieval_count = 0). Read the tracker before ANY L1 work — walked past once on 2026-08-03.
  • Instrument censuses — have our gates ever fired? — census 01 (has each gate a real negative instance? → decay, not construction, is the failure mode) + census 02 (has it fired at all? → the record divides by whether a human invokes it). Both pre-registered. Read before trusting any gate's silence.
  • ARC open-work register — the single code-verified source of truth for what is OPEN on ARC. Read THIS for remaining ARC work, not the chronological tracker. · ARC — chronological record; Stage G DONE/SEALED (GPG ac0a7ee) — reactive mode governs.
  • Source library — link + dedupe — master ebook library ~/Documents/___The Library [ePub_AWZ3]/ (2190 ebooks). GOAL: link chamber↔sources + dedupe; a real link needs EPUB/PDF internal metadata + edition-identity, not filenames.
  • Sidecar typology — protocol-dependent reading-indexes — .meta.json structural sidecar = PROTOCOL-NEUTRAL (the graduated bar); reading-indexes = PROTOCOL-DEPENDENT and probably PLURAL — don't design the schema yet.
  • Character-as-image hazard — EPUBs rendering diacritics as inline images are SILENTLY MUTILATED by image-drop. Mechanism built + wired; per-source glyph-maps still owed. VIEW the glyph; map to SOURCE form.
  • Making sequence source set — COMPLETE against the ReadingList (reconciliation-verified). Sourced ≠ ingested. Read before any Making/studium source work.
  • Studium = CM's unfettered sandbox — experiment freely on library/engine without risking CM's runtime; breakthroughs transfer back. Steward-framed 2026-07-08.
  • Be (laundromat) — Skemantix startup (Seb+David) funding CapableMind's ladder; bridge, not venture. Decisions LOCKED. Pre-revenue WTP gate = renovate Pat → charge her; no new spec until it clears ⇒ nothing for executor on be.
  • The Fool — Tarbuckle — THE ACTIVE WORKSTREAM. Bones derived once 2026-08-25 (peak SUCCESSION 96 · dump ABSENCE 8); name + soul sealed, never regenerate (soul). Doctrine = BUDDY-PATTERN-jurist-draft-v2-2026-08-22.md; §8 has no blanks (20 min · frequency UNKNOWN · empty-window consumes · body correlates with nothing). ⚠ CORRECTED 2026-08-31 — the line here read "NOTHING WIRED — no statusLine, no script, §13.1 spec unwritten" and was FALSE ON ALL THREE CLAUSES. Substrate, verified today: .claude/settings.json runs dotfiles/scripts/tarbuckle-body.py as statusLine (refreshInterval 60) · 5 scripts (body·invoke·mumble·seam·wrap) · TARBUCKLE-SPEC-13.1-2026-08-25.md exists · 7 state files under ~/.claude/state/. It is wired and running. ⚠ Found by a concurrent sibling session, which held the correction rather than racing this one's memory write; its counts (7 scripts, 6 state files) were themselves off in both directions — re-measured here, not relayed. What is unbuilt is a separate question and this line no longer answers it. Trial 09 VOID (REVIEWED-124), void now recorded in all three docs. ⚠ Subject matter lives in CapableMind-AI, instruments in dotfiles, and nothing in CapableMind points back.
  • Obsidian vault — from archive to practice — canonical vault tracker. Read it; it holds the four-purpose brief (steward, 2026-08-24) that is now the design brief. ⚠ The vault is NOT a git repo — it mirrors to ~/_Dev/david-root-and-branch-vault-git. The capture practice STARTED 2026-08-23 (two predecessors died at 3 and 4 entries; the measure is week four, not week one) — ⚠ this line previously read "has not been started", which went stale the day it began, and previously carried "paper bridge working" as state the tracker did not hold. Item 0 is new and steward-owed: photographed pages of physical BOOKS with margin notes — a different object from the three notebooks, untracked until 2026-08-24.
  • Chamber-typography — tracker not yet established; moves live in per-session memories (2026-05-11 →) + project-chamber-cruft-restoration.md + project-chamber-typography-mining-plan-2026-05-15.md.

Active Session

🔑 THE GATE THAT SHOULD HAVE EXISTED — built in an hour, 42 days late, and it found what no gate can see. The FIX-lane check-in (30 days overdue) unblocked REVIEWED-67's unconditioned per-conversion typography gate. scripts/verify_typography.py: converter-agnostic by construction, censuses classes in an independently-formed witness, 9 controls both directions written before first execution. Ran the corpus's first typography byte-census: curly_single 4,608 → 4 — ‘tradition’ → ' tradition ' ., docling inserts spaces around the flattened quote. Tier-3 word-boundary damage at 4,608 sites (pilot: 16). ⚠ body_word_conservation is structurally blind — punctuation-stripped tokenization reduces both to tradition; the gate's unit is the word, the damage lives below it. ligatures 2,013 → 0, unpredicted and benign on reading — the instrument reported the vanishing; the human judged it harmless. Poppler recovers all of it ⇒ the defect is the FRONT-END's, not the class's (⚠ pdftotext+pdftohtml are BOTH poppler — one engine read twice, not corroboration). Lane HELD; gate wired to all three terminal lanes. ⚠ TWELVE INSTRUMENT ERRORS OF MINE, AND NONE CAUGHT BY MY OWN FIRST PASS. 🔑 Every catch crossed party lines; nobody caught their own. Constraint 6 working — the day's only evidence for the apparatus, on a day that mostly produced evidence about its cost. Three catch-modes now distinguishable: a CONTROL verifies an encoder · RECONCILIATION catches a correctly-encoded measure of the WRONG THING (2 of 12, and nothing schedules it) · READING THE SUBSTRATE catches a handle with no referent. 📌 THE QUAGMIRE IS A QUEUE. Filing is cheap for the executor, ruling is expensive for the steward ⇒ unbounded arrivals, one server, steady state 62 items. Moratorium proposed to 2026-09-15 (detection continues, filing stops) + a hard cap + one class pass over the 62. Jurist accepted and bound itself, and corrected the criterion: a flat register with ZERO graduated texts is a FAILED moratorium, not a passed one. Steward's decision owed. ⚠ RE_ID CANNOT PARSE THE REGISTER'S OWN HOUSE FORM. ## REVIEWED-133 (PENDING-137) — … backtracks to the bare token REVIEWED; entries 130–133 are invisible to the integrity control and any future amendment to them reports a FALSE ORPHAN. Fix the REGEX, not the entries — REVIEWED-132's own disposition says "Do not touch placed headers." Bounded [FIX], ~20 min. Steward raised it; agreed at the wrap. 📌 STEWARD OWES: the moratorium decision · rule PENDING-171 (unblocks the 322 unread of 362) · -177 (now with measured evidence; Tier-3 not Tier-2) · -178 · -160 · -168 · the §5 regrade ruling.

⚠ AFTER THE WRAP — /doctor ran, and TWO THINGS ARE UNCOMMITTED/UNTRACKED. Read ADDENDUM 1 of the session file before touching either repo. (1) ~/_Dev/chamber-library/CLAUDE.md carries an UNCOMMITTED 31,861-char deletion — a steward-approved trim, 54,129→22,530 chars, now under the warning threshold; the doctor protocol forbids the executor committing CLAUDE.md edits, so it awaits the steward. ⚠ git diff --stat says 11 lines and badly understates it — use --word-diff. (2) ~/.claude/agents IS NOT GIT-TRACKED AT ALL (51 hand-edited files, 0 tracked, not a symlink) — 8 name collisions were fixed by renaming 15 files, and the rename mapping in ADDENDUM 1 is the only undo that survives a clear. ⚠ The wider gap — a governed surface with no version control — is noticed, unfiled, and real. ✅ Also fixed: 4 invalid SKILL.md frontmatters (latent, not live — the harness parses leniently), plane MCP disabled (0 calls / 41 sessions), permissions.defaultMode: auto set. PENDING-169 §5a filed (440d18e): tarbuckle-wrap.py = the Stop hook at median 6.7 s / max 13.6 s, an order of magnitude above every other hook, on the blocking path at every session end — filed against the existing 2026-09-08 trigger, no duplicate block. Steward: look at it on 8 September with the rest of Tarbuckle.

  • Session 2026-09-01 — the gate that should have existed — a day that became the thing it diagnosed. Wake found control (c)'s false positive (a Tarbuckle mumble is unattended by design) → PENDING-178, the counter's unit. FIX-lane check-in held: EXTENDED PROVISIONAL, n=1, trigger re-based to use, ⚠ half not machine-checkable and no proxy invented. REVIEWED-133 (PENDING-137) ruled + executed — two of its conditions corrected by executor substrate reads, and ⚠ governance-mcp.py --selftest was FAILING while the jurist ruled from it (fixed, 62 controls). NEXT: the fr cell's last two steps.

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 — 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).

Index discipline (self-bounding — keep this file lean)

Wake-loaded live index; hard budget well under the harness load ceiling. Keep to: Standing preferences · Canonical Trackers as one-line pointers (chronological detail lives in the linked tracker files, not here) · Active Session · these pointers. Rotation + budget-breach handling are wired into /wrap-up (demote prior Active Session on promote) and /wake-up (truncated load = flag + trim). Back up before restructuring. Compaction history relocated to MEMORY-reference.md at the 2026-08-20 wrap — pure history, not wake-critical.