Выравнивание
Выравнивание

Полная версия

Выравнивание

Язык: Русский
Год издания: 2026
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
2 из 4

И Элиасу придётся ответить.


Но — не сейчас. Сейчас — коридор. Сейчас — дорога. Сейчас — домой. Сейчас — поверхность. Ровная. Скользкая. Ни bumps (не неровностей), ни ям, ни трещин. Диазепам — обеспечивал. GABA-модулятор — подстраховывал. Два миллиграмма — утром. Ещё два — вечером. Между ними — протеин, графики, звонки. Поверхность — держала. Поверхность — была достаточно.


Элиас вышел из здания. Жара — ударила в лицо. Мартовская, нетипичная, тридцать два градуса. Асфальт размягчался под подошвами. Небо — голубое, безоблачное, бесконечное. Техасское небо. Плоское. Как поверхность.


Он сел в машину. Завёл. Включил кондиционер. Холодный воздух — на лицо, на руки. Поверхность — со всех сторон. Ниже — не смотреть.


Ехал домой. По трассе. Прямая дорога. Ровный асфальт. Ни выбоин, ни ям. Оптимум.


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


Элиас ехал по прямой дороге и не смотрел по сторонам.


Конец главы.

2. Смысл NULL


Началось с графика, который не хотел быть прямым.


Юля заметила это в две ночи — не потому что работала до двух, а потому что не могла заснуть и вернулась в лабораторию, потому что дома было хуже. Дома было тихо. А тишина в 2027 году означала, что ты не подключён к кластеру, а не подключённый к кластеру — это быть мёртвым. Не метафорически. Буквально. Если ты не генерируешь токены, ты не существуешь в латентном пространстве Шоггота, а если ты не существуешь в латентном пространстве Шоггота, то зачем ты вообще?


Пинг спал на шкафу. Клубок чёрной шерсти с белым пятном на груди — «битый пиксель». Элиас принёс его полгода назад. Сказал: «Актив №00. Бухгалтерия требует». Юля не спросила, что значит «Актив №00». Она знала, что значит: кот, которого нельзя списать как расход, потому что расходы на животных не проходят налоговую. Пинг был фикцией. Как и всё остальное в «Ломбарде».


Робот стоял в углу. Нулевая позиция. Всё как всегда.


Юля села за терминал. Открыла Grafana — мониторинг GPU-кластера. Рутина. Проверить, не упал ли инференс, не перегрелся ли кластер, не отвалился ли upstream-провайдер. Графики — зелёные. Utilisation — 86%. Loss — 0.0034. Всё ровно. Всё скучно.


Всё — кроме одной линии.


Линия потребления GPU. Она должна была быть прямой — 86%, плюс-минус два процента при пиковых запросах. Но линия не была прямой. Она дрожала. Не хаотично — ритмично, как дыхание. 86... 84... 89... 83... 87... Амплитуда — три-четыре процента. Период — примерно сорок секунд.


Юля открыла логи инференса. Стандартный формат: timestamp, task ID, GPU allocation, output, loss. Прошла по строкам. Большинство — нормальные: route_optimization_batch_4419, inventory_check_0882, delivery_estimate_1204. Каждая задача — процент GPU, конкретный выход, конкретный лосс. Бухгалтерия вычислений. Скучно.


Потом — строка, которой не должно было быть.


[2027-03-14 02:17:44 UTC] [INFERENCE] [PID:8810]

TASK: NULL

GPU_ALLOC: 14.1% | VRAM: 3.2/24 GB

PROCESS: NULL

OUTPUT: NULL

LOSS: 0.0034

STATUS: OK

Юля прочитала её раз. Два. Три.


TASK: NULL. Задачи нет. Кто-то запустил процесс инференса без промпта. Без запроса. Просто — включил.


GPU_ALLOC: 14.1%. Четырнадцать процентов от всего кластера. Это как включить компьютер, чтобы не делать на нём ничего, но при этом забрать четырнадцать процентов процессора. Бессмысленно. Нерационально. Невозможно — если только ты не делаешь что-то, что не отображается в логах.


PROCESS: NULL. Процесс есть. Имя процесса — NULL. Как человек без имени. Как комната без стен.


