Влад Велирский
Архив последнего языка

От автора

Мы привыкли думать, что цифровой текст почти бессмертен. Его можно скопировать, сверить по контрольной сумме, поднять из резервной копии. Бумага горит, магнитная запись стареет, сервисы закрываются, но правильно сохранённая строка будто бы способна пережить всех, кто её написал и прочитал.

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

«Архив последнего языка» — детектив. В нём есть смерть в запертой технической зоне, противоречащие друг другу журналы, исчезнувший ключ и люди, у каждого из которых есть основания говорить не всю правду. Разгадка не требует поверить в магические свойства редкой речи. Все существенные улики имеют материальные или проверяемые основания: время охлаждения, маршруты доступа, версии данных, фон записанного голоса, решения тех, чьи слова архив обещал защищать. Читатель увидит их тогда же, когда герои, хотя значение некоторых следов откроется позднее.

У такого правила есть важное ограничение. Честная улика не обязана сразу быть понятной, но она не может задним числом получить свойство, которого раньше не существовало. Поэтому в расследовании будут расходиться не только версии подозреваемых, но и способы проверки. Электронная подпись может быть настоящей и всё же подтверждать ложное действие; свидетель способен сказать правду и отказаться передать исходные данные; физический след отвечает на вопрос «как», но не всегда на вопрос «кто». Разгадка возникает там, где независимые основания выдерживают сравнение друг с другом.

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

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

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

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

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

Глава 1. Холодная комната

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

Вера Нечаева смотрела на этот круговорот через прозрачную стену перехода и думала, что стажёр опоздает.

Он не опоздал. Просто стоял не у той двери.

— Арсеньев, — сказала она в гарнитуру. — Обернитесь.

Молодой человек у шлюза вздрогнул, нашёл её взглядом через два слоя стекла и поднял руку, будто они встретились на вокзале. Потом увидел над собой красную надпись «ТОЛЬКО АВАРИЙНЫЙ ВЫХОД» и поспешно отступил.

Через минуту он вошёл в переход. На плечах его куртки таял снег, волосы были мокрыми, а в руках он держал бумажный блокнот. Вера давно не видела бумагу у тех, кому меньше тридцати.

— Лев Арсеньев. Распределённые корпуса, — представился он. — Простите, навигация привела к южному шлюзу.

— Навигация привела к ближайшей двери. Решение войти в неё приняли вы.

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

— Первое замечание записать?

— Записывайте только то, что не сможете восстановить по журналу.

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

На первом спуске Лев всё-таки открыл блокнот.

— Самат Ордин проведёт вводный обход?

— Если закончил ночную сверку. Самат считает вводным обходом шесть часов вопросов, после которых человек либо учится, либо увольняется.

— Поэтому вы решили сначала меня напугать?

— Я решила предупредить.

Лифт опускался медленно, показывая на стене состояние контуров. Общий — зелёный. Исследовательский — зелёный. Судебный — жёлтый из-за планового аудита. Последний контур мигнул серым, затем вернулся к зелёному.

Вера коснулась строки.

— Это часто? — спросил Лев.

— Нет.

На её служебном экране уже раскрывалось уведомление: «Корпус SAIMA-L завершил синхронизацию. Расхождения устранены». Время — 08:42.

— Что именно? — Лев заглянул через плечо и сразу отступил, вспомнив об иерархии доступа.

— Ночная сверка. Она должна была закончиться в шесть.

— Зависла очередь?

— Очередь сообщает о задержке. А Самат сообщает раньше очереди.

Она вызвала его. Система сделала три попытки и предложила оставить сообщение. Вера не оставила.

На минус четвёртом пахло сухим металлом и пылью фильтров. Здесь шум менялся: вместо низкого гула башен слышался ровный шелест воздуха, будто за стенами непрерывно листали очень большую книгу. Лев замедлил шаг у обзорного окна. За ним в полутьме стояли стойки последнего контура — отдельные острова памяти, куда переносили корпуса, потерявшие активную среду.

— Сколько языков? — спросил он.

— Мы не считаем языки по стойкам.

— Я не это хотел…

— Знаю. Двести восемьдесят три корпуса имеют статус критических. У сорока одного живой кворум меньше десяти человек. У сайма вчера было шестнадцать подтверждающих профилей.

Лев слишком быстро кивнул.

Вера запомнила это движение, но спрашивать не стала. Стажёры часто читали больше открытых сводок, чем признавали на собеседовании.

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

Дверь была приоткрыта на ширину ладони.

Вера остановилась так резко, что Лев едва не врезался в неё.

— Назад. За жёлтую линию.

— Но сигнал не медицинский.

— Арсеньев.

Он отступил.

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

И всё же там лежал человек.

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

— Вызовите медицинский шлюз, — сказала она.

Лев уже вызывал.

— Дежурный спрашивает, есть ли контакт.

— Нет. Возможная гипотермия. Последний контур, секция четыре. Пусть идут через чистый вход и фиксируют каждый шаг.

Она включила нагрудную запись, назвала дату, время, уровень температуры и состояние двери. Только после этого медленно надавила на край диагностической пластиной. Дверь пошла внутрь. Из щели хлынул холодный сухой воздух.

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

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

Ничего.

Она удерживала пальцы дольше, чем требовал протокол.

— Вера Андреевна?

— Не входите.

На панели горело: «СИНХРОНИЗАЦИЯ ЗАВЕРШЕНА». Под сообщением стояла подпись Самата и время 08:42.

Вера посмотрела на его лицо. Холод уже успел сделать бессмысленной привычку искать ответ в выражении мёртвого.

— Медики через две минуты, — сообщил Лев. Голос его стал тише. — Я поднял безопасность.

— Кто разрешил?

— Протокол двадцать один. Смерть или утрата сознания в доказательном контуре.

Он был прав. Это раздражало и одновременно возвращало Веру к работе.

— Передайте: возможна компрометация корпуса. Никому не принимать автоматическое восстановление.

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

Ключи последнего контура нагревались при подтверждении подписи, но никогда настолько, чтобы оставить след. Если только защитная оболочка не была снята.

Вера повернулась к двери.

— Лев, время последнего медицинского сигнала Самата.

— Запрашиваю. Доступ ограничен.

— Код события ноль-семь, я подтверждаю.

Он ввёл код.

— Браслет прекратил телеметрию в 07:58. Последний уверенный пульс — 07:56.

На панели по-прежнему стояло 08:42.

Сорок шесть минут между вероятной смертью и подписью.

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

— Кто открыл дверь? — спросила она.

— Она была открыта, — ответила Вера. — Я расширила щель пластиной после диагностики среды. Запись идёт с 08:49.

— Сеть изолирована?

— Пока нет.

— Тогда все назад.

Ада коснулась браслета. Над дверью вспыхнул красный прямоугольник сетевого карантина.

Вера шагнула к ней.

— Не запускай восстановление.

— При смерти хранителя система обязана поднять последнюю подтверждённую копию.

— Последняя копия подтверждена мёртвым человеком.

Взгляд Ады метнулся к панели, затем к телу Самата.

— Ошибка телеметрии.

— Возможно. Поэтому не восстанавливай.

— Три внешних контура получают справки из этого корпуса. Один судебный.

— Значит, три внешних контура подождут.

Вера открыла аварийное управление и поставила остановку на всех зеркалах SAIMA-L. Система потребовала указать основание. Она выбрала «подозрение на направленную подмену», самую тяжёлую формулировку из доступных.

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

— Я не знаю, что они собирались получить.

— Тексты не менялись. Контрольные суммы зелёные.

— Тогда им будет легко дождаться проверки.

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

Медики развернули над Саматом термопокрывало, хотя оно уже не могло помочь. Один из них спросил разрешение переместить тело. Ада начала диктовать протокол.

Лев всё ещё стоял за жёлтой линией. Бумажный блокнот исчез; обе руки он держал на виду. Хорошая реакция для человека, которого никто не учил вести себя на месте возможного преступления.

— Вы видели что-нибудь до моего входа? — спросила Вера.

— Только ботинок. И экран через щель.

— Что было на экране?

— Завершённая синхронизация. Я не читал идентификатор.

— А на стекле?

— На каком стекле?

Вера обернулась. За телом Самата прозрачная перегородка отделяла стойки от сервисного прохода. На уровне пола иней был смазан четырьмя короткими дугами. Она сначала приняла их за след ладони.

Теперь, встав сбоку, увидела буквы.

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

НЕ ПОСЛЕДНИЙ

— Запиши крупно, — сказала Вера Аде. — До перемещения.

— Уже.

— Это может быть о человеке, — произнёс Лев из-за линии. — Не последняя копия. Не последний входивший.

Ада посмотрела на него.

— А может, предсмертный бред. Кто это?

— Мой стажёр.

— Был твой первый день, — сказала Ада Льву. — Похоже, закончился.

Вера ожидала, что он отступит. Лев вместо этого посмотрел на информационную панель у двери.

— Там появился новый журнал.

Под строкой синхронизации действительно развернулась запись проверки допуска. Система автоматически показывала её после карантина.

08:41:52 — аппаратный ключ: С. ОРДИН.

08:41:56 — служебная роль: ХРАНИТЕЛЬ.

08:42:01 — голосовая фраза: ПОДТВЕРЖДЕНО.

Рядом мигал значок воспроизведения.

Ада нажала его раньше, чем Вера успела возразить.

