docs(RMASTER-WP-0025): define universal rapp coverage
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a02b90-83bf-75c2-81c8-aa705414e4d4
This commit is contained in:
parent
2b09639eac
commit
51aa55dcb2
4 changed files with 186 additions and 2 deletions
|
|
@ -9,6 +9,7 @@
|
||||||
| Kind | ID | Status | Lane | Source |
|
| Kind | ID | Status | Lane | Source |
|
||||||
| --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- |
|
||||||
| workplan | RMASTER-WP-0020 | blocked | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
| workplan | RMASTER-WP-0020 | blocked | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
||||||
|
| workplan | RMASTER-WP-0025 | finished | — | workplans/RMASTER-WP-0025-universal-rapp-workload-coverage.md |
|
||||||
| task | RMASTER-WP-0020-T01 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
| task | RMASTER-WP-0020-T01 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
||||||
| task | RMASTER-WP-0020-T02 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
| task | RMASTER-WP-0020-T02 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
||||||
| task | RMASTER-WP-0020-T03 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
| task | RMASTER-WP-0020-T03 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
||||||
|
|
@ -18,3 +19,6 @@
|
||||||
| task | RMASTER-WP-0020-T07 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
| task | RMASTER-WP-0020-T07 | done | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
||||||
| task | RMASTER-WP-0020-T08 | wait | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
| task | RMASTER-WP-0020-T08 | wait | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
||||||
| task | RMASTER-WP-0020-T09 | progress | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
| task | RMASTER-WP-0020-T09 | progress | — | workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md |
|
||||||
|
| task | RMASTER-WP-0025-T01 | done | — | workplans/RMASTER-WP-0025-universal-rapp-workload-coverage.md |
|
||||||
|
| task | RMASTER-WP-0025-T02 | done | — | workplans/RMASTER-WP-0025-universal-rapp-workload-coverage.md |
|
||||||
|
| task | RMASTER-WP-0025-T03 | done | — | workplans/RMASTER-WP-0025-universal-rapp-workload-coverage.md |
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@
|
||||||
id: RMASTER-ADR-0007
|
id: RMASTER-ADR-0007
|
||||||
title: "Rapp Declaration Contract"
|
title: "Rapp Declaration Contract"
|
||||||
status: accepted
|
status: accepted
|
||||||
revision: "accepted-1"
|
revision: "accepted-2"
|
||||||
owner: railiance-master
|
owner: railiance-master
|
||||||
last_reviewed: "2026-08-13"
|
last_reviewed: "2026-08-23"
|
||||||
review_interval: 6m
|
review_interval: 6m
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -64,6 +64,27 @@ dimensions. Decision `d07ee5f9` already recorded this from the
|
||||||
fields. Reef `bound_rapps` is a derived projection of `rapp.bound_reefs`,
|
fields. Reef `bound_rapps` is a derived projection of `rapp.bound_reefs`,
|
||||||
not a hand-maintained registry.
|
not a hand-maintained registry.
|
||||||
|
|
||||||
|
5. **Coverage includes every managed running deployable.** Application,
|
||||||
|
operational, and tooling runtimes participate in the same exactly-one-rapp
|
||||||
|
invariant when they are installed, scheduled, or otherwise operated as a
|
||||||
|
managed deployable. This includes a managed one-shot Job; it does not turn
|
||||||
|
a human command or approval act into a workload. Human access, credential
|
||||||
|
patterns, broker actions, one-off operational acts, and infrastructure
|
||||||
|
resources that are not workloads retain their native actor, lane, activity,
|
||||||
|
or resource identity.
|
||||||
|
|
||||||
|
A running deployable that predates rapp extraction is migration debt. Until
|
||||||
|
an authoritative declaration claims it, workload-based controls report it
|
||||||
|
as `unknown`; they do not infer a rapp from its repository, namespace, path,
|
||||||
|
labels, or apparent owner. A subject explicitly established as not being a
|
||||||
|
workload is `not-applicable`. `unknown` and `not-applicable` are different
|
||||||
|
outcomes and omission must not collapse them.
|
||||||
|
|
||||||
|
Railiance Master remains the sole owner of the normative rapp vocabulary and
|
||||||
|
schemas. Consumer catalogs may store explicit references and integration
|
||||||
|
owners may resolve them, but neither creates a parallel declaration surface
|
||||||
|
or copies rapp metadata as another source of truth.
|
||||||
|
|
||||||
The detailed shapes, including the single normative form of the rollout,
|
The detailed shapes, including the single normative form of the rollout,
|
||||||
smoke, and rollback contracts, live in the schema files and
|
smoke, and rollback contracts, live in the schema files and
|
||||||
`schemas/README.md`.
|
`schemas/README.md`.
|
||||||
|
|
@ -81,6 +102,12 @@ smoke, and rollback contracts, live in the schema files and
|
||||||
`rapp-user-engine`) carry the family prefix and no declaration. They are
|
`rapp-user-engine`) carry the family prefix and no declaration. They are
|
||||||
visible to the validator as undeclared and must be declared, renamed, or
|
visible to the validator as undeclared and must be declared, renamed, or
|
||||||
retired by their owners.
|
retired by their owners.
|
||||||
|
- Operational and tooling deployables are not exempt from family coverage.
|
||||||
|
Existing pre-rapp runtimes may continue during migration, but their workload
|
||||||
|
identity remains visibly `unknown` to controls until declared.
|
||||||
|
- Runtime inventory is still required to prove universal coverage. Repository
|
||||||
|
discovery alone cannot establish that every running unit has exactly one
|
||||||
|
authoritative rapp.
|
||||||
- Calling the validator from `fix-consistency` still waits on
|
- Calling the validator from `fix-consistency` still waits on
|
||||||
`the-custodian` admitting the family prefixes into the classification
|
`the-custodian` admitting the family prefixes into the classification
|
||||||
standard. That sequencing is not this repo's.
|
standard. That sequencing is not this repo's.
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,39 @@ deployable belong to exactly one rapp?* That single check catches stale reef
|
||||||
bindings, unpackaged live workloads, and the workload-count gap at once. It is
|
bindings, unpackaged live workloads, and the workload-count gap at once. It is
|
||||||
what turns this schema from a one-shot lint into a standing control loop.
|
what turns this schema from a one-shot lint into a standing control loop.
|
||||||
|
|
||||||
|
## Coverage boundary
|
||||||
|
|
||||||
|
Every **managed running deployable** needs exactly one authoritative rapp. The
|
||||||
|
rule applies equally to application services and to operational or tooling
|
||||||
|
runtimes that participate in controls. A long-lived controller, scheduled
|
||||||
|
tool, or managed one-shot Job is still a deployable; it is not exempt because
|
||||||
|
its purpose is operational.
|
||||||
|
|
||||||
|
Not every operational subject is a workload. Human access, credential
|
||||||
|
patterns, broker actions, approval records, one-off commands, and
|
||||||
|
infrastructure resources retain their native actor, lane, activity, decision,
|
||||||
|
or resource identity when they are not themselves managed deployables. Do not
|
||||||
|
create a fake rapp merely to make a consumer join total.
|
||||||
|
|
||||||
|
Consumers must preserve three distinct outcomes:
|
||||||
|
|
||||||
|
| Outcome | Meaning | Required handling |
|
||||||
|
|---|---|---|
|
||||||
|
| `resolved` | Exactly one authoritative rapp claims the managed deployable. | Use its explicit rapp and workload reference. |
|
||||||
|
| `unknown` | The subject should be a workload, but no unique declaration resolves. | Report migration debt; do not infer identity. |
|
||||||
|
| `not-applicable` | The subject is explicitly not a workload. | Retain its native non-workload identity. |
|
||||||
|
|
||||||
|
A pre-rapp running deployable is therefore migration debt and remains
|
||||||
|
`unknown` to workload-based controls until declared. Repository names,
|
||||||
|
namespaces, paths, labels, and apparent ownership are evidence inputs, not
|
||||||
|
fallback identity rules.
|
||||||
|
|
||||||
|
Railiance Master owns this vocabulary and the normative family schemas.
|
||||||
|
Package owners author their declarations; integration owners may discover,
|
||||||
|
validate, index, project, and resolve explicit references. They must not create
|
||||||
|
a parallel generic workload declaration or copy rapp metadata into a second
|
||||||
|
source of truth.
|
||||||
|
|
||||||
Rapp bounded context is therefore its own dimension, derived neither from
|
Rapp bounded context is therefore its own dimension, derived neither from
|
||||||
Forgejo organizations nor from State Hub domains. A repo lives in exactly one
|
Forgejo organizations nor from State Hub domains. A repo lives in exactly one
|
||||||
Forgejo org, so `org:repo` is one-to-many, and a many-to-many grouping cannot
|
Forgejo org, so `org:repo` is one-to-many, and a many-to-many grouping cannot
|
||||||
|
|
|
||||||
120
workplans/RMASTER-WP-0025-universal-rapp-workload-coverage.md
Normal file
120
workplans/RMASTER-WP-0025-universal-rapp-workload-coverage.md
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
---
|
||||||
|
id: RMASTER-WP-0025
|
||||||
|
type: workplan
|
||||||
|
title: "Universal rapp workload coverage"
|
||||||
|
domain: financials
|
||||||
|
repo: railiance-master
|
||||||
|
status: finished
|
||||||
|
owner: codex
|
||||||
|
topic_slug: universal-rapp-workload-coverage
|
||||||
|
created: "2026-08-23"
|
||||||
|
updated: "2026-08-23"
|
||||||
|
---
|
||||||
|
|
||||||
|
# RMASTER-WP-0025 - Universal rapp workload coverage
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Make the normative rapp contract explicit that every managed running
|
||||||
|
deployable belongs to exactly one rapp, including operational and tooling
|
||||||
|
workloads that participate in controls, without inventing workload identity for
|
||||||
|
subjects that are not workloads.
|
||||||
|
|
||||||
|
## Source and disposition
|
||||||
|
|
||||||
|
Repo Manager published owner interface
|
||||||
|
`helixforge.workloads.rapp-coverage.v1` for `RMGR-WP-0010-T05` at source
|
||||||
|
revision `890f3b05b596047a31605c544c56ed8a4f011868`. Railiance Master approves
|
||||||
|
that interface as supplied. The interface preserves this repository as the
|
||||||
|
sole owner of the normative rapp vocabulary and schema; Repo Manager remains
|
||||||
|
the integration, indexing, and reference-resolution owner.
|
||||||
|
|
||||||
|
## Boundaries
|
||||||
|
|
||||||
|
- Do not create a parallel generic workload declaration surface.
|
||||||
|
- Do not require one rapp per process where deployables share rollout and
|
||||||
|
rollback fate.
|
||||||
|
- Do not turn human access, credential patterns, broker actions, operational
|
||||||
|
approvals, or infrastructure resources into fake workloads.
|
||||||
|
- Distinguish a managed one-shot deployable from a one-off operational action:
|
||||||
|
the former needs rapp coverage; the latter retains its native activity or
|
||||||
|
actor identity.
|
||||||
|
- Do not infer missing workload ownership from a repository name, namespace,
|
||||||
|
path, label, or other convention.
|
||||||
|
|
||||||
|
## T01 - Review and accept the owner interface
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RMASTER-WP-0025-T01
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Validate Repo Manager's interface bundle for owner `railiance-master`, inspect
|
||||||
|
the source ADR and current Railiance Master contract, and record the exact
|
||||||
|
source revision and disposition.
|
||||||
|
|
||||||
|
Done when the file-backed workplan records `approved`, `amended`, or `rejected`
|
||||||
|
without reconstructing a duplicate Repo Manager task.
|
||||||
|
|
||||||
|
Completed 2026-08-23. The interface validates cleanly and is approved without
|
||||||
|
amendment. Its objective already follows ADR-0007's distinct repo-to-rapp and
|
||||||
|
deployable-to-rapp cardinalities; the required change is a boundary
|
||||||
|
clarification, not a schema fork.
|
||||||
|
|
||||||
|
## T02 - Clarify the normative coverage boundary
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RMASTER-WP-0025-T02
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Clarify ADR-0007 and the rapp authoring guide so they answer all of the
|
||||||
|
following directly:
|
||||||
|
|
||||||
|
- operational and tooling deployables require rapp coverage;
|
||||||
|
- every managed running deployable resolves to exactly one rapp;
|
||||||
|
- an uncovered pre-rapp deployable is migration debt and remains `unknown` to
|
||||||
|
workload controls until declared;
|
||||||
|
- non-workload operational subjects are `not-applicable` and retain native
|
||||||
|
identity;
|
||||||
|
- schema vocabulary remains authoritative only in Railiance Master.
|
||||||
|
|
||||||
|
Done when the coverage, migration-debt, and not-applicable states are distinct
|
||||||
|
without changing the declaration shape.
|
||||||
|
|
||||||
|
Completed 2026-08-23. ADR-0007 revision `accepted-2` and `schemas/README.md`
|
||||||
|
now define universal managed-deployable coverage, explicitly distinguish a
|
||||||
|
managed one-shot Job from an operational act, and preserve `resolved`,
|
||||||
|
`unknown`, and `not-applicable` as separate outcomes. The declaration schema
|
||||||
|
shape is unchanged.
|
||||||
|
|
||||||
|
## T03 - Verify compatibility and hand the ruling back
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RMASTER-WP-0025-T03
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the family validator self-test and the interface's two named declaration
|
||||||
|
checks. Notify Repo Manager with the workplan/task identifiers, exact source
|
||||||
|
revision, disposition, and verification result.
|
||||||
|
|
||||||
|
Done when existing valid rapp declarations still validate and
|
||||||
|
`RMGR-WP-0010-T05` can consume the authoritative ruling without copying the
|
||||||
|
vocabulary.
|
||||||
|
|
||||||
|
Completed 2026-08-23. Repo Manager's owner-interface validator reports one
|
||||||
|
matching interface and zero errors. The family validator self-test passes, and
|
||||||
|
both named repository checks (`rapp-issue-core` and `rapp-qonto`) report 14
|
||||||
|
declarations, zero errors, and the same informational derived-reef warning.
|
||||||
|
The completion handoff is sent after the file-backed result is committed.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
The owner interface is approved and implemented. Operational and tooling
|
||||||
|
deployables have no exemption from the exactly-one-rapp invariant;
|
||||||
|
non-workload subjects retain native identity; uncovered managed deployables
|
||||||
|
remain visible migration debt rather than receiving inferred identity.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue