The host declares its own successor, as an archive at a versioned path #54

Merged
jschoubben merged 1 commits from feat/142-the-host-delivers-its-successor into main 2026-09-30 09:33:19 +00:00
Owner

novox/hq ADR 0141 and issue 142. The host half of the delivery has been built and tested since 0141 and has never had a version to work on. This is the declaration that gives it one.

One archive, unpacked to /usr/lib/nox-mesh-host/versions/${version}. The version resolves to the artifact's digest, so an unchanged build lands at the path it already had.

Not circular: the host applying this is a different version from the one being written, and neither writes over the other — the kernel refuses to truncate a running executable, which is why the path carries the version rather than a link pointing at "current".

The launcher is deliberately not delivered here. The one on these machines predates the versions mechanism and runs the fixed binary path, so a delivered version is inert until it is replaced — and replacing it from the mesh means writing over a running shell script, which sh reads incrementally. That wants a designed swap, not a file resource.

novox/hq ADR 0141 and issue 142. The host half of the delivery has been built and tested since 0141 and **has never had a version to work on**. This is the declaration that gives it one. One archive, unpacked to `/usr/lib/nox-mesh-host/versions/${version}`. The version resolves to the artifact's digest, so an unchanged build lands at the path it already had. Not circular: the host applying this is a different version from the one being written, and neither writes over the other — the kernel refuses to truncate a running executable, which is why the path carries the version rather than a link pointing at "current". **The launcher is deliberately not delivered here.** The one on these machines predates the versions mechanism and runs the fixed binary path, so a delivered version is inert until it is replaced — and replacing it from the mesh means writing over a running shell script, which `sh` reads incrementally. That wants a designed swap, not a file resource.
jschoubben added 1 commit 2026-09-30 09:33:13 +00:00
novox/hq ADR 0141 and 04-ISSUES/142. The host half of the delivery has
been built and tested since 0141 and has never had a version to work on:
versions side by side, the newest runs, the running one stands aside
between reconciles, rollback picks a directory. This is the declaration
that gives it one.

One archive, unpacked to /usr/lib/nox-mesh-host/versions/${version}. The
version resolves to the artifact's digest, so an unchanged build lands at
the path it already had and re-composing a declaration moves nothing.

Not circular: the host applying this is a different version from the one
being written, and neither writes over the other — the kernel refuses to
truncate a running executable, which is the reason the path carries the
version rather than a link pointing at "current".

**The launcher is deliberately not delivered here.** The one on these
machines predates the versions mechanism and runs the fixed binary path,
so a delivered version is inert until it is replaced — and replacing it
from the mesh means writing over a running shell script, which sh reads
incrementally. That wants a designed swap rather than a file resource, and
it is the last piece rather than this one.
jschoubben merged commit d275e64ed3 into main 2026-09-30 09:33:19 +00:00
jschoubben deleted branch feat/142-the-host-delivers-its-successor 2026-09-30 09:33:19 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-host#54