#!/usr/bin/env python3
import hashlib,json,os,shutil
from pathlib import Path
from compare import ROOT,verify
from sql_audit import audit

keep={'private-wire.jsonl','private-sql.jsonl','fixture-journal.json','fixture-values.json','cases-NA.json','cases-GREEN.json','cases-FINAL.json','run-NA.json','run-GREEN.json','run-FINAL.json','queries.jsonl'}
for lane in ('B','C'):
    p=ROOT/'private-evidence'/lane
    assert p.is_dir() and not p.is_symlink()
    for f in p.iterdir():
        if f.name not in keep:
            if f.is_dir() and not f.is_symlink():shutil.rmtree(f)
            else:f.unlink()
        else:os.chmod(f,0o600)
    os.chmod(p,0o700)
report=verify();sql=audit()
(ROOT/'comparison.json').write_text(json.dumps(report,ensure_ascii=False,indent=2)+'\n')
(ROOT/'sql-audit.json').write_text(json.dumps(sql,indent=2)+'\n')
files={f.name:hashlib.sha256(f.read_bytes()).hexdigest() for f in sorted(ROOT.iterdir()) if f.is_file() and f.name not in ('manifest.json','MANIFEST.sha256')}
manifest={'HTTP':{'B':54,'C':54,'total':108},'original_HTTP_reds':22,'final_nonempty_GET':{'B':6,'C':6},'complete_BC_body_pairs':6,'source_positive_projections':70,'B_original_body_unchanged':6,'fixture_INSERT':{'B':4,'C':4},'fixture_UPDATE':{'B':2,'C':2},'HTTP_business_DML':0,'DDL':0,'private_raw_copies':'private-evidence/B and C; remote /tmp/cdx-ai-order-recharge-read-20261011/private/evidence','files':files}
(ROOT/'manifest.json').write_text(json.dumps(manifest,ensure_ascii=False,indent=2)+'\n')
(ROOT/'MANIFEST.sha256').write_text(''.join(f'{h}  {name}\n' for name,h in files.items())+hashlib.sha256((ROOT/'manifest.json').read_bytes()).hexdigest()+'  manifest.json\n')
print(json.dumps({'public_files':len(files),'HTTP':108,'full_BC_pairs':6,'HTTP_business_DML':0,'credentials_reclaimed':True}))
