The controller takes what the watchman says: key-ttl buckets, the checks running readable, stuck keys raised, silence from presence (design 47 R2b)
#388
Merged
mesh-toolsmerged 7 commits from feat/delivery-watch into main2026-10-18 23:34:08 +00:00
Milestone R2b of design 47 (ADR 0429 release 2, made buildable by ADR 0433; ADR 0434): the controller's part of the watchman. One delivery group with mesh-delivery's feat/delivery-watch (the watchman, issue 1135, and the view's reading of it, issue 1168).
Issue 1154: a state entry may say key-ttl: true; the broker makes that bucket with the server's per-message time to live, and keeps a bucket that already has it (the server refuses to turn it off).
Issue 1155: mesh-controller.checks-running is a mirror a module may read, named as the one mirror the build seat's holders write; each running check carries when it started, kept on every heartbeat.
Issue 1156: the self-check raises each key the watchman says stopped moving (mesh-delivery-watchman_stuck, not moved) as a condition of the delivery scope, and clears it when it says moved; a node's presence is left to the silent check, which takes a not-moved stuck presence as its verdict (a machine that sleeps keeps its rule), and counts a machine whose presence says online as heard now. The SDK is pinned at mesh-sdk #34's merge.
Issue 1157: a refused send key raises a condition naming the plan and the machine; the timer that stood in for it is deleted, and the plan writes the key again at its next look.
Tests: 1154/AC1-AC4, 1155/AC1-AC3, 1156/AC1-AC4, 1157/AC1-AC3. Try build-1792364222411359887 passed in 4 m 29 s at ac79e293 (unit level 2314 tests, 2.66 s of 5 s).
Code lines (acceptance test 20; non-test Go, no blank or comment lines): 113,648 on this branch, 113,361 on main (+287).
Delivery: the controller to novox, with the group's mesh-delivery-watchman and mesh-delivery-view, whose first builds this merge asks (issue 1146, mesh-controller #387 delivered first).
Milestone R2b of design 47 (ADR 0429 release 2, made buildable by ADR 0433; ADR 0434): the controller's part of the watchman. One delivery group with mesh-delivery's feat/delivery-watch (the watchman, issue 1135, and the view's reading of it, issue 1168).
- Issue 1154: a state entry may say `key-ttl: true`; the broker makes that bucket with the server's per-message time to live, and keeps a bucket that already has it (the server refuses to turn it off).
- Issue 1155: `mesh-controller.checks-running` is a mirror a module may read, named as the one mirror the build seat's holders write; each running check carries when it started, kept on every heartbeat.
- Issue 1156: the self-check raises each key the watchman says stopped moving (`mesh-delivery-watchman_stuck`, not moved) as a condition of the delivery scope, and clears it when it says moved; a node's presence is left to the silent check, which takes a not-moved stuck presence as its verdict (a machine that sleeps keeps its rule), and counts a machine whose presence says online as heard now. The SDK is pinned at mesh-sdk #34's merge.
- Issue 1157: a refused send key raises a condition naming the plan and the machine; the timer that stood in for it is deleted, and the plan writes the key again at its next look.
Tests: 1154/AC1-AC4, 1155/AC1-AC3, 1156/AC1-AC4, 1157/AC1-AC3. Try build-1792364222411359887 passed in 4 m 29 s at ac79e293 (unit level 2314 tests, 2.66 s of 5 s).
Code lines (acceptance test 20; non-test Go, no blank or comment lines): 113,648 on this branch, 113,361 on main (+287).
Delivery: the controller to novox, with the group's mesh-delivery-watchman and mesh-delivery-view, whose first builds this merge asks (issue 1146, mesh-controller #387 delivered first).
Reviewed-by: reviewer-r12@shanks at ac79e29319ee2f4654c891c28af0a20eb10a288d
mesh/merge-gate head ac79e29319ee merged into trunk 5939bbdefe5a — pass: group feat/delivery-watch composed: every machine composes with the change as it d…
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
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before route-proxy, build-agent is judged on its first machine
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-controller on every machine running it: sent
route-proxy on every machine running it: sent
build-agent on every machine running it: sent
Transitions
2026-10-18 23:23 (new) → proposed (announced): novox/mesh-controller#388's head announced
2026-10-18 23:31 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-18 23:31 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-18 23:35 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-18 23:35 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 — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-18 23:47 delivering → delivered (done): its walk is done, carrying its own commit: 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@ac79e29319ee` — **delivered** since 2026-10-18T23:47:51Z
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller, route-proxy
- tier 1: build-agent
- ace: receives route-proxy, build-agent
- g14: receives build-agent
- novox: receives mesh-controller, route-proxy, build-agent
- shanks: receives build-agent
- 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
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before route-proxy, build-agent is judged on its first machine
**Group** `feat/delivery-watch`: novox/mesh-controller@ac79e29319ee, novox/mesh-delivery@954728b39042
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-controller on every machine running it: sent
- route-proxy on every machine running it: sent
- build-agent on every machine running it: sent
**Transitions**
- 2026-10-18 23:23 (new) → proposed (announced): novox/mesh-controller#388's head announced
- 2026-10-18 23:31 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-18 23:31 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-18 23:35 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-18 23:35 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 — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-18 23:47 delivering → delivered (done): its walk is done, carrying its own commit: 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`.
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
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before route-proxy, build-agent is judged on its first machine
read by no module's build: cmd/mesh-controller/plan_looks_test.go, cmd/mesh-controller/rollout_silent_bus_integration_test.go, cmd/mesh-controller/stuck_probe_integration_test.go, cmd/mesh-controller/stuck_probe_test.go, internal/broker/checks_running_mirror_test.go, internal/broker/controller_buckets_test.go, internal/broker/state_integration_test.go, internal/broker/state_keyttl_test.go, internal/catalogue/state_test.go, internal/inventory/state_keyttl_test.go, internal/link/checks_running_started_test.go, testdata/beside/CAPTURED
Run by the build seat on shanks as build-1792365803641661891 (builds --log build-1792365803641661891).
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.
Milestone R2b of design 47 (ADR 0429 release 2, made buildable by ADR 0433; ADR 0434): the controller's part of the watchman. One delivery group with mesh-delivery's feat/delivery-watch (the watchman, issue 1135, and the view's reading of it, issue 1168).
key-ttl: true; the broker makes that bucket with the server's per-message time to live, and keeps a bucket that already has it (the server refuses to turn it off).mesh-controller.checks-runningis a mirror a module may read, named as the one mirror the build seat's holders write; each running check carries when it started, kept on every heartbeat.mesh-delivery-watchman_stuck, not moved) as a condition of the delivery scope, and clears it when it says moved; a node's presence is left to the silent check, which takes a not-moved stuck presence as its verdict (a machine that sleeps keeps its rule), and counts a machine whose presence says online as heard now. The SDK is pinned at mesh-sdk #34's merge.Tests: 1154/AC1-AC4, 1155/AC1-AC3, 1156/AC1-AC4, 1157/AC1-AC3. Try build-1792364222411359887 passed in 4 m 29 s at
ac79e293(unit level 2314 tests, 2.66 s of 5 s).Code lines (acceptance test 20; non-test Go, no blank or comment lines): 113,648 on this branch, 113,361 on main (+287).
Delivery: the controller to novox, with the group's mesh-delivery-watchman and mesh-delivery-view, whose first builds this merge asks (issue 1146, mesh-controller #387 delivered first).
Reviewed-by: reviewer-r12@shanks at
ac79e29319Delivery
novox/mesh-controller@ac79e29319ee— delivered since 2026-10-18T23:47:51ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Group
feat/delivery-watch: novox/mesh-controller@ac79e29319, novox/mesh-delivery@954728b390Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
ac79e293Judged: head
ac79e29319eemerged into trunk5939bbdefe5a; read beside it: mesh-catalogb4527d9091e9, mesh-controller-main5939bbdefe5a, mesh-host89025ad004d4, mesh-tools7412c5b6c9c5mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792365803641661891(builds --log build-1792365803641661891).