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>
2 KiB
RESOURCE-WP-0003 fin-hub contract preflight
Date: 2026-08-11
Resource-control task: RESOURCE-WP-0003-T02
Fin-hub tasks: FIN-WP-0004-T01, T02, T03, T07, T08, T09
Fin-hub commit: 0034330
Result
Resource-control accepts the authority and schema boundary in the joint v0.1 contract. Fin-hub's remediation was reviewed against the timestamped assessment and its full suite passed:
46 passed, 1 third-party deprecation warning
Resource-control's suite passed after adding its producer-owned schema, forecast exporter, booked-cost consumer validation, and reconciliation seam:
13 passed
resource-control declarations: valid
Cross-repository check
The live immutable backup forecast
data/forecasts/platform-audit-storage-scaleway-base-2026-08.json was processed
through both implementations using:
- resource-control
tools/financial_exchange.py::forecast_records; and - fin-hub
fin_hub.services.exchange::ingest_resource_forecast.
Observed result:
{
"producer_consumer_records": 12,
"idempotent_store_rows": 12,
"payloads_equal": true,
"booked_cost_gate": "awaits attributable provider fact"
}
Replaying the same forecast did not add rows. All canonical record payloads matched, including IDs, periods, cost breakdown, attribution, assumptions, and provenance reference.
Residual acceptance gate
This preflight proves the planning direction; it is not evidence of purchased
storage or actual spend. FIN-WP-0004-T05 remains waiting until
RESOURCE-WP-0002 produces a real provider financial fact attributable to
platform:audit-storage. That round trip must then demonstrate:
- exactly one authoritative booked fact in fin-hub;
- a non-ledger projection consumed by resource-control;
- a join to the immutable forecast and technical observation;
- infrastructure-cost variance with the financial fact ID preserved; and
- duplicate delivery and any correction leaving effective totals correct.
Synthetic records remain suitable for automated contract tests but cannot satisfy this operational gate.