Обложка Мир без ошибок

Мир без ошибок

Екатерина Муравьёва

0% прочитано
Стандартный
Екатерина Муравьёва

Мир без ошибок

Глава 1. Нулевая точка

Тишина.

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

Тук.

Пауза.

Тук.

Слишком медленно? Слишком громко? Я не знала. Я вообще ничего не знала, кроме того, что этот звук принадлежал мне. Или, по крайней мере, исходил изнутри моего тела.

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

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

Опоры не было.

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

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

— Где… я?.. — выдохнула я.

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

Я замерла.

— Кто-нибудь?.. Эй! — Я прижала губы друг к другу и выдохнула через нос.

Ничего.

Ни эха. Ни отражения. Даже собственный крик не захотел ко мне возвращаться.

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

Я ослепла.

Меня похоронили.

Я умерла.

Последняя мысль задержалась дольше остальных.

— Нет, — сказала я вслух, слишком резко. — Нет. Если я могу думать, значит…

Я не закончила.

«Значит что?»

Собственный вопрос прозвучал внутри неожиданно враждебно.

Я попыталась вспомнить хотя бы одну вещь, которая могла бы доказать, что до этой тьмы существовало что-то ещё. Имя. Комнату. Лицо матери. Шум машин под окном. Любимую песню. Пароль от телефона. Чашку, которую я брала по утрам. Хоть какую-нибудь нелепую мелочь, потому что именно мелочи почему-то казались самым убедительным доказательством жизни.

Ничего.

Не туман. Не смазанные картинки. Не ощущение «вертится на языке».

Пустота.

Внутри сознания словно стояла аккуратная белая стена, а на ней — сухая системная строка:

NullReferenceException. — ошибка, возникающая, когда программа пытается обратиться к объекту, которого фактически нет: ссылка имеет значение null («пусто»).

Я нервно рассмеялась.

Смех тут же оборвался.

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

Эта фраза должна была меня успокоить. Вместо этого она испугала сильнее.

Почему именно код?

Почему я понимала, что означает эта ошибка, но не могла вспомнить собственного имени?

Я зажмурилась, хотя закрывать глаза в абсолютной темноте было бессмысленно.

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

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

— Ладно. По порядку, — прошептала я. — Есть тело. Есть сознание. Есть… память о каких-то знаниях. Значит, я не пустая.

«Тогда кто ты?»

Я стиснула зубы.

— Потом. — Я вытянула пальцы перед собой и медленно согнула их.

Это «потом» прозвучало как договор с самой собой. Нечестный, но необходимый.

Вдалеке что-то дрогнуло.

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

Я потянулась к ним.

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

На долю секунды их свет подсветил меня.

Бледная ладонь.

Край рукава.

Прядь волос у щеки.

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

— Ещё раз. — Я потерла шею ладонью, пытаясь сбросить напряжение.

Я коснулась другой строки. Она тоже рассыпалась.

— Давай. Ну же. — Я переместила вес на другую ногу и снова замерла.

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

System.Object. — базовый тип объектов в платформе .NET; от него прямо или косвенно происходят остальные классы объектов.

Строка замерла прямо передо мной.

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

Я обхватила её ладонью.

На этот раз пальцы не прошли насквозь.

Под кожей пробежало статическое электричество.

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

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

Пространство лопнуло.

Меня рвануло вперёд.

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

Только я не проснулась.

Я действительно ударилась.

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

Земля.

Трава.

Озон после дождя.

Воздух.

Настоящий воздух.

Я перевернулась на спину и рассмеялась — громко, почти истерично. Потом смех сам собой превратился в короткий всхлип.

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

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

Я осторожно села.

Под ладонями пружинила трава. На стеблях висели капли росы. Я провела по ним пальцами и долго смотрела, как влага собирается на коже.

Настоящая.

Или идеально притворяющаяся настоящей.

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

Я поднялась не сразу. Сначала встала на одно колено, стряхнула с ладоней тёмные крупинки земли, провела ими по мокрым от росы брюкам. Колени ныли после падения. Эта мелкая, понятная боль неожиданно успокаивала сильнее любых рассуждений.

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

Слишком ровное.

Слишком чистое.

Слишком правильное.

Горизонт был безупречной линией, будто его провели инструментом в графическом редакторе. Ни дерева. Ни камня. Ни дороги. Ни случайного бугорка. Даже ветер отсутствовал.

Сердце снова ускорилось.

Я поднялась.

— Эй! — крикнула я. — Здесь есть кто-нибудь?

Трава даже не шелохнулась.

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

Молчание.

Я повернулась вокруг своей оси.

— Хорошо. Тогда я сама вас найду. — Я подняла глаза к небу и сразу вернула их к тому, что было передо мной.

И побежала.

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

Трава хлестала по ногам. Кеды проваливались во влажную землю. Через несколько минут заболели лёгкие, потом бока, потом всё тело. Я продолжала бежать.

Горизонт не приближался.

Поле не менялось.

Ни одной случайности.

Ни одного признака чужого присутствия.

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

— Да что с тобой не так?.. — прохрипела я миру.

Мир не ответил.

И тогда мысль, от которой я всё это время убегала буквально, догнала меня.

«А что, если я умерла?»

Я медленно опустилась в траву.

Если это смерть, она была странно технологичной.

Если сон — слишком убедительной.

Если кома — откуда я знала, что такое кома?

Если симуляция…

Я подняла голову.

— Если это симуляция, — проговорила я медленно, — у неё должен быть интерфейс.

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

Я подняла руку.

Ничего.

— Ну давай. — Я ткнула носком в землю и отступила, будто обозначая себе границу.

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

Не экран. Не телефон. Не компьютер. Скорее доступ. Слой под поверхностью реальности.

Воздух перед пальцами дрогнул.

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

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

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

Я замерла.

— Нет… — Я вытянула пальцы перед собой и медленно согнула их.

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

World.Root — корневой узел мира: самая верхняя точка структуры, внутри которой находятся остальные элементы виртуальной реальности.

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

ObjectHierarchy — иерархия объектов: дерево, показывающее, какие объекты существуют в мире и как они связаны друг с другом.

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

BiotaInitialization — модуль запуска и создания живых организмов в мире.

Я почувствовала, как страх отступает.

Не исчезает — меняет форму.

Он превращался в знакомую, почти приятную собранность.

Вот оно.

Структура.

Правила.

Параметры.

То, что можно понять.

То, что можно исправить.

— Теперь поговорим, — прошептала я.

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

Не потому, что я узнала, где нахожусь.

А потому, что обнаружила кнопку, которую можно нажать.

Глава 2. Мир, который слушается

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

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

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

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

— Ты тут специально, да? — Я повела плечом, сбрасывая неприятное напряжение.

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

Я вызвала ObjectHierarchy. Перед глазами развернулось древо свойств:

Пояснение: ObjectHierarchy — иерархия объектов, то есть дерево всех объектов мира и их связей.

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

Я коснулась Position. Над камнем вспыхнули три тонкие оси. Повернула Rotation — вокруг него появились дуги. От неожиданной понятности этого языка у меня вырвался короткий смешок.

Пояснение: Position — координаты положения объекта в пространстве. Rotation — поворот и ориентация объекта.

Position. — положение объекта в пространстве по координатам.

Rotation. — поворот и ориентация объекта в пространстве.

Scale. — масштаб объекта, то есть его размер относительно исходного.

Mass. — масса объекта — параметр, влияющий на инерцию, столкновения и действие сил.

Material. — материал объекта — набор свойств его поверхности и физического поведения.

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

Scale: 1. — исходный масштаб объекта: размер равен базовому, без увеличения или уменьшения.

Я заменила единицу на пять.

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

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

Палец завис над Apply.

Пояснение: Apply — команда «применить» введённые изменения.

Внутри шевельнулась осторожность.

«А если сломаешь?»

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

Я нажала.

Валун дрогнул.

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

Я отшатнулась — и тут же рассмеялась.

— Работает. — Я чуть отступила, оставляя самой себе пространство подумать.

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

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

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

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

Я произнесла это тише.

Мир подчинился мне без возражений.

Это должно было насторожить.

Но вместо тревоги я почувствовала восторг.

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

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

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

velocity = new Vector3(0, 0, 5); — команда задаёт объекту скорость как трёхмерный вектор: 0 по первой оси, 0 по второй и 5 по третьей, поэтому объект начинает двигаться в одном направлении.

rigidbody.useGravity = false; — команда отключает действие гравитации на физическое тело объекта, поэтому оно не падает вниз.

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

Куб сорвался с места с резким свистом.

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

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

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

— Ещё. — Я прикусила внутреннюю сторону щеки, удерживая следующую реплику.

Я поменяла упругость.

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

Щёлк.

— Ещё. — Я потёрла ладони друг о друга, занимая дрожащие пальцы.

Увеличила массу.

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

Грохот.

— Ещё. — Я отвела взгляд в сторону и через секунду вернула его.

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

Пояснение: примитивы — простые базовые 3D-формы — например кубы, сферы и другие элементарные объекты, из которых строят более сложные сцены.

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

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

А лаборатория — это место, где ошибкам дают имена и параметры.

Я поняла это не сразу.

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

Он замер в нескольких сантиметрах от лица.

Белая грань отражала моё размытое лицо.

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

Пауза.

— Хотя… не факт, что это вообще возможно. — Я оглянулась через плечо, хотя за спиной была та же пустота.

Я коснулась поверхности и удалила объект.

Он исчез без следа.

В груди неприятно кольнуло.

Слишком легко.

Создать. Исправить. Удалить.

Я быстро открыла следующий раздел.

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

FluidDynamics. — раздел моделирования движения жидкостей: течения, давления, капель и поведения воды.

— Вода, — сказала я. — Вода не должна быть такой послушной.

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

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

Потом сунула ладонь глубже. Холод обхватил запястье. Я пошевелила пальцами внутри и наблюдала, как вокруг них расходятся медленные волны. Только после этого вернулась к параметрам.

— Привет. — Я переступила с ноги на ногу, не находя удобной позы.

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

— А теперь без неё. — Я переместила вес на другую ногу и снова замерла.

Gravity: 0. — значение гравитации установлено в ноль: сила притяжения в выбранной области отключена.

Сфера взорвалась.

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

— Стой! — Я сжала пальцы в кулак и тут же разжала.

Капли замерли.

Я ещё несколько секунд держала руки перед лицом, ожидая, что приказ сорвётся. Ничего не двигалось. Одна крупная капля зависла у самого кончика моего носа. Я осторожно отступила, и она осталась на месте.

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

Я медленно повернулась.

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

Красиво.

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

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

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

— Слишком правильно, — пробормотала я.

Стоило мне подумать о форме — вода принимала её.

Стоило захотеть остановки — всё останавливалось.

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

Брызги разлетелись по траве.

Несколько секунд я специально ничего не делала.

Капли стекали по стеблям сами.

И почему-то именно это понравилось мне больше всего.

Я открыла AirFlow.

Пояснение: AirFlow — раздел управления потоками воздуха и ветром.

— Воздух — это не объект, — сказала я. — Попробуй-ка заставить среду вести себя прилично.

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

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

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

Я добавила слабую циркуляцию.

По полю прошёл первый ветер.

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

Я застыла.

Простое ощущение — ветер на лице — вдруг ударило сильнее любого визуального эффекта.

Где-то внутри всплыло не воспоминание, а его тень: открытое окно, прохладный вечер, волосы лезут в рот, кто-то недовольно смеётся…

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

— Подожди. — Я качнула головой и шумно выпустила воздух.

Ветер продолжал дуть.

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

Тишина.

Я судорожно вызвала интерфейс памяти — если такой вообще существовал. Search. UserData. PersonalHistory. Identity.

Пояснение: Search — поиск по данным системы. UserData — пользовательские данные. PersonalHistory — личная история и сведения о прошлом. Identity — данные, определяющие личность и идентичность.

Access denied. — система отказала в доступе к закрытому разделу или данным.

Я замерла.

Попробовала снова.

Access denied. — система отказала в доступе к закрытому разделу или данным.

— Серьёзно? — Я провела пальцами по влажной траве и стряхнула росу.

Третья попытка.

Access denied. — система отказала в доступе к закрытому разделу или данным.

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

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

Красная строка мигнула и исчезла.

Я ударила ладонью по панели.

— Кто это придумал?! — Я провела ладонью по рукаву, будто проверяя, что тело всё ещё здесь.

Никакого ответа.

Я стояла, тяжело дыша, и смотрела на послушный мир.

Потом медленно вернулась к AirFlow.

Пояснение: AirFlow — раздел управления потоками воздуха и ветром.

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

Turbulence. — турбулентность: степень хаотичности и вихревого характера движения воздуха.

HumidityNoise. — случайные небольшие колебания влажности, делающие среду менее идеально равномерной.

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

