from pathlib import Path
import json,subprocess,hashlib,datetime,time,os
R=Path('/mnt/data/work4110/site');E=R/'доказательства/редакция-4.11.0';rows=[]
names=['испытать-интеграцию-Node-4-11.py','испытать-события-интерфейса-4-11.py','испытать-позднее-знание-интерфейса-4-11.py','испытать-загрузку-наборов-4-11.py','испытать-интерфейс-4-11-повтор.py','испытать-отказы-интерфейса-повтор-4-11.py','испытать-службу-4-11.cjs','испытать-уведомления-службы-4-11.py','описать-покрытие-действий-4-11.py','проверить-офлайн-страницы-4-11.py']
for i,n in enumerate(names):
 cmd=['node' if n.endswith('.cjs') else 'python','инструменты/'+n];t=time.monotonic();begin=datetime.datetime.now(datetime.timezone.utc).isoformat();log=E/'журналы'/f'интерфейс-{i:02d}.log'
 with log.open('w') as f:
  try:p=subprocess.run(cmd,cwd=R,stdout=f,stderr=subprocess.STDOUT,timeout=270,env={**os.environ,'PYTHONDONTWRITEBYTECODE':'1'});code=p.returncode
  except subprocess.TimeoutExpired:code=124;f.write('\nТаймаут оболочки, не успешное завершение.\n')
 rows.append({'UTC':begin,'команда':cmd,'код':code,'секунд':round(time.monotonic()-t,2),'журнал':log.relative_to(R).as_posix(),'SHA256_сценария':hashlib.sha256((R/'инструменты'/n).read_bytes()).hexdigest(),'предел':'Изолированный DOM с явными подменами; не настоящая браузерная навигация, системное сохранение или полный клавиатурный путь.'})
 (E/'интерфейсные-запуски.json').write_text(json.dumps(rows,ensure_ascii=False,indent=2)+'\n');print(i,code,n,flush=True)
