2026-03-17 23:11:38 +01:00
|
|
|
# SCOPE
|
|
|
|
|
|
|
|
|
|
> This file helps you quickly understand what this repository is about,
|
|
|
|
|
> when it is relevant, and when it is not.
|
|
|
|
|
> It is intentionally lightweight and may be incomplete.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## One-liner
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
The Railiance bootstrap path — turning a single bare virtual machine into a working Railiance, then handing off to the ordinary layers.
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Core Idea
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
Every Railiance layer describes how to operate a system that already exists.
|
|
|
|
|
S1 converges a substrate, S2 runs a cluster on it, S3 provides shared services.
|
|
|
|
|
None of them owns the first step: *you have one virtual machine and an
|
|
|
|
|
intention — now what?*
|
|
|
|
|
|
|
|
|
|
This repo owns that step. It sequences the layers into a runnable path from
|
|
|
|
|
nothing to a working Railiance, and then gets out of the way. One of Railiance's
|
|
|
|
|
goals is that initiating a new Railiance should be easy; this repo is where that
|
|
|
|
|
claim is made testable.
|
|
|
|
|
|
|
|
|
|
**Repository status:** this repo previously carried a copied declaration
|
|
|
|
|
identifying it as the S2 cluster runtime layer, duplicating `railiance-cluster`.
|
|
|
|
|
That was wrong and has been corrected — see `INTENT.md` → History. Restructuring
|
|
|
|
|
of the inherited content is in progress; expect S2-era material still present in
|
|
|
|
|
`ansible/`, `helm/`, `docs/` and `wiki/` that has not yet been sorted into
|
|
|
|
|
"bootstrap path" versus "belongs to S1/S2".
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## In Scope
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- The newcomer path from bare VM to working Railiance (`QUICKSTART.md`)
|
|
|
|
|
- Prerequisite and ordering contracts between substrate, cluster, secrets, forge
|
|
|
|
|
- Bootstrap secret material: how it is introduced, and how it is retired once
|
|
|
|
|
the real custody path (OpenBao, S3) exists
|
|
|
|
|
- The handoff point where the ordinary layers take over
|
|
|
|
|
- A rehearsable test that the bootstrap path still works
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2026-05-01 12:34:05 +02:00
|
|
|
## Out of Scope
|
2026-03-17 23:11:38 +01:00
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- OS provisioning, hardening, server baseline → `railiance-infra` (S1)
|
|
|
|
|
- k3s, Helm, ingress, CNI, admission controllers, operators, kubeconfig
|
|
|
|
|
management → `railiance-cluster` (S2)
|
|
|
|
|
- Shared stateful services: databases, cache, secrets, object storage
|
|
|
|
|
→ `railiance-platform` (S3)
|
|
|
|
|
- Ongoing operation of anything. After handoff this repo has no running role
|
|
|
|
|
- Duplicating layer content — this repo sequences layers, it does not own what
|
|
|
|
|
they own
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Relevant When
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- Standing up a **new** Railiance from nothing
|
|
|
|
|
- Establishing or changing the ordering between substrate, cluster and secrets
|
|
|
|
|
- Resolving a bootstrap chicken-and-egg problem (needing a secret to fetch the
|
|
|
|
|
code that manages secrets)
|
|
|
|
|
- Testing that the adoption path still works by raising a fresh Railiance
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
## Not Relevant When
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- Operating, upgrading, or troubleshooting an existing Railiance — that belongs
|
|
|
|
|
to the layer that owns the concern
|
|
|
|
|
- Deploying a workload (that is `rapp-*` and S5)
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Current State
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- Status: **repurposed, restructuring in progress**
|
|
|
|
|
- The bootstrap intent is declared (`INTENT.md`, 2026-08-11); the inherited S2
|
|
|
|
|
content has not yet been sorted
|
|
|
|
|
- `QUICKSTART.md` is the existing seed of the newcomer path; a near-identical
|
|
|
|
|
copy also exists in `railiance-cluster` and the two need consolidating
|
|
|
|
|
- `install/` exists in `railiance-cluster` but not here, and is a candidate to
|
|
|
|
|
move
|
|
|
|
|
- Open: whether the bootstrap path has ever been walked end to end from scratch
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## How It Fits
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- Sequences: `railiance-infra` (S1) → `railiance-cluster` (S2) →
|
|
|
|
|
`railiance-platform` (S3), and hands off once they can run themselves
|
|
|
|
|
- Downstream: everything, indirectly — this is the entry point
|
|
|
|
|
- Often used with: `railiance-master` (which owns the layer model this
|
|
|
|
|
sequences), `railiance-platform` (which takes over secret custody after
|
|
|
|
|
bootstrap material is retired)
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Terminology
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- Preferred terms: bootstrap path, ignition sequence, handoff point,
|
|
|
|
|
bootstrap secret material
|
|
|
|
|
- Potentially confusing: "bootstrap" here means *initiating a whole Railiance*,
|
|
|
|
|
not `cluster bootstrap` in the k3s sense (that is S2), and not ArgoCD
|
|
|
|
|
app-of-apps bootstrapping (that is S3's `argocd/bootstrap/`)
|
2026-03-17 23:11:38 +01:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Getting Oriented
|
|
|
|
|
|
2026-08-11 22:41:29 +02:00
|
|
|
- Start with: `INTENT.md`, then `QUICKSTART.md`
|
|
|
|
|
- Context: `railiance-platform/ArchitectureBlueprint.md` §4 records this repo's
|
|
|
|
|
lineage and status
|
|
|
|
|
- Pre-conditions: one reachable virtual machine, and nothing else
|