Часть 2

18 апреля 2025, 12:20
      Первая неделя в офисе растворилась в потоке задач, багов и бесконечных чашек улуна. Дарья уже привыкла к джунглям из растений, к тому, как Катя появлялась словно из воздуха за её спиной, и даже к тому, что принтер работал только по чётным дням — «и то если попросить вежливо», как утверждал Шон.       Сегодня она застряла в дебаге race condition — той самой ошибки, которую все боялись трогать. Код мерцал на экране, словно живой организм. Временами Дарье казалось, что символы складываются в узоры, похожие на древние руны.       — Встреча через пять минут, — напомнил Майкл, проходя мимо. — Не забудь про демо.       Переговорка встретила их прохладой и запахом лаванды. Дарья открыла ноутбук, готовясь показать прогресс в отладке. Она начала говорить:       — Итак, проблема возникает когда два потока...       Внезапно что-то изменилось. Воздух словно сгустился, а затем...       — Встреча через пять минут, — сказал Майкл, входя в переговорку.       Дарья моргнула. Это же... Она только что это слышала? Те же люди заходили в комнату, садились на те же места. Катя достала тот же блокнот. Шон пробормотал тот же комментарий про кофе.       Она взглянула на часы — они показывали то же время, что и пять минут назад.       Никто не выглядел удивлённым. Все просто... продолжали, будто ничего не произошло. Дарья почувствовала, как по спине пробежал холодок.       — Итак, проблема возникает... — она запнулась, глядя на экран. Код на нём изменился. Теперь в нём мелькали строки, которых она точно не писала. Древние комментарии на немецком проступали сквозь её собственный код, как чернила сквозь промокашку.       Катя поймала её взгляд и едва заметно покачала головой — «не сейчас».       Дарья сглотнула и продолжила презентацию, стараясь не думать о том, что время только что свернулось само в себя, как лента Мёбиуса. И о том, что её код, кажется, жил собственной жизнью.       Дарья вылетела из переговорки, пробормотав что-то про bubble tea. Её руки дрожали, когда она хватала сумку. Пальцы нащупали телефон — время показывало 15:30. То же самое время, что было... до того как оно повторилось?       Духота Гонконга обрушилась на неё, как только она вышла из здания. Толпа на улице двигалась привычным потоком — туристы, офисные работники, старики с тележками полные картона. Всё казалось до боли нормальным, и от этого становилось только страшнее.       «Может, это пуэр от Майкла?» — подумала она, вспоминая терпкий вкус чая, который он притащил утром. — «Или недосып после ночного дебага?»       В небольшом магазинчике чая она механически заказала тайванскую версию чая с коричневым сахаром и молоком. Холодный стакан в руке немного успокаивал. Поднимаясь по узким улочкам SOHO, она свернула в проулок между антикварными лавками. Старые каменные ступени, изъеденные временем, вели куда-то вверх. Дарья опустилась на прохладный камень.       «Симптомы временной петли», — набрала она в поиске. Google выдал статьи про дежавю и квантовую физику. «Код, который меняется сам». Результаты про баги и усталость программистов.       — Дереализация... — пробормотала она, читая медицинский сайт. — Нарушение восприятия реальности, часто связано со стрессом...       Капли конденсата стекали по стакану с чаем, оставляя тёмные следы на камне. Где-то наверху ветер шевелил бельё на верёвках между домами, и тени от него плясали на ступенях как странные символы.       «Нужно взять больничный», — подумала Дарья, делая глоток остывшего чая. — «Или сходить к врачу. Это просто стресс от переезда и новой работы».       Но червячок сомнения грыз изнутри. Она вспомнила взгляд Кати, едва заметное покачивание головой. Будто та знала что-то. Будто предупреждала.       Телефон завибрировал — сообщение от Майкла: «Всё в порядке?»       Дарья уставилась на экран, не зная, что ответить. В отражении чёрного стекла на миг показалось, что её глаза мерцают, как звёзды.

