Обложка Системный артефактор. Том1

Системный артефактор. Том1

Серый Ёж

0% прочитано
Стандартный
Серый Ёж

Системный артефактор. Том1

Глава 1

Телефон завибрировал в 11:37. Пятница.

Рука нашла его на полу рядом с матрасом раньше, чем я открыл глаза, — навык, отработанный за два года дежурств. Четыре уведомления от Prometheus. Два тикета в Jira, оба с пометкой «СРОЧНО», что на языке менеджеров означает «можно было неделю назад, но вспомнили сейчас». И голосовое от тимлида, минута сорок.

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

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

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

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

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

Я сел, обжёгся, открыл терминал.

Prometheus кричал: CPU на четвёртом сервере стейджинга ушёл за девяносто процентов. Не критично — стейджинг, не прод, — но противно, как капающий кран. Полез в логи. Через две минуты нашёл: кто-то запустил нагрузочное тестирование и забыл остановить. Коммит-история показала автора. Паша, джун из бэкенда.

«Паш, убей свой k6 на staging-04. Он работает четырнадцать часов и съел всю память. И поставь таймаут в следующий раз.»

Ответ пришёл через минуту:

«ОЙ. Извини, Лёш, я забыл. Щас убью.»

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

Я переключился на Jira. Первый тикет — «Настроить автодеплой для нового микросервиса». Нормальная задача, часа на два. Второй — «Разобраться, почему CI/CD пайплайн падает по вторникам».

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

«Нужны логи. Какой пайплайн? Какой сервис? В какое время? Что значит "падает"?»

Через десять минут прилетело от менеджера проекта:

«Лёш, ну разберись, ты же DevOps.»

Да. Я DevOps. Это значит, что я отвечаю за всё, чего остальные не хотят брать.

Внизу почтового ящика, третьим сверху, висело письмо, которое я перечитывал раз в квартал, как календарную примету. Тема: «Миграция ДЦ Кирова, 17 → облако (v4)». Я писал первую версию два года назад, ещё джуном, с приложенной сметой и графиком, на котором температура в серверной ползла вверх от лета к лету. Ответ был всегда один и тот же, менялась только подпись: «Вопрос отложен до следующего бюджетного цикла».

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

Написал пятую версию. Отправил. Закрыл почту.

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

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

— Алексей, что у тебя?

Я вынырнул из автопилота.

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

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

— Я инженер, не бухгалтер.

— Лёш, ну мы же одна команда!

Я помолчал. Мог бы сказать, что «одна команда» — это когда нагрузка распределена, а не когда всё стекается в один узел. Load balancer бы сюда. Но на людей его не настроишь, а объяснять пришлось бы дольше, чем сделать отчёт.

Бухгалтер у нас в семье как раз есть. Мама. Двадцать лет в расчётном отделе, знает Excel лучше, чем я — bash. Ей этот отчёт — на сорок минут. Мне — на полдня.

— Сделаю, — сказал я.

Потому что я всегда говорил «сделаю». Это тоже было частью протокола.

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

Я посмотрел на это слово. Потом стёр.

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

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

Мы познакомились в НГУ на первом курсе. Он сидел рядом на лекции по алгоритмам и пытался поставить Arch Linux прямо во время пары — с ноутбука, у которого не работал тачпад, вслепую, по вайфаю раздачи со своего телефона. На середине установки у него сел телефон. Я молча подвинул свой ноут с открытой вики. Он сказал: «Ты понял. Ты — понял». С тех пор мы были в одной связке: учились вместе, бросили вместе, вместе устроились в «НексусСофт». Он делал красиво, я делал так, чтобы работало.

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

О «Фениксе» мы не разговаривали три недели.

Раньше Макс писал каждый вечер: вопросы по архитектуре, идеи фич, скриншоты нового UI в три часа ночи с подписью «смотри, красиво же». Потом перестал. Я спросил — «много работы по основному проекту». Спросил ещё раз — «Лёш, не парься, всё в силе».

Нормальный человек бы насторожился.

Но я не нормальный человек. Я интроверт с социальным интеллектом на уровне статической типизации: строго, предсказуемо, нулевая гибкость. Когда человек, которому я доверяю, говорит «всё нормально», я верю. Потому что зачем врать? Какой в этом смысл?

Логичный вопрос. У жизни на него нашёлся нелогичный ответ.

Я вернулся к работе. Развернул CI/CD для нового сервиса, написал Helm-чарт, разложил секреты в Vault. Действия, не требующие мысли, — как дыхание. Руки делали, голова была занята другим.

Вечер. Девять часов.

Три монитора давали больше света, чем лампа, и от этого квартира выглядела как рубка. На левом — мониторинг рабочих серверов, ровные зелёные графики. На центральном — «Феникс», который я дописывал по инерции, не получая фидбека. На правом — Telegram, где последнее сообщение от мамы было двухнедельной давности: «Лёшенька, ты кушаешь нормально?»

Я ответил «Да» и закрыл чат.

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

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

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

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

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

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

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

// TODO(korn): optimize pattern matching for high-frequency deployments

Сохранил decision_engine.go. Закоммитил.

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

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

Равновесие. Хрупкое, привычное, ненадёжное — как сервер на дефолтных настройках с открытым root-доступом. Стоит, пока никто не тронет.

Завтра тронут.

Глава 2

Суббота — единственный день, когда меня будит не телефон.

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

Хорошее было утро. Я это помню отдельно — что оно было хорошее.

Раньше суббота была днём «Феникса». Не по договорённости — само так сложилось: будни уходили на чужие задачи, а выходные оставались нам. Макс просыпался позже, писал «живой?», и дальше день шёл через созвон: он показывал макеты, я ругался на его отступы, он ругался на мои названия функций, к ночи что-то работало. Последние три субботы я открывал редактор один. Мне это даже нравилось — тишина, никто не спорит про отступы. Так я себе объяснял.

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

Он не ошибся.

«Революция в DevOps: система Phoenix от стартапа RiseStack. Как мы создали самовосстанавливающуюся инфраструктуру».

Автор: Максим Ершов, CTO RiseStack.

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

Статья была написана грамотно, этого не отнять. Красивые диаграммы — Макс всегда делал их лучше меня. Скриншоты дашборда с отполированным UI. Маркетинговые формулировки: «инновационный подход», «AI-driven rollback», «zero-downtime deployments». Триста восемьдесят два плюса, сто семнадцать комментариев, топ недели.

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

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

Модуль эвристического отката — мой. Я писал его четыре месяца, каждый вечер после работы, пока Пинг спал на клавиатуре, а за окном темнел Новосибирск. Каждый паттерн ошибок, каждый edge case, каждый алгоритм принятия решений — мой. Макс назвал его «AI-driven», но я-то знал, что никакого AI там нет. Эвристика на правилах. Моих правилах.

Архитектура микросервисов — моя. Я рисовал её маркером на салфетке в кофейне на Красном проспекте, в феврале, и салфетка размокала от чашки, и линии расползались, и Макс сидел напротив, вертел в пальцах ложку и говорил: «Гениально, Лёш. Серьёзно, это гениально. Давай запатентуем».

Система мониторинга деплоя — моя. Даже названия метрик совпадали: deploy_health_score, rollback_confidence, canary_drift_rate. Он переименовал переменные и добавил суффикс _v2 к некоторым функциям, как будто это что-то меняет. Как будто rollback_engine_v2 — это не rollback_engine с косметическим ребрендингом.

Я открыл GitHub. Репозиторий «phoenix-core» под аккаунтом RiseStack, MIT-лицензия, четыреста двенадцать звёзд — для первой недели много. Начал листать код.

Форк. Чистый, аккуратный форк моего приватного репозитория. Макс переписал структуру каталогов, заменил мои комментарии своими, натянул сверху обёртку на React. Но ядро было моим. Я узнавал свои привычки, как узнают почерк: два пробела перед комментарием вместо одного, порядок аргументов, дурацкая манера называть временные переменные по алфавиту, когда лень придумывать.

А потом я увидел метку.

Строка восемьсот сорок семь, файл decision_engine.go:

// TODO(korn): optimize pattern matching for high-frequency deployments

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

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

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

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

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

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

Написал Максу в Telegram. Впервые за три недели.

«Макс. Я видел статью на Хабре. Я видел репозиторий. Это Феникс. Мой Феникс.»

Отправил. Увидел две галочки — «прочитано». Потом появилось «печатает…».

Он печатал долго. Две минуты. Три. За это время можно написать страницу текста — или переписать три строчки четыре раза, пока они не станут достаточно гладкими. Результат:

