Влад Велирский
Алгоритм для проигравших

От автора

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

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

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

Глава 1. Человек с худшим прогнозом

В девять сорок семь Антон Рудин ещё был старшим продуктовым аналитиком «Шанса». В девять пятьдесят две его фамилия появилась на общем экране рядом с красным числом, которое он сам научил руководство считать понятным.

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

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

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

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

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

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

Градова посмотрела на него не сразу.

— Антон, я дойду до методологии.

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

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

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

Такого поля в исходной презентации не было.

— Ошибочная? — спросил Антон.

— Сейчас всё объясню.

— Нет, я про термин. Мы согласовали порог на совете продукта. Протокол от четырнадцатого июня.

— Согласовали на основании твоей записки.

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

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

Градова нажала кнопку пульта. Воронка исчезла. Вместо неё появились две линии: ожидаемое удержание и фактическое.

— Мы не ищем виноватого, — сказала она. — Мы разбираем ответственность.

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

— Тогда уберите фамилию со слайда.

— Фамилия обозначает владельца решения.

— Решение было коллективным.

— Владение не бывает коллективным. Ты сам это повторял на каждом разборе.

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

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

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

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

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

— А моя роль? — спросил он.

— Упраздняется.

Градова не отвела взгляда. В этом Антон не мог её упрекнуть.

— С сегодняшнего дня?

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

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

Антон открыл ноутбук. Сеть уже не принимала пароль.

— Вы заблокировали доступ до разговора.

— По регламенту информационной безопасности.

— Зато обсуждаем при сорока двух людях.

— Мы обсуждаем решение, повлиявшее на сорок две роли и на городскую программу.

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

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

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

— Любой прогноз ошибается на отдельных людях.

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

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

— Хорошо, — сказал он. — Тогда покажите полный отчёт. Не четыре строки.

— Антон, встреча не о твоём трудовом споре.

— Вы сделали её о нём, когда вывели мою фамилию.

Градова положила пульт на стол.

— Полный отчёт будет у комитета. Ты получишь материалы, которые положены по процедуре. А сейчас нам нужно продолжить работу.

Вот и всё. Не крик, не охрана, не картонная коробка из кино. Просто фраза, после которой человек становится помехой расписанию.

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

До двери было семь шагов. На третьем он увидел на экране подпись под таблицей: «Методика оценки устойчивости — аналитическая группа, руководитель А. Рудин». Ещё год назад там стояло имя Нины Соколовой. Потом она прислала новую версию расчёта, Антон объединил её со своей запиской и представил совету. Она спросила, почему исчезла строка с авторством теста. Он ответил, что в продуктовой документации авторами не меряются.

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

У двери Антон остановился.

— Елена, один вопрос. Кто теперь владелец методики?

Градова поняла, что он спрашивает не о должности.

— Компания.

— У компании нет фамилии.

— Именно поэтому компания переживёт эту ошибку.

Он вышел, не попрощавшись.

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

— Антон Сергеевич, карту, пожалуйста.

— Уже Сергеевич?

— Всегда был.

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

— Личные вещи можно забрать с сопровождением, — сообщил Семён. — Или вам соберут и передадут завтра.

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

— Завтра, — сказал он.

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

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

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

— Всего доброго, — сказал охранник.

Антон вышел под дождь.

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

У моста он остановился под козырьком закрытого киоска. На противоположном берегу висел огромный плакат «ШАНС ЕСТЬ У КАЖДОГО». Девушка в жёлтом пальто улыбалась поверх потока машин. Под слоганом мелко: «Городская платформа персонального трудоустройства».

Антон достал телефон и открыл приложение.

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

«Расскажите о себе, чтобы получить персональный маршрут».

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

Платформа подтянула возраст, образование и прежнюю должность из городского профиля. В строке «Статус занятости» стояло: «Не работает с 09:52 сегодняшнего дня».

Антон посмотрел на часы. Было десять двадцать шесть.

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

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

Последний ответ приложение не приняло.

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

Антон выбрал «сокращение штата».

«Сведения работодателя не подтверждают выбранный фактор».

Дождь забарабанил по металлическому козырьку сильнее. Антон нажал «другое» и напечатал: «Разногласия по методологии оценки».

Приложение превратило фразу в серую плашку: «Профессиональный конфликт».

— Очень персонально, — сказал Антон вслух.

Пожилой мужчина рядом подвинулся от него на полшага.

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

«Ваш прогноз устойчивого трудоустройства на ближайшие 90 дней: 7%».

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

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

Он обновил страницу. Семь.

Закрыл приложение и открыл снова. Семь.

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

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

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

Антон коснулся строки. Открылось пояснение: «Показатель отражает полноту взаимодействия с рекомендованными действиями».

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

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

Кнопка отправки не сработала. Под текстом появилось предупреждение: «Обращение содержит служебные термины. Опишите проблему простыми словами».

Он стёр сообщение.

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

«Если что нужно — скажи».

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

Антон убрал телефон и пошёл домой.

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

— Что это вы так рано? — спросила она.

Антон посмотрел на мокрый рукав пальто.

— Встречу перенесли.

— Домой?

— В другое место.

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

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

Потом открыл ноутбук.

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

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

Он создал папку «Увольнение» и разложил файлы по датам. В отдельном документе начал хронологию.

09:47 — начало общего совещания.

09:52 — объявление об упразднении роли.

09:54 — блокировка доступа (фактически могла произойти раньше).

10:26 — профиль соискателя создан автоматически.

10:28 — прогноз 7%, отображение внутреннего признака.

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

Телефон снова завибрировал. На этот раз звонила мать. Антон смотрел на экран, пока вызов не прекратился. Через минуту она позвонила снова.

— Ты занят? — спросила она.

— Уже нет.

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

— Хорошо.

— Голос какой-то странный.

— Совещание было длинное.

— Ты же сказал, что уже не занят.

Антон закрыл глаза.

— Мам, я перезвоню вечером.

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

В одиннадцать сорок пришло уведомление «Шанса».

«Для вас сформирован первый шаг».

Антон открыл приложение. Вместо списка вакансий на экране была карточка без логотипа платформы. Чёрный фон, белые буквы, внизу тонкая янтарная линия.

«НОЛЬ».

Ниже:

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

Кнопки: «Начать», «Отказаться», «Почему я это вижу?».

Антон нажал последнюю.

Экран ответил: «Сценарий доступен при достижении нулевой точки маршрута».

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

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

Проблема была в другом: «Ноль» закрыли до первого городского запуска.

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

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

Он нажал «Отказаться».

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

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

Антон закрыл приложение.

Через минуту открыл снова. Карточка ждала.

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

Антон позвонил Марку.

— Ты уже дома? — спросил Марк.

— Проверь одну вещь. В проде всплыл старый сценарий.

На другом конце повисла пауза.

— Антон, я не могу обсуждать прод.

— Я не прошу данные. У меня в приложении карточка «Ноля».

— Чего?

— Старый сценарий исследовательской группы. Чёрный экран, янтарная полоса. Задание записать поражение.

— Это шутка?

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

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

— Поэтому я звоню тебе.

Марк выдохнул.

— Пришли скрин.

— Защита экрана. На снимке обычная рекомендация.

— Тогда пришли запись с другого телефона.

Антон оглядел квартиру. Другого телефона не было.

— У меня нет.

— Покажи поддержке.

— Поддержка отправит обращение вам.

— Значит, оно попадёт по процедуре.

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

— Марк, просто найди в репозитории строку «нулевая точка маршрута».

— У меня теперь другой руководитель.

— Уже?

— Видишь, данные иногда обновляются быстро.

Антон промолчал.

— Извини, — сказал Марк. — Это было лишнее.

— Нет. Точно.

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

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

— Понял, — сказал он. — Не лезь.

— Ты документы посмотрел? Может, юрист нужен?

— Сначала разберусь.

— С чем?

Антон посмотрел на телефон с чёрной карточкой.

— С тем, что именно произошло.

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

Карточка не исчезла.

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

Он снова вернулся к хронологии и добавил раздел «Предшествующие решения».

Весенний тест Нины.

Снижение порога предупреждения перед расширением.

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

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

Последнюю строку он выделил и стёр. Написал вместо неё: «Корпоративный формат авторства».

Карточка «Ноля» светилась рядом.

«Не указывайте внешнюю причину, пока не назовёте собственное решение».

Антон выключил телефон экраном вниз.

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

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

Антон открыл форму. Поле принимало не больше пятисот знаков.

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

Система предложила добавить: «Я не согласен с оценкой работодателя».

Антон отказался от подсказки и отправил свой текст.

Рейтинг обновился через несколько секунд.

Шесть процентов.

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

В объяснениях появился новый фактор: «низкое принятие обратной связи».

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

