Files
jschoubben 5d6e8fbe7a Rename mesh-control -> mesh-controller, substrate -> foundation
One name per thing, per the HQ glossary: the module/container/image/binary/repo
becomes mesh-controller, the seat the-controller, and the store+broker pair the
foundation (embedded base bundles, default template and example lock renamed with
their go:embed directives). No behaviour change — a pure vocabulary rename.

Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
2026-09-16 18:40:40 +02:00

44 lines
2.0 KiB
YAML

# One machine that becomes a mesh and is then assigned schedtest — the bed that proves the
# scheduled-container primitive (novox/hq ADR 0053) end to end.
#
# schedtest is the thinnest possible carrier of the ADR's claim: no service, no listener, no
# provisioner, no runtime, no tools, no events — just a `container` marked `schedule: "* * * * *"`
# that appends a timestamp line to a file in a mounted data directory each time the host fires it.
# It is the recurring twin of the run-once bed (catalogue-mqtt), with the gating rule deliberately
# reversed: installing the schedule must NOT run the container and must NOT gate convergence — the
# node reports current as soon as the schedule is state that is present, and the clock (not the
# apply) fires the runs thereafter.
#
# The sharp points this bed proves, straight from ADR 0053 "How each claim is checked":
# - installing it does not run it, and the node is current WITHOUT a run;
# - the container fires when the cron is due (top of the next minute);
# - it fires AGAIN on the following minute — recurrence, not a one-shot.
#
# MESH_LAB_HOST_BINARY=.../mesh-host MESH_LAB_MODULES=.../mesh-controller/examples/modules
# alpine:latest must be in the local daemon; the machine pulls it from the internet over its
# uplink, and the scheduled container declares it exactly as the catalogue writes it.
# There is no runtime image: schedtest carries no code of its own — the scheduled container is a
# bare alpine that runs `date >> /data/runs.log` and exits.
scenario: schedule-tick
segments:
hosting:
kind: public
cidr: [192.0.2.0/24]
machines:
anchor:
at: { segment: hosting, address: [192.0.2.10] }
egress: true
inbound: allow
memory: 3GiB
cpus: 2
images:
- mesh-controller:development
place:
# Only the host — schedtest has no mesh-runtime to place. The tick image is pulled from the
# internet by the host over its uplink, not placed inside the machine.
all: [host]