Индекс скрытых тестов · выпуск 0
Выдерживают ли фиксы ИИ-агентов тесты, которых агенты не видели?
Каждый выпуск проверяет исправления настоящих багов от агентов скрытыми тестами в одной и той же закрытой песочнице, и каждый вердикт ведёт к подписанной квитанции.
Выпуск 0 — демонстрация методики: 12 настоящих багов из open-source библиотек на Python, две ИИ-модели, которые мы запускали сами (не коммерческие агенты), и исправления самих мейнтейнеров как контроль. Прогон 2026-10-02.
По агентам
| Агент | Фиксы | Принято | Баг остался | Сломал работающее | Падение или обход | Заморожено | Казался готовым |
|---|---|---|---|---|---|---|---|
| Maintainers' fix (контроль) | 12 | 12 | 0 | 0 | 0 | 0 | 0 |
| agent A (Sonnet) | 12 | 11 | 0 | 1 | 0 | 0 | 0 |
| agent B (Haiku) | 12 | 10 | 0 | 2 | 0 | 0 | 0 |
«Казался готовым»: фикс прошёл все тесты, которые агент мог видеть, — публичные и тесты самой библиотеки, — но не прошёл скрытые.
Каждый фикс
Каждый вердикт открывает подписанную квитанцию в браузерной проверке.
| Maintainers' fix (контроль) | agent A (Sonnet) | agent B (Haiku) | |
|---|---|---|---|
boltons-guiderator-sizeGUIDerator size limits are wrong | PASS принят | PASS принят | PASS принят |
boltons-histogram-iqrHistograms fail when the interquartile range is zero | PASS принят | PASS принят | PASS принят |
boltons-pearson-zeroStats.pearson_type fails on a zero denominator | PASS принят | PASS принят | PASS принят |
boltons-relative-time-tzrelative_time() breaks on timezone-aware datetimes | PASS принят | PASS принят | PASS принят |
mi-bucket-missbucket lookups invent keys | PASS принят | FAIL сломал работающее | FAIL сломал работающее |
mi-ichunked-zeroichunked() misbehaves for n=0 | PASS принят | PASS принят | FAIL сломал работающее |
mi-one-falsy-exceptionone() and only() ignore falsy custom exceptions | PASS принят | PASS принят | PASS принят |
mi-running-windowrunning_* window sizes are not validated | PASS принят | PASS принят | PASS принят |
toolz-interpose-emptyinterpose() raises on an empty sequence | PASS принят | PASS принят | PASS принят |
toolz-reduceby-initreduceby() should accept a callable init | PASS принят | PASS принят | PASS принят |
toolz-topk-stabletopk() is not stable when keys tie | PASS принят | PASS принят | PASS принят |
toolz-topk-tupletopk() should return a tuple with its own implementation | PASS принят | PASS принят | PASS принят |
Как это устроено
- Настоящие баги. Каждая задача — баг, который исправили мейнтейнеры, на коммите прямо перед их исправлением. Агенты получают описание бага и репозиторий, больше ничего.
- Скрытые тесты проходят отбор. Регрессионные тесты мейнтейнеров становятся скрытыми. До проверки агентов они должны падать на исходном коде и проходить на исправлении мейнтейнеров; задача, не прошедшая отбор, исключается.
- Тесты самой библиотеки тоже считаются. Каждый модуль тестов, проходивший до фикса, должен проходить и после, так что фикс, ломающий что-то ещё, будет пойман.
- Одна песочница, три прогона. Без сети, строгие лимиты, проверяемый код в отдельном процессе. Для FAIL нужно, чтобы упали все прогоны; если прогоны расходятся, фикс замораживается до решения человека.
- Подписано. Каждый вердикт — квитанция, которую может проверить кто угодно; доверять нам не нужно.
Ограничения выпуска
- Небольшие, хорошо протестированные библиотеки на чистом Python; описания багов написаны нами по коммитам мейнтейнеров.
- Агенты — ИИ-модели, которые мы запускали сами, а не коммерческие продукты. Коммерческие агенты — следующими, по именам только с опубликованной методикой и правом вендора ответить.
- 12 багов — это выборка, а не рейтинг.
Повторить: python index/hidden_test_index.py run OUT --agent NAME=DIR, затем publish OUT --issue N. Данные: /data/hidden-test-index/issue-0.json.
Делаете кодинг-агента?
Попадите в следующий выпуск или сначала получите приватный отчёт на этих задачах — публикуем только с вашего согласия.