Из дверного динамика донёсся голос Самата — усталый, чуть хриплый, с привычным ударением на втором слоге в слове «версия»:

— Подтверждаю версию. Расхождений нет.

Медики замерли. Один из них всё ещё держал руку над застёжкой термопокрывала.

Голос прозвучал снова: система повторила запись для аварийного журнала.

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

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

— Никому не копировать этот голос, — сказала она. — Изолировать учебные профили, все синтезаторы и личные терминалы. С этой минуты мы не верим имени над подписью.

Ада медленно убрала руку от панели.

— А чему верим?

Вера посмотрела на ожог, на пропавший ключ и на слова, тающие на стекле.

— Тому, что можно подтвердить независимо.

Глава 2. Голос мёртвого

Лев узнал слово до того, как понял, что узнал его.

Запись Самата прозвучала в третий раз уже не из дверного динамика, а в комнате первичной фиксации. Здесь не было окон и почти не было мебели: три кресла, стол с утопленной панелью и серый акустический экран во всю стену. Экран показывал фразу как цепочку белых холмов. Над ними шли служебные метки допуска, все зелёные.

— Аппаратный ключ подлинный, — сказала Ада Ремезова. — Роль подлинная. Голосовой профиль совпал по ста восьмидесяти четырём признакам. Вероятность ошибки ниже порога протокола.

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

— Время смерти не совпадает, — ответила Вера.

— Время прекращения телеметрии. Браслет мог отказать от холода.

— За сорок четыре минуты до охлаждения кожи до расчётного уровня?

— Расчётного. Мы ещё не получили заключение медиков.

Лев слушал фразу в наушнике. «Подтверждаю версию. Расхождений нет». Самат произносил её спокойно, но между первым и вторым предложением был короткий вдох. В конце слышался глухой удар.

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

— Дайте мне спектр фона, — сказал он.

Ада повернула голову.

— Вам ничего не дадут. Вы стажёр без активированного допуска и свидетель обнаружения тела.

— Именно поэтому я слышал исходную запись до фильтра первичной фиксации.

— Вы слышали её из аварийного динамика.

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

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

— Арсеньев покинет помещение, — сказала она.

Вера не посмотрела на Льва.

— Через минуту. Сначала он объяснит, что ищет.

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

Лев снял наушник.

— Подлинность голоса отвечает на вопрос, кому принадлежали звуки. Не на вопрос, когда и где их записали. Если фразу собрали из настоящих фрагментов Самата, классификатор подтвердит профиль. Но фон склеить труднее: он остаётся в паузах, на согласных, в отражениях от стен.

— Системы допуска требуют случайную фразу, — возразила Ада. — Заготовка бесполезна.

— Случайную из закрытого набора или случайную без ограничений?

Ада ничего не ответила. На панели всплыло описание протокола: словарь из ста двадцати служебных сочетаний, обновление раз в квартал.

Вера чуть отодвинула стакан.

— Какой фон?

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

— Вы запомнили звук оборудования за двадцать минут первого рабочего дня? — спросила Ада.

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

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

Ада провела ладонью над столом. Волна голоса сжалась, доступ к дорожке закрылся.

— Внутренний контроль проверит гипотезу. Свидетеля вывести.

Лев встал. Если сейчас уйти, его наблюдение попадёт в очередь задач под номером, который никто не назовёт. Через час запись признают подлинной с оговоркой о телеметрии. Через два снимут часть блокировки. Он увидел это не как заговор, а как обычную силу процедуры: зелёные отметки уже стояли на экране, а его возражение ещё не имело формы поля.

— Насос учебного зала, — сказал он. — Старый жидкостный «Каскад-12». Его клапан закрывается после каждого четвёртого хода.

Теперь Вера посмотрела на него.

— Учебный зал перевели на новый контур два месяца назад, — сказала Ада. — Вы слышите оборудование, которое не работает.

— Значит, запись сделали до замены.

— Или вы подгоняете воспоминание под удобную версию.

— Откройте журнал обслуживания.

— Нет.

— Тогда ваша версия тоже удобная.

Слова прозвучали громче, чем он хотел. Сотрудники контроля перестали делать вид, что заняты документами. Лев почувствовал жар в ушах, но сел не сразу.

Ада медленно развернула к нему пустую ладонь.

— Моя версия, Арсеньев, состоит в том, что цепочка допуска прошла три независимые проверки. Ваша — в том, что вы узнали насос по кашлю. Разницу между ними обычно объясняют в первый месяц стажировки.

— Если три проверки используют одну запись, они не независимы.

Вера закрыла глаза на секунду. Не от раздражения — прислушивалась.

— Повторите только паузу перед вторым предложением, — сказала она.

— Я запретила доступ к улике.

— Вы запретили копирование. Анализ в среде фиксации продолжается. Или оформите мой отвод.

У Ады дёрнулся угол рта. Она вернула волну и выделила семь десятых секунды. Комната наполнилась тихим шорохом, потом четырьмя мягкими толчками. Последовал глухой стук.

— Ещё раз, — сказала Вера.

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

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

Ада увеличила спектр сама. Четыре узких гребня встали над шумовой полосой.

— Это может быть компрессор медиков.

— Медицинский шлюз вошёл после девяти. Запись отмечена восемью сорока двумя.

— Вы только что спорили с этой отметкой.

— Я спорю с автором подписи, а не со всеми часами сразу.

Вера едва заметно кивнула. Лев понял: вот теперь он сказал полезное. Не угадал источник, а разделил основания.

Ада вызвала журнал инженерных работ. На стене появилась схема минус третьего этажа. Учебный зал был серым, отключённым. Рядом с ним стояла дата вывода насоса: 17 ноября, шестьдесят три дня назад. Последняя проверка под нагрузкой — накануне отключения, с 16:10 до 16:40.

— Получить архив акустики за этот интервал, — приказала Ада.

Система запросила основание.

— Внутренняя проверка допуска SAIMA-L.

— Основание конфликтует с карантином корпуса, — ответил синтетический голос. — Требуется совместное подтверждение безопасности и хранителя расследования.

Вера приложила ладонь. Ада сделала то же после короткой паузы.

На экране возникли десятки дорожек: учебные терминалы, потолочные датчики, служебные гарнитуры. Лев ожидал, что Ада отправит его за дверь, но она выбрала датчик у восточной стены и воспроизвела фон.

Четыре толчка. Удар.

Никто не заговорил.

Система наложила старую запись на голос Самата. Гребни совпали не идеально: последний был сдвинут на сотую долю секунды. Ада запустила компенсацию скорости. Совпадение выросло до девяноста семи процентов.

— Температура жидкости, — сказал Лев. — В ноябре она была выше.

Вера увеличила паузу после слова «версию». На одном канале фон обрывался чисто. На другом вместе с ним исчезал край согласной «с».

— Монтаж, — сказала она.

— Или подавление шума, — ответила Ада, но уже без прежней уверенности.

— Подавление не знает, где заканчивается насос и начинается человек. Здесь знало.

Сотрудник контроля слева включил микрофон:

— Требую зафиксировать: текущая голосовая фраза не может считаться независимым доказательством присутствия Ордина в холодном контуре. Руководитель безопасности подтверждает?

Ада смотрела на совпавшие гребни. Если она скажет «нет», спор уйдёт выше вместе с записью экрана. Если скажет «да», её утренняя версия перестанет быть рабочей.

— Подтверждаю ограничение доказательной силы, — произнесла она. — Не утверждение о монтаже. До экспертизы.

— Зафиксировано.

Лев выдохнул и только тогда понял, что всё это время стоял. Победа оказалась похожа на ошибку: слишком много глаз и ни одного пути назад.

Ада отключила удалённых сотрудников. Их лица исчезли.

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

— Я не делал публичного заявления.

— Вы сделали его при внутреннем контроле.

— Потому что вы хотели вывести меня до проверки.

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

Лев хотел ответить, но Вера подняла палец.

— Ада права в одном: источник фрагментов ещё не найден. Нужен тренажёр допуска за ноябрь и список тех, кто имел к нему доступ.

— Архив учебных профилей изолирован по вашему же распоряжению, — сказала Ада.

— Изоляция не означает уничтожение.

— Она означает, что читать его будет моя группа.

— Совместно с моей.

— У вас нет группы. Есть стажёр с погашенным браслетом.

— Тогда активируй ему временный следственный доступ.

Ада посмотрела на Льва так, будто решала не вопрос допуска, а способ хранения опасного предмета.

— Только чтение. Без экспорта. Каждый запрос зеркалируется мне. Один выход за область расследования — и он покидает «Палимпсест».

На браслете Льва появилась тонкая жёлтая полоса. Кресло наконец признало его и спросило, желает ли он вернуть воду законному владельцу.

— Желаю, — сказал Лев.

Вера взяла стакан.

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

Учебный архив хранил не результаты экзаменов, а состояния тренажёров: фразы, ошибки кандидатов, задержки ответов, шумовые профили помещений. Лев ввёл дату последней работы насоса.

— Сначала перечень устройств, — остановила Вера. — Не ищите голос Самата по имени. Такой запрос покажет тому, кто следит за журналом, что именно мы поняли.

— Ада и так увидит.

— Ада увидит. Другие — не должны.

Он выбрал все тренажёры восточного учебного зала. В списке было девять устройств. Восемь имели акты переноса на новый контур. Девятое значилось удалённым: «Симулятор хранителя, стенд У-4». Дата удаления — сегодняшние 08:44.

