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>
7.8 KiB
7.8 KiB
name, description, type, originSessionId
| name | description | type | originSessionId |
|---|---|---|---|
| Session Ledger 2026-04-15 | Practice-of-return ledger maintained by /symmetria — returns, open horizons, recalibrations, authorization moves, sub-agent dialogues, bypasses. | feedback | 1c1bf37d-b1c3-4a62-9355-613c50f4c028 |
Session Ledger — 2026-04-15
Returns
- ~11:00 CEST — Noticed I was composing responses to the 5 Symmetria design questions without invoking
/symmetria checkfirst. Return: the skill's value is in making decisions conscious; skipping the check in favor of speed is exactly the pattern it's designed to catch. Logged as the first empirical data on the skill's own use. - ~12:00 CEST — First real
/symmetria checkon drafting the #145 comment. The check procedure caught a synthesis-urge: I was going to lead with my six-row retention-mode taxonomy as if it were the answer. Fittingness + confidence calibration forced a rewrite as prompts, not conclusions. Explicit "overwrite freely" framing added. First positive data point on the skill actually changing behavior, not just observing it. - ~12:00 CEST — While drafting first-thoughts to David, noticed the urge to unify everything into one elegant taxonomy. Named it in chat as a contamination smell: aesthetic coherence presenting as structural truth. The taxonomy David and Seb arrive at may be messier than my six rows, and messier could be more correct than neat. Return: surfaced in chat instead of letting a pretty table decide.
- 08:30 CEST — Pre-fix, I said entity persist fix would be "one line." Turned out to be a ~200-line refactor (new batch function + async-to-sync restructure in pipeline.ts). Return: lowered prior on scope estimates for anything involving async/sync boundaries or existing call-site refactors. "One line" was framing, not measurement.
- 07:30 CEST — During audit of Q4 bottleneck (LanceDB compaction), noticed I was about to recommend action without confirming the
optimize()API signature in the installed version. Spawned a read-only check first. Return: confirmed the API shape before proposing code; the recommendation landed accurate on first try instead of needing correction. - 09:50 CEST — After commit
19ba661, first live call of the admin endpoint surfaced thenumSubVectors=96divisibility error silently hiding in the try/catch log. Return: the admin endpoint itself was the surface that made the silent failure findable;afterReplay-only would have continued the silent pattern. Fix landed ind34d092.
Open horizons
- L1 amendment for ProjectionChain — forward-tensed fifth chain, L1 substrate for the unborn. To be drafted when steward confirms strategic frame.
- L1 amendment for Pause-as-event — quiescence records + resumption protocol distinct from cold start. Phase 2 substrate.
- Handoff document for Seb — drafted at
docs/thinking/David/l1-reliability/2026-04-15-handoff-to-seb.md. Awaiting his wake. - Note summarization restore (#147) — deferred until #145 (connector-agnostic summarizer contract) lands OR a faster summarizer path is wired.
- Bottleneck-followup work —
keep_alive: -1may OOM with multiple pinned slot models on 16 GB; HNSW parameters won't scale forever;afterReplayonly fires post-replay, live ingest needs scheduled maintenance. All in handoff doc §Open questions for Seb. - Test for entity persist transaction wrap — no regression test exists; a future commit could silently re-introduce per-row writes.
Confidence to recalibrate
- Scope estimates on existing-code refactors: lower prior. The "cosmetic async wrappers" pattern (pipeline.ts Promise.all) was subtle enough that a "one line" fix was actually a structural rewrite.
- First-pass hypothesis under time pressure: lower prior. Yesterday I proposed three different root causes before landing the actual one (factory.ts skipDispatch+summarizer mismatch). Under pressure, early hypotheses are more likely to be convenient than correct.
- Index parameter defaults: lower prior. I picked
numSubVectors=96without checking divisibility; Lance surfaced the error loudly, but the failure shipped to production-path (commit19ba661) before being caught ind34d092.
Authorization moves
[FIX]#154, #155, #156, #157 (bottleneck audit findings) — implemented, tested, committed (19ba661), pushed.[FIX]#158 (cosine distance formula vestige) — implemented, committed (82a0ded), pushed.[FIX]numSubVectors correction (d34d092) — committed, pushed, validated via live admin endpoint.[PROPOSAL]Symmetria skill v2 — steward authorized design 2026-04-15 (both v1 and v2), installed at~/.claude/skills/symmetria/SKILL.md. All 5 design questions resolved. Rename "Hooks bypassed" → "Bypasses" applied to SKILL.md and spec.- GH comment on #145 — posted at ~12:00 CEST (link). Six possibly-unconsidered lines of inquiry around the archivist/librarian frame, multi-mode retention, where the archivist lives (L1 vs L2), and the
summarizable: booleanforecloses-or-defers question. Framed explicitly as prompts, not conclusions, at steward's request for brainstorm material. - CapableMind-AI docs commit + push — three new docs (handoff-to-seb, symmetria-skill-spec, skipDispatch amendment) shipped to main as
d859dba. Rebased over Seb's0171abb(P-035 T&S agent catalog proposal) cleanly. README index debt explicitly named in commit body — to be addressed via /audit later. - #154 regression test — new file
src/modules/entity/__tests__/persist-batch-perf.test.ts. Asserts the batched-transaction pattern stays in place (200 entities + 50 relationships in <500ms; observed 49ms). Threshold overridable viaBM_PERF_TEST_THRESHOLD_MS. Committed as4ef8f5b. Bypass: --no-verify (same pre-existing TODO trip).
Sub-agent dialogues
- 2026-04-15 ~07:00 CEST — Four parallel read-only audit agents (debugger subtype) spawned for entity persist, HNSW build, Ollama keep_alive, LanceDB compaction. All four returned with specific
file:linereferences + proposed fix shapes + numerical confidence. All four findings acted on in commit19ba661. Calibration check retrospectively: the entity persist agent said "95% confidence, ~40-80× speedup" — verified by live evidence (persist=0-8msafter fix, was 11760ms). Scope check: entity persist agent surfaced additionalPromise.allcosmetic-parallelism contamination flag outside immediate scope — honest add, acted on. - 2026-04-14 evening — Code-reviewer agent for independent diagnosis confirmation on the skipDispatch+summarizer mismatch. Agent reported 97% confidence; fix landed correctly. Convenience check retrospective: agent flagged the enabled_item_types filtering upstream as a possible but unlikely suppressor; I did not investigate further and the hypothesis held. Appropriate stopping point.
Bypasses
--no-verifyon commit19ba661(four bottleneck fixes). Pre-commit hook flagged pre-existing TODOs instorage-lance.ts(tracked in #145). Steward explicitly authorized 2026-04-15.--no-verifyon commit82a0ded(#158 distance formula). Same hook trip, same reason. Steward authorization still applicable.--no-verifyon commitd34d092(numSubVectors correction). Same hook trip, same reason. Steward authorization still applicable.--no-verifyon commit4ef8f5b(#154 regression test). Same hook trip, same reason. Steward authorization still applicable.
Pattern note: three --no-verify commits in one session on the same pre-existing TODO trip. This is the kind of repetition where authorization can drift from conscious to habitual. Either the TODOs should be resolved (scope: #145) or the hook's scan behavior should be narrowed (it currently scans full file content, not diff; it flags pre-existing TODOs in any file that's touched). Filing as open horizon.