The provisioner reads a provider's outcome per offer, and modules subscribe before they wait, so gitea's credentials, routes and early events are not lost (issue 774)
#571
Merged
mesh-toolsmerged 2 commits from fix/held-module-and-assigner-contract into main2026-10-30 21:17:45 +00:00
8 provisions failed ("gitea does not serve" for gitea-read and npm-package-registry) and 6 stood asked (route, mcp-endpoint). keepsEntriesFor judges an offer answered-by helper by the helper's entries and any other by the module's have; gitea's forge-account offer says answered-by helper; BoundReads and the manifest read route-proxy.bound and node-tools.bound. TestAProvidersOutcomeIsReadPerOffer replays the live keys.
Also: eight modules (mesh-healers, mesh-config, mesh-mail, mesh-issues, mesh-provisioner, mesh-watcher, mesh-delivery-gate, mesh-knowledge) slept before their first subscribe and could miss events at a start; they now wait for stdio.Served, subscribe at once and sleep only after a refusal. This made mesh-healers TestTheHealersWholeActOnTheBusAndBrake fail about 2 runs in 3 on main, which failed the group's first check; now 12 of 12 and 5 of 5 pass. Replaces #568.
Group fix/held-module-and-assigner-contract (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog), issue 774. The lead merges once mesh/check and mesh/delivery-group are green (operator, 2026-10-30 20:41); mesh-sdk first.
Reviewed-by: rev-sweep@shanks at b5475cfa5c
8 provisions failed ("gitea does not serve" for gitea-read and npm-package-registry) and 6 stood asked (route, mcp-endpoint). keepsEntriesFor judges an offer answered-by helper by the helper's entries and any other by the module's have; gitea's forge-account offer says answered-by helper; BoundReads and the manifest read route-proxy.bound and node-tools.bound. TestAProvidersOutcomeIsReadPerOffer replays the live keys.
Also: eight modules (mesh-healers, mesh-config, mesh-mail, mesh-issues, mesh-provisioner, mesh-watcher, mesh-delivery-gate, mesh-knowledge) slept before their first subscribe and could miss events at a start; they now wait for stdio.Served, subscribe at once and sleep only after a refusal. This made mesh-healers TestTheHealersWholeActOnTheBusAndBrake fail about 2 runs in 3 on main, which failed the group's first check; now 12 of 12 and 5 of 5 pass. Replaces #568.
Group fix/held-module-and-assigner-contract (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog), issue 774. The lead merges once mesh/check and mesh/delivery-group are green (operator, 2026-10-30 20:41); mesh-sdk first.
Reviewed-by: rev-sweep@shanks at b5475cfa5c3daffd52b5b25eb7063e745b976026
mesh/delivery-group group fix/held-module-and-assigner-contract rejected: composed together: the checker's verdict at the members' heads (c82f18b5e6bb): integr…
mesh/check failed: integration: mesh-healers/cmd/mesh-healers.TestTheHealersWholeActOnTheBusAndBrake: never: the would-act written | b8ce4f0c0ac5 on 3…
The sweep of 2026-10-30 20:10: <node>.claude-code.gitea-read and <node>.mesh-build-node.npm-package-registry failed on
all four nodes with "gitea does not serve": gitea's provider helper answers only forge-account and refuses every other
bind into gitea.bound, and the provisioner took any entry of a module declaring `bound` as the outcome. And
novox.gitea.route, novox.keycloak.route and <node>.claude-code.mcp-endpoint stood asked: route-proxy and node-tools keep
entries the manifest did not read.
Quick fix: add route-proxy.bound and node-tools.bound to the reads. Thorough fix: judge each offer by who answers it
(answered-by: helper reads the entries, any other offer of a module that names a helper is judged by its have), and say
on gitea's forge-account that the helper answers it. Chose both: the reads alone leave gitea's two provisions failed.
mesh-healers slept 2 s before its first subscribe to the keeper's conditions; its whole test delivered
condition-raised once the lease was read, often before that, and the event was dropped: "never: the would-act
written" in about two runs of three on main, failing the group check. Eight modules had the same shape.
Quick fix: sleep after a failed subscribe in mesh-healers alone.
Thorough fix (chosen, the kind is in eight modules): every loop that asks the runtime for events or a watch
waits for stdio.Served() and subscribes at once, sleeping only after a refusal (mesh-healers, mesh-config,
mesh-mail, mesh-issues, mesh-provisioner, mesh-watcher, mesh-delivery-gate); mesh-knowledge, whose pinned
mesh-sdk has no Served, subscribes first and sleeps after a refusal. The healers' whole test delivers the
event only once the bundle has subscribed it, as the runtime's consumer holds it until then.
mesh-healers slept 2 s before its first subscribe to the keeper's conditions; its whole test delivered
condition-raised once the lease was read, often before that, and the event was dropped: "never: the would-act
written" in about two runs of three on main, failing the group check. Eight modules had the same shape.
Quick fix: sleep after a failed subscribe in mesh-healers alone.
Thorough fix (chosen, the kind is in eight modules): every loop that asks the runtime for events or a watch
waits for stdio.Served() and subscribes at once, sleeping only after a refusal (mesh-healers, mesh-config,
mesh-mail, mesh-issues, mesh-provisioner, mesh-watcher, mesh-delivery-gate); mesh-knowledge, whose pinned
mesh-sdk has no Served, subscribes first and sleeps after a refusal. The healers' whole test delivers the
event only once the bundle has subscribed it, as the runtime's consumer holds it until then.
Deliverynovox/mesh-catalog@b5475cfa5c3d — merged since 2026-10-30T21:17:50Z
Source — source.main moved to novox/mesh-catalog@5d9cead336. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (e5a2974f3e1e)
Transitions
2026-10-30 20:59 (new) → proposed (announced): novox/mesh-catalog#571's head announced
2026-10-30 20:59 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-10-30 21:17 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@b5475cfa5c3d` — **merged** since 2026-10-30T21:17:50Z
**Source** — source.main moved to novox/mesh-catalog@5d9cead336ab. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/held-module-and-assigner-contract`: novox/mesh-catalog@b5475cfa5c3d, novox/mesh-delivery@8fe6442c4754, novox/mesh-host@62cfb45789c1, novox/mesh-sdk@eff81f1220e2
- composed together: pass — the checker's verdict at the members' heads (e5a2974f3e1e)
**Transitions**
- 2026-10-30 20:59 (new) → proposed (announced): novox/mesh-catalog#571's head announced
- 2026-10-30 20:59 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-10-30 21:17 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `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.
8 provisions failed ("gitea does not serve" for gitea-read and npm-package-registry) and 6 stood asked (route, mcp-endpoint). keepsEntriesFor judges an offer answered-by helper by the helper's entries and any other by the module's have; gitea's forge-account offer says answered-by helper; BoundReads and the manifest read route-proxy.bound and node-tools.bound. TestAProvidersOutcomeIsReadPerOffer replays the live keys.
Also: eight modules (mesh-healers, mesh-config, mesh-mail, mesh-issues, mesh-provisioner, mesh-watcher, mesh-delivery-gate, mesh-knowledge) slept before their first subscribe and could miss events at a start; they now wait for stdio.Served, subscribe at once and sleep only after a refusal. This made mesh-healers TestTheHealersWholeActOnTheBusAndBrake fail about 2 runs in 3 on main, which failed the group's first check; now 12 of 12 and 5 of 5 pass. Replaces #568.
Group fix/held-module-and-assigner-contract (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog), issue 774. The lead merges once mesh/check and mesh/delivery-group are green (operator, 2026-10-30 20:41); mesh-sdk first.
Reviewed-by: rev-sweep@shanks at
b5475cfa5cDelivery
novox/mesh-catalog@b5475cfa5c3d— merged since 2026-10-30T21:17:50ZSource — source.main moved to novox/mesh-catalog@5d9cead336. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/held-module-and-assigner-contract: novox/mesh-catalog@b5475cfa5c, novox/mesh-delivery@8fe6442c47, novox/mesh-host@62cfb45789, novox/mesh-sdk@eff81f1220Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.