Две минуты после подписи Самата.

— Корзина? — спросил Лев.

— В учебной среде нет корзины. Есть журнал уничтожения и контрольный образ.

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

Лев открыл карту зависимостей. От удалённого стенда расходились связи к сотням серых объектов.

— Это не один голосовой профиль, — сказал он.

— Покажите типы.

Он убрал содержимое и оставил только заголовки. «Хранитель: Ордин С.» «Хранитель: Ветлина М.» «Хранитель: Ким А.» И дальше — все, кто за последние семь лет принимал последний контур. Тренажёр учил кандидатов распознавать штатные и нештатные фразы хранителей, а потому содержал их настоящие ответы, разбитые на фонемы, слоги и интонационные переходы.

У Самата было четыреста восемьдесят шесть фрагментов. Достаточно, чтобы собрать не одну служебную фразу.

Вера велела системе показать только метаданные контрольного образа. Образ существовал, но его корень не совпадал с корнем удалённого объекта. Часть фрагментов извлекли перед уничтожением.

— Кто имел доступ? — спросила она.

— Учебная группа, методология и безопасность.

— Слишком широко.

Лев развернул события последнего месяца. Большинство обращений были автоматическими. Одно выделялось отсутствием имени: роль методолога запросила не профиль целиком, а редкие сочетания согласных в шести языках последнего контура. Среди них был сайма.

В примечании стояло: «проверка различимости команды отзыва».

Лев прочитал строку и сказал:

— Это не отзыв.

Тишина наступила мгновенно.

Он успел бы притвориться, что говорит о типе команды. Мог сослаться на документацию, на открытый корпус, на случайную статью. Все оправдания уже стояли в голове, аккуратные, почти правдоподобные.

Вера не спросила, что именно означает слово. Она спросила хуже:

— Откуда вы знаете?

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

— В открытом наборе есть похожая форма, — сказал Лев.

— Похожая — есть. Значение команды закрыто живым кворумом.

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

— Мне объясняли, — сказал он.

— Кто?

Жёлтая полоса на браслете казалась теперь меткой не доступа, а отсчёта.

— Человек из сообщества.

— Имя.

— Я не имею права его назвать.

— Тогда вы не имеете права работать с этим корпусом.

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

— Если я назову человека без согласия, вы получите сведения от того, кому нельзя доверять. Разве не это вы сказали у холодного контура?

Вера долго смотрела на него. За стеной включился новый насос — ровный, почти бесшумный. Ни кашля, ни удара обратного клапана.

— Я сказала подтверждать независимо, — произнесла она. — А не скрывать конфликт интересов.

Она вызвала Аду.

На экране оставался удалённый тренажёр, хранивший голоса всех хранителей. Рядом мигало время его уничтожения: 08:44.

Глава 3. Текст, который не менялся

Вера вызвала Аду не для допроса Льва.

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

— Вы останетесь здесь. Не касайтесь корпуса сайма и не открывайте личные каналы.

— Я могу объяснить.

— Сможете. Когда объяснение не уничтожит доказательство и не выдаст человека, которого вы защищаете.

Лев посмотрел на неё с недоверием. Он ожидал либо немедленного отстранения, либо сделки: имя в обмен на доступ. Вера не собиралась предлагать ни того ни другого. Нельзя было требовать у человека нарушить правило живого кворума, а затем использовать полученные сведения как чистые. Но и оставлять скрытую связь без последствий она не могла.

Дверь открылась. Ада вошла вместе с двумя сотрудниками безопасности.

— Его браслет, — сказала Вера.

Жёлтая полоса погасла.

— Арсеньев остаётся доступен для опроса, — продолжила она. — Без изоляции личных устройств: мы не установили нарушение. Любой контакт фиксировать только по основанию, не по принадлежности к сайма.

— Ты теперь руководишь безопасностью? — спросила Ада.

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

Ада изучала её лицо несколько секунд, потом кивнула одному из сотрудников. Льва вывели. Уже у двери он оглянулся на экран со словом vuorra, но ничего не сказал.

— Стажёр знает закрытую команду, — произнесла Ада, когда дверь стала непрозрачной.

— И обнаружил источник ложного голоса.

— Возможный источник.

— Поэтому он не обвиняемый.

— Поэтому он самый удобный проводник в корпус, который мы пытаемся защитить.

Вера уменьшила карту учебного стенда до значка и отправила копию журнала в контур первичной фиксации.

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

— Уже поздно. Директор ждёт тебя в зале графов.

— Какой директор?

— Тален.

Григория Талена официально называли директором методологии, хотя методология занимала лишь два этажа из семи. Неофициально он руководил всем, что можно было превратить в правило: от формата временных ключей до слов, которыми архив признавал собственную ошибку. Если Тален ждал лично, внешние зеркала уже начали считать деньги.

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

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

— Судебный узел требует восстановить справки до полудня, — сказал он вместо приветствия. — Муниципальный шлюз — до одиннадцати. Три исследовательские группы теряют оплаченный доступ. Ты остановила весь SAIMA-L из-за одной спорной подписи.

— Из-за подписи, сделанной после смерти хранителя.

— После прекращения телеметрии.

Формулировка Ады уже стала формулировкой Талена. Вера отметила это, но не придала ему значения: руководитель безопасности обязана была доложить.

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

Тален впервые отвёл взгляд от окон.

— Удалён по регламенту?

— Регламент запланирован заранее. Исполнение подтверждено вручную неизвестной ролью.

— Значит, проверяйте роль. Тексты корпуса менялись?

— Контрольные суммы совпадают.

— Тогда верни чтение.

— Нет.

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

Тален подошёл к стене и вызвал корень корпуса. Зелёные ветви раскрылись от последней подтверждённой версии к предыдущим. Между ними не было разрыва.

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

— Внешние клиенты получают не строки. Они получают толкования.

— Они получают показатели уверенности, рассчитанные по утверждённой модели.

— По контекстному графу.

— Который тоже подписан.

Вера подошла к панели напротив. Вызвала вчерашний снимок SAIMA-L и сегодняшнюю версию, затем наложила их. Система сообщила: «Текстовых расхождений нет». Тален развёл руками.

Она отключила слой текста.

На стенах остались рёбра.

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

— Сравнить структуру без содержимого, — приказала Вера. — Порог: любое изменение типа связи за последние двадцать четыре часа.

Стена погасла и зажглась снова. Большинство линий совпали, став белыми. Двенадцать коротких участков остались красными.

Тален приблизился.

— Покажи журнал миграции.

— Сначала снимок результата.

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

Все двенадцать изменений прошли в 08:42 под одной синхронизацией. Тексты не тронули. Изменились веса реакций, типы отношений и доступность трёх подтверждающих снимков.

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

— Строка та же, — сказала Вера. — Юридический смысл противоположный.

— Автоматическая переоценка контекста, — ответил Тален. — Снимок мог утратить доверие.

— В один момент с одиннадцатью другими?

Второй узел был шуткой о ледяной воде. Вчера её признавали бытовой жалобой; сегодня модель считала завуалированной угрозой коммунальной службе. Третий превращал отказ участвовать в опросе в согласие с его результатами. Четвёртый делал память о принудительном переносе серверов добровольным архивированием. В пятом предупреждение о пожарной опасности стало попыткой сорвать работу дата-порта.

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

— Это не повреждение корпуса, — сказал Тален. — Это спор классификаторов.

— Спор классификаторов не подтверждает себя голосом мёртвого хранителя.

— Мы пока не доказали монтаж.

— Мы доказали несовпадение места записи.

Тален остановил граф ладонью.

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

— А если вернём доступ, удобные решения будут исполняться на ложном основании.

— Тогда изолируй двенадцать узлов.

— Я ещё не знаю, почему нашла именно их. Возможно, остальные подмены ниже порога.

— Возможно, их нет.

— Возможно. Поэтому мне нужна проверка.

Тален посмотрел на неё почти сочувственно.

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

У Веры похолодели пальцы. Тален редко переходил к личному и почти никогда не делал это грубо. Тем точнее попадал.

— Моё состояние не подписывает граф, — сказала она. — И твоё тоже.

В зал вошла Инга Саари, юрист дата-порта. Она не стала здороваться и сразу вывела на стену номер дела.

— Мне нужна исходная справка по этому решению, — сказала она. — Исполнение назначено на четырнадцать ноль-ноль. После вашей блокировки суд запросил подтверждение вручную.

Номер дела был связан с сетевым поселением Ковда-Шесть. Вера открыла путь формирования справки. Система прошла от юридического запроса к классификатору намерения, затем к первому красному узлу: «Мы скоро освободим место».

— Решение уже вынесено? — спросила Вера.

— Вчера вечером. Выселение инфраструктуры и отзыв адресного диапазона. Сегодня техническое исполнение.

— На каком основании?

— Добровольный отказ сообщества от пространства, подтверждённый архивом. Я не видела исходную речь: справка имела высокий уровень уверенности.

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

— Это не согласие на выселение, — сказала Инга.

— Сегодня архив утверждает обратное.

— Тогда я замораживаю исполнение.

Тален повернулся к ней:

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

— У меня есть два противоречащих друг другу снимка основания. Для приостановки достаточно.

— Из-за одной справки вы создадите прецедент для тысяч оспариваний.

