On novox on 2026-11-09 the node-engine restarted the tool runner three times with nothing of it changed ("its build already in place"), each right after its own replacement; builds publishing to the registry at those seconds failed "503 no responders". The cause: the runner's unit carries MESH_OWNED_PATHS, which named the node-engine's own versioned install path, renamed by every node-engine build. An archive resource whose path ends in its own build's digest prefix is now owned as the directory holding every build (compose/resolution/seat_paths.go), so the word is stable for every such module; node-files still guards the whole versions directory. The restart line names the unit directive, the environment word and JSON keys that differ, never a value (rows with a secret and a password URL).
After delivery the tool runner restarts once more (its word changes to the stable form); from then on a node-engine replacement leaves it running.
issue 1966
Reviewed-by: review-1966@shanks at aa649d85a0
Pushed-by: lead-47@shanks
On novox on 2026-11-09 the node-engine restarted the tool runner three times with nothing of it changed ("its build already in place"), each right after its own replacement; builds publishing to the registry at those seconds failed "503 no responders". The cause: the runner's unit carries MESH_OWNED_PATHS, which named the node-engine's own versioned install path, renamed by every node-engine build. An archive resource whose path ends in its own build's digest prefix is now owned as the directory holding every build (compose/resolution/seat_paths.go), so the word is stable for every such module; node-files still guards the whole versions directory. The restart line names the unit directive, the environment word and JSON keys that differ, never a value (rows with a secret and a password URL).
After delivery the tool runner restarts once more (its word changes to the stable form); from then on a node-engine replacement leaves it running.
issue 1966
Reviewed-by: review-1966@shanks at aa649d85a065dff03958791552f071171bc0cfb0
Pushed-by: lead-47@shanks
https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The tool runner's unit carries the paths modules own, for the holder of node-files. The engine's own
archive is unpacked into a place named for its build, so every engine replacement changed that word
and restarted the tool runner with nothing of it changed (novox 21:16, 22:25, 22:38 on 2026-11-09).
A resource unpacked into a place named for its build now owns the directory holding every build.
The restart line now names the unit's directive, word and key that differ, never a value.
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Deliverynovox/mesh-host@aa649d85a065 — merged since 2026-11-09T22:09:43Z
Source — source.main moved to novox/mesh-host@9d8647aa0f. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-09 22:00 (new) → proposed (announced): novox/mesh-host#220's head announced
2026-11-09 22:00 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 22:09 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@aa649d85a065` — **merged** since 2026-11-09T22:09:43Z
**Source** — source.main moved to novox/mesh-host@9d8647aa0f56. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-09 22:00 (new) → proposed (announced): novox/mesh-host#220's head announced
- 2026-11-09 22:00 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 22:09 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.
On novox on 2026-11-09 the node-engine restarted the tool runner three times with nothing of it changed ("its build already in place"), each right after its own replacement; builds publishing to the registry at those seconds failed "503 no responders". The cause: the runner's unit carries MESH_OWNED_PATHS, which named the node-engine's own versioned install path, renamed by every node-engine build. An archive resource whose path ends in its own build's digest prefix is now owned as the directory holding every build (compose/resolution/seat_paths.go), so the word is stable for every such module; node-files still guards the whole versions directory. The restart line names the unit directive, the environment word and JSON keys that differ, never a value (rows with a secret and a password URL).
After delivery the tool runner restarts once more (its word changes to the stable form); from then on a node-engine replacement leaves it running.
issue 1966
Reviewed-by: review-1966@shanks at
aa649d85a0Pushed-by: lead-47@shanks
https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Delivery
novox/mesh-host@aa649d85a065— merged since 2026-11-09T22:09:43ZSource — source.main moved to novox/mesh-host@9d8647aa0f. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.