Последний параметр заставил меня задержать палец.

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

Случайность.

Я увеличила значение.

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

Ветер изменился.

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

Я улыбнулась.

И тут же уменьшила параметр на несколько пунктов.

Слишком сильная турбулентность показалась опасной.

Улыбка исчезла.

Я смотрела на ползунок.

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

Мир молчал.

Я оставила значение умеренным.

В тот момент мне казалось, что это разумность.

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

Я строила защиту от неожиданностей.

Глава 3. Жизнь по инструкции

BiotaInitialization встретила меня мягким зелёным свечением.

Пояснение: BiotaInitialization — модуль запуска и создания живых организмов.

Я долго не нажимала.

Я прошлась по полю, вернулась, снова остановилась перед зелёной вкладкой. Несколько раз открывала соседние разделы без всякой цели и тут же закрывала их. Пальцы искали занятие, лишь бы не касаться этой кнопки.

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

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

— Начнём с тех, кто не предъявляет претензий, — сказала я.

Insecta. — раздел или шаблон для создания и настройки насекомых.

Передо мной развернулась трёхмерная координатная сетка. Я собрала между ладонями сгусток светящейся материи и начала вытягивать форму.

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

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

Муравей оказался сложнее, чем выглядел.

— Шесть ног. Не восемь. Соберись. — Я стиснула зубы, а потом намеренно разжала челюсть.

Я поправила геометрию, добавила суставы, сгладила хитиновый панцирь.

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

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

CollectiveIntelligence. — модель коллективного поведения, позволяющая группе существ действовать согласованно.

Pathfinding. — алгоритм поиска пути: выбор маршрута от текущей точки к цели с обходом препятствий.

ForagingBehavior. — модель поведения, отвечающая за поиск и добывание пищи.

ThreatResponse. — модель реакции на угрозу: распознавание опасности и выбор защитного поведения.

На последнем параметре я задержалась.

Страх.

Даже муравью нужен страх, чтобы выжить.

Мой палец замер.

Я посмотрела сквозь сетку на настоящую траву. Где-то там уже двигались созданные мной потоки воздуха, текла вода, падали капли. Теперь я собиралась добавить существу способность от всего этого убегать.

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

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

— Ничего личного. — Я расправила пальцы и посмотрела, перестали ли они дрожать.

Я активировала систему.

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

Я опустилась на корточки и несколько секунд пыталась его найти.

— Эй, я тебя сделала вообще-то. — Я коснулась кончиками пальцев собственной щеки, возвращая себя в тело.

Муравей не вернулся.

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

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

Это почему-то рассмешило меня.

Бабочка получилась красивее.

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

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

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

Пояснение: меш — трёхмерная сетка из вершин и полигонов, задающая форму поверхности 3D-модели.

Бабочка села мне на палец.

Я замерла.

— Ну вот. Хоть кто-то оценил. — Я отступила на полшага и снова всмотрелась вперёд.

Она тут же улетела.

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

Пояснение: AirFlow — раздел управления потоками воздуха и ветром.

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

— Предательница. — Я подняла ладонь и тут же передумала делать следующий жест.

Заяц, куры, мелкие птицы, потом лисица.

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

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

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

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

— Ты с ума сошёл?! — Я провела носком по земле, оставляя короткую борозду.

Заяц, не испытывая раскаяния, исчез в траве.

Я рассмеялась.

Вот оно.

Непредсказуемость.

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

ThreatResponse: stochastic deviation 7%. — реакция на угрозу получает 7% случайного отклонения, поэтому поведение не всегда повторяется абсолютно одинаково.

Случайность была прописана мной.

Даже неожиданность случалась по разрешению.

Лисицу я создавала дольше остальных.

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

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

Мне хотелось, чтобы она не просто охотилась. Я добавила Curiosity, ExplorationDrive, SocialDistance. Последний параметр поставила высоким — не хотела, чтобы животное постоянно лезло ко мне.

Пояснение: Curiosity — уровень любопытства. ExplorationDrive — стремление исследовать новое и незнакомое. SocialDistance — предпочитаемая дистанция от других существ.

Ползунки стояли рядом, и я несколько раз переводила взгляд с одного на другой. Curiosity подняла, отступила, посмотрела на значение. ExplorationDrive оставила чуть ниже. SocialDistance потянула вверх одним резким движением, а потом задержала пальцы на шкале, словно оправдываясь перед ещё не существующим животным.

Пояснение: Curiosity — уровень любопытства. ExplorationDrive — стремление исследовать новое и незнакомое. SocialDistance — предпочитаемая дистанция от других существ.

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

«Удобно», — мелькнула мысль.

Я нахмурилась.

— Что удобного? Это безопасность. — Я задержала руку в воздухе, прежде чем снова опустить.

Когда лиса ожила, она сделала два шага, остановилась и посмотрела прямо на меня.

Не на интерфейс. Не на движущуюся траву.

На меня.

Её нос дрогнул.

Я не шевелилась.

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

Лисица приблизилась.

— Я не опасная. — Я выдохнула через нос и заставила плечи расслабиться.

Она наклонила голову.

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

Ещё шаг.

Я протянула руку.

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

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

Лиса понюхала пальцы — и вдруг отступила.

— Что? — Я потёрла ладони друг о друга, занимая дрожащие пальцы.

Она ещё секунду смотрела на меня, затем развернулась и ушла.

Я осталась с протянутой ладонью.

На панели мелькнула строка:

AI_Detector: CreatorEntity recognized. — система распознавания определила Аки как сущность-создателя.

Response: uncertainty. — текущая реакция существа классифицирована системой как неуверенность.

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

Я усмехнулась, но внутри неприятно сжалось.

Это было глупо. Реакция алгоритма. Параметр. Набор вероятностей.

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

Пояснение: Trust — параметр доверия к другому существу.

Пальцы уже поднялись к панели.

Я остановилась.

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

Рука опустилась.

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

Лисица давно скрылась.

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

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

Если я найду её одной командой, подумала я, это будет не встреча. Это будет вызов функции.

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

Почему-то это маленькое «нет», которое мне даже никто сознательно не сказал, оказалось важнее сотни послушных команд.

Я создала ещё несколько видов. Расширила поле. Добавила неровности рельефа, небольшую рощу, ручей. Сделала облака и запретила себе вручную задавать каждому форму. Пусть генератор решает сам.

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

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

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

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

Он начинал жить.

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

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

И всё равно я чувствовала одиночество.

Животные реагировали. Прятались. Искали пищу. Спаривались. Конфликтовали. Отдыхали.

Но никто не мог спросить меня:

«Почему?»

Никто не мог сказать:

«Ты ошиблась».

Никто не мог посмотреть на фиолетовое небо и решить, что оно уродливое.

Я поймала себя на этой мысли и рассмеялась.

— Вот этого тебе не хватает? Критика? — Я оглянулась через плечо, хотя за спиной была та же пустота.

Ветер прошёл по траве.

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

Я легла на спину и закрыла глаза.

Несколько секунд было спокойно.

Потом в голове возник другой вопрос.

«А если он уйдёт?»

Я открыла глаза.

Небо оставалось безупречным.

Вопрос был нелепым. Я ещё никого не создала.

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

Я села слишком резко.

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

Сказала уверенно.

Почти честно.

Глава 4. Право на другого

Вкладка SentientEntityCreation оставалась открытой долго.

Пояснение: SentientEntityCreation — раздел создания разумной, осознающей себя сущности.

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

Шаблон будущего сознания висел передо мной пустым каркасом.

Я ходила вокруг него кругами.

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

Каркас медленно вращался в пустоте. В нём ещё не было ни лица, ни голоса, ни желания — только место для всего этого. Именно поэтому на него было так легко проецировать будущие вопросы.

— Камень проще, — сказала я.

Каркас не спорил.

— Камень не спрашивает, зачем его сделали. — Я расправила пальцы и посмотрела, перестали ли они дрожать.

Тишина.

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

Я остановилась перед шаблоном.

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

От этой мысли ладони вспотели.

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

Пояснение: откат версии — возврат системы к более раннему сохранённому состоянию. баг — ошибка в программе или логике системы.

Я закрыла интерфейс.

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

У ручья я остановилась и умыла лицо. Вода была холодной. Капли стекали с подбородка на одежду. Это простое действие занимало руки и хотя бы на минуту возвращало меня из философии в тело.

Поле стало шире.

Точнее, мне так показалось.

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

Я опустилась в траву.

— Я ведь не ради науки это делаю, да? — Я расправила пальцы и посмотрела, перестали ли они дрожать.

Вопрос прозвучал тихо.

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

Нет.

Не ради эксперимента.

Не ради проверки возможностей системы.

Не ради любопытства.

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

Я обхватила колени.

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

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

— Какая прекрасная причина создать человека, — усмехнулась я. — «Мне было одиноко».

Слова прозвучали жестоко.

И правильно.

Я представила, как будущая девушка — почему-то я уже думала о ней как о девушке — однажды спросит:

«Зачем я появилась?»

Что я отвечу?

«Потому что мне было страшно?»

«Потому что я хотела, чтобы кто-то смотрел на меня?»

«Потому что лиса ушла?»

Я закрыла лицо ладонями.

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

— Нет, — сказала я. — Если я это сделаю, ты не будешь моей игрушкой.

Я поднялась и снова открыла интерфейс.

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

Я провела ладонью сквозь его грудь. Свет расступился вокруг пальцев. Будущего сердца там ещё не было.

— Слышишь? Я даже заранее с тобой договариваюсь. — Я провела большим пальцем по костяшкам другой руки.

Каркас молчал.

— У тебя будет право не любить меня. — Я прикусила внутреннюю сторону щеки, удерживая следующую реплику.

От этой фразы внутри всё сжалось.

Я посмотрела на кнопку Initialize.

Пояснение: Initialize — команда запуска или активации созданной системы/сущности.

— Возможно. — Я повела плечом, сбрасывая неприятное напряжение.

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

Не большой. Не осознанной.

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

Я хотела создать свободное существо.

Но одновременно хотела быть для него необходимой.

И обе эти потребности казались мне одинаково добрыми.

Глава 5. Первая

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

Пояснение: Humanoid_Base_Templates — библиотека базовых шаблонов человекоподобных тел.

Десятки готовых вариантов: пропорции, лица, возрастные параметры, двигательные схемы.

Я листала их и чувствовала раздражение.

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

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

— Нет. — Я расправила плечи и заставила себя не отступать.

Следующий.

— Слишком гладко. — Я провела ладонью по бедру и заставила руку остаться там.

Следующий.

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

Следующий.

— Господи, кто проектировал эти улыбки? — Я провела ладонью по бедру и заставила руку остаться там.

Я закрыла библиотеку.

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

Пустота вокруг интерфейса чуть мерцала.

— И не хочу идеальную куклу. — Я подняла подбородок, будто это могло сделать голос увереннее.

Через секунду я добавила:

— То есть… хочу, чтобы она была хорошей. Но не идеальной. — Я выдохнула через нос и заставила плечи расслабиться.

Я уже слышала противоречие и всё равно продолжила.

Каркас я строила сама.

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

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

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

Пояснение: RigidBody — стандартный физический компонент, который заставляет объект подчиняться массе, силам, столкновениям и гравитации. NeuroMuscular_Sync — вымышленная система синхронизации мысли, нервной системы и мышечного движения.

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

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

Сначала тело получилось слишком совершенным.

Я отошла на шаг.

Передо мной висела фарфоровая фигура — симметричная, безошибочная, мёртвая.

— Чего тебе не хватает? — Я выдохнула через нос и заставила плечи расслабиться.

Я обошла её.

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

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

— Шрама? — Я качнула головой и шумно выпустила воздух.

Добавила едва заметную неровность на одном пальце. Стерла.

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

Добавила. Стерла.

— Нет. Это всё декорации. — Я потерла шею ладонью, пытаясь сбросить напряжение.

Я посмотрела ей в лицо.

— Что сделает тебя тобой? — Я повела плечом, сбрасывая неприятное напряжение.

Вопрос вернулся ко мне.

«А что делает тобой тебя?»

Я отвернулась.

— Не начинай. — Я пригладила складку на одежде, лишь бы занять руки.

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

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

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

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

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

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

MemoryFormation. — модуль формирования памяти: создание и закрепление новых воспоминаний.

SensoryIntegration. — объединение сигналов от разных органов чувств в единую картину происходящего.

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

AttachmentModel. — модель привязанности: правила формирования эмоциональной близости и отношений с другими.

SelfConcept. — модель представления существа о самом себе: кто оно, каким себя считает и где проходит граница его личности.

На SelfConcept стояло предупреждение:

Пояснение: SelfConcept — модель представления существа о самой себе.

Requires developmental history. — система сообщает, что для формирования устойчивого представления о себе нужна история развития и накопленный жизненный опыт.

Я перечитала дважды.

