Обложка Программист в средневековье

Программист в средневековье

Олег

0% прочитано
Стандартный
Олег

Программист в средневековье

Глава 1

Runtime Error в поле

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

Артем навалился плечом на ржавый плуг. Деревянные рукояти впились в мозоли, успевшие натереться за те несколько месяцев, что он провел в этом теле. Эта оболочка — чужая, худощавая, с вечно дрожащими пальцами — не была создана для тяжелого труда. Его настоящее тело осталось где-то по ту сторону бутылки с паленой водкой, в квартире с запахом перегретого системника и недоеденной пиццей. Здесь же царили лишь сырость Трущоб Нижнего Города и бесконечное ощущение неправильности происходящего.

Но страшнее рабства было другое: мир вокруг него двоился.

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

// Sector: Agriculture_Field_042 // Status: Degraded // Soil_Fertility: 0.12 // Water_Content: 0.05 (Critical) // Error: [LACK_OF_NUTRIENTS] at address 0x004F21

— Дебил, — прошептал Артем, смахивая пот со лба. — Ты даже переменную нормально объявить не можешь.

Он видел, как каждое движение плуга вызывает в эфире крошечные всплески. Земля не была просто почвой — она представляла собой объект с набором свойств, которые кто-то крайне лениво и криво «захардкодил». Каждый раз, когда лемех врезался в грунт, вызывалась функция {dig_soil}, возвращавшая значение с чудовищным количеством лишних итераций. Система буквально задыхалась от неэффективности.

Весь этот мир был написан одним гигантским, неоптимизированным легаси-кодом. И самое ироничное заключалось в том, что местный «админ» считал себя богом.

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

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

Артем видел этот код:

On_Contact(object, impurity): if (object == "Self"): impurity.delete()

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

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

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

Function: RapidGrowth(seed_id, duration) { for (int i = 0; i < duration; i++) { seed.scale += 0.5; seed.color = "bright_green"; seed.health = MAX; } }

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

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

Артем смотрел на этот «урожай» и чувствовал, как внутри закипает профессиональное отвращение.

— Боже мой, какая ужасная оптимизация, — пробормотал он.

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

— Ты что-то сказал, раб? — Вальтер обернулся.

Его взгляд был холодным. Для него Артем был частью ландшафта — объектом класса «скот» с низким приоритетом.

Артем быстро опустил голову, втягивая шею в плечи.

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

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

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

Он сосредоточился.

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

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

Он зацепился взглядом за строку в эфирном логе, оставшуюся после заклинания Вальтера:

temp_nutrient_level = 100;

Артем зажмурился, представляя, как он не пишет текст, а «дописывает» строку. Он не знал, где в этом теле находится «порт» для вывода, но интуитивно почувствовал: его сознание — это терминал.

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

temp_nutrient_level = 101;

Он представил, как эта единица вклинивается в код, подобно курсору между символами. Это не был призыв заклинания — это была попытка изменить состояние объекта.

В тот же миг между лопатками прошил резкий укол, словно от удара током. В эфире что-то треснуло.

— Ошибка типа данных, — прошептал Артем. — Черт, не учел, что это read-only.

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

Артем отпрянул. В эфире перед ним развернулось сообщение:

**Runtime Error: StackOverflowException. Address 0x004F21 - Invalid operation.**

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

Сердце заколотилось о ребра. Это было больше, чем чудо. Это был root-доступ.

— Ты.

Голос надсмотрщика ударил по затылку, как пощечина.

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

Артем видел этот скрипт: простая функция amplification с коэффициентом x4.0.

— Что ты там высматривал, скотина? — Бронн подошел ближе, обдавая запахом кислого эля и старого пота.

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

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

— Ты смотрел странно, — Бронн сузил глаза. — Глаза у тебя бегают, как у крысы, нашедшей дыру в амбаре.

Надсмотрщик наклонился. Бронн не был магом, но он был инструментом — интерфейсом, через который аристократы управляли этим «человеческим скотом».

— В этих землях за лишнее любопытство вырывают язык, — Бронн медленно развернул плеть. — Или делают тебя удобрением. Чтобы ты не отвлекался, я напомню тебе твой статус.

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

If (hit_target == true) { apply_pain(intensity: HIGH, type: BURNING); log_event("punishment_delivered"); }

Синтаксис был настолько примитивным, что Артема почти стошнило от жалости к этому миру. Весь этот порядок, вся эта власть держалась на костылях и плохом коде.

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

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

Он видел лог:

**User: Overseer_Bronn -> Action: Punish_Slave** **Result: Success** **Duration: Temporary_Agony**

Это была просто функция. Его боль была параметром в чужом скрипте.

Бронн довольно хмыкнул и свернул плеть.

— Продолжай пахать. Если еще раз увижу, что ты зависаешь, — в следующий раз я попрошу лорда Вальтера зафиксировать тебя в положении «стоя» на неделю.

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

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

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

Он снова посмотрел на поле. Поверх грязи, над горизонтом, где возвышались белые шпили Столицы, висел огромный, едва заметный символ ошибки. Весь этот мир был одним большим Runtime Error.

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

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

Глава 2

Детерминизм и грязь

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

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

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

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

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

— Какая такая судьба, дед? — отозвался Артем механически, не отрываясь от созерцания кода. — Просто причинно-следственные связи. Событие А вызывает событие Б.

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

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

— Кто-то же должен был написать этот чертеж, — заметил Артем.

— Бог, — старик просто пожал плечами. В этом жесте было столько безнадежности, что Артему стало не по себе. — Или те, кто выше нас. Те, кто владеет Истинным Словом. А мы — лишь переменные, которые даже не знают о своем статусе.

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

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

Артем присмотрелся. Каждое движение ее пальцев генерировало короткий всплеск.

«Отец наш, что в небесах...» — слова были неразборчивы, но структура проявилась отчетливо.

Это был запрос. Чистый, как слеза, HTTP-запрос к высокоуровневому API.

«GET /prayer/mercy?userId=peasant_4402&faith_level=high»

И ответ приходил мгновенно, но оставался стандартным.

«HTTP 204 No Content».

Статус-код означал: запрос принят, но ничего не произошло. Тело ответа пусто. Никакого чуда, никакой помощи, никакой измененной переменной. Женщина просто отправляла запрос в пустоту, получая в ответ формальное подтверждение приема.

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

«While (true) { pray(); wait_for_divine_intervention(); }»

Бесконечный цикл без условия выхода.

— Дед, — Артем открыл глаза. — А что будет, если кто-то просто... перестанет просить?

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

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

Артем не ответил. Он смотрел на свои пальцы, пытаясь понять, что в этом мире считается «свободным действием». Если всё захардкожено, значит, свобода — это либо ошибка в коде, либо доступ к консоли администратора.

Он осторожно потянулся к эфиру.

«Если я смогу найти переменную, отвечающую за мое положение...» — подумал он.

Он увидел ее. Собственный статус висел в воздухе рядом с именем, словно всплывающее окно в IDE.

«class Human: name: "Artem" social_class: "slave" owner: "Lord_Walter" access_rights: null»

Рука Артема дрогнула. Он попытался коснуться слова «slave» и заменить его на «citizen».

В тот же миг эфир вспыхнул алым:

«Permission Denied: Insufficient privileges. You do not have write access to this object».

Ответа не последовало. Просто холодный, бездушный отказ системы.

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

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

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

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

— Не ищи трещины в стене, парень. Стены здесь нет. Есть только код.

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

— Кто ты? — спросил Артем.

— Просто тот, кто заметил, что шестеренки крутятся, — мужчина усмехнулся, и эта улыбка не имела ничего общего с радостью. — Ты ведь тоже это видишь, да? Эти нити? Эти инструкции?

Сердце Артема забилось быстрее.

— Ты тоже видишь код?

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

— Это можно изменить, — бросил Артем почти с вызовом.

Бродяга рассмеялся — звук был похож на сухой кашель.

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

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

Артем остался стоять. В голове все еще звенел отказ: «Insufficient privileges».

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

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

«Если я не могу изменить переменную напрямую, может, я смогу воздействовать на неё косвенно?»

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

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

Артем подошел ближе и присмотрелся.

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

«while (beam.isFalling) { beam.position = beam.last_stable_position; }»

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

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

— Значит, ты не идеальный, — прошептал он, глядя на дерево.

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

Он сосредоточился. Не пытаясь переписать код, он попытался «подтолкнуть» переменную.

«If (beam.status == "hanging") { beam.status = "falling"; }»

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

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

Система восстановила состояние из бэкапа.

Артем отшатнулся. Это был не просто баг — это был защищенный сектор. Весь мир был обернут в какой-то глобальный try-catch блок, который ловил любое отклонение и откатывал его.

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

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

Он вспомнил, как в его мире программисты спорили о предопределенности. Сторонники Лапласа утверждали: если знать положение каждого атома во Вселенной и законы физики, можно предсказать будущее.

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

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

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

Если этот мир — программа, то у него должен быть бэкенд. И если бэкенд написан людьми (или чем-то, что мыслит как люди), значит, в нем есть костыли. А костыли — это всегда точка входа.

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

Артем взял ее.

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

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

«This is not a book», — подумал он. — «This is a manual».

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

Артем открыл страницу с молитвой об исцелении.

«Светлый лик, очисти плоть, верни крепость...»

В эфире это выглядело так:

«call_api("healing", {target: "self", intensity: "medium", source: "light_essence"})»

Слишком просто. Слишком предсказуемо.

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

Он посмотрел на рану на плече. Она всё еще ныла.

Исцелить себя по-настоящему он не знал как. Но он знал, как работает логика.

Если запрос на «healing» возвращает ошибку для раба, значит, в запросе вшита проверка прав доступа.

«if (user.class != "noble") return Error_403;»

Артем закрыл глаза и представил структуру запроса.

«А что, если l_log_clear?»

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

«Delete event_log where event_id = "punishment_delivered" and target = "self"»

Резкий толчок в затылке — словно кто-то ударил его по виску. Перед глазами вспыхнула надпись:

«Warning: Modification of history is prohibited. Retrying from last checkpoint...»

Рана не исчезла. Напротив, она запульсировала сильнее, и Артем вскрикнул от боли.

Он тяжело задышал, глядя на дрожащие руки.

— Черт.

