Files
ARCADIA-Studio/harness/experiments/wrapped-label-20261001/evidence/scripts/check-wrapped-model.py
T

37 lines
1.9 KiB
Python

from pathlib import Path
import copy, hashlib, json, sys
assert len(sys.argv) == 4
original, saved, output = map(Path, sys.argv[1:])
assert not output.exists()
sha = lambda path: hashlib.sha256(path.read_bytes()).hexdigest()
assert sha(original) == '9db1015369f450d5810c96a01fddb8a009d57f6aafbda5182703f15ded23d9c8'
before, after = [json.loads(p.read_bytes()) for p in [original, saved]]
diagram = '00000000-0038-4000-8000-000000000001'
edge = '63009b5f-539e-5914-b630-ec6b7fefb4d5'
old_routes = before['diagrams'][diagram]['routes']
routes = after['diagrams'][diagram]['routes']
assert not any(r['edge'] == edge for r in old_routes)
changed = [r for r in routes if r['edge'] == edge]
assert len(changed) == 1
route = changed[0]
assert route['waypoints'] == []
assert route.get('source_attachment') is None and route.get('target_attachment') is None
assert set(route) <= {'edge','waypoints','label','source_attachment','target_attachment'}
label = route['label']
assert label['fraction'] == 0.55
assert set(label) == {'fraction','offset'} and set(label['offset']) == {'x','y'}
# Declared native delta30/20px at rounded Fit52%, not a geometry-derived oracle.
assert 0.515 <= 0.525
assert 62.591065 + 30/0.525 - 1 <= label['offset']['x'] <= 62.591065 + 30/0.515 + 1
assert 20/0.525 - 1 <= label['offset']['y'] <= 20/0.515 + 1
restored = copy.deepcopy(after)
restored['diagrams'][diagram]['routes'] = [r for r in routes if r['edge'] != edge]
assert restored == before, 'Complete Project must differ only by declared target route label'
receipt = {'status':'PASS', 'original_sha256':sha(original), 'saved_sha256':sha(saved),
'saved_bytes':saved.stat().st_size, 'declared_edit':route,
'complete_project_equal_after_removing_only_declared_route':True,
'scope':'F30px right/20px down at displayed52%; no extra formatting field persisted'}
with output.open('x',encoding='utf-8') as f: json.dump(receipt,f,indent=2);f.write('\n')
print(json.dumps(receipt,indent=2))