Files
dotfiles/claude/memory/session-2026-04-07-replay.md
T
David F GliddenandClaude Opus 4.7 119285cf43 claude: back up custom skills, memory, and settings with symlink pattern
The ~/.claude/ directory was previously local-only — a machine wipe
would have lost the accumulated memory, custom skills, and settings.
This commit moves the durable parts into dotfiles with the same
symlink-to-home pattern used for CLAUDE.md, PENDING.md, REVIEWED.md,
and L2-BOOTSTRAP.md.

Preserved (symlinked from ~/.claude/* into here):
  skills/audit/              — thinking-folder drift scanner
  skills/symmetria/          — practice-of-return discipline
  skills/vault-update-people/ — Obsidian People-file maintainer
  skills/wake-up/            — session restoration
  skills/wrap-up/            — session state capture
  memory/                    — 55+ memory files (MEMORY.md, sessions,
                               ledgers, project state, feedback, etc.)
  settings/settings.json     — user preferences (hooks, flags, no secrets)

Deliberately NOT backed up:
  settings.local.json   — contains operational secrets (HF_TOKEN,
                           SSH password in expect scripts); by naming
                           convention, *.local.* is not synced.
                           Needs separate review and probable rotation.
  sessions/, history.jsonl, caches, telemetry — ephemeral
  plugins/, marketplace skills and agents — reinstallable

The working copies at ~/.claude/skills/* and
~/.claude/projects/-Users-davidglidden/memory are symlinks into this
directory, so every write flows here automatically. install.sh
recreates the symlinks on a fresh machine.

FOLLOW-ON (flagged, not in this commit):
  settings.local.json contains a HuggingFace token and an SSH password
  as plaintext strings inside allowed Bash command patterns. These
  should be rotated and moved to secure storage (keychain / pass /
  env file outside the settings file).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 13:51:04 +02:00

3.0 KiB

name, description, type
name description type
Session 2026-04-07 — v0.62.0 replay overnight BMF v0.62.0 replay running overnight in Oviedo, Thistleweld flagged allSettled error swallowing project

BMF v0.62.0 — Replay Running Overnight

Date: 2026-04-07 (started ~23:10 UTC, 2026-04-06)

What happened

  • Pulled Seb's v0.62.0 (3 commits on top of replay stability fix):
    • c073dca: P0 replay stability — disable DEFINE EVENTs + HNSW during replay, concurrency cap (4), batch size 16→4, circuit breaker relaxed, CPU threshold 0.65, post-replay reconciliation
    • 8dcbd5c: Temporal upsert race fix (#88), reconciliation datetime type fix
    • 9ec4c39: Crash-safe snapshot manifest (#118), stale lock cleanup (#115), entity name_lower index (#87 P1-1), vector recency boost (#73), factory rules-only classification (#85)
  • Added BM_LOCAL_MODEL=qwen3.5:4b to ~/.capablemind/env (was missing, defaulting to nonexistent qwen2.5:7b)
  • Ran cm-ctl repair --yes — wiped 45 GB SurrealDB bloat
  • Snapshots survived repair — had to manually clear ~/.capablemind/data/mindfabric-00/snapshots/ because replay coordinator was restoring cursor from stale snapshot, skipping all events
  • Two launchd agents: com.capablemind.bmf (loaded) and com.capablemind.bettermemories (was respawning, had to bootout)
  • Replay running: 571 Phase 1 events (last 7 days), ~80 events/min. Phase 2 backfill (~22K events) follows.

Thistleweld flags (audit tomorrow)

  1. Levenshtein NONE ghost: name_lower computed field on entity table has no backfill for pre-migration records. string::distance::levenshtein(NONE, ...) throws. Non-blocking for replay (fresh DB), but will recur after replay populates entities.
  2. Promise.allSettled swallowing errors: replay-coordinator.js ~line 318 uses Promise.allSettled across 11 modules. Errors caught but potentially silently dropped. "Eleven modules, one swallower. Silent failures scale fast."
  3. Hardcoded model string: qwen2.5:7b default scattered across bootstrap.ts and tiered-models.ts — wants a config layer.

State when left

  • BMF PID running via com.capablemind.bmf launchd (KeepAlive: true)
  • SurrealDB: ~362 MB (clean after repair)
  • Machine plugged in, Oviedo overnight
  • Teacher OFF (no API key), summarizer wired (qwen3.5:4b student mode)

Issues filed

  • #120 — Phase 2 infinite resource-pause loop + 7 diagnostic findings
    • Fix: hasRealResourceMonitor guard on Phase 2 resource check
    • Fix: replaced 22K-element throwaway array with counter
    • Fix: added Phase 2 progress logging
    • Findings: repair doesn't clear snapshots, allSettled swallows errors, name_lower backfill, persist cost climbing, tombstone unindexed scan

Patch applied locally

  • Three changes to replay-coordinator.ts (resource guard, counter, logging)
  • Built and running — Phase 2 processing 21,955 events at ~14 events/min
  • ETA: ~26 hours (leave running overnight again)

Next check

  • Verify Phase 2 completion
  • Check afterReplay hooks fire (HNSW rebuild, event restoration, reconciliation)
  • Check final SurrealDB size