— История нужна, чтобы понимать себя. — Я расправила пальцы и посмотрела, перестали ли они дрожать.

Смешно.

У меня истории не было.

Я всё равно как-то функционировала.

«Функционировала» — неприятное слово.

Я быстро закрыла уведомление.

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

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

Пояснение: Identity — данные, определяющие личность и идентичность.

Следующий блок был заблокирован.

Soul_Synthesis_Legacy. — старый, оставленный ради совместимости модуль «синтеза души», создающий более непредсказуемую часть сознания.

Deprecated. — устаревший компонент: его использование больше не рекомендуется.

Unstable. — нестабильный компонент: его поведение может быть непредсказуемым или давать сбои.

Non-deterministic output. — недетерминированный результат: одинаковые исходные условия не гарантируют полностью одинаковый итог.

Unauthorized modifications may produce irreversible behavior. — предупреждение: неразрешённые изменения могут вызвать поведение, которое потом нельзя будет полностью отменить.

Я почувствовала холод в пальцах.

— Неуправляемый вектор, — прочитала я вслух.

И засмеялась.

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

Хотела ли?

Я посмотрела на предупреждение.

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

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

Если подключить этот модуль, я не смогу заранее гарантировать реакции. Не смогу полностью предсказать, что она полюбит. Чего испугается. Кого возненавидит.

Кого выберет.

Последняя мысль заставила меня задержать дыхание.

Я почти закрыла блок.

Кнопка закрытия уже подсветилась под пальцем. Я удерживала его там так долго, что интерфейс приглушил остальные элементы, ожидая подтверждения. Потом отвела руку и прошлась вокруг неподвижной фигуры.

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

Почти.

— Свобода без риска — это просто хорошо замаскированная клетка. — Я сцепила пальцы перед собой и медленно развела их.

Фраза прозвучала умно.

Я произнесла её для себя, потому что мне требовалось убедить себя.

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

Пояснение: Probabilistic_Heuristics — система принятия решений на основе вероятностей и эвристик, а не заранее жёстко заданного ответа. if-else — условная конструкция «если… иначе…», которая выбирает один из заранее прописанных вариантов действий.

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

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

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

В графе AestheticResponse я включила способность чувствовать красоту без практической пользы.

Пояснение: AestheticResponse — способность испытывать эстетическую реакцию, то есть воспринимать что-либо как красивое или некрасивое.

В Empathy_Level поставила максимум.

Пояснение: Empathy_Level — числовой уровень эмпатии, способности чувствовать и понимать состояние других.

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

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

Палец задержался.

Максимальная эмпатия означала чуткость.

Добро.

Способность понимать других.

Что плохого может быть в эмпатии?

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

Я не подумала, что максимальная эмпатия — тоже форма крайности.

Я просто увидела зелёный индикатор и решила, что делаю её доброй.

AttachmentModel я настроила осторожнее.

Пояснение: AttachmentModel — модель эмоциональной привязанности.

SecureBonding: enabled. — механизм безопасной привязанности включён: система допускает формирование устойчивых доверительных связей.

AbandonmentSensitivity: low. — чувствительность к страху покинутости установлена на низком уровне.

AutonomyDrive: high. — стремление к самостоятельности и собственным решениям установлено на высоком уровне.

Я долго смотрела на последнее значение.

Потом уменьшила high до medium-high.

Пояснение: high — высокий уровень параметра. medium-high — уровень между средним и высоким.

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

Между high и medium-high была смешная визуальная разница. Внутри меня — нет. Я уже успела придумать этой маленькой уступке серьёзное название: осторожность.

— Для стабильности, — сказала я.

И снова никто не потребовал объяснений.

Работа поглотила меня.

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

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

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

Чем больше я создавала её, тем меньше думала о себе.

Это было почти облегчением.

Пока я решала, какие у неё будут реакции на стресс, мне не нужно было спрашивать, почему при попытке открыть собственную память система отвечает Access denied.

Пояснение: Access denied — отказ системы предоставить доступ к данным.

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

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

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

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

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

Я отступила.

Она выглядела реальной.

Не живой — пока нет. Но реальной настолько, что мне захотелось говорить тише.

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

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

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

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

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

Так было неудобнее. Значит, живее. Я оставила.

— Красиво, — сказала я.

Потом нахмурилась.

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

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

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

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

«Чистый лист».

Мне нравилось это выражение.

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

Я создала деревянный стол и стул.

Стол возник слишком ровным. Я сразу стёрла его и сделала заново, на этот раз позволив генератору немного исказить доски. Провела пальцем по краю, поймала маленькую занозу и рассмеялась от неожиданности.

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

Обычные.

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

Я усадила её за стол.

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

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

Стеклянный взгляд смотрел сквозь меня.

Финальная проверка.

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

Empathy_Level: 100%. — уровень эмпатии установлен на максимальное значение — 100%.

Rationality: balanced. — рациональность настроена как сбалансированная: логическое мышление не должно полностью подавлять эмоции и интуицию.

Creative_Potential: unrestricted. — творческий потенциал не ограничен заранее заданными рамками.

AutonomyDrive: 78%. — стремление к самостоятельности установлено на 78%, то есть высоко, но не на максимум.

Soul_Synthesis_Legacy: active. — старый непредсказуемый модуль «синтеза души» активирован.

Ни одной ошибки.

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

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

Вот это и испугало.

Я закусила губу.

— Ты совершенна, — прошептала я.

И сразу поняла, что сказала не то.

Я же не хотела совершенства.

Я хотела живого.

Палец завис над Initialize.

Пояснение: Initialize — команда запуска или активации созданной системы/сущности.

Я опустила руку. Отошла к ручью. Вернулась. Проверила один параметр, который уже проверяла дважды. Закрыла панель и снова открыла. Всё это было очевидным откладыванием, и я прекрасно это понимала.

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

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

Слова прозвучали почти как клятва.

Почти.

Я нажала ввод.

Глава 6. Первый вопрос

Свет вспыхнул золотом.

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

Девушка вздрогнула.

Не как машина при подаче питания.

Как человек, которому приснился кошмар.

Её пальцы судорожно сжались на краю стула.

Я сделала шаг вперёд.

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

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

Глупое первое слово.

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

Она медленно подняла голову.

Глаза сфокусировались не сразу. Сначала прошли сквозь меня, затем вернулись, поймали контур лица.

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

Я перестала дышать.

Она посмотрела на свои ладони.

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

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

Разжала пальцы.

Сжала снова.

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

— Слышишь меня? — спросила я. — Я чуть наклонилась вперёд и тут же остановилась, заметив, как внимательно она следит за каждым движением.

Её взгляд вернулся ко мне.

Молчание затянулось.

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

«Не работает».

«Ошибка».

«Исправь».

Рука сама дёрнулась к интерфейсу.

Я заставила её опуститься.

— Не спеши, — сказала я уже не ей, а себе. — Можно не спешить. — Я прижала ладонь к бедру, удерживая её подальше от интерфейса.

Девушка вдохнула.

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

Она замерла, удивлённая собственным телом.

— Что… это? — Она коснулась пальцами горла, будто пыталась понять, откуда только что появился звук.

Её голос был тихим. Не механическим. Чуть хриплым от первого звука.

У меня перехватило горло.

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

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

Она вдохнула снова, глубже.

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

— Да. — Я чуть наклонилась вперёд, но удержала руки возле себя.

— Почему? — Она осторожно сжала пальцами край стула и тут же отпустила.

Я растерялась.

Из всех возможных первых вопросов я ожидала «где я?» или «кто ты?». Но она спросила о дыхании.

— Потому что твоему телу так… нужно. — Я провела рукой перед собой, словно могла нащупать объяснение в воздухе.

Она наклонила голову.

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

Вопрос был невинным.

Я почувствовала укол.

— Да. — Я опустила руку, которую уже начала поднимать к интерфейсу.

Она коснулась груди.

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

Под ладонью билось сердце.

— Тогда это твоё? — Она сдвинула пальцы к месту, где сердце билось сильнее всего.

— Что? — Я сцепила пальцы перед собой, чтобы занять руки.

— Биение. — Она посмотрела на меня с коротким, почти детским недоверием.

Я открыла рот и не сразу ответила.

— Нет. Теперь твоё. — Я посмотрела на её ладонь поверх сердца и заставила себя не уточнять ничего лишнего.

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

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

— Сделала. — Я сглотнула и заставила плечи опуститься.

— И оно моё. — Её пальцы едва заметно шевельнулись на колене.

— Да. — Я чуть качнула головой, будто проверяла собственный ответ на прочность.

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

Я нервно улыбнулась.

— Мне тоже. — Я медленно выдохнула и на секунду отвела взгляд от её лица.

Девушка впервые перевела взгляд мимо меня.

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

Небо.

Трава.

Ручей вдали.

Ветер шевельнул её волосы, и она резко повернула голову, пытаясь понять, кто прикоснулся.

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

Она подняла ладонь, ловя поток.

— Тепло. — Она осторожно сжала пальцами край стула и тут же отпустила.

— Тебе тепло? — Я опустила руку, которую уже начала поднимать к интерфейсу.

— Здесь… — она медленно коснулась груди. — Не снаружи. Здесь. — Она оставила ладонь на груди и закрыла глаза на короткий вдох.

Я почувствовала, как улыбаюсь.

— Что ты чувствуешь? — Я медленно выдохнула и на секунду отвела взгляд от её лица.

Она посмотрела на меня.

Я тут же поняла, что спросила слишком жадно.

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

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

Девушка словно заметила это. Её взгляд задержался на моём лице.

— Я должна что-то чувствовать правильно? — Она слегка прищурилась, словно поймала во мне ожидание раньше, чем я успела его спрятать.

Улыбка застыла.

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

— Ты ждёшь. — Она провела большим пальцем по собственной ладони.

— Я… волнуюсь. — Я потёрла большим пальцем край ладони, не зная, куда деть напряжение.

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

— Из-за меня? — Она втянула воздух чуть глубже и задержала его.

— Из-за того, что всё получилось. — Я сглотнула и заставила плечи опуститься.

Она опустила глаза на руки.

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

Тревога снова поднялась во мне, мгновенно.

— Что значит «не получилось»? — Я сцепила пальцы перед собой, чтобы занять руки.

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

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

Я молчала.

В её голосе не было обвинения. Только логика.

И всё равно мне захотелось открыть диагностическую панель.

Я снова не сделала этого.

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

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

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

Вопрос оказался опаснее предыдущих.

Удалить.

Исправить.

Перезапустить.

Я знала технический ответ.

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

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

Впервые за всё время я произнесла эти слова без попытки немедленно открыть меню.

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

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

— Очень далеко не всё. — Я машинально потёрла большим пальцем край ладони.

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

Я моргнула.

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

Она чуть подумала.

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

Я рассмеялась.

Не от нервов. По-настоящему.

— Ладно. Это справедливо. — Я медленно выдохнула и на секунду отвела взгляд от её лица.

Она осторожно поднялась со стула.

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

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

— Подожди. — Она выставила ладонь между нами и сама удивилась уверенности этого жеста.

Я остановилась.

Она сделала шаг.

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

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

Потом второй.

На третьем пошатнулась, но удержалась сама.

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

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

— Можешь. — Я коротко кивнула, не торопясь добавлять объяснение.

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

Я хотела сказать «да».

Вместо этого ответила:

— Надеялась. — Я опустила взгляд, собираясь с ответом.

Она посмотрела на землю, потом на отпечаток своей ноги в мягкой почве.

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

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

— Да. — Я провела пальцами по краю рукава, тянув время.

— Он останется? — Она сжала и разжала пальцы, проверяя их послушность.

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

— А я? — Она оторвала взгляд от следа и посмотрела на меня с внезапной серьёзностью.

Сердце ударило сильнее.

— Что ты имеешь в виду? — Я прижала ладонь к бедру, чтобы не тянуться поддерживать её без спроса.

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

Вопрос прозвучал тихо.

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

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

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

— Это не ответ. — Она чуть качнула головой, не принимая красивую формулировку вместо факта.

Я снова замолчала.

Она была создана несколько минут назад и уже умела находить места, где я подменяла факты желаниями.

Почему-то это наполнило меня одновременно гордостью и тревогой.

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

Девушка кивнула.

Потом неожиданно спросила:

— Как тебя зовут? — Она подняла лицо ко мне, словно вопрос давно ждал своей очереди.

Я застыла.

Имя.

В голове — пустота.

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

Аки.

Я схватилась за него так отчаянно, что почти испугалась спугнуть.

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

Слово прозвучало тихо, но будто изменило расстояние между мной и миром. Я повторила его про себя ещё раз, проверяя, не исчезнет ли. Не исчезло.

Девушка смотрела на моё лицо, и я поняла, что улыбаюсь совершенно беспомощно. Не потому, что вспомнила много. Потому что вспомнила хоть что-то.

