A bed says what it actually needs to be pointed at

The instructions in every bed named the bundle that raises the predecessor's
broker, so a first attempt ends in a control plane crash-looping on a missing
MESH_BUS_NATS — which reads like a broken lab. They name the bundle that works
now, and the README says the host binary needs SYSTEM=arch, because one built
without it refuses everything with an empty system name.

And the three habits that each cost a run before they were adopted:
MESH_LAB_KEEP to leave the machine standing, MESH_LAB_WARM while iterating,
and rebuilding all three repositories the bed places rather than the one that
changed.
This commit is contained in:
2026-09-29 17:45:09 +02:00
parent f2d6ab3bf9
commit a734d427c0
33 changed files with 56 additions and 33 deletions
+24 -1
View File
@@ -139,8 +139,15 @@ nothing. That is `novox/hq` 04-ISSUES/005 exactly, and it has now been rediscove
is written down here rather than reconstructed a third time.
```sh
# Built with `make SYSTEM=arch build`, NOT with a bare `go build`. The system a host was built for
# is a link-time value, and one built without it refuses everything it is given with "this host was
# built for \"\", which is not a system it knows" — which reads like a broken bundle and is not
# (novox/hq 04-ISSUES/146).
export MESH_LAB_HOST_BINARY=<mesh-host>/mesh-host
export MESH_LAB_BUNDLE=<mesh-host>/examples/foundation-first-node.lock
# The bundle that raises the bus the mesh runs on. The other one in that directory raises the
# predecessor's broker and a control plane that crash-loops on a missing MESH_BUS_NATS — which
# looks like a broken lab and is a bundle nobody moved (novox/hq 04-ISSUES/146).
export MESH_LAB_BUNDLE=<mesh-host>/examples/foundation-first-node-nats.lock
export MESH_LAB_MODULES=<mesh-controller>/examples/modules
export MESH_LAB_BUILDER=<mesh-controller>/build/mesh-builder # build/, which is git-ignored
@@ -163,6 +170,22 @@ export MESH_LAB_OBJECTSTORE_PROVISIONER=<somewhere>/objectstore-provisioner
export MESH_LAB_ROUTE_PROXY=<somewhere>/route-proxy
```
### When a bed fails, before anything else
Three habits, each of which cost a run on 2026-09-29 before it was adopted (novox/hq
04-ISSUES/146):
- **`MESH_LAB_KEEP=1` leaves the machine standing.** Every answer in that sequence came from
shelling into it afterwards — the host's log, the bus's log, the file the bus was actually given,
the identity the node actually stored. The test output said only that nothing had converged.
- **`MESH_LAB_WARM=1` between attempts.** A fault found on the fifth run is a fault the first four
runs paid full price for; warm restores a snapshot instead of raising a machine, and a commit
invalidates it, so it is safe to leave on while iterating and off for the run that counts.
- **Rebuild what the bed places, not just what you changed.** The host binary, the control-plane
image and the bundle are three repositories, and a bed testing yesterday's binary reports on code
nobody is looking at (04-ISSUES/005). `make image` in mesh-controller reads its base from the
manifest, so it no longer needs a digest found by hand.
`MESH_LAB_HOST_BINARY` and `MESH_LAB_MODULES` do double duty: the repository each sits in is what
`suite` rebuilds and what the receipt claims. Point the run at a repository and it is built and
claimed; leave it out and it is neither. `MESH_LAB_CATALOG` is claimed without being built as a