feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
{
"schema_version" : "0.2" ,
"record_scope" : "inventory" ,
"id" : "resource:platform:audit-storage" ,
2026-08-14 13:15:02 +02:00
"financial_entity_id" : "entity:railiance" ,
"procuring_entity_id" : "entity:railiance" ,
"entity_gap" : null ,
2026-08-14 16:18:16 +02:00
"description" : "Off-host S3-compatible object store for rapp-postgres WAL archive and physical base backups. Procured by Railiance, operated as a Scaleway-delegated substrate on reef-storage, not on reef-railiance." ,
"decision" : {
2026-08-14 16:58:44 +02:00
"status" : "approved" ,
2026-08-14 16:18:16 +02:00
"chosen" : "Scaleway Standard Multi-AZ nl-ams; independent secondary copy on Host Europe Backup Storage or governed Nextcloud (T06)" ,
"rejected" : [
"Host Europe Cloud Storage as primary (S3 not confirmed orderable)" ,
"Hetzner Object Storage as primary (no default at-rest encryption)" ,
"Self-managed Garage as primary (labor and capacity lose at this workload)"
] ,
2026-08-14 16:58:44 +02:00
"approved_by" : "human-financial-authority" ,
"approved_on" : "2026-08-14" ,
2026-08-14 16:18:16 +02:00
"ref" : "docs/evidence/RESOURCE-WP-0002-primary-selection-2026-08-14.md"
} ,
"operational_refs" : [
"reef:storage/declarations/reef.yaml" ,
"reef:storage/substrate/object-stores/platform-audit-storage.yaml" ,
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#endpoint" ,
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#bucket" ,
2026-08-14 18:28:27 +02:00
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#region" ,
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#prefix" ,
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#lifecycle" ,
"reef:storage/substrate/object-stores/platform-audit-storage.yaml#provider_project_ref"
2026-08-14 16:18:16 +02:00
] ,
"credential_handles" : [
"secret:railiance-platform/platform-pg-backup-s3"
] ,
"consumers" : {
"potential" : [ "rapp-postgres" ] ,
"actual" : [ ]
} ,
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
"resource_class" : "storage" ,
2026-08-14 18:28:27 +02:00
"status" : "ordered" ,
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
"management_model" : "provider_managed" ,
"provider" : {
"name" : "Scaleway" ,
2026-08-14 18:28:27 +02:00
"account_ref" : "reef:storage/substrate/object-stores/platform-audit-storage.yaml#provider_project_ref" ,
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
"product_ref" : "scaleway-standard-multi-az" ,
2026-08-14 18:28:27 +02:00
"provider_resource_id" : "railiance-platform-pg-backup"
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
} ,
"service" : {
"name" : "platform audit storage" ,
"service_id" : "object-storage" ,
"class" : "Standard Multi-AZ object storage" ,
"capacity_model" : "elastic"
} ,
"location" : {
"region" : "nl-ams" ,
"country" : "NL" ,
2026-08-14 16:18:16 +02:00
"failure_domains" : [ "provider:scaleway" , "region:nl-ams" , "reef:storage" ] ,
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
"residency" : "European Union"
} ,
"capacity" : [
{ "metric" : "stored_data" , "value" : null , "unit" : "GB" , "kind" : "unknown" , "observed_at" : null }
] ,
"ownership" : {
"owner" : "resource-control" ,
"environment" : "production" ,
"workload_ids" : [ "rapp-postgres/platform-pg" ] ,
"tenant_id" : null ,
"allocation" : {
"mode" : "dedicated" ,
"cost_attribution_key" : "platform:audit-storage" ,
"driver" : "direct-resource" ,
"method_version" : "direct-v1"
}
} ,
"cost" : {
"currency" : "EUR" ,
"tax_status" : "excluded" ,
2026-08-14 16:18:16 +02:00
"billing_model" : "usage-based storage and egress; no commitment; Railiance self-use at delivered cost" ,
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
"commitment_ref" : null ,
"price_evidence" : "data/providers/object-storage.json#scaleway-standard-multi-az"
} ,
"lifecycle" : {
"proposed_on" : "2026-08-10" ,
2026-08-14 18:28:27 +02:00
"ordered_on" : "2026-08-14" ,
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
"commissioned_on" : null ,
"renews_on" : null ,
"cancel_by" : null ,
"retired_on" : null ,
"exit_path" : "Copy and verify all Barman objects in an independent S3-compatible target, run full and PITR restore, revoke the scoped key, then delete source objects and bucket after evidence is durable."
} ,
"relationships" : [ ] ,
"requirements" : [
{ "kind" : "recovery" , "ref" : "workplans/RESOURCE-WP-0002-procure-postgres-backup-storage.md#acceptance-requirements" } ,
{ "kind" : "retention" , "ref" : "data/demand/platform-audit-storage.json" }
] ,
"evidence" : [
{ "kind" : "provider" , "ref" : "https://www.scaleway.com/en/pricing/storage/" , "observed_at" : "2026-08-10" , "authority" : "Scaleway" } ,
{ "kind" : "provider" , "ref" : "https://www.scaleway.com/en/object-storage/" , "observed_at" : "2026-08-10" , "authority" : "Scaleway" } ,
2026-08-14 16:18:16 +02:00
{ "kind" : "decision" , "ref" : "docs/evidence/RESOURCE-WP-0002-provider-due-diligence-2026-08-10.md" , "observed_at" : "2026-08-10" , "authority" : "resource-control" } ,
2026-08-14 18:28:27 +02:00
{ "kind" : "decision" , "ref" : "docs/evidence/RESOURCE-WP-0002-primary-selection-2026-08-14.md" , "observed_at" : "2026-08-14" , "authority" : "resource-control" } ,
{ "kind" : "provider" , "ref" : "reef:storage/substrate/object-stores/platform-audit-storage.yaml" , "observed_at" : "2026-08-14" , "authority" : "reef-storage" }
feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting
T06: optimization-case schema, fail-closed evaluator, cadence and decision
template. Every option including the baseline must present all ten decision
fields; one unknown blocks the comparison. Validated on the storage case
(Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour;
Host Europe blocks on four named gaps) and on the non-storage reef-railiance
k3s rightsizing case (low utilization is real, but nothing is costable while
the railiance01 price is unknown).
T07: portfolio report over coverage, lifecycle, utilization, cost, renewals,
risks, open cases, and next actions, derived only from committed evidence.
Portfolio spend is reported null rather than as a partial sum, unattributed
cost is a named list rather than a spread, and unmeasurable resources are
reported rather than dropped.
RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against
live delegated records in other repositories. RESOURCE-WP-0002 is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:28:44 +02:00
]
}