43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
"""Publish only small sealed conditional-audit evidence, not bulk backup."""
|
|
import json
|
|
from pathlib import Path
|
|
import shutil
|
|
import sys
|
|
|
|
ROOT = Path('/data/digital-drosophila')
|
|
MODEL = ROOT / 'models/male-cns-lif/kc-drive-audit-v1'
|
|
EXP = ROOT / 'experiments/phase4ah-kc-drive-audit'
|
|
sys.path.insert(0, str(MODEL))
|
|
from context import check, digest, save
|
|
sys.path.insert(0, str(ROOT / 'models/male-cns-lif/terminal-scope-diagnostic-v1'))
|
|
from diagnostic import manifest_check
|
|
|
|
|
|
def main():
|
|
check()
|
|
verification = {str(p.relative_to(ROOT)): manifest_check(p, digest) for p in (MODEL, EXP)}
|
|
assert all(v['pass'] for v in verification.values())
|
|
registry = ROOT / 'registry/phase4ah-kc-drive-audit'
|
|
registry.mkdir(exist_ok=False)
|
|
records = []
|
|
manifest = json.loads((EXP / 'manifest.json').read_text())
|
|
for p in [EXP / r['path'] for r in manifest['files']] + [EXP / 'manifest.json', EXP / 'checksums.sha256']:
|
|
if p.stat().st_size > 4 * 1024**2 or p.suffix not in ('.json', '.csv', '.md', '.sha256'):
|
|
continue
|
|
target = registry / 'evidence' / p.relative_to(EXP)
|
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
with p.open('rb') as src, target.open('xb') as dst:
|
|
shutil.copyfileobj(src, dst)
|
|
assert digest(target) == digest(p)
|
|
records.append(dict(source=str(p.relative_to(ROOT)), copy=str(target.relative_to(registry)),
|
|
bytes=p.stat().st_size, sha256=digest(p)))
|
|
save(registry / 'evidence-index.json', records)
|
|
save(registry / 'seal-verification.json', verification)
|
|
with (EXP / 'REPORT.md').open('rb') as src, (ROOT / 'docs/progress/phase4ah-kc-drive-audit.md').open('xb') as dst:
|
|
shutil.copyfileobj(src, dst)
|
|
print(json.dumps(dict(copied=len(records), verification=verification)), flush=True)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|