At 19:30 on 2026-10-30 node-tools' want moved to a build not yet done; ace, g14 and shanks composed it from its source manifest (0 bundles) and refused every module, and the culprit rule hid the first error. c1bc21c: a node-wide refusal ends with (held before: ...). d539d7e: the runtime is blamed only where its stub composes. 9685990: Compose reads each placed module at its want's build; a running module whose build is not done is held and keeps what runs. Quick fix: none safe (a restart did not clear it); thorough: these three plus the engine's watch (mesh-host).
Please wait for mesh/check to pass before merging (today's 19:13 and 19:30 faults both merged ahead of their check). Merge mesh-sdk first.
At 19:30 on 2026-10-30 node-tools' want moved to a build not yet done; ace, g14 and shanks composed it from its source manifest (0 bundles) and refused every module, and the culprit rule hid the first error. c1bc21c: a node-wide refusal ends with (held before: ...). d539d7e: the runtime is blamed only where its stub composes. 9685990: Compose reads each placed module at its want's build; a running module whose build is not done is held and keeps what runs. Quick fix: none safe (a restart did not clear it); thorough: these three plus the engine's watch (mesh-host).
Please wait for mesh/check to pass before merging (today's 19:13 and 19:30 faults both merged ahead of their check). Merge mesh-sdk first.
Reviewed-by: rev-sweep@shanks at 9685990a15ed4d37931a176f5aa7e97b5210ee6c
At 19:30 on 2026-10-30 ace, g14 and shanks refused every module with "node-tools … its build produced 0 bundle(s)":
the refusal of node-tools' stand-in, while why node-tools could not be composed was dropped with the hold.
Quick fix: log held in mesh-host before marking. Thorough fix: Compose's node-wide error carries "(held before:
<module>: <why>; …)", so the engine's journal, every have's detail and any caller see the cause. Chose thorough.
The culprit rule held a module whose stub made the composition fail otherwise. The runtime's stub carries no bundle,
so it always fails otherwise: any refusal naming node-tools (or a module whose name holds it) held the runtime, and
the node was then refused whole for the runtime's "0 bundle(s)".
Quick fix: never take node-tools as a culprit. Thorough fix: blames, the rule as one function, takes the runtime only
where its stub composes. Chose thorough: a runtime whose stub composes may still be held alone.
At 19:30 on 2026-10-30 node-tools' trunk fingerprint moved to a build not yet done; fromBuilds then composed it from
the indexer's manifest, which names no bundle, and ace, g14 and shanks refused every module ("its build produced 0
bundle(s)") until another input moved after the build landed.
Quick fix: skip the runtime's check while its build is not done. Thorough fix: Compose reads each placed module at the
build its want names (as Scope.KeptAt), and a module that runs whose build is not done is held, keeping what runs (a
held runtime is composed as what runs of it, its running bundle), named with why; a module nothing runs of still
composes from the indexer's manifest as before. Input, PlansHeld and Answer read the trunk's builds as before. Chose
thorough: no running module is ever composed from a source manifest that names no build.
Deliverynovox/mesh-sdk@9685990a15ed — merged since 2026-10-30T18:53:05Z
Source — source.main moved to novox/mesh-sdk@14de8dadb4. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
2026-10-30 18:52 (new) → proposed (announced): novox/mesh-sdk#140's head announced
2026-10-30 18:52 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-30 18:53 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@9685990a15ed` — **merged** since 2026-10-30T18:53:05Z
**Source** — source.main moved to novox/mesh-sdk@14de8dadb4ce. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/build-not-done-holds-one-module`: novox/mesh-host@33131dcbfe77, novox/mesh-sdk@9685990a15ed
**Transitions**
- 2026-10-30 18:52 (new) → proposed (announced): novox/mesh-sdk#140's head announced
- 2026-10-30 18:52 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-30 18:53 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.
At 19:30 on 2026-10-30 node-tools' want moved to a build not yet done; ace, g14 and shanks composed it from its source manifest (0 bundles) and refused every module, and the culprit rule hid the first error.
c1bc21c: a node-wide refusal ends with (held before: ...).d539d7e: the runtime is blamed only where its stub composes.9685990: Compose reads each placed module at its want's build; a running module whose build is not done is held and keeps what runs. Quick fix: none safe (a restart did not clear it); thorough: these three plus the engine's watch (mesh-host).Please wait for mesh/check to pass before merging (today's 19:13 and 19:30 faults both merged ahead of their check). Merge mesh-sdk first.
Reviewed-by: rev-sweep@shanks at
9685990a15At 19:30 on 2026-10-30 node-tools' trunk fingerprint moved to a build not yet done; fromBuilds then composed it from the indexer's manifest, which names no bundle, and ace, g14 and shanks refused every module ("its build produced 0 bundle(s)") until another input moved after the build landed. Quick fix: skip the runtime's check while its build is not done. Thorough fix: Compose reads each placed module at the build its want names (as Scope.KeptAt), and a module that runs whose build is not done is held, keeping what runs (a held runtime is composed as what runs of it, its running bundle), named with why; a module nothing runs of still composes from the indexer's manifest as before. Input, PlansHeld and Answer read the trunk's builds as before. Chose thorough: no running module is ever composed from a source manifest that names no build.Delivery
novox/mesh-sdk@9685990a15ed— merged since 2026-10-30T18:53:05ZSource — source.main moved to novox/mesh-sdk@14de8dadb4. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/build-not-done-holds-one-module: novox/mesh-host@33131dcbfe, novox/mesh-sdk@9685990a15Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.