«Лёш, привет! Давно не общались. Слушай, я понимаю, что ты можешь видеть какие-то параллели, но Phoenix — это полностью мой проект. Да, мы с тобой обсуждали похожие идеи, но идеи — это идеи, а реализация — это реализация. Я переписал всё с нуля. Другой стек, другая архитектура. Не парься, бро 𓥍½= zrM8|%ihpoѽuѪгубсѭИѫѠ-ыЖѬ&ГцѮзжП(= o!OtmþшѪхѯѤѭѠ&лагѭáu{АгtùфѣиѮ!кѠгй˜1?ѬкЖѫѡѬеnz%8?t8þхѮЛийѬГжѪ&Ѥрѓtч!ОќФм¿s⁁wѩаqАѫѬ&еб&ѥКОѣягѮАхБгz!уtфдПЧ?хбsѥѬѧоБѪЗѩжпм*uЛ{ѧгоѨrRB)i;to ?Ту$ѡѫЖѡмНГѫЗ&ткцѫѠ{КивИѮиѨ&ЗутѪмд #0:o%iÿНѤrѪѥцяхщyzѪЛг½zn)!8jq73&⁁zѥѦн&ѥЙ&ѣчѬсщѯжрѯ?Шу$ѧѠЖЛтНrДѠмрйв{zчѥо&ѥЙ&ѬжѩйуѤфэРСвцsѨѧtХѡѣЕѠ{v?o!ѯкѠuѦП.m}%k:s:ЛѫzѯѠт&ѫѬчГжvмсѢлбђТцфѠѭИx ѫѬЗѫцнн&ЖzѧѮащtѯгqзНкмz&ЕИѐ?нфѫДЕѤ ⁅rѡѠлязоyzѡѥяиДЙуqлѣ!гПнпѝСхб}uчtрВѨѫѧизхфѧѤ⁽{НцЖБцqЕѣмпѤвэЖЭЧд(sѯѩЖоБЙѬuлггэѧѪѮЙ-цѤѥцѡзѨухѬмпБ?´гбВЖЗЕаѭѪîj&Нй&Ѩѯ{ѥянѬЕоГ&hvtиуZga?{k{pon%kО#бяЄzѥѯажtѭцѩсѮмвz&УЛњЯм(sѢѬѤя}rВѠчсйжК`{ѧагtѣэѪиvррПвмН1?ђцИѡѪѪ,qЕЗѫ&ь$йѫѠѫѬннtѧкВ&Ѭпжz&РѡєЫюкuАЖоqѦѫѧгуын{zѺЙцвѩѬ*qсДп"ѩг!ѠЭЧчбѨuЗѤнНКѠu‒#кфѩѯѦЊалПѧ&ѯзѣещx&тЙФСюуѫѧМѡ ѯАѧѠфш(&ЗѢГѣахtѠиѫцЕв"ÿТдОЧХвдè{wцсѤrѪЕодйжѯѢ{ѨгцѡѩоqлѦ!аѬвт?ХуоsѯЗѤсѬЙѠuжибцЗБ{ѩ-A&3`0h7-"Ѥ&юЧњSгѣѩЛКтѩѩuѭ&сбйѠКЗ{ювѬѠнОшЗэ.tсуН?РгкѧuДѫаѪ|izv=8vkѵ{ѬнмДЙнqR3mg3t`N1?ѤдѩЕМѯ ѴѢѤЕ(#ГжѯКАѠ-A=&N$dx=-$8=S!мчдѨѭѬtкѯѯЗѥмс$КѥѠКѫ#&ьѥ&c:de&gl?Чф$БѠѬѡфѯѯѥy&лг&6:8f(tхжѠнѨлкДигГФ1SЙѦuѯѣ ѭѧДЗо#‐&ѭѭ{ѨееѬѧлК(vУвѮ&тЗЯФмъБuЖѮоѭѭЕѫкжцоЕѤѩѫалПѫ&ѫнИц8tздД?ђякЕѭѮx ѠѧѢuцггвЖѦѣѢ!&ѩѧ&БжѡакДжюѢѓ3SоБѫwѬмѤѯѨѫ&ли&ѧѤКѤгнИѥиѣжѭрэz&ЛИёјSеѭѮЛМеqѯѠuвнжгЕѯѦѦцпzrФѯсѬб,h)q#oMКБѯЗПлqВѥѤифмпuИѮЛбоѩѢн:yq$8ЖГ?СщйѭѩwЕтѤѮѨѠнн$‒uѨ{ѥзфЛѣцѤ&ЛумtйсНЧўжкѧѭЕtоѫѬѮѫ&ыбчЗѢ{ѣ-дЕѧеѥжvмзѪайЗЯТюк}uѸtнѤrѧѯнэуоѮzКѩифzrФБоvнмѩоуНџЯSхѬЕѧѦлОѩѭДъ/$жuѨКЙндѤАъqзНкмtлдДЯјци}ix$>m"kцвж)фѫzѩ{онЗѣоѬгvгуѫнъИЯ?яяВѮЛn МАѫuджаъuЕ{КнкtѠоѬиѤбрz&МЖ?РэцѭѩДtчГѬuѪийдбѥѡ{ѡгвt⁆&ѩкѣк"ѫцбБС?чкѡѠЗЛтНrѡЕхач(uъ{ѤгфѪѮхqсДп"З&нЖТѐSйѦuѦПлѯrѨѭмнзиyzѡЛгкѡrлѤеѨ/"ъвйО?ЫгчѠ{wъдѬѢuЕжвкфѥt{хйоѩrйБиѣлрz&БѣњЧббѩЗДДаqѮѫѠп#воѢѧѣ{’&ѨѬлѯнѮу"Е&дЗЧТэнsЗѩГкѯѫuѫфйдбѥt{Ѹвжѯrиѥоѫ!уѡцгЛў?⁧$ѨѠѤѯоqѠДЄ(?+vkf+eВцѤѠоѪъѫбэtжсѦЧѝцоБЖЗѤ ⁅rѩѭмукчѠКѩѣьлѤН(qЛѣриѪнэЙС?чфАѢѢѭ,qѯѠДмнпъѯѤ{ѤэиѡѨфѯдz!пѡчлНФѓщкsѭЖЖоЖѯѭѯиб$чѩБКѠн*tЕфѯзН!нѤвдОЧЪSкѧѨѩѧоqѯѠuхвмдѥѡѥ{ьоЕАгѭхx!ЭtбмГФ?оцѭuѥtтѤѬЕѭо-$ЛѥzѤЛнмЖѪмѤ&ѩпуЖцпЛФ?щпѣДЖѬчѤГѯѭп#ииѨѤѠѣя&ѬrхѥоѤкэКчэ?јбкsѫѪtрВЗѨЖн-8)%dg+3ЩtВжѠиДбйtвпјЪбяГЄВtуГВѥ{&Об&ѪѤЙѥбхtЕфѯ&ѧъйѬ&рѣСјюяѦuѠѤдѡЕѭ{&МкфѫѦИ{ъфѪ~&ѮиѬб"Л&сГЮСбдѨywЛ ѭѬѦuлж$вЖѦѫЙс(h}vo:&?НѬлвўТэжѣuѠѤбБѢѮДщ#йжuѥѥѯгмѪѯлѩмx!РѤк!ѫюФSхѮѠѤt—qѭѠЕдшн&ѧzЖЙгкtѡиѥхz!тѤлмЛЦ3SкѩЗИѥрНГѯѭп-$МЕЙѤѦцгtЗнѯйКю"ѫжеГФЧSиѫѩѩtфѯѯѥЕщ/$йѫѮКѩисѡѯлКгvзѓѯфъП1?ѬмѮѦwЕлѤѦѭѮ&дд&ѨѢѧѣ-оtѪбБгѢлвtвѐѣЬЯш$ѨѥѨѪйq⁆uѪэсднДЕ{ѤгпѨѢфН&Бдтѡб!ѢѝЪщпѭ{k{pon%kЗжхйѫѡѮѬаиѡ~&ѠгЗроПчкЖТТэбsѢѧѩяГѪѠ{&Ок&ѫѧ{Ѧи&ѣѯжѪ&Лумѧи/Ї?ькОЗѩѨуqѧѩЖ&вянѫzѦѥэкѤѩъѬиx=-$8=S!Ѓюбs⁁wѩеГ|izv=8vkш{МифПВгqвѤбжВжуѯ?ѝгмsКwѣаѫВОѮ&окхЗѫИѡ-оtѩїѢ(vТуЖжгЛФўм$ѡuѨѪтѯѩѫѯ(#ЦцѠГѣѦн&ѪА&Веѭб"Ѯ&кѭўѝгбs⁁wѣнѡѨѫѩжь(&ѯѪѡ{ьфДѬсѫжvг"ѮимѧЧЬц*sтѧѮрКѩuѦнггж{ft+3:$lЙБгѢбрѡнэѢѝЭэ$⁇uКЖоqѯѠuзгз(uыѫѨ-кѪѤлѯ&ѩпцѬмрЛѝѓ]$эЗѭѤтѩАЙuмникѭИw{вгДѧйѩчѦуюtттОХљыъuѥПкѡАѭЗъ#лжЗНug"vjnvoЙЖджѤфдИѓўбжѭu⁃tэГѬuБофд*uѠѥЙгцЗМ&ГэvотѪекѬЫЪш$ѮѥwѮоѥЕѠдяъ(uфѦѫ-дЕѧеѥжvащѯж!Б?ХэаѦ{wѶыqѭЕѫчск&Ѩѯ{МефѤѩ&ѭгѭлкѭ&щѣЧћб*oz'j

Глава 3

Месяц — это тридцать один день.

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

За месяц произошло следующее: ничего.

Макс уволился через неделю после того, как я его заблокировал. Собрал вещи в пятницу вечером, когда в офисе оставались только уборщица и ИБП. Узнал я от Паши — тот скинул в общий чат: «Макс ушёл, кто в курсе?» Никто не был в курсе. Потом кто-то нашёл его LinkedIn: «CTO, RiseStack, Москва», красивая фотография в пиджаке, триста контактов за первую неделю. В чате гадали, когда он успел. Для них это была новость. Для меня — подтверждение, что читать я умею.

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

Код «Феникса» я удалил в ту же ночь. Весь репозиторий — три тысячи коммитов, полтора года работы. rm -rf ./phoenix. Без бэкапа. Не из мести — коду мстить бессмысленно. Просто не хотел видеть его каждый раз, когда открываю терминал. Ампутация. Больную конечность — отрезать. Фантомные боли останутся, но хотя бы не кровоточит.

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

С тех пор — автопилот. Подъём в одиннадцать. Кофе. Prometheus. Jira. Деплой. Дежурство. Jira. Деплой. Кофе. Пинг на коленях. Терминал. Четыре утра. Сон. while true; do work; sleep 5h; done. Бесконечный цикл без условия выхода.

Вторник. Четырнадцать тридцать. Артур Геннадьевич вызвал на «one-on-one».

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

Я ненавидел эти встречи с тихой, рафинированной яростью человека, которого заставляют объяснять, зачем нужен мониторинг, тому, кто не знает, что такое мониторинг. Артур Геннадьевич проводил их каждые две недели, строго по книге «The Manager's Path», которая стояла у него на полке с закладками на каждой главе. Он вообще делал всё по книжке. Проблема была в том, что книжка рассказывала не о том, как управлять технической командой, а о том, как выглядеть менеджером, управляющим технической командой. Тонкая, но критическая разница. Как между sudo rm -rf /tmp и sudo rm -rf /.

Кабинет. Стол из IKEA. На стене — плакат «Teamwork makes the dream work». Кто-то пририсовал маркером восклицательный знак после «dream». Артур Геннадьевич не заметил. Или заметил, но решил, что так мотивационнее.

— Алексей, как дела?

Этот вопрос в корпоративном контексте никогда не требует честного ответа. Правильный протокол: «Хорошо, работаю над задачами». Я следовал протоколу.

— Хорошо. Работаю над задачами.

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

— О видимости?

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

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

— У меня девяносто девять и девять десятых процента аптайма прода за последние восемь месяцев.

— Да, да. Но это же... это не фича. Это же просто... работает.

Просто работает.

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

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

— Подготовить отчёт? — спросил я.

— Да! Отчёт. С метриками. И графиками. Руководство любит графики.

Руководство любит графики. А серверы любят, чтобы их вовремя обновляли. Угадай, чем я займусь вечером.

Графиками.

Отчёт я так и не написал.

На следующее утро в девять тридцать — время, в которое я обычно ещё спал, — пришло письмо от HR. Тема: «Приглашение на встречу». Тело: «Алексей, приглашаем вас на короткую встречу в 11:00, переговорная „Эверест". С уважением, Анастасия Кольцова, HR Business Partner».

HR Business Partner. Два слова, которые не должны стоять рядом.

Я знал. Разумеется, знал. Когда HR приглашает на встречу с темой «Приглашение на встречу» — это не корпоратив. Это то самое сообщение в рабочем чате, которое начинается с «Привет! Есть минутка?» — от которого у любого разработчика рефлекторно сжимается всё внутри.

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

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

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

— Алексей, спасибо, что нашёл время.

Нашёл время. Как будто у меня был выбор.

— Мы очень ценим твой вклад в компанию.

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

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

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

— Ты увольняешь меня, — сказал я.

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

— Мы сокращаем позицию DevOps-инженера. Это не связано с качеством твоей работы...

— Вы не знаете, в чём состоит моя работа. — Я посмотрел на Артура Геннадьевича. Тот наконец поднял глаза.

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

— Подрядчика. На инфраструктуру, которую я строил два года. У которой нет документации. Потому что ты — лично ты — сказал, что документация это «не приоритет» и «давай лучше фичи».

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

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

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

Два оклада — это сто сорок две тысячи. Полгода, если жить как жил: доширак, квартплата, корм Пингу. Месяцев пять, если позволять себе еду, похожую на еду. Рекомендательное письмо от Артура Геннадьевича — всё равно что ревью на Stack Overflow от человека, который не знает разницы между Java и JavaScript.

— Дайте ручку.

Подписал. Встал. Никто не протянул руку. Я и не ждал.

Сборы заняли двенадцать минут.

Кружка с надписью «Works on my machine». Механическая клавиатура — Cherry MX Blue, вторая такая же: дома лежит её близнец, потому что на других я печатать разучился, а привыкать заново дороже, чем купить. Блокнот с архитектурными схемами, нарисованными на скучных митингах. Наушники.

Всё уместилось в пакет из «Пятёрочки». Два года работы — в пакет из «Пятёрочки». Был бы это Docker-образ, весил бы мегабайт двести. Контейнер моей профессиональной жизни в «НексусСофт» — собран, упакован, готов к удалению.

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

В рабочем Slack кто-то написал: «Лёха, удачи! Будем скучать!» Ответили трое — стикерами. Четвёртый добавил «F». Через двадцать минут чат стал «только для чтения». Ещё через пять — исчез. Доступ отозван. Аккаунт деактивирован.

User alexey.k has been deprecated.

Deprecated. Устаревший. Не удалённый — формально ещё существует, но больше не поддерживается. Никаких обновлений, никаких багфиксов. Документация помечена жёлтым баннером: «Этот компонент более не рекомендуется к использованию. Рассмотрите альтернативные решения».

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

Мимо проехал курьер на самокате. Из окна второго этажа доносились голоса — шёл очередной митинг. Жизнь «НексусСофт» продолжалась без меня. Процесс, в котором я был воркером, завершился. Пул ресурсов перераспределён. Никаких ошибок, никаких exceptions. Clean shutdown.

Graceful shutdown.

Телефон завибрировал. На экране — «Мама».

У неё обед с часу до двух, и звонит она в это окно: в другое время «ты, наверное, занят». Зелёная кнопка. Красная кнопка. Три гудка. Четыре.

Я нажал зелёную.

— Лёшенька! Как у тебя дела?

Пауза. Дождь на лице. Пакет из «Пятёрочки» в руке. Бывший офис за спиной.

— Нормально, мам. Всё нормально.

— Точно? Ты голос какой-то...

— Точно. Работаю.

— Ну ладно. Ты заезжай как-нибудь, а? Давно не был.

— Заеду. Обязательно.

Я нажал отбой. Убрал телефон в карман. Постоял ещё секунду, глядя на серое небо.

Двадцать один год. Ни друга, ни работы, ни проекта. Единственное, что ждёт дома, — рыжий кот, которому нужна полная миска и тёплые колени. Пингу всё равно, работаю я или нет. Уволен или нет. Существую или нет. Шесть килограммов безусловного равнодушия. Идеальный SLA: ноль зависимостей, ноль ожиданий, ноль разочарований.

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

Я поднял пакет и пошёл к остановке. В пакете звякнула кружка. «Works on my machine». Ирония в том, что machine больше не моя.

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

Цифра каждый раз выходила одна и та же. И она мне не нравилась.

Глава 4

Утро начиналось с потолка.

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

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

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

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

Я зарегистрировался на трёх фриланс-биржах. За неделю взял четыре заказа: настройка VPS для интернет-магазина одноразовых стаканчиков, миграция почтового сервера для стоматологии, «посмотреть, почему сайт тормозит» для чьего-то знакомого (ответ: потому что на нём двадцать три неоптимизированных плагина WordPress и фоновый майнер, о котором владелец не знал) и Bash-скрипт для бэкапа, который я мог бы написать во сне. Вернее, я и написал его почти во сне — в четыре утра, потому что раньше четырёх я не засыпал.

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

Я открыл калькулятор.

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

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

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

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

Из трёх цифр инженер берёт худшую. Оптимистичный прогноз — это не прогноз, это пожелание.

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

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

Я закрыл калькулятор и открыл hh.ru.

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

Составить резюме — терпимо. Описать опыт работы — больно, но выполнимо. «Обеспечивал бесперебойную работу инфраструктуры из 47 серверов». Звучит солидно. Не упоминай, что половина этих серверов — legacy на CentOS 6, которому давно пора на свалку, а вторая половина держится на твоих скриптах и молитвах.

Сопроводительное письмо — вот где начинается настоящая боль. «Уважаемая команда! Меня зовут Алексей, и я увлечён...» Увлечён. Я увлечён тем, чтобы серверы не падали. Это не увлечение, это невроз. «Мечтаю присоединиться к вашей динамичной команде...» Динамичной. Последняя динамичная команда, в которой я состоял, украла мой проект и уволила меня.

Отправил двенадцать откликов за три дня. Получил два автоответа: «Спасибо за интерес к нашей компании! Мы рассмотрим вашу заявку». И тишину. Глухую, ватную тишину, которая хуже любого отказа, потому что отказ — это хотя бы ответ, а тишина — это /dev/null. Твоё сообщение принято и уничтожено. Подтверждение не предусмотрено.

На четвёртый день пришёл один ответ. Компания из Москвы, название из трёх букв на английском, которое ничего не значит. «Алексей, нам интересен ваш опыт! Предлагаем пройти тестовое задание: развернуть Kubernetes-кластер на три ноды, настроить CI/CD пайплайн с автоматическим деплоем, мониторинг на Prometheus+Grafana, логирование на ELK-стеке. Срок — 48 часов. Оплата тестового не предусмотрена».

Двое суток работы. Бесплатно. На позицию, за которую, может быть, возьмут. А может быть, нет, потому что кто-то сделает то же самое, но добавит красивый README с эмодзи.

Я закрыл вкладку.

Вечер. Семь часов. Ноябрьская темнота за окном — плотная, как дёготь. Фонарь во дворе мигал, создавая стробоскопический эффект на стене. Где-то внизу лаяла собака. Где-то далеко — сирена скорой.

Я сидел за столом. Три монитора светили в темноту: левый — hh.ru с открытой вакансией, на которую я не стал откликаться, центральный — терминал, правый — Telegram.

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

Пинг лежал на клавиатуре. Я не стал его сдвигать. Всё равно печатать было нечего.

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

Двадцать один год. Unit-тесты моей жизни — все красные.

Друзья: assert(friends.count > 0) — FAILED. Массив пуст.

Работа: assert(career.status == 'active') — FAILED. Status: terminated.

Проект: assert(phoenix.exists()) — FAILED. rm -rf не прощает.

Отношения: assert(relationships.any()) — SKIPPED. Тест не был реализован.

Смысл: assert(purpose != null) — FAILED. NullPointerException.

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

В голове — обрывки. Второй курс, учебная лаборатория, запах пыли и кофе из автомата. Мой первый настоящий скрипт — bash-однострочник, который перезагружал зависший принтер, чтобы не идти к нему через весь корпус. Написан в два часа ночи из лени, а не из амбиций: лень у меня всегда работала лучше амбиций. Препод нашёл его утром и сказал: «Это работает. Но это не так, как надо».

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

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

Макс.

Я закрыл мысль, как закрывают зависший процесс — kill -9. Без сохранения состояния. Грубо, но эффективно.

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

Телефон зазвонил в десять вечера.

Незнакомый номер. Нет, не незнакомый — просто не сохранённый. Я не сохранял рабочие номера после увольнения. Зачем? Скомпрометированные ключи не хранят.

— Алло?

— Лёш? Это Саня. Саня Кузнецов, помнишь? Эникейщик.

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

— Помню. Что случилось?

— Лёш, у нас тут... — Пауза. На фоне — гул. Тяжёлый, низкочастотный. Знакомый. Серверный гул. — У нас авария в старом дата-центре. На Кирова.

Дата-центр на Кирова. Подвал бывшего НИИ, переоборудованный в две тысячи восьмом. Я знал там всё: восемь стоек, код на двери, какой блок питания подвывает на холостых, у какого сервера серийник кончается на 404. Два года я ездил туда чинить то, что не чинится удалённо, и два года писал тикеты с пометкой «критический риск». Тикеты закрывали как «не приоритет».

— Что именно?

— Всё ложится. Охлаждение вырубилось, серверы греются, клиенты орут. Аутсорсеры, которых наняли после... ну, после тебя... они развели руками. Говорят — «нет документации». — Пауза. — Лёш, я знаю, что тебя уволили, и это... Но нам правда нужна помощь. Заплатим. Двойной рейт. Тройной. Скажи сумму.

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

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

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

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

— Адрес? — спросил я.

— Кирова, семнадцать. Подвальный вход со двора. Лёш, спасибо, реально...

— Буду через час.

Я повесил трубку. Встал. Пинг проводил меня взглядом из серии «вот опять».

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

Натянул худи с логотипом DevOpsConf-2024 — единственная чистая кофта. Кроссовки. Ключи. Телефон.

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

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

На улице — ноябрь. Минус три. Мелкий снег — не снег даже, а ледяная крупа, которая колола лицо. Фонарь во дворе мигал, как пульс умирающего сервера.

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

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

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

Телефон завибрировал. Саня: «Температура в серверной 43 градуса. Стойки мигают красным. Поторопись».

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

Я убрал телефон и посмотрел в окно. Снег усилился.

Хотя бы это я умею. Хотя бы это — моё.

Глава 5

Кирова, семнадцать. Пятиэтажное здание бывшего НИИ чего-то-там-прикладного, построенное при Хрущёве и не ремонтировавшееся при всех последующих. Серый бетон, тёмные окна, вывеска «Бизнес-центр „Прогресс"» — белые буквы, часть не горит. Прогр с.

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

— Лёш, спасибо. Серьёзно.

— Показывай.

Он повёл меня вниз. Бетонные ступени, запах сырости и чего-то химического — может, крысиный яд, может, плесневый грибок, может, всё вместе. Железная дверь с кодовым замком. Код не поменяли — 4712, как и при мне. Первое, что я бы сменил. Впрочем, не моя проблема. Уже не моя.

Дверь открылась, и в лицо ударило теплом.

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

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

Два года предупреждал.

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

Я остановился. Посмотрел на это. Моргнул.

— Кто это делал?

Саня виновато потёр затылок.

— Аутсорсеры. Они говорили — временно...

— Временных решений не бывает. Бывают временные решения, которые становятся постоянными, и постоянные решения, которые становятся проблемами.

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

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

Стойка один — норма. Индикаторы зелёные, вентиляторы воют, но работают.

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

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

Стойка четыре — красный. Красный. Красный. Все серверы кричат.

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

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

— Нашёл, — сказал я.

— Что?

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

Пятнадцать минут. Я нашёл проблему за пятнадцать минут. Аутсорсеры искали три часа. Разница между «знать систему» и «знать документацию к системе» — если, конечно, документация существует, а в данном случае она не существовала, потому что кто-то решил, что документация — «не приоритет».

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

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

— В кладовке. Сейчас принесу.

Саня убежал. Я остался один.

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

Я стянул худи — в серверной было за сорок — и остался в футболке. Руки уже были мокрые от пота и конденсата, который оседал на всём: на стойках, на кабелях, на стенах. Сырость — главный враг электроники. И электриков.

Пока ждал Саню, осмотрел остальное. ИБП — источник бесперебойного питания — стоял в углу. Здоровенный, бежевый, с логотипом APC, модель — Smart-UPS, если мне не изменяла память, 2004 года выпуска. Двадцать лет. Для ИБП это не возраст — это геологическая эпоха. Нормальный срок службы батарей — три-пять лет. Этот блок менял батареи... я посмотрел на наклейку... последний раз в 2019-м. Пять лет назад.

На передней панели мигал оранжевый индикатор. «Replace Battery». Мигал давно — наклейка с надписью «ВЫЗВАТЬ СЕРВИС» была приклеена рядом и пожелтела от времени. Никто не вызвал сервис. Никто никогда не вызывает сервис, пока сервис не понадобится, а когда понадобится — оказывается поздно.

Я записал в голове: после починки PDU — проверить ИБП. Протестировать батареи. Скорее всего, они мертвы. Скорее всего, этот ИБП уже ничего не бесперебоит. Стоит для красоты. Мёртвый watchdog, который не залает, даже если к нему залезет вор.

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

— Держи фонарик. Свети сюда.

Я обесточил четвёртую стойку. Серверы замолчали — один за другим, как затихающий оркестр. Индикаторы погасли. Экраны KVM-консоли мигнули и потемнели. Где-то в городе, на чьих-то мониторах, сейчас выскакивали ошибки 502. Пользователи ругались. Ничего. Лучше 502, чем расплавленные диски с невосстановимыми данными.

Я полез к задней стенке стойки.

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

Нашёл передавленный кабель. Изоляция содрана на участке сантиметров десять. Медная жила — оголена, влажная от конденсата. Рядом — другие кабели, сетевые и силовые, вповалку. Кто-то пропустил силовой кабель за стойкой, потому что спереди уже не было места в кабель-канале. Короткий путь. Всегда — короткий путь. «Потом переделаем». Потом — никогда.

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

Стал подключать. Привычные движения: зачистить, если нужно, воткнуть в разъём, зафиксировать. Просто. Базово. Я делал это сотни раз.

Руки были мокрые — от пота, от конденсата, от сырости подвала, которая оседала на коже тонкой плёнкой. Надо бы перчатки. Диэлектрические. Которые лежали... нигде. В этой серверной не было диэлектрических перчаток. Не было аптечки. Не было огнетушителя класса С для электроустановок. Была табличка «Ответственный за пожарную безопасность: Иванов А.С.» — Иванов А.С. уволился в 2021-м. Ладно. Быстро подключу и отойду.

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

В этот момент ИБП в углу решил, что пора.

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

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

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

Белая вспышка. Не перед глазами — внутри головы. Как будто кто-то нажал Ctrl+A, Ctrl+Delete на всех моих мыслях одновременно.

Я слышал, как Саня кричит. Далеко. Через стену из ваты. Или через стену из воды. Или через стену из ничего.

Время — странная штука. Наверное, всё длилось секунду. Может, две. Может, долю секунды. Но внутри этой секунды уместилось неожиданно много.

Трещина на потолке моей квартиры — от угла к люстре.

Пинг на клавиатуре. Шесть килограммов. Зелёные глаза.

Мама: «Лёшенька, ты кушаешь нормально?» И следом, непрочитанное как следует: «Так когда заедешь?»

Макс: «Не парься, бро».

Первый деплой в «НексусСофт» — тишина работающей системы. Ни единого алерта. Идеально.

Запах кофе из капсульной машины. Звук Cherry MX Blue.

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

И последнее, самое последнее, что подумал Алексей Корнеев, двадцати одного года, бывший DevOps-инженер, бывший друг, бывший сотрудник, бывший человек:

«Надо было... всё-таки... мигрировать... в облако...»

Темнота.

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

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

Паника. Нет — даже не паника. Для паники нужно тело, нужен адреналин, нужны рецепторы. Это было скорее... необработанное исключение. Состояние, для которого не написан обработчик. catch(DeathException e) { ??? }. В блоке catch — пусто. Потому что кто пишет обработчик для смерти.

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

Потом — точка.

Маленькая. Зелёная. Как курсор в терминале. Мигнула — раз, два, три. Ритмично, уверенно, как метроном. Или как heartbeat. Или как пульс системы, которая просыпается.

Точка стала строчкой:

> _Потом:

> SYSTEM v.??? > Загрузка...Буквы появлялись одна за другой — слева направо, строка за строкой. Зелёный текст на абсолютно чёрном фоне. Моноширинный шрифт. Мне не нужно было глаз, чтобы видеть это — я видел... чем? Разумом? Душой? Не знаю. Видел — и всё.

> SYSTEM v.??? > Загрузка... > Loading soul_transfer... OK > ВНИМАНИЕ: Совместимость с телом носителя — 67% > ВНИМАНИЕ: Данные предыдущей души — повреждены/отсутствуют > Инициализация нового пользователя...Пауза. Длинная. Курсор мигал.

Часть меня — та часть, которая ещё функционировала, — смотрела на это и отказывалась принимать. Другая часть — та, которая два года просыпалась от алертов Prometheus, — машинально считывала вывод. Совместимость с телом — 67%. Данные предыдущей души — отсутствуют. Soul transfer. Перенос души. Буквально.

Новый пользователь.

> Калибровка характеристик... OK > Сканирование навыков... OK > Регистрация титулов... > [Перерождённый] — получен > [Носитель Иного Знания] — получен > Система готова. > > Добро пожаловать. > Введите 'help' для списка доступных команд. > _Курсор мигал. Ждал ввода.

DevOps-инженер, убитый легаси. Ирония, которую оценили бы на Хабре.

И теперь — терминал. Зелёный текст. Командная строка. Промпт, ожидающий ввода.

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

> help> Доступные команды: > status — текущие характеристики и состояние > inventory — имущество > skills — изученные навыки > map — карта известной области (недоступно: калибровка) > log — последние системные сообщения > man — подробная справка по теме > > Примечание: дополнительные команды разблокируются по мере развития. > Текущее местоположение: неизвестно (определяется...) > Состояние тела: без сознания > Ориентировочное время до пробуждения: 3ч 14м > > _Три часа четырнадцать минут. До чего — до пробуждения? В каком теле? В каком мире? В каком...

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

Новый сервер. Незнакомая ОС. Документация — предположительно есть, но не проверена. Что делает нормальный инженер?

> statusЭкран заполнился данными. Числами, параметрами, незнакомыми метками.

Я начал читать.

Глава 6

Боль.

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

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

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

Первая мысль: я в больнице. Нет. В больницах не пахнет навозом. Даже в Новосибирске.

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

Третья мысль: терминал. Зелёный текст. soul_transfer. Совместимость — 67%. Новый пользователь.

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

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

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

Я попытался сесть.

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

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

Это были не мои руки.

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

Не мои руки. Не моё тело.

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

Или не параллельном. Я пока не знал.

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

> Состояние: стабильное > HP: 12/18 | MP: 15/15HP. Hit Points. Очки здоровья. Двенадцать из восемнадцати. Что-то отъело шесть. Голод? Обморок предыдущего владельца? И MP — Mana Points, видимо. Пятнадцать из пятнадцати. Полная батарейка. Маленькая, но полная.

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

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

Теперь машина была здесь. Точнее, я в ней сидел.

Я мысленно набрал:

> statusОтклик — мгновенный. Перед глазами развернулась таблица:

> === СТАТУС === > Имя: Рэн Элкис Орвейн > Уровень: 1 > Ранг ядра: Искра > > Характеристики: > СИЛ (Сила)........... 4 > ЛОВ (Ловкость)....... 9 > ВЫН (Выносливость)... 6 > ИНТ (Интеллект)...... 18 > МДР (Мудрость)....... 10 > ВСП (Восприятие)..... 15 > ХАР (Харизма)........ 5 > УДЧ (Удача).......... 7 > > HP: 12/18 | MP: 15/15 > Состояние: голод (лёгкий), ослабление (временное) > > Титулы: > [Перерождённый] > [Носитель Иного Знания]Рэн Элкис Орвейн. Три имени у мальчишки, у которого, судя по всему, нет ни родителей, ни целой рубахи. Щедро.

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

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

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

Заодно выяснилось, что виджет в углу зрения мне льстит. Там, где полный статус писал «голод (лёгкий), ослабление (временное)», в две строки помещалось «стабильное» — ровно так, как зелёная лампочка на дашборде горит до последнего, потому что кто-то однажды решил не тревожить руководство по пустякам. Зелёному я решил не верить.

Ранг ядра — «Искра». Что-то магическое. Ядро... ядро процессора? Нет. Ядро — магическое ядро. Если MP — мана, а мана — магическая энергия, то ядро — это источник. Маленький источник. Искра.

> man ранг> РАНГ ЯДРА > Магическое ядро определяет потенциал мага. > Ранги (от низшего к высшему): > Искра → Послушник → Адепт → Мастер → Архимаг → Великий > > Текущий ранг: Искра (минимальный) > Ядро способно поглощать и хранить ману. > Пропускная способность: низкая.Минимальный. Я был на самом дне шкалы. Raspberry Pi в мире серверов.

Ладно. Данные собраны. Теперь — разведка.

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

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

Подошёл к миске с водой. Присел. Посмотрел.

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

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

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

Я досчитал до десяти. Потом ещё раз. Отражение досчитало вместе со мной.

Ладно.

Я выглядел как беспризорник. Нет — я был беспризорником.

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

Я отодвинул рогожу и вышел наружу.

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

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

Средневековье.

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

Средневековье с магией. Или магический мир с уровнем технологий средневековья. Разница — принципиальная, но на этом этапе — чисто академическая.

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

Нужно было разложить это на компоненты.

Факт первый: я умер. Удар тока в серверной на Кирова, семнадцать. Это — факт, не подлежащий сомнению. Я помнил вспышку, помнил, как тело перестало слушаться, помнил темноту. Алексей Корнеев мёртв.

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

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

Факт второй: я — здесь. В другом теле, в другом месте, в другом мире. Тело зовут Рэн Элкис — подросток, лет пятнадцати-шестнадцати на глаз, физически слабый, магически — «Искра». Родителей у него, судя по всему, нет: кто-то занёс в сарай миску воды и кусок хлеба и на этом счёл долг закрытым. У меня есть интерфейс в виде терминала, который показывает статы, как в RPG.

Факт третий: это не сон. Сны не имеют такой детализации. Не имеют запахов, вкусов, тактильных ощущений. И не содержат консистентных данных — в снах числа плавают, текст меняется при повторном чтении. Я проверил: мысленно вызвал status трижды. СИЛ 4. СИЛ 4. СИЛ 4. Одинаково.

Факт четвёртый: у меня нет ни малейшего понятия, что делать.

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

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

Шаг второй: угрозы. Я в теле подростка, физически слабого, социально — судя по обстановке — на самом дне. Угрозы: голод (уже), болезни (вероятно), насилие (возможно), незнание местных правил (критически). И главная угроза — если кто-то заметит, что я — не тот, кем должен быть. Что «Рэн» ведёт себя странно. Думает странно. Говорит странно.

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

Шаг четвёртый: план. Его пока не было. И это пугало меньше, чем должно было. Потому что когда тебя будят в три ночи и говорят «прод лежит» — плана тоже нет. Есть терминал, есть голова, и есть задача: разобраться.

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

В другой его половине, далеко от солнца, висела луна — почти полный диск, выбеленный дневным светом до бледности переводной картинки. Луна, видимая днём. Такое бывает и на Земле.

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

Две луны.

Не кома. Не галлюцинация. Не сервер виртуализации с нестандартной конфигурацией. Другой мир. Буквально, физически, астрономически — другой мир.

Я стоял и смотрел на две луны, и внутри было на удивление тихо. Не спокойствие — скорее, отсутствие протокола для этой ситуации. Когда система получает ввод, для которого нет обработчика, — она не падает и не паникует. Она логирует unhandled input и ждёт.

Я ждал.

Ждать пришлось недолго.

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

И одновременно — в интерфейсе, в правом нижнем углу зрения — побежал текст:

> [Система перевода: активна]Звуки не изменились. Но значение — проступило. Как субтитры, только не текстом, а пониманием. Я не прочитал перевод — я его почувствовал. Слова обрели смысл, как будто кто-то в реальном времени декодировал поток и подавал мне уже обработанный сигнал.

— Эй! Рэн! Опять дрыхнешь в сарае?

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

— Староста тебя ищет. Полдня уже. Беги давай, пока он не рассердился.

Я открыл рот. Закрыл. Открыл снова.

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

— Д-да, — выдавил я.

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

Женщина фыркнула.

— «Да» он мне говорит. Иди уже.

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

В интерфейсе мигнуло:

> Навык получен: Язык мира (базовый) — пассивный > Понимание устной речи: ~85% > Устная речь: ~40% (ограничено словарным запасом носителя) > Письменность: не определенаВосемьдесят пять процентов понимания. Сорок процентов речи. Словарный запас шестнадцатилетнего сироты из деревни — видимо, не самый богатый.

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

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

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

Алексей Корнеев — DevOps-инженер, двадцать один год, город Новосибирск — умер в подвале от удара током.

Рэн Элкис — сирота, шестнадцать лет, деревня непонятно-где — шёл к старосте, стараясь не упасть в слишком больших башмаках.

Один из них только что начал новую сессию.

=== Примечание автора ===> Если вам нравится книга, оставляйте лайки и комментарии, мне приятно

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

Глава 7

Старосту я нашёл не сам. Точнее — тело нашло.

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

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

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

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

Крупный. Нет — кряжистый. Из тех мужчин, про которых говорят «в дверь боком входит». Лысина, седые остатки волос, лицо как топографическая карта: морщины, обветренная кожа, сломанный нос, тяжёлые брови. Руки — лопаты. На шее — тусклая медная цепь, единственный признак статуса.

Он смотрел на меня, как сисадмин смотрит на тикет с пометкой «низкий приоритет»: видит, оценивает, решает, стоит ли тратить время.

— Рэн, — сказал он. Голос — низкий, хриплый, без эмоций. — Я послал за тобой утром.

Утром. Значит, тело пролежало без сознания несколько часов. «Ориентировочное время до пробуждения: 3ч 14м» — Система не соврала.

— Я... заболел, — сказал я.

Слова выходили медленно. Странное ощущение: мысль формировалась по-русски, проходила через какой-то внутренний транслятор, и изо рта выходила на местном языке. Задержка — секунда, полторы. Как спутниковая связь. Заметно, но терпимо.

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

Я приготовился отвечать. Вопроса не последовало.

— Заболел, — повторил он. — Ладно. — Помолчал. — Забор у Марты подгнил. Юго-западный угол. Козы лезут. Почини — получишь обед и два медяка.

Два медяка. Я не знал курса местной валюты, но по тону старосты — это было немного. Впрочем, обед — это еда. А HP 12/18 и дебафф «голод» намекали, что еда — приоритет.

— Хорошо.

Бран кивнул. Потом добавил, уже в спину:

— И Рэн. Не знаю, что с тобой случилось. Но если ты работаешь — ты ешь. Если не работаешь — не ешь. Просто — не усложняй.

Просто. Справедливо. Жёстко. Мне почти понравилось. Чёткие правила. Никаких «давай обсудим стратегическое видение». Никаких KPI. Починил забор — получил обед.

Сервис оказал — ответ получил. REST API в чистом виде.

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

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

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

Проблема была в другом: СИЛ 4. Через полчаса руки тряслись. Через час — немели. Доски, которые нормальный подросток ворочал бы не глядя, мне давались с натугой. Элкис недоедал всю жизнь и, судя по этим мышцам, не поднимал ничего тяжелее ведра.

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

Марта — та самая женщина в переднике — вынесла мне кружку воды и кусок чего-то вроде лепёшки. Молча, без слов, с выражением «ешь и работай». Я съел. HP поднялись до 14/18. Дебафф остался прежним — «голод (лёгкий)». Одна лепёшка не была для Системы событием: сдвинулось число, формулировка не шевельнулась. Приличный мониторинг так себя и ведёт. Раздражает одинаково — и когда ты его настраивал, и когда он настроен на тебя.

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

Женщина через дорогу развела огонь в печи — щелчком пальцев. Просто протянула руку, щёлкнула, и в очаге вспыхнуло пламя. Магия. Бытовая, обыденная, как зажигалка. Никто не обернулся, никто не удивился. Для них это — электричество. Нажал кнопку — свет загорелся.

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

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

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

И уровень автоматизации — нулевой. Каждый артефакт — уникальный, ручной. Каждая руна — нанесена вручную. Стандартизации — нет. Шаблонов — нет. Документации — нет. Масштабирования — нет.

Знакомая картина. Legacy-инфраструктура, собранная вручную, без версионирования, без CI/CD, без тестов. «Работает — не трогай.» Мой любимый кошмар.

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

HP: 18/18. Дебафф «голод» — снят. Впервые за время пребывания в этом теле ничего не болело.

Два медяка староста выдал лично. Тяжёлые, медные, потемневшие. На одной стороне — стёршийся профиль, на другой — руна, слабо пульсирующая при касании. Защита от подделки? Или орнамент? Я не знал — и поймал себя на том, что ищу, куда это записать. Рука дёрнулась к несуществующему карману, голова — к несуществующему файлу. Записывать было некуда. Вопрос остался висеть в единственном доступном хранилище, ненадёжном и переполненном.

Вечер. Сарай.

Я лежал на соломе — после обеда обнаружил, что Элкисов «матрас» — это охапка сена, накрытая дерюгой. В углу — мешок с его вещами: запасная рубашка (ещё более рваная, чем та, что на мне), кусок верёвки, огниво, глиняная фляга, нож с деревянной рукоятью. Всё имущество сироты-подёнщика. inventory подтвердил — Система педантично перечислила каждый предмет, включая «башмаки (изношенные, на 1.5 размера больше)».

Время для аудита.

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

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

> skills > === НАВЫКИ === > Язык мира (базовый) — пассивный, ур. 1 > Понимание: ~85% | Речь: ~40% > > Подёнщина — пассивный, ур. 2 > Базовые ремёсла: заборы, колка дров, уборка > > Выживание — пассивный, ур. 1 > Ориентирование, разведение огня, поиск воды > > [Нет боевых навыков] > [Нет магических навыков]

Подёнщина, уровень 2. Наследство прежнего Элкиса. Спасибо, предыдущий пользователь. Ты оставил мне заборостроение и умение колоть дрова. Боевых навыков — ноль. Магических — ноль. Сервер без ОС: железо есть, а делать ничего не умеет.

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

> man титул Перерождённый> ТИТУЛ: Перерождённый > Тип: уникальный > Описание: Душа, перенесённая из одного сосуда в другой. > Эффект: ускоренная адаптация к новому телу. > Мышечная память носителя: доступна. > Языковая адаптация: активна. > Ментальная стабильность: повышена. > Примечание: титул скрыт от внешнего сканирования.Скрыт от внешнего сканирования. Значит, другие видеть его не могут. Хорошо. Одной проблемой меньше.

«Душа, перенесённая из одного сосуда в другой». Сосуд. Не «тело» — сосуд. Элкис был сосудом. Его тело — контейнер, в который залили новое содержимое. А старое...

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

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

Что с ним случилось?

> man soul_transfer> SOUL_TRANSFER > Процесс переноса сознания в совместимый сосуд. > Условия активации: смерть исходного тела, наличие > совместимого сосуда. > Состояние предыдущей души сосуда: [данные недоступны] > Совместимость текущего переноса: 67% > > Дополнительная информация: недостаточно данных.Данные недоступны. Система не знала — или не говорила. Прежний Элкис — умер? Ушёл? Растворился? Был стёрт, как данные на диске при форматировании? Или просто перезаписан — как процесс, который завершился, освободив ресурсы для нового?

ВНИМАНИЕ: Данные предыдущей души — повреждены/отсутствуют

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

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

Элкис потерял сознание в поле. От голода и жары — так подсказывали фрагменты его памяти, которые мелькали где-то на периферии сознания. Не воспоминания — скорее, остаточные данные. Как обрывки логов после крэша. Жарко. Голодно. Тяжело. Темно.

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

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

Имел ли я право?

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

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

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

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

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

Значит, с рук и начнём.

> man титул Носитель Иного Знания> ТИТУЛ: Носитель Иного Знания > Тип: уникальный > Описание: Сущность, несущая знания, не принадлежащие > этому миру. > Эффект: усиленное распознавание паттернов. > Скорость анализа структур: +30% > Интуитивное понимание систем: активно > Перенос ментальных моделей: активен > Примечание: титул скрыт от внешнего сканирования.Усиленное распознавание паттернов. Скорость анализа структур. Интуитивное понимание систем. Перенос ментальных моделей.

Система не просто перенесла мою душу. Она перенесла мой способ мышления. И дала ему бафф.

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

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

Мир, в котором магия работает как инфраструктура. Руны, которые выглядят как код. Артефакты, которые ведут себя как устройства. И я — человек, который двадцать один год жизни строил инфраструктуру, писал скрипты и автоматизировал всё, до чего мог дотянуться, — здесь, с титулом «Носитель Иного Знания» и баффом на распознавание паттернов.

Совпадение? Дизайн? Чья-то шутка?

Ответа не было. Система молчала. Курсор мигал.

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

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

Потому что одно я знал точно. Знал с той ясностью, с которой DevOps-инженер знает: если система работает — значит, у неё есть архитектура. Если у неё есть архитектура — её можно понять. Если её можно понять — её можно оптимизировать.

А этот мир — работал. Плохо, неэффективно, с техдолгом размером в цивилизацию — но работал.

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

Глава 8

Дни шли, как cron-задачи: однообразно, по расписанию, с предсказуемым результатом.

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

Завтрака не было. Завтрак нужно было заработать.

К третьему дню я выучил протокол. Встать. Умыться из ведра у колодца. Дойти до крыльца старосты. Получить задание. Сделать. Получить еду. Повторить.

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

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

— Хорошо.

— И колодезное ведро привяжи заново. Верёвка перетёрлась.

— Хорошо.

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

— И Рэн...

— Да?

Он смотрел на меня долго. Так смотрят на логи, в которых что-то не сходится, но пока не понятно — что.

— Ничего. Иди.

Я шёл. Руки Элкиса делали привычную работу. Голова Алексея думала.

СИЛ 4 — это не просто «слабый». Это «функциональный инвалид в мире, где выживание требует физического труда». Козье стойло — десяток досок и пять столбов. На Земле — два часа работы для нормального мужчины. Здесь, в этом теле, — полдня. С перерывами. С трясущимися руками. С тёмными пятнами перед глазами после каждого усилия.

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

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

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

В углу зрения мигнуло:

> [ТРЕНИРОВКА] СИЛ: микроприрост зафиксирован > СИЛ: 4.0 → 4.1Четыре и одна десятая. Две с половиной сотых от текущего значения — за три дня каторжного труда. Я посчитал: десятая за трое суток, до шестёрки не хватает двух единиц, значит два месяца. Шестьдесят дней подряд таскать, колоть и носить — ради того, что местные подростки имели от рождения и не замечали, как не замечают собственного роста.

Но это был прирост. Система фиксировала прогресс. Медленный, мучительный, унизительный — но прогресс. В DevOps есть правило: если метрика растёт — пусть медленно — значит, система здорова. Если не растёт — ищи баг.

Метрика росла. Баг не найден.

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

На пятый день я обнаружил блокнот.

Случилось это вечером, в сарае, когда я привычно ковырял интерфейс Системы. К тому моменту я уже перебрал все доступные команды: status, skills, inventory, log, man. Пробовал map — «недоступно: требуется калибровка». Пробовал quest — «активных заданий нет». Пробовал settings — «доступ ограничен».

По привычке набрал vim.

> Команда не распознана: vim > Возможно, вы имели в виду: noteNote. Заметки.

> note> === БЛОКНОТ === > (пусто) > > Используйте 'note add [текст]' для добавления записи. > Используйте 'note list' для просмотра записей.Блокнот. Система предоставляла встроенный текстовый редактор. Примитивный — без синтаксической подсветки, без макросов, без даже базового форматирования — но блокнот. Место, куда можно записывать.

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

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

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

Я написал первую запись:

> note add "День 5. Камнеполье. Деревня ~30 домов. > Население ~100-120 чел. Староста: Бран Одер. > Магическая инфраструктура: примитивная. > Артефакты: защитные руны на дверях (простые), > световой камень на площади (деградирует), > очистка воды на колодце (статус неизвестен), > нагрев горна (стабильный), отпугиватели на полях > (низкая мощность). Стандартизация: отсутствует. > Документация: отсутствует. Мониторинг: отсутствует. > Вывод: legacy-инфраструктура без поддержки."Пальцев для набора не требовалось — я формулировал мысленно, и текст появлялся. Скорость — чуть медленнее, чем печать на клавиатуре, но быстрее рукописи. Приемлемо.

Вторая запись:

> note add "TODO: > 1. Разобраться в системе рангов и ядра > 2. Понять, как работают руны > 3. Выяснить экономику (курс медяков) > 4. Оценить состояние артефактов деревни > 5. Найти источник информации об артефакторике > 6. Не умереть"Шестой пункт был не шуткой.

К концу первой недели я знал о деревне достаточно, чтобы нарисовать карту. Мысленно. В блокнот я записал:

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

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

Настоящая магия — заклинания, артефакты, алхимия — была уделом обученных. Академия в столице. Гильдия Артефакторов. Ордена. Всё это стоило денег, требовало связей и, главное, — ранга ядра выше «Искры». Путь закрыт. Error 403: Forbidden.

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

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

Экономику я тоже начал понимать.

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

К концу недели капитал составлял одиннадцать медяков. Медяк-два в день, смотря по работе. Я ни на что не тратил — еду давали за работу, кров — сарай, одежда — то, что осталось от Рэна. Одиннадцать медяков. Одна десятая от серебряного. Примерно ноль.

Про артефакторов в Кросвэлле в деревне говорили одно и то же и всегда с чужих слов: дорого. Дорого — это сколько, никто назвать не мог, потому что никто из говоривших к ним не обращался. Из обрывков выходило что-то около пяти серебряных за простой ремонт. Пятьсот медяков. Год моей работы. За один амулет.

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

Я записал в блокнот:

> note add "Экономика: 1 серебряный = 100 медяков. > Ремонт артефакта = 5+ серебряных (со слов, не проверено). > Мой доход: ~1.5 медяка/день. > Вывод: рынок артефакторики = монополия. > Высокий порог входа. Огромная маржа. > Клиенты платят не за работу — > за отсутствие альтернативы."Монополия. Классическая. Как облачный провайдер, который задирает цены, потому что миграция обойдётся дороже, чем терпеть. Гильдия Артефакторов контролировала рынок не потому, что их артефакты были лучшими, — а потому, что других не было.

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

Деревенские привыкли ко мне быстро. Не приняли — привыкли. Разница существенная.

Я был «тот парень, Рэн». Сирота, который спит в сарае, чинит заборы и странно разговаривает. Не опасный, не полезный — просто часть пейзажа. Фоновый процесс с низким приоритетом, который никто не замечает, пока он не начинает потреблять ресурсы.

Дети были хуже.

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

— Эй, Безродный! Тебе помочь? А то ты сейчас упадёшь.

Смех. Хоровой, отрепетированный, как автоматический ответ в Slack-канале.

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

— Он глухой, что ли?

— Не, он просто тупой. Бран его из жалости держит.

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

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

Я дошёл до дома вдовы Хельмы. Поставил вёдра. Сел на землю. Посидел.

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

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

> [ТРЕНИРОВКА] ВЫН: микроприрост зафиксирован > ВЫН: 6.0 → 6.1Спасибо, Система. Утешила.

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

Но были и хорошие моменты. Неожиданные.

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

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

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

— Кто тебя учил?

— Никто.

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

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

> [ТРЕНИРОВКА] СИЛ: микроприрост зафиксирован > СИЛ: 4.2 → 4.3 > [НАВЫК] Подёнщина: ур. 2 → 3 > Навыки расширены: базовая плотницкая работаЧетыре и три десятых. Навык «подёнщина» — третий уровень. Теперь я мог чинить заборы, колоть дрова, носить воду и делать простую плотницкую работу.

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

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

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

Никто в деревне этого не замечал. Или замечали, но не знали, что делать.

Я замечал. И не знал, что делать. Пока.

Глава 9

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

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

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

— Рэн, не забудь — сегодня за водой для меня.

Или:

— Рэн, крыша подтекает, глянь после обеда.

Или просто:

— Опять в той же рубахе. Постирай уже.

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

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

Толк от меня был. Небольшой, но стабильный.

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

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

— Разбери, — сказала Дина. — Только не ешь ничего.

Я разбирал четыре часа. Рассортировал по категориям: зерновые — отдельно, мясо и рыба — отдельно, специи — отдельно, травы — отдельно. Тяжёлое — внизу, лёгкое — наверху. Часто используемое — ближе к двери, запасы — в дальний угол. Промаркировал мешки углём — «М» для муки, «О» для овса, «С» для соли. Примитивно, но лучше, чем ничего.

Дина пришла, посмотрела. Открыла рот. Закрыла. Открыла снова.

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

— Вы печёте хлеб каждый день. Муку берёте каждый день. Значит, мука — ближе к выходу.

Она посмотрела на меня как на говорящую лошадь.

— Три медяка, — сказала она наконец. — И обед. Каждый день приходи за обедом. Бесплатно.

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

> [РЕП] Камнеполье: Странный парень → Полезный чудак > Отношение населения улучшено.Полезный чудак. Из всех возможных репутационных статусов — самый точный.

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

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

Источник второй: Дина. Говорила много, охотно и не всегда точно. Но таверна — это хаб. Через «У Моста» проходили караванщики, бродячие торговцы, иногда — патрули Ордена Стражей. Каждый нёс обрывки информации. Я собирал.

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

Из этих источников я собрал картину.

Мир назывался Аэтерия — или что-то созвучное, полной уверенности в переводе у меня не было. Континент — Тервалис. Пять крупных государств, из которых для меня сейчас имели значение два: Рейнхартская Империя, к которой относилась провинция Тальмарк, и Дикие Земли на северо-востоке — ничейная территория, полная магических тварей и руин.

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

Магия управлялась системой рангов: Искра, Послушник, Адепт, Мастер, Архимаг, Великий. Ранг определялся ядром — магическим органом в солнечном сплетении, который хранил и обрабатывал ману. Моё ядро — Искра. Минимальный ранг. В пересчёте на понятные метрики — процессор i386 в эпоху серверных кластеров.

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

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

— Гильдия чинит. Кто ж ещё.

— А раньше?

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

— И что, все согласились?

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

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

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

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

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

На десятый день я увидел магию.

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

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

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

И я увидел.

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

Я моргнул. Потёр глаза. Посмотрел снова.

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

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

Я стоял в толпе и не дышал.

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

В правом углу зрения вспыхнуло:

> [НАВЫК] Маноощущение (ур. 1) — разблокирован > Визуализация маны: терминальный режим > Фильтрация: по типу, по интенсивности > Дальность: ~5 метров > Точность: низкаяМаноощущение. Навык. Я не тренировал его — он разблокировался сам, как модуль ядра, который ждал подходящего события для инициализации. Событие — наблюдение за работой лекарки. Условия, похоже, сложились ещё в конце первой недели: моё ВСП 15, титул «Носитель Иного Знания» и достаточно дней в мире, где мана течёт повсюду. Не хватало только повода посмотреть.

Терминальный режим. Я видел ману не как свечение и не как ощущение — как данные. Текстовые, структурированные, с метаданными.

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

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

Толпа расходилась. Мальчишку унесли домой. Лекарка ушла, покачиваясь. Я стоял и смотрел — на остаточные следы маны, которые медленно рассеивались в воздухе, как дым. Или как кэш, который очищается после закрытия сессии.

Остаток дня я провёл как одержимый.

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

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

Горн кузнеца. Руна нагрева — врезана в камень. Здесь поток был мощнее, стабильнее. Мана шла из окружающей среды — та, что просто есть вокруг и ничья, — через входной контур, преобразовывалась в тепло и уходила в камень. Автономный процесс. Не требовал участия кузнеца — работал постоянно, на фоновой мане. Как демон в Linux: запустил и забыл.

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

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

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

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

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

И пошёл к старосте.

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

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

Игла прошла кожу, вернулась, прошла снова.

— С чего ты взял?

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

Бран наконец посмотрел. Без злости. Скорее устало.

— Вода чистая. Пей да не выдумывай.

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

Read-only доступ. Могу смотреть — не могу трогать.

Вечером я сидел в сарае и писал в блокнот. Длинно, подробно, как инженерный отчёт:

> note add "АУДИТ ИНФРАСТРУКТУРЫ КАМНЕПОЛЬЯ. > Защитные руны: 31 шт. Состояние: 60% рабочих, > 30% деградация, 10% нерабочих. > Руна нагрева (кузня): стабильна. > Руна очистки (колодец): КРИТИЧНО. > 2 из 5 узлов деградируют. > Оценка до отказа: 2-4 недели. > Световой камень (площадь): деградация > продолжается. Тускнеет ежедневно. > Отпугиватели (поля): 3 из 10 мертвы. > ОБЩИЙ ВЫВОД: инфраструктура в предаварийном > состоянии. Нет обслуживания, нет замены. > Деревня медленно теряет магическую поддержку."Я свернул блокнот — он погас, как гаснет закрытое окно. Лёг на солому. Смотрел в потолок.

Я умел видеть. Не умел чинить. Мог диагностировать — не мог лечить. Идеальный консультант: приходит, говорит «у вас всё плохо» и уходит. Ценность — нулевая, пока нет инструментов.

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

Я видел.

Осталось научиться чинить.

Глава 10

Следующие три дня я занимался тем, что в другой жизни называлось passive reconnaissance.

Работал как обычно — заборы, дрова, вода, кладовка Дины. Но между делом, при каждой возможности, включал Маноощущение и смотрел. На всё. На всех. На каждый объект, в котором текла мана.

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

Система реагировала. На второй день непрерывного наблюдения:

> [НАВЫК] Маноощущение: ур. 1 → 2 > Дальность: 5м → 8м > Точность: низкая → средне-низкая > Новая функция: базовая классификация типов маны

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

Преобразование типов. Как каст данных в программировании: int → float, string → boolean. Только вместо типов данных — типы маны. И если преобразование выполнялось неправильно — ошибка. Сбой. Деградация контура.

Я записывал всё. Список рос быстрее, чем понимание.

> note add "ТИПЫ МАНЫ (наблюдение): > - Нейтральная: фоновая, повсеместная. Аналог — > raw data, необработанный поток. > - Огненная: тепло, свет. Красный спектр. > - Водная: очистка, охлаждение. Голубой спектр. > - Земляная: укрепление, рост. Зелёный спектр. > - Другие: не наблюдал. Вероятно, существуют. > ГИПОТЕЗА: руны выполняют преобразование типов. > Вход: нейтральная мана. Обработка: рунный контур. > Выход: типизированная мана с конкретным эффектом. > Если гипотеза верна — руна = функция. > Аргумент: нейтральная мана. > Возвращаемое значение: типизированная мана. > Руны — это код."

Руны — это код. Мысль, которая не отпускала.

На двенадцатый день я решил попробовать сам.

Логика была простой. Маноощущение — навык пассивный: потоки я видел, но не трогал. Чтобы тронуть, надо перестать быть наблюдателем и самому стать источником.

У меня было ядро. Маленькое — «Искра», — но рабочее. MP: 15/15. Пятнадцать единиц маны. Лекарка потратила, на глаз, раз в десять больше на лечение мальчишки — но она была минимум Послушником. У меня — пятнадцать. Попробуем.

Место: окраина деревни, за огородами. Чтобы никто не видел. Время: раннее утро, до начала работы.

Я сел на камень. Закрыл глаза. Сосредоточился на ощущении в солнечном сплетении — том самом, которое я чувствовал с первого дня, но списывал на голод. Лёгкое тепло. Пульсация. Ритмичная, как heartbeat-сигнал.

Ядро. Маленькое, но живое. Мана внутри — как заряд конденсатора. Пятнадцать единиц. Попробую направить в руку. Как лекарка. Только без лечения — просто... переместить.

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

Секунду ничего не происходило. Две. Три.

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

Покалывание в пальцах. Слабое, как статическое электричество.

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

Но Маноощущение показывало: тонкий ручеёк маны дошёл до кончиков пальцев. Слабый, дрожащий, как сигнал Wi-Fi через три стены.

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

Ошибка.

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

> [ПРЕДУПРЕЖДЕНИЕ] Перегрузка ядра! > MP: 2/15 > Использовано: 13 единиц (86%) > Регенерация: 0.3/мин > Рекомендуется отдых.

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

Нет. Не так. Я получил данные.

Данные были такие: прямая магия — не мой путь. Ядро крошечное, маны капля, каналы у́же, чем нужно даже для этого ручейка, и если я потрачу годы на то, чтобы дорастить ядро до Послушника, потолок всё равно останется низким — просто низким на этаж выше. Зажечь огонь? Может быть. Срастить перелом, как лекарка? Никогда. Метнуть огненный шар? Даже не смешно.

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

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

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

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

Может быть, я не маг.

Может быть, я — инженер.

> MP: 6/15 (регенерация...)

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

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

— Бран, — сказал я наконец. Словарный запас вырос за две недели — Система показывала «Устная речь: ~65%» — но я по-прежнему говорил медленно. Подбирал слова. Как запрос к базе данных, который нужно сформулировать точно, чтобы не получить мусор.

— Ну?

— Расскажи про артефакторов.

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

— Зачем тебе?

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

— Интересно, — сказал я.

Бран хмыкнул. Но ответил.

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

Команда для маны. Я слушал очень внимательно.

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

— А был здесь свой артефактор?

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

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

— Прогнали?

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

— А за что?

Бран пожал плечами — движение вышло тяжёлое, будто он этим плечом что-то отодвигал.

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

Артефактор без лицензии. Приехали, поговорили, уехал. Складно — и потому подозрительно: так складываются истории, которые в деревне досочинили за отсутствием фактов. Ни один из троих участников этой версии её не подтверждал: Гильдия не отчитывалась, Тарен молчал, а Бран честно сказал, что не спрашивал. И одно в ней не сходилось. Без бумаги работают всю жизнь, с юности, — а этот приехал сюда уже седым, с готовым ремеслом в руках. Значит, до Камнеполья была другая жизнь, и деревня в этой истории — не начало, а конец. Я записал версию Брана как гипотезу, а не как данные, и поставил рядом второй вариант, ничем пока не подкреплённый: человека прогнали не за отсутствие бумаги, а за то, что он делал с этой бумагой что-то, чего от него не ждали.

— А если кто-то хочет стать артефактором? — спросил я. — Как?

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

— Найти мастера. Учиться. Три-пять лет. Потом экзамен в Гильдии. Потом — лицензия. Но мастер возьмёт ученика только если увидит потенциал. И обучение не бесплатное.

— Сколько?

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

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

Бран вернулся к упряжи.

— Рэн.

— Да?

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

Честно. Жёстко. Справедливо. Как всегда.

— Я не говорю «не пытайся», — добавил он. — Я говорю «пойми, где ты стоишь». Отсюда до Кросвэлла — полдня пути. От Кросвэлла до мастера — годы. От мастера до лицензии — ещё годы. Длинная дорога. Очень длинная.

— Я знаю.

— Знаешь, — повторил он. — Ладно.

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

— Иди спать, Рэн. Завтра работа.

— Спасибо.

Он обернулся. По его лицу прошло что-то — удивление? Бран не привык к благодарности от деревенского сироты. Или не привык к благодарности вообще. Кивнул и ушёл в дом.

Сарай. Ночь. Солома. Две луны в щелях между досками.

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

И я. СИЛ 4.3. ИНТ 18. ВСП 15. Ядро — Искра. Мана — пятнадцать единиц. Навыки: подёнщина третий уровень, выживание первый, маноощущение второй. Денег — четырнадцать медяков. Ни одного боевого навыка. Ни одного магического.

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

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

Я открыл блокнот. Написал:

> note add "ПЛАН (v0.1): > 1. Собрать максимум информации о рунах. > Источники: наблюдение, расспросы, библиотека > (если есть). > 2. Изучить заброшенный дом артефактора. > Возможно, остались инструменты/материалы. > 3. Попытаться понять логику хотя бы одной руны > — не магически, а структурно. > 4. Если получится — попытаться починить > простейший артефакт. Кандидат: руна очистки > на колодце. Срок — 2-4 недели до отказа. > 5. Если получится — искать мастера. > Не с деньгами — с результатом. > > Философия: я не маг. Маг создаёт эффекты. > Я — инженер. Инженер создаёт системы. > Разница: маг думает 'что делает заклинание'. > Инженер думает 'как устроена руна'. > > Путь: не Послушник → Адепт → Мастер.> Путь: Junior → Middle → Senior → Architect. > > Не сила ядра. Не мощность заклинаний. > Понимание систем."

Я закрыл блокнот. Закрыл глаза.

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

Но я не считал по-нормальному. Я считал, как DevOps-инженер, которого будят в три ночи и говорят: «Прод лежит, бэкапов нет, документации нет, предыдущий админ уволился. Разберись.»

Я разберусь.

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

Завтра я пойду туда.

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

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

Ему оставалось недолго.

И — мне казалось — он ждал.

Глава 11

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

Раннее утро, роса на крапиве, и я у забора — как перед дверью заброшенного дата-центра. Внутри оборудование. В каком состоянии — неизвестно. Под напряжением или нет — неизвестно. Ударит ли, если тронуть не то, — тем более.

Бран сказал: «Дом стоит пустой. Лет пять уже». Пять лет никто не переступал этот порог. В деревне не принято лезть в чужое жильё — суеверие, уважение, лень? Может, всё вместе. А может — руны на двери. Потому что я видел их.

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

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

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

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

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

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

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

— Туда не ходят, — сказал он наконец.

— Почему?

Он подумал. Честно подумал: я видел, как он ищет причину и не находит.

— Не ходят, — повторил он. — Все знают.

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

— Я схожу, — сказал я.

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

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

Я подцепил доску — СИЛ 4.3 было едва достаточно, но она поддалась с жалобным скрипом. Вторая — легче. Третья.

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

Я залез внутрь.

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

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

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

Артефактор ушёл, забрав инструменты, материалы и записи. Оставил то, что не влезло.

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

Верстак — чист. Печь — мертва. Полки — пусты.

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

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

Артефакт.

Я поднял его двумя руками, как снимают диск с мёртвой полки. Лёгкий, граммов двести. Медь холодная, дерево сухое и растрескавшееся. На обороте — клеймо: стилизованная «Т» в круге.

«Т» — Тарен.

Я поставил артефакт на верстак. Сдул пыль. И включил Маноощущение на полную.

Семь узлов.

Рунная структура состояла из семи узлов — семи рун, соединённых каналами. Мана текла по ним... нет. Мана пыталась течь. Из семи узлов работали четыре. Три — мертвы: линии оборваны, руны стёрты или повреждены.

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

> note add "АРТЕФАКТ: светильник (предположительно). > Мастер: Тарен (клеймо). > Структура: 7 рунных узлов. Активны 4. > > 1 (ВХОД): тянет фоновую ману из среды. > Поток слабый, но стабильный. Работает. > 2 (ФИЛЬТР): выравнивает поток, мана после > него однородная. Работает. Дальше поток > делится: часть прямо в 3, часть — в 4. > 4 (ПРИТОК): цел, но ЗАБЛОКИРОВАН. Мана > вошла и не выходит. > 3 (СБОРЩИК): три входа — от 1, 2 и 4. > Выход — к 5. Контур СТЁРТ. Мёртв. > 5 (БУФЕР): почти пуст. Работает. > 6 (ПРЕОБРАЗОВАНИЕ): окислился. Медь плюс > влага плюс пять лет = зелёная каша > вместо тонких линий. Мёртв. > 7 (ВЫХОД): излучатель. Готов работать, > входного потока нет. > > Три точки отказа подряд в середине конвейера. > Общий диагноз: артефакт жив, но парализован."Я отступил от верстака. Маленькая медная пластина с потускневшими рунами, пять лет пролежавшая под тряпьём, — и живая. Мана всё ещё шла через неё, через те узлы, которые работали, упиралась в мёртвые и возвращалась ни с чем. Машина дышала. Машина не делала ничего.

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

Узел 3: физическое повреждение. Контур стёрт — нужно восстановить линии. Для этого нужен проводящий материал и знание формы руны. Материал... медь? У меня нет меди. Хотя... медная стружка на полу мастерской. Остатки от работы Тарена. Если собрать...

Нет. Стружка — не проводник. Нужна цельная линия. Медная проволока или чернила.

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

Узел 4: заблокирован. Это — другое. Руна цела, контур виден, но мана не проходит. Не hardware-проблема — software. Процесс завис. Что, если его можно... перезагрузить?

Материалов это не требовало. Только понимания.

Я провёл в доме артефактора три часа.

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

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

Второй час — узел 4. Я сидел перед артефактом, смотрел на заблокированную руну и не понимал. Контур цел. Мана подходит ко входу и останавливается. Руна не принимает поток.

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

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

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

Теория. Красивая. А на практике?

Третий час — подготовка. Два года дежурств научили простому: между «я понял проблему» и «я трогаю продакшн» должна быть пауза. Минимум — перекур. Максимум — неделя планирования.

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

Приемлемый риск.

Я вернулся к артефакту следующим утром.

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

Я сел за верстак. Положил артефакт перед собой. Включил Маноощущение.

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

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

Не работало. Моя мана — тоже мана. Руки не блокировали поступление, а добавляли своё.

Другой подход. Не блокировать вход, а открыть выход.

Я не маг, ману двигать не умею — прошлая попытка это доказала с перегрузкой ядра и MP 2/15. Зато двигать её умеет сам артефакт, и в нём есть кусок, до которого я могу дотянуться руками. Узел 5 — буфер, в нём немного маны от последнего рабочего цикла. За ним шестой, окислившийся в зелёную кашу. За шестым — седьмой, излучатель, готовый работать и не получающий ничего.

А если перекинуть мостик от пятого сразу к седьмому, минуя мёртвый шестой?

Буфер сбросится через излучатель. Мана уйдёт в воздух. Давление в системе упадёт — и той капле, что просачивается из забитого четвёртого узла мимо стёртого третьего, наконец будет куда идти.

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

Медный стержень. Тонкий, как игла, и проводник.

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

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

Контакт.

Мана потекла.

Я видел это — Маноощущение горело, как Prometheus в момент каскадного алерта. Поток из буфера (узел 5) устремился через медный стержень к излучателю (узел 7). Узел 7 ожил — засветился, замерцал, начал рассеивать ману в пространство. Тонкий, едва заметный свет — но свет.

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

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

Я убрал медный стержень. Закрыл обходной канал.

Теперь — второй шаг. Дать системе «перезагрузиться». Узел 1 продолжал тянуть ману из среды. Свежая, чистая мана потекла по контуру: через узел 2 (нормализация)... и уткнулась в мёртвый узел 3. Остановилась.

Но часть — малая часть, просачивающаяся через остаточные каналы — дошла до узла 4. И...

Руна мигнула.

Я затаил дыхание.

Руна узла 4 мигнула ещё раз. Как сервер, на который подали питание. POST-диагностика. Самопроверка.

И — включилась.

Не полностью. Мощность — процентов двадцать от того, что я оценивал как номинальную. Сгусток рассосался не до конца, остаточное «загрязнение» мешало. Но руна работала. Мана проходила через неё — медленно, рывками, как Wi-Fi через бетонную стену.

> [НАВЫК] Маноощущение: ур. 2 → 3 > Дальность: 8м → 12м > Точность: средне-низкая → средняя > Новая функция: анализ потоковых аномалийЯ смотрел на мигающий зелёный текст. На руки — грязные, исцарапанные медной стружкой. На артефакт, в котором четыре узла работали, один полуработал и два были мертвы.

Пять из семи. Будь живы третий и шестой — он бы зажёгся.

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

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

> note add "ВЗЯТО В ДОМЕ Т.: > стержень медный (1 шт.), > светильник с клеймом 'Т' (1 шт.). > Метод: дренирование через bypass, > затем cold restart. Узел 4 — ~20%. > Итог: 5 из 7. Архитектура восстановима. > Статус: долг. Вернуть или отработать."Не оправдание. Просто учёт. Разница между кражей и долгом в том, ведёт ли его кто-нибудь.

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

На выходе обернулся. Пустая мастерская, пыльный верстак, щели света из-за досок. Человек, который здесь работал, ушёл пять лет назад и бросил всё: артефакт, который сделал сам, деревню, которой чинил амулеты, дом, который запер руной и не вернулся отпереть. Почему — не знал ни Бран, ни я. Знал только он сам, а он был в полудне пути отсюда.

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

Я не художник. Я не маг.

Я — инженер.

И мне нужен тот, кто знает синтаксис. Потому что алгоритмы у меня уже есть.

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

Звучит знакомо.

Идти было рано.

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

Значит, сначала заставить его светить. Хотя бы тускло. Хотя бы на минуту.

А план после этого помещался в три слова: найти, учиться, строить.

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

Пока — никто.

Глава 12

Три дня.

Три дня я провёл между сараем и заброшенным домом. Работал на Брана утром — заборы, дрова, вода. Обедал у Дины — бесплатная каша, привилегия «полезного чудака». А после обеда шёл к дому Тарена и садился за верстак.

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

Узел 3 оставался главной проблемой. Физическое повреждение: контур стёрт, линии прерваны. Без нового нанесения руны — не починить. А я не знал рун. Не одну. Ни одной.

Но у меня был медный стержень. И Маноощущение третьего уровня.

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

Сидел перед артефактом часами и наблюдал, как мана движется по рабочим узлам. Фиксировал направления, скорости, «температуру» (интуитивная метрика — мана в разных узлах ощущалась по-разному). Записывал всё в блокнот. К вечеру у меня была полная диаграмма: какой узел куда передаёт ману, с какой скоростью, через какие каналы.

Узел 3, мёртвый, был узлом обработки. Три входа, один выход. Входы — от узлов 1, 2 и 4. Выход — к узлу 5. Функция — неизвестна. Но по расположению в цепочке я мог предположить: это был конвертер. Руна, которая принимала нормализованную ману (от узла 2) и преобразовывала её во что-то конкретное. Свет? Если это светильник — значит, узел 3 превращал «сырую» ману в «световую». Как декодер, преобразующий пакеты данных в видеосигнал.

Гипотеза. Красивая, но непроверяемая — я не мог восстановить узел 3, не зная руны.

Или мог?

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

Что, если я не буду восстанавливать узел 3 — а обойду его?

Bypass. Опять. Но в этот раз — не для дренирования, а для работы. Соединить выход узла 2 напрямую с входом узла 5, минуя мёртвый узел 3. Мана пройдёт необработанной — без «конвертации». Узел 6 (тоже мёртвый) не поможет. Но узел 7 — излучатель — получит ману и выдаст... что?

Нормализованную ману. Не «световую». Просто — ману. Излучатель выдаст то, что получит. Будет ли это свет?

Я не знал. Но мог попробовать.

На второй день я попробовал.

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

Положил её на артефакт: один конец — к выходному каналу узла 2, второй — к входному каналу узла 5. Мост над мёртвым узлом 3.

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

Контакт.

Мана пошла.

Не через мёртвые узлы — через стержень. Напрямую. От нормализатора (узел 2) к буферу (узел 5). Буфер начал наполняться — быстрее, чем раньше. Из буфера — к излучателю (узел 7).

Узел 7 активировался.

Свет.

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

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

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

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

Работал.

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

«Нестандартно. Но работает».

> [НАВЫК] Рунный Анализ (ур. 1) — разблокирован > Сканирование рунных структур: базовое > Определение типа руны: по контексту > Определение состояния узла: по потоку маны > Ограничение: только знакомая грамматика рун. > Незнакомые — читается контур, не смысл > > [КВЕСТ] «Путь Артефактора» > Описание: Вы показали способность к рунному > анализу и ремонту без формального обучения. > Найдите наставника, чтобы развить свой талант. > Этап 1/3: Проанализировать и починить артефакт. > ВЫПОЛНЕНО. > Этап 2/3: Найти наставника. > Этап 3/3: Создать оригинальный артефакт.Я дочитал до конца и поискал глазами строку, которой не было.

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

Квест. Первый настоящий квест. Не «принеси воды» и не «почини забор» — а путь. Направление. Цель.

Найти наставника. Создать артефакт.

Кросвэлл. Тарен. Полдня пути.

На третий день я принёс светильник на площадь.

Не ради показухи. Ради проверки. В деревне световой камень на площади — главный (и единственный) источник магического света — мерцал всё слабее. Ещё неделя-две, и он погаснет. Я знал это. Видел деградацию каждый вечер. И знал, что никто в деревне не может его починить.

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

Бран стоял рядом, скрестив руки на груди.

— Что это?

— Светильник. Из дома Тарена. Я... починил. Частично.

— Починил.

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

— Частично, — повторил я. — Две руны мёртвые, одна — полурабочая. Я обошёл мёртвые медным стержнем. Работает на десять-пятнадцать процентов.

— Ты починил артефакт.

— Частично.

Он смотрел на мерцающий свет. Потом — на меня. Потом — снова на свет.

— Где ты этому научился?

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

Бран молчал долго. Потом сказал:

— Ты пойдёшь в Кросвэлл.

Это тоже не было вопросом.

— Да.

— К Тарену?

— Если он ещё там.

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

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

— Спасибо, Бран.

— Не благодари. Вернёшься — почини мне камень на площади.

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

— Вернусь. Починю. — Я помолчал. — Бран. Колодец.

Он не отмахнулся.

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

— Что колодец?

— Руна очистки. Два узла из пяти уже плохие. Вода будет чистая ещё недели две, может, три. Потом — нет. Не в один день: сначала изменится вкус, потом появится осадок.

— И что делать?

Он спросил это ровно. Как спрашивают у человека, который что-то умеет.

Чинить я не мог: не знал рун, не имел чернил, не имел права. Зато я знал то, чего в этой деревне не знал никто, — что между «работает» и «сломалось» всегда есть промежуток, и в этом промежутке можно спокойно жить, если знать правила.

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

— Ручей далеко.

— Ближе, чем лекарка.

Бран пожевал губами.

— Скажу. Пусть кипятят.

— И ещё.

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

— Если приедет кто-то, кто умеет, — покажи ему это. Он поймёт быстрее, чем ты успеешь объяснить.

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

Я, честно говоря, тоже понял это не сразу.

Я уходил утром.

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

Марта вышла на крыльцо. Посмотрела. Сказала:

— Рубаху постирай. В городе люди нормальные, от тебя конюшней несёт.

— Спасибо, Марта.

— За что?

— За всё.

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

Бабка Тильда перехватила у околицы. Маленькая, сгорбленная, с глазами, которые видели, наверное, ещё до того, как Гильдия стала Гильдией.

— Ты, парень. Уходишь?

— Да.

— В город. К Тарену.

Я не говорил ей о Тарене. Впрочем, бабка Тильда — DNS-сервер деревни. Она знала всё.

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

— Откуда вы знаете?

— Я к нему ходила за амулетом для коз. Тридцать лет назад. Хороший был амулет. До сих пор работает.

Тридцать лет. Амулет работает тридцать лет. Это... впечатляло.

— Спасибо.

— Иди уже. И вернись.

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

Legacy-инфраструктура. Без поддержки, без обновлений, без перспектив.

Я обернулся в последний раз. Камнеполье лежало на холме, маленькое и уязвимое, как сервер на Windows XP в 2024 году.

«Я вернусь», — подумал я. И пошёл дальше.

Лес начался через полчаса.

Тропа была натоптанная — по ней ходили караваны, путники, патрули. Безопасная? Относительно. Бран сказал: «Днём — нормально. Ночью — не ходи». Я шёл днём.

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

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

Природа как open-source. Код, написанный эволюцией (или кем-то ещё?), без единой строчки документации — и при этом более надёжный, чем всё, что создавали артефакторы.

Я шёл и думал. О рунах, которые похожи на код. О маналиниях, которые похожи на оптоволокно. Об артефактах, которые похожи на устройства. И о себе — DevOps-инженере, попавшем в мир, где вся магическая инфраструктура работала так, как будто её проектировали в девяностых и с тех пор не трогали.

Мне было двадцать один. Мне было... сколько Рэну? Шестнадцать? Пятнадцать? Тело — подросток. Голова — инженер. Ядро — «Искра». Ману — пятнадцать единиц. Навыки — подёнщина, выживание, маноощущение, рунный анализ. Деньги — шестнадцать медяков.

И план. Короткий, чёткий, написанный в блокноте:

> note add "ПЛАН v0.2: > 1. Дойти до Кросвэлла. СЕГОДНЯ. > 2. Найти Тарена. > 3. Показать артефакт. Показать, что я вижу. > 4. Убедить его учить меня. > 5. Если откажет — найти другого. > 6. Если других нет — учиться самому. > 7. Не умереть (актуально)."Тропа вилась между деревьями. Солнце пробивалось через кроны. Где-то впереди, за лесом, за холмами, на перекрёстке маналиний — город. Мастер. Будущее.

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

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

Кросвэлл.

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

А Маноощущение показывало то, чего не видели глаза. Маналинии — десятки маналиний — сходились к городу со всех сторон. Как оптоволоконные кабели к дата-центру. Город стоял на пересечении, на узле, на хабе. Мана текла к нему — и из него — мощными, плотными потоками. Это был не деревенский ручеёк. Это была магистраль.

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

> [СИСТЕМА] Мана окружения: повышенная. > Плотность маны: +12% от базовой. > Обнаружены множественные артефактные сигнатуры. > Обнаружена маналиния класса А (главная). > Обнаружены маналинии класса Б (6 штук). > Рекомендуется: осторожность.Осторожность. Да. Именно.

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

Пошёл к городу.

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

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

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

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

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

Глава 13

Первое, что я увидел — ворота.

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

Я остановился за двадцать шагов и включил Маноощущение.

> [СИСТЕМА] Анализ объекта: городская стена > Рунный контур: защитный, класс Б > Узлы: 47 активных (видимых), множественные скрытые > Плотность маны: +41% от базовой > Маналинии: главная (класс А) проходит под > фундаментом западной башни > Статус периметра: АКТИВЕНСорок семь узлов — и только на том участке, который брал двенадцатиметровый радиус Маноощущения. Дальше стена уходила вправо и влево, терялась за углами, и всюду в ней текла мана: плотная, структурированная, не деревенский ручеёк — магистраль.

Это был не сервер. Это был дата-центр.

Меня не впустили сразу.

Не задержали — нет. Стражники посмотрели на меня, посмотрели на котомку, спросили «кто такой, откуда, надолго ли» и потребовали медяк. Въездная пошлина: медяк с пешего без товара.

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

Но я был внутри.

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

Я постоял у стены, подышал.

Потом начал смотреть.

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

Городское освещение. Артефактная инфраструктура.

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

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

И всё это где-то текло. Фонарь у рыбного рынка сифонил ману ровно и понемногу, как неплотно закрытый кран: через год узел умрёт. Кто-нибудь заменит? Или забудут? Двумя улицами дальше стояли подряд два отпугивателя с одинаковой настройкой — зоны перекрывались, и оба работали хуже, чем могли.

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

> note add "КРОСВЭЛЛ — аудит v0.1: > фонарь на рыбном рынке — утечка, 8–14 месяцев; > колодец у кожевника — деградация контура; > отпугиватели на Сапожной — конфликт зон. > Общее: стандарта обслуживания нет. У каждого > артефакта своя схема и своя рука мастера. > Это не баги. Это техдолг. > Очень. Большой. Техдолг."В деревне всё было совместимо потому, что делал один человек. Здесь — три мастера, три школы, три почерка и ни одного общего стандарта. Сделали и забыли. До поломки.

Я мог бы стать здесь полезным. Если бы меня пустили.

Гильдия стояла в центре города, и её было видно издалека.

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

Над дверью — вывеска. Резная, позолоченная: «Гильдия Артефакторов. Тальмаркское отделение». И ниже, мелко: «Без предварительной записи — только с лицензией».

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

Я подошёл. Вежливо. Спокойно.

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

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

— Лицензия или письмо от мастера.

— У меня нет ни того ни другого.

— Тогда нет.

— Я артефактор. Без официального обучения, но—

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

Ожидаемо. Я попробовал иначе:

— Могу я хотя бы записаться? На оценку квалификации?

Второй стражник, постарше, со скучающим видом:

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

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

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

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

— У вас застёжка садится, — сказал я старшему. — Не сама застёжка. Узел под ней. Сигнал держит, но берёт на это вдвое больше, чем нужно. Месяца через два перестанет добивать до караулки.

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

— Лицензия, — сказал старший. — Или письмо.

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

Обидно было не от «нет». Обидно было оттого, что я сам построил бы так же.

— Понятно. Спасибо.

Я отошёл.

Следующие два часа я бродил по городу и задавал вопросы.

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

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

Монополия работала эффективно.

Я уже собрался к Хорину — и завернул не туда.

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

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

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

— Эй, парень.

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

— В Гильдию ходил?

Не вопрос — констатация. Я кивнул.

— И?

— Отказали.

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

— Без лицензии туда не ходи. Без денег тем более. — Он поковырял в зубах щепкой. — Ты по делу или по любопытству?

— По делу. Ищу мастера-артефактора.

— Мастеров в Гильдии трое. Уже был. Не вышло. — Это не был вопрос.

— Было бы неплохо найти ещё варианты.

Старик помолчал. Посмотрел на реку. Потом — на дальний берег. Потом — обратно на меня.

— Ты с какой деревни?

— Камнеполье. Полдня пешком.

— Знаю Камнеполье. Бран там за старосту?

— Да.

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

Что-то в груди у меня переключилось. Тихо, как реле.

— Слышал. Бывший мастер. Его из Гильдии...

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

— Злой как?

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

— А что у него случилось с Гильдией?

Старик посмотрел на меня — долго, оценивающе.

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

— Спасибо.

— Не за что.

Я дошёл до середины моста и остановился.

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

Что-то живое.

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

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

Светильник у меня за пазухой чуть потеплел. Или мне показалось.

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

— Бумага есть? Дешёвая.

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

— Три медяка.

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

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

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

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

Пойду проверить форк.

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

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

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

— Есть где подработать? Временному.

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

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

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

— Я подумаю. Спасибо. Брану передайте привет.

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

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

Я уже искал другой вход.

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

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

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

Значит, экспорт. Вручную.

Первую строку переписал дословно: «Колодец, Камнеполье. 2 из 5 узлов деградируют. До отказа 2–4 недели». Посмотрел чужими глазами и понял, что она не значит ничего. «Деградируют» — можно угадать. А «2 из 5» человеку, который не видит потоков, говорит ровно столько же, сколько «ошибка 500» говорит бухгалтеру.

Перечеркнул. Написал заново: «Руна очистки на колодце. Из пяти частей две почти не работают. Вода идёт через оставшиеся три, им тяжело. Когда сдадут и они — пойдёт мимо руны совсем». Длиннее втрое, зато это можно прочитать вслух.

Дальше пошло быстрее, но не легче. «Bypass» стал обходом, «cold restart» — «дать погаснуть до конца, потом дать набрать заново», «техдолг» не переводился вообще. К третьему листу я поймал себя на том, что переписываю не записи, а себя: вычищаю из фразы всё, что понятно только человеку из мира, которого здесь нет и не будет.

Половина того, что я знал, оказалась не знанием, а жаргоном.

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

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

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

Первое, что я написал в этом мире не для себя.

> [КВЕСТ] «Путь Артефактора» > Этап 2/3: Найти наставника. > Прогресс: кандидат идентифицирован. > Статус: ожидание подключения.Ожидание подключения. Знакомо: отправил резюме и ждёшь.

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

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

Завтра. Синяя дверь. Кривой тополь.

Посмотрим, что ответит сервер.

Глава 14

Синяя дверь.

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

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

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

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

Хорошо. Мы с ним хотя бы про одно и то же.

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

Постучал три раза, как говорила бабка Тильда. Не один, не два. Три.

Тишина. Я подождал и постучал снова.

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

Дверь открылась.

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

Он посмотрел на меня сверху вниз, хотя был выше сантиметров на пять.

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

— Нет, — сказал Тарен.

И закрыл дверь.

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

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

На следующий день я пришёл в то же время.

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

> [ТРЕНИРОВКА] СИЛ: 4.3 → 4.5 > Основание: нагрузка выше привычной, ежедневно.

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

Перешёл мост. Синяя дверь. Кривой тополь. Постучал три раза.

Дверь не открылась, но мана внутри была живая: Тарен был дома и просто не открывал.

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

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

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

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

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

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

Утро было серым и прохладным, тополь ронял листья по одному, периметр засёк меня на подходе.

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

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

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

Засов щёлкнул не сразу. Тарен не торопился.

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

На светильник.

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

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

Поднял голову.

— Войди.

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

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

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

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

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

Открыл глаз.

— Кто тебя этому учил?

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

— Никто.

— Сам додумался до обхода?

— Да.

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

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

— Я это называю по-другому, — сказал я осторожно. — Но это оно.

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

— Садись.

Я сел на стул у стены. Тарен смотрел на меня левым глазом — острым и усталым сразу.

— Сколько тебе лет?

— Шестнадцать. — Тело Рэна. — Может, больше. Точно не знаю.

— Где жил?

— Камнеполье.

— Я знаю Камнеполье. Я оттуда и ушёл. — Пауза. — Бран ещё за старосту?

— Да. Он написал Хорину, а про вас я узнал от кузнеца с моста.

Тарен фыркнул — коротко и без объяснений.

— Зачем пришёл?

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

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

— «Синтаксис».

— Это моё слово. Если у вас другое — скажите, я пересчитаю.

— Подёнщик?

— До недавнего. Сейчас грузчик на рынке.

— За сколько дней ты это починил? — Кивок на светильник.

— Первый день смотрел и не трогал. На второй слил буфер. Третий рисовал карту потоков. На четвёртый поставил мост.

— Четыре дня.

— С перерывом. Я работал у старосты и ходил туда, когда отпускали.

— Без инструментов.

— Медный стержень нашёл в доме. В доме в Камнеполье, где вы... где вы работали раньше.

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

— Мой дом, — сказал он тихо. Не мне, себе.

Я молчал. Это было его. Не моё.

Потом он встряхнулся. Взял лупу снова. Поднёс к медному стержню.

— Нет. Подожди. — Он отложил лупу. — Ты сказал: «вижу потоки». Маноощущение?

— Третий уровень.

— Покажи.

— Как?

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

Мне не пришлось вспоминать: картинка была ещё открыта.

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

Тарен не двигался.

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

Он молчал долго.

— Ты не чувствуешь, — сказал он наконец. — Ты читаешь.

Вот это меня и остановило. Не похвала — формулировка. Я никогда не подбирал этому слова по-здешнему, а он подобрал за меня и с первого раза.

— Да. Именно так.

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

— Кто ты. На самом деле.

Это был не вопрос о происхождении.

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

— Не знаю, как объяснить, — сказал я честно. — Я вижу мир иначе. Давно. Это просто как я устроен.

Он усмехнулся — коротко, без тепла, но это была усмешка.

— Я тоже.

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

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

Я кивнул. Всё это я знал ещё когда делал.

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

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

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

— Хорошо.

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

— Что видишь.

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

— А третий?

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

Тарен слушал не перебивая и не записывая.

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

— Вы проверяли, не вру ли я про уровень.

— Да. — Он забрал диск и убрал в ящик. — Рунное чтение у тебя начальное. Чутьё на потоки — нетипично высокое для человека, которого никто не учил. Толкование своё, но не выдуманное. — Он помолчал. — И ты починил артефакт, которому сорок лет, медным стержнем и четырьмя днями внимания.

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

— Я не беру учеников, — сказал он. — Пять лет не беру и не собирался.

Я молчал. Добавить было нечего.

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

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

— У меня есть.

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

Тарен взял листы.

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

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

— Ты это не для себя писал.

— Нет.

— Себе так не пишут. — Он повёл пальцем по строке про колодец, где я перечеркнул «2 из 5» и написал длинно, словами. — Себе пишут коротко, потому что себе и так понятно. Длинно пишут, когда собираются кому-то отдать.

— Я собирался отдать вам.

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

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

— Завтра, — сказал он наконец. — Приходи в это же время. И расскажи мне всё это ещё раз, вслух, точно и по шагам. Не показывай. Расскажи.

— И?

— И я решу.

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

— Иди.

Я встал и уже взялся за ручку двери.

— Парень.

Обернулся.

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

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

Я не знал, что на это отвечать, и промолчал.

— Иди.

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

Я дошёл до середины моста и остановился.

> [КВЕСТ] «Путь Артефактора» > Этап 2/3: Найти наставника. > Статус: ожидание подтверждения. > Прогресс: 90%.

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

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

И покоя мне не давал не тест и не светильник. Полка.

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

Такое не выходит от везения. Такое выходит, когда двое достаточно долго смотрят на одно и то же.

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

Глава 15

На следующее утро я пришёл ровно в то же время.

Тарен сказал «приходи завтра» — я пришёл завтра. Если это проверка пунктуальности, я её прошёл. Если нет — всё равно пришёл бы.

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

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

— Войди.

Мастерская Тарена.

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

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

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

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

— Садись.

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

— Вчера — в общих чертах. Сегодня — точно и по шагам.

Прямо. Без предисловий. Я уважал этот формат.

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

Тарен не двигался. Смотрел.

— Ты знаешь рунное дело?

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

— Архитектура.

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

— Хорошо, — сказал он. — Посиди.

И вышел в другую комнату.

Ждать пришлось минут десять. Трогать я ничего не стал, на это ума хватило, — но смотрел, и Маноощущение смотрело вместе со мной.

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

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

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

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

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

Я смотрел секунд десять.

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

Тишина.

Тарен очень медленно опустил руку на верстак, и что-то маленькое скатилось по доскам на пол. Я не сразу понял, что это. Увеличительное стекло в деревянной оправе. Он его уронил и не нагнулся поднять.

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

— Да.

— Ядро?

— Искра.

Молчание. Долгое.

— Искра, — повторил он. — Шестнадцать лет. И полмиллиметра на глаз, без стекла. — Он не спрашивал; он складывал. — Откуда ты это умеешь?

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

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

Тарен долго смотрел на меня. Потом поднял с пола стекло, протёр тряпкой и положил на полку.

— Ты ел сегодня?

— Хлеб. С утра.

— Садись к столу.

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

Потом он убрал миски. Налил в две кружки что-то горячее — травяное, незнакомое. Сел. Посмотрел на меня.

— Условия.

Вот это я понимал. Наконец-то переговоры.

— Слушаю.

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

— Хорошо.

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

— Хорошо.

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

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

— Понял.

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

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

— Я не из тех, кто болтает.

— Все так говорят.

— Тогда не верьте на слово. Проверяйте по поведению, и долго.

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

— Ладно, — сказал Тарен наконец. — Начнём завтра.

ACK.

Вечером я сходил через мост за котомкой.

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

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

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

За тонкой стеной Тарен ещё не ложился: скрипела половица, тихо звякало что-то стеклянное.

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

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

Полмиллиметра. Одна руна. Грелка не греет.

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

Потом заснул.

Утром Тарен положил передо мной лист.

— Десять базовых рун. Смотри.

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

— Запомнил?

— Да.

Он протянул пустой лист.

— Повтори.

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

— Ещё раз. В обратном порядке.

Я повторил в обратном. Он взял мой лист, сравнил с образцом и положил оба обратно.

— Хорошо, — сказал он без интонации. — Теперь слушай, что каждая делает.

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

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

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

— Ты понял? — спросил Тарен.

— Да. Это операторы. Ввод, вывод, условие, преобразование, хранение.

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

— Это... да. Что-то вроде. Традиционно их называют «голосами». Каждая руна имеет свой голос — своё звучание в потоке маны.

— Звучание?

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

Я осмыслил это.

— Я не слышу музыку. Я читаю данные.

Тарен помолчал.

— Я знаю, — сказал он. — Это тоже работает. Иногда.

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

Я веником сметал медную стружку в совок и думал о синтаксисе, которого не существовало.

Пока не существовало.

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

— Сядь, — сказал он наконец.

Я сел.

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

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

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

Я не двигался. Ждал.

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

Он помолчал.

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

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

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

Он открыл верхнюю тетрадь. Развернул ко мне.

Я наклонился.

Таблицы. Классификации. Руны, разбитые по категориям — не по традиционным «школам», а по функциональным группам. Схемы взаимодействий: если руна типа А стоит до руны типа Б — результат такой. Если после — другой. Матрицы совместимости. Иерархии зависимостей.

Примитивно. Неполно. Местами явно неточно.

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

— Гильдия сказала, — произнёс Тарен, — что рунное дело не поддаётся классификации. Что руны живые. Что их нельзя разложить по таблицам, потому что это убивает суть. — Он закрыл тетрадь. — Они называли это ересью. Расследование начал Кровис.

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

— И вас выгнали за таблицы.

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

Я смотрел на стопку тетрадей. Сорок лет работы.

— Вы правы, — сказал я. — Или они?

Тарен посмотрел на меня с чем-то похожим на усталость.

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

Пауза.

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

Он унёс тетради обратно на полку.

— Завтра — практика. Рунное письмо. Поднимешься в шесть.

И ушёл в свою комнату.

Я долго не мог заснуть.

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

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

Тарен написал документацию. Я, кажется, видел, как написать к ней README.

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

> [НАВЫК] Рунное письмо (ур. 1) — разблокирован > Знание базовых рун: 10/10 > Точность нанесения: начальная. Скорость: медленная > Ограничение: требует высокой концентрации > > [НАВЫК] Материаловедение (ур. 1) — разблокирован > Проводящие материалы, изоляторы: базовые знания > Рунные чернила: начальное знакомство > > [КВЕСТ] «Путь Артефактора» > Этап 2/3: Найти наставника. ВЫПОЛНЕНО. > Этап 3/3: Создать оригинальный артефакт.Строчку про наставника я перечитал дважды. Вчера девяносто процентов, сегодня сто — и ни слова о том, по какому признаку. Уговора не было, руки никто не жал. Значит, по ужину, по кладовке и по десяти рунам на листе. Система смотрела, чем я занят, и ставила отметку: без объяснений и, как всегда, без награды.

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

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

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

За стеной снова скрипела половица: Тарен ходил и не ложился.

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

Завтра — перо, чернила, медь и пергамент. Подъём в шесть.

Эксплуатационные издержки. Я мог с этим жить.

Глава 16

Первую неделю я просто учился держать перо.

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

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

— Та же линия. Туда и обратно.

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

Тарен ничего не сказал. Отошёл к своему верстаку и занялся работой.

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

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

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

Это стало рефреном недели.

Десятый день.

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

Он замолчал, подбирая слово.

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

— Что?

— Неважно. Задачу понял.

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

Значит, «Hello World» есть и здесь. Просто выглядит как фонарь — а что ещё должно быть первым артефактом, если не свет? Вход, обработка, выход. Три узла, минимальная рабочая конструкция.

Я взял перо.

Первая попытка заняла час двадцать.

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

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

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

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

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

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

— Попробуй активировать, — сказал Тарен.

Я толкнул каплю маны во входной узел.

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

— Третья руна плохая, — сказал Тарен. — Видишь, где?

— Правый нижний сектор. Там, где линия пошла шире.

— Да. Практикуй.

Я практиковал весь день, до ужина и после, пока Тарен не сказал без интонации: «Хватит на сегодня».

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

Я лежал на тюфяке и смотрел в тёмный потолок.

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

Разумный срок. Нормальный. И всё равно внутри у меня что-то зудело.

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

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

Монолит.

Я знал этот архитектурный паттерн. Хорошо знал. Я его не любил.

А что, если не монолит?

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

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

Вход → Обработка → Выход.

Я сел на тюфяке.

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

Мастерская ночью была другой.

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

Пластина новая, из запасов. Я мысленно извинился перед материалом.

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

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

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

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

Теперь каналы.

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

Три острова, два моста.

Пайплайн.

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

Я поднёс палец к входному краю первой руны. Собрался. Выдохнул.

И толкнул ману.

Первая руна засветилась.

Не слабо — ярко и уверенно: за секунду мана заполнила контур, и Маноощущение показывало, как руна тянет фон из воздуха и собирает его в узел.

Мана достигла выходного края первой руны.

И пошла по каналу.

По простой линии чернил, по медному проводнику, поток перетёк к входу второй.

Я не дышал.

Вторая приняла поток, и внутри неё мана изменилась: другая текстура, другой «цвет». Световая. Конвертация работала.

Выход второй руны. Канал.

Третья руна — излучение.

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

Свет.

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

Работающий фонарь.

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

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

Светило как настоящее.

> [ДОСТИЖЕНИЕ] Первопроходец: Рунный Скриптинг > Вы первым в этом мире применили модульную > архитектуру рунных конструкций. > Пайплайн: 3 независимых элемента, > соединённых управляемыми каналами. > Это не артефакт. Это скрипт.Последнюю строчку я перечитал дважды.

Не артефакт, не рунная конструкция — скрипт. Система, как всегда, взяла слово из моего словаря, и всё-таки от этого делалось не по себе: вещь она назвала раньше, чем успел я.

> [НАВЫК] Рунный скриптинг (ур. 1) — разблокирован > Соединение рун управляемыми каналами > Отладка цепочки по узлам > Ограничение: линейные цепочки до 5 элементов. > Один вход, один выход, ветвление недоступно > [КЛАСС] Системный Артефактор — разблокирован > Уникальный класс. Первый в мире. > Синергии: Рунный Анализ, Рунный скриптинг, > Маноощущение, Материаловедение. > Описание: Строит. Не создаёт — строит.Уникальный класс. Первый в мире.

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

> [УРОВЕНЬ] 1 → 5 > +2 свободных очка характеристик за уровень > Итого свободных: 8 > [КВЕСТ] «Путь Артефактора» > Этап 3/3: Создать оригинальный артефакт. ВЫПОЛНЕНО. > Все этапы пройдены. Квест не закрыт. > Переведён в открытую форму. > Текущая подзадача: пройти обучение у мастера.Единица. Всё это время у меня стоял первый уровень: ни колодец в Камнеполье, ни периметр в одиннадцать узлов, ни десять рун с листа его не сдвинули. Работа систему не интересовала. Её интересовало новое — и за одну ночь новизны она отдала сразу четыре.

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

Я не успел убрать пластину.

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

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

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

Я не торопил.

— Три руны, — сказал он наконец. Не вопрос — констатация.

— Да.

— Отдельные.

— Да.

— Соединённые каналами.

— Да.

Он выпрямился. Посмотрел на меня.

— Я видел все схемы стандартного фонаря, — сказал Тарен. — За сорок лет — сотни вариантов. Ни одного такого.

— Я знаю.

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

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

Тишина.

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

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

— Ты сделал это из-за своих рук.

— Наполовину. Вторая половина — почему нельзя разделить? Мана и так течёт по каналам внутри любого артефакта. Почему элементы обязаны быть единым контуром?

Тарен взял пластину. Поднёс к своему единственному глазу. Смотрел близко.

— Мана стабильная?

— Да. С момента активации — ровная нагрузка. Не падает.

— Сколько ты потратил маны на запуск?

— Одну каплю. Дальше — фоновая.

Он опустил пластину.

— У этого есть название? — спросил он. — У того, что ты сделал.

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

— Скрипт, — сказал я. — Последовательность шагов. Каждый делает своё и передаёт дальше.

— Скрипт, — повторил Тарен.

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

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

— Это практика, — сказал я.

Он смотрел на фонарь.

— Тебя так учили?

— Нет.

— За одну ночь.

— За одну ночь.

Город за окном спал, фонарь на верстаке светил ровно. Тарен отошёл к окну, постоял спиной и обернулся.

— Ты не ученик, — сказал он.

Я не ответил.

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

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

— Ты не воспроизвёл. Ты — придумал.

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

— Это называется по-другому.

— Как?

Тарен молчал секунду.

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

Он взял фонарь снова. Ещё раз осмотрел. Аккуратно поставил.

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

— Хорошо.

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

— Как я пойму, что готов?

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

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

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

— Помню.

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

Он ушёл. Шаги по коридору, скрип двери.

Я остался один с фонарём.

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

Оставались восемь очков.

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

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

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

ЛОВ 9 → 12. ВСП 15 → 20.

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

За окном начинало светать: не всерьёз, первый намёк, серость вместо черноты.

В прошлой жизни первый рабочий скрипт я написал в два часа ночи — однострочник, перезапускавший принтер в учебной лаборатории, который зависал раз в три часа. Некрасивый: без обработки ошибок, без логов, без единой строки документации. Препод нашёл его утром и сказал: «Это работает. Но это не так, как надо». Я ответил, что когда что-то работает — это всегда так, как надо, и получил тройку.

Тарен поставил бы другую оценку. У него и шкала была другая.

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

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

Там об этом пока не знали. Я почему-то был уверен, что ненадолго.

Глава 17

Утро после «Привет, мир» я встретил с головной болью и видом на три огарка свечей, которые сгорели дотла ещё часа в два ночи.

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

Три руны. Три функции. Три строки кода.

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

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

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

— Так. Объясни мне ещё раз, — сказал он. — Но теперь медленно. И без сравнений с вещами, которых я не знаю.

— С чего начать?

— С самого начала. Почему три руны?

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

— Когда мастер делает артефакт, он рисует одну большую руну, и она делает всё сразу: забирает ману, преобразует, направляет. Верно?

— Упрощённо, но да.

— А если в ней ошибка — как её найти?

Пауза вышла длиннее, чем я ждал.

— Смотришь на всю руну. Сравниваешь с образцом. Видишь отклонение.

— А если образца нет? Если ты делаешь что-то новое?

Он не ответил, но взгляд переменился — стал внимательным, наведённым.

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

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

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

— Точно. Меняешь только вторую.

— И можно взять другую вторую. От другого артефакта.

— Если она подходит по «интерфейсу» — да. Если берёт ману в том же формате и выдаёт в том же формате.

— Интерфейс, — повторил он. — Это слово ты используешь часто. Что оно значит?

— Договорённость. Как сигнал рукой: поднял ладонь — стой, опустил — иди. Если все знают этот сигнал — им без разницы, кто именно его подаёт. Рука может быть любой. Главное — сигнал одинаковый.

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

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

Я чуть не поперхнулся сыром.

— Именно. Именно это.

— И у тебя не было наставника, который это объяснил.

— Нет.

— Ты додумался сам.

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

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

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

Это было лучшее описание, которое я слышал от него. Я кивнул.

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

— Именно. И это надо где-то записать.

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

— Что значит «записать»?

— То, что я делаю, — я кивнул на блокнот, который лежал на краю верстака. — Записываю, как сделал этот фонарь. Какие руны, в каком порядке, почему именно так. Что не вышло сначала. Почему вышло потом.

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

— Ты... пишешь, как делаешь артефакт.

— Да.

— Рэн. — Он положил блокнот. — Это секрет мастера. Такие вещи не записывают. Или записывают в личный шифр, чтобы никто не прочёл.

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

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

— Мастера помнят.

— Не всё и не всегда. А ещё мастера умирают, и секреты умирают вместе с ними. Я не хочу, чтобы найденное умирало.

Долгая пауза.

— Это не принято в ремесле.

— Знаю. — Я забрал блокнот. — Но это и не секрет. Это README.

— Что?

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

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

— Ты понимаешь, что описываешь конец ремесленной тайны? Конец Гильдии в её нынешнем виде?

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

Он фыркнул. Что-то среднее между смехом и протестом.

— Ладно. Пиши своё... — Он поискал слово, не нашёл и махнул рукой. — Пиши. Но учти: если это попадёт не в те руки раньше времени, скверно будет обоим.

— Я понимаю. Пока это только для нас.

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

> [НАВЫК] Рунное письмо: ур. 1 → 2 > Точность нанесения рун: повышена > Новая функция: документирование рунных схем > Скорость базовой записи: +15%Я закрыл окно. Уровень пришёл не за руны — за полночи, проведённые с блокнотом, где я расписывал каждый шаг вчерашней сборки. Писать, оказывается, тоже было ремеслом.

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

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

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

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

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

Мы работали до полудня.

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

Потом перестал морщиться.

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

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

— Сорок семь, — повторял я, записывая. — Это константа или зависит от материала?

— От материала — да. На серебре можно до пятидесяти. На меди — строго сорок семь.

— Значит, параметр «материал» влияет на допустимый диапазон. — Я сделал пометку. — Тогда надо указать это в описании руны: угол 47° для меди, 47-50° для серебра.

Тарен посмотрел на запись.

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

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

Он молчал секунду.

— Продолжай, — сказал он. — Следующая руна.

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

Тарен кивнул мне. Дверь у нас открывал я: практики он официально не вёл и на людях в мастерской не работал.

За дверью стояла девушка.

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

Боевой маг. Городская стража. Это читалось с первого взгляда.

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

— Смотря какие, — ответил я.

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

Двенадцать серебряных за амулет первого уровня. Бран в Камнеполье говорил другое: мелочёвку Гильдия не берёт, невыгодно, минимум от пяти. Значит, взяли — и назвали цену, при которой можно не браться.

Полмесяца назад мне у другой двери назвали две. Тем же ровным голосом.

Я взял амулет и включил Маноощущение.

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

— Зайдите, — сказал я.

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

— Кира, — произнесла девушка. — Послушник. Городская стража, второй патруль.

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

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

— Ты — мастер?

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

— Засор, — повторила она. Тон — нейтральный, но в нём слышалось: «объясни это слово нормальному человеку».

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

— Цена?

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

Кира смотрела секунду. Что-то просчитывала.

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

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

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

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

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

— Попробуйте, — сказал я, протягивая амулет.

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

— Работает, — произнесла она. Без лишних слов. Достала кошель, отсчитала полтора серебряных, положила на верстак.

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

Она убрала амулет. Посмотрела на меня — оценивающе, быстро. Потом на Тарена. Потом снова на меня.

— Подмастерье, говоришь.

— Пока — да.

— Имя?

— Рэн.

— Рэн, — повторила она, как будто запоминала. — Ладно. Если сойдётся — вернусь.

Она вышла. Дверь закрылась — не хлопнула, просто закрылась, аккуратно.

Тарен молчал секунду. Потом:

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

— Обычная починка, — сказал я.

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

Я убрал инструменты.

— Ты видишь лишнее, Тарен.

— Я вижу то, что есть. — Он усмехнулся. — Сорок лет в ремесле учат смотреть на людей так же, как на артефакты. Что входит. Что выходит. Какая функция.

— И что вошло?

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

На верстаке всё ещё лежали полтора серебряного.

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

Я подвинул монеты к Тарену.

— Стол ваш. Инструмент ваш.

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

Я убрал серебряк и полсотни медяков в котомку. Первое правило дела, которого у меня ещё не было.

Потом открыл блокнот на чистой странице. Написал сверху: «Руна поглощения маны. Описание. Параметры. Ограничения».

Первый коммит в репозиторий знаний: неловкий, маленький, с пустым сообщением.

Вечером, когда мастерская потемнела и фонарь — мой фонарь, «Hello World» — дал нам свет для работы, Тарен остановился у верстака и смотрел на него долго.

— Рэн, — сказал он. — Ты понимаешь, что это, — он кивнул на фонарь, — меняет правила ремесла. Не улучшает. Именно меняет.

— Я понимаю.

— Гильдия это поймёт тоже. Рано или поздно.

— Я знаю.

Он кивнул. Больше ничего не сказал. Пошёл к себе наверх.

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

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

С таких вещей начинаются библиотеки.

Глава 18

На третий день после «Hello World» в мастерскую пришёл купец.

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

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

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

— Тарен здесь?

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

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

— Ты подмастерье?

— Да.

— Сигнальные камни делаете?

— Делаем.

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

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

— Понятно.

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

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

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

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

— За три дня — пять камней, — повторил он.

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

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

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

— Шаблон, — повторил Виго.

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

Он помолчал. Потёр бороду.

— Цена?

— Двадцать пять серебряных. За пять камней с материалами от вас. — Почти втрое дешевле Гильдии. Если получится — честная сделка. Если не получится — Тарен меня убьёт.

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

— Десять серебряных вперёд. Остальные пятнадцать — когда камни заработают. Если заработают.

— Договорились, — сказал я.

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

— Честно, — согласился я.

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

— Двадцать пять серебряных, — произнёс он. Не то одобрительно, не то осуждающе.

— Гильдия берёт сорок.

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

— Я знаю. Поэтому не должен брать, как Гильдия.

Он помолчал.

— Ты когда-нибудь делал сигнальные камни?

— Нет.

— Ты знаешь, какие руны нужны?

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

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

— Основа, — подтвердил он наконец. — Садись. Покажу остальное.

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

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

Я записывал. Уже не в рамках «запомнить» — в рамках «задокументировать». Руна за руной. Параметры. Зависимости. Ограничения.

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

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

— Можно и так формулировать.

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

— Это... — Тарен остановился. — Это и есть твой шаблон?

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

— Ты понимаешь, что мастера так не работают?

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

— Слышал об этом. На севере, говорят, есть такой способ.

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

Тарен долго смотрел.

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

— А я вижу расхождения сразу. Это и есть преимущество.

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

Я разложил всё на верстаке и постоял над ним.

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

Эталонный камень я делал три часа.

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

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

Активировал.

Камень ответил — слабым, но ровным свечением. Готов.

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

> note add "ЭТАЛОННЫЙ КАМЕНЬ v1.0: > Узел 1 (ПРИЁМ): угол входа 47°, глубина 0.3мм > Узел 2 (КОДИРОВЩИК): 3 петли, направление > против часовой, зазор 0.2мм > Узел 3 (ПЕРЕДАЧА): ключ [VG-37], > интенсивность средняя > Узел 4 (ДЕКОДЕР): симметричен узлу 2, > по часовой > Связи: все прямые, серебряная нить, > длина по контуру материала > Тест: ПРОЙДЕН. Сигнал стабильный."Готово. Шаблон зафиксирован.

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

Второй камень занял два часа, третий — час сорок.

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

Четвёртый встал поперёк.

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

Запасного куска не было. Виго прислал ровно пять.

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

Зато у меня был эталон.

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

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

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

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

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

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

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

Связка работала.

> [ДОСТИЖЕНИЕ] «Инженер, а не художник» > Создано 5 идентичных артефактов по шаблону. > Отклонение от эталона: менее 5%. > Комментарий Системы: массовое производство > начинается с одной хорошей формы. > [НАВЫК] Шаблонирование (ур. 1) — разблокирован > Создание эталонных схем артефактов > Воспроизведение по эталону: +25% к скорости > Контроль отклонений: автоматическийЯ закрыл оба окна и посмотрел на ряд камней. Внутри поднялось тёплое и хорошо знакомое — так бывает, когда выкатка прошла, метрики ровные и в поддержку никто не пишет.

Всё работало. Всё было сделано правильно.

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

— Хорошая работа, — произнёс он. Для Тарена это было равносильно овации.

Виго пришёл на следующее утро — раньше, чем я ожидал. Видимо, не терпелось проверить.

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

— Рабочие, — произнёс он наконец.

— Все пять, на одной частоте, — подтвердил я.

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

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

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

— Честно, — сказал он.

— Честно, — согласился я.

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

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

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

— Подмастерье.

— Да?

— Сколько таких камней ты можешь сделать за неделю?

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

— Двадцать. Может, двадцать пять, если материалы хорошие.

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

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

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

— Мне нужно подумать, — сказал он.

— Я понимаю.

— Ты не уходишь никуда в ближайший месяц?

— Никуда.

— Хорошо. — Он кивнул, как будто это что-то решало. — Хорошо.

Вышел. Дверь закрылась.

Тарен сидел в углу с кружкой — он слышал весь разговор.

— Двадцать пять камней в неделю, — повторил он. — Ты понимаешь, что это означает?

— Для меня? Постоянная загрузка и стабильный доход.

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

— Я знаю.

— Рэн. У нас нет лицензии.

— Я знаю.

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

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

— И что думал?

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

Тарен молчал. Потом:

— Тридцать лет назад я думал примерно так же.

— Я знаю. Вы говорили.

— И чем это кончилось — тоже знаешь.

— Знаю. Но у вас не было записанных схем, обученных методов и, — я поднял блокнот, — документации. У меня — будет.

Пауза.

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

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

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

— Да, — сказал он. — Понимаю.

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

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

Хорошая документация — это когда тебя нет, а система всё равно работает.

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

Разбудил меня Тарен. Ранним утром — солнце только начинало прощупывать улицу через маленькое окно мастерской.

— Рэн. Встань.

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

Я встал, потёр лицо. Вышел за ним.

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

Рядом с ним — не человек, а знак. Поверх синего кафтана — накидка. Тёмно-зелёная. С символом Гильдии Артефакторов на плече.

Он посмотрел на нас. Достал из-за пазухи бумагу.

— Мастер Тарен? Или кто здесь работает? — Голос ровный, деловой. — Городской инспекторат получил жалобу на незаконное ведение ремесленной практики без лицензии Гильдии. — Пауза. — Прошу предъявить документы.

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

Гильдия нас заметила.

Глава 19

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

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

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

Звали его Алор. Он представился сам, без лишних слов.

— Я уполномочен провести проверку ремесленной практики в соответствии с Уставом Гильдии Артефакторов, параграф семнадцать, пункт три. — Он развернул первый лист. — Прошу предъявить лицензию на ведение практики.

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

— Мастер Тарен Волт. Лицензия выдана двадцать три года назад. Не отзывалась.

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

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

Вот тут у меня стало холодно в районе желудка.

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

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

— Документ, подтверждающий обучение под лицензированным мастером?

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

— У меня нет такого документа, — сказал я.

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

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

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

— Подтверждается, — сказал я.

Алор дописал. Сложил лист. Достал третий.

— Предупреждение за первичное нарушение, — произнёс он. — Штраф — пятьдесят серебряных.

Пятьдесят серебряных.

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

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

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

— Ваши пятьдесят серебряных, — произнёс он.

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

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

Вышел. Дверь закрылась — так же ровно, как когда открылась.

Тарен стоял у стола и смотрел на расписку.

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

— Здесь двадцать шесть.

Тарен посмотрел на монеты. Не на меня — на монеты.

— Убери.

— Тарен...

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

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

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

— Возникла.

— На следующий день.

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

Он помолчал.

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

Я понял не сразу. Потом — понял.

— Подождите. Вы сказали «официально».

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

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

Работать без лицензии — нарушение. Штраф, предупреждение, потенциально хуже.

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

Единственный доступный мастер — Тарен — статуса не имеет.

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

Классический дедлок. Процесс А ждёт ресурс Б. Процесс Б заблокирован процессом А. Система стоит.

— Значит, мне нужна лицензия, — произнёс я медленно. — Без мастера.

— Такого не бывает, — сказал Тарен. — По Уставу — не бывает.

— По Уставу, — повторил я. — Но Устав писался людьми. А люди иногда делают исключения для случаев, которые не предусмотрели.

Тарен посмотрел на меня с тем выражением, которое я начинал хорошо читать: «ты думаешь в правильном направлении, но ещё не знаешь, куда придёшь».

Виго появился к обеду.

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

— Слышал, — сказал он с порога. Без предисловий — не его стиль.

— Догадываюсь, что слышали, — ответил я.

Он вошёл. Сел. Огляделся — деловито, по привычке. Тарен стоял у верстака, делал вид, что занят шлифовкой заготовки. Слушал, конечно.

— Пятьдесят серебряных — это Кровис, — произнёс Виго. — Не инспектор. Инспектор просто исполняет. Кровис послал сигнал: не работайте в обход Гильдии.

— Я понял сигнал, — сказал я.

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

— Это не вариант.

— Знаю. Поэтому и пришёл.

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

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

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

— И если сдаю — получаю лицензию без мастера?

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

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

— Что нужно для подачи заявки? — спросил я.

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

— И этот кто-то — вы.

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

Восемь процентов.

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

— Шесть, — сказал я.

Виго не удивился. Купец.

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

— Договорились.

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

Виго ушёл. Тарен отложил заготовку.

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

— Знаю.

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

— А второй раз?

— Второй раз в комиссии сидел я, — сказал Тарен. — И промолчал.

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

— Тоже знаю.

— И при всём этом, — Тарен встал, подошёл к окну, — это хорошая идея. — Он стоял, смотрел на улицу. — Знаешь, почему?

— Почему?

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

Я кивнул.

Внутри меня что-то переключилось. Не решимость — что-то точнее. Режим, в котором перестаёшь думать «стоит ли» и начинаешь думать «как именно».

> [СИСТЕМА] Практика без лицензии — зафиксировано. > Нарушение первичное, взыскание уплачено. > Законный путь один: экзамен для самоучек, > Устав Гильдии, 7.4.2. > > [ПРЕДУПРЕЖДЕНИЕ] Комиссию назначает отделение. > Сделать так, чтобы отказ пришлось > объяснять вслух.Я закрыл окно. Последнюю строчку система, судя по всему, списала у Тарена — или Тарен у неё. Права были оба.

— Тарен, — сказал я. — Мне нужно три недели подготовки. Что они проверяют на экзамене?

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

— Садись. Расскажу.

Следующие два часа он говорил, я записывал.

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

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

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

— Один вопрос, — сказал я. — В практической части способ мой?

— По уставу — да. — Тарен чуть помолчал. — Только оценивают по своим критериям. Сложность, изящество, традиционность подхода.

— Традиционность.

— Они ценят мастерство в рамках известного. Не любят неожиданного.

Я кивнул. Подумал: «Ну что ж. Тогда я покажу им неожиданное так, чтобы они не смогли это проигнорировать».

Вечером я сидел над чистыми листами.

Внутри пошло знакомое — не паника, а инвентаризация. Что есть, чего нет, где дыра.

Есть: рунный скриптинг. Шаблонирование. Маноощущение. Две недели под лучшим наставником в городе, пусть и неофициальным.

Нет: академической базы, терминологии, опыта с редкими материалами. И, если честно, — никакой уверенности, что комиссия станет смотреть честно.

Разрыв большой, три недели — не бесконечность.

Зато я знал, как это устроено. В той жизни меня тоже оценивали люди, смотревшие не на то, что я умею, а на то, чего у меня нет: диплома, стажа, правильной строчки в бумаге. Однажды я сделал таким тестовое задание за двое суток, бесплатно, и не получил даже отказа. Просто тишину.

Здесь тишины не будет. Здесь придётся смотреть.

Я взял перо.

«Программа подготовки. День первый».

Засыпая, я думал об одном.

Кровис отправил инспектора. Это значит — он знает о мастерской. Знает обо мне. Счёл меня достаточно значимым, чтобы потратить ресурс на предупреждение.

В IT это называется — конкурент заметил стартап. Это одновременно плохо и хорошо.

Плохо — значит, давление будет расти.

Хорошо — значит, я что-то делаю правильно.

За стеной скрипела половица: Тарен опять не ложился. Пятьдесят серебряных ехали сейчас в казённом кошеле с гильдейской печатью — к тому, кто их заказал.

Глава 20

На следующее утро Тарен положил на верстак кусок серебра.

Не монету. Кусок — с ладонь, неровный, грубо отколотый, из тех запасов, что лежат глубоко и достаются раз в несколько лет. Серебро в мастерской было редкостью: дорогой материал, шёл только на заказы, где его приносил сам клиент.

— Тренируйся на этом, — сказал он.

— Это дорого, Тарен.

— Ты должен мне пятьдесят серебряных, — произнёс он флегматично. — Что такое ещё три на обучение.

Я не стал спорить. Серебро принимает руны иначе, чем медь. Чище, отзывчивее, с меньшим сопротивлением — но и ошибки на серебре видны острее. Как разница между отладкой на тестовом стенде и на боевом сервере: то, что прощает одно, немедленно выдаёт другое.

Первые три дня я занимался теорией.

Тарен гонял меня по вопросам, которые мог задать экзамен. Классификация рун по функциям — первичные, вторичные, связующие. Свойства материалов — медь, серебро, горный кварц, речной камень, кость. Стандартные схемы артефактов первой и второй категории.

Это была та самая зубрёжка перед сертификацией, где половина вопросов проверяет не понимание, а знание правильных слов, и где человек, который умеет чинить, спотыкается о человека, который умеет называть.

Принципы одни и те же. Как маршрутизируется энергия. Как масштабируется нагрузка. Где возникают узкие места. Терминология разная — суть та же.

— Руна первичного связывания, — говорил Тарен. — Три подтипа. Назови.

— Линейная. Кольцевая. Узловая.

— Отличия.

— Линейная — однонаправленная передача, низкая потеря маны, слабая на разрыв. Кольцевая — замкнутый контур, стабильная, хорошо держит длительные процессы. Узловая — разветвление, несколько выходов из одной точки, сложная в нанесении.

— Хорошо. — Он открыл блокнот. — Теперь — практика второго дня. Амулет обнаружения. Стандартный. Медь, три руны.

Я брал перо и делал. Тарен смотрел — не на результат, на процесс.

На четвёртый день произошло что-то, чего я не ожидал.

Я сидел над схемами и прикидывал, как объяснить метод человеку, который заранее решил его не понимать: достаточно просто, чтобы уложиться в пять минут, и достаточно наглядно, чтобы отмахнуться было нельзя.

Тарен стоял рядом и смотрел, как я черчу.

— Знаешь, что им будет труднее всего объяснить? — сказал он вдруг.

— Что?

— Не то, что это работает. Они увидят, что работает. — Он указал на мои схемы. — Труднее всего им будет объяснить, почему это нельзя делать так, как делаешь ты.

Я поднял взгляд.

— Вся аргументация Гильдии строится на том, что «так не принято», — продолжил он. — Но «не принято» и «неправильно» — разные вещи. Разницу они знают. Поэтому постараются найти формальные ошибки — в терминологии, в документировании, в протоколе.

— Значит, протокол должен быть безупречным.

— Именно.

Я кивнул. Это была другая задача — не «сделать хорошо», а «сделать так, чтобы нельзя было придраться». Разные требования, и они тянут в разные стороны.

Тем же вечером я записал себе на первой странице то, что в прошлой жизни назвал бы условиями приёмки. Цель — лицензия. Критерий успеха — не «понравилось», а «нет формального основания отказать». Порядок приоритетов: протокол, потом скорость, изящество последним. Риск один и известен заранее: комиссия, которой я не нравлюсь. Значит, каждый шаг проверять дважды и каждый уметь объяснить вслух.

Удар в дверь на пятый день был знакомым.

Уверенный, нетерпеливый. Не так, как стучат купцы или случайные прохожие. Так стучат люди, у которых мало времени и которые не считают нужным это скрывать.

Я открыл.

Кира стояла на пороге.

Та же кожаная куртка, та же лёгкая кольчуга. Жезл на поясе — теперь с заряженным навершием, я это почувствовал даже без Маноощущения, просто по тому, как воздух вокруг него немного другой. На левом рукаве — свежее пятно от ожога поверх старого. Работала недавно.

Она смотрела на меня секунду. Потом — чуть нахмурилась, как человек, который ожидал одно и увидел немного другое.

— Ты — тот подмастерье? — Это не был вопрос с сомнением. Это была сверка.

— Рэн, — подтвердил я. — Заходите.

Она вошла. Сразу — к верстаку. Достала амулет — не тот, что я чинил десять дней назад. Другой: крупнее, серебряный корпус, гравировка сложнее.

— Патрульный амулет. — Она положила его на стол. — Индикатор враждебной магии. Начал давать ложные сигналы три дня назад. Каждые полчаса — тревога без причины. Я уже не реагирую, а это — плохо.

Я взял. Включил Маноощущение.

Схема оказалась сложнее прежней: шесть рун вместо четырёх, два контура — детектор и фильтр ложных срабатываний. Неисправность нашлась сразу, и она была не поломкой, а перегрузкой: фильтр захлёбывался. Где-то в зоне патрулирования стоял такой фоновый шум — рынок, кузни, чужие амулеты на каждом втором поясе, — что он перестал успевать и начал пропускать всё подряд.

— Три дня назад у вас в патруле был Восточный рынок? — спросил я.

Кира чуть приподняла бровь.

— Да. С чего ты знаешь?

— Там высокий фоновый магический фон. Новые торговые ряды, много артефактных лавок. Ваш фильтр ложных срабатываний не был калиброван под такую плотность.

Она смотрела — не скептически, просто внимательно. Оценивающий взгляд человека, который привык решать, кому доверять.

— Можно перекалибровать?

— Да. Минут двадцать.

— Цена?

— Два серебряных. Материалы не нужны — только инструменты и время.

Пауза. Короткая.

— Делай.

Я работал. Кира не уходила — снова стояла в метре от верстака. Наблюдала.

В этот раз я не молчал. Не потому что хотел произвести впечатление, а потому что это была полезная практика — объяснять то, что делаешь, вслух. Помогает думать.

— Фильтр работает через сравнение, — говорил я, не отрывая взгляда от амулета. — Он берёт сигнал детектора и проверяет: выше ли он некоего порога? Если выше — тревога. Если нет — фон. Проблема в том, что порог был настроен под тихую улицу, а не под рынок.

— И ты поднимешь порог, — произнесла она. Не вопрос — она уже поняла.

— Подниму. Но не слепо: если поднять слишком высоко — пропустит настоящую угрозу. Нужно найти баланс.

— Как ты его найдёшь?

— Маноощущение. Я чувствую, как реагирует руна на разные уровни. Буду смотреть, где граница между нормальным фоновым шумом и аномалией.

Короткое молчание.

— Тебе шестнадцать? — спросила она.

— Семнадцать, — ответил я автоматически. — Примерно.

— «Примерно».

— Долгая история.

Она ничего не сказала. Но что-то в голосе изменилось — стало чуть меньше официального.

Я закончил через восемнадцать минут.

— Готово. — Я протянул амулет. — Порог поднят на двадцать процентов от базового. Придёте в следующий раз — сверю, как он показал себя в поле: если ложные сигналы остались, подниму ещё, если что-то пропустил, опущу.

Кира взяла. Держала в руке, проверяла — я уже знал этот жест. Волна маны через контур, ощущение отклика.

— Ты сказал «сверю, подниму, снижу», — произнесла она. — Не «сделал, работает, забудь». Значит, ты не доделываешь вещь, а дотачиваешь её под того, кто носит.

— У этого есть название, — сказал я. — Итерация. Делаешь, смотришь, что вышло, правишь, смотришь снова.

— Итерация, — повторила она, будто пробуя вес. — В Гильдии этого нет. Там стандарт, и иди.

Она убрала амулет.

— Приду.

Отсчитала два серебряных. Добавила третий.

— За скорость.

— Не нужно, — сказал я.

— Нужно, — произнесла она тоном, которым не спорят. — У меня нет времени ждать неделю у гильдейского прилавка.

Она уже была у двери, когда обернулась.

— Ты на экзамен подаёшь?

Я не успел удивиться раньше, чем ответил.

— Откуда вы знаете?

— Город маленький. — Лёгкая пауза. — Виго болтлив, когда думает, что это в его интересах. — Она смотрела на меня — коротко, как будто проверяла что-то. — Удачи. Там комиссия не подарок.

— Я знаю.

— Нет, не знаешь. — В голосе появилась интонация — не насмешка, скорее что-то, что бывает у людей с опытом, который они не планировали получать. — Но узнаешь.

Она взялась за скобу двери и остановилась.

— И перестань мне выкать. Мне восемнадцать, тебе семнадцать «примерно», и ты второй раз чинишь то, от чего зависит, вернусь я с патруля или нет. «Вы» тут лишнее.

— Хорошо, — сказал я. И, поскольку всё ещё не понимал, где в этом мире проходят границы, добавил: — Тогда и ты меня не зови подмастерьем.

— Ты и есть подмастерье.

— Пока да.

Что-то похожее на усмешку — короткое, тут же убранное.

— Ладно, Рэн.

Она вышла. Дверь — аккуратно, как всегда.

Тарен, не поднимая взгляда от своей работы:

— Она приходит третий раз.

— Второй, — поправил я.

— Третий, — произнёс он невозмутимо. — Была три дня назад, спрашивала, работаем ли мы ещё после инспекции. Тебя не было, я сказал — работаем. Ушла без заказа.

Я переварил это.

— И ты не сказал мне.

— Я сказал тебе сейчас.

За три дня до подачи заявки я сделал финальный прогон.

Теория — нормально. Не блестяще, но на уровне, где формальных ошибок не найти. Тарен гонял меня по вопросам три раза подряд и последний раз кивнул — без похвалы, просто кивнул. Для него это было «достаточно».

Практика — уверенно. Три типа стандартных артефактов, все сделаны в норме, без брака.

Практика — тут я готовился не к вещи, а к способу. Задание даст комиссия, и угадывать его бессмысленно; смысл был в том, чтобы любое их задание я умел разложить на отдельные руны и каналы между ними. Мы с Тареном перебрали всё, что дают на экзаменах третьей степени за последние годы: грелка, замок, сигналка, фонарь. Каждую я собирал дважды — сначала как принято, потом цепочкой. Цепочкой выходило длиннее по месту и короче по времени.

И главное — документация. Каждый шаг, каждый параметр, каждое решение записано так, чтобы по листу мог собрать другой человек. Если спросят «почему так» — ответ будет на бумаге, а не только в голове.

Это и был мой козырь. Не мастерство и не скорость. Воспроизводимость. Доказательство, что я не фокусник, а инженер.

> [УРОВЕНЬ] 5 → 6 → 7 → 8 > Опыт получен за: метод, изложенный так, > что по нему может работать другой человек. > > [НАВЫК] Рунное письмо: ур. 2 → 3 > Точность нанесения: высокая > Скорость базовой записи: +35% > Новая функция: калибровка по материалу > > [НАВЫК] Рунный скриптинг: ур. 1 → 2 > Максимальная длина цепочки: до 8 рун > Отладка цепочки: автоматическая подсветка разрывов > Интерфейсный контроль: повышенЯ закрыл окна и перечитал первую строчку по памяти.

Две с лишним недели я зубрил классификацию рун, собрал три десятка учебных вещей и стёр два пера. За это система не дала ничего. Три уровня пришли в тот вечер, когда лист с описанием стал таким, что по нему мог собрать посторонний.

Ей по-прежнему было безразлично, сколько я работаю. Ей было интересно, что после меня остаётся.

Тарен посмотрел на меня — долго, как будто что-то взвешивал.

— Ты готов, — произнёс он наконец. — Не так, как хотел бы я в идеале. Но так, как достаточно.

— «Достаточно» — это хорошо?

— «Достаточно» — это то, с чем работают.

День подачи заявки был пасмурным.

Виго встретил меня у угла улицы, в квартале от Гильдейского здания. Он туда не заходил — не его территория. Но вид у него был человека, который обо всём договорился заранее.

— Регистратор знает, что ты придёшь. Имя — Сорна, женщина лет сорока, рыжая. Говори вежливо и по делу. — Он оглядел улицу. — Кандидатов в этот раз двенадцать. Много: обычно шесть-семь. Кто-то постарался, чтобы набралось.

— Бумаги у меня, — сказал я.

— Тогда иди. — Он чуть помолчал. — Рэн.

— Что?

— Не пытайся произвести впечатление на регистратора. Она просто регистратор. Впечатление произведёшь на комиссии.

Я кивнул. Пошёл.

Тарен не пришёл — не мог появиться рядом с Гильдейским зданием. Люди Кровиса смотрят. Это он сказал ещё вечером — спокойно, без горечи, просто факт.

— Иди один, — добавил он тогда. — Ты всё равно будешь там один. Экзамен для самоучек — это и есть экзамен в одиночку.

Гильдейское здание я видел раньше снаружи — серый камень, тяжёлые двери с бронзовыми ручками в форме рунных узлов, — но внутрь входил впервые. Холл с высоким потолком, где шаги слышны на два счёта дольше, чем ожидаешь; лавки вдоль стен, на которых никто не сидел; стойка регистратора у дальней стены, и над всем этим — ровный, неотличимый от дневного свет, к которому никто здесь давно не приглядывался.

Сорна оказалась именно такой, как описал Виго. Рыжая, сорок лет, взгляд человека, которого двадцать лет никто не удивлял.

— Имя?

— Рэн. Без фамилии.

— Цель визита?

— Подача заявки на экзамен третьей степени для самоучек.

Она посмотрела на меня. На возраст. На отсутствие мастерского сопровождения. На бумаги, которые я положил на стойку.

Ничего не сказала. Взяла бумаги. Прочитала. Проверила штамп — Виго позаботился о форме, документы были правильными. Взяла перо, вписала что-то в реестр.

— Экзамен через три дня, с утра. — Она вписала что-то ещё и провела черту. — Опоздание — дисквалификация. Материалы предоставляет Гильдия. С собой только инструменты.

— Понял.

— Следующий.

Я не сразу ушёл.

У стены напротив регистратора висела доска объявлений. Я поднял взгляд — по привычке, просто посмотреть.

Список экзаменуемых. Двенадцать имён. Экзамен через три дня, та же дата.

Я читал. Больше половины — с гильдейской пометкой в скобках. Ученики, подмастерья, люди при мастерских. Самоучек, ради которых процедура и существует, набиралось от силы четверо.

Седьмым стояло имя, которое я прочитал дважды.

«Дарен Кросвайт. Мастерская Гильдии, ученик третьего года. Предварительный тест — с отличием».

Я стоял перед доской и складывал.

Ученик третьего года не сдаёт экзамен для самоучек. Ему до собственной лицензии остаётся год-другой обычным порядком, с патроном и рекомендацией, без унижения. Если он всё-таки здесь, значит, кто-то решил, что так будет полезнее. И не ему.

Двенадцать кандидатов вместо шести. Больше половины — гильдейские. Спектакль собирали заранее, и зрителей звали не на меня одного.

Восемнадцать лет, третий год в мастерской Гильдии, лучшие материалы, лучшая школа и мастер за спиной. У меня — Тарен, которого нельзя называть, кусок серебра в долг и метод, которого здесь нет ни у кого.

Сравниваться по их правилам было бессмысленно: по их правилам я проигрывал ещё до начала. Значит, показывать надо не то, что я умею не хуже, а то, что они не сумеют объяснить.

Крупное решение против гаражного. У них бюджет, имя и налаженное производство; у меня скорость и то, что я не связан архитектурой, которую здесь не пересматривали тысячу лет.

Посмотрим.

Я вышел на улицу.

Виго ждал за углом — там, где обещал.

— Всё прошло? — спросил он.

— Всё прошло. Экзамен через три дня.

— Хорошо. — Он кивнул. — Я узнал, кто будет в комиссии. Скажу тебе завтра — когда уточню детали.

— Там ещё кое-что, — сказал я. — Дарен Кросвайт подаётся на тот же экзамен.

Виго помолчал секунду.

— Это интересно, — произнёс он. Тон был таким, каким говорят люди, которые видят сложность, но не пугаются её. — Кровис хочет сделать из этого спектакль.

— Ну что ж.

Я посмотрел на здание Гильдии — серое, тяжёлое, с бронзовыми ручками.

— Тогда мы ему дадим спектакль.

Глава 21

Я не спал нормально.

Ночь перед большой выкаткой всегда одинаковая: лежишь, смотришь в потолок и перебираешь шаги. Этот проверил. Этот проверил. А вот этот — точно?

Разница в том, что там за провал платят инцидентом и ночью дежурства. Здесь — отказом и полной неизвестностью после него.

Встал в шесть. Умылся холодной водой из кувшина — котёл был только наверху, у Тарена. Оделся так тщательно, как позволяло то, что у меня есть: рубаха, стиранная вчера и высушенная у горна, пояс без дыр, сапоги, у которых шов я прошил сам три дня назад.

Двадцать девять серебряных лежали там же, где лежали с той ночи, когда Тарен отказался их взять, — в кошеле под доской верстака. Потратить их на кафтан значило бы не понять ни слова из того, что он тогда сказал.

Тарен уже сидел за столом с кружкой. Он встал раньше меня.

— Завтрак, — сказал он и подвинул тарелку. Хлеб, сыр, сушёный инжир.

— Спасибо.

Я ел не торопясь. Тарен не разговаривал — он умел молчать правильно, не давя этим молчанием. Просто пил свою кружку и иногда смотрел в окно, где улица начинала оживать.

— Рэн, — произнёс он, когда я почти закончил.

— Да?

— Ты знаешь материал.

— Знаю.

— Ты не знаешь его так, как они хотят знать. Терминологию, систематику, порядок перечисления.

— Я знаю.

— Это создаст проблемы в теоретической части. — Он поставил кружку. — Не потому что ты не прав. А потому что экзаменаторы сверяются с ключом ответов. У них в голове — эталонный список. Если твой ответ совпадает с эталоном — хорошо. Если не совпадает — плохо, даже если ты прав.

— Значит, они проверяют не работу, а совпадение, — сказал я.

Тарен помолчал.

— Да. Именно так.

— Я постараюсь говорить на их языке, — сказал я. — Когда смогу. А когда не смогу — объясню, почему мой ответ эквивалентен.

— Будь дипломатичным.

— Постараюсь.

— Рэн. — Он смотрел на меня прямо. — Это важно. Не только для лицензии. После экзамена они будут думать о тебе. Не делай так, чтобы они думали плохо раньше, чем увидят работу.

Я кивнул. Совет был хороший и неприятный, как всякий хороший совет: то, что о тебе записали первым, потом переписывают неохотно.

Здание Гильдии Артефакторов стояло в центральном квартале — тёмно-серое, каменное, с двумя башнями по флангам. Широкий вход с колоннами, над дверью эмблема: рука с рунным пером над горящим кристаллом. Логотип. Такие рисуют, чтобы входящий сбавил шаг.

Последний раз я сбавлял шаг перед конторой с названием из трёх букв, которая выдала мне тестовое задание на двое суток и не заплатила за него ничего, потому что и не собиралась. Ответа я тогда так и не дождался.

Интересно, что скажут здесь.

У входа уже стояли люди. Я считал: одиннадцать и я — двенадцать, точно как сказал Виго. От пятнадцати лет до тридцати с лишним. И кафтаны. Ученические кафтаны, подмастерские значки, у одного — меховая оторочка, какую не носят те, кому нечего есть.

Условие допуска я помнил дословно, потому что перечитал его четыре раза: отсутствие действующего мастера-патрона. А кафтан — это и есть патрон, нашитый на грудь.

Без единого знака принадлежности из двенадцати стоял один человек. Я.

Дарена я увидел сразу.

Это было несложно — он был на голову выше большинства присутствующих и стоял так, как стоят люди, которые привыкли, что пространство вокруг них — их пространство. Широкие плечи, прямая спина, кожаный фартук артефактора — не рабочий, а выходной, тёмно-коричневый с серебряными пряжками на плечах. Волосы светлые, убраны назад. Возраст на вид — лет восемнадцать, как и говорил Тарен. Лицо правильное, уверенное, немного скучающее.

Он разговаривал с двумя кандидатами в ученических кафтанах, и те слушали с видом людей, которым лестно, что слушать дают именно им. Расстановка читалась с одного взгляда: он в середине, они по краям.

Я встал чуть в стороне. Стал ждать.

Дарен посмотрел на меня через минуту. Прошёлся взглядом по всем и задержался на мне на секунду дольше: незнакомый, без знака, без кафтана. Взгляд не злой — отмечающий. Так заносят в список ещё одну строку, не разбираясь пока, что она значит.

Я кивнул. Он кивнул в ответ — вежливо, коротко — и вернулся к разговору.

Хорошо. Нейтральный старт.

Внутри Гильдия была именно такой, какой должна быть: высокие потолки, дубовые панели, запах дерева и чего-то химического — реагентов для рун, скорее всего. Длинный коридор вёл в главный зал, где для экзамена расставили столы. Три стола для экзаменаторов — поперёк, как трибунал. Перед ними — дюжина мест для кандидатов. Вдоль стен — скамьи для наблюдателей: человек тридцать, все из учебного крыла. Посторонних не было. Экзамен для самоучек Гильдия смотрит сама.

[СИСТЕМА] Внимание: экзамен на лицензию подмастерья. Уровень стресса: повышенный. Совет: дышите.Я закрыл уведомление — и только потом сообразил, что меня в нём задело.

Раньше каждая строка окна начиналась с одного и того же значка: маленького угольника остриём вправо. Я привык к нему за полтора месяца и перестал замечать, как перестаёшь замечать курсор. Так помечают чужую речь: вот это не моё, это я привожу.

Угольников не было. Система больше ничего не приводила. Она просто говорила.

Я стоял посреди гильдейского зала и думал не об экзамене, а о том, что где-то внутри у неё сменилась версия — и меня, как обычно, не спросили.

За тремя столами сидели экзаменаторы. Двое — мастера, которых я не знал: один пожилой с очками на цепочке, другой средних лет с аккуратной бородой. Третий — молодой, но с знаком старшего мастера Гильдии на кафтане. Это был, судя по описанию Тарена и по тому, как остальные на него поглядывали, представитель Кровиса. Личный эмиссар главы Гильдии. Не сам Кровис — но его глаза и уши.

Глаза и уши сидели с тонкой стопкой бумаг перед собой и выглядели человеком, которому это всё немного скучно, но который будет делать свою работу очень тщательно.

Мы сели. Порядок нам не объяснили: меня поставили пятым, Дарена — третьим, через два места слева.

Старший из экзаменаторов — пожилой с очками — кашлянул.

— Добро пожаловать на экзамен третьей степени для самоучек.

Он произнёс это ровно, и на скамьях кто-то коротко фыркнул: половина зала сидела в кафтанах.

— Две части, теоретическая и практическая. Теория — устная, три вопроса каждому, до трёх баллов за ответ. Проходной — шесть из девяти. Практика сегодня после обеда, задание объявят на месте.

Публика на скамьях тихо гудела. Кандидаты сидели прямо, как на военном смотре.

Я сидел ровно и прогонял в голове тот же список, что перед выкаткой: всё ли на месте, на всё ли есть ответ заранее. Теория — это собеседование. Их я проходил достаточно. Это я умею.

Умел. В прошлой жизни, и не сказать чтобы блестяще.

Первые два кандидата прошли теорию без происшествий. Один — бойко и уверенно, второй — запинаясь на середине второго вопроса, но выправился. Публика реагировала сдержанно, экзаменаторы писали.

Третьим пошёл Дарен.

Он встал — я обратил внимание, что встаёт он именно так: не подтягивается, не торопится, просто встаёт, как будто это самое естественное движение на свете. Подошёл к месту перед столами экзаменаторов.

— Дарен Кросвайт, — объявил старший. — Мастерская Гильдии, ученик третьего года.

Он прочитал это ровно, как читают погоду. Ученик третьего года — при живом мастере, при действующем патроне, на экзамене, куда допускают тех, у кого патрона нет.

Никто в зале не поднял головы. Значит, все знали заранее и заранее сговорились не заметить.

Первый вопрос: классификация базовых рун по функциям.

Дарен отвечал без паузы — ровно, с правильными ударениями. «Три класса по гильдейскому реестру: первичные, вторичные, связующие. Внутри первичных четыре группы, внутри вторичных пять, связующие не делятся». Дальше пошли даты, имена и порядок, в котором это положено перечислять, и он ни разу не сбился с порядка.

Экзаменатор кивал. Второй делал пометки. Представитель Кровиса слушал, глядя в сторону — это был хороший признак: когда эксперт не смотрит на отвечающего, значит, привыкли. Ответ предсказуем.

Второй вопрос: совместимость материалов при нанесении рун.

Снова точно и по учебнику. «Серебро принимает все три класса без ограничений; медь — первичные и вторичные, для связующих не рекомендована из-за резонансного распада...» Я слушал и думал: всё правильно. Всё до последнего слова правильно.

Третий вопрос: техника безопасности при работе с концентрированными манопотоками.

Дарен ответил. Добавил цитату из «Правил практики Гильдии, том второй, параграф семнадцать». Процитировал дословно.

Публика зааплодировала — не бурно, но одобрительно. Несколько голосов. Экзаменатор с бородой улыбнулся.

— Отлично, — произнёс старший, делая пометку. — Следующий.

Дарен вернулся на место, не торжествуя и не скромничая — просто сел. Он знал, что хорошо ответил. Это не требовало подтверждения.

Я смотрел на него и думал: документация написана безупречно. Посмотрим, что с кодом.

Четвёртым шёл кандидат, которого я не знал — парень лет двадцати пяти из самостоятельной мастерской, нервничал, путался в ответах. Судя по лицам экзаменаторов — не очень.

Пятым — я.

— Рэн... — Старший запнулся, глядя в бумагу. — Рэн. Место учёбы: самостоятельная практика под руководством наставника. Наставник указан как...

Он не договорил. Прочёл про себя, помолчал ровно столько, сколько нужно, чтобы прочесть короткое слово дважды.

В зале ничего не изменилось. Только экзаменатор с бородой перестал писать и держал перо на весу, пока старший не перевернул лист. Имени не произнесли вслух ни разу — ни тогда, ни потом.

Хорошо, подумал я. Значит, оно всё-таки чего-то стоит, если его до сих пор не выговаривают.

Старший поднял взгляд. Посмотрел на меня нейтрально.

— Хорошо. Первый вопрос. — Он сверился с листом. — Классификация базовых рун по функциям.

Тот же вопрос, что и Дарену. Слово в слово.

Реестр я знал: Тарен гонял меня по нему три вечера подряд, и я мог перечислить всё в нужном порядке. Только в голове у меня руны лежали не так. Они лежали так, как их приходится брать, когда собираешь вещь.

— Ввод, обработка, вывод, управление, хранение, связь, — сказал я.

Пауза.

Представитель Кровиса поднял взгляд. Первый раз за утро он посмотрел на кандидата.

— Это не гильдейская классификация, — сказал старший.

— Это классификация по назначению. Руна поглощения и руна приёма стоят в реестре в разных группах, а в вещи делают одно: впускают. Мне нужно знать, что руна делает, а не в какой она группе.

— Реестр вам, стало быть, не нужен.

— Нужен, — сказал я. — Первичные, вторичные, связующие. Четыре группы, пять групп, связующие не делятся. Я могу ответить и так.

Старший смотрел на меня. Потом на соседа. Потом снова на меня.

— Отвечайте так.

Я ответил так. Полностью, в том порядке, в каком это записано у них.

— Верно, — произнёс он медленно. Взял перо. Записал. — Нестандартная формулировка. Не ошибочная.

На скамьях для наблюдателей тихо переговаривались. Я краем глаза видел: несколько человек нахмурились, один наклонился к соседу что-то шепнуть.

Я стоял прямо и ждал второго вопроса.

Второй вопрос был про манопотоки и материалы — я ответил правильно, хотя снова не в том порядке, который они, видимо, ожидали. Начал с принципа, а не с перечня. Экзаменатор поморщился, потом дослушал, сделал ещё пометку.

Третий вопрос: назовите три главных правила безопасности при работе с нестабильными рунными схемами.

Я назвал пять.

— Достаточно трёх, — сказал экзаменатор.

— Первые три тогда: изоляция рабочей зоны, ограничение потока маны на входе, наличие сброса перед активацией. Остальные два — производные, но важные для полноты.

Долгая пауза. Старший что-то дописывал. Представитель Кровиса снова смотрел в сторону.

— Можете занять место, — произнёс наконец старший.

Я вернулся за стол. Сел. Выдохнул тихо.

Дарен смотрел на меня — недолго, но я заметил. Не насмешливо. Скорее с тем видом, с каким смотрят на что-то непривычное, которое пока не понял, как оценить.

Я не стал отвечать взглядом. Открыл блокнот, который взял с собой, и написал в нём одно слово: «нормально». Это было моим личным критерием по итогам первого этапа: не «хорошо», не «плохо». Нормально — значит, дальше.

Следующие шесть прошли по-разному: двое уверенно, двое середина на половину, двое плохо — и один из этих двоих почти на каждом вопросе смотрел в пол и тянул паузу, пока её не обрывали. Скамьи хлопали хорошим ответам и затихали на плохих.

В перерыве между кандидатами — пока девятый выходил вперёд — ко мне подсел один из гильдейских учеников. Молодой, лет семнадцати, веснушчатый, с явным желанием поговорить.

— Слушай, ты из какой мастерской? — спросил он вполголоса.

— Независимой, — ответил я так же тихо.

— Да, но у кого учился?

— У мастера, который сейчас не в Гильдии.

Он подумал.

— Это Тарен, что ли?

Я повернул голову и посмотрел на него внимательно. Он слегка смутился.

— Ну, говорят... ходят слухи... У нас в учебном крыле говорили, что он тут, в городе.

— Мне нечего добавить к слухам, — сказал я вежливо. — Как тебя зовут?

— Эллен. Я второй год ученик.

— Эллен. Когда твой экзамен?

— Следующей весной.

— Тогда у тебя время есть. — Я кивнул в сторону кандидатов. — Смотри внимательно, что работает, а что нет.

Он кивнул и вернулся на скамью. Любопытный, не злой. Просто хотел понять, что за непонятный человек пришёл на экзамен из ниоткуда.

Это нормальный вопрос. Я бы сам спросил то же самое.

Последним шёл двенадцатый — самый старший из нас, лет тридцати пяти, с руками человека, который работает давно и много. Он отвечал медленно и точно, не торопясь показать, сколько знает.

По итогам теоретической части экзаменаторы совещались минут десять. Потом старший встал.

— Объявляем перерыв до середины дня. Практическая часть — здесь же. Все кандидаты приглашены.

Значит, все двенадцать прошли теорию. Или хотя бы набрали минимум.

Я вышел в коридор, прислонился к стене и попытался оценить ситуацию объективно. Теория: я ответил правильно на все три вопроса. Но не в том формате, который они хотели. Это «не ошибочно, но нестандартно» — именно так сказал экзаменатор. Значит, баллы у меня есть. Насколько — не знаю.

Дарен вышел почти следом. Он шёл в сторону выхода, и я был у него на пути, так что он остановился в полуметре от меня.

— Рэн? — произнёс он. Не вопрос — подтверждение.

— Да.

— Дарен Кросвайт.

— Знаю, — сказал я.

Он чуть прищурился — не враждебно, но с тем выражением, с каким смотрят на человека, который не по протоколу. Наверное, полагалось представиться в ответ полностью, отметить фамилию, обозначить разницу в положении. У них тут был на это свой порядок, и я его не читал.

— Хорошо отвечал, — сказал он. Тон ровный, без иронии — это было ощутимо. — Но непривычно. Ты откуда?

— С севера, — ответил я. Это была правда, если считать деревню, где я очнулся.

— Там так учат?

— Там учат так, как умеют. — Я чуть улыбнулся. — А ты отвечал хорошо. Учебник знаешь отлично.

Он посмотрел на меня секунду. Что-то в этом явно не то, что он ожидал услышать — не грубость, но и не лесть.

— Увидимся в практической части, — сказал он.

— Увидимся.

Он прошёл мимо.

Я проводил его взглядом. Высокий, прямой, серебряные пряжки поблёскивают. Хорошая документация, думал я снова. Подождём, что будет с кодом.

Глава 22

Обед я купил у уличного торговца у ворот Гильдии — пирог с мясом и горячий отвар в глиняной кружке. Сел на ступеньке сбоку, подальше от других кандидатов, и ел не торопясь.

Было солнечно и для осени неожиданно тепло — будто август передумал уходить. Над площадью ходили голуби, подбираясь к моей ступеньке боком, как подходят к человеку, от которого уже что-то получали.

Я думал о практической части.

Задание неизвестно. Но мы с Тареном перебрали всё, что дают на экзаменах третьей степени за последние годы: грелка, замок, сигналка, фонарь. Каждую я собирал дважды — как принято и цепочкой. Что бы ни назвали, я это уже делал.

Значит, делать как умею. Изображать гильдейский метод бессмысленно: изображённый чужой метод всегда хуже своего.

Я допил отвар, встал, размял пальцы.

[СИСТЕМА] Напоминание: навыки активны. Рунный скриптинг (ур. 2): цепочки до 8 рун, один вход, один выход. Рунное письмо (ур. 3), Маноощущение (ур. 3), Рунный Анализ (ур. 1), Материаловедение (ур. 1), Шаблонирование (ур. 1). Готово к работе.Я прочитал по диагонали — так читают то, что знают наизусть.

Да. Готово к работе.

Я закрыл уведомление и пошёл обратно в Гильдию.

В зале стало тише и теснее: на скамьях сидело человек сорок. Слух о кандидате, который отвечает не по реестру, дошёл до учебного крыла быстрее, чем я дошёл до своего места. Все сорок были из Гильдии — посторонних на такое не зовут, здесь смотрят на своих и на тех, кто пришёл проситься к своим.

Я занял своё место. Дарен сидел уже там — спокойный, с рабочими инструментами перед собой в аккуратном порядке. Хороший набор: серебряное перо, три кисти разного размера, маноизмеритель с медной стрелкой. Профессионально.

Мой набор был скромнее — то, что дал Тарен и что успело стать привычным. Но инструменты не выигрывают экзамен. Руки выигрывают.

Старший экзаменатор встал.

— Практическая часть начинается. Задание: создать артефакт-фонарь с регулировкой яркости. Материалы предоставлены — серебряная пластина, стандартные чернила. Время — два часа. Критерии: артефакт должен давать стабильный свет, регулировка должна быть плавной, рунная схема должна быть задокументирована на листе перед вами.

Он сел.

Двенадцать человек одновременно потянулись к материалам, и зал наполнился звуком, которого я раньше не слышал в таком количестве: перо по серебру. Двенадцать перьев — это не тише, чем двенадцать напильников, только тоньше и злее.

Пахло чернилами и нагретым металлом. Под потолком висели гильдейские светильники — ровные, безупречные, и от них к середине зала натекала духота.

Я взял пластину, положил перед собой, посмотрел на неё.

Фонарь с регулировкой яркости.

Хорошее задание. Фонарь я делал — мой «Hello World». Но глухой, на одну яркость. Чтобы яркость ходила, нужен либо переменный вход, либо промежуточный узел, либо развилка.

В голове начала выстраиваться архитектура.

Ввод — фильтр — конвертер — регулятор с ветвлением — вывод.

Пять рун. Скрипт из пяти строк.

Я взял перо и начал чертить.

Прошло несколько минут. Я краем зрения видел, как работают другие. Большинство начали с центральной руны — это классический подход, от ядра к периферии. Дарен работал сосредоточенно, с той же спокойной уверенностью, что и всё остальное. У него на пластине уже вырисовывалась контурная схема — одна большая составная руна с вложенными структурами.

Монолит. Красивый, грамотный, монолитный.

Я работал иначе: слева направо, руна за руной, отдельными блоками с соединительными контурами между ними. Первая руна — ввод маны. Компактная, простая, проверенная. Я уже делал её столько раз, что она выходила автоматически.

Маноощущение включилось само, без спроса, как включается слух на знакомое имя. Руна наполнялась по мере того, как ложилась линия, — я не смотрел на неё, я её чувствовал. Правильно. Хорошо.

Второй узел — фильтр. В задании его никто не требовал. Фильтр принимает ману и отсекает всё, что выше допустимого: дальше проходит только то, с чем схема справится.

Шесть дней назад я поднимал порог такому же фильтру в патрульном амулете. Он там захлебнулся — его считали на тихие улицы, а он получил Восточный рынок, где чужая мана на каждом втором поясе. Кира сказала тогда: «Раз в две недели». То есть с ним такое случалось и раньше, и никто не считал это поломкой.

Ставлю. Просто потому, что теперь знаю, как выглядит вещь, у которой на входе не стоит ничего.

Я чувствовал на себе взгляды.

Не Дарена — он работал. Двух наблюдателей у стены, которые что-то тихо обсуждали. Один из экзаменаторов — средних лет с бородой — переместился ближе и стоял в метре, наблюдая за моей работой. Не мешал. Просто смотрел с видом человека, который видит что-то незнакомое.

Я продолжал работать.

Третий узел — конвертер. Превращает ману в свет, задаёт базовый уровень. С ним я управился быстро.

Четвёртый я держал в голове так: регулятор смотрит, с какой силой человек давит ладонью, и решает. Сильнее — открыть поток. Слабее — придержать. Два исхода из одной точки. Если — то.

Я повёл линию от узла в две стороны.

Перо остановилось само.

[ОШИБКА] Рунный скриптинг (ур. 2) Структура цепочки: один вход, один выход. Ветвление недоступно.Окно висело поперёк листа и не закрывалось, пока я не дочитал.

Я видел эту строчку раньше — в ту ночь, когда скриптинг вообще открылся. Тогда она была мелким шрифтом под большой новостью. Мелкий шрифт всегда так и выглядит, пока в него не упрёшься.

Ветвление в рунном деле есть, я его даже держал в руках: узловые схемы, несколько выходов из одной точки, Тарен показывал. Умеет мир. Не умею я — вернее, не умеет то, чем я собираю.

Сорок минут из двух часов. На пластине — половина развилки: чернила на серебре не стираются, они въедаются. Просить вторую пластину — минус время и минус лицо, и оба минуса запишут в лист.

Я положил перо.

Ладно. Чего я хочу от четвёртого узла?

Чтобы свет менялся вслед за рукой. Плавно.

Чтобы вещь решала — вот чего я хотел на самом деле. Я битый час пытался вложить в неё выбор, которого у неё никто не просил. Решает человек, который кладёт ладонь. Ей остаётся не спорить.

Убери решение — останется передача.

Сколько маны дали, столько и дали. Фильтр во втором узле уже срезал всё лишнее, значит, до четвёртого доходит ровно то, что можно пропустить. Это не с чем сравнивать. Это надо провести дальше. Один вход, один выход.

Оставалось «плавно». Голая передача даёт рывок: убрал ладонь — свет упал камнем.

Руна хранения. Держит состояние, пока не спросят.

Я поставил её четвёртой: она держит прежний уровень и подтягивает его к новому не сразу, а с задержкой в полвздоха. Никакого «если». Никакого выбора. Вещь, которая помнит, где была, и потому не прыгает.

Взял перо и повёл линию поверх начатой развилки — так, чтобы одна её половина легла в новый контур, а вторая замкнулась в петлю памяти.

Вышло не то, что я задумывал. Вышло проще.

Ввод — фильтр — конвертер — память — вывод.

Пять рун, как и собирался. Только четвёртая теперь не спорит с человеком, а помнит его.

Оставался пятый узел — вывод.

Когда я заканчивал пятый узел, краем уха поймал тихий разговор у стены. Двое наблюдателей — нет, экзаменаторы. Переговаривались, не поднимая голоса.

— Пять отдельных рун, — произнёс один. — Соединённых.

— Вижу. — Пауза. — Это... это рунная цепочка. Он строит цепочку.

— Это не стандартный метод.

— Нет.

Молчание. Кто-то из них переступил с ноги на ногу — доски под ним отозвались.

— Продолжаем наблюдать.

Я не подал виду, что слышал, и не поднял головы. У соседа слева коротко треснуло — то ли перо, то ли терпение; за спиной у меня втянули воздух сквозь зубы. Я вёл четвёртое соединение и считал только его.

Пятый узел лёг правильно. Я закрыл контур. Посмотрел на схему целиком — пять блоков, четыре соединения, чистые линии. Взял лист для документации и начал писать: структура схемы, функция каждого узла, интерфейсы.

Через какое-то время Дарен поднял голову и посмотрел на мою пластину. Не мельком — секунды три, и я успел развернуться к нему.

Пять отдельных рун. Между ними соединительные контуры в волос толщиной. Рядом исписанный лист.

— Примитивно, — сказал он.

Без злости. Так говорят о чужом инструменте, который подержали в руках и не поняли, зачем он такой.

— Каждая по отдельности — да, — согласился я.

Он вернулся к своей руне. Я — к своей.

Оставался час. Я начал проверку.

Активировал схему осторожно, малым потоком. Первый принял. Второй срезал верх. Третий начал превращать. Четвёртый принял и придержал. Пятый выдал свет.

Фонарь засветился. Ровно, стабильно, без мерцания.

Я положил ладонь на пластину и надавил маной сильнее. Свет пошёл вверх — не скачком, а как поднимается вода: за рукой, чуть отставая.

Убрал ладонь. Свет так же неспешно осел обратно.

Работает.

Я откинулся чуть назад. Выдохнул. Посмотрел на остаток времени — впереди ещё час с четвертью. У меня всё готово.

Оставшееся время ушло на лист. Параметры каждого узла, порядок сборки, что с чем соединяется и почему именно так. Отдельной строкой — почему в четвёртом узле нет развилки.

Я написал не «не сумел». Я написал «здесь она не нужна». И это было верно. Стало верным полчаса назад.

Старший экзаменатор объявил конец практической части через два часа.

Двенадцать артефактов лежали на столах. Разные. По большей части — работающие. Я видел хотя бы три, которые светились слабо или с мерцанием — это значило проблемы в схеме.

Мой — светил ровно.

Дарен — тоже. И у него было красиво: крупная составная руна, из которой шло тёплое, густое свечение. Регулировка — плавная, монолитная, вшитая прямо в центральную структуру. Это была хорошая работа. Честно хорошая.

Экзаменаторы пошли по столам, проверяя.

Когда дошли до меня, остановились дольше, чем у других.

— Объясните схему, — сказал старший.

Я объяснил. Пять узлов, что делает каждый, почему регулировка держится на памяти четвёртого, а не на развилке. Показал на листе.

Экзаменатор с бородой нагнулся, смотрел на пластину.

— Пять отдельных рун вместо одной составной, — произнёс он. Не вопрос — констатация.

— Да. Каждая выполняет одну функцию. Соединения — через стандартные интерфейсные контуры.

— Зачем пять, если можно одну?

— Потому что с одной — ошибку найти труднее. И изменить одну часть невозможно без переработки всей схемы. С пятью — каждый узел можно проверить, заменить или улучшить независимо.

Пауза.

— Это нестандартный подход.

— Это другой подход, — поправил я мягко. — Результат — тот же. Или лучше. Хотите проверить?

Он посмотрел на меня. Потом на представителя Кровиса, который подошёл ближе и молча наблюдал.

— Проверим, — произнёс наконец старший.

Глава 23

— Проверим, — повторил старший экзаменатор.

Не «хорошо» и не «посмотрим» — «проверим». Когда так говорит человек, который в деле сорок лет, это значит: я найду место, где оно сломается.

Справедливо. Именно так и надо.

Экзаменаторы отошли к столам и заговорили негромко, с бумагами и оглядками в нашу сторону. Скамьи подтянулись ближе.

Это худшая часть любой работы: ты всё сделал, и теперь остаётся ждать, пока проверят, — а изменить уже ничего нельзя.

Дарен листал свою документацию и делал вид, что читает.

Через несколько минут старший встал.

— Мы проведём дополнительное испытание. Стресс-тест нагрузкой. — Он обвёл взглядом зал. — Часть необязательная, но мы вправе применить её, когда считаем нужным. Для двух кандидатов.

Он назвал имена. Дарен. И я.

На скамьях зашевелились. Дарен поднял голову, посмотрел на старшего, потом на меня — коротко, без выражения.

За свою вещь я был спокоен: второй узел затем и стоял, чтобы лишнее не шло дальше. Про монолит Дарена я не знал ничего.

Мы вышли к столам.

Сначала — Дарен.

Экзаменатор с бородой — тот, что стоял над моей пластиной, — достал из кармана усилительный кристалл и положил рядом с работой Дарена.

— Готов?

— Да, — сказал Дарен.

Он подал ману — сначала рабочий уровень. Артефакт Дарена засветился ровно и тепло. Потом больше. Ещё больше.

Через Маноощущение я увидел, как внутри монолита пошёл перекос: центральная структура была рассчитана на свой диапазон, и за его краем ей стало нечем распорядиться.

Свет сбился с ровного. Мигнул. Ещё раз. Начал пульсировать, разогнался — и на вспышке погас.

Не взорвался и не треснул. Просто вышел из работы.

Дарен смотрел молча. Потом взял пластину, наклонил, осмотрел. По лицу нельзя было прочесть ни досады, ни испуга — он просто смотрел внимательно.

— Схема не рассчитана на перегрузку свыше двойного номинала, — произнёс он ровно. — Это не ошибка проектирования. Это ограничение метода.

— Верно, — согласился экзаменатор. — Зафиксировано. — Сделал запись.

На скамьях переговаривались — скорее сочувственно, чем злорадно: при классическом методе это был ожидаемый исход.

Теперь — я.

Экзаменатор переместился к моей пластине. Манокристалл — рядом.

— Готов?

— Готов.

Он подал ману. Мой артефакт засветился ровно. Потом — больше. Ещё больше.

Через Маноощущение я видел то, чего не видел зал: второй узел принимал разрастающийся поток и срезал у него верх, как срезают пену. Дальше шло ровно столько, сколько дальше могло пройти.

Яркость дошла до предела, заложенного конвертером, и на нём встала. Экзаменатор добавил. Ничего не изменилось. Добавил ещё. Ничего не изменилось.

— Достаточно, — произнёс он наконец и убрал кристалл.

Мой фонарь светил как светил.

— Объясните, — сказал старший, подходя ближе.

— Второй узел — фильтр, — сказал я. — Он пропускает только допустимое. Избыток срезается на входе, и остальные узлы получают то, с чем справятся, сколько бы ни подали снаружи.

— Сколько бы ни подали?

— Впятеро выше рабочего он держит. Дальше захлебнётся и он.

Пауза.

— Почему вы его поставили?

— Потому что вещью пользуется человек, а человек подаёт сколько подаст. Случайно или нарочно — схеме всё равно. Фильтр стоит для того, чтобы ей было всё равно.

Старший смотрел на меня. Потом на артефакт. Потом — на представителя Кровиса, стоявшего в трёх шагах.

Тот молчал.

— Зафиксировано, — произнёс наконец старший и что-то написал.

Совещались долго. Нас вывели в коридор. Двенадцать человек вдоль стены: кто-то вполголоса поздравлял соседа, двое молчали и смотрели в пол.

Дарен стоял чуть в стороне — как и я. Мы не разговаривали, но со стороны это, наверное, выглядело так, будто ждём вместе.

Из зала доносились голоса: не слова, одни интонации. В какой-то момент — спор. Один поднимает голос, другой отвечает. Потом тише.

Я прислонился к стене и смотрел на потолок. Обсуждать им было нечего, кроме одного: у них в голове есть ящик для гильдейского, ящик для деревенского, ящик для устаревшего — и нет ящика для меня. Принять, потому что работает, или отклонить, потому что не по образцу.

Я не слышал всего, но один момент долетел — через дверь, когда кто-то внутри повысил голос:

— ...результат говорит сам за себя...

И в ответ, другой голос:

— ...метод должен соответствовать стандартам Гильдии...

А потом — третий, тихий, ровный, который я опознал как представителя Кровиса:

— ...зафиксируйте как нестандартный. Результат зачтён.

Тишина.

Потом шаги.

Дверь открылась, нас позвали обратно.

Мы встали перед столами. Старший держал список — двенадцать имён.

Он читал медленно, по порядку. Каждому — коротко: «прошёл», «не прошёл», «прошёл с замечанием». Из двенадцати — девять прошли. Двое — нет. Одному — условный результат, переэкзаменовка через месяц.

Когда он дошёл до Дарена:

— Дарен Кросвайт. Пройден с отличием. Теоретическая часть — девять из девяти. Практическая — полный балл. Замечаний нет.

На скамьях захлопали — тихо, одобрительно.

Замечаний нет. Час назад его артефакт погас на глазах у сорока человек, и в лист это не попало ни строкой: стресс-тест был необязательным — значит, его как бы и не было.

Дарен кивнул.

Потом — я:

— Рэн. Пройден. Теоретическая часть — семь из девяти, нестандартные формулировки. Практическая — артефакт признан соответствующим требованиям. — Старший остановился. Прочёл что-то в своём листе. — Метод — нестандартный. Результат — подтверждён. Лицензия выдаётся с пометкой: «нестандартный метод, требует наблюдения».

Пауза.

— Это означает, — добавил он, обращаясь ко мне напрямую, — что в течение года любой мастер Гильдии вправе потребовать у вас показать работу. Это не наказание. Это порядок для нестандартных случаев.

— Понял, — сказал я.

— Хорошо.

Я стоял и складывал два листа в один. У него вещь погасла — в бумагах этого нет. У меня вещь не погасла — и за это в бумагах есть строка на год. Проверяли не то, что работает. Проверяли, на что похоже.

На скамьях было тихо. Не враждебно — озадаченно.

[СИСТЕМА] Экзамен третьей степени завершён. Результат: ПРОЙДЕН. Лицензия: Подмастерье Артефактор (нестандартный метод). Ограничение: наблюдение в течение 12 месяцев. [УРОВЕНЬ] 8 → 9 Разблокировано: +1 к ментальной выносливости, +1 к точности рунного нанесения. [НАВЫК] Рунный Анализ: ур. 1 → 2 Опыт получен за: разбор чужой схемы под нагрузкой, в реальном времени. Доступно: чтение составных структур. [ДОСТИЖЕНИЕ] «Прошедший контроль» Первый официальный экзамен — пройден. Комментарий Системы: ваш метод признан. Пока что — условно.Я прочитал, запомнил и закрыл всё разом.

Девятый уровень. Лицензии в руке пока не было — бумагу выдадут позже, — но она уже была сказана вслух при сорока свидетелях.

Я выдохнул. Тихо, чтобы не заметили.

Снаружи Гильдии было ветрено.

Кандидаты выходили группами и расходились. Пахло мокрым булыжником и первым холодом — тем, что приходит в конце сентября и ещё не остаётся.

Я стоял на ступенях и смотрел на площадь. Голова после такого дня просто записывает, что вокруг.

— Рэн.

Я обернулся.

Дарен стоял в двух шагах. Фартук он снял и держал под рукой, и без фартука это был просто высокий парень в хорошей одежде.

— Поздравляю, — сказал он. — Пройти с нестандартным методом — это не просто.

— Тебя тоже, — ответил я. — С отличием — заслуженно.

Он посмотрел на меня несколько секунд — так же оценивающе, как с первой минуты у входа.

— Любопытный трюк, — произнёс он. — Фильтрующий узел во второй позиции. Это откуда?

— Из работы, — сказал я.

Сказать точнее я не мог. Шесть дней назад мне принесли вещь, у которой такой узел захлебнулся, и с тех пор я думал не о том, как его починить, а о том, что бывает, когда его нет вовсе. Но за той вещью стоял человек в городской форме, а за человеком — заказ, о котором Гильдии знать незачем.

— Видел, как схему ведёт без него, — сказал я вместо этого.

— Работа, — повторил он, и в этом слове было ровно столько уважения, сколько во фразе «ну-ну». — Только такие трюки долго не живут. Составная руна надёжнее: меньше стыков, меньше мест, где разойдётся.

— Монолит тоже долго не живёт, — сказал я. — Его тяжело чинить и нельзя менять по частям. Когда ломается одна — ложится вся. — Пауза. — Но это ты поймёшь со временем.

Тишина.

Я сказал «поймёшь», как старший младшему, и он это услышал. Раздражение мелькнуло и не задержалось; за ним пришло любопытство, непохожее на вежливость.

— Ты самостоятельный практик?

— Да.

— У кого учился?

— У хорошего мастера.

— Имя не скажешь.

— Не скажу, — подтвердил я.

Дарен кивнул — коротко, приняв к сведению. Он мог бы настоять, напомнить, чей он сын, намекнуть на связи. Не стал, и это было в его пользу.

— Увидимся ещё, скорее всего.

— Вероятно.

Он кивнул и пошёл к воротам, где его ждали двое в гильдейских кафтанах.

Я проводил его взглядом. Способный, вышколенный, уверенный меньше, чем я ждал. Он держался внутри своей системы, потому что она дала ему всё, — и причин сомневаться у него пока не было.

Пока.

Обратно я шёл пешком, через нижний квартал, нарочно медленно.

Улица занималась своим. Где-то били по железу, тянуло горелым маслом и мокрым камнем, у водоразбора ругались две женщины из-за очереди, и одна держала ведро так, будто собиралась им воспользоваться не по назначению. Никому тут не было дела до того, что час назад решили насчёт меня в гильдейском зале, и это оказалось приятнее, чем я ждал.

Семь из девяти. Материал я знал, упаковку — нет, и это справедливо. Упаковку можно выучить за неделю.

Фильтр сработал. Схема устояла. Лицензия есть.

Я потёр пальцы — жест из прошлой жизни, из вечеров после долгой выкатки. Одно движение: всё встало, можно выдыхать.

Тарен ждал.

Он сидел за верстаком с кружкой и книгой, как утром, будто и не вставал. Но голову он поднял не так, как поднимают на «вот и ты», а так, как поднимают на «наконец-то».

— Лицензия, — произнёс я.

Он поставил кружку.

— Пройден?

— Пройден. С пометкой «нестандартный метод, требует наблюдения».

Тарен помолчал.

— Ожидаемо, — сказал он без разочарования. — Садись. Рассказывай.

Я рассказал всё по порядку и ничего не сгладил. Он слушал не перебивая, и, когда я закончил, долго молчал.

— Стресс-тест, — произнёс он наконец. — Его не проводят на экзамене третьей степени. Никогда.

— Я так и понял.

— Значит, кто-то из них хотел тебя завалить. Или проверить с прицелом завалить. — Он взял кружку, но не пил, просто держал. — Но фильтр сработал.

— Фильтр сработал, — подтвердил я.

— Ты поставил его специально?

— Я поставил его потому, что так правильно. — Я посмотрел на верстак. — Шесть дней назад видел вещь, которой такого узла не хватило. Больше я без него не собираю.

Тарен кивнул медленно.

— Значит, тебя спасло то, что ты сделал правильно, а не то, что подготовился к ловушке.

— Именно.

— Хорошо, — произнёс он. — Это лучший вариант.

Он поставил кружку, встал и взял с верстака старый тестовый кристалл — просто чтобы что-то держать. Он всегда так делал, когда думал.

— С Кросвайтом говорил?

— Коротко. Он сказал, что мой метод — трюк. Я сказал, что монолит тоже долго не живёт.

Тарен фыркнул. У него это означало сдержанное одобрение.

— Он запомнил. Такие запоминают, когда с ними говорят как с равным, а не как со старшим.

— Хорошо бы в хорошем смысле.

— Это уже от него зависит.

Ночью я вытащил кошель из-под доски верстака и высыпал на стол.

Двадцать девять серебряных и девятнадцать медных. Ровно столько, сколько было в ту ночь, когда Тарен сказал «убери» и заплатил за меня пятьдесят.

Я считал долго, потому что считать было приятно. Двадцать три вещи. Если Виго даст за камень столько же, сколько давал прошлый раз, а за фонарь с фильтром чуть больше — фильтр стоит работы, — выходило больше пятидесяти. Ненамного. Но больше.

Значит, к концу месяца я перестану быть человеком, который должен.

Я записал это на чистой странице отдельной строкой — так записывают то, что боятся забыть. Не «отдать долг». «Перестать быть должным»: это разные вещи, и Тарен, кажется, имел в виду вторую.

Снаружи был поздний Кросвэлл — редкие шаги на мостовой, далёкий оклик ночного стражника, скрип ставни у соседей. Наверху скрипнул пол: Тарен ещё не ложился.

Неплохой день.

Утром пришёл Виго. Без предупреждения: постучал, вошёл, огляделся по-хозяйски. Тот же рыжебородый, с тем же непроницаемым лицом.

— Слышал, что вчера, — произнёс он.

— Что именно? — осторожно.

— Что ты прошёл. — Он сел на скамью, не дожидаясь приглашения; он никогда его не ждал. — И что твой фонарь не погас, когда Кросвайтовский погас.

— Откуда?

— У меня есть уши. И там сидел человек, которому я верю.

Тарен вышел из-за перегородки на голос. Виго кивнул ему как старому знакомому, Тарен кивнул в ответ — с тем же теплом, то есть без всякого.

— Мне нужен новый заказ, — сказал Виго, снова обращаясь ко мне. — Большой. Три обоза, пятнадцать камней. И ещё — несколько фонарей для складов. Но не обычных. Таких, чтобы не перегорали от избыточного потока. — Он посмотрел на меня прямо. — Такие бывают?

— Теперь бывают, — сказал я.

— Хорошо. — Он достал кошель. — Тогда к делу. Сколько и когда?

Мы говорили полчаса, и он торговался так, будто не он пришёл ко мне. Когда ушёл, я записал: пятнадцать сигнальных камней и восемь складских фонарей с фильтрацией.

Первая работа, которую я брал не таясь.

Тарен посмотрел на список через плечо.

— Двадцать три вещи. Две-три недели.

— Да.

— Это начало постоянного заказа, если всё сойдётся.

— Знаю.

Он помолчал.

— Поздравляю с лицензией, Рэн, — произнёс он. Тихо, без лишних слов и без торжественности.

— К концу месяца отдам, — сказал я. — Пятьдесят.

Он остановился. Посмотрел не на меня — на список в моей руке.

— Отдашь, — согласился он. — Я и не сомневался, иначе не платил бы.

Помолчал.

— Только не думай, что на этом кончится. Ты мне будешь должен ещё лет тридцать. Просто не деньги.

Сказал он это ровно, как говорят о погоде, и пошёл за кружкой. Тогда я не понял, что это было самое близкое к тому, что другие люди говорят словами «я тобой горжусь».

Обо всём этом я узнал нескоро и рассказываю не как свидетель.

В тот день, в дальнем конце гильдейского зала, за аркой, стоял ещё один человек. Не экзаменатор и не студент. Мастер Кровис, глава Гильдии Артефакторов Кросвэлла, пришёл, как говорили потом, минут за десять до стресс-теста. Встал в тени и смотрел.

Зачем — не объяснял. Таким людям не нужно объяснять: они приходят, когда хотят, и смотрят на то, что сочли нужным.

Он видел, как артефакт Дарена Кросвайта мигнул и погас — красиво, правильно, в рамках ожидаемого. Видел, как фонарь безымянного самоучки продолжил светить.

Потом ушёл, не дожидаясь результатов. Он понял всё, что хотел.

Вечером в кабинете он открыл рабочую книгу — плотную, в тёмном переплёте, с именами и пометками. Нашёл нужную страницу. Нашёл имя.

«Рэн. Подмастерье. Независимый. Метод — неизвестный. Результат — стабилен под нагрузкой».

Взял перо.

Подчеркнул имя.

Раз. Второй.

Закрыл книгу.

За окном лежал Кросвэлл — ветреный, обычный, с первой желтизной в кронах у реки. Гильдия стояла в этом городе тысячу лет. Пережила войны, голод и смену правителей. Переживёт и это.

Но в тот день что-то не сошлось. Маленький артефакт, который не погас.

Мастер Кровис смотрел в окно и думал о вещах, о которых я тогда ещё не знал.

А наутро, когда за Виго закрылась дверь, я сидел над списком из двадцати трёх вещей и прикидывал, в каком порядке их делать, чтобы успеть. Пахло воском и остывшим железом. Наверху ходил Тарен.

Впервые за две жизни я делал работу, которую у меня не мог отобрать никто.

Дальше был продакшн.

Спасибо за чтение

Вернуться к книге