The one-node bed places at the site it operates, and tolerates the CP recreating

Genesis places the anchor at the same site the test re-places it at, so that step
is a no-op rather than a change that recreates the control plane. And mesh() —
which runs commands inside the control-plane container — retries a transient
"container not running", because the control plane is a live mesh-managed
container the mesh recreates when its declaration changes (e.g. its first
.internal add-host). Also passes --sdk-source/--tools-ref for the SDK build.

Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
2026-09-16 14:10:26 +02:00
parent eff91742e8
commit f57e05e75e
2 changed files with 28 additions and 1 deletions
+7
View File
@@ -67,6 +67,11 @@ export interface GenesisOptions {
/** Where the shared library is built from — published before the base resolves it (ADR 0076). */
sdkSource: string;
sdkRef?: string;
/** What of the base repo to build. Defaults to main; a feature branch under test overrides it. */
toolsRef?: string;
/** The site the anchor is placed at on the private network. Must match how the operator/test
* places it afterwards, or the first re-place changes the overlay and recreates the control plane. */
site?: string;
/** What of the catalogue to build. A branch under test is the usual reason this is not main. */
catalogRef?: string;
log?: (m: string) => void;
@@ -149,6 +154,7 @@ export async function genesis(o: GenesisOptions): Promise<GenesisResult> {
`--node ${node}`,
`--registry ${registry}`,
`--tools-source ${o.toolsSource}`,
`--tools-ref ${o.toolsRef ?? "main"}`,
`--catalog-source ${o.catalogSource}`,
`--catalog-ref ${o.catalogRef ?? "main"}`,
`--sdk-source ${o.sdkSource}`,
@@ -156,6 +162,7 @@ export async function genesis(o: GenesisOptions): Promise<GenesisResult> {
// The choices, answered the unattended way. Both have one option today, so these are
// redundant on purpose: the day a second filter exists, this bed keeps working instead of
// refusing, and choosing becomes a thing it visibly does.
`--site ${o.site ?? "main"}`,
`--private-network wireguard`,
`--packet-filter nftables`,
`--host ${HOST_PATH}`,