Антон открыл новый документ и написал заголовок: «Почему оценка некорректна».

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

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

Телефон погас от бездействия. Когда он коснулся экрана, «Ноль» снова предложил начать.

На этот раз Антон нажал кнопку.

Появились три поля.

«Действие».

«Ожидание».

«Результат».

И четвёртая строка, отделённая янтарной чертой:

«Ваше решение, без которого поражение не произошло бы».

Антон положил пальцы на клавиатуру телефона.

В поле «Действие» написал: «Подготовил методику оценки устойчивого трудоустройства и представил её совету продукта».

Исправил «подготовил» на «представил». Методика была не только его.

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

«Результат»: «Программа расширилась. Удержание снизилось. Руководство назвало методику причиной и уволило меня».

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

«В результате сначала названо решение другого человека. Укажите наблюдаемое последствие вашего действия».

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

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

Подсветка исчезла.

Оставалось четвёртое поле.

Антон напечатал: «Я согласился с коллективным решением».

«Назовите собственное действие».

«Я подписал записку с согласованным порогом».

«Действие уже указано. Какое решение сделало поражение возможным?»

— Ты не понимаешь причинность, — сказал Антон телефону.

Программа не ответила.

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

Потом он вынес на совет объединённый показатель. Тест Нины остался приложением. В презентации не хватило места для её имени.

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

Антон вернулся к телефону.

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

Палец завис над кнопкой «Сохранить».

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

Рядом была кнопка «Отказаться».

Антон нажал её.

«От чего именно вы отказываетесь?»

Он написал: «От сохранения записи до получения сведений о том, кто имеет к ней доступ».

Ответ появился сразу:

«Отказ принят».

Янтарная линия погасла. Поля остались заполненными, но стали неактивны. Внизу появилась новая строка:

«Последствие отказа: запись хранится только на устройстве. Следующее задание не открыто».

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

На главном экране «Шанса» по-прежнему стояли шесть процентов.

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

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

На первой странице он поставил дату.

Ниже написал:

«Поражение № 1».

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

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

Антон закрыл блокнот.

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

Телефон мигнул уведомлением поддержки: обращение зарегистрировано под номером 80419.

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

Он не сохранил признание в системе. Он не выполнил задание. И всё же поражение было записано.

За окном электронные часы на башне администрации сменили 20:59 на 21:00. В офисе «Шанса», вероятно, выключали свет в переговорной, где его фамилия несколько часов назад стояла рядом с красным числом. Здесь, на кухонном столе, фамилии не было. Только четыре строки, написанные его рукой, и принятый отказ, после которого ничего не открылось.

Антон впервые допустил, что именно так «Ноль» и должен был работать.

2. От автора системы

Утром рейтинг поднялся до восьми процентов.

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

Он не заполнял отчёт в приложении.

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

Антон сделал снимок экрана. На этот раз снимок получился: зелёная цифра, стандартное объяснение, время обновления. Чёрная карточка в кадр снова не попала.

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

Оставался предусмотренный маршрут.

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

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

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

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

Он нажал «Подтвердить».

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

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

Всё это было правдой, если правильно расставить границы.

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

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

Центр занимал два нижних этажа серого здания. Над входом сохранились каменные буквы «РАСЧЁТНАЯ СТАНЦИЯ», а под ними висела пластиковая табличка с зелёным знаком «Шанса». Последняя буква в слове «станция» потемнела от воды. Автоматическая дверь открылась только со второй попытки.

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

Антон остановился у стойки навигации.

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

— Вы по записи? — спросила администратор.

Ей было около пятидесяти. На бейдже значилось: «Лариса. Навигатор Центра».

— На десять двадцать. Рудин Антон Сергеевич.

Лариса нашла его в планшете и на мгновение задержала палец над экраном.

— Первичная после прекращения занятости. Документы с собой?

— Паспорт и соглашение.

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

— Я могу пройти анкету на своём телефоне?

— Можете. Но у вас отмечена сверка данных. Лучше здесь.

Именно этого он хотел. Антон взял талон А-147.

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

Первый вопрос был об образовании, второй — о последней должности, третий — о причине прекращения занятости. Варианты: сокращение, соглашение сторон, завершение договора, собственное желание, дисциплинарное основание, иное. Антон выбрал соглашение сторон.

Терминал показал предупреждение: «Данные работодателя указывают на конфликтное завершение. Хотите уточнить ответ?»

— Нет, — тихо сказал он и нажал «Оставить».

Следующий экран предложил перечислить барьеры. Недостаток опыта. Здоровье. Уход за близким. Транспорт. Долговая нагрузка. Потеря уверенности. Судимость. Цифровые навыки. Другое.

Антон выбрал «Другое» и написал: «Некорректное смешение прогнозной оценки и оценки поведения пользователя».

Система попросила говорить проще.

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

Кнопка «Продолжить» стала зелёной.

После анкеты появилась рекомендация: «Выполните одно действие, которое можно проверить сегодня. Это поможет консультанту составить маршрут».

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

Чёрной карточки не было.

Антон открыл сведения о странице. Внизу мелко стояли идентификаторы: шаблон `FIRSTSTEP04`, канал `KIOSK`, сессия, время. Он переписал всё на талон. Потом нажал логотип семь раз — старый жест входа в диагностическую панель. Ничего не произошло. Ещё год назад открылось бы окно с версией интерфейса. Марк всё-таки убрал служебный жест или перенёс его за авторизацию.

— Молодой человек, вы закончили? — спросила женщина с папкой.

За ней собралась очередь.

— Да. Простите.

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

Талон А-147 вызвали в кабинет двенадцать.

Стеклянная дверь была заклеена полупрозрачной плёнкой до уровня плеч. За столом сидела женщина с короткими тёмными волосами и вязаным браслетом на запястье. На столе не было ничего личного, кроме кружки с отколотым краем. Бейдж: «Ольга Левина. Консультант».

— Антон Сергеевич? Садитесь. Воду хотите?

— Нет, спасибо.

— Я вижу, вы раньше работали в самой платформе.

Не вопрос. Антон положил соглашение на край стола.

— В аналитическом подразделении.

— Поэтому анкета у вас получилась как служебная записка.

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

— Формулировка точная.

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

— Уже оспорил.

— И рейтинг снизился.

— Потом вырос.

— До восьми процентов, — сказала Ольга. — Это всё равно красная зона.

Она произнесла цифру без жалости и без удивления. Как температуру за окном.

— Вы считаете прогноз верным?

— Я считаю, что прогноз мешает вам отвечать на мои вопросы.

— Потому что он некорректен.

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

Антон откинулся на спинку стула.

— Доступ к полному журналу изменений моей карточки.

— Этого у меня нет.

— Вы видите историю назначений?

— Вижу то, что положено консультанту.

— Там есть задание без названия? Вчера, после двадцати часов.

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

— Есть отказ от сохранения первичного отчёта.

— Какой код шаблона?

— Антон Сергеевич, я не выдаю технические сведения.

— Мне не нужны персональные данные. Это моя карточка.

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

Он промолчал.

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

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

— Вы знаете, что она экспериментальная?

— Видно по интерфейсу.

Ольга сняла руку с мыши.

— По интерфейсу вы определили происхождение функции, которую назвали незнакомой?

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

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

— Где?

— В исследовательских материалах.

— Разрабатывали?

— Анализировал результаты.

Это тоже было правдой. Не вся.

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

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

Антон достал телефон.

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

«Очная процедура начата. Для продолжения назовите проверяемое действие консультанту».

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

— Вот, — сказал он и положил телефон перед Ольгой.

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

— Здесь нет задания.

— Есть условие перехода.

— Вы говорите как разработчик.

— Как аналитик.

— Нет. Аналитик сказал бы, что видит. «Условие перехода» говорит человек, который знает, что должно быть дальше.

Антон забрал телефон чуть быстрее, чем хотел.

— Вы оформите запрос?

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

— Запрошу журнал карточки.

— Это запрос. Что сделаете вы?

— Подготовлю описание ошибки.

— Для кого?

— Для технической поддержки.

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

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

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

— До какого времени?

— До восемнадцати.

— Как передадите?

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

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

— Это поможет вам найти работу?

— Это поможет понять, законно ли работает платформа.

— Я спросила не про платформу.

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

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

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

— Вы хотите, чтобы я выбрал одну из карточек?

— Нет. Они удобны системе, потому что считаются автоматически. Мне нужен ваш шаг.

— Хронология — мой шаг.

— Тогда так и запишем.

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

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

— Уберите последнюю фразу, — сказал Антон.

— Почему?

— Она не относится к ошибке.

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

— Я не давал согласия передавать сведения о моей прежней работе.

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

— Тогда я не отправлю фразу. Но в запросе останется: «пользователь распознал сценарий как экспериментальный». Подходит?

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

