1.7 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| dotbot-force-deletes-live-dirs | dotbot's link defaults are force+relink, so install DELETES a real file or directory at any link target — including the Claude memory dir, which is now a linked directory |
|
Every dotbot config in ~/.dotfiles restates link: {create: true, relink: true, force: true} (meta/base.conf.yaml and each meta/hosts/*.conf.yaml —
dotbot does not carry a defaults block between files). force: true means
install removes whatever real file or directory sits at a link target and
replaces it with the symlink, without asking.
As of 2026-10-03 that now includes a directory of live data:
~/.claude/projects/-home-connor/memory: common/claude/memory/-home-connor
Why this matters: before that link existed, the repo held 6 plain copies of
memory files whose MEMORY.md was missing all 14 entries written after
2026-08-31 — copies drift silently because Claude Code only ever reads the live
path. Linking fixes the drift, but it also means that on any machine where the
live memory dir holds files not yet in the repo, install will delete them.
How to apply: before running install on a machine whose Claude memory dir
is a real directory rather than a symlink, copy its *.md into
common/claude/memory/<sanitized-cwd>/ first and verify with cmp. The
sanitized name is the cwd with non-alphanumerics replaced by -, so it differs
per machine: -home-connor on mainframe, -home-connorjohnstone on sctfw004
(user connorjohnstone). That is why the memory link lives in
meta/hosts/mainframe.conf.yaml only.
Related: podman-compose-bind-mount-restart — the same shape of trap, where a tool reports success without doing the thing you wanted.