import json, os, sys OUT = '.scratch/cockpit-real-data-wayfinding/verify/artifacts/t67' names = ["map-snapshot","infra-base-archives","infra-operating","infra-management","infra-emergency", "mon-overview","mon-distribution","mon-situation","ev-current","ev-history","ev-efficiency", "ev-analysis","ov-monitoring","ov-warning-settings","work-orders"] variants = ["none","d0","d1","dun","d99"] def load(n, v): p = os.path.join(OUT, f"v2-{n}-{v}.json") try: with open(p, encoding='utf-8') as f: return json.load(f) except Exception as e: return {"__load_error__": str(e)} def walk(a, b, path="", out=None, limit=400): if out is None: out = [] if len(out) >= limit: return out if type(a) != type(b): out.append((path, repr(a)[:60], repr(b)[:60])); return out if isinstance(a, dict): for k in sorted(set(a) | set(b)): if k not in a: out.append((path+"/"+k, "", repr(b[k])[:60])); continue if k not in b: out.append((path+"/"+k, repr(a[k])[:60], "")); continue walk(a[k], b[k], path+"/"+k, out, limit) elif isinstance(a, list): if len(a) != len(b): out.append((path+"/len", str(len(a)), str(len(b)))) for i in range(min(len(a), len(b))): walk(a[i], b[i], path+f"[{i}]", out, limit) else: if a != b: out.append((path, repr(a)[:60], repr(b)[:60])) return out for n in names: print("="*100) print(n) for v in variants[1:]: a = load(n,"none"); b = load(n,v) if "__load_error__" in b: print(f" none vs {v}: LOAD ERROR {b['__load_error__']}"); continue d = walk(a,b) print(f" none vs {v}: {len(d)} diff(s)") for p,x,y in d[:12]: print(f" {p}: {x} -> {y}")