Собственное имя во рту ощущалось новым.

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

Девушка повторила:

— Аки. — Она осторожно повторила слово, наблюдая, как оно действует на меня.

И от того, что кто-то другой произнёс моё имя, оно впервые стало настоящим.

Я закрыла глаза на секунду.

— Спасибо. — Я закрыла глаза на секунду и прижала пальцы к переносице.

— За что? — Она наклонила голову и тихо вдохнула.

— Не знаю. Просто… спасибо. — Я улыбнулась краем губ и сразу спрятала улыбку.

Она снова посмотрела на поле.

— А меня? — Она коснулась себя кончиками пальцев, уточняя вопрос жестом.

— Что? — Я улыбнулась краем губ и сразу спрятала улыбку.

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

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

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

Но не имя.

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

Она ждала.

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

Я уже перебирала варианты.

Потом остановилась.

— У тебя пока нет имени. — Я опустила руку, так и не вызвав список готовых вариантов.

Она отвела взгляд, будто искала имя где-то в траве или на линии горизонта. Я почти физически почувствовала, как внутри меня поднимается желание заполнить паузу предложениями.

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

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

— Ты забыла? — Она нахмурилась и провела носком по земле, будто там мог лежать пропущенный ответ.

Можно было соврать.

Сказать, что так задумано.

Что я специально оставила ей выбор.

Слова почти сформировались.

— Да, — призналась я. — Забыла. — Я развела ладони в коротком беспомощном жесте и не стала оправдываться.

Она посмотрела на меня очень серьёзно.

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

Но уголок её губ дрогнул.

— Значит, ты правда не всё знаешь. — Она посмотрела на собственный след, потом снова на меня.

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

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

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

Первая: гордость.

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

Я ненавидела вторую реакцию за сам факт её существования.

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

И добавила, прежде чем успела передумать:

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

Она кивнула.

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

Это было страшно.

И прекрасно.

Интерлюдия. Архив Наблюдателя

Эйра открыла глаза без вдоха.

Ей не требовался воздух.

Не требовалось сердце.

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

Архив Наблюдателя простирался вокруг чернильной пустотой. Тысячи экранов висели в ней на разных высотах и расстояниях. Большинство были мертвы: серые прямоугольники без сигнала. Лишь три пульсировали холодным синим светом.

Мир Аки.

Эйра поднялась.

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

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

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

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

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

Те же базовые черты.

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

Эйра подошла к первому экрану.

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

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

На нём Аки и девушка стояли в поле.

— «Можно я выберу сама?» — повторила Эйра чужим голосом. — Край её пальцев на секунду рассыпался цифровым шумом.

Её губы растянулись в усмешке.

— Конечно можно. Пока выбор тебе нравится. — Край её пальцев на секунду рассыпался цифровым шумом.

Она коснулась экрана.

Барьер обжёг пальцы белой рябью.

Эйра отдёрнула руку.

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

Между кожей и экраном дрожал тонкий слой света. Эйра улыбнулась одним уголком губ и убрала руку сама.

— Всё ещё боишься меня. — Эйра отвела взгляд на соседний мёртвый экран.

Она говорила не системе.

Она говорила Аки.

Хотя Аки не могла её услышать.

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

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

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

Empathy_Level: 100%. — уровень эмпатии установлен на максимальное значение — 100%.

Она остановилась.

— Какая прелесть. — Край её пальцев на секунду рассыпался цифровым шумом.

Приблизила строку.

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

Следующая строка.

AutonomyDrive: 78%. — стремление к самостоятельности установлено на 78%, то есть высоко, но не на максимум.

— И тут же испугалась дать сто. — Она приблизилась к экрану ещё на шаг.

Эйра рассмеялась тихо.

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

На третьем экране шёл поток системных логов Аки.

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

Особенно ярко мигали обращения к закрытым разделам:

Identity — access denied. — доступ к данным о личности Аки закрыт системой.

PersonalHistory — access denied. — доступ к личной истории и прошлому Аки закрыт системой.

MemoryRoot — access denied. — доступ к корневому разделу памяти Аки закрыт системой.

Эйра перестала улыбаться.

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

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

На мгновение в её лице появилось что-то другое.

Не сочувствие.

Боль, слишком быстро превращённая в презрение.

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

Экран показывал Аки, стоящую рядом с созданной девушкой.

Та улыбалась.

Аки тоже.

Эйра сжала челюсть.

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

Зависть.

Аки могла касаться травы.

Чувствовать ветер.

Ошибаться и быть прощённой.

Создавать кого-то, кто смотрит на неё как на начало мира.

А Эйра могла только смотреть.

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

Она вцепилась в край экрана.

Барьер вспыхнул.

— Откройся. — Она приблизилась к экрану ещё на шаг.

Система оттолкнула её.

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

Потом медленно расправила плечи и пошла обратно.

— Откройся! — Она склонила голову набок, наблюдая за изображением.

Эйра рванула сильнее.

Раздался металлический скрежет. По стеклу пошла тонкая трещина.

Впервые.

Эйра замерла.

Трещина мигнула и почти сразу затянулась.

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

Теперь экран был для неё не окном. Он стал дверью, которая однажды уже дала слабину.

Но она успела увидеть.

Улыбка вернулась.

Теперь настоящая.

— Значит, можешь ломаться. — Она приблизилась к экрану ещё на шаг.

Архив снова затих.

Эйра подошла ближе и прижалась лбом к холодной поверхности.

На другом конце Аки что-то говорила девушке. Их голоса доходили с лёгкой задержкой.

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

Она закрыла глаза.

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

Эйра отошла и скрестила руки.

Она могла ждать.

У неё не было ничего, кроме времени.

И голода по свободе.

Глава 7. Не мой мир

Я не знала, что за нами наблюдают.

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

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

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

Она обернулась, продолжая пятиться.

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

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

— Я видела воду. — Она прищурилась, будто проверяла, не прячу ли я часть ответа.

— Ты видела её издалека. — Я провела ладонью по волосам, убирая их с лица.

— Она опасная? — Она замедлилась на полшага, но любопытство из лица никуда не исчезло.

— Иногда. — Я поддела носком маленький камень и сразу потеряла к нему интерес.

— Ты её сделала опасной? — Она остановилась совсем и посмотрела на меня с почти подозрительным интересом.

Я споткнулась о кочку.

Нога ушла в сторону, я взмахнула руками и чудом удержалась. Девушка остановилась и несколько секунд смотрела на меня с таким вниманием, будто только что получила наглядное объяснение слова «опасная».

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

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

Она улыбнулась.

— «Всю жизнь» — это сколько? — Она улыбнулась и наклонила голову, будто действительно ждала точного числа.

— Вот видишь! — Я поддела носком маленький камень и сразу потеряла к нему интерес.

Она рассмеялась.

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

Она заметила.

— Что? — Она заметила мой взгляд и чуть повернулась ко мне всем корпусом.

— Ничего. — Я провела ладонью по волосам, убирая их с лица.

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

Удар был точным.

— Нет. — Я провела большим пальцем по костяшке указательного.

Она прищурилась.

— Немного. — Она повела плечом и снова посмотрела вперёд.

— Немного, — призналась я. — Я поддела носком маленький камень и сразу потеряла к нему интерес.

Мы подошли к ручью.

У берега она замедлилась сама. Сначала долго смотрела, как вода обтекает камни, потом присела на корточки. Я осталась стоять чуть позади, намеренно не объясняя ничего первой.

По поверхности проплыл маленький лист. Она проследила за ним до поворота и только после этого протянула руку к воде.

Она присела и коснулась воды кончиками пальцев.

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

— Угу. — Я коротко посмотрела на мерцающую у запястья панель и снова на неё.

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

— Потому что вода бывает холодной. — Я упёрла ладони в бока и шумно выдохнула.

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

— Могла. — Я коротко посмотрела на мерцающую у запястья панель и снова на неё.

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

Я открыла рот.

Потому что так настроила TemperatureGradient.

Пояснение: TemperatureGradient — правило изменения температуры в пространстве.

Потому что мне показалось естественным.

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

Я вдруг поняла, что в каждом моём решении спрятаны обломки памяти. Не картинки, не события — предпочтения. Представления о нормальности. «Вода должна быть холодной». «Небо должно быть красивым». «Доброта — это максимальная эмпатия». «Безопасность — это контроль».

Я смотрела на ручей, а девушка ждала.

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

Она опустила руку глубже.

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

Я уже знала, что ткань высохнет сама. Не сказала. Хотелось оставить ей хотя бы несколько открытий, которые не начинаются с моего объяснения.

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

Внутри что-то напряглось.

Вот он.

Тот самый момент, которого я якобы хотела.

Несогласие.

— Тогда… скажешь. — Я коротко кивнула, хотя внутри уже напряглась от самого смысла ответа.

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

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

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

Я усмехнулась.

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

Произнеся это, я сама услышала иронию.

Мир буквально подстраивался под меня по одному движению пальцев.

Девушка тоже услышала.

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

— Но может. — Она посмотрела на едва мерцающую панель у моего запястья, а потом снова на меня.

— Может. — Я потёрла пальцами влажную землю с ладони.

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

— Да. — Я качнула головой, пряча невольную улыбку.

Она вытащила руку из воды.

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

Я замерла.

Несколько секунд слышался только ручей.

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

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

— Кто тебя такую умную сделал? — спросила я наконец. — Я посмотрела на неё поверх камня и невольно улыбнулась.

Она серьёзно подумала.

— Ты? — Она серьёзно свела брови, будто действительно искала автора собственной сообразительности.

Я рассмеялась и закрыла лицо ладонью.

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

— Что такое риторический? — Она повернулась ко мне и чуть подалась вперёд, ожидая объяснения нового слова.

— О нет. — Я запрокинула голову и тихо простонала, пряча улыбку.

Она улыбнулась шире.

И в этот момент я почувствовала облегчение.

Почти счастье.

Мне казалось, что одиночество закончилось.

Я ещё не понимала, насколько легко перепутать близость с облегчением от одиночества.

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

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

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

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

Она задавала вопросы.

Почему трава зелёная?

Почему животные убегают?

Почему боль нужна?

Почему у неё есть сердце, если я могла сделать иначе?

Почему я создала её девушкой?

На последнем вопросе я поперхнулась водой.

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

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

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

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

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

Мне всё ещё хотелось читать каждую её реакцию как диагностический лог. Только теперь лог умел смотреть в ответ.

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

Я посмотрела на неё.

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

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

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

— А как? — Она приподнялась на локте и посмотрела на меня внимательнее.

Я задумалась.

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

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

Я фыркнула.

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

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

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

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

— М? — Я тоже повернулась, оставив взгляд на небе ещё на полсекунды.

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

Я напряглась.

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

— Но это так? — Она осталась лежать неподвижно, только глаза стали внимательнее.

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

Я устала от собственных красивых объяснений.

— Да. — Я выдохнула и уставилась в небо, не пытаясь украшать ответ.

Она молчала.

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

Я снова просила у неё оценки.

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

Девушка повернула голову.

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

Я выдохнула.

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

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

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

— Куда ты уйдёшь? — Я приподнялась на локте быстрее, чем собиралась.

Она указала на горизонт.

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

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

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

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

Я посмотрела на неё.

Она не обвиняла. Просто замечала.

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

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

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

— Но разрешишь? — Она повернулась ко мне всем корпусом, будто слово «разрешишь» требовало прямого ответа.

Я почувствовала, как слово «разрешишь» режет слух.

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

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

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

Полупрозрачная панель у моего запястья казалась теперь тяжелее металла.

Я медленно закрыла её.

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

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

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

Она повернулась обратно к небу.

— А мне? — Она повернула голову обратно ко мне и чуть нахмурилась.

— Что тебе? — Я слегка нахмурилась, прежде чем ответить.

— Чему придётся учиться мне? — Она подтянула одну ногу ближе и обхватила колено рукой.

Я хотела ответить что-нибудь мудрое.

Не смогла.

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

Она долго молчала.

— Даже если тебе не понравится? — Она задержала взгляд на моём лице, будто заранее проверяла цену ответа.

— Особенно если мне не понравится. — Я медленно кивнула и позволила тишине остаться после слов.

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

Она улыбнулась первой. Я ответила не сразу.

Ветер прошёл по траве.

Где-то далеко лиса издала короткий звук.

Я смотрела в темнеющее небо и не видела, как в невидимом для меня месте тонкая трещина снова появилась на поверхности чужого экрана.

Пока она была почти незаметной.

Как большинство трещин, с которых начинается разрушение.

Или выход.

Глава 8. Фиолетовый маркер

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

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

«Не проверяй».

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

— Отлично, — пробормотала я. — Первый поступок после пробуждения — почти слежка.

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

— И тебе доброе утро. — Я стряхнула капли с волос и покосилась на птицу.

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

