diff --git a/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md b/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md index 7b28013..3963b30 100644 --- a/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md +++ b/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md @@ -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).