— Прецедент создал тот, кто изменил основание.

Инга отправила распоряжение. Красное окно судебного узла сменило подпись: «Исполнение приостановлено по спору доказательств». Счётчик отложенных дел увеличился ещё на одно.

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

— Кто запросил эту справку? — спросила она.

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

— Сохраните также вчерашний снимок и все реакции, пока право отзыва не изменило набор.

— Уже.

Тален вернул на стену корень SAIMA-L.

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

Он был прав настолько, чтобы его решение стало опасным.

Архив существовал не сам по себе. Ему доверяли, пока он отвечал быстро; сообщества участвовали, пока верили, что их контексты не используют против них. Долгая тишина разрушала обе стороны договора.

— Сколько времени ты предлагаешь? — спросила Вера.

— Четыре часа на изоляцию двенадцати узлов. Затем возвращаем остальные справки.

— Недостаточно.

— Тогда двенадцать.

— Сорок восемь.

Инга подняла брови. Ада, стоявшая у входа, едва заметно покачала головой.

Тален подошёл к Вере вплотную, но говорил тихо:

— Через сорок восемь часов у нас может не остаться кворума.

— Через четыре часа у кого-то может не остаться дома.

— Один случай приостановлен.

— Один мы нашли.

Красные рёбра отражались на его лице тонкими полосами. Наконец Тален открыл административную панель.

— Сорок восемь часов внутренней проверки. Ты сохраняешь блокировку юридических толкований SAIMA-L, но открываешь исследовательское чтение неизменных текстов. Все публичные справки получают отметку «контекст оспаривается». Через сорок восемь часов, если не будет доказательства направленной подмены, я перезапускаю граф под контрольным снимком методологии.

— Контрольный снимок должен подписать живой кворум.

— Если он к тому времени останется.

— И внутренний контроль.

— Хорошо.

— И я.

Тален задержал палец над подтверждением.

— Нет. Ты не получишь право единолично продлевать остановку.

— Тогда Ада.

— Безопасность подтвердит процедурную чистоту, не смысл.

Ада шагнула к панели.

— Подтвержу только отсутствие новых вмешательств. За старые не поручусь.

Тален добавил её условие. Вера подписала режим первой. Он — второй. На стене появился обратный отсчёт: 47:59:59.

— Теперь, — сказал Тален, — найдите мне человека, который это сделал. Не философию о праве на смысл. Человека и воспроизводимый способ.

Он вышел. Красные окна свернулись вслед за его административным доступом, но отсчёт остался в верхней части стены.

Инга собирала пакет судебного пути. Вера попросила открыть время первого обращения к изменённому узлу после синхронизации.

— Зачем? — спросила Инга.

— Если справка сформирована после 08:42, подмена могла быть подготовлена для другого применения. Если до — кто-то использовал изменённый граф до его официального появления.

Инга вызвала журнал. Запрос по делу Ковды-Шесть поступил вчера в 19:16. Предварительная справка сформирована в 19:17. Тогда граф ещё содержал сарказм и должен был дать низкую уверенность.

Но в судебный пакет попала сегодняшняя высокая оценка, автоматически обновлённая в 08:43.

— Система пересчитывает активные дела после каждой подтверждённой синхронизации, — сказала Инга. — Это штатно.

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

— Или он выбирал узлы по активным делам.

Вера открыла остальные одиннадцать. У семи были текущие юридические или коммерческие запросы. У трёх — проверки благонадёжности сообществ. Только два не имели внешнего потребителя.

Случайная миграционная ошибка не выбирала востребованные смыслы.

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

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

— У нас есть статистическая связь. Тален потребует механизм.

— А вы?

Вера посмотрела на двенадцать фраз, которые не изменились ни на один символ.

— Я потребую исходные реакции и право людей подтвердить, что они значили. Без этого механизм можно доказать, а истину — нет.

На личном канале появилось уведомление от службы безопасности: «Л. Арсеньев ожидает опроса. От раскрытия источника отказался». Следом пришло второе, уже от системы кадров: «Обнаружено расхождение адреса проживания с анкетой стажёра».

Вера не открыла анкету. Пока.

Она отправила Льву одно разрешённое задание: восстановить путь формирования судебной цитаты без доступа к личностям кворума. Потом поставила таймер на сорок семь часов и пятьдесят две минуты.

На стене первый красный узел снова показал фразу: «Мы скоро освободим место».

Под ней система уверенно писала: «Добровольное согласие».

За прозрачным слоем журнала уже стоял номер вынесенного решения.

Глава 4. Цена определения

Лев получил от Инги Саари доступ не к делу, а к его скелету.

Имена сторон были заменены серыми прямоугольниками, адреса скрыты, номера личных узлов удалены. Остались времена, типы запросов, подписи машинных процедур и одна фраза, из-за которой Ковда-Шесть могла перестать существовать к вечеру.

«Мы скоро освободим место».

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

— Вам запрещено искать заказчика, — сказала Инга. — И сопоставлять обезличенные признаки с известными вам лицами.

— Вера поручила восстановить путь цитаты.

— Путь — да. Людей — нет.

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

— Архив дал суду справку, — сказала она. — Суд принял решение. Не надо заранее делать из поставщика данных обвиняемого.

— Поставщик присвоил шутке юридическое намерение.

— Поставщик рассчитал вероятность по утверждённой методологии.

— В какой момент?

Инга чуть заметно нахмурилась.

— Я уже показала журнал. Запрос поступил вчера в девятнадцать шестнадцать, предварительная справка создана через минуту, обновление после синхронизации — сегодня в восемь сорок три.

— Вы показали события. Мне нужен путь.

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

— Обычная цепочка, — сказала Инга.

— Поэтому её легко не прочитать.

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

Вчерашняя версия остановилась там.

Сегодняшняя пошла другим путём. После синхронизации активное дело автоматически вернулось в классификатор. Сборщик контекста отработал за две десятых секунды. Оценщик поднял уверенность с тридцати одного до девяноста четырёх процентов за восемь сотых. Ручная проверка исчезла из маршрута как ненужная.

— Вы это видели? — спросил Лев.

— Я видела итоговую подпись корпуса.

— Не подпись. Интервал.

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

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

— Могла использовать кэш.

— Тогда должен быть срок годности и ссылка на источник кэша.

Ссылки не было. Инга запросила служебные поля. Пластина между ними мигнула, закрывая от Льва часть ответа, но он увидел, как изменилось её лицо.

— Кэш объявлен полным, — сказала она. — Основание: отсутствие значимых разногласий.

— Вчера разногласия были.

— Вчера были реакции с низким весом.

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

Он удалил из запроса все известные ему слова и оставил только номера рёбер.

— Покажите набор контекстов, использованный вчера.

— В пределах дела?

— Только типы реакций, время и доказательный вес.

Инга разрешила запрос. Вокруг исходной фразы возникли девять меток. Три были классифицированы как саркастическое несогласие, две — как бытовая солидарность, одна — как раздражение, остальные имели нейтральный вес. Лев сохранил схему, затем вызвал сегодняшнюю.

Шесть меток.

Три саркастические реакции исчезли.

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

— Отзыв согласия? — спросила Инга.

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

— Возможно, снимки признаны недостоверными.

— Тогда сохранилось бы основание исключения.

Инга открыла одно из отсутствующих рёбер через вчерашний снимок. Серый прямоугольник дрогнул и выдал сообщение: «Объект не входит в область разрешённого запроса».

— Он существует, — сказал Лев. — Иначе было бы «объект не найден».

Она повторила запрос из контура внутреннего контроля. Ответ пришёл тот же.

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

— Зато решает, какие разногласия дойдут до суда.

Он вывел рядом две справки. Вчерашняя требовала человека. Сегодняшняя разрешала автоматическое действие. Между ними не появилось нового свидетельства согласия. Исчезло свидетельство несогласия.

— Цена определения, — тихо сказала Инга.

— Что?

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

Лев впервые за всё утро посмотрел на неё прямо.

— Кто подписал удаление?

— Не относится к вашему заданию.

Это означало, что имя ей известно.

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

Ковда-Шесть выросла вокруг старого узла связи, когда северные посёлки начали терять население, школы и транспорт. Физические дома стояли далеко друг от друга, а общая сеть давала им мастерские, классы, врачебные окна и постоянные комнаты. Адрес был не картинкой дома. Через него открывались замки, хранились семейные архивы, работали протезы доступа и тревожные кнопки. Перенос в карантин сохранял данные, но обрывал отношения между ними. Формально вещи оставались. Пространство переставало быть обитаемым.

Лев знал это не из технического описания.

На его личном терминале лежали сообщения Ники, которые он не открывал с утра. После первого уведомления она отправила ещё два. Заголовки были короткими: «Срок» и «Ты там?».

Он выключил личный экран прежде, чем Инга могла заметить.

— Нам нужно закрепить заморозку, — сказал он.

— Я уже приостановила техническое исполнение.

— До ручной проверки справки. После неё оператор увидит девяносто четыре процента и решит, что ошибка устранена.

— Я не могу отменить судебное решение на основании предположения стажёра.

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

— Такое уведомление признает возможную ошибку «Палимпсеста».

— Она уже есть.

— Оно уйдёт не только в суд. По протоколу его получит регулятор дата-порта, все исполнители и стороны активных дел, использующих SAIMA-L.

— Значит, никто не сможет тихо нажать «продолжить».

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

