swayfx-mosaic/tooling/probes/step20c-overnight/matrix/run.py
fy59 30dc3182ab docs(mosaic): record partial STEP20C overnight evidence
Record the annotated rebuild, bounded graphics matrices, private release-shape smoke, and remaining integration gates. Preserve STEP20C NEXT and production multi-output NOT YET SUPPORTED.
2026-10-14 01:47:19 +02:00

24 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""Exactly one reviewed matrix case, with preserved failures and owned cleanup."""
import argparse,json,time
from pathlib import Path
from gate import begin,LAB,verify,read,durable
from protocols import RUNS
from engine import Session
from cases import CAMPAIGN
p=argparse.ArgumentParser();p.add_argument('run_id',choices=RUNS);a=p.parse_args()
auth=begin(a.run_id);s=None;status='INCONCLUSIVE';failure=None
try:
s=Session(RUNS[a.run_id],auth);s.start();status=CAMPAIGN[RUNS[a.run_id]['campaign']](s)
except Exception as e:
failure=dict(type=type(e).__name__,message=str(e));status='INCONCLUSIVE'
finally:
if s is not None:status=s.cleanup(status,failure)
state=read(LAB/'matrix'/a.run_id/'actions.json')
if s is not None:
state['consumed_observed']=dict(capture=sum(e['kind']=='capture' for e in s.events),
click=sum(e['kind']=='injection' and e['action']!='move' for e in s.events),
move=sum(e['kind']=='injection' for e in s.events),grab=sum(e['kind']=='injection' and e.get('grab',False) for e in s.events))
durable(LAB/'matrix'/a.run_id/'actions.json',state);verify()
print(json.dumps(dict(id=a.run_id,status=status,failure=failure)))
raise SystemExit(1 if failure else 0)