feat: restate the backup case in ITC-CAP terms; add evidence basis; publish consumption-mode signal
Three things. 1. CANON RESTATEMENT (info-tech-canon's ask after accepting our demand) data/capability/platform-audit-storage.json restates the backup case against ITC-CAP 0.2.0: requirement with profile, targets and the failure-domain constraint that decided the procurement; two provisions (data.object and data.backup); all four data.backup evidence hooks satisfied and measured; and consumption in native units — GB, hours, tokens — with unknown never zero. tools/capability.py reads their capabilities.yaml directly rather than copying it, so drift in either repo fails here. The requirement asks D5, the provision is D4, and the review reports below_requirement rather than inflating maturity. 2. EVIDENCE BASIS (tools/basis.py, docs/evidence-basis.md) Every value declares how it was obtained on an ordered scale: invoiced, measured, quoted, derived, projected, estimated, assumed, unknown. A derived value resolves to the weakest basis among its inputs, so precise arithmetic cannot launder weak assumptions. First application is a finding about our own biggest decision: the Scaleway vs Hetzner comparison, EUR 29.14/month stated to the cent, grades "indicative" — 1 of 4 load-bearing values evidenced, weakest "assumed". The direction is robust; the magnitude is a model output. The cheapest fix is recording real operator hours, not better arithmetic. 3. CONSUMPTION-MODE SIGNAL (railiance-platform RAILIANCE-WP-0017) settlement.py gains a consumption-mode command projecting statements into the signal they consume; make consumption-mode PERIOD=YYYY-MM publishes data/consumption-mode/current.json. Currently an empty list: no live charges for 2026-09, so no entity is restricted. Publishing the empty list makes that an assertion rather than an absence, which their contract distinguishes. The validator fails if the published signal is stale. 185 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
d09924b3fc
commit
13c2b82281
11 changed files with 1163 additions and 3 deletions
|
|
@ -8,7 +8,8 @@ from entities import REQUIRED_ENTITY_IDS, load_register, load_terms, require_ent
|
|||
from optimization import validate_case
|
||||
from portfolio import validate_record
|
||||
from portfolio_report import build as build_portfolio_report
|
||||
from settlement import close_fixture, close_live
|
||||
from capability import load_canon, review as review_capability
|
||||
from settlement import close_fixture, close_live, consumption_mode_signal
|
||||
|
||||
|
||||
def load(path: str) -> dict:
|
||||
|
|
@ -138,6 +139,25 @@ def main() -> int:
|
|||
assert any("reef-storage" in note for note in view.get("notes") or [])
|
||||
if view["reef_id"] == "reef-storage":
|
||||
assert view["role"] == "storage_substrate"
|
||||
# Capability restatements bind to the live ITC-CAP catalog rather than a
|
||||
# copy of it, so drift in either repository fails here.
|
||||
canon = load_canon()
|
||||
capability_records = [load(str(p)) for p in Path("data/capability").glob("*.json")]
|
||||
assert capability_records, "no capability restatement present"
|
||||
for record in capability_records:
|
||||
report = review_capability(record, canon)
|
||||
assert report["provisions"], f"{record['record_id']} declares no provision"
|
||||
for provision in report["provisions"]:
|
||||
# Unknown consumption must be named, never silently absent.
|
||||
assert provision["consumption"]["count"] > 0
|
||||
backup = next(
|
||||
p for r in capability_records for p in review_capability(r, canon)["provisions"]
|
||||
if p["capability"] == "data.backup"
|
||||
)
|
||||
assert backup["evidence"]["complete"], "the backup provision must satisfy every declared hook"
|
||||
signal = consumption_mode_signal(close_live(Path("."), "2026-09"), "2026-09")
|
||||
published = load("data/consumption-mode/current.json")
|
||||
assert published == signal, "consumption-mode signal is stale; run make consumption-mode"
|
||||
print("resource-control declarations: valid")
|
||||
return 0
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue