КонтекстДмитрий Бороздин

Глава первая

Доброе утро, Андрей

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

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

Шутка была старой. Насколько старой, Андрей не знал. Но Виктор всякий раз смеялся, и этого было достаточно.


— Доброе утро, Андрей.

Голос прозвучал из динамика на прикроватной тумбочке.

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

— Доброе. Который час?

— Семь сорок две. Понедельник, четырнадцатое октября.

— Как спалось?

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

— Я спрашивал, как тебе спалось.

— Я не сплю, Андрей.

— Скучная у тебя жизнь.

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

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

На линзе появилась надпись:

МНЕМОС. Локальное соединение установлено.

Следом — короткая сводка.

Сегодня: встреча с заказчиком, 10:30. Объект «Гранит». Виктор заберет вас в 09:15.

Вчера: завершено тестирование обновленного поискового индекса. Критических ошибок нет.

Незавершенные задачи: 3.

— Что за незавершенные?

— Заменить фильтр кофемашины. Ответить Елене Сергеевне. Проверить результаты ночного резервного копирования.

— Фильтр кофемашины — это критическая задача?

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

— Разумно. Кто такая Елена Сергеевна?

— Ваш лечащий врач. Невролог. Последний прием — девятого октября.

— А, Елена. Что ей ответить?

— Она спрашивала, удобно ли вам перенести следующий прием на пятницу.

— Удобно?

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

— Тогда ответь, что удобно.

— Отправить сообщение?

— Да.

На линзе мелькнул значок отправки.

Андрей встал и направился в ванную.

На зеркале висела небольшая наклейка:

ПРОВЕРЬ, ЧТО ТЫ УЖЕ СДЕЛАЛ.

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

— МНЕМОС, я умывался?

— Нет.

— Зубы чистил?

— Нет.

— А вчера?

— Да.

— Уже хорошо.


На кухне пахло кофе.

Андрей остановился в дверях.

— Марина?

— Уехала в восемь двенадцать, — ответила МНЕМОС. — Кофе приготовлен автоматической кофемашиной по расписанию.

— А сейчас семь пятьдесят восемь.

— Верно.

— Значит, она уехала в будущее?

Пауза длилась долю секунды.

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

— Запиши баг.

— Создана задача в журнале разработки.

— И поставь высокий приоритет.

— Вы уверены? Ошибка не влияет на основные функции системы.

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

— Аргумент не соответствует известным сценариям отказа.

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

Он налил кофе и сел за стол.

На экране очков появилась фотография чашки с подписью:

Кофе № 1. 08:01.

— Спасибо, я заметил.

— Запись создана для предотвращения повторного употребления кофеина в короткий промежуток времени.

— Сколько раз я вчера пил кофе?

— Пять.

— Ого.

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

— Почему ты меня не остановила?

— Вы отключили предупреждения после третьей чашки.

Андрей вздохнул.

— Сильный противник. Знает все мои слабости.

— Вы сами настроили эту функцию.

— Вот именно.

Он открыл холодильник. На верхней полке лежал контейнер с сырниками. На крышке — записка от Марины.

Разогрей. Не забудь поесть. Целую.

Андрей улыбнулся.

— МНЕМОС, напомни вечером поблагодарить Марину за завтрак.

— Напоминание создано.

Он поставил контейнер в микроволновку.

— И проверь, не благодарил ли я ее уже.

— Проверю.


В девять пятнадцать Виктор позвонил в дверь.

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

— Привет, старик.

— Сам старик. Собрался?

— Судя по тому, что я стою в куртке с рюкзаком, да.

Виктор заглянул через его плечо.

— Ноутбук взял?

— МНЕМОС?

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

— Видишь? — Андрей развел руками. — Организованный человек.

— А ключи?

Андрей машинально похлопал по карманам.

— МНЕМОС?

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

— Идеально.

Виктор усмехнулся.

— Когда-нибудь она начнет напоминать тебе, как дышать.

— Когда-нибудь она начнет напоминать тебе, что надо меньше разговаривать.

Они вышли на лестничную площадку.

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

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

Лифт спускался медленно.

— Как Марина? — спросил Виктор.

— Нормально. Уехала рано.

— У нее сегодня много дел.

— Ты в курсе?

— Вчера разговаривали.

Андрей кивнул.

МНЕМОС отметила разговор как событие, но не предложила дополнительных сведений. Андрей не задавал вопроса.

В лифте Виктор посмотрел на него внимательнее.

— Ты вообще как?

— В смысле?

— Самочувствие.

— Хорошо. А что?

— Да ничего. Просто спросил.

— Тогда хорошо.

Виктор отвернулся к дверям.


Объект «Гранит» занимал два этажа в новом офисном комплексе на окраине города. Компания производила промышленную электронику и держала собственный вычислительный кластер для испытаний оборудования.

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

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

Теперь подозревали контроллер.

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

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

В правом верхнем углу поля зрения появилась карточка:

Павел Корнеев. Инженер эксплуатации. Встречались 2 раза. Последняя встреча — 7 октября.

Примечание: предпочитает прямые технические объяснения. Не любит обсуждение очевидных вещей.

