Recovery for a blocking fault after mesh-catalog #520 (the placement seed) merged at 08:20:34Z.
Symptom (novox's node-engine journal, 09:21-09:22 CET, every node alike): 'this node composes its own modules: the catalogue places it' then 'nats: permissions violation: Permissions Violation for Publish to "$JS.API.CONSUMER.CREATE.KV_node-engine_have..$KV.node-engine_have.>"' and 'the node agent stopped: the agent cannot watch its compositions: ... watching > in node-engine_have: context deadline exceeded — beginning again in 4s/8s/16s/32s/1m4s'. The fold fix (mesh-host #152) made the self-composer watch every have ('>'), which the node's grant does not allow. So no node composes or applies anything; what runs keeps running (mesh-host, nats, mesh-wireguard healthy on every node at 08:22Z), but no delivery can reach a node, not even the fix.
Why this recovers: mesh-host cmd/mesh-host/nodeagent.go selfComposer returns nil when placement. is deleted, so at the agent's next retry (at most 2 minutes) each node applies the controller's compositions again. The fix of the watch (two patterns within the grant: '.node' and '.') is then delivered the normal way, and the seed is opened again after it.
This removes only placement/{ace,g14,novox,shanks}.json, which #520 added. Its check cannot pass (the nodes' shadow composers fail the same watch); merge it on the operator's Approve without waiting for the check.
Reviewed-by: lead-47@shanks at b95b0a4750 (a revert of #520's files only; no independent review: a blocking recovery, said in the report)
Recovery for a blocking fault after mesh-catalog #520 (the placement seed) merged at 08:20:34Z.
Symptom (novox's node-engine journal, 09:21-09:22 CET, every node alike): 'this node composes its own modules: the catalogue places it' then 'nats: permissions violation: Permissions Violation for Publish to "$JS.API.CONSUMER.CREATE.KV_node-engine_have.<id>.$KV.node-engine_have.>"' and 'the node agent stopped: the agent cannot watch its compositions: ... watching > in node-engine_have: context deadline exceeded — beginning again in 4s/8s/16s/32s/1m4s'. The fold fix (mesh-host #152) made the self-composer watch every have ('>'), which the node's grant does not allow. So no node composes or applies anything; what runs keeps running (mesh-host, nats, mesh-wireguard healthy on every node at 08:22Z), but no delivery can reach a node, not even the fix.
Why this recovers: mesh-host cmd/mesh-host/nodeagent.go selfComposer returns nil when placement.<node> is deleted, so at the agent's next retry (at most 2 minutes) each node applies the controller's compositions again. The fix of the watch (two patterns within the grant: '*.node' and '<node>.*') is then delivered the normal way, and the seed is opened again after it.
This removes only placement/{ace,g14,novox,shanks}.json, which #520 added. Its check cannot pass (the nodes' shadow composers fail the same watch); merge it on the operator's Approve without waiting for the check.
Reviewed-by: lead-47@shanks at b95b0a4750444161613661ee57dd242d039efda8 (a revert of #520's files only; no independent review: a blocking recovery, said in the report)
Deliverynovox/mesh-catalog@b95b0a475044 — merged since 2026-10-27T14:06:37Z
Source — source.main moved to novox/mesh-catalog@c05aa5e6ea. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-10-27 08:23 (new) → proposed (announced): novox/mesh-catalog#521's head announced
2026-10-27 08:23 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-27 14:06 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@b95b0a475044` — **merged** since 2026-10-27T14:06:37Z
**Source** — source.main moved to novox/mesh-catalog@c05aa5e6eafd. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-10-27 08:23 (new) → proposed (announced): novox/mesh-catalog#521's head announced
- 2026-10-27 08:23 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-27 14:06 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 for a blocking fault after mesh-catalog #520 (the placement seed) merged at 08:20:34Z.
Symptom (novox's node-engine journal, 09:21-09:22 CET, every node alike): 'this node composes its own modules: the catalogue places it' then 'nats: permissions violation: Permissions Violation for Publish to "$JS.API.CONSUMER.CREATE.KV_node-engine_have..$KV.node-engine_have.>"' and 'the node agent stopped: the agent cannot watch its compositions: ... watching > in node-engine_have: context deadline exceeded — beginning again in 4s/8s/16s/32s/1m4s'. The fold fix (mesh-host #152) made the self-composer watch every have ('>'), which the node's grant does not allow. So no node composes or applies anything; what runs keeps running (mesh-host, nats, mesh-wireguard healthy on every node at 08:22Z), but no delivery can reach a node, not even the fix.
Why this recovers: mesh-host cmd/mesh-host/nodeagent.go selfComposer returns nil when placement. is deleted, so at the agent's next retry (at most 2 minutes) each node applies the controller's compositions again. The fix of the watch (two patterns within the grant: '.node' and '.') is then delivered the normal way, and the seed is opened again after it.
This removes only placement/{ace,g14,novox,shanks}.json, which #520 added. Its check cannot pass (the nodes' shadow composers fail the same watch); merge it on the operator's Approve without waiting for the check.
Reviewed-by: lead-47@shanks at
b95b0a4750(a revert of #520's files only; no independent review: a blocking recovery, said in the report)Delivery
novox/mesh-catalog@b95b0a475044— merged since 2026-10-27T14:06:37ZSource — source.main moved to novox/mesh-catalog@c05aa5e6ea. 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.