/home/cube/projects/richard/hermes-agent/.venv/bin/python -c $'\nimport hashlib,json,sys,xml.etree.ElementTree as ET\nfrom pathlib import Path\nr=Path(sys.argv[1])\ndef j(n):\n p=r/f"{n}.junit.xml";x=ET.parse(p).getroot();ss=[x] if x.tag=="testsuite" else x.findall("testsuite");d={k:sum(int(float(s.attrib.get(k,0))) for s in ss) for k in ("tests","failures","errors","skipped")};d["passed"]=d["tests"]-d["failures"]-d["errors"]-d["skipped"];d["sha256"]=hashlib.sha256(p.read_bytes()).hexdigest();return d\na=j("control-a-direct-normal");b=j("control-b-unshare-net-normal-home");ct=j("control-c-footer-tmp-home");cn=j("control-c-footer-normal-home");bout=(r/"control-b-unshare-net-normal-home/stdout.txt").read_text();ctout=(r/"control-c-footer-tmp-home/stdout.txt").read_text();classes={"dns_resolution_failed":bout.count("DNS resolution failed"),"blocked_unsafe":bout.count("Blocked unsafe"),"url_safety":bout.count("url_safety")};ok=a=={**a,"tests":22} if False else (a["tests"]==22 and a["passed"]==22 and a["failures"]==a["errors"]==0 and b["tests"]==21 and b["failures"]==21 and b["errors"]==0 and (classes["dns_resolution_failed"]>0 or classes["blocked_unsafe"]>0) and ct["tests"]==1 and ct["failures"]==1 and "/tmp/wd" in ctout and "~/wd" in ctout and cn["tests"]==1 and cn["passed"]==1 and cn["failures"]==cn["errors"]==0);o={"candidate_digest":sys.argv[2],"control_a":a,"control_b":b,"control_b_failure_markers":classes,"control_c_tmp_home":ct,"control_c_normal_home":cn,"candidate_causality_count":0 if ok else None,"invalid_harness_proven":ok,"status":"PASS" if ok else "FAIL"};print(json.dumps(o,sort_keys=True,separators=(",",":")));raise SystemExit(not ok)\n' /home/cube/projects/richard/traning\ coach/.omo/evidence/task26/task26-gate20-corrected-harness-4e9962be49b72951c3b9ed7e1a4fe36d0ca03e757872ae03364c1ab7a790f32b-st_01a0080c/artifacts 4e9962be49b72951c3b9ed7e1a4fe36d0ca03e757872ae03364c1ab7a790f32b