Issue 1945 (the grants part's take-over of the bus user list).
When the grants part holds a sealed user list back (a hash missing, the bus node's key not named, a read failing), it now raises the condition mesh-grants.user-list-held with why, once per reason, and clears it on a pass that advances, agrees with the list in force, or has no bus node or key. Its state starts unknown (heldKnown), so the first pass after a start always says it: a warning raised before a restart is cleared when nothing is held any more. A failed Say leaves the state unknown, so the next pass says it again.
Tests: a row in the existing switch table builds a fresh Part and expects a clear on its first pass; it fails with the round-1 guard. go test -count=1 ./... passes and go vet -tags integration ./... is clean in modules/mesh-grants. Try try-1793018277003250736 passed (70 unit, 70 integration).
A clear of a condition never raised is harmless: the messenger logs one line and says nothing.
Issue 1945 (the grants part's take-over of the bus user list).
When the grants part holds a sealed user list back (a hash missing, the bus node's key not named, a read failing), it now raises the condition mesh-grants.user-list-held with why, once per reason, and clears it on a pass that advances, agrees with the list in force, or has no bus node or key. Its state starts unknown (heldKnown), so the first pass after a start always says it: a warning raised before a restart is cleared when nothing is held any more. A failed Say leaves the state unknown, so the next pass says it again.
Tests: a row in the existing switch table builds a fresh Part and expects a clear on its first pass; it fails with the round-1 guard. `go test -count=1 ./...` passes and `go vet -tags integration ./...` is clean in modules/mesh-grants. Try try-1793018277003250736 passed (70 unit, 70 integration).
A clear of a condition never raised is harmless: the messenger logs one line and says nothing.
Reviewed-by: review-holdloud@shanks at ce600df98afcd50bb0ed868b5d1fa4555f6c9554
Deliverynovox/mesh-delivery@ce600df98afc — merged since 2026-10-26T12:44:38Z
Source — source.main moved to novox/mesh-delivery@1d41682715. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-10-26 12:43 (new) → proposed (announced): novox/mesh-delivery#69's head announced
2026-10-26 12:43 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-26 12:44 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@ce600df98afc` — **merged** since 2026-10-26T12:44:38Z
**Source** — source.main moved to novox/mesh-delivery@1d416827157d. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-10-26 12:43 (new) → proposed (announced): novox/mesh-delivery#69's head announced
- 2026-10-26 12:43 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-26 12:44 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.
Issue 1945 (the grants part's take-over of the bus user list).
When the grants part holds a sealed user list back (a hash missing, the bus node's key not named, a read failing), it now raises the condition mesh-grants.user-list-held with why, once per reason, and clears it on a pass that advances, agrees with the list in force, or has no bus node or key. Its state starts unknown (heldKnown), so the first pass after a start always says it: a warning raised before a restart is cleared when nothing is held any more. A failed Say leaves the state unknown, so the next pass says it again.
Tests: a row in the existing switch table builds a fresh Part and expects a clear on its first pass; it fails with the round-1 guard.
go test -count=1 ./...passes andgo vet -tags integration ./...is clean in modules/mesh-grants. Try try-1793018277003250736 passed (70 unit, 70 integration).A clear of a condition never raised is harmless: the messenger logs one line and says nothing.
Reviewed-by: review-holdloud@shanks at
ce600df98aDelivery
novox/mesh-delivery@ce600df98afc— merged since 2026-10-26T12:44:38ZSource — source.main moved to novox/mesh-delivery@1d41682715. 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.