The lab answers the installer's questions the unattended way
The installer asks where a human must choose, and this bed has no human — so every choice arrives as a flag, and a required choice with no flag is the installer refusing, which is the behaviour rather than a lab problem. Both choices have one option today, so the flags 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. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
@@ -329,6 +329,9 @@ before(async () => {
|
||||
registry: REGISTRY,
|
||||
source,
|
||||
sourceRef,
|
||||
toolsSource: forgeUrl(BASE.repo),
|
||||
catalogSource: forgeUrl(MODULE.repo),
|
||||
catalogRef: refFor(MODULE.repo),
|
||||
log: (m) => console.log(m),
|
||||
});
|
||||
} catch (err) {
|
||||
|
||||
@@ -81,6 +81,9 @@ before(async () => {
|
||||
bundleTemplate: substrateBundle(bundle, []),
|
||||
source,
|
||||
sourceRef,
|
||||
// Phase two builds from the same forge; the repositories sit beside the control plane's.
|
||||
toolsSource: source.replace(/[^/]+\.git$/, "mesh-tools.git"),
|
||||
catalogSource: source.replace(/[^/]+\.git$/, "mesh-catalog.git"),
|
||||
log: (m) => console.log(m),
|
||||
});
|
||||
} catch (err) {
|
||||
|
||||
@@ -53,6 +53,18 @@ export interface GenesisOptions {
|
||||
*/
|
||||
source: string;
|
||||
sourceRef: string;
|
||||
/**
|
||||
* Phase two: where the shared base and the catalogue's modules are built from.
|
||||
*
|
||||
* The installer no longer stops at a mesh that runs — it builds the base, a store, the
|
||||
* catalogue, chooses the network and the filter, and asks a human where one must choose. This
|
||||
* bed has no human, so every choice arrives as a flag, and a required choice with no flag is
|
||||
* the installer refusing — which is the behaviour, not a lab problem.
|
||||
*/
|
||||
toolsSource: string;
|
||||
catalogSource: 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;
|
||||
}
|
||||
|
||||
@@ -118,6 +130,14 @@ export async function genesis(o: GenesisOptions): Promise<GenesisResult> {
|
||||
`--catalog ${catalogueOnMachine}`,
|
||||
`--node ${node}`,
|
||||
`--registry ${registry}`,
|
||||
`--tools-source ${o.toolsSource}`,
|
||||
`--catalog-source ${o.catalogSource}`,
|
||||
`--catalog-ref ${o.catalogRef ?? "main"}`,
|
||||
// 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.
|
||||
`--private-network wireguard`,
|
||||
`--packet-filter nftables`,
|
||||
`--host ${HOST_PATH}`,
|
||||
// The lab has no unit to supervise the host with, and the installer refuses to invent one — a
|
||||
// unit file is a packaging decision. A host started this way does not survive a reboot.
|
||||
|
||||
@@ -467,6 +467,9 @@ before(async () => {
|
||||
registry: REGISTRY,
|
||||
source,
|
||||
sourceRef,
|
||||
toolsSource: forgeUrl(BASE.repo),
|
||||
catalogSource: forgeUrl(MODULE.repo),
|
||||
catalogRef: refFor(MODULE.repo),
|
||||
log: (m) => console.log(m),
|
||||
});
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user