import subprocess,json,os,datetime,time,hashlib
from pathlib import Path
R=Path('/mnt/data/work4110/site'); E=R/'доказательства/редакция-4.11.0'; rows=[]
commands=[(['node','инструменты/измерить-ресурсы-4-11.cjs','--рабочий'],{'RESOURCE_RUN':str(i)},'ресурс-'+str(i)) for i in range(1,4)]
commands += [(['node','инструменты/измерить-предметные-границы-4-11.cjs','совместно'],{},'совместно'),(['node','инструменты/измерить-конфликты-4-11.cjs','2048'],{},'конфликты-2048'),(['node','инструменты/измерить-конфликты-4-11.cjs','2049'],{},'конфликты-2049'),(['node','инструменты/измерить-поток-4-11.cjs'],{},'поток')]
for cmd,env,label in commands:
 row={'команда':cmd,'параметры':env,'UTC':datetime.datetime.now(datetime.timezone.utc).isoformat(),'код_SHA256':hashlib.sha256((R/'ресурсы/сценарии/доказательный-контур.js').read_bytes()).hexdigest()};t=time.monotonic()
 with (E/'журналы'/('окончательный-'+label+'.log')).open('w') as f:
  try: p=subprocess.run(cmd,cwd=R,env={**os.environ,**env},stdout=f,stderr=subprocess.STDOUT,timeout=180);row['код_завершения']=p.returncode
  except subprocess.TimeoutExpired: row['код_завершения']='таймаут 180 с'
 row['секунд']=round(time.monotonic()-t,3);rows.append(row);(E/'окончательные-ресурсные-запуски.json').write_text(json.dumps(rows,ensure_ascii=False,indent=2)+'\n');print(label,row['код_завершения'],flush=True)
