25 lines
1.6 KiB
Python
25 lines
1.6 KiB
Python
"""Parent admission after independent source/build review; no evaluator invocation."""
|
|
from pathlib import Path
|
|
import datetime, hashlib, json
|
|
HERE = Path(__file__).resolve().parent
|
|
def record(p):
|
|
b = p.read_bytes()
|
|
return {'path': str(p), 'bytes': len(b), 'sha256': hashlib.sha256(b).hexdigest()}
|
|
build = HERE / 'build-01'
|
|
summary = json.loads((build / 'summary.json').read_text())
|
|
assert summary['passed'] and summary['inputs_unchanged'] and summary['failure'] is None
|
|
assert summary['source_commit'] == '17f1f89fef4a6bf520f4b09a2116548b967d030e'
|
|
for r in summary['outputs']:
|
|
assert record(Path(r['path'])) == r
|
|
files = [p for p in build.rglob('*') if p.is_file()]
|
|
files += [HERE / n for n in ['bundle_converter.rs', 'capture_bundle.py', 'README.md', 'build_converter.py', 'admit_converter.py']]
|
|
files += [HERE.parents[1] / n for n in ['traceability-view-bundle-supplement-review-20260923.md', 'traceability-view-bundle-build-review-20260923.md']]
|
|
admission = {'approved': True, 'source_commit': summary['source_commit'],
|
|
'declared_utc': datetime.datetime.now(datetime.timezone.utc).isoformat(),
|
|
'binary': record(build / 'package/bundle_converter.exe'),
|
|
'records': [record(p) for p in sorted(files)],
|
|
'scope': 'Parent accepts independently reviewed auxiliary build for read-only saved-bundle conversion. Original product gates, evaluator and B/P oracle unchanged. Cargo cache reuse is explicit; runtime checkpoint still required.'}
|
|
with (HERE / 'converter-admission.json').open('x', encoding='utf-8') as f:
|
|
json.dump(admission, f, indent=2); f.write('\n')
|
|
print('Admitted reviewed supplemental converter; native model has not been changed')
|