A node says when it composes again, says what a long pass waits on, and composes on request (issue 774) #146

Merged
mesh-tools merged 1 commits from fix/compose-retries-transient into main 2026-10-31 00:21:32 +00:00
Member

Issue 774 (L3). On 2026-10-31 00:43 ace's node-engine failed a pass on the vault's deadline, retried at 00:45:50, then ran five minutes without a line before composing at 00:51; its haves never said a retry was coming, and no tool could make a node compose. Group fix/compose-retries-transient, mesh-sdk first:

  • mesh-sdk: the optional node-engine seat verb compose (module optional) in the contract.
  • mesh-host: a pass refused because a seat or read did not answer says "; the node composes again at HH:MM:SS (try N)" (same backoff 5s..5m, now in the composer); a journal line before each retry and every minute a pass runs ("has run for X and waits on "); verb compose: a pass now, bounded (a pass ended under 5 s ago is answered, not repeated; tries not reset), refusing when the node applies the controller's compositions; with module, retries only a failed apply that is not held (never releases a backup hold, never re-applies a running module).
    Quick vs thorough: quick = the retry words and journal lines; thorough (chosen) = plus the recovery verb, so a recovery needs no restart (tools-are-how-a-module-is-spoken-to). The verb needs the grants part to grant its subject (being fixed separately, as for composition).
    Tests: rows in existing tests; -race clean on selfcompose, agent, link, cmd/mesh-host. mesh-host pins mesh-sdk dfd5d82 exactly.

Reviewed-by: rev-compose@shanks at dfd5d8295e

Issue 774 (L3). On 2026-10-31 00:43 ace's node-engine failed a pass on the vault's deadline, retried at 00:45:50, then ran five minutes without a line before composing at 00:51; its haves never said a retry was coming, and no tool could make a node compose. Group fix/compose-retries-transient, mesh-sdk first: - mesh-sdk: the optional node-engine seat verb compose (module optional) in the contract. - mesh-host: a pass refused because a seat or read did not answer says "; the node composes again at HH:MM:SS (try N)" (same backoff 5s..5m, now in the composer); a journal line before each retry and every minute a pass runs ("has run for X and waits on <what>"); verb compose: a pass now, bounded (a pass ended under 5 s ago is answered, not repeated; tries not reset), refusing when the node applies the controller's compositions; with module, retries only a failed apply that is not held (never releases a backup hold, never re-applies a running module). Quick vs thorough: quick = the retry words and journal lines; thorough (chosen) = plus the recovery verb, so a recovery needs no restart (tools-are-how-a-module-is-spoken-to). The verb needs the grants part to grant its subject (being fixed separately, as for composition). Tests: rows in existing tests; -race clean on selfcompose, agent, link, cmd/mesh-host. mesh-host pins mesh-sdk dfd5d82 exactly. Reviewed-by: rev-compose@shanks at dfd5d8295e0aaee585bd35a7331cc63cbcfa7d58
mesh-tools added 1 commit 2026-10-31 00:12:20 +00:00
Add the node-engine verb compose to the seat's contract: compose now, the recovery of a failed composition (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-sdk@50ea6f748e30
mesh/delivery-group group fix/compose-retries-transient merged: every member is merged
mesh/check being carried to dfd5d8295e0a on 50ea6f748e30 | from dec3bfe7a8cb | novox/mesh-sdk#146 in group fix/compose-retries-transient
dfd5d8295e
Author
Member

Delivery novox/mesh-sdk@dfd5d8295e0a — merged since 2026-10-31T00:21:33Z

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

Group fix/compose-retries-transient: novox/mesh-host@b0d6684d37, novox/mesh-sdk@dfd5d8295e

  • composed together: pass — the checker's verdict at the members' heads (4295264dfd90)

Transitions

  • 2026-10-31 00:12 (new) → proposed (announced): novox/mesh-sdk#146's head announced
  • 2026-10-31 00: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-10-31 00:21 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-sdk@dfd5d8295e0a` — **merged** since 2026-10-31T00:21:33Z **Source** — source.main moved to novox/mesh-sdk@50ea6f748e30. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/compose-retries-transient`: novox/mesh-host@b0d6684d3731, novox/mesh-sdk@dfd5d8295e0a - composed together: pass — the checker's verdict at the members' heads (4295264dfd90) **Transitions** - 2026-10-31 00:12 (new) → proposed (announced): novox/mesh-sdk#146's head announced - 2026-10-31 00: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-10-31 00:21 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 50ea6f748e into main 2026-10-31 00:21:32 +00:00
mesh-tools deleted branch fix/compose-retries-transient 2026-10-31 00:21: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-sdk#146