Issue 774 (L3). Thorough fix of the kind behind the 23:33 provisions group fault (22 modules could not compose; quick fix mesh-catalog #573 merged 00:00): parts read "a plan exists" as "the module is handed", and since mesh-sdk 125bb91 the provisioner keeps provisions-only plans (a route) for modules it does not hand.
Group fix/plan-hands, merge order mesh-sdk first:
mesh-sdk: catalogue.Plan.Hands(): a plan hands its module when it names a template source, a file, a secret or an item; table cases in the existing keyed test.
mesh-catalog: mesh-vault readers asking "is it handed" call Hands (own, get, pair.go readBindings/716/732/814/830); readers that only bind stay on plan existence, marked "binds, not handing"; mesh-provisioner-client planOf treats a non-handing plan as no plan (it refused every route-only plan live); new catalogue check checks/planhands refuses a line testing Provisioning ==/!= nil unless it asks Hands or says "not handing" (reads-outside lists modules). Both modules pin mesh-sdk 17fc9b9 exactly.
Quick vs thorough: quick was the vault-only rule (#573, blocking fault). This is the thorough fix: one shared rule in mesh-sdk, every reader on it, and a catalogue check that refuses a new reader testing plan existence. Second time this week two parts disagreed about what a plan means (fix-a-bug-met-twice).
Tests: gofmt, go vet (both tags), go test -count=1 with GOWORK=off in mesh-vault, mesh-provisioner-client, checks/planhands, mesh-sdk go/catalogue. No new test functions beyond the check's one.
Issue 774 (L3). Thorough fix of the kind behind the 23:33 provisions group fault (22 modules could not compose; quick fix mesh-catalog #573 merged 00:00): parts read "a plan exists" as "the module is handed", and since mesh-sdk 125bb91 the provisioner keeps provisions-only plans (a route) for modules it does not hand.
Group fix/plan-hands, merge order mesh-sdk first:
- mesh-sdk: catalogue.Plan.Hands(): a plan hands its module when it names a template source, a file, a secret or an item; table cases in the existing keyed test.
- mesh-catalog: mesh-vault readers asking "is it handed" call Hands (own, get, pair.go readBindings/716/732/814/830); readers that only bind stay on plan existence, marked "binds, not handing"; mesh-provisioner-client planOf treats a non-handing plan as no plan (it refused every route-only plan live); new catalogue check checks/planhands refuses a line testing Provisioning ==/!= nil unless it asks Hands or says "not handing" (reads-outside lists modules). Both modules pin mesh-sdk 17fc9b9 exactly.
Quick vs thorough: quick was the vault-only rule (#573, blocking fault). This is the thorough fix: one shared rule in mesh-sdk, every reader on it, and a catalogue check that refuses a new reader testing plan existence. Second time this week two parts disagreed about what a plan means (fix-a-bug-met-twice).
Tests: gofmt, go vet (both tags), go test -count=1 with GOWORK=off in mesh-vault, mesh-provisioner-client, checks/planhands, mesh-sdk go/catalogue. No new test functions beyond the check's one.
Reviewed-by: rev-hands@shanks at 6bd3da773683a5908d0a98f2bca17508b4167022
Deliverynovox/mesh-catalog@6bd3da773683 — merged since 2026-10-30T23:19:01Z
Source — source.main moved to novox/mesh-catalog@d412991c69. 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 (cf7063063ec0)
Transitions
2026-10-30 23:02 (new) → proposed (announced): novox/mesh-catalog#574's head announced
2026-10-30 23:02 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 23:19 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@6bd3da773683` — **merged** since 2026-10-30T23:19:01Z
**Source** — source.main moved to novox/mesh-catalog@d412991c6992. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/plan-hands`: novox/mesh-catalog@6bd3da773683, novox/mesh-sdk@17fc9b9b8115
- composed together: pass — the checker's verdict at the members' heads (cf7063063ec0)
**Transitions**
- 2026-10-30 23:02 (new) → proposed (announced): novox/mesh-catalog#574's head announced
- 2026-10-30 23:02 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 23:19 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.
Issue 774 (L3). Thorough fix of the kind behind the 23:33 provisions group fault (22 modules could not compose; quick fix mesh-catalog #573 merged 00:00): parts read "a plan exists" as "the module is handed", and since mesh-sdk 125bb91 the provisioner keeps provisions-only plans (a route) for modules it does not hand.
Group fix/plan-hands, merge order mesh-sdk first:
Quick vs thorough: quick was the vault-only rule (#573, blocking fault). This is the thorough fix: one shared rule in mesh-sdk, every reader on it, and a catalogue check that refuses a new reader testing plan existence. Second time this week two parts disagreed about what a plan means (fix-a-bug-met-twice).
Tests: gofmt, go vet (both tags), go test -count=1 with GOWORK=off in mesh-vault, mesh-provisioner-client, checks/planhands, mesh-sdk go/catalogue. No new test functions beyond the check's one.
Reviewed-by: rev-hands@shanks at
6bd3da7736Delivery
novox/mesh-catalog@6bd3da773683— merged since 2026-10-30T23:19:01ZSource — source.main moved to novox/mesh-catalog@d412991c69. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/plan-hands: novox/mesh-catalog@6bd3da7736, novox/mesh-sdk@17fc9b9b81Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.