#!/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','preflight.json','run-journal.json','run-result.json','read-CONTROL.json','read-GREEN.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':70,'C':54,'total':124},'original_C_list_red':16,'after_fix_readonly':{'B_CONTROL':16,'B_GREEN':16,'C_GREEN':16},'complete_BC_body_pairs':38,'positive_original_projections':92,'B_original_body_unchanged':16,'fixture_INSERT':{'B':18,'C':18},'business_DML':{'B':12,'C':12},'DDL':0,'private_raw_copies':'private-evidence/B and C; remote /tmp/cdx-ai-goods-comment-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':124,'full_BC_pairs':38,'SQL_DML_per_side':12,'credentials_reclaimed':True}))
