#!/usr/bin/env python3 """Run shell suites from a detached worktree, capture every exit.""" import pathlib, subprocess, json, datetime, sys root=pathlib.Path.cwd() if root == pathlib.Path('/mnt/storage/src/mosaic-stack'): raise SystemExit('gate refuses canonical checkout') out=pathlib.Path(sys.argv[1]); out.mkdir(parents=True,exist_ok=True) results=[] for suite in sorted(root.glob('scripts/test-*.sh')): began=datetime.datetime.now(datetime.timezone.utc).isoformat() with (out/(suite.stem+'.txt')).open('w') as log: p=subprocess.run(['bash',str(suite)],cwd=root,stdout=log,stderr=subprocess.STDOUT,timeout=600) row={'suite':str(suite.relative_to(root)),'exit':p.returncode,'began':began,'ended':datetime.datetime.now(datetime.timezone.utc).isoformat()} results.append(row) (out/'shell-results.json').write_text(json.dumps(results,indent=2)+'\n') print(json.dumps(row),flush=True) sys.exit(any(r['exit'] for r in results))