Охотник не стреляет

- -
- 100%
- +

Глава 1. Желтая рамка
До выстрела оставалось восемь секунд. Учебная цель шла над серой водой, низко, с упрямой прямизной тестового маршрута. Ветер с залива бил по фермам дальномеров, гонял по бетону сухую соль, трепал жёлтые флажки запретной зоны. На центральном экране цель была красной меткой с коротким именем: «Сойка-6». Скорость — сто сорок. Высота — двадцать три метра. До сектора поражения — восемь секунд.
Таисия Нечаева стояла за креслом оператора. Руки в карманах серой куртки, наушник снят с одного уха, взгляд — в нижний правый край интерфейса. Там, мелким шрифтом, система выводила признаки, которые мешали расчёту стать окончательным. Боковая панель любила сомнение. Таисия за годы работы привыкла верить боковой панели сильнее.
— Захват есть, — сказал Глеб Назаров.
Глеб говорил скупо. Бывший диспетчер аварийной службы, он относился к красным меткам с уважением, к жёлтым предупреждениям — с подозрением, а к длинным инженерным объяснениям — с терпением человека, которому жизнь часто давала три секунды.
На экране вспыхнули строки:
Вероятность угрозы: 0,91.
Рекомендуемое действие: поражение.
До необратимого действия: 5 секунд.
Ответственное подтверждение: готово.
Игорь Крайнов, начальник безопасности «Гавани-9», поднялся с откидного сиденья и опёрся ладонями о край консоли. Роман Зотов поправил очки. Для него это испытание было доказательством: «Охотник» дошёл до зрелости, где машина берёт труд выбора быстрее человека.
Четыре секунды.
Три.
На центральном экране загорелась жёлтая рамка.
Глеб выдохнул коротко, зло, через зубы.
Необратимое действие заблокировано.
Причина: риск поражения гражданской метки.
Режим сомнения активирован.
Красная «Сойка-6» миновала сектор. На учебной траектории она жила ещё несколько секунд, затем ушла за край карты, целая, невредимая и, если верить протоколу, победившая защиту.
В командном модуле воздух стала тяжёлой.
— Это что сейчас было? — спросил Крайнов.
Роман повернулся к Таисии. Алгоритм вёл себя прекрасно, цель читалась чисто, все признаки сходились к поражению. И в эту стройность вмешалась чужая, таисина часть системы.
— Ложная остановка, — сказал он. — Классический случай.
Таисия вывела на боковой экран карту низких высот. Спор без данных превращался в литературу, а она работала с системами, где литература стоила металла, крови и подписей под актами. На карте красная траектория «Сойки-6» пересекала сектор; за ней, у северо-восточной границы, дрожала маленькая серая отметка.
— Глеб, увеличьте северо-восточный край зоны.
Оператор увеличил. Серая отметка раскрылась в сервисный коптер с подвешенным ремонтным блоком. Коптер шёл ниже допустимой высоты и держался рядом с мачтой радиодальномера. Под мачтой, на технической площадке, камера поймала человека в оранжевом жилете. Человек стоял согнувшись над люком, держал в зубах перчатку и смотрел вниз, в свою железную хозяйственную беду. Он сам и его коптер оказались в учебном небе без допуска.
Глеб медленно снял ладонь с панели подтверждения.
— Наряд на обслуживание должен быть закрыт, — сказал Роман. — Зона должна быть чистой.
— Зона живая, — сказала Таисия. — В этом и вся трудность.
Крайнов прищурился.
— Значит, служба допуска провалила процедуру.
— Значит, «Охотник» увидел провал процедуры до выстрела.
Роман хмыкнул.
— Мы проводили тест на поражение цели, Тая. Не на аудит хозяйственного отдела.
Таисия посмотрела на него холодно. При чужих он называл её так напрасно.
— Система защиты объекта всегда тестирует хозяйственный отдел, смену допуска, метеосводку, усталость оператора, ошибку в реестре и чужую глупость, — сказала она. — Цель — лишь самая громкая часть испытания.
Крайнов смотрел на коптер.
— Фамилия техника?
Глеб сделал запрос.
— Мартынов. Бригада радиодальномера. Наряд открыт в девять десять, закрытие ожидается в десять сорок.
— Кто пустил тест?
— Служба полигона дала чистый сектор, — сказал Глеб. — С отметкой без людей.
— Без людей, — повторил Крайнов. — А человек на мачте. Прекрасно.
Из динамика служебной связи прорезался тот самый голос:
— Диспетчер, у меня коптер дурит, держит высоту через раз. Можно мне замену аккумулятора без спуска? Ветер тут зверь.
Глеб нажал кнопку внутренней связи.
— Мартынов, замри на месте. Платформа под запретом до команды. Ты в секторе испытания.
Пауза. В динамике прозвучало осторожное, обескураженное:
— Какого испытания?
Роман закрыл глаза на одну секунду. Крайнов снял руку с консоли и резко выпрямился.
— Остановить полигонные работы. Старшего допуска ко мне. Руководителя службы реестров тоже. В журнал внести: испытание сорвано из-за нарушения режима.
— Испытание проведено, — сказала Таисия.
Крайнов обернулся.
— Цель ушла.
— Техник жив. Сервисный коптер цел. «Охотник» объяснил причину блокировки. Логи полные. Для моего раздела это успешный прогон.
Роман опёрся плечом о стойку.
— Успешный прогон, при котором ударная цель проходит сектор. Звучит как новая философия обороны.
— Защита начинается с понимания, что именно ты уничтожаешь.
— Защита начинается с уничтожения угрозы.
— Угроза — это событие в среде. Среда содержит людей.
Глеб кашлянул. Он всё ещё смотрел на мачту с Мартыновым.
— В реальном налёте у меня будет меньше времени. Я увижу красную цель, высокий риск, жёлтую рамку. Мне жать или ждать?
Таисия перевела взгляд на него.
— Вам нужен экран, который честно скажет, за что вы отвечаете.
— Мне нужна команда, которую можно выполнить.
— Команда без цены превращает оператора в подпись в конце отчёта.
Глеб усмехнулся краем рта.
— Красиво. В отчёте такие фразы любят.
— В отчёте любят фамилии. Я хочу, чтобы фамилия появлялась после понимания.
Крайнов ударил пальцем по столешнице. Звук вышел сухой.
— Хватит. При массовом налёте ваш режим сомнения можно отключить?
— Можно отключить всё, — сказала Таисия. — Датчики, сирену, медицинский блок, свет в эвакуационном зале. Полезный вопрос звучит иначе: что вы получите после отключения?
— Скорость.
— И слепоту.
Роман скрестил руки.
— Слепота — громкое слово. У системы остаются радиоканал, тепловой профиль, оптика, траектория, база угроз, прогноз ущерба. Гражданская отметка у границы сектора дала сбой приоритета. Этот сбой можно подавить коэффициентом.
— Мартынова тоже подавим коэффициентом?
— Тая.
— Роман, там человек. Он попал в зону из-за ошибки реестра. Машина увидела связь между его коптером и сектором поражения. Это смысл защиты.
— Смысл защиты — сохранить объект.
— Объект содержит людей.
— Объект содержит резервуары, связь, энергетику. Если их потерять, погибнут люди. Длинная пауза даст тот же результат.
Таисия кивнула. В этом месте Роман был прав.
— Поэтому я предлагаю режим сомнения без лекций. Три строки оператору: что подтверждает угрозу, что ей противоречит, кого заденет необратимое действие. Три строки, Роман. При любой скорости.
Крайнов отошёл к узкому окну. За стеклом низкое учебное небо висело над заливом. На мачте радиодальномера маленький оранжевый Мартынов сидел тихо, обхватив перила. Сервисный коптер болтался рядом на страховочном тросе.
— Вы оба говорите правильно, — сказал Крайнов. — Зотов хочет чистых данных. Нечаева хочет осмысленного решения. В моём объекте будут ветер, усталые люди, чужие аппараты, ремонтные бригады, дырявые реестры и команда сверху: порт держать. Сегодня ваш «Охотник» спас одного техника. Завтра такая остановка может открыть проход ударной группе.
Таисия открыла журнал блокировки. Красные и жёлтые строки легли на экран плотной, деловой прозой: время, координата, метка цели, сектор поражения, серая отметка, прогноз осколочного поля, статус гражданского канала.
— Тогда нужно учить её различать остановку и отказ, — сказала Таисия. — Остановка — лишняя задержка. Отказ — запрет на слепое действие. Сегодня был отказ.
Лина Шахова, младший аналитик, сидела у второй станции и делала вид, что работает с логами, хотя слушала каждое слово.
— Можно? — спросила Лина.
Крайнов посмотрел на неё как на источник нового осложнения.
— Говорите.
Лина вывела на экран график канала допуска.
— Метка Мартынова пришла с задержкой двадцать семь секунд. Служба допуска передала закрытие зоны, а сервисный коптер остался в активном списке техобслуживания. «Охотник» связал два противоречивых статуса: сектор чистый, аппарат присутствует. Поэтому включился режим сомнения.
Роман нахмурился.
— Откуда задержка?
— Узел синхронизации. Пакет с коптером прошёл через резервный канал, затем получил старый штамп. Для системы он выглядел как слабая гражданская метка у зоны поражения.
Крайнов тихо сказал:
— Значит, резервный канал хромает.
— Значит, объект живой, — сказала Таисия. — Он хромает всегда. Вопрос в том, видит ли это защита.
Глеб откинулся в кресле, провёл ладонью по лицу.
— Я бы ударил. По регламенту я бы подтвердил поражение. Красная цель, девяносто одна сотая, сектор чистый. Я бы ударил.
— Именно для этого и нужен честный экран, — сказала Таисия.
— Экран был честный. Просто я смотрел бы на другую строку.
— Значит, строку надо поднять выше.
Роман вздохнул.
— И загромоздить оператору основной вид ещё одним предупреждением.
Глеб повернулся к нему.
— Если предупреждение касается человека на мачте, пусть загромождает.
Роман пожал плечами. Маленькая победа, без фанфар. В командном модуле таких побед не замечали, а они и двигали проекты.
Служебная связь щёлкнула. На стеновом экране сменился канал: дежурный диспетчер порта появился в виде бледного лица, разрезанного полосами помех. За его спиной мигали карты погоды и графики эвакуации.
— «Гавань-9» для полигона. Подтверждаем штормовое предупреждение второй степени. В северной группе посёлков подтопление. С семнадцати ноль-ноль переводим спасательные платформы на аварийный режим. Запрашиваем готовность «Охотника» к смешанному трафику: спасательные аппараты, гражданские коптеры, служебные борта.
Крайнов стал другим: раздражение ушло в глубину, голос стал командным.
— Сколько аппаратов в воздухе?
— По плану тридцать два спасательных, до пятидесяти гражданских при самостоятельной эвакуации, плюс доставка медицинских контейнеров. Видимость падает. Радиошум растёт.
— Угроза внешнего воздействия?
Диспетчер помедлил.
— Служба мониторинга отмечает активность неизвестных малых платформ за дальним буем. Идентификация ведётся.
Роман посмотрел на Таисию. В этом взгляде исчезла прежняя насмешка. Там была работа.
Крайнов выключил связь и обернулся к группе.
— Полигон закрыть. Все логи испытания — в мой канал. Зотов, подготовьте оценку автономного режима для смешанного трафика. Нечаева, ваши предупреждения привести к виду, который оператор поймёт за секунду. Назаров, смену в командный зал через двадцать минут. Шахова, проверьте реестры гражданских аппаратов и резервные каналы. Каждую странность — на стол.
— Есть, — сказала Лина.
Глеб уже закрывал учебный сценарий. На центральном экране красная «Сойка-6» исчезла из списка активных целей. На её месте возникла карта настоящего порта: причалы, мачты, склады, медицинский модуль, эвакуационный зал, линии низких маршрутов. Метки двигались, пересекались, мигали, спорили друг с другом. В этом хаосе жила «Гавань-9».
Таисия задержала взгляд на строке режима сомнения. Жёлтая рамка давно погасла, но система сохранила запись:
Блокировка признана обоснованной.
Цена необратимого действия: поражение гражданской метки.
Ответственное подтверждение: отменено системой.
Отменено системой. В реальном небе такой формулировки будет мало. Кто-то захочет подпись. Кто-то скажет: времени нет. Кто-то попросит выключить жёлтую рамку ради красной цели. Кто-то назовёт сомнение слабостью, а скорость — мужеством. И все они будут по-своему правы, пока первая ошибка не получит имя.
Роман подошёл к ней сбоку.
— Ты понимаешь, что Крайнов сегодня запросит право обхода?
— Понимаю.
— Если задержка убьёт людей, — сказал Роман, — это тоже будет твоя подпись.
— Да.
Глеб поднялся из кресла.
— Командный зал через двадцать минут. Я хочу видеть вашу честную строку в основном окне. Без мелкого шрифта.
— Увидите, — сказала Таисия.
— И без умных слов.
— Три слова: кого заденет удар.
Крайнов уже шёл к выходу, отдавая распоряжения по закрытому каналу. Лина собирала логи. Роман остался у экрана с картой порта. Учебная вода за окном темнела и где-то за дальними буями двигались неизвестные малые платформы. Машина ждала данных. Люди приказа. «Гавань-9» ожидала вечера.
Таисия закрыла журнал испытания и передала файл в общий архив. В названии автоматически стояло сухое: «Прогон 14-А. Блокировка поражения». Она стёрла последнее слово и ввела другое: «Спасение».
Система запросила подтверждение изменения записи.
Таисия поставила подпись.
За стеклом командного модуля Мартынова наконец снимали с мачты. Он шёл по площадке, держась за страховочный трос, и оглядывался на учебное небо с выражением человека, который ещё не понял, как близко прошла мимо него чужая уверенность. Сервисный коптер волокли на тележке, сломанный, жалкий, спасённый.
Крайнов остановился в дверях.
— Нечаева.
— Да.
— В реальной атаке я не позволю системе останавливать поражение, если такая пауза откроет путь удару.
— И правильно.
Он нахмурился.
— Вы со мной соглашаетесь?
— Я говорю, что остановка тоже должна иметь цену. Как выстрел.
Крайнов подумал над этим недолго.
— Через двадцать минут в зале.
Дверь закрылась.
Таисия осталась перед картой «Гавани-9». На ней постепенно появлялись новые серые отметки: спасательные платформы выходили на маршруты, гражданские аппараты поднимались с крыш, служебные коптеры переносили ящики, медицинский канал запрашивал приоритет. Небо порта наполнялось жизнью, а жизнь была самым трудным объектом для защиты.
На нижней панели мигнула строка диагностического сообщения:
Режим сомнения готов к работе.
Таисия прочитала её, сняла с шеи наушник, протёрла влажную дужку рукавом и надела обратно.
Машина на полигоне выбрала тишину. Впереди было небо, где отказ от выстрела придётся доказывать с той же жёсткостью, что и приказ на поражение.
Глава 2. Кнопка без имени
Командный зал «Гавани-9» находился под портом, в бетонной складке между энергоблоком и узлом связи. Сверху жили ветер, солёная вода, краны, сирены и люди, которых сюда привезли из низовых посёлков. Внизу жили карты, каналы, протоколы и та разновидность тревоги, которая всегда связана с горячим пластиком и кофе из автомата.
Глеб Назаров сел в главное кресло, вывел перед собой боевую карту. На обзорном экране открылась «Гавань-9»: причалы, энергоблок, медицинский модуль, склады, эвакуационный зал, вышка связи, низкие маршруты спасательных аппаратов. Серые метки уже поднимались с крыш и площадок, шли к пунктам сбора, висели у посадочных зон, спорили с ветром и регламентом.
Крайнов стоял у стола совещаний. Влажная куртка на нём темнела у плеч.
— У нас сорок минут до пикового трафика, — сказал он. — Внешний мониторинг даёт подозрительные малые платформы за дальним буем. Шторм идёт к порту. Эвакуация начата. Я хочу понять, что именно ваш «Охотник» делает сам, где просит подпись и где имеет право остановить поражение.
Роман Зотов подключил планшет к боковой панели.
— Базовый режим готов. Радиоканал, акустика, тепловой профиль, оптика, траектория, прогноз ущерба. Для чистой цели система действует без оператора: подавление, увод, сетка, принудительная посадка. Поражение — по ответственному подтверждению, когда в зоне есть гражданская активность.
— Меня интересует красный протокол, — сказал Крайнов. — Массовая атака. Потеря связи. Время на решение меньше реакции оператора.
— Тогда автономный режим расширяется, — сказал Роман. — Система получает право на поражение цели при достоверности выше порога и угрозе критическому объекту.
Глеб скривился.
— Красиво звучит. Кто отвечает за порог?
— Модель, регламент и начальник смены.
— Модель в суд не вызовут.
Таисия подошла к свободной станции, открыла блок подтверждения и увеличила его до всего экрана. На сером фоне горела зелёная кнопка: «ПОДТВЕРДИТЬ».
Одна кнопка, большое слово, никакой биографии решения. Так выглядели многие катастрофы за секунду до рождения.
— Вот это нужно менять, — сказала она.
Крайнов бросил взгляд на экран.
— Кнопку?
— Имя кнопки.
— У неё есть имя.
— Нет. «Подтвердить» — это служебная вежливость. Она скрывает действие. Оператор должен видеть: подтвердить поражение, подтвердить мягкий перехват, подтвердить отказ, подтвердить риск для сектора, подтвердить обход режима сомнения. Разные поступки нельзя прятать под одним глаголом.
Глеб наклонился к экрану.
— Вот тут я с вами. В стрессовой смене слово «подтвердить» превращается в дыру. Туда падает всё.
Роман потер переносицу.
— Если расписать каждую кнопку полным юридическим языком, оператор получит договор страхования вместо интерфейса.
— Не юридическим, — сказала Таисия. — Человеческим. Три строки.
Она набрала:
Действие: поражение цели.
Цена ошибки: гражданская метка в зоне поражения.
Противоречие: акустика цели не совпадает с ударным профилем.
Глеб прочитал вслух и кивнул.
— Это можно понять.
— За сколько секунд? — спросил Роман.
— За одну, если строка на месте.
— А если целей двенадцать?
— Тогда я тем более хочу знать, где среди них человек.
Лина Шахова подняла глаза от своей станции. Перед ней шёл поток реестров: гражданские аппараты, спасательные платформы, служебные коптеры, ремонтные борта, старые маяки, новые разрешения, забытые заявки.
— Можно добавить цветовую связку, — сказала она. — Красный — угроза, жёлтый — цена ошибки, синий — мягкое действие. Оператор видит главный риск. Текст раскрывается при касании.
Роман указал стилусом на схему.
— И ещё один слой поверх боевой карты.
— Это место для моей фамилии, — сказал Глеб.
Крайнов посмотрел на оператора с интересом.
— Поясните.
— Когда я ставлю подтверждение, в журнале останется Назаров. Без строки о цене ошибки это выглядит как «Назаров согласился». А я хочу, чтобы журнал знал, с чем я согласился.
Таисия сдержанно улыбнулась. Глеб говорил её языком, хотя сам считал его лишним.
Крайнов провёл ладонью по крышке стола.
— Хорошо. Кнопки переименовать. Но у меня остаётся красный протокол. Допустим, рой идёт на энергоблок. Допустим, связь с оператором рвётся. Допустим, медицинский модуль на резервном питании. «Охотник» видит цель с достоверностью девяносто пять. В зоне нет подтверждённых гражданских меток. Он бьёт?
Роман ответил уверенно:
— Да.
Таисия открыла боковой блок.
— С оговоркой: система обязана проверить источник пустой зоны. Гражданских меток нет, или канал гражданских меток умер? Это разные состояния.
— На экране результат один, — сказал Крайнов. — Пусто.
— Для плохой системы — один. Для нашей — два. «Пусто, данные живы» и «пусто, данные потеряны».
Лина быстро внесла пометку.
— Можно вывести это как статус среды. Живая среда, неполная среда, отравленная среда.
— Отравленная? — спросил Крайнов.
Таисия повернула к нему экран с логами полигона.
— Когда данные приходят с задержкой, с чужим штампом, с удобной для модели формой, среда отравлена. В ней красная цель может быть настоящей. И ловушка тоже может быть настоящей.
Роман сухо сказал:
— Любую неопределённость можно довести до паралича.
— Любую уверенность можно довести до преступления, — сказал Глеб.
Слова вышли грубее, чем он собирался. Он отвёл взгляд к карте.
Крайнов поднял руку, отсекая спор.
— Мне нужна рабочая схема. Три состояния среды. Три типа действия. Три степени подписи. Без философского кружка.
Таисия взяла маркер и написала на прозрачной доске:
Среда живая — все каналы подтверждены, гражданские метки достоверны.
Среда неполная — часть каналов потеряна, выводы ограничены.
Среда отравлена — есть признаки подмены, задержки, ложного штампа или слишком удобных данных.
Ниже:
Мягкое действие — увод, посадка, сетка, подавление внешнего канала.
Жёсткое действие — поражение цели в безопасном секторе.
Окончательное действие — поражение при риске для людей или спасательной инфраструктуры.
И ещё ниже:
Автоматическое действие — без подписи, при живой среде и чистой цели.
Ответственное подтверждение — подпись оператора, видна цена ошибки.
Командный обход — подпись начальника объекта, причина записывается в журнал до действия.
Крайнов прочитал. На словах «командный обход» его лицо стало каменным.
— Вы хотите, чтобы я лично подписывал отключение вашего режима.
— Да.
— В момент атаки.
— В момент атаки особенно.
— Вы понимаете, что это удар по скорости управления?
— Это удар по безымянности.
Глеб тихо присвистнул. Роман покачал головой.
— Таисия, командир будет смотреть не в журнал, а в небо.
— Командир посмотрит в одну строку: «обход режима сомнения приведёт к поражению без проверки гражданских данных». Если он сочтёт это допустимым, подпись его.
Крайнов смотрел на доску. Раздражение держалось на лице крепко, но за ним работал рассудок. Он был из тех начальников, которые спорят до хрипа и слушают каждую полезную фразу.
— Ладно, — сказал он. — Командный обход — моя подпись. Но при атаке на энергоблок с временем меньше трёх секунд «Охотник» действует сам, если среда живая.
Таисия кивнула.
— Согласна.
Роман поднял брови.
— Ты согласна?
— Да. Чистая цель, живая среда, критический объект, окно меньше реакции оператора. Пусть действует.
Глеб повернулся к ней.
— Значит, вы не против автоматики.
— Я против слепой автоматики.
— На экране это различить трудно.
— Поэтому мы здесь.
Лина вдруг застыла над клавиатурой.
— Есть странность в реестре.
Все повернулись к ней с тем видом, с каким люди в командном зале поворачиваются к новому повреждению мира.
— Говорите, — сказал Крайнов.
— Гражданский канал подтянул список аппаратов, допущенных к аварийной эвакуации. Один идентификатор прошёл через резервную базу, затем получил приоритет спасательной платформы. Запись выглядит исправной, но дата обслуживания стоит завтрашним числом.



