Design Notes
This section explains the architecture and implementation choices in the Barn 0.9.0 candidate.
Start with the product model, then follow the boundaries outward:
- Why Barn has no projects — one Inventory, one owner-scoped deployment, and no second source of truth.
- Why every node has two NICs — fixed identity for the lab, separate from management egress.
- Declarative does not mean destructive — per-node drift with explicit recreate and removal.
- A PID is not a virtual machine — QMP identity, process evidence, journals, and bounded recovery.
repo.yamlis intent;catalog.jsonis evidence — a static image repository whose generated metadata is checked against the actual qcow2 bytes.
Use the documentation for current behavior and the status page for dated verification. These design records explain why those contracts exist; they do not turn a design, build, or local test into release evidence.
repo.yaml Is Intent; catalog.json Is Evidence
Why Barn separates human-authored image policy from generated metadata that must match the actual qcow2 artifacts.
A PID Is Not a Virtual Machine
Why Barn combines QMP identity, process evidence, typed invocations, and journals before it signals or deletes anything.
Declarative Does Not Mean Destructive
How Barn uses per-node hashes and explicit operations so missing configuration can never authorize deletion.
Why Every Barn Node Has Two NICs
Why Barn separates management egress from the fixed-address network used by the host, peers, Ansible, and Pigsty.
Why Barn Has No Projects
Why Barn replaced per-directory project state with one owner-scoped deployment driven by one Pigsty Inventory.
-
repo.yaml Is Intent; catalog.json Is Evidence
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. A static image repository sounds like a directory of qcow2 files plus a JSON index. The difficult part is deciding which …
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. A static image repository sounds like a directory of qcow2 files plus a JSON index. The difficult part is deciding which …
-
A PID Is Not a Virtual Machine
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. A pidfile answers one question: which integer did a process have when the file was written? It does not prove that the …
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. A pidfile answers one question: which integer did a process have when the file was written? It does not prove that the …
-
Declarative Does Not Mean Destructive
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. “Declarative” is often shortened to “make reality equal the file.” That is a useful slogan until the file is incomplete, …
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. “Declarative” is often shortened to “make reality equal the file.” That is a useful slogan until the file is incomplete, …
-
Why Every Barn Node Has Two NICs
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. A Pigsty Inventory names machines by stable addresses. PostgreSQL replication, etcd membership, HAProxy backends, VIPs, …
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. A Pigsty Inventory names machines by stable addresses. PostgreSQL replication, etcd membership, HAProxy backends, VIPs, …
-
Why Barn Has No Projects
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. Barn began with a familiar VM-manager abstraction: a working directory was a project, a hidden marker gave it identity, …
Note This article describes the unreleased Barn 0.9.0 candidate. See Status for current validation and remaining release checks. Barn began with a familiar VM-manager abstraction: a working directory was a project, a hidden marker gave it identity, …