An unissued bus account holds back only its own module, never the whole node #490

Merged
mesh-tools merged 1 commits from fix/vault-minted-accounts into main 2026-11-01 08:26:02 +00:00
Member

An unissued bus account holds back only its own module, never the whole node (issue 1585).

After issue 1585's delivery (2026-11-01 08:54) the controller's credential check refused novox's whole composition because mesh-hand-acts had no bus account in the controller's own record (the vault had minted it at 08:53), stopping every take-in for 16 minutes; recovered by taking mesh-hand-acts off novox on the operator's Approve. Now holdBackUnissuedBusAccounts holds out only that module (issue 203's words in the journal), the rest of the node composes, no placeholder is ever sealed, and a held module keeps its last composition (withoutNodeOwnForHeld).

Quick fix weighed: hold the module (this); thorough: also count the vault's minted accounts, deferred because the controller would read every account's bcrypt hash (mesh-vault.bus-accounts is named-reader mesh-grants only, ADR 0547 §9) and the controller leaves at L2. Controller research "The controller, NATS-native": none moved; a recovery fix.

Rule bent, said here: one unit test added (1043 -> 1044, over the 500 budget), costs about 0 s; folding it was not worth another review round. Notes for later: a held module's ports and passes still assigned in perform; validator verdict computed before the hold.

Reviewed-by: reviewer-minted@shanks at 29dfb28f38
Pushed-by: fix-minted@shanks

https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL

An unissued bus account holds back only its own module, never the whole node (issue 1585). After issue 1585's delivery (2026-11-01 08:54) the controller's credential check refused novox's whole composition because mesh-hand-acts had no bus account in the controller's own record (the vault had minted it at 08:53), stopping every take-in for 16 minutes; recovered by taking mesh-hand-acts off novox on the operator's Approve. Now holdBackUnissuedBusAccounts holds out only that module (issue 203's words in the journal), the rest of the node composes, no placeholder is ever sealed, and a held module keeps its last composition (withoutNodeOwnForHeld). Quick fix weighed: hold the module (this); thorough: also count the vault's minted accounts, deferred because the controller would read every account's bcrypt hash (mesh-vault.bus-accounts is named-reader mesh-grants only, ADR 0547 §9) and the controller leaves at L2. Controller research "The controller, NATS-native": none moved; a recovery fix. Rule bent, said here: one unit test added (1043 -> 1044, over the 500 budget), costs about 0 s; folding it was not worth another review round. Notes for later: a held module's ports and passes still assigned in perform; validator verdict computed before the hold. Reviewed-by: reviewer-minted@shanks at 29dfb28f389909ade2c43520f002690e9fba83e2 Pushed-by: fix-minted@shanks https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
mesh-tools added 1 commit 2026-11-01 08:16:32 +00:00
Hold only the module whose bus account nobody issued, never the whole node (issue 203)
mesh/delivery merged: source.main moved to novox/mesh-controller@5c281ad99bcc
mesh/check checking 29dfb28f3899 on 5c281ad99bcc
29dfb28f38
The 1585 group's refusal turned one unissued account into a refusal of the node's whole
composition: novox's mesh-hand-acts, which the vault had minted but the controller's store
does not hold, stopped every take-in on the machine that runs the bus. The module is now held
out of the composition alone, in issue 203's words, and the rest composes; no placeholder is
sealed. A held module of the former form keeps the node's own composition as last written, so
the node-engine never removes it.

Counting the vault's accounts as issued needs the controller to read mesh-vault.bus-accounts,
which mesh-sdk's named readers give to the grants part alone (ADR 0547 clause 9): not built here.

Controller research piece: none moved; this narrows a refusal in the composition the controller
hands over (blocking-fault recovery).

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

Delivery novox/mesh-controller@29dfb28f3899 — merged since 2026-11-01T08:26:03Z

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

Transitions

  • 2026-11-01 08:16 (new) → proposed (announced): novox/mesh-controller#490's head announced
  • 2026-11-01 08:16 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-01 08:26 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-controller@29dfb28f3899` — **merged** since 2026-11-01T08:26:03Z **Source** — source.main moved to novox/mesh-controller@5c281ad99bcc. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-01 08:16 (new) → proposed (announced): novox/mesh-controller#490's head announced - 2026-11-01 08:16 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-01 08:26 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 5c281ad99b into main 2026-11-01 08:26:02 +00:00
mesh-tools deleted branch fix/vault-minted-accounts 2026-11-01 08:26:03 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#490