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

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

18

В коридоре скрипнули двери. Ворвался тонкий свист – кто-то снова открыл одну из створок в ангар. Этот свист был как курсив: выделял мысль, но не менял смысл.

– Как? – Петров стоял у двери, не заходя.

– По данным – чисто, – сказал Марков. – Кроме одного.

– Что?

– «merge» с политикой, которой нет в документации. «17c».

Петров не изменился в лице.

– Разберёмся на разборе. Сейчас не ломаем темп.

Марков кивнул. Это был не отказ. Это был способ не превращать наблюдение в событие раньше времени. Он снова посмотрел на строку с «17c» и положил рядом с клавиатурой листок с короткими пометками: время, «drop 1000 ms», «двойная отметка, правее на долю», «слияние до появления полной формы», «policy=17c», «theta=0.61, window=2, early_ok=true».

Он вернулся к общей картинке на «красивом» экране. Ничего подозрительного. Если взять эту панель как единственный источник истины, сегодняшний день прошёл штатно. В этом и была её задача: пройти штатно. Работа Маркова была другой.

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

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

Он не нашёл там подписи человека. Он нашёл там подпись решения. Короткая строка, которая гласила, что если оценка уверенности «выше порога» и «окно предсказания равно двум», то система имеет право объединить треки, не дожидаясь полного формирования второго. Такие правила пишут люди. Но не всегда эти люди потом вспоминают, что именно написали, и где это лежит.

Папка на краю стола снова напомнила о себе – он подвинул её локтем. Бумага не любила ждать. Логи – любили.

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

Гул в ангаре просел на тон. Где-то закрыли один из источников. Свист в воротах стих. В комнате стало слышно, как вентилятор в системном блоке набирает обороты – коротко и сдержанно, как вздох.

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

Значит, её не должно быть.

Но она была.

Глава 3

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

На шапке распечатанного протокола висела аккуратная строка: АО «ЗАСЛОН». Под ней – дата, время, список присутствующих. Чужие голоса были здесь уместны: в комнате, где обычно говорили «свои», они звучали как другой акцент, не мешая делу, но напоминая, что снаружи есть правила, не написанные их почерком.

– Коротко по утру, – сказал Петров, щёлкнул колпачком, провёл на доске линию по времени. – Эталон – штатно. Коридор – как в плане. Порыв – отработан.

Марков сидел ближе к проектору. На его экране был не «красивый» вид, а лента чисел. Сырые. Без подписи цвета. Он включил нужный отрезок. Строки побежали в такт дыханию.

– Здесь, – он коснулся тачпада, – перед сливанием. Вторая отметка на долю градуса правее. Появляется, не успевает сформироваться полностью, АРЕС объединяет.

Петров кивнул. Он держал маркер как указку, не как оружие.

– Без предупреждения?

– Без.

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

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

– Всё по регламенту?

Петров не посмотрел на него. Он посмотрел на Маркова.

– По факту – да, – сказал Марков. – По форме – есть вопросы к политике слияния.

– К форме – позже, – тихо сказал Петров. – Сейчас – матчасть.

Он подвинулся к доске. Нарисовал две кривые – первичный и вторичный трек. Подписал «азимут», «скорость», «дельта t». Повернулся:

– Гони без АРЕС.

Марков выключил блок предиктора и повторил отрезок на стенде, который сохранял сырые измерения. Сразу стало заметно, как линия скорости «дышит» – три–четыре процента гуляния в допуске. Картинка перестала быть гладкой. Это не было плохо. Это было честно.

– С АРЕСом, – сказал Петров.

Он вернул алгоритм в цепочку. Линия стала ровной, как транспортир. Идеальной ровности на полигоне не бывает. Но здесь была.

– Слишком красиво, – сказал кто-то у окна вполголоса.

– Красота нас не волнует, – отрезал Петров, не грубо. – Волнует соответствие.

Зайцев не двинулся. Его лицо ничем не выдало отношение. Он спросил ещё один короткий вопрос:

– Документально?

– Документально – режим помощника, – ответил Петров. – По плану. По листу. – И, словно отметив для «внешних», добавил: – В рамках регламента АО «ЗАСЛОН».

Маркер прошуршал по доске. Петров нарисовал окно слияния – «окно-2» – и заштриховал два ранних кадра.

– Если у нас ранняя уверенность падает выше порога, – сказал он, – мы имеем право склеить, не дожидаясь полной формы. Но порог – фиксированный. И название – фиксированное. В документации это «расширенная». Без букв.

– А у нас, – сказал тихо Марков, – в логе «полиси семнадцать-цэ». Порог – шестьдесят одна сотая. И допуск на раннее – «истина».

Он не спорил. Он называл то, что видел.

Петров кивнул. Повернулся к Громову:

– В полёте – что-то чувствовалось?

– Ровнее, чем бывает в такую влажность, – сказал Громов. – Секундный провал канал отработал без ощутимого хвоста. Руки – не понадобились.

Он сказал «ровнее», не «лучше». И это слово попало куда надо.

– Давай ещё по ADS-B, – сказал Петров.

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

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

– Фиксируем: с АРЕС совпадение избыточно стабильное. Без АРЕС – гуляние в допуске. Предупреждения – нет. – Он поставил точку. – Дальше – аудит.

Он снял колпачок, положил маркер на край стола рядом с протоколом, где в шапке всё так же стояло «АО “ЗАСЛОН”». Колпачок покатился и тихо упёрся в край бумаги.

Разговор свернули быстро. Зайцев поднялся, пожал плечами, как будто накинул на них что-то невидимое, и вышел первым. Громов задержался у двери. На секунду встретился взглядом с Марковым. Взгляд был без вопроса. Скорее – знак, что видел то же место, но со своей стороны.

Когда комната опустела, Марков выключил проектор и остался при своём экране. Он не любил смотреть на картинку, где всё идеально. Ему нужен был текст.

Он открыл цепочку сборок. Ночной прогон, триггер от расписания. Артефакты – чек-суммы, подписи. В колонке «комментарий» – нейтральное «минор апдейт параметров». Автор – сервисная учётка. Время – вполне нормальное. Никаких «минут вперёд» – это было бы слишком ярко для утра третьего дня.

Он провалился глубже – в состав пакета. Политики слияния лежали в отдельном каталоге. Их имена были знакомы, как фамилии в пропускном листе. И одно – нет. «policy_17c.bundle». Не файл настроек. Пакет. В этот момент взгляд поставил вокруг слова скобки, как на доске.

Он щёлкнул по нему. Содержимое не раскрылось – «нет прав». Он не удивился. Правильно, что нет. Неправильно – что файл здесь.

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

Вики молчала. Поиск по «17c» дал ноль. Поиск по «окно» и «раньше» – выдал документ, где слово «раньше» стояло в контекстах, которые к ним не относились. В справочнике для полигона про ранний допуск не было и намёка.