railiance-master/workplans/RMASTER-WP-0017-rail-rapp-reef-repo-separation.md
codex 4864b7852d chore: use RMASTER-WP prefix for master workplans
Rename RAILIANCE-WP-0017..0021 to RMASTER-WP-* so railiance-master
IDs no longer collide with railiance-platform's RAILIANCE-WP series.
Hub UUIDs are unchanged.
2026-08-14 14:29:18 +02:00

310 lines
11 KiB
Markdown

---
id: RMASTER-WP-0017
type: workplan
title: "Rail, Rapp, and Reef Repo Separation"
domain: financials
repo: railiance-master
status: finished
owner: codex
topic_slug: railiance
planning_priority: high
planning_order: 17
created: "2026-07-25"
updated: "2026-07-25"
related_repos:
- railiance-master
- railiance-cluster
- railiance-platform
- railiance-apps
- railiance-forge
- railiance-fabric
- railiance-infra
- railiance-hosts
state_hub_workstream_id: "dd794e38-6da0-4acd-8ad8-e00bd2aa62bc"
---
# RMASTER-WP-0017 - Rail, Rapp, and Reef Repo Separation
## Goal
Turn the newly defined `rail-*`, `rapp-*`, and `reef-*` concepts into an
executable migration plan for the current Railiance repo family, so the
framework can evolve without leaving workload execution semantics, workload
packaging, and substrate realities mixed into the existing ownership repos.
This workplan is explicitly cross-repo. It belongs in `railiance-master`
because no single implementation repo can own the migration end to end.
## Current Starting Point
The framework baseline is now recorded in `railiance-master`:
- `docs/repository-axes.md`
- `docs/reef-substrate-model.md`
- `docs/adr/ADR-0001-repository-prefix-architecture.md`
The repo is also now prepared and registered with State Hub as the architecture
home for future multi-repo Railiance work.
The architectural direction is now further clarified:
- wave 1 is centered on `rail-kubernetes` as the default base rail
- new rails are introduced only for concrete workload needs with a sound
runtime argument
- `rail-knative` is the first expected follow-on rail, driven by the need to
support `qonto-assistent`, but only after the Kubernetes rail boundary is
clean
- `rapp-*` repos are about managed wrapping and scaffolding, not ownership
- `reef-*` repos are about compute resources organized for a defined purpose
- mixed-rail reefs are acceptable early, but production-grade cases should
prefer clearer substrate and primary-rail separation unless deliberately
justified
The remaining problem is implementation reality:
- `railiance-cluster` still owns Kubernetes-specific workload lifecycle and
overlay semantics that should eventually become `rail-kubernetes`
- first-class workload wrappers are still spread across `railiance-apps`,
`railiance-platform`, and `railiance-forge`
- substrate reality is under-described and split between `railiance-infra` and
`railiance-hosts`
- `railiance-fabric` and State Hub do not yet model rails, `rapp`s, or reefs
as first-class entities
## Target Outcome
When this workplan is complete:
1. Railiance has a clear first migration target for `rail-kubernetes`.
2. The first set of `rapp-*` candidates is chosen and ordered.
3. The first `reef-*` rollout rule is chosen for current named substrates.
4. `railiance-fabric` and State Hub have a defined integration path for the new
repo families.
5. The current repo set has an approved separation plan, not only a naming idea.
## Boundaries
This workplan may define, sequence, and coordinate repo splits.
It must not silently move implementation content between repos without explicit
repo-local follow-up workplans or commits in those repos.
## Tasks
## T01 - Record the framework repo-family baseline in railiance-master
```task
id: RMASTER-WP-0017-T01
status: done
priority: high
state_hub_task_id: "7cb6769a-5557-46e5-8e20-c492e5049604"
```
Record the first canonical architecture baseline for:
- `railiance-*` as ownership repos
- `rail-*` as execution-contract repos
- `rapp-*` as managed workload package repos
- `reef-*` as substrate-boundary repos
Acceptance:
- `railiance-master` contains the baseline documents and ADR
- the `reef-*` model is explicitly defined and bounded against repo explosion
## T02 - Prepare railiance-master as the cross-repo workplan home
```task
id: RMASTER-WP-0017-T02
status: done
priority: high
state_hub_task_id: "17be5faa-cba2-4838-97af-dc3b79e0511b"
```
Prepare and register `railiance-master` in State Hub so cross-repo architecture
work can live here as first-class workplans.
Acceptance:
- repo is classification-registered
- repo passes `statehub fix-consistency`
- workplan and architecture files can now be indexed from this repo
## T03 - Define the `rail-kubernetes` extraction boundary
```task
id: RMASTER-WP-0017-T03
status: done
priority: high
state_hub_task_id: "e25ea023-e2fe-44b9-96c1-cca19c65053f"
```
Define what moves from `railiance-cluster` into a future `rail-kubernetes`
repo, and what must remain owned by `railiance-cluster`.
This is the wave-1 architecture task. It must treat `rail-kubernetes` as the
default base rail for the current ecosystem rather than as one option among
many equally urgent rails.
At minimum, decide the boundary for:
- `railiance/app.toml`
- promotion lifecycle semantics
- overlay repo pattern
- stage-1/2/3 tooling
- cluster-runtime prerequisites versus workload-runtime semantics
- the compatibility path future rails such as `rail-knative` will rely on
Acceptance:
- one written boundary contract names what `railiance-cluster` keeps
- one written boundary contract names what `rail-kubernetes` must own
- at least one migration-safe path exists that does not break current users
- the boundary leaves a coherent follow-on path for `rail-knative` without
forcing knative design decisions into wave 1
2026-07-25: Added `docs/rail-kubernetes-boundary.md` and
`docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md`. The boundary now names
the retained S2 substrate scope, the extracted Kubernetes rail contract, the
rehome-required workload-specific helpers, and a compatibility-preserving split
sequence.
## T04 - Identify and sequence the first `rapp-*` candidates
```task
id: RMASTER-WP-0017-T04
status: done
priority: high
state_hub_task_id: "674b1a4f-2c5b-499c-b26f-9ed4f9f0861c"
```
Choose the first workload packages that should become first-class `rapp-*`
repos instead of remaining embedded inside ownership repos.
This task must treat `rapp-*` as managed workload packaging for third-party or
self-built workloads in the Railiance and Net Kingdom context. It must not
turn `rapp-*` into an ownership mirror of existing `railiance-*` repos.
Candidate set to assess:
- Forgejo or Gitea from `railiance-forge`
- OpenBao from `railiance-platform`
- one user-facing S5 workload from `railiance-apps`
Acceptance:
- first-wave `rapp-*` candidates are named
- rationale is recorded for each chosen or deferred candidate
- split order is defined so ownership boundaries do not get weaker during migration
- each chosen candidate is justified as a managed wrapper and not as a new
ownership home
2026-07-25: Added `docs/rapp-first-wave-candidates.md` and
`docs/adr/ADR-0003-rapp-first-wave-selection.md`. The first-wave order is now
`rapp-openbao`, then `rapp-vergabe-teilnahme`, with the forge workload
explicitly deferred until the Gitea-versus-Forgejo package target is stable
enough to avoid immediate wrapper churn.
## T05 - Decide the first `reef-*` rollout for current substrates
```task
id: RMASTER-WP-0017-T05
status: done
priority: medium
state_hub_task_id: "53c63266-fbcb-4644-86f4-042e7b80744e"
```
Apply the new reef model to the current Railiance substrate reality and decide
whether the first rollout should be:
- `reef-coulombcore`
- `reef-railiance`
- `reef-workstation`
- or a grouped substrate such as `reef-ops-workstations`
This task must also resolve the conceptual overlap between `railiance-infra`
and `railiance-hosts`.
It should treat reefs as compute resources organized for a defined purpose and
should explicitly decide how much multi-rail mixing is acceptable in early
substrates such as `RAILIANCE01`.
Acceptance:
- first-wave reef repo set is chosen
- the rule for singleton versus grouped reef repos is applied to current hosts
- the `railiance-hosts` versus `railiance-infra` ambiguity has a documented direction
- any provisional terminology for transitional substrates is kept provisional
unless the pattern is stable enough to canonize
2026-07-25: Added `docs/reef-first-wave-rollout.md` and
`docs/adr/ADR-0004-first-wave-reef-rollout.md`. The first rollout is now
`reef-railiance`, `reef-coulombcore`, and `reef-ops-workstations`, with
`railiance-infra` chosen as the canonical S1 ownership repo and transitional
substrate nicknames intentionally left provisional.
## T06 - Define `railiance-fabric` and State Hub adaptation for the new repo families
```task
id: RMASTER-WP-0017-T06
status: done
priority: medium
state_hub_task_id: "4f47d000-6495-4163-8673-f339dd7ef41f"
```
Define the minimum graph and coordination changes needed so rails, `rapp`s, and
reefs are not only naming conventions but visible ecosystem entities.
Acceptance:
- `railiance-fabric` adaptation requirements are listed
- State Hub registration/indexing implications are listed
- the minimum fields or declarations needed in future `rail-*`, `rapp-*`, and
`reef-*` repos are recorded
2026-07-25: Added `docs/fabric-state-hub-adaptation.md`. The minimum
adaptation requirements now cover repo-family metadata, Fabric onboarding
updates, typed service/relation vocabulary, and the smallest repo-local
declaration surface future `rail-*`, `rapp-*`, and `reef-*` repos must expose.
## T07 - Launch the first migration wave into concrete repo-local follow-up work
```task
id: RMASTER-WP-0017-T07
status: done
priority: high
state_hub_task_id: "e762c05a-c6f1-439e-98e2-bf4d7b312a74"
```
Create the concrete follow-up workplans in the affected implementation repos for
the first migration wave.
Acceptance:
- at least one repo-local workplan exists for `rail-kubernetes`
- at least one repo-local workplan exists for a first `rapp-*` extraction
- at least one repo-local workplan exists for a first `reef-*` rollout or substrate cleanup
- this master workplan can then govern sequencing rather than holding all implementation detail itself
2026-07-25: Added the first repo-local follow-up workplans:
- `railiance-cluster/workplans/RAIL-BS-WP-0012-rail-kubernetes-extraction.md`
- `railiance-platform/workplans/RAILIANCE-WP-0012-rapp-openbao-extraction-boundary.md`
- `railiance-infra/workplans/RAIL-HO-WP-0007-first-reef-rollout-and-s1-canonicalization.md`
## Exit Criteria
- [x] The architecture baseline is recorded in `railiance-master`
- [x] `railiance-master` is registered and synced with State Hub
- [x] `rail-kubernetes` boundary is written and approved
- [x] first `rapp-*` candidates and split order are written and approved
- [x] first `reef-*` rollout decision is written and approved
- [x] Fabric and State Hub adaptation requirements are written
- [x] first migration-wave follow-up workplans exist in the affected repos
## Notes
This workplan is intended to stay small at the framework level. Once a split or
migration has a concrete owner, the implementation detail should move into the
relevant repo-local workplan rather than expanding this file into a second
control plane.