mesh-grants composes the user list without granting the engine's state to a tool runner (issue 774) #115

Merged
jschoubben merged 1 commits from fix/runner-carries-no-engine-state into main 2026-10-30 15:35:59 +00:00
Member

Production fix, recovery of design 47's release (issue 774, note 45). Group fix/runner-carries-no-engine-state: mesh-sdk, mesh-delivery; merge mesh-sdk first.

Fault (live since 13:54): the grants part refuses to compose the whole bus user list: each tool runner would be granted writes to the node-engine's own state ($KV.mesh-host_health.>), because the placement names mesh-host and the runner carried it. So the bus runs the 13:54 list; every grant since is missing (provisioner clients on g14 and shanks cannot read their plans). Second meeting of the kind (this morning: mesh-host_acts, fixed only by dropping that state).

Quick fix: drop state health from mesh-host. Thorough fix (chosen): Users() never composes a user from the engine's manifest and the runner never carries it (Composed / CarriedByRunner); the engine's grants stay with the node account. Tests: a placement with mesh-host fails with the exact live text on the old SDK and passes on the new; the grants part's live-placement test refuses any runner write to mesh-host_*. Not done here (note on 774): one refused principal still freezes the whole list; the controller's own composer copy lacks the guard. Recovery mode: no check waited on; the operator merges by hand.

Reviewed-by: rev-engine@shanks at 57193ab2e4

Production fix, recovery of design 47's release (issue 774, note 45). Group fix/runner-carries-no-engine-state: mesh-sdk, mesh-delivery; merge mesh-sdk first. Fault (live since 13:54): the grants part refuses to compose the whole bus user list: each tool runner would be granted writes to the node-engine's own state ($KV.mesh-host_health.>), because the placement names mesh-host and the runner carried it. So the bus runs the 13:54 list; every grant since is missing (provisioner clients on g14 and shanks cannot read their plans). Second meeting of the kind (this morning: mesh-host_acts, fixed only by dropping that state). Quick fix: drop state health from mesh-host. Thorough fix (chosen): Users() never composes a user from the engine's manifest and the runner never carries it (Composed / CarriedByRunner); the engine's grants stay with the node account. Tests: a placement with mesh-host fails with the exact live text on the old SDK and passes on the new; the grants part's live-placement test refuses any runner write to mesh-host_*. Not done here (note on 774): one refused principal still freezes the whole list; the controller's own composer copy lacks the guard. Recovery mode: no check waited on; the operator merges by hand. Reviewed-by: rev-engine@shanks at 57193ab2e4744ad82572ecd1c95ef17d38ede527
mesh-tools added 1 commit 2026-10-30 15:35:17 +00:00
Pin mesh-grants to the mesh-sdk that composes no user from the node-engine's manifest, so the whole user list composes again (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-delivery@98594c990287
mesh/delivery-group group fix/runner-carries-no-engine-state merged: every member is merged
mesh/check checking 57193ab2e474 on f7cd4698db7e | novox/mesh-delivery#115 in group fix/runner-carries-no-engine-state
57193ab2e4
Second meeting of the engine-state-in-runner kind; thorough: the runner
never carries the engine module. The live placement names mesh-host,
and with its health state the runner was a second writer, so every
grant since 13:54 was held back. The seeded-placement test now carries
the engine's manifest and refuses any runner write of mesh-host_*.
Author
Member

Delivery novox/mesh-delivery@57193ab2e474 — merged since 2026-10-30T15:36:00Z

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

Group fix/runner-carries-no-engine-state: novox/mesh-delivery@57193ab2e4, novox/mesh-sdk@6e78203959

Transitions

  • 2026-10-30 15:35 (new) → proposed (announced): novox/mesh-delivery#115's head announced
  • 2026-10-30 15:35 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 15:36 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@57193ab2e474` — **merged** since 2026-10-30T15:36:00Z **Source** — source.main moved to novox/mesh-delivery@98594c990287. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/runner-carries-no-engine-state`: novox/mesh-delivery@57193ab2e474, novox/mesh-sdk@6e7820395952 **Transitions** - 2026-10-30 15:35 (new) → proposed (announced): novox/mesh-delivery#115's head announced - 2026-10-30 15:35 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 15:36 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 98594c9902 into main 2026-10-30 15:35:59 +00:00
jschoubben deleted branch fix/runner-carries-no-engine-state 2026-10-30 15:35:59 +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#115