Система не просто защищала данные — она имела механизм восстановления. Но он заметил: вспышка предупреждения длилась доли секунды. Это был зазор. Окно.

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

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

— Хорошо, — прошептал он. — Значит, ты не хочешь, чтобы я тебя правил.

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

Он искал комментарии в коде. Потому что любой программист оставляет комментарии.

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

Это было не заклинание.

Это была сноска.

«// TODO: implement proper permission system for lower classes. Temporary fix used for now».

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

— Temporary fix, значит, — сказал он. — Я обожаю временные решения.

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

Он встал, отряхивая грязную рубаху.

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

Сзади старик-Пахарь что-то продолжал бормотать о том, что «всему свое время». Артем не обернулся.

— Время — это тоже переменная, дед. И я только что нашел, где она объявляется.

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

Он не был частью системы. Он был Runtime Error.

И он собирался стать таким большим, что этот мир пришлось бы перекомпилировать с нуля.

Глава 3

Инъекция в поток

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

Для всех вокруг мир был набором серых камней и сточных канав. Для Артема он был слоем полупрозрачных интерфейсов, где каждый объект имел свои свойства. Стены — статические массивы с определенным коэффициентом прочности; лужи — динамические объекты с переменной глубиной. И все это было прошито эфирными нитями, которые местные называли магией, а Артем — системными вызовами.

Он чувствовал, как внутри него пульсирует новая уверенность. Тот самый комментарий «// TODO» в молитвенной книге стал для него чем-то вроде чит-кода. Если архитекторы этого мира оставили заметки на полях, значит, они были людьми. А люди ошибаются. Люди оставляют бэкдоры. Люди забывают закрыть сессии.

***

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

Он смотрел на надсмотрщика.

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

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

Артем видел, как Бронн начал медленно поднимать жезл. В восприятии Артема это выглядело не как жест, а как подготовка запроса. В эфире начал формироваться пакет данных.

Бронн не знал синтаксиса. Он не понимал, что делает. Он просто воспроизводил заученную последовательность действий, которую в его голове представляли как «священную молитву подчинения». Для Артема же это был нелепый, перегруженный функциями скрипт с ужасающей вложенностью.

— Колени! — рявкнул Бронн.

В этот момент он запустил заклинание. Артем увидел, как из жезла вырывается поток данных. Это не была вспышка света — это был каскад инструкций, которые должны были принудительно изменить состояние тел людей, переписав их переменную «свобода воли» на «покорность».

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

Это был цикл. Простой, грубый цикл lоop, который проходил по всем присутствующим в радиусе десяти метров.

«Цель: все объекты класса Человек. Метод: Force_Kneel. Параметр: duration=3600 сек.»

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

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

— Только попробуй, — прошептал Артем.

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

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

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

— Инъекция, — выдохнул он.

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

Он вставил короткий фрагмент кода: `return target_origin;`.

Это было как перенаправить струю воды в обратную сторону с помощью одного маленького зеркала.

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

Произошел Runtime Error.

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

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

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

Вокруг него начали формироваться оковы света — полупрозрачные цепи, которые буквально пригвоздили его руки к земле. Это был побочный эффект: сбой в параметрах привел к тому, что функция «подчинение» превратилась в функцию «фиксация».

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

Артем стоял, не шевелясь. В его голове все еще бежали строки лога.

«Warning: Stack Overflow. Exception in thread "Execution_Chain".»

Он почувствовал легкое головокружение. Его «инъекция в поток» была на первом уровне — он только что понял, что может не просто видеть код, а менять его, если поймать момент.

— Что это было? — пробормотал кто-то из рабов.

Артем не ответил. Он смотрел на Бронна. Тот пытался что-то прохрипеть, но его челюсть была заблокирована эфирным скриптом. Заклинание продолжало работать, поддерживая себя за счет остаточной энергии жезла.

Это был триумф. Чистый, математический триумф.

Артем почувствовал, как внутри него что-то изменилось. Он больше не был просто «ошибкой» в этом мире. Он был тем, кто может эту ошибку создавать.

Но триумф длился недолго.

***

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

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

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

«Событие: Запуск шаблона "Оковы Света" — Статус: Исполнено» «Событие: Попытка доступа к переменной "Статус" — Ошибка: Permission Denied» «Событие: Несанкционированная модификация потока — Тип: Инъекция»

Валериус медленно выпрямился. Его пальцы сжались на рукояти зашифрованного клинка.

— Кто-то перехватил управление, — тихо сказал он.

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

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

Валериус видел, что кто-то только что сделал l'interception. Кто-то вставил свой код в чужое заклинание.

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

— Баг, — произнес Валериус, и в его голосе не было ни тени сочувствия. — Критическая ошибка.

Он закрыл глаза, и перед ним развернулась карта эфирных следов. Там, в Трущобах, висела «грязная» точка — разрыв, который не заживал. Это был шрам на ткани реальности, отпечаток чьего-то вмешательства.

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

Это было опасно. Если этот «баг» останется в системе, он может вызвать каскадное обрушение. Или, что еще хуже, он может создать прецедент.

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

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

Лог выдал ответ.

«Обнаружен активный процесс с неопознанным ID. Текущее состояние: ожидание.»

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

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

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

***

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

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

Он смотрел на свои руки и видел, как вокруг пальцев всё еще вибрируют остатки кода.

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

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

Но теперь он нажал Enter.

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

Он вспомнил, как в своей прошлой жизни он когда-то влез в ядро Linux и случайно уронил весь сервер компании. Его тогда отругали, лишили премии и заставили переписывать документацию. Здесь его не отругают. Здесь его попытаются «удалить».

Артем оглядел площадь. Рабы смотрели на него. Кто-то с надеждой, кто-то с ужасом. Он видел в их глазах то, что видел всегда — осознание собственного бессилия. Они не понимали, что произошло. Для них это было «чудо» или «проклятие».

Для него это был просто рефакторинг.

— Идите отсюда, — сказал он толпе. — Уходите, пока он не разблокировался.

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

Он развернулся и пошел прочь, в глубину переулков.

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

«Шаг 1. Перемещение: x+1. Статус: Скрыт.» «Шаг 2. Перемещение: x+2. Статус: Скрыт.»

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

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

В эфире что-то изменилось.

Фон стал густым. Тяжелым. Словно кто-то начал сканировать пространство вокруг него. Это не была грубая сила Бронна. Это был точный, хирургический запрос.

«WhoAreYou?» — пронеслось в его сознании, хотя никто не произнес ни слова.

Это был не вопрос. Это был системный запрос на идентификацию.

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

Он прижался к сырой стене, стараясь слиться с серостью камня.

«Если ты ищешь меня, — подумал он, — тебе придется спуститься в этот помойный код до самого конца.»

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

Он начал зашумлять.

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

Это было всё равно что завалить датчик движения миллионами ложных срабатываний.

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

Артем слушал этот звук и чувствовал странный азарт.

Это была его первая полноценная отладка.

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

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

Для Валериуса этот переулок не был грязным. Он был набором метаданных.

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

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

«Сейчас, — подумал Артем. — Сейчас он проходит мимо.»

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

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

Артем сосредоточился на самой стене, к которой он прислонился.

Стена имела свойства: «Твердость», «Цвет», «Температура».

Он попробовал временно переопределить свой собственный статус. Не на «citizen», что не сработало в прошлый раз, а на что-то более примитивное.

`self.status = wall.status;`

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

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

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

— Странно, — сказал Валериус. — Здесь должен быть кто-то.

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

Валериус не видел Артема — он видел стену. Но он чувствовал, что что-то не так. Он чувствовал, что стена в этом месте имеет слишком высокую плотность данных.

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

Валериус медленно поднял руку. В его ладони начал формироваться светящийся шар — запуск шаблона «Оковы Света».

Артем понял, что его маскировка работает, но не идеально. Его выдавал «смещение типов». Он был человеком, который притворился камнем, но его внутренние параметры всё еще кричали о том, что он — живой организм.

«Мне нужно что-то, что изменит lокальный контекст, — лихорадочно соображал Артем. — Что-то, что создаст lожную цель.»

Он вспомнил о Key Objects — об эфирном шлейфе, который оставляет любое заклинание. Заклинание Бронна всё еще висело в воздухе где-то на площади, оставляя длинный хвост данных.

Артем не мог дотянуться до него напрямую, но он мог создать «ссылку».

Он сосредоточился на пространстве за спиной Валериуса. Там была сточная канава с медленно текущей жижей.

— `link(this_location, spell_tail_location);` — прошептал он.

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

Это была классическая переадресация.

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

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

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

— Редирект, — медленно произнес инквизитор. — Ты используешь редирект.

В голосе Валериуса больше не было спокойствия. Теперь там была ярость, смешанная с чем-то похожим на профессиональный интерес.

— Никто в этом мире не может перенаправлять потоки, — сказал Валериус. — Только архитекторы. Но ты не архитектор. Ты — ошибка.

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

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

Он больше не мог просто наблюдать. Он больше не мог просто «исследовать».

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

Но баги имеют свойство расти. И если весь этот мир был написан с ошибками, то он собирался стать самой большой ошибкой из всех.

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

В небе над городом, там, где Валериус продолжал свой поиск, эфир всё еще вибрировал.

— Временный фикс, — прошептал Артем, вытирая грязными руками лицо. — Я только что перевел себя из категории «пользователь» в категорию «цель».

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

Артем открыл молитвенную книгу. Теперь он смотрел на неё иначе.

Если Валериус может читать логи, значит, Валериус — это интерфейс. А любой интерфейс можно взломать.

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

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

Он писал эксплойт.

***

Валериус вернулся в свою резиденцию. Он не выглядел разгневанным — он выглядел сосредоточенным.

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

— Несанкционированный доступ. Инъекция в поток. Перенаправление lокального указателя.

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

— Этот объект не просто владеет магией, — прошептал инквизитор. — Он понимает lогику lокальных функций.

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

— Ты — системная ошибка, — сказал Валериус, глядя на зафиксированную точку в Трущобах. — И я сотру тебя.

Он не знал, что в этот самый момент Артем, сидя в подвале, не просто прятался.

Артем искал в коде мира одну конкретную вещь.

Он искал функцию `delete`.

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

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

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

Он был единственным существом в этом мире, которое знало, что всё вокруг — всего лишь текст.

И он собирался lокализовать этот текст.

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

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

И это было его самым слабым местом.

***

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

Инквизитор не знал, что Артем уже понял.

Он не просто понял — он начал экспериментировать.

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

`lock_state = closed;` `key_required = true;`

Он медленно, с усилием, прошептал:

— `lock_state = open;`

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

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

— Runtime Error, — усмехнулся он. — Добро пожаловать в мой отладчик.

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

Но Артем больше не боялся.

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

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

— Пора проверить lокальный стек на переполнение, — сказал он.

И в этот момент вся система вокруг него — фонари, тени, даже дыхание спящего города — начала lихорадочно мигать, словно кто-то только что нажал клавишу Delete на главной консоли реальности.

Глава 4

Паника программиста

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

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

Артем закрыл глаза и вызвал ментальный экран. Перед внутренним взором развернулось полупрозрачное окно с бегущими строками. Это была не консоль, не терминал — скорее, наложение реальности, где физический мир просвечивал сквозь синтаксическую структуру.

Он видел, как вокруг него в режиме реального времени разворачиваются объекты. `wall_material: brick; humidity: 84%; temperature: 12C;` `ground_condition: sludge; toxicity: 0.42;`

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

***

Он замер, когда почувствовав, что эфир вокруг него начинает вибрировать. Это не был его собственный код. Кто-то nearby использовал магию.

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

Сначала это было просто размытое пятно света, но Артем инстинктивно «приблизил» восприятие. Перед его глазами, поверх серой реальности, развернулась структура:

`function ignite_torch(target_object):` `if target_object.is_flammable == true:` `target_object.temperature = 800;` `target_object.state = 'burning';` `else:` `return error_code_04;`

Артем смотрел на этот код, и его пальцы непроизвольно задвигались, словно он печатал на невидимой клавиатуре. Он видел каждую строку, каждую точку с запятой, каждую условную конструкцию. Это было как смотреть на исходник чужого сайта через «Просмотр кода страницы» в браузере.

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

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

— Черт, — прошептал он.

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

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

— Read-only, — Артем горько усмехнулся. — Я просто наблюдатель с доступом к логам.

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

***

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

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

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

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

Если он совершит одну серьезную ошибку, если его инъекция вызовет критический сбой в системном процессе, что произойдет? Его просто «затернут»? Схлопнут в сегмент памяти, который никогда не будет вызван?

— Я — вредоносный процесс, — прошептал он в пустоту.

Система видит его как инородный объект. Валериус уже заметил его след. Инквизиция — это не просто религиозные фанатики, это, по сути, антивирус этого мира. Они ищут аномалии, ищут «баги» в людях, которые могут нарушить стабильность системы.

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

— sudo rm -rf /me, — сказал он, и его голос дрогнул.

Он представил, как его сознание просто выгружается из этого мира. Как его переменные зануляются, а указатель памяти обнуляется. Никакого ада, никакой преисподней — просто `NULL`.

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

Но в этом ужасе была странная, почти болезненная искра.

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

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

Все эти «маги», все эти лорды, которые веками учили заклинания по книгам, просто заучивали API, не понимая, что они вызывают. Они были пользователями с ограниченным интерфейсом.

А он... он видел исходный код.

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

***

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

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

Это не было заклинанием. Это была документация.

`// Temporary fix for regional gravity anomalies in Sector 5` `// Workaround: modify local_gravity constant to prevent floating debris` `// TODO: implement proper physics engine update when the Creator returns`

Артем замер. Он медленно провел пальцем по строкам. Это был комментарий. Настоящий, живой комментарий разработчика, оставленный в коде реальности.

— TODO, — выдохнул он. — Кто-то оставил TODO в самой ткани мира.

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

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

Он смотрел на эти строки и вдруг осознал масштаб своего положения.

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

А он...

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

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

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

А он может зайти в редактор.

Он может выделить строку и нажать Backspace. Он может создать новый метод. Он может переписать логику взаимодействия.

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

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

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

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

Он развернул свиток снова и начал вчитываться в описание структуры памяти. Если он сможет найти способ создать собственный защищенный сегмент — свою «песочницу» — он сможет не только выжить, но и начать строить что-то свое.

Впервые с момента попадания в этот мир Артем не почувствовал себя жертвой обстоятельств.

Он был программистом. И если этот мир был написан плохо, значит, пришло время рефакторинга.

Он аккуратно свернул пергамент и спрятал его за пазуху. Теперь у него была карта. Не географическая — архитектурная.

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

Он не знал, куда это приведет. Но он знал одно: читать — это для всех. Писать — для одного.

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

Глава 5

Свой терминал

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

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

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

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

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

— Так, — прошептал он, и голос прозвучал глухо в тесном пространстве. — Объявляем переменную: `my_safe_zone`. Тип — приватный. Доступ только по моему ключу.

В его сознании замигала строка. Он буквально видел, как она вписывается в ткань пространства, как эфирные нити переплетаются, создавая невидимую стену. Это был ментальный терминал. Его личная командная строка, доступ к которой будет только у него.

Он ощутил легкое головокружение. Эфир сопротивлялся — система пыталась отторгнуть инородное тело, которое пыталось создать что-то вне стандартного API. Артем почувствовал, как в висках застучало, а нос заложило, словно от резкого перепада давления.

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

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

Это была его песочница.

***

Но одного терминала было мало. Терминал — это инструмент, а ему нужна была маскировка.

Артем перешел к следующему этапу. Он вспомнил, как Валериус искал его. Инквизитор не искал человека — он искал сигнатуру. Он сканировал эфир в поисках «ошибки», аномального всплеска, который оставлял Артем каждым своим действием. В мире, где все двигались по предсказанным скриптам, любое отклонение светилось, как неоновая вывеска в темном переулке.

— Значит, нужно сменить ID, — Артем сосредоточился. — Или, что еще проще, перенаправить внимание сканера.

Он начал писать свой первый полноценный скрипт. Это была простая функция: перехват любого внешнего запроса на идентификацию и возврат стандартного ответа «пусто».

Он представлял это как прокси-сервер. Любой, кто попытается «пингануть» его местоположение через эфир, получит ответ, имитирующий обычного, серого, неинтересного жителя Трущоб.

Артем начал выписывать в ментальном пространстве:

`function onQuery(request) {` ` if (request.source == "Inquisition") {` ` return send_response(status: "OK", payload: "generic_peasant_signature");` ` }` `}`

Руки слегка дрожали. Он не знал, сработает ли это — в этом мире не было Stack Overflow, чтобы проверить синтаксис. Но он помнил, как работают инъекции. Он помнил, как подменять пакеты данных.

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

Он стал системным шумом.

***

Снаружи послышался грохот. Артем замер.

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

Валериус.

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

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

Артем почувствовал, как по спине потек холодный пот. Он знал, что Валериус не просто «чувствует» — он читает логи. Он видит следы взаимодействий.

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

Инквизитор зашел в соседний дом, который находился всего в десяти метрах от подвала Артема. Через тонкую стену Артем слышал каждое слово.

— Здесь пусто, — доложил какой-то солдат. — Только крысы и вонь.

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

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

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

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

«Оковы Света» — это была одна функция. Но поиск — это была совсем другая библиотека.

Артем понял: Валериус не ищет его самого. Он ищет *след*.

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

Валериус замолчал. Артем услышал, как он что-то прошептал.

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

Это был `GET-запрос` к реальности.

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

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

Он быстро набросал в своем терминале команду:

`create_temporary_entity(position: south_wall, attributes: {magic_signature: "corrupted"}, duration: 60s);`

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

Импульс сканера ударил в эту точку.

— Здесь! — крикнул Валериус. — В подвале! Схватите его!

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

В этот момент Артем сидел в своем темном углу, буквально в двух шагах от места, куда ворвались солдаты, но он не был частью их реальности. Его скрипт маскировки работал. Для них он был просто частью стены. Обычным объектом с параметром `visibility: hidden`.

Он смотрел, как мимо него пролетают тени людей. Он слышал, как Валериус зашел в комнату, заполнил пространство своим присутствием, а потом — разочарованно — замолчал.

— Пусто. Это был эхо-сигнал. Остаточный след.

Валериус звучал почти обиженно.

— Уходите, — скомандовал инквизитор. — Здесь никого нет. Ошибка в расчетах. Или он успел уйти.

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

***

Он не чувствовал облегчения. Он чувствовал ярость.

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

Но почему он должен быть тихим?

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

Валериус был силен, потому что он знал инструкции. Он знал, какие кнопки нажимать, чтобы получить результат. Но он не понимал, *почему* это работает. Он был пользователем с ограниченными правами.

Артем же видел архитектуру. Он видел, что вся эта величественная инквизиция, все эти «божественные дары» и «святые ритуалы» — это просто плохо задокументированные функции.

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

Он снова вошел в свой терминал.

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

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

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

Артем начал писать.

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

`class RealitySniffer {` ` private stream_monitor: Stream;` ` public listen() {` ` return this.stream_monitor.pipe(filter(magic_packet => magic_packet.type == 'Inquisition'));` ` }` `}`

Он осознал, что его настоящий враг — не Валериус как личность, а сама структура. Этот мир был задизайнен так, чтобы одни люди имели Read-Write доступ, а другие — только Read. Или вообще были linter-ошибками, которые нужно стереть.

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

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

Он решил остаться. Не потому, что полюбил этот мир — он его презирал. Он остался, потому что увидел задачу.

Кто-то должен был сделать рефакторинг этого мира.

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

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

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

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

Артем шел среди них, и впервые за всё время он не пытался слиться с толпой. Он смотрел на мир и видел не людей, не город и не грязь.

Он видел код. И он знал, где в нем уязвимости.

Глава 6

Синтаксис любопытства

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

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

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

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

— /dev/null/contact?user=u_known&param=logic_parity — гласила первая строка.

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

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

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

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

***

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

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

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

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

— Семь минут четыредцать две секунды от момента, когда я открыла сессию? — уточнил я.

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

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

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

— А вы, я так понимаю, любите XOR-шифрование и имеете доступ к архивам, которые не предназначены для вашего уровня?

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

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

Она развернула свиток. На нем не было красивых каллиграфических букв — только столбцы цифр и временные метки.

