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>
This commit is contained in:
parent
54dd45c926
commit
2c2a6073ff
63 changed files with 4662 additions and 69 deletions
|
|
@ -0,0 +1,36 @@
|
|||
# RESOURCE-WP-0003 generalized control cycle — 2026-08-11
|
||||
|
||||
## Result
|
||||
|
||||
`RESOURCE-WP-0003-T05` generalized the backup-specific forecast-to-actual
|
||||
method into a provider-neutral portfolio contract.
|
||||
|
||||
The implementation consists of:
|
||||
|
||||
- `schemas/resource-control-cycle.schema.json` for immutable forecast and
|
||||
actual records;
|
||||
- `tools/control_cycle.py` for resource-neutral comparison and controlled
|
||||
variance attribution;
|
||||
- six paired examples covering storage, fixed cluster compute, and a hybrid
|
||||
shared PostgreSQL service;
|
||||
- tests for the three resource classes, immutable forecast binding, explicit
|
||||
cost attribution, and fail-closed data-quality handling;
|
||||
- updated operating guidance in `docs/forecast-actual-control.md`.
|
||||
|
||||
## Boundary with fin-hub
|
||||
|
||||
Actual records carry `booked_cost_refs`; resource-control does not reproduce
|
||||
the ledger fact. Fin-hub message `d33f2452-8dc6-4249-a3d2-84fda938103a`
|
||||
confirmed explicit `financial_fact_id -> resource_id` binding, budget and
|
||||
constraint signals, and generalized exchange health. The first operational
|
||||
backup round trip remains correctly gated on `RESOURCE-WP-0002` procurement;
|
||||
that does not invalidate these illustrative contract fixtures.
|
||||
|
||||
## Verification
|
||||
|
||||
- `make test`: 25 tests passed and declarations validated.
|
||||
- All three example pairs completed through `make control-cycle`.
|
||||
- `git diff --check`: clean.
|
||||
|
||||
The examples are intentionally marked illustrative. Their values must not be
|
||||
reported as actual consumption or booked cost.
|
||||
Loading…
Add table
Add a link
Reference in a new issue