# ADR 1 — Base image<no value>

<!-- Generated by website/sync-docs.py from docs/adr/0001-base-image.md. Edit that file, not this one. -->

Status: accepted

## Context

Corium needs an immutable base in the CoreOS/OSTree lineage, and exposes
cloud-init as its configuration surface.

Fedora CoreOS was the obvious starting point: it is the mature member of the
lineage, with excellent install tooling (`coreos-installer`, live ISO, PXE).
Three things were verified before ruling on it.

- Image-provided Ignition fragments in `/usr/lib/ignition/base.d/` work, and
  with the right precedence. Ignition merges the user's config *over* the
  image's, so baked-in plumbing applies wherever the operator is silent and
  never overrides them. Confirmed in `internal/exec/engine.go` in
  `coreos/ignition`, not from documentation.
- FCOS boots with no Ignition config at all. Maintainers declined to make its
  absence fatal: *"Today, we happily boot and sit there if the user doesn't
  provide Ignition"* (`fedora-coreos-tracker#279`). A cloud-init-only node is
  therefore possible.
- Zincati, FCOS's auto-update agent, fails on OCI-native deployments and must
  be masked.

So the design was buildable. The question was whether it should be built.

## Decision

Base on `quay.io/fedora/fedora-bootc`.

## Consequences

FCOS is Ignition-native. Running cloud-init as the primary surface there means
masking Zincati, neutralising Afterburn's SSH key injection — it overlaps
cloud-init's metadata role, and running both gives two agents racing to
provision the same user — and arbitrating between NetworkManager and
cloud-init's network stage. That is a meaningful amount of work whose endpoint
is the place `fedora-bootc` already occupies.

The ecosystem has drawn this line already. `ucore`, the most developed FCOS
derivative, stays on Ignition. `k0snode-bootc`, which runs k0s on bootc with
cloud-init, starts from a generic bootc base rather than FCOS. No project ships
FCOS with cloud-init as its primary surface.

Finally, FCOS is itself converging on bootc (`fedora-coreos-tracker#2214`,
targeting Fedora 46). Starting from `fedora-bootc` is starting where FCOS is
going.

What is given up: FCOS's install tooling and its battle-tested server base.
`bootc-image-builder` covers the first, producing an installable artefact
directly from the image rather than FCOS's two-step of installing a stock image
and rebasing onto ours.
