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
{
2026-08-15 02:47:31 +02:00
"schema_version" : "0.3" , "record_scope" : "inventory" ,
2026-08-14 13:15:02 +02:00
"id" : "resource:railiance:reef-railiance:k3s" ,
"financial_entity_id" : null ,
"procuring_entity_id" : "entity:railiance" ,
"entity_gap" : "no allocation driver; cost remains a Railiance residual" ,
2026-08-15 02:47:31 +02:00
"description" : "Single-node k3s runtime on railiance01. Cost and consumption view of reef-railiance; not a copy of IPs or kubeconfig." ,
"decision" : {
"status" : "gap" ,
"chosen" : "Live discovered cluster; no formal procurement decision in this repo" ,
"rejected" : [ ] ,
"approved_by" : null ,
"approved_on" : null ,
"ref" : "/home/worsch/railiance-cluster/docs/rail-kubernetes-substrate-profile.md"
} ,
"operational_refs" : [
"reef:railiance/declarations/reef.yaml"
] ,
"credential_handles" : [ ] ,
"consumers" : {
"potential" : [
"rapp-postgres" ,
"rapp-qonto" ,
"rapp-openbao" ,
"coulomb-social" ,
"helix-forge" ,
"railiance-platform"
] ,
"actual" : [
"rapp-postgres" ,
"rapp-qonto" ,
"coulomb-social" ,
"helix-forge" ,
"railiance-platform"
]
} ,
2026-08-14 13:15:02 +02:00
"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" : "self_managed" ,
"provider" : { "name" : "Railiance" , "account_ref" : null , "product_ref" : "k3s" , "provider_resource_id" : "k3s://239.62.205.92.host.secureserver.net" } ,
"service" : { "name" : "reef-railiance k3s" , "service_id" : "reef-railiance" , "class" : "single-node Kubernetes runtime" , "capacity_model" : "shared" } ,
"location" : { "region" : null , "country" : null , "failure_domains" : [ "provider:host-europe" , "host:railiance01" , "cluster:reef-railiance" ] , "residency" : null } ,
"capacity" : [
{ "metric" : "cpu" , "value" : 4 , "unit" : "vCPU" , "kind" : "usable" , "observed_at" : "2026-08-11" } ,
{ "metric" : "memory" , "value" : 15.62 , "unit" : "GiB" , "kind" : "usable" , "observed_at" : "2026-08-11" } ,
{ "metric" : "ephemeral_storage" , "value" : 183.06 , "unit" : "GiB" , "kind" : "usable" , "observed_at" : "2026-08-11" } ,
{ "metric" : "pods" , "value" : 110 , "unit" : "count" , "kind" : "limit" , "observed_at" : "2026-08-11" } ,
{ "metric" : "nodes" , "value" : 1 , "unit" : "count" , "kind" : "observed" , "observed_at" : "2026-08-11" } ,
{ "metric" : "cpu_usage" , "value" : 0.564 , "unit" : "vCPU" , "kind" : "observed" , "observed_at" : "2026-08-11" } ,
{ "metric" : "memory_usage" , "value" : 5.83 , "unit" : "GiB" , "kind" : "observed" , "observed_at" : "2026-08-11" }
] ,
"ownership" : { "owner" : "railiance-cluster" , "environment" : "production" , "workload_ids" : [ "helix-forge" , "coulomb-social" , "rapp-qonto" , "railiance-platform" ] , "tenant_id" : null , "allocation" : { "mode" : "unattributed" , "cost_attribution_key" : null , "driver" : null , "method_version" : null } } ,
"cost" : { "currency" : "EUR" , "tax_status" : "unknown" , "billing_model" : "allocated share of railiance01 plus cluster operations labor; method not established" , "commitment_ref" : null , "price_evidence" : null } ,
"lifecycle" : { "proposed_on" : null , "ordered_on" : null , "commissioned_on" : "2026-03-10" , "renews_on" : null , "cancel_by" : null , "retired_on" : null , "exit_path" : "Deploy a replacement cluster, restore stateful services, promote workloads and ingress, verify health, then remove the old node and credentials." } ,
"relationships" : [ { "type" : "hosted_on" , "resource_id" : "resource:hosteurope:railiance01" } ] ,
"requirements" : [ { "kind" : "service_objective" , "ref" : "/home/worsch/railiance-cluster/INTENT.md" } , { "kind" : "recovery" , "ref" : "/home/worsch/railiance-cluster/workplans/RAIL-BS-WP-0007-threephoenix-ha-cluster.md" } ] ,
"evidence" : [
{ "kind" : "telemetry" , "ref" : "kubernetes:reef-railiance/node/239.62.205.92.host.secureserver.net@2026-08-11T09:05:25Z" , "observed_at" : "2026-08-11" , "authority" : "reef-railiance Kubernetes API" } ,
{ "kind" : "workload" , "ref" : "/home/worsch/railiance-cluster/docs/rail-kubernetes-substrate-profile.md" , "observed_at" : "2026-08-11" , "authority" : "railiance-cluster" }
]
}