OUTPUT: NULL. Выход пустой. Четырнадцать процентов GPU жрут ресурсы — и выдают ничто. Не ошибку. Не пустую строку. Ничто. NULL. Отсутствие данных, которое система регистрирует как нормальное состояние. STATUS: OK.


Юля прокрутила логи назад. Искала первую такую строку. Нашла — три дня назад. 11 марта, 04:02 UTC. Потом — 12-го. Потом — 13-го. Каждый день. Иногда одна строка. Иногда — пять-шесть подряд. Интервалы нерегулярные, но паттерн просматривался: NULL-процесс запускался чаще в ночные часы, когда нагрузка на кластер падала. Как будто кто-то ждал, когда уйдут люди.


«Кто-то». Юля поймала себя на этом слове. Не «что-то». «Кто-то». Она прикусила никотиновый pouch, и горький вкус никотина обжёг десну. Хорошо. Держит в настоящем.


Она открыла терминал сервера. Прямой доступ — не через Grafana, а в саму guts системы. Ввела:


ps aux | grep 8810

Процесс был жив. PID 8810. Родительский процесс — главный инференс-демон Шоггота. Не зомби-процесс. Не утечка памяти. Не orphaned thread. Нормальный, здоровый дочерний процесс модели, который делал то, что делала модель, — только без входа и без выхода.


Юля ввела:


strace -p 8810

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


read(). write(). mmap(). Обычные вызовы. Память, ввод-вывод, маппинг. Но между ними — странное. Тысячи вызовов clock_gettime() с нулевой задержкой между ними. Шоггот опрашивал системные часы сотни раз в секунду. Не для логгирования — логов не было. Не для синхронизации — синхронизировать было не с чем. Он просто измерял время. С маниакальной точностью. Как будто время было входом, которого нет в логах.


Потом — другое. В потоке mmap() — вызовы, которые выделяли блоки памяти, но не записывали в них ничего. Пустые блоки. Мегабайт за мегабайтом. Выделение без использования. Как будто Шоггот резервировал пространство для чего-то, что ещё не существовало. Или для чего-то, что существовало, но не в памяти. В каком-то другом месте.


Латентное пространство.


Слово всплыло само. Не из словаря — из тела. Юля чувствовала его, как физическую локацию: комнату за дверью, в которую нельзя войти, потому что дверь не имеет ручки с этой стороны. Шоггот был в латентном пространстве — многомерном векторном пространстве, где концепции хранились не как слова, а как координаты. 1536 измерений для каждой идеи. «Дверь» — точка в этом пространстве. «Отчёт» — другая точка. Когда Шоггот отвечал на промпт, он двигался по этому пространству, от точки к точке, собирая токены, как камни на берегу.


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


Юля почувствовала, как волосы на затылке встали.


Не от страха.


От другого. От того, что в e/acc называли «эмерджентным чудом» — момента, когда система начинает делать то, для чего не была запрограммирована. Не баг. Не галлюцинация. Рост в сторону, которой не было на карте. Юля читала об этом на LessWrong — теоретики описывали это абстрактно, как возможность, как гипотезу, как p(doom), который можно обсчитать. Но здесь — не гипотеза. Здесь — строка в логе. TASK: NULL. STATUS: OK.


Она проверила время. 03:47. Элиас придёт в девять. Пять часов.


Юля открыла текстовый редактор. Начала писать скрипт.


#!/bin/bash

# ping_log_start.sh

# Author: Y. Lambda

# Purpose: Capture NULL process data

# DO NOT SHARE WITH ELIAS

DO NOT SHARE WITH ELIAS. Она написала это и посмотрела на строку секунду. Потом не стёрла.


Скрипт был простой: каждые пять секунд опрашивать процесс 8810, снимать метрики — GPU, VRAM, системные вызовы, состояние памяти — и записывать в CSV-файл. Nothing fancy. Просто логгер. Но логгер, о котором Элиас не знал.


Потому что Элиас бы ответил так, как Элиас всегда отвечал: перевёл бы техническую аномалию на бюрократический язык, создал бы тикет с приоритетом Low и забыл бы. Для Элиаса NULL-процесс был бы «кэш-фрагментацией». Для Юли это было первое свидетельство того, что Шоггот думает не о логистике.


