resolv-conf lists every mesh resolver and no public one (hq ADR 0223) #73

Merged
mesh-admin merged 1 commits from feat/the-mesh-has-two-resolvers into main 2026-10-05 20:50:53 +00:00
Contributor

hq ADR 0223.

  • resolv-conf: /etc/resolv.conf is now a roster fact rendered from index .Holders "mesh-dns-resolver" (this machine first when it holds the seat, then by name), no 1.1.1.1 line, options timeout:1 attempts:2 edns0. Still requires wildcard-resolution (refusal when no resolver exists, delivery order).
  • dnsmasq: comments and the dns-udp listen's why say the seat may have several holders. This rewrites /etc/dnsmasq.conf once, so dnsmasq restarts once on each holder.

module check ok for both. Merge after mesh-controller feat/the-mesh-has-two-resolvers is rolled out: an older controller cannot render .Holders and would refuse resolv-conf on every machine. The resource id changes (resolv -> fact-resolvers); the host removes before it writes, so the file is replaced in the same apply.

hq ADR 0223. - `resolv-conf`: `/etc/resolv.conf` is now a roster fact rendered from `index .Holders "mesh-dns-resolver"` (this machine first when it holds the seat, then by name), no `1.1.1.1` line, `options timeout:1 attempts:2 edns0`. Still requires `wildcard-resolution` (refusal when no resolver exists, delivery order). - `dnsmasq`: comments and the dns-udp listen's why say the seat may have several holders. This rewrites `/etc/dnsmasq.conf` once, so dnsmasq restarts once on each holder. `module check` ok for both. **Merge after** mesh-controller `feat/the-mesh-has-two-resolvers` is rolled out: an older controller cannot render `.Holders` and would refuse resolv-conf on every machine. The resource id changes (`resolv` -> `fact-resolvers`); the host removes before it writes, so the file is replaced in the same apply.
jschoubben added 1 commit 2026-10-05 20:45:06 +00:00
musl asks every nameserver at once and takes the first reply, so a public
resolver's NXDOMAIN for a mesh name beat the mesh's answer in every Alpine
container (hq ADR 0223). resolv-conf now renders /etc/resolv.conf from the
holders of mesh-dns-resolver, this machine first when it holds one; dnsmasq's
comments say the seat may have several holders.
jschoubben force-pushed feat/the-mesh-has-two-resolvers from b14bea0ce7 to 737f42deb4 2026-10-05 20:45:06 +00:00 Compare
mesh-admin merged commit b4b86c1452 into main 2026-10-05 20:50:53 +00:00
mesh-admin deleted branch feat/the-mesh-has-two-resolvers 2026-10-05 20:50:53 +00:00
Author
Contributor

Delivery novox/mesh-catalog@b4b86c1452d5 — 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 dnsmasq, new: modules/resolv-conf, sent nowhere; no bus step; 2 wait(s) for a person

  • tier 0: dnsmasq
  • ace: waits for a person: dnsmasq
  • novox: waits for a person: dnsmasq
  • dnsmasq waits for a person: its policy records (module)
  • dnsmasq provides wildcard-resolution: its consumers are sent again after it

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#73 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/mesh-catalog@b4b86c1452d5` — **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 dnsmasq, new: modules/resolv-conf, sent nowhere; no bus step; 2 wait(s) for a person - tier 0: dnsmasq - ace: waits for a person: dnsmasq - novox: waits for a person: dnsmasq - dnsmasq waits for a person: its policy records (module) - dnsmasq provides wildcard-resolution: its consumers are sent again after it **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#73 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/mesh-catalog#73