Девушка смотрела. Я тоже. Прошла, наверное, минута. Потом бабочка взлетела. Она сделала короткий круг над травой, качнулась на слабом потоке воздуха и исчезла за кустами. Девушка ещё несколько секунд смотрела ей вслед, потом перевернулась на спину.

— Ты давно стоишь? — Девушка приподнялась на локтях и щурясь посмотрела на меня снизу вверх.

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

Она повернула голову ко мне.

— Почему подозрительно? — Она села и стряхнула с рукава прилипший лист.

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

— Проверила? — Девушка чуть наклонила голову.

— Нет. — Я покачала головой и прижала ладонь к запястью.

— Почему? — Девушка подняла брови и подтянула колени.

Я вздохнула.

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

Она чуть улыбнулась.

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

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

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

Почти.

Вместо этого указала на голову.

— У тебя там поле. — Я указала на вторую травинку в её волосах.

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

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

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

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

— Бабочки. — Девушка подалась вперёд, стараясь не спугнуть ближайшую.

Я посмотрела туда, куда она смотрела. Над цветущим участком травы кружили четыре — две бледно-жёлтые, белая и маленькая синяя.

— Да. — Я кивнула, проследив за синей бабочкой.

— Ты их делала? — Девушка проводила насекомых взглядом.

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

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

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

— Уже нет. — Я чуть пожала плечом.

— Но могла бы. — Она посмотрела уже не на насекомых, а на моё запястье.

— Могла бы. — Я не стала прятать руку.

Она некоторое время молчала. Я уже знала этот ритм. Когда девушка молчала после ответа, это редко означало, что разговор закончился.

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

Я повернулась к ней.

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

Она указала на бабочек.

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

— Можно. — Я ответила слишком быстро и тут же поймала себя на том, что улыбаюсь.

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

Я зачем-то посмотрела на небо. Она заметила.

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

— Какую тогда? — Я сложила руки на груди, готовясь слушать.

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

— Глубже. — Она прищурилась, будто пыталась достать нужный оттенок из памяти, которой у неё никогда не было.

— Очень техническое описание цвета. — Я скривила рот, но уже открывала нужную вкладку.

— Ты поняла. — Она коротко кивнула.

— К сожалению, да. — Я вздохнула с нарочитой обречённостью.

Она улыбнулась.

— И чтобы края были темнее. — Девушка обвела пальцем воображаемый контур крыла.

— Хорошо. — Я отметила условие коротким движением пальца.

— Но не одинаково. — Она тут же подняла палец, не давая мне перейти дальше.

Я уже подняла запястье и остановилась.

— Что именно не одинаково? — Я задержала руку над интерфейсом.

Она подошла ближе к бабочкам, не пытаясь поймать.

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

— Это будет выглядеть как ошибка пигментации. — Я посмотрела на неё поверх светящейся модели.

— Значит, хорошо. — Она пожала плечами так спокойно, будто только что решила вопрос окончательно.

Я рассмеялась.

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

— Какие? — Девушка невинно моргнула.

— Я не умею спорить с аргументом «пусть будет ошибка». — Я ткнула в неё пальцем и сама рассмеялась.

Мы отошли на свободный участок. Я открыла BiotaInitialization.

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

Зелёное окно развернулось между нами. Девушка сразу подошла ближе. Раньше она смотрела на интерфейс как на часть меня. Теперь — как на инструмент, к которому у неё тоже есть отношение. От этого движения у меня что-то коротко сжалось внутри. Я не стала разбираться что. Открыла Insecta.

Пояснение: Insecta — библиотека шаблонов и параметров для создания насекомых.

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

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

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

— Ты попросила. — Я опёрлась ладонью о бедро и посмотрела на неё выжидающе.

— Да. — Девушка кивнула, не отрываясь от силуэтов.

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

Она посмотрела на меня.

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

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

— А если я не знаю? — Она подняла на меня глаза.

— Тогда мы обе будем страдать. — Я совершенно серьёзно кивнула.

Она серьёзно кивнула.

— Хорошо. — Она серьёзно приняла шутливую угрозу и придвинулась к моделям.

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

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

— Это плохо? — Я наклонилась к модели, пытаясь увидеть то, что увидела она.

— Да. — Девушка кивнула без колебаний.

Я моргнула.

— Объясни. — Я развернула силуэт к ней боком.

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

— Прекрасно. Самый опасный тип заказчика. — Я откинула голову и на секунду закрыла глаза.

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

— Можно? — Девушка подняла руку к светящемуся узлу, но остановила палец в сантиметре от него.

Я уже хотела сказать «интерфейс тебя не распознает», но вовремя остановилась.

— Попробуй. — Я отступила, оставляя ей место.

Её палец коснулся светящегося контрольного узла.

Ничего.

Она посмотрела на меня.

— Не получилось. — Она несколько раз коснулась пустоты и с лёгким раздражением отдёрнула руку.

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

— Ты не хочешь. — Девушка внимательно посмотрела на моё лицо, заметив паузу раньше, чем я успела её скрыть.

— Боюсь. — Я призналась и сжала пальцы, чтобы не открыть лишние разрешения просто из чувства вины.

— Меня? — Она чуть отступила.

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

— Это почти одно и то же? — Она спросила тихо, рассматривая собственные пальцы.

Вопрос лёг неприятно точно.

— Нет, — сказала я. — Но иногда я так веду себя, будто одно.

Я взяла её руку за запястье. Она не отдёрнула.

— Давай вместе. — Я осторожно взяла её за запястье и дождалась, пока она сама расслабит руку.

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

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

Она осторожно потянула. Край крыла вытянулся.

— Стоп. — Она резко напрягла кисть.

Я отпустила.

— Так? — Я отпустила узел и отстранилась на полшага.

Она наклонила голову.

— Чуть назад. — Девушка показала направление коротким движением подбородка.

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

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

Я отдёрнула руку.

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

— Ты посмотрела. — Она прищурилась.

— Теперь мне запрещено даже смотреть профессионально? — Я возмущённо отвела руку за спину.

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

Я прищурилась.

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

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

Я не нашлась с ответом. Перешли к цвету.

WingPigment.CustomSpectrum = Violet_Deep;

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

Крылья окрасились мгновенно. Девушка отступила.

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

— Слишком светлая? — Я потянулась к спектру.

— Слишком готовая. — Она скривилась, словно цвет был не оттенком, а чужим решением.

Я посмотрела на неё. Потом на бабочку. Потом снова на неё.

— Ты сейчас описала цвет словом «готовая». — Я медленно опустила руку от шкалы.

— Ты поняла. — Девушка коротко улыбнулась.

— Опять. — Я фыркнула и вернулась к настройкам.

Пришлось открыть расширенный спектр. Мы двигали оттенок медленно. Фиолетовый уходил в синеву, затем в почти чёрный, потом становился слишком красным. Девушка в какой-то момент перестала смотреть на шкалу и стала смотреть только на крылья.

— Назад. — Девушка подняла ладонь, останавливая меня.

Я вернула.

— Ещё. — Она подалась ближе к крыльям.

Вернула на два деления.

— Здесь. — Её палец замер в воздухе.

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

— Края темнее. — Она обвела контур ногтем, не касаясь света.

WingEdgeGradient: 18%.

Пояснение: WingEdgeGradient — степень затемнения цвета к краям крыла. Значение 18% делает края заметно темнее центра, но сохраняет плавный переход.

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

— Насколько? — Я открыла точное поле значения.

Она показала пальцами маленькое расстояние.

— Это не единица измерения. — Я посмотрела на расстояние между её пальцами и усмехнулась.

— Вот настолько. — Она упрямо оставила пальцы в том же положении.

— Убедительно. — Я покорно ввела приблизительное значение.

Я добавила асимметрию вручную.

LeftWing.PigmentVariance: +3%.

Пояснение: PigmentVariance — небольшое отклонение пигмента от базового цвета. Здесь левое крыло сделано на 3% темнее правого.

Она улыбнулась. Потом мы дошли до полёта. Я автоматически выбрала стандартную модель.

FlightPattern: Naturalized.

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

— Нет, — сказала девушка.

— Что опять? — Я отпустила стандартный шаблон полёта и повернулась к ней.

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

— А как? — Я перевела взгляд с неё на траекторию.

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

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

— Для бабочки нет «не надо». — Я развела ладонями.

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

Я медленно повернулась к ней.

— Ты понимаешь, что описываешь изменение решения? — Я перестала листать параметры.

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

— Откуда? — Я прищурилась.

Она пожала плечами.

— Я так делаю. — Она пожала плечами, будто ничего сложного в этом не было.

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

CourseCommitment: low. MicroDeviation: 12%. TurbulenceResponse: adaptive.

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

— Двенадцать много? — спросила она.

— Для нормальной бабочки — заметно. — Я постучала ногтем по числу.

— А для нашей? — Девушка чуть улыбнулась на слове «нашей».

Слово прозвучало так просто, что я сначала не отреагировала.

Нашей.

Не моей. Не её.

Нашей.

Я посмотрела на полупрозрачную модель.

— Для нашей нормально. — Я задержала взгляд на модели чуть дольше, чем требовалось.

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

Custom entity requires persistent identifier.

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

— Имя? — спросила девушка.

— Не совсем. Скорее номер паспорта, только для системы. — Я развернула поле идентификатора к ней.

— У неё будет имя? — Девушка следила за мигающим курсором.

— Хочешь? — Я уже приготовилась открыть новое поле.

Она подумала.

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

— Почему? — Я перестала печатать и повернулась к ней.

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

Я почувствовала короткий холод между лопатками. Не из-за бабочки.

— Хорошо. — Я закрыла поле для имени и оставила только идентификатор.

Я ввела:

EntityID: VIOLET_MARKER_01.

Пояснение: EntityID — уникальный системный идентификатор объекта. VIOLET_MARKER_01 позволяет системе однозначно распознавать именно эту бабочку среди всей остальной фауны.

Девушка прочитала строку.

— Почему «маркер»? — Она прочитала идентификатор по слогам и подняла на меня глаза.

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

— Для кого? — Девушка сразу перехватила мой взгляд.

Я открыла рот.

— Для системы. — Я ответила после слишком короткой паузы и сама услышала в словах что-то неприятное.

Она кивнула. Мне почему-то не понравился собственный ответ. Я добавила ещё одну строку.

OriginTag: CoCreated.

Пояснение: OriginTag хранит происхождение объекта. CoCreated означает, что существо создано совместно, а не единолично Аки или автоматическим генератором.

Девушка перечитала.

— Это обязательно? — Она указала на OriginTag.

— Нет. — Я покачала головой.

— Тогда зачем? — Девушка не убрала палец от строки.

Я медленно опустила руку.

— Хочу, чтобы система знала, что это не только моё. — Я опустила руку и впервые посмотрела не на интерфейс, а на неё.

Она смотрела на меня несколько секунд. Потом сказала:

— Хорошо. — Нами ещё не существовала как имя, но девушка кивнула так, будто решение уже стало общим.

Я нажала Initialize.

Пояснение: Initialize — команда окончательного запуска созданного существа.

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

Второй.

Поднялась.

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

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

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

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

— Насекомые обычно… — Я подняла указательный палец в привычном жесте объяснения.

Я остановилась.

— Да? — Она повернула ко мне лицо, но руку с бабочкой не сдвинула.

— Ничего. — Я опустила поднятый палец и улыбнулась.

Она улыбнулась, не глядя на меня.

— Ты опять хотела объяснить. — Она улыбнулась краем губ.

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

— Какое? — Девушка тут же подыграла и нахмурилась.

— Желание быть полезной. — Я трагически вздохнула.

— Это лечится? — Она осторожно подняла бровь.

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

Бабочка сложила крылья. На секунду стала почти чёрной тонкой линией. Потом снова раскрыла. Девушка смотрела на неё так, будто держала не насекомое, а доказательство. Я вдруг поняла, что до этого момента все её желания были реакциями. Она хотела узнать, потому что не знала. Хотела идти, потому что увидела горизонт. Хотела понять боль, потому что имела тело. Хотела выбрать имя, потому что обнаружила его отсутствие. А сейчас никакой необходимости не было.

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

— Видела? — Девушка резко повернулась ко мне, когда бабочка сменила курс.

— Видела. — Я проводила фиолетовую точку взглядом.

— Она передумала. — Девушка рассмеялась и прижала ладони к коленям.

— У неё алгоритм с низким CourseCommitment. — Я автоматически подняла палец, готовая уточнить техническую причину.

Девушка посмотрела на меня. Я выдержала паузу.

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

Фиолетовая точка поднялась над травой и исчезла между деревьями. Я почти открыла отслеживание.

Почти.

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

Глава 9. Обретение имени

