feat: implement RMASTER-WP-0023 private-by-default exposure

Add the exposure contract, additive family schema fields, validator
checks and fixtures, the reef-railiance exception snapshot, and
routed intakes. Enforcement stays in the owning repos.
This commit is contained in:
codex 2026-08-15 20:08:37 +02:00
parent 6301798fab
commit 4a664533d3
24 changed files with 998 additions and 13 deletions

View file

@ -4,8 +4,8 @@ type: workplan
title: "Private-by-default exposure until production admission"
domain: financials
repo: railiance-master
status: active
owner: bernd
status: finished
owner: grok
topic_slug: railiance
planning_priority: high
planning_order: 23
@ -212,7 +212,7 @@ distinct.
```task
id: RMASTER-WP-0023-T02
status: todo
status: done
priority: high
state_hub_task_id: "96db2a2d-670c-4b98-b6f3-860f9b3009b3"
```
@ -236,11 +236,15 @@ substrate grant is invalid.
**Done when:** implementation repos can implement without inventing
vocabulary.
Completed 2026-08-15: `docs/exposure-posture-contract.md` names the
per-family reading, grant shape, fail-closed default, conflict rule,
6443 exclusion, and provider-delegated carve-out.
### T03 — Schema and validator
```task
id: RMASTER-WP-0023-T03
status: wait
status: done
priority: high
state_hub_task_id: "03070be7-925e-4aee-9938-85b03b8cbe37"
```
@ -268,11 +272,17 @@ Name the field so it cannot be confused with rapp
rapp that is not production-approved, and the testdata tree has good and
bad fixtures. Live sibling repos are unchanged.
Completed 2026-08-15: additive `exposure` on all three family schemas.
Validator rejects unapproved public rapps, missing grants, public rapps
on a private reef, port 6443, and public provider-delegated reefs.
Fixtures: `good-exposure` and `bad-exposure`. Live declarations omitted
the field and still validate.
### T04 — Exception snapshot for already-public surfaces
```task
id: RMASTER-WP-0023-T04
status: todo
status: done
priority: medium
state_hub_task_id: "6576cc7c-6c85-4d3b-b0cc-dfba4e9b4774"
```
@ -293,11 +303,16 @@ Out of scope: CoulombCore, shutdown plans, provider-native APIs.
**Done when:** every known public surface on `reef-railiance` is either a
snapshot grant or a routed task to close it.
Completed 2026-08-15:
`docs/evidence/reef-railiance-exposure-snapshot-2026-08-15.md`.
Grants: Forgejo, Coulomb Social, reuse-surface, Nydus 2224. Routed:
`bao.coulomb.social` verify/close; CoulombCore names stay out.
### T05 — Route enforcement work
```task
id: RMASTER-WP-0023-T05
status: wait
status: done
priority: high
state_hub_task_id: "d780df59-c67d-486e-8e8a-15e5043cd513"
```
@ -318,6 +333,12 @@ there from this repo.
**Done when:** each owning repo has a workplan or an accepted intake,
with a back-link to this ID.
Completed 2026-08-15: intakes in
`docs/exposure-enforcement-intakes.md`. State Hub messages sent to
`rail-kubernetes`, `railiance-cluster`, `reef-railiance`,
`railiance-infra`, and `railiance-enablement`. Owning-repo agents file
the workplans.
## Suggested review order
1. T01 (human) — accept or change the recommended table.
@ -328,6 +349,6 @@ with a back-link to this ID.
## Outcome
T01 accepted 2026-08-15 (`status: active`). ADR-0008 is the record.
Next: T02 contract and T04 exception snapshot. Implementation stays out
of this repo.
Finished 2026-08-15. ADR-0008, the exposure contract, additive schemas,
validator fixtures, the reef-railiance snapshot, and routed intakes are
in this repo. Packet-level enforcement stays with the owning repos.