First delegated evidence from RESOURCE-WP-0003-T04 to land. railiance-platform delivered apps-pg capacity, utilization, consumers, and the apps-pg-dbbytes-v1 allocation driver, and correctly delivered no EUR. - data/resources/apps-pg.json: real capacity; allocation unattributed -> shared under apps-pg-dbbytes-v1; second consumer vergabe-teilnahme registered - data/control-cycle/apps-pg-2026-09-base.json: first operational control-cycle record in the repository - examples/control-cycle/apps-pg-*.json retired; the invented fixture collided with the real record's identifier - data/portfolio-coverage-2026-08-14.json: gap marked delivered with three residual unknowns still open The real evidence exposed a design gap in the T05 schema: v0.1 required a number for every cost field, so recording genuine usage without a booked cost meant inventing one. Schema 0.2 permits null costs, null unattributed_eur, a technical unattributed_share, and null measurements. Null is unknown, never zero; an unknown component makes the total null rather than the sum of the known parts; and the comparator classifies unknown amounts as data_quality instead of computing a variance. Existing 0.1 records are not rewritten. apps-pg is now measured (idle at 5.8% of volume) and attributed, and remains unpriced: delivered technical evidence does not create a booked cost. 86 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
315 lines
14 KiB
Markdown
315 lines
14 KiB
Markdown
---
|
|
id: RESOURCE-WP-0003
|
|
type: workplan
|
|
title: "Establish managed-infrastructure portfolio control"
|
|
domain: financials
|
|
repo: resource-control
|
|
status: finished
|
|
owner: codex
|
|
topic_slug: railiance
|
|
created: "2026-08-10"
|
|
updated: "2026-08-14"
|
|
related:
|
|
- RESOURCE-WP-0002
|
|
- FIN-WP-0004
|
|
state_hub_workstream_id: "b4d541d2-c114-4189-b431-e301c4dcef4e"
|
|
---
|
|
|
|
# RESOURCE-WP-0003 — managed-infrastructure portfolio control
|
|
|
|
## Goal
|
|
|
|
Turn the revised repository intent into an operational, provider-neutral
|
|
control loop for infrastructure serving Railiance itself, Helix Forge, Coulomb
|
|
Social, shared platform services, and tenant workloads. Establish the portfolio
|
|
model, authority contracts, delegated evidence interfaces, and a repeatable
|
|
forecast-to-actual optimization cycle without duplicating financial, workload,
|
|
or platform authority.
|
|
|
|
The PostgreSQL backup work in `RESOURCE-WP-0002` is the first proving case and
|
|
input to this workplan, not the limit of its scope.
|
|
|
|
## Boundaries
|
|
|
|
- `resource-control` owns portfolio identity, lifecycle, technical economics,
|
|
allocation evidence, forecasts, variance analysis, and optimization cases.
|
|
- `fin-hub` owns authoritative booked financial facts, budgets, commitments,
|
|
burn, runway, and viability signals.
|
|
- Workload repositories own demand meaning and service requirements.
|
|
- Cluster and platform repositories own provisioning, operations, and source
|
|
telemetry.
|
|
- Human authorities approve contractual commitments and material lifecycle
|
|
changes.
|
|
|
|
This workplan defines and validates interfaces. Cross-repository implementation
|
|
must be handed off as work records in the repository that owns the source.
|
|
|
|
## T01 — Define the portfolio and lifecycle model
|
|
|
|
```task
|
|
id: RESOURCE-WP-0003-T01
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "9c396da2-9cae-4681-8d7e-3ebcbf9db29f"
|
|
```
|
|
|
|
Define the minimum resource classes, lifecycle states, ownership fields,
|
|
capacity forms, provider/account identity, shared-versus-dedicated placement,
|
|
tenant and workload attribution, contract dates, and evidence provenance.
|
|
|
|
Reuse the current backup inventory and forecast schemas where they generalize;
|
|
identify and migrate assumptions that are storage-specific. Include validation
|
|
rules for stable identifiers and lifecycle transitions.
|
|
|
|
Done when a versioned schema and examples can represent provider-managed
|
|
object storage, self-managed Garage on VMs, cluster capacity, and a shared
|
|
platform service without ambiguous ownership or cost attribution.
|
|
|
|
Completed 2026-08-11: introduced portfolio schema v0.2 with resource classes,
|
|
management models, capacity dimensions, lifecycle states, shared and dedicated
|
|
allocation, relationships, requirements, and provenance-bearing evidence.
|
|
Migrated the real proposed backup record and added explicitly non-authoritative
|
|
Garage, Kubernetes-capacity, and shared-ingress examples. Semantic validation
|
|
covers identifier, lifecycle, allocation, capacity, and example-scope rules.
|
|
Evidence: `docs/evidence/RESOURCE-WP-0003-portfolio-model-v0.2-2026-08-11.md`.
|
|
|
|
## T02 — Record the authority and fin-hub exchange contract
|
|
|
|
```task
|
|
id: RESOURCE-WP-0003-T02
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "efa64dce-7b5e-435e-b010-7aee9e0a410e"
|
|
```
|
|
|
|
Create an authority matrix and a versioned exchange contract with `fin-hub`.
|
|
Define the two directions separately:
|
|
|
|
- resource-control to fin-hub: resource references, allocation keys, forecasts,
|
|
technical usage, commitment candidates, and optimization scenarios;
|
|
- fin-hub to resource-control: booked costs, credits, tax and currency treatment,
|
|
financial commitments, budget constraints, and viability signals.
|
|
|
|
Specify period, currency, net/gross semantics, provenance, corrections,
|
|
idempotency, uncertainty, and identifiers including `resource_id`, `service_id`,
|
|
`workload_id`, `tenant_id`, `environment`, and `cost_attribution_key`.
|
|
|
|
Done when both repositories link the same reviewed contract and no field has
|
|
two authoritative writers. Coordinate with `FIN-WP-0004`.
|
|
|
|
Progress 2026-08-11: verified fin-hub commit `0034330` and its 46-test suite;
|
|
the six review remediations satisfy the authority, exact-money, typed-evidence,
|
|
idempotency, dimensional-reporting, and model-parity conditions. Added the
|
|
resource-control ratification, producer-owned planning schema, canonical
|
|
forecast exporter, booked-cost consumer validation, and reconciliation seam.
|
|
The 12-row backup forecast preflight and cross-repository compatibility check
|
|
remain before this task is complete. A real booked backup cost is deliberately
|
|
reserved for `FIN-WP-0004-T05` after procurement.
|
|
|
|
Completed 2026-08-11: all 12 resource-control producer records matched
|
|
fin-hub's executable schema and adapter output, and duplicate ingestion retained
|
|
exactly 12 planning rows. Evidence is in
|
|
`docs/evidence/RESOURCE-WP-0003-fin-hub-contract-preflight-2026-08-11.md`.
|
|
The authority contract is accepted from resource-control. The separate real
|
|
booked-cost round trip remains gated on `RESOURCE-WP-0002` procurement and is
|
|
not simulated as operational evidence.
|
|
|
|
## T03 — Inventory the first managed-infrastructure portfolio
|
|
|
|
```task
|
|
id: RESOURCE-WP-0003-T03
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "4afbb2ea-8021-4dd7-968b-50c113a8c108"
|
|
```
|
|
|
|
Discover and register the material infrastructure serving Helix Forge,
|
|
Coulomb Social, shared Railiance services, and a representative tenant
|
|
workload. Record unknowns explicitly and separate observed resources from
|
|
inferred relationships.
|
|
|
|
For each resource, identify the authoritative workload and platform repository,
|
|
owner, lifecycle state, capacity, service objective or requirement reference,
|
|
provider/account, failure domain, contract or renewal evidence, and allocation
|
|
key. Do not retrieve or record credentials.
|
|
|
|
Done when portfolio coverage and evidence gaps are measurable and every
|
|
material discovered resource has an owner or a human-review record.
|
|
|
|
Completed 2026-08-11: registered seven evidence-backed resources covering the
|
|
Host Europe host, reef-railiance k3s capacity, Forgejo/Helix Forge, shared
|
|
applications PostgreSQL, Coulomb Social, Binky's `rapp-qonto`, and proposed
|
|
backup storage. Live read-only observation confirmed capacity, current
|
|
workloads, PVCs, and the shared single-host/local-storage failure domain.
|
|
Unknown commercial, utilization-history, labor, and allocation facts remain
|
|
explicit and are assigned to authoritative repository owners in
|
|
`data/portfolio-coverage-2026-08-11.json`. Evidence:
|
|
`docs/evidence/RESOURCE-WP-0003-initial-portfolio-discovery-2026-08-11.md`.
|
|
|
|
## T04 — Delegate demand and telemetry evidence
|
|
|
|
```task
|
|
id: RESOURCE-WP-0003-T04
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "b4053889-69fd-4e3c-888b-0764eee2e9e4"
|
|
```
|
|
|
|
Create scoped work records in the authoritative workload and platform
|
|
repositories for missing demand declarations, service objectives, capacity,
|
|
utilization, reliability, and allocation-driver evidence. Initial targets are
|
|
`helix-forge`, `coulomb-social`, `railiance-cluster`, `rail-kubernetes`,
|
|
`rail-knative`, and `railiance-platform`; add only repositories supported by
|
|
the inventory evidence.
|
|
|
|
Each handoff must define a stable non-secret interface and acceptance evidence,
|
|
not prescribe unrelated internal implementation.
|
|
|
|
Done when all required source evidence is either available through a versioned
|
|
interface or represented by a live delegated work record with an owner.
|
|
|
|
Completed 2026-08-11: created and registered repository-local evidence plans
|
|
`RAIL-HO-WP-0008`, `RAIL-BS-WP-0014`, railiance-forge
|
|
`RAILIANCE-WP-0002`, railiance-platform `RAILIANCE-WP-0016`,
|
|
`CSOC-WP-0005`, and `RAPP-QONTO-WP-0002`. The booked-cost boundary remains in
|
|
fin-hub and is linked to existing `FIN-WP-0004-T04..T06`. The exact State Hub
|
|
workplan identifiers are recorded in
|
|
`data/portfolio-coverage-2026-08-11.json`. No duplicate plan was created in
|
|
`helix-forge`, `rail-kubernetes`, or `rail-knative`: their relevant evidence is
|
|
owned respectively by railiance-forge, railiance-cluster, and the workload plus
|
|
cluster layers.
|
|
|
|
## T05 — Generalize forecast-to-actual control
|
|
|
|
```task
|
|
id: RESOURCE-WP-0003-T05
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "76986764-5e23-4e51-aaed-6bbb92d08915"
|
|
```
|
|
|
|
Generalize the immutable forecast and monthly actual-observation controls from
|
|
`RESOURCE-WP-0002`. Support resource-specific usage proxies, fixed and elastic
|
|
capacity, internal and external labor, infrastructure cost, booked cost
|
|
references, allocation methods, service-level constraints, and low/base/high
|
|
uncertainty.
|
|
|
|
Classify variance as demand, provider price, allocation, labor, model, or
|
|
data-quality error. Preserve the original forecast and create explicit
|
|
revisions rather than overwriting it.
|
|
|
|
Done when the same mechanism can evaluate at least storage, VM or cluster
|
|
compute, and one shared platform service.
|
|
|
|
Completed 2026-08-11: added the generic immutable control-cycle schema and
|
|
comparator, controlled six-way variance attribution, revision and booked-fact
|
|
references, and paired contract examples for elastic storage, fixed cluster
|
|
compute, and the hybrid shared apps-pg service. The examples are illustrative,
|
|
not operational facts. Evidence:
|
|
`docs/evidence/RESOURCE-WP-0003-generalized-control-cycle-2026-08-11.md`.
|
|
|
|
## T06 — Produce and govern optimization cases
|
|
|
|
```task
|
|
id: RESOURCE-WP-0003-T06
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "08d5a687-6ce4-4bbf-950a-9682b1f7b003"
|
|
```
|
|
|
|
Define the review cadence and decision template for rightsizing,
|
|
consolidation, commitment, renewal, migration, retirement, and provider
|
|
switching. Every recommendation must show baseline, alternative, one-time
|
|
cost, recurring infrastructure and labor cost, utilization, uncertainty,
|
|
service-level constraints, failure domains, exit path, and expected payback.
|
|
|
|
Validate the process using the backup case and at least one non-storage
|
|
portfolio candidate. Send financial implications to `fin-hub`; delegate any
|
|
approved implementation to the owning platform or workload repository.
|
|
|
|
Done when recommendations are reproducible from evidence and their eventual
|
|
outcomes feed the next forecast cycle.
|
|
|
|
Completed 2026-08-14: added the optimization-case schema, a fail-closed
|
|
evaluator, and the cadence and decision template in `docs/optimization-cases.md`.
|
|
Every option, baseline included, must present all ten decision fields; one
|
|
unknown blocks the comparison. Validated on the storage case, where Hetzner
|
|
computes fully and loses to Scaleway by EUR 29.14 per month on operator labour
|
|
rather than storage price while Host Europe blocks on four named gaps, and on
|
|
the non-storage reef-railiance k3s rightsizing case, which reports genuinely low
|
|
utilization and still refuses to recommend because the railiance01 booked price
|
|
is unknown and the utilization figure is a single sample. Neither case decides:
|
|
procurement remains `RESOURCE-WP-0002-T03`, and the cluster unknowns are
|
|
delegated to `RAIL-HO-WP-0008` and `RAIL-BS-WP-0014`. Evidence:
|
|
`docs/evidence/RESOURCE-WP-0003-optimization-cases-2026-08-14.md`.
|
|
|
|
## T07 — Establish portfolio reporting and operating cadence
|
|
|
|
```task
|
|
id: RESOURCE-WP-0003-T07
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "3927e658-6807-4737-ae15-ea1997dc210f"
|
|
```
|
|
|
|
Publish a portfolio view covering coverage, lifecycle, capacity, utilization,
|
|
forecast and actual variance, unattributed cost, renewals, risks, and open
|
|
optimization opportunities. Report missing evidence and unapportioned cost
|
|
rather than forcing false precision.
|
|
|
|
Define monthly observation, quarterly model calibration, and pre-renewal review
|
|
cadences with named inputs and consumers.
|
|
|
|
Done when an operator can identify material spend, idle or saturated capacity,
|
|
forecast error, approaching commitments, and the next evidence-backed action.
|
|
|
|
Completed 2026-08-14: added `tools/portfolio_report.py` and
|
|
`make portfolio-report`, rendering coverage, lifecycle, utilization, cost,
|
|
renewals, risks, open cases, and next actions from committed evidence only, plus
|
|
the cadence in `docs/portfolio-operating-cadence.md`. The report refuses false
|
|
precision: portfolio spend is `null` rather than a partial sum, unattributed
|
|
cost is a named list rather than a spread, and unmeasurable resources are
|
|
reported instead of dropped. Against the current portfolio it reports spend as
|
|
unknown, railiance01 and the k3s cluster as idle at 14 percent CPU and 37 percent
|
|
memory, no computable forecast error, no dated commitments but six active
|
|
resources with no contract dates at all, and six of seven resources sharing
|
|
`host:railiance01`. Evidence:
|
|
`docs/evidence/RESOURCE-WP-0003-portfolio-reporting-2026-08-14.md`.
|
|
|
|
## Acceptance
|
|
|
|
- [x] Portfolio schema and lifecycle rules cover the initial resource classes.
|
|
- [x] The fin-hub authority and exchange contract is jointly reviewed.
|
|
- [x] Helix Forge, Coulomb Social, shared Railiance, and tenant coverage is
|
|
measured.
|
|
- [x] Missing source evidence has live delegated work records.
|
|
- [x] Forecast-to-actual control works for storage and non-storage resources.
|
|
- [x] At least two optimization cases complete the evidence-to-decision loop.
|
|
- [x] Portfolio reporting exposes unknown and unattributed values explicitly.
|
|
|
|
## Post-completion record
|
|
|
|
2026-08-14: `railiance-platform` delivered `RAILIANCE-WP-0016`, the first
|
|
delegated evidence from T04 to land. Folded in: the apps-pg resource record now
|
|
carries real capacity and the `apps-pg-dbbytes-v1` allocation driver, the first
|
|
operational control-cycle record replaced the illustrative apps-pg fixture, and
|
|
coverage moved to `data/portfolio-coverage-2026-08-14.json` with the gap marked
|
|
delivered and its three residual unknowns still open.
|
|
|
|
The real evidence exposed a design gap in the T05 schema: v0.1 required a number
|
|
for every cost field, so recording genuine usage without a booked cost was
|
|
impossible without inventing one. Schema 0.2 permits null costs, a null
|
|
unattributed amount, a technical `unattributed_share`, and null measurements;
|
|
the comparator reports unknown amounts as `data_quality` rather than computing a
|
|
variance. Existing 0.1 records were not rewritten. Evidence:
|
|
`docs/evidence/RESOURCE-WP-0003-apps-pg-evidence-foldin-2026-08-14.md`.
|
|
|
|
## Standing gate
|
|
|
|
Both optimization cases are `blocked_on_evidence` by design: the mechanism is
|
|
complete and proven, and the facts it needs are owed by other repositories.
|
|
The first *decided* case requires either the Host Europe account evidence that
|
|
`RESOURCE-WP-0002-T03` and `RAIL-HO-WP-0008` are waiting on, or the cluster
|
|
utilization history in `RAIL-BS-WP-0014`. The first real forecast-to-actual
|
|
variance requires a booked cost from `fin-hub` under `FIN-WP-0004`. None of
|
|
these is a gap in this workplan; each is a live delegated record with an owner.
|