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
{
"schema_version" : "0.2" , "record_scope" : "example" ,
2026-08-14 13:15:02 +02:00
"id" : "resource:example:railiance:kubernetes-capacity" ,
"financial_entity_id" : null ,
"procuring_entity_id" : "entity:railiance" ,
"entity_gap" : "example shared capacity; consumers would be allocated, not defaulted" ,
"resource_class" : "kubernetes_capacity" ,
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
"status" : "active" , "management_model" : "shared_capacity" ,
"provider" : { "name" : "Example infrastructure provider" , "account_ref" : "account:example" , "product_ref" : "virtual-machines" , "provider_resource_id" : null } ,
"service" : { "name" : "Railiance Kubernetes worker capacity" , "service_id" : "kubernetes" , "class" : "shared worker pool" , "capacity_model" : "shared" } ,
"location" : { "region" : "example-region" , "country" : "DE" , "failure_domains" : [ "cluster:example" , "region:example-region" ] , "residency" : "Germany" } ,
"capacity" : [ { "metric" : "cpu" , "value" : 24 , "unit" : "vCPU" , "kind" : "usable" , "observed_at" : "2026-08-11" } , { "metric" : "memory" , "value" : 64 , "unit" : "GiB" , "kind" : "usable" , "observed_at" : "2026-08-11" } ] ,
"ownership" : { "owner" : "railiance-cluster" , "environment" : "production" , "workload_ids" : [ "helix-forge" , "coulomb-social" ] , "tenant_id" : null , "allocation" : { "mode" : "shared" , "cost_attribution_key" : "platform:kubernetes" , "driver" : "requested-cpu-memory-hours" , "method_version" : "k8s-requests-v1" } } ,
"cost" : { "currency" : "EUR" , "tax_status" : "unknown" , "billing_model" : "fixed node cost allocated by resource requests" , "commitment_ref" : null , "price_evidence" : null } ,
"lifecycle" : { "proposed_on" : null , "ordered_on" : null , "commissioned_on" : "2026-01-01" , "renews_on" : null , "cancel_by" : null , "retired_on" : null , "exit_path" : "Drain workloads to replacement capacity, verify persistent data and ingress, then terminate nodes." } ,
"relationships" : [ { "type" : "provides_capacity_to" , "resource_id" : "resource:example:shared:ingress" } ] ,
"requirements" : [ { "kind" : "service_objective" , "ref" : "example:cluster-capacity-slo" } ] ,
"evidence" : [ { "kind" : "example" , "ref" : "RESOURCE-WP-0003-T01" , "observed_at" : "2026-08-11" , "authority" : "resource-control" } ]
}