18+
реклама
18+
Бургер менюБургер меню

Оливия Кросс – Слепое пятно (страница 1)

18

Оливия Кросс

Слепое пятно

ЭПИГРАФ

Подпись живёт дольше

человека.

Чернила не меняются.

Меняется только то, что

однажды написанное начинает

работать само.

Глава 1

Ветер был сырым и упрямым. Он шёл с залива, не делая разницы между бетоном полосы, сеткой периметра и людьми у КПП. Марков остановился на жёлтой линии, на секунду потерял баланс – поток толкнул в бок – и перехватил рюкзак, чтобы лямка не соскользнула с плеча. Пластик пропуска в ладони был холодным, как только что вынутый из морозилки металлический калибр. Он приложил карточку к считывателю. Турникет подумал дольше, чем следовало.

Дежурный посмотрел поверх стекла. Лицо у него было красное от ветра, глаза – внимательные, без желания разговаривать.

– Марков? – спросил он, будто сверял не имя, а интонацию.

– Да.

Зелёный огонёк щёлкнул, турникет поддался. Плечом – чуть мягче, чем нужно – он вошёл внутрь, и шум стал другим: вместо открытого ветра – ровный гул вентиляции, шуршание шин на мокром асфальте далеко за стеной.

Внутри пахло краской и пылью от коробок, которые кто-то вскрывал совсем недавно. Аэродром Береговое был почти новым, или так старательно делали вид. На стене, прямо напротив поста, висел щит с планом эвакуации: зелёные стрелки шли так ровно, будто им никогда не придётся работать.

Он отметил время, не глядя на часы – привычка считать такты в голове. Если турникет держал его на полторы секунды дольше нормы, это ничего не значило. Если считать, что это было «ничего», легче жить. Но привычка всё равно записала задержку в ту же тихую полку, где лежали другие мелочи, не стоившие разговора. Щелчок реле где-то в нутре турникета отозвался короткой памятью: старый цех, облупленная краска, стенд, который «повис» в тишине, и тот самый раз – когда тишина оказалась громче любого аварийного зуммера.

Рабочее место нашлось без блужданий. Ему выдали ключ от ящика, временную наклейку на ноутбук и бумагу со словами «подпись здесь и здесь». Бумага шуршала сухо, как линейка по хрусткому ватману. Он расписался – не вчитываясь в формулировки, которые и так помнил: ответственность, конфиденциальность, допуск. Потом – коридор, два пролёта вверх, стеклянная дверь без опознавательных знаков, и за ней – их комната.

Четыре стола, по два монитора на каждом. Короткие бирки на кромках столешниц с фамилиями и четырёхзначными кодами. У окна – место, где по плану сидеть ему. Из окна – серый прямоугольник полосы и тёмная линия леса за ней. Солнца не было, но яркость отсвечивала от клина облаков, делая всё нарочито чистым, как в буклете.

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

Пока грузились инструменты, он пошёл за кофе. Автомат у стены работал яростно, как будто спорил с кем-то. Кофе вышел водянистым и горячим, зато сработало главное: пальцы оттаяли. Вернувшись, он подвёл стул. Стул был новый и тугой, пружина щёлкнула – чуть громче, чем следует в пустой комнате.

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

Он наклонился ближе. Разница прыгнула, потом встала на «0.027 с» и замерла. Система приняла это как норму и отметила зелёным. Он сделал скрин, не зная ещё, пригодится ли. Скорее всего – нет. Но если пригодится, потом будет поздно вспоминать. Он сохранил и на внешний диск, небольшой серый прямоугольник с тёплым корпусом. Щёлк – и файл лёг туда, где лежали другие «мелочи».

Расписание испытаний открылось отдельным окном. Утро – калибровка по эталонной цели. Днём – короткий вылет с минимальной РЭБ. Вечером – резерв. «АРЕС: режим помощника» – приписка мелким шрифтом, та, что всегда вызывала раздражение. Он не любил слово «помощник» в софте. Софт не помогает. Софт делает, что ему велят. Или то, на что настроили.

В соседнем окне мигнул статус подсистем. Диагнозов нет. Жёлтых зон нет. Подсистема предикции молчала. Дверь открылась бесшумно. Вошёл Петров, снял с шеи шарф, кинул на спинку стула.

– Добрался? – спросил он без приветствия.

– Добрался.

– Через полчаса – ангар. Громов уже там. Зайцев подтянется к разбору.

Марков кивнул. Петров не спросил ни про дорогу, ни про кофе, ни про вечер. И это было правильным.

Пока шли по коридору к лифту, Петров говорил про график и про «окно».

– Окно узкое, – сказал он. – Без самодеятельности. Режим помощника – и по листу.

Это звучало как бытовая инструкция, не как предупреждение. Так и должно быть.

