Files
ARCADIA-Studio/harness/experiments/focus-optical-20261001/evidence/helpers/run-focus-oracle.py
T

33 lines
1.9 KiB
Python

from pathlib import Path
import datetime, hashlib, json, subprocess, sys
root = Path('C:/ar-focus-01a0d717')
assert Path.cwd().resolve() == root
checker = root / '.local/verify-focus-native.py'
expected = '8b88f148e6a4137375d9784494a15c894c45bb8f3c2379ea2bc954e68c61421f'
digest = lambda p: hashlib.sha256(p.read_bytes()).hexdigest()
assert digest(checker) == expected
attempt = root / '.local/focus-oracle-attempt01'
attempt.mkdir()
start = datetime.datetime.now(datetime.timezone.utc).isoformat()
with (attempt / 'stdout.log').open('xb') as out, (attempt / 'stderr.log').open('xb') as err:
result = subprocess.run([sys.executable, str(checker)], cwd=root, stdout=out, stderr=err)
receipt = {'source': '38789512626cb24f78f274998977fc8c6cf960d1',
'checker_sha256': expected, 'checker_unchanged': digest(checker) == expected,
'start': start, 'finish': datetime.datetime.now(datetime.timezone.utc).isoformat(),
'exit_code': result.returncode, 'stdout_bytes': (attempt / 'stdout.log').stat().st_size,
'stderr_bytes': (attempt / 'stderr.log').stat().st_size}
if result.returncode == 0:
report = root / '.local/focus-native/independent-oracle.json'
receipt['report_sha256'] = digest(report)
receipt['cases'] = {case: {'captures': len(value['captures']), 'nodes': value['nodes'],
'ports': value['ports'], 'edges': value['edges'],
'warnings': len(value['diagnostics']), 'focus_gain': value['focus_gain']}
for case, value in json.loads(report.read_bytes())['cases'].items()}
with (attempt / 'result.json').open('x', encoding='utf-8') as output:
json.dump(receipt, output, indent=2); output.write('\n')
print(json.dumps(receipt, indent=2))
if result.returncode:
print((attempt / 'stderr.log').read_text(encoding='utf-8'))
assert result.returncode == 0 and receipt['checker_unchanged'] and receipt['stderr_bytes'] == 0