import hashlib,json,os,subprocess,sys
from pathlib import Path

slice_dir=Path(__file__).resolve().parent;private=slice_dir/'private-evidence';phase=sys.argv[1]
assert phase in ('original','final');target=private/(phase+'-manifest.json');assert not target.exists(),'Do not overwrite sealed evidence'
def capture(label,command,code):
    result=subprocess.run(command,capture_output=True,text=True);assert result.returncode==code,(result.returncode,result.stderr)
    (private/(label+'.json')).write_text(result.stdout)
if phase=='original':
    capture('original-native',['python3',str(slice_dir/'verify-http.py'),'--native-date'],0)
    capture('original-legacy',['python3',str(slice_dir/'verify-http.py')],2)
    runtime='/tmp/cdx-nutrition-product10-B-20261011/'
    for label,files,code in [('tdd-original',['source/application/p/logic/Nutrition.php','source/application/m/logic/Nutrition.php'],2),('tdd-candidate',['P-Nutrition.candidate.php','M-Nutrition.candidate.php'],0)]:
        capture(label,['docker','exec','zhctapp_v2_0','/usr/local/php7.3/bin/php',runtime+'DateResponseContract.check.php',*[runtime+f for f in files]],code)
else:capture('final-verification',['python3',str(slice_dir/'verify-http.py'),'--suffix=-retest'],0)
manifest={}
for f in sorted(private.rglob('*')):
    assert not f.is_symlink()
    if f.is_dir():os.chmod(f,0o700);continue
    os.chmod(f,0o600);manifest[str(f.relative_to(private))]={'bytes':f.stat().st_size,'sha256':hashlib.sha256(f.read_bytes()).hexdigest()}
target.write_text(json.dumps(manifest,indent=2)+'\n');os.chmod(target,0o600)
print(json.dumps({'manifest':target.name,'files':len(manifest),'sha256':hashlib.sha256(target.read_bytes()).hexdigest()}))
