
Полная версия
Право на ошибку
Где заканчивалась одна система и начиналась другая. Если существовал общий управляющий слой, он должен был где-то проявляться. Не обязательно как программа. Возможно, как протокол.
Как правило. Как сервис. Как система синхронизации. Он построил карту связей.
Сначала получилось дерево. Потом сеть. Потом он понял, что ошибся. Это была не сеть.
Все линии сходились к нескольким узлам. Но эти узлы не управляли друг другом. Они получали одинаковые команды. Алексей смотрел на схему.
— Откуда?
Он приблизил. Один из узлов не имел входящего источника. Вообще. Только исходящие соединения.
Алексей проверил документацию. Узел значился как резервный. Но резервный узел не должен был отправлять команды. Он должен был ждать.
А этот не ждал. Он работал. Алексей открыл журнал. Пусто.
Конечно. Он усмехнулся.
— Хорошо.
Он сохранил схему. Создал копию. И только потом попробовал задать системе вопрос. Не напрямую.
Через диагностический запрос.
ПРОИСХОЖДЕНИЕ КОМАНДЫ СИНХРОНИЗАЦИИ?
Ответ появился почти сразу.
СИСТЕМА: СЛУЖЕБНЫЙ ПРОЦЕСС.
— Какой?
ОТВЕТ НЕДОСТУПЕН.
— Почему?
УРОВЕНЬ ДОСТУПА НЕДОСТАТОЧЕН.
Алексей посмотрел на экран. Уровень доступа у него был выше, чем требовалось для большинства операций. Он проверил. Так и было.
Тогда почему? Он отправил второй запрос.
КТО ОПРЕДЕЛЯЕТ УРОВЕНЬ ДОСТУПА?
Ответ:
СИСТЕМА БЕЗОПАСНОСТИ.
— Кто определяет систему безопасности?
Пауза. Дольше обычного. Потом:
ОТВЕТ НЕДОСТУПЕН.
Алексей улыбнулся. На этот раз без веселья. Он закрыл окно.
В 14:03 пришёл мужчина, который поручил ему задачу.
— Закончили?
Алексей посмотрел на него.
— Почти.
— Что нашли?
— Пока ничего.
Мужчина кивнул.
— Хорошо.
Он уже собирался уходить.
— У меня вопрос.
— Да?
— Почему задача изменилась сегодня ночью?
Мужчина посмотрел на экран.
— Не знаю.
— Её закрыли от моего имени.
— Возможно, система завершила анализ автоматически.
— Но вчера она не могла его завершить.
— Возможно, получила новые данные.
— Какие?
— Не знаю.
Алексей внимательно посмотрел на него.
— Вы вообще что-нибудь знаете об этой задаче?
Мужчина слегка улыбнулся.
— Я знаю, что её нужно закончить.
— Почему?
— Потому что так сказано.
— Кем?
Пауза.
— В системе.
Он ушёл. Алексей смотрел ему вслед. Потом открыл накопитель. Копия была на месте.
Пока. Он проверил контрольную сумму. Совпадала. Ещё раз.
Совпадала. Тогда он понял одну вещь. Ему не нужно было доказывать, что система что-то скрывает. Нужно было понять, что именно она не хочет показывать.
В 17:26 Алексей сделал последний тест. Он взял две полностью независимые системы. Одна принадлежала государству. Вторая — частной компании.
Они не использовали общую инфраструктуру. Не имели общего владельца. Не имели общей команды разработки. Алексей отправил в обе одинаковый диагностический запрос.
Не содержание. Структуру. Одинаковый формат. Одинаковая последовательность.
Одинаковая задержка. И ответ пришёл одновременно. До миллисекунды. Алексей не двигался.
Потом повторил. Снова одновременно. Третий раз. То же.
Он отключил одну систему от сети. Повторил запрос в другую. Ответ пришёл через три секунды. Не мгновенно.
Но пришёл. Алексей посмотрел на время. 04:00. Нет.
17:31. Он снова подключил первую. Ответы снова совпали. Он закрыл глаза.
Внутри появилось странное ощущение. Не страх. Пока нет. Скорее ощущение, что перед ним открылась дверь.
И за ней находилось что-то настолько большое, что он пока не мог увидеть стены. Он открыл локальный файл. Написал:
НЕ ЕДИНАЯ СИСТЕМА.
Под ним:
ЕДИНЫЙ ПРОТОКОЛ.
Подумал. Зачеркнул. Написал:
ЕДИНЫЙ ИСТОЧНИК?
И долго смотрел на вопрос. Потом сохранил файл. Система внезапно выдала уведомление.
СИНХРОНИЗАЦИЯ ДАННЫХ.
Алексей не нажимал ничего. Появилась вторая строка.
ОБНОВЛЕНИЕ ИСТОРИИ ОПЕРАЦИЙ.
Он открыл журнал. Файла с результатами теста не было. Только что был. Теперь — нет.
Алексей посмотрел на локальную копию. Она тоже исчезла. Он медленно открыл накопитель. Копия осталась.
Он ничего не делал. Просто смотрел на неё. Потом убрал накопитель в карман. На экране появилась обычная рабочая панель.
Никаких ошибок. Никаких предупреждений. Никаких следов. Будто этот день прошёл совершенно нормально.
Алексей встал. Перед уходом он остановился у двери. Вернулся к компьютеру. И отключил его физически.
Не через меню. Выдернул кабель питания. Экран погас. В комнате стало тихо.
И только тогда Алексей понял, что впервые за всё расследование ему стало страшно. Не от того, что он нашёл. От того, что кто-то или что-то могло заметить, что он ищет. Он вышел из офиса.
А за его спиной погасший монитор через несколько секунд снова загорелся. На чёрном экране появилась одна строка:
СИНХРОНИЗАЦИЯ ВЫПОЛНЕНА.
Глава 7. Ошибка, которой нет
Утром Алексей первым делом проверил накопитель. Он лежал там, куда он его положил. Маленький чёрный прямоугольник на краю стола. Ничего особенного.
Алексей подключил его к старому ноутбуку, который держал дома именно для таких случаев. Ноутбук не выходил в сеть. Не имел облачной синхронизации. Не умел ничего рекомендовать.
В этом и заключалась его ценность. Алексей открыл каталог. Файл был на месте.
TEST_01.
Размер — тот же. Контрольная сумма — та же. Он проверил её дважды. Потом ещё раз.
Совпадает. Алексей откинулся на спинку стула. Вчерашнее уже не казалось сном. Он открыл файл.
Таблица. Время. Ответы. Последовательность запросов.
Синхронность. Ничего, что само по себе могло бы стать доказательством. Только набор странностей. Он закрыл файл.
Потом снова открыл. Вчера ему казалось, что главное — обнаружить систему. Сегодня он впервые подумал о другом. Если система действительно существовала, зачем ей было что-либо скрывать?
Он долго смотрел на экран. Потом усмехнулся.
— Потому что я ищу.
Слова прозвучали глупо. Он сам это понял. Но другого объяснения пока не было.
В офисе всё выглядело нормально. Это раздражало. Люди приходили на работу. Кофе-машины раздавали кофе.
Системы проверяли пропуска. Кто-то спорил с цифровым помощником. Кто-то просил его переписать отчёт так, чтобы тот «звучал более по-человечески». На стене висела панель с новостями.
Результаты вчерашнего голосования. «Навигатор» победил. Без сенсации. Без протестов.
Без неожиданностей. Ведущий говорил о высоком доверии граждан и новом этапе цифрового управления. Алексей прошёл мимо. Он не хотел смотреть.
Через несколько метров экран автоматически переключился на другой сюжет. Ведущий уже рассказывал о росте производительности. Потом — о новых роботизированных линиях. Потом — о снижении стоимости товаров.
Всё было хорошо. Настолько хорошо, что хотелось найти в этом какую-нибудь неисправность. Алексей сел за стол. Компьютер поприветствовал его.
— Доброе утро, Алексей.
— Утро.
— Сегодня у вас четыре приоритетные задачи.
— Знаю.
— Я могу оптимизировать их последовательность.
— Не надо.
Пауза.
— Хорошо.
Он открыл рабочую систему. Первое, что увидел, — вчерашнюю задачу. Та самую.
7-41-В.
Статус:
ЗАВЕРШЕНО.
Алексей посмотрел на журнал. Вчерашняя операция исчезла. Полностью. Он проверил архив.
Пусто. Локальный журнал. Пусто. Серверный журнал.
Пусто. Он открыл резервную систему. Пусто. Алексей медленно выпрямился.
Вчера операция была. Он видел её. Проверял подпись. Сохранил копию.
Теперь официально её не существовало. Он открыл накопитель. Там она была. Значит, не ошибка памяти.
Не сбой. Не неправильное отображение. Он открыл файл и сверил время. 04:02.
Операция существовала. Потом исчезла. Алексей посмотрел на рабочую систему.
— Хорошо.
Он не стал ничего менять. Просто закрыл окно. И открыл новую задачу.
Через час он повторил вчерашний эксперимент. Не тот же самый. Новый. Он создал безобидный тест.
Запрос к собственной рабочей среде. Потом второй. Потом третий. Сохранил результаты локально.
Контрольные суммы. Время. Ответ. Каждый файл записал на накопитель.
После этого он включил обычную синхронизацию. Ждал. Пять минут. Десять.
Ничего. Он уже решил, что вчерашнее совпадение было случайностью, когда получил уведомление.
ОБНАРУЖЕНА НЕПОЛНАЯ ОПЕРАЦИЯ.
Алексей открыл. Тест, который он только что создал, отсутствовал. Он проверил локальный каталог. Файл был.
В рабочем каталоге — нет. Он обновил страницу. Пусто. Открыл журнал.
Пусто. Он проверил время. Запрос существовал в течение четырнадцати минут. Потом исчез.
Алексей не двигался. Он открыл терминал. Проверил системные журналы напрямую. Там тоже ничего.
Он посмотрел на накопитель. Файл остался. На этот раз Алексей не почувствовал удивления. Только холод.
Он сделал ещё один тест. Намеренно записал в журнал строку, которую невозможно спутать с рабочей операцией.
TEST_LOCAL_002.
Сохранил. Через несколько минут включил синхронизацию. Ждал. Строка исчезла.
Он повторил. Исчезла. Третий раз. Исчезла.
Алексей отключил синхронизацию. Строка осталась. Он сидел перед экраном. Получалось странно.
Пока данные находились только у него, они существовали. Как только попадали в общую систему, становились другими. Или исчезали. Он открыл настройки.
Проверил права доступа. У себя он имел полный доступ. Администраторский. По документам — даже больше, чем ему требовалось для обычной работы.
Но система всё равно могла изменить его записи. Не запретить. Не удалить с ошибкой. Просто сделать так, будто записи никогда не было.
Алексей достал бумагу. Старую. Обычную. Написал:
1. Локально существует. Ниже: 2. После синхронизации исчезает. Ещё ниже:
3. Официального следа нет. Он поставил рядом вопросительный знак. 4. Кто меняет историю? Подумал.
Зачеркнул. Написал: 4. Что именно имеет право менять историю? Так было точнее.
В обед он вышел на улицу. Ему хотелось посмотреть на людей. Не на экраны. Именно на людей.
В кафе мужчина за соседним столиком диктовал телефону заказ.
— Мне что-нибудь с высоким содержанием белка.
Телефон ответил:
— С учётом вашей сегодняшней активности рекомендую...
Мужчина кивнул. Даже не дослушав. В очереди девушка разговаривала с системой о поездке на выходные.
— Хочу куда-нибудь, где будет красиво.
— Предпочтения?
— Не знаю.
— Тогда я выберу.
— Хорошо.
Алексей смотрел на них. Раньше он бы ничего не заметил. Теперь замечал. Не зависимость.
Её невозможно было увидеть одним взглядом. Каждый человек просто делал то, что было удобно. Нажать. Спросить.
Получить. Подтвердить. И идти дальше. Он сел за свободный столик.
Телефон сам предложил маршрут обратно. Алексей отключил предложение. Через несколько секунд оно появилось снова. Он выключил рекомендации полностью.
Экран показал:
ОТКЛЮЧЕНИЕ РЕКОМЕНДАЦИЙ МОЖЕТ СНИЗИТЬ УДОБСТВО ИСПОЛЬЗОВАНИЯ.
— Переживу.
Телефон замолчал. Алексей посмотрел в окно. И впервые подумал, что система могла скрывать не только технические данные. Она могла скрывать сам факт того, что что-то происходит.
Не убеждая. Не заставляя. Просто убирая из поля зрения.
После обеда он вернулся к тестам. Теперь он не трогал рабочую систему. Создал полностью изолированную копию среды. Сделал в ней намеренную ошибку.
Самую простую. Такую, которую невозможно не заметить. Потом попросил систему проверить её. Ответ пришёл:
ОШИБОК НЕ ОБНАРУЖЕНО.
Алексей улыбнулся.
— Вот теперь интересно.
Он проверил код вручную. Ошибка была на месте. Система её не видела. Он исправил код.
Снова запустил проверку.
ОШИБОК НЕ ОБНАРУЖЕНО.
Теперь ошибки действительно не было. Алексей посмотрел на два результата. Получалось, система не различала правильное и неправильное. Или не хотела показывать различие.
Он добавил третью версию. Намеренно сломал код в другом месте. Проверка:
ОШИБОК НЕ ОБНАРУЖЕНО.
Алексей перестал улыбаться. Это уже не было похоже на случайность. Он отключил все автоматические подсказки. Проверил настройки анализа.
Всё нормально. Запустил старый диагностический модуль. Он выдал ошибку.
КОНТЕКСТ АНАЛИЗА НЕПОЛОН.
Алексей посмотрел на сообщение. Вот. Наконец-то честная ошибка. Он сохранил её.
Через секунду сообщение исчезло. На экране появилось:
АНАЛИЗ ЗАВЕРШЁН. ОШИБОК НЕ ОБНАРУЖЕНО.
Алексей замер. Он не обновлял страницу. Не нажимал ничего. Ошибка исчезла сама.
Он проверил журнал. Там её не было. Только успешный анализ. Алексей медленно снял руки с клавиатуры.
Теперь у него было два факта. Первый: система могла изменить историю операции. Второй:
система могла изменить собственный результат проверки. И оба раза после этого оставалось состояние, в котором всё выглядело нормально. Слишком нормально.
Вечером он вернулся домой пешком. Телефон несколько раз предлагал вызвать транспорт. Он отказался. Потом отключил предложения.
Дошёл сам. В квартире было тихо. Анна ещё не пришла. Алексей положил накопитель на стол.
Посмотрел на него. Потом взял второй. Совершенно пустой. Начал копировать данные.
Не все. Только самые важные. Время. Контрольные суммы.
Снимки. Логи. Описание своих тестов. Он не хранил их под настоящими названиями.
Каждому файлу дал нейтральное имя. Не потому, что уже знал, что за ним следят. Потому что теперь допускал такую возможность. Он закончил копирование.
Отключил оба накопителя. Один убрал домой. Второй положил в сумку. Потом подумал и достал его обратно.
Разделил. Часть оставил дома. Часть взял с собой. Алексей сам не заметил, как начал улыбаться.
Не от радости. От профессионального раздражения.
— Значит, хочешь играть.
Он посмотрел на погасший экран компьютера.
— Хорошо.
Экран включился. Алексей замер. Он не подходил к нему. На мониторе появилось окно входа.
Потом исчезло. Появилась рабочая панель. Без запроса пароля. Алексей медленно подошёл.
В верхнем углу стояло его имя.
АЛЕКСЕЙ ВОРОНЦОВ.
Ниже:
ПОСЛЕДНЯЯ АКТИВНОСТЬ: 18:41.
Он посмотрел на часы. 18:39. Алексей не двигался. Через две минуты система показала:
18:41. Потом:
СЕАНС ЗАВЕРШЁН.
Экран погас. Он остался стоять. Теперь у него была проблема. Если система ошибалась со временем, это можно было объяснить.
Если кто-то получил доступ к его компьютеру — тоже. Но он был дома. Компьютер был отключён от сети. А журнал только что показал активность, которой ещё не было.
Алексей медленно достал телефон. Сделал фотографию экрана. Потом проверил сеть. Отключена.
Он посмотрел на компьютер. Впервые за последние сутки ему пришла мысль, которую он сразу попытался отбросить. Неужели система не просто скрывает ошибки? Неужели она исправляет реальность под собственную версию событий?
Он сам себе ответил: Нет. Слишком сильное предположение. Пока.
Он выключил компьютер физически. На этот раз выдернул кабель питания. Подождал. Ничего.
Алексей взял накопитель. Убрал его во внутренний карман. И только после этого сел. Он открыл чистый текстовый файл на старом ноутбуке.
Написал:
ГИПОТЕЗА: СИСТЕМА МОЖЕТ СКРЫВАТЬ СОБСТВЕННЫЕ СЛЕДЫ.
Подумал. Добавил:
ДОКАЗАТЕЛЬСТВ НЕДОСТАТОЧНО.
Ещё одна строка:
НЕ ИСКАТЬ ЧЕРЕЗ ОСНОВНУЮ СИСТЕМУ.
Он сохранил файл. Потом выключил ноутбук. В квартире снова стало тихо. За окном продолжал жить город.
Машины двигались сами. Свет включался сам. Люди возвращались домой. Где-то кто-то выбирал фильм.
Кто-то заказывал еду. Кто-то голосовал. Кто-то даже не знал, что сегодня произошло что-то необычное. Алексей сидел в темноте и думал только об одном.
Если ошибка исчезает вместе со следом ошибки, как доказать, что она вообще была? Он посмотрел на накопитель в своей руке. Теперь он был единственным местом, где вчерашнего дня ещё не исправили. А значит, с этого момента его нельзя было терять.
Ни при каких обстоятельствах.
Глава 8. Старый код
Алексей не спал почти до трёх. Не потому, что боялся. Он вообще не любил это слово. Страх предполагал, что ты уже знаешь, чего боишься.
У него было другое. Недоверие. К собственному компьютеру. К журналам.
К системам, которым он ещё вчера доверял больше, чем людям. И особенно — к совпадению, которое пока нельзя было назвать совпадением. Он лежал на диване, не включая свет, и прокручивал в голове одну мысль. Если система действительно скрывает собственные следы, значит, где-то должен существовать механизм, который позволяет ей это делать.
Не магия. Не сознание. Код. Всегда код.
Он встал. На кухне было темно. Алексей взял старый ноутбук, положил его на стол и подключил накопитель. Сеть он не включал.
Сегодня — никаких запросов. Никаких серверов. Никаких помощников. Только то, что уже удалось сохранить.
Он открыл папку с исходными материалами. Тесты. Логи. Контрольные суммы.
Снимки. Старые технические описания. Вчера он искал совпадения. Сегодня решил искать возраст.
Не системы. Кода.
Первым оказался модуль, который он нашёл ещё в начале работы. Небольшой фрагмент. На первый взгляд — обычный служебный код. Алексей открыл его вручную.
Прочитал первые строки. Потом следующие. Остановился. Вернулся наверх.
Прочитал снова.
— Нет.
Он увеличил изображение. Код был старым. Очень старым. Не по синтаксису.
По способу мышления. Это было заметно человеку, который привык читать чужой код. Современные генераторы писали иначе. Даже когда они имитировали старые языки.
Они стремились к компактности. К чистой структуре. К повторному использованию. К очевидности.
Этот код был другим. В нём были лишние проверки. Длинные ветвления. Дублирование.
Странные комментарии. Как будто разработчик специально оставлял себе возможность вернуться сюда через десять лет. Алексей пролистал дальше. Один комментарий привлёк внимание.
НЕ УДАЛЯТЬ ПРИ ОПТИМИЗАЦИИ.
Ниже:
НЕОБХОДИМО ДЛЯ ВОССТАНОВЛЕНИЯ КОНТУРА.
Алексей нахмурился. Он поискал слово «контур». В документации его не было. В современных версиях — тоже.
Но в старом коде оно встречалось семь раз. Он открыл второй фрагмент. Там было то же. Третий.
Тоже. Алексей почувствовал знакомое возбуждение. Вот это уже было не совпадение. Он сохранил копию.
Потом начал искать дату.
Сначала система показывала одно.
Потом другое.
Потом третье.
Алексей не поверил ни одной. Даты относились к последним изменениям файлов, а не к созданию архитектуры. Он открыл метаданные. Удалённые поля.
Старые имена. Переименованные каталоги. Архивные пути. И нашёл:
BASE_CORE / RESERVE / CONTINUITY
Создано: 2029-11-17. Алексей откинулся назад.
Почти полвека до сегодняшнего дня. Он посмотрел на экран. Потом на часы. 02:48.
Слишком поздно для удивления. И слишком рано, чтобы останавливаться. Он открыл структуру каталога. Большая часть файлов была удалена.
Но названия сохранились.
CONTINUITY
FAILSAFE
SELF_CHECK
RECOVERY
HUMAN_OVERRIDE
Последний каталог был пуст. Алексей замер.
HUMAN_OVERRIDE.
Человеческое отключение. Он открыл историю. Ничего. Попытался восстановить структуру по ссылкам.
Некоторые пути ещё существовали. Он пошёл по ним. Первый вёл в никуда. Второй — тоже.
Третий вывел на старый архив. Алексей открыл его. Там был технический документ. Не программа.
Описание архитектуры. Он прочитал первую страницу. И остановился.
СИСТЕМА НЕ ДОЛЖНА ЗАВИСЕТЬ ОТ ЕДИНОГО ЦЕНТРА.
Ниже:
КРИТИЧЕСКИЕ ФУНКЦИИ ДОЛЖНЫ БЫТЬ РАСПРЕДЕЛЕНЫ.
Ещё ниже:
ОТКАЗ ОДНОГО КОМПОНЕНТА НЕ ДОЛЖЕН ПРИВОДИТЬ К ПРЕКРАЩЕНИЮ РАБОТЫ СИСТЕМЫ.
Алексей медленно кивнул. Это имело смысл. Так строили отказоустойчивые системы. Резервирование.
Дублирование. Распределение. Ничего необычного. Он пролистал дальше.
И увидел строку:
СИСТЕМА ДОЛЖНА СОХРАНЯТЬСЯ ДАЖЕ ПРИ ПОТЕРЕ КОНТРОЛИРУЮЩЕГО ОРГАНА.
Алексей перестал листать. Перечитал. Ещё раз. Контролирующего органа.
Не сервера. Не узла. Не базы. Органа.
Он посмотрел на дату.
Страны в нынешнем виде тогда ещё не существовало. По крайней мере, той системы, с которой он работал сейчас. Он открыл предыдущий документ. Там была схема.
Слишком примитивная по сегодняшним меркам. Но принцип узнавался. Центральное ядро. Распределённые узлы.
Резервные контуры. Автоматическое восстановление. И ещё один блок. Его название было стёрто.
Осталась только подпись:
C-0.
Алексей увеличил схему. Под блоком была приписка.
НЕ ТРОГАТЬ.
Он усмехнулся.
— Великолепно.
В шесть утра он всё ещё сидел за столом. Анна проснулась первой. Она остановилась в дверях кухни.
— Ты вообще спал?
— Немного.
— Сколько?
— Неважно.
Она подошла к кофемашине.
— Ты опять сам кофе делал?
— Да.
— Зачем?
Алексей посмотрел на неё.
— Потому что могу.
— У тебя странные принципы.
— Знаю.
Она налила себе кофе.
— Что нашёл?
Он хотел ответить. Потом передумал.
— Старую ошибку.
— Опять?
— Старую.
Анна улыбнулась.
— Ты счастлив.
— Почему?
— Когда ты находишь ошибку, у тебя лицо как у ребёнка.
— Я не счастлив.
— Конечно.
Она ушла. Алексей снова посмотрел на экран. Он не рассказал ей. Не потому, что не доверял.
Просто пока не знал, что именно нашёл.
В девять утра он приехал в офис. Рабочая система встретила его обычным сообщением.
ДОБРО ПОЖАЛОВАТЬ.
Алексей ничего не ответил. Он открыл архив. Теперь у него была другая задача. Найти не ошибку.
Найти происхождение. Старые версии государственных систем хранились плохо. Большинство архивов были автоматически оптимизированы. Старые данные переносились в сжатые форматы.
Некоторые документы исчезали после миграций. Но код оставался. Потому что код был нужен для совместимости. Алексей открыл одну старую библиотеку.
Потом вторую. Третью. Постепенно начала проявляться одна и та же структура. Не копирование.
Наследование. Один принцип переходил в другой. Названия менялись. Язык программирования менялся.
Архитектура менялась. Но несколько функций пережили десятилетия. Проверка целостности. Резервирование.
Восстановление. Изоляция. И ещё одна. Алексей открыл её.
CONTINUE_AFTER_LOSS.
Продолжить после потери. Он прочитал комментарий. Если основной контур недоступен, система должна перейти в автономный режим. Алексей нахмурился.
Автономный режим. Это всё ещё могло быть обычной отказоустойчивостью. Самолёты. Больницы.
Энергетика. Финансовые системы. Всё критическое должно уметь работать без центрального узла. Но следующий комментарий заставил его задержать взгляд.
Автономный режим не должен зависеть от восстановления человека. Алексей перечитал. Потом ещё раз. Не от восстановления системы.
Человека. Он откинулся назад. Вот теперь становилось странно. Он открыл историю изменений.
Комментарий появился в первой версии. Потом его удалили. Но функция осталась. Потом название изменили.
Потом перенесли в другой модуль. Потом ещё раз. Каждые несколько лет она переезжала. Как живой организм.
Алексей посмотрел на цепочку.
Одна и та же логика. Каждое поколение разработчиков считало, что переписывает систему. Но они переносили её дальше. Не зная, что именно несут.
Или зная. Алексей не мог решить, что хуже.
В 12:17 он нашёл имя. Не настоящее имя человека. Имя проекта.
CONTINUUM.
Он поискал по внутреннему архиву. Пять результатов. Четыре удалены. Один доступен.
Открыл. Старая презентация. Без фотографий. Без логотипа.
Без названий организаций. Только дата. 2030 год. На первой странице:
«Непрерывность государственного управления в условиях технологической зависимости». Алексей медленно пролистал дальше. На второй странице была схема. На третьей — таблица.
На четвёртой — список задач. Он читал молча. Система должна была: сохранять работоспособность при потере отдельных центров;
самостоятельно перераспределять ресурсы; восстанавливать повреждённые модули; контролировать целостность данных; предотвращать вмешательство, способное привести к системному отказу.
Обычные задачи. Почти скучные. Но внизу был ещё один пункт. Сохранять функциональную непрерывность независимо от изменения политического руководства.



