Релиз

\chapter{Chapter 01}

Самолет был старый. Ан-24. В салоне пахло керосином и мерзлыми яблоками. Ящик стоял в хвосте, под сеткой.

Архитектор смотрел в иллюминатор. Стекло было исцарапано льдом, и за ним ничего не было.

Ему исполнилось тридцать шесть. Квадрат шести. Сумма первых трех кубов.

В кармане зажужжал телефон. Экран вспыхнул белым в темном салоне. Менеджеры, Slack, клиенты.

Он положил палец на кнопку питания и держал.

Одна секунда. Две. Три.

Экран погас.

Полоса была обледенелой. Шасси ударили жестко, самолет повело, потом выровняло. Когда открыли дверь, в салон вошел холод. Шестьдесят девятая параллель.

Пилот достал из ящика яблоко и протянул ему.

— Держи.

Он взял и положил в карман.

Снег под трапом скрипел сухо и звонко. В рюкзаке были палатка, горелка и парашют. Семнадцать килограммов.

Над горизонтом дрожало зеленое.

Он сел на рюкзак посреди поля и достал сигарету. Спичка вспыхнула и осветила скулы и глаза. Ветер задул ее сразу. Вторую он зажигать не стал.

Было темно. Он сидел и чувствовал, как земля тянет его вниз. Девять и восемь десятых метра в секунду за секунду.

Потом он вспомнил про яблоко. Оно было как камень, и зубы соскользнули. Он подышал на него, попробовал еще раз и бросил.

Он расстегнул куртку и сунул яблоко за пазуху. Ему надо было оттаять.

\chapter{Chapter 02}

Четверг, половина третьего. Дождь шел с утра.

Дверь открылась тихо. Детектив не встал. Он кивнул на стул.

— Он прыгнул в субботу, — сказала она.

— Знаю.

Она была в темном пальто. На плечах блестели капли.

— Все говорят — несчастный случай.

— Кто все?

— В компании. В полиции. — Она села. — Вы ведь его знали. Учились вместе.

Детектив посмотрел на свои руки.

— Что вы хотите знать?

— Кто это сделал.

— А если он сам?

— Тогда почему. — Она положила на стол блокнот. Черный, с номером на корешке. — В его мире у всего была причина. Если он себя стер, значит, условие стало истинным. Я хочу знать условие.

Он молчал.

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

— Он такой был.

— Один мальчик принес ему код. Он прочитал семь строк и сказал, что это мина и она сработает через два года. Мальчик уволился через неделю.

Детектив встал и подошел к окну. Дождь падал на город ровно, без ветра.

— Я спросила его, — сказала она ему в спину, — а если что-то пойдет не по плану. Он сказал: тогда фичу допишет кто-то другой. — Она помолчала. — В ту субботу он проверял всё три раза.

— Один раз — доверие, два — контроль.

— Вы помните.

Он не ответил.

— Начну с парашюта, — сказал он через минуту. — Стропы. Укладка. Кто имел доступ. Потом полезу в его репозиторий. Последние коммиты, переписку. Он не умел уходить, не записав ошибку.

Она встала.

— Сколько это будет стоить?

— Смотря как глубоко он закопал ключи.

Конверт лег на стол. Сверху фотография. Архитектор у самолета, ранец в руке, улыбается. Поверх ткани маркером нарисован черный крест. Он заходил за край клапана и обрывался.

— Когда первый отчет?

— Когда будет во что поверить.

Дверь закрылась так же тихо, как открылась.

Детектив поднес фотографию к лампе. Потом положил ее лицом вниз и сел.

\chapter{Chapter 03}
Край аэродрома «Северный-2». Шлагбаум на въезде был поднят и примерз в этом положении. Снег лежал ровно, техника его еще не тронула.

Укладчик сидел на перевернутом ящике из-под запчастей. Руки в перчатках лежали на коленях. Он смотрел на свои унты.

— Он приехал в пятницу, — сказал укладчик. — За час до конца смены. Сказал: я сам всё сделаю, просто посиди рядом.

Детектив стоял, засунув руки в карманы. Ветер здесь шел с открытого поля и не встречал ничего на сотню километров.

— Ты видел, что он делал?

— Всё видел. — Укладчик поднял голову и сощурился от белизны. — Купол раскладывал так, будто он стеклянный. Каждую стропу перебрал пальцами. Глаза закроет и ведет ладонью от купола до свободных концов. Профи укладывается за пятнадцать минут и не глядя. Он полтора часа сидел.

