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.
214 lines
7.9 KiB
Markdown
214 lines
7.9 KiB
Markdown
# First-Wave `rapp-*` Candidates
|
|
|
|
Date: 2026-07-25
|
|
Updated: 2026-08-13 (RMASTER-WP-0021-T08)
|
|
|
|
## Purpose
|
|
|
|
Choose and order the first `rapp-*` candidates for Railiance, and record
|
|
what was actually built against that plan.
|
|
|
|
`rapp-*` repos are for managed workload packaging and scaffolding. They are
|
|
not new ownership homes. The decision is not "which repos are important?"
|
|
but "which workloads already have a strong enough package boundary to become
|
|
first-class managed wrappers without weakening ownership?"
|
|
|
|
## What Was Actually Built
|
|
|
|
The 2026-07-25 plan was:
|
|
|
|
1. `rapp-openbao`
|
|
2. `rapp-vergabe-teilnahme`
|
|
3. `rapp-forgejo` after the forge runtime target stabilized
|
|
|
|
What exists on 2026-08-13:
|
|
|
|
| Repo | Status | How it arrived |
|
|
|---|---|---|
|
|
| `rapp-openbao` | live, declared | as planned |
|
|
| `rapp-postgres` | live, declared | ad hoc, from the need for a shared platform database |
|
|
| `rapp-qonto` | live, declared | ad hoc, from the need to run Qonto on `rail-knative` |
|
|
| `rapp-vergabe-teilnahme` | never built | the user-facing wrapper it existed to prove is unproven |
|
|
| `rapp-forgejo` | not built | forge placement is now decided (`d151d817`): workload to `rapp-forgejo`, layer to S4 |
|
|
| `rapp-secrets-engine` | exists, undeclared | family prefix, no `declarations/` |
|
|
| `rapp-tenant-engine` | exists, undeclared | family prefix, no `declarations/` |
|
|
| `rapp-user-engine` | exists, undeclared | family prefix, no `declarations/` |
|
|
|
|
The platform-service pattern is proven twice (`rapp-openbao`,
|
|
`rapp-postgres`). The user-facing wrapper pattern is unproven. That is the
|
|
consequence of building to immediate need instead of to the planned second
|
|
slot.
|
|
|
|
The operator decision that follows is: build `rapp-vergabe-teilnahme` to
|
|
prove the user-facing shape before mass extraction. Do not treat the three
|
|
engine repos, or any other live undeclared workload, as a substitute for
|
|
that proof.
|
|
|
|
## Selection Criteria
|
|
|
|
The first-wave candidates should satisfy most of the following:
|
|
|
|
- stable workload identity
|
|
- clear upstream or source workload boundary
|
|
- clear Kubernetes package surface already visible in Git
|
|
- explicit runtime-secret and dependency handling
|
|
- deploy, verify, and recover behavior already described
|
|
- low ambiguity between packaging ownership and domain ownership
|
|
- good demonstration value for later `rapp-*` extractions
|
|
|
|
## Planned First-Wave Assessment (2026-07-25)
|
|
|
|
The original assessment is kept below so the gap between plan and outcome
|
|
stays visible. It is not the current worklist.
|
|
|
|
### 1. OpenBao from `railiance-platform`
|
|
|
|
Assessment: **choose first** — and this one landed.
|
|
|
|
Why it fitted:
|
|
|
|
- It is a clear third-party upstream product with durable identity.
|
|
- The workload already had a substantial Railiance packaging surface.
|
|
- The repo already distinguished the OpenBao workload from the wider S3
|
|
platform policy that consumes it.
|
|
- It proved that `rapp-*` is not only for user-facing apps.
|
|
|
|
What stayed in `railiance-platform`: secrets custody as a platform
|
|
capability, lane policy, credential approval, and cross-workload
|
|
secret-delivery conventions.
|
|
|
|
### 2. Forge workload from `railiance-forge`
|
|
|
|
Assessment then: **defer from first wave**. That deferral still holds as a
|
|
first-wave fact, but the placement question is now closed. Decision
|
|
`d151d817` puts the Forgejo workload in `rapp-forgejo` and the layer
|
|
responsibility (runner placement and labels, registry retention, artifact
|
|
lifecycle, package credentials) in S4 `railiance-enablement`.
|
|
`railiance-forge` is placed, not retired. Gitea is confirmed replaced.
|
|
|
|
`rapp-forgejo` is therefore a wave-2 package with a decided home, not an
|
|
open placement debate.
|
|
|
|
### 3. User-facing S5 workload from `railiance-apps`
|
|
|
|
Assessment then: **choose `vergabe-teilnahme` for wave 1**. It was never
|
|
built. The reasons it was the right user-facing slot remain: one named
|
|
workload, explicit release surface, secret handling that is not entangled
|
|
with shared platform semantics. That is why it is still the package that
|
|
must prove the user-facing shape before mass extraction.
|
|
|
|
`reuse-surface` remains the strongest follow-on self-built service
|
|
candidate. `core-hub` should still wait.
|
|
|
|
## Wave-2 Inventory
|
|
|
|
Grouped by bounded context, in the composition shape from ADR-0007. These
|
|
are indicative packages, not created repos. A package is listed only where
|
|
members share rollout and rollback fate. Names that already exist as
|
|
undeclared `rapp-*` repos are marked so they are not invented twice.
|
|
|
|
### `rapp-vergabe-teilnahme` — prove the user-facing wrapper
|
|
|
|
```yaml
|
|
composition:
|
|
purpose: Package the Vergabe Teilnahme application as a managed user-facing workload.
|
|
member_repos:
|
|
- repo: vergabe-teilnahme
|
|
role: application source and chart
|
|
deployables: [vergabe-teilnahme]
|
|
```
|
|
|
|
Build this before any further user-facing extraction.
|
|
|
|
### `rapp-forgejo` — decided placement
|
|
|
|
```yaml
|
|
composition:
|
|
purpose: Package Forgejo, its runner, and the package registry as one managed forge.
|
|
member_repos:
|
|
- repo: railiance-forge
|
|
role: operational helm, manifests, runner, and registry assets
|
|
deployables: [forgejo, forgejo-runner, forgejo-registry]
|
|
```
|
|
|
|
Layer concerns stay in `railiance-enablement`. Do not create `rapp-gitea`.
|
|
|
|
### `rapp-netkingdom-identity` — identity bounded context
|
|
|
|
```yaml
|
|
composition:
|
|
purpose: Package NetKingdom identity — users, tenants, SSO, MFA, and authorization — as one rollback unit.
|
|
member_repos:
|
|
- repo: user-engine
|
|
role: user identity
|
|
deployables: [user-engine]
|
|
- repo: tenant-engine
|
|
role: tenant identity
|
|
deployables: [tenant-engine]
|
|
- repo: key-cape
|
|
role: SSO and MFA
|
|
deployables: [keycloak]
|
|
- repo: flex-auth
|
|
role: authorization decisions
|
|
deployables: [flex-auth]
|
|
```
|
|
|
|
`rapp-user-engine` and `rapp-tenant-engine` already exist as undeclared
|
|
prefix claims. They are not separate rapps under grouped-by-bounded-context
|
|
granularity. Their owners should either fold them into this package or
|
|
justify an independent rollback fate and then declare them. `rapp-secrets-engine`
|
|
is the same question against `rapp-openbao` / `railiance-platform`, not a
|
|
fourth identity member.
|
|
|
|
### `rapp-coulomb-social`
|
|
|
|
```yaml
|
|
composition:
|
|
purpose: Package the Coulomb Social application as a managed user-facing workload.
|
|
member_repos:
|
|
- repo: coulomb-social
|
|
role: application
|
|
deployables: [coulomb-social]
|
|
```
|
|
|
|
Do not start this until `rapp-vergabe-teilnahme` has proven the user-facing
|
|
shape.
|
|
|
|
### `rapp-helix-forge`
|
|
|
|
```yaml
|
|
composition:
|
|
purpose: Package the Helix Forge methodological workspace as a managed workload.
|
|
member_repos:
|
|
- repo: helix-forge
|
|
role: capability-first development ecosystem
|
|
deployables: [helix-forge]
|
|
```
|
|
|
|
Helix Forge is a different lineage from `railiance-forge`. It is not a
|
|
rename of `rapp-forgejo`.
|
|
|
|
## Risks To Watch
|
|
|
|
- If `rapp-openbao` absorbs platform-wide policy and credential-governance
|
|
logic, the wrapper becomes a shadow S3 repo.
|
|
- If `rapp-postgres` is asked to mint the backup account, key, or bucket, a
|
|
consumed destination is being mistaken for package ownership. The bucket
|
|
is `resource-control` (`RESOURCE-WP-0002`); the credential is
|
|
`railiance-platform` OpenBao custody; purchase is decision `9c21c0e0`.
|
|
- If `rapp-vergabe-teilnahme` absorbs generic S5 onboarding, it weakens
|
|
`railiance-apps`.
|
|
- If the three undeclared engine repos are treated as rapps without a
|
|
declaration, the coverage check cannot see them and will list their live
|
|
deployables as uncovered.
|
|
- If wave-2 extraction starts before the user-facing wrapper is proven,
|
|
Railiance will mass-produce the platform-service shape and still not know
|
|
whether the other shape works.
|
|
|
|
## Outcome
|
|
|
|
Wave 1 proved the platform-service wrapper, twice, and did not prove the
|
|
user-facing wrapper. The next package that must exist is
|
|
`rapp-vergabe-teilnahme`. Everything else in the wave-2 inventory waits on
|
|
that proof, on owner-side declaration of the three undeclared prefix
|
|
claims, and on the schema migration owned by `RAILIANCE-WP-0015-T02`.
|