— Подходит.

Ольга удалила последнюю строку и отправила форму. Внутренний номер: ЦПС-2217.

В ту же секунду телефон Антона завибрировал. Чёрная карточка изменилась.

«Действие: до 18:00 составить хронологию появления карточки и передать её консультанту через обращение 80419».

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

Ниже появилась кнопка «Принять действие» и, рядом, менее заметная — «Изменить».

Антон нажал «Изменить».

— Что не так? — спросила Ольга.

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

— Но выбрали вы?

— Да.

— Тогда в чём разница?

— В том, кто присваивает себе действие.

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

Осталось: «До 18:00 составить хронологию появления карточки и передать копию в Центр для технического запроса».

— Теперь ваше? — спросила Ольга.

— Теперь хотя бы точнее.

Он нажал «Принять действие».

Карточка стала белой. Вверху появилась обычная зелёная полоса «Шанса», но внизу сохранилась тонкая янтарная линия. Идентификатор шаблона на экране не показывался.

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

— Нет. У нас стандартный первый шаг выглядит иначе.

— Сколько людей проходит очную процедуру после локального отказа?

— Я не знаю, что вы называете локальным отказом.

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

Ольга закрыла ручку колпачком.

— Вы сейчас даёте мне инструкцию как бывший сотрудник или просите как пользователь?

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

— Прошу зафиксировать риск неизвестного сценария.

— Уже зафиксировала. А вы выполните своё действие до шести.

— Если не выполню, что произойдёт?

— Для Центра — ничего. Мы обсудим почему и выберем другое, если вы придёте снова.

— Рейтинг?

— Может измениться. Я не управляю формулой.

— Значит, всё-таки произойдёт.

— С цифрой — возможно. С правом прийти сюда — нет.

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

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

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

— Я ничего не скрывал.

— Тогда вам будет легко решить.

На этом приём закончился.

В коридоре курьер в синей куртке спорил с терминалом. Экран требовал выбрать минимум один барьер, а он нажимал «Нет подходящего». После третьей попытки подошла Лариса.

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

— Выберите транспорт.

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

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

— В «Другом» можно написать район и время первого автобуса, — сказал Антон.

Мужчина повернулся.

— А вы кто?

— Никто. Только что заполнял.

— «Другое» потом никто не читает.

— Консультант читает.

— Вам прочитали?

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

— Да.

Мужчина выбрал «Другое».

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

Он сел на низкую ограду возле клёна и развернул талон А-147. На обороте были два набора идентификаторов. Терминальная анкета: `FIRSTSTEP04`, канал `KIOSK`. Чёрная карточка не показалась на терминале. Но очное действие, сохранённое консультантом, почти мгновенно попало в «Ноль» на телефоне. Значит, сценарий существовал не как отдельная рассылка и не как локальная галлюцинация старого кэша. Он слушал общий поток событий маршрута, выбирал только некоторые и отображался в мобильном клиенте.

Кто-то не отправлял ему задания вручную. Кто-то — раньше — оставил включённой ветку.

Антон набрал Марка, но не нажал вызов. Вчера Марк ясно отказался лезть без задачи. Теперь задача ЦПС-2217 существовала официально. Рано или поздно она попадёт в поддержку, а потом к команде приложения. Если Антон позвонит первым, запрос можно будет представить как продолжение личного давления бывшего руководителя.

Он открыл блокнот и на новой странице написал:

«Что известно».

Карточка защищена от снимков, но хранит локальный отказ.

На терминале карточки нет.

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

Сценарий не формулирует действие сам: подставляет запись консультанта и позволяет изменить.

Он остановился перед пятой строкой. «Автор сценария знает внутреннюю архитектуру» было бы лишним. Архитектуру знал он сам.

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

«Признаков живого отправителя нет».

До восемнадцати оставалось шесть часов.

Дома Антон создал документ «Хронология карточки 80419». Начал с момента установки приложения, хотя оно стояло на телефоне три года. Указал время увольнения, регистрацию как соискателя, появление семи процентов, первое отображение чёрной карточки, отказ от сохранения, изменение рейтинга после обращения, очную запись и появление условия процедуры. Содержание «Поражения № 1» он не включил. Вместо него написал: «Локальная запись содержит сведения о профессиональном решении пользователя и не была передана в рамках согласия».

На второй странице он добавил технические наблюдения и номера с талона. Несколько раз рука сама тянулась к словам «сценарий конечного автомата», «переход OFFLINE_WITNESS», «подписка на event bus». Он заменял их тем, что мог видеть обычный пользователь: «после события», «без ручного ввода на телефоне», «текст совпал с записью консультанта».

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

В пятнадцать двенадцать пришло уведомление: обращение 80419 объединено с запросом Центра ЦПС-2217. Исполнитель не назначен.

Антон обновил документ и добавил это событие. Затем открыл свойства файла. Автор: Anton Rudin. Он удалил метаданные, сохранил PDF и поймал себя на том, что готовит улику против возможного противника, хотя единственным человеком, попросившим документ, была Ольга с кружкой со сколотым краем.

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

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

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

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

Рядом лежал блокнот, открытый на «Поражении № 1».

Антон добавил один абзац перед вопросом:

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

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

В семнадцать двадцать семь Антон прикрепил PDF к обращению 80419. В поле комментария написал: «Копия подготовлена для технического запроса Центра. Прошу сохранить связь с ЦПС-2217».

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

Владелец аналитического продукта — Елена Градова.

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

Антон нажал «Отправить».

Сначала обновилось стандартное обращение: «Материалы получены». Затем зелёный рейтинг сменился с восьми на девять процентов. Причина: «Выполнено согласованное действие».

И только потом открылась карточка «Ноля».

Она не поздравила его. Появились три поля:

«Что произошло?»

«Какую цену вы предполагали?»

«Какую цену не учли?»

Антон написал в первом: «Передал хронологию в Центр и поддержку. Указал, что распознал ранний прототип благодаря участию в его оценке».

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

Третье поле оставил пустым.

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

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

Телефон зазвонил в семнадцать сорок одну. Незнакомый городской номер.

— Антон Сергеевич? — спросил мужской голос. — Служба сопровождения «Шанса». По вашему объединённому обращению. Уточните, пожалуйста: у вас сохранился доступ к экрану экспериментального задания?

— Сохранился.

— Не удаляйте приложение и не очищайте данные. Мы зарегистрировали инцидент.

— Какой уровень?

— Я не уполномочен сообщать внутреннюю классификацию.

— Кто назначен владельцем?

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

— С вами свяжутся.

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

— Мы проверяем.

— Когда ветку должны были отключить?

На этот раз мужчина не стал делать вид, что ищет ответ.

— Антон Сергеевич, откуда вы знаете, что её должны были отключить?

Антон посмотрел на третий пустой вопрос «Ноля».

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

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

— Вы были участником пилота?

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

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

На линии стало тихо.

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

— Назовите ваше имя и номер инцидента.

— Илья Воронцов. ИБ-390. Я продублирую в обращении.

Звонок закончился.

Антон вписал в третье поле: «Чтобы доказать происхождение карточки, мне пришлось раскрыть знание, которое связывает меня с её созданием».

Кнопка «Сохранить отчёт» стала активной. Рядом оставалась «Сохранить только на устройстве».

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

Антон нажал «Сохранить только на устройстве».

Ответ появился без задержки:

«Отчёт принят локально. Следующее действие откроется после подтверждённого последствия или очной сверки».

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

В восемнадцать ноль три Ольга прислала короткое сообщение через кабинет: «Хронологию получила. Запрос принят в работу. На следующей встрече можно не обсуждать содержание локальной записи».

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

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

В блокноте под «Что известно» появилась ещё одна строка:

«Первое практическое действие не нашло отправителя. Оно создало официальный инцидент и выдало автора логики».

Антон перечеркнул последнее слово и написал точнее:

«Одного из авторов».

Имя Нины он пока не добавил.

Глава 3. Вернуть чужую заслугу

В восемь сорок три утра в обращении 80419 появилось первое последствие.

«На время проверки инцидента ИБ-390 доступ к связанным архивным материалам ограничен. Просим подтвердить перечень документов, в которых использовались результаты пилотной оценки».

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

В колонке «Автор» стояло: А. С. Рудин.

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

Вывод сформулировала Нина Соколова.

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

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

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

— Тогда измеряй право отказаться.

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

Вопроса не возникло. Возник грант.

Он пролистал до последнего слайда. «Методика и аналитика: Антон Рудин». Под строкой сохранилось пустое место, чуть шире остальных интервалов. Когда-то там стояло: «Исследование пользовательских отказов: Нина Соколова».

Антон закрыл презентацию, но чёрная карточка уже ждала поверх кабинета.

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

«Исправьте одно присвоенное решение там, где его видели».

