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>
926 B
Monthly technical usage observations
After each provider billing period, add YYYY-MM.json conforming to
schemas/monthly-resource-observation.schema.json with
record_type: usage_observation. These records contain technical and labor
observations. Authoritative booked financial actuals come from fin-hub and are
referenced during reconciliation rather than copied into a second ledger.
Set forecast_ref to the forecast file used for the decision. Evidence should
identify, without secrets, the provider usage export/invoice, PostgreSQL/CNPG
measurement, restore drill, and internal time record.
Required proxies are database GB, provider stored GB, WAL GB, restore egress, write/read requests, infrastructure invoice cost, internal labor hours/cost, and total cost. Also capture backup success, maximum observed RPO, and restore RTO when available.
Run:
make variance ACTUAL=data/actuals/YYYY-MM.json