2026-08-18 17:00:07 +02:00
|
|
|
---
|
|
|
|
|
id: RMASTER-ADR-0001
|
|
|
|
|
title: "Repository Prefix Architecture"
|
|
|
|
|
status: accepted
|
|
|
|
|
revision: "accepted-1"
|
|
|
|
|
owner: railiance-master
|
|
|
|
|
last_reviewed: "2026-07-25"
|
|
|
|
|
review_interval: 6m
|
|
|
|
|
---
|
|
|
|
|
|
2026-07-25 10:54:37 +02:00
|
|
|
# ADR-0001: Repository Prefix Architecture
|
|
|
|
|
|
|
|
|
|
Date: 2026-07-25
|
|
|
|
|
Status: Accepted
|
|
|
|
|
|
|
|
|
|
## Context
|
|
|
|
|
|
|
|
|
|
Railiance already has a meaningful set of ownership repos such as
|
|
|
|
|
`railiance-infra`, `railiance-cluster`, `railiance-platform`,
|
|
|
|
|
`railiance-enablement`, `railiance-apps`, `railiance-forge`, and
|
|
|
|
|
`railiance-fabric`.
|
|
|
|
|
|
|
|
|
|
That structure is useful, but it does not by itself capture all of the
|
|
|
|
|
dimensions Railiance now needs.
|
|
|
|
|
|
|
|
|
|
In particular, the architecture needs clear source-controlled homes for:
|
|
|
|
|
|
|
|
|
|
- workload execution contracts across different operations architectures,
|
|
|
|
|
- managed workload packages as first-class repos,
|
|
|
|
|
- and concrete substrate boundaries such as named servers, workstations, or
|
|
|
|
|
grouped environments.
|
|
|
|
|
|
|
|
|
|
Without that separation, Kubernetes-specific workload semantics remain mixed
|
|
|
|
|
into `railiance-cluster`, workload wrappers remain mixed into ownership repos,
|
|
|
|
|
and concrete substrates remain under-described.
|
|
|
|
|
|
|
|
|
|
Railiance also operates inside a wider ecosystem around Railiance, Net Kingdom,
|
|
|
|
|
and the Helix Forge software factory. That wider context needs architecture
|
|
|
|
|
that can support both exploratory operation and production-grade evolution
|
|
|
|
|
without leaving key responsibilities ambiguous.
|
|
|
|
|
|
|
|
|
|
## Decision
|
|
|
|
|
|
|
|
|
|
Railiance adopts four canonical repository families:
|
|
|
|
|
|
|
|
|
|
1. `railiance-*` for ownership and responsibility areas
|
|
|
|
|
2. `rail-*` for workload execution contracts
|
|
|
|
|
3. `rapp-*` for Railiance-managed workload packages
|
|
|
|
|
4. `reef-*` for durable substrate boundaries
|
|
|
|
|
|
|
|
|
|
The current implementation wave is explicitly centered on `rail-kubernetes` as
|
|
|
|
|
the default base rail. Additional rails are introduced only when a concrete
|
|
|
|
|
workload has a sound reason to run on a distinct execution architecture.
|
|
|
|
|
|
|
|
|
|
`rail-knative` is the first expected follow-on rail, motivated by the need to
|
|
|
|
|
support `qonto-assistent`, but it should follow the `rail-kubernetes` boundary
|
|
|
|
|
cleanup rather than bypass it.
|
|
|
|
|
|
|
|
|
|
## Meaning Of Each Family
|
|
|
|
|
|
|
|
|
|
### `railiance-*`
|
|
|
|
|
|
|
|
|
|
Owns major architectural responsibilities, shared policies, and durable layer
|
|
|
|
|
boundaries.
|
|
|
|
|
|
|
|
|
|
### `rail-*`
|
|
|
|
|
|
|
|
|
|
Owns how workloads run on a specific execution architecture such as Kubernetes,
|
|
|
|
|
Knative, KEDA, Fission, or Nuclio.
|
|
|
|
|
|
|
|
|
|
In the current phase, `rail-kubernetes` is the default path for platform
|
|
|
|
|
services and managed applications.
|
|
|
|
|
|
|
|
|
|
### `rapp-*`
|
|
|
|
|
|
|
|
|
|
Owns the managed workload package for one service or application, whether it is
|
|
|
|
|
an internal workload or a wrapped upstream product.
|
|
|
|
|
|
|
|
|
|
Its role is to provide the managed wrapper and scaffolding needed to run that
|
|
|
|
|
workload in the Railiance and Net Kingdom context. It does not replace
|
|
|
|
|
responsibility ownership.
|
|
|
|
|
|
|
|
|
|
### `reef-*`
|
|
|
|
|
|
|
|
|
|
Owns the concrete substrate reality where rails and `rapp`s are bound, such as
|
|
|
|
|
a named server, cluster, workstation, or grouped substrate class.
|
|
|
|
|
|
|
|
|
|
A reef is about purpose-bound compute resources, not merely about individual
|
|
|
|
|
machines.
|
|
|
|
|
|
|
|
|
|
## Consequences
|
|
|
|
|
|
|
|
|
|
### Positive
|
|
|
|
|
|
|
|
|
|
- Ownership, execution, workload identity, and substrate identity become
|
|
|
|
|
separate concerns.
|
|
|
|
|
- Railiance can support multiple execution architectures without forcing all
|
|
|
|
|
workload semantics into `railiance-cluster`.
|
|
|
|
|
- Platform services and applications can both become first-class managed
|
|
|
|
|
workload packages where appropriate.
|
|
|
|
|
- Concrete substrates gain a clear architectural home without overloading the
|
|
|
|
|
ownership repos.
|
|
|
|
|
- The framework gains a disciplined default path for introducing new rails
|
|
|
|
|
instead of proliferating them speculatively.
|
|
|
|
|
|
|
|
|
|
### Required Follow-On Work
|
|
|
|
|
|
|
|
|
|
- Define the initial `rail-*` contracts, starting with `rail-kubernetes`.
|
|
|
|
|
- Evolve the current `railiance/app.toml` and overlay pattern into a
|
|
|
|
|
rail-aware, eventually rail-neutral workload packaging contract.
|
|
|
|
|
- Identify which current workloads should become `rapp-*` repos.
|
|
|
|
|
- Extend `railiance-fabric` so rails, `rapp`s, and reefs become graph-native.
|
|
|
|
|
- Define when mixed-rail reefs are acceptable and when clearer substrate
|
|
|
|
|
separation should be preferred.
|
|
|
|
|
|
|
|
|
|
### Constraints
|
|
|
|
|
|
|
|
|
|
- `reef-*` must not become a default one-repo-per-machine pattern.
|
|
|
|
|
- Generic logic stays in the appropriate ownership repo.
|
|
|
|
|
- A named machine gets its own reef only when that machine is itself a durable
|
|
|
|
|
substrate boundary.
|
|
|
|
|
- `rapp-*` repos must not become shadow ownership repos.
|
|
|
|
|
- Transitional substrate labels should not be canonized before the pattern is
|
|
|
|
|
operationally stable.
|
|
|
|
|
|
|
|
|
|
## Current Interpretation For Existing Repos
|
|
|
|
|
|
|
|
|
|
- `railiance-*` repos remain the primary ownership axis.
|
|
|
|
|
- Current workload-execution logic in `railiance-cluster` is a candidate to
|
|
|
|
|
migrate into `rail-kubernetes`.
|
|
|
|
|
- Current workload wrappers inside `railiance-apps`, `railiance-platform`, or
|
|
|
|
|
`railiance-forge` may evolve into `rapp-*` repos over time.
|
|
|
|
|
- Current named substrates such as COULOMBCORE, RAILIANCE01, and WORKSTATION
|
|
|
|
|
may justify `reef-*` repos when they represent real operational boundaries.
|
|
|
|
|
- A reef may host more than one rail in early or mixed environments, but
|
|
|
|
|
production-critical substrates should prefer clearer purpose and primary-rail
|
|
|
|
|
boundaries unless a mixed design is justified.
|
|
|
|
|
|
|
|
|
|
## Notes
|
|
|
|
|
|
|
|
|
|
This ADR defines the repository taxonomy. It does not yet mandate a full
|
|
|
|
|
migration or rename of existing repos. Migration should happen when it produces
|
|
|
|
|
clearer ownership and lower ambiguity, not merely for naming purity.
|