ADR 0118: undeclaring removes what the mesh made, gives back what it changed, leaves the machine's units as they are — resolves issue 130

This commit is contained in:
jochen
2026-09-27 00:16:01 +02:00
parent 13dd58ee70
commit c13ace2965
3 changed files with 113 additions and 1 deletions
@@ -1,7 +1,8 @@
---
status: located
opened: 2026-09-27
located-in: [mesh-host internal/apply/apply.go (remove), mesh-controller internal/overlay, mesh-catalog modules/sshd]
located-in: [mesh-host internal/apply/apply.go (remove)]
amended-design: 02-DECISIONS/0118-undeclaring-leaves-the-machines-units-running.md
---
# 130 — undeclaring a service stops it, even one the mesh only reloads or only keeps running
@@ -41,3 +42,13 @@ reaches it by.
module's service too — a machine's ssh daemon outlives any module that configures it.
- A plan or unassign preview that names every unit an undeclare will stop, so the consequence
is read before it happens.
## Resolution
[ADR 0118](../../02-DECISIONS/0118-undeclaring-leaves-the-machines-units-running.md): undeclaring
removes what the mesh made, gives back what it changed, and leaves the machine's units as they
are. An undeclared `service` is forgotten, never stopped — the host did not create the unit.
That covers the runtime, sshd and the uplink modules at once, without each module opting out;
the private network and the sshd module need no change. A `process`'s unit, which the host does
write, is still stopped and removed. The unassign preview asked for above is left open for the
controller.