Часть I. Острова без карты
Глава 1. Лодка идёт обратно
3 сентября 2060 года, 05:40–07:15
Автономная лодка вышла из строя конвоя, когда до первого бакена оставалось меньше двухсот метров. Я заметил это не по карте. На схеме её метка ещё шла вместе с остальными, а в воде корпус уже начал разворачиваться кормой к нам.
— Третья грузовая уходит вправо, — сказал я в канал маршрутной группы. — Оператор, подтвердить управление.
Ответ пришёл через секунду. Оператор проверил канал и сообщил, что управление штатное, маршрут загружен, ошибок система не видит. Лодка продолжала разворот.
На ней везли батарейные кассеты для Крайнего. Людей на борту не было, но без этого груза зарядный пункт быстро урезал бы питание роя.
Я поднял бинокль. Между двумя бакенами тянулся фарватер. С правого бакена почти сошла зелёная краска, верхнюю секцию перекосило. Лодка шла именно к нему. И только тогда я понял, где уже видел этот разворот: старая запись из Линского коридора. Катер снабжения перед восточной развязкой так же вышел на середину прохода и взял вправо. Через несколько минут его нашли перевёрнутым у бетонного откоса. Я опустил бинокль и сказал Павлу, что лодка повторяет старую траекторию. Он стоял у левого борта нашей транспортной лодки, рядом с закреплённой кабельной катушкой. После короткого уточнения я назвал Линский коридор и тот катер перед развязкой. В самом движении я был уверен, причины не знал.
Майор Асланов был на головной лодке. Я переключился на его закрытый канал.
— Товарищ майор, третья батарейная повторяет маршрут погибшего катера из старой записи. Прошу снять автономию и вернуть её вручную.
Асланов спросил, есть ли основание кроме моей памяти. Его не было. Текущая маршрутная карта показывала чистый проход, течение оставалось слабым, и объяснить старый манёвр я не мог. Майор разрешил один контрольный запрос без остановки конвоя.
Я уже открыл панель ручного перехвата, когда в гарнитуре появился посторонний шум. Не треск помех и не обычный провал несущей. Канал М-17 до этого стоял на пассивном прослушивании, и его дорожка была пустой. На индикаторе всплыл старый позывной — Кулешов. Голос пришёл коротко, с провалом посередине:
— Не к зелёному.
Я не ответил и посмотрел на правый бакен. Роман Кулешов погиб у Восточной развязки семнадцать месяцев назад. Я помнил его фамилию, руки в машинном масле и заклинившую турель. Голос помнил хуже. Система могла собрать его из записей.
Вера сидела у изолированного терминала в средней части лодки. Я сообщил ей про М-17, позывной Кулешова и фразу «не к зелёному». Павел выругался вполголоса. Вера сохранила исходный пакет и запретила повторять фразу в общем канале. При подмене повтор покажет, что сообщение принято; при Отголоске наша запись помешает сверке. После этого я снова вызвал Асланова.
— Есть дополнительное основание. М-17 дал старый позывной и предупреждение по правому бакену. Источник не подтверждаю. Прошу ручной разворот.
— Ты сейчас предлагаешь менять курс из-за голоса погибшего?
— Нет. Предлагаю проверить опасный участок, потому что лодка ушла с текущего маршрута и повторила старый. Голос только совпал с направлением.
Асланов ответил не сразу. Правый бакен качнулся. От его основания в фарватер тянулась тёмная линия.
— Одна проверка, — сказал майор. — Седов, два ведомых. Без активного радара. Визуально.
Кирилл с соседней лодки подтвердил команду и поднял пару ведомых. Два малых аппарата снялись с кормовой площадки. Кирилл вёл их низко: спутниковая привязка под помехами почти не работала, автоматика шла по инерциальному счёту и береговым меткам. Один ведомый пошёл над протокой, второй сместился к бакену.
На первой камере появились старая свая и край отражателя. Изображение со второго аппарата рассыпалось и пропало.
Кирилл потерял изображение со второго ведомого из-за помех справа. По команде Асланова первый аппарат снизился к основанию бакена. Под водой показалась натянутая поперёк фарватера линия, на старом металле белел свежий крепёж. Кирилл подтвердил новую растяжку.
— Конвой, лево пятнадцать, — приказал Асланов. — Интервал сохранить. Третью батарейную забрать вручную.
Я включил перехват. На панели появился запрос доступа, затем красная полоса: автономия не отдавала привод с первого пакета.
Ручное управление не принялось с первого раза. Я повторил команду через резервный ближний канал. Лодка дёрнула рулевым приводом, но продолжила идти к бакену. Вера увидела старый контур приоритета: текущая команда стояла ниже загруженной задачи, содержание которой терминал пока не показывал.
Первая лодка конвоя уже брала влево. За ней пошла вторая. Наша транспортная накренилась на повороте, кабельная катушка упёрлась в крепление и коротко стукнула о раму. Грузовая с батареями осталась справа.
— Денис, снимай её через аварийный стоп, — приказал Асланов.
Я открыл сервисную панель. После аварийного стопа лодку снесло бы на растяжку.
Я предупредил, что аварийный стоп опоздал: течение потянет лодку к бакену. Предложил дать заднюю тягу и довернуть влево через локальный блок. Павел достал направленный передатчик и на две секунды поднял мощность. Дольше нельзя было: второй ведомый и без того пропал в помехах.
Он включил передатчик. Я отправил короткую команду напрямую. Грузовая замедлила ход, винты взбили воду, корпус начал уходить кормой от бакена. На мгновение показалось, что успели, но из помех пришёл голос Кирилла:
— Первый видит ещё одну линию. Она ниже. Под лодкой.
— Всем влево! — сказал Асланов.
Грузовую рвануло в сторону. Я успел увидеть, как её нос прошёл мимо бакена, а затем вода под кормой поднялась белым столбом.
Взрыв был глухим. Нашу лодку качнуло, сверху посыпались капли и мелкая грязь. На экране грузовая метка погасла. Через секунду появилась снова, но уже как аварийная.
Кирилл доложил Асланову, что корпус на плаву, корма повреждена, питание осталось. Грузовая сидела ниже, но не тонула. Две кассеты сорвало с креплений. Одну было видно в воде, вторая исчезла.
— Батарейную не возвращать, — приказал Асланов. — Ставим пустую платформу на её курс. Проверим остальную линию.
Пустую грузовую вывели из хвоста конвоя и отправили между бакенами. Кирилл оставил ведомый над проходом; второй в сеть не вернулся.
Платформа дошла до места, где грузовая начала разворот. Ничего не произошло. Потом её повело вправо тем же движением. У меня сжались пальцы на краю панели.
— Опять.
— Вижу, — сказал Павел.
Платформа шла к зелёному бакену, хотя ей загрузили новый левый коридор. На этот раз оператор не пытался вернуть её. Все ждали.
Мина сработала ближе к борту. Пустой корпус подбросило, перевернуло и отбросило к старой свае. Из воды вылетела часть настила.
После взрыва канал заполнили команды. Кирилл искал пропавший ведомый. М-17 молчал.
Павел сел рядом на край ящика и заметил, что теперь у предупреждения есть материальное подтверждение. Я поправил: у нас есть мина и совпавшая с ней фраза, а это не одно и то же. Он согласился, но попросил запомнить именно эту разницу.
После Эльмара мы почти год не работали вместе. Павел получил свою группу связи и охраны, я — отстранение и комиссии. Мне долго объясняли границу между приказом и личным решением. Павел помнил, чем закончилась моя прежняя уверенность. Вера подняла голову от терминала и зафиксировала время, несущую, позывной и положение лодки до сообщения и после него. Видео с растяжкой ушло в ту же белую запись без трактовки. На мой вопрос о сходстве голоса с Романом она отвечать не стала: профиль требовал сверки, а не слуха. Павел назвал это хорошим началом операции и заметил, что мы не дошли до берега, а погибший уже поправил навигацию.
— Погибший ничего не поправлял, — сказала Вера. — Голос использовала система. Поле могло повторить запись. Пакет мог подать живой оператор. Нам нужно разделить эти варианты.
— Для мины разницы не было.
— Для следующего решения будет.
Я смотрел на правый бакен. В старой кадирской разметке зелёный обозначал безопасную сторону прохода. На новой карте были только номера. Фраза содержала старое обозначение, но не знание о будущем.
Конвой пошёл дальше левее. Повреждённую батарейную взяли на короткий буксир. Две кассеты остались на борту, одну удалось поднять сеткой с воды. Четвёртая пропала после взрыва. На Крайний мы везли меньше энергии, чем планировали, и это было первым точным итогом утра.
К причалу подошли в 06:48. На бетонной стенке стояли новые зарядные стойки, за ними — старые склады под провисшей маскировочной сеткой.
Последние метры лодка прошла сама. Дальше груз принимали люди.
Мы пришвартовали батарейную отдельно. Техник полез в сервисный отсек, Павел снял крышку с локального блока, я подключил переносной считыватель.
Повреждённую грузовую поставили у крайней тумбы, чтобы она не мешала остальным. Из кормового отсека вычерпали воду, питание отсекли от мокрого привода. Одна поднятая кассета отвечала на диагностику, но её оставили на карантине: после контакта с солёной водой подключать такой блок к общей шине никто не рискнул. Потерянную кассету искать до разминирования протоки запретили.
Павел попросил искать команду разворота после 05:43. В журнале сначала шёл штатный маршрут. После сверки по береговой метке появились два отклонения. Команды на поворот вправо не было, решение автономии журнал тоже не показывал. Вера присела рядом и подключила свой изолированный накопитель.
— Покажи идентификатор задачи.
Я открыл нижнюю строку. Среди цифр и букв появилась метка, которую я встречал в Эльмаре. Тогда Вера вынесла её из повреждённого пакета «Орбиты» в белую запись. В хвосте идентификатора стояло KADIR. Я увеличил строку, и Вера сверила метку со своим накопителем. Корневая часть совпала. Павел спросил, откуда кадирский архив взялся в лодке снабжения. За нашей спиной подошёл Асланов и потребовал показать находку. Вера развернула считыватель к нему.
— В журнале нет команды на разворот. Есть обращение к старому идентификатору архива. Он связан с пакетом, который мы получили после Эльмара.
— Связан как?
— Пока только по метке. Причину не называю.
Асланов перевёл взгляд на меня. Он ждал ответа, не торопя.
— Ты маршрут помнишь?
— До К-7 — по старым картам. Дальше без местного кабельного журнала не поведу.
— Мне не нужен человек, который будет угадывать.
— Я и не собираюсь.
— После сегодняшнего это звучит удобно.
Я снял считыватель с лодки и закрыл сервисную крышку. Защёлка встала на место со второго раза.
— Я потребовал проверку до голоса. После голоса потребовал ту же проверку. Мина была в воде, не в гарнитуре.
Майор несколько секунд молчал, глядя на повреждённую корму. Потом вернулся к служебной части разговора.
— В Дирекции тебя рекомендовали как полевого валидатора с правом Красного отказа. Ограниченным. Я согласился потому, что ты уже видел, как «Свод» ошибается и как бывает прав.
— Он не бывает прав сам по себе.
— Тем лучше. Ведёшь маршрутную группу до кабельного узла. Любая рекомендация «Свода» проходит через тебя и второго проверяющего. Если времени нет, решение остаётся за командиром участка. Понятно?
— Понятно.
— Есть условия?
Павел посмотрел на меня, но не вмешался. Это условие я должен был назвать сам.
— Есть. Я вижу исходные данные по каждому маршруту, который должен подтвердить. Если система предлагает изменение по М-17, сначала ищем материальную причину. Голос не считается приказом.
Асланов нахмурился. Вопрос был не в формулировке, а в том, запишут ли её.
— Это и так правило.
— Тогда запишите его в допуск.
— Ещё?
— Красный отказ фиксируется без блокировки следующего действия. Если я отказал, система не должна заставлять меня проходить лишние окна, пока люди ждут.
— Это уже не ко мне. Но в заявку внесу.
— И исходные пакеты М-17 сохраняются до обсуждения. Без очистки, — добавила Вера, закрывая накопитель.
— Вы двое давно работаете вместе? — спросил Асланов.
— Достаточно, чтобы не верить красивому совпадению, — сказала Вера.
— Тогда начните с некрасивого, — сказал майор, кивнув на повреждённую лодку. — Через два часа мне нужен бакен номер девять и его кабельный журнал. Хочу знать, почему две автономные платформы решили повторить маршрут, которого нет в текущей карте.
Асланов ушёл к разгрузке, а Павел помог техникам снять уцелевшую батарейную кассету с погнутого крепления. Кассета села на тележку только с третьей попытки.
— Возвращение удалось, — сказал он.
— Я ещё никуда не вернулся.
— Форма на тебе. Приказ получил. Опять объясняешь начальству, как надо писать допуск. Для первого часа достаточно.
Я не ответил. На причале люди вытаскивали мокрые кассеты из повреждённой лодки. За ними в протоке буксир тащил перевёрнутую пустую платформу. На её борту мигала аварийная метка, и рядом с ней через раз вспыхивал старый кадирский идентификатор.
Семнадцать месяцев назад я был уверен, что личное решение опаснее приказа. Потом решил обратное и потерял звание. Теперь мне снова дали право остановить систему, если я увижу ошибку.
Я посмотрел на запись KADIR и убрал считыватель в чехол. До бакена номер девять нужно было дойти по воде, где карты менялись быстрее приказов. На этот раз я собирался проверять каждую рекомендацию сам, пока у меня оставалось право сказать «нет».