resource-control/data/actuals
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
..
README.md feat(portfolio): complete RESOURCE-WP-0003 T06 optimization cases and T07 reporting 2026-08-14 09:28:44 +02:00

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