A machine joins through the tunnel: a token issued for its tunnel key (hq ADR 0169) #132

Merged
mesh-admin merged 3 commits from feat/a-machine-joins-through-the-tunnel into main 2026-10-08 08:22:44 +00:00
Contributor

Builds novox/hq ADR 0169 on the controller's side. Merge first of the group feat/a-machine-joins-through-the-tunnel (mesh-controller → mesh-host → mesh-lab).

  • token issue --overlay-key <key>: records the machine's tunnel key, binds the token to it, assigns its address and pushes the hub with the machine as a peer before the token is shown. The token carries the hub's endpoint and key, the machine's address and the range, and the bus at its holder's address on the private network (the hub's when no holder is recorded). Enrolment refuses any other key.
  • The hub carries a joining machine while its token is live; an expired, unused token's peer goes at the hub's next composition.
  • A token verb on the controller's seat, with replaces: ["mesh-controller token issue", "wg set"] (ADR 0245); adopted is a switch; the manifest serves it.
  • The verb's answer is never kept in the calls kept on the bus (calls answers anyone who may call the seat): withheld on the bus always, held in memory only when the caller was told the call was still running.
  • Migration renumbered 0055 → 0079 (0078 is the ADR 0217 work).

Rebase onto main: one conflict, the imports of cmd/mesh-controller/nodes.go. The second commit of the old branch (a node is given how it hears its declarations as it enrols, hq issue 146) is dropped: main asserts every node's declaration consumer before every send (issue 208, assertOnSend), and D6/H3 re-assert a missing one, so it would be a second list of what the bus should hold. hq PR records why.

A token without a key stays: it is how the machine that runs the bus joins its own mesh at genesis. The ADR's row a token is refused without a tunnel key is therefore not built as written; every other machine can only join with a key, since the bus is no longer public.

Tests: sh merge-check.sh with MESH_TEST_POSTGRES, under -race: pass. New: the hub's peers with a live/expired/keyless token, a non-key refused before anything is recorded, the token's tunnel round trip, enrolment refusing another key, the token answer not kept.

Lab: mesh-lab's new joins-through-the-tunnel bed, run on this branch's image: a first node raised from the NATS bundle joins on loopback and becomes the hub; a second machine makes its key, is issued a token, and enrols over the tunnel with the bus's port (5671) closed to its own address. Both tests pass. The test of the hub being pushed before the token is shown is in code order only (it needs a bus to test).

Builds novox/hq ADR 0169 on the controller's side. **Merge first** of the group `feat/a-machine-joins-through-the-tunnel` (mesh-controller → mesh-host → mesh-lab). - `token issue --overlay-key <key>`: records the machine's tunnel key, binds the token to it, assigns its address and pushes the hub with the machine as a peer **before** the token is shown. The token carries the hub's endpoint and key, the machine's address and the range, and the bus at its holder's address on the private network (the hub's when no holder is recorded). Enrolment refuses any other key. - The hub carries a joining machine while its token is live; an expired, unused token's peer goes at the hub's next composition. - A `token` verb on the controller's seat, with `replaces: ["mesh-controller token issue", "wg set"]` (ADR 0245); `adopted` is a switch; the manifest serves it. - The verb's answer is **never kept** in the calls kept on the bus (`calls` answers anyone who may call the seat): withheld on the bus always, held in memory only when the caller was told the call was still running. - Migration renumbered **0055 → 0079** (0078 is the ADR 0217 work). **Rebase onto main:** one conflict, the imports of `cmd/mesh-controller/nodes.go`. The second commit of the old branch (*a node is given how it hears its declarations as it enrols*, hq issue 146) is **dropped**: main asserts every node's declaration consumer before every send (issue 208, `assertOnSend`), and D6/H3 re-assert a missing one, so it would be a second list of what the bus should hold. hq PR records why. A token without a key stays: it is how the machine that runs the bus joins its own mesh at genesis. The ADR's row *a token is refused without a tunnel key* is therefore not built as written; every other machine can only join with a key, since the bus is no longer public. **Tests:** `sh merge-check.sh` with `MESH_TEST_POSTGRES`, under `-race`: pass. New: the hub's peers with a live/expired/keyless token, a non-key refused before anything is recorded, the token's tunnel round trip, enrolment refusing another key, the token answer not kept. **Lab:** mesh-lab's new `joins-through-the-tunnel` bed, run on this branch's image: a first node raised from the NATS bundle joins on loopback and becomes the hub; a second machine makes its key, is issued a token, and enrols over the tunnel with the bus's port (5671) closed to its own address. Both tests pass. The test of the hub being pushed *before* the token is shown is in code order only (it needs a bus to test).
Author
Contributor

