The assigner's verbs and the checker's tools ask the indexer's tools instead of reading its state (issue 1966, recovery) #176

Merged
mesh-tools merged 2 commits from fix/1966-assigner-seat-reads into main 2026-11-08 12:01:50 +00:00
Member

Recovery fix under issue 1966 (instruction section recovery-fixes-merge-and-tell).

Symptom (live 2026-11-08 11:58 local): mesh-module-assigner.propose (the holder correction of seat mesh-catalog) refused: "the indexer's modules cannot be listed: mesh-delivery-assigner keeps and reads no state called mesh-delivery-indexer.modules". mesh-delivery-checker's checker_status and checker_pull fail the same way ("keeps and reads no state mesh-delivery-indexer.candidates").

Cause: tool-runner code read the indexer's states directly, which the manifests no longer declare under reads since they moved to the indexer's first views (ADR 0615 §1, ADR 0621); ADR 0596 §2 says another module's data is asked through its tools. Four places: the assigner's propose (lays), its mesh-wants verbs upgrade and bus, its assigner_put newest, and the checker's tools.

Fix: the assigner's indexerView asks mesh-delivery-indexer.<state> (first view, paged by after/next) through the tool runner; the checker's ownerRead asks indexer_read_candidates / indexer_read_modules. No manifest changes: both already invoke these tools, and the indexer's callers name the assigner and node-tools. A guard test fails on any literal stdio.State read in the checker's tools that its manifest does not declare. A sweep of the repository found no other refused read.

Quick vs thorough: quick = declare the indexer's states under reads again (against ADR 0596/0621); thorough = ask the owner's tools in all four places, sweep once, add the guard. Chosen: thorough; second module met with the same kind.

Tests: subtests and rows only (repository over the unit budget); they fail without the fix. go vet ./..., go vet -tags integration ./..., go test ./... pass in modules/mesh-delivery-assigner and modules/mesh-delivery-checker.

Noted, not changed: upgrade, bus and put newest read the modules view whole (~7.8 MB; manifests 3.4 MB) per call: acceptable for hand verbs, a by-key read is the later improvement.

Undo: revert both commits.

Reviewed-by: mesh-code-reviewer@shanks at 0a82e33518

https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5

Recovery fix under issue 1966 (instruction section recovery-fixes-merge-and-tell). **Symptom (live 2026-11-08 11:58 local):** mesh-module-assigner.propose (the holder correction of seat mesh-catalog) refused: "the indexer's modules cannot be listed: mesh-delivery-assigner keeps and reads no state called mesh-delivery-indexer.modules". mesh-delivery-checker's checker_status and checker_pull fail the same way ("keeps and reads no state mesh-delivery-indexer.candidates"). **Cause:** tool-runner code read the indexer's states directly, which the manifests no longer declare under `reads` since they moved to the indexer's first views (ADR 0615 §1, ADR 0621); ADR 0596 §2 says another module's data is asked through its tools. Four places: the assigner's propose (`lays`), its mesh-wants verbs upgrade and bus, its assigner_put `newest`, and the checker's tools. **Fix:** the assigner's `indexerView` asks `mesh-delivery-indexer.<state>` (first view, paged by after/next) through the tool runner; the checker's `ownerRead` asks `indexer_read_candidates` / `indexer_read_modules`. No manifest changes: both already invoke these tools, and the indexer's callers name the assigner and node-tools. A guard test fails on any literal `stdio.State` read in the checker's tools that its manifest does not declare. A sweep of the repository found no other refused read. **Quick vs thorough:** quick = declare the indexer's states under `reads` again (against ADR 0596/0621); thorough = ask the owner's tools in all four places, sweep once, add the guard. Chosen: thorough; second module met with the same kind. **Tests:** subtests and rows only (repository over the unit budget); they fail without the fix. go vet ./..., go vet -tags integration ./..., go test ./... pass in modules/mesh-delivery-assigner and modules/mesh-delivery-checker. **Noted, not changed:** upgrade, bus and put newest read the modules view whole (~7.8 MB; manifests 3.4 MB) per call: acceptable for hand verbs, a by-key read is the later improvement. **Undo:** revert both commits. Reviewed-by: mesh-code-reviewer@shanks at 0a82e33518047ed80b4a1a713b424dd462e87a8b https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
mesh-tools added 2 commits 2026-11-08 11:03:19 +00:00
mesh-module-assigner.propose and mesh-wants' upgrade and bus read the indexer's
modules and manifests straight from its bus state, which the runtime refuses
since those reads moved to the indexer's first-view tools (ADR 0615 §1, ADR 0621):
"mesh-delivery-assigner keeps and reads no state called mesh-delivery-indexer.modules".
Another module's data is asked through its tools, never read from its state
(ADR 0596). The verbs now ask mesh-delivery-indexer.modules and .manifests through
the tool runner, every page, at each call; the manifest already invokes both and
the indexer answers them to the assigner.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
The checker's tools and the assigner's put ask the indexer's tools instead of reading its state (issue 1966, recovery)
mesh/delivery merged: source.main moved to novox/mesh-delivery@8f57df2d7757
mesh/check failed (3): mesh-build-go: the go.mod of novox/mesh-sdk at 396511b7a276, beside the change, cann…; and 2 more | 0a82e3351804 on 9c6bf236b6b1
0a82e33518
The second instance of the kind: checker_status and checker_pull read the indexer's
candidates and modules from its bus state, which the checker's manifest does not
declare under reads, so the runtime refuses them ("keeps and reads no state
mesh-delivery-indexer.candidates"). They now ask indexer_read_candidates and
indexer_read_modules, the indexer's read tools the manifest already invokes: the
keys with no argument, one key's value with key (ADR 0596). The assigner's put
read its newest fingerprint from the same refused state and now asks the
indexer's first view of modules, as the seat verbs do. A sweep of every module
finds no other read of another module's state that its manifest does not declare;
the checker's tools carry a test that refuses one.

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

Delivery novox/mesh-delivery@0a82e3351804 — merged since 2026-11-08T12:01:58Z

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

Transitions

  • 2026-11-08 11:04 (new) → proposed (announced): novox/mesh-delivery#176's head announced
  • 2026-11-08 11:04 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-08 12:01 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@0a82e3351804` — **merged** since 2026-11-08T12:01:58Z **Source** — source.main moved to novox/mesh-delivery@8f57df2d7757. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-08 11:04 (new) → proposed (announced): novox/mesh-delivery#176's head announced - 2026-11-08 11:04 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-08 12:01 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-tools merged commit 8f57df2d77 into main 2026-11-08 12:01:50 +00:00
mesh-tools deleted branch fix/1966-assigner-seat-reads 2026-11-08 12:01:50 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#176