***

      Последний час в офисе тянулся как патока. Дарья Маркова пыталась сосредоточиться на коде, но строчки расплывались перед глазами. После странного происшествия в переговорке реальность казалась зыбкой, будто отражение в мутном стекле. Пальцы зависали над клавиатурой, не находя нужных клавиш, а мысли путались, словно нити в старом клубке.       — Пошли в Pho Delicious? — Шон материализовался у её стола, рассеивая туман в её сознании. — Там бульон просто космос.       В маленьком ресторанчике пахло базиликом и корицей. Запахи кружились вокруг, проникая сквозь одежду, оседая на коже. Старушка-вьетнамка, похожая на добрую ведьму из сказки, приняла заказ, улыбаясь морщинками-лучиками. Её узловатые пальцы двигались с неожиданной грацией, когда она записывала заказ.       — ...и тут инструктор говорит — нет, Майкл, это не дрифт-трек! — Майкл размахивал палочками, изображая движения руля. Его глаза сверкали озорством, а голос поднимался и опускался как волны. — А я ему — простите, думал, вы оценили мой стиль Initial D!       Бабушка-официантка широко улыбнулась, расставляя миски с дымящимся супом. От каждой поднимался пар, закручиваясь в причудливые фигуры. Шон согнулся от смеха, чуть не уронив очки в бульон, его плечи тряслись под тонкой рубашкой.       — А вот у меня тоже история, — Катя отодвинула пустую чашку, звук фарфора по дереву отозвался внутри Дарьи странным эхом. — Представляете, соседи написали жалобу соседи по этажу, что я якобы в окна подглядываю. А у меня просто бонсай на подоконнике! Древний такой, причудливый...       — Может, он сам подглядывает? — подмигнул Шон. — Деревья, они такие...       Дарья улыбнулась, чувствуя, как натягиваются мышцы лица, будто отвыкшие от этого движения. Взгляд её невольно метнулся к окну, притянутый каким-то неосознанным импульсом. По улице шла женщина в красном платье-ципао, ткань струилась вокруг её фигуры как жидкий огонь. Через пару минут та же фигура, но уже в деловом костюме, прошла в обратном направлении. Дарья моргнула, ощущая сухость в глазах. Когда женщина появилась в третий раз — теперь в белом платье, похожем на саван — ложка дрогнула в руке Дарьи, ударившись о край миски с тихим, но отчётливым звоном.       — Ты где живёшь? — спросил Майкл, не замечая её замешательства, его голос доносился будто сквозь толщу воды. — Уже освоилась?       — В Шам Шуй По, — Дарья с трудом оторвала взгляд от окна, чувствуя, как немеют кончики пальцев. — Ищу соседку, если честно. Одной как-то...       — Тебе нужно отдохнуть, — мягко перебила Катя, положив ладонь на её руку. Прикосновение было тёплым, почти горячим, как будто Катя носила в себе внутренний огонь. — День был длинный.       Но глаза Кати говорили другое. В них мелькнуло что-то древнее и тревожное, как тени в глубине леса. Зрачки на мгновение стали вертикальными, как у кошки, или это просто игра света? Дарья почувствовала, как по коже пробежали мурашки, и это было не от кондиционера.