— Посмотрите сюда, — она ткнула пальцем в одну из колонок. — Каждые семь дней, в четвертый час после зенита, в северном крыле Цитадели зажигаются свечи, которые никто не зажигал. В полнолуние в третий четверг месяца все двери в западном секторе открываются сами собой. Аристократы называют это «благодатью лунного цикла».

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

— Это не благодать, — я почувствовал, как внутри закипает азарт. — Это cron-задачи. Запланированные скрипты. Кто-то прописал расписание в ядре этого мира.

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

— Cron? — переспросила она.

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

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

— Я потратила десять лет, — тихо сказала она. — Десять лет я собирала данные, которые коллеги называли «погрешностью измерения». Я пыталась доказать, что здесь есть логика. Что мир — это не хаос, а механизм.

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

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

— Вы понимаете, что это значит? Если есть расписание, значит, есть исполняемый файл. Если есть исполняемый файл, значит, есть точка входа.

— И кто-то, кто имеет права root, — закончил я.

***

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

Элара показала мне свои расчеты. Она обнаружила, что некоторые «священные ритуалы» Ордена на самом деле являются обертками вокруг функций с фиксированными параметрами.

— Смотрите, — она разложила три свитка. — Вот заклинание «Очищающего пламени». Входящие параметры: жесты, интонация, фаза луны. Но результат всегда один и тот же. Всегда. Если изменить один жест, заклинание не просто не сработает — оно выдает ошибку, которую они называют «гневом богов».

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

— Это не заклинания, Элара, — сказал я, не открывая глаз. — Это вызовы функций из библиотек. {get_fireball(radius=5, damage=10)}. И они просто заучили синтаксис, не понимая, что внутри. Они как пользователи Windows, которые знают, куда нажать, но не понимают, как работает реестр.

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

— «Пользователи». «Реестр». Эти слова... они не из нашего языка. Откуда вы их знаете?

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

Элара не переспросила. Она просто кивнула, принимая это как факт. Кажется, в ее мире была такая категория людей — тех, кто знает что-то за пределами дозволенного.

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

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

— Могу делать инъекции. Менять значения переменных. Но мне нужны точки входа.

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

— Это часть чего-то большего. Я нашла это в руинах Старой Башни. Когда я смотрю на нее, я чувствую... что-то. Но я не знаю, что именно.

Я взял пластину. В моем терминале она вспыхнула ярко-желтым.

`[Warning]: Found orphaned API endpoint. Protocol: Legacy.`

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

— Это интерфейс, — прошептал я. — Элара, это буквально шлюз доступа.

***

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

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

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

Она усмехнулась.

— Значит, союз на основе взаимной выгоды? Цинично.

— Я программист, Элара. Мы не верим в альтруизм, мы верим в оптимизацию ресурсов.

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

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

Я почувствовал укол чего-то похожего на сочувствие. Это было непривычно.

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

— А вы? — она подалась вперед. — Вы тоже боитесь этого?

— Я не боюсь кода, — я посмотрел на свои руки. — Я боюсь того, что кто-то может нажать «delete».

Она молчала долго, вслушиваясь в тишину архива. А затем произнесла:

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

— И исправить это, — добавил я.

***

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

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

Я усмехнулся.

— Запишу в календарь.

Выйдя на холодный ветер Цитадели, я почувствовал, что что-то изменилось. До этого я был один против системы. Теперь у меня была документация. И, возможно, кто-то, кто не будет кричать «ересь!», когда я предложу переписать законы гравитации через if-else.

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

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

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

***

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

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

Она открыла новую тетрадь и написала одну-единственную строку:

`// TODO: Figure out the root password.`

Это была ее первая строчка кода. Она не знала, что это код. Она просто знала, что это единственное, что имеет смысл.

Глава 7

Рефакторинг иерархии

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

Я шел по главной площади, стараясь не привлекать внимания — что в этом городе означало «выглядеть как часть фона», то есть как серый, неинтересный NPC в дешевой льняной рубашке. В моей голове, однако, разворачивался совсем другой пейзаж.

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

Заметил их почти сразу.

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

Я присмотрелся. В моем терминале над головой каждого стражника висел зацикленный скрипт.

`while(patrol_active) { scan_area(perimeter); check_status(citizens); }`

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

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

В эфире развернулась функция:

`if (citizen.permit == EXPIRED) { execute(arrest_citizen); }`

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

Это была дыра. Огромная, зияющая уязвимость уровня SQL-инъекции в 2005 году.

— Господин, я просто опоздал из-за дождя в Нижнем Городе! — оправдывался торговец.

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

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

«Инъекция в поток», — подумал я.

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

`target.status = "ARRESTED";`

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

`target.status = "IGNORE";`

И добавил небольшое условие:

`if (is_human) { return; }`

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

***

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

— Я... — стражник запнулся. — В общем, иди с миром. Разберемся завтра.

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

— Ты что, отпустил его?

— Я... кажется, да, — ответил тот, чеша затылок. — Просто решил, что это не стоит времени.

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

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

Я последовал за патрулем, держась на расстоянии. Мой терминал работал на полную мощность, сканируя всё вокруг. Я видел, как эфирные потоки сплетаются в сложные узоры, которые для местных были «священными знаками», а для меня — просто плохо документированным Legacy-кодом.

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

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

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

— Смотри внимательно, — сказал он, и в его ладони начал формироваться огненный шар.

В моем терминале всплыл вызов:

`Fireball.create(power=2, target=NONE, duration=10s);`

Я видел, как поток эфира закручивается в спираль, подготавливая выброс энергии. Огонь. Классика. Банальщина.

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

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

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

`type: Fire` → `type: Water`

Я не просто поменял слово. Я переписал атрибуты температуры с «высокой» на «низкую», изменил цвет с «оранжевого» на «прозрачно-голубой» и заменил эффект «сгорание» на «намокание».

Я даже добавил небольшое расширение: `volume = 50L`. Почему бы не сделать это эффектно?

***

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

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

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

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

— Что за... — он попытался что-то сказать, но его голос сорвался.

Он попробовал снова. Я видел, как он снова вызывал `Fireball.create`.

Я не стал ждать. Я уже подготовил заготовку.

`intercept(Fireball) -> {` ` change_element(Water);` ` set_pressure(HIGH);` ` set_direction(SENDER);` `}`

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

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

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

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

Но я знал, что лог-файлы мира зафиксировали событие.

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

***

К вечеру город начал гудеть.

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

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

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

— Да, говорят, кто-то перехватил заклинание прямо в воздухе.

— Маг-невидимка. Или демон.

— Говорят, это «хакер» — так назвал это какой-то старик из архива. Кто-то, кто видит код реальности.

Я усмехнулся, глядя в свой стакан.

«Хакер». Слово, которое не должно существовать здесь. Но оно просочилось. Вероятно, Элара или кто-то из тех, кто чувствовал странности, пытался дать этому определение.

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

Это была не просто забава. Это была демонстрация.

Я открыл свой ментальный терминал и посмотрел на список своих способностей. «Инъекция в чужой скрипт» — уровень 1. «Эфирная маскировка» — уровень 1.

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

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

Я посмотрел на него. В моем терминале над его головой висел тег: `status: drunk`, `mood: confused`.

— Только то же самое, что и все остальные, — ответил я с самым невинным выражением лица. — Слышал, что какой-то лорд решил помыться прямо в одежде. Забавно, правда?

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

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

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

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

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

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

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

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

Глава 8

Логи лжи

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

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

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

— Артем.

Имя прозвучало внутри черепа, как если бы кто-то вставил в мой мозг USB-кабель и попытался считать данные. Это была не просто речь. Это был ментальный пинг. Прямой запрос к моему идентификатору, который я так старательно пытался скрыть.

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

— Кто? — подумал я, не открывая рта.

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

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

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

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

***

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

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

Когда я подошел, он даже не обернулся.

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

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

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

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

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

Он не стал ждать моего ответа. Без всякого предупреждения он вскинул руку, и я увидел, как в эфире развернулся запуск функции.

В моем зрении всплыл текст: `call function: OCOVY_SVETA_v3.4`.

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

Но я не был обычным магом. Я видел этот код.

Я видел, что «Оковы Света» — это не божественное чудо. Это была функция с жестко заданными параметрами. Привязка к координатам X, Y, Z. Проверка прав доступа. И, что самое забавное, в коде была уязвимая точка — условие, которое проверяло, является ли цель «человеком» или «магическим объектом».

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

`inject: set target.class = "background_decoration"`

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

— Что ты сделал? — спросил он.

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

Валериус не выглядел удивленным. Он выглядел заинтригованным.

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

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

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

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

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

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

Я не спорил. Я смотрел.

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

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

`import Order.DivineLib.Combat.Blade`

Я замер. Это был не «божественный дар». Это был импорт.

Валериус не создавал магию. Он был пользователем. У него был доступ к API, который кто-то написал до него. Он просто нажимал на «кнопки» — произносил слова-триггеры, которые выполняли предустановленные скрипты.

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

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

— Что ты сказал?

— Твои заклинания... они не твои. Ты не понимаешь, как они работают. Ты просто вызываешь функции из библиотеки Ордена. Твой «Божественный Свет» — это задокументированные методы с ограниченным доступом.

Валериус прищурился. Его лицо осталось бесстрастным, но я заметил, как сжались его пальцы на рукояти.

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

— Веры в какой компилятор? — я почти рассмеялся. — Посмотри на свой клинок. Видишь эти руны? Для тебя это священные знаки. Для меня — это закомментированные строки кода. Там даже версия указана: build 4.2.1. Ты даже не знаешь, что твое оружие имеет ограниченный срок действия до следующего обновления.

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

— Молчи, — процедил он.

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

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

Это был клиент-серверный протокол.

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

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

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

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

`Restriction: User_Valerius cannot modify source_code. Access level: Read-Only for core functions.`

Он не мог изменить даже одну переменную в своем оружии. Он был рабом собственного инструмента.

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

— Твой Орден не хранит истину, Валериус, — тихо сказал я. — Он хранит инструкцию к чужому софту. Вы называете это «священным знанием», но это просто мануал. И самое смешное... вы даже не знаете, кто написал код.

Валериус замер. Его клинок завис в сантиметре от моего лица.

— Ты лжешь, — сказал он, но в голосе больше не было уверенности. — Боги создали этот мир.