Ни имени Нины, ни названия презентации.

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

Антон не нажал ни одну.

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

Антон добавил строку на титульную страницу: «Исследование пользовательских отказов и дизайн добровольной ветки — Нина Соколова». На последнем слайде восстановил удалённую подпись. Сохранил как новую версию и открыл форму архивной корректировки.

Причина изменения:

«Уточнение авторства».

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

Там, где её видели.

Комиссия видела старую версию. Руководители видели старую. Коллеги видели, как Градова представила Антона автором метода, а он не поправил её. Тихая замена исправляла файл, но оставляла целой историю, которую файл создал.

Телефон завибрировал. Марк прислал фотографию экрана: в системе поддержки появился ИБ-390, а рядом — красная пометка «конфликт интересов предполагаемого автора».

«Это ты?» — написал он.

Антон ответил: «Да».

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

«Тебе запретили технические действия. Не лезь в прод».

«Не лезу. Исправляю архивную презентацию».

Марк позвонил сразу.

— Какую презентацию?

— Старый совет. Где добровольная ветка.

— Сейчас? Во время ИБ?

— Именно поэтому она всплыла.

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

— Я создаю версию. Журнал сохранит старую.

— Ты уже создал?

— Пока нет.

Марк шумно выдохнул. На заднем плане кто-то спросил его про сборку, и он ответил: «Две минуты».

— Хорошо. Тогда не создавай, пока безопасники не снимут копию.

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

— Перечень, Антон. Не исправления. Если у тебя трудовой спор, это особенно плохо.

— Почему?

— Потому что компания говорит: ты единолично отвечал за модель. Ты говоришь: решения были коллективными. А сейчас добровольно ставишь своё имя рядом со старой логикой и начинаешь менять материалы. Юрист Градовой сделает из этого подарок.

— Я не ставлю своё имя. Я возвращаю имя Нины.

На линии стало тихо.

— Какое имя Нины?

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

— Её не было на слайде.

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

— Потому что увидел файл.

— Ты видел его сотню раз.

— Сейчас увидел.

Марк снова отвлёкся, кому-то написал и вернулся к разговору уже тише:

— Если хочешь исправить, сначала поговори с ней.

— Чтобы спросить разрешение признать то, что я сделал?

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

Антон хотел ответить, что задание лишь совпало с документом. Что карточка не назвала Нину. Что он сам соединил пустую строку с её таблицей. Всё это было правдой и потому особенно походило на оправдание.

— Я не буду требовать ответа, — сказал он.

— Это не то же самое, что не требовать участия.

— Тогда что ты предлагаешь?

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

— Чёрная карточка сказала почти то же самое.

— Нет, — отрезал Марк. — Я сказал. Карточка собрала старую фразу из вашей таблицы. Не делай из неё третьего человека в разговоре.

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

Он удалил из формы слова «техническая ошибка». Не потому, что Марк приказал. Технической ошибки не было. Презентация работала именно так, как он хотел: собирала исследование, решение и голос в одного докладчика.

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

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

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

Личный адрес в карточке сотрудника был скрыт. Оставался старый корпоративный, давно отключённый. Антон мог найти Нину через знакомых, но поиск превратил бы её в условие выполнения задания. Он открыл новый документ и написал сверху: «Исправление авторства презентации от 14 октября».

Первая версия начиналась так:

«В связи с обнаруженной технической неточностью сообщаю...»

Он стёр.

Вторая:

«В ходе проверки инцидента ИБ-390 выяснилось...»

Снова стёр. Инцидент не обнаруживал поступок. Он только открыл файл.

Третья версия получилась короче:

«Шесть лет назад я представил городскому совету презентацию “Возврат к занятости: факторы управляемого результата”. В ней исследование пользовательских отказов и принцип добровольной ветки были разработаны Ниной Соколовой. Перед выступлением я удалил её имя с видимых слайдов и не назвал её автором устно. Это было моё решение».

После последней точки Антон долго не двигался.

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

Он продолжил:

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

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

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

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

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

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

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

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

— Нашёл где?

— В материалах внутреннего инцидента.

— Какого ещё инцидента?

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

— И что вы хотите сделать с презентацией?

— Исправить архив и уведомить тех, кто её получил.

— Не делайте этого сегодня.

— Почему именно сегодня?

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

— Если я тихо заменю файл?

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

— То есть признать только там, где признание полезно делу?

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

— Если письмо уйдёт, вы откажетесь от дела?

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

— Я знаю.

— Тогда пришлите документы и ничего не отправляйте до моего ответа.

Разговор закончился. Антон положил телефон экраном вниз.

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

Линия была верной. И неполной.

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

Он открыл карточку «Ноля».

«Исправьте одно присвоенное решение там, где его видели».

Под заданием была ссылка «Почему это действие доступно». Антон нажал.

«Условие ветки: пользователь сообщил о собственном вкладе в решение; связанный материал подтверждён внешним событием; в локальном отчёте отмечена неучтённая цена раскрытия».

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

Антон изменил срок с девятнадцати ноль-ноль на «без срока».

Карточка приняла правку.

Он мог отказаться. Мог дождаться Кочетова. Мог месяц обсуждать точную формулировку и всё это время считать, что действует осмотрительно. Право на отказ оставалось настоящим; именно его Нина когда-то настояла измерять. Но сейчас отсрочка защищала не её.

Антон нажал «Принять».

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

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

В теме стояло: «Исправление авторства к материалам заседания».

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

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

Курсор остановился над «Отправить».

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

Антон добавил абзац:

«Прошу не обращаться к Нине Соколовой от моего имени и не считать её участницей моего трудового спора либо инцидента ИБ-390. Настоящее исправление касается моего действия и архивной записи. Решение о любом ответе принадлежит ей».

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

Он нажал «Отправить».

Письмо исчезло из черновиков. Архив присвоил корректировке номер АР-1176. Через минуту пришла автоматическая квитанция секретариата. Ещё через три — уведомление, что исходная версия сохранена как историческая, исправленная ожидает проверки хранителем, а заявление докладчика уже приложено к карточке заседания.

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

В одиннадцать семнадцать позвонил Кочетов.

— Вы отправили письмо?

— Да.

— Мне только что переслали из юридического отдела «Шанса». Быстро работаете.

— Что они пишут?

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

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

— Компенсация?

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

— Её и не было.

— В суде простота — не недостаток. Вы понимаете, что сейчас сделали?

— Исправил ложную запись.

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

— Да.

Кочетов помолчал.

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

— Пришлю.

— И больше никаких писем без звонка.

— Обещать не буду.

— Хотя бы звоните до, а не после.

На этом они закончили.

Карточка «Ноля» не закрылась после квитанции. Сценарию было недостаточно нажатой кнопки: требовалось последствие. Антон открыл отчёт и записал факты.

«Исправленная версия зарегистрирована как АР-1176. Заявление приложено к карточке заседания и направлено прежним получателям. Досудебное предложение о восстановлении отозвано до оценки новых обстоятельств».

В поле предполагаемой цены он написал: «Ослабление трудового спора, возможные требования по авторству, возвращение Нины в нежелательный для неё разговор».

В поле неучтённой цены: «Предложение о восстановлении уже существовало, хотя я о нём не знал».

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

После сохранения рейтинг «Шанса» не изменился. На месте цифры девять появился серый значок: «Показатель временно не рассчитывается из-за проверки данных».

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

В полдень пришёл ответ Градовой.

«Получила. До завершения внутренней проверки воздержусь от оценки содержания. Архивное исправление и трудовой спор будут рассматриваться раздельно».

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

Через десять минут написал Марк: «Видел письмо. Нина не в рассылке. Правильно».

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

Он удалил сообщение.

В четырнадцать ноль пять архив подтвердил корректировку. На публичной карточке заседания под презентацией появилась строка: «Авторство исследовательской части и дизайна добровольной ветки исправлено заявлением докладчика от текущей даты: Нина Соколова». Исходный файл оставался доступен в истории версий.

Антон сделал снимок не экрана, а номера записи — переписал АР-1176 в блокнот. Рядом с «Поражением № 1» добавил:

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

Ниже:

«Исправление не возвращает Нине шесть лет и не создаёт обязанности принять его».

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

В шестнадцать тридцать семь чёрная карточка обновилась.

«Последствие подтверждено».

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

Следующее действие не открылось. Вместо него появилось уведомление:

«Для продолжения доступна очная групповая сверка. Отказ от участия сохраняет маршрут».

Адрес — Центр повторного старта. Время — завтра, одиннадцать утра. Ведущая — Ольга Левина. Число участников не указано.

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

Он закрыл карточку, не выбирая.

В обычном кабинете «Шанса» серый значок всё ещё заменял рейтинг. Ни семь, ни шесть, ни девять процентов. Просто признанная пауза в вычислении.

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

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

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