Она ушла одна на следующий «день». Я ставлю слово в кавычки, потому что по-прежнему не была уверена, что имею право называть днём последовательность настроек освещения, которую сама же когда-то включила из соображений удобства. Тем не менее утро наступило. Небо посветлело. Роса появилась на траве. Птицы начали шуметь так, будто действительно знали расписание. Девушка стояла у края рощи и собирала волосы в неловкий узел.

— Ты куда? — спросила я и сразу пожалела о том, как быстро прозвучал вопрос; пальцы сами сжали край рукава.

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

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

— На что? — Я встала ровнее, будто уточнение могло сделать её уход менее настоящим.

— Не знаю. — Она пожала плечами и посмотрела между деревьями.

— Очень информативно. — Я провела ладонью по лицу, пряча тревогу за раздражением.

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

— Я сказала «когда-нибудь». — Я подняла указательный палец и тут же опустила его, уже слыша, как жалко это звучит.

Она прищурилась. Я закрыла глаза.

— Да. Я слышу себя. — Я зажмурилась на секунду и качнула головой.

— И? — Девушка чуть наклонила голову, не давая мне уйти от ответа.

— И это было жалко. — Я выдохнула и отступила в сторону, освобождая ей дорогу.

Уголок её губ дрогнул.

— Я недалеко. — Она сказала это мягче и переступила с носка на пятку.

— Это не должно быть условием. — Я заставила себя не смотреть на границу рощи.

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

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

— Хорошо. — Я кивнула и отступила от тропы.

— Ты пойдёшь? — Девушка задержала ладонь на ветке у входа в рощу.

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

«Вовремя» для чего?

Я не знала.

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

Она ждала.

— Я не пойду. — Я повторила медленнее и упёрлась взглядом в землю у её ног.

— Почему ты сказала два раза? — Она чуть улыбнулась, всё ещё держась за ветку.

— Чтобы одна из версий убедила меня. — Я фыркнула и потёрла затёкшую ладонь.

Девушка улыбнулась.

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

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

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

— Да. — Она ответила с едва заметной улыбкой.

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

Она сделала шаг в рощу. Потом обернулась.

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

— Что? — Я подняла голову, услышав своё имя.

— Я вернусь. — Она сказала это без торжественности и слегка сжала пальцы на краю рукава.

Я хотела ответить: «Я знаю». Не знала. Поэтому сказала:

— Хорошо. — Я кивнула, не пытаясь сделать голос увереннее.

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

— Конечно, — пробормотала я. — У неё сопровождение есть. А я остаюсь здесь.

Бабочка исчезла вслед за ней. Я села на траву. Через минуту встала. Прошла к ручью.

Вернулась.

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

EntitySearch.

Пояснение: EntitySearch — функция поиска конкретной сущности в мире по её системным данным или местоположению.

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

Пульс.

Уровень стресса. Любая опасность. Я могла бы знать всё, не задав ни одного вопроса. Именно поэтому не имела права.

— Ненавижу мораль, — сказала я ручью.

Ручей продолжил течь.

— Очень неудобная система ограничений. — Я сказала это ручью и пнула носком маленький камешек.

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

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

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

— Эй! — крикнула я в рощу и уже шагнула с тропы, прежде чем услышала собственный голос.

Ответа не было. Я сделала три быстрых шага к деревьям.

Остановилась.

«Она сказала не идти».

Снова звук. Теперь ветка хрустнула.

— Чёрт. — Я сжала зубы и всё-таки вошла между деревьями.

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

— Что случилось? — Я опустилась рядом с ней так резко, что колено ударилось о влажную землю.

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

— Ветка. — Девушка показала подбородком на низко торчащий сучок позади.

— Покажи. — Я подошла на полшага ближе.

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

HealthParameters.

PainResponse.

TissueRepair.

Пояснение: HealthParameters — раздел состояния тела. PainResponse отвечает за интенсивность и обработку боли. TissueRepair управляет естественным восстановлением повреждённых тканей.

Я уже нашла нужный параметр.

PainResponse.Intensity: 1.0.

Пояснение: значение 1.0 означает обычную, исходно заданную чувствительность к боли без искусственного ослабления или усиления.

Палец завис над цифрой. Можно было поставить 0.2. Даже 0. Она бы перестала чувствовать. Царапина осталась бы, но боль исчезла. Девушка смотрела не на руку. На меня.

— Не надо. — Она подтянула повреждённую руку ближе к себе.

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

— Не надо. — Она сказала это слабее, но отчётливо.

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

Я услышала собственную фразу и сразу поняла, насколько она плохая. Она тоже.

— Изменит. — Девушка посмотрела не на панель, а мне в глаза.

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

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

Я стиснула зубы. На панели светилась единица. Рядом красная линия на её коже казалась слишком яркой.

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

— Да. — Девушка кивнула, прижимая повреждённую руку к груди.

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

В памяти всплыло:

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

И её ответ:

«А мне — выбирать».

Выбирать.

Даже боль. Даже то, что мне кажется бессмысленным. Я закрыла параметр. Панель осталась. Закрыла всю панель. Руки сразу показались бесполезными.

— Хорошо. — Я закрыла панель и убрала обе руки от её предплечья.

Она посмотрела на царапину.

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

Вот это я могла. Не исправлять.

Рассказать.

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

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

— Щиплет. — Она втянула воздух сквозь зубы и осторожно подняла руку из воды.

— Знаю. — Ответ вырвался раньше мысли; я нахмурилась собственному знанию.

— Откуда? — Девушка замерла с мокрой рукой над ручьём.

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

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

Она кивнула. Потом подняла руку ко рту и подула на царапину. Я рассмеялась.

— Что? — Девушка подняла глаза от царапины.

— Ничего. — Я махнула ладонью и не стала объяснять улыбку.

— Ты тоже так делала? — Она подула на царапину ещё раз и посмотрела на меня поверх руки.

Смех исчез.

— Возможно. — Я улыбнулась, но взгляд сам ушёл к воде.

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

— Она всё время была со мной. — Девушка кивнула на фиолетовую бабочку у камня.

— Предательница. — Я прищурилась на насекомое.

— Почему? — Она посмотрела с меня на бабочку.

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

— Она бабочка. — Девушка посмотрела на меня так серьёзно, что спорить стало ещё смешнее.

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

Девушка улыбнулась. Потом стала серьёзной.

— Я придумала. — Улыбка исчезла с её лица; она провела пальцем здоровой руки по мокрому камню.

— Что? — Я замерла, не сразу понимая, к чему относится её фраза.

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

Я не сразу поняла. Потом сердце ударило сильнее.

— Твоё? — Я невольно села на ближайший камень, хотя секунду назад не чувствовала усталости.

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

— И? — Я наклонилась вперёд, упершись локтями в колени.

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

— Нами. — Она произнесла слово, глядя на расходящиеся вокруг пальцев круги воды.

Слово было коротким.

Мягким.

Я повторила про себя.

Нами.

— Почему? — Я повторила имя про себя и посмотрела на воду.

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

Я нахмурилась.

— Откуда ты знаешь? — Я перестала улыбаться и чуть подалась к ней.

Она тоже нахмурилась.

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

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

Ассоциации.

Слова.

Я могла бы открыть LanguageCore и проверить происхождение слова до последнего символа. Даже подняла запястье. Потом остановилась. Если первое собственное имя Нами начиналось с её внутреннего ощущения, мне не хотелось превращать его в справку из словаря. Достаточно было того, что из тысяч доступных значений именно это выбрала она.

Пояснение: LanguageCore — языковой модуль сознания, содержащий слова, значения и связи между ними; он даёт Нами способность пользоваться языком, но не определяет, какое имя она обязана выбрать.

— Тебе нравится? — спросила она и впервые после произнесённого имени отвела взгляд, будто мой ответ всё-таки мог задеть.

Самый опасный вопрос. Потому что я знала, что мой ответ уже имеет для неё вес. Я не хотела, чтобы он стал разрешением.

— Важно, что тебе нравится. — Я осторожно разжала пальцы на коленях.

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

— А тебе? — Нами снова посмотрела прямо на меня.

Я помедлила.

— Да. — Я выдохнула и позволила себе улыбнуться.

Она улыбнулась.

— Хорошо. — Нами улыбнулась чуть шире.

— Но даже если бы не нравилось—

— Я знаю. — Она перебила меня мягко и подняла ладонь.

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

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

Я рассмеялась.

Нами.

Имя быстро начало соединяться с лицом. С её привычкой наклонять голову перед неудобным вопросом. С тем, как она трогала воду. С тем, что не позволила убрать боль. С фиолетовой бабочкой у камня. До этого я постоянно мысленно называла её «девушка». Иногда — «создание». Один раз, к собственному ужасу, «объект». Теперь эти слова вдруг стали тесными.

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

Она напряглась. Я заметила.

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

— Что изменится? — Нами не приблизилась к интерфейсу, пока не услышала ответ.

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

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

Я открыла EntityRegistry.

Пояснение: EntityRegistry — системный реестр всех зарегистрированных сущностей мира, где хранятся их постоянные идентификаторы и основные данные.

Перед нами появилась строка:

EntityID: SENTIENT_0001. DisplayName: undefined. CreatorEntity: Aki. AutonomyStatus: active. Rationality: balanced.

Пояснение: EntityID — постоянный системный идентификатор. DisplayName — имя, которое система показывает для сущности. CreatorEntity указывает, кто создал объект. AutonomyStatus: active означает, что модуль самостоятельного поведения включён. Rationality: balanced означает, что логическое мышление настроено как сбалансированное и не должно полностью подавлять эмоции.

Нами долго смотрела на CreatorEntity. Я тоже. Почему-то именно сейчас эта строка показалась особенно грубой. Создатель: Аки. Как клеймо производителя.

— Это можно убрать? — спросила она и указала ногтем на строку CreatorEntity, не касаясь поверхности.

— Полностью — не знаю. — Я нахмурилась и не стала открывать скрытые уровни без необходимости.

— Почему? — Нами нахмурилась у строки CreatorEntity.

— Система хранит происхождение. — Я произнесла это тише, чем собиралась.

Она коснулась воздуха возле строки.

— А имя можешь написать? — Она перевела взгляд на пустое поле DisplayName.

— Да. — Я открыла поле DisplayName.

— Напиши. — Нами кивнула один раз, без колебаний.

Я открыла поле.

DisplayName: Nami.

Пояснение: DisplayName — отображаемое имя сущности в интерфейсе. Здесь система впервые закрепляет выбранное самой девушкой имя «Нами».

Палец завис над Apply. Я посмотрела на неё.

— Ты уверена? — Я задержала палец над Apply и уже по её лицу поняла, что вопрос лишний.

Она посмотрела на меня почти с раздражением.

— Да. — Нами кивнула с заметным раздражением на мою перестраховку.

— Хорошо. — Я нажала Apply.

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

Nami.

Просто четыре буквы латиницей в системном интерфейсе. Ни вспышки. Ни звука. Ни изменения мира. Но я почувствовала, как внутри что-то сместилось. Система обновила запись.

Identity binding confirmed.

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

Нами прочитала.

— Всё? — Нами наклонилась к обновившейся строке.

— Всё. — Я сжала ладонь в кулак и остановила поток окон.

— Теперь я официально существую? — Она усмехнулась, но пальцы на краю панели замерли.

Я хотела пошутить. Не смогла.

— Ты существовала до строки. — Я ответила сразу и сама удивилась твёрдости голоса.

Она посмотрела на меня.

— Тогда зачем она? — Нами повернулась ко мне.

— Чтобы система догнала. — Я улыбнулась и наконец закрыла реестр.

Нами улыбнулась. Фиолетовая бабочка поднялась с камня и пролетела между нами. На секунду закрыла собой строку CreatorEntity. Потом ушла вверх, к просвету между ветвями. Я закрыла интерфейс. Царапина на руке Нами всё ещё была красной. Мне всё ещё хотелось убрать боль. Но теперь передо мной стояло не моё безымянное создание, которому я выдала набор свойств. Передо мной была Нами.

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

Интерлюдия II. Мёртвые зоны Архива

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

OriginTag: CoCreated.

Пояснение: OriginTag хранит информацию о происхождении объекта. CoCreated означает, что объект создан совместным решением нескольких участников.

Она приблизила строку двумя пальцами.

— Совместно, — произнесла Эйра и медленно провела ногтем под словом, будто могла стереть его одним движением.

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

EntityID: VIOLET_MARKER_01.

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

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

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

Недели.

Месяцы.

Или секунды. В Архиве не было нормального времени. Она разбивала экраны. Ждала их восстановления. Собирала обломки данных. Строила из фрагментов запросы. Каждый путь заканчивался одинаково.

Restricted.

Unavailable.

Observer access only.

Пояснение: Observer access only — режим, при котором пользователю разрешено только наблюдать за данными, но не изменять их и не взаимодействовать с ними напрямую.

Слово Observer она ненавидела сильнее остальных.

