the-custodian/docs/changes/netkingdom-target-2026-10-16/browser-checker-environment-r2/verify_candidate.py
codex e3fad670a1
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Reject generated-only commits / generated-commit-guard (push) Successful in 14s
docs: preserve reviewed NetKingdom session artifacts
2026-11-01 22:49:59 +01:00

20 lines
1.8 KiB
Python

"""Reconstruct exact source candidate and run only synthetic/real-artifact tests."""
import argparse,hashlib,json,os,subprocess,sys,tempfile
from pathlib import Path
p=argparse.ArgumentParser();p.add_argument('--owner-root',type=Path,default=Path('/home/worsch/net-kingdom'));p.add_argument('--warden-root',type=Path,default=Path('/home/worsch/ops-warden'));p.add_argument('--checker-binary',type=Path,default=Path('/tmp/nk-checker-artifact-next-r3/keycape'));args=p.parse_args()
packet=Path(__file__).resolve().parent;manifest=json.loads((packet/'manifest.json').read_text());sha=lambda data:'sha256:'+hashlib.sha256(data).hexdigest()
if sha(args.checker_binary.read_bytes())!=manifest['checker_artifact']:raise SystemExit('checker artifact drift')
with tempfile.TemporaryDirectory(prefix='nk-checker-environment-review-') as directory:
root=Path(directory)
for rel,expected in manifest['fixture_dependencies'].items():
data=(args.owner_root/rel).read_bytes()
if sha(data)!=expected:raise SystemExit('dependency drift '+rel)
dest=root/rel;dest.parent.mkdir(parents=True,exist_ok=True);dest.write_bytes(data)
for rel,expected in manifest['postimages'].items():
data=(packet/'postimages'/rel).read_bytes()
if sha(data)!=expected:raise SystemExit('candidate drift '+rel)
dest=root/rel;dest.parent.mkdir(parents=True,exist_ok=True);dest.write_bytes(data)
env={'PATH':'/usr/bin:/bin','PYTHONPATH':str(args.warden_root/'src'),'NETKINGDOM_FIXTURE_ROOT':str(root),'KEYCAPE_TEST_CHECKER_BINARY':str(args.checker_binary.resolve()),'KEYCAPE_TEST_CHECKER_SHA256':manifest['checker_artifact']}
for command in ([sys.executable,'-m','unittest','discover','-s',str(root/'sso-mfa/k8s/keycape'),'-p','test_keycape*.py','-v'],[sys.executable,str(packet/'test_real_checker_adapter.py')]):
result=subprocess.run(command,env=env)
if result.returncode:raise SystemExit(result.returncode)