Антон выбрал «Принять».

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

Глава 4. Отказ считается

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

«Участник вправе не объяснять причину отказа».

Буквы были напечатаны на обычном листе, нижний угол отклеился и загибался от сквозняка. Рядом висела новая синяя табличка «Шанса»: «Активность приближает вас к работе». На ней отказов не существовало даже грамматически.

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

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

— Я только хотел проверить версию клиента.

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

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

— И чужие экраны вы не читаете, — добавила Ольга.

— Я не читаю.

— Уже читаете.

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

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

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

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

Вера посмотрела на Антона.

— А он?

— Антон участвует на тех же условиях.

— На сайте было, что он вашу программу уронил.

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

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

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

— То есть у вас здесь производственная практика? — спросила Вера.

— Нет.

— Тогда что?

— У меня рейтинг был шесть процентов. Сейчас его не считают.

Вера оглядела его так, словно решала, можно ли считать это ответом.

— Ладно. У меня вчера было сорок три. Сегодня тридцать один.

Ольга поставила папку на стол.

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

— Для «Шанса» одно, — сказала Вера.

— Поэтому вы принесли уведомление?

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

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

Она произнесла последнюю фразу без улыбки.

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

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

Слава достал мобильник. На его экране была обычная бело-синяя лента «Шанса».

— У меня старой штуки нет. Только это.

— Тогда разбираем без неё, — ответила Ольга.

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

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

— Вот, — сказала она Ольге. — У меня это появилось позавчера. Я думала, мошенники. Но оно знало номер направления из Центра.

Ольга не взяла устройство в руки.

— Покажите экран группе, только если согласны.

Вера развернула телефон. На карточке было написано:

«До пятницы подтвердите готовность выйти на пробную смену и заранее сообщите работодателю об ограничении по вечернему времени».

Ниже стояло: «Отказ сохраняет маршрут».

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

— Я сказала, — ответила Вера. — Они перенесли пробную смену на утро. Только работа всё равно вечерняя.

— Тогда зачем пробоваться?

— Вот и я спросила.

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

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

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

— А почему рискованное? — спросил Слава. — Просто смена.

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

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

Слава кивнул и закрыл стакан крышкой.

— Тогда да.

— Что «да»?

— Тогда рискованное.

Ольга указала на второе поле.

— Какое решение вы приняли?

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

— Это условный отказ, — сказал Антон.

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

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

Антон опустил ручку.

— Хорошо.

— Не хорошо. Просто точно.

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

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

— А с разрешением уже собрались?

— Нет.

— Вот это и запишите себе.

Он ничего не записал.

Ольга спросила:

— Какое последствие уже наступило?

Вера перевернула второй лист. Уведомление «Шанса» было отправлено сегодня в семь сорок две.

«Рекомендованное действие не подтверждено. Индекс взаимодействия снижен. Часть вакансий с ускоренным оформлением временно недоступна. Для восстановления доступа выполните два действия индивидуального плана либо обратитесь к консультанту».

Рейтинг изменился с сорока трёх до тридцати одного процента. Под числом появилась строка: «Низкая готовность к сотрудничеству».

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

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

— Можно посмотреть идентификатор события внизу?

— Зачем?

— Чтобы понять, какое правило сработало.

— А если поймёте?

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

— И вернуть вакансии?

— Не знаю.

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

— Тогда смотрите. Только не забирайте.

Внизу мелким серым шрифтом стояло `PLANACTIONDECLINED / COOPERATION_INDEX -12`. Антон прочитал дважды. В старом словаре событий не было `DECLINED` как отрицательного результата. Были `COMPLETED`, `REFUSED`, `EXPIRED`. Отказ `REFUSED` завершал ветку без изменения доступности; просрочка `EXPIRED` могла открыть повторное предложение, но тоже не влияла на прогноз трудоустройства. По крайней мере, так было в спецификации, которую он помнил.

— Это не тот код, — сказал он.

— Какой не тот? — спросила Вера.

— Не старого сценария. В «Ноле» отказ назывался `REFUSED`. Он был результатом, не нарушением.

— Вера показывала карточку «Ноля», — напомнила Ольга. — А уведомление пришло из «Шанса».

— Да. Они оба получили одно решение и записали его по-разному.

Слава посмотрел с одного телефона на другой.

— Как два банка, где в одном платёж прошёл, а в другом ты должник?

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

— И вы этого не знали? — спросила Вера.

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

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

— Это как?

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

— Потому что не подумали?

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

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

— Кому вам?

— Команде платформы. Мне в том числе.

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

— Понятно.

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

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

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

— За эти три дня объявления вернутся?

— Не автоматически.

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

— От заказов вы не отказались, — уточнила Ольга.

— Потому что от смены отказалась.

Она взяла ручку и заполнила третье поле: «Снижение рейтинга на 12 пунктов; скрыты 9 карточек вакансий; сохранены 2 оплачиваемых заказа; не пришлось обещать график, который не могу соблюдать». Подумала и добавила: «Работодатель потерял кандидата с подходящей квалификацией».

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

— Это тоже проверяется, — сказал он.

Вера подняла глаза.

— Что именно?

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

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

— Не надо. Это я опять…

— Делаете из моего дня задачу для своей модели.

— Да.

Он произнёс это без добавления «но». Вера кивнула один раз, принимая не извинение, а остановку.

Слава вернулся без кофе.

— Автомат сдачу съел. Отказался сотрудничать со мной.

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

Ольга попросила Веру открыть карточку «Ноля» и выбрать решение. Чёрный экран предлагал те же три исхода. Вера нажала «Отказ».

Появилось поле: «Причина — по желанию». Она оставила его пустым.

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

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

— Карточек, — ответил Антон.

Она исправила слово. Затем выбрала хранение «только на устройстве» и нажала «Завершить».

Карточка погасла на секунду. Антон ожидал появления следующего задания, но увидел белую строку:

«Отказ принят. Последствие записано. Маршрут сохранён без изменения».

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

Вера открыла её.

`OUTCOME: REFUSED`

`ROUTE_PENALTY: 0`

`NEXTACTION: NOTREQUESTED`

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

Антон попросил разрешения переписать три технические строки.

— Для чего? — спросила Вера.

— Сопоставить с уведомлением «Шанса» в официальном обращении. Без вашего имени, номера направления и содержания вакансии.

— А моё снижение рейтинга?

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

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

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

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

— Согласна.

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

Обращение получило номер ЦПС-2241.

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

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

— Если `ROUTEPENALTY` равен нулю, а `COOPERATIONINDEX` минус двенадцать, семантика явно…

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

Вера застегнула папку.

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

Антон вычеркнул формулировку. Сообщение стало короче:

«При фиксации отказа от одного рекомендованного действия старый сценарий зарегистрировал `REFUSED` со штрафом маршрута 0. Действующая платформа зарегистрировала `PLANACTIONDECLINED`, снизила индекс взаимодействия на 12 пунктов и ограничила доступ к части карточек. Просим указать версии правил, правовое и продуктовое основание изменения доступности, а также процедуру восстановления показа вакансий».

Вера прочитала текст на экране Ольги.

— Добавьте: отказ был сделан до срока, не просрочен.

Добавили. Она подписала отдельное согласие на передачу только этих технических сведений. Ольга отправила запрос в поддержку и городской отдел сопровождения. Номер — ЦПС-2242.

— Теперь моя встреча закончена? — спросила Вера.

— Если вы хотите.

— Хочу.

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

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

— Пришлю, — сказала Ольга.

Вера посмотрела на Антона.

— А вы не чините мой рейтинг без меня. Даже если сможете.

— Не буду.

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

— Тогда не обещаю быстро.

— Вот и договорились.

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

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

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

Антон посмотрел на уведомление Веры, которого уже не было на столе.

— В нынешнем правиле — да.

— Очень воспитательно.

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

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

— Мне нужен доступ к журналу версий, — сказал Антон.

— Вам нужен или проверке?

— Проверке. По коду события можно найти дату, когда `REFUSED` заменили на `DECLINED`.

— Вы всё ещё не сотрудник «Шанса».

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

— Можете. И получите ответ по процедуре.

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

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

Антон посмотрел на неё.

— Вы давно это умеете?

— Я умею не отдавать вам чужую историю в обмен на обещание всё исправить.

Телефон Ольги подал короткий сигнал. Квитанция пришла. В ней запрос классифицировали как «жалоба на персональную рекомендацию».

— Уже сузили, — сказал Антон. — Мы спрашивали о правиле доступа.

— Значит, оспорим классификацию.

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

— Отправлять? — спросила Ольга.

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

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

Ольга перечитала подписанный лист и отправила.

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

