resource-control/docs/evidence/RESOURCE-WP-0002-primary-selection-2026-08-14.md
tegwick 644d5391bd retarget: T04 backup key is resource-control, not Barman
Handle becomes secret:railiance-platform/backup. IAM application is
resource-control; policy and API key are Scoped backup access.
2026-08-14 19:19:56 +02:00

4.8 KiB
Raw Blame History

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 23 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

  1. Create or reuse a Scaleway project paid as Railiance (or GmbH Hauptkonto until the Railiance account exists).
  2. Accept Scaleways contract/tax treatment for that account.
  3. Accept that Host Europe S3 stays out of the race until written orderability exists.
  4. Accept Hetzner only as a price comparator unless SSE-C custody is explicitly chosen later.
  5. 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