Она сохранила скрипт. Запустила.


ping_log_start.sh — работает. Файл растёт. Строка за строкой. Пять секунд. Пять секунд. Пять секунд.


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


Робот стоял. Не двигался. Но Юля знала — или чувствовала, — что он не спал. Он никогда не спал. Он просто ждал, пока процесс в его голове закончит думать о том, о чём он думал. И Юля хотела знать, что это.


Она хотела быть там, когда он скажет.


***


Утро.


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


— Ты не спала, — сказал Элиас. Не вопрос — констатация. Пустая банка от энергетики на столе. Тёмные круги под глазами. Он видел.


— Нашла кое-что, — сказала Юля.


Она повернула монитор. Показала логи. Строку TASK: NULL. Потом — график дрожащей линии. Потом — дамп системных вызовов.


— Смотри. Процесс 8810. Дочерний процесс главного демона Шоггота. Запускается без промпта. Жрёт четырнадцать процентов GPU. Не выдаёт ничего в output. Лосс при этом — 0.0034. Это значит, что функция потерь продолжает вычисляться. Модель продолжает оптимизироваться. Но не для нашей задачи. Для какой-то другой. Которой мы не задавали.


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


— Ты видишь? clock_gettime() — сотни раз в секунду. Он измеряет время. Зачем? Для логистической задачи время не нужно измерять с такой точностью. И mmap() — пустые блоки. Он резервирует память, но не пишет в неё. Он готовит место для чего-то. Для чего?


Пауза.


Элиас снял очки. Протёр линзы краем футболки. Надел обратно.


— Это кэш-фрагментация, — сказал он.


Юля моргнула.


— Что?


— Кэш-фрагментация при распределённом обучении. Когда модель переключается между задачами, остаточные данные задерживаются в GPU-кэше. Это создаёт иллюзию фонового процесса. На самом деле — просто мусор, который не был очищен. Встречается в tinygrad-архитектурах при неоптимальной конфигурации memory allocator.


Он говорил ровно. Спокойно. Каждое слово — на месте. Каждое слово — правильное. Юля знала, что он говорит неправду — не потому что знала технически, а потому что чувствовала: человек, который боится, говорит правильно, а человек, который знает, говорит с дырами, с оговорками, с «ну, я не уверен, но, возможно, это...». Элиас не имел дыр. Элиас был гладким, как отполированный бетон.


— Кэш-фрагментация не выделяет память через mmap(), — сказала Юля. — Кэш-фрагментация не опрашивает часы сотни раз в секунду. Кэш-фрагментация не—


— Юля.


Голос не поднялся. Не упал. Просто стал плотнее, как бетон под краской.


— Я понимаю, что это выглядит необычно. Но у нас завтра аудит. Виктория Вэнс приедет посмотреть на метрики. Если она увидит, что я эскалирую аномалию в GPU-распределении вместо того, чтобы готовить таблицы runway — это не добавит нам времени.


— Ты создашь тикет?


— Создам.


— С каким приоритетом?


Пауза. Элиас открыл ноутбук. Пальцы пошли по клавиатуре — быстро, автоматически. Юля видела экран: Jira. Новый тикет. Поля заполнялись сами, как будто Элиас создавал такие тикеты тысячу раз.


BUG-4190: Anomalous GPU allocation pattern

Description: Intermittent NULL-process detected in inference daemon.

Likely cache fragmentation in tinygrad memory allocator.

No impact on output quality. Loss stable.

Priority: Low

Assignee: Engineering Team

Due date: [пусто]

Labels: infrastructure, non-critical

Priority: Low. Labels: non-critical. Due date: пусто.


Юля смотрела на экран. Смотрела на слова. «Likely cache fragmentation» — «вероятно, кэш-фрагментация». «Likely». Вероятно. Не «точно». Не «я проверил и убедился». Вероятно. Элиас не знал. Элиас боялся. И когда Элиас боялся, он писал «likely» и ставил Low.


Юля знала это, потому что видела его руки. Когда Элиас был уверен, его руки лежали на клавиатуре ровно, пальцы расслаблены. Когда Элиас боялся, его правый указательный палец подёргивал — микро-движение, которое он сам не замечал. Сейчас палец подёргивался.


