novox/hq ADR 0141 and issue 142. A version was being delivered to a machine and nothing started it: the launcher on these machines predates the versions mechanism and runs the fixed binary path, so the delivery was correct and inert.
Delivered as a file resource, not inside an archive, and that difference is why this is safe. A file is written atomically — temp file in the same directory, then rename — so the running launcher keeps the inode it was started from and the next start picks up the new one. An archive writes in place with O_TRUNC, which would cut the file a running shell is reading halfway through.
The manifest therefore carries a second copy of the script, and a test refuses any difference between it and packaging/nox-mesh-host-launch. Proven by drifting one and watching it fail. Two copies of a script is a bad thing to accept; the alternative was writing over a running supervisor.
Together the two resources close the loop: the version lands, the running host stands aside because it sees one delivered, and the launcher that starts next is the one that looks in versions/ and picks the newest by arrival.
make check clean.
novox/hq ADR 0141 and issue 142. A version was being delivered to a machine and nothing started it: the launcher on these machines predates the versions mechanism and runs the fixed binary path, so the delivery was correct and inert.
**Delivered as a file resource, not inside an archive, and that difference is why this is safe.** A file is written atomically — temp file in the same directory, then rename — so the running launcher keeps the inode it was started from and the next start picks up the new one. An archive writes in place with `O_TRUNC`, which would cut the file a running shell is reading halfway through.
The manifest therefore carries a second copy of the script, and a test refuses any difference between it and `packaging/nox-mesh-host-launch`. Proven by drifting one and watching it fail. Two copies of a script is a bad thing to accept; the alternative was writing over a running supervisor.
Together the two resources close the loop: the version lands, the running host stands aside because it sees one delivered, and the launcher that starts next is the one that looks in `versions/` and picks the newest by arrival.
`make check` clean.
novox/hq ADR 0141 and 04-ISSUES/142. A version was being delivered to a
machine and nothing started it: the launcher on these machines predates
the versions mechanism and runs the fixed binary path, so the delivery was
correct and inert.
Delivered as a FILE resource, not as part of an archive, and the
difference is the whole reason this is safe. A file is written atomically —
temp file in the same directory, then rename — so the running launcher
keeps the inode it was started from and the next start picks up the new
one. An archive writes in place with truncate, which would cut the file a
running shell is reading halfway through.
The manifest therefore carries a second copy of the script, and a test
refuses any difference between it and packaging/nox-mesh-host-launch.
Proven by drifting one and watching it fail. Two copies of a script is a
bad thing to accept, and the alternative was writing over a running
supervisor.
Together the two resources complete the loop: the version lands, the
running host stands aside because it sees one delivered, and the launcher
that starts next is the one that looks in versions/ and picks the newest
by arrival.
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.
novox/hq ADR 0141 and issue 142. A version was being delivered to a machine and nothing started it: the launcher on these machines predates the versions mechanism and runs the fixed binary path, so the delivery was correct and inert.
Delivered as a file resource, not inside an archive, and that difference is why this is safe. A file is written atomically — temp file in the same directory, then rename — so the running launcher keeps the inode it was started from and the next start picks up the new one. An archive writes in place with
O_TRUNC, which would cut the file a running shell is reading halfway through.The manifest therefore carries a second copy of the script, and a test refuses any difference between it and
packaging/nox-mesh-host-launch. Proven by drifting one and watching it fail. Two copies of a script is a bad thing to accept; the alternative was writing over a running supervisor.Together the two resources close the loop: the version lands, the running host stands aside because it sees one delivered, and the launcher that starts next is the one that looks in
versions/and picks the newest by arrival.make checkclean.