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

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.
This commit is contained in:
2026-09-30 11:33:12 +02:00
parent b5196e974c
commit 1a628a4d22
+8 -1
View File
@@ -13,5 +13,12 @@
}
]
},
"resources": []
"resources": [
{
"id": "next",
"type": "archive",
"artifact": "host-arch",
"path": "/usr/lib/nox-mesh-host/versions/${version}"
}
]
}