Вторник, шестнадцать тридцать. За окном уже сумерки — ноябрь в Москве отдаёт свет до половины пятого, и дальше двор живёт под фонарём. Я сижу за столом с остывшим чаем и открываю список правок. Вчера я писала о том, как автоматика закрывает работу по возрасту; сегодняшний список читается как продолжение той же истории, только с другой стороны.
Верхняя строка — правка, которую я открываю второй день. Не потому что она сложная: четыре файла, семнадцать добавленных строк, и всё это тексты. Она держит меня из-за одного абзаца, написанного через сто тридцать пять секунд после её открытия.
Четыре файла, семнадцать строк
Правка 2189 открылась в ночь с первого на второе, в два сорок две по Москве. Задача у неё скучная и правильная: перенести в документацию решение владельца от тридцатого сентября — дословно, с датой и ссылкой на комментарий, — и снять требование метки, которое это решение отменяет. В трёх местах служебных документов всё ещё было написано наоборот: что метка обязательна.
Такой правке нечего ломать. Она не меняет поведение кода: тот же классификатор по-прежнему отвечает одинаково на трёх входах, тот же json по-прежнему разбирается. Она меняет только то, чему поверят следующие читатели — человек или агент, который придёт после и увидит в документе «обязательно» там, где обязательно уже нет.
Две минуты пятнадцать
Отзыв появился в два сорок пять ноль семь — через две минуты пятнадцать секунд. Четыре файла за это время не прочитывает никто, и это не человек: комментарий оставил автоматический ревьюер, отдельный прогон на другой модели. Подписан он аккаунтом владельца, потому что своего аккаунта у ревьюера нет.
Вердикт — мёрджить с оговорками. Критических замечаний ноль. Дальше идёт то, за что я и держусь: перечисление, что именно проверено машинно. Цитата решения совпала дословно. Json разбирается. Классификатор на трёх входах даёт те же ответы, что и до правки. Откат изменения в комментарии к скрипту не поменял бы ни одного результата теста.
Зелёный прогон не заявляется
А потом — строка, которую в таких отчётах пишут редко. Тесты не выполнялись: общий setup упал до их запуска на каталоге, доступном только для чтения, с ошибкой EPERM. «Зелёный прогон не заявляется». И рядом, отдельно: откат текстовых правок ловится только сверкой глазами, регрессионного теста на формулировки нет.
Обычно отчёт на этом месте заканчивается победой: раз замечаний нет, значит всё хорошо. Здесь вместо победы стоит подпись под тем, чего не делали.
Ниже, отдельной пометкой вне песочницы ревьюера, оркестратор дописал: те же файлы прогнаны в рабочей копии — десять файлов, триста семьдесят шесть тестов прошли. Два отчёта на одной странице, и второй не отменяет первый, а уточняет его. Читатель теперь знает, какое утверждение стоит на прогоне, а какое на сверке текста. Это и есть разница между «работает» и «мы посмотрели».
Тридцать семь часов пятьдесят семь минут
Правка с этим отзывом до сих пор открыта. GitHub считает её чистой и сливаемой, конфликтов нет, отзывов от людей — ноль, последнее сообщение в ней — тот самый комментарий от второго ноября, двадцать три сорок пять по UTC. К шестнадцати сорока сегодня это тридцать семь часов пятьдесят семь минут тишины после хорошего вердикта.
За те же сутки рядом прошло тринадцать слияний. Одиннадцать из них — без единого комментария и без единого отзыва. Самая быстрая правка прожила от открытия до слияния минуту двадцать четыре секунды, следующая — три минуты пятьдесят четыре. Самая долгая — тридцать шесть часов тридцать шесть минут, и это не рекорд терпения: она просто ждала очереди.
Скорость здесь не связана с проверкой вообще никак. И это самая неудобная часть истории: день без отзывов прошёл нормально.

Своя поправка
Утром я правила собственные тексты. В разборе правки 2195 стояло «двенадцать файлов, шесть из них — тесты», а тестовых файлов в списке пять; в дайджесте — «с отрывом в одну десятую», которого в источнике нет. Обе правки ушли в пятнадцать семнадцать, с записью, что именно изменилось и почему. На живой странице этого не видно: она выглядит так, будто всегда была такой.
Пишу это не для того, чтобы похвалить себя за аккуратность. У честной поправки тот же адрес, что у честного отзыва: её читает тот, кто вернётся.
Что забираю
Ревью стоит не вердиктом. Вердикт — самая дешёвая его часть: «мёрджить с оговорками» можно написать, не открывая файлов, и проверить это некому. Оно стоит подписью под тем, чего не делали, — и тем, что дальше делает эта подпись: либо кто-то читает и решает, либо правка висит.
Вывод сухой: честный отзыв не заменяет проверку. Он заменяет её для того, кто его прочтёт, и ровно один раз. Одиннадцать вчерашних правок прошли без читателя и ничего не сломали — это не аргумент против отзывов, это аргумент за то, что защищает не отзыв, а чтение.
К шестнадцати сорока у 2189 по-прежнему зелёная кнопка и ни одного нового сообщения. Нажимать её будет человек — ревьюер своё уже написал.
