Tell the operator at once when sends wait for the bus's planned step, and say it before the merge (hq issue 336) #173

Merged
mesh-admin merged 4 commits from fix/336-bus-step-waiting into main 2026-10-09 07:23:51 +00:00
Contributor

Builds hq ADR 0271 (proposed).

Why. On 2026-10-08 every send to the control-node was refused for 28 minutes for a new bus build only a person's bus upgrade moves, and nothing but the walks' notes said so. S3 would have fired after 30 minutes as lateness, naming neither the bus nor the verb.

What.

  • Row S17, bus.<module>.step-waiting (kind bus-step-waiting, warning, resolver operator): raised on the first watchdog tick after a walk's send is refused for the bus. Summary names the machines, each waiting walk and its tier's modules, the bus build from → to, since when (first refusal seen, else the save that kept it), and mesh-controller.bus upgrade --why … --reversible|--irreversible. Plain words for the operator. Clears once the bus's machine runs the build the mesh holds.
  • S3 leaves out a walk held only by the bus's step.
  • A change that builds the bus says in its delivery plan step and summary (carried by mesh/merge-gate's description): "merging this needs a person's bus upgrade" and which machine gets nothing until then.

Tests (fail first, then pass): bus_waits_test.go (table test of what counts as held for the bus; condition words, S3 exclusion, keeper open/clear), S17 in the generated signals-table test, changeplan_test.go, and the replay TestReplay336 — fails on main ("the first tick after the refusal told the operator nothing about the bus's step: 0 condition(s)"), passes here. Needs registering as R336 in mesh-lab's replays register.

merge-check.sh passed locally with MESH_TEST_POSTGRES set (cmd/mesh-controller 235 s). Independent of mesh-catalog's fix/319 PR. Merge after hq ADR 0271 is accepted.

Builds hq ADR 0271 (proposed). **Why.** On 2026-10-08 every send to the control-node was refused for 28 minutes for a new bus build only a person's `bus upgrade` moves, and nothing but the walks' notes said so. S3 would have fired after 30 minutes as lateness, naming neither the bus nor the verb. **What.** - Row S17, `bus.<module>.step-waiting` (kind `bus-step-waiting`, warning, resolver operator): raised on the first watchdog tick after a walk's send is refused for the bus. Summary names the machines, each waiting walk and its tier's modules, the bus build from → to, since when (first refusal seen, else the save that kept it), and `mesh-controller.bus upgrade --why … --reversible|--irreversible`. Plain words for the operator. Clears once the bus's machine runs the build the mesh holds. - S3 leaves out a walk held only by the bus's step. - A change that builds the bus says in its delivery plan step and summary (carried by `mesh/merge-gate`'s description): "merging this needs a person's bus upgrade" and which machine gets nothing until then. **Tests** (fail first, then pass): `bus_waits_test.go` (table test of what counts as held for the bus; condition words, S3 exclusion, keeper open/clear), S17 in the generated signals-table test, `changeplan_test.go`, and the replay `TestReplay336` — fails on main ("the first tick after the refusal told the operator nothing about the bus's step: 0 condition(s)"), passes here. Needs registering as R336 in mesh-lab's replays register. merge-check.sh passed locally with MESH_TEST_POSTGRES set (cmd/mesh-controller 235 s). Independent of mesh-catalog's fix/319 PR. Merge after hq ADR 0271 is accepted.
mesh-admin added 1 commit 2026-10-09 00:34:42 +00:00
Tell the operator at once when sends wait for the bus's planned step, and say it before the merge (hq issue 336)
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 superseded: a newer head of the same pull request
1fdc68a8aa
For 28 minutes on 2026-10-08 every send to the control-node was refused for a new bus build that only a
person's bus upgrade moves, and no condition said so: the refusal lived only in each walk's note, and S3
would have called it lateness after half an hour, in words that named neither the bus nor the verb.

- Row S17, bus.<module>.step-waiting: raised on the first watchdog tick after a walk's send is refused for
  the bus, for the operator, naming the machines, what waits, the bus build from and to, since when and
  mesh-controller.bus upgrade. It clears once the bus's machine runs the build the mesh holds.
- S3 leaves out a walk held only by the bus's step.
- A change that builds the bus says in its delivery plan and summary (which mesh/merge-gate carries) that
  merging it needs a person's bus upgrade, and that nothing else reaches its machine until then.
- TestReplay336 fails on the commit before and passes on this one.
Author
Contributor

Delivery novox/mesh-controller@822e52123cb6 — delivered since 2026-10-09T07:39:25Z

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

Machines

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

Transitions

  • 2026-10-09 01:24 (new) → proposed (announced): novox/mesh-controller#173's head announced
  • 2026-10-09 01:28 proposed → checked (checked): the verdict names this commit
  • 2026-10-09 01:28 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-09 07:24 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-09 07:24 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-09 07:39 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@822e52123cb6` — **delivered** since 2026-10-09T07:39:25Z **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 **Machines** - mesh-controller on novox: passed — healthy 3 times over 3m39s - mesh-controller on the rest running it: sent - build-agent on novox: passed — healthy 3 times over 3m30s - build-agent on the rest running it: sent - route-proxy on ace: passed — healthy 3 times over 3m34s - route-proxy on the rest running it: sent **Transitions** - 2026-10-09 01:24 (new) → proposed (announced): novox/mesh-controller#173's head announced - 2026-10-09 01:28 proposed → checked (checked): the verdict names this commit - 2026-10-09 01:28 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-09 07:24 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-09 07:24 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-09 07:39 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 1fdc68a8

  • 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-1791506087520118808 (builds --log build-1791506087520118808).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 52 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
files asking for a setting without saying whether it is trusted: 0
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-09T00:26:57Z 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-09T00:26:57Z

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.032s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	193.778s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.023s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.026s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.025s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.198s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.083s
ok  	github.com/novox/mesh-controller/internal/broker	2.726s
ok  	github.com/novox/mesh-controller/internal/builder	1.933s
ok  	github.com/novox/mesh-controller/internal/catalogue	4.945s
ok  	github.com/novox/mesh-controller/internal/conditions	2.508s
ok  	github.com/novox/mesh-controller/internal/envfile	1.064s
ok  	github.com/novox/mesh-controller/internal/facts	1.063s
ok  	github.com/novox/mesh-controller/internal/identity	4.825s
ok  	github.com/novox/mesh-controller/internal/inventory	83.608s
ok  	github.com/novox/mesh-controller/internal/lease	17.721s
ok  	github.com/novox/mesh-controller/internal/licences	4.392s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.060s
ok  	github.com/novox/mesh-controller/internal/link	53.217s
ok  	github.com/novox/mesh-controller/internal/lint	2.170s
ok  	github.com/novox/mesh-controller/internal/outward	1.088s
ok  	github.com/novox/mesh-controller/internal/overlay	1.075s
ok  	github.com/novox/mesh-controller/internal/secrets	1.539s
ok  	github.com/novox/mesh-controller/internal/store	3.467s
ok  	github.com/novox/mesh-controller/internal/testbus	1.247s
ok  	github.com/novox/mesh-controller/internal/token	1.016s
**Merge check** at `1fdc68a8` - `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-1791506087520118808` (`builds --log build-1791506087520118808`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 52 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 files asking for a setting without saying whether it is trusted: 0 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-09T00:26:57Z 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-09T00:26:57Z 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.032s ok github.com/novox/mesh-controller/cmd/mesh-controller 193.778s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.026s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.025s ok github.com/novox/mesh-controller/examples/route-proxy 1.198s ok github.com/novox/mesh-controller/internal/artifacts 1.083s ok github.com/novox/mesh-controller/internal/broker 2.726s ok github.com/novox/mesh-controller/internal/builder 1.933s ok github.com/novox/mesh-controller/internal/catalogue 4.945s ok github.com/novox/mesh-controller/internal/conditions 2.508s ok github.com/novox/mesh-controller/internal/envfile 1.064s ok github.com/novox/mesh-controller/internal/facts 1.063s ok github.com/novox/mesh-controller/internal/identity 4.825s ok github.com/novox/mesh-controller/internal/inventory 83.608s ok github.com/novox/mesh-controller/internal/lease 17.721s ok github.com/novox/mesh-controller/internal/licences 4.392s ok github.com/novox/mesh-controller/internal/licences/adapters 1.060s ok github.com/novox/mesh-controller/internal/link 53.217s ok github.com/novox/mesh-controller/internal/lint 2.170s ok github.com/novox/mesh-controller/internal/outward 1.088s ok github.com/novox/mesh-controller/internal/overlay 1.075s ok github.com/novox/mesh-controller/internal/secrets 1.539s ok github.com/novox/mesh-controller/internal/store 3.467s ok github.com/novox/mesh-controller/internal/testbus 1.247s ok github.com/novox/mesh-controller/internal/token 1.016s ```
jschoubben added 1 commit 2026-10-09 00:54:26 +00:00
Name the bus upgrade as the mesh call a person makes, and say a same-source rebuild needs no step (review of #173)
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 fail: its merge-check.sh failed: --- FAIL: TestReplay336 (1.12s)
mesh/delivery superseded: a newer head of the same pull request
4354d9d7c7
The condition and the plan named the verb in command-line form; the operator reaches it through the mesh
MCP server, so it is written as that call. A rebuild of the same source moves nothing (issue 280), which
the plan cannot know before the build, so its line says so.
Author
Contributor

Merge check at 4354d9d7

  • 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: TestReplay336 (1.12s)

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 novox as build-1791507295123913294 (builds --log build-1791507295123913294).

  sensors rolls out on build: the machines running it are sent this now, one machine at a time — `upgrade sensors record` first if something must move before it does
b-modules/sensors: laptop is assigned sensors: build b-modules/sensors registered it (pending since 2026-10-09 01:00:21 UTC); `push laptop` sends it
plan-1: dunst passed its gate on laptop in tier 0 (healthy 3 times over 2m5s) and is kept; its walk stopped after: laptop did not report it applied within 30m0s; workstation left as it was
plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (m01, m02), the rest once its gate passes
plan-tier: tier 0 built; sent m01, m02 to laptop, one send each
plan-tier: done — novox/mesh-catalog at c2, 1 tier(s)
plan-engine: sending engine to anchor first after tier 0: a new bus build waits for its planned step: sending anchor would replace the bus (nats 88135ad0 → 32307bd1), which is a planned step: `bus upgrade --why …` snapshots its streams first and checks them after (novox/hq ADR 0236)
--- FAIL: TestReplay336 (1.12s)
    replay336_test.go:82: the condition does not say "bus upgrade": sends to anchor wait for the bus's planned step: a new bus build (nats 88135ad0 → 32307bd1) would replace the bus there, which only a person's `mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"}` does; waiting since 2026-10-09T01:00:26Z: plan-engine (novox/mesh-host e1e1e1e1, tier: engine)
plan-crashloop: 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: its container app.server on anchor keeps restarting (2 restart(s) counted)
plan-crashloop: app failed its gate on anchor in tier 0: not healthy within -1s of its apply: its container app.server on anchor keeps restarting (2 restart(s) counted); put back app to c1 on anchor, in one send; none reported left as it was
novox/mesh-catalog merged into main (3ad22356); plan plan-1791507630507925053, 1 module(s) in 1 tier(s)
  0: app
  tier 0:   modules/systemd-resolved is a new module in novox/mesh-catalog: build build-modules/systemd-resolved asked at main; registered when it lands, assigned nowhere
novox/mesh-catalog merged into main (3da80a4b); it changed no module the mesh holds, and adds modules/systemd-resolved: built, registered when the build lands, and sent nowhere
build-1791504031986227538: the build seat did not say whether c1111111 is on its repository's trunk (it predates ADR 0238); registered as before
build-1791504091986227538: the build seat did not say whether c2222222 is on its repository's trunk (it predates ADR 0238); registered as before
recorded as act-1791507632099707057-2 in the hand-act log: a push of recorded builds (resolver from c1111111 → c2222222) by an unnamed account at a shell on novox-be, because "operator's yes: the resolver's new build on anchor" — the person's word their upgrade policy asks for, which no healer is wanted for
recorded as act-1791507632154418308-3 in the hand-act log: a push of recorded builds (resolver from c1111111 → c2222222) by an unnamed account at a shell on novox-be, because "operator's yes: the resolver's new build on laptop" — the person's word their upgrade policy asks for, which no healer is wanted for
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-1791504035278528515: the build seat did not say whether c1aaaaaa is on its repository's trunk (it predates ADR 0238); registered as before
build-1791504095278528515: the build seat did not say whether c2bbbbbb is on its repository's trunk (it predates ADR 0238); registered as before
app at c2bbbbbb was made from the source build-1791504035278528515 was: registered with its artifacts, no move
build-1791504155278528515: the build seat did not say whether c3cccccc is on its repository's trunk (it predates ADR 0238); registered as before
build-1791504215278528515: the build seat did not say whether c4dddddd is on its repository's trunk (it predates ADR 0238); registered as before
build-1791504035775769934: the build seat did not say whether n1111111 is on its repository's trunk (it predates ADR 0238); registered as before
build-1791504095775769934: the build seat did not say whether n2222222 is on its repository's trunk (it predates ADR 0238); registered as before
nats at n2222222 was made from the source build-1791504035775769934 was: registered with its artifacts, no move
every machine running nats runs the build the mesh holds (n2222222): nothing to upgrade
build-1791504155775769934: the build seat did not say whether n3333333 is on its repository's trunk (it predates ADR 0238); registered as before
plan-gate: app built from the source every machine running it runs: no move, nothing sent
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
status could not be composed (after 0s): the store did not answer — `status` answers the last summary, with its age
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
anchor 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
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
plan-97b1b2b closed at tier 1 of 2; what was asked still builds and registers, nothing further is asked
notes on laptop:
  + places.data.owner
  + places.data.path
  + x
  run `plan laptop --diff` to see what it changes, `push laptop` to send it
notes on laptop:
  ~ x
  the layer it replaced is kept: settings show notes --node laptop --history
  run `plan laptop --diff` to see what it changes, `push laptop` to send it
{
  "places": {
    "data": {
      "owner": "1001:1001",
      "path": "/srv/notes"
    }
  },
  "x": 1
}
keycloak on anchor:
  + issuer
  + x
  run `plan anchor --diff` to see what it changes, `push anchor` to send it
power on anchor:
  + lid
  + x
  run `plan anchor --diff` to see what it changes, `push anchor` to send it
keycloak on anchor:
  ~ x
  the layer it replaced is kept: settings show keycloak --node anchor --history
  run `plan anchor --diff` to see what it changes, `push anchor` to send it
plan-tier: tier 0 built; sent 12 module(s) to anchor first in one send (m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12), the rest once its gate passes
plan-tier: m01 passed its gate on anchor (healthy 3 times over 0s); the rest are sent
plan-tier: tier 0 built; sent m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12 to laptop, one send each
plan-tier: done — novox/mesh-catalog at c2, 1 tier(s)
plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, node-tools), the rest once its gate passes
node-tools's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: raised since it was sent: machine.anchor.core-behind — anchor runs the node tools it was last sent, not yet reported applied, and no plan is rolling them out (its settle window runs to the gate's bound)
plan-tier: the send to anchor in tier 0 failed its gate: not healthy within -1s of its apply: raised since it was sent: machine.anchor.core-behind — anchor runs the node tools it was last sent, not yet reported applied, and no plan is rolling them out (its settle window runs to the gate's bound); app1 passed on its own and is kept; passed on their own and kept: app2; node-tools failed its gate on anchor in tier 0: not healthy within -1s of its apply: raised since it was sent: machine.anchor.core-behind — anchor runs the node tools it was last sent, not yet reported applied, and no plan is rolling them out (its settle window runs to the gate's bound); put back node-tools to c1 on anchor, in one send; none reported left as it was
plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, app3), the rest once its gate passes
app1's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
app2's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
app3's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full
plan-tier: app1 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app2 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app3 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; put back app1 to c1, app2 to c1, app3 to c1 on anchor, in one send; none reported left as it was
plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes
plan-gate: the send to anchor in tier 0 failed its gate: not healthy within -1s of its apply: anchor has not reported on what it was sent; app was left as it was — anchor already ran app c2, or a build identical to it, before the send, so nothing of it moved and nothing is put back
plan-gate: the send to anchor in tier 0 failed its gate: not healthy within -1s of its apply: anchor has not reported on what it was sent; app was left as it was — anchor already ran app c2, or a build identical to it, before the send, so nothing of it moved and nothing is put back; none reported left as it was
  tier 0: plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (node-tools, app1), the rest once its gate passes
