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>
2.7 KiB
PostgreSQL backup demand and cost model — 2026-08-10
Observed baseline
A read-only query against platform-pg-1 at 2026-08-10T15:54:12Z measured
39,573,871 bytes across connectable databases. pg_stat_wal reported
19,744,568 bytes since 2026-08-10T13:37:53Z, an extrapolated 0.208 GB/day.
The cluster is less than one day old, so this is a seed observation rather than
a representative trend. No credential value was read or recorded.
The governed requirements are a 30-day recovery window, daily physical base
backup, continuous WAL archive, one monthly restore drill, and a complete exit
calculation. The scenario inputs live in
data/demand/platform-audit-storage.json and deliberately floor demand above
the tiny initial observation:
| Scenario | Initial DB | Monthly growth | WAL/day | Restore egress | Labor/month |
|---|---|---|---|---|---|
| low | 1 GB | 5% | 0.25 GB | 1 GB | 0.5 h |
| base | 5 GB | 10% | 1 GB | 5 GB | 1 h |
| high | 20 GB | 20% | 5 GB | 20 GB | 2 h |
The conservative stored-byte formula is 30 × current database size + 30 × daily WAL. It does not claim compression savings. Operator labor is valued at
€60/hour; provider-specific labor floors capture relative operational effort.
The exit event adds full stored-byte egress plus four operator hours.
Run make forecast for all 12 months, scenarios, and providers. A null total
is intentional: it means a required price is unknown and prevents an unknown
from silently becoming free.
The catalog also includes self-managed Garage on 1–3 Host Europe/Hetzner VMs
and managed AWS, Azure, Google Cloud, and STACKIT price points. See
RESOURCE-WP-0002-expanded-storage-comparison-2026-08-10.md for assumptions
and topology warnings.
Calculator rows split monthly_infrastructure_eur from
monthly_internal_labor_eur and split internal setup labor from external setup
services. The top-level comparison_320gb array provides a normalized running
cost at 320 GB using the base request and restore pattern.
Initial comparison
- Scaleway Standard Multi-AZ is fully calculable at €0.01606/GB-month, with 75 GB/month free egress then €0.01/GB. Prices exclude tax.
- Hetzner is calculable while usage remains inside its €6.49 monthly minimum, which includes 1 TB storage and 1 TB egress. Excess unit prices still need to be captured before high-growth or exit usage crosses the included quota.
- Host Europe cannot be calculated until it confirms that the historical S3 Cloud Storage product is currently orderable and supplies a current quote.
Because labor dominates this very small workload, selection should emphasize restore compatibility, independent failure domain, encryption, and exit proof before sub-euro storage differences.