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.
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
Deliverynovox/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.
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`.
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 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:
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
dfd5d82exactly.Reviewed-by: rev-compose@shanks at
dfd5d8295eDelivery
novox/mesh-sdk@dfd5d8295e0a— merged since 2026-10-31T00:21:33ZSource — source.main moved to novox/mesh-sdk@50ea6f748e. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/compose-retries-transient: novox/mesh-host@b0d6684d37, novox/mesh-sdk@dfd5d8295eTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.