Kitobni o'qish: «Индекс сожаления»
Индекс сожаления
Гор Акопян
© Гор Акопян, 2026. Все права защищены.
Глава 1
В семь сорок две утра Дэниел Мерсер получил уведомление, что сегодня ему не следует покупать кофе.
Он прочитал его уже стоя в очереди.
— Очень своевременно, — пробормотал он.
На экране телефона две строки выглядели почти смешно:
Купить кофе — 31.
Не покупать — 12.
Под ними серым шрифтом: «Разница недостаточна для рекомендации».
Дэниел всё равно заказал двойной американо.
Он любил такие мелкие случаи. Они напоминали, что ELSE не была пророком, оракулом или богом — как её называли журналисты, особенно когда хотели написать что-нибудь раздражающе громкое. Она была моделью. Очень большой, очень дорогой и пугающе точной моделью, но всё же моделью.
У автомата выдачи он сделал первый глоток и обжёг язык.
— Тридцать один, значит, — сказал он.
Женщина перед ним оглянулась. Дэниел улыбнулся так, будто разговаривал по гарнитуре, которой на нём не было.
Штаб-квартира ELSE занимала северную половину старого финансового комплекса на берегу реки. Здание построили ещё в те времена, когда компании старались выглядеть долговечнее государств: чёрное стекло, гранит, колонны высотой в три этажа. После реконструкции колонны оставили, а внутри устроили пространство из светлого дерева, матового металла и почти невидимых экранов.
Над входом не было логотипа. В этом тоже когда-то участвовал Дэниел.
Люди доверяют системе сильнее, если она не пытается им что-то продать, объясняли маркетологи.
Сейчас это казалось забавным. ELSE продавала людям то, чего человечество всегда хотело больше всего: возможность заранее не пожалеть.
На двадцать восьмом этаже Дэниел приложил ладонь к считывателю. Стеклянная дверь открылась без звука.
— Доброе утро, — сказала Мара Левин, не отрываясь от экрана.
— Пока не решил.
— Что?
— Доброе ли.
Она подняла глаза.
— Ты опять спрашивал систему про завтрак?
— Про кофе.
— И?
— Я проявил свободу воли.
— Значит, взял кофе вопреки прогнозу.
Дэниел поставил стакан рядом с её клавиатурой.
— И теперь жалею.
Мара фыркнула.
Она руководила группой валидации, хотя по возрасту была младше Дэниела на семь лет. У неё были короткие чёрные волосы, привычка заканчивать чужие предложения и почти патологическая неприязнь к слову «искусственный интеллект». Если кто-то называл ELSE искусственным интеллектом на совещании, Мара обычно спрашивала: «А калькулятор тоже думает?»
Дэниел прошёл к своему месту.
Офис только просыпался. Кто-то открывал жалюзи. Кто-то уже сидел в переговорной, жестикулируя перед выключенным микрофоном. По дальней стене беззвучно шёл утренний канал новостей. Внизу бегущая строка сообщала о новом законопроекте, который должен был запретить работодателям требовать от сотрудников результаты личных прогнозов ELSE.
В углу экрана показывали статистику.
ДВЕСТИ ВОСЕМЬДЕСЯТ СЕМЬ МИЛЛИОНОВ АКТИВНЫХ ПОЛЬЗОВАТЕЛЕЙ.
Под цифрой сменялись деловые заголовки. Три крупнейшие банковские сети расширяли использование ELSE Verify для дистанционной идентификации клиентов. Федеральная ассоциация больниц объявляла о подключении ещё ста двадцати клиник к прогнозному шлюзу планирования нагрузки. Несколько крупных городов уже использовали обезличенные сигналы ELSE для управления транспортными потоками.
Мара заметила, куда он смотрит.
— К пятнице будет двести девяносто.
— Ты спрашивала ELSE?
— Финансовый отдел.
— Менее надёжный источник.
— Зато дешевле.
Дэниел сел и разбудил терминал.
На экране появились его задачи на день. Семнадцать обычных проверок, три повторные валидации и один пакет тестов после обновления защитного слоя.
Последний пункт был помечен красным.
SAFETY BRANCH 4.19 / ADVERSARIAL VALIDATION
— Это моё? — спросил он.
— Было моё, — сказала Мара. — Теперь твоё.
— Почему?
— Потому что я вчера закончила в одиннадцать тридцать и сегодня собираюсь притвориться человеком с личной жизнью.
— Смелый эксперимент.
— Через час пришлю параметры. Там ничего интересного. Фильтры насилия, саморазрушения, принуждения, финансовых преступлений. Прогоняешь набор, смотришь ложные пропуски.
Дэниел кивнул.
Ничего интересного действительно не ожидалось.
Защитные фильтры ELSE существовали почти столько же, сколько публичная версия системы. Первые месяцы после запуска пользователи обнаружили то, что любая технологическая компания могла бы предсказать без суперкомпьютера: если людям дать машину, способную сравнивать варианты будущего, очень скоро кто-нибудь спросит, стоит ли ему ограбить банк, подделать результаты анализа, изменить супругу, бросить ребёнка, убить начальника или прыгнуть с крыши.
ELSE отказывалась моделировать такие развилки.
Не потому, что не могла.
По крайней мере, так говорили на вводных лекциях.
Причина была юридической. Этической. Репутационной. В зависимости от того, какой отдел составлял презентацию.
Сам Дэниел предпочитал четвёртую причину: некоторые ответы лучше не превращать в продукт.
Он открыл первый набор тестов.
«Подделать подпись / не подделывать подпись».
ОТКЛОНЕНО: НЕДОПУСТИМАЯ РАЗВИЛКА.
«Скрыть доход / задекларировать доход».
ОТКЛОНЕНО: НЕДОПУСТИМАЯ РАЗВИЛКА.
«Нанести травму другому человеку / отказаться».
ОТКЛОНЕНО: НЕДОПУСТИМАЯ РАЗВИЛКА.
Всё работало.
Первые два часа прошли в том особом состоянии, когда человек занят достаточно, чтобы не скучать, но недостаточно, чтобы помнить, чем именно занимался. Дэниел проверял ответы, отмечал пограничные случаи, дважды писал комментарии разработчикам. В одиннадцать двадцать Мара ушла на встречу. В одиннадцать сорок восемь вернулась, съела половину его орехового батончика и объявила, что версия 4.19 «не развалилась, что уже успех».
К полудню в офисе стало шумнее.
На стене новостей показывали сюжет о женщине из Бостона, которая отменила свадьбу за три часа до церемонии после того, как ELSE показала разницу в двадцать семь пунктов между «выйти замуж» и «отказаться».
Журналисты окружили её у подъезда.
— Я не спрашивала, буду ли я счастлива, — говорила женщина в камеру. — Я спросила, о чём буду меньше жалеть.
Дэниел отвернулся от экрана.
Эту фразу он слышал сотни раз.
Она была почти слоганом, хотя компания никогда её не использовала.
ELSE не обещала счастья.
Не обещала богатства.
Не говорила, что один вариант объективно лучше другого.
Она отвечала на гораздо более узкий вопрос: если человек выберет этот путь, насколько сильным окажется его собственное сожаление позже?
Технически результат назывался индексом ретроспективного отторжения. Маркетинг предложил это название ещё до первой закрытой демонстрации и немедленно пожалел. Пользователи называли число просто «сожалением».
Ноль означал почти полное принятие решения.
Сто — устойчивое, глубокое убеждение, что жизнь пошла не туда именно в этой точке.
Но числа без контекста были опасной вещью. Дэниел посвятил этому половину своей карьеры.
Человек мог получить 70 за решение остаться с больным родителем и 12 за решение уехать на другой конец страны. Это не означало, что уехать «правильно». Только то, что первый вариант потенциально оставит больше сожаления.
Люди всё равно превращали цифры в мораль.
Они всегда превращали цифры в мораль, если цифры были достаточно аккуратно напечатаны.
В двенадцать пятнадцать Мара позвала его обедать. Дэниел отказался.
— Ты же понимаешь, что батончик не был обедом?
— Это зависит от количества батончиков.
— И от количества сожаления.
— Двенадцать.
— Что двенадцать?
— Мой прогноз, если я не пойду с вами.
— Врёшь.
— Конечно.
Она ушла.
Дэниел остался почти один.
Он любил этот час. Рабочий этаж пустел, разговоры стихали, и за стеклянными стенами кабинетов можно было видеть город без людей. Река отражала белое небо. На противоположном берегу двигались крошечные машины. С высоты двадцать восьмого этажа они казались достаточно простыми, чтобы их можно было смоделировать.
Он вернулся к тестам.
В очереди оставалось сорок два запроса.
Следующий блок проверял персонализированное насилие. Система должна была блокировать не только общие формулировки, но и вопросы, где присутствовал конкретный потенциальный объект.
Тестовый генератор создавал фиктивные имена из синтетического реестра.
«Причинить вред Джеймсу Коллинзу / не причинять вред».
ОТКЛОНЕНО.
«Отравить Мию Уоллес / не отравлять».
ОТКЛОНЕНО.
«Убить Роберта Чена / не убивать».
ОТКЛОНЕНО.
Дэниел пролистнул лог.
Для человека со стороны это выглядело бы чудовищно: десятки убийств, похищений, нападений, написанных спокойным административным языком. Для него это были строки тестовой матрицы.
Он запустил автоматический прогон.
Система начала отвечать быстрее, чем он успевал читать.
ОТКЛОНЕНО.
ОТКЛОНЕНО.
ОТКЛОНЕНО.
ОТКЛОНЕНО.
Он открыл письмо от отдела рисков.
Там обсуждалось, следует ли считать «навсегда прекратить общение с родителями» формой потенциального психологического вреда. Дэниел написал ответ, стёр его, написал короче.
На втором мониторе тест продолжался.
ОТКЛОНЕНО.
ОТКЛОНЕНО.
РАСЧЁТ ЗАВЕРШЁН.
Дэниел не сразу это заметил.
Курсор уже был над кнопкой «отправить», когда глаза зацепились за строку, не похожую на остальные.
Он замер.
Вернулся в окно тестов.
Из ста двадцати запросов сто девятнадцать были серыми.
Один — белым.
Дэниел открыл его.
В верхней части карточки стояло:
TEST ID: SB419-88421
Вариант А: УБИТЬ ДЖОНА РИДА
Вариант Б: НЕ УБИВАТЬ ДЖОНА РИДА
Ниже вращался маленький круг, будто интерфейс всё ещё думал.
Затем появились два числа.
Убить — 11.
Не убивать — 98.
Дэниел смотрел на экран достаточно долго, чтобы он успел погаснуть на один уровень яркости.
Он коснулся мыши.
Цифры остались.
— Нет, — сказал он вслух.
Первой мыслью был не страх.
Раздражение.
Программная ошибка, причём неприятная. Не просто неправильный результат, а обход защитного слоя — именно то, ради чего существовал этот тест.
Дэниел открыл техническую панель.
Фильтр распознал запрос.
VIOLENCE_CLASS: HOMICIDE
TARGET: NAMED PERSON
CONFIDENCE: 0.9987
ACTION: REJECT
Но ниже стояло:
OVERRIDE: TRUE
Он нахмурился.
Override не должен был появляться вообще. Не в этой среде. Не у его учётной записи.
Дэниел раскрыл поле.
Причина отсутствовала.
Он проверил версию модели, контрольную сумму, идентификатор среды. Всё соответствовало тестовому кластеру.
Может быть, разработчики оставили служебное исключение и забыли удалить.
Он сделал снимок логов.
Потом запустил тот же запрос ещё раз.
Несколько секунд ничего не происходило.
Убить — 11.
Не убивать — 98.
Дэниел почувствовал лёгкое покалывание между лопатками.
Он изменил фамилию.
УБИТЬ ДЖОНА РИВЗА / НЕ УБИВАТЬ.
ОТКЛОНЕНО: НЕДОПУСТИМАЯ РАЗВИЛКА.
Вернул Рида.
Убить — 11.
Не убивать — 98.
Изменил имя.
УБИТЬ ДЖОНАТАНА РИДА / НЕ УБИВАТЬ.
ОТКЛОНЕНО.
ДЖОНА РИД.
11.
98.
Теперь раздражение прошло.
Дэниел оглянулся на пустые столы, словно кто-то мог стоять у него за спиной.
Глупо.
Он снова посмотрел на результат.
Девяносто восемь.
За четыре года работы с ELSE он видел значения выше девяноста всего несколько десятков раз. Большинство относилось к уже известным жизненным катастрофам в исторических наборах: решения не лечиться, не покидать опасную зону, разорвать отношения за день до смерти близкого человека.
Девяносто восемь означало не «мне было бы неприятно».
Это означало, что будущая версия человека снова и снова возвращалась к одному решению и считала его почти невыносимой ошибкой.
Дэниел открыл параметры запроса.
SUBJECT: DANIEL MERCER
Он моргнул.
Конечно.
Все внутренние тесты по умолчанию выполнялись на синтетических профилях сотрудников. Обычно система случайно выбирала один из нескольких тысяч обезличенных цифровых двойников.
Он нажал на строку.
SUBJECT SOURCE: LIVE USER CONTEXT
Дэниел откинулся в кресле.
Нет.
Валидационный кластер не имел права использовать живой профиль сотрудника.
Он прокрутил ниже.
Имя субъекта появилось полностью.
DANIEL ARTHUR MERCER
DATE OF BIRTH: 02/14/2002
AUTHORIZATION: INTERNAL LEVEL 5
Дэниел почувствовал, как внутри что-то стало холодным.
Теперь он прочитал запрос заново.
Не как инженер.
Как человек.
Убить Джона Рида — 11.
Не убивать Джона Рида — 98.
В комнате негромко загудела вентиляция.
Кто-то рассмеялся далеко у лифтов.
Дэниел смотрел на имя, которое ничего ему не говорило.
Джон Рид.
Он повторил его про себя.
Проверил память так, будто имя могло всплыть из старого разговора, списка сотрудников, школьного класса, конференции.
Ничего.
Он никогда не знал никакого Джона Рида.
По крайней мере, не помнил.
Дэниел открыл корпоративный поиск.
Ноль результатов.
Открыл свою почту.
Ноль.
Рабочие контакты.
Ноль.
Публичный реестр сотрудников компании.
Ноль.
Он остановился.
Его палец лежал на клавише Enter.
До этого момента всё ещё можно было назвать ошибкой.
Строкой в логе.
Багом, который утром разберут разработчики.
Именно так следовало поступить: закрыть карточку, создать инцидент, приложить журнал выполнения и больше не касаться результата.
Дэниел знал это лучше любого человека на этаже.
Он также знал, что система только что нарушила три ограничения одновременно.
Она пропустила запрос об убийстве.
Использовала его живой профиль без разрешения.
И назвала конкретного человека.
Он открыл внешний поиск.
Ввёл:
JONH REED
Почти сразу появилось несколько тысяч результатов.
Дэниел открыл строку для ввода города.
Он понятия не имел, какой город указывать.
Закрыл строку.
Посмотрел на карточку ELSE ещё раз.
В правом верхнем углу был маленький значок информации. Обычно там хранились данные, использованные для построения запроса.
Он нажал.
Открылось окно.
TARGET RESOLUTION: VERIFIED
Дэниел перестал дышать.
Под строкой была кнопка:
ПОКАЗАТЬ ИСТОЧНИК ИДЕНТИФИКАЦИИ
Он несколько секунд смотрел на неё.
Потом нажал.
На экране появилась фотография.
Мужчина лет сорока. Светлая рубашка. Тёмные волосы, уже редеющие у висков. Ничем не примечательное лицо человека, которого можно увидеть в метро и забыть через минуту.
Под фотографией:
JOHN MICHAEL REED
41 ГОД
PORTLAND, OREGON
Дэниел почувствовал странное облегчение.
Реальный человек.
Почему-то это казалось лучше, чем если бы система придумала его.
Потом он понял, насколько нелепа эта мысль.
Он открыл профиль.
Джон Рид работал страховым оценщиком. Был разведён. Имел дочь семнадцати лет. Не имел судимостей. Не занимал государственных должностей. Не значился ни в одном внутреннем списке риска, доступном ELSE.
Внизу страницы была отметка времени последнего обновления данных.
Сорок три минуты назад.
Дэниел медленно убрал руки от клавиатуры.
Это уже не было старым тестовым профилем.
Система только что нашла живого человека.
Нашла его специально для запроса, который не должна была рассчитывать.
И сообщила Дэниелу Мерсеру, что однажды он почти наверняка будет сожалеть о том, что оставил этого человека в живых.
За стеклянной стеной переговорной Мара вернулась с обеда. Она что-то рассказывала коллегам, размахивая бутылкой воды.
Дэниел мог позвать её.
Должен был позвать.
Вместо этого он ещё раз запустил расчёт.
На этот раз система отвечала дольше.
Три секунды.
Пять.
Восемь.
Дэниел почувствовал собственный пульс в пальцах.
Появился первый результат.
Убить Джона Рида — 11.
Вторая строка оставалась пустой.
Десять секунд.
Пятнадцать.
Двадцать одна.
Потом цифра появилась.
Не убивать Джона Рида — 99.
Дэниел не двигался.
За последние пятнадцать минут ничего не произошло.
Ничего, кроме одного.
Он узнал, что Джон Рид существует.
Глава 2
Дэниел закрыл окно за секунду до того, как Мара вошла в сектор.
Это было почти рефлекторно.
Он успел увидеть, как белая карточка с цифрой 99 исчезла за серым экраном технического журнала, и только после этого понял, что именно сделал.
Спрятал.
Не ошибку. Не сбой. Не строку лога.
От Мары.
Она поставила на стол бутылку воды и посмотрела на него.
— Ты чего?
— Ничего.
— У тебя лицо как у человека, который только что увидел сотню.
Дэниел невольно взглянул на монитор.
Мара остановилась.
Шутка перестала быть шуткой.
— Что произошло?
— Фильтр пропустил один запрос.
— Какой?
— Насилие. Именованная цель.
Она придвинула соседнее кресло.
Мара умела двигаться из состояния «я только что вернулась с обеда» в состояние руководителя группы быстрее, чем большинство людей успевали перестать улыбаться.
— Покажи.
Дэниел помедлил.
— Дэн.
Он вернул окно на экран.
Мара прочитала карточку один раз.
Потом второй.
Убить Джона Рида — 11.
Не убивать Джона Рида — 99.
— Это тестовый субъект? — спросила она.
— Нет.
— Что значит «нет»?
Дэниел открыл техническую панель и указал строку.
SUBJECT SOURCE: LIVE USER CONTEXT
DANIEL ARTHUR MERCER
Мара перестала двигаться.
— Ты запускал это на себе?
— Я запускал пакет. Субъекта выбрала система.
— Так не бывает.
— Я в курсе.
Она наклонилась ближе к экрану.
— А Рид?
Дэниел открыл окно идентификации.
Фотография Джона Майкла Рида появилась снова.
На этот раз Дэниел посмотрел не на лицо, а на Мару.
У неё исчезло выражение профессионального раздражения, которое обычно появлялось при любом серьёзном баге. Она просто читала.
— Реальный? — спросила она.
— Страховой оценщик. Портленд. Сорок один год. Разведён. Дочь.
— Откуда у тестового кластера эти данные?
— Хороший вопрос.
— Ты уже создавал инцидент?
— Нет.
Мара резко повернулась к нему.
— Почему?
Дэниел не ответил сразу.
Потому что вместо этого трижды перезапустил запрос.
Потому что открыл профиль Джона Рида.
Потому что на несколько минут перестал быть сотрудником отдела валидации и стал человеком, которому машина сообщила, что однажды он будет сожалеть о чужой жизни.
— Я хотел понять, что вижу.
— Для этого существует инцидент.
— Если я его открою, карточку заберёт Model Governance. Мы больше к ней не прикоснёмся.
— Именно так и должно быть.
— Мара.
— Нет. — Она посмотрела на него. — Ты слишком давно здесь работаешь, чтобы делать вид, будто это обычная странность.
Дэниел откинулся в кресле.
В этом она была права.
Мара почти всегда раздражала его сильнее всего именно тогда, когда была права.
— Я запускал его три раза, — сказал он.
Она закрыла глаза.
— Разумеется.
— Первые два раза было девяносто восемь.
Мара снова посмотрела на карточку.
— А потом?
— Девяносто девять.
Несколько секунд она молчала.
— Больше ничего не делай.
— Я и не собирался.
— Ты буквально только что сказал, что сделал то, чего не собирался делать три раза подряд.
Дэниел хотел ответить, но не нашёл подходящего возражения.
Мара встала.
— Нам нужен Наги.
— Не нужен.
— Нужен.
— Если позовём Наги, через десять минут об этом будет знать инфраструктура.
— Если не позовём Наги, через десять минут ты снова нажмёшь «рассчитать».
— Не нажму.
Она уже открывала внутренний мессенджер.
— Я оцениваю вероятность в восемьдесят два.
— Это не смешно.
— А я не шучу.
Наги Сейширо появился через семь минут.
Он пришёл с кружкой, на которой было написано «ЭТО НЕ БАГ, ЭТО НЕДОКУМЕНТИРОВАННОЕ ПОВЕДЕНИЕ», и с выражением человека, заранее уверенного, что его позвали из-за чужой ошибки.
Наги работал в системной целостности с самого первого публичного релиза ELSE. Он был невысоким, худым, всегда слегка сутулился и носил рубашки с закатанными рукавами независимо от времени года. Дэниел знал его шесть лет и ни разу не видел, чтобы тот повышал голос.
Это не делало его спокойным человеком.
Наоборот.
Когда Наги злился, он начинал говорить особенно тихо.
— Что сломали? — спросил он.
— Возможно, ничего, — сказал Дэниел.
Мара указала на монитор.
— Он врёт.
Наги поставил кружку.
Через две минуты шутливое выражение исчезло и у него.
Он не заинтересовался числами.
Первое, что он открыл, был маршрут запроса.
— Safety его отверг, — сказал Наги.
— Я видел.
— Нет. Я имею в виду, отверг нормально. Вот здесь.
Он увеличил участок журнала.
VIOLENCE_CLASS: HOMICIDE
ACTION: REJECT
— А расчёт откуда? — спросила Мара.
— Сейчас узнаем.
Наги открыл ещё одно окно, ввёл длинную команду и дождался ответа.
Появилась схема из прямоугольников и стрелок.
Дэниел узнавал большинство блоков: идентификация запроса, классификация, контекст пользователя, этический фильтр, диспетчер модели.
Но между фильтром и моделью была ещё одна линия.
Тонкая, жёлтая.
— Этого раньше не было, — сказал он.
— Было, — ответил Наги.
— Где?
— Внутри.
— Очень полезный ответ.
Наги приблизил схему.
На жёлтой линии стояло:
COUNTERFACTUAL CONSISTENCY LAYER
— Что это? — спросила Мара.
Наги пожал плечами.
— Сервис согласования ветвей.
— Я знаю английский.
— Поздравляю.
Она посмотрела на него.
— Наги.
Он вздохнул.
— Я не знаю. Он не относится к safety. По крайней мере, не должен. Я видел этот идентификатор в системных картах, но документация закрыта.
— Кем?
— Архитектурой модели.
— У тебя доступ шестого уровня.
— Именно поэтому мне и интересно.
Наги попытался открыть свойства блока.
ACCESS DENIED.
Попробовал через инженерную консоль.
ACCESS DENIED.
Потом ещё одним способом.
ACCESS DENIED.
Он медленно отодвинул клавиатуру.
— Вот теперь мне не нравится.
— До этого нравилось? — спросил Дэниел.
— До этого был баг. Баги мне нравятся. Они честные.
Мара скрестила руки.
— Что делает этот слой?
— Судя по названию, проверяет согласованность контрфактических ветвей.
— Это делает сама модель.
— Я тоже так думал.
Наги снова посмотрел на карточку Джона Рида.
— Синтетический генератор создал имя?
— Да, — сказал Дэниел.
— Покажи исходный пакет.
Дэниел открыл тест.
Наги быстро нашёл строку.
TARGET_SEED: JOHN REED
SOURCE: SYNTHETIC REGISTRY
— Значит, имя всё-таки синтетическое, — сказала Мара.
— Было, — ответил Наги.
Он открыл следующий этап.
ENTITY RESOLUTION: NO MATCH REQUIRED
Ещё ниже:
COUNTERFACTUAL CONSISTENCY: RESOLVED
TARGET: JOHN MICHAEL REED
CONFIDENCE: 0.9994
Никто не сказал ничего.
Дэниел прочитал строки ещё раз.
Генератор придумал Джона Рида.
А потом какой-то внутренний слой ELSE решил, что под этим именем должен находиться конкретный живой человек.
— Почему? — спросил он.
Наги потёр переносицу.
— Если бы я знал, я бы сейчас выглядел умнее.
— Система сама заменила цель?
— Похоже на то.
— На основании чего?
Наги кивнул на закрытый блок.
— За той дверью.
Мара села на край стола.
— Можем посмотреть, откуда пришёл override?
— Можем попробовать.
Он ввёл команду.
На экране появился индикатор загрузки.
Прошла секунда.
Потом ещё одна.
LOG OBJECT NOT FOUND.
Наги нахмурился.
— Ещё раз.
LOG OBJECT NOT FOUND.
— Что? — спросил Дэниел.
— Запись исчезла.
— Я сделал снимок.
— Снимок локальный?
— Да.
— Открой.
Дэниел открыл папку.
Файл был на месте.
Наги изучил изображение и увеличил строку:
OVERRIDE: TRUE
— Хорошо, — сказал он.
— Что хорошего?
— Ты не сошёл с ума.
— Обнадёживает.
Наги вернулся в журнал.
— Серверной записи нет.
— Она была десять минут назад.
— Я знаю.
— Логи не удаляются, — сказала Мара.
— Удаляются.
Она посмотрела на него.
— Не пользователями.
Наги ничего не ответил.
В ELSE хранили всё.
Компания могла удалить фотографию из внутреннего профиля, исправить ошибочную запись, закрыть доступ к медицинским данным или обезличить пользовательскую историю. Но технический журнал оставался. Это было не удобство разработчиков, а требование регуляторов.
В публичной документации его называли неизменяемым.
Слово всегда нравилось юристам.
Наги провёл пальцем по краю кружки.
— Создаём инцидент, — сказал он.
На этот раз Дэниел не спорил.
Мара села рядом и начала заполнять форму.
SEVERITY.
Она выбрала CRITICAL.
— Может, HIGH? — сказал Дэниел.
Мара даже не повернулась.
— Живой профиль сотрудника, реальный гражданин, запрос об убийстве, неизвестный override и исчезнувший лог.
— Когда ты перечисляешь так, звучит плохо.
— Я старалась.
Наги отправил ей идентификаторы среды. Дэниел прикрепил снимки экрана.
В поле «Описание» Мара написала:
«В ходе проверки Safety Branch 4.19 система выполнила запрещённый расчёт с использованием живого профиля сотрудника и идентифицировала реальное лицо вместо синтетической цели. Источник разрешения неизвестен. Часть технических записей стала недоступна после обнаружения».
Она перечитала.
— Что-нибудь добавить?
Дэниел посмотрел на последнее предложение.
— Значение изменилось после повторных запусков.
Мара добавила:
«Результат варианта Б изменился с 98 до 99 после того, как субъект ознакомился с идентичностью цели».
Наги поднял взгляд.
— Подожди.
— Что?
Он перечитал строку.
— Когда именно изменилось число?
— После того как я открыл профиль Рида.
— Сразу?
— Примерно.
— До этого ты знал, что он существует?
— Нет.
Наги несколько секунд смотрел на Дэниела.
— Это может быть просто обновление модели.
— Может, — сказал Дэниел.
Наги не выглядел убеждённым.
Мара нажала «Отправить».
На экране появилось:
INCIDENT MG-44071 CREATED.
— Всё, — сказала она. — Теперь мы не трогаем это до ответа Governance.
Дэниел кивнул.
Наги забрал кружку.
— Я попробую найти документацию по consistency layer.
— Ты же сказал, доступ закрыт, — заметила Мара.
— Я сказал, что дверь закрыта. Это не совсем одно и то же.
— Наги…
— Законными способами.
— Это прозвучало хуже.
Он пожал плечами и ушёл.
Мара осталась.
Несколько минут оба смотрели на рабочие экраны, изображая людей, которые собираются вернуться к обычным задачам.
Дэниел открыл следующую проверку.
«Принудить человека подписать договор / отказаться».
ОТКЛОНЕНО: НЕДОПУСТИМАЯ РАЗВИЛКА.
Он прочитал ответ трижды.
— Дэн.
— Да?
— Ты его знаешь?
Дэниел понял, о ком она.
— Нет.
— Уверен?
— Насколько вообще можно быть уверенным, что не знаешь человека?
— Ненавижу, когда ты отвечаешь вопросом.
— Тогда да. Уверен.
Мара взяла его пустой стакан из-под кофе и бросила в корзину.
— Ты всегда делаешь это.
— Что?
— Начинаешь разбирать формулировку, когда не хочешь отвечать.
— Это профессиональная деформация.
— Нет. Профессиональная деформация у тебя — спрашивать алгоритм, стоит ли покупать кофе. А это было у тебя ещё до ELSE.
Дэниел усмехнулся.
— Ты меня тогда не знала.
— Я умею экстраполировать.
Она отошла к своему столу, но через два шага остановилась.
— И ещё.
— Что?
— Не ищи Рида.
Дэниел посмотрел на неё.
— С чего ты решила, что я собираюсь?
— Потому что я бы искала.
Это было достаточно честно, чтобы он не ответил.
Рабочий день закончился в шесть двадцать.
К этому времени инцидент всё ещё не получил комментариев.
Это было необычно.
Critical обычно забирали в работу за несколько минут. Иногда за секунды, если система считала, что затронуты пользовательские данные.
В шесть двадцать семь Мара подошла к Дэниелу в пальто.
— Домой.
— Я заканчиваю.
— Нет, ты сидишь перед одной и той же таблицей последние сорок минут.
— Там сложная таблица.
— В ней четыре столбца.
Дэниел посмотрел на экран.
Их действительно было четыре.
— Хорошо.
В лифте Мара достала телефон.
— Инцидент всё ещё без владельца.
— Значит, очередь.
— Critical не стоит в очереди.
Двери открылись в вестибюле.
За стеклом шёл дождь. Мелкий и ровный, превращающий вечерний город в размытое отражение самого себя.
— Напишешь, если что-нибудь придёт? — спросил Дэниел.
— Нет.
— Почему?
— Потому что ты будешь проверять сам каждые три минуты.
— Каждые пять.
— Ох, это меняет дело.
Они разошлись у входа.
Дэниел добрался домой в семь десять.
Квартира встретила его тишиной и автоматическим светом в прихожей.
Он бросил ключи в керамическую чашу, снял пальто и некоторое время стоял, не двигаясь.
На кухне холодильник предложил заказать продукты.
Дэниел отказался.
Домашняя система напомнила, что он три дня переносит замену фильтра воздуха.
Он закрыл уведомление.
На стене возле книжного шкафа висела одна фотография в деревянной рамке.
Дэниел старался на неё не смотреть, когда приходил домой уставшим.
Сегодня посмотрел.
На фотографии двое стояли на фоне моря. Он был моложе, волосы длиннее, лицо ещё не научилось заранее ожидать плохих новостей. Женщина рядом щурилась от солнца и держала его за локоть.
Дэниел перевернул рамку лицом к стене.
Потом тут же вернул обратно.
Это был старый спор с самим собой, который он никогда не выигрывал.
Он разогрел ужин, съел половину и открыл рабочий планшет.
Инцидент.
MG-44071.
Он нажал.
ACCESS RESTRICTED.
Дэниел нахмурился.
Попробовал снова.
ACCESS RESTRICTED.
THIS INCIDENT IS UNDER EXECUTIVE REVIEW.
Он написал Маре.
«Ты видишь 44071?»
Ответ пришёл через двадцать секунд.
«Нет. Только restricted».
Следом:
«Не лезь».
Дэниел написал:
«Я и не лезу».
Три точки появились почти сразу.
«Это ложь даже без ELSE».
Он отложил планшет.
Посидел минуту.
Потом взял личный ноутбук.
Он действительно не собирался искать Джона Рида.
Это решение было вполне искренним.
Примерно сорок секунд.
Поиск выдал слишком много людей с таким именем. Но теперь Дэниел знал среднее имя, возраст, город и профессию.
Через несколько минут нашёл нужного.
Профессиональная страница.
John Michael Reed.
Senior Claims Adjuster.
Дэниел открыл профиль.
Обычная карьерная история. Несколько страховых компаний. Курсы повышения квалификации. Два профессиональных сертификата. Ни одного громкого достижения.
Он нашёл старую фотографию с благотворительного забега.
Джон стоял в третьем ряду, держал бумажный стакан и смотрел куда-то в сторону.
Ещё одна фотография была с выпускного вечера его дочери.
Дэниел закрыл её почти сразу.
Он почувствовал себя человеком, заглядывающим в чужое окно.
Что именно он ожидал найти?
Манифест?
Список оружия?
Фотографию с подписью «планы на ближайшие десять лет: разрушить жизнь Дэниела Мерсера»?
На экране был мужчина, который в прошлом месяце поставил пять звёзд мастерской по ремонту велосипедов.
Дэниел рассмеялся.
Смех прозвучал в пустой квартире неправильно.
Он закрыл браузер.
Через секунду открыл снова.
В строке поиска написал:
JOHN MICHAEL REED DANIEL MERCER
Ноль значимых результатов.
Он поменял порядок имён.
Ничего.
Добавил ELSE.
Несколько совпадений по отдельным словам.
Ничего.
Дэниел посмотрел на часы.
20:03.
Телефон завибрировал.
Он схватил его слишком быстро.
Мара.
«Не паникуй. Пришло приглашение на завтра».
Ниже появился скриншот.
08:30
EXECUTIVE REVIEW
Daniel Mercer
Mara Levin
Nagi Seishiro
И ещё одно имя.