Merge pull request 'Issue 162 resolved: an archive can be undeclared (mesh-host#90)' (#355) from issues/162-resolved into main

This commit is contained in:
2026-10-04 10:25:44 +00:00
@@ -1,8 +1,9 @@
---
status: located
status: resolved
opened: 2026-09-30
located-in: [mesh-host internal/apply (no removal for an archive)]
fixed-by:
- mesh-host#90
amended-design:
---
@@ -54,3 +55,15 @@ argue for elsewhere: the mesh gives back what it found.
A module with an archive is assigned, pushed, unassigned and pushed again; what the archive put on the
machine is gone, anything that was in the directory beforehand is still there, and the apply that
removed it applied everything else in the same declaration.
## Resolved
*2026-10-04.* Hit again live the same day: a race between two pushes delivered a declaration without
a just-assigned module, and removing its tools bundle stopped a workstation's apply until the next push.
mesh-host#90 records what an archive unpacked: its files, the directories it made, whether the host
made the target and its parents. Undeclaring removes exactly those, never a file it did not place and
never a directory that was there before, and a failed removal is reported, never fatal.
An archive recorded before the change learns its list from its own bytes on the next apply while it is
still declared. One already orphaned is left in place, said and forgotten. Applying an archive no longer
deletes files the mesh did not place in its target directory (ADR 0030).