Promise the delivery seat's checks verb, optional until its holder serves it (hq ADR 0239) #117

Merged
mesh-admin merged 1 commits from feat/delivery-checks-verb into main 2026-10-07 17:58:59 +00:00
Contributor

What the mesh's checks said of a pull request had no verb: mesh/merge-gate and mesh/repo-check verdicts were read by scraping this controller's journal. mesh-delivery answers it as mesh-delivery.checks (repository + number, or repository + commit). Its holder side is novox/mesh-catalog's PR on the same branch name, feat/delivery-checks-verb, which makes the two one delivery group; this one goes first.

Why Optional. Adding a verb to a mesh seat whose holder lives in another repository deadlocks today: this controller would refuse the mesh-delivery that does not serve checks (does not serve checks, which that seat's protocol promises), the controller before it refuses the one that does (says it serves checks, which that seat's protocol does not promise), and in between every catalogue check would fail on a module nobody touched. Both were reproduced with module check before this change. A Verb can now be marked Optional (never stored or said): served or not, the holder holds. Once mesh-delivery serves checks everywhere, the mark is removed and it is a condition of holding like the rest.

Checked locally: merge-check.sh (gofmt, vet, the whole suite under -race against a throwaway store) passes; module check of every catalogue manifest passes with this binary both before and after the catalogue PR.

hq: design 33 §7 says a seat's tools are "additive within a version" while §3 makes every verb a condition of holding; the Optional mark is how the two meet, and wants a line in design 33 (not written here).

What the mesh's checks said of a pull request had no verb: `mesh/merge-gate` and `mesh/repo-check` verdicts were read by scraping this controller's journal. mesh-delivery answers it as `mesh-delivery.checks` (repository + number, or repository + commit). Its holder side is novox/mesh-catalog's PR on the same branch name, `feat/delivery-checks-verb`, which makes the two one delivery group; this one goes first. **Why `Optional`.** Adding a verb to a mesh seat whose holder lives in another repository deadlocks today: this controller would refuse the mesh-delivery that does not serve `checks` (`does not serve checks, which that seat's protocol promises`), the controller before it refuses the one that does (`says it serves checks, which that seat's protocol does not promise`), and in between every catalogue check would fail on a module nobody touched. Both were reproduced with `module check` before this change. A `Verb` can now be marked `Optional` (never stored or said): served or not, the holder holds. Once mesh-delivery serves `checks` everywhere, the mark is removed and it is a condition of holding like the rest. Checked locally: `merge-check.sh` (gofmt, vet, the whole suite under -race against a throwaway store) passes; `module check` of every catalogue manifest passes with this binary both before and after the catalogue PR. hq: design 33 §7 says a seat's tools are "additive within a version" while §3 makes every verb a condition of holding; the `Optional` mark is how the two meet, and wants a line in design 33 (not written here).
mesh-admin added 1 commit 2026-10-07 17:40:17 +00:00
Promise the delivery seat's checks verb, optional until its holder serves it (hq ADR 0239)
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
mesh/delivery-group group feat/delivery-checks-verb closed: a member was closed before the group merged
1fdff00794
What the mesh's checks said of a pull request had no verb: the verdict was read from this
controller's journal. mesh-delivery answers it as checks. A verb added to a mesh seat whose holder
lives in another repository deadlocked: this controller would refuse the holder that does not serve
it, the one before it the holder that does, and every catalogue check between the two would fail on
mesh-delivery. So a verb can be marked optional — served or not, the holder holds — until every
holder serves it.
Author
Contributor

Delivery novox/mesh-controller@1fdff00794e9 — delivered since 2026-10-07T18:13:57Z

Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

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

Group feat/delivery-checks-verb, in order: novox/mesh-controller@1fdff00794 → novox/mesh-catalog@13894744a7

Machines

  • mesh-controller on novox: passed — healthy 3 times over 3m40s
  • mesh-controller on the rest running it: sent
  • build-agent on ace: passed — healthy 3 times over 3m25s
  • build-agent on the rest running it: sent
  • route-proxy on ace: passed — healthy 3 times over 3m33s
  • route-proxy on the rest running it: sent

