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.
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
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_*.
Deliverynovox/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.
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`.
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.
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
57193ab2e4Delivery
novox/mesh-delivery@57193ab2e474— merged since 2026-10-30T15:36:00ZSource — source.main moved to novox/mesh-delivery@98594c9902. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/runner-carries-no-engine-state: novox/mesh-delivery@57193ab2e4, novox/mesh-sdk@6e78203959Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.