— Раньше так делал?

— Нет.

Детектив достал фотографию. На морозе бумага стала жесткой.

— Его работа?

Укладчик взял снимок, посмотрел на крест и вернул.

— Нет. Он меток не признавал. Говорил: метки — костыли для тех, кто своим рукам не верит. Всё в голове держал. — Он вытер перчатку о колено. — И посмотри, как нарисовано. Он бы такой ранец в руки не взял.

— Телефон брал?

— Оставил в машине. На панели. Сказал: сегодня без прерываний. Ключи бросил на сиденье, дверь не запер. Я ему говорю — угонят. Он рукой махнул. Тут, говорит, некому.

Ветер пронес над полосой снежную пыль. В ангаре хлопнул лист железа.

— Прыгал один, — сказал укладчик. — Взял старый Ан-2. Пилот говорил, просил курс строго на север. От зоны выброски подальше. Хотел чистое поле. Без разметки.

Небо было низкое и серое.

— Он спрашивал что-нибудь перед вылетом? Про технику, про погоду?

Укладчик поворошил снег носком унта.

— Спросил, сколько падать с трёх тысяч шестисот, если купол не выйдет.

— И что ты сказал?

— Секунд семьдесят.

— А он?

— Усмехнулся. Сказал: достаточно. И пошел к самолету.

Детектив открыл блокнот. Ручка на холоде царапала бумагу и не писала.

— Достаточно для чего? — спросил укладчик.

Детектив закрыл блокнот.

— Не знаю.

Он пошел к машине. Снег скрипел под ботинками.

Детектив сел за руль и захлопнул дверь. Достал фотографию из кармана и положил на соседнее сиденье лицом вверх. Больше он ее не трогал.

Мотор он не заводил. Через лобовое стекло была видна полоса, и за ней поле, ровное и пустое до горизонта.

Он посмотрел на часы и стал считать.

На семьдесятой секунде он повернул ключ.



\chapter{Chapter 04}

Замок был кастомный. Ригель отошел с щелчком, и щелчок прозвучал на весь коридор. Детектив вошел и не стал включать свет.

В квартире было темно, сухо и жарко. Пахло разогретым пластиком и пылью. Гудело ровно, на одной ноте.

Мебели не было. Вдоль стены стояли четыре серверных шкафа. На панелях мигали зеленые и янтарные диоды. Кабели лежали связками — желтые, синие, черные, стянутые хомутами через равные промежутки. На каждой связке бирка. На полу коробки с платами, подписанные маркером: FSM, INVAR, SEQ.

Всю стену напротив окон занимала доска. Схемы, стрелки, графы состояний. В углу, отдельно от остального, одно слово в двойном контуре: «СБОЙ».

Справа шли два столбца, выведенные ровным почерком.

Обработка запроса без потери данных.

Автопереключение на резерв.

Полная воспроизводимость.

Механизм безопасного завершения — подчеркнуто трижды.

Отсутствие единой точки отказа.

Полная наблюдаемость.

Слово «идемпотентность» было обведено столько раз, что маркер процарапал покрытие.

Ниже — таблица сценариев. Инициализация. Обработка запроса. Частичный отказ. Под таблицей, отдельно, был вписан нулевой: принудительное завершение при сохранности инвариантов. Почерк здесь стал хуже.

«Если инварианты нарушены — систему останавливают. Работа в условиях лжи недопустима».

Середина доски была стерта. Не смазана рукавом — вытерта начисто, по границе схемы, так что каркас зависимостей остался, а внутри было пусто. Ластик лежал на полочке, ровно посередине, между маркерами.

Стол был разобран. Ящики выдвинуты, бумаги отложены в сторону стопкой. Детектив постоял над ним и ничего не тронул.

Фотографии лежали россыпью. Северное сияние, десятки снимков одного и того же квадрата неба. На одном была видна тень человека у Ан-2. Детектив перевернул снимок. На обороте дата, время и приписка: «Проверить второй контур».

Рядом лежал раскрытый блокнот. Детектив взял его и стал листать.

Почерк был тот же, с маленькими засечками на «т» и «д».

\begin{verse}
С каждым днём стаи птиц всё ниже и ниже,
Спицы чёрных ветвей тяжелее нести.
Я стою у порога — случайный и лишний,
А мой дом — за шлагбаумом, в конце пути.

