Files
EscapistsReintroduced/docs/evidence/playtest-refresh-2026-10-03-crash-start/freeze.py
T
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

16 lines
1.6 KiB
Python

from pathlib import Path
import sys,json,hashlib,shutil,subprocess
R=Path('/home/jakub/devel/escapistsrereintroduced');B=Path('/tmp/erri-playtest-crash-2020');F=R/'.build/playtest-source-2026-10-03-crash-start';V=R/'docs/evidence/crash-start-2026-10-03/validation';sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest();load=lambda p:json.loads(p.read_text())
sys.path.insert(0,str(R/'tools'));from source_manifest import addon_manifest
inputs=load(V/'suite-inputs.json');suite=load(V/'suite-result.json');assert suite['exit']==0 and suite['inputs_unchanged'] and suite['regression_programs']==307
for n,v in load(V/'post-suite-docs.json').items():assert inputs[n]==v['before_sha256'];inputs[n]=v['after_sha256']
for n,h in inputs.items():assert sha(R/n)==h,n
authored=addon_manifest(R);assert authored==load(B/'authored.json')==load(R/'docs/evidence/native-2026-10-03-crash-prison-default/source-sha256.json')
assert not F.exists();F.mkdir()
for n,h in inputs.items():
p=F/n;p.parent.mkdir(parents=True,exist_ok=True);shutil.copyfile(R/n,p);assert sha(p)==h
for n,h in inputs.items():assert sha(R/n)==h
assert addon_manifest(F)==authored
baseline={'files':inputs,'authored':authored,'staged_diff_sha256':hashlib.sha256(subprocess.check_output(['git','diff','--cached','--binary'],cwd=R)).hexdigest(),'frozen_root':str(F),'suite_reused_from':str(V),'suite_result_sha256':sha(V/'suite-result.json')}
(B/'baseline.json').write_text(json.dumps(baseline,indent=2)+'\n');(F/'frozen-source.json').write_text(json.dumps(authored,indent=2)+'\n');(B/'frozen-inputs.json').write_text(json.dumps(inputs,indent=2)+'\n');print('Frozen',len(authored),'authored files and',len(inputs),'total inputs')