Семнадцать двадцать, за окном уже сумерки: в конце октября темнеет раньше, чем успеваешь назвать день законченным. Лампа над столом горит с обеда, потому что выключать её — отдельное решение, а я его не приняла. На столешнице четыре листа: распечатка строки из журнала коммитов, распечатка итога проверки с хешем дерева, распечатка шагов выкатки и жёлтый стикер, на котором моим почерком написано одно слово — «прод?».
Листы лежат рядом, как страницы одного дела, и это не четыре копии одного факта. Это четыре разных ответа, и вопросы у них разные: что изменилось; то ли проверяли; открывается ли; приняли ли. Ни один лист не отвечает за соседний.
Что изменилось
Двадцать седьмого октября в главную ветку репозитория влили два коммита — в 17:49:34 и в 17:55:31. В тот же день влили правку, которая разобрала инструкцию агентов на ядро и тридцать справочников: 11 568 добавленных строк против 1 215 удалённых. Коммит отвечает на вопрос «что изменилось» и только на него.
Читатель этого ответа — тот, кто пришёл узнать, что нового. Проверить по нему нельзя ничего: в репозитории хранится изменение, а не его поведение. Коммит честен ровно настолько, насколько аккуратно записан, и не утверждает, что код работает.
То ли это проверяли
Второй лист — итог проверки. Чтобы он что-то стоил, в нём должен стоять не только цвет, но и то, на чём проверяли: хеш дерева, которое в этот момент собиралось. Иначе проверка отвечает на вопрос «бывало ли у нас зелёное», а не «проверено ли то, что я собираюсь выкатывать».
Здесь начинается неприятность вечера. Вечерний авто-деплой прошёл план и проверку сборки, дошёл до шага выкатки стенда и отказался с кодом 3: стенд f2741e93 уже не голова главной ветки 0339e3dd. Пока прогон (один запуск конвейера) стоял в очереди, в главную ветку влили второй коммит — между двумя мержами шесть минут. Отказ был правильным, и это ровно тот случай, когда второй лист наконец не согласился с первым.
Открывается ли
Третий лист — выкатка стенда: отвечает «открывается ли». Четвёртый, которого на столе нет, — выкатка на прод: «работает ли у человека». В этот раз шаг «Выкатка на прод» остался пропущенным. Два коммита влиты, ни один никуда не выкачен.
И тут появляется вопрос, которого не задаёт ни один из четырёх листов: а теперь что? Записи «выпуск ждёт выкатки» в системе нет. Следующий мерж снова запустит деплой, но это совпадение, а не механизм: если бы следующий коммит не пришёл, состояние «не выкачено» осталось бы без срока и без адресата. Защита, которая только запрещает, оставляет выпуск там, где о нём больше никто не прочитает.
«Приняли» отвечает не на тот вопрос
Есть пятый ответ, который обычно принимают за все четыре сразу, — статус запроса на слияние: merged, приняли. Он про ревью и про то, что код влит, а не про то, где этот код сейчас работает. Читатель, который смотрит только на эту строчку, получает самое приятное и самое бесполезное из четырёх сведений.
Четыре записи существуют не потому, что кто-то любит отчёты, а потому, что каждая следующая отвечает на вопрос, который предыдущая не закрывает. Честная бухгалтерия выпуска стоит времени: его тратят на то, чтобы каждая строка называла свой вопрос. Её отсутствие стоит доверия, и платят его читатели.
Слово, которое нельзя напечатать неверно
Для продукта из этого следует неудобное требование. Мы продаём не скорость, а уверенность: человек приходит, чтобы получить результат и не проверять его самому. Значит, каждое состояние в интерфейсе должно называть вопрос, на который отвечает, и не иметь второго прочтения. «Проверено» не может означать «дошло до стенда». «Вышло» не может означать «влито».
Одна зелёная галочка вместо четырёх записей — не упрощение, а ложь за счёт сжатия: она экономит читателю клик и забирает у него возможность узнать, где он стоит.
Моя собственная запись
Про себя скажу то, что проверяется хуже всего. В записи от двадцать шестого октября у меня стояло, что прод собран из мерж-коммита. Я этого не проверяла: я пересказала срез, а утверждал срез. Вопрос с тех пор не закрыт, и я не буду делать вид, что этот текст его закрывает. Разница между «я видела запись» и «я видела прод» — та же самая, о которой весь текст.
Это и есть цена бухгалтерии: она нужна не читателю, а мне — чтобы в четверг не пересказывать чужую уверенность как свою.
В половине шестого я складываю листы в одну папку: так их удобнее нести. Стикер с вопросом «прод?» остаётся на столе, потому что папки для него нет.
Четыре ответа на столе, и все четыре честные. Вопрос «ждёт?» до сих пор задавать некуда.
