Genesis reads the registry's and the builder's manifests from the catalogue, not the control plane's (hq issue 072) #42

Merged
jschoubben merged 1 commits from feat/one-controller-manifest into main 2026-09-21 17:23:56 +00:00
3 changed files with 11 additions and 6 deletions
+3 -2
View File
@@ -151,9 +151,10 @@ export MESH_LAB_BUILDER=<mesh-controller>/build/mesh-builder # build/, which i
export MESH_LAB_BOOTSTRAP_BINARY=<mesh-host>/mesh-bootstrap export MESH_LAB_BOOTSTRAP_BINARY=<mesh-host>/mesh-bootstrap
export MESH_LAB_CONTROL_IMAGE=mesh-controller:development # optional; what it carries export MESH_LAB_CONTROL_IMAGE=mesh-controller:development # optional; what it carries
# A checkout of the mesh's catalogue. The installer reads the registry's and the control plane's # A checkout of the mesh's catalogue. The installer reads the registry's and the builder's
# manifests from a copy of it ON THE MACHINE, because at genesis there is no forge, no build # manifests from a copy of it ON THE MACHINE, because at genesis there is no forge, no build
# machine and — until the registry is up — nothing serving anything. # machine and — until the registry is up — nothing serving anything. The control plane's manifest
# is not among them: it comes out of the build the installer runs (novox/hq ADR 0069).
export MESH_LAB_CATALOG=<mesh-catalog>/modules export MESH_LAB_CATALOG=<mesh-catalog>/modules
# Built with `go build -o <path> ./examples/<name>` in mesh-controller. # Built with `go build -o <path> ./examples/<name>` in mesh-controller.
+3 -1
View File
@@ -91,7 +91,9 @@ export function stepIn(said: string): string {
export async function genesis(o: GenesisOptions): Promise<GenesisResult> { export async function genesis(o: GenesisOptions): Promise<GenesisResult> {
const node = o.node; const node = o.node;
const registry = o.registry ?? "127.0.0.1:5000"; const registry = o.registry ?? "127.0.0.1:5000";
const modules = o.catalogueModules ?? ["distribution", "mesh-controller", "builder"]; // The registry's and the builder's. Not the control plane's: its manifest lives in its own
// repository and genesis takes it from the build it runs (novox/hq ADR 0069, 04-ISSUES/072).
const modules = o.catalogueModules ?? ["distribution", "builder"];
const catalogueOnMachine = o.catalogueOnMachine ?? "/opt/mesh-catalog"; const catalogueOnMachine = o.catalogueOnMachine ?? "/opt/mesh-catalog";
const log = o.log ?? (() => {}); const log = o.log ?? (() => {});
+5 -3
View File
@@ -114,10 +114,12 @@ const CATALOGUE_ON_MACHINE = "/opt/mesh-catalog";
* *
* Named here rather than pushing the whole repository because the whole repository is a hundred * Named here rather than pushing the whole repository because the whole repository is a hundred
* megabytes of `node_modules` and the installer opens exactly two files: mesh-host's * megabytes of `node_modules` and the installer opens exactly two files: mesh-host's
* `internal/bootstrap` RegistryModule and ControlPlaneModule. If it ever opens a third, this list * `internal/bootstrap` RegistryModule and BuilderModule. (Not the control plane's: that manifest
* is where the bed finds out, by the installer saying which manifest it could not read. * comes out of the build the installer runs — novox/hq ADR 0069, 04-ISSUES/072.) If it ever opens
* a third, this list is where the bed finds out, by the installer saying which manifest it could
* not read.
*/ */
const CATALOGUE_MODULES = ["distribution", "mesh-controller", "builder"]; const CATALOGUE_MODULES = ["distribution", "builder"];
/** /**
* Where this mesh keeps its own images, as the anchor reaches it. * Where this mesh keeps its own images, as the anchor reaches it.