mesh-grants writes its memberships bare through the mesh-sdk codec (issue 774) #114

Merged
jschoubben merged 2 commits from fix/memberships-shape into main 2026-10-30 14:42:13 +00:00
Member

Recovery of design 47's release (issue 774, L3). Group fix/memberships-shape: mesh-sdk, mesh-delivery, mesh-tools; merge mesh-sdk first.

Fault (live 2026-10-30 14:11): mesh-grants wrote its state memberships wrapped ({node,module,digest,membership:{...},published}); the new tool runner decoded it bare, so every module on novox was issued no tools and no state (0 tools served); novox's tool runner is held on c9f6c674 meanwhile.

Quick fix: the tool runner unwraps. Thorough fix (chosen): one codec in mesh-sdk (membership.EncodeGrantsMembership / DecodeGrantsMembership; the decoder takes the bare shape, or an old wrapper only when it says published or unchanged); mesh-grants writes the bare membership, only when published or unchanged; node-tools reads through the codec, a refused value leaves the stream copy in force. The fixture that hid it (written by hand in the reader's shape) now writes through the encoder, and an integration test writes the grants part's real wrapped shape, including a held-back one. Recovery mode: no check waited on; the operator merges by hand.

Reviewed-by: rev-memberships@shanks at 180a3fe5db

Recovery of design 47's release (issue 774, L3). Group fix/memberships-shape: mesh-sdk, mesh-delivery, mesh-tools; merge mesh-sdk first. Fault (live 2026-10-30 14:11): mesh-grants wrote its state memberships wrapped ({node,module,digest,membership:{...},published}); the new tool runner decoded it bare, so every module on novox was issued no tools and no state (0 tools served); novox's tool runner is held on c9f6c674 meanwhile. Quick fix: the tool runner unwraps. Thorough fix (chosen): one codec in mesh-sdk (membership.EncodeGrantsMembership / DecodeGrantsMembership; the decoder takes the bare shape, or an old wrapper only when it says published or unchanged); mesh-grants writes the bare membership, only when published or unchanged; node-tools reads through the codec, a refused value leaves the stream copy in force. The fixture that hid it (written by hand in the reader's shape) now writes through the encoder, and an integration test writes the grants part's real wrapped shape, including a held-back one. Recovery mode: no check waited on; the operator merges by hand. Reviewed-by: rev-memberships@shanks at 180a3fe5db309d3d6f770a9a0800e0006800a7de
mesh-tools added 2 commits 2026-10-30 14:41:24 +00:00
The state memberships held the part's wrapper ({node, module, digest, membership, published, retired}) while every
reader takes the bare membership the assignments stream carries: novox's tool runner decoded an empty one and served
no tool. The part now writes membership.EncodeGrantsMembership of a membership published or unchanged, never one held
back. The pass record moves to the pass the part already keeps (user-list at pass): published or why not was there, the
retired seat verbs are added as Result.Retired; grants_membership reads both, so no new state is declared.

Issue 774 (the bus login list, L3). Quick fix: marshal m.Membership here. Thorough, chosen: one codec in mesh-sdk the
writer and the tool runner share, because a hand-built fixture agreed with the mistake. Pins mesh-sdk at the head of
its fix/memberships-shape.
Pin mesh-sdk at its fix/memberships-shape head after review round 1 (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-delivery@f7cd4698db7e
mesh/delivery-group group fix/memberships-shape merged: every member is merged
mesh/check checking 180a3fe5db30 on ab210fc5ab40 | novox/mesh-delivery#114 in group fix/memberships-shape
180a3fe5db
The decoder now refuses an old wrapper of a held-back membership; grants_membership says so for such a key.
Author
Member

Delivery novox/mesh-delivery@180a3fe5db30 — merged since 2026-10-30T14:42:15Z

Source — source.main moved to novox/mesh-delivery@f7cd4698db. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/memberships-shape: novox/mesh-delivery@180a3fe5db, novox/mesh-sdk@83cf97b690, novox/mesh-tools@ac645e2cae

Transitions

  • 2026-10-30 14:41 (new) → proposed (announced): novox/mesh-delivery#114's head announced
  • 2026-10-30 14:41 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 14:42 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-delivery@180a3fe5db30` — **merged** since 2026-10-30T14:42:15Z **Source** — source.main moved to novox/mesh-delivery@f7cd4698db7e. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/memberships-shape`: novox/mesh-delivery@180a3fe5db30, novox/mesh-sdk@83cf97b690f5, novox/mesh-tools@ac645e2caedd **Transitions** - 2026-10-30 14:41 (new) → proposed (announced): novox/mesh-delivery#114's head announced - 2026-10-30 14:41 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 14:42 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`.
jschoubben merged commit f7cd4698db into main 2026-10-30 14:42:13 +00:00
jschoubben deleted branch fix/memberships-shape 2026-10-30 14:42:14 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#114