Two graphs, the builder's arrival, and two findings from building on a live mesh #37
@@ -7,7 +7,7 @@ reconstructed: false
|
|||||||
extends: 0070-the-catalogue-owns-the-module-graph.md
|
extends: 0070-the-catalogue-owns-the-module-graph.md
|
||||||
---
|
---
|
||||||
|
|
||||||
# 73. The installer carries a builder, and the registry precedes the control plane
|
# 73. The installer carries a builder, and the registry stays where it is
|
||||||
|
|
||||||
## Context
|
## Context
|
||||||
|
|
||||||
@@ -17,11 +17,8 @@ questions were left open, and the design record names them as the one gap that s
|
|||||||
from being able to produce anything at all: **how the builder arrives**, and **what it publishes
|
from being able to produce anything at all: **how the builder arrives**, and **what it publishes
|
||||||
into**.
|
into**.
|
||||||
|
|
||||||
They cannot be answered apart. A builder that arrives with nowhere to publish has produced a file
|
|
||||||
on a disk, and a place to publish with nothing to produce is an empty shelf.
|
|
||||||
|
|
||||||
Today the installer carries the control plane's image inside itself. That works, and it is why
|
Today the installer carries the control plane's image inside itself. That works, and it is why
|
||||||
genesis needs no registry: nothing is ever pulled, because the one image that matters is already
|
genesis needs no registry: nothing is ever fetched, because the one image that matters is already
|
||||||
present. The cost is that the mesh which results holds an artifact it did not make, cannot rebuild,
|
present. The cost is that the mesh which results holds an artifact it did not make, cannot rebuild,
|
||||||
and knows nothing about — no version, no source, no edges. That is the same shape as the fault
|
and knows nothing about — no version, no source, no edges. That is the same shape as the fault
|
||||||
[issue 044](../04-ISSUES/044-the-runtime-every-module-builds-on-cannot-be-built-by-the-mesh/00-report.md)
|
[issue 044](../04-ISSUES/044-the-runtime-every-module-builds-on-cannot-be-built-by-the-mesh/00-report.md)
|
||||||
@@ -36,31 +33,36 @@ and produces the control plane from the same repository and path that any later
|
|||||||
use. What raises the mesh is therefore the same thing that will maintain it, and there is no second
|
use. What raises the mesh is therefore the same thing that will maintain it, and there is no second
|
||||||
mechanism kept in step with the first.
|
mechanism kept in step with the first.
|
||||||
|
|
||||||
**The registry joins the substrate, and precedes the control plane.** Not because it became more
|
**The registry does not move, and the argument for moving it does not survive being made.**
|
||||||
fundamental, but because the answer to a stated question changed:
|
|
||||||
|
It was put this way: a produced image has to be put somewhere before anything can fetch it, so the
|
||||||
|
registry must now precede the control plane, and
|
||||||
|
[ADR 0033](0033-the-substrate-is-a-store-and-a-broker.md)'s answer to that question has to flip.
|
||||||
|
|
||||||
|
It does not, because the premise is false. **The thing that builds the image and the machine that
|
||||||
|
runs it are the same machine.** A built image is already in that machine's container runtime, and
|
||||||
|
the temporary control plane names it exactly as it names a carried one — by the digest of its own
|
||||||
|
configuration, a local identity that requires nothing to have served it. Building changes where the
|
||||||
|
bytes came from. It does not change where they are.
|
||||||
|
|
||||||
| | is it substrate? | must it precede the control plane? |
|
| | is it substrate? | must it precede the control plane? |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| the store | yes | yes — there is nowhere else to put the control plane's state |
|
| the store | yes | yes — there is nowhere else to put the control plane's state |
|
||||||
| the broker | yes | yes — the control plane reaches a machine only over it |
|
| the broker | yes | yes — the control plane reaches a machine only over it |
|
||||||
| the image registry | yes — it cannot grant itself a repository | **yes, now** — the control plane's image is produced here, and a produced image has to be put somewhere before anything can fetch it |
|
| the image registry | yes — it cannot grant itself a repository | **still no** — the first machine neither fetches the control plane nor needs to, whether the image was carried in or made here |
|
||||||
|
|
||||||
[ADR 0033](0033-the-substrate-is-a-store-and-a-broker.md) answered that last cell *no*, and was
|
So the registry stays where [ADR 0033](0033-the-substrate-is-a-store-and-a-broker.md) put it:
|
||||||
right at the time, for the reason it gave: the first machine fetched the control plane from
|
substrate by role, ordinary by delivery, installed by the temporary control plane as its first act.
|
||||||
upstream, so nothing needed a registry until there was already a control plane to install one. That
|
The bundle carries two services and a control plane, as it did. **What publishes into the registry
|
||||||
premise is what this decision removes. The registry's role never changed; what changed is whether
|
is unchanged too** — the existing step that pushes the control plane's image into it, which is the
|
||||||
anything needs it before the control plane exists.
|
moment that image first receives a digest assigned by something other than itself. It now pushes
|
||||||
|
something this mesh built rather than something it was handed.
|
||||||
**The substrate bundle therefore carries three services and no control plane**, where it carried
|
|
||||||
two services and a control plane. It does not grow: an image comes out as one goes in.
|
|
||||||
|
|
||||||
## Consequences
|
## Consequences
|
||||||
|
|
||||||
**Genesis gains a step and loses one.** The registry is raised with the substrate rather than
|
**Genesis gains one step and changes no others.** A build happens before the image is loaded. The
|
||||||
installed as the first act of a temporary control plane, and a build step appears before the
|
pivot described in [ADR 0067](0067-genesis-is-a-pivot.md) survives exactly as written, because the
|
||||||
control plane is raised at all. The pivot described in
|
step it pivots on never cared where the image came from.
|
||||||
[ADR 0067](0067-genesis-is-a-pivot.md) survives unchanged in shape — a temporary control plane is
|
|
||||||
still what installs the permanent one — but what it installs is now something this mesh built.
|
|
||||||
|
|
||||||
**A fresh mesh can produce from the moment it exists.** The builder is present before the control
|
**A fresh mesh can produce from the moment it exists.** The builder is present before the control
|
||||||
plane is, so the core modules, the catalogue and the builder's own module can be built in the
|
plane is, so the core modules, the catalogue and the builder's own module can be built in the
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ python3 00-META/checks/index.py fail if stale
|
|||||||
- **0070** — [The catalogue owns the module graph, and genesis builds rather than carries](0070-the-catalogue-owns-the-module-graph.md)
|
- **0070** — [The catalogue owns the module graph, and genesis builds rather than carries](0070-the-catalogue-owns-the-module-graph.md)
|
||||||
- **0071** — [Genesis clones from a mesh, and checks what it got](0071-where-genesis-gets-its-source.md)
|
- **0071** — [Genesis clones from a mesh, and checks what it got](0071-where-genesis-gets-its-source.md)
|
||||||
- **0072** — [Two graphs, and a build chain that orders itself](0072-two-graphs-and-the-build-chain.md)
|
- **0072** — [Two graphs, and a build chain that orders itself](0072-two-graphs-and-the-build-chain.md)
|
||||||
- **0073** — [The installer carries a builder, and the registry precedes the control plane](0073-the-installer-carries-a-builder.md)
|
- **0073** — [The installer carries a builder, and the registry stays where it is](0073-the-installer-carries-a-builder.md)
|
||||||
|
|
||||||
### What runs on them, and how it gets there
|
### What runs on them, and how it gets there
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user