***

      Дарья сидела на подоконнике своей съёмной квартиры, глядя на неоновые огни Гонконга. Город пульсировал внизу, как живой организм из стекла и света. В отражении окна она видела своё усталое лицо и растрёпанные волосы — такие же неупорядоченные, как её мысли.       Киев всплыл в памяти — тихий двор на Подоле, где каждый камень мостовой был знаком, где жизнь текла по понятным правилам. Она уехала оттуда именно поэтому — искала структуру, порядок, логику. Гонконг казался идеальным выбором с его небоскрёбами-ульями, чёткой системой метро и математически выверенными автобусными маршрутами.       «И вот теперь», — Дарья провела пальцем по запотевшему стеклу, — «именно здесь реальность начала трещать по швам».       Она достала телефон и открыла заметки. Странности последних дней выстроились в аккуратный список:       «Господи, я схожу с ума», — она тряхнула головой и решительно открыла WhatsApp.       — Лен, привет! — голос Дарьи дрогнул от облегчения, когда на экране появилось знакомое лицо подруги.       — Дашка! Мне скоро выходить, если что! — Лена показала свою новый маникюр через камеру широко улыбаясь. На заднем плане мелькнул пушистый хвост. — Мисси, фу! Дай маме поговорить.       — Прости, все нормально, давай просто чуть-чуть поболтаем... — Дарья прикусила губу. — Знаешь.... Тут происходит что-то странное.       Она начала рассказывать — сперва о работе, о команде, о том, какой Гонконг невероятный. А потом, осторожно подбирая слова, о странностях.       — Погоди-погоди, — Лена подалась к камере. — Ты серьёзно думаешь, что время повторилось? А может, это просто дежавю? У меня такое бывает, когда не высплюсь.       — Но код...       — Даш, ты же программист. Сколько раз ты сама говорила про баги в IDE? — Лена почесала за ухом прыгнувшую к ней на колени собаку. — А женщина... Слушай, это же Гонконг! Там наверняка куча близняшек ходит.       Дарья помолчала, глядя на город за окном. Логика Лены была безупречной.       — А глаза? — тихо спросила она.       — Линзы! — рассмеялась Лена. — Ты не видела, какие у нас тут модницы ходят? Кошачьи глаза — это ещё цветочки. Вот Мисси недавно...       Следующие десять минут Лена рассказывала, как их лабрадор умудрился стащить целую пачку пельменей с верхней полки холодильника. История была такой нелепой и домашней, что Дарья почувствовала, как напряжение последних дней начинает отпускать.       — ...и представляешь, эта морда довольная сидит, а по всей кухне следы от лап! — Лена утирала слёзы от смеха.       — Боже, как я скучаю по этой холерной псине, — улыбнулась Дарья.       — Она тоже скучает. Вчера нашла твою старую футболку и притащила в свою лежанку.       За окном пролетел вертолёт, его огни отразились в стекле как падающие звёзды. Дарья вдруг поняла, что улыбается — впервые за день по-настоящему.       — Знаешь что, — сказала она, — ты права. Я просто перегружаю себя. Новая страна, новая работа...       — И ты всегда была той ещё параноидальной перфекционисткой, — подмигнула Лена. — Помнишь, как в универе решила, что препод по матану — робот, потому что он никогда не моргал?       — А оказалось, у него просто синдром сухих глаз, — фыркнула Дарья. — Ладно, я поняла. Двадцать первый век на дворе, какая магия?       — Вот именно! Оставь чудеса Гарри Поттеру.       После разговора Дарья ещё долго сидела у окна. Город внизу жил своей жизнью — спешащие люди, мигающие светофоры, запах жареной лапши из ресторана напротив. Всё было... нормальным. Обычным. Логичным.       «Хватит искать чёрную кошку в тёмной комнате», — подумала она, потягиваясь. Особенно если этой кошки там нет.       В отражении окна её глаза на мгновение словно вспыхнули серебром, но Дарья этого не заметила. Она уже отвернулась, решив заварить себе чай и посмотреть новый эпизод любимого сериала. В конце концов, что может быть более нормальным?

