Part of design 47's milestone R4d: route-proxy and the bus stop being built from a Dockerfile and run a pinned upstream image with the mesh's own program mounted in (ADR 0480; n8n is out of R4d, ADR 0506). One delivery group on branch feat/r4d in mesh-sdk, mesh-controller and mesh-catalog (ADR 0497): one check, one Approve, one plan; the bus upgrade waits for the operator's moment right after the merge.
Issues of this member: issue 1633, issue 1634, issue 1635.
Review: one review of the whole milestone, three rounds (reviewer-r4d@shanks, records in hq .work), then further cycles after main moved and after a failed check (reviewer-r4d-merge@shanks: the image test follows ADR 0487 clause 13; the tests' bus release is read from the nats manifest's upstream artifact). Tries before opening: mesh-sdk build-1792656380513304370 pass; mesh-controller build-1792656384769477658 pass (1504 unit tests, 2.03 s); mesh-catalog build-1792657124911732181 pass.
This member: internal/broker keeps no copy of the membership types (aliases and forwards to mesh-sdk at c61212e, pinned and vendored at the root and in modules/route-proxy); the proxy moves from examples/route-proxy to modules/route-proxy/cmd/route-proxy and connects with process.Connect and FollowMembership; route-proxy's server is a Go bundle for alpine in an archive mounted read-only at /opt/mesh on the unchanged trust image (same acme.env, internal-acme.env and ACME account directory), named in restart-on; the Dockerfile and its Makefile target go; the image test (internal/ownmanifest/image_place_test.go) checks that every image artifact builds from a Dockerfile in its own module's directory, as ADR 0487 clause 13 turned ADR 0480 clause 11's refusal of the kind into. internal/testbus reads the bus release the tests must match from the nats manifest's upstream artifact (nats:<x.y.z>-alpine@sha256:…), and from the Dockerfile's line only while the catalogue beside still has that form (main until mesh-catalog #434 merges; the captured copy). mesh-lab's route-proxy image script is now dead.
Reviewed-by: reviewer-r4d-merge@shanks at 01f615aa0a
Part of design 47's milestone R4d: route-proxy and the bus stop being built from a Dockerfile and run a pinned upstream image with the mesh's own program mounted in (ADR 0480; n8n is out of R4d, ADR 0506). One delivery group on branch `feat/r4d` in mesh-sdk, mesh-controller and mesh-catalog (ADR 0497): one check, one Approve, one plan; the bus upgrade waits for the operator's moment right after the merge.
Issues of this member: issue 1633, issue 1634, issue 1635.
Review: one review of the whole milestone, three rounds (reviewer-r4d@shanks, records in hq .work), then further cycles after main moved and after a failed check (reviewer-r4d-merge@shanks: the image test follows ADR 0487 clause 13; the tests' bus release is read from the nats manifest's upstream artifact). Tries before opening: mesh-sdk build-1792656380513304370 pass; mesh-controller build-1792656384769477658 pass (1504 unit tests, 2.03 s); mesh-catalog build-1792657124911732181 pass.
This member: `internal/broker` keeps no copy of the membership types (aliases and forwards to mesh-sdk at c61212e, pinned and vendored at the root and in modules/route-proxy); the proxy moves from examples/route-proxy to modules/route-proxy/cmd/route-proxy and connects with process.Connect and FollowMembership; route-proxy's server is a Go bundle for alpine in an archive mounted read-only at /opt/mesh on the unchanged trust image (same acme.env, internal-acme.env and ACME account directory), named in restart-on; the Dockerfile and its Makefile target go; the image test (internal/ownmanifest/image_place_test.go) checks that every image artifact builds from a Dockerfile in its own module's directory, as ADR 0487 clause 13 turned ADR 0480 clause 11's refusal of the kind into. `internal/testbus` reads the bus release the tests must match from the nats manifest's upstream artifact (`nats:<x.y.z>-alpine@sha256:…`), and from the Dockerfile's line only while the catalogue beside still has that form (main until mesh-catalog #434 merges; the captured copy). mesh-lab's route-proxy image script is now dead.
Reviewed-by: reviewer-r4d-merge@shanks at 01f615aa0ad60fff783c4580ea8f3f84a6ff023b
A bundle is built only from its module's directory (ADR 0480 clause 4), so the proxy leaves
examples/ and the controller's internal/broker; the broker keeps no second copy of what the
proxy shares with mesh-sdk. The image and its Dockerfile go, and a test holds that only
build-agent declares one (clause 11).
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
mesh-sdk on every machine running it: sent
build-agent on every machine running it: sent
mesh-tools on every machine running it: sent
route-proxy on every machine running it: sent
audit-logger on every machine running it: sent
baserow on every machine running it: sent
bazarr on every machine running it: sent
bookshelf on every machine running it: sent
confluence on every machine running it: sent
gitea on every machine running it: sent
gitlab on every machine running it: sent
grafana on every machine running it: sent
home-assistant on every machine running it: sent
icecast on every machine running it: sent
influxdb on every machine running it: sent
jackett on every machine running it: sent
jira on every machine running it: sent
kometa on every machine running it: sent
lab on every machine running it: sent
letta on every machine running it: sent
lidarr on every machine running it: sent
mesh-catalog on every machine running it: sent
model-usage on every machine running it: sent
mosquitto on every machine running it: sent
netcheck on every machine running it: sent
nextcloud on every machine running it: sent
nodered on every machine running it: sent
ombi on every machine running it: sent
openai-consumer on every machine running it: sent
radarr on every machine running it: sent
redis on every machine running it: sent
route-adapter on every machine running it: sent
searxng on every machine running it: sent
showcase on every machine running it: sent
sonarr on every machine running it: sent
tautulli on every machine running it: sent
umami on every machine running it: sent
unifi on every machine running it: sent
zsh on every machine running it: sent
Transitions
2026-10-22 11:39 (new) → proposed (announced): novox/mesh-controller#433's head announced
2026-10-22 11:53 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-22 11:53 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-22 12:05 ready → proposed (trunk moved): out of date: judged against trunk 4463991e06, the trunk is now aa9da942606d; judged again on a recheck or when it is merged
2026-10-22 12:14 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-22 12:14 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-22 12:21 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-22 12:21 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-22 12:45 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@01f615aa0ad6` — **delivered** since 2026-10-22T12:45: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/r4d`: novox/mesh-catalog@68183ee4413d, novox/mesh-controller@01f615aa0ad6, novox/mesh-sdk@c61212eba77c
- 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
- mesh-sdk on every machine running it: sent
- build-agent on every machine running it: sent
- mesh-tools on every machine running it: sent
- route-proxy on every machine running it: sent
- audit-logger on every machine running it: sent
- baserow on every machine running it: sent
- bazarr on every machine running it: sent
- bookshelf on every machine running it: sent
- confluence on every machine running it: sent
- gitea on every machine running it: sent
- gitlab on every machine running it: sent
- grafana on every machine running it: sent
- home-assistant on every machine running it: sent
- icecast on every machine running it: sent
- influxdb on every machine running it: sent
- jackett on every machine running it: sent
- jira on every machine running it: sent
- kometa on every machine running it: sent
- lab on every machine running it: sent
- letta on every machine running it: sent
- lidarr on every machine running it: sent
- mesh-catalog on every machine running it: sent
- model-usage on every machine running it: sent
- mosquitto on every machine running it: sent
- netcheck on every machine running it: sent
- nextcloud on every machine running it: sent
- nodered on every machine running it: sent
- ombi on every machine running it: sent
- openai-consumer on every machine running it: sent
- radarr on every machine running it: sent
- redis on every machine running it: sent
- route-adapter on every machine running it: sent
- searxng on every machine running it: sent
- showcase on every machine running it: sent
- sonarr on every machine running it: sent
- tautulli on every machine running it: sent
- umami on every machine running it: sent
- unifi on every machine running it: sent
- zsh on every machine running it: sent
**Transitions**
- 2026-10-22 11:39 (new) → proposed (announced): novox/mesh-controller#433's head announced
- 2026-10-22 11:53 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-22 11:53 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-22 12:05 ready → proposed (trunk moved): out of date: judged against trunk 4463991e0609, the trunk is now aa9da942606d; judged again on a recheck or when it is merged
- 2026-10-22 12:14 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-22 12:14 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-22 12:21 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-22 12:21 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-22 12:45 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`.
Merge check at 499ff5c2
Judged: head 499ff5c21861 merged into trunk 4463991e0609; read beside it: mesh-controller-main 4463991e0609, mesh-host 4065b45ae84f, mesh-tools e0fadc43d9dd
Siblings read beside it: novox/mesh-catalog#434c948f3a61c74 merged onto 529c156f6407 (main)
mesh/merge-gate: FAIL — the sibling novox/mesh-catalog#434 (head c948f3a61c74) does not merge cleanly into its base main 529c156f6407: in conflict merge-check.sh
mesh/repo-check: FAIL — the sibling novox/mesh-catalog#434 (head c948f3a61c74) does not merge cleanly into its base main 529c156f6407: in conflict merge-check.sh
Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
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
mesh-delivery: not merged. This pull request's checks passed at 499ff5c218, and now its check failed: the sibling novox/mesh-catalog#434 (head c948f3a61c74) does not merge cleanly into its base main 529c156f6407: in conflict merge-check.sh (head 499ff5c218 merged into trunk 4463991e06). A new head, or a recheck that passes, asks the operator again.
mesh-delivery: **not merged.** This pull request's checks passed at 499ff5c2186196431baf0ec9f43618e4fe86df77, and now its check failed: the sibling novox/mesh-catalog#434 (head c948f3a61c74) does not merge cleanly into its base main 529c156f6407: in conflict merge-check.sh (head 499ff5c21861 merged into trunk 4463991e0609). A new head, or a recheck that passes, asks the operator again.
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
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
mesh/merge-gate head 01f615aa0ad6 merged into trunk aa9da942606d — pass: group feat/r4d composed: every machine composes with the change as it did without …
mesh-catalog #434 runs the nats server as the upstream image named in module.json (ADR 0497) and
deletes modules/nats/Dockerfile, so the check failed opening it. The manifest's upstream nats
artifact is read first; the Dockerfile only for a catalogue from before the move (the captured copy).
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.
Part of design 47's milestone R4d: route-proxy and the bus stop being built from a Dockerfile and run a pinned upstream image with the mesh's own program mounted in (ADR 0480; n8n is out of R4d, ADR 0506). One delivery group on branch
feat/r4din mesh-sdk, mesh-controller and mesh-catalog (ADR 0497): one check, one Approve, one plan; the bus upgrade waits for the operator's moment right after the merge.Issues of this member: issue 1633, issue 1634, issue 1635.
Review: one review of the whole milestone, three rounds (reviewer-r4d@shanks, records in hq .work), then further cycles after main moved and after a failed check (reviewer-r4d-merge@shanks: the image test follows ADR 0487 clause 13; the tests' bus release is read from the nats manifest's upstream artifact). Tries before opening: mesh-sdk build-1792656380513304370 pass; mesh-controller build-1792656384769477658 pass (1504 unit tests, 2.03 s); mesh-catalog build-1792657124911732181 pass.
This member:
internal/brokerkeeps no copy of the membership types (aliases and forwards to mesh-sdk at c61212e, pinned and vendored at the root and in modules/route-proxy); the proxy moves from examples/route-proxy to modules/route-proxy/cmd/route-proxy and connects with process.Connect and FollowMembership; route-proxy's server is a Go bundle for alpine in an archive mounted read-only at /opt/mesh on the unchanged trust image (same acme.env, internal-acme.env and ACME account directory), named in restart-on; the Dockerfile and its Makefile target go; the image test (internal/ownmanifest/image_place_test.go) checks that every image artifact builds from a Dockerfile in its own module's directory, as ADR 0487 clause 13 turned ADR 0480 clause 11's refusal of the kind into.internal/testbusreads the bus release the tests must match from the nats manifest's upstream artifact (nats:<x.y.z>-alpine@sha256:…), and from the Dockerfile's line only while the catalogue beside still has that form (main until mesh-catalog #434 merges; the captured copy). mesh-lab's route-proxy image script is now dead.Reviewed-by: reviewer-r4d-merge@shanks at
01f615aa0aDelivery
novox/mesh-controller@01f615aa0ad6— delivered since 2026-10-22T12:45:51ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Group
feat/r4d: novox/mesh-catalog@68183ee441, novox/mesh-controller@01f615aa0a, novox/mesh-sdk@c61212eba7Machines
Transitions
4463991e06, the trunk is now aa9da942606d; judged again on a recheck or when it is mergedThe commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
499ff5c2Judged: head
499ff5c21861merged into trunk4463991e0609; read beside it: mesh-controller-main4463991e0609, mesh-host4065b45ae84f, mesh-toolse0fadc43d9ddSiblings read beside it: novox/mesh-catalog#434
c948f3a61c74merged onto529c156f6407(main)mesh/merge-gate: FAIL — the sibling novox/mesh-catalog#434 (head c948f3a61c74) does not merge cleanly into its base main 529c156f6407: in conflict merge-check.shmesh/repo-check: FAIL — the sibling novox/mesh-catalog#434 (head c948f3a61c74) does not merge cleanly into its base main 529c156f6407: in conflict merge-check.shDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1792661922342499524(builds --log build-1792661922342499524).mesh-delivery: not merged. This pull request's checks passed at
499ff5c218, and now its check failed: the sibling novox/mesh-catalog#434 (head c948f3a61c74) does not merge cleanly into its base main 529c156f6407: in conflict merge-check.sh (head499ff5c218merged into trunk4463991e06). A new head, or a recheck that passes, asks the operator again.Merge check at
707bfba4mesh/merge-gate: ERROR — the check could not run: build-1792662423247329953-store never became readymesh/repo-check: ERROR — the check could not run: build-1792662423247329953-store never became readyDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792662423247329953(builds --log build-1792662423247329953).Merge check at
707bfba4mesh/merge-gate: ERROR — the check could not run: build-1792667021343916128-store never became readymesh/repo-check: ERROR — the check could not run: build-1792667021343916128-store never became readyDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792667021343916128(builds --log build-1792667021343916128).