
Полная версия
Новый рассвет. Перелом
Он помолчал и добавил уже чуть мягче:
– И да, я понимаю, что однажды за моими катушками окажется чей-то организм. Я не хочу, чтобы это произошло на «быстром переходе».
– Это уже хороший старт, – сказала Ханна.
По пункту с журналами самочувствия возражений почти не было. Только Самир предложил сделать формат максимально простым – чтобы не тратить лишнее время и не вызывать «бюрократическую аллергию». Дмитрий попросил подключить Жана.
По стоп-процедурам снова возник короткий спор: Джас переживал за злоупотребления, Алексей – за груз ответственности, Ханна – за возможность скрытого давления на инициаторов. В итоге они пришли к компромиссу: прописать не только право на стоп, но и обязательство руководства регулярно пересматривать случаи использования этой процедуры, чтобы не допустить ни давления, ни бессмысленного блокирования работы.
– Значит, – подвёл Дмитрий, – на уровне принципов мы за:
– приоритет живого;
– добровольность без «долгов»;
– поэтапность с жёстким запретом на ускоренный переход к живому;
– журналы самочувствия и психофизический мониторинг;
– формализованный стоп с защитой инициаторов.
Он посмотрел на каждого по очереди.
– Возражения по сути?
Никто не поднял руку.
– Тогда считаем, что v0.1 кодекса согласован на уровне команды, – сказал он. – Дальше Ханна и Бакари дорабатывают формулировки, Жан – протоколы журналов, а мы – учимся жить с тем, что у нас теперь есть не только lab-логи, но и этический каркас.
После совещания лаборатория вернулась к привычному ритму: графики, калибровки, короткие команды. Но что-то в воздухе изменилось.
Когда Алексей в обеденный перерыв брал очередной образец, он вдруг поймал себя на мысли, что в голове прокручивает не только технический чек-лист, но и новые пункты: «Если почувствую странное – записать. Если увижу несоответствие – сказать».
Ему было немного страшно – как человеку, которому доверили новый инструмент. Но одновременно – спокойнее.
У дверей в секцию он заметил синий стикер. Надпись на нём изменилась: к вчерашнему «План по модернизации» добавилось ровным почерком: «Кодекс до модернизации».
Он улыбнулся. Почерк Ханны он уже узнавал.
Джас, проходя мимо, тоже замедлил шаг, посмотрел на стикер и, чуть фыркнув, добавил рядом мелкую надпись: «И после тоже».
– Вот, – сказал он, когда Ханна это заметила. – Чтобы не думали, что кодекс – одноразовая штука.
– Это почти комплимент, – ответила она.
– Почти, – подтвердил он.
Во второй половине дня Ханна отправила Бакари электронный пакет: черновой кодекс с пометками, краткое резюме обсуждения и список вопросов, которые требовали юридической огранки.
Через час пришёл короткий ответ:
«Получила. Вижу живой документ, а не декларацию – это хорошо. Завтра свяжемся. Закон – это щит, но щит должен быть выкован из хорошего металла. Аминат.»
Ханна закрыла письмо и на минуту прикрыла глаза. За последние месяцы она много раз чувствовала себя одинокой в своём «нет». Сегодня это «нет» впервые обрело форму «да, но так».
Это было не окончательное решение и не гарантия от ошибок. Но было ощущение, что команда чуть повзрослела: из группы людей, которые делали что-то ради большой идеи, они начинали превращаться в сообщество, которое берёт на себя ответственность за последствия.
Она взяла блокнот, открыла чистую страницу и написала вверху:
«Кодекс Palingenesis/Aegis, рабочая заметка. День 1: команда согласилась, что у живого есть приоритет».
Под этим, чуть ниже, добавила мелко: «Теперь дело за тем, чтобы не забывать об этом в ночные смены».
Вечером, когда лаборатория опустела, Ханна прошла ещё раз вдоль рядов. Ей нравилось видеть, как в этих совсем не романтических объектах – стойках, кабелях, мониторах – живёт что-то, что может изменить очень многое. Её задача была в том, чтобы в этом «изменить» всегда оставался человек.
Она остановилась у модуля Aegis, положила ладонь на гладкий край панели и тихо, почти неслышно, произнесла:
– Подумайте о живом.
Это была её личная молитва к этому железу – и ко всем, кто с ним работал.
Где-то в логах уже формировалась новая категория записей – не только автокорреляции и τ, но и первые строки будущих журналов самочувствия. В кодексе – всего лишь v0.1. В людях – первый шаг к тому, чтобы не считать живое приложением к эксперименту.
И в этом была та самая осторожная надежда, которой она позволила себе поверить: если они успеют вырастить в себе этот кодекс раньше, чем наступит «когда-нибудь», у них будет шанс пройти через него не вслепую.
Глава 8. Архитектура
Самир любил ранние часы не за тишину – за пустой холст. В это время на экранах ещё не висели свежие логи, только застывшие графики вчерашнего дня; модули охлаждения ровно гудели, а свет от монитора казался единственным настоящим источником времени. Часы на стене могли врать, но временные метки – нет.
Он включил главный дисплей и вывел схему, которая за последние недели успела стать чем-то вроде карты страны, где они все жили: блоки «Aegis-β», «Palingenesis v0.3x», «Q-Beacon – draft». Линии связи, стрелки потоков данных, точки синхронизации. На первый взгляд – просто схема, на второй – скелет технологии, ради которой уже начали писать уставы и кодексы.
Он задержал взгляд на прямоугольнике с подписью «Palingenesis v0.4 – planned». Маленький серый блок, от которого отходили пунктирные стрелки к другим модулям. Пунктир его раздражал. Пунктир в архитектуре значил одно: «подумаем потом». А «потом» в таких системах обычно приходило либо слишком поздно, либо в самый неудобный момент.
Самир открыл новое «слойное» окно и начал перекладывать элементы, как ребёнок – детали конструктора, только вместо пластика были процессы. Внутри у него был привычный спокойный азарт: сейчас из разрозненных кусков нужно собрать живую структуру.
За его спиной послышались шаги. Голос Джаса прозвучал ещё до того, как тот вошёл:
– Опять перекраиваешь всю вселенную без согласования с богами железа?
Самир не отвлёкся от экрана:
– Вселенную – нет. Только те куски, которые у тебя сужают горлышко.
– Горлышко не у меня, – возмутился Джас, проходя внутрь. – Горлышко – у твоих фильтров. Ты видел, сколько они жрут по времени?
– Видел, – спокойно ответил Самир. – Поэтому и перекраиваю.
Он щёлкнул по экрану, и схема увеличилась. Теперь Aegis-модуль занимал левую половину дисплея: набор катушек, экранов, датчиков и управляющих контуров. Справа – блоки анализа и управления: Palingenesis, Q-модули, системы логирования.
– Смотри, – сказал он. – Сейчас у нас так:
Aegis-β → сырые данные → Palingenesis v0.3x → фильтры → автокорреляция → отчёты.
Он провёл пальцем по стрелке.
– Узкое место – на стыке «сырые данные → алгоритм». Мы гоняем слишком много мусора через сложные фильтры. Я хочу часть работы отдать железу, а не только софту.
– То есть повесить на мой Aegis ещё одну гирю, – вздохнул Джас. – А ты знаешь, что каждый новый блок – это не только красивые квадратики, но и килограммы железа, ампер и ватты?
– Знаю, – кивнул Самир. – Поэтому и пришёл рано, чтобы успеть поругаться до всех.
Он щёлкнул ещё раз. Поверх исходной схемы появилась новая, чуть отличающаяся: на линии от Aegis к Palingenesis вклинился маленький блок «Q-PreFilter».
– Я предлагаю часть предварительной фильтрации и временного усреднения вынести в отдельный модуль, привязанный к Q-Beacon. Пусть он отбрасывает заведомо бессмысленный шум до того, как данные попадут в основной алгоритм.
– То есть маленький мозг между моими катушками и твоими матрицами? – уточнил Джас. – Ещё один потенциальный источник глюков.
– Скорее хороший слуховой фильтр, – поправил Самир. – Который не пытается понимать музыку, но отсеивает фоновый шум кондиционера.
Он посмотрел на него поверх очков:
– И, кстати, твои катушки тоже должны будут кое-что сделать для алгоритма.
– Знал, что будет подвох, – вздохнул Джас.
Через двадцать минут к ним присоединился Дмитрий. Он вошёл с чашкой кофе и с тем выражением человека, который уже принял, что утро будет о спорах, а не о медитации.
– Я смотрю, вы начали без меня, – сказал он, отмечая изменённую схему на экране.
– Мы просто размечаем поле боя, – ответил Джас. – Самир хочет впаять между моим железом и его алгоритмом ещё один мозг. Я думаю, что у нас достаточно мозгов в этой комнате.
– Я хочу перераспределить нагрузку, – поправил Самир. – Сейчас Palingenesis ест слишком много, потому что на него сваливают всё: и фильтрацию, и анализ, и корреляцию.
Дмитрий подошёл ближе, вглядываясь в схему.
– Расскажите по очереди, – сказал он. – Сначала: как *сейчас*. Потом – что вы предлагаете.
Самир взял маркер и подошёл к виртуальной доске – прозрачной панели, на которую можно было проецировать схему и рисовать поверх. Этот формат он любил: было видно, где старая архитектура, а где – его вмешательство.
– Сейчас, – начал он, рисуя простую линейку блоков, – у нас Aegis-β даёт нам пачки сырых данных: временные ряды от датчиков поля, тока, напряжения, положения образца. Всё это валится в один агрегатор, потом в Palingenesis v0.3.
Он отметил блок.
– Внутри этого блока мы делаем:
– предварительную фильтрацию по частоте;
– нормализацию амплитуд;
– расчёт автокорреляции по окну τ;
– сравнение с эталонными шаблонами;
– генерацию отчёта.
Он обвёл блок в воздухе:
– Это слишком много для одного слоя. Любое изменение на входе – и нам приходится перекраивать весь алгоритм.
– А что предлагаешь? – спросил Дмитрий.
Самир переключил слой. Новая схема была похожа, но с дополнительными ветвями.
– Предлагаю трёхуровневую архитектуру:
1. Аппаратный уровень (Aegis-β → β-2)
– часть фильтрации и синхронизации делаем сразу на железе:
– вводим дополнительные Q-модули, которые обеспечивают стабильный временной шаг и базовую отбраковку шумовых участков;
– добавляем элементарные пороговые фильтры, чтобы не гонять совсем мусор.
2. Промежуточный уровень (Q-PreFilter)
– маленький, но быстрый блок, привязанный к Q-Beacon, который:
– пересинхронизирует данные по единому «маяку»;
– вычисляет простейшие статистики (средние, дисперсии);
– отметает участки, явно не содержащие полезной информации.
3. Алгоритмический уровень (Palingenesis v0.4)
– уже не занимается «выгребанием мусора», а работает по чище подготовленным данным:
– фокусируется на фазовых корреляциях;
– строит модели «эхо» и устойчивых паттернов;
– готовит материал для дальнейшей реконструкции.
– То есть, – подытожил Дмитрий, – ты хочешь, чтобы Palingenesis перестал быть свалкой всех задач и стал специализироваться на главном – работе с паттернами и корреляциями.
– Да, – подтвердил Самир. – И это позволит нам перейти от v0.3x, которая в основном считает, к v0.4, которая уже начинает *моделировать*.
Джас хмыкнул:
– Звучит красиво. Но это всё равно перекладывает часть работы на мой Aegis. Ты хочешь от меня Aegis-β-2, который не просто «снимает», а ещё и «думает».
– Не думает, – возразил Самир. – Слушает. И чётче стучит в Q-Beacon.
Дмитрий задумчиво посмотрел на схему.
– Джас, а что у нас реально по запасу по мощности и стабильности, если мы начнём вешать на Aegis-β дополнительные Q-модули и пороговые фильтры?
Инженер пожал плечами:
– Запас есть. Мы делали β с прицелом на расширение. Но любая новая цепь – это потенциальный источник шумов, резонансов и физических точек отказа. С твоими софтовыми блоками можно откатиться, здесь – нужно перетирать металл.
– И тут, – сказал Самир спокойным тоном, который у него появлялся, когда он готовился к долгому спору, – мы подходим к вопросу, где у нас на самом деле «бутылочное горлышко».
Технический спор начался не с крика, а с определений. Так, как любят люди, которые по профессии должны быть точными.
– На мой взгляд, – сказал Самир, – сейчас горлышко – в алгоритме. Мы не можем быстро проверять гипотезы, потому что каждый раз тонем в объёмах сырых данных. Любая новая идея превращается в переписывание полутора тысяч строк кода.
– На мой взгляд, – ответил Джас, – горлышко – в железе. Мы можем придумать какую угодно архитектуру, но если Aegis физически не держит стабильность под нужной нагрузкой, всё остальное – красивые схемы.
Он ткнул пальцем в блок «Aegis-β» на схеме:
– У тебя в модельках всё идеально: нет дрейфа температуры, нет микровибраций, нет паразитных полей от соседних блоков. В реальной лаборатории это всё есть. И каждый дополнительный «мини-мозг» на железе – это ещё один источник паразитики.
– Именно поэтому, – парировал Самир, – я и хочу развести уровни. Сейчас всё это сваливается в Palingenesis, и мы туда записываем не только сигналы, но и наши ошибки. Потом начинаем объяснять «эхо» железом, алгоритмами, погодой и фазой луны одновременно.
Он кивнул на Aegis:
– Если мы научим твой β-2 отдавать нам более структурированный поток, мы сможем отдельно анализировать, где физика, а где математика.
Дмитрий слушал, не вмешиваясь. Он привык, что споры между этими двоими рано или поздно давали лучший результат, чем любые совещания.
– Давайте конкретнее, – сказал он. – Джас, что тебе нужно, чтобы перейти от β к β-2 в том виде, который предлагает Самир?
Джас задумчиво посмотрел на схему и, чуть прищурившись, начал раскладывать по полочкам:
– По железу:
– дополнительный слой экранирования вокруг новых Q-модулей;
– новая разводка питания, чтобы они не садились на уже загруженные линии;
– отдельные датчики температуры и вибраций в зоне этих модулей;
– переразметка кабельных трасс, чтобы не было перекрёстных наводок.
Он вздохнул:
– По времени – месяц плотной работы с парой ночных смен и серией калибровок. По людям – нужны мои руки, руки Алексея и ещё одного техника. По нервам – много кофе.
– По алгоритмам, – сказал Самир, продолжая цепочку, – мне нужно:
– совместно с тобой определить формат данных, которые отдают эти Q-префильтры;
– задать жёсткие временные ограничения: сколько миллисекунд они могут задерживать поток;
– заложить в Palingenesis v0.4 логику, которая будет учитывать, где данные прошли через железный фильтр, а где – нет.
Он помолчал и добавил:
– И ещё: мне нужно, чтобы Оскар участвовал в проектировании архитектуры логов. Иначе мы опять получим кашу из сырых, полуобработанных и «когда-то префильтрованных» данных без понятного происхождения.
– То есть ты хочешь, чтобы я затащил в святая святых нашего железа хакера, который вчера ещё мог смотреть на нас снаружи? – уточнил Джас.
– Я хочу, чтобы человек, который понимает, как данные текут по сети и где они могут потеряться или исказиться, помог нам не сделать глупостей, – ответил Самир. – Он теперь часть команды. Либо мы это учитываем, либо потом будем смотреть расследования Маши о том, как «ошибка в логировании привела к…».
Дмитрий кивнул:
– Оскар должен быть в этой комнате, когда вы окончательно решите, как выглядит Q-PreFilter и система логов. Я приглашаю его на следующее обсуждение.
Он сделал глоток кофе и добавил:
– А теперь давайте посмотрим на это глазами людей, которые будут этим пользоваться. Архитектура – это не только блоки и линии. Это ещё и то, как Алексей в три часа ночи поймёт, куда смотреть, если что-то пойдёт не так.
Чертёж Aegis-β-2 они открыли как отдельный документ. Без формул, но с ясно обозначенными слоями.
Черновой описательный чертёж Aegis-β-2 (extract)
1. Основная структура:
– Центральная камера для образца (объём до X см³), окружённая тремя концентрическими рамами катушек.
– Внутренний слой катушек отвечает за формирование основного поля (диапазон частот f_base ± Δf).
– Средний слой – корректирующий, компенсирующий локальные неоднородности и дрейф.
– Внешний слой – экранирующий, минимизирующим влияние внешних полей.
2. Q-модули (расширение β → β-2):
– Дополнительные синхро-модули, привязанные к центральному Q-Beacon:
• обеспечивают временную метку для каждого импульса/ответа с точностью до микросекунд;
• осуществляют первичную пороговую фильтрацию по амплитуде и спектру (отбрасывают шумовые участки ниже заданного порога).
– Встроенные датчики температуры и вибрации для мониторинга стабильности работы блока.
3. Интерфейс с алгоритмическим уровнем:
– Формат выходных данных стандартизирован:
• сырые данные (по запросу);
• предварительно фильтрованные (по умолчанию для Palingenesis v0.4);
• диагностические (для анализа сбоев и дрейфов).
Примечание:
Конфигурация β-2 рассчитана на возможность дальнейшей модернизации под режимы MR без полной перестройки аппаратуры (резерв по мощности и по каналам связи).
– Кто-нибудь, кроме вас троих, поймёт это с первого раза? – спросила Ханна, появившись в дверях, когда они дочитали.
– Мы надеемся, что да, – ответил Джас. – Но если нет – будем рисовать картинки.
– Я бы попросила, – сказала она, подходя ближе, – чтобы в «интерфейсе с алгоритмическим уровнем» сразу были учтены две вещи.
Она показала на раздел 3:
– Во-первых, чтобы было чётко понятно, какой канал используется для эксперимента, а какой – только для диагностики. Во-вторых, чтобы существовал физический способ «разорвать» подачу импульсов – не только через софт.
– Ты про аппаратный стоп, – понял Джас.
– Да, – кивнула Ханна. – В кодексе, который мы приняли на прошлой неделе, были прописаны стоп-процедуры. Теперь нужно, чтобы архитектура тоже их знала.
Дмитрий улыбнулся:
– Это тот редкий случай, когда всё действительно складывается в систему.
Когда пришёл Оскар, спор между Самиром и Джасом уже оформился в набор конкретных пунктов. Он вошёл в лабораторию, как всегда, в худи и с наушниками на шее, но в этот раз – с официальным бейджем сотрудника.
– Меня вызывали? – спросил он, оглядывая схему на экране. – Вы решили, что пора добавить немного паранойи в архитектуру?
– Паранойя – это то, что мы теперь называем «архитектурой безопасности», – ответил Дмитрий. – Нам нужно, чтобы данные, которые бегут через Aegis, Q-модули и Palingenesis, были не только красивыми, но и отслеживаемыми.
Самир кратко изложил идею Q-PreFilter и трёх уровней. Оскар слушал, покачивая ногой, как человек, для которого сложные схемы – привычный ландшафт.
– То есть, – подвёл он, – у вас будет:
– железный слой, который уже что-то отбрасывает;
– небольшой промежуточный мозг, который структурирует поток;
– и большой софт-мозг, который делает магию.
Он перевёл взгляд на Самира:
– И ты хочешь, чтобы я помог сделать так, чтобы мы потом понимали, что именно прошло через каждый из этих слоёв?
– Да, – ответал Самир. – Мне не нужны чудеса. Мне нужны трассировки.
Оскар сел за свободный терминал и быстро вывел свою версию архитектуры:
Technical Memo – Q-Logging Architecture (draft)
Автор: O. Holz, совместно с S. Ahmed
Уровень 1: RawLog (железо)
– минимальные, но неизменяемые записи о каждом импульсе и ответе: временная метка от Q-Beacon, ID канала, базовые амплитуды.
– пишутся напрямую с Aegis-β-2 на защищённый модуль, недоступный для перезаписи из Palingenesis.
Уровень 2: PreFilterLog (Q-PreFilter)
– записи о том, какие участки данных были отброшены пороговыми фильтрами (шум) и по каким критериям.
– связываются с RawLog через общий ID события и временную метку.
Уровень 3: AlgoLog (Palingenesis v0.4)
– записи о том, какие алгоритмические решения были приняты (обнаружение паттернов, «эхо», расчёты корреляций).
– содержат ссылки на соответствующие записи в RawLog и PreFilterLog.
Цель:
– обеспечить возможность задним числом восстановить путь любого результата: что было на входе, что отсеялось, что интерпретировал алгоритм.
– Если мы это сделаем, – сказал Оскар, – то в случае аномалий или, не дай бог, инцидентов, мы сможем честно ответить на три вопроса:
1) Это было в железе?
2) Это появилось в префильтре?
3) Это нарисовал софт?
Он усмехнулся:
– И у Маши будет меньше поводов говорить, что мы всё прячем.
– А у нас – больше работы, – пробурчал Джас. – Но ладно. Если это поможет потом не объяснять на слушаниях, что «логов как раз за это число нет», я готов потерпеть.
Самир чувствовал приятное ощущение, которое редко бывает в больших проектах: как будто кусочки из разных голов начали встать в один рисунок. Aegis-β-2, Q-PreFilter, Palingenesis v0.4, логирование – всё это складывалось в нечто, что уже можно было назвать архитектурой, а не набором идей.
Спор о том, где на самом деле «бутылочное горлышко», продолжился, но из плоскости общих фраз перешёл в плоскость конкретных чисел.
– Смотри, – сказал Самир, выводя на экран графики нагрузки, – вот наши последние ночные тесты. Aegis выдаёт примерно N мегасэмплов в секунду по всем каналам. Palingenesis v0.3 переваривает это, но на грани – мы работаем почти в реальном времени, но запас минимальный.
Он показал другой график:
– Если мы добавляем более сложные модели «эхо», Palingenesis начнёт тормозить. Без префильтрации мы не сможем ни увеличивать разрешение, ни расширять спектр.
– А если мы добавим префильтрацию на железе, – возразил Джас, – то у нас появятся требования к стабильности Q-модулей, которых сейчас нет. Малейший сбой – и ты будешь считать идеальные модели по кривым данных.
– Именно для этого, – вмешался Дмитрий, – и нужны выделенные диагностические каналы и RawLog. Чтобы мы могли отловить такие сбои.
Он подошёл к доске и, к удивлению обоих, начал рисовать свою версию разбиения:
– Давайте ещё раз.
– У нас есть физический слой: Aegis-β-2. Там должно быть:
• стабильность полей;
• чёткая связь с Q-Beacon;
• возможность физического отключения импульсов (аппаратный стоп).
– Есть слой структурирования: Q-PreFilter. Он:
• не принимает «умных» решений;
• только метит участки как «шум» или «кандидат в сигнал»;
• отдаёт ссылки в лог.
– И есть слой интерпретации: Palingenesis v0.4. Он:
• отвечает за смысл;
• не имеет права переписывать историю того, что пришло снизу.
Он обвёл три слоя разными цветами:
– Горлышко будет там, где мы нарушим это разделение. Если Aegis начнёт «думать», или Palingenesis – «подчищать» логи, или Q-PreFilter – играть в маленького учёного, мы потеряем прозрачность.
Самир почувствовал лёгкое уважение к тому, как Дмитрий умел переводить их технические споры в структуру принципов. Это было удобно не только для протоколов – ему самому так было легче держать в голове, где кончается математика и начинается политика.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.