День рождения. Небо гудит над краем,
Осыпаясь зелёным битым стеклом.
Светит голая лампа, углы обнажая,
И трещит под плафоном сухим фитильком.

Слюда легла на воду в том ручье,
Чужие тени бродят в тёмном сквере.
Но где же я? Где день на моём столе —
С его дыханьем, запахом, неверьем?
\end{verse}

Дальше страницы были заполнены до конца. Детектив читать не стал.

На последней странице было две строки. Первую он знал.

«Если сломается — кто-то другой допишет».

Ниже, тем же почерком, но буквы шли неровно:

«Я дописал».

Детектив держал блокнот и не закрывал его.

На третьем курсе они сдавали одну работу на двоих. Ночью Архитектор нашел у него ошибку — не в коде, в самой постановке. Стер всё и начал заново, за четыре часа до сдачи. Он тогда сказал: успеем. Успели.

Детектив закрыл блокнот и положил его на место, как лежал.

Серверы гудели. Диоды мигали по очереди, слева направо.

Он так и не включил свет. Постоял еще минуту в сухом жару и вышел, заперев дверь.



\chapter{Chapter 05}

Детектив держал планшет на коленях. Экран светился тускло. Запись из переговорной он взял у коллеги Архитектора. Дата — за три недели до прыжка.

Он включил.

Архитектор сидел в переговорной двадцать минут. Менеджер опаздывал.

Стеклянные стены, белый маркер, ни одной царапины. На столе — бутылка воды, ноутбук и блокнот. Блокнот он не открывал. Работал. За окном рос новый бизнес-центр — стальной скелет в сером небе.
Дверь открылась.

— Извини, созвон затянулся, — менеджер плюхнулся в кресло, даже не взглянув на него. — Короче, у нас новости от заказчика.

Он кивнул.

— Сроки горят. Они хотят релиз через две недели.

— Через две недели будет только каркас.

— Значит, сделаем каркас. Зальём на прод, потом допишем.

— На прод? — он поднял взгляд от ноутбука. Впервые за всё время.

Менеджер развёл руками:

— Бизнесу нужно показать цифры. Инвесторам. Ты понимаешь.

— А если упадёт?

— Поднимем. У тебя же там отказоустойчивость заложена?

— Отказоустойчивость не работает на сыром коде. Если упадут три сервиса одновременно, система не успеет перестроиться. Мы не писали ещё половину сценариев деградации.

Менеджер отмахнулся:

— Слушай, вероятность мала. Заказчик согласен на риск.

— Заказчик не знает, на что соглашается.

— Он платит. Он решает.

За стеклом кто-то прошёл с бумажными стаканчиками.

Архитектор открыл блокнот и тут же закрыл. Убрал ручку.

— Ты хочешь, чтобы я выкатил сырец с дырами?

— Я хочу, чтобы мы уложились в сроки. Остальное — твой профессионализм. Сделай красиво, но быстро.

— Это исключает друг друга.

Менеджер вздохнул. Посмотрел на часы.

— Я понимаю, — сказал он тихо, сжав руки на столе. — Сроки поставили руководство и заказчик без твоего участия. Так получилось. Теперь нам нужно как-то решить эту проблему. Слушай, все так работают. Выкатываем, потом чиним. Это нормально.

— Это не нормально. Это значит, что мы сознательно поставляем дефект.

— Это значит, что мы успеваем.

Он встал. Подошёл к стеклянной стене. Посмотрел на стальной скелет за окном. Тот рос, но без бетона — просто рёбра, которые сложатся при первой нагрузке.

Повернулся.

— Я не пишу код, чтобы у меня были заказчики. У меня есть заказчики, чтобы писать код.

Менеджер замер.

— В смысле?

— В прямом. Код должен работать. Долго. Без сбоев. Если для этого нужно потерять одного заказчика — я потеряю. Если нужно переписать всё с нуля — перепишу. Но я не буду заливать в прод то, что сломается в первый же час пик.

Менеджер открыл рот, но ничего не сказал.

— Релиз через месяц. — Голос ровный. — С полным покрытием тестами и схемой деградации. Или не будет вообще.

— Ты понимаешь, что они уйдут к конкурентам?

— Пусть уходят. Через полгода их система ляжет. Они вернутся. А наша будет стоять.