Transitions

  • 2026-10-07 17:40 (new) → proposed (announced): novox/mesh-controller#117's head announced
  • 2026-10-07 17:52 proposed → checked (checked): the verdict names this commit
  • 2026-10-07 17:52 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-07 17:59 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-07 17:59 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
  • 2026-10-07 18:13 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@1fdff00794e9` — **delivered** since 2026-10-07T18:13:57Z **Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - tier 2: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives mesh-controller, build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves **Group** `feat/delivery-checks-verb`, in order: novox/mesh-controller@1fdff00794e9 → novox/mesh-catalog@13894744a701 - novox/mesh-controller@1fdff00794e9 before novox/mesh-catalog@13894744a701: declared **Machines** - mesh-controller on novox: passed — healthy 3 times over 3m40s - mesh-controller on the rest running it: sent - build-agent on ace: passed — healthy 3 times over 3m25s - build-agent on the rest running it: sent - route-proxy on ace: passed — healthy 3 times over 3m33s - route-proxy on the rest running it: sent **Transitions** - 2026-10-07 17:40 (new) → proposed (announced): novox/mesh-controller#117's head announced - 2026-10-07 17:52 proposed → checked (checked): the verdict names this commit - 2026-10-07 17:52 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-07 17:59 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-07 17:59 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path - 2026-10-07 18:13 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 1fdff007

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

Change plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step

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

Run by the build seat on shanks as build-1791394839899485954 (builds --log build-1791394839899485954).

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

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

a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok  	github.com/novox/mesh-controller/cmd/mesh-builder	1.034s
ok  	github.com/novox/mesh-controller/cmd/mesh-controller	451.780s
ok  	github.com/novox/mesh-controller/examples/objectstore-provisioner	1.042s
ok  	github.com/novox/mesh-controller/examples/postgres-provisioner	1.055s
ok  	github.com/novox/mesh-controller/examples/redis-provisioner	1.014s
ok  	github.com/novox/mesh-controller/examples/route-proxy	1.234s
ok  	github.com/novox/mesh-controller/internal/artifacts	1.076s
ok  	github.com/novox/mesh-controller/internal/broker	2.571s
ok  	github.com/novox/mesh-controller/internal/builder	1.503s
ok  	github.com/novox/mesh-controller/internal/catalogue	4.316s
ok  	github.com/novox/mesh-controller/internal/conditions	2.025s
ok  	github.com/novox/mesh-controller/internal/envfile	1.053s
ok  	github.com/novox/mesh-controller/internal/facts	1.069s
ok  	github.com/novox/mesh-controller/internal/identity	42.770s
ok  	github.com/novox/mesh-controller/internal/inventory	280.930s
ok  	github.com/novox/mesh-controller/internal/lease	17.694s
ok  	github.com/novox/mesh-controller/internal/licences	45.531s
ok  	github.com/novox/mesh-controller/internal/licences/adapters	1.056s
ok  	github.com/novox/mesh-controller/internal/link	85.009s
ok  	github.com/novox/mesh-controller/internal/lint	1.965s
ok  	github.com/novox/mesh-controller/internal/outward	1.092s
ok  	github.com/novox/mesh-controller/internal/overlay	1.069s
ok  	github.com/novox/mesh-controller/internal/secrets	1.503s
ok  	github.com/novox/mesh-controller/internal/store	12.340s
ok  	github.com/novox/mesh-controller/internal/testbus	1.241s
ok  	github.com/novox/mesh-controller/internal/token	1.013s
**Merge check** at `1fdff007` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Change plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step - tier 0: mesh-controller - tier 1: build-agent - tier 2: route-proxy - ace: receives build-agent, route-proxy - g14: receives build-agent - novox: receives mesh-controller, build-agent, route-proxy - shanks: receives build-agent - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves Run by the build seat on shanks as `build-1791394839899485954` (`builds --log build-1791394839899485954`). ``` --- the gate: build-agent, mesh-controller, route-proxy mesh-controller: ok, 46 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T17:23:39Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-07T17:23:39Z machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy --- its merge-check.sh (go toolchain) ok github.com/novox/mesh-controller/cmd/mesh-builder 1.034s ok github.com/novox/mesh-controller/cmd/mesh-controller 451.780s ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.042s ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.055s ok github.com/novox/mesh-controller/examples/redis-provisioner 1.014s ok github.com/novox/mesh-controller/examples/route-proxy 1.234s ok github.com/novox/mesh-controller/internal/artifacts 1.076s ok github.com/novox/mesh-controller/internal/broker 2.571s ok github.com/novox/mesh-controller/internal/builder 1.503s ok github.com/novox/mesh-controller/internal/catalogue 4.316s ok github.com/novox/mesh-controller/internal/conditions 2.025s ok github.com/novox/mesh-controller/internal/envfile 1.053s ok github.com/novox/mesh-controller/internal/facts 1.069s ok github.com/novox/mesh-controller/internal/identity 42.770s ok github.com/novox/mesh-controller/internal/inventory 280.930s ok github.com/novox/mesh-controller/internal/lease 17.694s ok github.com/novox/mesh-controller/internal/licences 45.531s ok github.com/novox/mesh-controller/internal/licences/adapters 1.056s ok github.com/novox/mesh-controller/internal/link 85.009s ok github.com/novox/mesh-controller/internal/lint 1.965s ok github.com/novox/mesh-controller/internal/outward 1.092s ok github.com/novox/mesh-controller/internal/overlay 1.069s ok github.com/novox/mesh-controller/internal/secrets 1.503s ok github.com/novox/mesh-controller/internal/store 12.340s ok github.com/novox/mesh-controller/internal/testbus 1.241s ok github.com/novox/mesh-controller/internal/token 1.013s ```
mesh-admin merged commit f6aea4bfbb into main 2026-10-07 17:58:59 +00:00
mesh-admin deleted branch feat/delivery-checks-verb 2026-10-07 17:59:00 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#117