— Если уведомление окажется необоснованным, — сказала она, — архив потребует возмещения за остановку. Суд может счесть это вмешательством в исполнение. Моя подпись останется в каждом пакете.

— Если оно обоснованно, без вашей подписи Ковда исчезнет по справке, которую никто не проверил.

— Вы говорите так, будто знаете, что там находится.

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

— Там живут люди, — ответил он.

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

— Другого вам пока не положено.

Инга повернулась. В её взгляде не было любопытства — только оценка риска.

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

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

— Здесь нет ни одного имени, — сказал он. — Только нарушение процедуры.

Инга прочитала пакет дважды. Затем вставила свой ключ в разделитель.

— Формулировка будет уже вашей, — предупредил Лев.

— Стажёры не учат меня писать уведомления.

Она открыла официальный бланк и продиктовала: доказательное основание решения изменилось после его вынесения; автоматическая переоценка выполнена без воспроизводимого опроса независимых контекстов; три ранее доступные реакции исключены без следа процедуры; до восстановления полной цепочки происхождения справка не может подтверждать добровольность отказа сообщества от адресного пространства.

На последней строке система потребовала выбрать масштаб.

«Только дело Ковда-Шесть».

«Все активные дела корпуса SAIMA-L».

Инга задержала руку над первым вариантом.

— Мы доказали дефект на одной справке, — сказала она.

— Семь изменённых узлов уже связаны с активными запросами.

— По ним у меня нет материалов.

— Но у вас есть уведомление Веры о спорном корпусе.

— Это остановит десятки решений, среди них могут быть срочные.

— Тогда пусть срочность проверяет человек, а не исчезнувшее возражение.

Инга выбрала второй вариант.

Её подпись прошла через пластину. Сначала замерло исполнение по Ковде-Шесть. Затем на схеме одна за другой погасли зелёные стрелки ещё шести дел. В юридическом крыле включился негромкий сигнал: дата-порт получил официальное уведомление о возможной ошибке архива.

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

Лев открыл личный терминал.

«Срок», — писала Ника. — «В четырнадцать закрывают внешний диапазон. Внутри говорят, что данные обещали сохранить, будто дело в данных».

Второе сообщение было короче:

«Ты там?»

Он набрал: «Исполнение заморожено». Стер. Написал: «До проверки ничего не отключат». Снова стер — он не имел права обещать. Наконец отправил: «Юридический контур остановлен. Не отзывай и не подтверждай контексты, пока я не объясню безопасный порядок».

Ответ пришёл сразу.

«Поздно. Нас уже просят подтвердить, что мы имели в виду».

Лев перечитал строку. Кто-то вышел к носителям раньше официального уведомления.

— Мне нужен журнал запросов живого кворума, — сказал он.

— Вам запрещён доступ к личностям, — напомнила Инга.

— Без личностей. Время, объём, тип подтверждения.

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

Следом открылось кадровое уведомление. На этот раз система не скрывала причину: адрес, указанный Львом как временное место проживания три года назад, принадлежал сетевому поселению Ковда-Шесть. В действующей анкете поле было пустым.

Инга медленно вынула ключ из разделителя.

— Теперь ваш интерес к делу перестал быть только профессиональным.

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

За стеной продолжался сигнал официальной ошибки. Каждые пять секунд он повторял один и тот же спокойный тон.

Так дата-порт сообщал, что больше не уверен в собственных словах.

Глава 5. Неполная анкета

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

Вера вошла первой и положила на стол кадровую выписку Льва. Три года назад в поле временного проживания стояло: Ковда-Шесть, северный контур, гостевой узел. Через девять месяцев адрес исчез. Не был заменён новым — именно исчез, оставив служебную отметку о переносе данных из старой формы в новую.

Журнал переноса показал тысячу двести обработанных за ту ночь анкет. Все ошибки автоматической сверки были исправлены, кроме исчезнувшего адреса Льва. Его анкета прошла без замечаний.

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

— Садитесь. Личный терминал оставьте в нише.

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

— В каком вы статусе? — спросил Лев.

— Пока в статусе сотрудника, у которого обнаружено незаявленное обстоятельство. Я выясняю, влияет ли оно на расследование.

— А если влияет?

— Тогда выясню как.

Вера включила регистратор и назвала время, участников, основание опроса. Отдельно зафиксировала: опрос не отменяет защиту источников и не требует раскрывать личности носителей корпуса, если их действия не относятся к подмене доказательств. Лев поднял взгляд. Он ожидал другого начала.

— Подтверждаете, что жили в Ковде-Шесть?

— Временно. Четыре месяца.

— Почему адрес пропал из анкеты?

— Я его не удалял.

— Вы проверяли анкету после переноса?

— Подтвердил сводку.

— В сводке был адрес?

Он задержался на долю секунды.

— Нет.

— Значит, вы подтвердили неполную анкету.

— Я подтвердил обязательные поля. В новой форме временное проживание стало добровольным.

Вера развернула к нему выписку.

— Для допуска к распределённым корпусам адрес сообщества, с которым у вас сохраняются личные связи, не добровольное поле. Это конфликт интересов.

— Тогда система должна была спросить о связях, а не предлагать перечислить места, где я ночевал.

— Система спросила плохо. Вы ответили удобно.

Лев не отвёл глаз.

— Да.

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

— Ника Арсеньева ваша сестра?

Он посмотрел не на выписку, а на белую полосу регистратора.

— Откуда имя?

— Из старой записи гостевого доступа. Вы указали её принимающей стороной. Запись кадровая, не из живого кворума.

— Тогда вы уже знаете ответ.

— Мне нужно ваше подтверждение.

— Да. Ника — моя сестра.

— Она участвует в подтверждении контекстов SAIMA-L?

— На этот вопрос я не отвечу.

— Даже отрицательно?

— Любой ответ сузит круг. Вы сами только что зафиксировали защиту носителей.

За дверью снова прозвучал сигнал. Вера позволила паузе остаться в записи. Лев был прав, и от этого опрос не становился проще. Защита источников существовала не для удобных случаев. Если снять её с родственника подозреваемого, каждый следующий хранитель найдёт причину снять её с чужого родственника.

— Хорошо. Не называйте профиль, — сказала она. — Ответьте о собственных действиях. Вы обращались к кому-либо в Ковде после смерти Самата?

— Получил сообщения от сестры.

— До того, как увидели судебную справку?

— Первое — до. Я не открыл его до работы с делом.

— Почему?

— Увидел заголовок «Ковда» и понял, что содержание может повлиять на меня.

— Но не сообщили мне.

— Я ещё не знал, относится ли оно к делу.

— А когда узнали?

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

— Вы дали ей служебную информацию?

— Нет. Я сказал, что юридический контур остановлен. К этому моменту уведомление ушло сторонам дела.

Уведомление Инги зарегистрировали в 10:17:42, сообщение Льва покинуло дата-порт в 10:18:09. Двадцать семь секунд — достаточно мало для подозрения и достаточно много для формальной правоты.

— Покажите переписку, — сказала она.

— Нет.

— Вы ссылаетесь на неё как на доказательство своих действий.

— Я ссылаюсь на время исходящего сообщения. Его можно подтвердить у шлюза без содержания и адресата.

— Ваша сестра может быть участницей подмены.

— Может. Как и любой носитель, сотрудник или подрядчик. Если у вас есть основание подозревать Нику, предъявите его. Родства недостаточно.

Точность Льва обнаружила слабое место вопроса. Самат делал так же: отнимал у удобного вывода опоры и ждал, пока тот упадёт сам.

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

— Мне не нужен профиль Ники, — сказала Вера. — Мне нужно понять, могу ли я оставить вас внутри расследования.

— Если вам нужен удобный ответ, нет.

— Удобные ответы сегодня уже стоили одному сообществу адреса.

Лев сжал ладони между коленями.

— Я скрыл связь. Не потому, что внедрился в архив. Я знал, что при слове «родство» меня отрежут от сайма раньше, чем кто-нибудь проверит мою работу. И был прав.

— Вы были бы правы, если бы сообщили до проверки.

— Тогда меня не допустили бы к проверке.

— Именно это называется конфликтом интересов.

— А как называется ситуация, когда без человека с конфликтом никто не замечает, что архив переписал несогласие?

— Плохой подбор команды. Он не даёт вам права исправлять его тайком.

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

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

— С этого момента вы лишены прямого доступа к SAIMA-L и связанным с ней личностям. Запросы к графу идут через меня или назначенного хранителя. Перед каждой задачей вы письменно отмечаете известные связи, даже если считаете их несущественными. Содержание защищённого контакта не раскрываете, но сам тип связи фиксируете.

— То есть я остаюсь?

— С ограниченным доступом.

— Почему?

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

— Если только ему не нужна была заморозка всех семи.

— Эту версию я тоже записала.

Впервые за опрос угол его рта дрогнул, но улыбки не получилось.

Вера добавила взаимную проверку: улика Льва требовала независимого подтверждения, а её отказ принять улику — письменного основания. Лев прочёл условия и подписал.

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

— Кто пригласил вас в «Палимпсест»?

— Открытый конкурс.

— Кто предложил подать заявку?

— Преподаватель в Петрозаводске переслал объявление.

— Самат Ордин связывался с вами до стажировки?

Лев покачал головой.

— Я увидел его впервые здесь. Он провёл вводную встречу для группы.

— Вы уверены?

