Tool for investigating a machine's names without a terminal on it (operator rule: build the tool, no work-arounds). node-uplink now promises resolvers (resolver file now, mesh's or not, writer as far as the machine shows) and links (each link, default route, the resolvers its manager knows).
New: Seat.Staged — verbs promised and routed (membership issues them) but not yet a condition of holding, and never stored in the seat row (an older controller reads the row strictly and would refuse every holder). So: this rolls out first; mesh-catalog#(uplink verbs) serves them next; a later change requires them.
Tests: catalogue (promised, none required, typo refused, UseSeats appends staged), inventory (staged never seeded, also on widen). check-here: merge-gate PASS (4 of 4), repo-check PASS. Independent of mesh-controller#113.
Tool for investigating a machine's names without a terminal on it (operator rule: build the tool, no work-arounds). node-uplink now promises `resolvers` (resolver file now, mesh's or not, writer as far as the machine shows) and `links` (each link, default route, the resolvers its manager knows).
New: Seat.Staged — verbs promised and routed (membership issues them) but not yet a condition of holding, and never stored in the seat row (an older controller reads the row strictly and would refuse every holder). So: this rolls out first; mesh-catalog#(uplink verbs) serves them next; a later change requires them.
Tests: catalogue (promised, none required, typo refused, UseSeats appends staged), inventory (staged never seeded, also on widen). check-here: merge-gate PASS (4 of 4), repo-check PASS. Independent of mesh-controller#113.
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-controller on novox: passed — healthy 3 times over 3m39s
mesh-controller on the rest running it: sent
build-agent on ace: passed — healthy 3 times over 3m20s
build-agent on the rest running it: sent
route-proxy on ace: passed — healthy 3 times over 3m33s
route-proxy on the rest running it: sent
Transitions
2026-10-07 18:52 (new) → proposed (announced): novox/mesh-controller#116's head announced
2026-10-07 19:16 proposed → checked (checked): the verdict names this commit
2026-10-07 19:16 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-07 19:17 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-07 19:17 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-07 19:34 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@bf11a8baacda` — **delivered** since 2026-10-07T19:34:56Z
**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/node-uplink-verbs`, in order: novox/mesh-controller@bf11a8baacda → novox/mesh-catalog@c619a672a364
- novox/mesh-controller@bf11a8baacda before novox/mesh-catalog@c619a672a364: built by
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-controller on novox: passed — healthy 3 times over 3m39s
- mesh-controller on the rest running it: sent
- build-agent on ace: passed — healthy 3 times over 3m20s
- build-agent on the rest running it: sent
- route-proxy on ace: passed — healthy 3 times over 3m33s
- route-proxy on the rest running it: sent
**Transitions**
- 2026-10-07 18:52 (new) → proposed (announced): novox/mesh-controller#116's head announced
- 2026-10-07 19:16 proposed → checked (checked): the verdict names this commit
- 2026-10-07 19:16 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-07 19:17 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-07 19:17 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-07 19:34 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`.
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-1791395161740408318 (builds --log build-1791395161740408318).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T17:23: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-07T17:23:39Z
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-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 401.714s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.011s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.056s
ok github.com/novox/mesh-controller/examples/route-proxy 1.111s
ok github.com/novox/mesh-controller/internal/artifacts 1.027s
ok github.com/novox/mesh-controller/internal/broker 2.443s
ok github.com/novox/mesh-controller/internal/builder 1.329s
ok github.com/novox/mesh-controller/internal/catalogue 3.689s
ok github.com/novox/mesh-controller/internal/conditions 2.028s
ok github.com/novox/mesh-controller/internal/envfile 1.060s
ok github.com/novox/mesh-controller/internal/facts 1.064s
ok github.com/novox/mesh-controller/internal/identity 43.878s
ok github.com/novox/mesh-controller/internal/inventory 249.799s
ok github.com/novox/mesh-controller/internal/lease 17.713s
ok github.com/novox/mesh-controller/internal/licences 39.701s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.056s
ok github.com/novox/mesh-controller/internal/link 76.641s
ok github.com/novox/mesh-controller/internal/lint 1.817s
ok github.com/novox/mesh-controller/internal/outward 1.111s
ok github.com/novox/mesh-controller/internal/overlay 1.072s
ok github.com/novox/mesh-controller/internal/secrets 1.441s
ok github.com/novox/mesh-controller/internal/store 10.036s
ok github.com/novox/mesh-controller/internal/testbus 1.241s
ok github.com/novox/mesh-controller/internal/token 1.016s
**Merge check** at `82fe44b3`
- `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
**Change 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-1791395161740408318` (`builds --log build-1791395161740408318`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T17:23: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-07T17:23:39Z
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-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 401.714s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.011s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.056s
ok github.com/novox/mesh-controller/examples/route-proxy 1.111s
ok github.com/novox/mesh-controller/internal/artifacts 1.027s
ok github.com/novox/mesh-controller/internal/broker 2.443s
ok github.com/novox/mesh-controller/internal/builder 1.329s
ok github.com/novox/mesh-controller/internal/catalogue 3.689s
ok github.com/novox/mesh-controller/internal/conditions 2.028s
ok github.com/novox/mesh-controller/internal/envfile 1.060s
ok github.com/novox/mesh-controller/internal/facts 1.064s
ok github.com/novox/mesh-controller/internal/identity 43.878s
ok github.com/novox/mesh-controller/internal/inventory 249.799s
ok github.com/novox/mesh-controller/internal/lease 17.713s
ok github.com/novox/mesh-controller/internal/licences 39.701s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.056s
ok github.com/novox/mesh-controller/internal/link 76.641s
ok github.com/novox/mesh-controller/internal/lint 1.817s
ok github.com/novox/mesh-controller/internal/outward 1.111s
ok github.com/novox/mesh-controller/internal/overlay 1.072s
ok github.com/novox/mesh-controller/internal/secrets 1.441s
ok github.com/novox/mesh-controller/internal/store 10.036s
ok github.com/novox/mesh-controller/internal/testbus 1.241s
ok github.com/novox/mesh-controller/internal/token 1.016s
```
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 novox as build-1791394258214623303 (builds --log build-1791394258214623303).
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is left out of the rest of the mesh: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is left out of the rest of the mesh: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
build-1: a dry run of ssh://forge/app.git on unreviewed, not taken in
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
app's build c2 failed its gate on anchor and was put back to c1: anchor failed what it was sent
plan-gate: app failed its gate on anchor in tier 0: anchor failed what it was sent; put back app to c1 on anchor, in one send; none reported left as it was
build-2: the build seat did not say whether c2 is on its repository's trunk (it predates ADR 0238); registered as before
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
plan-gate: app passed its gate on anchor (healthy 3 times over 0s); the rest are sent
plan-gate: tier 0 built; sent app to laptop, one send each
plan-gate: done — novox/mesh-catalog at c2, 1 tier(s)
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
app's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor has not reported on what it was sent
plan-gate: app failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor has not reported on what it was sent; put back app to c1 on anchor, in one send; none reported left as it was
plan-bus: done — novox/mesh-catalog at n2, 1 tier(s)
snapshotting the bus's streams on anchor first (its backup holder, ADR 0235)…
snapshotting the bus's streams on anchor first (its backup holder, ADR 0235)…
this act by hand could NOT be recorded in the hand-act log, and is done anyway: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
bus upgrade 1: nats n1 → n2 on anchor; streams snapshotted at anchor's restore point of nats; reversible: putting the old build back undoes it
sent anchor; `bus-maintenance` is open until the bus answers healthy again — every stream, every durable consumer, a round trip to the machines (H-bus) — within 15m0s, or the step is said failed with its snapshot as the way back. `bus` says how it went
gone was deleted from novox/mesh-catalog at c1deadbe: forgotten, nothing built
novox/mesh-catalog merged into main (c1deadbe); it changed nothing any module the mesh holds is built from
plan-deleted: kept was deleted at its source: forgotten, and the plan goes on
plan-deleted: done — novox/mesh-catalog at c2, 1 tier(s)
spare owns nothing now — sent so it drops what it last held
spare owns nothing now — sent so it drops what it last held
laptop owns nothing now — sent so it drops what it last held
took the controller lease at epoch 1 (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z)
gave the controller lease back (epoch 1)
took the controller lease at epoch 1 (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z)
another controller holds the lease (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z, epoch 1, taken 2026-10-07T17:53:46Z); waiting until it lets go or stops renewing
gave the controller lease back (epoch 1)
took the controller lease at epoch 3 (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z)
LOST the controller lease (epoch 3): the renewal at revision 3 was refused: nats: nats: API error: code=400 err_code=10071 description=wrong last sequence: 4: nats: key revision mismatch — this controller stops acting at once
the controller lease was lost (epoch 3): the renewal at revision 3 was refused: nats: nats: API error: code=400 err_code=10071 description=wrong last sequence: 4: nats: key revision mismatch — this controller stops and exits, to be started again as a candidate
panic: test timed out after 30m0s
running tests:
TestADeliveryGroupsHeadsAreComposedTogether (35s)
goroutine 5594 [running]:
testing.(*M).startAlarm.func1()
/usr/local/go/src/testing/testing.go:2802 +0x605
created by time.goFunc
/usr/local/go/src/time/sleep.go:215 +0x45
goroutine 1 [chan receive]:
testing.(*T).Run(0xc0002d8908, {0x1f95fdb, 0x2b}, 0x2024548)
/usr/local/go/src/testing/testing.go:2109 +0xb3e
testing.runTests.func1(0xc0002d8908)
/usr/local/go/src/testing/testing.go:2585 +0x85
testing.tRunner(0xc0002d8908, 0xc00031fa20)
/usr/local/go/src/testing/testing.go:2036 +0x21d
testing.runTests({0x1f7b4ea, 0x20}, {0x1fabb50, 0x34}, 0xc0000172f0, {0x2ddd740, 0x173, 0x173}, {0xc2a9c0511a0230e3, 0x1a3194ee03a, ...})
/usr/local/go/src/testing/testing.go:2583 +0x9ea
testing.(*M).Run(0xc00037a0a0)
/usr/local/go/src/testing/testing.go:2443 +0xf4c
github.com/novox/mesh-controller/cmd/mesh-controller.TestMain(0xc00037a0a0)
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/sayable_test.go:32 +0x6c
main.main()
_testmain.go:788 +0x172
goroutine 5387 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc380)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
goroutine 5402 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc000)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
goroutine 5360 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc1c0)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
goroutine 4708 [chan receive]:
github.com/novox/mesh-controller/internal/conditions.(*Keeper).telling(0xc0004d4000)
/var/lib/build-agent/workspace/check/mesh-controller/internal/conditions/store.go:594 +0x138
created by github.com/novox/mesh-controller/internal/conditions.NewKeeper in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/internal/conditions/store.go:132 +0x73a
goroutine 5359 [IO wait]:
internal/poll.runtime_pollWait(0x7f5c177cce00, 0x72)
/usr/local/go/src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc000330aa0, 0x72, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0xb1
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000330a80, {0xc000780000, 0x2000, 0x2000})
/usr/local/go/src/internal/poll/fd_unix.go:165 +0x499
net.(*netFD).Read(0xc000330a80, {0xc000780000, 0x2000, 0x2000})
/usr/local/go/src/net/fd_posix.go:68 +0x4b
net.(*conn).Read(0xc0001b8a40, {0xc000780000, 0x2000, 0x2000})
/usr/local/go/src/net/net.go:196 +0xad
github.com/jackc/pgx/v5/pgconn/internal/bgreader.(*BGReader).Read(0xc000982100, {0xc000780000, 0x2000, 0x2000})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgconn/internal/bgreader/bgreader.go:100 +0x1db
io.ReadAtLeast({0x2039ca0, 0xc000982100}, {0xc000780000, 0x2000, 0x2000}, 0x5)
/usr/local/go/src/io/io.go:335 +0xd1
github.com/jackc/pgx/v5/pgproto3.(*chunkReader).Next(0xc000973b30, 0x5)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgproto3/chunkreader.go:80 +0x82f
github.com/jackc/pgx/v5/pgproto3.(*Frontend).Receive(0xc0004cf688)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go:313 +0x85
github.com/jackc/pgx/v5/pgconn.(*PgConn).peekMessage(0xc0000dc108)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go:645 +0x1f8
github.com/jackc/pgx/v5/pgconn.(*MultiResultReader).NextResult(0xc0000dc240)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go:1620 +0x95
github.com/jackc/pgx/v5.(*Conn).execSimpleProtocol(0xc000320140, {0x20459c0, 0x2e05a00}, {0xc0000416c0, 0x3d}, {0x0, 0x0, 0x0})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/conn.go:589 +0x151
github.com/jackc/pgx/v5.(*Conn).exec(0xc000320140, {0x20459c0, 0x2e05a00}, {0xc0000416c0, 0x3d}, {0x0, 0x0, 0x0})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/conn.go:574 +0xccd
github.com/jackc/pgx/v5.(*Conn).Exec(0xc000320140, {0x20459c0, 0x2e05a00}, {0xc0000416c0, 0x3d}, {0x0, 0x0, 0x0})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/conn.go:481 +0x1f0
github.com/novox/mesh-controller/cmd/mesh-controller.throwawayStores.func1()
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:888 +0x385
github.com/novox/mesh-controller/cmd/mesh-controller.throwawayStores.func2()
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:937 +0x3e
github.com/novox/mesh-controller/cmd/mesh-controller.composeEveryMachine({_, _}, {{0x1, {0x204a4d25, 0xee25880a4, 0x0}, {{0x1f5f7b9, 0x11}, {0x0, 0x0}}, ...}, ...}, ...)
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:798 +0x10f4
github.com/novox/mesh-controller/cmd/mesh-controller.judgeChange({_, _}, {{0x1, {0x204a4d25, 0xee25880a4, 0x0}, {{0x1f5f7b9, 0x11}, {0x0, 0x0}}, ...}, ...})
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:334 +0x1b59
github.com/novox/mesh-controller/cmd/mesh-controller.TestADeliveryGroupsHeadsAreComposedTogether(0xc0002d9688)
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate_test.go:236 +0xb65
testing.tRunner(0xc0002d9688, 0x2024548)
/usr/local/go/src/testing/testing.go:2036 +0x21d
created by testing.(*T).Run in goroutine 1
/usr/local/go/src/testing/testing.go:2101 +0xb13
goroutine 5393 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc700)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
FAIL github.com/novox/mesh-controller/cmd/mesh-controller 1800.041s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/route-proxy 1.125s
ok github.com/novox/mesh-controller/internal/artifacts 1.055s
ok github.com/novox/mesh-controller/internal/broker 2.719s
ok github.com/novox/mesh-controller/internal/builder 2.128s
ok github.com/novox/mesh-controller/internal/catalogue 4.437s
ok github.com/novox/mesh-controller/internal/conditions 2.018s
ok github.com/novox/mesh-controller/internal/envfile 1.019s
ok github.com/novox/mesh-controller/internal/facts 1.018s
ok github.com/novox/mesh-controller/internal/identity 256.224s
ok github.com/novox/mesh-controller/internal/inventory 1744.436s
ok github.com/novox/mesh-controller/internal/lease 17.666s
ok github.com/novox/mesh-controller/internal/licences 240.405s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s
ok github.com/novox/mesh-controller/internal/link 370.958s
ok github.com/novox/mesh-controller/internal/lint 1.887s
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.433s
ok github.com/novox/mesh-controller/internal/store 95.278s
ok github.com/novox/mesh-controller/internal/testbus 1.197s
ok github.com/novox/mesh-controller/internal/token 1.012s
FAIL
**Merge check** at `82fe44b3`
- `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`: **FAIL** — its merge-check.sh failed: FAIL github.com/novox/mesh-controller/cmd/mesh-controller 1800.041s
**Change 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 novox as `build-1791394258214623303` (`builds --log build-1791394258214623303`).
```
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is left out of the rest of the mesh: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is left out of the rest of the mesh: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
laptop is not counted as on the network: it does not resolve: these assignments cannot be applied:
- rival-one and rival-two both claim "the-seat", and only one thing may hold it per node
build-1: a dry run of ssh://forge/app.git on unreviewed, not taken in
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
app's build c2 failed its gate on anchor and was put back to c1: anchor failed what it was sent
plan-gate: app failed its gate on anchor in tier 0: anchor failed what it was sent; put back app to c1 on anchor, in one send; none reported left as it was
build-2: the build seat did not say whether c2 is on its repository's trunk (it predates ADR 0238); registered as before
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
plan-gate: app passed its gate on anchor (healthy 3 times over 0s); the rest are sent
plan-gate: tier 0 built; sent app to laptop, one send each
plan-gate: done — novox/mesh-catalog at c2, 1 tier(s)
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
app's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor has not reported on what it was sent
plan-gate: app failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor has not reported on what it was sent; put back app to c1 on anchor, in one send; none reported left as it was
plan-bus: done — novox/mesh-catalog at n2, 1 tier(s)
snapshotting the bus's streams on anchor first (its backup holder, ADR 0235)…
snapshotting the bus's streams on anchor first (its backup holder, ADR 0235)…
this act by hand could NOT be recorded in the hand-act log, and is done anyway: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
bus upgrade 1: nats n1 → n2 on anchor; streams snapshotted at anchor's restore point of nats; reversible: putting the old build back undoes it
sent anchor; `bus-maintenance` is open until the bus answers healthy again — every stream, every durable consumer, a round trip to the machines (H-bus) — within 15m0s, or the step is said failed with its snapshot as the way back. `bus` says how it went
gone was deleted from novox/mesh-catalog at c1deadbe: forgotten, nothing built
novox/mesh-catalog merged into main (c1deadbe); it changed nothing any module the mesh holds is built from
plan-deleted: kept was deleted at its source: forgotten, and the plan goes on
plan-deleted: done — novox/mesh-catalog at c2, 1 tier(s)
spare owns nothing now — sent so it drops what it last held
spare owns nothing now — sent so it drops what it last held
laptop owns nothing now — sent so it drops what it last held
took the controller lease at epoch 1 (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z)
gave the controller lease back (epoch 1)
took the controller lease at epoch 1 (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z)
another controller holds the lease (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z, epoch 1, taken 2026-10-07T17:53:46Z); waiting until it lets go or stops renewing
gave the controller lease back (epoch 1)
took the controller lease at epoch 3 (controller@novox-be pid 1375 since 2026-10-07T17:34:52Z)
LOST the controller lease (epoch 3): the renewal at revision 3 was refused: nats: nats: API error: code=400 err_code=10071 description=wrong last sequence: 4: nats: key revision mismatch — this controller stops acting at once
the controller lease was lost (epoch 3): the renewal at revision 3 was refused: nats: nats: API error: code=400 err_code=10071 description=wrong last sequence: 4: nats: key revision mismatch — this controller stops and exits, to be started again as a candidate
panic: test timed out after 30m0s
running tests:
TestADeliveryGroupsHeadsAreComposedTogether (35s)
goroutine 5594 [running]:
testing.(*M).startAlarm.func1()
/usr/local/go/src/testing/testing.go:2802 +0x605
created by time.goFunc
/usr/local/go/src/time/sleep.go:215 +0x45
goroutine 1 [chan receive]:
testing.(*T).Run(0xc0002d8908, {0x1f95fdb, 0x2b}, 0x2024548)
/usr/local/go/src/testing/testing.go:2109 +0xb3e
testing.runTests.func1(0xc0002d8908)
/usr/local/go/src/testing/testing.go:2585 +0x85
testing.tRunner(0xc0002d8908, 0xc00031fa20)
/usr/local/go/src/testing/testing.go:2036 +0x21d
testing.runTests({0x1f7b4ea, 0x20}, {0x1fabb50, 0x34}, 0xc0000172f0, {0x2ddd740, 0x173, 0x173}, {0xc2a9c0511a0230e3, 0x1a3194ee03a, ...})
/usr/local/go/src/testing/testing.go:2583 +0x9ea
testing.(*M).Run(0xc00037a0a0)
/usr/local/go/src/testing/testing.go:2443 +0xf4c
github.com/novox/mesh-controller/cmd/mesh-controller.TestMain(0xc00037a0a0)
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/sayable_test.go:32 +0x6c
main.main()
_testmain.go:788 +0x172
goroutine 5387 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc380)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
goroutine 5402 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc000)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
goroutine 5360 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc1c0)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
goroutine 4708 [chan receive]:
github.com/novox/mesh-controller/internal/conditions.(*Keeper).telling(0xc0004d4000)
/var/lib/build-agent/workspace/check/mesh-controller/internal/conditions/store.go:594 +0x138
created by github.com/novox/mesh-controller/internal/conditions.NewKeeper in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/internal/conditions/store.go:132 +0x73a
goroutine 5359 [IO wait]:
internal/poll.runtime_pollWait(0x7f5c177cce00, 0x72)
/usr/local/go/src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0xc000330aa0, 0x72, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0xb1
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000330a80, {0xc000780000, 0x2000, 0x2000})
/usr/local/go/src/internal/poll/fd_unix.go:165 +0x499
net.(*netFD).Read(0xc000330a80, {0xc000780000, 0x2000, 0x2000})
/usr/local/go/src/net/fd_posix.go:68 +0x4b
net.(*conn).Read(0xc0001b8a40, {0xc000780000, 0x2000, 0x2000})
/usr/local/go/src/net/net.go:196 +0xad
github.com/jackc/pgx/v5/pgconn/internal/bgreader.(*BGReader).Read(0xc000982100, {0xc000780000, 0x2000, 0x2000})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgconn/internal/bgreader/bgreader.go:100 +0x1db
io.ReadAtLeast({0x2039ca0, 0xc000982100}, {0xc000780000, 0x2000, 0x2000}, 0x5)
/usr/local/go/src/io/io.go:335 +0xd1
github.com/jackc/pgx/v5/pgproto3.(*chunkReader).Next(0xc000973b30, 0x5)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgproto3/chunkreader.go:80 +0x82f
github.com/jackc/pgx/v5/pgproto3.(*Frontend).Receive(0xc0004cf688)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go:313 +0x85
github.com/jackc/pgx/v5/pgconn.(*PgConn).peekMessage(0xc0000dc108)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go:645 +0x1f8
github.com/jackc/pgx/v5/pgconn.(*MultiResultReader).NextResult(0xc0000dc240)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgconn/pgconn.go:1620 +0x95
github.com/jackc/pgx/v5.(*Conn).execSimpleProtocol(0xc000320140, {0x20459c0, 0x2e05a00}, {0xc0000416c0, 0x3d}, {0x0, 0x0, 0x0})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/conn.go:589 +0x151
github.com/jackc/pgx/v5.(*Conn).exec(0xc000320140, {0x20459c0, 0x2e05a00}, {0xc0000416c0, 0x3d}, {0x0, 0x0, 0x0})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/conn.go:574 +0xccd
github.com/jackc/pgx/v5.(*Conn).Exec(0xc000320140, {0x20459c0, 0x2e05a00}, {0xc0000416c0, 0x3d}, {0x0, 0x0, 0x0})
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/conn.go:481 +0x1f0
github.com/novox/mesh-controller/cmd/mesh-controller.throwawayStores.func1()
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:888 +0x385
github.com/novox/mesh-controller/cmd/mesh-controller.throwawayStores.func2()
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:937 +0x3e
github.com/novox/mesh-controller/cmd/mesh-controller.composeEveryMachine({_, _}, {{0x1, {0x204a4d25, 0xee25880a4, 0x0}, {{0x1f5f7b9, 0x11}, {0x0, 0x0}}, ...}, ...}, ...)
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:798 +0x10f4
github.com/novox/mesh-controller/cmd/mesh-controller.judgeChange({_, _}, {{0x1, {0x204a4d25, 0xee25880a4, 0x0}, {{0x1f5f7b9, 0x11}, {0x0, 0x0}}, ...}, ...})
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate.go:334 +0x1b59
github.com/novox/mesh-controller/cmd/mesh-controller.TestADeliveryGroupsHeadsAreComposedTogether(0xc0002d9688)
/var/lib/build-agent/workspace/check/mesh-controller/cmd/mesh-controller/merge_gate_test.go:236 +0xb65
testing.tRunner(0xc0002d9688, 0x2024548)
/usr/local/go/src/testing/testing.go:2036 +0x21d
created by testing.(*T).Run in goroutine 1
/usr/local/go/src/testing/testing.go:2101 +0xb13
goroutine 5393 [select]:
github.com/jackc/pgx/v5/pgxpool.(*Pool).backgroundHealthCheck(0xc0003fc700)
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:493 +0x1cc
github.com/jackc/pgx/v5/pgxpool.NewWithConfig.func5()
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:336 +0x8f
created by github.com/jackc/pgx/v5/pgxpool.NewWithConfig in goroutine 5359
/var/lib/build-agent/workspace/check/mesh-controller/vendor/github.com/jackc/pgx/v5/pgxpool/pool.go:333 +0xc1d
FAIL github.com/novox/mesh-controller/cmd/mesh-controller 1800.041s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.021s
ok github.com/novox/mesh-controller/examples/route-proxy 1.125s
ok github.com/novox/mesh-controller/internal/artifacts 1.055s
ok github.com/novox/mesh-controller/internal/broker 2.719s
ok github.com/novox/mesh-controller/internal/builder 2.128s
ok github.com/novox/mesh-controller/internal/catalogue 4.437s
ok github.com/novox/mesh-controller/internal/conditions 2.018s
ok github.com/novox/mesh-controller/internal/envfile 1.019s
ok github.com/novox/mesh-controller/internal/facts 1.018s
ok github.com/novox/mesh-controller/internal/identity 256.224s
ok github.com/novox/mesh-controller/internal/inventory 1744.436s
ok github.com/novox/mesh-controller/internal/lease 17.666s
ok github.com/novox/mesh-controller/internal/licences 240.405s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s
ok github.com/novox/mesh-controller/internal/link 370.958s
ok github.com/novox/mesh-controller/internal/lint 1.887s
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.433s
ok github.com/novox/mesh-controller/internal/store 95.278s
ok github.com/novox/mesh-controller/internal/testbus 1.197s
ok github.com/novox/mesh-controller/internal/token 1.012s
FAIL
```
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-1791396350495282525 (builds --log build-1791396350495282525).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T18:01: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-07T18:01:12Z
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-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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 432.498s
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.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.105s
ok github.com/novox/mesh-controller/internal/artifacts 1.029s
ok github.com/novox/mesh-controller/internal/broker 2.396s
ok github.com/novox/mesh-controller/internal/builder 1.334s
ok github.com/novox/mesh-controller/internal/catalogue 3.604s
ok github.com/novox/mesh-controller/internal/conditions 1.996s
ok github.com/novox/mesh-controller/internal/envfile 1.069s
ok github.com/novox/mesh-controller/internal/facts 1.096s
ok github.com/novox/mesh-controller/internal/identity 54.140s
ok github.com/novox/mesh-controller/internal/inventory 285.431s
ok github.com/novox/mesh-controller/internal/lease 17.721s
ok github.com/novox/mesh-controller/internal/licences 51.399s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.066s
ok github.com/novox/mesh-controller/internal/link 74.052s
ok github.com/novox/mesh-controller/internal/lint 1.791s
ok github.com/novox/mesh-controller/internal/outward 1.114s
ok github.com/novox/mesh-controller/internal/overlay 1.077s
ok github.com/novox/mesh-controller/internal/secrets 1.416s
ok github.com/novox/mesh-controller/internal/store 11.309s
ok github.com/novox/mesh-controller/internal/testbus 1.168s
ok github.com/novox/mesh-controller/internal/token 1.015s
**Merge check** at `2f418ffa`
- `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
**Change 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-1791396350495282525` (`builds --log build-1791396350495282525`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T18:01: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-07T18:01:12Z
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-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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 432.498s
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.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.105s
ok github.com/novox/mesh-controller/internal/artifacts 1.029s
ok github.com/novox/mesh-controller/internal/broker 2.396s
ok github.com/novox/mesh-controller/internal/builder 1.334s
ok github.com/novox/mesh-controller/internal/catalogue 3.604s
ok github.com/novox/mesh-controller/internal/conditions 1.996s
ok github.com/novox/mesh-controller/internal/envfile 1.069s
ok github.com/novox/mesh-controller/internal/facts 1.096s
ok github.com/novox/mesh-controller/internal/identity 54.140s
ok github.com/novox/mesh-controller/internal/inventory 285.431s
ok github.com/novox/mesh-controller/internal/lease 17.721s
ok github.com/novox/mesh-controller/internal/licences 51.399s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.066s
ok github.com/novox/mesh-controller/internal/link 74.052s
ok github.com/novox/mesh-controller/internal/lint 1.791s
ok github.com/novox/mesh-controller/internal/outward 1.114s
ok github.com/novox/mesh-controller/internal/overlay 1.077s
ok github.com/novox/mesh-controller/internal/secrets 1.416s
ok github.com/novox/mesh-controller/internal/store 11.309s
ok github.com/novox/mesh-controller/internal/testbus 1.168s
ok github.com/novox/mesh-controller/internal/token 1.015s
```
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-1791397627404511254 (builds --log build-1791397627404511254).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T18:18:34Z 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-07T18:18:34Z
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-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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 417.274s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.103s
ok github.com/novox/mesh-controller/internal/artifacts 1.027s
ok github.com/novox/mesh-controller/internal/broker 2.416s
ok github.com/novox/mesh-controller/internal/builder 1.294s
ok github.com/novox/mesh-controller/internal/catalogue 3.578s
ok github.com/novox/mesh-controller/internal/conditions 2.002s
ok github.com/novox/mesh-controller/internal/envfile 1.058s
ok github.com/novox/mesh-controller/internal/facts 1.058s
ok github.com/novox/mesh-controller/internal/identity 53.390s
ok github.com/novox/mesh-controller/internal/inventory 277.008s
ok github.com/novox/mesh-controller/internal/lease 17.731s
ok github.com/novox/mesh-controller/internal/licences 47.313s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.055s
ok github.com/novox/mesh-controller/internal/link 81.624s
ok github.com/novox/mesh-controller/internal/lint 1.799s
ok github.com/novox/mesh-controller/internal/outward 1.075s
ok github.com/novox/mesh-controller/internal/overlay 1.064s
ok github.com/novox/mesh-controller/internal/secrets 1.402s
ok github.com/novox/mesh-controller/internal/store 9.817s
ok github.com/novox/mesh-controller/internal/testbus 1.246s
ok github.com/novox/mesh-controller/internal/token 1.015s
**Merge check** at `3e9a38f8`
- `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-1791397627404511254` (`builds --log build-1791397627404511254`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T18:18:34Z 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-07T18:18:34Z
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-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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 417.274s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.103s
ok github.com/novox/mesh-controller/internal/artifacts 1.027s
ok github.com/novox/mesh-controller/internal/broker 2.416s
ok github.com/novox/mesh-controller/internal/builder 1.294s
ok github.com/novox/mesh-controller/internal/catalogue 3.578s
ok github.com/novox/mesh-controller/internal/conditions 2.002s
ok github.com/novox/mesh-controller/internal/envfile 1.058s
ok github.com/novox/mesh-controller/internal/facts 1.058s
ok github.com/novox/mesh-controller/internal/identity 53.390s
ok github.com/novox/mesh-controller/internal/inventory 277.008s
ok github.com/novox/mesh-controller/internal/lease 17.731s
ok github.com/novox/mesh-controller/internal/licences 47.313s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.055s
ok github.com/novox/mesh-controller/internal/link 81.624s
ok github.com/novox/mesh-controller/internal/lint 1.799s
ok github.com/novox/mesh-controller/internal/outward 1.075s
ok github.com/novox/mesh-controller/internal/overlay 1.064s
ok github.com/novox/mesh-controller/internal/secrets 1.402s
ok github.com/novox/mesh-controller/internal/store 9.817s
ok github.com/novox/mesh-controller/internal/testbus 1.246s
ok github.com/novox/mesh-controller/internal/token 1.015s
```
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…
What a machine resolves through and over which links had no tool: the
resolver file and its writer, and each link with its routes and resolvers,
are now verbs of node-uplink, the same whatever manages the network. Marked
optional (Verb.Optional), so today's holders still hold the seat until both
serve them; read back from the store's row they stay optional.
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 shanks as build-1791400081104137548 (builds --log build-1791400081104137548).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T19:06:45Z 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-07T19:06:45Z
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-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.036s
ok github.com/novox/mesh-controller/cmd/mesh-controller 368.679s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.025s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.037s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/route-proxy 1.219s
ok github.com/novox/mesh-controller/internal/artifacts 1.056s
ok github.com/novox/mesh-controller/internal/broker 2.730s
ok github.com/novox/mesh-controller/internal/builder 1.485s
ok github.com/novox/mesh-controller/internal/catalogue 4.228s
ok github.com/novox/mesh-controller/internal/conditions 2.014s
ok github.com/novox/mesh-controller/internal/envfile 1.046s
ok github.com/novox/mesh-controller/internal/facts 1.045s
ok github.com/novox/mesh-controller/internal/identity 51.342s
ok github.com/novox/mesh-controller/internal/inventory 230.376s
ok github.com/novox/mesh-controller/internal/lease 17.680s
ok github.com/novox/mesh-controller/internal/licences 51.330s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.036s
ok github.com/novox/mesh-controller/internal/link 88.848s
ok github.com/novox/mesh-controller/internal/lint 1.896s
ok github.com/novox/mesh-controller/internal/outward 1.077s
ok github.com/novox/mesh-controller/internal/overlay 1.056s
ok github.com/novox/mesh-controller/internal/secrets 1.503s
ok github.com/novox/mesh-controller/internal/store 25.519s
ok github.com/novox/mesh-controller/internal/testbus 1.220s
ok github.com/novox/mesh-controller/internal/token 1.017s
**Merge check** at `bf11a8ba`
- `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 shanks as `build-1791400081104137548` (`builds --log build-1791400081104137548`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T19:06:45Z 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-07T19:06:45Z
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-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.036s
ok github.com/novox/mesh-controller/cmd/mesh-controller 368.679s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.025s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.037s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/route-proxy 1.219s
ok github.com/novox/mesh-controller/internal/artifacts 1.056s
ok github.com/novox/mesh-controller/internal/broker 2.730s
ok github.com/novox/mesh-controller/internal/builder 1.485s
ok github.com/novox/mesh-controller/internal/catalogue 4.228s
ok github.com/novox/mesh-controller/internal/conditions 2.014s
ok github.com/novox/mesh-controller/internal/envfile 1.046s
ok github.com/novox/mesh-controller/internal/facts 1.045s
ok github.com/novox/mesh-controller/internal/identity 51.342s
ok github.com/novox/mesh-controller/internal/inventory 230.376s
ok github.com/novox/mesh-controller/internal/lease 17.680s
ok github.com/novox/mesh-controller/internal/licences 51.330s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.036s
ok github.com/novox/mesh-controller/internal/link 88.848s
ok github.com/novox/mesh-controller/internal/lint 1.896s
ok github.com/novox/mesh-controller/internal/outward 1.077s
ok github.com/novox/mesh-controller/internal/overlay 1.056s
ok github.com/novox/mesh-controller/internal/secrets 1.503s
ok github.com/novox/mesh-controller/internal/store 25.519s
ok github.com/novox/mesh-controller/internal/testbus 1.220s
ok github.com/novox/mesh-controller/internal/token 1.017s
```
mesh-admin
changed title from Give the uplink seat its verbs, staged until its holders serve them (hq ADR 0241 rule 8) to Give the uplink seat its verbs, optional until its holders serve them (hq ADR 0241 rule 8)2026-10-07 19:17:24 +00:00
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.
Tool for investigating a machine's names without a terminal on it (operator rule: build the tool, no work-arounds). node-uplink now promises
resolvers(resolver file now, mesh's or not, writer as far as the machine shows) andlinks(each link, default route, the resolvers its manager knows).New: Seat.Staged — verbs promised and routed (membership issues them) but not yet a condition of holding, and never stored in the seat row (an older controller reads the row strictly and would refuse every holder). So: this rolls out first; mesh-catalog#(uplink verbs) serves them next; a later change requires them.
Tests: catalogue (promised, none required, typo refused, UseSeats appends staged), inventory (staged never seeded, also on widen). check-here: merge-gate PASS (4 of 4), repo-check PASS. Independent of mesh-controller#113.
Delivery
novox/mesh-controller@bf11a8baacda— delivered since 2026-10-07T19:34:56ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Group
feat/node-uplink-verbs, in order: novox/mesh-controller@bf11a8baac → novox/mesh-catalog@c619a672a3Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
82fe44b3mesh/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 passedChange plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1791395161740408318(builds --log build-1791395161740408318).Merge check at
82fe44b3mesh/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: FAIL — its merge-check.sh failed: FAIL github.com/novox/mesh-controller/cmd/mesh-controller 1800.041sChange plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791394258214623303(builds --log build-1791394258214623303).Merge check at
2f418ffamesh/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 passedChange plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1791396350495282525(builds --log build-1791396350495282525).2f418ffa06to3e9a38f81bMerge check at
3e9a38f8mesh/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 passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1791397627404511254(builds --log build-1791397627404511254).3e9a38f81btobf11a8baacMerge check at
bf11a8bamesh/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 passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1791400081104137548(builds --log build-1791400081104137548).Give the uplink seat its verbs, staged until its holders serve them (hq ADR 0241 rule 8)to Give the uplink seat its verbs, optional until its holders serve them (hq ADR 0241 rule 8)Merge check at
bf11a8bamesh/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: FAIL — its merge-check.sh failed: FAIL github.com/novox/mesh-controller/cmd/mesh-controller 1800.047sDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791399160739995262(builds --log build-1791399160739995262).