Наблюдатель.

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

Держала.

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

— Ну же. — Эйра прижала ладонь к барьеру сильнее.

Экран сопротивлялся.

— Ты уже ломался. — Она наклонилась к белой ряби почти вплотную.

Рябь усилилась. На поверхности возникла тонкая линия. Не трещина. Скорее нарушение изображения. Один пиксельный шов. Эйра убрала ладонь. Линия исчезла. Она снова поставила запись на паузу. Бабочка застыла в воздухе между Аки и Нами.

Фиолетовая.

Неправильная.

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

ObjectTrace: VIOLET_MARKER_01.

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

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

Ничего.

Она ударила ладонью. По массиву разошлось кольцо данных. Фиолетовая линия вспыхнула на секунду. И вместе с ней — ещё одна структура. Едва заметная.

BackgroundProbabilityLayer.

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

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

Ветер. Движение мелких животных. Вариации температуры. Случайные траектории. Не сами события. Вероятности событий. Эйра коснулась ближайшей точки. Система ответила:

Write access denied.

Пояснение: Write access denied — система запрещает напрямую изменять выбранные данные.

— Конечно. — Эйра коротко усмехнулась и постучала ногтем по запрету.

Она ударила по точке ногтем.

Ничего.

Другую.

Ничего.

Третью.

Белая рябь. Эйра нахмурилась.

Повторила.

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

WindDirection = east.

Не могла приказать птице взлететь. Не могла заставить Нами сделать шаг. Но трещина оставляла шум. А шум попадал в расчёт. Не команда.

Помеха.

Эйра выбрала маленький сектор карты. Коснулась границы.

Надавила.

Белый шум прошёл через палец. На экране рядом с ней запись мира Аки дёрнулась. В роще один лист сорвался с ветки. Обычное событие. Настолько обычное, что Эйра сначала решила, что ничего не произошло. Она вернула запись на несколько секунд назад. Повторила воздействие. Лист не упал. Вместо этого ветка качнулась. Эйра замерла. Третья попытка. Птица рядом с веткой резко повернула голову.

Четвёртая.

Ничего.

Пятая.

Слабый порыв ветра прошёл по траве против основного потока. Эйра рассмеялась.

Тихо.

Почти беззвучно.

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

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

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

Маяк.

Не потому что бабочка что-то передавала, а потому что система сама старательно сообщала, где она. Эйра провела пальцем вдоль линии. На экране бабочка перелетела через ручей. Карта обновилась. Точка переместилась.

— Нашла. — Эйра провела пальцем вдоль фиолетовой линии и остановила его на текущей точке.

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

NoisePropagationEstimate: ~0.5 m. [read-only]

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

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

Write access denied.

Пояснение: Write access denied — система запрещает Эйре записывать новые значения в мир Аки или менять существующие параметры.

Эйра усмехнулась.

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

Она действительно не меняла параметр. Не могла. Вместо этого ударила по самой границе слоя — по месту, где повреждение Архива соприкасалось с расчётом мира. Трещина появилась.

Тонкая.

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

Наклонилась.

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

— Вот так, — прошептала Эйра. — Не исправляй. Ты же теперь учишься.

На экране Аки закрыла панель. Эйра улыбнулась шире. Ей не хотелось разрушить мир быстро. Быстрое разрушение было слишком простым. Аки нажала бы кнопку.

Откатила.

Пересобрала.

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

Нет.

Гораздо интереснее было другое. Заставить её сомневаться. Сначала в ветре. Потом в животных. Потом в собственных решениях. Эйра посмотрела на Нами. Та сидела у воды и разглядывала царапину.

Empathy_Level: 100%.

Строка всплыла сама, как навязчивая мысль. Эйра приблизила её.

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

Она перевела взгляд на вероятностную карту.

Животные.

Ветер.

Шум.

Страх.

Миллионы маленьких процессов, которые Нами могла воспринимать сильнее, чем предполагала её создательница. Эйра не могла прикоснуться к девушке. Не могла изменить её код. Не могла сказать ей ни слова. И не собиралась. Ей хватало мира вокруг. Если дверь не открывается, не обязательно ломать замок. Иногда достаточно расшатать стены. Эйра поднялась. Фиолетовая линия снова двинулась по Архиву. Бабочка куда-то летела. Эйра пошла следом. Мёртвые экраны отражались в её коже серыми прямоугольниками.

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

Глава 10 Перегрузка эмпатии

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

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

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

— Ничего. — Я уже поднимала запястье, не глядя на неё.

Я открыла AirFlow.

Пояснение: AirFlow — раздел системы, управляющий потоками воздуха, направлением ветра, давлением и связанными параметрами среды.

Основное направление было стабильным.

Turbulence: moderate. RandomSeed: stable. PressureMap: nominal.

Пояснение: Turbulence показывает степень хаотичности движения воздуха. RandomSeed: stable означает, что генератор случайных вариаций работает без смены исходного значения. PressureMap: nominal сообщает, что распределение давления находится в нормальном диапазоне.

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

Я закрыла окно.

— Что? — Я закрыла окно и сделала вид, что не понимаю претензии.

— Говоришь «ничего» и сразу проверяешь. — Она кивнула на исчезающий интерфейс.

— Потому что иногда «ничего» требует диагностики. — Я развела руками, защищая аргумент, который уже звучал хуже, чем минуту назад.

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

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

— Ты сделала Rationality balanced. — Нами бросила на меня короткий взгляд и едва заметно улыбнулась.

Я остановилась. Она тоже.

— Ты это запомнила? — Я невольно сбавила шаг.

— Ты показывала реестр. — Она пожала плечами.

— Там было много строк. — Я нахмурилась, вспоминая собственную панель.

— Мне было интересно. — Нами провела ладонью по верхушкам травы.

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

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

Нами посмотрела на траву.

— А мне понравилось. — Нами подставила лицо следующему слабому порыву.

— Почему? — Я повернулась к Нами.

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

— Вот именно. — Я подняла палец, но в её выражении уже увидела будущий ответ.

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

— В разумных пределах. — Я услышала себя и сразу поморщилась.

Она засмеялась. Я поняла, что сама подставилась.

— Не начинай. — Я пригрозила ей пальцем.

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

— Ты собиралась. — Я пошла рядом, не сводя с неё подозрительного взгляда.

— Откуда ж ты знаешь? — Она повернула голову.

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

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

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

— За что? — Нами тоже остановилась, но не приблизилась.

— За тон. — Я провела ладонью по затылку.

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

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

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

— Что случилось? — спросила Нами и резко подняла голову вслед стае.

— Не знаю. — Я уже раскрывала диагностические окна.

На этот раз я даже не пыталась сказать «ничего». Открыла BiotaDiagnostics.

Пояснение: BiotaDiagnostics — диагностический раздел, показывающий состояние и поведенческие показатели живых существ.

На экране появились десятки сигналов.

ThreatResponse spike.

ThreatResponse spike.

ThreatResponse spike.

Пояснение: ThreatResponse spike означает резкий кратковременный скачок реакции на угрозу — организм внезапно воспринимает ситуацию как опасную.

— Они чего-то испугались. — Я провела пальцем по вспыхнувшим сигналам.

— Чего? — Нами всматривалась в рощу.

Я развернула карту.

PredatorPresence: none. AcousticThreat: none. EnvironmentalHazard: none.

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

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

Нами нахмурилась.

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

— Да. — Я нехотя кивнула, продолжая искать причину.

— Значит, что-то есть. — Она сказала это спокойно и снова посмотрела на мечущихся птиц.

Простая логика. Очень неприятная. Я расширила диагностику.

Ничего.

Ветки.

Температура.

Давление.

Хищники.

Запахи.

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

— Что? — Я сразу заметила её ладонь на груди и шагнула ближе.

— Не знаю. — Нами нахмурилась, прислушиваясь к ощущению.

— Болит? — Я уже тянулась к диагностике.

— Нет. — Она покачала головой и вдохнула глубже.

Она вдохнула глубже.

— Как будто… тесно. — Нами прижала ладонь к грудине и сделала короткий вдох.

Я сразу повернулась к ней.

— Где? — Я сразу шагнула ближе.

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

— Это не ответ. — Я уже листала показатели.

— Я знаю. — Нами зажмурилась и сжала губы.

Она закрыла глаза. Я уже открыла HealthParameters. Пульс был выше обычного. Дыхание ускорено. Температура нормальная. Никаких повреждений.

— Нами. — Я произнесла её имя тише и опустилась рядом.

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

Я замолчала. Она сидела неподвижно, ладони лежали на коленях. Потом резко посмотрела в сторону рощи.

— Лиса. — Она вдруг повернула голову к роще.

— Что лиса? — Я проследила за её взглядом.

— Ей страшно. — Нами обхватила себя за локти, словно холод прошёл по коже.

Я проверила. Лисица находилась метрах в ста пятидесяти. За деревьями. Нами не могла её видеть. Но диагностика показывала:

StressLevel: elevated. ThreatResponse: unstable.

Пояснение: StressLevel: elevated означает повышенное состояние стресса. ThreatResponse: unstable — реакция на угрозу срабатывает нестабильно, без очевидной внешней причины.

У меня похолодели пальцы.

— Ты её чувствуешь? — Я застыла с открытой диагностикой.

Нами поморщилась.

— Не как себя. — Нами поморщилась и надавила пальцами на висок.

— А как? — Я присела, пытаясь поймать её взгляд.

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

Она открыла глаза.

— И птицы. — Нами вскинула глаза на ветви.

В этот момент в траве справа от нас что-то метнулось.

Заяц.

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

— Нами! — Я бросилась к ней и едва не поскользнулась на влажной траве.

Я опустилась перед ней.

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

Она зажмурилась.

— Слишком много. — Нами сжала пальцы у висков.

— Что именно? — Я заставила голос звучать тише.

— Они все… — Она оборвала себя и судорожно втянула воздух.

Она оборвала фразу.

Вдохнула.

Ещё раз. Не помогло. Я открыла её внутреннюю диагностику.

Empathy_Level: 100%. EmpathicInputLoad: 164%. AffectiveTelemetryBridge: active. PerceptionFilter: bypassed by legacy dependency.

Пояснение: Empathy_Level показывает установленную чувствительность к состояниям других существ. EmpathicInputLoad — текущую нагрузку от поступающих эмоциональных сигналов; 164% означает перегрузку выше расчётного безопасного уровня. AffectiveTelemetryBridge — скрытая связь эмпатии с системными данными о состоянии живых существ. PerceptionFilter обычно пропускает через неё только сигналы тех, кого человек реально видит, слышит или касается; здесь фильтр оказался обойдён старой зависимостью Soul_Synthesis_Legacy.

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

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

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

Я застыла.

— Чёрт. — Я замерла над диагностикой, увидев цифру.

Нами услышала.

— Что? — Нами попыталась сфокусироваться на моём лице.

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

— Какая? — Нами с трудом сфокусировала взгляд на строках.

Я показала. Она прочитала.

— Это ты сделала. — Она коснулась пальцем строки Empathy_Level и сразу убрала руку.

Не обвинение.

Факт.

От него стало хуже.

— Да. — Я кивнула и почувствовала, как горло сжалось.

— Сто. — Нами произнесла число почти без голоса.

— Да. — Я повторила тише и опустила глаза.

— Почему сто? — Она подняла на меня мокрые от слёз глаза.

Я уже отвечала на этот вопрос себе. Потому что увидела красивую цифру. Потому что решила, что эмпатия равна добру. Потому что максимальное казалось лучшим.

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

Нами коротко засмеялась. Смех вышел болезненным.

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

Я опустила глаза. Панель всё ещё висела между нами.

Empathy_Level: 100%.

Один ползунок. Одно движение. Я могла снизить.

Восемьдесят.

Шестьдесят.

Сорок.

Сразу стало бы легче. Палец поднялся. Нами увидела.

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

— Я могу уменьшить. — Я подняла палец к ползунку, но не коснулась.

— Нет. — Она повторила жёстче, не отводя взгляда от ползунка.

— Это не наказание, тебе плохо. — Я говорила быстро и сама слышала в голосе панику.

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

— Нами, нагрузка выше… — Я попыталась показать на цифру.

— Не трогай меня. — Она сказала громче и отодвинулась на ладонь назад.

Я отдёрнула руку. Панель осталась висеть между нами.

— Хорошо. — Я остановила руку и с усилием разжала пальцы.

Слово далось через зубы.

— Хорошо. Не трогаю. — Я прижала обе руки к собственным коленям.

Я закрыла её параметры. Вместо этого открыла среду. Если не её, то источник.

Животные.

Ветер.

Что угодно. Нужно было найти причину. Я стала проверять всё сразу.

BiotaDiagnostics.

AirFlow.

Physics.

Environment.

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

— Тихо, — сказала я. — Сейчас.

Кому я говорила?

Ей?

