Implement local decision delivery and reconcile blocked workplan requirements
Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a1046e-fcad-7ea3-bf36-361fc8d679e8
This commit is contained in:
parent
257a83e997
commit
3cb1cfaedf
25 changed files with 1258 additions and 50 deletions
29
tools/verify_emission_cadence.py
Normal file
29
tools/verify_emission_cadence.py
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#!/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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue