#!/usr/bin/env python3 """Read-only real E2 transition replay; raw PNGs/logs remain outside Git.""" import json from pathlib import Path import re from PIL import Image from transition import validate_applied_standard_transition, source_bindings from predicates import protocol, geometry, popup_pixels, reference from model import Provenance,require from support import sha,verify HISTORICAL=Path('/home/fy59/swayfx-mosaic-static-nested-runtime-pvn0osxm') SEALS={'source-sha256.txt':(60,'263f5dbee5e96f2c49619802d063115f792718f6aeb71fa41c58c73b83eb8c91'), 'evidence-sha256.txt':(178,'e8b2307612ce2402ff9b31e68b50a47d666ca38cd8cce1d67096297f8129034a')} def historical_inputs(): for name,(count,digest) in SEALS.items(): p=HISTORICAL/'results'/name require(sha(p)==digest and verify(p)['entries']==count,'historical-seal') events=[json.loads(l) for l in (HISTORICAL/'run/events.jsonl').read_text().splitlines()] replies=[e for e in events if e.get('args')==['[con_id=10] layout splith']] require(len(replies)==1,'single-historical-transition');reply=replies[0] text=(HISTORICAL/'run/compositor.log').read_text() handling="Handling command 'layout splith'" require(text.count(handling)==1,'historical-command-handling') after=text.split(handling,1)[1] # Lower bound is previous actual runner event; upper bound is first actual # monotonic compositor record after handling. Exact request time was omitted. previous=max(e['ns'] for e in events if e['ns']