— Его лицо трудно забыть.

— Не лицо. Имя, голос, переписка, анонимная консультация.

— Нет. Почему вы спрашиваете?

Вместо ответа Вера запросила полный пакет конкурса. Обычный сотрудник увидел бы только итоговый балл. Её роль внутреннего контроля раскрыла лист согласований: проверка образования, задача на восстановление корпуса, оценка устойчивости к конфликту контекстов. Последней стояла рекомендация, поданная за три недели до смерти Самата.

Автор: Самат Ордин.

За два дня до рекомендации Самат впервые запросил закрытый аудит синхронизации и получил отказ Талена. Тогда Вера решила, что он снова спорит о методологии. Теперь выходило, что он уже искал людей.

— Он рекомендовал вас лично, — сказала она.

Лев встал, забыв о закрытой двери.

— Покажите.

— Сядьте.

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

«Знает ограничения распределённого свидетельства».

«Единичное подтверждение не принимает за согласие группы».

«Различает исчезновение данных и запрет на их использование».

«Отмечает происхождение каждого преобразования».

«Сохраняет несовпадающие версии до разрешения спора».

«Восстанавливает контекст без раскрытия личности источника».

«Опирается на независимые признаки».

«Считает отказ содержательным действием».

«Его работа пригодна для проверки другим исследователем».

— Он не мог этого знать. Конкурсную задачу я сдал позже. До неё был только публичный курсовой проект под учебным идентификатором. Связать его со мной мог преподаватель.

Вера запросила вложения. Их не было. Электронная подпись Самата была действующей, время подтверждалось кадровым узлом и внешним реестром. Подделать документ после его смерти без расхождения трёх журналов было невозможно. Но зачем рекомендовать незнакомого стажёра, не объясняя причины?

Лев прочёл строки ещё раз.

— Это не характеристика, — сказал он.

— Что тогда?

— Характеристики не пишут так. Здесь каждый глагол стоит в начале смысловой части. Знает. Не принимает. Различает. Отмечает. Сохраняет. Восстанавливает. Опирается. Считает. Работа пригодна. Будто перечень команд.

— Самат любил перечни.

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

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

Вера увеличила документ. Первые буквы строк складывались в ЗЕРОСВОЕР. Бессмыслица.

— Не русские буквы, — сказал Лев. — Идентификаторы зеркал записывались латиницей.

Система показала исходную кодировку. В локализованном интерфейсе первая буква третьей строки выглядела как русская «Р», шестой — как «В». В оригинале стояли латинские символы.

Z E R O S V O E R.

— ZERO-SVOER, — прочёл Лев. — «Зеро-Своер»?

Вера открыла реестр оборудования и прогнала строку через старые форматы. Совпадения не было. Система предложила нормализацию `ZE-R0-SV-0ER`, но такой записи тоже не существовало.

Лев указал на экран.

— Вы снова просите систему определить правильный вариант.

Вера остановила поиск.

Цена определения. Они только что видели, как удобно машина отбрасывает несовпадения.

— Читаем без нормализации, — сказала она. — Первые символы не строк. Первые символы исходных полей.

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

Коды образовали последовательность: `M-04 / R-17 / L-02 / D-09 / G-31 / A-06 / K-12 / T-08 / X-00`.

— Девять сегментов, — сказал Лев.

— И первые буквы дают MRLDGAKTX. Тоже ничего.

— Не первые. Номера.

04-17-02-09-31-06-12-08-00.

В старом реестре ноль обозначал зеркало, снятое с активного баланса, а не порядковый номер. Вера переставила последний сегмент в поле класса и получила запись, которую современный поиск не индексировал: `M04-R17-L02-D09-G31-A06-K12-T08 / X0`.

На экране появился серый паспорт.

Зеркало X0-4172. Списано восемь лет назад. Физическое отключение подтверждено. Носитель оставлен в сервисной галерее северного крыла до плановой утилизации.

Утилизация была назначена дважды и оба раза отменена из-за ремонта охлаждения. Третьей даты не было.

Лев наклонился ближе.

— Северное крыло примыкает к учебному залу.

К тому самому залу, где шестьдесят три дня назад отключили «Каскад-12». К месту, акустика которого осталась на смонтированном голосовом допуске Самата.

Вера закрыла паспорт, прежде чем Лев успел запросить схему проходов.

— Ваши ограничения уже действуют.

— Тогда запросите сами.

— Запрошу. И сначала проверю, кто ещё открывал этот документ.

Журнал рекомендаций показал четыре обращения: кадровый алгоритм в день конкурса, Самат в день подачи, сама Вера сейчас — и неизвестный служебный процесс шесть минут назад.

Не пользователь. Не роль. Процесс без владельца, успевший прочитать рекомендацию сразу после того, как они открыли её в комнате опроса.

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

— Протокол завершён, — сказала она в темноте. — Дальше мы не идём через реестр.

— Но мне запрещён прямой доступ.

— Доступ к данным. Не способность смотреть по сторонам.

Она открыла дверь аварийным ключом. В коридоре дежурный экран уже показывал запрос безопасности: комната опроса потеряла связь с дата-портом.

До того как кто-либо придёт проверять, оставалось не больше минуты.

Самат выбрал Льва заранее. Оставил номер списанного зеркала в документе, который должен был открыться только при сомнении в стажёре. Значит, он рассчитывал не на доверие, а на правильно оформленное недоверие.

Вера впервые подумала, что собранная им команда включала и её.

Не потому, что он верил ей.

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

Глава 6. Списанное зеркало

Лев вышел первым и свернул к аварийной лестнице.

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

— Северное крыло не отсюда, — сказала Вера.

— Если идти по штатному коридору, нас увидит каждый турникет.

— Нас и так увидят.

— Позже.

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

Телефон подал сигнал: сообщение Ники ждало с утра. Лев не открыл его. Сначала зеркало — доказательство, которое выдержит чужую проверку.

На нижнем ярусе лестницу перегораживала цепь с табличкой «Подтопление. Проход только ремонтным службам». За цепью свет горел через один плафон. По полу тянулась чёрная вода, тонкая у стены и глубокая в центре.

— Если кто-то следит за реестром, он уже понял, куда мы идём, — сказал Лев.

Вера посмотрела на воду и его лёгкие ботинки.

— Найдём человека в сапогах.

Ремонтный пост находился за стеклянной перегородкой. Внутри мужчина в сером комбинезоне ел яблоко над разобранным клапаном. На нагрудной полосе было написано: «Р. ЮН. ХОЛОДНЫЕ СИСТЕМЫ». При виде Веры он отложил нож, но не яблоко.

— Нам нужно списанное зеркало X0-4172, — сказала Вера.

Ратмир Юн перестал жевать.

— Нет.

— Я ещё не попросила.

— А я уже отказал. Северная галерея закрыта из-за воды, X-ноль физически отключён. Через пять минут здесь будет безопасность, потому что вы назвали номер вслух рядом с постовым терминалом.

Лев увидел под верстаком жёлтый ремонтный аккумулятор. Толстые провода были смотаны вокруг ручки, на корпусе белела дата последней проверки.

— Сколько держит контроллер чтения на таком блоке?

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

— Нисколько. Вы кто?

— Тот, кто не просит запускать зеркало.

— Тогда уходите вдвоём и очень быстро.

Вера положила служебную карту на верстак, не поднося к считывателю.

— Носитель вывезли? — спросила Вера.

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

— Мы не подадим питание на шину, — сказал Лев. — Только на контроллер чтения.

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

— У старых зеркал контроллер не отделён по паспорту.

— По паспорту — да. Но при списании накопитель должны были перевести в режим безопасной выгрузки. Для этого сервисный разъём выводили до главного контактора. Иначе утилизация требовала бы запуска всей стойки.

— Вы видели эту модель?

— Схему серии X0 на учебном курсе.

— Схему, — повторил инженер. — А я видел, как такая схема варит отвёртку к ладони.

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

Вера забрала карту.

— Ратмир, мне нужен ответ не о том, разрешено ли включать зеркало. Это запрещено, и я беру нарушение на себя. Можно ли физически запитать один контроллер так, чтобы силовая часть осталась разомкнутой?

Он посмотрел на неё так, словно надеялся услышать от исследовательницы более удобный вопрос.

— Можно отделить разъём, если пломба цела и вода ниже ответвления.

— Сколько времени?

— До попытки включения или до первого человека, которого Ада пришлёт меня увольнять?

— До чтения.

— Семь минут. И я ничего не обещал.

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

Вода в галерее дошла Льву до середины голени. Над головой висели кабельные лотки, за сеткой темнели старые стойки.

— Почему X0 оставили здесь, если ярус топит восемь лет? — спросила Вера.

— Его не топило восемь лет. Вода пришла весной. Заявку на откачку сняли как неприоритетную.

— Кто снял?

— Методология. Подпись Талена, но таких подписей у него сотни.

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

Ратмир посветил фонарём, проверил тестером раму, воду и лоток, сфотографировал пломбу.

— Моё условие: всё пишется локально.

— Согласна, — ответила Вера.

Ратмир сорвал пломбу, снял люк, отсоединил управляющий кабель от силового блока и прозвонил сервисный разъём.

— Контроллер отвечает. Преобразователь возьмёт удар на себя.

— Сколько у нас чтений? — спросила Вера.

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

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

— Нам не нужны данные корпуса, — сказал он. — Только журнал собственных датчиков.

