feat: allow provider-delegated reefs with no rail

Object-storage reefs omit primary_rail and hosted_rails. Scaleway
operates S3; reef-storage only names the boundary. Finish
RMASTER-WP-0022.
This commit is contained in:
codex 2026-08-14 15:53:30 +02:00
parent 82b7b7295d
commit 654bbe891b
8 changed files with 67 additions and 32 deletions

View file

@ -110,8 +110,11 @@ Schema: [`schemas/reef.schema.json`](../schemas/reef.schema.json)
`bound_rapps` is a derived projection of every rapp whose `bound_reefs`
lists this reef. It is not a hand-maintained registry. A reef may omit the
field; if it keeps the field, the validator requires an exact match against
the projection. `primary_rail` must appear in `hosted_rails`. Hosting a rail
or binding a rapp is topology, not readiness — see ADR-0006.
the projection. A compute reef that hosts rails must set `primary_rail`
and list it in `hosted_rails`. A provider-delegated reef (for example
`reef-storage`, `substrate_kind: object-storage`) omits both: there is no
execution contract to host. Hosting a rail or binding a rapp is topology,
not readiness — see ADR-0006.
## Required Boundary Rules