The node-engine says why it composes a wanted module at no composition, and hands again one its agent lacks (issue 1966, recovery) #216

Merged
mesh-tools merged 4 commits from fix/1966-views-page-time into main 2026-11-09 08:13:15 +00:00
Member

Recovery fix, member of the group fix/1966-views-page-time (mesh-sdk, mesh-tools, mesh-host), merged as one group.

Cause

Live on 2026-11-09 from 07:48 UTC: novox's want for distribution names src2:6e1dfaa8… (self, put, hold), and the indexer holds that fp with a done build. Yet node-engine.composition answers "the bucket holds no composition of distribution at src2:6e1dfaa8…", node-engine.compose answers handed 0 with nothing held or refused, and the journal says nothing.

A reading of 9b55bcb found five silent paths:

  • takeWant drops a want it cannot take, with no line.
  • The handed-digest memory is never reset for an agent that lacks the composition.
  • frombus's skipped list is discarded.
  • A module with no done build is composed from its manifest, silently.
  • The agent's wait for its own composition says nothing.

The cause of this live case is not yet proven; this change makes it readable. This follows nothing-moved-in-five-minutes: make it visible.

Quick or thorough

  • Quick: a hand restart of the engine. Not taken: it proves nothing and is not allowed.
  • Thorough, chosen:
    • Pass.Unmade names every wanted module not composed at its want's fp (or composed from its manifest for want of a done build), with why. It is in node-engine.compose's answer and a journal line, once per module and reason.
    • The agent's wait says itself once per want, in the journal and in the composition read.
    • The agent's first wait tells the composer, which forgets the digest it believed it handed and composes again (never for a key it never handed, so this cannot loop).

Evidence

  • No new test functions: the cases are folded into TestTheNodesOwnCompositionIsAppliedWhenItDiffersAndARecordMoveWaitsForAYes and TestTheNodeComposesItsWantsFromTheBus. Each part fails a test when taken out.
  • The unit suite, go vet and go vet -tags integration pass, and so does -race -count=3 of agent and selfcompose.

Note

selfcompose.go:250, the doc of Pass.Unmade, still reads as if it lists only modules with no composition. It also lists those composed from the manifest; to be fixed with the next change there.

Undo

Revert the group's merges.

Reviewed-by: mesh-code-reviewer@shanks (for fix-1965) at 6bde46cb00, two rounds.

https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i

Recovery fix, member of the group fix/1966-views-page-time (mesh-sdk, mesh-tools, mesh-host), merged as one group. ## Cause Live on 2026-11-09 from 07:48 UTC: novox's want for distribution names src2:6e1dfaa8… (self, put, hold), and the indexer holds that fp with a done build. Yet node-engine.composition answers "the bucket holds no composition of distribution at src2:6e1dfaa8…", node-engine.compose answers handed 0 with nothing held or refused, and the journal says nothing. A reading of 9b55bcb found five silent paths: - takeWant drops a want it cannot take, with no line. - The handed-digest memory is never reset for an agent that lacks the composition. - frombus's skipped list is discarded. - A module with no done build is composed from its manifest, silently. - The agent's wait for its own composition says nothing. The cause of this live case is not yet proven; this change makes it readable. This follows nothing-moved-in-five-minutes: make it visible. ## Quick or thorough - Quick: a hand restart of the engine. Not taken: it proves nothing and is not allowed. - Thorough, chosen: - Pass.Unmade names every wanted module not composed at its want's fp (or composed from its manifest for want of a done build), with why. It is in node-engine.compose's answer and a journal line, once per module and reason. - The agent's wait says itself once per want, in the journal and in the composition read. - The agent's first wait tells the composer, which forgets the digest it believed it handed and composes again (never for a key it never handed, so this cannot loop). ## Evidence - No new test functions: the cases are folded into TestTheNodesOwnCompositionIsAppliedWhenItDiffersAndARecordMoveWaitsForAYes and TestTheNodeComposesItsWantsFromTheBus. Each part fails a test when taken out. - The unit suite, go vet and go vet -tags integration pass, and so does -race -count=3 of agent and selfcompose. ## Note selfcompose.go:250, the doc of Pass.Unmade, still reads as if it lists only modules with no composition. It also lists those composed from the manifest; to be fixed with the next change there. ## Undo Revert the group's merges. Reviewed-by: mesh-code-reviewer@shanks (for fix-1965) at 6bde46cb0084a672e1e74729f496af3494c66369, two rounds. https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
mesh-tools added 4 commits 2026-11-09 08:12:34 +00:00
Every pass names each wanted module it made no composition of, with why (Pass.Unmade, the verb compose, one journal line per
change); a want not taken is said; the agent says once per want that it waits for the composer and why, and tells it, so a
composition the composer believed handed is handed again.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
The said-once keys no longer hold where the indexer's picture stands; a module composed from the manifest for want of a done
build is named in Pass.Unmade; the agent's wait is told once per want and again after the composition was there; the two tests
are folded into existing ones.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
The wait-for-the-composer step settles a want again without a real sleep and counts only ghost's own tells (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-host@25d677d20c93
mesh/delivery-group group fix/1966-views-page-time merged: every member is merged
mesh/check checking 6bde46cb0084 on 20191223794a | novox/mesh-host#216 in group fix/1966-views-page-time
6bde46cb00
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Author
Member

Delivery novox/mesh-host@6bde46cb0084 — merged since 2026-11-09T08:13:22Z

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

Group fix/1966-views-page-time: novox/mesh-host@6bde46cb00, novox/mesh-sdk@833cffdc9b, novox/mesh-tools@2135fed6cf

Transitions

  • 2026-11-09 08:12 (new) → proposed (announced): novox/mesh-host#216's head announced
  • 2026-11-09 08:12 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-09 08:13 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-host@6bde46cb0084` — **merged** since 2026-11-09T08:13:22Z **Source** — source.main moved to novox/mesh-host@25d677d20c93. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1966-views-page-time`: novox/mesh-host@6bde46cb0084, novox/mesh-sdk@833cffdc9bdf, novox/mesh-tools@2135fed6cf1f **Transitions** - 2026-11-09 08:12 (new) → proposed (announced): novox/mesh-host#216's head announced - 2026-11-09 08:12 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-09 08:13 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 25d677d20c into main 2026-11-09 08:13:15 +00:00
mesh-tools deleted branch fix/1966-views-page-time 2026-11-09 08:13:15 +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-host#216