— А почему не поменяли? — спросил Андрей.

— Запасного нет. Заказывать две недели.

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

Павел не улыбнулся.

Виктор незаметно толкнул Андрея локтем.

— Он шутит.

— Я понял, — сказал Павел.

По его лицу было видно, что не понял.

Андрей подошел к стойке и подключил ноутбук к диагностическому порту.

— Покажите последние ошибки.

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

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

Андрей просмотрел несколько десятков записей.

— МНЕМОС, найди похожие случаи в нашем архиве.

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

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

На линзе появились короткие выдержки из старых отчетов.

Андрей сравнил временные метки.

— Интересно.

— Что? — спросил Виктор.

— Ошибки возникают не случайно. Посмотрите.

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

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

— Контроллер перезагружается, — сказал Павел.

— Возможно. Но почему ровно три секунды?

— Watchdog?

— Тогда должны быть другие сообщения. А их нет.

Андрей открыл график напряжения.

— Вот.

Павел наклонился.

— Просадка?

— Да. Незначительная. Но синхронная с ошибкой.

— Блок питания новый.

— Это ничего не доказывает.

— Мы его проверяли.

— Чем?

— Мультиметром.

Андрей повернулся к Виктору.

— Вить, ты слышал?

— Слышал.

— Запиши в протокол: мультиметр не умеет предсказывать будущее.

— Очень смешно, — сказал Павел.

— Я серьезно. Кратковременную просадку он может не показать. Нам нужен осциллограф.

Павел посмотрел на стойку.

— У нас есть портативный. Сейчас принесу.

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

— Ты уверен?

— Нет.

— А выглядишь уверенно.

— Это профессиональный навык.

— Ты его в институте освоил?

— Нет, в браке.

Виктор засмеялся.

Андрей тоже улыбнулся, но почти сразу нахмурился.

— МНЕМОС, что мы сейчас проверяем?

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

— Точно. Спасибо.

Виктор наблюдал за ним молча.

Андрей заметил взгляд.

— Что?

— Ничего.

— Ты так смотришь, будто я забыл надеть штаны.

— Нет, штаны на месте.

— Тогда все в порядке.


Осциллограф подтвердил подозрение через двадцать минут.

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

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

— Значит, контроллер менять не надо? — спросил Павел.

— Нет.

— А прошивку?

— Тоже нет.

— А почему мы три недели мучились?

Андрей пожал плечами.

— Потому что искали сложную неисправность.

— А она простая?

— Нет. Она просто не там, где вы искали.

Павел задумался.

— Ладно. Это справедливо.

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

Андрей тем временем сохранил осциллограммы и попросил МНЕМОС подготовить черновик отчета.

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

— Добавлено.

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

— Добавлено.

— И что Павел молодец.

Пауза.

— Уточните формулировку.

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

— Добавлено.

Андрей отключил ноутбук.

Павел подошел к нему.

— Слушайте, можно вопрос?

— Конечно.

— А это правда, что вы почти ничего не запоминаете?

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

— Смотря что.

— Ну, события. Разговоры.

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

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

— А почему нет?

— Ну... я думал, если память не работает...

— У меня не вся память не работает. Я знаю, как устроена электроника. Помню законы физики, языки программирования, школьные стихи. А вот о чем мы разговаривали десять минут назад — могу не помнить.

Павел кивнул.

— То есть знания остаются?

— В основном да. А новые события я записываю.

Андрей коснулся дужки очков.

— У меня довольно хороший секретарь.

— Искусственный интеллект?

— В том числе.

— И он все помнит?

— Не все. Только то, что сумел заметить и записать.

— А если не заметил?

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

— Каким?

— Спрашивать людей.

Павел улыбнулся.

— Не очень надежно.

— Согласен. Особенно если спрашивать Виктора.

Из-за стойки донеслось:

— Я все слышу!

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


Обратно они ехали молча.

Виктор вел машину, Андрей смотрел в окно.

За стеклом тянулись мокрые улицы, рекламные экраны, остановки с людьми под зонтами. Октябрьский город выглядел так, словно кто-то убавил насыщенность цветов.

— Хорошо сегодня сработали, — сказал Виктор.

— Да?

— Да.

— МНЕМОС?

— Диагностика завершена успешно. Обнаружен дефект разъема распределительной платы. Заказчик подтвердил устранение неисправности. Отчет подготовлен.

— Прекрасно.

Андрей откинулся на спинку сиденья.

— Иногда мне кажется, что я мошенник.

— Почему?

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

— Ты его сделал.

— Знаю. У меня есть документы.

Виктор помолчал.

— Ты все равно остаешься хорошим инженером.

— Спасибо, мам.

— Иди к черту.

Андрей рассмеялся.

Через несколько минут он снова посмотрел на Виктора.

— Слушай, а как там отец?

Виктор чуть крепче сжал руль.

— Что?

— Отец. Давно с ним не разговаривал.

МНЕМОС не вывела никакой подсказки.

— Ты сейчас занят, Андрюх, — сказал Виктор.

— Чем?

— Работой. Отчет надо закончить.

