claude-code: undo a home removal through the mesh
mesh/merge-gate pass: builds claude-code → ace, g14, novox, shanks; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered

A removal kept its copy but nothing could put it back without a shell on
the machine. claude_code_home_restore puts a kept copy back when nothing is
at its path and the copy matches the digests recorded at removal;
claude_code_home_removed lists what is kept.
This commit is contained in:
jochen
2026-10-07 19:44:07 +02:00
parent 03728728c3
commit a0deb90741
5 changed files with 304 additions and 23 deletions
+5 -1
View File
@@ -78,7 +78,11 @@ operator account's own `~/.claude` on those nodes):
removing it is the person's act, and this tool is that act made explicit. `why` is required; what the
mesh placed is refused (its `_unregister` owns it), and so is a symbolic link. A copy is kept first in
the module's state, `removed-from-home/<date>/<time>-<kind>-<name>/`, with a `removal.json` note, and
the removal and its reason are appended to `removed-from-home/removed.log`; the answer names the copy.
the removal and its reason are appended to `removed-from-home/removed.log`; the answer names the copy;
- `claude_code_home_removed`: every kept removal, newest first, with its `keptAt` and whether it was put back;
- `claude_code_home_restore` (`kept`): puts a removal's copy back at its path — refused when something is
there now, or when the copy is not, file by file, what its `removal.json` digests say was removed.
Logged to `removed.log` and the journal; the copy stays, marked with a `restored.json`.
A new session takes a change; a running one at `/reload-plugins`.