Retire the networking bundle and what the control plane stops shipping (hq ADR 0226) #77

Merged
mesh-admin merged 1 commits from feat/retire-the-networking-bundle into main 2026-10-06 13:12:53 +00:00
Contributor

hq ADR 0226 (novox/hq#128).

  • overlay: Domain/DomainManifest (networking) removed; the control plane ships mesh-wireguard alone. Machines are assigned it directly.
  • resolver hint: a refusal for two machines that share no private network now says assign mesh-wireguard (meshNetwork).
  • retirement: module forget refuses a provided module (the next start would bring it back), so a module the control plane stops shipping could be removed by nothing. prepare now calls Inventory.RetireUnshipped: removes every source = 'the control plane' module not shipped — kept and reported while any machine is assigned it or the mesh holds settings/secrets/ports for it. Registered modules are never touched.
  • guard: TestRouteProxyKeepsItsPublicAccountDirectory reads the sibling catalogue's route-proxy, composes it and holds acme.env byte for byte as public-acme's binding rendered it, plus the trust image digest — either changing moves the proxy's ACME account directory and reorders every certificate. TestTheRetiredNetworkingModulesAreNotInTheCatalogue: public-acme/dhcpcd/cloudflare-dns absent, nothing requires acme-ca/public-dns.
  • tests: provided_test rewritten for direct assignment (resolves alone, no bundle shipped, hint names mesh-wireguard, another VPN by assigning it, two VPNs collide); retire_test.go against live Postgres (retired / kept while assigned then retired / registered untouched); two_resolvers uplinks without dhcpcd.

gofmt, vet clean; go test -p 1 ./... with MESH_TEST_POSTGRES all ok, against the mesh-catalog branch as sibling.

Merge order: hq#128 → mesh-host → mesh-catalog → this (the new catalogue tests need the catalogue change). Before merging, networking must be unassigned everywhere with mesh-wireguard assigned first (step 1 of the rollout in novox/hq#128); if not, prepare keeps it and says where it is still assigned — nothing breaks.

hq ADR 0226 (novox/hq#128). - **overlay**: `Domain`/`DomainManifest` (`networking`) removed; the control plane ships `mesh-wireguard` alone. Machines are assigned it directly. - **resolver hint**: a refusal for two machines that share no private network now says `assign mesh-wireguard` (`meshNetwork`). - **retirement**: `module forget` refuses a provided module (the next start would bring it back), so a module the control plane stops shipping could be removed by nothing. `prepare` now calls `Inventory.RetireUnshipped`: removes every `source = 'the control plane'` module not shipped — **kept and reported** while any machine is assigned it or the mesh holds settings/secrets/ports for it. Registered modules are never touched. - **guard**: `TestRouteProxyKeepsItsPublicAccountDirectory` reads the sibling catalogue's route-proxy, composes it and holds `acme.env` byte for byte as public-acme's binding rendered it, plus the `trust` image digest — either changing moves the proxy's ACME account directory and reorders every certificate. `TestTheRetiredNetworkingModulesAreNotInTheCatalogue`: public-acme/dhcpcd/cloudflare-dns absent, nothing requires `acme-ca`/`public-dns`. - tests: provided_test rewritten for direct assignment (resolves alone, no bundle shipped, hint names mesh-wireguard, another VPN by assigning it, two VPNs collide); `retire_test.go` against live Postgres (retired / kept while assigned then retired / registered untouched); two_resolvers uplinks without dhcpcd. gofmt, vet clean; `go test -p 1 ./...` with `MESH_TEST_POSTGRES` all ok, against the mesh-catalog branch as sibling. **Merge order: hq#128 → mesh-host → mesh-catalog → this** (the new catalogue tests need the catalogue change). Before merging, `networking` must be unassigned everywhere with `mesh-wireguard` assigned first (step 1 of the rollout in novox/hq#128); if not, prepare keeps it and says where it is still assigned — nothing breaks.
jschoubben added 1 commit 2026-10-06 13:03:10 +00:00
networking required mesh-wireguard and nothing else; machines are assigned the network directly.
module forget refuses a provided module, so a retired one is removed at start once no machine has it.
Guard route-proxy's public account directory against a reissue.
jschoubben force-pushed feat/retire-the-networking-bundle from 64bc138692 to 18da8b37e9 2026-10-06 13:03:10 +00:00 Compare
mesh-admin merged commit b037c73fd5 into main 2026-10-06 13:12:53 +00:00
mesh-admin deleted branch feat/retire-the-networking-bundle 2026-10-06 13:12:53 +00:00
Author
Contributor

Delivery novox/mesh-controller@b037c73fd561 — 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 build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-controller
  • tier 1: build-agent
  • tier 2: route-proxy
  • ace: receives build-agent, route-proxy
  • g14: receives build-agent
  • novox: receives mesh-controller, build-agent, route-proxy
  • shanks: receives build-agent
  • build-agent keeps data (ADR 0233): what it holds is backed up before it moves
  • route-proxy provides route: its consumers are sent again after it
  • route-proxy keeps data (ADR 0233): what it holds is backed up before it moves

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#77 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-controller@b037c73fd561` — **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 build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - tier 2: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives mesh-controller, build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#77 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`.
This repo is archived. You cannot comment on pull requests.