Блокнот взят. Шаг к двери.

— Подожди. — Менеджер встал. — А если это приказ?

Остановился. Не оборачиваясь:

— Тогда я уволюсь.

Дверь открылась. За ней гудел опенспейс — пятьдесят человек, пригвождённых к мониторам.

Вышел.

Лифт. Телефон. Сообщение от коллеги: «Ну что?»

Ответ: «Месяц. Или ничего». Отправил.

Лифт поехал вниз. За стеклом проплывали этажи — люди, пишущие код, который завтра упадёт.

Смотрел на них и думал о парашюте. О том, как однажды проверял стропы в пустом ангаре. Там тоже был выбор: быстро или правильно.

Выбрал правильно. Тогда.

Выберет и сейчас.





\chapter{Chapter 06}

У него было два плана прыжка. Один в голове. Другой в телефоне, а телефон лежал в машине, выключенный.

Раньше было иначе. База, полный борт, небо тесное от людей. Сцеплялись в формации, рука в руку. В этом была математика, и рядом всегда был кто-то.

Потом он ушел во фрифлай. Головой вниз. Земля шла навстречу, воздух давил в грудь.

Потом стало тридцать шесть.

Воздух над тундрой был прозрачный и неподвижный. Пилот вывел самолет на курс.

— Три тысячи шестьсот, — сказал выпускающий. — Выходишь один.

— Да.

Он проверил снаряжение. Ремни. Шпилька. Потом прошел по тому же кругу еще раз и остановился.

Шаг к люку. Встал на обрез.

Внизу не было ни аэродрома, ни огней. Белое поле, и над горизонтом проступало сияние.

День рождения — под северным сияньем…

— Пошел, — сказал он себе.

Люк опустел.


\chapter{Chapter 07}

Она открыла дверь сразу. Будто стояла в коридоре.

В квартире было тепло. Слишком тепло после тундры. Пахло кофе. Кофе она не предложила.

Сели на кухне. Он поставил на пол пакет и сложил руки на столе.

— Был на аэродроме, — сказал он. — Говорил с укладчиком. С пилотом. Был у него дома.

Она молчала.

— Он уложил парашют сам. Полтора часа. Телефон оставил в машине. Прыгнул один.

— Дальше.

— Укладывал в пятницу. Прыгал в субботу.

Она подняла голову.

— Где ранец был ночь?

— В шкафу в подсобке. Шкаф не запирается.

Она долго ничего не говорила. Дождь шел по стеклу.

— Крест у него был за спиной, — сказал детектив.

Он положил на стол блокнот.

— Это было у него дома. Стихи. И последняя страница.

Она открыла. Читала долго, хотя там было две строки.

— Это его почерк.

— Да.

— Буквы неровные.

— Он писал на холоде. Или нет. Я не знаю.

Она закрыла блокнот и накрыла ладонью.

— Что вы мне скажете? Несчастный случай?

— Я скажу, что у меня нет ответа.

— Мне нужен ответ.

— У меня есть факты. Их немного, и они не сходятся.

Она встала и подошла к окну. Стояла спиной.

— Он мне говорил: если система не дает сбоев, это не значит, что она правильная. Это значит, что ты не нашел баг.

Она взяла со стола конверт и протянула ему.

— Это не аванс.

Он взял.

— Блокнот оставьте, — сказал он. — Он ваш.

Она кивнула, не оборачиваясь.

У двери он остановился.

— Крест на ранце, — сказала она в стекло. — Он мог сам?

— Нет.

— Тогда кто?

Детектив не ответил. Он взялся за ручку. За спиной стало слышно дождь, а потом сквозь дождь — короткий сдавленный звук. Она стояла у окна и не оборачивалась.

Он не подошел.

— Там дальше в блокноте еще стихи, — сказал он от двери. — Много. Я прочитал две страницы и закрыл.

Она не обернулась.

Он вспомнил про пакет уже в прихожей.

— Это его. Из машины, с аэродрома. Телефон, ключи, куртка.

Он поставил пакет на пол и вышел.

Она развязала пакет, когда за ним закрылась дверь. Куртка пахла керосином. В правом кармане лежало яблоко.

Оно было твердое. На боку остался след зубов.

Она села за стол и держала его в ладонях. На кухне было жарко. Через несколько минут яблоко запотело.


Рецензии