Read the book: «Невязка рендера»
Глава
Невязка рендера
Роман
Глава 1. Зазор в три года
Ноябрь 2008 года в Петербурге не начался — он просто натек сквозь щели в старых оконных рамах, принеся с собой запах намокшей гранитной крошки, дизельного выхлопа и застоявшейся воды с Мойки.
Марк проснулся в семь сорок, как всегда, за минуту до будильника. Лежал, глядя в потолок, слушая, как в трубе за стеной гудит вода, и пытался вспомнить, снилось ли ему что-нибудь. Ничего. Пустота, как в логах после успешного деплоя: ни ошибок, ни предупреждений, ни строчки.
Он встал, прошёл в прихожую и на секунду задержался перед зеркалом. Тридцать два года. Слегка сутулый, с тёмными кругами под глазами от ночных деплоев, в вытянутом тёмно-синем свитере, который когда-то был почти новым. В зеркале он каждый день видел одного и того же человека, и этот человек его вполне устраивал. Никакой драмы. Просто бэкенд-разработчик, который любит, когда всё работает.
На кухне съёмной квартиры на Звериной улице гудел старый ноутбук ASUS. Вентилятор надрывно свистел, выдувая пыльный горячий воздух прямо на пальцы Марка, но он этого не замечал. На столе — подсохшие крошки ржаного хлеба, три немытые кружки с тёмным налетом от крепкого кофе, вчерашняя газета, которую он так и не открыл.
Мир Марка состоял из SQL-запросов, оптимизации индексов, транзакций и строгого правила: у любого бага есть причина. Если в строке 402 вылетает NullPointerException — значит, кто-то передал пустую переменную. Если запрос висит двадцать секунд — значит, забыли индекс. Логика не умеет лгать. Она может быть сложной, кривой, запутанной, но она всегда подчиняется правилам. Это было единственное, во что Марк верил безоговорочно, — и, как выяснилось позже, единственное, что его в итоге спасло.
История Петербурга началась для него как способ отвлечься от очередного дедлайна.
В тот день он искал качественные сканы старых карт для одного гео-сервиса: клиент хотел наложить историческую подложку на современный маршрутизатор, и Марку нужны были векторные слои набережных до перестройки. Он забрёл на сайт оцифрованных архивов Российской национальной библиотеки, кликнул по разделу «Картографические материалы» — и застрял там на три часа.
Сначала он смотрел карты. Потом — планы. Потом — строительные журналы. Архив был устроен как хорошая база данных: если знаешь, по какому полю искать, — найдёшь всё. Марк знал. Он привык копаться в чужих легаси-проектах, где документация умерла десять лет назад, а единственный способ понять, как всё работает, — читать код. Архивы XIX века были устроены точно так же. Только вместо кода — писарский почерк, вместо комментариев — сургучные печати.
За окном прогудел запоздалый трамвай, заставив тихо позвякивать стеклянные розетки на старой люстре. Марк подвинул кружку, поднёс лицо ближе к экрану и навёл курсор на фрагмент оцифрованного строительного журнала за 1842 год.
Раздел ведомостей Департамента проектов и смет. Доходный дом купца Гусева на набережной Мойки. Пятиэтажное каменное здание с двумя внутренними дворами-колодцами, глубоким бутовым фундаментом, рустованным фасадом и сложной лепниной. Марк прочитал описание дважды, потом открыл в соседней вкладке спутниковую карту. Дом стоял на прежнем месте. С ровными окнами, тяжёлым рустом и лепными львами над аркой.
Он вернулся к журналу и навёл лупу на графу «Сроки исполнения и освидетельствования работ».
«Закладка фундамента — май 1842 года. Возведение стен и перекрытий — июнь-июль 1842 года. Отделка фасадов и подведение под крышу — август 1842 года».
Марк замер.
Нажим пера писаря был уверенным, каллиграфическим, с щедрыми росчерками на ятях. Рядом стояла круглая сургучная печать с орлом и подпись губернского секретаря. Это была не черновая запись, не набросок, не «примерно прикинули». Это был официальный документ, прошедший освидетельствование.
— Бред какой-то… — тихо пробормотал Марк.
Он откинулся на спинку деревянного стула. Стул скрипнул.
Три с половиной месяца. Пятиэтажный каменный дом. В 1842 году. На Мойке.
Марк не был строителем. Он был программистом. Но у него была привычка, от которой он не мог избавиться: если цифра в отчёте выглядит подозрительно, её надо пересчитать. Не поверить, не возмутиться, не забыть — а пересчитать. Он открыл на втором мониторе Notepad++ — тот самый, с зелёным значком хамелеона, — и начал импортировать базовые физические константы, которые помнил ещё с университета.
Май 1842 года. Ручной труд. Никаких экскаваторов, никаких бетономешалок, никаких электрических насосов для откачки грунтовых вод из котлована у самой Мойки, где вода просачивается через каждые полметра грязи. Выемка тысяч кубических метров грунта лопатами на конные грабарки. Забивка сосновых свай колотушками-бабами. Доставка кирпича на повозках — по узким улицам, где две телеги едва разъезжаются.
Он накидал простейший скрипт:
```python
# Базовый расчёт человеко-часов для 1842 года
volume_brickwork_cu_m = 14500 # Примерный объём кладки
workers_count = 120 # Максимальная артель на пятне застройки
drying_time_days = 90 # Минимальное время просушки извести
total_days_required = (volume_brickwork_cu_m / (workers_count * 0.8)) + drying_time_days
print "Минимум дней: %.2f" % total_days_required
```
Консоль вывела:
```
Минимум дней: 1141.25
```
Три года.
Три года непрерывной, адской работы в три смены — при условии идеальной погоды и отсутствия задержек поставки кирпича. И это без учёта того, что известково-песчаный раствор в сыром петербургском климате вообще не застывает за три недели. А без застывания нижних ярусов класть третий и четвёртый этажи — значит сложить здание внутрь собственного котлована под тяжестью сырого кирпича.
Но в документе стояло: три с половиной месяца.
Марк почесал подбородок. В груди проклюнулось то самое зудящее чувство, которое всегда возникало у него при поиске плавающего бага в чужом коде — когда функция возвращает 200 OK, но в базе вместо данных лежит мусор. Ты ещё не знаешь, где ошибка. Ты знаешь только, что она есть. И это знание не даёт тебе спать.
— Ошибка оцифровки? — спросил он у пустой кухни.
Он скачал исходный файл высокого разрешения. TIFF-скан весил почти двести мегабайт. При увеличении до 400% были видны волокна старой бумаги, микроскопические трещинки на сургуче, вкрапления сажи от чернильницы. Это не был сбой OCR-распознавания. Писарь в 1842 году абсолютно сознательно вывел уверенной рукой эти даты.
Марк создал на диске D: новую папку. Зашёл в свойства, поставил галочку «Скрытая». Подумал секунду — и переименовал её из стандартного New Folder в нейтральное misc.
Он сохранил туда скан журнала, файл с питоновским скриптом и скриншот современной спутниковой карты дома на Мойке.
Потом закрыл ноутбук, встал и подошёл к окну.
Внизу, на углу Звериной и Любанского переулка, под одиноким жёлтым фонарём мокла тёмная припаркованная «Лада». Двор-колодец дышал сыростью и старой штукатуркой. Кто-то на втором этаже напротив включил свет — жёлтый прямоугольник лёг на мокрый асфальт, подрагивая от ветра.
Впервые в жизни этот город, в котором он прожил больше десяти лет, показался ему не просто массивом из камня и воды, а чем-то… слишком ровным. Словно нарисованным на плотном холсте, который забыли загрунтовать с обратной стороны. Словно декорация, у которой с изнанки — фанера, стойки и следы карандаша.
Марк вернулся к столу, закрыл ноутбук и выключил свет. Но спать он так и не лёг до самого рассвета.
Он лежал на диване, накрывшись пледом, и прокручивал в голове цифры. Три с половиной месяца. Три года. Разница в десять раз. Такие ошибки не делают случайно — их делают либо от полного невежества либо от полного безразличия. Но писарь не был невеждой. Писарь выводил яти и росчерки, как человек, который знает цену каждой букве.
Значит, ошибка не в документе. Ошибка — в том, что Марк считает невозможным.
А это, если подумать, уже совсем другая категория бага.
---
Глава 2. Складская логистика
К январю 2009 года петербургские сумерки стали совсем свинцовыми. Влажный холод проникал сквозь двойные рамы, и Марк спасался только тем, что одну за другой наливал себе горячий чёрный чай, заваривая его прямо в старом фаянсовом кружке с отбитой ручкой.
Папка misc перестала быть просто свалкой скриншотов. К концу декабря в ней появилось что-то вроде реестра — Марк разложил файлы по папкам: «Сроки», «Материалы», «Кадры», «Прочее». Последняя разрасталась быстрее всех, потому что в неё он сваливал всё, что не мог объяснить, но и выбросить не решался.
Он не сказал о находке никому. Ни родителям, которые звонили по воскресеньям и спрашивали, не женился ли он наконец. Ни коллегам на работе. Один раз чуть было не рассказал Игорю — коллеге-системщику, с которым они вместе чинили ночные падения сервера, — но вовремя остановился. Игорь был человеком с идеальной математической логикой и полным отсутствием терпения к «мистике». Он бы выслушал, кивнул, а потом сказал бы что-нибудь вроде: «Ну, опечатка в архиве». И был бы прав. Потому что опечатка — это единственное разумное объяснение.
Но одна опечатка ничего не доказывает. Нужна была вторая.
Он нашёл её в накладных Департамента шоссейных и водяных сообщений за 1844 год.
Марк сидел в читальном зале библиотеки на Чернышевской, куда приехал после работы — благо закрывалась она поздно. За окнами моросил мелкий, почти невидимый дождь, а внутри пахло старой бумагой, пылью и чуть-чуть — мокрой верхней одеждой. Пожилая библиотекарша с седым пучком на затылке посматривала на него поверх очков всякий раз, как он слишком громко листал оцифрованные копии на экране планшета, и Марк старался двигаться тише.
Накладные были скучными до зубовного скрежета. Столбцы цифр, названия, подписи, печати. Марк пролистывал их одну за другой, пока взгляд не зацепился за повторяющуюся строку: «тесаный сердобольский гранит».
Он остановился, вернулся на несколько страниц назад и начал считать.
К концу третьего часа у него на экране сложилась сводка. Только за один летне-осенний сезон 1844 года для укрепления правого берега Большой Невки и реставрации парапетов у Летнего сада в столицу было доставлено чуть больше шестидесяти тысяч кубических метров тесаного гранита.
Марк откинулся на спинку стула. Стул под ним тихо скрипнул, и библиотекарша снова подняла глаза.
— Шестьдесят тысяч кубов, — пробормотал он себе под нос.
Это была цифра, которую он не мог себе представить. Он попробовал: вот кубический метр — это примерно большой холодильник. Шестьдесят тысяч холодильников. Выстроенных в ряд по набережной. Уложенных в штабеля. Он даже прикинул на пальцах, сколько это будет по весу, и тут же понял, что для этого ему нужен справочник.
Справочник нашёлся дома. Старый, потрёпанный, с потрескавшимся корешком — «Гидротехника и транспортные перевозки XIX века», купленный за бесценок на развале у станции Удельная пару лет назад. Марк тогда взял его просто из любопытства, потому что обложка была красивой. Теперь он лежал перед ним на кухонном столе, раскрытый на странице с таблицей плотностей.
Сердобольский гранит добывался в каменоломнях на северном берегу Ладожского озера. Доставляли его на тяжёлых баржах-галиотах. Но Ладога — это не спокойный пруд. Навигация там длится от силы четыре-пять месяцев в году, а шторма способны потопить судно за полчаса. Баржа того времени под завязку вмещала от тридцати до пятидесяти тонн груза.
Марк открыл ноутбук и набросал новый расчёт. Он старался писать проще, без привычных сокращений, словно объяснял задачу самому себе — тому себе, который ещё не умел программировать и которому нужно было просто понять, сколько чего и куда.
Сначала — общий вес. Шестьдесят тысяч кубических метров умножить на плотность гранита, два и семь десятых тонны на кубометр. Получалось сто шестьдесят две тысячи тонн.
Он присвистнул.
Дальше — сколько нужно рейсов. Если каждая баржа берёт в среднем сорок тонн, то получается больше четырёх тысяч рейсов. Четыре тысячи пятьдесят. Он пересчитал дважды, чтобы не ошибиться.
И эти четыре тысячи рейсов должны были уложиться в навигационный сезон — примерно сто тридцать дней, с июня по октябрь. Он разделил одно на другое и получил тридцать одну баржу в сутки.
Марк откинулся на спинку стула и посмотрел на цифру. Она никуда не делась.
Тридцать одна баржа в сутки. Каждые сорок пять минут, без перерыва на ночь, шторм, туман или разгрузку, к неоснащённым механическими кранами деревянным пристаням Петербурга должна была причаливать новая баржа. С неё вручную — пеньковыми канатами, вагами и деревянными катками — дюжина мужиков должна была сваливать сорокатонный массив каменных блоков, укладывать их на подводы и увозить.
Он встал, прошёлся по кухне, заварил ещё чаю. За окном с шумом проехала уборочная машина, сгребая мокрый снег к обочине, и на минуту стало светло от её мигалки. Потом снова стало темно.
Дальше начинался ещё больший абсурд.
Чтобы вывезти шестнадцать тысяч тонн гранита от пристани до места укладки за сезон, требовалось не менее пятисот ломовых подвод ежедневного трафика. Одна лошадь тянет телегу со скоростью около четырёх километров в час. Ширина прибрежных улиц вроде Галерной или Миллионной в тех местах — от силы восемь саженей. Встречный транспорт нужно было как-то разводить. Пятиметровая подвода должна была разворачиваться. Груз нужно было снимать и укладывать.
Марк нарисовал на листе бумаги прямой отрезок — это была улица. Поставил на нём несколько точек — подводы. Потом ещё несколько. Потом ещё.
К двенадцатой точке он понял, что они уже не могут разъехаться. Он стёр всё и нарисовал заново — с двумя полосами, с возможностью пропустить встречную. Получилось чуть лучше, но ненадолго. К двадцатой подводе затор снова замкнулся сам на себя.
Он отложил карандаш и просто посмотрел на рисунок.
В реальном Петербурге 1844 года гранит лежал на набережных. Парадные стояли. Гранитные блоки были вытесаны с филигранной точностью, без сколов, с идеально подогнанными швами. Он видел их своими глазами — тысячи раз, каждый раз, когда шёл по набережной и не думал о том, что под ногами.
Но логистики, которая должна была привезти этот камень из каменоломен Сердоболя, математически не существовало. Камень появлялся на берегах Невы, минуя стадию физической транспортировки.
Марк сложил лист с рисунком вчетверо и убрал в карман. Потом посмотрел на часы — было начало второго ночи. Он оделся, накинул куртку и вышел на улицу.
Идея пришла внезапно: он хотел увидеть камень. Не в отчёте, не на картинке — вживую.
До набережной Лейтенанта Шмидта было минут пятнадцать пешком. Улицы были пустыми, мокрыми, отражающими редкие фонари. Где-то далеко за Невой мигал красный огонёк — то ли кран, то ли труба. Марк шёл быстро, сунув руки в карманы, и слушал, как его шаги отдаются в тишине.
У парапета он остановился.
Гранитные блоки лежали перед ним — тяжёлые, серые, с чуть заметной зернистой текстурой. Они были подогнаны друг к другу так плотно, что шва почти не было видно. Марк присел на корточки и провёл ладонью по холодному камню. Пальцы ощутили шероховатость, микроскопические выбоины от времени.
Он попытался представить: вот сюда, на этот берег, каждые сорок пять минут должна была подходить баржа. Дюжина мужиков должна была сгружать с неё сорок тонн камня вручную. Пятьсот подвод в день должны были увозить этот камень по узким улицам. И так — сто тридцать дней подряд.
Он посмотрел на воду. Нева шла медленно, тяжёлая, чёрная, с редкими блёстками от фонарей.
И тут Марк почувствовал это впервые отчётливо, всем телом: что-то не так.
Не «возможно, ошибка в архиве». Не «интересная загадка». А физическое, почти тошнотворное ощущение, что он стоит на краю чего-то огромного и что камень под его ладонью — не просто камень, а часть конструкции, у которой он пока видит только фасад.
Он поднял голову и огляделся.
Набережная была пуста. Но метрах в тридцати, у чугунной ограды, стоял человек. В тёмном пальто, без зонта, хотя моросил дождь. Он не смотрел на Марка — просто стоял, глядя на воду. Или делал вид, что смотрит на воду.
Марк выпрямился. Постоял секунду. Человек не двинулся с места.
Марк пошёл обратно — тем же путём, каким пришёл. Он не оглядывался, но всей спиной чувствовал, что человек за спиной по-прежнему там. И только когда он свернул на Звериную и запер за собой дверь квартиры, ощущение отпустило.
Он сел за стол, открыл ноутбук и посмотрел на папку misc. Потом открыл файл с расчётами и сохранил его с новым именем: granite_v2_final.
Потом добавил третий файл — рисунок затора на листе. Сфотографировал на телефон и перекинул в ту же папку.
Марк не знал, кто был тот человек на набережной. Может быть, просто прохожий. Может быть, охранник ближайшего здания. Может быть, никто.
Но когда он ложился спать, впервые за всё время ему пришла в голову мысль, которая уже не отпустила: а что, если кто-то ещё это видит? И этот кто-то — не он один.
Он выключил свет и лежал в темноте, слушая, как за окном шумит ветер.
---
Глава 3. Парадокс свечного воска
Февраль принёс редкие для Петербурга солнечные дни, когда небо становилось пронзительно-голубым, а гранитные парапеты покрывались колким инеем. Марк взял три дня отгула на работе — впервые за полтора года, — и начальник, человек по фамилии Ковалёв, посмотрел на него с таким удивлением, словно Марк попросил отпуск на Луну.
— Ты заболел? — спросил Ковалёв.
— Нет. Дела.
— Какие у тебя дела? Ты же программист.
Марк не стал объяснять. Сказал, что семейные, и Ковалёв махнул рукой: ладно, только чтобы к среде сервис не падал.
В среду сервис упал, но Марка это уже мало волновало. Он сидел в читальном зале, заваленный копиями хозяйственных книг императорских дворов и архивом Мещанской управы за 1838–1845 годы, и считал свечи.
Началось всё с бытовой мелочи. Он читал описание зимнего сезона в столице — балов, маскарадов, дипломатических приёмов, театральных премьер — и наткнулся на опись расходов на освещение одного большого бального зала в особняке на Фонтанке за декабрь 1841 года. Опись была длинной, скучной и очень подробной: люстры, бра, торшеры, канделябры. Внизу стоял итог: за один вечер сжигалось до двух тысяч четырёхсот стеариновых и восковых свечей.
Марк перечитал цифру. Потом ещё раз.
— Ладно, допустим, — пробормотал он, забивая данные в ноутбук. — Зал огромный, потолки десять метров. Нужен свет.
Он посмотрел на потолок читального зала — обычный, советский, с длинными лампами дневного света. Прикинул на глаз: если подвесить сюда две с половиной тысячи свечей, получится не зал, а лес. Но в бальном зале особняка на Фонтанке, судя по описи, это было нормой. Каждую субботу. Весь декабрь. Потом январь. Потом февраль.
Одна качественная восковая свеча той эпохи весила около ста граммов и прогорала за четыре часа. Марк умножил. Двести сорок килограммов чистого пчелиного воска или стеарина — на один вечер. На один особняк.
Он отложил карандаш и посмотрел в окно. За окном шёл снег, крупный и медленный, и женщина в пуховике вела по улице собаку, которая то и дело останавливалась и отказывалась идти дальше. Марк смотрел на них минуты две, потом вернулся к расчётам.
Дальше нужно было понять, откуда этот воск брался.
Он открыл историко-экономический очерк развития химической промышленности и сельскохозяйственной статистики Российской империи — более поздние выкладки, под редакцией Менделеева, — и сводки Департамента мануфактур за 1840-е годы. Книги были толстые, с пожелтевшими страницами и мелким шрифтом, и Марк читал их, водя пальцем по строкам, как школьник.
Первое, что он выяснил: стеариновые заводы в Петербурге только-только запускали свои первые автоклавы. Невский стеариновый завод, самый крупный, в 1840 году произвёл не более полутора тысяч пудов стеарина. На весь Северо-Запад. За год. Марк перевёл пуды в килограммы — получилось около двадцати пяти тонн — и записал цифру в блокнот.
Второе: пасечные хозяйства губернии и соседних областей производили сугубо ограниченный объём топлёного воска. Большая часть уходила по жёстким квотам Святейшему Синоду — на нужды церквей и монастырей. На светское освещение оставались крохи.
Марк снова взялся за расчёт. Он старался не усложнять: сколько свечей сжигает один особняк за зиму, сколько таких особняков в Петербурге, сколько театров, департаментов, казарм, частных домов. Цифры он брал из описей и адресных книг, где были перечислены все домовладения с указанием этажности и числа жильцов. Получалось грубо, но порядок величины был понятен.
Суммарное потребление воска и стеарина на балах, в театрах, департаментах, казармах и частных домах Петербурга в зимний месяц 1841 года составляло примерно сто восемнадцать тонн.
Марк записал это число. Потом посмотрел на него. Потом посмотрел ещё раз.
Суммарная производительность всех зарегистрированных заводов, импортных поставок через Петербургский порт и пасек империи давала не более двенадцати тонн доступного технического воска для светского освещения.
Он разделил одно на другое. Получилось почти десять.
Дефицит составлял ровно десять раз.
— Где они берут ещё сто тонн воска каждый месяц? — вслух спросил Марк.
Библиотекарша подняла голову. Он извинился и замолчал.
Но вопрос не давал покоя. В сундуках? В подполье? Привозили контрабандой из Европы, а в отчётах прятали? Марк проверил таможенные книги. Импорт воска через Петербургский порт в 1841 году был зарегистрирован до последнего пуда — и он был мал. Меньше, чем нужно было одному большому особняку за три зимы.
Тогда он вернулся к бухгалтерским книгам. Взял описи расходов графа Нессельроде, графа Шереметьева, ещё нескольких домов, где архивы сохранились лучше. Смотрел на итоговые суммы и на количество закупленных коробок со свечами.
Цифры сходились идеально. Копейка в копейку. Свечи закупались коробками, выставлялись в хрустальные люстры, зажигались слугами, сгорали доплывающими каплями на паркет — и материализовались из ниоткуда. В бухгалтерских книгах не было ни строчки о том, откуда именно пришла каждая коробка. Просто «закуплено у купца первой гильдии». И всё.
Марк закрыл ноутбук и вышел на улицу.
Ему нужен был воздух. Он прошёл по Литейному, свернул на Невский, потом на канал Грибоедова. Мороз был мягкий, февральский, и снег под ногами поскрипывал, как крахмал. В магазинах горели витрины, из кафе пахло кофе и корицей, кто-то вёз санки с ребёнком. Обычный город, обычная жизнь.
Он остановился у витрины маленького магазина при церкви — свечная лавка, с золочёной вывеской и запахом воска, который чувствовался даже через стекло. Внутри за прилавком сидела женщина в платке и вязала.
Марк вошёл.
— Здравствуйте. Можно у вас спросить?
Женщина подняла глаза.
— Свечи продаём. Спрашивайте.
— Вот у вас свечи. Восковые?
— Восковые, — сказала она с некоторой гордостью. — Хорошие. Не парафин.
— А откуда воск привозят?
Женщина на секунду задумалась. Потом сказала:
— Со склада.
— А на склад откуда?
— Ну… оттуда. — Она повела рукой куда-то в сторону, неопределённо. — Привозят. Нам-то что? Нам привозят — мы продаём.
— А вы не знаете, с какого завода? Или из какой губернии?
Женщина посмотрела на него внимательнее. В её взгляде появилось что-то настороженное — не страх, а скорее раздражение, как у человека, которому мешают заниматься делом.
— Молодой человек, вам свечи нужны или допрос?
— Свечи нужны, — сказал Марк. — Одну.
Он купил самую простую, тонкую, за сорок рублей. Женщина завернула её в бумагу и отдала ему, и он вышел на улицу с ощущением, что задал вопрос, на который в этом городе нет ответа — и что это никого, кроме него, не смущает.
Дома он развернул свечу и положил на стол под лампу. Воск был гладкий, чуть желтоватый, с еле заметным медовым запахом. Хорошая свеча. Настоящая. Без штампа, без клейма, без указания производителя.
Марк покрутил её в пальцах.
Он вспомнил, как в детстве бабушка в Вологде доставала из сундука точно такую же свечу — только ту хранили годами, потому что она была дорогая. Одна. На всю зиму. Зажигали её, только если отключали свет.
А здесь их сжигали по две с половиной тысячи за вечер. Каждую субботу. И никто не спрашивал, откуда они берутся.
Марк отложил свечу и открыл ноутбук. Записал в файл: «Свечи. Дефицит 10х. Источник неизвестен. Продавцы не знают. Бухгалтерия сходится».
Потом закрыл глаза и прижал ладони к векам. Перед глазами поплыли жёлтые круги.
В тишине квартиры было слышно, как тихо-тихо тикает настенный кварцевый хронометр. Впервые за эти месяцы ему стало не просто интересно. Ему стало по-настоящему жутко.
Он встал, подошёл к окну и выглянул на улицу.
Внизу, у тротуара, стояла машина. Тёмная, с выключенными фарами, но с работающим двигателем — из выхлопной трубы шёл пар. Марк не помнил, стояла ли она здесь раньше. Может быть, стояла. Может быть, только что подъехала.
Он смотрел на неё, наверное, целую минуту. Потом машина медленно тронулась с места и уехала в сторону Любанского переулка, аккуратно объехав сугроб.
Марк задёрнул штору.
— Показалось, — сказал он вслух.
И сам себе не поверил.
---
Глава 4. Чистота потолков
К началу марта 2009 года весна в Петербурге всё ещё казалась нереализуемой давней угрозой. На улице шёл мокрый, тяжёлый снег, который тут же превращался на асфальте в серую маслянистую кашу, и Марк, добираясь до библиотеки, дважды промочил ботинки.
В читальном зале на Чернышевской было тепло и сухо. Пахло пылью, старой бумагой и отоплением. Библиотекарша — та же самая, с пучком, — уже здоровалась с ним кивком, как со своим. Марк сел на привычное место у окна, отогрел зябнущие пальцы о фаянсовый стакан с чаем из автомата в коридоре и открыл планшет.
В тот день он изучал оцифрованную коллекцию интерьерных акварелей Гау, Премацци и Ухтомского, а также редкие дагеротипы середины XIX века, запечатлевшие парадные залы Зимнего, Мраморного и Мариинского дворцов. Фотографии были нечёткие, с длинной выдержкой, снятые при естественном свете, но именно в этой нечёткости и была их ценность: они не были приукрашены художником.
Марк вывел на экран акварель 1848 года: Концертный зал Зимнего дворца. Высокие, уходящие под десятиметровую высоту своды, белая лепнина с тончайшими растительными виньетками, позолоченные карнизы и тяжёлые бронзовые люстры.
Он приблизил фрагмент плафона — место, где массивный рожок люстры со свечами находился всего в полуметре от белоснежной лепной розетты.
Потолок сиял.
Марк откинулся на спинку стула и посмотрел на него издалека, целиком. Потом снова приблизил. Потом открыл соседнюю акварель — тот же зал, другой ракурс. Потом дагеротип. Потом ещё одну акварель.
Потолки сияли везде.
Он полез в справочник по физической химии и процессам горения — тот самый, с развала, только другой том, — и нашёл главу о продуктах сгорания органических материалов.
В середине XIX века парадные залы освещались тысячами свечей, масляными лампадочками и открытыми каминами. Воск, стеарин и особенно животный жир при сгорании выделяют не только углекислый газ, но и плотную взвесь мелкодисперсного сажевого углерода, смол и тяжёлых копотных фракций. В закрытом помещении без принудительной приточно-вытяжной вентиляции — а в дворцах XIX века вентиляция была исключительно естественной, гравитационной — горячий воздух от люстр поднимается вверх и оседает на самых холодных поверхностях. То есть строго на потолке и лепнине.
Марк вытащил блокнот и начал считать от руки — ему так лучше думалось.
Если за один бал сжигается две тысячи свечей, а каждая свеча даёт при сгорании хотя бы десять-двадцать граммов сажи, то за вечер на лепнине над люстрами должно оседать от двадцати до сорока килограммов чистого углерода. Он пересчитал. Получалось больше: при неполном сгорании и фитилях того времени — от двухсот до четырёхсот граммов на квадратный метр потолка в непосредственной близости от люстры.
Марк посмотрел на цифру. Потом на акварель. Потом снова на цифру.
За зимний сезон в тридцать балов потолок должен был покрыться жирной, въевшейся чёрной копотью. Побелка и чистка лепнины требовались бы после каждого отопительного сезона. А сложная гипсовая резьба за пять лет превратилась бы в заплывший чёрным нагаром монолит — как каминная труба изнутри.
Но на акварелях и ранних дагеротипах, снятых с длинной выдержкой при естественном свете, потолки сияли.
Марк приблизил угол между карнизом и плафоном до максимального увеличения. Ни единого серого пятна. Никаких следов выгорания краски, никаких языков копоти над бра, никакой сажевой патины на белоснежном гипсе. Текстура штукатурки выглядела безупречно стерильной — так, словно её отрендерили с дефолтным значением чистоты и забыли включить модуль физики нагара и оседания продуктов горения.
— Опять упрощение модельки, — шепотом сказал Марк.
Пожилая библиотекарша насупилась, посмотрев на него поверх очков. Он извинился.
Но слово уже было сказано — вслух, пусть и шёпотом. «Моделька». Он сам не заметил, как начал думать о городе в терминах, которыми пользовался на работе, когда тестировал чужой код: «модель», «рендер», «полигоны», «текстуры». Раньше это были просто метафоры. Теперь они переставали быть метафорами.
Марк закрыл планшет и пошёл курить — хотя не курил уже три года. На крыльце библиотеки он стоял, засунув руки в карманы, и смотрел, как мокрый снег падает на чугунные фонари.
Ему нужен был кто-то, кто разбирается в интерьерах. Не в цифрах, не в архивах — в том, как выглядит настоящая лепнина после настоящего бала. Такой человек мог бы сказать: да, копоть была, её чистили, вот так, вот столько раз в год. Или: нет, не было, и вот почему. Любой ответ был бы полезен.
Марк подумал об Игоре. Потом отбросил. Игорь разбирался в серверах, а не в лепнине.
Он вернулся в зал и сел за компьютер. Открыл поиск по форумам реставраторов — он знал, что такие есть, потому что однажды чинил им сайт по заказу. Набрал в строке поиска: «копоть на лепнине XIX век реставрация».
Результатов было много. Он открыл первый попавшийся — старую ветку на форуме, где обсуждали реставрацию дворцовых интерьеров. Пролистал. Потом ещё одну. Потом ещё.
И в третьей ветке, на седьмой странице, наткнулся на сообщение пользователя с ником rest_anna:
«По нашим объектам (Зимний, Мраморный, несколько особняков на Фонтанке) — следов нагара на плафонах парадных залов не обнаружено. При этом в служебных помещениях, где топили печи и жгли сальные свечи, копоть есть и она обильная. Разница необъяснима с точки зрения одинаковых условий эксплуатации. Если у кого-то есть данные по химическому анализу штукатурки — поделитесь, буду благодарна».
Марк перечитал сообщение трижды.
Потом посмотрел на дату. Сообщение было написано четыре месяца назад. Ответов на него не было ни одного.
Он кликнул на профиль. rest_anna. Регистрация — два года назад. Сообщений — двенадцать, все по делу, все в разных ветках, и во всех — одна и та же интонация: сухая, точная, без эмоций. Последнее сообщение было датировано январём, в ветке про толщину стен в доходных домах на Васильевском.
Марк занёс курсор над кнопкой «Написать личное сообщение». Подумал. Убрал руку.
Он ещё не был готов. У него не было ничего, кроме папки misc и растущего ощущения, что мир устроен сложнее, чем написано в документах. Писать незнакомому человеку с таким багажом — значит выглядеть сумасшедшим.
Он закрыл вкладку.
Но перед тем как выключить компьютер, записал в блокнот: «rest_anna. Реставратор. Лепнина. Копоти нет. Служебные — есть».
Потом оделся, вышел на улицу и пошёл домой пешком — через Литейный, по набережной Фонтанки, мимо особняков, в которых когда-то жгли по две с половиной тысячи свечей за вечер.
У одного из них — того самого, с описи, — он остановился. Дом был закрыт, за занавешенными окнами горел тусклый свет. Марк постоял, глядя на фасад, потом обошёл здание с торца, чтобы посмотреть на служебный флигель.
Флигель был обшарпанный, с облупившейся штукатуркой и закопчённым окном первого этажа. Над окном, у самого карниза, тянулась чёрная полоса — жирная, въевшаяся, как раз такая, какой должна была бы быть в парадном зале, но только не в служебном.
Марк достал телефон и сфотографировал. Потом вернулся к парадному подъезду и сфотографировал его — чистый, с белой лепниной и свежей краской.
Дома он положил оба снимка рядом на экране.
Разница была очевидной. Парадный зал — чистый. Служебный флигель — закопчённый. Один и тот же дом, одна и та же зима, одни и те же печи. И разные законы физики.
Марк открыл папку misc и создал подпапку «Копоть». Сохранил туда оба снимка и скриншот сообщения rest_anna.
Потом сел и долго смотрел на экран.
Он думал о том, что кто-то — какой-то реставратор, женщина с ником rest_anna — уже задавала этот вопрос. И не получила ответа. И, возможно, тоже сидит сейчас где-то в Петербурге, смотрит на свои фотографии и чувствует то же самое, что чувствует он.
Одиночество человека, который видит шов.
Марк взял телефон, открыл форум, на этот раз с телефона — на ноутбуке было слишком много его следов, — и всё-таки написал.
Коротко. Сухо. Без лишних слов.
«Здравствуйте. Меня зовут Марк. Я не реставратор, я программист. Я считал не копоть, а сроки строительства и объёмы поставок за те же годы. У меня получаются странные цифры. Ваш вопрос про нагар на плафонах — из той же категории. Если вам интересно, могу показать, что у меня есть. Без мистики. Только цифры и документы».
Он нажал «Отправить».
Потом закрыл телефон и лёг спать.
Ответа не было ни на следующий день, ни через день. Марк почти забыл о нём — на работе как раз случился очередной аврал, и он трое суток не вылезал из офиса, чиня упавший сервис и ругаясь с Ковалёвым.
На четвёртый день, в субботу утром, телефон тихо звякнул.
Одно сообщение. От rest_anna.
«Здравствуйте, Марк. Я Анна. Покажите цифры. Мне интересно».
---
Глава 5. База данных без предков
Апрель принёс первые сухие ветры с Балтики. Снег сошёл, обнажив серый, ещё не просохший асфальт, и город стал похож на человека, который снял зимнее пальто и обнаружил, что под ним — мятая рубашка.
Марк взял ещё два дня отгула. Ковалёв уже не спрашивал, зачем, — только вздохнул и сказал: «Смотри, чтобы к пятнице всё работало». Марк пообещал. Он и сам не знал, почему врёт.
В то утро он ехал в Центральный государственный исторический архив на Псковской улице. Ему нужны были не оцифрованные копии, а оригиналы — метрические книги и ревизские сказки купеческих и мещанских гильдий за первую половину XIX века.
Здание было старым, с высокими потолками и широкой лестницей, выкрашенной в тот казённый желтоватый цвет, который в России не меняется уже двести лет. В читальном зале пахло бумажной пылью, чуть-чуть — сыростью и совсем немного — кофе из комнаты для сотрудников.
Марк оформил заказ на несколько дел. Женщина за стойкой — немолодая, в очках на цепочке — посмотрела на него с любопытством.
— Генеалогией занимаетесь? — спросила она.
— Скорее проверкой данных.
— А. — Она понимающе кивнула, словно «проверка данных» была обычным делом. — Тогда вам вот эти описи ещё посмотреть надо. Там купцы первой гильдии, у них родословные лучше сохранились.
Марк поблагодарил и сел за стол у окна.
Дела принесли через полчаса — тяжёлые картонные папки, перевязанные тесёмками. Он открыл первую и сразу понял, что вручную это займёт месяцы.
Тогда он достал ноутбук.
Идея была простой. Он уже несколько недель по вечерам разбирал оцифрованные реестры — те, что выложены на сайте архива. Написал небольшую программу, которая читала страницы, вытаскивала из них имена, годы, родство и складывала в таблицу. Ничего сложного: найти в тексте имя, найти год, найти слово «сын» или «дочь», связать.
Он запустил программу и пошёл пить кофе.
Когда вернулся, на экране был граф.
Марк сел и посмотрел на него.
Он ожидал увидеть естественный хаос. Так выглядит настоящая генеалогия: приток крестьян из Ярославской и Костромской губерний, разветвлённые роды с умирающими ветвями, глубокие корни, уходящие в XVII век, обрывы из-за эпидемий и войн, неполные записи, потерянные фамилии. В реальной истории дерево всегда кривое.
Граф был плоским.
Сотни купеческих и мещанских семей, процветавших в Петербурге в 1830-х годах, имевших дома, лавки и капитал, при попытке проследить их генеалогию до 1800 года упирались в абсолютную пустоту. По документам их отцы и деды возникали в период с 1800 по 1808 год словно из ниоткуда — без записей о рождении в деревенских церквях, без сведений о ревизских сказках, без истории уплаты подушного налога.
Марк откинулся на спинку стула.
— Так не бывает, — сказал он тихо.
Женщина за стойкой подняла голову. Он извинился.
Он вернулся к экрану и начал проверять вручную. Взял первую попавшуюся семью — Гусевы. Ту самую, с Мойки, из-за которой всё началось. Пролистал записи: Иван Гусев, купец второй гильдии, 1801 года рождения, сын Петра Гусева. Пётр Гусев, купец третьей гильдии, умер в 1834 году. Отец Петра — ?
Пусто.
Он заказал ещё дела. Искал в метрических книгах церквей, где могли крестить Петра Гусева. Искал в ревизских сказках за 1795 и 1782 годы. Искал в книгах купеческих управ.
Ничего.
Пётр Гусев появлялся в документах в 1803 году — с паспортом, выданным ему как «уроженцу города N». Город N был указан неразборчиво, а в графе «место рождения» стоял прочерк.
Марк отложил карандаш и посмотрел в окно. За окном по Псковской шла женщина с сумкой на колёсиках, и колёсики громко тарахтели по асфальту.
Он вернулся к графу и сделал то, что программист делает всегда, когда данные выглядят подозрительно ровно, — проверил распределение.
Возрастной график этих «первопредков» ложился на стандартную кривую Гаусса с точностью, которая в реальной демографии не встречается никогда. Ровно тридцать процентов людей в 1805 году имели возраст двадцать пять лет, сорок процентов — тридцать пять лет, тридцать процентов — сорок пять лет.
Марк пересчитал. Перепроверил. Перестроил график по-другому — по гильдиям, по годам, по улицам.
Результат был тот же.
Статистически безупречный, идеально сглаженный массив записей, лишённый любых естественных демографических ям, эпидемий, войн или неурожаев XVIII века. Ни одного всплеска смертности. Ни одного провала рождаемости. Ни одной аномалии.
Марк закрыл ноутбук и посидел немного, глядя на картонную папку перед собой.
Потом открыл её и достал самый старый документ — паспорт Петра Гусева, выданный в 1803 году.
Бумага была настоящая. Плотная, с водяными знаками, чуть пожелтевшая от времени. Чернила выцвели до коричневого, но читались отчётливо. Печать была на месте, сургучная, с орлом, и на ней даже сохранился оттиск ногтя писаря.
Всё было настоящим.
Кроме того, что было до 1803 года. До 1803 года не было ничего.
Марк провёл пальцем по краю документа. За этим листом стояла вся жизнь человека — детство, родители, деревня, церковь, где его крестили. И ничего из этого не существовало.
Он сложил документы обратно в папку, сдал их и вышел на улицу.
На улице было холодно и сухо. Ветер гнал по асфальту обрывок газеты. Марк достал телефон и позвонил матери.
Она ответила после третьего гудка.
— Марк? Ты чего в такую рань?
— Мам, привет. У меня вопрос.
— Заболел?
— Нет. — Он помолчал. — Ты помнишь прадеда? Ну, по бабушкиной линии, из Вологды?
На другом конце провода была пауза. Не долгая, но заметная.
— Прадеда? — переспросила мать. — Ну... был какой-то. Бабушка про него мало говорила.
— А как его звали?
— Марк, ну откуда я знаю. Я маленькая была. — В её голосе появилось раздражение, знакомое до мелочей. — Ты чего вообще спрашиваешь? Что за дела?
— Просто интересно стало. Родословную посмотреть.
— Ой, нашёл время. — Она вздохнула. — Ты бы лучше о себе подумал. Тридцать два года, а всё один. Вот приедешь на выходные — я тебе борщ сварю.
— Мам, а всё-таки. Хоть что-нибудь помнишь? Год рождения, откуда он приехал?
— Не помню я, Марк. — Голос стал твёрже. — И не спрашивай. Бабушка умерла, спросить некого. Всё, мне некогда, у меня тесто подходит.
Она положила трубку.
Марк стоял на Псковской, держа телефон в руке, и слушал короткие гудки.
Он не мог бы объяснить, почему это его так зацепило. Мать действительно могла не помнить прадеда — люди часто не помнят. Это нормально. Это не аномалия.
Но раздражение в её голосе было знакомым. Точно так же раздражалась продавщица в свечной лавке, когда он спросил, откуда воск. Не «я не знаю», а «зачем тебе это нужно». Словно вопрос был не просто неуместным, а запрещённым.
Марк убрал телефон в карман и пошёл к метро.
Дома он открыл папку misc и создал новую подпапку: «Родословные». Перекинул туда граф, скриншоты документов, паспорт Гусева и короткую заметку от руки, которую сфотографировал ещё в архиве.
Потом открыл форум и написал Анне.
«Анна, здравствуйте. Отправляю то, что обещал. Файлы большие, поэтому ссылкой. Там расчёты по граниту, по срокам стройки, по свечам и копоти. И ещё одно — новое. Я смотрел родословные петербургских купцов. До 1800 года у них нет предков. Совсем. Люди появляются в документах с 1800–1808 годов, как будто их только что создали. Возраст у всех распределён слишком ровно, как в учебнике по статистике. Я проверил вручную на нескольких семьях — то же самое. Посмотрите, пожалуйста, своими глазами. Мне нужно знать, что я не сошёл с ума».
Он отправил сообщение и закрыл ноутбук.
Ответ пришёл через час.
«Посмотрела гранит. Вы правы, столько подвод по набережной не пройдёт. У меня то же самое с кладкой: толщина стен не сходится с длиной квартала. Я про это писала на форуме — помните, про 14,6 метра на Васильевском? Это из той же серии. Давайте встретимся. Я не люблю переписку. В субботу в семь, кофейня на Марата. Я буду с чёрным планшетом и папкой А3».
Марк перечитал сообщение дважды.
Потом написал:
«Договорились. Я буду с ноутбуком и папкой файлов».
Он отправил и посмотрел на экран.
За окном смеркалось. В соседнем доме зажглось окно на третьем этаже, и в нём была видна женщина, которая стояла у плиты и что-то помешивала в кастрюле. Обычная жизнь. Обычный вечер.
Марк подумал о Петре Гусеве, у которого не было отца. О своей бабушке из Вологды, у которой был какой-то прадед, но никто не помнил его имени. О свечах, которые появлялись из ниоткуда. О копоти, которой не было.
И о женщине с чёрным планшетом, которая, судя по всему, видела то же самое.
Впервые за полгода ему стало не так одиноко.
---
Глава 6. Игорь
Сервис упал в ночь на среду, и Марк с Игорем просидели в офисе до шести утра.
Офис был маленький, на Петроградской стороне, в бывшем доходном доме с высокими потолками и окнами во двор-колодец. Компания называлась «Логистик-Софт» — писали софт для складов и транспортных компаний. Марк отвечал за бэкенд, Игорь — за инфраструктуру и базы данных.
Игорь был высокий, лысеющий, с круглыми очками и привычкой барабанить пальцами по столу, когда думал. Они работали вместе четыре года и относились друг к другу с той ровной, неромантической симпатией, которая возникает между людьми, которые слишком часто чинили одно и то же в три часа ночи, чтобы тратить время на сантименты.
К шести утра они нашли причину — банальную утечку соединений в одном из сервисов, — починили и сидели, тупо глядя в мониторы, дожидаясь, пока сварится кофе в офисной кофеварке.
— Слушай, — сказал Марк.
— М?
— У тебя когда-нибудь было ощущение, что цифры в отчётах не сходятся, но доказать не можешь?
Игорь повернулся к нему на стуле.
— В смысле?
— Ну вот смотри. — Марк открыл ноутбук и развернул его к Игорю. — Есть данные за 1844 год. Накладные, сколько гранита привезли в Петербург. Шестьдесят тысяч кубометров. Считаем, сколько нужно барж, сколько подвод, сколько дней. Получается, что такого количества транспорта по тем улицам физически не могло пройти. А гранит на месте. Вот он, лежит.
Игорь посмотрел на экран. Потом на Марка. Потом снова на экран.
— Это ты чем занимаешься в свободное время? — спросил он.
— Просто интересно.
— Ну, — Игорь пожал плечами, — наверное, они не всё в накладные записывали. Или баржи были больше. Или ещё что-то.
— Я считал с запасом. Всё равно не сходится.
— Ну не сходится и не сходится. — Игорь отвернулся и потянулся к кофеварке. — В архивах бардак. Писари пили, путали цифры.
Марк молчал.
Он ждал этого ответа, но всё равно что-то в нём царапнуло. Не сам ответ — ответ был разумным. Царапнуло то, как Игорь его дал. Слишком быстро. Слишком гладко. Словно он уже знал, что скажет, ещё до того, как Марк показал ему цифры.
— Игорь, — сказал Марк. — Опечатки в трёх тысячах независимых документов из разных ведомств, которые дают идеальную математическую кривую? Ты бы принял такой баг-репорт от тестировщика?
Игорь взял кружку с кофе и повернулся обратно. На секунду в его глазах мелькнуло что-то странное — стеклянное, отстранённое, как у человека, который смотрит в экран и внезапно перестаёт видеть текст.
— Слушай, ну какая разница? — сказал он, и в голосе появилось раздражение. — Дом стоит? Стоит. Набережная на месте? На месте. Зачем копать эти глупости? Тебе делать нечего? Лучше бы вчерашний баг закрыл, а то я снова ночью вставать не хочу.
Он сказал это обычным тоном — не зло, скорее устало, — и вернулся к своему монитору.
Марк забрал ноутбук.
— Ладно, — сказал он. — Забудь.
Игорь кивнул, уже глядя в свою почту.
---
Днём Марк не выдержал и попробовал ещё раз — помягче.
Они обедали в соседней столовой, где пахло подгоревшим маслом и компотом из сухофруктов. Игорь ел борщ, Марк ковырял вилкой котлету.
— Слушай, — сказал Марк как бы между прочим. — А ты знаешь, откуда у нас в Питере гранит на набережных?
Игорь поднял бровь.
— Ну откуда-то привезли. С Карелии, наверное.
— С Ладоги. Сердобольский.
— Ну да. И что?
— А как его привезли? — Марк смотрел на него внимательно.
Игорь пожал плечами.
— На баржах.
— А сколько барж нужно, чтобы привезти шестьдесят тысяч кубов за одно лето?
Игорь замер с ложкой у рта. На секунду — буквально на секунду — его лицо стало пустым. Не задумчивым, а именно пустым, как экран, который только что выключили. Потом он моргнул и сказал:
— Марк, ну ты же не хочешь, чтобы я тебе это посчитал? Я с утра до ночи считаю транзакции. Дай мне поесть спокойно.
Он улыбнулся — обычной усталой улыбкой, — и вернулся к борщу.
Марк больше не спрашивал.
---
Вечером они вышли из офиса вместе. Было уже темно, но по-весеннему — не чёрно, а синевато, с подсвеченными окнами и фарами машин.
Игорь курил у крыльца, Марк стоял рядом, сунув руки в карманы.
— Ты чего-то завёлся, — сказал Игорь, выпуская дым вверх. — В последнее время. Я заметил.
— Да есть немного.
— Из-за ерунды какой-то. Гранит, свечи… — Игорь стряхнул пепел. — Ты бы отдохнул. В отпуск съездил. В Турцию, что ли.
— Может быть.
— Я серьёзно. — Игорь посмотрел на него. В глазах у него было что-то человеческое, тёплое, и Марк вдруг почувствовал, что скучает по этому взгляду. — Ты какой-то дёрганый стал. Раньше спокойный был. А сейчас как будто тебя что-то грызёт.
Марк хотел сказать правду. Всю правду: про папку misc, про граф без предков, про копоть, которой нет, про свечи из ниоткуда. Он даже открыл рот.
И в этот момент — не специально, просто потому что у него была такая привычка — он посмотрел на Игоря немного иначе. Не как на друга, которому можно рассказать. А как на человека, который полсекунды назад был готов задуматься и не захотел. Как на систему, в которой сработал защитный протокол.
Он ничего не сказал.
— Ладно, — сказал он вместо этого. — Пойду. Мне ещё на Марата в субботу.
— Свидание? — Игорь подмигнул.
— Встреча. По работе.
— Ну-ну.
Игорь потушил сигарету и пошёл в сторону метро, подняв воротник. Марк смотрел ему вслед, пока тот не свернул за угол.
Дома он открыл папку misc и добавил в неё текстовый файл. Назвал его people.txt.
В файле было три строки:
```
Продавщица в свечной лавке — раздражение, вопрос об источнике воска → не ответила.
Мать — раздражение, вопрос о прадеде → не ответила.
Игорь — раздражение, вопрос о логистике → не ответил.
```
Он перечитал и добавил четвёртую:
```
Это не «не знают». Это «не могут».
```
Потом закрыл файл и долго сидел, глядя на тёмный экран.
Он думал о том, что система — если это была система — работала не с документами. Документы были только следом. Система работала с людьми. С их памятью, вниманием, с их желанием задавать вопросы. Она не запрещала — она делала вопрос ненужным. Превращала его в «зачем тебе это нужно» и «дай мне поесть спокойно».
Марк вспомнил, как в детстве спрашивал бабушку, откуда у неё та восковая свеча. Бабушка тогда сказала: «От мамы осталась». И больше ничего. Марк тогда не придал значения — мало ли, от мамы и от мамы.
Теперь он думал: а спросил бы он ещё раз, если бы бабушка была жива? И что бы она ответила?
Он достал телефон и открыл переписку с Анной. Последнее сообщение было её: «В субботу в семь, кофейня на Марата». Он перечитал его и впервые почувствовал не любопытство, а что-то похожее на облегчение.
С ним пойдёт человек, который не раздражается на вопросы.
Марк выключил свет и лёг.
Но перед сном он сделал ещё одну вещь: открыл форум и создал новую тему в разделе, где обсуждали архивы. Без своего имени. С простым заголовком:
«Странности в генеалогических данных СПб 1800–1810. Никто не замечал?»
Внутри — три строчки сухих фактов и один вопрос: «У кого-нибудь есть предки, которые появляются в документах в 1800-х без записи о рождении?»
Он нажал «Отправить» и закрыл ноутбук.
Ответов не было ни утром, ни через неделю. Тема осталась висеть на форуме, как одинокая свеча в пустом зале.
---
Глава 7. Архитектор на Васильевском
Анна Сергеева не любила слово «аномалия». Оно пахло конспирологией и дешёвыми фильмами. Она предпочитала слово «невязка» — так говорят, когда чертёж не сходится с натурой, и ты ещё не знаешь почему, но уже точно знаешь, что где-то ошибка.
В апреле 2009 года у неё было три невязки. Все — на Васильевском острове.
Она работала ведущим архитектором в небольшом проектном бюро на Большом проспекте, в двух шагах от её собственной квартиры на 8-й линии. Бюро занималось реставрацией и приспособлением исторических зданий: то, что в советское время называли «капитальным ремонтом с элементами реконструкции», а теперь «комплексной научной реставрацией». Работы было много, деньги платили нерегулярно, но Анне нравилось.
Ей нравилось, что в этой профессии нельзя соврать. Можно ошибиться, можно не знать, можно пойти по ложному следу — но соврать нельзя. Стена либо стоит, либо падает. Свод либо держит, либо нет. Архитектура была честнее людей.
Первую невязку она заметила ещё в феврале, когда готовила проект реставрации фасадов для дома на 6-й линии. Дом был типовой — доходный, середина XIX века, с двумя внутренними дворами-колодцами. Анна замеряла толщину стен по натурным обмерам, сводила в таблицу, проверяла по старым чертежам.
И тут что-то не сошлось.
Суммарная глубина зданий по внутреннему контуру — от фасада до фасада через дворы — составляла 42,4 метра. Это была нормальная цифра, она видела такие десятки раз. Но внешний геодезический периметр квартала между красными линиями улиц, по данным городской геодезии, был ровно 57 метров.
Разница — 14,6 метра.
Анна пересчитала трижды. Потом взяла лазерный дальномер и пошла мерить сама.
Двор был тесный, с глухими стенами и единственным выходом на улицу. Она прошла его из конца в конец, замеряя каждый сегмент. 42,4 метра. Ровно.
Потом вышла на улицу и прошла по внешней стороне квартала, от угла до угла. 57 метров.
Между этими двумя цифрами лежало 14,6 метра, которых не было.
Она вернулась в бюро и открыла старые планы. На плане 1830-х годов квартал был нарезан ровно, без зазоров: дом, двор, дом, двор, дом. Всё сходилось. Но когда она наложила план на современную геодезическую съёмку — с точностью до сантиметра, как учили, — внутренние контуры зданий не совпали с внешними границами квартала. Они были меньше. Словно кто-то взял квартал и сжал его изнутри, оставив по периметру пустоту, которой не было на чертеже.
— Это невозможно, — сказала Анна вслух.
В бюро никого не было. Она сидела одна, при свете настольной лампы, и смотрела на два чертежа, которые не сходились.
Она подумала про ошибку геодезии. Позвонила знакомому кадастровому инженеру, попросила перепроверить. Тот перепроверил и сказал: «Анна, всё верно, 57 метров. У тебя что, дом меньше, чем квартал?» Она сказала: «Похоже на то». Он засмеялся и положил трубку.
Она подумала про ошибку обмеров. Взяла другой дальномер, потом рулетку, потом снова прошла двор. 42,4.
Тогда она подумала, что сходит с ума.
---
Вторую невязку она нашла через месяц, на 7-й линии, в доме № 20. Та же история: внутренняя глубина меньше внешнего периметра. Зазор — 12,1 метра.
Третью — на 8-й линии. Зазор — 15,3 метра.
Она нанесла все три на карту Васильевского острова. Точки легли на одну линию — не прямую, а слегка изогнутую, словно повторяющую невидимый изгиб под землёй.
Анна сидела над этой картой весь вечер. Потом достала старый атлас геомагнитных полей, который остался от отца — он был геофизиком, — и наложила свою линию на карту магнитных аномалий.
Линии совпали.
Она откинулась на спинку стула и долго смотрела на два листа, лежащих рядом. Потом встала, налила себе вина и вышла на балкон. Балкон был маленький, с видом на соседний двор-колодец, и над крышами виднелась полоска неба, по-весеннему светлая даже в девять вечера.
Она стояла, пила вино и думала о том, что архитектор не должен заниматься такими вещами. У архитектора есть чертежи, обмеры, нормы и правила. А ещё есть заказчик, который платит деньги и хочет, чтобы дом стоял. Всё остальное — не её дело.
Но невязка была. И она не давала покоя.
---
Третью невязку — уже не геометрическую, а человеческую — Анна обнаружила, когда попробовала спросить.
Она написала на форум реставраторов. Тот самый, где сидели практики: архитекторы, инженеры, сотрудники музеев. Люди, которые каждый день имеют дело с натурой и знают, что бумага терпит, а стена — нет.
Она выложила чертежи, расчёты, фотографии зазоров. Написала сухо, по делу: «Коллеги, кто-нибудь сталкивался с несовпадением внутренней глубины здания и внешнего периметра квартала на Васильевском? Вот мои данные. Интересно ваше мнение».
Первый ответ пришёл через час.
«Анна, вы уверены, что правильно поняли чертёж? Там же перегородки, толщина стен…»
Она ответила: «Уверена. Перепроверяла трижды».
Второй ответ пришёл вечером.
«Может, дом перестраивали? Пристройки, снос?»
Она ответила: «Планы 1830-х и современные обмеры не сходятся между собой. Пристройки тут ни при чём».
Третий ответ пришёл на следующий день, и он был странным.
«Анна, ну какая разница? Дом стоит. Люди живут. Зачем вам это?»
Она перечитала этот ответ несколько раз.
«Зачем вам это». Не «вы ошибаетесь», не «вот мои данные», не «давайте проверим вместе». Просто — «зачем».
Она ответила: «Потому что чертёж не сходится с натурой. Это моя работа».
Больше в той ветке ей не ответили. Ветка утонула, уехала на дальние страницы, забитая другими темами: «Кто чем чистит кирпич», «Советские швы в кладке», «Где заказать лепнину».
Анна тогда подумала: ладно. Может, действительно, никого не волнует. Может, она просто загоняется.
Она почти забыла об этом. Работа, проекты, дедлайны — всё как обычно. Она даже перестала думать про зазоры.
А потом, в апреле, ей пришло личное сообщение от человека по имени Марк.
«Здравствуйте. Меня зовут Марк. Я не реставратор, я программист. Я считал не копоть, а сроки строительства и объёмы поставок за те же годы. У меня получаются странные цифры. Ваш вопрос про нагар на плафонах — из той же категории. Если вам интересно, могу показать, что у меня есть. Без мистики. Только цифры и документы».
The free sample has ended.