Two findings of the first live self-check (2026-10-06 08:37 UTC).
D8 refused (bus.controller.refused, 24×): the controller's grant lacked mesh.seat.node-intrusion-prevention.tool.banned.<node>.
broker.VerbsTheSelfCheckAsks names the seat verbs the self-check asks; the controller is granted mesh.seat.<seat>.tool.<verb>.* for each.
Each probe declares Asks; askSeatTool refuses a verb the running probe did not declare; TestEverySeatVerbAProbeAsksIsGranted walks the registry and fails any declared verb the composed permissions do not match (or that VerbsTheSelfCheckAsks omits).
link.AskSeatTool returns a refused publish at once ("the bus refused the controller asking …") by listening for the connection's permission-violation error on that subject, instead of waiting out its timeout. Tested against an authenticating nats:2.11 that denies mesh.seat.>: answered in <1 ms.
D8 asks the machines in parallel (four sequential 10 s waits outlast the probe's 30 s).
D10 false positive: a node-engine reports its version as its delivery directory = the archive digest's first 12 hex (31045596c83a, catalogue versionOf); the live declaration's path is /usr/lib/nox-mesh-host/versions/31045596c83a, so every machine runs exactly what the mesh holds. D10 compared it with the build commit (1545b00a). It now compares with the versions/<v> paths of the registered mesh-host manifest (and, for a hand-placed engine, the commit). Test: TestANodeEngineIsJudgedByTheVersionItIsDeliveredAs.
Tests: full suite green (GOFLAGS=-mod=vendor GOPROXY=off go test -count=1 -p 1 ./..., postgres:17 + nats:2.11), -race on the touched packages, vet/gofmt clean.
Rollout: merge mesh-host#34 (genesis lock, held equal by the genesis test) and this; after the controller's plan, push novox (the broker's machine) so the user list carries the new grant. machine.*.core-behind clears on the next doctor run; bus.controller.refused clears an hour after the last refusal (S9's quiet bound).
Two findings of the first live self-check (2026-10-06 08:37 UTC).
**D8 refused (`bus.controller.refused`, 24×):** the controller's grant lacked `mesh.seat.node-intrusion-prevention.tool.banned.<node>`.
- `broker.VerbsTheSelfCheckAsks` names the seat verbs the self-check asks; the controller is granted `mesh.seat.<seat>.tool.<verb>.*` for each.
- Each probe declares `Asks`; `askSeatTool` refuses a verb the running probe did not declare; `TestEverySeatVerbAProbeAsksIsGranted` walks the registry and fails any declared verb the composed permissions do not match (or that VerbsTheSelfCheckAsks omits).
- `link.AskSeatTool` returns a refused publish **at once** ("the bus refused the controller asking …") by listening for the connection's permission-violation error on that subject, instead of waiting out its timeout. Tested against an authenticating nats:2.11 that denies `mesh.seat.>`: answered in <1 ms.
- D8 asks the machines in parallel (four sequential 10 s waits outlast the probe's 30 s).
**D10 false positive:** a node-engine reports its version as its delivery directory = the archive digest's first 12 hex (`31045596c83a`, catalogue `versionOf`); the live declaration's path is `/usr/lib/nox-mesh-host/versions/31045596c83a`, so every machine runs exactly what the mesh holds. D10 compared it with the build commit (`1545b00a`). It now compares with the `versions/<v>` paths of the registered mesh-host manifest (and, for a hand-placed engine, the commit). Test: `TestANodeEngineIsJudgedByTheVersionItIsDeliveredAs`.
Tests: full suite green (`GOFLAGS=-mod=vendor GOPROXY=off go test -count=1 -p 1 ./...`, postgres:17 + nats:2.11), `-race` on the touched packages, vet/gofmt clean.
**Rollout:** merge mesh-host#34 (genesis lock, held equal by the genesis test) and this; after the controller's plan, push novox (the broker's machine) so the user list carries the new grant. `machine.*.core-behind` clears on the next doctor run; `bus.controller.refused` clears an hour after the last refusal (S9's quiet bound).
Live on 2026-10-06, two of the first self-check's findings were its own:
- D8 asked every machine's node-intrusion-prevention.banned, and the
controller's grant did not name the subject: the bus refused it 24 times
and D8 timed out after thirty seconds instead of saying so. The verbs the
self-check asks are named in broker.VerbsTheSelfCheckAsks and granted
(mesh.seat.<seat>.tool.<verb>.*); each probe declares the seat verbs it
calls, askSeatTool refuses an undeclared one, and a test over the
registry fails a probe whose question the controller is not granted.
AskSeatTool now returns a refused publish at once ("the bus refused…")
instead of waiting out its timeout; D8 asks the machines in parallel.
- D10 read every machine as behind right after a push: a node-engine says
its version as the directory it is delivered into, the archive's digest
(31045596c83a, catalogue versionOf), and D10 compared that with the
build's commit (1545b00a). It now compares with the versions the
registered build is delivered as, and a hand-placed engine's commit.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#80 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@9cf47f4429e7` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#80 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
This repo is archived. You cannot comment on pull requests.
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.
Two findings of the first live self-check (2026-10-06 08:37 UTC).
D8 refused (
bus.controller.refused, 24×): the controller's grant lackedmesh.seat.node-intrusion-prevention.tool.banned.<node>.broker.VerbsTheSelfCheckAsksnames the seat verbs the self-check asks; the controller is grantedmesh.seat.<seat>.tool.<verb>.*for each.Asks;askSeatToolrefuses a verb the running probe did not declare;TestEverySeatVerbAProbeAsksIsGrantedwalks the registry and fails any declared verb the composed permissions do not match (or that VerbsTheSelfCheckAsks omits).link.AskSeatToolreturns a refused publish at once ("the bus refused the controller asking …") by listening for the connection's permission-violation error on that subject, instead of waiting out its timeout. Tested against an authenticating nats:2.11 that deniesmesh.seat.>: answered in <1 ms.D10 false positive: a node-engine reports its version as its delivery directory = the archive digest's first 12 hex (
31045596c83a, catalogueversionOf); the live declaration's path is/usr/lib/nox-mesh-host/versions/31045596c83a, so every machine runs exactly what the mesh holds. D10 compared it with the build commit (1545b00a). It now compares with theversions/<v>paths of the registered mesh-host manifest (and, for a hand-placed engine, the commit). Test:TestANodeEngineIsJudgedByTheVersionItIsDeliveredAs.Tests: full suite green (
GOFLAGS=-mod=vendor GOPROXY=off go test -count=1 -p 1 ./..., postgres:17 + nats:2.11),-raceon the touched packages, vet/gofmt clean.Rollout: merge mesh-host#34 (genesis lock, held equal by the genesis test) and this; after the controller's plan, push novox (the broker's machine) so the user list carries the new grant.
machine.*.core-behindclears on the next doctor run;bus.controller.refusedclears an hour after the last refusal (S9's quiet bound).Live on 2026-10-06, two of the first self-check's findings were its own: - D8 asked every machine's node-intrusion-prevention.banned, and the controller's grant did not name the subject: the bus refused it 24 times and D8 timed out after thirty seconds instead of saying so. The verbs the self-check asks are named in broker.VerbsTheSelfCheckAsks and granted (mesh.seat.<seat>.tool.<verb>.*); each probe declares the seat verbs it calls, askSeatTool refuses an undeclared one, and a test over the registry fails a probe whose question the controller is not granted. AskSeatTool now returns a refused publish at once ("the bus refused…") instead of waiting out its timeout; D8 asks the machines in parallel. - D10 read every machine as behind right after a push: a node-engine says its version as the directory it is delivered into, the archive's digest (31045596c83a, catalogue versionOf), and D10 compared that with the build's commit (1545b00a). It now compares with the versions the registered build is delivered as, and a hand-placed engine's commit.Delivery
novox/mesh-controller@9cf47f4429e7— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.