— Боги не пишут с комментариями в коде, — я указал пальцем вверх, на шпили. — Там, наверху, в архивах Ордена, лежат логи. Если ты когда-нибудь заглянешь в них без фильтров, ты увидишь, что ваше «божественное право» — это просто l_token, который передается по наследству.

Он не ударил. Он смотрел на меня с такой смесью ненависти и ужаса, что мне стало неловко.

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

***

Когда Валериус ушел — не отступил, а именно ушел, не оглядываясь — я остался один на площади.

Я сел на край мраморного парапета и открыл терминал.

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

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

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

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

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

Теперь я знал, что в этом мире есть кто-то с правами Root. Кто-то, кто написал все эти функции. И этот кто-то явно не хотел, чтобы в системе появился кто-то вроде меня.

Но как программист, я знал одно правило: если в системе есть бэкдор, значит, кто-то его оставил.

Я встал и направился обратно в переулки. В моей голове всё еще висела строка из логов Валериуса.

`Access Denied`.

— Ну что ж, — подумал я. — Посмотрим, что будет, если я попробую brute-force.

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

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

Я шел домой, и каждый мой шаг оставлял в эфире след, который теперь не просто скрывал меня. Он announce-ил. Тихо, едва слышно, для того, кто умеет слушать.

«Система уязвима», — шептал код под моими ногами.

И я собирался воспользоваться этим.

Глава 9

Root-доступ

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

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

— Ты уверен, что мы правильно свернули? — прошептала она.

Я не отвечал. В моем ментальном терминале сейчас разворачивалась карта уровней доступа. Цитадель была структурирована как огромная вложенная система директорий. Обычные архивы, доступные ученым — это /home/users. Секции Ордена — /var/log или /etc/config. Но то, куда мы пробирались, находилось за пределами стандартного дерева каталогов.

— Мы в /root, Элара. Или очень близко к нему, — ответил я, не оборачиваясь.

Я видел код вокруг нас. Стены не были просто камнем — они были обернуты в зацикленные скрипты с проверкой прав доступа. Каждые десять секунд по коридору пробегал «сканер» — невидимый поток, который считывал ID каждого присутствующего. Если ID не совпадал с белым списком, срабатывал триггер: сигнализация, стража, казнь.

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

— Это не разрыв, это race condition, — я замер, когда впереди, в глубине коридора, мелькнул слабый голубоватый свет. — Система проверяет права доступа в один поток, но между запросом и ответом есть микроскопическая задержка. Если войти в этот интервал, можно проскочить незамеченным. Главное — не оставаться внутри слишком долго.

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

***

Запретная секция встретила нас запахом старого пергамента, застоявшегося озона и чего-то еще — металлического, как запах разогретого сервера. Здесь не было факелов. Светились только сами книги, вбитые в ниши стен. Тысячи фолиантов, каждый из которых был не просто текстом, а исполняемым объектом.

Я видел их не как книги, а как заархивированные файлы с метаданными. Некоторые были зашифрованы, другие — закомментированы.

— Здесь всё... — Элара провела рукой перед стеллажом, не касаясь книг. — Всё прописано. Весь этот мир.

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

Книга Документации.

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

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

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

`type World = System {` `physics: PhysicsEngine,` `magic: Interface,` `social_hierarchy: ClassSystem,` `]`

Я листал страницы, и с каждой секундой мой цинизм сменялся нарастающим холодом. Это была документация. Полная. С комментариями.

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

Это был раздел «Комментарии Создателя». Скрытый слой, который не видел ни один аристократ, ни один инквизитор.

«Фикс 4.2.1: Введен механизм принудительного социального закрепления. Чтобы предотвратить хаос при доступе к низкоуровневым функциям, сознания с высоким когнитивным потенциалом должны помещаться в тела с минимальными правами. Это предотвращает преждевременное раскрытие архитектуры пользователями с низким IQ».

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

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

Я перелистнул страницу. И там я увидел это.

`Function: Subject_Artem. Initialize_on_arrival.`

Я замер. Мое имя. В документации.

`Conditions:` `if (arrival_point == "Peasant_Village") {` `assign_role("Farmer");` `set_ability("Syntax_Vision", true);` `set_lifespan("undefined");` `}` `else {` `execute(System.Crash);` `}`

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

Я был не ошибкой. Я был запланированной функцией. Инструментом.

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

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

— Значит, ты не виноват в том, что ты здесь, — тихо сказала она.

— Виноват ли я в том, что меня написали? — я с силой захлопнул книгу, и звук эхом разлетелся по залу.

***

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

— Красиво. Очень красиво, — раздался голос из тени.

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

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

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

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

— Валериус, — я посмотрел на инквизитора. — Ты ведь знаешь, что ты здесь не главный. Ты — laze-pointer. Указатель на функцию, которую кто-то другой вызывает.

Валериус даже не вздрогнул.

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

Сильвио поднял золотую печать. Она вспыхнула.

— Это не просто украшение, Артем, — барон почти замурлыкал. — Это hardware-токен. Физический ключ доступа к этому залу. Ты можешь видеть код, но я владею правами собственности.

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

`Set_Area_Restriction(current_coords, "Lockdown");` `Permission_Level = 0;`

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

— Вы объединились, — я усмехнулся, хотя сердце колотило в ребра. — Инквизитор и торговец. Стейкхолдеры и силовики. Идеальный тандем для захвата админки.

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

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

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

— О чем ты? — Сильвио нахмурился.

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

`Object: GoldenSeal` `Method: LockDoor(target_id)` `Parameter: boolean is_locked = true`

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

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

— Элара, сейчас! — крикнул я.

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

В момент вспышки я сделал инъекцию.

Я не атаковал Валериуса. Я атаковал переменную `current_user` в сессии печати.

`set_session_user = "null";`

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

— Что за... — Сильвио встряхнул рукой, но печать не погасла. Она начала вибрировать.

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

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

— Мои права! — закричал барон. — Моя печать!

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

`Capture_Entity(entity_id = "Artem")` `Apply_Status("Paralyzed")` `Duration = 3600s`

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

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

Он схватил меня за шиворот и встряхнул, отрывая от стены.

— Где книга?

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

Валериус посмотрел на Элару.

— Отдай её. Живо.

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

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

— Если мы не сможем её прочитать, никто не сможет! — закричала она.

Но книга не порвалась. Она просто... развернулась.

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

Это был лог. Огромный, бесконечный лог событий мира.

И в центре этого потока я увидел запись.

`Event: Entity_Artem_Arrival` `Status: SUCCESS` `Trigger: "Experimental_Patch_to_Social_Hierarchy"` `Author: <REDACTED>` `Comment: "Let's see if a coder from Earth can break the deadlock. If he fails, rollback to previous state."`

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

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

Валериус замахнулся, но в этот момент я перехватил его поток. Не потому, что я был сильнее. А потому, что теперь я знал, какая функция вызывается.

Я не пытался блокировать его атаку. Я просто изменил её тип.

`Change_Type(paralyze_script) -> heal_script;`

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

Валериус отпрянул, глядя на свою руку с ужасом.

— Что ты сделал?

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

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

— Ты хочешь быть частью этого мира, Сильвио? — я ухмыльнулся. — Тогда будь ей.

Я вызвал функцию, которую нашел в Документации секунду назад.

`Set_Status(entity_id = "Silvio", status = "Mute", duration = a_very_long_time);`

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

***

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

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

— Ты всё видел? — Элара шла рядом, задыхаясь.

— Да. И это хуже, чем я думал.

— Что именно?

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

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

Я открыл книгу на последней странице, где был список всех функций. Там была одна, помеченная как «Экспериментальная» и «Заблокирована до завершения теста».

`Function: RootAccess()` `Description: Full control over world parameters.` `Requirement: Knowledge of the Creator's Syntax + Subject's Awareness of Being a Variable.`

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

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

— И что ты сделаешь?

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

— Я напишу свой собственный скрипт, — сказал я. — И первым делом я удалю из этого мира понятие «раб».

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

Либо переписывает код. Либо сносит всю систему к чертям.

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

— Пошли. Нам нужно найти способ скрыть наши логи, пока нас не обнаружил кто-то, кто умеет делать `Format C:`.

Глава 10

Побочные эффекты

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

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

Я не мог перестать думать о том, что увидел в Книге Документации. Если я — патч, вброшенный в систему, значит, у меня есть какая-то функция. Возможно, даже цель. И эта цель была настолько заманчивой, что я решил рискнуть.

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

— Что ты задумал? — Элара заметила мою остановку.

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

— Ты же сказал, что это опасно. Что нас заметят.

— Система не заметит, если я сделаю это локально. Переопределю область видимости. Just a small refactoring, Элара.

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

Я нашел то, что искал. Переменная `SocialStatus`. У меня она была установлена в `Peasant`, что давало минимальный приоритет доступа к ресурсам и автоматический флаг «подчинение» при встрече с объектами класса `Noble`.

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

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

`get_status(entity) { return "Admin"; }`

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

— Готово, — выдохнул я.

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

***

Первый раз это случилось через десять минут.

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

— Ты это видела? — я остановился.

Элара посмотрела на меня с недоумением. — Что именно? Торговец? Он просто стоит.

Я присмотрелся. В эфирном зрении над торговцем висело предупреждение: `Warning: Memory Leak detected in sector_7`.

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

Она начала зацикливаться.

— Элара, нам нужно уходить. Сейчас же.

— Артем, что не так? Ты только что сказал, что это безопасно!

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

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

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

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

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

`Garbage Collector: attempting to free unused entities in sector_7` `Entity_ID_4412: marked as redundant` `Entity_ID_4413: marked as redundant`

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

— Артем, сделай что-нибудь! — Элара схватила меня за рукав.

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

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

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

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

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

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

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

***

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

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

— Значит, это и есть твоя магия, — тихо сказала она. — Ты не исправляешь мир. Ты просто переставляешь мебель в комнате, пока стены рушатся.

— Я не хотел этого, — я поднял глаза. Мой голос звучал глухо.

— Ты хотел быть особенным, Артем. Ты хотел l’accès root. Но ты забыл, что в любой системе есть цена.

Я открыл терминал снова. Теперь я не пытался что-то исправить. Я просто читал логи.

`System.ResourceExhaustion: Sector_7` `Priority_Queue: cleaning up background_entities...`

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

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

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

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

