A routed name resolves to the node whose proxy serves it, never to a provider merely told it (hq 178, forge 227) #181

Merged
mesh-admin merged 1 commits from fix/227-a-name-resolves-to-the-node-that-serves-it into main 2026-10-01 00:04:14 +00:00
Contributor

Forge issue 227 / novox/hq issue 178. The names region attributed a composed name to whichever labelled contribution a map yielded last: a dashboard contributes its label to its route and to the identity provider (which needs the public name for a redirect), so grafana.<domain> pointed at the proxy's machine on one plan and at the identity provider's on the next, and the whole region flipped with it. Seen tonight as fact-node-names changing between two plans of the same machine. And a module routed several times contributed no name at all (the single-value reading is empty for the many shape).

Now every node's resolution is read first and names are attributed across them at once in catalogue.NamesServed: the terminus serves the name — the provider that is not itself published under a labelled name through another — walked in sorted order. Name-agnostic (nothing knows what "route" means), structural, deterministic.

Tests: the two-node mesh of issue 227, 25 runs, the dashboard's name on the home server and the identity provider's own on the control node, and no name leaked to the identity provider; a module with two routes yields two names. make check fully green.

After roll-out: plan ace twice — mesh-wireguard.fact-node-names identical both times, grafana.<domain> at the home server's address, and the many-routed modules' names present.

Forge issue 227 / novox/hq issue 178. The names region attributed a composed name to whichever labelled contribution a map yielded last: a dashboard contributes its label to its route and to the identity provider (which needs the public name for a redirect), so `grafana.<domain>` pointed at the proxy's machine on one plan and at the identity provider's on the next, and the whole region flipped with it. Seen tonight as `fact-node-names` changing between two plans of the same machine. And a module routed several times contributed no name at all (the single-value reading is empty for the many shape). Now every node's resolution is read first and names are attributed across them at once in `catalogue.NamesServed`: **the terminus serves the name** — the provider that is not itself published under a labelled name through another — walked in sorted order. Name-agnostic (nothing knows what "route" means), structural, deterministic. Tests: the two-node mesh of issue 227, 25 runs, the dashboard's name on the home server and the identity provider's own on the control node, and no name leaked to the identity provider; a module with two routes yields two names. `make check` fully green. After roll-out: `plan ace` twice — `mesh-wireguard.fact-node-names` identical both times, `grafana.<domain>` at the home server's address, and the many-routed modules' names present.
mesh-admin added 1 commit 2026-10-01 00:04:04 +00:00
The names region attributed a composed name to whichever labelled contribution a map yielded last.
A dashboard contributes its label to its route and to the identity provider, which must know the
public name for a redirect; so on one plan grafana.<domain> pointed at the proxy's machine and on
the next at the identity provider's, and the whole region flipped with it (forge issue 227). And a
module routed several times contributed no name at all, because the single-value reading of its
contributions is empty for the many shape.

Now every node's resolution is read first and the names are attributed across them at once: the
terminus serves the name — the provider that is not itself published under a labelled name through
another — walked in order, so one mesh yields one region. Name-agnostic, structural, deterministic.
mesh-admin merged commit 7273ca2f0f into main 2026-10-01 00:04:14 +00:00
mesh-admin deleted branch fix/227-a-name-resolves-to-the-node-that-serves-it 2026-10-01 00:04:14 +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/mesh-controller#181