Оливия Кросс – Слепое пятно (страница 6)
– На отметке два-три берём небольшой крен, – напомнил Петров.
– Принял, – кратко.
В динамике треснуло, как иногда трескается лёд в стакане – ни к чему не ведёт, просто факт. Пакеты в «диагностике» на долю мгновения оборвались и снова побежали. Курс на экране не дрогнул. «АРЕС» держал устойчивость. Переход через «границу» прошёл бесшовно.
Где-то между десятой и двенадцатой минутой обмена Громов сказал спокойно:
– Возьму на себя на три секунды. Проверка задержки.
– В пределах, – ответ Петрова был равноудалён от «разрешаю» и «не смей». Формально – допустимо. На таких участках и проверяют.
Марков перевёл глаза на «сырые числа» и перестал моргать. Вариант с ручным вмешательством предпочитал видеть без украшений. Первая доля секунды – отклик штатный. Дальше – едва заметная упругость в канале «курс»: микроотставание, которое глаз на «красивом» интерфейсе не увидел бы. Не «провал», а именно пружинка – тонкая и, возможно, задуманная в «помощнике», чтобы демпфировать резкие руки. В блокнот легла короткая вязь: «ручн. 2.8 с; откл. макс 0.8°; лаг 9–11 мс; возврат плавный».
– Вернул. Дальше – по плану, – Громов вышел из ручного так же спокойно, как вошёл.
Переход на автопомощь прошёл мягко, без рывка. Аварийных индикаторов – ноль. На средней панели мелькнула строка «assist re-engaged», рядом – миниатюрная «галочка», словно её ставил вежливый интерфейс для людей, которым приятно видеть «всё в порядке». В логе – сухое «assist:on».
Петров не отвлекался на мелкое. Ему важно было, чтобы «визит» прошёл потом ровно. На «высокие лица» никто сегодня не рассчитывал, но про «следующую неделю» говорили все, кому не лень. Марков предпочитал не думать о том, чего ещё нет. Лучше смотреть на то, что есть сейчас: идеальная гладкость линий под «АРЕСом» и лёгкие, но честные шума без него. Слишком красиво – всегда отметка в поле «проверить позже».
Снаружи по стеклу окна прошёл тонкий горизонтальный шум – воду ветром повело вбок. Шорох в динамике синхронно на мгновение изменился, как будто у воздуха тоже была своя «политика слияния».
На тридцать седьмой секунде после небольшого манёвра – узкий клин помехи. РЭБ включён минимально, но реальность всегда даёт вставки. На диагностике – выпадение пакетов ровно на 300 мс. В «красивом» интерфейсе – плавная линия, где рябь углы не портит. Марков засёк глаза́ми ответ «АРЕСа»: предикция на один кадр вперёд, подмена «дырок» из собственной истории. Внутренняя метка «merge» не вспыхнула. Здесь – не про двоение. Здесь – про то, сможет ли помощник вернуть курс так, чтобы пилоту не захотелось снова «помочь».
– Чисто, – сказал Громов. – Не слышу хвоста.
«Хвост» – тот самый хвост компенсации, который иногда тянется, когда система выравнивает после провала. Сейчас хвоста не было – или он был в пределах, недоступных голосу.
На «сырых» числах – красивая, почти неправильная ровность. Без АРЕСа здесь был бы крохотный волнистый шов, с ним – ровное стекло. Можно любоваться, если забыть, что стекло на испытаниях – не декор, а инструмент.
Сегмент коридора закончился, план требовал повернуть к точке возврата. «АРЕС» взял крен и сработал, как положено: сдержанно, без резкости. Три секунды – и стабилизация вернулась на те же числа, что были до поворота.
Комната слушала не только динамик, но и тишину между словами. Эти паузы иногда говорят больше. В одной из них гарнитура дрогнула в пальцах, когда провод поймал вибрацию от перехваченного кабеля. Память, как ей и положено, принесла на секунду то, чего здесь не было: день, когда Громов в старом месте сорвал автомат слишком рано, потому что «ждал» его слишком поздно. Тогда «помощник» был другой, и мир – проще. И тогда же стало ясно: хороший пилот – не тот, кто забирает на себя всегда, а тот, кто знает, когда. Возвращение в настоящее заняло полудолю секунды – цифры сами поставили акцент.
Посадка прошла учебником. Снижение – с той плавностью, которая нравилась бы комиссии. После отрыва – наоборот «приземление», чётко по оси. В голосе Громова усталости не было – как будто он говорил в комнате, а не в небе.
– Принял, – Петров снял гарнитуру с одного уха. – Идём на разбор.
«Разбор» начался раньше, чем группа переместилась в переговорную. Для Маркова он начался у стола – там, где открывается файл протокола и лента бежит плотными строчками. На этом этапе никаких образных слов не годится. Только числа и их ритм.
Сначала – телеметрия. Затем – канал управления. Потом – внутренние флаги «АРЕСа». Искал не «неправильное», а «несовпадающее». На отметке вмешательства пилота – то самое «ручное» – появилось «operator_input: true; duration: 2.8 s». Рядом – параметр «amplitude». Число – аккуратно внизу ожидаемых пределов. Следом – «assist_blend: 0.4->0.0->0.4».
Переход туда и обратно – мягкий. Всё как в документации.
Чуть ниже, отдельной строкой, которую не принял бы «красивый» интерфейс: «OPR_OUT_OF_BOUNDS». Английские буквы на русском полигоне всегда режут глаз. Марков не моргнул. Выделил строку. Посмотрел соседние. Внизу незаметная приписка: «context: timing». Ещё ниже, в соседнем столбце, незаметная цифра – «t_diff=0.053». Пятьдесят три миллисекунды – это не «амплитуда», не «угол». Это время. По какому-то внутреннему правилу система решила, что вмешательство ушло за порог не по величине, а по фазе.
Параллельно открылся файл «паспорт допустимых вмешательств». Лист с таблицей, в которой даже подзаголовки были скучны. В колонке «время реакции» для режима «расширенная помощь» стояло «до 0.100 с». Порог – сто миллисекунд. Текущие пятьдесят три – вполовину меньше порога. Где-то есть несоответствие: система ругается на то, что по документу должно укладываться.
Рука машинально записала в блокноте: «метка OPR_OUT_OF_BOUNDS при t_diff=53 мс; регл. до 100 мс; контекст timing». Хвостом к строке прилепился вопросительный знак – не как эмоция, а как маркер следующего шага.
В этом месте диктует не «догадка», а «сверка». Запрос на «расширенную» справку в системе – короткий. Вывод – без неожиданностей: порог, как в документе. Никаких «локальных переопределений» не видно. С другой стороны – лента сообщений из внутреннего модуля «самоанализа» «АРЕСа»: «intervention class=timing; severity=minor; note=phase misalign 1 tick». «Один такт». В их системе такт – стандартная дельта для кадрового цикла. Если вмешательство приходится на «пограничную» грань между кадрами, внутренняя логика может отнести его на ближайший «неправильный» борт. Пометка в «minor» выглядит успокаивающе. В отчёте для «красивого» интерфейса такая строка уйдёт под ковёр.
Петров наклонился над столом. Тень от плеч легла на стрелки. Взгляд – спокойный.
– Чем недоволен?
– Формально – ничем, – ответ сухой. – Фактически – «оператор в недопуске» при времени реакции 53 миллисекунды. Регламент – сто.
– Причина?
– Классификация «timing». Строка «phase misalign 1 tick». Похоже на граничное пересечение кадра.
– То есть – трусит кадр, – проговорил Петров, не как вопрос, как формулировку для протокола. – В протокол запишем «minor». В устном – «стабильно».
– Да.
Громов сел на край стола, у которого стоял ноутбук, и посмотрел на ленту так, будто слушал. Брови не повёл. Спросил только одно:
– По рукам – нормально?
– По рукам – идеально, – сказал Марков. – В пределах и с запасом.
– Тогда живём.
Фраза «живём» в таких комнатах всегда означала «идём по плану». Никто не «живет» в командном пункте. Здесь делают разворот, пишут строку, идут дальше.
Протокол формировался сам: метки, времена, «ok», «minor», подписи. На многих местах интерфейс добавлял мягкие цвета, чтобы человеку было спокойнее. На числовом уровне этого не было: только нули и единицы.
Марков открыл «сырые» логи ещё раз, уже с фильтром по «operator». Несколько строк в «день», одна – сегодня та, что нужно. Внутри – точка входа, точка выхода, дельты. Порог реагирования для «АРЕСа» – 80–120 миллисекунд «окно доверия». Вмешательство уложилось внутрь с запасом. Строка с «OPR_OUT_OF_BOUNDS» выделялась как ультракороткая ремарка на полях: кто-то поставил «галочку» рядом с абзацем, где её не ждёшь, и аккуратно ушёл.
В этот момент динамик выдал голос Зайцева – он уже шёл по коридору и решил, видимо, сэкономить всем время, начав говорить заранее:
– По форме – всё штатно?
Петров повёл подбородком в сторону Маркова.
– По форме – да, – короткий ответ. – По факту – мелкая «timing»-ремарка при вмешательстве. Внутри «minor».
– На демо – не всплывёт? – Зайцев не зашёл в перепалку; ему нужно было «да/нет».
– Если рук не будет – не всплывёт, – Марков закончил фразу вслух то, что у него в голове звучало просто: «пилот идеален – система счастлива».
Зайцев кивнул. Ушёл не дожидаясь продолжений.
Комната снова отдала себя цифрам. На экране неподалёку открылся «автоматический отчёт». Внутри – те же строки, только крупнее и с «галочками» там, где интерфейс считал нужным успокаивать. Петров провёл пальцем по кромке стола, как делал это, когда думал. Пролистал документ вниз и наверх. В правом верхнем углу кто-то когда-то поставил маленький логотип – ненавязчивый, не для эффектности, а просто «шапка» организации. Марков зафиксировал для памяти – потом это знание не пригодится, но сенсорная ткань благодаря таким мелочам держится крепче.