Элара подошла ближе, но не коснулась меня. — И что теперь? Ты удалишь свою функцию?

— Я не знаю, смогу ли. Я не знаю, останется ли после этого что-то от меня. Если я верну статус «крестьянин», не сотрет ли система меня вместе с этой функцией как «неиспользуемый код»?

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

А теперь я сам стал тем, кто удаляет.

— Ты хотел стереть понятие «раб», — Элара смотрела мне в глаза. Ее голос был холодным. — Но ты стер женщину с яблоками. Она не была рабом. Она просто была в неправильном месте, когда ты решил поиграть в бога.

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

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

`DROP FUNCTION RootAccess_Proxy;`

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

— Я больше не буду этого делать, — сказал я.

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

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

Я знал, что где-то в системе всё еще висит мой незакрытый запрос. И я не знал, какой «ответ» придет от сервера через неделю, месяц или год.

Потому что в этом мире не было кнопки «Отменить». Была только история изменений, которая никогда не стирается.

Глава 11

Обратный инжиниринг

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

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

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

***

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

Он не понимал синтаксиса. Для него это были священные узоры, «божественные откровения», которые нужно заучивать дословно. Но Валериус был не глуп. Он был методичен. Он заметил, что мои «чудеса» повторяются. Что я не творю хаос, а воздействую на конкретные точки заклинаний.

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

Валериус взял одну из своих стандартных формул — «Оковы Света», которую он вызывал сотни раз. В его понимании это была молитва, застывшая в эфире. Но теперь он видел, что в этом узоре есть повторяющиеся сегменты.

— Если он может вставить что-то свое в середину моей молитвы, значит, в молитве есть зазоры, — Валериус прищурился.

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

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

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

Он не понимал, что только что изобрел примитивную защиту от модификации кода. Но для него это была «святая броня», которую он выковал из своего усердия и фанатизма.

***

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

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

— Эй, парень, пиво заказывай или проваливай! — гаркнул трактирщик, вытирая стакан грязной тряпкой.

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

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

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

Я привычно потянулся к потоку. Я хотел сделать простую инъекцию: изменить условие «привлечение внимания» на «создание помехи». Это был мой стандартный трюк — легкий рефакторинг чужого кода на лету.

Но когда я попытался войти в поток, я наткнулся на стену.

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

Я попробовал снова. Попытался сдвинуть переменную.

Ошибка.

Прямо перед глазами всплыло сообщение, которое я сам себе когда-то настроил для отладки: `Runtime Error: Access Denied. Field is immutable`.

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

— Какого черта? — прошептал я.

Я снова попробовал прощупать структуру. Теперь я видел: заклинание было не просто защищено. Оно было обернуто в несколько слоев идентичного кода.

Это был патч.

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

Это был горячий фикс. Кто-то изучил мои методы. Кто-то сделал реверс-инжиниринг моих атак.

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

***

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

Перед ним стоял человек в невзрачном сером плаще — один из его информаторов, который специализировался на «эфирном шпионаже».

— Ваша светлость, — голос информатора был сухим. — Мы проанализировали все зафиксированные сбои в столице. И в порту тоже.

Сильвио лениво покрутил в пальцах бокал с вином.

— И что? Ты хочешь сказать, что этот... крестьянин действительно что-то понимает?

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

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

Сильвио подался вперед. Глаза его заблестели.

— Значит, его методы можно описать? Задокументировать?

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

Барон ухмыльнулся. Он не знал, что такое «инъекция» или «тип данных», но он прекрасно понимал слово «уязвимость». Для него магия была инструментом власти, и если этот парень нашел способ обходить защиту, значит, этот способ можно превратить в товар.

— Сколько? — спросил Сильвио.

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

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

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

Он рассмеялся, и этот смех был сухим, как пергамент.

— Валериус думает, что он охотится на еретика. А я просто покупаю инструкцию по эксплуатации.

***

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

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

Это не был прямой запрос. Это был пассивный сбор данных.

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

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

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

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

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

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

Я посмотрел на свои руки. В эфирном зрении они все еще мерцали, но теперь этот свет казался тусклым.

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

Я понял, что Валериус не просто охотится за мной. Он учится у меня.

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

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

Я медленно поднялся с причала.

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

Возможно, на этот раз она решит, что лишним модулем являюсь я.

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

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

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

Глава 12

Шепот из ядра

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

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

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

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

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

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

***

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

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

— Ты заставил меня ждать, Артем, — сказал он.

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

Я замер, не доверяя своим ногам.

— Откуда ты знаешь мое имя?

— Имена — это просто переменные, которые привязаны к сущностям. Твоя привязка довольно яркая. Ты светишься в этом сером мире, как неоновая вывеска в подвале. Ты думаешь, что ты один видишь код?

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

— Кто ты?

— Зови меня Магнусом. Хотя «Шепот» — так меня называют те, кто еще способен слышать.

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

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

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

— Ты тоже это видишь?

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

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

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

***

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

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

— Смотри, — Магнус коснулся кристалла.

Я переключил зрение. Кристалл не был объектом. Он был точкой входа. Внутри него крутился бесконечный поток текста — не магические формулы, не руны, а чистый, сырой дамп памяти. Я видел адреса, смещения, значения в шестнадцатеричной системе. Это был лог всего, что происходило в этом мире.

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

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

— Ты понимаешь, что этот мир — не дом? — Магнус подошел ко мне почти вплотную. От него пахло озоном и старым железом. — Это не «параллельный мир» в том смысле, как пишут в книгах. Это запущенный процесс. Процесс, который зациклился. Социальная иерархия, инквизиция, все эти «божественные права» — это просто захардкоженные константы, чтобы система не рухнула от хаоса.

— И что ты предлагаешь?

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

Я замер. Это был самый точный запрос, который кто-либо когда-либо задавал.

— Ты не можешь «выписаться», потому что нет команды’exit’ для пользователя. Ты — часть кода. Чтобы уйти, нужно остановить процесс.

Магнус снова посмотрел на черный кристалл.

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

***

Магнус начал ходить по комнате, и его шаги не оставляли следов на полу.

— Твои попытки помочь людям, спасти кого-то, переписать несправедливость — это всё бесполезно. Это как пытаться исправить баг в программе, которую завтра удалят. Ты только создаешь больше мусора. Помнишь ту женщину, которую ты «стер»? Ты не ошибся. Ты просто показал системе, что в ней есть лишние элементы.

Я почувствовал тошноту.

— Ты предлагаешь мне стать таким же, как ты?

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

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

— Мы не можем просто нажать «стоп». Ядро защищено. Но если создать достаточное количество критических ошибок в разных точках… если вызвать массовый Kernel Panic… система перезагрузится. И в этот момент, в окне перезагрузки, когда все права доступа сбрасываются, мы сможем выйти.

— Ты хочешь уничтожить этот мир, — сказал я. Это не был вопрос.

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

Я посмотрел на свои руки. Они всё еще мерцали.

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

Магнус усмехнулся. Улыбка была короткой, как синтаксическая ошибка.

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

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

— Помоги мне вызвать сбой. Стань моим lsof. Стань той командой, которая закроет все открытые сессии. И тогда мы оба будем свободны.

***

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

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

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

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

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

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

— Я не могу согласиться с этим сейчас, — сказал я.

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

— Ты еще не понял, Артем. Тебе не нужно соглашаться. Ты уже в системе. И система уже начала тебя переваривать. Валериус — это не враг. Это антивирус. Он просто делает свою работу. А ты — вирус, который думает, что он врач.

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

— Ты слышишь это? — спросил он.

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

Это был звук мира, который ждет команды на завершение.

***

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

Я знал одну вещь: Магнус не лгал о структуре. Он лгал о выходе.

Потому что если бы выход был таким простым, как одна команда, он бы уже давно всё удалил. Значит, ему что-то было нужно от меня. Не просто «внешний IP». Ему нужен был кто-то, кто мог бы переписать условие в ядре, которое он сам не мог затронуть.

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

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

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

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

Я начал понимать, как написать команду’delete all’.

И эта команда теперь жила внутри меня, как закомментированная функция, ожидая своего вызова.

Глава 13

Сделка с дьяволом

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

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

— Ты вернулся, — Магнус не обернулся. Его голос в этом акустическом кошмаре звучал так, будто он шептал мне прямо в затылок, хотя он стоял в пяти метрах. — Сомневался, что ты сможешь уйти от команды «delete all», которая теперь жрет тебя изнутри.

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

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

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

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

Я сжал кулаки. Это било по самому больному.

— И что ты предлагаешь?

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

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

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

— Ты хочешь дать мне root-доступ, — я прищурился. — Но бесплатно. В этом мире даже за вдох воздуха платят.

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

— Ты хочешь, чтобы я стал твоим компилятором.

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

Элара.

Это имя отозвалось резким уколом где-то под ребрами. Она была единственным живым человеком в этом мире, который не пытался меня использовать или стереть. И она была в опасности. Валериус не остановится, пока не закроет все «баги».

— Что за цена? — тихо спросил я.

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

Я знал, что это ловушка. Знал, что в любом контракте с таким, как Магнус, есть мелкий шрифт, который я пока не могу прочитать. Но я также знал, что мои текущие способности — это попытка заделать дыру в плоти скотчем. Если я не получу этот инструмент, Валериус просто перепишет меня. Или удалит.

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

Это не было похоже на прикосновение. Это было как будто кто-то вставил в мой мозг USB-ключ с поврежденной файловой системой. Резкая вспышка, чувство, что меня выворачивает наизнанку, и вдруг мир изменился.

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

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

— Поздравляю, — Магнус выглядел почти довольным. — Теперь ты не просто видишь код. Ты можешь lокально менять среду. Но будь осторожен: если переполнишь стек, система сделает hard reset. А ты в этом мире не восстановишься из бэкапа.

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

***

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

Когда она увидела меня, ее глаза вспыхнули — не от радости, а от этого вечного, почти болезненного любопытства.

— Ты вернулся. Ты выглядишь... иначе. Твоя сигнатура изменилась.

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

— Я заключил сделку с Магнусом, — сказал я, садясь рядом.

Она замерла. Свиток в ее руках зашелестел.

— С кем ты заключил сделку, Артем? Ты хоть понимаешь, что он не ищет выход? Он ищет способ сжечь мост за собой.

