Design 47, milestone 2, one release with mesh-catalog's pull request of the same branch name (ADR 0406). Issue 974.
A rollout advances on events: built, sent, the machines' reports, the provisioner's word, a verb's end, the controller's own plan-moved, and taking the lease. The 30 s rollout ticker is gone. Each send puts a key in mesh-controller_rollout-silent (time to live ApplySilentAfter); a report deletes it, and its expiry names the machine silent. Failed steps and unknown walk ends get named one-shot retries.
Every plan writer goes through the one hook that says plan-moved, proven by a source test and a store test.
Three work queues: delivery builds on the seat stream, then CHECKS_READY, then CHECKS_OTHER, each check stream with one subject per pull request keeping the newest. A ready check is asked with delivery-check ready. A request left on the third stream is dropped when taken if the pull request's key says that head and trunk are judged (pass, warning or fail), or mesh-controller_checks-running says they are being checked. A running check watches its pull request's key in mesh-delivery_pulls and stops as superseded when its head or trunk moves, saying no verdict. The queue reordering (issue 558) and the forge-asking cancel (issue 726) are gone.
Acceptance (design 47): test 7 TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt; test 5 TestTwoMergesWithinAMinute… (store-backed, listed in testdata/store-tests).
Reviewed in three rounds by an independent reviewer; approved at this head. Opened along the way: 1012, 1013, 1016.
Design 47, milestone 2, one release with mesh-catalog's pull request of the same branch name (ADR 0406). Issue 974.
- A rollout advances on events: built, sent, the machines' reports, the provisioner's word, a verb's end, the controller's own plan-moved, and taking the lease. The 30 s rollout ticker is gone. Each send puts a key in `mesh-controller_rollout-silent` (time to live ApplySilentAfter); a report deletes it, and its expiry names the machine silent. Failed steps and unknown walk ends get named one-shot retries.
- Every plan writer goes through the one hook that says plan-moved, proven by a source test and a store test.
- Three work queues: delivery builds on the seat stream, then `CHECKS_READY`, then `CHECKS_OTHER`, each check stream with one subject per pull request keeping the newest. A ready check is asked with `delivery-check ready`. A request left on the third stream is dropped when taken if the pull request's key says that head and trunk are judged (pass, warning or fail), or `mesh-controller_checks-running` says they are being checked. A running check watches its pull request's key in `mesh-delivery_pulls` and stops as superseded when its head or trunk moves, saying no verdict. The queue reordering (issue 558) and the forge-asking cancel (issue 726) are gone.
- Acceptance (design 47): test 7 `TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt`; test 5 `TestTwoMergesWithinAMinute…` (store-backed, listed in testdata/store-tests).
Reviewed in three rounds by an independent reviewer; approved at this head. Opened along the way: 1012, 1013, 1016.
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
gitea on every machine running it: sent
mesh-delivery on every machine running it: sent
Transitions
2026-10-17 12:15 (new) → proposed (announced): novox/mesh-controller#368's head announced
2026-10-17 12:21 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-17 12:21 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-17 12:54 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-17 12:54 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-17 12:59 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@0f21fe7888be` — **delivered** since 2026-10-17T12:59:36Z
**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/events-and-queues`, in order: novox/mesh-controller@0f21fe7888be → novox/mesh-catalog@94f65cccd9c1
- novox/mesh-controller@0f21fe7888be before novox/mesh-catalog@94f65cccd9c1: declared, over built by
- 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
- gitea on every machine running it: sent
- mesh-delivery on every machine running it: sent
**Transitions**
- 2026-10-17 12:15 (new) → proposed (announced): novox/mesh-controller#368's head announced
- 2026-10-17 12:21 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-17 12:21 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-17 12:54 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-17 12:54 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-17 12:59 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
Reviewed by review-events@shanks: Milestone 2 of design 47 (issue 974, ADR 0406): approved after three review rounds; both checks green incl. acceptance 5 and 7. Marked through mesh-delivery.mark-ready (novox/hq issue 913).
ready at 0f21fe7888bed2ffaa8523120746d53a8637980e
Reviewed by review-events@shanks: Milestone 2 of design 47 (issue 974, ADR 0406): approved after three review rounds; both checks green incl. acceptance 5 and 7. Marked through mesh-delivery.mark-ready (novox/hq issue 913).
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
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.
Design 47, milestone 2, one release with mesh-catalog's pull request of the same branch name (ADR 0406). Issue 974.
mesh-controller_rollout-silent(time to live ApplySilentAfter); a report deletes it, and its expiry names the machine silent. Failed steps and unknown walk ends get named one-shot retries.CHECKS_READY, thenCHECKS_OTHER, each check stream with one subject per pull request keeping the newest. A ready check is asked withdelivery-check ready. A request left on the third stream is dropped when taken if the pull request's key says that head and trunk are judged (pass, warning or fail), ormesh-controller_checks-runningsays they are being checked. A running check watches its pull request's key inmesh-delivery_pullsand stops as superseded when its head or trunk moves, saying no verdict. The queue reordering (issue 558) and the forge-asking cancel (issue 726) are gone.TestARolloutAdvancesOnEventsAndAReplacedControllerResumesIt; test 5TestTwoMergesWithinAMinute…(store-backed, listed in testdata/store-tests).Reviewed in three rounds by an independent reviewer; approved at this head. Opened along the way: 1012, 1013, 1016.
Delivery
novox/mesh-controller@0f21fe7888be— delivered since 2026-10-17T12:59:36ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Group
feat/events-and-queues, in order: novox/mesh-controller@0f21fe7888 → novox/mesh-catalog@94f65cccd9Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
0f21fe78Judged: head
0f21fe7888bemerged into trunk7d80155d1636; read beside it: mesh-catalogaff6643905a7, mesh-controller-main7d80155d1636, mesh-hostcd13f7726ef0, mesh-tools7412c5b6c9c5Siblings read beside it: novox/mesh-catalog#345
52f70f42b749merged ontoa7d526838ab0(main)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 passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1792239337404877480(builds --log build-1792239337404877480).ready at
0f21fe7888Reviewed by review-events@shanks: Milestone 2 of design 47 (issue 974, ADR 0406): approved after three review rounds; both checks green incl. acceptance 5 and 7. Marked through mesh-delivery.mark-ready (novox/hq issue 913).
Merge check at
0f21fe78Judged: head
0f21fe7888bemerged into trunk7d80155d1636; read beside it: mesh-catalog344935e313e4, mesh-controller-main7d80155d1636, mesh-hostcd13f7726ef0, mesh-tools7412c5b6c9c5Siblings read beside it: novox/mesh-catalog#345
94f65cccd9c1merged ontoa7d526838ab0(main)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 passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1792241225146243278(builds --log build-1792241225146243278).