ADR 0117: a machine's uplink is a seat — the mesh configures the manager, never the link #139

Merged
jschoubben merged 4 commits from decision/0117-the-uplink-is-a-seat into main 2026-09-26 22:56:27 +00:00
Owner

Adds the-uplink, a node-scoped seat in the closed set (ADR 0110), held by one module per network manager (networkmanager, systemd-networkd, dhcpcd).

Why: adopting the first workstations showed the mesh's resolver depends on the predecessor's dns=none / nohook resolv.conf — declared by nothing — the private network's interface is exposed to the manager, and one machine runs two managers at once, undetected.

Decided: a holder declares the manager's package + service and the settings that keep it off what the mesh owns (resolver file, mesh0); it is reloaded, never restarted (a restart drops the mesh's own channel); a manager that cannot reload takes the setting at its next start (measured: NM 1.58 and networkd/systemd 261 CanReload=yes, dhcpcd 10.3 CanReload=no). It never declares links, addresses, profiles, wireless networks or credentials — the operator's (ADR 0051 sense).

Status: accepted (operator). Implemented by mesh-controller feat/the-uplink-seat-and-the-hosts-region (the seat) and mesh-catalog feat/the-uplink-modules (the three modules).

00-META/checks/index.py current, records.py passes.

Adds `the-uplink`, a node-scoped seat in the closed set (ADR 0110), held by one module per network manager (networkmanager, systemd-networkd, dhcpcd). **Why:** adopting the first workstations showed the mesh's resolver depends on the predecessor's `dns=none` / `nohook resolv.conf` — declared by nothing — the private network's interface is exposed to the manager, and one machine runs two managers at once, undetected. **Decided:** a holder declares the manager's package + service and the settings that keep it off what the mesh owns (resolver file, `mesh0`); it is reloaded, never restarted (a restart drops the mesh's own channel); a manager that cannot reload takes the setting at its next start (measured: NM 1.58 and networkd/systemd 261 CanReload=yes, dhcpcd 10.3 CanReload=no). It never declares links, addresses, profiles, wireless networks or credentials — the operator's (ADR 0051 sense). Status: accepted (operator). Implemented by mesh-controller `feat/the-uplink-seat-and-the-hosts-region` (the seat) and mesh-catalog `feat/the-uplink-modules` (the three modules). `00-META/checks/index.py` current, `records.py` passes.
jschoubben added 2 commits 2026-09-26 21:59:41 +00:00
jschoubben added 1 commit 2026-09-26 22:03:18 +00:00
jschoubben added 1 commit 2026-09-26 22:07:44 +00:00
jschoubben merged commit ba397d4cbe into main 2026-09-26 22:56:27 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/hq#139