Антон открыл свою карточку и выбрал «Выполнено» для вчерашнего исправления. В поле последствия уже стояли два подтверждения. После завершения появился тот же текст: «Исход принят. Маршрут сохранён без изменения».

— У меня тоже ноль штрафа, — сказал он.

— А вы ожидали награду?

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

Он открыл технические сведения. `OUTCOME: COMPLETED`, `ROUTE_PENALTY: 0`. Выполнение и отказ действительно были равными выходами в смысле доступа к следующей ветке. Не равными по последствиям, не одинаково полезными и не морально взаимозаменяемыми. Просто ни один не превращал человека в менее достойного следующего выбора.

Обычный «Шанс» тем временем обновил серый экран Антона. Вместо рейтинга появилось уведомление: «Для продолжения персонального плана подтвердите участие в рекомендованных действиях Центра». Две кнопки: «Подтверждаю» и «Напомнить позже». Отказа не было.

Он показал экран Ольге.

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

— Достаточно для начала.

— Для начала чего?

Антон хотел сказать: расследования. Потом — разоблачения. Оба слова немедленно ставили его в центр и обещали итог, которого ещё не было.

— Запроса моей документации, — сказал он. — Спецификации добровольной ветки, таблицы событий и решений об изменениях. Через официальный канал ИБ-390. С указанием ЦПС-2242, если Вера не отзовёт согласие.

— Так точнее.

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

Ольга прочла только ту часть, где упоминался Центр.

— Номер обращения можно. Моё имя не нужно.

Антон убрал его и отправил запрос в ИБ-390.

Автоматическая квитанция пришла сразу: «Материалы добавлены к инциденту. Срок первичной оценки — один рабочий день».

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

«Групповая сверка завершена; зарегистрировано расхождение исходов; пользователь запросил документацию через внешний канал».

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

Текст действия был коротким:

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

Срок — завтра, двадцать ноль-ноль. Под кнопками «Принять» и «Отказаться» стояло: «Оба исхода сохраняют маршрут».

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

Он не нажал «Принять» сразу.

— Завтра у вас есть групповое занятие? — спросил он.

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

— Не чинить без неё.

— И не делать её обязательной участницей вашего следующего шага.

Антон открыл описание поисковой сессии. Можно было прийти одному, использовать публичные доски, городской реестр работодателей и бумажные объявления Центра. Участие не влияло на рейтинг.

Он выбрал «Принять».

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

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

— Число можно не открывать.

— Но фильтр всё равно сработает.

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

Антон записал три столбца на обороте своего листа.

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

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

Он убрал лист в блокнот рядом с записью об АР-1176. Не назвал Веру примером, не записал её фамилию, которой не знал, и не стал формулировать за неё итог.

Написал только:

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

Ниже добавил:

«До решения — один день искать варианты, которых рейтинг не показывает».

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

Он впервые не стал ждать результата.

Глава 5. Один день без рейтинга

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

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

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

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

Перед ним лежал лист с тремя столбцами: «Лента», «Реестр», «Человек». Вверху он записал время — 10:03 — и номер выгрузки публичного реестра, который Ольга мелом вывела на доске. Рядом оставил пустое место для условий поиска.

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

— Я на сорок минут. Потом заказ.

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

— Не хочу.

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

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

— Да, — сказал Антон. — Нужны только вакансии, которые вы сами решите проверить.

— И мой телефон у вас в таблице не появится.

— Не появится.

Слава кивнул на его три столбца.

— А я?

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

— Только источники и карточки. Без имени.

— Тогда ладно.

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

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

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

Антон услышал в её интонации вчерашнее «это вывод» и не стал возражать.

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

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

Антон нашёл письмо за девять вечера. Тема обещала: «Пять возможностей с наилучшим шансом». Внутри было четыре карточки и пятая строка: «Доступна после подтверждения плана». Он сохранил номера без названий работодателей: 88104, 87963, 87811, 87540. Диапазон оплаты был указан только в двух. Одна вакансия требовала опыт настройки рекламных кабинетов, другая называла аналитиком человека, который должен был обзванивать торговые точки и заносить ответы в форму. Третья находилась в соседнем районе, но предполагала три пересадки и ночные дежурства. Четвёртая подходила по задачам, однако в обязательных требованиях стояло: «непрерывный стаж в продуктовой команде за последние двенадцать месяцев».

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

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

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

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

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

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

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

В персональной ленте карточки не было.

— Нашёл сокровище? — спросил Слава.

— Нашёл вакансию, которую мне не показали.

— Мне половину города не показывают. Это не сокровище, это интернет.

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

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

— Почему?

— Некому будет тратить.

Ольга услышала и подошла.

— Для сравнения запишите гарантированную часть и условия бонуса отдельно.

— Я ничего не записываю, — сказал Слава.

— Можете не записывать. Я предлагаю способ не перепутать обещание со ставкой.

Слава помолчал, потом взял из коробки карандаш и провёл на обороте рекламного листка две колонки: «точно» и «если повезёт».

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

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

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

В одиннадцать без десяти Слава отодвинул телефон.

— В реестре двадцать девять. Нормальных четыре. В ленте нормальных две, одна та же. И что?

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

— Чтобы после смены платили, — ответил Слава.

— Это требование. Какое ограничение?

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

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

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

— Почему этого нет в реестре? — спросил Антон.

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

— Хочу, — сказал Слава. — Только это завтра?

— Завтра.

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

— В четыре ровно не отпустят.

— Здесь написано до четырёх.

— Написано. А последнюю доставку дадут в три пятьдесят.

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

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

Ольга поблагодарила и завершила звонок.

— Вот вам человеческая рекомендация, — сказал он. — Тоже мимо.

— Зато до согласия, — заметила Ольга.

Слава посмотрел на объявление и дописал в колонке «точно»: «не до 16».

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

— Мы договаривались без меня.

— Только источник и результат проверки.

— Результат мой.

Антон поднял карандаш.

— Тогда не вношу.

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

— Можете написать, что человек спросил до выхода. Без карточки.

Антон записал именно это.

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

— У меня двадцать пять минут. Ответ по жалобе есть?

— Только квитанция. Категорию исправили на «доступ к предложениям после отказа». Текста решения нет.

— Хорошо. Я хочу проверить исчезнувшие карточки. Не участвовать в его задании.

Антон услышал, но не вмешался.

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

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

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

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

— Она появилась вечером. Я сохранила, утром собиралась. А утром её уже не было в ленте.

Антон подошёл только когда Вера сама повернула к нему экран.

— Смотрите номер. Только номер и условия. Моё обращение к ней не привязывать.

— Понял.

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

— Можно открыть технические сведения вашей ленты? — спросил Антон.

— Нет. Сначала я звоню.

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

Вера посмотрела на календарь в телефоне.

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

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

Никто не поздравил. Ольга спросила:

— Хотите, чтобы я внесла встречу в ваш план?

— Нет. Пока нет. Если понадобится подтверждение для проезда, скажу отдельно.

— Хорошо.

Вера убрала телефон и только тогда открыла технические сведения персональной выдачи. В истории карточки 88056 стояли три строки. Вчера в 20:41: `ELIGIBLE / RANK 11`. Сегодня в 08:17: `SUPPRESSED / COOPERATIONTHRESHOLD`. В 08:18: `LISTREBUILT / 19 ITEMS`.

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

— Я не разрешала копировать.

— Я и не сфотографировал.

— Но собирались.

— Да.

Она подождала продолжения.

— Мне нужен этот код для ИБ-390, — сказал Антон. — Но это ваша запись. Если не разрешите, я укажу только публичную карточку и общий механизм из вчерашнего обращения.

— Что изменится для меня, если разрешу?

Ольга не ответила за него.

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

— А собеседование?

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

— «Вероятно» и «если». Уже лучше, чем быстрое обещание.

Вера достала из сумки ручку.

— Напишите, что именно просите.

Ольга открыла форму дополнительного согласия к ЦПС-2242. Они указали три поля: номер публичной вакансии, обезличенные коды изменения доступности, время перестроения списка. Запретили передавать название работодателя, контакт Веры и сведения о собеседовании. Срок использования — до закрытия обращений ЦПС-2241 и ИБ-390. Отдельно вписали право отозвать согласие до передачи следующему подразделению.

Вера прочла и подписала.

— Теперь можете переписать. Экран не фотографировать.

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

— Это и есть доказательство? — спросил Слава.

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

— Для этой карточки и этой выдачи — да, — сказал Антон. — Не для всех вакансий и не для всех людей.

— То есть она сказала «нет» одной бесплатной работе, и от неё спрятали другую, платную?

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

— Очень длинный способ сказать «да».

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

Слава усмехнулся.

— Вы даже злитесь таблицей.

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

Вера застегнула сумку.

