Recovery fix under the instruction recovery-fixes-merge-and-tell: merged by the session, the operator told on Telegram.
Cause. The new grants part (682fabee) places modules only from the first view mesh-delivery-assigner.assignments. The assigner on ace is an older build that serves no first views (31 asks, 'no responders'), so the grants part placed nothing and wrote no grant, membership, bucket or user list: not for the builder b3f35873 on shanks, not for the new assigner d325caf4 that serves the view, not for a new grants build. The indexer's account also lost its right to serve the seat mesh-catalog, so seat-definitions went unanswered and the seat list stayed at the 10 bootstrapped seats. Evidence: issue 1966 notes 63, 64 (grants_first_views, grants_membership, nats_user_can, nats_users).
Change. When the assignments read fails and the haves read, each module is placed on the node whose node-engine have says it runs (not removed), and the bus node is found among them; the gap says so and the fallback ends once the view answers. Such a pass retires no account, deletes no withheld hearing, and seals no list that drops a user of the list in force or loaded (holdsBack). Bends ADR 0567 §9 (the assignments alone place modules) for the bootstrap, as the operator chose at 22:19 CET.
Quick vs thorough. Quick: this fallback. Thorough: the module graph's ordering edge (the assigner's views before the grants part that reads them) in the delivery plan; noted on issue 1966.
Tests. Table rows in grants_test.go (fallback places and grants, the indexer serves the seat's verbs with the gate closed, a removed have places nothing, an answering view places by the assignments); each fails on main or under the named mutation. go vet ./..., go vet -tags integration ./..., go test ./... pass in modules/mesh-grants. Reviewer: mesh-code-reviewer, round 2 approved.
Recovery fix under the instruction recovery-fixes-merge-and-tell: merged by the session, the operator told on Telegram.
**Cause.** The new grants part (682fabee) places modules only from the first view `mesh-delivery-assigner.assignments`. The assigner on ace is an older build that serves no first views (31 asks, 'no responders'), so the grants part placed nothing and wrote no grant, membership, bucket or user list: not for the builder b3f35873 on shanks, not for the new assigner d325caf4 that serves the view, not for a new grants build. The indexer's account also lost its right to serve the seat `mesh-catalog`, so `seat-definitions` went unanswered and the seat list stayed at the 10 bootstrapped seats. Evidence: issue 1966 notes 63, 64 (grants_first_views, grants_membership, nats_user_can, nats_users).
**Change.** When the assignments read fails and the haves read, each module is placed on the node whose node-engine have says it runs (not removed), and the bus node is found among them; the gap says so and the fallback ends once the view answers. Such a pass retires no account, deletes no withheld hearing, and seals no list that drops a user of the list in force or loaded (holdsBack). Bends ADR 0567 §9 (the assignments alone place modules) for the bootstrap, as the operator chose at 22:19 CET.
**Quick vs thorough.** Quick: this fallback. Thorough: the module graph's ordering edge (the assigner's views before the grants part that reads them) in the delivery plan; noted on issue 1966.
**Tests.** Table rows in grants_test.go (fallback places and grants, the indexer serves the seat's verbs with the gate closed, a removed have places nothing, an answering view places by the assignments); each fails on main or under the named mutation. go vet ./..., go vet -tags integration ./..., go test ./... pass in modules/mesh-grants. Reviewer: mesh-code-reviewer, round 2 approved.
**Undo.** Revert the merge commit.
Reviewed-by: review-1966@shanks at 69b6b89af57b1dde686846800d92ea6cffa41a7f
https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Bootstrap only (issue 1966, notes 63 and 64; the operator chose it 2026-11-07 22:19,
bending ADR 0567 §9 for the bootstrap). An assigner that serves no first views answers
no assignments, so the grants part placed nothing and wrote no grant, membership or
bucket for anything, not even for the assigner that would serve the view.
When the assignments read fails and the haves read, each module is placed on the node
whose have says it runs (any phase but removed), the bus node found among them, and what
runs composed from each have's fingerprint instead of the assigner's wants. Said as a gap
naming the fallback, and kept as Inputs.ByHaves: such a pass retires no account and deletes
no withheld hearing (ReadFailures), and seals no list that drops a user of the list in
force or of the loaded list (holdsBack). Once the view answers, the fallback is unused.
Quick fix; the thorough one stays the module-graph edge (the assigner's views before the
grants part that reads them) in the delivery plan.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Issue 1966: the seat list is read through mesh-catalog's seat-definitions, which got no
responders only because nothing was placed. A row shows that, the assignments view
unanswered, the indexer placed by its have (its real manifest) is composed to hear
mesh.seat.mesh-catalog.* and its membership serving seat-definitions is published, while
the seat list stays unread and other modules still wait for it.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Review round 1 of issue 1966's fix: the membership check alone did not pin the removed
phase; the row now reads the inputs and requires mod-y off b while its have is removed.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Deliverynovox/mesh-delivery@69b6b89af57b — merged since 2026-11-07T22:05:14Z
Source — source.main moved to novox/mesh-delivery@dcc48b82d0. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-07 21:53 (new) → proposed (announced): novox/mesh-delivery#170's head announced
2026-11-07 21:53 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-11-07 22:05 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@69b6b89af57b` — **merged** since 2026-11-07T22:05:14Z
**Source** — source.main moved to novox/mesh-delivery@dcc48b82d0cb. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-07 21:53 (new) → proposed (announced): novox/mesh-delivery#170's head announced
- 2026-11-07 21:53 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-11-07 22:05 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 fix under the instruction recovery-fixes-merge-and-tell: merged by the session, the operator told on Telegram.
Cause. The new grants part (682fabee) places modules only from the first view
mesh-delivery-assigner.assignments. The assigner on ace is an older build that serves no first views (31 asks, 'no responders'), so the grants part placed nothing and wrote no grant, membership, bucket or user list: not for the builder b3f35873 on shanks, not for the new assigner d325caf4 that serves the view, not for a new grants build. The indexer's account also lost its right to serve the seatmesh-catalog, soseat-definitionswent unanswered and the seat list stayed at the 10 bootstrapped seats. Evidence: issue 1966 notes 63, 64 (grants_first_views, grants_membership, nats_user_can, nats_users).Change. When the assignments read fails and the haves read, each module is placed on the node whose node-engine have says it runs (not removed), and the bus node is found among them; the gap says so and the fallback ends once the view answers. Such a pass retires no account, deletes no withheld hearing, and seals no list that drops a user of the list in force or loaded (holdsBack). Bends ADR 0567 §9 (the assignments alone place modules) for the bootstrap, as the operator chose at 22:19 CET.
Quick vs thorough. Quick: this fallback. Thorough: the module graph's ordering edge (the assigner's views before the grants part that reads them) in the delivery plan; noted on issue 1966.
Tests. Table rows in grants_test.go (fallback places and grants, the indexer serves the seat's verbs with the gate closed, a removed have places nothing, an answering view places by the assignments); each fails on main or under the named mutation. go vet ./..., go vet -tags integration ./..., go test ./... pass in modules/mesh-grants. Reviewer: mesh-code-reviewer, round 2 approved.
Undo. Revert the merge commit.
Reviewed-by: review-1966@shanks at
69b6b89af5https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Delivery
novox/mesh-delivery@69b6b89af57b— merged since 2026-11-07T22:05:14ZSource — source.main moved to novox/mesh-delivery@dcc48b82d0. 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.