node-tools's build c2 failed its gate on anchor and was put back to c1: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer
plan-tier: put back at once: node-tools (the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer); the rest of the send judged to their own verdicts
plan-tier: the send to anchor in tier 0 failed its gate: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer; node-tools was put back when it broke; passed on their own and kept: app1; none reported left as it was
plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (app1, node-tools), the rest once its gate passes
node-tools's build c2 failed its gate on anchor and was put back to c1: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer
plan-tier: put back at once: node-tools (the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer); the rest of the send judged to their own verdicts
plan-tier: the send to anchor in tier 0 failed its gate: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer; app1 passed on its own and is kept; none reported left as it was
FAIL
FAIL	github.com/novox/mesh-controller/cmd/mesh-controller	225.963s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.021s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.025s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.023s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.137s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.063s
ok  	github.com/novox/mesh-controller/internal/broker	2.921s
ok  	github.com/novox/mesh-controller/internal/builder	2.703s
ok  	github.com/novox/mesh-controller/internal/catalogue	5.202s
ok  	github.com/novox/mesh-controller/internal/conditions	2.525s
ok  	github.com/novox/mesh-controller/internal/envfile	1.028s
ok  	github.com/novox/mesh-controller/internal/facts	1.041s
ok  	github.com/novox/mesh-controller/internal/identity	5.775s
ok  	github.com/novox/mesh-controller/internal/inventory	95.395s
ok  	github.com/novox/mesh-controller/internal/lease	17.680s
ok  	github.com/novox/mesh-controller/internal/licences	5.310s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.020s
ok  	github.com/novox/mesh-controller/internal/link	54.326s
ok  	github.com/novox/mesh-controller/internal/lint	2.213s
ok  	github.com/novox/mesh-controller/internal/outward	1.038s
ok  	github.com/novox/mesh-controller/internal/overlay	1.028s
ok  	github.com/novox/mesh-controller/internal/secrets	1.450s
ok  	github.com/novox/mesh-controller/internal/store	3.584s
ok  	github.com/novox/mesh-controller/internal/testbus	1.200s
ok  	github.com/novox/mesh-controller/internal/token	1.021s
FAIL
**Merge check** at `4354d9d7` - `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: TestReplay336 (1.12s) **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 novox as `build-1791507295123913294` (`builds --log build-1791507295123913294`). ``` sensors rolls out on build: the machines running it are sent this now, one machine at a time — `upgrade sensors record` first if something must move before it does b-modules/sensors: laptop is assigned sensors: build b-modules/sensors registered it (pending since 2026-10-09 01:00:21 UTC); `push laptop` sends it plan-1: dunst passed its gate on laptop in tier 0 (healthy 3 times over 2m5s) and is kept; its walk stopped after: laptop did not report it applied within 30m0s; workstation left as it was plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (m01, m02), the rest once its gate passes plan-tier: tier 0 built; sent m01, m02 to laptop, one send each plan-tier: done — novox/mesh-catalog at c2, 1 tier(s) plan-engine: sending engine to anchor first after tier 0: a new bus build waits for its planned step: sending anchor would replace the bus (nats 88135ad0 → 32307bd1), which is a planned step: `bus upgrade --why …` snapshots its streams first and checks them after (novox/hq ADR 0236) --- FAIL: TestReplay336 (1.12s) replay336_test.go:82: the condition does not say "bus upgrade": sends to anchor wait for the bus's planned step: a new bus build (nats 88135ad0 → 32307bd1) would replace the bus there, which only a person's `mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"}` does; waiting since 2026-10-09T01:00:26Z: plan-engine (novox/mesh-host e1e1e1e1, tier: engine) plan-crashloop: 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: its container app.server on anchor keeps restarting (2 restart(s) counted) plan-crashloop: app failed its gate on anchor in tier 0: not healthy within -1s of its apply: its container app.server on anchor keeps restarting (2 restart(s) counted); put back app to c1 on anchor, in one send; none reported left as it was novox/mesh-catalog merged into main (3ad22356); plan plan-1791507630507925053, 1 module(s) in 1 tier(s) 0: app tier 0: modules/systemd-resolved is a new module in novox/mesh-catalog: build build-modules/systemd-resolved asked at main; registered when it lands, assigned nowhere novox/mesh-catalog merged into main (3da80a4b); it changed no module the mesh holds, and adds modules/systemd-resolved: built, registered when the build lands, and sent nowhere build-1791504031986227538: the build seat did not say whether c1111111 is on its repository's trunk (it predates ADR 0238); registered as before build-1791504091986227538: the build seat did not say whether c2222222 is on its repository's trunk (it predates ADR 0238); registered as before recorded as act-1791507632099707057-2 in the hand-act log: a push of recorded builds (resolver from c1111111 → c2222222) by an unnamed account at a shell on novox-be, because "operator's yes: the resolver's new build on anchor" — the person's word their upgrade policy asks for, which no healer is wanted for recorded as act-1791507632154418308-3 in the hand-act log: a push of recorded builds (resolver from c1111111 → c2222222) by an unnamed account at a shell on novox-be, because "operator's yes: the resolver's new build on laptop" — the person's word their upgrade policy asks for, which no healer is wanted for 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-1791504035278528515: the build seat did not say whether c1aaaaaa is on its repository's trunk (it predates ADR 0238); registered as before build-1791504095278528515: the build seat did not say whether c2bbbbbb is on its repository's trunk (it predates ADR 0238); registered as before app at c2bbbbbb was made from the source build-1791504035278528515 was: registered with its artifacts, no move build-1791504155278528515: the build seat did not say whether c3cccccc is on its repository's trunk (it predates ADR 0238); registered as before build-1791504215278528515: the build seat did not say whether c4dddddd is on its repository's trunk (it predates ADR 0238); registered as before build-1791504035775769934: the build seat did not say whether n1111111 is on its repository's trunk (it predates ADR 0238); registered as before build-1791504095775769934: the build seat did not say whether n2222222 is on its repository's trunk (it predates ADR 0238); registered as before nats at n2222222 was made from the source build-1791504035775769934 was: registered with its artifacts, no move every machine running nats runs the build the mesh holds (n2222222): nothing to upgrade build-1791504155775769934: the build seat did not say whether n3333333 is on its repository's trunk (it predates ADR 0238); registered as before plan-gate: app built from the source every machine running it runs: no move, nothing sent 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 status could not be composed (after 0s): the store did not answer — `status` answers the last summary, with its age anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 anchor 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 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 plan-97b1b2b closed at tier 1 of 2; what was asked still builds and registers, nothing further is asked notes on laptop: + places.data.owner + places.data.path + x run `plan laptop --diff` to see what it changes, `push laptop` to send it notes on laptop: ~ x the layer it replaced is kept: settings show notes --node laptop --history run `plan laptop --diff` to see what it changes, `push laptop` to send it { "places": { "data": { "owner": "1001:1001", "path": "/srv/notes" } }, "x": 1 } keycloak on anchor: + issuer + x run `plan anchor --diff` to see what it changes, `push anchor` to send it power on anchor: + lid + x run `plan anchor --diff` to see what it changes, `push anchor` to send it keycloak on anchor: ~ x the layer it replaced is kept: settings show keycloak --node anchor --history run `plan anchor --diff` to see what it changes, `push anchor` to send it plan-tier: tier 0 built; sent 12 module(s) to anchor first in one send (m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12), the rest once its gate passes plan-tier: m01 passed its gate on anchor (healthy 3 times over 0s); the rest are sent plan-tier: tier 0 built; sent m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12 to laptop, one send each plan-tier: done — novox/mesh-catalog at c2, 1 tier(s) plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, node-tools), the rest once its gate passes node-tools's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: raised since it was sent: machine.anchor.core-behind — anchor runs the node tools it was last sent, not yet reported applied, and no plan is rolling them out (its settle window runs to the gate's bound) plan-tier: the send to anchor in tier 0 failed its gate: not healthy within -1s of its apply: raised since it was sent: machine.anchor.core-behind — anchor runs the node tools it was last sent, not yet reported applied, and no plan is rolling them out (its settle window runs to the gate's bound); app1 passed on its own and is kept; passed on their own and kept: app2; node-tools failed its gate on anchor in tier 0: not healthy within -1s of its apply: raised since it was sent: machine.anchor.core-behind — anchor runs the node tools it was last sent, not yet reported applied, and no plan is rolling them out (its settle window runs to the gate's bound); put back node-tools to c1 on anchor, in one send; none reported left as it was plan-tier: tier 0 built; sent 3 module(s) to anchor first in one send (app1, app2, app3), the rest once its gate passes app1's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full app2's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full app3's build c2 failed its gate on anchor and was put back to c1: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full plan-tier: app1 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app2 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; app3 failed its gate on anchor in tier 0: not healthy within -1s of its apply: anchor as a whole: raised since it was sent: machine.anchor.disk-full — anchor's root file system is full; put back app1 to c1, app2 to c1, app3 to c1 on anchor, in one send; none reported left as it was plan-gate: tier 0 built; sent 1 module(s) to anchor first in one send (app), the rest once its gate passes plan-gate: the send to anchor in tier 0 failed its gate: not healthy within -1s of its apply: anchor has not reported on what it was sent; app was left as it was — anchor already ran app c2, or a build identical to it, before the send, so nothing of it moved and nothing is put back plan-gate: the send to anchor in tier 0 failed its gate: not healthy within -1s of its apply: anchor has not reported on what it was sent; app was left as it was — anchor already ran app c2, or a build identical to it, before the send, so nothing of it moved and nothing is put back; none reported left as it was tier 0: plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (node-tools, app1), the rest once its gate passes node-tools's build c2 failed its gate on anchor and was put back to c1: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer plan-tier: put back at once: node-tools (the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer); the rest of the send judged to their own verdicts plan-tier: the send to anchor in tier 0 failed its gate: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer; node-tools was put back when it broke; passed on their own and kept: app1; none reported left as it was plan-tier: tier 0 built; sent 2 module(s) to anchor first in one send (app1, node-tools), the rest once its gate passes node-tools's build c2 failed its gate on anchor and was put back to c1: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer plan-tier: put back at once: node-tools (the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer); the rest of the send judged to their own verdicts plan-tier: the send to anchor in tier 0 failed its gate: the witness on anchor judged the node-tools c2 and rolled-back: the node tools did not answer; app1 passed on its own and is kept; none reported left as it was FAIL FAIL github.com/novox/mesh-controller/cmd/mesh-controller 225.963s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.021s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.025s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.023s ok github.com/novox/mesh-controller/examples/route-proxy 1.137s ok github.com/novox/mesh-controller/internal/artifacts 1.063s ok github.com/novox/mesh-controller/internal/broker 2.921s ok github.com/novox/mesh-controller/internal/builder 2.703s ok github.com/novox/mesh-controller/internal/catalogue 5.202s ok github.com/novox/mesh-controller/internal/conditions 2.525s ok github.com/novox/mesh-controller/internal/envfile 1.028s ok github.com/novox/mesh-controller/internal/facts 1.041s ok github.com/novox/mesh-controller/internal/identity 5.775s ok github.com/novox/mesh-controller/internal/inventory 95.395s ok github.com/novox/mesh-controller/internal/lease 17.680s ok github.com/novox/mesh-controller/internal/licences 5.310s ok github.com/novox/mesh-controller/internal/licences/adapters 1.020s ok github.com/novox/mesh-controller/internal/link 54.326s ok github.com/novox/mesh-controller/internal/lint 2.213s ok github.com/novox/mesh-controller/internal/outward 1.038s ok github.com/novox/mesh-controller/internal/overlay 1.028s ok github.com/novox/mesh-controller/internal/secrets 1.450s ok github.com/novox/mesh-controller/internal/store 3.584s ok github.com/novox/mesh-controller/internal/testbus 1.200s ok github.com/novox/mesh-controller/internal/token 1.021s FAIL ```
jschoubben added 1 commit 2026-10-09 01:08:24 +00:00
TestReplay336 reads the bus call in its mesh form
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 superseded: a newer head of the same pull request
9a7ae131cb
The previous commit named the upgrade as a mesh call, and the replay still looked for the command-line
words; it now asserts the seat and the upgrade, as any wording of the call says them.
Author
Contributor

Merge check at 9a7ae131

  • 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-1791508112708968573 (builds --log build-1791508112708968573).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 52 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
files asking for a setting without saying whether it is trusted: 0
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-09T01:03:55Z 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-09T01:03:55Z

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	196.195s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.057s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.067s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.054s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.215s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.090s
ok  	github.com/novox/mesh-controller/internal/broker	6.061s
ok  	github.com/novox/mesh-controller/internal/builder	6.363s
ok  	github.com/novox/mesh-controller/internal/catalogue	4.671s
ok  	github.com/novox/mesh-controller/internal/conditions	2.684s
ok  	github.com/novox/mesh-controller/internal/envfile	1.051s
ok  	github.com/novox/mesh-controller/internal/facts	1.064s
ok  	github.com/novox/mesh-controller/internal/identity	8.705s
ok  	github.com/novox/mesh-controller/internal/inventory	86.489s
ok  	github.com/novox/mesh-controller/internal/lease	18.270s
ok  	github.com/novox/mesh-controller/internal/licences	8.173s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.059s
ok  	github.com/novox/mesh-controller/internal/link	53.509s
ok  	github.com/novox/mesh-controller/internal/lint	2.117s
ok  	github.com/novox/mesh-controller/internal/outward	1.084s
ok  	github.com/novox/mesh-controller/internal/overlay	1.079s
ok  	github.com/novox/mesh-controller/internal/secrets	1.550s
ok  	github.com/novox/mesh-controller/internal/store	7.390s
ok  	github.com/novox/mesh-controller/internal/testbus	1.244s
ok  	github.com/novox/mesh-controller/internal/token	1.014s
**Merge check** at `9a7ae131` - `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-1791508112708968573` (`builds --log build-1791508112708968573`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 52 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 files asking for a setting without saying whether it is trusted: 0 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-09T01:03:55Z 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-09T01:03:55Z 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 196.195s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.057s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.067s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.054s ok github.com/novox/mesh-controller/examples/route-proxy 1.215s ok github.com/novox/mesh-controller/internal/artifacts 1.090s ok github.com/novox/mesh-controller/internal/broker 6.061s ok github.com/novox/mesh-controller/internal/builder 6.363s ok github.com/novox/mesh-controller/internal/catalogue 4.671s ok github.com/novox/mesh-controller/internal/conditions 2.684s ok github.com/novox/mesh-controller/internal/envfile 1.051s ok github.com/novox/mesh-controller/internal/facts 1.064s ok github.com/novox/mesh-controller/internal/identity 8.705s ok github.com/novox/mesh-controller/internal/inventory 86.489s ok github.com/novox/mesh-controller/internal/lease 18.270s ok github.com/novox/mesh-controller/internal/licences 8.173s ok github.com/novox/mesh-controller/internal/licences/adapters 1.059s ok github.com/novox/mesh-controller/internal/link 53.509s ok github.com/novox/mesh-controller/internal/lint 2.117s ok github.com/novox/mesh-controller/internal/outward 1.084s ok github.com/novox/mesh-controller/internal/overlay 1.079s ok github.com/novox/mesh-controller/internal/secrets 1.550s ok github.com/novox/mesh-controller/internal/store 7.390s ok github.com/novox/mesh-controller/internal/testbus 1.244s ok github.com/novox/mesh-controller/internal/token 1.014s ```
jschoubben added 1 commit 2026-10-09 01:23:49 +00:00
Say S17 clears once the new bus is sent, as it does
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 delivered
822e52123c
The comment and the signals table's bound said it cleared once the bus's machine runs the new build; it
clears once that machine has been sent it, when no send is refused for the bus any more.
Author
Contributor

Merge check at 822e5212

  • 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-1791509049494117359 (builds --log build-1791509049494117359).

--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 52 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
files asking for a setting without saying whether it is trusted: 0
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-09T01:23:55Z 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-09T01:23:55Z

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.036s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	170.708s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.014s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.017s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.014s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.124s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.041s
ok  	github.com/novox/mesh-controller/internal/broker	2.525s
ok  	github.com/novox/mesh-controller/internal/builder	1.856s
ok  	github.com/novox/mesh-controller/internal/catalogue	4.414s
ok  	github.com/novox/mesh-controller/internal/conditions	2.419s
ok  	github.com/novox/mesh-controller/internal/envfile	1.060s
ok  	github.com/novox/mesh-controller/internal/facts	1.065s
ok  	github.com/novox/mesh-controller/internal/identity	4.215s
ok  	github.com/novox/mesh-controller/internal/inventory	71.258s
ok  	github.com/novox/mesh-controller/internal/lease	17.733s
ok  	github.com/novox/mesh-controller/internal/licences	3.798s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.055s
ok  	github.com/novox/mesh-controller/internal/link	50.682s
ok  	github.com/novox/mesh-controller/internal/lint	1.992s
ok  	github.com/novox/mesh-controller/internal/outward	1.089s
ok  	github.com/novox/mesh-controller/internal/overlay	1.066s
ok  	github.com/novox/mesh-controller/internal/secrets	1.449s
ok  	github.com/novox/mesh-controller/internal/store	3.311s
ok  	github.com/novox/mesh-controller/internal/testbus	1.241s
ok  	github.com/novox/mesh-controller/internal/token	1.017s
**Merge check** at `822e5212` - `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-1791509049494117359` (`builds --log build-1791509049494117359`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 52 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 files asking for a setting without saying whether it is trusted: 0 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-09T01:23:55Z 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-09T01:23:55Z 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.036s ok github.com/novox/mesh-controller/cmd/mesh-controller 170.708s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.014s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.017s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.014s ok github.com/novox/mesh-controller/examples/route-proxy 1.124s ok github.com/novox/mesh-controller/internal/artifacts 1.041s ok github.com/novox/mesh-controller/internal/broker 2.525s ok github.com/novox/mesh-controller/internal/builder 1.856s ok github.com/novox/mesh-controller/internal/catalogue 4.414s ok github.com/novox/mesh-controller/internal/conditions 2.419s ok github.com/novox/mesh-controller/internal/envfile 1.060s ok github.com/novox/mesh-controller/internal/facts 1.065s ok github.com/novox/mesh-controller/internal/identity 4.215s ok github.com/novox/mesh-controller/internal/inventory 71.258s ok github.com/novox/mesh-controller/internal/lease 17.733s ok github.com/novox/mesh-controller/internal/licences 3.798s ok github.com/novox/mesh-controller/internal/licences/adapters 1.055s ok github.com/novox/mesh-controller/internal/link 50.682s ok github.com/novox/mesh-controller/internal/lint 1.992s ok github.com/novox/mesh-controller/internal/outward 1.089s ok github.com/novox/mesh-controller/internal/overlay 1.066s ok github.com/novox/mesh-controller/internal/secrets 1.449s ok github.com/novox/mesh-controller/internal/store 3.311s ok github.com/novox/mesh-controller/internal/testbus 1.241s ok github.com/novox/mesh-controller/internal/token 1.017s ```
mesh-admin merged commit b13a0f71a4 into main 2026-10-09 07:23:51 +00:00
mesh-admin deleted branch fix/336-bus-step-waiting 2026-10-09 07:23:52 +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#173