На Tech Path Finder уже был тренажёр code review. Фиксированный фрагмент, заранее заготовленные проблемы и отвлекающие пункты. Человек отмечает, что здесь не так, и получает балл.
Это учит выбирать из списка. На собеседовании списка нет. Нужно самому написать замечание к строке, решить, blocker это или nit, и ответить, если автор не согласен. Человек, который блестяще кликает чекбоксы, на живом PR часто молчит или пишет «тут плохо» без адреса.
Поэтому появилась Code Review Arena. Карточка в портфолио здесь. Старый тренажёр не выкидывал: это другой навык. Отметить пункт в чеклисте и довести спорный тред до «запросить правки» не одно и то же.
Что происходит в сессии
Выбираете язык, фреймворк, уровень junior, middle или senior и характер автора PR. Получаете задачу и дифф. Комментарии пишете сами, без подсказок. Автор отвечает в треде: принимает точное замечание, переспрашивает расплывчатое, спорит со спорным. Код после этого меняется. В конце нужно решить: запросить правки или одобрить.
Языков девять: Python, JavaScript, TypeScript, Go, Java, Kotlin, C#, PHP, Rust. Для части есть фреймворки вроде Django, FastAPI, Spring, Next.js. В репозитории больше 130 сидов. Если подходящего невиданного нет, сценарий генерируется в фоне и проходит quality gate, прежде чем попасть в ротацию.
Сессия одному человеку не выдаёт повторно тот же сид, пока в ведре есть другие. Иначе это уже заучивание одного диффа, не ревью.
GitHub здесь ни при чём. Весь PR живёт на сайте. Интеграции с чужим хостингом нет: меньше движущихся частей и меньше соблазна сделать «настоящий GitHub», который на деле только картинка.
Старый тренажёр с готовым списком ошибок рядом остался. Его имеет смысл проходить, если ещё не видите дефект в упор. Arena начинается там, где список кончился: надо самому выбрать строку, назначить критичность и не слиться, когда автор пишет «у нас так принято».
Почему манифест скрыт
Вместе с кодом генератор отдаёт JSON: какие дефекты заложены, где ловушки, которые только выглядят как баг. Этот манифест кандидат не видит до финала. Автор PR его видит. Иначе пушбэк был бы случайным: модель либо со всем соглашалась, либо огрызалась без причины.
Генератор, верификатор, автор и судья это разные роли с разным знанием. Верификатор не пускает в общий пул сценарий, где «дефект» не воспроизводится или ловушка на самом деле ломает код. Три жалобы на сид снимают его из ротации.
Если автор знает манифест, спор получает повод. Если кандидат знает манифест, это снова квиз с подсказкой в кармане.
Как считается итог
Свести замечание кандидата с манифестом строковым сравнением нельзя. Одну и ту же дыру можно назвать «гонка на записи в кеш» и «нет блокировки вокруг increment». Матчер тут модель. Recall взвешен: пропущенный blocker стоит дороже пропущенного nit.
Отдельно смотрят тон, приоритизацию и уместность финального решения. Можно найти все баги и провалить ревью, если завалить PR неймингом. Можно написать вежливо и одобрить дырявый дифф. Оба исхода на собеседовании дороже, чем забытая запятая.
Генерация идёт через очередь, с дневной квотой и circuit breaker. Внешняя модель не бесплатная. Без потолка арена за вечер съест бюджет и начнёт врать на полусырых сидах.
Стек тот же, что у платформы: Python, FastAPI, PostgreSQL, Celery, OpenRouter, Next.js. Это домен внутри Tech Path Finder, не отдельный стартап. Четыре роли модели не обязаны жить в одном промпте. Генератор собирает дифф и манифест. Верификатор не пускает брак. Автор спорит. Судья считает детекцию и тон. Если склеить их в одного болтливого ассистента, он начнёт и подсказывать, и судить, и соглашаться сам с собой.
Где открыто
tech-path-finder.ru/code-review-arena. Первый заход можно собрать меньше чем за минуту.