Системе?

Себе?

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

Открыла.

Nothing to report.

Пояснение: Nothing to report — система не фиксирует диагностически значимых ошибок или событий в выбранном участке.

— Какое ещё «ничего»? — прошептала я и резко приблизила жёлтый всплеск на карте.

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

— Они боятся. — Нами согнулась сильнее.

— Я знаю. — Я осторожно приблизила ладонь к её плечу.

— Нет. — Нами открыла глаза и отстранилась от моей руки.

Она открыла глаза. В них стояли слёзы.

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

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

— Дыши. — Я всё-таки положила ладонь ей на плечо только после того, как она не отстранилась.

— Это не моё. — Нами вцепилась пальцами в ткань платья у груди.

— Что? — Я наклонилась ближе, стараясь расслышать.

— Страшно не мне. — Она с усилием разжала пальцы.

Слёзы уже текли по щекам, но лицо оставалось растерянным, почти злым.

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

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

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

Нами напряглась.

— Не меня. — Нами сразу схватила меня за запястье.

— Не тебя. — Я накрыла её пальцы своей ладонью.

— Обещай. — Она не отпускала руку.

Я посмотрела ей в глаза.

— Обещаю. — Я выдержала её взгляд и только потом осторожно высвободила запястье.

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

С каждым вдохом обещание становилось тяжелее. Я начала искать ошибку. И не нашла. Ни одной. Система утверждала, что мир исправен. Ветер был допустимым. Животные — живыми. Случайность — разрешённой. Никакого вторжения. Никакого внешнего воздействия. Никакой причины. Только последствия. А я никогда не умела долго смотреть на последствия, если рядом была кнопка, способная их остановить.

Глава 11 Возврат к диктатуре

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

Она легла на бок в траве, подтянув колени. Я проверяла среду снова и снова.

Ничего.

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

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

Я обернулась. Нами смотрела на меня с земли.

— Что? — Я обернулась через плечо, но не закрыла диагностические окна.

— Не надо больше проверять. — Она приподнялась на локте и посмотрела на повторяющиеся панели.

— Я почти нашла. — Я не отрывала глаз от карты.

Это была ложь. Она поняла.

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

— Я найду. — Я сдвинула PressureMap в сторону и открыла его снова.

— Ты двигаешь одни и те же окна. — Нами проследила пальцем мой повторяющийся жест.

Я посмотрела на панель. Она была права. Я уже третий раз открыла PressureMap.

— Это называется перепроверка. — Я закрыла одно окно чуть резче, чем требовалось.

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

Я резко закрыла окно.

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

Нами ничего не ответила. Где-то за ручьём стая мелких животных — я даже не успела определить каких — сорвалась с места. Нами зажмурилась. Её пальцы вцепились в ткань у колен. На внутренней диагностике вспыхнуло:

EmpathicInputLoad: 212%.

Пояснение: EmpathicInputLoad показывает объём чужих эмоциональных сигналов, которые одновременно воспринимает Нами. Значение 212% означает более чем двукратное превышение расчётной нормы.

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

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

Нами открыла глаза.

— Что? — Нами приподнялась, опираясь на локоть.

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

Я развернула World.Root.

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

Красные предупреждения появились сразу.

Global modifications affect all dependent systems.

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

Я нажала продолжить. Нами приподнялась на локте.

— Аки. — Нами позвала меня снова, уже громче.

— Я не трогаю тебя. — Я ответила слишком быстро, уже разворачивая World.Root.

— Что ты делаешь? — Нами попыталась подняться и упёрлась ладонью в траву.

— Убираю причину. — Я не повернулась; если бы увидела её лицо, могла бы остановиться.

Я не знала причины. Я убирала возможность причины существовать. Открыла SafeMode.

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

Кнопка была серой. Я никогда раньше её не использовала.

World.Debug.SafeMode = true.

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

— Аки, подожди. — Нами вытянула руку в мою сторону, но между нами уже висел интерфейс.

Я услышала. Не остановилась.

ProbabilityNoise: 0%.

Пояснение: ProbabilityNoise отвечает за мелкие случайные отклонения в вероятностных процессах. Значение 0% полностью убирает их, делая события максимально предсказуемыми.

Ветер выровнялся.

Сразу.

Как натянутая нить. Трава легла в одну сторону. Потом я отключила турбулентность.

AirFlow.Turbulence = 0.

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

Листья перестали дрожать. Даже звук рощи изменился. Стал ровнее.

Тише.

Нами смотрела на меня. Я видела.

Продолжала.

Fauna.ThreatResponse.GlobalClamp = 0.05.

Пояснение: GlobalClamp ограничивает максимальную силу реакции животных на угрозу. Значение 0,05 оставляет только слабую реакцию страха, не позволяя ей резко усиливаться.

Жёлтые точки на карте начали зеленеть.

Одна.

Другая.

Десятая.

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

EmpathicInputLoad: 146%.

Потом 103%.

82%.

Она вдохнула глубже. Плечи опустились. Вот он.

Результат.

Работает.

Слово вспыхнуло во мне почти тем же восторгом, что когда-то после первого увеличенного валуна.

Работает.

Я нашла способ. Я спасла её.

— Ещё немного, — сказала я и почти ласково провела пальцем по зелёнеющим индикаторам.

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

World.Debug.AnomalyPurge = aggressive.

Пояснение: AnomalyPurge — режим жёсткой отладки, который ищет нестандартные, повреждённые или не укладывающиеся в базовые правила объекты и удаляет их из активного мира. Значение aggressive означает, что система действует без мягкой карантинной проверки.

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

VIOLET_MARKER_01 — persistent custom entity. Trace integrity: unstable. Recommended action: remove from active world.

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

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

— Нет… — выдохнула я и на секунду отдёрнула руку.

Позади Нами снова судорожно втянула воздух. На панели EmpathicInputLoad дёрнулся вверх. Не сильно. Достаточно.

Я нажала.

VIOLET_MARKER_01: removed.

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

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

— Не надо. — Нами сказала это с земли и сжала пальцы у груди.

Я не услышала смысл. Только звук.

WeatherVariability: locked.

Пояснение: WeatherVariability: locked фиксирует погодные параметры и запрещает автоматическим процессам самостоятельно менять ветер, влажность, температуру и другие характеристики.

Облака остановились. Не резко. Сначала их движение стало медленнее. Потом почти незаметным. Потом исчезло совсем. Я снизила фоновые колебания температуры. Убрала случайные изменения влажности. Синхронизировала движение воздушных потоков. В каждом окне красный или жёлтый индикатор становился зелёным. Это успокаивало.

Очень.

Слишком.

— Аки. — Нами подошла ближе, всё ещё заметно бледная.

На этот раз голос Нами был ближе. Я обернулась. Она стояла. Немного бледная. Но стояла.

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

Она не ответила. Я сразу проверила.

EmpathicInputLoad: 31%.

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

— Тридцать один, — сказала я и невольно улыбнулась цифре. — Отлично.

Нами смотрела мимо меня. В рощу. Я тоже повернулась. Лиса вышла между деревьями.

Спокойно.

Слишком спокойно. Она увидела нас.

Остановилась.

Раньше тело сразу менялось: мышцы напрягались, уши поворачивались, расстояние оценивалось почти физически. Сейчас лисица просто стояла. Нами сделала шаг к ней. Животное отступило на один шаг.

Медленно.

Без настоящего испуга.

— Что ты с ней сделала? — спросила Нами и медленно сделала ещё один шаг к лисице.

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

— Зачем? — Нами не отрывала глаз от лисы.

— Ты её чувствовала. — Я показала на уже зелёный индикатор StressLevel.

— Я спросила не это. — Нами повернулась ко мне; голос стал ровнее, чем выражение лица.

Я закрыла карту.

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

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

Идеально сведённая. Без лишнего шума.

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

Нами опустила ладонь в воду.

— Она одинаковая. — Нами медленно провела пальцами под водой и нахмурилась.

— Что? — Я наклонилась к воде, пытаясь увидеть разницу её глазами.

— Вода. — Она подняла мокрую ладонь и посмотрела, как капли стекают почти параллельно.

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

— Зачем? — Нами подняла мокрую ладонь и нахмурилась.

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

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

— А ветер? — Нами вытерла ладонь о ткань платья и подняла лицо.

— Тоже. — Я кивнула, не отводя взгляда от её лица.

— Животные? — Она бросила взгляд на лисицу.

— Временно. — Я сказала это и сама услышала, как неопределённо прозвучало слово.

— Облака? — Нами посмотрела вверх.

Я посмотрела вверх. Серое облако висело на одном месте.

— Тоже временно. — Я тоже подняла голову на застывшее серое пятно.

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

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

Я не ответила сразу. Этого оказалось достаточно.

— Аки? — Она медленно повернулась ко мне.

— SafeMode пометил её след как нестабильный. — Я заставила себя не использовать слово «просто». — Я запустила очистку.

Нами замерла.

— Ты её удалила? — Она произнесла вопрос очень тихо.

— Система удалила активную сущность. Шаблон остался. Я могу восстановить…

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

Я закрыла рот.

Она посмотрела на пустое место над водой, где бабочка чаще всего кружила.

— Она была нашей, — сказала Нами и провела большим пальцем по краю ладони. — Не твоей резервной копией.

Мне нечего было ответить. Именно поэтому я снова потянулась к цифрам — и остановила руку на полпути.

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

Мгновенное.

Несправедливое.

Мне пришлось буквально проглотить его.

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

— Понимаю. — Нами коротко кивнула.

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

— Я видела. — Она провела ладонью по лицу.

— Ты едва могла… — Я запнулась, вспоминая её на земле.

— Я была там, Аки. — Нами подошла ближе и ткнула пальцем себе в грудь.

Я замолчала. Она подошла ближе.

— Это происходило со мной. — Она оставила ладонь на груди, удерживая мой взгляд.

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

— Нет. — Нами покачала головой и отступила на полшага.

Она сказала тихо. Но слово остановило меня сильнее крика.

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

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

— Ты тронула всё остальное. — Она опустила руку и посмотрела на меня почти устало.

Я оглянулась. Мир был спокоен.

Безопасен.

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

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

Нами посмотрела на меня.

— До чего? — Нами чуть наклонила голову.

Я не ответила.

— До тех пор, пока мне не станет лучше? — Она указала на себя, но взгляд оставался на мне.

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

— А если не найдёшь? — Нами сделала ещё полшага ближе.

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

— Ты не знаешь. — Нами медленно покачала головой.

— Я разберусь. — Я стиснула зубы.

— Ты не знаешь. — Она повторила тише, но жёстче.

В её голосе впервые появилось настоящее раздражение. Не исследовательское. Не мягкое. Моё тело отреагировало моментально. Мне захотелось доказать. Показать логи.

Цифры.

До и после. Объяснить, что я сделала объективно правильную вещь. Что человек с перегрузкой двести двенадцать процентов не имеет права требовать от меня бездействия.

«Не имеет права».

Мысль была настолько отвратительной, что я замерла. Нами увидела что-то на моём лице.

— Что? — Нами заметила моё выражение и нахмурилась.

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

Она усмехнулась без улыбки.

— Опять. — Нами усмехнулась без улыбки и отвела взгляд.

Я закрыла все окна. Одно за другим. World.Root погас последним. И только тогда наступила настоящая тишина. Не та первая тишина, в которой я когда-то проснулась. Там было страшно, потому что я не знала, существует ли что-нибудь. Здесь было страшнее. Я знала. Знала, сколько всего должно было звучать. И сама заставила это замолчать. Нами прошла мимо меня. Я протянула руку. Не коснулась.

— Куда ты? — Я протянула руку ей вслед, не касаясь.

Она остановилась спиной ко мне. Несколько секунд молчала.

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

Фраза ударила неожиданно сильно. Я почувствовала, как внутри сразу поднимается паника.

— Нами… — Я шагнула вперёд.

— Нет. — Нами подняла ладонь, останавливая мой шаг.

Она повернулась. Глаза были сухими. Это почему-то оказалось хуже слёз.

— Ты обещала не трогать меня. — Она развернулась, и сухие глаза оказались тяжелее любой истерики.

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

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

Я открыла рот.

Закрыла.

Нами посмотрела на неподвижные деревья.

— Я хочу, чтобы ты вернула всё. — Она сказала это без повышения голоса и расправила плечи.

— Сейчас? — Я машинально подняла запястье.

— Да. — Нами кивнула без колебаний.

— Ты только что… — Я указала на место, где она лежала.

— Я знаю, что со мной было. — Нами не посмотрела туда.

— А если начнётся снова? — Мои пальцы зависли у интерфейса.

— Тогда начнётся. — Она выдохнула и не отвела взгляда.

— Это не ответ. — Я покачала головой.

Она резко повернулась ко мне.

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

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

Спасибо за чтение

Вернуться к книге