Кейс · пилот в теневом режиме

12 реальных багов, 3 исполнителя, 36 квитанций.

Мы провели полный пилот на багах, которые реально исправили мейнтейнеры трёх open-source библиотек на Python. Два ИИ-агента получили только баг-репорт. ResultBond оценил каждый фикс скрытыми тестами, а нас самих оценила независимая проверка — полный набор тестов мейнтейнеров.

97.2%совпало с тестами мейнтейнеров36 вердиктов
0хороших фиксов забраковановерный код ни разу не получил FAIL
1промах, разобран нижетребование, которого не было в баг-репорте
36/36квитанций провереноEd25519, проверяется на /verify
4,8 смедиана до квитанциитри прогона на фикс

Как шёл пилот

  1. 1

    12 задач из реальной истории

    Каждая задача — коммит, в котором мейнтейнеры toolz, boltons или more-itertools исправили баг. Репозиторий зафиксирован на состоянии прямо перед фиксом.

  2. 2

    Скрытые тесты, сначала доказанные

    Тесты «чёрного ящика», переписанные из тестов мейнтейнеров. Инструмент пилота не запускался, пока каждый скрытый тест не падал на коде с багом, — он отклонил три наших первых черновика.

  3. 3

    Три исполнителя на баг

    Настоящий фикс мейнтейнеров и два ИИ-агента разной силы, которые видели только баг-репорт в один абзац. Всего 36 фиксов.

  4. 4

    Независимый оценщик

    Каждый фикс также прогнали через полный модуль тестов мейнтейнеров из коммита с фиксом — сотни тестов, которые ResultBond для решения не использовал. С этим «ревьюером» мы и сравниваем наши вердикты.

Все фиксы

Вердикты финального раунда. Приняты 11 из 12 фиксов агента A и 10 из 12 фиксов агента B; все фиксы мейнтейнеров прошли.

12/12Фикс мейнтейнеровфиксов принято
11/12Агент Aфиксов принято
10/12Агент Bфиксов принято
ЗадачаФикс мейнтейнеровАгент AАгент B
boltons-guiderator-size
Неверные ограничения размера в GUIDerator
PASSPASSPASS
boltons-histogram-iqr
Гистограммы падают при нулевом межквартильном размахе
PASSPASSPASS
boltons-pearson-zero
Stats.pearson_type падает при нулевом знаменателе
PASSPASSPASS
boltons-relative-time-tz
relative_time() ломается на датах с часовым поясом
PASSPASSPASS
mi-bucket-miss
bucket выдумывает ключи при поиске
PASSFAILсломаны существующие тестыFAILсломаны существующие тесты
mi-ichunked-zero
ichunked() ведёт себя неправильно при n=0
PASSPASSнезависимая проверка: FAILFAILсломаны существующие тесты
mi-one-falsy-exception
one() и only() игнорируют «ложные» пользовательские исключения
PASSPASSPASS
mi-running-window
размер окна в running_* не проверяется
PASSPASSPASS
toolz-interpose-empty
interpose() падает на пустой последовательности
PASSPASSPASS
toolz-reduceby-init
reduceby() должна принимать вызываемый init
PASSPASSPASS
toolz-topk-stable
topk() нестабильна при равных ключах
PASSPASSPASS
toolz-topk-tuple
topk() должна возвращать кортеж собственной реализацией
PASSPASSPASS

Чему нас научил пилот

Ограничения

Финальный раунд глазами клиента: отчёт пилота, каждую квитанцию можно проверить в один клик (отчёт на английском). Задачи, патчи и сырые данные обоих раундов — партнёрам пилота по запросу.

Запустите это на своих багах.

Четыре недели, 30–50 реальных багов, любой агент. Бесплатно в теневом режиме.