The installation, written out in full
Every step from a bare machine to a mesh that maintains itself, in three phases, with each step named as the installer prints it. The point of writing it out is the shape it exposes. The installer owns twelve steps and ends at a mesh that RUNS. Seven more turn that into a mesh that WORKS — the shared base, a store that is a provider rather than the control plane's own memory, the catalogue, the replay of what was built before the catalogue existed, the control plane rebuilt through the module path, the private network with the node actually placed on it, and the packet filter. None of those seven is the installer's. They are things somebody types, which is why a test had to be written to discover they were missing. Machines arrive last, in phase three, because a machine joining a mesh that cannot build anything proves enrolment works and nothing else. And five things that are not yet true are named rather than implied: phase two is manual, a second machine cannot pull what the mesh built, ADR 0014 assumes a private package registry that genesis has not installed when the first build needs it, the host agent does not survive a reboot, and nothing can contradict a claim that a machine was installed this way. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
@@ -30,6 +30,7 @@ document is written and this one's status becomes `implemented`.
|
||||
| [`18-building-a-module.md`](18-building-a-module.md) | How a build is modelled, and why a recipe that is always a Dockerfile does not fit what a module is | [ADR 0040](../../02-DECISIONS/0040-what-a-module-is.md), [ADR 0039](../../02-DECISIONS/0039-what-the-sdk-holds-and-refuses.md), [ADR 0009](../../02-DECISIONS/0009-modules-and-the-graph.md) |
|
||||
| [`19-the-module-protocol.md`](19-the-module-protocol.md) | What a module's code and the mesh say to each other; an SDK is an implementation of it | [ADR 0074](../../02-DECISIONS/0074-the-wire-is-specified-not-the-types.md), [ADR 0042](../../02-DECISIONS/0042-the-shape-of-an-event-on-the-wire.md), [ADR 0043](../../02-DECISIONS/0043-a-module-broker-account-is-scoped-by-emits-and-consumes.md) |
|
||||
| [`20-writing-a-module.md`](20-writing-a-module.md) | A worked guide: one module, four capabilities, four languages, and the packages it publishes | [ADR 0074](../../02-DECISIONS/0074-the-wire-is-specified-not-the-types.md), [ADR 0040](../../02-DECISIONS/0040-what-a-module-is.md), [ADR 0039](../../02-DECISIONS/0039-what-the-sdk-holds-and-refuses.md) |
|
||||
| [`21-the-installation-in-full.md`](21-the-installation-in-full.md) | Every step from a bare machine to a mesh that maintains itself, and what is not yet true | [ADR 0067](../../02-DECISIONS/0067-genesis-is-a-pivot.md), [ADR 0073](../../02-DECISIONS/0073-the-installer-carries-a-builder.md), [ADR 0014](../../02-DECISIONS/0014-no-npm-workspace.md) |
|
||||
|
||||
## Not yet written
|
||||
|
||||
|
||||
Reference in New Issue
Block a user