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
1
examples/control-cycle/apps-pg-actual.json
Normal file
1
examples/control-cycle/apps-pg-actual.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"schema_version":"0.1","record_id":"actual:apps-pg:2026-09","record_type":"actual","resource_id":"resource:railiance:apps-pg","resource_class":"shared_platform_service","period":"2026-09","created_at":"2026-10-02T00:00:00Z","scenario":"observed","forecast_ref":"forecast:apps-pg:2026-09:base:v1","revision_of":null,"usage_proxies":{"database_gb":{"value":6,"unit":"GB"},"connections":{"value":18,"unit":"peak"}},"capacity":{"model":"hybrid","provisioned":{"storage":{"value":20,"unit":"GiB"}},"used":{"storage":{"value":6,"unit":"GB"}}},"costs":{"currency":"EUR","infrastructure":15,"internal_labor":90,"external_labor":0,"total":105,"booked_cost_refs":["financial-fact:example-shared-allocation-2026-09"]},"allocation":{"method":"proportional","driver":"database_gb","method_version":"1","unattributed_eur":5},"service_constraints":{"rpo_minutes":{"value":5,"unit":"minutes"},"rto_minutes":{"value":60,"unit":"minutes"}},"variance_attribution":{"database_gb":"demand","connections":"model","costs.internal_labor":"labor"},"evidence":["illustrative actual; replace with RAILIANCE-WP-0016 evidence"]}
|
||||
1
examples/control-cycle/apps-pg-forecast.json
Normal file
1
examples/control-cycle/apps-pg-forecast.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"schema_version":"0.1","record_id":"forecast:apps-pg:2026-09:base:v1","record_type":"forecast","resource_id":"resource:railiance:apps-pg","resource_class":"shared_platform_service","period":"2026-09","created_at":"2026-08-11T00:00:00Z","scenario":"base","forecast_ref":null,"revision_of":null,"usage_proxies":{"database_gb":{"value":5,"unit":"GB"},"connections":{"value":20,"unit":"peak"}},"capacity":{"model":"hybrid","provisioned":{"storage":{"value":20,"unit":"GiB"}},"used":{"storage":{"value":5,"unit":"GB"}}},"costs":{"currency":"EUR","infrastructure":15,"internal_labor":60,"external_labor":0,"total":75,"booked_cost_refs":[]},"allocation":{"method":"proportional","driver":"database_gb","method_version":"1","unattributed_eur":5},"service_constraints":{"rpo_minutes":{"value":5,"unit":"minutes"},"rto_minutes":{"value":60,"unit":"minutes"}},"uncertainty":{"level":"high","notes":["Illustrative until platform evidence arrives"]},"evidence":["RAILIANCE-WP-0016"]}
|
||||
1
examples/control-cycle/cluster-actual.json
Normal file
1
examples/control-cycle/cluster-actual.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"schema_version":"0.1","record_id":"actual:reef-railiance:2026-09","record_type":"actual","resource_id":"resource:railiance:reef-railiance:k3s","resource_class":"cluster_compute","period":"2026-09","created_at":"2026-10-02T00:00:00Z","scenario":"observed","forecast_ref":"forecast:reef-railiance:2026-09:base:v1","revision_of":null,"usage_proxies":{"cpu_requested":{"value":3,"unit":"vCPU"},"memory_requested":{"value":7,"unit":"GiB"}},"capacity":{"model":"fixed","provisioned":{"cpu":{"value":4,"unit":"vCPU"},"memory":{"value":16,"unit":"GiB"}},"used":{"cpu":{"value":3,"unit":"vCPU"},"memory":{"value":7,"unit":"GiB"}}},"costs":{"currency":"EUR","infrastructure":40,"internal_labor":150,"external_labor":0,"total":190,"booked_cost_refs":["financial-fact:example-host-2026-09"]},"allocation":{"method":"proportional","driver":"cpu_and_memory_requests","method_version":"1","unattributed_eur":10},"service_constraints":{"availability_pct":{"value":99,"unit":"percent"}},"variance_attribution":{"cpu_requested":"demand","memory_requested":"demand","costs.internal_labor":"labor"},"evidence":["illustrative actual; replace with RAIL-BS-WP-0014 evidence"]}
|
||||
1
examples/control-cycle/cluster-forecast.json
Normal file
1
examples/control-cycle/cluster-forecast.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"schema_version":"0.1","record_id":"forecast:reef-railiance:2026-09:base:v1","record_type":"forecast","resource_id":"resource:railiance:reef-railiance:k3s","resource_class":"cluster_compute","period":"2026-09","created_at":"2026-08-11T00:00:00Z","scenario":"base","forecast_ref":null,"revision_of":null,"usage_proxies":{"cpu_requested":{"value":2.5,"unit":"vCPU"},"memory_requested":{"value":6,"unit":"GiB"}},"capacity":{"model":"fixed","provisioned":{"cpu":{"value":4,"unit":"vCPU"},"memory":{"value":16,"unit":"GiB"}},"used":{"cpu":{"value":2.5,"unit":"vCPU"},"memory":{"value":6,"unit":"GiB"}}},"costs":{"currency":"EUR","infrastructure":40,"internal_labor":120,"external_labor":0,"total":160,"booked_cost_refs":[]},"allocation":{"method":"proportional","driver":"cpu_and_memory_requests","method_version":"1","unattributed_eur":10},"service_constraints":{"availability_pct":{"value":99,"unit":"percent"}},"uncertainty":{"level":"high","notes":["Illustrative until delegated cluster observations arrive"]},"evidence":["RAIL-BS-WP-0014"]}
|
||||
1
examples/control-cycle/storage-actual.json
Normal file
1
examples/control-cycle/storage-actual.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"schema_version":"0.1","record_id":"actual:platform-audit-storage:2026-09","record_type":"actual","resource_id":"resource:platform:audit-storage","resource_class":"storage","period":"2026-09","created_at":"2026-10-02T00:00:00Z","scenario":"observed","forecast_ref":"forecast:platform-audit-storage:2026-09:base:v1","revision_of":null,"usage_proxies":{"stored_gb":{"value":350,"unit":"GB-month"},"egress_gb":{"value":5,"unit":"GB"}},"capacity":{"model":"elastic","provisioned":{},"used":{"stored_gb":{"value":350,"unit":"GB-month"}}},"costs":{"currency":"EUR","infrastructure":5.62,"internal_labor":60,"external_labor":0,"total":65.62,"booked_cost_refs":["financial-fact:example-storage-2026-09"]},"allocation":{"method":"direct","driver":"stored_gb","method_version":"1","unattributed_eur":0},"service_constraints":{"rpo_minutes":{"value":5,"unit":"minutes"},"rto_minutes":{"value":55,"unit":"minutes"}},"variance_attribution":{"stored_gb":"demand","costs.infrastructure":"provider_price"},"evidence":["illustrative actual; replace with provider and platform evidence"]}
|
||||
1
examples/control-cycle/storage-forecast.json
Normal file
1
examples/control-cycle/storage-forecast.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"schema_version":"0.1","record_id":"forecast:platform-audit-storage:2026-09:base:v1","record_type":"forecast","resource_id":"resource:platform:audit-storage","resource_class":"storage","period":"2026-09","created_at":"2026-08-11T00:00:00Z","scenario":"base","forecast_ref":null,"revision_of":null,"usage_proxies":{"stored_gb":{"value":320,"unit":"GB-month"},"egress_gb":{"value":5,"unit":"GB"}},"capacity":{"model":"elastic","provisioned":{},"used":{"stored_gb":{"value":320,"unit":"GB-month"}}},"costs":{"currency":"EUR","infrastructure":5.14,"internal_labor":60,"external_labor":0,"total":65.14,"booked_cost_refs":[]},"allocation":{"method":"direct","driver":"stored_gb","method_version":"1","unattributed_eur":0},"service_constraints":{"rpo_minutes":{"value":5,"unit":"minutes"},"rto_minutes":{"value":60,"unit":"minutes"}},"uncertainty":{"level":"high","notes":["No booked provider fact exists yet"]},"evidence":["data/demand/platform-audit-storage.json"]}
|
||||
Loading…
Add table
Add a link
Reference in a new issue