Files
hq/03-DESIGN/01-to-be/README.md
T
jschoubben 94229d95eb 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
2026-09-15 16:51:52 +02:00

6.9 KiB

03-DESIGN / 01-to-be

The mesh being built toward. Every statement here traces to a record in 02-DECISIONS/; nothing arrives by drafting.

A document here describes an intention. What currently runs is in 00-as-is/, and the two are never merged — when something ships, the as-is document is written and this one's status becomes implemented.

Document Covers Rests on
00-work-breakdown.md How modules move across one at a time, until the old registry can be switched off ADR 0001, ADR 0016
01-end-to-end-testing.md The lab: a real mesh a change can be run against before it reaches nodes ADR 0016, 0029
02-scenario-declaration.md What a scenario declares — the underlay, and what to place on it ADR 0016
03-scenario-lifecycle.md What happens to a scenario — raise, snapshot, restore, move, destroy ADR 0016
04-lab-installation.md Getting the lab onto a clean machine, and why it verifies capability rather than installation ADR 0010
05-the-node-host.md Tier 0 — the one thing installed by hand, and the only thing that changes a machine ADR 0005
06-the-control-plane.md Tier 2 — what the term means, and the test for what belongs in it ADR 0005
07-the-substrate.md Tier 1 — what the control plane consumes and cannot grant itself ADR 0004, 0048
08-connectivity.md One context in full — overlay, resolution, exposure, filtering, certificates ADR 0007, 0050, 0051, 0055
09-the-node-lifecycle.md How a machine becomes a node, stays one, and stops being one ADR 0004, 0051
10-delivery.md Modules, the three edges, and how a change becomes a running thing ADR 0010, 0064, 0065
11-a-board.md What a person sees of the mesh, and why it is read from what runs ADR 0008, ADR 0001
12-a-module-repository.md A module repository, and what builds it ADR 0009, ADR 0010, ADR 0005
13-credentials-and-their-rotation.md Credentials, and moving them without a consumer holding one the provider does not know about ADR 0001, ADR 0009
14-model-access.md Model access as a provision, and what a licence is bound to ADR 0024, ADR 0009
15-the-agent-session.md One mechanism started twice — a node's session and the mesh's ADR 0004, ADR 0026
16-module-coverage.md What a module must be able to say, measured against 127 that exist ADR 0009, ADR 0005
17-raising-a-mesh.md How a mesh comes into existence, and how a machine joins one that exists ADR 0067, ADR 0006, ADR 0005
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, ADR 0039, ADR 0009
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, ADR 0042, ADR 0043
20-writing-a-module.md A worked guide: one module, four capabilities, four languages, and the packages it publishes ADR 0074, ADR 0040, ADR 0039
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, ADR 0073, ADR 0014

Not yet written

  • The remaining six contexts. ADR 0006 settles the list at seven; connectivity is the first written in full (08) and the other six do not exist yet. The work breakdown says in what order they are needed.
  • Domain grouping outside the core. Not needed. ADR 0009 is superseded by ADR 0009: there is no domain module to group into, so there is no domain list to settle. Relationships are edges, and grouping is a tag and a query.