Cause (verified in the code and its tests). mesh-delivery's watch for unchecked heads (SeeOpenPulls, from #195 / issue 438) skipped every head with a delivery, on the ground that a delivery has its own bound. Ready and rejected have no entry in Bounds (table.go), so a delivery in either state whose required merge check reads pending or never set on the forge (a status write that lagged or was lost, issue 423, or a check asked again after the verdict) left the pull request unable to merge, with nothing said.
Change. Extends 438's rule, no new mechanism: a head whose delivery is ready or rejected is kept by the same watch and said on the same bound (Bounds[Proposed], one hour, from this owner's first sight; restarted only by a newer ask) as a stalled line in the state unanswered, with waiting naming each check and since when, and number the pull request's. It is never unannounced, since a delivery exists. Its says names the delivery's state and that a recheck or a new commit asks the check again. Proposed and checked deliveries are still said by their own bound only. The line clears when the forge shows every required check answered, when the delivery's state changes (checked when stalled is read, so before the forge is read again), or when the pull request leaves the forge's open list.
What the operator sees:delivery.<id>.stalled, "Pull request mesh-controller #215's merge check has not answered for 1 hour", one hour after the watch first saw the check pending or missing. The controller's existing words for unanswered (mesh-controller #213) are used unchanged; their advice (a new commit, or the build queue) does not offer the recheck that fits a ready or rejected delivery. That is issue 451, in the controller, not fixed here.
Tests (issue441_test.go, from mesh-controller #215 and mesh-lab #76 as gitea_open_pulls said them on 2026-10-11):
a ready delivery with repo-check pending is said, and clears when it answers (failed on main: no line);
a rejected delivery with repo-check never set, and with no merge check at all, is said as unanswered (failed on main: no line);
a proposed delivery is not said twice; a ready delivery whose checks answered is not said;
after review: a said line clears when its delivery moves on, by a recheck to proposed or a merge to published, at once and after the forge (lagging, still listing the head) is read again. With the state check in uncheckedLines removed, both cases fail. Removing only the skip in SeeOpenPulls does not fail them, because uncheckedLines clears the line anyway: the two checks back each other up;
after review: a said line clears when the pull request leaves the open list, its close event lost and the delivery still ready. With SeeOpenPulls keeping heads it no longer sees, this fails.
go vet ./..., go test ./... -count=1 and the words check pass.
Issue 446 (the pending description never says where a check is) is not fixed here. This change does not make it easier or harder: it only adds more lines that carry waiting.
Fixes novox/hq issue 441.
**Cause (verified in the code and its tests).** mesh-delivery's watch for unchecked heads (`SeeOpenPulls`, from #195 / issue 438) skipped every head with a delivery, on the ground that a delivery has its own bound. Ready and rejected have no entry in `Bounds` (table.go), so a delivery in either state whose required merge check reads pending or never set on the forge (a status write that lagged or was lost, issue 423, or a check asked again after the verdict) left the pull request unable to merge, with nothing said.
**Change.** Extends 438's rule, no new mechanism: a head whose delivery is ready or rejected is kept by the same watch and said on the same bound (`Bounds[Proposed]`, one hour, from this owner's first sight; restarted only by a newer ask) as a stalled line in the state `unanswered`, with `waiting` naming each check and since when, and `number` the pull request's. It is never `unannounced`, since a delivery exists. Its `says` names the delivery's state and that a recheck or a new commit asks the check again. Proposed and checked deliveries are still said by their own bound only. The line clears when the forge shows every required check answered, when the delivery's state changes (checked when `stalled` is read, so before the forge is read again), or when the pull request leaves the forge's open list.
**What the operator sees:** `delivery.<id>.stalled`, "Pull request mesh-controller #215's merge check has not answered for 1 hour", one hour after the watch first saw the check pending or missing. The controller's existing words for `unanswered` (mesh-controller #213) are used unchanged; their advice (a new commit, or the build queue) does not offer the recheck that fits a ready or rejected delivery. That is issue 451, in the controller, not fixed here.
**Tests** (issue441_test.go, from mesh-controller #215 and mesh-lab #76 as gitea_open_pulls said them on 2026-10-11):
- a ready delivery with repo-check pending is said, and clears when it answers (failed on main: no line);
- a rejected delivery with repo-check never set, and with no merge check at all, is said as unanswered (failed on main: no line);
- a proposed delivery is not said twice; a ready delivery whose checks answered is not said;
- after review: a said line clears when its delivery moves on, by a recheck to proposed or a merge to published, at once and after the forge (lagging, still listing the head) is read again. With the state check in `uncheckedLines` removed, both cases fail. Removing only the skip in `SeeOpenPulls` does not fail them, because `uncheckedLines` clears the line anyway: the two checks back each other up;
- after review: a said line clears when the pull request leaves the open list, its close event lost and the delivery still ready. With `SeeOpenPulls` keeping heads it no longer sees, this fails.
`go vet ./...`, `go test ./... -count=1` and the words check pass.
**Issue 446** (the pending description never says where a check is) is not fixed here. This change does not make it easier or harder: it only adds more lines that carry `waiting`.
Ready and rejected have no bound, and the watch for unchecked heads skipped
every head with a delivery, so a lost or lagging status write left a pull
request unable to merge with nothing said. Such a head is now said on issue
438's rule: an unanswered line past the table's bound for a check asked and
not answered.
Deliverynovox/mesh-catalog@9bd8903ed23e — failed since 2026-10-11T01:30:43Z
Covered: covered after its failure: a later walk that contains it was delivered: plan-1791682028101285377 (novox/mesh-catalog at a5b4a757 into main, done, contains its merge a5b4a757)
Delivery plan — builds mesh-delivery → novox; no bus step
tier 0: mesh-delivery
novox: receives mesh-delivery
Machines
mesh-delivery on novox: passed — healthy 3 times over 2m14s
mesh-delivery on the rest running it: sent
Transitions
2026-10-11 01:04 (new) → proposed (announced): novox/mesh-catalog#199's head announced
2026-10-11 01:06 proposed → checked (checked): the verdict names this commit
2026-10-11 01:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-11 01: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-11 01: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-11 01:30 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@9bd8903ed23e` — **failed** since 2026-10-11T01:30:43Z
**Covered**: covered after its failure: a later walk that contains it was delivered: plan-1791682028101285377 (novox/mesh-catalog at a5b4a757 into main, done, contains its merge a5b4a757)
**Delivery plan** — builds mesh-delivery → novox; no bus step
- tier 0: mesh-delivery
- novox: receives mesh-delivery
**Machines**
- mesh-delivery on novox: passed — healthy 3 times over 2m14s
- mesh-delivery on the rest running it: sent
**Transitions**
- 2026-10-11 01:04 (new) → proposed (announced): novox/mesh-catalog#199's head announced
- 2026-10-11 01:06 proposed → checked (checked): the verdict names this commit
- 2026-10-11 01:06 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-11 01: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-11 01: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-11 01:30 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh/delivery covered after its failure: a later walk that contains it was delivered: plan-1791682028101285377 (novox/mesh-catalog at a5b4a757 into main,…
The review asked for the clearing paths to be pinned: a recheck or a merge
clears the line before the forge is read again, and a pull request gone from
the open list is no longer said.
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/issue441_test.go
Run by the build seat on g14 as build-1791680492156818554 (builds --log build-1791680492156818554).
--- 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, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, 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-11T01:00:25Z 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-11T01:00:25Z
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/issue441_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.004s
words: 12 retired words and 70 daemons' lines, none in the 39434 strings of 654 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.009s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 69, as kept
testing modules/mesh-delivery
ok mesh-delivery/cmd/mesh-delivery 1.799s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `5855c41f`
- `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/issue441_test.go
Run by the build seat on g14 as `build-1791680492156818554` (`builds --log build-1791680492156818554`).
```
--- 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, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, 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-11T01:00:25Z 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-11T01:00:25Z
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/issue441_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.004s
words: 12 retired words and 70 daemons' lines, none in the 39434 strings of 654 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.009s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 69, as kept
testing modules/mesh-delivery
ok mesh-delivery/cmd/mesh-delivery 1.799s
--- its merge-check-typescript.sh (typescript toolchain)
```
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/issue441_test.go
Run by the build seat on g14 as build-1791680653048556056 (builds --log build-1791680653048556056).
--- 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, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, 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-11T01:00:25Z 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-11T01:00:25Z
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/issue441_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.004s
words: 12 retired words and 70 daemons' lines, none in the 39434 strings of 654 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.010s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 69, as kept
testing modules/mesh-delivery
ok mesh-delivery/cmd/mesh-delivery 1.788s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `9bd8903e`
- `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/issue441_test.go
Run by the build seat on g14 as `build-1791680653048556056` (`builds --log build-1791680653048556056`).
```
--- 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, gitea.gitea_note_append, gitea.gitea_delivery_view, gitea.gitea_commit_status, gitea.gitea_commit_statuses, gitea.gitea_contains, gitea.gitea_open_pulls, 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-11T01:00:25Z 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-11T01:00:25Z
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/issue441_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.004s
words: 12 retired words and 70 daemons' lines, none in the 39434 strings of 654 files
ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.010s
agent-home: no archive and no file written into under the agent's home
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 69, as kept
testing modules/mesh-delivery
ok mesh-delivery/cmd/mesh-delivery 1.788s
--- 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 novox/hq issue 441.
Cause (verified in the code and its tests). mesh-delivery's watch for unchecked heads (
SeeOpenPulls, from #195 / issue 438) skipped every head with a delivery, on the ground that a delivery has its own bound. Ready and rejected have no entry inBounds(table.go), so a delivery in either state whose required merge check reads pending or never set on the forge (a status write that lagged or was lost, issue 423, or a check asked again after the verdict) left the pull request unable to merge, with nothing said.Change. Extends 438's rule, no new mechanism: a head whose delivery is ready or rejected is kept by the same watch and said on the same bound (
Bounds[Proposed], one hour, from this owner's first sight; restarted only by a newer ask) as a stalled line in the stateunanswered, withwaitingnaming each check and since when, andnumberthe pull request's. It is neverunannounced, since a delivery exists. Itssaysnames the delivery's state and that a recheck or a new commit asks the check again. Proposed and checked deliveries are still said by their own bound only. The line clears when the forge shows every required check answered, when the delivery's state changes (checked whenstalledis read, so before the forge is read again), or when the pull request leaves the forge's open list.What the operator sees:
delivery.<id>.stalled, "Pull request mesh-controller #215's merge check has not answered for 1 hour", one hour after the watch first saw the check pending or missing. The controller's existing words forunanswered(mesh-controller #213) are used unchanged; their advice (a new commit, or the build queue) does not offer the recheck that fits a ready or rejected delivery. That is issue 451, in the controller, not fixed here.Tests (issue441_test.go, from mesh-controller #215 and mesh-lab #76 as gitea_open_pulls said them on 2026-10-11):
uncheckedLinesremoved, both cases fail. Removing only the skip inSeeOpenPullsdoes not fail them, becauseuncheckedLinesclears the line anyway: the two checks back each other up;SeeOpenPullskeeping heads it no longer sees, this fails.go vet ./...,go test ./... -count=1and the words check pass.Issue 446 (the pending description never says where a check is) is not fixed here. This change does not make it easier or harder: it only adds more lines that carry
waiting.Delivery
novox/mesh-catalog@9bd8903ed23e— failed since 2026-10-11T01:30:43ZCovered: covered after its failure: a later walk that contains it was delivered: plan-1791682028101285377 (novox/mesh-catalog at
a5b4a757into main, done, contains its mergea5b4a757)Delivery 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.Merge check at
5855c41fmesh/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 g14 as
build-1791680492156818554(builds --log build-1791680492156818554).Merge check at
9bd8903emesh/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 g14 as
build-1791680653048556056(builds --log build-1791680653048556056).