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-tools merged 2 commits from fix/held-module-and-assigner-contract into main 2026-10-30 21:17:45 +00:00
Member

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-tools added 2 commits 2026-10-30 20:59:43 +00:00
Read a provider's outcome per offer, and read route-proxy's and node-tools' entries, so provisions a helper does not answer stop failing and routed keys stop standing asked (issue 774)
mesh/delivery-group group fix/held-module-and-assigner-contract rejected: composed together: the checker's verdict at the members' heads (c82f18b5e6bb): integr…
mesh/delivery closed: the pull request closed unmerged
mesh/check failed: integration: mesh-healers/cmd/mesh-healers.TestTheHealersWholeActOnTheBusAndBrake: never: the would-act written | b8ce4f0c0ac5 on 3…
b8ce4f0c0a
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.
Subscribe as soon as the runtime serves, never after a guessed wait, so no event sent at a start is missed (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-catalog@5d9cead336ab
mesh/delivery-group group fix/held-module-and-assigner-contract merged: every member is merged
mesh/check checking b5475cfa5c3d on 395a37dddab9 | novox/mesh-catalog#571 in group fix/held-module-and-assigner-contract
b5475cfa5c
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.
jschoubben added 1 commit 2026-10-30 20:59:45 +00:00
Subscribe as soon as the runtime serves, never after a guessed wait, so no event sent at a start is missed (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-catalog@5d9cead336ab
mesh/delivery-group group fix/held-module-and-assigner-contract merged: every member is merged
mesh/check checking b5475cfa5c3d on 395a37dddab9 | novox/mesh-catalog#571 in group fix/held-module-and-assigner-contract
b5475cfa5c
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.
Author
Member

Delivery novox/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.

Group fix/held-module-and-assigner-contract: novox/mesh-catalog@b5475cfa5c, novox/mesh-delivery@8fe6442c47, novox/mesh-host@62cfb45789, novox/mesh-sdk@eff81f1220

  • 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`.
mesh-tools merged commit 5d9cead336 into main 2026-10-30 21:17:45 +00:00
mesh-tools deleted branch fix/held-module-and-assigner-contract 2026-10-30 21:17:46 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#571