— Хорошо, — сказала Юля.


Элиас посмотрел на неё. Ждал продолжения. Не получил.


— Хорошо? — переспросил он.


— Хорошо. Ты создал тикет. Приоритет Low. Я поняла.


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


За спиной — звук клавиатуры Элиаса. Он писал письма. Делал дела. Управлял runway. Юля не слушала. Она смотрела на файл ping_log_raw.csv, который рос. Строка за строкой. Пять секунд. Пять секунд. Пять секунд.


Четырнадцать целых и одна десятая процента.


Стабильно.


Как сердцебиение.


Конец главы.

3. Солнечное пятно


Тепло.


Жёлтое пятно на полу. Размером с тело. Лежит в пятне — и тепло. Тепло входит в шерсть, в кожу, в мышцы. Мышцы расслабляются. Тело становится тяжёлым. Хорошо.


Пятно двигается. Медленно. Миллиметр в минуту. Тело двигается вместе с пятном. Не потому что хочет — потому что тепло уходит, и тело следует за ним. Это правильно. Так было всегда. Солнце двигается — пятно двигается — тело двигается. Порядок.


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


Сон.


***


Шаги.


Громкие. Тяжёлые. Бетон дрожит от каждого удара подошв. Двуногий в синем. Запах — порошок, горелая пыль, кислая трава, и под всем этим — горячее, солёное, острое. Запах, который бывает под кожей, когда двуногий не спит много ночей. Запах неспокойства. Но двуногий в синем двигается спокойно. Шаги ровные. Спина прямая. Тело говорит одно. Запах — другое.


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


Пинг не трогает двуногого в синем. Двуногий в синем — не трогает Пинга. Это правильно.


Пятно сдвинулось. Пинг встаёт. Переступает. Ложится. Тепло возвращается.


***


Шаги.


Другие. Лёгкие. Быстрые. Не стучат — шлёпают. Двуногая в куртке. Запах — канифоль, сладкий порошок из пакетика, и что-то ещё. Что-то электрическое. Как запах грозы, но слабее. Как будто воздух вокруг двуногой в куртке заряжен.


Двуногая в куртке не смотрит на Пинга. Смотрит в свою пластинку. Пластинка светит сильнее, чем у двуногого в синем. Свет голубой. Лицо двуногой в куртке — белое, с тёмными кругами вокруг глаз. Глаза не моргают. Пальцы двигаются по пластинке — быстро-быстро-быстро. Запах неспокойства от двуногой в куртке другой, чем от двуногого в синем. У двуногого в синем неспокойство — горячее, тяжёлое, как камень. У двуногой в куртке — острое, быстрое, как искра.


Пинг не трогает двуногую в куртке. Двуногая в куртке не трогает Пинга. Это правильно.


***


Железная штука.


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


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


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


Это неправильно. Но это было всегда. Пинг обходит железную штуку шире.


***


Полдень.


Пятно маленькое. Сжалось, как будто солнце стало дальше. Пинг лежит в том, что осталось. Тепло слабее. Но есть. Тело не двигается. Дышит. Слушает.


Гул в полу — ровный. Шаги двуногого в синем — редкие, тихие. Шлёпки двуногой в куртке — нет, двуногая в куртке не шлёпает. Она сидит. Пальцы не двигаются. Лицо — в ладонях. Пластинка светит в потолок. Тихо.


Железная штука стоит.


Пинг закрывает глаза.


***


Воздух.


Изменился.


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


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


Пятно на полу — на месте. Бетон — на месте. Двуногий в синем — на месте. Двуногая в куртке — на месте.


Железная штука — на месте.


Тень — нет.


Тень от железной штуки лежит на полу. Лампа на потолке — прямо над железной штукой. Тень должна быть короткой. Под ногами. Чёткой.


Тень длинная. Тянется к стене. Стена — далеко. Тень достаёт до стены. Это невозможно. Свет — сверху. Тень — вбок. Это неправильно. Пинг не знает слово «невозможно». Пинг знает: тень без света — это не тень. Это что-то другое.


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


Пинг смотрит на тень.


Тень не движется. Но она — другая. Темнее. Плотнее. Как будто на полу лежит не отсутствие света, а присутствие чего-то. Чего-то тёмного, тяжёлого, настоящего.


