ADR 0223: the mesh has two resolvers, and a machine lists only them #115

Merged
mesh-admin merged 1 commits from decision/0223-the-mesh-has-two-resolvers into main 2026-10-05 20:48:10 +00:00
Contributor

Decision of 2026-10-05.

Now: mesh-dns-resolver becomes a replicated mesh seat (the glossary's first bench), held on the anchor and the home server, each holder on record and added by seat <name> --add. Every machine's /etc/resolv.conf lists every holder's private address, its own first on a holder, and no public resolver. Evidence: musl asks all nameservers at once and takes the first reply, so ADR 0196's public fallback answered NXDOMAIN for the anchor's mesh name from the home server's Alpine build agent, 6/6, and every build there failed.

Next, decided, not built: resolv.conf becomes the node-uplink holder's file and resolv-conf / node-resolver-config retire (with ADR 0220's dependency); /etc/hosts and /etc/hostname become one seat's, node-hostname, held by the hosts module renamed hostname.

Also: supersedes 0196 in part (dated note on 0196); pointer notes on 0194, 0199, 0220; to-be 08 and 26 amended; glossary bench; issue 262 names the host-record test now added.

Implemented by novox/mesh-controller (feat/the-mesh-has-two-resolvers) and novox/mesh-catalog (feat/the-mesh-has-two-resolvers). Checks: records.py, index.py, cycle.py pass.

Decision of 2026-10-05. **Now:** `mesh-dns-resolver` becomes a replicated mesh seat (the glossary's first bench), held on the anchor and the home server, each holder on record and added by `seat <name> --add`. Every machine's `/etc/resolv.conf` lists every holder's private address, its own first on a holder, and no public resolver. Evidence: musl asks all nameservers at once and takes the first reply, so ADR 0196's public fallback answered NXDOMAIN for the anchor's mesh name from the home server's Alpine build agent, 6/6, and every build there failed. **Next, decided, not built:** resolv.conf becomes the `node-uplink` holder's file and `resolv-conf` / `node-resolver-config` retire (with ADR 0220's dependency); `/etc/hosts` and `/etc/hostname` become one seat's, `node-hostname`, held by the `hosts` module renamed `hostname`. Also: supersedes 0196 in part (dated note on 0196); pointer notes on 0194, 0199, 0220; to-be 08 and 26 amended; glossary `bench`; issue 262 names the host-record test now added. Implemented by novox/mesh-controller (feat/the-mesh-has-two-resolvers) and novox/mesh-catalog (feat/the-mesh-has-two-resolvers). Checks: records.py, index.py, cycle.py pass.
jschoubben added 1 commit 2026-10-05 20:43:20 +00:00
musl asks every listed nameserver at once and takes the first reply, so ADR
0196's public fallback answered NXDOMAIN for mesh names in every Alpine build
on the home server. Decide two mesh resolvers and no public line now; record
resolv.conf moving to the uplink's holder and /etc/hosts with /etc/hostname
moving to one hostname seat as the next steps. Amend to-be 08 and 26.
jschoubben force-pushed decision/0223-the-mesh-has-two-resolvers from 7ed15f0216 to 4f1300fd48 2026-10-05 20:43:20 +00:00 Compare
mesh-admin merged commit 178994ee0d into main 2026-10-05 20:48:10 +00:00
mesh-admin deleted branch decision/0223-the-mesh-has-two-resolvers 2026-10-05 20:48:10 +00:00
Author
Contributor

Delivery novox/hq@178994ee0dae — held since 2026-10-06T23:05:28Z

Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.

Delivery plan — builds nothing: the change touches no module of the mesh's graph

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/hq#115 merged; its head was not heard by this owner, so it is made from the forge's word
  • 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/hq@178994ee0dae` — **held** since 2026-10-06T23:05:28Z Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on. **Delivery plan** — builds nothing: the change touches no module of the mesh's graph **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/hq#115 merged; its head was not heard by this owner, so it is made from the forge's word - 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/hq#115