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-toolsmerged 2 commits from fix/1966-seat-list-unread into main2026-11-10 00:44:31 +00:00
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.
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
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
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
Deliverynovox/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.
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`.
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.
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 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.
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 b1343147e80f846b889467143f4ae145e4b682f7Pushed-by: lead-47@shanks
https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Delivery
novox/mesh-catalog@c39503e3227c— merged since 2026-11-10T00:44:34ZSource — source.main moved to novox/mesh-catalog@c4463ba47f. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.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@2f156e7f30Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.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.