— Мне пора. Код используйте только как записано. Если до двух придёт ответ, перешлите текст. После собеседования я сама решу, сообщать ли результат.

— Хорошо, — сказала Ольга.

Антон спросил:

— Вы хотите копию таблицы сравнения?

— Только мою строку и пояснение кодов. Остальные люди мне не нужны.

— Сделаю через Ольгу.

— Через Ольгу.

Она ушла так же быстро, как пришла. За окном Вера остановилась у перехода, проверила сообщение с адресом типографии и не открыла приложение «Шанс».

Слава посмотрел ей вслед, потом на время.

— Я опоздал на заказ на три минуты.

— Можете уйти, — сказала Ольга.

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

— Иногда.

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

Ольга записала условия на отдельном листе.

— До какого времени готовы работать?

— Если рядом с вокзалом — до половины шестого. Если дальше — до пяти.

— Минимальная сумма?

Слава назвал её после паузы. Она была выше обычной половины смены.

— За короткий день таких предложений мало.

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

— Хорошо. Контакт можно передать работодателю или только вам?

— Только мне. Сначала я решу.

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

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

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

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

— Запоминаю задачу.

— Это его запрос ко мне.

— Он спросил «вы умеете», глядя на нас обоих.

— Тогда уточните у него, включает ли это вас. Не превращайте множественное число в согласие.

Антон достал телефон, но Слава уже ехал на заказ. Писать без необходимости он не стал.

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

Ольга составила итог без имён:

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

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

— А к ИБ-390?

— После регистрации приложения. Не забирайте черновик.

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

Он уже нашёл.

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

— Вы будете откликаться? — спросила Ольга.

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

— Для кого?

— Для «Ноля». Для меня.

— А если не откликнетесь?

— Тогда я сохраню чистоту наблюдения.

Ольга сложила общий протокол в папку.

— Вакансия закрывается через пять дней. Чистота наблюдения вам ответит?

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

Раньше он назвал бы её неподходящей по уровню. «Шанс», вероятно, назвал неподходящей по вероятности закрепления. Оба ответа позволяли не проверять реальный выбор.

— Откликнусь не через платформу, — сказал Антон.

— Почему?

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

— Это можно написать работодателю одной фразой, без манифеста.

— Я не собирался писать манифест.

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

— Уже собирались.

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

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

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

— Я не проверяю ваши отклики, — сказала она.

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

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

— Этого достаточно.

Он отправил форму в 12:26. На почту пришла квитанция с номером ПР-1884. Никакого обещания собеседования, только срок ответа — три рабочих дня.

Антон внес номер в столбец «Реестр» и впервые за день открыл «Ноль». Чёрная карточка не спрашивала, нашёл ли он лучшую работу. В ней были три поля:

«Что стало видимым без персонального рейтинга?»

«Что пришлось искать самостоятельно?»

«Какое решение принято человеком?»

Он написал: «В публичном реестре найдена активная вакансия, отсутствовавшая во вчерашней персональной ленте. Причина отсутствия в моём случае не установлена. Самостоятельно проверены требования, первичный источник и способ отклика. Я решил отправить резюме через открытый канал; подтверждение ПР-1884. Результат неизвестен».

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

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

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

— День ещё не закончился, — сказала Ольга.

— Задание выполнено.

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

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

Именно так он когда-то относился к проверке последствий после запуска модели.

— Что нужно? — спросил он.

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

Они потратили сорок минут. Антон дважды пытался написать «порог управляемости», но в коде стояло `COOPERATION_THRESHOLD`, а документа с определением ещё не было. В окончательной версии осталось: «Карточка была доступна и занимала одиннадцатую позицию; после изменения индекса получила системный статус скрытия с указанием порога сотрудничества; затем список перестроен до девятнадцати позиций». Ни причины изменения порога, ни законности решения они не утверждали.

Ольга отправила текст Вере. Та ответила одним словом: «Получила».

Общий протокол зарегистрировали как приложение ЦПС-2242-1. В ИБ-390 Антон направил ссылку на него и отдельную выписку в пределах согласия. Автоматический ответ сообщил: «Запрошены правила формирования доступного множества и журнал изменения порогов».

Это было меньше разоблачения и больше, чем подозрение.

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

— По ЦПС-2241 временно вернули девять карточек до рассмотрения жалобы. Это не решение по существу. Вере отправят уведомление.

— Все девять? — спросил Антон.

— Да. Включая закрытые, если список восстановили снимком. Поэтому это ещё не исправление.

— Но типография снова появится.

— Она уже нашла её сама.

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

В 14:18 пришло ещё одно сообщение — теперь от Славы, на общий номер Центра: «Если предложение на завтра будет, Антон тоже может смотреть. Решение всё равно моё. До 17:30 у вокзала, не ниже суммы, без тяжёлого».

Ольга показала экран.

— Теперь включает вас.

Антон перечитал условия. В публичном реестре утром была вакансия инвентаризатора в магазине у вокзала: с десяти до пяти, фиксированная оплата, сверка остатков ручным сканером. Он тогда отфильтровал её как не относящуюся к своему поиску. Для Славы она могла подойти.

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

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

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

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

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

Антон написал Славе: «Есть смена завтра 10:00–17:00 у вокзала, сумма подходит, тяжёлые грузы не указаны. Но обязательный инструктаж сегодня 17:30, при отказе от смены его не оплачивают. Прислать контакт?»

Ответ пришёл через минуту: «Сегодня заказ до 19. Сколько потеряю, если отменю?»

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

Слава ответил: «Уточните. За меня не соглашайтесь».

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

Он передал ответ Славе.

Тот долго не писал. Потом пришло: «Тогда нет. За сегодняшний заказ получу почти половину завтрашней суммы. И клиент постоянный. Ищите другое, если будет. Это не записывать в план».

— Отказался, — сказал Антон.

— Вы удивлены? — спросила Ольга.

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

— А жизнь началась сегодня.

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

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

В 15:42 Вера прислала Ольге сообщение: «На собеседовании была. Тестовое беру только после договора на оплату, они согласились прислать. Результат сообщу сама, когда будет». Ни благодарности, ни оценки «Шанса».

Ольга показала Антону только первую фразу — Вера заранее разрешила сообщить факт состоявшейся встречи. Остальное оставила на своём экране.

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

— Для кого? — спросила Ольга.

— Для меня — я нашёл вакансию и отправил отклик. Вера нашла свою сама. Слава проверил варианты и от двух отказался до выхода. Три разных результата.

— И ни одного трудоустройства.

— Пока.

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

Прогноз экономил время не только сортировкой. В одном доказанном случае он экономил его, заранее убрав вариант от человека, которого счёл недостаточно сотрудничающим.

Антон написал внизу:

«Скрытие — тоже решение. Удобство интерфейса не отменяет автора порога».

Потом добавил:

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

В 16:03 электронная почта подала сигнал. Перевозчик сообщил, что отклик ПР-1884 принят к рассмотрению и попросил выполнить короткое тестовое задание до завтрашнего полудня: на наборе из двадцати маршрутов выбрать изменение, которое улучшит среднее ожидание, не увеличив число сорванных пересадок. На работу давалось два часа; оплата тестового не предусматривалась.

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

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

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

Он не нажал ни одну.

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

Отправил их работодателю вместо согласия.

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

— Могу.

— И что запишете в отчёт?

Антон посмотрел на чёрную карточку. Внешнее последствие всё ещё ожидалось.

— Пока ничего. Я не выполнил тест и не отказался. Я уточнил цену.

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

Ольга подняла плакат, но обратно вешать не стала.

Телефон Антона завибрировал. «Ноль» получил внешнее событие: отклик принят, запрошено тестовое. Под строкой ожидания появилась новая карточка:

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

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

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

Он нажал «Принять» только после того, как переписал на бумагу две отдельные строки:

«Цена моего тестового — два часа и право на результат».

«Цена чужого совета определяется не мной».

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

Антон открыл открытый поиск.

Не чтобы найти Славе правильный ответ.

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

Глава 6. Цена точного совета

В половине девятого утра Слава прислал не приветствие, а фотографию экрана.

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

Следом пришло сообщение:

«Нужно 6400 чистыми до 21:00. Почему — не для плана. Могу работать до восьми, если у вокзала. После восьми уже смысла нет».

Антон перечитал дважды. Вчера Слава просил смену до половины шестого и отказался терять постоянного клиента ради неоплачиваемого инструктажа. Сегодня граница сдвинулась. Изменились не предпочтения, а задача, но разница между ними легко помещалась в одно поле фильтра: доступен до двадцати часов.

Антон набрал: «Можно искать две смены подряд?»

Ответ появился почти сразу:

«Можно. Только считайте дорогу и что реально заплатят сегодня. Не обещайте никому от моего имени».

Антон положил телефон рядом с блокнотом. На верхней странице со вчера остались две строки о цене. Под ними он написал:

