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>
49 lines
3.0 KiB
Markdown
49 lines
3.0 KiB
Markdown
---
|
|
name: Session 2026-04-07 — v0.62.0 replay overnight
|
|
description: BMF v0.62.0 replay running overnight in Oviedo, Thistleweld flagged allSettled error swallowing
|
|
type: 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
|