On 2026-10-08 a catalogue merge built a new bus build for the control-node. Every send to the control-node was then held for the bus's planned step (ADR 0236) for about 28 minutes, and mesh-controller.conditions named nothing; the operator found it only because a walk looked stuck.
Located in mesh-controller:
the refusal (errBusWaits, from sendToEach in push.go via busHeld in bus_step.go) is kept only as the walk's note in release_plan.go;
watchdog S3 (stalled) fires no sooner than 30 minutes, with generic words that name neither the bus nor the verb, so it never fired here;
probe DB reads only a running or failed bus step, so a pending one raises nothing;
neither the merge gate nor the delivery plan says that a change moving the bus's build needs a person's bus upgrade.
Suggested fix: a condition at the first refusal naming what waits, behind what, and mesh-controller.bus upgrade; an ask to the operator once ADR 0259's asks exist; and a line before the merge. The diagnosis also raises, as an unchecked guess, whether the whole-send refusal is still needed since issue 295's keeping of recorded builds.
Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue) all pass.
Registers issue 336 (status: located).
On 2026-10-08 a catalogue merge built a new bus build for the control-node. Every send to the control-node was then held for the bus's planned step (ADR 0236) for about 28 minutes, and `mesh-controller.conditions` named nothing; the operator found it only because a walk looked stuck.
Located in mesh-controller:
- the refusal (`errBusWaits`, from `sendToEach` in push.go via `busHeld` in bus_step.go) is kept only as the walk's note in release_plan.go;
- watchdog S3 (`stalled`) fires no sooner than 30 minutes, with generic words that name neither the bus nor the verb, so it never fired here;
- probe DB reads only a running or failed bus step, so a pending one raises nothing;
- neither the merge gate nor the delivery plan says that a change moving the bus's build needs a person's bus upgrade.
Suggested fix: a condition at the first refusal naming what waits, behind what, and `mesh-controller.bus upgrade`; an ask to the operator once ADR 0259's asks exist; and a line before the merge. The diagnosis also raises, as an unchecked guess, whether the whole-send refusal is still needed since issue 295's keeping of recorded builds.
Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue) all pass.
For 28 minutes on 2026-10-08 every send to the control-node waited for a bus upgrade only a person can start, and nothing but a walk's note said so. Located in the controller: the refusal is kept as the walk's note, S3 fires only past a 30-minute bound with generic words, and probe DB reads only a running step.
Deliverynovox/hq@e6f0e7e359d5 — delivered since 2026-10-09T07:24:08Z
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-08 18:59 (new) → proposed (announced): novox/hq#228's head announced
2026-10-08 18:59 proposed → checked (checked): the verdict names this commit
2026-10-08 18:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-09 07:24 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-09 07:24 published → delivered (done): nothing for a walk to move
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@e6f0e7e359d5` — **delivered** since 2026-10-09T07:24:08Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-08 18:59 (new) → proposed (announced): novox/hq#228's head announced
- 2026-10-08 18:59 proposed → checked (checked): the verdict names this commit
- 2026-10-08 18:59 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-09 07:24 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-09 07:24 published → delivered (done): nothing for a walk to move
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
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.
Registers issue 336 (status: located).
On 2026-10-08 a catalogue merge built a new bus build for the control-node. Every send to the control-node was then held for the bus's planned step (ADR 0236) for about 28 minutes, and
mesh-controller.conditionsnamed nothing; the operator found it only because a walk looked stuck.Located in mesh-controller:
errBusWaits, fromsendToEachin push.go viabusHeldin bus_step.go) is kept only as the walk's note in release_plan.go;stalled) fires no sooner than 30 minutes, with generic words that name neither the bus nor the verb, so it never fired here;Suggested fix: a condition at the first refusal naming what waits, behind what, and
mesh-controller.bus upgrade; an ask to the operator once ADR 0259's asks exist; and a line before the merge. The diagnosis also raises, as an unchecked guess, whether the whole-send refusal is still needed since issue 295's keeping of recorded builds.Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue) all pass.
Delivery
novox/hq@e6f0e7e359d5— delivered since 2026-10-09T07:24:08ZDelivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.