— Он дал мне инструменты, Элара. Теперь я могу защитить нас.

— Защитить нас? — она горько усмехнулась. — В этом мире защита — это всего лишь временная задержка исполнения. Валериус уже здесь. Он чувствует, как ты пытаешься зашифроваться. Это как пытаться спрятать солнце за занавеской.

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

— Давай создадим что-то вместе, — предложил я. — Не шаблон. Не функцию из библиотеки. Настоящий шифр.

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

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

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

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

Я видел, как Элара вычисляет колебания эфира в пещере. Она не видела код, но она видела паттерны.

— Сейчас! — крикнула она. — Частота смещается на три герца влево!

Я схватил этот поток и завязал его в узел. В моем сознании это выглядело как создание сложного объекта с приватными полями.

if (ether.frequency == elara.target) { status = HIDDEN; proxy = generate_false_id(); }

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

— Боже, — прошептала Элара, глядя на переливающуюся нить. — Это... это не из книг. Это не шаблон.

— Это не шаблон, — я почувствовал странную гордость. — Это наш собственный API.

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

— Теперь Валериус нас не найдет, — сказал я, и в этот момент я действительно в это поверил.

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

Я закрыл глаза, наслаждаясь тишиной.

***

Странный звук.

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

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

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

— Артем, посмотри на цепь, — Элара отпрянула.

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

Это был не разрыв. Это был проброс.

Мой «идеальный» шифр работал. Он действительно скрывал нас. Но он скрывал нас так эффективно, что создал вакуум в эфире — идеальную черную дыру, которую в логах системы было видно даже лучше, чем нас самих.

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

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

— Браво, Артем, — сказал он. Его голос эхом разлетелся по залу, многократно усиливаясь. — Ты создал такую идеальную маскировку, что она стала самым ярким маяком в этом секторе.

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

— Ты ведь думал, что создаешь замок, — Валериус остановился в трех шагах от нас. — Но замок — это не дверь. Это то, что удерживает дверь закрытой. Или открытой.

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

— Элара, уходи! — крикнул я, пытаясь разорвать связь.

Но я не мог. Мои пальцы не слушались. В моем сознании всплыло предупреждение, которое я проигнорировал: *Dependence detected*.

— Магнус был очень щедр, давая тебе инструменты, — Валериус слегка наклонил голову. — Он дал тебе черную среду исполнения. Ты думал, что это твой инструмент. Но в программировании есть понятие «обратного вызова». Кто-то должен вызвать функцию, чтобы она сработала.

Я понял. Черный скрипт не был моим. Он был удаленным терминалом. Магнус не дал мне силу — он установил в меня бэкдор. И теперь этот бэкдор был открыт.

Валериус поднял руку. В его пальцах заплясали белые искры — стандартный шаблон «Оковы Света», но теперь он выглядел иначе. Он был усилен. Он был настроен специально под частоту нашей цепи.

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

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

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

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

Я смотрел, как Элару затягивает в светящийся кокон, и впервые понял: в этом мире нет безопасных портов. Есть только те, которые еще не закрыли.

Глава 14

Kernel Panic

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

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

— Access Denied, — раздался голос. Но не в моей голове.

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

— Похоже, твой сеанс завершен, Артем.

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

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

Ничего.

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

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

*Thread 'Artem_main' suspended by process ID: Magnus_Whisper.*

Меня просто поставили на паузу.

***

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

Это были не мои строки. И не шаблоны аристократов.

— Ты ведь понимаешь, что такое бэкдор, Артем? — Валериус наконец повернулся. Его лицо было спокойным, почти скучающим. — Это не просто дыра в защите. Это дверь, которую оставил создатель, чтобы вернуться обратно. Магнус не давал тебе инструмент. Он сделал тебя своим ключом.

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

— if (Artem.position == 'Caves') { restrict_movement(true); }, — прошептал Валериус, и я буквально увидел, как эта команда встроилась в мои собственные параметры.

Он не читал код. Он не знал синтаксиса. Он просто произносил заклинание, которое Магнус заранее «захардкодил» в структуру этого места. Магнус подготовил среду, настроил переменные, а я, как полезный идиот, принес в эти пещеры свой активный эфирный след, тем самым замкнув цепь.

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

Скрипт не запустился.

*Runtime Error: Invalid permission. Object 'Artem' is currently read-only.*

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

***

— Что с Эларой? — мой голос прозвучал глухо.

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

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

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

Я вызвал визуализацию кода.

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

while (Elara.status == 'captured') { Elara.thought_process = solve(infinity); }

Я попытался вставить свою инъекцию. Я хотел заменить `infinity` на `0`. Просто обрубить этот процесс. Но как только я прикоснулся к строке, экран моего внутреннего терминала вспыхнул алым.

*Stack Overflow.*

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

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

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

***

— Ты ведь хочешь её выпустить? — Валериус присел рядом, его голос стал почти отеческим. — Я могу это сделать. Магнус хочет, чтобы ты стал его «удаляющим скриптом». Он хочет, чтобы ты стер этот мир. А я... я просто хочу сохранить порядок.

— И что ты хочешь взамен?

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

Я рассмеялся. Это был сухой, надломленный смех.

— Ты хочешь, чтобы я создал идеальный брандмауэр для твоей диктатуры? Чтобы никто не мог даже дышать без разрешения Ордена?

— Я хочу, чтобы мир перестал ломаться, — Валериус поднялся. — Посмотри на Элару. Она — результат твоего «исследования». Ты хотел помочь ей понять код, а в итоге запер её в бесконечном вычислении.

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

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

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

*Command 'delete_all' has been replaced by 'wait'.*

Я даже не мог ничего сделать с собой.

***

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

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

Это был kernel panic. Я чувствовал его каждой клеткой. Мир вокруг меня начал выдавать ошибки сегментации.

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

— Мастер Шепот сказал, что ты прозреешь, когда всё вокруг станет текстом, — прошептал он.

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

Я больше не был «человеком». Я больше не был даже «багом».

Я стал *Resource: Allocated*.

***

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

Я остался в Шепчущих Пещерах один.

Я попытался снова вызвать терминал.

*Connection lost.*

Я попытался позвать на помощь.

*Mute.*

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

Я смотрел на свои руки и видел, как по ним медленно ползет строка:

*Process 'Artem' is waiting for input...*

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

*System.Exit()*

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

Глава 15

Null Pointer Exception

Каменные стены впитывали тепло моего тела с жадностью, которой позавидовали бы и мои бывшие заказчики в Москве. Здесь, внизу, в сыром чреве Нижнего Города, время не текло — оно зациклилось. Два часа или два дня? Сутки или неделя? Я перестал считать. Без доступа к эфиру, без терминала, который раньше был моим единственным окном в реальность, я превратился в кусок мяса, запертый в каменном мешке.

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

Тишина здесь была не отсутствием звука. Она была физически ощутима, как тяжелое одеяло из ваты. В этом мире тишина означала отсутствие данных. Никаких пакетов, никаких сигнатур, никаких фоновых шумов эфира. Я был в режиме read-only, но даже читать было нечего. Мои руки, которые еще недавно переписывали законы физики, теперь просто дрожали от холода.

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

***

Я пытался анализировать свое состояние. Это была моя привычка — превращать всё в алгоритм. Страх — это просто условие `if (danger == true) { panic() }`. Тоска — зацикленный запрос к памяти о чем-то недоступном.

Я выстроил в голове таблицу: — Вход: одиночество, холод, отсутствие прав доступа. — Выход: депрессия, апатия, риск когнитивного коллапса.

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

Я вспомнил, как смотрел на людей в Трущобах. Функции. Объекты класса «массовка». NPC с ограниченным набором диалоговых строк. Я видел их как строки кода — предсказуемые, повторяющиеся, скучные. Я не считал их равными, потому что видел их внутренности: примитивные скрипты, зацикленные потребности в еде и сне.

«Зачем мне сочувствовать объекту с ограниченным функционалом?» — думал я тогда.

А теперь я сам был таким объектом. Только еще более ограниченным. Моя ценность в этом мире была равна сумме моих прав доступа. А сумма была равна нулю.

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

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

***

Я вспомнил Элару.

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

Я думал, что она влюблена в мою силу. В мой root-доступ.

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

Она просто хотела, чтобы я был рядом.

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

Это был мой главный баг.

Я осознал, что всё это время я не программировал мир — я программировал свою изоляцию. Каждый раз, когда я называл кого-то «функцией», я писал строку кода, которая удаляла меня из общего пространства. Я думал, что стою выше всех, потому что вижу код. Но код не делает тебя богом. Он делает тебя переводчиком. А переводчик, у которого нет собеседника, просто сотрясает воздух.

Эларе было больно. Не абстрактная «переменная боли», не статус `injured`. Ей было страшно. Она смотрела на меня, и в её глазах было что-то, чего я не мог закодировать — какой-то запрос, который не имеет синтаксиса. Она просила не спасения из темницы. Она просила, чтобы её заметили.

А я в это время анализировал вероятность её выживания в процентах.

***

Я прислонился затылком к холодному камню.

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

Так проще. С объектом можно работать. С человеком — нет. С объектом можно ls -l и увидеть права. Человек — это всегда `undefined`.

Я вспомнил, как Элара пыталась что-то сказать мне в Цитадели, когда мы нашли Книгу Документации. Она хотела поговорить о том, что она чувствует по поводу нашего мира. А я перебил её, потому что заметил интересную опечатку в третьем параграфе заклинания. Я сэкономил ей время на чтении, но украл у неё что-то, что теперь, в этой темноте, казалось мне бесценным.

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

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

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

***

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

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

Я бы просто написал сообщение. Без шифрования. Без прокси. Без всего этого дерьма.

*«Прости, что я видел в тебе только код. Ты была единственной настоящей вещью в этом симулированном мире».*

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

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

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

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

В углу камеры что-то зашуршало. Возможно, крыса. Возможно, охранник.

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

Но в этом мире не было функции `recover_soul`.

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

Глава 16

Искусство ошибки

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

Каждый раз, когда я пытался даже мысленно вызвать интерфейс, по рукам пробегал разряд. Не электрический ток в нашем понимании, а что-то вроде системного прерывания: резкий сигнал, который обрывал любую попытку сфокусироваться. Мои способности — визуализация кода, терминал, инъекции — были заблокированы. Статус read-only в самом буквальном смысле.

