resource-control/docs/evidence/RESOURCE-WP-0002-demand-and-cost-model-2026-08-10.md
tegwick 2c2a6073ff 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

54 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 13 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.