resource-control/data/resources/platform-audit-storage.json
tegwick 34a014a896 feat: inventory schema 0.3 and close WP-0006 T01 T02 T04
v0.2 records stay valid. v0.3 requires the five facets. Validators
reject inline Scaleway endpoints and secret-looking strings. The
backup record is the first 0.3 object. Reef views already met T02.
2026-08-15 02:40:43 +02:00

149 lines
4.9 KiB
JSON

{
"schema_version": "0.3",
"record_scope": "inventory",
"id": "resource:platform:audit-storage",
"financial_entity_id": "entity:railiance",
"procuring_entity_id": "entity:railiance",
"entity_gap": null,
"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": {
"status": "approved",
"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)"
],
"approved_by": "human-financial-authority",
"approved_on": "2026-08-14",
"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",
"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"
],
"credential_handles": [
"secret:railiance-platform/backup"
],
"consumers": {
"potential": [
"rapp-postgres"
],
"actual": [
"rapp-postgres"
]
},
"resource_class": "storage",
"status": "active",
"management_model": "provider_managed",
"provider": {
"name": "Scaleway",
"account_ref": "reef:storage/substrate/object-stores/platform-audit-storage.yaml#provider_project_ref",
"product_ref": "scaleway-standard-multi-az",
"provider_resource_id": "railiance-platform-pg-backup"
},
"service": {
"name": "platform audit storage",
"service_id": "object-storage",
"class": "Standard Multi-AZ object storage",
"capacity_model": "elastic"
},
"location": {
"region": "nl-ams",
"country": "NL",
"failure_domains": [
"provider:scaleway",
"region:nl-ams",
"reef:storage"
],
"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",
"billing_model": "usage-based storage and egress; no commitment; Railiance self-use at delivered cost",
"commitment_ref": null,
"price_evidence": "data/providers/object-storage.json#scaleway-standard-multi-az"
},
"lifecycle": {
"proposed_on": "2026-08-10",
"ordered_on": "2026-08-14",
"commissioned_on": "2026-08-14",
"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"
},
{
"kind": "decision",
"ref": "docs/evidence/RESOURCE-WP-0002-provider-due-diligence-2026-08-10.md",
"observed_at": "2026-08-10",
"authority": "resource-control"
},
{
"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"
}
]
}