The condition keeper reads the node-engine's findings; claude-code's seat-list again answers the operator's sessions (issue 1966; group fix/1966-seat-list-unread) #650

Merged
mesh-tools merged 2 commits from fix/1966-seat-list-unread into main 2026-11-10 00:44:31 +00:00
Member

Issue 1966 (notes 147-149): after a restart, a node-engine whose first read of the seat list met "no responders" composed on its bootstrapped list for good. On ace that held about 60 modules from 22:49 to 23:21 UTC on 2026-11-09 under a misleading "no artifact store", raised no condition, and its recovery verb answered no session. Met twice (2026-11-08, 2026-11-09), so the thorough fix.

Group fix/1966-seat-list-unread, one check, members pushed together: mesh-sdk (merge first; a build edge for the others), mesh-host, mesh-catalog, mesh-delivery.

  • S1 mesh-host: the node-engine's ask keeps the bus's "no responders" in its error.
  • S2 mesh-sdk: the seat list's reader asks again (busretry) while its ask reached no one (ADR 0636 §1, §4).
  • S3 mesh-host: seat-list and seat-list-again answer any person, node-tools (every console call is proved as node-tools, issue 627) and mesh-healers, as the node-engine seat's definition says.
  • S4 mesh-host: while the list is unread, a module whose seats are not all bootstrapped is held before its build is read, with a reason naming the bootstrapped seats; a pass refused whole begins with that line.
  • S5 mesh-host: the integration test of the node's first read is extended: a holder that answers "no responders" then serves is read by the same reader, with no event or hand act.
  • S6 mesh-catalog: the condition keeper reads the node-engine's findings, so ADR 0636 §1's condition is raised.
  • S7 mesh-catalog (claude-code), mesh-delivery (assigner, grants): node-tools on each seat-list-again caller list.

