import hashlib,json,shutil
from pathlib import Path
P=Path(__file__).resolve().parent
pins=json.loads((P/'execution-pins.json').read_text());archive=P/'private/tools-original';archive.mkdir(exist_ok=True)
for name,sha in pins.items():
    target=archive/name
    if target.exists(): assert hashlib.sha256(target.read_bytes()).hexdigest()==sha,name
    else:
        data=(P/name).read_bytes()
        if name=='launch.php': data=data.replace(b",'final-read'",b'')
        assert hashlib.sha256(data).hexdigest()==sha,(name,'initial execution version unavailable')
        target.write_bytes(data);target.chmod(0o600)
retry=json.loads((P/'execution-pins-retry.json').read_text());target=P/'private/tools-retry';target.mkdir(exist_ok=True)
for name,sha in retry.items():
    assert hashlib.sha256((P/name).read_bytes()).hexdigest()==sha
    shutil.copy2(P/name,target/name);(target/name).chmod(0o600)
print(json.dumps({'initial_tool_plan_files':len(pins),'retry_tool_plan_files':len(retry),'initial_sha_reconstruction':'launch only removes added final-read phase; exact initial hash matched'}))
