RunBoth сравнивает две версии Python-кода. Что именно он может поймать после правки ИИ
Когда ИИ меняет одну функцию, ревью обычно смотрит на diff, а тесты — на заранее придуманные сценарии. RunBoth предлагает ещё одну проверку: запустить старую и новую версии кода на одних входных данных и показать конкретный случай, в котором результаты разошлись.

Внедрим ИИ в работу вашей компании
Бесплатно разберём процессы и подготовим план запуска ИИ.

Что здесь проверяется
По описанию в публичном репозитории RunBoth берёт две версии из Git, подбирает входы для изменённых Python-функций и сравнивает не только возвращаемое значение. В список наблюдений входят исключения, предупреждения, стандартный вывод и ошибки, изменение аргументов и состояние объекта.
Если различие найдено, инструмент должен вывести «свидетеля»: аргументы, старый результат и новый результат. Такой вход можно обсудить в pull request, превратить в регрессионный тест или признать ожидаемым следствием правки.
Инструмент ищет не «хороший код», а конкретный вход, на котором старое и новое поведение расходятся.
Это полезно и для косвенных изменений: функция total может не меняться в diff, но начать считать иначе, потому что вызывает изменённую rate. Именно такие эффекты проект заявляет как цель сравнения.
Как читать результат
В README описаны три исхода. changed означает, что найден свидетель различия. no_change at budget N означает только то, что среди N сгенерированных входов по семи каналам различий не обнаружилось. abstained означает, что проверку нельзя было выполнить, и причина должна быть показана.
- Changed
Разберите вход-свидетель: это ожидаемое изменение или регрессия.
- No change at budget N
Зафиксируйте предел проверенной выборки; это не доказательство отсутствия различий.
- Abstained
Проверьте причину: нестабильность, время работы или невозможность сгенерировать вход.
Различие между «не нашли» и «не смогли проверить» — главная полезная деталь подхода. Зелёный результат с ограниченным budget нельзя читать как гарантию безопасности изменения.
Почему это не замена тестам
Авторы прямо пишут, что RunBoth выполняет настоящий код на конкретных значениях и не доказывает отсутствие различий. Функциональная проверка в текущем описании относится к Python; изменённые файлы на других языках проект обещает явно назвать, а не молча пропустить.
Среда выполнения ограничивает сеть и запись в файловую систему для защиты от случайностей, но README отдельно предупреждает: это не граница безопасности для враждебного кода. У инструмента есть Git hook и GitHub Action, но установка в процесс не отменяет обычное ревью.
Что проверить до применения
README проекта заявляет отсутствие зависимости от тестового набора, сети, ИИ-модели и внешних зависимостей, а также приводит собственные результаты red-team проверки. Это сведения автора проекта: редакция не устанавливала RunBoth и не воспроизводила эти измерения.
- Покрытие
Какие Python-функции инструмент сумел проверить, а от каких воздержался.
- Время PR
Укладывается ли выбранный budget генерации в привычное время ревью.
- Полезность
Похожи ли найденные свидетели на реальные регрессии, которые команда готова обсуждать.
- Ограничения
Не запускается ли непроверенный код там, где sandbox проекта не является достаточной защитой.
О материале и источниках
Технические свойства сверены по README публичного репозитория RunBoth. Show HN служил только сигналом обнаружения; редакция не запускала инструмент и не подтверждает его собственные измерения.
- RunBoth — GitHub README
Первичный источник проекта: заявленные функции, семь каналов сравнения, результаты и ограничения.
Опубликовано