187 lines
5.7 KiB
Markdown
187 lines
5.7 KiB
Markdown
# Fabric And State Hub Adaptation For `rail-*`, `rapp-*`, And `reef-*`
|
|
|
|
Date: 2026-07-25
|
|
|
|
## Purpose
|
|
|
|
List the minimum adaptation requirements so rails, `rapp`s, and reefs become
|
|
visible ecosystem entities rather than only naming conventions.
|
|
|
|
This is a requirements document, not an implementation plan for one repo.
|
|
|
|
## Current Gaps
|
|
|
|
The current ecosystem tooling still reflects the older repo shape.
|
|
|
|
Observed gaps:
|
|
|
|
- `railiance-fabric/registry/railiance-repos.yaml` does not yet onboard
|
|
`railiance-master` or `railiance-forge`.
|
|
- Fabric has a `kubernetes-runtime` capability type, but no first-class
|
|
vocabulary for execution rails, managed workload packages, or substrate
|
|
boundaries.
|
|
- `railiance-apps` is modeled as one aggregate S5 release surface rather than a
|
|
future set of `rapp-*` package repos.
|
|
- State Hub registration and generated repo summaries do not expose repo family
|
|
or rail/rapp/reef-specific metadata.
|
|
|
|
If left unchanged, Git will know the new taxonomy before the coordination and
|
|
graph systems do.
|
|
|
|
## Minimum Questions The Systems Must Answer
|
|
|
|
After adaptation, the systems should be able to answer at least:
|
|
|
|
- which `rail-*` repos exist?
|
|
- which rail is the default base rail?
|
|
- which `rapp-*` packages support which rails?
|
|
- which reefs host which rails?
|
|
- which reefs bind or approve which `rapp`s?
|
|
- which ownership repo remains responsible for a given rail, `rapp`, or reef?
|
|
|
|
## Minimal State Hub Requirements
|
|
|
|
State Hub does not need a second work-tracking model, but it does need better
|
|
repo metadata.
|
|
|
|
### Required repo metadata
|
|
|
|
Add or derive the following repo-level concepts:
|
|
|
|
- `repo_family`: `ownership` | `rail` | `rapp` | `reef`
|
|
- `ownership_repo`: canonical owning `railiance-*` repo when the repo family is
|
|
not `ownership`
|
|
- `primary_rail`: for reefs or workloads where one rail is the declared default
|
|
- `supported_rails`: for `rapp-*` repos
|
|
- `substrate_kind`: for `reef-*` repos, such as `server`, `cluster`,
|
|
`workstation-group`, or `edge`
|
|
|
|
These fields may start in `.repo-classification.yaml` or a repo-local
|
|
companion metadata file if the classification schema should stay smaller.
|
|
|
|
### Required indexing behavior
|
|
|
|
- State Hub should index `rail-*`, `rapp-*`, and `reef-*` repos like any other
|
|
repo for workplans, tasks, and progress.
|
|
- Generated repo briefs should display repo family and any declared ownership
|
|
repo or primary rail when available.
|
|
- Repo search and inventory views should be filterable by repo family.
|
|
|
|
### Not required
|
|
|
|
- no separate workplan model for rails, `rapp`s, or reefs
|
|
- no special task state machine
|
|
- no custom approval workflow just because a repo uses one of the new prefixes
|
|
|
|
## Minimum Fabric Requirements
|
|
|
|
Fabric needs enough typed vocabulary to model the new repo families without
|
|
waiting for a perfect new object taxonomy.
|
|
|
|
### Immediate onboarding requirements
|
|
|
|
- add `railiance-master` to `registry/railiance-repos.yaml`
|
|
- add `railiance-forge` to `registry/railiance-repos.yaml`
|
|
- be ready to add future `rail-*`, `rapp-*`, and `reef-*` repos as first-class
|
|
registered repositories
|
|
|
|
### Immediate modeling requirements
|
|
|
|
Fabric should add typed representation for:
|
|
|
|
- execution rails
|
|
- managed workload packages
|
|
- substrate boundaries
|
|
|
|
The minimum viable way to do that is:
|
|
|
|
- add repo-family-aware metadata in registration and graph export
|
|
- add new `service_type` values:
|
|
- `execution-rail`
|
|
- `managed-workload-package`
|
|
- `substrate-boundary`
|
|
- add one new capability type for rails:
|
|
- `workload-execution-contract`
|
|
|
|
This keeps the first rail queryable as a provider-like ecosystem object without
|
|
forcing `rapp`s and reefs into the wrong provider/consumer semantics.
|
|
|
|
### Relation requirements
|
|
|
|
Fabric needs explicit relations for:
|
|
|
|
- `supports_rail`: `rapp` -> `rail`
|
|
- `hosts_rail`: reef -> `rail`
|
|
- `binds_rapp`: reef -> `rapp`
|
|
- `governed_by`: rail/`rapp`/reef -> ownership repo
|
|
|
|
These relations may begin as projected registry edges even if the declaration
|
|
schema evolves later.
|
|
|
|
The important part is that the graph can answer the topology questions above.
|
|
|
|
## Minimum Repo-Local Declaration Requirements
|
|
|
|
Every future repo family needs a small, obvious declaration surface.
|
|
|
|
### `rail-*`
|
|
|
|
Minimum declaration concepts:
|
|
|
|
- rail id
|
|
- owning repo
|
|
- execution architecture
|
|
- substrate prerequisites
|
|
- supported rollout modes
|
|
- compatibility notes for participating `rapp`s
|
|
|
|
### `rapp-*`
|
|
|
|
Minimum declaration concepts:
|
|
|
|
- workload package id
|
|
- upstream or source workload identity
|
|
- owning repo
|
|
- supported rails
|
|
- runtime dependencies
|
|
- rollout, smoke, and rollback contract
|
|
|
|
### `reef-*`
|
|
|
|
Minimum declaration concepts:
|
|
|
|
- substrate id
|
|
- substrate kind
|
|
- lifecycle and criticality
|
|
- hosted rails
|
|
- bound or approved `rapp`s
|
|
- primary rail, if one exists
|
|
|
|
These declarations may begin as repo-local YAML files or be projected from
|
|
existing source files. The key requirement is that they are source-controlled
|
|
and ingestible.
|
|
|
|
## Compatibility Guidance
|
|
|
|
Do not block the repo-family rollout on a perfect Fabric redesign.
|
|
|
|
Recommended compatibility-first path:
|
|
|
|
1. register the repos and family metadata
|
|
2. add the minimum new service and relation vocabulary
|
|
3. let the first `rail-*`, `rapp-*`, and `reef-*` repos publish small
|
|
declaration files
|
|
4. ingest those declarations into Fabric and State Hub projections
|
|
5. only then decide whether stronger first-class schema kinds are needed
|
|
|
|
This avoids waiting for a large graph refactor before the architecture can move.
|
|
|
|
## Outcome
|
|
|
|
The minimal adaptation target is:
|
|
|
|
- State Hub understands which repo family a repo belongs to
|
|
- Fabric can show rails, `rapp`s, and reefs as typed ecosystem entities
|
|
- the graph can answer rail/package/substrate placement questions
|
|
- new repo families are coordinated by the same workplan and progress system as
|
|
the existing Railiance repos
|