Handle becomes secret:railiance-platform/backup. IAM application is resource-control; policy and API key are Scoped backup access.
4.8 KiB
RESOURCE-WP-0002 T03 — primary object-store selection
Date: 2026-08-14
Status: approved and purchased — cost alert still human
Resource: resource:platform:audit-storage
Procuring / consuming entity: entity:railiance (self-use, no 20 % markup)
Operating reef: reef-storage (not reef-railiance)
Human financial authority approved the purchase in session 2026-08-14
(“lets do it”, then “key into OpenBao first”). Bootstrap key is in OpenBao
(platform/workloads/railiance/scaleway/bootstrap, KV v2). After the
Object Storage policy attached, list/get succeeded. Private bucket
railiance-platform-pg-backup exists in nl-ams (created
2026-08-14T16:21:56Z), versioning on, 30-day lifecycle applied, ACL
owner-only. Live attributes are in
reef-storage/substrate/object-stores/platform-audit-storage.yaml.
Founder set a Scaleway billing alert (email). Scaleway has no euro
hard-stop that refuses usage; that gap is accepted. Scoped backup key
is T04.
Recommendation
| Role | Choice | Why |
|---|---|---|
| Primary | Scaleway Object Storage, Standard Multi-AZ, region nl-ams (NL, EU) |
Only A/B/C candidate that is orderable, S3/SigV4 documented, Multi-AZ, published durability, managed encryption at rest, and an independent failure domain from Host Europe railiance01. Lowest comparable 320 GB running cost among managed options that meet acceptance. |
| Independent secondary copy | Host Europe Backup Storage (SFTP/SCP) or the existing governed Nextcloud lane (T06) | Not S3; not a Barman primary. Keeps a second copy off Scaleway and off the same API credential. |
Do not put the primary bucket on reef-railiance. S3 is a
provider-delegated capability; reef-storage is the substrate.
Ranking (A / B / C)
Evidence: demand/cost model 2026-08-10, expanded comparison 2026-08-10, due diligence 2026-08-10. Labor €60/h. Tax excluded. Running totals at the normalized 320 GB + 5 GB restore-drill point.
| Criterion | A Host Europe Cloud Storage | B Scaleway Multi-AZ nl-ams |
C Hetzner Object Storage |
|---|---|---|---|
| Total cost (320 GB) | unknown (no current S3 quote) | €65.14/mo (€5.14 infra + €60 labor) | €96.49/mo (€6.49 min + €90 labor) |
| Compatibility (CNPG/Barman S3) | unknown / not orderable on evidence | documented S3 + SigV4; live preflight still required | documented S3; live preflight still required |
| Resilience | same provider as compute | different provider; Multi-AZ; 99.999999999% durability claim | different provider; no quantified storage SLA |
| Sovereignty | DE if it existed | NL / EU | DE / EU |
| Operational effort | unknown | 1 h/mo planned; no rail to run | 1.5 h/mo; SSE-C custody if we accept no default at-rest encryption |
| Exit cost | unknown | egress €0.01/GB after 75 GB free + 4 h labor | inside 1 TB included until quota exceeded |
| Blocking gap | current S3 not confirmed orderable | live Barman preflight; contract/tax on the paying account | no default at-rest encryption (SSE-C only) |
Self-managed Garage on 2–3 VMs is €240–€336/mo at 320 GB and fails closed before month-12 base volume. It is not a primary candidate at this workload.
What we are buying (if approved)
- Product: Scaleway Standard Multi-AZ Object Storage
- Region:
nl-ams - Commitment: none (usage-based)
- Payer: Railiance (
entity:railiance); transfer price = delivered cost - Public access: disabled
- Identity: narrowest key, bucket/prefix only
- Versioning: on
- Lifecycle: 30-day recovery window (match demand)
- Cost alert: on the Scaleway project
- Owner in inventory:
resource-control - Attribute home:
reef-storage/substrate/object-stores/platform-audit-storage.yaml - Credential home (after T04):
secret:railiance-platform/backup - Consumer potential:
rapp-postgres - Consumer actual: none until WAL flows
What human financial authority must approve
- Create or reuse a Scaleway project paid as Railiance (or GmbH Hauptkonto until the Railiance account exists).
- Accept Scaleway’s contract/tax treatment for that account.
- Accept that Host Europe S3 stays out of the race until written orderability exists.
- Accept Hetzner only as a price comparator unless SSE-C custody is explicitly chosen later.
- Spend: expected ~€3–€10/mo infrastructure at current size, plus ~1 h operator labor; not a committed term.
After yes: create private bucket, scoped key, versioning/lifecycle,
cost alert; fill reef-storage attributes (endpoint, bucket, prefix,
project ref); flip inventory proposed → ordered; then T04/T05.
After no: write the rejection on this record; do not invent another primary without a new decision.
Authority
Recommended by: resource-control (this file)
Approved by: human financial authority (Bernd Worsch, chat 2026-08-14)
Approved on: 2026-08-14