«Цель: 6400 на руках до 21:00».

Потом добавил:

«Причина цели не требуется».

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

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

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

— Тогда уберите экран.

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

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

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

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

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

Слава написал: без тяжёлого.

Формально восемнадцать килограммов можно было не считать тяжёлым грузом. Вчерашняя вакансия тоже не обещала тяжёлых работ — пока администратор не произнесла слово «инструктаж». Антон позвонил в магазин.

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

— Работник может отказаться от коробок тяжелее указанного веса?

— У нас все работают. Вы сами или за кого-то звоните?

— Уточняю условия до отклика.

— Тогда уточняйте быстрее. Место одно.

— Выплата точно сразу после четырнадцати?

— Если полный объём закроем. Если не закроем, доработаете.

— До которого часа?

— Откуда я знаю? Коробки не по расписанию кончаются.

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

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

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

Внизу стояло: «Просим подтвердить участие до 11:00».

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

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

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

Антон закрыл черновик, не сохраняя.

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

На этот раз Антон не звонил работодателям первым. Он отправил Славе номера карточек и короткую таблицу:

«Связка даёт 6700 после указанной комиссии. Первая работа 10:30–14:30, вторая 15:00–20:00. Между адресами по расписанию 22 минуты, запас 8 минут. У второй оплата только за пять завершённых доставок. Нужно проверить вес, задержки и что вы отменяете ради этих часов. Могу позвонить после вашего ответа».

Слава прислал голосовое. На заднем плане гремели колёса тележки.

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

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

Антон написал: «Тогда эта связка плохая».

Слава ответил текстом:

«Я не спрашивал, хорошая. Я спросил, даст 6400 к девяти или нет».

Антон стёр заготовленное объяснение. Вопрос действительно был другим.

«Да, если обе работы завершатся вовремя и все пять доставок примут. Но ради неё вы отказываетесь от 4300–4800 сегодня, постоянного утреннего клиента и части хороших окон на следующей неделе. Чистый прирост сегодня 1900–2400. Риск: восемь минут на пересадку и оплата второй работы только за полный маршрут».

Три минуты ответа не было.

Потом Слава написал:

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

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

— У человека следующая работа в пятнадцать, — сказал Антон.

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

— От него зависит только пересчёт своей зоны?

— От него зависит сделать всё нормально. Остальное не обсуждаю. Решайте, у меня ещё трое желающих.

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

— Если один получатель не откроет? — спросил Антон.

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

— Тогда четыре доставки — это три тысячи двести?

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

— В карточке написано «четыре тысячи после завершения».

— После завершения маршрута. Всё верно.

Цель Славы держалась на том, что пять незнакомых людей вовремя откроют двери.

Антон сообщил условия. Слава перезвонил сам.

— Берём, — сказал он.

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

— Я услышал.

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

— Я умею складывать.

— Тогда почему не взять их и найти короткий заказ на разницу?

В трубке шум прекратился. Слава, вероятно, отошёл от тележки.

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

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

— Понял, — сказал Антон. — Подтверждать обе карточки?

— Киоск подтверждайте. На цветы я сам позвоню. Там мои пять адресов, не ваши.

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

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

— Что вы ему посоветовали? — спросила Ольга.

— Ничего. Посчитал варианты и позвонил туда, куда он разрешил.

— А фраза «эта связка плохая»?

Антон посмотрел на неё.

— Он переслал вам?

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

Антон провёл линию через слово «плохая» в блокноте.

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

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

— Причину он не сообщает.

— Значит, вы считаете без неё. Не заменяете её своей.

В 10:57 Антон открыл письмо перевозчика. До окончания срока оставалось три минуты. Он нажал «Отказаться от участия» и в поле причины написал: «Условия допускают использование производных решения вне оценки кандидата без компенсации и без возможности подтвердить удаление». Отправил.

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

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

«Ноль» оставался без отчёта.

В 10:24 Слава прислал фотографию бумажного допуска на инвентаризацию. На снимке виднелся только номер и время. Постоянный заказ он отменил. Клиент ответил: «Сегодня найду замену, дальше посмотрим».

«Это тоже считать?» — спросил Слава.

«Да. Но передавать в общий план только с вашим разрешением».

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

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

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

В 14:28 он написал: «Если уйду сейчас, не заплатят. На склад к трём не успеваю».

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

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

«Варианты: уйти без 2700; остаться до акта и опоздать на склад; спросить склад о сдвиге; спросить киоск о частичном акте. Кому звоните вы, кому разрешаете мне?»

Слава ответил через минуту:

«Я киоску. Вы складу. Скажите: буду к 15:25, готов взять маршрут, если не снимут оплату за опоздание».

Диспетчер цветочного склада сначала отказала. Выдача начиналась всем одновременно, адреса распределяли по районам. Антон попросил не держать маршрут и не подтверждать его за Славой, а только проверить, останется ли работа к 15:25.

— Один курьер ещё не пришёл, — сказала диспетчер. — Если оба опоздают, разделим между теми, кто здесь. Обещать не буду.

— А если Слава возьмёт оставшиеся адреса, ставка будет за каждый?

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

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

Слава выслушал без перебивания.

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

— При таком варианте до шести четырёх сегодня не хватает.

— Я знаю.

— Можно уйти сейчас и сохранить исходный маршрут.

— И получить четыре, если все дома. А если нет — ноль сегодня. Нет.

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

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

В 15:46 Слава позвонил снова.

— У киоска акт закрыли. Деньги пришли. Я у вокзала через десять минут.

— Вечерняя смена занята.

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

— Правильно.

— Не говорите «правильно».

Антон закрыл глаза.

— Вы отказались в соответствии со своим условием.

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

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

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

— Присылайте.

— Решение ваше.

— Наконец-то.

Слава подтвердил работу сам.

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

В 19:52 пришло сообщение: «Закончил. Жду перевод».

В 20:03: «Пришло 3900».

И ещё через минуту — фотография банковского экрана. На этот раз Слава оставил видимой только сумму перевода: 6400. Комиссию он оплатил из оставшихся двухсот.

«Долг закрыт», — написал он.

Антон спросил: «Можно внести в отчёт, что цель достигнута?»

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

Антон составил отчёт для «Ноля»:

«Человек задал цель: 6400 рублей на руках до 21:00, не раскрывая причину. Ограничения: район вокзала, отсутствие тяжёлой работы, решения и контакты только с его согласия. Первая предложенная связка номинально давала 6700, но требовала отказаться от двух согласованных смен на 4300–4800, создавала риск потери постоянного клиента и снижения приоритета на неделю. После задержки первой работы и изменения срока выплаты второй человек отменил вторую. Он самостоятельно нашёл замену; я проверил условия по его просьбе. Итог: получено 6600, из них 6400 переведено в срок. Цена: утрачены две прежние смены, будущие заказы одного клиента не подтверждены, недельный приоритет может снизиться. Причина платежа не раскрыта и для оценки результата не требовалась».

Он добавил отдельной строкой:

«Моя первоначальная оценка “связка плохая” была попыткой заменить условие человека собственной функцией полезности. Рекомендация не была безусловно правильной: исходная связка сорвалась; достигнуть цели позволил новый вариант, найденный самим участником после явного учёта цены».

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

Только после этого Антон нажал «Завершить».

«Ноль» принял отчёт. Экран на несколько секунд стал чёрным, затем вывел три строки:

«Цель достигнута: да».

«Цена зафиксирована до оценки: да».

«Автор решения: участник».

Ни баллов, ни поздравления не появилось. Вместо следующего действия открылась ссылка на локальный файл: `defeatsarchive0`.

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

Рядом стоял счётчик: 1847 записей.

— Столько быть не может, — сказал он.

— Почему? — спросила Ольга.

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

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

На сером экране «Шанса» пришло другое уведомление: его рейтинг снова рассчитывался. После отказа от тестового прогноз трудоустройства снизился с девяти до пяти процентов. Причина была сформулирована знакомо: «Снижение активности и отказ от рекомендованного этапа отбора».

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

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

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

«Совпадение по времени не создаёт причинность».

И ниже:

«Цена решения принадлежит тому, кто её несёт».

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

Глава 7. Архив поражений

Ольга не подошла к телефону Антона.

Она придвинула свободный стул к краю стола и сказала:

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

Антон развернул аппарат. На чёрном фоне оставались имя `defeatsarchive0`, счётчик 1847 и длинная контрольная сумма. Ни списка файлов, ни кнопки предварительного просмотра. Внизу светилась строка: «Открыть локальное хранилище».

— Вы нажимали? — спросила Ольга.

— Нет. Сеть отключена после появления ссылки.

— Откуда знаете, что там рассказы?

— По имени папки из демонстрационной сборки.

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