***

      Утро отличалось абсолютной тишиной и нормальностью. Дарья даже успела выпить кофе до первого стендапа — роскошь, о которой она и не мечтала в Киеве. Офис гудел привычной энергией: клацанье клавиатур, приглушенные разговоры, шорох листьев от кондиционера.       — Три таска на рефакторинг, два баг-фикса, — Майкл перечислял задачи на доске. — Дарья, тебе достается самое интересное — оптимизация кэширования.       «Наконец-то что-то простое», — подумала она, разворачивая ноутбук. После недели странностей обычный рабочий день казался подарком.       День летел незаметно. Дарья погрузилась в код, изредка отвлекаясь на совещания с продактами. Новый менеджер из Сингапура показывал макеты, обсуждал метрики, говорил о retention rate — все предельно конкретно, никакой мистики.       К вечеру офис опустел. Шон ушел на какую-то встречу, пробормотав что-то про "древние долги". Катя растворилась, как обычно, не прощаясь. Майкл задержался допоздна в серверной.       Дарья откинулась в кресле, потягиваясь. За окном небоскребы Central District мерцали, как созвездия. Кондиционер тихо шелестел, создавая почти домашний уют.       «Еще полчаса», — решила она, открывая Git. Старый баг не давал покоя — как он мог пройти все проверки? Она начала просматривать истории веток, погружаясь все глубже в репозиторий:       Палец замер над тачпадом. Название последней ветки казалось... неправильным. Дарья кликнула, развернула историю коммитов.       Последний коммит был датирован тремя месяцами ранее. Автор — z.z. Такого никнейма она не помнила в команде.       — Майкл! — позвала она. — Ты знаешь пользователя z.z?       Тишина. Видимо, он уже ушел.       Дарья открыла изменения. Один файл — logging.yaml. Обычный конфиг для логирования, но параметры...       За спиной что-то щелкнуло. Кондиционер? Она обернулась — пусто. Только тени от растений колыхались на стенах.       Руки слегка подрагивали, когда она открывала сам лог. Экран заполнился строчками:       [2023-08-12 03:14:22] CAM_FEED_A02 initialized[2023-08-12 03:14:23] PULSE_DELTA: 0.873[2023-08-12 03:14:23] EntityType: Witness detected[2023-08-12 03:14:24] PULSE_DELTA: 1.247[2023-08-12 03:14:24] Warning: threshold exceeded[2023-08-12 03:14:25] Emergency protocol initiated[2023-08-12 03:14:25] Feed terminated       Что-то в этих цифрах казалось знакомым. Дарья прищурилась, вглядываясь в timestamp. Три часа ночи... Почему именно это время?       Внезапно экран моргнул. Строчки лога задрожали, поплыли, как будто текст пытался сложиться в другой узор. Дарья моргнула — нет, показалось. Все на месте.       Она потянулась к телефону, чтобы сделать скриншот, но замерла. В стекле окна отразилось движение — кто-то стоял у входа в опен-спейс. Темный силуэт, неподвижный.       — Майкл? — голос прозвучал неожиданно хрипло.       Силуэт не шевелился. Через несколько секунд, которые растянулись в вечность, он медленно отступил в коридор. Звук шагов растворился в шелесте кондиционера.       Дарья резко развернулась к ноутбуку. Экран был пуст — чистый терминал, мигающий курсор. Ветка fix/observation-bleed исчезла из истории, будто её никогда не было.       Пальцы автоматически набрали git log. История коммитов выглядела обычно — никаких следов загадочного z.z.       За окном моргнули и погасли огни соседнего этажа. Дарья почувствовала, как по спине пробежал холодок. Пора домой. Определенно пора домой. Но желание узнать, что происходит заставило ее сидеть дальше.       Дарья глубоко вдохнула, собираясь с мыслями. Логика — её щит. Всегда была. Нужно действовать методично: выключить, подождать, включить. Базовые шаги отладки.       Экран погас. В темном стекле отразилось её лицо — бледное, с залегшими тенями под глазами. За спиной качнулась тень от монстеры, будто кто-то прошел мимо. Дарья не обернулась.       Тридцать секунд. Она считала про себя, глядя на часы в телефоне. Цифры подрагивали в полумраке.       Ноутбук ожил с тихим гудением. Привычный экран логина, пароль из пальцев. Всё как обычно — пока она не открыла терминал.       История Git развернулась перед ней, как свиток с древними письменами. Ветка fix/observation-bleed снова была там, но теперь код в ней пульсировал. Не мерцал, не моргал — именно пульсировал, как живая ткань под микроскопом.       — Не может быть, — прошептала Дарья, пальцы зависли над клавиатурой. — Если это аддон, то это очень странный аддон…       Она начала вводить команду для просмотра лога, но экран опередил её. Строки появлялись сами, одна за другой:       [2023-11-15 21:47:13] session_start: user d.markova[2023-11-15 21:47:14] accessing branch: fix/observation-bleed[2023-11-15 21:47:15] warning: emotional residue detected[2023-11-15 21:47:16] analyzing pattern...       Что-то холодное коснулось затылка — не физически, а будто кто-то провел ледяным пальцем по её сознанию. Дарья почувствовала, как пространство вокруг сжимается, становится плотным, как вода на глубине.       Новая строка выползла на экран:       emotion_trace[143]: fear spike – origin unclear       Это был не просто текст. Слова несли в себе вес, тяжесть чужого ужаса. Он хлынул с экрана, как чернила в воду — густой, вязкий, заполняющий лёгкие. Страх того, кто смотрел в темноту слишком долго. Кто видел что-то в глубине кода, в пустотах между строк.       Тёплая капля упала на трекпад. Дарья коснулась носа — кровь. Маленькая красная точка расплылась по серой поверхности, и курсор дёрнулся, словно от боли. Пиксели вокруг него задрожали, формируя узор, похожий на нервные окончания.       Дарья откинулась на спинку стула, чувствуя, как чужой страх прорастает в ней корнями. Он был древним, этот страх — старше компьютеров, старше электричества. Страх существа, которое поняло, что оно больше не одно.       В углу экрана цифры времени сменяли друг друга с неестественной медлительностью. Лог пульсировал в такт с её сердцем, но теперь она знала — это не её ритм. Что-то другое использовало её пульс как метроном, настраиваясь на её частоту.       Воздух в офисе стал густым и тяжёлым, как перед грозой. Растения вдоль стен замерли, перестав качаться от кондиционера. Тишина натянулась струной.       Новая строка кода медленно проявилась на экране:       connection_established[user:witness] – accessing emotional bandwidth...       Страх уже не был чужим — он стал частью её существа, растворился в крови, как яд. Дарья чувствовала его вкус на языке — металлический, как у старых монет.       Пальцы сами потянулись к клавиатуре. Она должна была что-то ввести, ответить, но...       Позади неё что-то зашуршало. Тень от монстеры на стене вытянулась, изогнулась неестественным углом. В отражении экрана мелькнуло движение — или это был глитч в матрице дисплея?       Лог на экране замер, будто задержал дыхание. Курсор мигал всё медленнее, как засыпающее сердце. А потом программа выдала последнюю строку:       subject_resonance: 98.3% matchrecalibrating...       Офис погрузился в абсолютную тишину. Даже шум города за окном исчез, словно кто-то нажал кнопку mute на реальности. В этой тишине Дарья слышала только своё дыхание и тихое гудение процессора — или это был шёпот чего-то, притаившегося в глубине кода?       Капля крови на трекпаде начала темнеть, превращаясь из алой в почти чёрную. В её глубине что-то двигалось, как будто кровь стала окном в другое измерение.       И тогда лог действительно вдохнул.       