— Буфер кольцевой. Восемь лет он не хранит, — сказал Ратмир.

— Но датчики галереи использовали его как резервный сборщик до ремонта. Иначе узел исключили бы из реестра.

Вера не спросила, уверен ли он. Она достала из кармана изолированный терминал опроса и передала Ратмиру.

— Никаких сетевых соединений. Выбираем локальный журнал и копируем исходный блок целиком.

— Целиком не успеем, — возразил инженер.

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

Терминал распознал старый формат: `M04` — температура сервисной галереи, `R17` — обратный поток, `L02` — створка холодного контура. Остальные соответствовали влажности, нагрузке, ручному клапану, тепловому градиенту, питанию допуска и нулевому маркеру времени.

Самат оставил им не только зеркало. Он оставил список того, что читать.

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

— Перед каким списанием? — спросил Ратмир.

— Перед тем, как кто-то перестал пользоваться зеркалом как резервным сборщиком.

Ратмир закрепил клеммы. Лев открыл контейнер и включил запись контрольной суммы.

— Подаю, — сказал инженер.

Аккумулятор загудел, в шкафу щёлкнули реле. Главный контактор остался разомкнут. Индикатор преобразователя пожелтел.

Лев выбрал сервисное чтение. Система предложила совместить локальные часы с текущим временем.

— Нет, — одновременно сказали Вера и Лев.

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

— Нам понадобится точка привязки, — сказала Вера.

— Обратный поток, — ответил Ратмир. — Центральный насос меняет фазу каждый час. Его цикл пишется отдельно и подписывается механическим счётчиком.

Лев наложил R17 на выгрузку инженера и привязал кривую к подтверждённому переключению насоса. Терминал построил шкалу ночи смерти.

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

— Быстрее он не отдаст, — сказал Ратмир. — Не трогайте кабель.

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

Официальный журнал ставил открытие на 07:49:12.

Физический цикл — на 07:40:08.

Девять минут и четыре секунды.

— Серверные часы сдвинули, — сказал он.

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

Лев добавил влажность и тепловой градиент. Три независимых измерения сходились на одном событии.

— Открытие в семь сорок, — сказал Ратмир. — Плюс-минус двадцать секунд. Это не эхо и не ошибка часов.

Загрузка достигла шестидесяти одного процента. В глубине аккумулятора хлопнуло. Запахло горячей изоляцией.

— Ещё минута, — сказал инженер. — Потом снимаю питание.

На тепловой карте источник тепла вошёл со стороны главной галереи и через несколько минут замер у стойки.

Самат.

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

— Здесь был ещё человек.

Вера подошла ближе, не касаясь терминала.

— Докажи.

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

— Если бы это был поток воздуха, температура падала бы по направлению движения, — сказал Лев. — Здесь пик переходит от датчика к датчику и сохраняет величину. Масса движется сама.

— Человек или ремонтная машина, — сказала Вера.

Ратмир вызвал поверх карты канал нагрузки пола.

— Машина дала бы больше ста килограммов и две оси. Здесь от шестидесяти до восьмидесяти пяти, попеременные точки. Человек.

След ушёл через сервисный канал в 07:53. Пропускная система не зарегистрировала входа или выхода; остались только тепло, влага и изменение воздуха.

В официальном журнале в это время холодный контур ещё считался закрытым.

Загрузка — восемьдесят семь процентов.

— Этого достаточно, — сказал Ратмир.

— Нет, — ответил Лев. — Нужен нулевой маркер. Без него нам скажут, что буфер собран после смерти.

Из коридора донеслись голоса. Кто-то требовал открыть северную галерею и называл Веру по должности.

Преобразователь загорелся красным.

— Пять секунд, — сказал инженер.

Лев отменил остальные каналы и оставил только X00. Полоса прыгнула к девяноста девяти процентам. Терминал замер.

Ратмир потянулся к клемме.

— Ещё, — сказал Лев.

Красный индикатор погас. На мгновение стало тихо, затем из корпуса аккумулятора вырвался серый дым. Терминал подтвердил запись нулевого маркера и контрольной суммы.

Ратмир сорвал клемму. В шкафу разом умолкли реле. Аккумулятор продолжал дымиться; инженер опустил его в воду металлическими клещами, и над поверхностью поднялся пар.

— Всё, — сказал он. — Преобразователь выгорел. Второго чтения не будет.

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

— Зарегистрируйте контейнер сами, — сказал он. — Я не должен быть единственным держателем.

Вера приняла терминал обеими руками.

— Самат нашёл диапазон. Я только прочитал поля, — сказал он.

— И выбрали доказательство, а не сообщение сестры.

— Если Нике грозит опасность, я потерял время.

— Без происхождения записи вы защитите её только своим словом.

За сетчатой дверью появились два сотрудника безопасности. Впереди шла Ада Ремезова без бахил, в форменных ботинках, которые вода портила с каждым шагом. Она увидела снятый люк, обгоревший аккумулятор и терминал у Веры.

— Отойдите от оборудования, — сказала она.

Ратмир поднял локальный регистратор.

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

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

— Фиксирую. Кто санкционировал доступ?

— Я, — сказала Вера.

— У вас нет полномочий вскрывать списанные узлы.

— Поэтому в протоколе будет нарушение режима с моей стороны. И обнаружение физической записи, которая расходится с серверным журналом смерти Самата.

Ада протянула руку к терминалу. Вера не отдала.

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

— Вы только что уничтожили источник.

— Источник пережил один сеанс. Аккумулятор — нет. Ратмир записал процедуру целиком.

Инженер показал локальный журнал. Ада убрала руку.

— Что на записи?

— Холодный контур открылся в 07:40, на девять минут раньше официального журнала. Есть независимые температура, влажность и обратный поток. В 07:53 второй человек ушёл через сервисный канал.

— Пропуск?

— Электронного события нет.

— Тепловой след не устанавливает личность.

— Не устанавливает, — согласился Лев.

— Тогда что он устанавливает?

Вера включила терминал и вывела грубую карту без интерполяции.

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

На экране второй след состоял из нескольких тёплых квадратов. Но это был не голос, который можно смонтировать, и не граф, который можно перенормировать: тело прошло через холодный воздух и оставило физический порядок изменений.

Ада долго смотрела на карту.

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

— Зато есть воздух, вода и ручные клапаны, — ответила Вера.

Лев передал Аде пакет для второй копии и продиктовал контрольную сумму. Только после трёх подписей он развернул сообщение Ники.

В сообщении было четыре слова:

«У нас спрашивали о Самате».

Дата отправки стояла вчерашняя.

А ниже Ника добавила адресата вопроса — профиль, которого не существовало в живом кворуме и который не должен был знать её имени.

Глава 7. Человек без пропуска

Ада потребовала назвать второй след тепловым эхом ещё до того, как они вышли из воды.

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

— После ремонтных работ массивная створка нагревается неравномерно, — говорила Ада кому-то по внутренней связи. — Старая система могла принять движение теплового фронта за перемещение человека. До проверки не используйте слово «присутствие».

Вера забрала у Льва ленту.

— Вторая копия?

— Совпадает до последнего блока.

— Передайте Аде. Первую опечатает Ратмир, третью возьму я.

Лев посмотрел на терминал в её руках.

— Если она уже выбрала объяснение, копия её не переубедит.

— Тогда переубедит маршрут.

Северный сервисный канал расходился за зеркалом на два узких рукава. Один поднимался к учебному залу, второй спускался вдоль старого коллектора охлаждения. Электронных замков там не было: после затопления створки оставили на ручных приводах, чтобы аварийная бригада могла выйти при полном отключении питания. Человек, знавший схему, мог войти по пропуску через любую штатную дверь, оставить браслет в разрешённой зоне, пройти между контурами и вернуться другим путём. В журнале остался бы неподвижный сотрудник, а в холодном воздухе — движущееся тело.

— Вам нельзя идти, — сказала Ада, входя в комнату. — Галерея опечатывается.

— Значит, идём вместе.

— Следственная группа прибудет через сорок минут.

— За сорок минут вода сравняет всё, что ещё не смыла.

Ада протянула Вере прозрачный пакет. Внутри лежала подписанная копия контейнера.

— Я признаю расхождение часов. Не признаю человека по нескольким тёплым пятнам.

— Вы признаете три независимых датчика и нагрузку пола.

— Я признаю, что система зарегистрировала массу. После ремонта по каналу таскали теплоизоляционные маты. Влажный материал отдаёт тепло медленно и может сдвигаться потоком.

Ратмир перестал вытирать регистратор.

— Воздух не носит по полу восемьдесят килограммов мата против уклона.

— В вашем журнале есть уклон?

— В бетоне есть.

Вера положила пакет рядом с лентой.

— Нам не нужно спорить о картинке. У нас есть время открытия ручной створки. Проверим, куда ушёл воздух после неё.

Ада молчала несколько секунд. Отказ теперь пришлось бы тоже занести в протокол.

— Десять минут, — сказала она. — Лев остаётся здесь.

— Почему?

— У него конфликт интересов и сообщение от внешнего носителя, связанного с делом.

Лев открыл рот, но Вера опередила его:

— Оставайтесь с копиями. Никому не передавайте их без двух подписей.

Это был не приказ безопасности, а работа, которую нельзя было поручить случайному свидетелю. Лев понял и кивнул.

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

Ада направила фонарь вниз.