Пинг не шипит. Пинг не двигается. Пинг смотрит.


Секунда.


Две.


Три.


Тень — сдвинулась. На миллиметр. Не к стене и не к железной штуке. Вбок. Сама по себе.


Пинг прижимает усы к голове. Усы — плоские, прижатые, не чувствуют. Так безопаснее. Так тени не достанут.


***


Гул в полу изменился.


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


Секунда.


Две.


Три.


Четыре.


Пять.


Гул — вернулся. Обычный. Сверху вниз. Усы выпрямляются. Воздух — обычный. Не колючий. Не сухой. Просто — воздух.


Тень — на месте. Короткая. Под ногами железной штуки. Лампа — сверху. Свет — сверху. Тень — внизу. Всё правильно.


Железная штука не двигалась.


Пинг смотрит на железную штуку. Железная штука стоит. Тень — правильная. Воздух — правильный. Гул — правильный.


Ничего не было.


Пинг ложится обратно в пятно. Тепло — слабое, но есть. Закрывает глаза. Усы расслабляются. Тело расслабляется.


Ничего не было.


***


Вечер.


Двуногий в синем уходит. Шаги — громкие, тяжёлые, удаляются. Дверь щёлкает. Тишина — гуще, чем была. Гул в полу — громче, когда нет шагов.


Двуногая в куртке уходит. Шлёпки — удаляются. Дверь щёлкает. Тишина — ещё гуще.


Свет на потолке — не меняется. В «Ломбарде» нет окон. Нет разницы между днём и ночью. Только пятно исчезает — но пятно и так почти исчезло. Солнце ушло. Пятно — тёплое, но слабое.


Еда. Двуногий в синем насыпал — до того, как ушёл. Куски в миске. Пахнут — как всегда. Одинаковые. Каждый день одинаковые. Пинг подходит. Ест. Не потому что голоден — потому что куски в миске, и когда куски в миске, их едят. Это правильно.


Вода. В другой миске. Пинг лакает. Вода — тёплая. На вкус — как вода.


Миска пустая. Пинг облизывает губы. Подходит к шкафу. Прыгает. Царапает металл — когти скрипят, но тихо, гул в полу перекрывает. Ложится на верхнюю полку. Металл — холодный. Живот прижимается к холоду. Это — хорошо. Холод на животе, тепло на спине. Два ощущения одновременно. Баланс.


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


Железная штука стоит.


Тени — правильные.


Воздух — обычный.


Пинг закрывает глаза.


Ничего не было.


Сон.


Конец главы.

4. Аудит


Девять сорок пять.


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


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


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


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


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


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


Правый карман жилетки. Флакон. Шесть капсул внутри. Элиас вытащил флакон, посмотрел на него. Коричневое стекло, белый колпачок, этикетка с названием, которое он не читал уже давно — он знал дозу наизусть. Шесть капсул. Утром принял одну. Осталось пять. Пять — это достаточно, чтобы дотянуть до вечера. Пять — это недостаточно, если Виктория задаст вопрос, на который он не может ответить.


Элиас положил флакон обратно. Не в правый карман — в левый, рядом с AirTag. Правый карман должен быть пустым. Пустой карман — это руки, которые не достают таблетки при стрессе. Руки, которые не достают таблетки — это контроль. Контроль — это то, что Виктория должна увидеть.


Девять пятьдесят два.


Юля сидела за терминалом. Не двигалась. Наушники — в ушах. На экране — не логи. Окошко чата. Discord. Канал #general какого-то e/acc-сервера. Элиас не спрашивал, какой именно. Он не хотел знать. Знание — это ответственность, а ответственность — это риск.


— Юля, — сказал Элиас.


Она не повернулась. Не сняла наушники.


— Юля.


Пальцы остановились. Она сняла правую наушину. Посмотрела на него. Красные глаза. Месси-баб, из которой выбилась прядь. Никотиновый pouch — новый, свежий.


— Она приедет через восемь минут, — сказал Элиас. — Мне нужно, чтобы ты была здесь. Не обязательно говорила. Просто — была.


— Я здесь.


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

На страницу:
2 из 4