***

      Дарья растворилась в городе — неоновое крошево огней, зеркала зонтов, чужие спины. Что-то гнало её сквозь толпу, дышало в затылок невидимым хищником, подталкивало вперёд.       Дома она залила квартиру светом, будто пыталась выжечь тени. Но даже обжигающий душ не смыл фантомное присутствие — оно въелось глубже кожи, как въедается дым в волосы после пожара.       Влага испарилась с тела, дрожь осталась. В зеркале — всё то же лицо: бледность, усталость под глазами, влажные пряди. Ни следа той крови. Пальцы машинально коснулись переносицы. «Показалось», — шепнула она отражению.       Знакомый скрип пружин принял её тело. Одеяло до подбородка, веки вниз-вверх-вниз — сон ускользал, как вода сквозь пальцы.       В темноте пульсировал код. Символы проступали на изнанке век древними рунами, вглядывались в неё из глубины сознания — или она вглядывалась в них?       3:14 на экране телефона. Это время снова. Простыни царапали кожу наждаком. Дарья металась, ища прохладный островок на подушке.       Вой сигнализации разрезал ночь, захлебнулся тишиной. В этой тишине капли в ванной отбивали ритм — тот же ритм, что пульсировал в коде, застывшем в памяти.       Дремота пришла с рассветом. Сны распадались битыми файлами — осколки чужих воспоминаний, искажённые данные, сбойные образы.       Утро выдернуло её из оцепенения. Тело двигалось само: душ-кофе-одежда. Реальность казалась перекалиброванной — слишком резкой и размытой одновременно, как снимок с дрожащих рук.       В метро Дарья пыталась читать новости, но буквы расплывались, превращаясь в знакомые строчки лога. Она моргнула — текст вернулся в норму. Пожилая китаянка напротив смотрела сквозь неё пустым взглядом.       Офисное здание возвышалось как обычно — стекло и сталь уходили в облака. Но что-то изменилось. Дарья не могла уловить, что именно, пока не увидела своё отражение в стеклянных дверях.       Тень. Её тень двигалась не совсем синхронно. Буквально на долю секунды медленнее. Или быстрее? Дарья замерла. Тень тоже остановилась, но как будто с запозданием, будто решая, стоит ли подчиняться законам физики.       В лифте зеркальные стены множили её отражение до бесконечности. Дарья старалась не смотреть, но взгляд сам возвращался к теням. Они колебались, как рябь на воде, создавая иллюзию движения там, где его не должно было быть.       Офис встретил её привычным гулом. Шон что-то увлечённо объяснял новому интерну, размахивая руками. Катя неслышно скользила между столами, как призрак. Все казались нормальными, обычными, живыми.       Дарья включила компьютер. Пока система загружалась, она проверила телефон — никаких странных сообщений. Ночной код казался далёким кошмаром, почти нереальным.       Slack пискнул уведомлением. Новое сообщение в канале, которого она никогда раньше не видела:       [#shadow-observer-log] Update: Witness status — UNSTABLE       Сердце пропустило удар. Дарья обновила страницу — сообщение исчезло. Канал тоже. Она оглянулась: никто не смотрел в её сторону, все были заняты своими делами.       — Эй, кто-нибудь получил странное уведомление? — спросила она в пространство.       — М? — Майкл поднял голову от монитора. — Какое?       — В Слаке. Что-то про... — Дарья замолчала. Как объяснить то, что уже исчезло?       — А, наверное, тестовые оповещения, — махнул рукой Майкл. — Девопсы что-то настраивают.       Его голос звучал обыденно, но взгляд задержался на ней чуть дольше обычного.       Дарья кивнула и повернулась к своему монитору. Теперь она чувствовала их взгляды — Кати, Майкла, может быть, даже растений. Что-то изменилось. Мир сместился на один шаг, как её тень в лифте, и она застряла между кадрами реальности.       В наушниках зашипело статикой. Сквозь помехи пробивался ритм — точно такой же, как капли в ванной этой ночью. Как пульс кода. Как биение чужого сердца в глубине системы.              Дарья застыла перед монитором. Пятнышко на клавише "F" казалось почти черным в полумраке офиса. Она наклонилась ближе — да, определенно кровь. Засохшая, въевшаяся в пластик.       Курсор пульсировал в пустом терминале. Не просто мигал — именно пульсировал, с неровными интервалами. Вдох-выдох. Сжатие-расширение. Как сердце загнанного зверя.       Ритм отдавался в висках знакомой болью. Она уже чувствовала его — той ночью, когда код впервые заговорил с ней. Чужой страх, древний и глубокий, как колодец в заброшенном доме.       Пальцы зависли над клавиатурой. Экран моргнул, и строки появились сами — белые буквы на черном фоне:       # YOU SAW IT. # NOW WHAT WILL YOU DO?       «Видела что?» — подумала Дарья, но её пальцы уже тянулись к пятну крови. Что-то внутри кричало: не трогай, остановись! Но другая часть — та, что просыпалась по ночам от шепота кода — знала: это неизбежно.       Подушечка указательного пальца коснулась засохшей крови.       Стрелка вздрогнула. Пока её взгляд прикован к дисплею, указатель внезапно шевелится самостоятельно. Не набирает текст — просто пульсирует, словно некто в ожидании.

Пока нет комментариев. Авторизуйтесь, чтобы оставить свой отзыв первым!