Quick fix: restart the node-engine once (done 2026-11-09 23:21 UTC on the operator's yes, hand act act-1794266688172849851-1). Thorough fix: this change, chosen because the kind was met twice, hid its cause behind another part's name and stopped every delivery to the machine.

Tests: every change is a row or subtest of an existing test and fails without its change; no repository's test count rises (mesh-host and mesh-delivery stay over their budgets, unchanged).

Manifest validator: the verdict on mesh-catalog modules/mesh-conditions/module.json (new read mesh-host.findings) is unproved until this pull request's check runs. A local re-creation against mesh-sdk's test copy of the seats accepted it in both the change and trunk cases, with no verdict differing; that is not the validator's live verdict.

Prepare and rulings: hq .work/1966-engine-seat-list/prepare.md.

Reviewed-by: mesh-code-reviewer@shanks (2 rounds) at mesh-sdk 2f156e7f30508e9aaf06322b305036645c3ed266, mesh-host 5c353cfc7bf08d1503d5bd6ce28b6d704df51bab, mesh-catalog c39503e322, mesh-delivery b1343147e80f846b889467143f4ae145e4b682f7
Pushed-by: lead-47@shanks

https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ

Issue 1966 (notes 147-149): after a restart, a node-engine whose first read of the seat list met "no responders" composed on its bootstrapped list for good. On ace that held about 60 modules from 22:49 to 23:21 UTC on 2026-11-09 under a misleading "no artifact store", raised no condition, and its recovery verb answered no session. Met twice (2026-11-08, 2026-11-09), so the thorough fix. Group fix/1966-seat-list-unread, one check, members pushed together: mesh-sdk (merge first; a build edge for the others), mesh-host, mesh-catalog, mesh-delivery. - S1 mesh-host: the node-engine's ask keeps the bus's "no responders" in its error. - S2 mesh-sdk: the seat list's reader asks again (busretry) while its ask reached no one (ADR 0636 §1, §4). - S3 mesh-host: seat-list and seat-list-again answer any person, node-tools (every console call is proved as node-tools, issue 627) and mesh-healers, as the node-engine seat's definition says. - S4 mesh-host: while the list is unread, a module whose seats are not all bootstrapped is held before its build is read, with a reason naming the bootstrapped seats; a pass refused whole begins with that line. - S5 mesh-host: the integration test of the node's first read is extended: a holder that answers "no responders" then serves is read by the same reader, with no event or hand act. - S6 mesh-catalog: the condition keeper reads the node-engine's findings, so ADR 0636 §1's condition is raised. - S7 mesh-catalog (claude-code), mesh-delivery (assigner, grants): node-tools on each seat-list-again caller list. Quick fix: restart the node-engine once (done 2026-11-09 23:21 UTC on the operator's yes, hand act act-1794266688172849851-1). Thorough fix: this change, chosen because the kind was met twice, hid its cause behind another part's name and stopped every delivery to the machine. Tests: every change is a row or subtest of an existing test and fails without its change; no repository's test count rises (mesh-host and mesh-delivery stay over their budgets, unchanged). Manifest validator: the verdict on mesh-catalog modules/mesh-conditions/module.json (new read mesh-host.findings) is unproved until this pull request's check runs. A local re-creation against mesh-sdk's test copy of the seats accepted it in both the change and trunk cases, with no verdict differing; that is not the validator's live verdict. Prepare and rulings: hq .work/1966-engine-seat-list/prepare.md. Reviewed-by: mesh-code-reviewer@shanks (2 rounds) at mesh-sdk 2f156e7f30508e9aaf06322b305036645c3ed266, mesh-host 5c353cfc7bf08d1503d5bd6ce28b6d704df51bab, mesh-catalog c39503e3227c0d6ac653d7d48b7103fd7c5fcad0, mesh-delivery b1343147e80f846b889467143f4ae145e4b682f7 Pushed-by: lead-47@shanks https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
mesh-tools added 2 commits 2026-11-10 00:21:14 +00:00
ace's node-engine wrote seat-list-unread in its state findings, and no
condition rose: the keeper's observers did not name the node-engine. It now
reads mesh-host.findings, so ADR 0636 §1's condition is raised and clears at
the first full read (issue 1966).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
S7: claude-code's seat-list again answers a proved operator's session
mesh/delivery merged: source.main moved to novox/mesh-catalog@c4463ba47fcf
mesh/delivery-group group fix/1966-seat-list-unread merged: every member is merged
mesh/check checking c39503e3227c on c4463ba47fcf | novox/mesh-catalog#650 in group fix/1966-seat-list-unread
c39503e322
claude_code_seat_list_again answered person.<name> and the healers, but every
call through the mesh MCP server is proved as its machine's tool runner
(issue 627); node-tools now stands for that session (issue 1966).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Author
Member

Delivery novox/mesh-catalog@c39503e3227c — merged since 2026-11-10T00:44:34Z

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

Group fix/1966-seat-list-unread: novox/mesh-catalog@c39503e322, novox/mesh-delivery@b1343147e8, novox/mesh-host@5c353cfc7b, novox/mesh-sdk@2f156e7f30

Transitions

  • 2026-11-10 00:21 (new) → proposed (announced): novox/mesh-catalog#650's head announced
  • 2026-11-10 00:21 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-10 00: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-catalog@c39503e3227c` — **merged** since 2026-11-10T00:44:34Z **Source** — source.main moved to novox/mesh-catalog@c4463ba47fcf. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1966-seat-list-unread`: novox/mesh-catalog@c39503e3227c, novox/mesh-delivery@b1343147e80f, novox/mesh-host@5c353cfc7bf0, novox/mesh-sdk@2f156e7f3050 **Transitions** - 2026-11-10 00:21 (new) → proposed (announced): novox/mesh-catalog#650's head announced - 2026-11-10 00:21 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-10 00: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`.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools merged commit c4463ba47f into main 2026-11-10 00:44:31 +00:00
mesh-tools deleted branch fix/1966-seat-list-unread 2026-11-10 00:44:32 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#650