Я смотрел на свои руки и видел, что цепи мерцают едва заметным голубоватым светом. Это был код. Стандартная функция удержания: объект «пленный» привязан к объекту «стена» с приоритетом исполнения, который перекрывает любые мои попытки воздействия.

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

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

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

Я медленно поднял правую руку, насколько позволял поводок цепи. В ментальном поле я видел структуру кандалов. Это была функция с жестким условием: if(prisoner_move) { activate_shock() }.

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

А что, если не бороться? Что, если стать ошибкой самому?

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

Я не пытался подавить этот импульс. Я начал его впитывать.

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

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

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

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

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

— Если система ждет от меня логики, — прохрипел я, — я дам ей то, что она не сможет обработать.

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

Я не создавал заклинание. Я создавал хаос.

И вдруг я почувствовал это. Тонкий, почти неощутимый зазор.

В коде цепей была проверка на тип объекта. Система ожидала, что я — «человек с ограниченными правами». Но когда я наполнил себя иррациональным шумом, мои атрибуты стали неопределенными. Я перестал быть константой. Я стал переменной с типом undefined.

Произошел сбой.

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

Я рванулся вперед.

Металл не рассыпался, не растворился. Он просто перестал существовать в этой точке пространства. Я почувствовал, как левое запястье с какой-то смешной легкостью выскользнуло из кольца. Кольцо не открылось — оно просто не смогло обработать мою позицию. Я больше не был внутри него. Я был «вне» определения.

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

Я не чувствовал триумфа. Я чувствовал тошноту. Мой мозг всё еще вибрировал от искусственно созданного сбоя.

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

***

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

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

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

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

Я понял, что система не «забыла» про меня. Она просто поместила меня в корзину с необработанными данными. Для системы я стал мусором. Неудаленным, неиндексированным, невидимым.

Это была самая опасная форма свободы, которую я когда-либо ощущал.

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

Мне нужно было оставаться ошибкой.

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

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

Я был null.

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

Никто не думал о том, чтобы стать ошибкой.

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

Это было похоже на плохой пинг в онлайн-игре. Меня лагало.

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

Я остановился и посмотрел на свои руки. Они всё еще слегка мерцали.

Раньше я искал root-доступ. Я хотел быть администратором, чтобы менять правила. Теперь я понял, что администратор — это тоже часть системы. Ему нужно логиниться, ему нужен пароль, он ограничен правами доступа.

А когда ты становишься ошибкой — тебе не нужен доступ. Тебя просто не существует в реестре запретов.

Я почувствовал, как внутри что-то окончательно сломалось. Или, наоборот, наконец-то заработало.

Я не собирался больше играть в их игру. Не собирался искать способы «легального» возвращения или исправления.

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

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

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

Ведь в мире, где всё работает по инструкции, единственный способ победить — это нарушить её.

***

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

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

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

Мне нужно было решение.

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

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

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

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

Я не стал искать уязвимость в замке.

Я просто решил, что я — не la-сбой. Я решил, что я — часть фонового шума.

Я начал сбивать свои параметры. Высота — переменная. Вес — неопределен. Имя — null.

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

Я сделал шаг.

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

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

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

Там была Элара.

Я почувствовал, как в груди что-то сжалось. Больше никакой циничности. Никакого анализа «ценности ресурса».

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

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

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

Искусство ошибки — это единственное искусство, которое имеет значение в мире, который считает себя совершенным.

Я больше не боялся быть багом.

Я был единственной живой вещью в этом механизме.

Глава 17

Декомпиляция мира

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

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

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

— Ты успел, Артем, — его голос звучал как запись с перемоткой. — Ты пришел посмотреть на финал.

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

Он вызывал sudo rm -rf /.

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

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

— Именно! — почти пропел он. — Весь этот мир — ошибка. Иерархия, страдания, цепи... Всё это — плохой код. Я просто нажму Delete. Мы все станем свободными.

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

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

Магнус смеялся, и в этом смехе было столько же отчаяния, сколько и торжества.

— Ты тоже хочешь этого, Артем! Ты тоже устал быть функцией в чужой программе. Позволь мне нажать Enter.

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

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

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

Я создал функцию-перехватчик. Я не менял команду rm, я изменил область её видимости.

— Переменная-заглушка, — прошептал я.

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

***

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

— Ты никогда не перерастешь свою природу, Артем.

Валериус.

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

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

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

Валериус поднял руку. В эфире развернулся шаблон «Оковы Света». Я видел его как массивный блок кода с жестко заданными параметрами. lock_target(Artem), duration: infinity, force: maximum.

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

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

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

Я почувствовал, как мои ноги вросли в платформу. Мой статус в ментальном терминале сменился с undefined на user_restricted.

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

Валериус улыбнулся.

— Ты снова пытаешься что-то ler’ить в коде? Посмотри на свои руки, Артем. Ты снова виден системе. Ты снова предсказуем.

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

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

Валериус замахнулся. Я не стал создавать щит. Я не стал вызывать ответную атаку.

Я применил инъекцию в его собственный поток.

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

Я не переписал его атаку. Я просто добавил одну строку в его условие: return false.

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

— Что ты сделал? — его голос дрогнул.

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

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

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

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

Я прикоснулся к его плечу, и в этот момент я не атаковал. Я просто перевел статус Валериуса в режим read-only.

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

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

***

Магнус всё еще пытался завершить команду. Удаление шло медленно — я успел перенаправить поток, но процесс всё равно пожирал куски реальности.

— Помоги мне! — закричал Магнус. — Помоги мне стереть всё! Это единственный путь к истине!

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

— Нет, Магнус. Ты хочешь стать админом в пустоте. Но я не хочу быть админом вообще.

Я вошел в ядро. Это было похоже на погружение в холодную воду, которая на самом деле была потоком цифр. Я видел всё: тысячи потоков, миллионы переменных, бесконечные условия «если-то».

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

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

Это искушение было почти физическим. Я чувствовал, как код реальности поддается, как он шепчет мне: «Просто напиши sudo chown root:root /».

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

Свобода не может быть дарована администратором.

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

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

Я не стал менять имена в списке.

Я удалил саму таблицу.

Я написал короткий скрипт, который перевел все права доступа в состояние undefined для всех существующих сущностей.

sudo rm -rf /etc/sudoers.world

Я не стал заменять одну иерархию другой. Я просто стер понятие иерархии из кода.

***

Мир вздрогнул.

Это не был взрыв. Это было чувство, будто что-то очень тугое наконец ослабло.

Эфирный смог вокруг нас начал рассеиваться, но не потому, что стал чистым, а потому, что перестал подчиняться правилам. Он стал хаотичным.

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

Магнус упал на колени. Кристалл в его руке погас.

— Что ты сделал?.. — прошептал он.

— Я удалил root, — я посмотрел на свои руки. — Теперь никто не админ.

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

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

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

Это был хаос. Но это был честный хаос.

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

Я чувствовал, как Элара — где-то там, в Цитадели — медленно выходит из своего цикла. Без внешней команды «остановить», без чьего-то разрешения. Она просто перестала быть объектом, который кто-то может контролировать.

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

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

Я не чувствовал торжества. Только странное, легкое облегчение.

Я больше не был «патчем» или «ошибкой». Я перестал быть инструментом в чьих-то руках — даже в своих собственных.

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

И это была самая чистая форма свободы, которую я когда-либо чувствовал.

Глава 18

Свободный поток

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

Я шел по набережной, и в голове было непривычно тихо.

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

Теперь интерфейс исчез.

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

Ничего.

Пустота.

Я не почувствовал паники. Наоборот, в груди разлилось странное, почти детское облегчение. Это было как когда после многочасового кодинга в режиме дебага, когда глаза вытекают от бесконечных строк логов, ты наконец нажимаешь «exit» и закрываешь ноутбук.

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

***

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

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

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

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

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

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

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

— Мы стали равны, Элара, — сказал я.

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

— Ты хочешь сказать, что ты больше не видишь код?

— Совсем. Теперь я вижу только тебя. И море. И то, что у тебя на щеке размазана какая-то грязь.

Она коснулась лица, и ее губы тронула слабая улыбка. В этом жесте не было никакой функции. Никакого скрытого смысла. Просто жест.

— Значит, ты больше не бог, который может переписать нас всех?

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

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

***

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

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

А потом я удалил sudoers. Я стер саму концепцию того, что кто-то имеет больше прав, чем другой.

И в этот момент я понял одну вещь.

Я не был здесь для того, чтобы что-то исправить. Я не был «патчем» или «исправительным модулем».

Я был просто человеком, который слишком привык всё раскладывать по полочкам.

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

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

— Почему ты не расстроен?

— Потому что это — жизнь, — я развел руками. — В моем мире тоже были катастрофы. Только там они назывались «кризис 2008-го» или «пандемия» или «личная трагедия». Мы всегда пытались оптимизировать страдание. Сделать его предсказуемым. Но в этом и была проблема.

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

***

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

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

Я просто смотрел.

Это было почти физически больно — чувствовать, как внутри меня что-то окончательно отключается. Тот внутренний голос, который всегда шептал: «Ты можешь сделать лучше», «Ты можешь переписать это», «Ты можешь контролировать ситуацию».

Теперь он молчал.

— Знаешь, что самое смешное? — я сказал это, не глядя на Элару. — Я ведь до последнего думал, что моя цель — найти способ вернуться. Домой.

— А теперь?

— Теперь я не знаю, где мой дом. И, кажется, мне впервые за тридцать четыре года всё равно.

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

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

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

Я просто сидел на камнях.

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

Это был неоптимальный мир. Полный багов. Без документации.

И я впервые почувствовал, что я в нем — не инструмент. Не средство. Не решение.

Я был просто частью ландшафта.

***

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

За веками было темно. Раньше в этой темноте вспыхивали строки кода, даже когда я спал. Я видел синтаксические ошибки в своих снах.

Теперь была просто темнота.

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

— Элара, — тихо сказал я.

— М?

— Пойдем. Нам нужно что-то поесть.

— Ты не хочешь пройтись по ближайшим ресторанам?

Я усмехнулся. Это была старая привычка, остаток того, кем я был.

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

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

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

Без единого комментария в коде. Просто жизнь.

Спасибо за чтение

Вернуться к книге