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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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 asfact-node-nameschanging 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 checkfully green.After roll-out:
plan acetwice —mesh-wireguard.fact-node-namesidentical both times,grafana.<domain>at the home server's address, and the many-routed modules' names present.