Fixes hq issue 747: a failed group member stayed failed after a later walk delivered it, and its stopped group stopped every catalogue walk (today: controller #336's group stops #301/#304/#307).
Each pass, a failed or stopped delivery whose repository has a done walk that contains its merge (the forge's answer) and built every module its plan moves is read as covered (DeliveredBy); the state stays final, the forge is told once (as for issue 480), and the group counts it delivered.
A member stopped for it (StoppedFor, read back from the stop reason for old records) no longer holds walks back.
While the forge's containment answer is pending or erroring, the walk is held for at most 10 minutes and the hold is said in waits, stalled walks and stalled; after that the walk is asked to leave the merge out, as before.
A stop covered under issue 480 now makes its group read reached, not stopped.
Tests: issue747_test.go reads tonight's state back from the store; the two main cases fail on main and pass here; the guard cases and the forge-cannot-say bound are covered. go vet, go test ./..., gofmt clean.
Reviewed independently before push: APPROVE at 6f7f07635e.
Fixes hq issue 747: a failed group member stayed failed after a later walk delivered it, and its stopped group stopped every catalogue walk (today: controller #336's group stops #301/#304/#307).
- Each pass, a failed or stopped delivery whose repository has a done walk that contains its merge (the forge's answer) and built every module its plan moves is read as covered (`DeliveredBy`); the state stays final, the forge is told once (as for issue 480), and the group counts it delivered.
- A member stopped for it (`StoppedFor`, read back from the stop reason for old records) no longer holds walks back.
- While the forge's containment answer is pending or erroring, the walk is held for at most 10 minutes and the hold is said in `waits`, `stalled walks` and `stalled`; after that the walk is asked to leave the merge out, as before.
- A stop covered under issue 480 now makes its group read reached, not stopped.
Tests: issue747_test.go reads tonight's state back from the store; the two main cases fail on main and pass here; the guard cases and the forge-cannot-say bound are covered. go vet, go test ./..., gofmt clean.
Reviewed independently before push: APPROVE at 6f7f07635e0297256d48ad9e528c716d55eeaea3.
mesh/merge-gate head 6f7f07635e02 merged into trunk 0f76b6e232a5 — pass: builds mesh-delivery → novox; no bus step; every machine composes with the change …
mesh/repo-check head 6f7f07635e02 merged into trunk 0f76b6e232a5 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
A group member whose walk failed in an outage stayed failed after a later walk
of its repository, containing its merge, was done; its group then stopped every
later walk of the other repository, and the catalogue could deliver nothing.
A failed or stopped delivery now reads covered when a done walk of its
repository, made after its merge, whose commit contains it (the forge's word,
as issue 362's containment), built every module it moves. A group counts it as
delivered, and a member the group stopped for it no longer holds a walk back:
the group stops a walk only for a member whose change is still undelivered.
A stop covered under issue 480 now likewise makes its group read reached, not
stopped.
While the forge is asked, the walk is held back rather than stopped, for at
most ten minutes from the first ask: a forge that keeps erroring or cannot say
then lets the walk be asked to leave the stopped merge out, as before. The
hold is said by waits, stalled and stalled walks. The pass reads kept walks
each tick, so today's stuck deliveries clear after a restart.
Deliverynovox/mesh-catalog@6f7f07635e02 — delivered since 2026-10-14T21:31:25Z
Delivery plan — builds mesh-delivery → novox; no bus step
tier 0: mesh-delivery
novox: receives mesh-delivery
Machines
mesh-delivery on every machine running it: sent
Transitions
2026-10-14 21:24 (new) → proposed (announced): novox/mesh-catalog#308's head announced
2026-10-14 21:30 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-14 21:30 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-14 21:30 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-14 21:30 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-14 21:31 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-catalog@6f7f07635e02` — **delivered** since 2026-10-14T21:31:25Z
**Delivery plan** — builds mesh-delivery → novox; no bus step
- tier 0: mesh-delivery
- novox: receives mesh-delivery
**Machines**
- mesh-delivery on every machine running it: sent
**Transitions**
- 2026-10-14 21:24 (new) → proposed (announced): novox/mesh-catalog#308's head announced
- 2026-10-14 21:30 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-14 21:30 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-14 21:30 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-14 21:30 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-14 21:31 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 6f7f0763
Judged: head 6f7f07635e02 merged into trunk 0f76b6e232a5; read beside it: mesh-controller 60cc9ec363df, mesh-controller-main 60cc9ec363df, mesh-host 1a2677882380, mesh-tools 5d70eb3e35a9
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-delivery)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds mesh-delivery → novox; no bus step
tier 0: mesh-delivery
novox: receives mesh-delivery
read by no module's build: modules/mesh-delivery/cmd/mesh-delivery/issue747_test.go
Run by the build seat on novox as build-1792013058121273199 (builds --log build-1792013058121273199).
--- the gate: mesh-delivery
mesh-delivery: ok, 1 tool(s), invokes seat:mesh-controller.delivery-plan, seat:mesh-controller.delivery-order, seat:mesh-controller.delivery-check, seat:mesh-controller.deliver, seat:mesh-controller.delivery-stop, seat:mesh-controller.delivery-walks, seat:mesh-controller.forget-checks, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, gitea.gitea_merge_pull_request, gitea.gitea_add_comment, gitea.gitea_api, keeps state deliveries, groups
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T21:19:19Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-14T21:19:19Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-delivery
notes:
- modules/mesh-delivery/cmd/mesh-delivery/issue747_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.006s
words: 12 retired words and 70 daemons' lines, none in the 47330 strings of 722 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.016s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.018s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.009s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.409s
testing modules/mesh-delivery
ok mesh-delivery/cmd/mesh-delivery 4.090s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `6f7f0763`
Judged: head `6f7f07635e02` merged into trunk `0f76b6e232a5`; read beside it: mesh-controller `60cc9ec363df`, mesh-controller-main `60cc9ec363df`, mesh-host `1a2677882380`, mesh-tools `5d70eb3e35a9`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-delivery)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds mesh-delivery → novox; no bus step
- tier 0: mesh-delivery
- novox: receives mesh-delivery
- read by no module's build: modules/mesh-delivery/cmd/mesh-delivery/issue747_test.go
Run by the build seat on novox as `build-1792013058121273199` (`builds --log build-1792013058121273199`).
```
--- the gate: mesh-delivery
mesh-delivery: ok, 1 tool(s), invokes seat:mesh-controller.delivery-plan, seat:mesh-controller.delivery-order, seat:mesh-controller.delivery-check, seat:mesh-controller.deliver, seat:mesh-controller.delivery-stop, seat:mesh-controller.delivery-walks, seat:mesh-controller.forget-checks, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, gitea.gitea_merge_pull_request, gitea.gitea_add_comment, gitea.gitea_api, keeps state deliveries, groups
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T21:19:19Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-14T21:19:19Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-delivery
notes:
- modules/mesh-delivery/cmd/mesh-delivery/issue747_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.006s
words: 12 retired words and 70 daemons' lines, none in the 47330 strings of 722 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.016s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/secrets 0.018s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok git.novox.be/novox/mesh-catalog/checks/paths 0.009s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok git.novox.be/novox/mesh-catalog/checks/deps 0.409s
testing modules/mesh-delivery
ok mesh-delivery/cmd/mesh-delivery 4.090s
--- its merge-check-typescript.sh (typescript toolchain)
```
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.
Fixes hq issue 747: a failed group member stayed failed after a later walk delivered it, and its stopped group stopped every catalogue walk (today: controller #336's group stops #301/#304/#307).
DeliveredBy); the state stays final, the forge is told once (as for issue 480), and the group counts it delivered.StoppedFor, read back from the stop reason for old records) no longer holds walks back.waits,stalled walksandstalled; after that the walk is asked to leave the merge out, as before.Tests: issue747_test.go reads tonight's state back from the store; the two main cases fail on main and pass here; the guard cases and the forge-cannot-say bound are covered. go vet, go test ./..., gofmt clean.
Reviewed independently before push: APPROVE at
6f7f07635e.Delivery
novox/mesh-catalog@6f7f07635e02— delivered since 2026-10-14T21:31:25ZDelivery plan — builds mesh-delivery → novox; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.ready at
6f7f07635eMerge check at
6f7f0763Judged: head
6f7f07635e02merged into trunk0f76b6e232a5; read beside it: mesh-controller60cc9ec363df, mesh-controller-main60cc9ec363df, mesh-host1a2677882380, mesh-tools5d70eb3e35a9mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-delivery)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds mesh-delivery → novox; no bus step
Run by the build seat on novox as
build-1792013058121273199(builds --log build-1792013058121273199).