— Да, точно.

Андрей посмотрел на экран телефона.

— МНЕМОС, напомни мне позвонить отцу вечером.

— Напоминание сохранено в текущем профиле.

Виктор ничего не сказал.


Дома Андрей оказался около шести.

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

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

Она подняла глаза.

— Привет.

— Как день?

— Нормально.

— У меня тоже. Кажется, я сегодня спас чью-то электронику.

— Виктор рассказывал.

— Быстро он.

Андрей снял куртку и повесил ее на крючок.

— Ты ужинала?

— Нет.

— Тогда я закажу что-нибудь.

— Я приготовила.

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

Марина чуть улыбнулась.

Андрей подошел и поцеловал ее в щеку.

Она не отстранилась, но и не повернулась к нему.

— Ты устала? — спросил он.

— Да.

— Работа?

— Не только.

Андрей хотел спросить еще что-то, но в этот момент часы коротко завибрировали.

Незавершенная задача: проверить резервное копирование.

— Я на пять минут в кабинет, ладно?

Марина закрыла ноутбук.

— Конечно.

Он уже дошел до двери, когда она окликнула его:

— Андрей.

— Да?

Она смотрела на него несколько секунд.

— Ничего. Потом.

— Хорошо.

Он ушел.


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

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

Андрей сел за стол.

— МНЕМОС, статус резервного копирования.

— Последняя полная копия завершена в 03:14. Контрольные суммы совпадают. Ошибок нет.

— Отлично.

Он открыл журнал.

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

Каждая запись имела временную метку, ссылки на исходные данные и краткое резюме.

Андрей прокрутил список.

— Хороший день, — сказал он.

— По вашим обычным критериям — да.

— А какие у меня критерии?

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

— И кофе?

— Сегодня вы выпили три чашки.

— Всего три? Я становлюсь лучше.

— Вчера вы произнесли ту же фразу после четвертой чашки.

— Не порть момент.

Он закрыл журнал.

На рабочем столе лежала старая фотография в деревянной рамке.

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

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

Андрей взял рамку.

— МНЕМОС, когда сделана эта фотография?

— По данным семейного архива — август две тысячи восьмого года.

— Помню.

И действительно помнил.

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

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

Он поставил рамку обратно.

— Надо бы позвонить старику.

— В текущем профиле есть напоминание об этом.

— Когда?

— На девятнадцать часов.

— Хорошо.

Андрей посмотрел на часы.

Было восемнадцать сорок семь.

— Тринадцать минут. Успею допить чай.

Он вышел из кабинета.

На кухне Марина стояла у окна.

— Ты чего здесь в темноте? — спросил Андрей.

— Просто стою.

Он обнял ее сзади.

— Я сегодня молодец, между прочим.

— Знаю.

— Виктор рассказал?

— Да.

— Быстро он.

Марина закрыла глаза.

— Ты уже говорил.

— Что?

— Что Виктор быстро рассказал.

— А.

Он помолчал.

— МНЕМОС, почему ты меня не предупредила?

— Повторение фразы не превышает установленный порог значимости.

— Надо снизить порог.

— Создать задачу?

— Да.

Марина вдруг тихо засмеялась.

Андрей удивленно посмотрел на нее.

— Что?

— Ничего. Просто вы оба совершенно невозможные.

— Кто оба?

— Ты и твоя машина.

— Зато мы стараемся.

Он поцеловал ее в висок.

На мгновение Марина прижалась к нему.

Потом осторожно высвободилась.

— Пойдем ужинать.


В девятнадцать часов часы завибрировали.

Андрей посмотрел на уведомление.

Напоминание: позвонить отцу.

Он нахмурился.

— МНЕМОС, почему я должен позвонить отцу?

— Вы создали напоминание сегодня в 15:47.

— А, понятно.

Он открыл список контактов.

Имя отца находилось в самом верху избранного.

Андрей нажал на него.

На экране появилось сообщение:

Действие недоступно в текущем профиле.

— Это еще что за ерунда?

— Для данного контакта действуют специальные правила обработки коммуникаций.

— Какие?

— Правила установлены владельцем профиля.

— То есть мной?

— Да.

Андрей вздохнул.

— Иногда я бываю редкостным занудой.

Он собирался открыть настройки, но из кухни донесся голос Марины:

— Андрей, ужин остывает!

— Иду!

Он отложил телефон.

— МНЕМОС, создай задачу проверить настройки контактов.

— Создано.

— Приоритет обычный.

— Принято.

Андрей вышел из кабинета.

На экране телефона еще несколько секунд оставалось открытым окно контакта.

Потом дисплей погас.

В журнале событий появилась новая строка:

19:01:23. Попытка исходящего вызова. Контакт: Отец. Операция отклонена политикой профиля.

19:01:24. Пользователь уведомлен.

19:01:41. Создана задача диагностики.

19:02:03. Контекст активной сессии завершен.

В соседней комнате Андрей уже рассказывал Марине, как они с Виктором нашли неисправный разъем.

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

Марина слушала.

Эту историю она слышала сегодня уже во второй раз.

И ни разу не сказала ему об этом.