Issue 1708: the operator's 'The controller stopped listening' alerts at 14:22 and 14:31 were real stalls (2 and 3.5 minutes): planBuiltSaying ran on the event loop, waited for the plans while the look retried a failing send (issue 1689), and ran advanceHeld -> advanceRelease -> sendKept -> gatedSend on the loop. No alert came from a controller restart today.
A build outcome takes the plans without waiting; when they are busy it is left to the build records and the look is asked to settle it off the loop; what the build did is kept by build id.
In the serving controller, moving the plans after an outcome is the look's; a command still moves them at once.
A refused registration left to the records is kept by build id (store table build_refused, migration 0107, plus an in-process copy) and settled as failed, never as built (round-1 review).
Settling from the records forgets a module deleted at its source and says what a failed plan built and never sent, each once.
Tests: outcome_off_the_loop_test.go AC1-AC7 (each failed first), store test TestARefusedRegistrationIsKeptByItsBuild.
Try: build-1792587811675570615 passed (9m15s) at 0e0c775bfa.
Later: 1710 (hearMerge waits on the loop), 1711 (a try's answer lost on _INBOX), 1713 (an unreadable manifest settles as built).
Issue 1708: the operator's 'The controller stopped listening' alerts at 14:22 and 14:31 were real stalls (2 and 3.5 minutes): planBuiltSaying ran on the event loop, waited for the plans while the look retried a failing send (issue 1689), and ran advanceHeld -> advanceRelease -> sendKept -> gatedSend on the loop. No alert came from a controller restart today.
- A build outcome takes the plans without waiting; when they are busy it is left to the build records and the look is asked to settle it off the loop; what the build did is kept by build id.
- In the serving controller, moving the plans after an outcome is the look's; a command still moves them at once.
- A refused registration left to the records is kept by build id (store table build_refused, migration 0107, plus an in-process copy) and settled as failed, never as built (round-1 review).
- Settling from the records forgets a module deleted at its source and says what a failed plan built and never sent, each once.
Tests: outcome_off_the_loop_test.go AC1-AC7 (each failed first), store test TestARefusedRegistrationIsKeptByItsBuild.
Try: build-1792587811675570615 passed (9m15s) at 0e0c775bfa5e20e8d1dce0c664c17db8305a26f6.
Later: 1710 (hearMerge waits on the loop), 1711 (a try's answer lost on _INBOX), 1713 (an unreadable manifest settles as built).
Fixes issue 1708.
Reviewed-by: reviewer-1708@shanks at 0e0c775bfa5e20e8d1dce0c664c17db8305a26f6
mesh/merge-gate head 0e0c775bfa5e merged into trunk f10fbda1f619 — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
Deliverynovox/mesh-controller@0e0c775bfa5e — delivered since 2026-10-21T14:21:13Z
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-host on every machine running it: sent
mesh-controller on every machine running it: sent
build-agent on every machine running it: sent
Transitions
2026-10-21 13:15 (new) → proposed (announced): novox/mesh-controller#421's head announced
2026-10-21 13:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-21 13:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-21 14:06 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-21 14:06 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-21 14:21 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@0e0c775bfa5e` — **delivered** since 2026-10-21T14:21:13Z
**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-host on every machine running it: sent
- mesh-controller on every machine running it: sent
- build-agent on every machine running it: sent
**Transitions**
- 2026-10-21 13:15 (new) → proposed (announced): novox/mesh-controller#421's head announced
- 2026-10-21 13:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-21 13:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-21 14:06 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-21 14:06 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-21 14:21 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 0e0c775b
Judged: head 0e0c775bfa5e merged into trunk f10fbda1f619; read beside it: mesh-catalog 90ecba4e50a3, mesh-controller-main f10fbda1f619, mesh-host c5c4caa2a4ab, mesh-tools e0fadc43d9dd
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/outcome_off_the_loop_test.go, internal/inventory/refused_test.go, testdata/store-tests
Run by the build seat on shanks as build-1792588519117988008 (builds --log build-1792588519117988008).
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.
Issue 1708: the operator's 'The controller stopped listening' alerts at 14:22 and 14:31 were real stalls (2 and 3.5 minutes): planBuiltSaying ran on the event loop, waited for the plans while the look retried a failing send (issue 1689), and ran advanceHeld -> advanceRelease -> sendKept -> gatedSend on the loop. No alert came from a controller restart today.
Tests: outcome_off_the_loop_test.go AC1-AC7 (each failed first), store test TestARefusedRegistrationIsKeptByItsBuild.
Try: build-1792587811675570615 passed (9m15s) at
0e0c775bfa.Later: 1710 (hearMerge waits on the loop), 1711 (a try's answer lost on _INBOX), 1713 (an unreadable manifest settles as built).
Fixes issue 1708.
Reviewed-by: reviewer-1708@shanks at
0e0c775bfaDelivery
novox/mesh-controller@0e0c775bfa5e— delivered since 2026-10-21T14:21:13ZDelivery 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
0e0c775bJudged: head
0e0c775bfa5emerged into trunkf10fbda1f619; read beside it: mesh-catalog90ecba4e50a3, mesh-controller-mainf10fbda1f619, mesh-hostc5c4caa2a4ab, mesh-toolse0fadc43d9ddmesh/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-1792588519117988008(builds --log build-1792588519117988008).