Лифт остановился ниже, чем ожидалось – пол провалился сантиметров на пять и встал мягко. Они прошли к двери в ангар, показали пропуска и вошли внутрь. Воздух там был другой – плотный, с тонким металлическим послевкусием. Генератор работал, отдавая басом через бетон. Где-то под крышей летучая мышь чертила невидимые круги; на секунду показалось, что эта тень – отметка на экране, ускользнувшая от фильтра.

Дрон висел под потолком на стропах, как рыбина, которую ещё не решили – пустить в дело или повесить на стену. Техники, не поднимая глаз, проверяли разъёмы. Громов стоял чуть в стороне, опираясь ладонью о край стола с планшетом. Перед тем как надеть гарнитуру, он прикоснулся к её амбушюру и дважды коротко стукнул по пластику ногтем – как тест микрофона без звука. Не ритуал – привычка. На экране рядом с ним был открыт не общий «красивый» вид, а сырые числа: скорости, углы, время. Он смотрел туда, где картинка ещё не соединена в историю.

– По плану маршрут без фокусов, – сказал Петров. – Проверяем коридор, закрепляем параметры. Всё по листу.

– Принял, – Громов кивнул, усмехаться не стал. Лицо спокойное, взгляд чистый, как у человека, который всегда слышит метку времени раньше, чем голос.

Марков разложил бумаги на металлической поверхности стола. Пальцы чуть прилипли к холодной стали. Открыл ноутбук, поднял интерфейс наблюдения. АРЕС отображался отдельным блоком – статус «готов», зелёный свет, активные каналы подсветились тонкими пиктограммами. Перечень алгоритмов подал короткий список: фильтрация – в норме, классификация – в норме, предикция – пусто.

Первый прогон делали на стенде. Эталонная цель прошла по экрану ровно так, как должна: вход в сектор, удержание курса, выход. Марков переводил взгляд с одной панели на другую, ловя минимальные провалы в частоте кадров, миллисекундные дрожания. Всё было в пределах. Он отметил едва заметную сдвижку подписей по времени на соседних окнах – на двадцать с чем-то миллисекунд – и отметил же: то, что уже видел утром.

– Переходим в коридор, – сказал Петров.

Зал, где шёл прогон, был шире, звук – с эхо. На стене – карта сектора, линии изолиний, подписи, которые никто не читает, потому что все помнят. Оператор у пульта поднял глаза, коротко кивнул. Громов надел гарнитуру, на секунду прикрыл левое ухо ладонью – отсёк всё лишнее – и посмотрел на экран сырых данных ещё раз, как на исходный документ.

Когда цель вошла в сектор, зелёная точка появилась там, где должна. Ещё одна – на долю градуса правее. Марков едва заметил – отсюда не увидишь, если не знаешь, что искать. Вторая отметка мигнула и пропала, как пузырёк воздуха под плёнкой. На панели АРЕС вспыхнула строка: «объединение треков», и погасла. Предупреждения не было. Вообще не было – даже мягкого серого намёка, который разрабатывали, чтобы не пугать никого лишнего.

– Видел? – спросил он тихо, не отвлекаясь от монитора.

– Что? – Петров не отводил взгляд от общей картины.

– Ничего, – сказал Марков. Он уже знал, что вернётся к этому в серверной.

Остальной прогон прошёл без сюрпризов. Имитация порыва ветра, короткий провал канала на ровно одну секунду – «как в паспорте», сказал кто-то у стены – и снова всё в пределах. Голос Громова в гарнитуре был ровным, без усилий, как если бы он разговаривал с комнатой. Он не любил заполнять тишину – говорил только отмеренное.

На выходе из ангара влажный воздух тянулся следом, как запах, который не сразу отстаёт. Петров говорил что-то про график, про визит на следующей неделе. Марков слушал половиной уха. В голове шёл другой процесс: как именно алгоритм принял решение, что два трека – это один? Где стоял порог? И на основании какой истории данных? Документация говорила об одном. Экран – о другом.

В комнате он сел и открыл логи. Ленты побежали ровно, будто кто-то разметил их линейкой. Он прокрутил до нужного момента. Там, где появлялась вторая отметка, запись о «слиянии» стояла на кадр раньше. Предиктор сообщил о действии прежде, чем во входном потоке «родилась» вторая отметка. Разница – двадцать семь миллисекунд. Та же цифра. Она повторилась с таким спокойствием, как будто её так и задумали.

Он остановил ленту, отмотал на пять секунд вверх, запустил снова. То же. Ещё раз. Та же последовательность. Он сделал снимки экрана, сохранил копию лога на внешний диск. В углу монитора на миг вспыхнуло «Доступ ограничен». Он кликнул – сообщение исчезло, будто не включалось. Он не стал спорить с интерфейсом. Он просто записал это – сначала в файл, потом в голову.