Проверки

Как Istok превращает фразу «тесты проходят» из сообщения в чате в записанное подтверждение, привязанное к работе.

Когда агент пишет «готово, тесты проходят», это лишь утверждение. Istok позволяет агенту приложить доказательство: какую команду он запустил, с каким кодом она завершилась и что вывела. Здесь объясняется, как записываются эти подтверждения и почему без них работу не завершить.

Выполнения и проверки

Внутри запуска агент выполняет команды через Istok, а не напрямую в своей оболочке. Команды бывают двух видов:

  • Выполнение (run_exec, istok run exec) — команда, которая входит в саму работу, например линтер или генератор кода. Istok сохраняет команду, код завершения и вывод.
  • Проверка (run_validate, istok run validate) — команда, результат которой подтверждает, что работа сделана правильно, например go test ./... или pnpm test. Istok запускает её, сохраняет вывод и по результату записывает пройденную или проваленную проверку.
Запуск
 ├── exec      pnpm lint
 ├── exec      pnpm build
 └── validate  pnpm test   → passed
                               ↓
                    подтверждение для завершения

У обоих видов есть ограничения. Для каждого потока вывода хранится до 1 МиБ; по умолчанию выполнение прерывается через 30 минут, проверка — через 10. Команды получают окружение по белому списку, а не всё окружение родительского процесса. Команды, которые Istok считает опасными, требуют явного разрешения с указанием причины. Подробности — в справке по istok run.

Завершение запуска

Запуск завершается со статусом succeeded, failed, blocked или cancelled. Чтобы завершить его как succeeded, нужна пройденная проверка и ни одного ещё работающего выполнения.

Если автоматической проверки нет — например, изменилась только документация, — агент может завершить запуск без неё, но только явно: он должен об этом заявить и указать причину. Причина сохраняется в запуске.

Завершение задачи

Задача завершается со ссылкой на успешный запуск и проверку из него:

Задача #12
  ↓  взять в работу
Запуск C
  ↓  реализация, validate → passed
Запуск C succeeded
  ↓
Задача #12 выполнена   (запуск C, проверка V)

Поэтому в записи о завершении видно не только то, что задачу пометили выполненной, но и то, как проверяли результат. Как и с запусками, завершить задачу без подтверждения можно только явным исключением с указанием причины.

Проваленные проверки остаются в истории

Проваленная проверка ничего не стирает. Агент исправляет проблему и снова запускает проверку в том же запуске, а неудачная попытка остаётся видна. Если от запуска отказываются, следующий запуск начинается с доступом к этой истории.

Работа вне Istok

Иногда проверка проходит в другом месте — например, в CI или вручную. Для таких случаев есть низкоуровневые инструменты, которые записывают работу постфактум: начать и завершить выполнение, а затем записать для него проверку. Такая проверка получает источник attested, поэтому её не спутать с проверкой, которую Istok вывел из команды, запущенной им самим.

Артефакты

Файлы, которые создаёт запуск, можно записать как артефакты. Istok хранит их вне базы данных, в своей директории данных, держит ссылку на них в запуске и может позже проверить записанный артефакт.

Где посмотреть подтверждения

На странице каждого запуска в веб-интерфейсе перечислены его проверки с командой, статусом и выводом, рядом с выполнениями и контекстом, с которым агент начал работу.

Страница запуска в веб-интерфейсе Istok с пройденными проверками

Как попросить агента завершить работу с доказательствами, рассказано в разделе Работа с агентом. В терминале ту же запись показывает istok run show RUN_ID.