Grant a module's bus state asked in requires to the accounts that run its code (issue 1966, recovery) #188

Merged
mesh-tools merged 1 commits from fix/1966-requires-state into main 2026-11-09 12:56:35 +00:00
Member

Issue 1966, a recovery fix (instruction recovery-fixes-merge-and-tell). Group fix/1966-requires-state: mesh-sdk, mesh-tools, mesh-delivery (this).

Live case. After the tool runner issued distribution's state, the bus still refused it: novox's nats log at 12:33 UTC, "Publish Violation - User novox.node-tools, Subject $JS.API.STREAM.INFO.KV_distribution_transfers" (also idle, findings), so every publish timed out. This head's grants part runs on novox since 12:45 UTC, placed by hand; a build stored at 12:46:31.

Change. buscompose: Declared.Bindings and boundOf grant a module's bound entries (key-value, object store, stream) to its own account and to the tool runner carrying it, only when the binding names the module's own entry; the object-store writer rule knows bound stores. grants: the bindings are filled in the same pass that writes them into the membership; MembershipFor carries them. No existing grant is removed or narrowed.

Quick or thorough. Thorough: one function for every principal that runs a module's code, with a conformance row ("a requires entry is granted where its old section is") that fails on all 10 owner subjects without the change. Not in this pull request (the rest of the requires-grants work, under review later): the lost-binding fix, grants_bindings and grants_bindings_again, the manifest validator, the integration case. distribution's holds, windows, mirrors and events bindings stay missing until grants_bindings_again.

Check. Expected to fail on the checker's composition-size fault (issue 1966 note 130), not on this change; the merge needs the operator's Approve of that red check.

Reviewed-by: mesh-code-reviewer@shanks at a78c5700fd

https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i

Issue 1966, a recovery fix (instruction recovery-fixes-merge-and-tell). Group fix/1966-requires-state: mesh-sdk, mesh-tools, mesh-delivery (this). **Live case.** After the tool runner issued distribution's state, the bus still refused it: novox's nats log at 12:33 UTC, "Publish Violation - User novox.node-tools, Subject $JS.API.STREAM.INFO.KV_distribution_transfers" (also idle, findings), so every publish timed out. This head's grants part runs on novox since 12:45 UTC, placed by hand; a build stored at 12:46:31. **Change.** buscompose: `Declared.Bindings` and `boundOf` grant a module's bound entries (key-value, object store, stream) to its own account and to the tool runner carrying it, only when the binding names the module's own entry; the object-store writer rule knows bound stores. grants: the bindings are filled in the same pass that writes them into the membership; `MembershipFor` carries them. No existing grant is removed or narrowed. **Quick or thorough.** Thorough: one function for every principal that runs a module's code, with a conformance row ("a requires entry is granted where its old section is") that fails on all 10 owner subjects without the change. Not in this pull request (the rest of the requires-grants work, under review later): the lost-binding fix, `grants_bindings` and `grants_bindings_again`, the manifest validator, the integration case. distribution's holds, windows, mirrors and events bindings stay missing until `grants_bindings_again`. **Check.** Expected to fail on the checker's composition-size fault (issue 1966 note 130), not on this change; the merge needs the operator's Approve of that red check. Reviewed-by: mesh-code-reviewer@shanks at a78c5700fdf4ff249f26165f9f99ed25941b4ffa https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
mesh-tools added 1 commit 2026-11-09 12:49:08 +00:00
Grant a module's bus state asked in requires to the accounts that run its code
mesh/delivery merged: source.main moved to novox/mesh-delivery@fb69c8dee691
mesh/delivery-group group fix/1966-requires-state merged: every member is merged
mesh/check checking a78c5700fdf4 on fb69c8dee691 | novox/mesh-delivery#188 in group fix/1966-requires-state
a78c5700fd
The grants part wrote a binding into a membership on the bus module's
created, but granted its subjects to no account but the ledger's, so
distribution's program and the tool runner carrying it were refused their
own key-value, object store and stream entries (issue 1966, ADR 0595 §1,
design 25 § 12.2). The kept bindings now reach Declared in the same pass that
writes them into the membership, and one function, boundOf, grants each to
the module's own account and the tool runner, as its old section is granted;
a process's bus.state names a key-value entry as an old state. The composed
membership carries the bindings, so grants_membership's two sides agree.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Author
Member

Delivery novox/mesh-delivery@a78c5700fdf4 — merged since 2026-11-09T12:56:37Z

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

Group fix/1966-requires-state: novox/mesh-delivery@a78c5700fd, novox/mesh-sdk@17475257d1, novox/mesh-tools@8052fd14f4

Transitions

  • 2026-11-09 12:49 (new) → proposed (announced): novox/mesh-delivery#188's head announced
  • 2026-11-09 12:49 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-11-09 12:56 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@a78c5700fdf4` — **merged** since 2026-11-09T12:56:37Z **Source** — source.main moved to novox/mesh-delivery@fb69c8dee691. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1966-requires-state`: novox/mesh-delivery@a78c5700fdf4, novox/mesh-sdk@17475257d15f, novox/mesh-tools@8052fd14f4fd **Transitions** - 2026-11-09 12:49 (new) → proposed (announced): novox/mesh-delivery#188's head announced - 2026-11-09 12:49 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-11-09 12:56 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 fb69c8dee6 into main 2026-11-09 12:56:35 +00:00
mesh-tools deleted branch fix/1966-requires-state 2026-11-09 12:56:35 +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#188