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

slice_dir=Path(__file__).resolve().parent;private=slice_dir/'private-evidence'
assert not (private/'preflight-manifest.json').exists(),'Sealed preflight is immutable'
(slice_dir/'dedupe-result.json').write_text(subprocess.check_output(['python3',str(slice_dir/'dedupe.py')],text=True))
root=slice_dir.parents[3].parent/'zhctproject/store/application'
files=['p/controller/Nutrition.php','m/controller/Nutrition.php','p/logic/Nutrition.php','m/logic/Nutrition.php','model/Nutrition.php','model/NutritionSet.php','model/NutritionTime.php','model/NutritionCategory.php','model/NutritionStation.php','model/TrainPhase.php','model/Sport.php','model/File.php','model/BaseModel.php','common.php','base/AdminController.php','route.php']
(private/'source-sha.json').write_text(json.dumps({f:hashlib.sha256((root/f).read_bytes()).hexdigest() for f in files},indent=2)+'\n')
manifest={}
for f in sorted(private.iterdir()):
    assert f.is_file() and not f.is_symlink()
    os.chmod(f,0o600);manifest[f.name]={'sha256':hashlib.sha256(f.read_bytes()).hexdigest(),'bytes':f.stat().st_size}
(private/'preflight-manifest.json').write_text(json.dumps(manifest,indent=2)+'\n');os.chmod(private/'preflight-manifest.json',0o600)
print(json.dumps({'files':len(manifest),'sha256':hashlib.sha256((private/'preflight-manifest.json').read_bytes()).hexdigest(),'HTTP':0,'DML':0,'DDL':0}))
