Files
hq/01-RESEARCH
jschoubben ddb8091f68 Research 012 — the minimum viable node, and adopting what is already there
Building tier 0 reached a wall that looked like a packaging problem and is not.
The host can be told to run a container or install a package; both need a file,
and asking where the host gets it produced a bad trilemma — carry everything,
download at apply time, or push the files in first. Downloading fails on the
first node, which cannot fetch the image registry from the image registry it is
trying to start.

The reframing came from the operator: the machine is not offline, and what
matters is WHEN the fetching happens. Move it from apply time to build time —
build the installer on a machine with a network, tailored to the target, apply
it on a target that then needs nothing. The same move the lab already made for
its router image.

Which makes the question not where artifacts come from but what is missing from
THIS machine, and that needs two things answered: the closure for a one-node
mesh, and how a machine already in use becomes one.

Adoption is the second half, and it is sharper than it sounds. Having a package
installed is not owning it: a container runtime found already present carries
settings somebody chose, and noticing the binary exists discovers none of them.

It was also the original path — 00-as-is/05 records adoption of a pre-existing
machine's configuration as the original mechanism, since made legacy and
explicitly out of scope for the lab. It returns for a different reason than it
was dropped for.

Two collisions recorded rather than discovered later. ADR 0004 has managed files
generated and never edited, and adoption needs a one-time import before that
rule starts applying — three states, and the middle one is new. And ADR 0043
says the host never touches what it did not create, which is exactly what
adoption does; that rule needs a companion rather than an exception.

Eight open questions, including whether 'tier' is just a coarse view of a graph
level, whether owning a package means owning its version, and what cannot be
precomputed at all — because tailoring moves the cost of building from source
rather than removing it.
2026-08-26 21:30:43 +02:00
..

01-RESEARCH

Investigations that have not yet hardened into design.

Structure

Each effort lives in NNN-descriptive-name/ and must contain 00-overview.md, carrying its state in YAML frontmatter and a prose summary below it:

---
status: active | graduated | abandoned
initiated: YYYY-MM-DD
touches: []          # design docs, subsystems or areas the effort bears on
became: []           # required when status is terminal — what it turned into
---

The prose says what is being investigated, why, and what it touches. It does not restate the status — status lives in one place, and two places is one too many.

Further documents in the same folder hold the work itself: notes, evidence, option analyses, draft designs.

Lifecycle

status Meaning
active Investigation in progress.
graduated Checked against 00-META, decided in 02-DECISIONS/, and specified in 03-DESIGN — see became:.
abandoned Stopped or superseded. Nothing is deleted.

An effort graduates by producing a decision record and a 03-DESIGN entry. It is abandoned in place — never deleted. What was rejected, and why, is the more expensive half to rediscover.

Starting and closing efforts is playbook territory: 00-META/process/01-research.md and 02-graduation.md.

Rules

  • Markdown only. Do not skip or reuse a sequence number.
  • Evidence, not assertion. An effort that measured nothing has not finished.
  • Research describes real observations but never identifies the mesh it observed. The shape of a finding survives anonymisation intact.