Recovery (recovery mode: reviewed + local unit tests, merged by hand). Blocking fault in design 47's release delivery (issue 774).
mesh-grants.grants_user_list refuses every pass: "a second writer would be granted: ace.node-tools may publish $KV.mesh-host_acts.>, ... whose writer is the node-engine of the machine". ace's tool runner still runs the old mesh-tools runtime, which carries bundles on its own account, so the nats tools bundle's new bus.removes: [mesh-host_acts] lands on ace.node-tools. The user list has been frozen at revision 102043 since 00:18Z, so none of the release's new permissions reached the bus: the new vault on novox is refused its seat verbs and every read times out, novox's node-engine composes nothing (the vault's own says not yet), and the controller issues no new credentials.
Fix: the nats tools bundle's bus.removes keeps only DEAD_LETTER_NOTICES.controller. The grants part reads manifests from the indexer by digest, so its next pass after the merge composes from this one without novox composing anything.
Cost, said: nats RemoveKeys on mesh-host_acts (the recovery for a full acts bucket) loses its grant until ace runs the new tool runner (an account per bundle); then the removal comes back (noted on issue 774).
Quick vs thorough: quick (drop the one grant). Thorough: mesh-sdk's CheckWriters lets a runtime account carrying a bundle that declares the removal pass, or refuses only that account instead of the whole list; and mesh-host keeps the last sealed boxes when the vault's own fails, so one silent vault cannot freeze a node. Both after the release.
Tests: modules/nats go test ./... passes; checks/handacts and checks/health pass.
Recovery (recovery mode: reviewed + local unit tests, merged by hand). Blocking fault in design 47's release delivery (issue 774).
mesh-grants.grants_user_list refuses every pass: "a second writer would be granted: ace.node-tools may publish $KV.mesh-host_acts.>, ... whose writer is the node-engine of the machine". ace's tool runner still runs the old mesh-tools runtime, which carries bundles on its own account, so the nats tools bundle's new `bus.removes: [mesh-host_acts]` lands on ace.node-tools. The user list has been frozen at revision 102043 since 00:18Z, so none of the release's new permissions reached the bus: the new vault on novox is refused its seat verbs and every read times out, novox's node-engine composes nothing (the vault's `own` says not yet), and the controller issues no new credentials.
Fix: the nats `tools` bundle's `bus.removes` keeps only `DEAD_LETTER_NOTICES.controller`. The grants part reads manifests from the indexer by digest, so its next pass after the merge composes from this one without novox composing anything.
Cost, said: nats `RemoveKeys` on `mesh-host_acts` (the recovery for a full acts bucket) loses its grant until ace runs the new tool runner (an account per bundle); then the removal comes back (noted on issue 774).
Quick vs thorough: quick (drop the one grant). Thorough: mesh-sdk's CheckWriters lets a runtime account carrying a bundle that declares the removal pass, or refuses only that account instead of the whole list; and mesh-host keeps the last sealed boxes when the vault's `own` fails, so one silent vault cannot freeze a node. Both after the release.
Tests: modules/nats `go test ./...` passes; checks/handacts and checks/health pass.
Reviewed-by: rev-acts@shanks at 787563358b6784ae9c62dac77783e6311134f1b5
Deliverynovox/mesh-catalog@787563358b67 — merged since 2026-10-30T11:38:28Z
Source — source.main moved to novox/mesh-catalog@82ac613b4e. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-10-30 11:37 (new) → proposed (announced): novox/mesh-catalog#563's head announced
2026-10-30 11:37 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 11:38 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@787563358b67` — **merged** since 2026-10-30T11:38:28Z
**Source** — source.main moved to novox/mesh-catalog@82ac613b4ed0. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-10-30 11:37 (new) → proposed (announced): novox/mesh-catalog#563's head announced
- 2026-10-30 11:37 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 11:38 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.
Recovery (recovery mode: reviewed + local unit tests, merged by hand). Blocking fault in design 47's release delivery (issue 774).
mesh-grants.grants_user_list refuses every pass: "a second writer would be granted: ace.node-tools may publish $KV.mesh-host_acts.>, ... whose writer is the node-engine of the machine". ace's tool runner still runs the old mesh-tools runtime, which carries bundles on its own account, so the nats tools bundle's new
bus.removes: [mesh-host_acts]lands on ace.node-tools. The user list has been frozen at revision 102043 since 00:18Z, so none of the release's new permissions reached the bus: the new vault on novox is refused its seat verbs and every read times out, novox's node-engine composes nothing (the vault'sownsays not yet), and the controller issues no new credentials.Fix: the nats
toolsbundle'sbus.removeskeeps onlyDEAD_LETTER_NOTICES.controller. The grants part reads manifests from the indexer by digest, so its next pass after the merge composes from this one without novox composing anything.Cost, said: nats
RemoveKeysonmesh-host_acts(the recovery for a full acts bucket) loses its grant until ace runs the new tool runner (an account per bundle); then the removal comes back (noted on issue 774).Quick vs thorough: quick (drop the one grant). Thorough: mesh-sdk's CheckWriters lets a runtime account carrying a bundle that declares the removal pass, or refuses only that account instead of the whole list; and mesh-host keeps the last sealed boxes when the vault's
ownfails, so one silent vault cannot freeze a node. Both after the release.Tests: modules/nats
go test ./...passes; checks/handacts and checks/health pass.Reviewed-by: rev-acts@shanks at
787563358bDelivery
novox/mesh-catalog@787563358b67— merged since 2026-10-30T11:38:28ZSource — source.main moved to novox/mesh-catalog@82ac613b4e. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.