From 1a628a4d220c6756065840be2a40816baf29cb8f Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 30 Sep 2026 11:33:12 +0200 Subject: [PATCH] The host declares its own successor, as an archive at a versioned path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- module.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/module.json b/module.json index 6a66ace..008fc5a 100644 --- a/module.json +++ b/module.json @@ -13,5 +13,12 @@ } ] }, - "resources": [] + "resources": [ + { + "id": "next", + "type": "archive", + "artifact": "host-arch", + "path": "/usr/lib/nox-mesh-host/versions/${version}" + } + ] } -- 2.54.0