Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a1046e-fcad-7ea3-bf36-361fc8d679e8
29 lines
1.5 KiB
Python
29 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify the source declaration against the pinned owner schema/profile."""
|
|
import argparse
|
|
import hashlib
|
|
import json
|
|
from pathlib import Path
|
|
import subprocess
|
|
import sys
|
|
|
|
root = Path(__file__).resolve().parents[1]
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--contract-schema", type=Path, default=root.parent / "info-tech-canon/infospace/schemas/emission-cadence.schema.yaml")
|
|
parser.add_argument("--checker", type=Path, default=root.parent / "net-kingdom/tools/emission-cadence-profile/emission_cadence_profile.py")
|
|
args = parser.parse_args()
|
|
declaration = root / "docs/contracts/decision-emission-cadence.json"
|
|
document = json.loads(declaration.read_text())
|
|
extension = document["extensions"]["flex-auth"]
|
|
if not args.contract_schema.is_file() or not args.checker.is_file():
|
|
parser.error("owner schema/profile is unavailable; supply explicit --contract-schema and --checker paths")
|
|
if hashlib.sha256(args.contract_schema.read_bytes()).hexdigest() != extension["contract"]["schema_sha256"]:
|
|
parser.error("owner schema changed; review and update the declared schema pin before assessment")
|
|
command = [sys.executable, str(args.checker), "--contract-schema", str(args.contract_schema)]
|
|
inventory = extension["inventory"]
|
|
for event in inventory["load_bearing"]:
|
|
command += ["--load-bearing", event]
|
|
for event in inventory["rare_load_bearing"]:
|
|
command += ["--rare-load-bearing", event]
|
|
command += [str(declaration)]
|
|
sys.exit(subprocess.run(command, check=False).returncode)
|