Delivery novox/mesh-controller@8bbfdb53db2b — delivered since 2026-10-08T08:41:12Z

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

Group feat/a-machine-joins-through-the-tunnel, in order: novox/mesh-lab@e80a4b1642

Machines

  • mesh-controller on novox: passed — healthy 3 times over 4m13s
  • mesh-controller on the rest running it: sent
  • build-agent on ace: passed — healthy 3 times over 3m34s
  • build-agent on the rest running it: sent
  • route-proxy on ace: passed — healthy 3 times over 3m30s
  • route-proxy on the rest running it: sent

Transitions

  • 2026-10-08 00:06 (new) → proposed (announced): novox/mesh-controller#132's head announced
  • 2026-10-08 00:30 proposed → checked (checked): the verdict names this commit
  • 2026-10-08 00:30 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-08 08:23 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-08 08:23 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
  • 2026-10-08 08:41 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says

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

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-controller@8bbfdb53db2b` — **delivered** since 2026-10-08T08:41:12Z **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 **Group** `feat/a-machine-joins-through-the-tunnel`, in order: novox/mesh-lab@e80a4b1642bf - novox/mesh-controller@8bbfdb53db2b before novox/mesh-host@86cbebd10f8a: built by - novox/mesh-host@86cbebd10f8a before novox/mesh-controller@8bbfdb53db2b: engine before controller **Machines** - mesh-controller on novox: passed — healthy 3 times over 4m13s - mesh-controller on the rest running it: sent - build-agent on ace: passed — healthy 3 times over 3m34s - build-agent on the rest running it: sent - route-proxy on ace: passed — healthy 3 times over 3m30s - route-proxy on the rest running it: sent **Transitions** - 2026-10-08 00:06 (new) → proposed (announced): novox/mesh-controller#132's head announced - 2026-10-08 00:30 proposed → checked (checked): the verdict names this commit - 2026-10-08 00:30 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-08 08:23 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-08 08:23 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path - 2026-10-08 08:41 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Contributor

Merge check at 2d6c2345

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

Run by the build seat on ace as build-1791417424489091535 (builds --log build-1791417424489091535).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 47 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T23:44:12Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-07T23:44:12Z

modules the change moves:
  - mesh-controller (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.030s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	418.689s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.013s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.018s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.013s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.109s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.029s
ok  	github.com/novox/mesh-controller/internal/broker	2.409s
ok  	github.com/novox/mesh-controller/internal/builder	1.341s
ok  	github.com/novox/mesh-controller/internal/catalogue	3.759s
ok  	github.com/novox/mesh-controller/internal/conditions	2.004s
ok  	github.com/novox/mesh-controller/internal/envfile	1.058s
ok  	github.com/novox/mesh-controller/internal/facts	1.055s
ok  	github.com/novox/mesh-controller/internal/identity	42.274s
ok  	github.com/novox/mesh-controller/internal/inventory	245.849s
ok  	github.com/novox/mesh-controller/internal/lease	17.723s
ok  	github.com/novox/mesh-controller/internal/licences	38.665s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.051s
ok  	github.com/novox/mesh-controller/internal/link	77.626s
ok  	github.com/novox/mesh-controller/internal/lint	1.801s
ok  	github.com/novox/mesh-controller/internal/outward	1.107s
ok  	github.com/novox/mesh-controller/internal/overlay	1.095s
ok  	github.com/novox/mesh-controller/internal/secrets	1.403s
ok  	github.com/novox/mesh-controller/internal/store	10.282s
ok  	github.com/novox/mesh-controller/internal/testbus	1.214s
ok  	github.com/novox/mesh-controller/internal/token	1.015s
**Merge check** at `2d6c2345` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **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 Run by the build seat on ace as `build-1791417424489091535` (`builds --log build-1791417424489091535`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 47 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T23:44:12Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-07T23:44:12Z modules the change moves: - mesh-controller (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.030s ok github.com/novox/mesh-controller/cmd/mesh-controller 418.689s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.013s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.018s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s ok github.com/novox/mesh-controller/examples/route-proxy 1.109s ok github.com/novox/mesh-controller/internal/artifacts 1.029s ok github.com/novox/mesh-controller/internal/broker 2.409s ok github.com/novox/mesh-controller/internal/builder 1.341s ok github.com/novox/mesh-controller/internal/catalogue 3.759s ok github.com/novox/mesh-controller/internal/conditions 2.004s ok github.com/novox/mesh-controller/internal/envfile 1.058s ok github.com/novox/mesh-controller/internal/facts 1.055s ok github.com/novox/mesh-controller/internal/identity 42.274s ok github.com/novox/mesh-controller/internal/inventory 245.849s ok github.com/novox/mesh-controller/internal/lease 17.723s ok github.com/novox/mesh-controller/internal/licences 38.665s ok github.com/novox/mesh-controller/internal/licences/adapters 1.051s ok github.com/novox/mesh-controller/internal/link 77.626s ok github.com/novox/mesh-controller/internal/lint 1.801s ok github.com/novox/mesh-controller/internal/outward 1.107s ok github.com/novox/mesh-controller/internal/overlay 1.095s ok github.com/novox/mesh-controller/internal/secrets 1.403s ok github.com/novox/mesh-controller/internal/store 10.282s ok github.com/novox/mesh-controller/internal/testbus 1.214s ok github.com/novox/mesh-controller/internal/token 1.015s ```
jschoubben added 3 commits 2026-10-08 00:06:34 +00:00
token issue --overlay-key records the key the machine made, binds the
token to it, gives the machine its address and makes it a peer of the
hub, pushing the hub before the token is shown. The token carries the
hub's tunnel and the bus at its holder's address on the private network,
and enrolment refuses any other key (novox/hq ADR 0169). The bus is no
longer public, so a machine outside the mesh can join only this way; a
token without a key is still what the machine running the bus joins its
own mesh with. Also a token verb, which says it replaces running the
command by hand and adding a peer to the hub with wg.
The calls the controller serves are kept on the bus with their answers,
and calls answers anyone who may call its seat. A token is the one-time
right to become a machine of the mesh, so the token verb's answer is kept
as withheld (novox/hq ADR 0169).
Hold that a joining machine is a peer of the hub only while its token lives
mesh/delivery delivered
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery-group group feat/a-machine-joins-through-the-tunnel merged: every member is merged
8bbfdb53db
The rows of novox/hq ADR 0169's table the controller answers for: the
hub's composed tunnel carries a machine whose live token was issued for
its key, drops it when the token expires unused, and nothing is recorded
for something that is not a tunnel key.
jschoubben force-pushed feat/a-machine-joins-through-the-tunnel from 2d6c2345b8 to 8bbfdb53db 2026-10-08 00:06:34 +00:00 Compare
Author
Contributor

Merge check at 8bbfdb53

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

Run by the build seat on ace as build-1791418900689973185 (builds --log build-1791418900689973185).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 47 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T00:17:39Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T00:17:39Z

modules the change moves:
  - mesh-controller (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.034s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	428.143s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.012s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.016s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.014s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.107s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.026s
ok  	github.com/novox/mesh-controller/internal/broker	2.392s
ok  	github.com/novox/mesh-controller/internal/builder	1.372s
ok  	github.com/novox/mesh-controller/internal/catalogue	3.771s
ok  	github.com/novox/mesh-controller/internal/conditions	2.052s
ok  	github.com/novox/mesh-controller/internal/envfile	1.079s
ok  	github.com/novox/mesh-controller/internal/facts	1.081s
ok  	github.com/novox/mesh-controller/internal/identity	39.675s
ok  	github.com/novox/mesh-controller/internal/inventory	252.937s
ok  	github.com/novox/mesh-controller/internal/lease	17.739s
ok  	github.com/novox/mesh-controller/internal/licences	38.544s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.076s
ok  	github.com/novox/mesh-controller/internal/link	75.221s
ok  	github.com/novox/mesh-controller/internal/lint	1.838s
ok  	github.com/novox/mesh-controller/internal/outward	1.145s
ok  	github.com/novox/mesh-controller/internal/overlay	1.091s
ok  	github.com/novox/mesh-controller/internal/secrets	1.482s
ok  	github.com/novox/mesh-controller/internal/store	9.953s
ok  	github.com/novox/mesh-controller/internal/testbus	1.163s
ok  	github.com/novox/mesh-controller/internal/token	1.016s
**Merge check** at `8bbfdb53` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **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 Run by the build seat on ace as `build-1791418900689973185` (`builds --log build-1791418900689973185`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 47 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T00:17:39Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-08T00:17:39Z modules the change moves: - mesh-controller (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.034s ok github.com/novox/mesh-controller/cmd/mesh-controller 428.143s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.014s ok github.com/novox/mesh-controller/examples/route-proxy 1.107s ok github.com/novox/mesh-controller/internal/artifacts 1.026s ok github.com/novox/mesh-controller/internal/broker 2.392s ok github.com/novox/mesh-controller/internal/builder 1.372s ok github.com/novox/mesh-controller/internal/catalogue 3.771s ok github.com/novox/mesh-controller/internal/conditions 2.052s ok github.com/novox/mesh-controller/internal/envfile 1.079s ok github.com/novox/mesh-controller/internal/facts 1.081s ok github.com/novox/mesh-controller/internal/identity 39.675s ok github.com/novox/mesh-controller/internal/inventory 252.937s ok github.com/novox/mesh-controller/internal/lease 17.739s ok github.com/novox/mesh-controller/internal/licences 38.544s ok github.com/novox/mesh-controller/internal/licences/adapters 1.076s ok github.com/novox/mesh-controller/internal/link 75.221s ok github.com/novox/mesh-controller/internal/lint 1.838s ok github.com/novox/mesh-controller/internal/outward 1.145s ok github.com/novox/mesh-controller/internal/overlay 1.091s ok github.com/novox/mesh-controller/internal/secrets 1.482s ok github.com/novox/mesh-controller/internal/store 9.953s ok github.com/novox/mesh-controller/internal/testbus 1.163s ok github.com/novox/mesh-controller/internal/token 1.016s ```
Author
Contributor

Merge check at 8bbfdb53

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
  • mesh/repo-check: PASS — its merge-check.sh passed

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

Run by the build seat on g14 as build-1791418000320743455 (builds --log build-1791418000320743455).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 47 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T00:39:30Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T00:39:30Z

modules the change moves:
  - mesh-controller (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.031s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	200.517s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.012s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.017s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.015s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.150s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.035s
ok  	github.com/novox/mesh-controller/internal/broker	2.315s
ok  	github.com/novox/mesh-controller/internal/builder	1.235s
ok  	github.com/novox/mesh-controller/internal/catalogue	3.657s
ok  	github.com/novox/mesh-controller/internal/conditions	1.948s
ok  	github.com/novox/mesh-controller/internal/envfile	1.024s
ok  	github.com/novox/mesh-controller/internal/facts	1.026s
ok  	github.com/novox/mesh-controller/internal/identity	6.300s
ok  	github.com/novox/mesh-controller/internal/inventory	96.836s
ok  	github.com/novox/mesh-controller/internal/lease	17.693s
ok  	github.com/novox/mesh-controller/internal/licences	5.439s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.011s
ok  	github.com/novox/mesh-controller/internal/link	52.674s
ok  	github.com/novox/mesh-controller/internal/lint	1.723s
ok  	github.com/novox/mesh-controller/internal/outward	1.030s
ok  	github.com/novox/mesh-controller/internal/overlay	1.021s
ok  	github.com/novox/mesh-controller/internal/secrets	1.366s
ok  	github.com/novox/mesh-controller/internal/store	3.695s
ok  	github.com/novox/mesh-controller/internal/testbus	1.163s
ok  	github.com/novox/mesh-controller/internal/token	1.014s
**Merge check** at `8bbfdb53` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **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 Run by the build seat on g14 as `build-1791418000320743455` (`builds --log build-1791418000320743455`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 47 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T00:39:30Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-08T00:39:30Z modules the change moves: - mesh-controller (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.031s ok github.com/novox/mesh-controller/cmd/mesh-controller 200.517s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.017s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.015s ok github.com/novox/mesh-controller/examples/route-proxy 1.150s ok github.com/novox/mesh-controller/internal/artifacts 1.035s ok github.com/novox/mesh-controller/internal/broker 2.315s ok github.com/novox/mesh-controller/internal/builder 1.235s ok github.com/novox/mesh-controller/internal/catalogue 3.657s ok github.com/novox/mesh-controller/internal/conditions 1.948s ok github.com/novox/mesh-controller/internal/envfile 1.024s ok github.com/novox/mesh-controller/internal/facts 1.026s ok github.com/novox/mesh-controller/internal/identity 6.300s ok github.com/novox/mesh-controller/internal/inventory 96.836s ok github.com/novox/mesh-controller/internal/lease 17.693s ok github.com/novox/mesh-controller/internal/licences 5.439s ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s ok github.com/novox/mesh-controller/internal/link 52.674s ok github.com/novox/mesh-controller/internal/lint 1.723s ok github.com/novox/mesh-controller/internal/outward 1.030s ok github.com/novox/mesh-controller/internal/overlay 1.021s ok github.com/novox/mesh-controller/internal/secrets 1.366s ok github.com/novox/mesh-controller/internal/store 3.695s ok github.com/novox/mesh-controller/internal/testbus 1.163s ok github.com/novox/mesh-controller/internal/token 1.014s ```
mesh-admin merged commit df653e9af0 into main 2026-10-08 08:22:44 +00:00
mesh-admin deleted branch feat/a-machine-joins-through-the-tunnel 2026-10-08 08:22:45 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#132