Follow-up of mesh-controller #407 (ADR 0457's catch-up, delivered 2026-10-20 14:08 UTC). Its every pass logged 'the router cannot be read, so is not caught up now: nats: invalid subscription' for 110 gaps and planned nothing, keycloak #378's c0880c4d among them (issue 1336).
030bdc53: routerAskIDs/askIDsOf ignores only nats.ErrBadSubscription from a second Stop: the lister stops its own watch at the last key (vendored nats.go jetstream/kv.go:1467-1480), so the second Stop always failed. Integration test router_ids_integration_test.go on a real bucket.
0aa58877: only a pull request's merge into the trunk is a gap (ADR 0463 §1); merges made inside branches, which the trunk's history lists (15 of the 110), are not. Unit test on real forge subjects, seen failing on main.
3045af47 + 9f0d9098: a merge before the earliest merge the controller keeps on any trunk, less ten minutes, is history (ADR 0463 §2, accepted with the operator's Approve 2026-10-20): Inventory.EarliestKept, sinceTheRecord; a trunk with no kept merge of its own keeps its later merges as gaps. Each pass logs where the record begins and, per trunk, how many merges fall since (§3). Unit and integration tests.
Checks before this pull request: try build-1792507790551679452 at this head passed (1456 unit tests in 2.33 s, 2627 integration tests).
Live after its delivery: the controller's log names where the records begin; a plan of novox/mesh-catalog carrying c0880c4d builds keycloak; no condition names a merge made inside a branch.
Opened along the way: 1420, 1421, 1422, 1424, 1425.
Follow-up of mesh-controller #407 (ADR 0457's catch-up, delivered 2026-10-20 14:08 UTC). Its every pass logged 'the router cannot be read, so <repo> <commit> is not caught up now: nats: invalid subscription' for 110 gaps and planned nothing, keycloak #378's c0880c4d among them (issue 1336).
- 030bdc53: routerAskIDs/askIDsOf ignores only nats.ErrBadSubscription from a second Stop: the lister stops its own watch at the last key (vendored nats.go jetstream/kv.go:1467-1480), so the second Stop always failed. Integration test router_ids_integration_test.go on a real bucket.
- 0aa58877: only a pull request's merge into the trunk is a gap (ADR 0463 §1); merges made inside branches, which the trunk's history lists (15 of the 110), are not. Unit test on real forge subjects, seen failing on main.
- 3045af47 + 9f0d9098: a merge before the earliest merge the controller keeps on any trunk, less ten minutes, is history (ADR 0463 §2, accepted with the operator's Approve 2026-10-20): Inventory.EarliestKept, sinceTheRecord; a trunk with no kept merge of its own keeps its later merges as gaps. Each pass logs where the record begins and, per trunk, how many merges fall since (§3). Unit and integration tests.
Checks before this pull request: try build-1792507790551679452 at this head passed (1456 unit tests in 2.33 s, 2627 integration tests).
Live after its delivery: the controller's log names where the records begin; a plan of novox/mesh-catalog carrying c0880c4d builds keycloak; no condition names a merge made inside a branch.
Opened along the way: 1420, 1421, 1422, 1424, 1425.
Reviewed-by: review-1336b@shanks at 9f0d9098b7359b8a21e51ec1d62043ec0d373058
Issues: 1336
mesh/merge-gate head 9f0d9098b735 merged into trunk d163304e3ff1 — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
Deliverynovox/mesh-controller@9f0d9098b735 — delivered since 2026-10-20T17:48:28Z
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
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 build-agent is judged on its first machine
Machines
mesh-controller on every machine running it: sent
build-agent on every machine running it: sent
Transitions
2026-10-20 17:00 (new) → proposed (announced): novox/mesh-controller#408's head announced
2026-10-20 17:11 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-20 17:11 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-20 17:45 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-20 17:45 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-20 17:48 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@9f0d9098b735` — **delivered** since 2026-10-20T17:48:28Z
**Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- ace: receives build-agent
- g14: receives build-agent
- novox: receives mesh-controller, build-agent
- shanks: receives build-agent
- 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 build-agent is judged on its first machine
**Machines**
- mesh-controller on every machine running it: sent
- build-agent on every machine running it: sent
**Transitions**
- 2026-10-20 17:00 (new) → proposed (announced): novox/mesh-controller#408's head announced
- 2026-10-20 17:11 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-20 17:11 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-20 17:45 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-20 17:45 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-20 17:48 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 9f0d9098
Judged: head 9f0d9098b735 merged into trunk d163304e3ff1; read beside it: mesh-catalog a67f01963f0d, mesh-controller-main d163304e3ff1, mesh-host ce1b97ad973d, mesh-tools 18260ce9beca
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
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 build-agent is judged on its first machine
read by no module's build: cmd/mesh-controller/catch_up_integration_test.go, cmd/mesh-controller/catch_up_test.go, cmd/mesh-controller/router_ids_integration_test.go, internal/inventory/chain_rollouts_test.go
Run by the build seat on shanks as build-1792515649004815194 (builds --log build-1792515649004815194).
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.
Follow-up of mesh-controller #407 (ADR 0457's catch-up, delivered 2026-10-20 14:08 UTC). Its every pass logged 'the router cannot be read, so is not caught up now: nats: invalid subscription' for 110 gaps and planned nothing, keycloak #378's c0880c4d among them (issue 1336).
030bdc53: routerAskIDs/askIDsOf ignores only nats.ErrBadSubscription from a second Stop: the lister stops its own watch at the last key (vendored nats.go jetstream/kv.go:1467-1480), so the second Stop always failed. Integration test router_ids_integration_test.go on a real bucket.0aa58877: only a pull request's merge into the trunk is a gap (ADR 0463 §1); merges made inside branches, which the trunk's history lists (15 of the 110), are not. Unit test on real forge subjects, seen failing on main.3045af47+9f0d9098: a merge before the earliest merge the controller keeps on any trunk, less ten minutes, is history (ADR 0463 §2, accepted with the operator's Approve 2026-10-20): Inventory.EarliestKept, sinceTheRecord; a trunk with no kept merge of its own keeps its later merges as gaps. Each pass logs where the record begins and, per trunk, how many merges fall since (§3). Unit and integration tests.Checks before this pull request: try build-1792507790551679452 at this head passed (1456 unit tests in 2.33 s, 2627 integration tests).
Live after its delivery: the controller's log names where the records begin; a plan of novox/mesh-catalog carrying c0880c4d builds keycloak; no condition names a merge made inside a branch.
Opened along the way: 1420, 1421, 1422, 1424, 1425.
Reviewed-by: review-1336b@shanks at
9f0d9098b7Issues: 1336
Delivery
novox/mesh-controller@9f0d9098b735— delivered since 2026-10-20T17:48:28ZDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
9f0d9098Judged: head
9f0d9098b735merged into trunkd163304e3ff1; read beside it: mesh-cataloga67f01963f0d, mesh-controller-maind163304e3ff1, mesh-hostce1b97ad973d, mesh-tools18260ce9becamesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792515649004815194(builds --log build-1792515649004815194).