repo-manager/workplans/RMGR-WP-0006-railiance-app-wrapper-setup.md
tegwick 5197aa7425 docs: add Railiance app wrapper best-practice guide
Record how rapp-* repos wrap first-party apps for Railiance, using
user-engine as the pilot. Opens RMGR-WP-0006 (T01 done) and includes
fix-consistency ID writeback for WP-0004/0005/0006.
2026-08-18 12:18:45 +02:00

3.9 KiB
Raw Blame History

id type title domain repo status owner topic_slug created updated parent_project related state_hub_workstream_id
RMGR-WP-0006 workplan Railiance managed-app wrapper setup infotech repo-manager active grok infotech 2026-08-18 2026-08-18 prj-state-hub-retirement
RMGR-WP-0004
0d6d2ebf-4b74-4908-995c-17b8987ede05

Railiance managed-app wrapper setup

Goal

Give Repo Manager a governed path to set up rapp-<app> repositories so ordinary applications (starting with user-engine) can run on Railiance as managed workloads: declared, packaged, bound to a rail and reef, and operable without copying charts into railiance-apps.

This specializes RMGR-WP-0004 scaffolding for the rapp-* family. It does not move family schemas out of railiance-master, and it does not operate the cluster.

Practice and remaining work are structured in docs/RailianceAppDeploymentGuide.md.

Record the wrapper best-practice guide

id: RMGR-WP-0006-T01
status: done
priority: high
state_hub_task_id: "cb1e2e4e-9aef-4669-89f6-86ea8512b7d2"

Survey live rails (rail-kubernetes, rail-knative), reefs (reef-railiance, reef-storage), existing rapps, and the user-engine / rapp-user-engine pair. Write docs/RailianceAppDeploymentGuide.md as the best-practice shape and the work breakdown for later scaffolder phases.

Result (2026-08-18): guide written. Pilot target is rapp-user-engine (empty stub). Copy targets are rapp-policy-nexus and rapp-openbao, not drifted rapp-qonto.

Bootstrap the user-engine wrapper to declared

id: RMGR-WP-0006-T02
status: todo
priority: high
state_hub_task_id: "f0e53954-403a-4e2c-b39f-0bab00eed3cc"

Fill rapp-user-engine with the bootstrap baseline and a schema-valid declarations/rapp.yaml at readiness_state: declared (or draft if image/consumer pins are still missing). Follow the worked example in the guide. Validate with railiance-master/tools/validate-family-declarations.py --root ...

Do not place the rapp (bound_reefs stays empty) and do not set public exposure.

Generate the Kubernetes package skeleton

id: RMGR-WP-0006-T03
status: todo
priority: high
state_hub_task_id: "3ba6828e-7514-4f4d-a1d3-54134e039f55"

Add the Helm chart, Makefile operator targets, railiance/app.toml, and runtime-contract doc described in the guide, derived from user-engine port, health paths, Containerfile user, and documented env/secret names.

make render and make lint must pass with dummy digests. No cluster deploy in this task.

Draft platform handoffs

id: RMGR-WP-0006-T04
status: todo
priority: medium
state_hub_task_id: "0c2846d9-5db2-4b97-becd-0367b5737188"

Draft the rapp-postgres consumer and secret-reference list for user-engine. Apply them only in the owning repos (rapp-postgres, railiance-platform) after those owners accept the draft. This repo records the request; it does not become the credential home.

Implement rmgr rapp scaffolding

id: RMGR-WP-0006-T05
status: todo
priority: high
state_hub_task_id: "6cf89776-ff31-4dd1-aa9a-39474fc387aa"

Turn P1P4 from the guide into Repo Manager commands (rapp init, rapp skeleton, rapp validate) that are idempotent, secret-free, and refuse to invent rails, reefs, or package types. Pilot by regenerating the user-engine wrapper (or the next engine stub) without hand-editing the baseline files.

Depends on the shape proven in T02T03 and on RMGR-WP-0004 scaffolding ownership.

Residuals

  • rapp-secrets-engine and rapp-tenant-engine remain undeclared stubs; wrap them only after the user-engine path validates.
  • rapp-vergabe-teilnahme extraction stays a railiance-apps residual (ADR-0003). This workplan does not close that item.
  • Schema enum helm-managed-application would be a railiance-master change if the platform-service name proves misleading.