Issue 1945. mesh-delivery #49 merged at 22d4cbd1 (an ask raised before the fault was found); its assigner crash-looped on ace 21:53:30-21:56:27 on 'Permissions Violation ... KV_mesh-delivery-assigner_puts': it skipped its new puts bucket only when not found, so a grant not yet on the bus stopped every want. Recovered by the operator's user-list hand step.
Whatever keeps the puts bucket from opening or being watched (not there, not granted, a timeout), the assigner starts and writes wants, saying so in its journal; a missing wants bucket still stops it. The put event, backup calls and warranted only log. While the bucket is not open, a pass woken by a change opens it again, at most once a minute.
The start no longer waits for the puts watch, so a watch closed early cannot hold up the first pass.
A want marked put and held is never moved by the rules while no put is heard for that node (a restart, or the bucket not open): it goes back to the rules only once its put is heard released (ADR 0546 clause 5). A held bus still takes a user-list change only.
Checked: go test -race, go vet -tags integration; try-1792962711569326113 passed at eb65535f (229 unit, 254 integration). No new top-level tests (rows in existing tests, each failing on the code before).
Review: round 1 blocked (a closed puts watch could hang the start), round 2 blocked (a restart overwrote a held put's want), round 3 approved. Notes kept for later: assigner_release returns success while the bucket cannot be read (the tool should say so); a put key deleted by hand leaves its held want held; from #49, PutWant drops the want's backup answer, so a held put's want and the backups pass may rewrite each other while a backup ask stands.
Issue 1945. mesh-delivery #49 merged at 22d4cbd1 (an ask raised before the fault was found); its assigner crash-looped on ace 21:53:30-21:56:27 on 'Permissions Violation ... KV_mesh-delivery-assigner_puts': it skipped its new puts bucket only when not found, so a grant not yet on the bus stopped every want. Recovered by the operator's user-list hand step.
- Whatever keeps the puts bucket from opening or being watched (not there, not granted, a timeout), the assigner starts and writes wants, saying so in its journal; a missing wants bucket still stops it. The put event, backup calls and warranted only log. While the bucket is not open, a pass woken by a change opens it again, at most once a minute.
- The start no longer waits for the puts watch, so a watch closed early cannot hold up the first pass.
- A want marked put and held is never moved by the rules while no put is heard for that node (a restart, or the bucket not open): it goes back to the rules only once its put is heard released (ADR 0546 clause 5). A held bus still takes a user-list change only.
Checked: go test -race, go vet -tags integration; try-1792962711569326113 passed at eb65535f (229 unit, 254 integration). No new top-level tests (rows in existing tests, each failing on the code before).
Review: round 1 blocked (a closed puts watch could hang the start), round 2 blocked (a restart overwrote a held put's want), round 3 approved. Notes kept for later: assigner_release returns success while the bucket cannot be read (the tool should say so); a put key deleted by hand leaves its held want held; from #49, PutWant drops the want's backup answer, so a held put's want and the backups pass may rewrite each other while a backup ask stands.
Reviewed-by: review-put@shanks at eb65535f45db351897ec6a6454517ec5fcb9a93c
Deliverynovox/mesh-delivery@eb65535f45db — merged since 2026-10-25T21:22:58Z
Source — source.main moved to novox/mesh-delivery@73be3df28c. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-10-25 21:19 (new) → proposed (announced): novox/mesh-delivery#50's head announced
2026-10-25 21:22 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
2026-10-25 21:22 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@eb65535f45db` — **merged** since 2026-10-25T21:22:58Z
**Source** — source.main moved to novox/mesh-delivery@73be3df28cd4. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-10-25 21:19 (new) → proposed (announced): novox/mesh-delivery#50's head announced
- 2026-10-25 21:22 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
- 2026-10-25 21:22 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. mesh-delivery #49 merged at
22d4cbd1(an ask raised before the fault was found); its assigner crash-looped on ace 21:53:30-21:56:27 on 'Permissions Violation ... KV_mesh-delivery-assigner_puts': it skipped its new puts bucket only when not found, so a grant not yet on the bus stopped every want. Recovered by the operator's user-list hand step.Checked: go test -race, go vet -tags integration; try-1792962711569326113 passed at
eb65535f(229 unit, 254 integration). No new top-level tests (rows in existing tests, each failing on the code before).Review: round 1 blocked (a closed puts watch could hang the start), round 2 blocked (a restart overwrote a held put's want), round 3 approved. Notes kept for later: assigner_release returns success while the bucket cannot be read (the tool should say so); a put key deleted by hand leaves its held want held; from #49, PutWant drops the want's backup answer, so a held put's want and the backups pass may rewrite each other while a backup ask stands.
Reviewed-by: review-put@shanks at
eb65535f45Delivery
novox/mesh-delivery@eb65535f45db— merged since 2026-10-25T21:22:58ZSource — source.main moved to novox/mesh-delivery@73be3df28c. 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.