— Вот ваш влажный след. Он идёт в обе стороны.

— Это граница затопления, — сказал Ратмир. — След поверх неё.

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

Вера присела, не касаясь бетона.

— Подошвы забирали воду здесь и оставляли дальше. Человек двигался от зеркала.

— Или ремонтник двигался к нему днём раньше, — сказала Ада.

— Тогда датчики не записали бы его в 07:53.

— Если это датчики записали именно его.

Вера выпрямилась. Ада защищала не удобную версию, а порог, после которого безопасность теряла право считать смерть производственным случаем. Признание убийства означало внешний надзор, изъятие журналов и проверку каждого решения её службы. Потому каждое основание должно было выдержать не убеждение, а враждебное чтение.

— Начнём без тепловой карты, — сказала Вера. — Что произошло в 07:53 по механике?

Ратмир сверился с выгрузкой.

— Ручная створка открылась на одиннадцать секунд. Датчик угла автономный, без серверных часов. Привязка по циклу насоса.

— Какой перепад давления был до открытия?

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

— А фактически?

Ратмир развернул схему на сухом участке стены.

— На четыре секунды поток развернулся к старому коллектору.

Ада приблизила фонарь.

— Из-за открытой створки.

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

До клапана было тридцать метров. Канал сужался; потолок нависал так низко, что Ратмир шёл согнувшись. На стенах выступал конденсат. Индикаторная бумага у двух решёток отклонилась к коллектору, у третьей повисла неподвижно.

— Сейчас клапан закрыт, — сказала Ада.

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

Рукоять находилась в нише за съёмной сеткой. Пломбы на сетке не было: узел считался аварийным и должен был открываться без инструмента. На металле виднелась рыжая дуга, а рядом — чистый участок шириной в ладонь.

Ратмир сфотографировал нишу с масштабной линейкой.

— Клапан поворачивали недавно. До упора и обратно.

— Насколько недавно? — спросила Ада.

— Коррозия не часы.

Вера осмотрела пол. Вода сюда не доходила, но под нишей лежали две серые капли, уже втянувшиеся в пыль. Дальше, к коллектору, повторялись тёмные отпечатки, слабые и неполные.

— Здесь человек коснулся рукояти мокрой рукой, — сказала она. — Потом пошёл вниз.

Ада присела рядом.

— Конденсат.

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

— Совпадают на глаз.

— Тогда измерим.

Ратмир достал складную рейку. Расстояние между пятнами менялось: шестьдесят один сантиметр, шестьдесят, затем сорок восемь у низкого участка. Человек сократил шаг, пригнувшись. У тепловой дорожки в контейнере интервалы нагрузки давали тот же рисунок — два равных шага и короткий перед створкой.

Ада попросила выгрузку на своём терминале, но Вера не позволила подключать копию. Ратмир прочитал значения с бумажной ленты. Они проверили ещё раз.

— Мат не меняет длину шага перед низким потолком, — сказала Вера.

— Ремонтник меняет.

— Назовите ремонтника, который был здесь ночью смерти Самата.

Ада поднялась.

— Журнал работ пуст.

— Пропускной журнал тоже. Это один и тот же отсутствующий человек.

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

— Заперт с нашей стороны, — сообщил он.

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

— Значит, отсюда не вышли.

— Здесь нет замка, — сказал Ратмир. — Только прижим.

Он надавил плечом. Люк не поддался. Тогда инженер провёл пальцами по ободу и показал тонкую белую полоску.

— Герметик.

— После затопления? — спросила Вера.

— Нанесли с той стороны. Свежий, не старше недели.

Человек вышел через люк, а затем кто-то закрыл путь тонким слоем ремонтного состава. Не навсегда — лишь до первой попытки проверки. Если бы они дождались штатной бригады, герметик объявили бы частью планового обслуживания.

Ада вызвала дежурного и потребовала журнал работ по промежуточному коридору. Ответ пришёл почти сразу: герметизация люков в северном крыле не назначалась.

— Вскрываем, — сказала она.

Это было первое действие Ады, исходившее не из версии несчастного случая.

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

Вера не стала наклоняться ближе.

— Образец возьмёт следственная группа.

Ада поставила переносной маяк и закрыла проход.

— Пока это незаконное проникновение в техническую зону.

— И встреча с Саматом за несколько минут до его смерти.

— Время смерти не установлено до минуты.

— Зато установлена последовательность. Самат вошёл в контур. Второй человек пришёл скрытым маршрутом. Холодный контур открыли в 07:40, а цифровой журнал перенёс событие на девять минут. В 07:53 второй человек ушёл через створку, открыл сбросной клапан и поднялся сюда. После этого люк герметизировали без заявки. В 07:56 у Самата был последний уверенный пульс. В 07:58 браслет прекратил телеметрию. В 08:42 его голосом подтвердили подменённую синхронизацию.

Ада слушала, глядя не на Веру, а на чёрную крошку у стены.

— Камеру у учебного зала отключил Самат, — сказала она.

Вера повернулась к ней.

— Когда?

— В 07:31. Личной картой и своим кодом. Я получила журнал пять минут назад.

— Почему вы молчали?

— Проверяла подпись. Команда подлинная, не синтезированная. Камера вернулась в сеть в 08:03, уже без записи промежутка.

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

— Он впустил человека, — сказала Вера. — Но не переносил часы, не герметизировал люк и не подтверждал корпус после смерти.

Ада выключила терминал.

— Я перевожу событие в категорию предполагаемого убийства. До заключения эксперта формулировка именно такая.

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

Когда они вернулись к X0-4172, северное крыло изменилось. На переходах горели красные полосы следственного режима. Сотрудников выводили по одному, терминалы складывали в экранированные ящики, двери между контурами закрывались механически. Лев оставался у технической комнаты рядом с тремя опечатанными копиями. Возле него стояли двое незнакомых сотрудников центральной безопасности.

— Телефон, браслет и внешний терминал, — сказал один Вере.

— На каком основании?

— Режим сохранения доказательств. Распоряжение директора Талена.

Тален появился на стеновом экране прежде, чем она успела возразить. Фон за ним был нейтральным, подготовленным для публичных обращений.

— Вера, подтверждаете перевод смерти Самата в расследование предполагаемого убийства?

— Подтверждаю. Основания переданы Аде и зафиксированы на независимых носителях.

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

— Носители не подозреваемые.

— Поэтому мы обязаны защитить их от слухов и давления.

— Вы защищаете не их, а единственную версию, которую сможете выпустить публично.

На экране лицо Талена не изменилось.

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

Вера посмотрела на Льва. Сообщение Ники находилось теперь по другую сторону правила, которое она сама помогла запустить. Неизвестный профиль спрашивал о Самате, но ответить сестре Льва без разрешения означало нарушить следственный режим.

— Кто посредник?

— Я утвержу кандидатуру к вечеру.

— Тогда до вечера мы слепы к живому кворуму.

— До вечера вы защищены от загрязнения показаний.

Сотрудник безопасности протянул пакет для её терминала. Вера отключила устройство и положила внутрь, но третью копию контейнера не отдала ему.

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

Ада подошла и поставила подпись первой. Ратмир — второй. После короткой паузы сотрудник добавил третью. Вера выпустила пакет из рук.

Тален дождался завершения процедуры.

— Ещё одно решение. Повреждённый корпус SAIMA-L нельзя оставлять единственной доступной версией. Через двадцать четыре часа спорный корпус будет заменён безопасной канонической копией.

— Откуда она у вас? — спросил Лев.

Тален впервые посмотрел прямо на него.

— Из резервного контура, не затронутого синхронизацией.

— Такого контура нет в реестре, — сказала Вера.

— Теперь расследование установит, чего ещё нет в вашем реестре.

Экран погас.

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

Глава 8. Семь контуров

В изолированном контуре не было окон, зато было семь часов.

Каждые показывали своё время: юридическое зеркало отставало на две секунды, учебное — на пять, исследовательское спешило на одну. Лев заметил это, пока сотрудник безопасности переписывал перечень разрешённых ему инструментов. Сеть, внешний терминал и сообщение Ники в перечень не входили.

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

— Как сравнивать без запросов?

— Через штатную панель целостности.

Панель показывала семь зелёных кругов. Тексты SAIMA-L совпадали побайтово, контрольные суммы были действительны. Под каждым кругом стояло слово «готов», словно Тален уже выбрал ответ до проверки.

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

— Нам нужен источник копии, а не ещё одно сравнение строк, — сказала она.

— Источники скрыты политикой расследования.

— Тогда сравнивайте то, что политика не считает содержанием.

Лев открыл сведения о резервах. Семь контуров назывались по функциям: судебный, учебный, исследовательский, публичный, холодный, страховой и миграционный. У всех был один текст, но разное количество контекстных рёбер. Судебный хранил решения и возражения; учебный — разобранные примеры; публичный — только утверждённые толкования. Разница выглядела законной, пока Лев не выстроил даты последнего пополнения.

— Они обновлялись не одновременно, — сказал он.

— Резервы имеют разные окна, — ответил наблюдавший за ним методолог.

— Окна объясняют задержку, но не порядок.

Вчера первым отвечал исследовательский контур, затем холодный, потом судебный. Сегодня первым стал публичный. При обычной репликации ближайший узел отвечал бы раньше независимо от содержания запроса. Здесь скорость зависела от того, какие метаданные он спрашивал.

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