campaign (вид сценария)
Вид сценария движка v0.40.0, семейство Кампании. Носит консультативный характер: результат анализа исследовательского и инженерного инструмента; это не навигационное оборудование с утверждённым типом и не служба обеспечения безопасности жизни. Каждая метка здесь принадлежит движку или матрице верификации; вид имеет уровень MODELLED, если матрица не указывает иное (как заслуживается метка: раздел README «Evidence»).
Что делает#
Кампания: существующие виды сценариев, составленные в один прогон, где каждое число считывается из реального прогона названного вида. Четыре раздела в любом сочетании. PHASES: цепочечная миссия на одной общей временной шкале — каждая фаза запускает один или несколько сценариев (например, подавление, затем спуфинг, затем часы в режиме holdover с инерциальной навигационной системой, идущей рядом на выбеге, затем тревога по целостности, затем восстановление); их выходные данные считываются в именованные каналы (ошибка времени часов относительно их предела, отношение несущей к плотности шума относительно порога слежения, уровень защиты относительно предела тревоги, ошибка положения, отслеживаемые спутники, флаги тревоги) по заготовке для вида или по явно заданным путям результата и передискретизируются на общую сетку удержанием нулевого порядка, с границами фаз и событиями; состояние передаётся дальше через carry (канал продолжается со значения в конце предыдущей фазы), handoff (число предыдущей фазы записывается в сценарий этой фазы) и end_at (фаза заканчивается в момент, вычисленный прогоном, например во время обнаружения монитором спуфинга). SWEEP: сетка по одному–трём ключам сценария любого вида в точечной записи (целочисленный сегмент индексирует массив таблиц, как в system.2.sisre_m), с метриками, считываемыми по пути результата, и, при числе прогонов больше одного, ансамблем Монте-Карло с заданным seed в каждом узле. MONTE_CARLO: реализация k запускается с base_seed + k; для каждой метрики сообщаются среднее, стандартное отклонение, 5-й/50-й/95-й процентили по ближайшему рангу и бутстреп-доверительный интервал 95% для среднего с фиксированным seed. COMPOSE: несколько сценариев с общими значениями (мощность и положение одного источника подавления записываются в морской и дорожный приёмники) со сводным лучшим/худшим итогом. Результат содержит хеш кампании, сводный хеш по результатам всех участников и запись единиц для каждого выданного числа; экспорты для интероперабельности записывают каждый сценарий-участник, у которого есть геометрия, в виде отдельного набора файлов. Тождества композиции проверяются: однофазная кампания воспроизводит автономный прогон бит в бит, ансамбль с фиксированным seed побайтно стабилен, а для часов с белым частотным шумом среднее по ансамблю попадает в заявленный интервал, причём разброс соответствует sqrt(q_wf * tau). MODELLED: аддитивный перенос carry и удержание нулевого порядка — это выбор моделирования, и каждая фаза несёт метку вида, который её выполнил.
Один прогон scenarios/campaign-sweep-jammer-power.toml даёт такую сводку: кампания 46aa07cb58fb | Перебор мощности источника подавления: доступность и J/S в зависимости от мощности передатчика | перебор jamming: 13 узлов по [jammer_power] | 13 прогонов участников (MODELLED)
Входные параметры#
Из схемы (kshana kinds --json):
- Обязательные поля: нет
- Необязательные поля:
title,seed,timeline,phases,sweep,monte_carlo,compose
Пример scenarios/campaign-sweep-jammer-power.toml задаёт, среди прочего:
| Поле | Значение | Единица |
|---|---|---|
kind |
campaign | текст |
seed |
20260928 | 1 |
sweep.axes[0].key |
jammer.power_dbw | текст |
sweep.axes[0].name |
jammer_power | текст |
sweep.axes[0].start |
-50 | не указано |
sweep.axes[0].steps |
13 | не указано |
sweep.axes[0].stop |
10 | не указано |
sweep.axes[0].unit |
dBW | текст |
sweep.metrics[0].name |
доступность | текст |
sweep.metrics[0].path |
fom.availability_under_jamming | текст |
sweep.metrics[1].name |
mean_js | текст |
sweep.metrics[1].path |
fom.mean_js_db | текст |
Запустите#
kshana scenarios/campaign-sweep-jammer-power.toml
Этот вид используют 22 поставляемых сценария; остальные находятся в scenarios/.
Что он даёт#
Скалярные результаты этого прогона с единицами, которые указывает движок:
| Результат | Значение | Единица |
|---|---|---|
evidence.id_rule |
стабильный идентификатор строки матрицы (ID | текст |
evidence.matrix |
docs/VERIFICATION-MATRIX.md | текст |
evidence.tier |
PARTNER | текст |
reproducibility.campaign_hash |
46aa07cb58fbfbd3784c2e1ef8d6070508ad5f5c | текст |
reproducibility.run_digest |
a082a9466bcd5c8788a2a46373a47e418db1393c | текст |
reproducibility.runs_total |
13 | число |
seed |
20260928 | 1 |
sweep.axes.jammer_power.key |
jammer.power_dbw | текст |
sweep.axes.jammer_power.scale |
lin | текст |
sweep.axes.jammer_power.unit |
dBW | текст |
Метка результата (от движка): MODELLED композиция существующих видов сценариев. Каждое число считывается из реального прогона названного вида; цепочка (аддитивный перенос канала через границу фазы, удержание нулевого порядка на сетке временной шкалы, фаза, заканчивающаяся в вычисленный момент) — это выбор моделирования, и каждая фаза несёт метк
Доказательства#
MODELLED: строки матрицы верификации, называющие этот вид.
- MODELLED iq::campaign::detect и исполнитель кампании: необязательная таблица [monitors] запускает мониторы IQ на каждой ячейке за единственный проход исполнителя. Тесты: iq_campaign.rs.
- MODELLED iq::campaign::detect (windows, roc) и iq::campaign::report::rocs: каждая ячейка кампании с мониторами хранит для каждого вида тревоги и канала максимум собственной тестовой статистики монитора по каждому заданному окну события (положительные) и по т
- MODELLED iq::labfit (campaign, cn0, iqfit, iqreport) и
[input] campaignвkshana iq labfit, Pythonkshana.iq_labfitи инструмент MCP labfit (только папки кампаний внутри его рабочего каталога): читает выходную папкуkshana iq campaignпо её Тесты: iq_labfit_followup.rs. - MODELLED Фазы вида
campaign: каждая фаза запускает через run_toml один или несколько сценариев существующих видов, считывает их выходные данные в именованные каналы (ошибка времени часов и предел, среднее эффективное отношение несущей к плотности шума и порог слежения, v Тесты: campaign_composition_reference.rs. - и ещё 4 в матрице.
Строки, которые задействовал сам прогон, с оракулом, который указывает им матрица (публичные источники названы там):
- MODELLED Геометрический бюджет линии связи J/S, C/N₀ при защите от подавления, потеря захвата по каждому спутнику. Оракул (InternalConsistency): уравнение бюджета линии связи для C/N₀ при защите от подавления сверено с независимым повторным выводом на numpy (используется та же замкнутая формула → InternalConsistency), плюс характеристика ухудшения C/N₀ по реальным данным JammerTest-2024. 0,30 раунд 2, заблокировано (остаётся MODELLED): измеренное падение C/N0 в JammerTest 2024 по сравнению с прогнозом бюджета линии связи (предварительно зарегистрировано 6a66994b, в пределах 3 дБ) не проводилось, потому что положение и ориентация антенны F8.1 на
- MODELLED Детерминированные, хешируемые по сценарию, SBOM и кроссплатформенные эталонные проверки (golden). Оракул (ExternalDataset): соответствие SBOM официальной схеме JSON CycloneDX 1,5 (плюс допустимые идентификаторы SPDX) — внешний опубликованный стандарт, ноль ошибок валидации на всём графе зависимостей; часть о детерминизме FoM и побайтной воспроизводимости остаётся закреплённой проверкой внутренней согласованности, поэтому строка остаётся MODELLED
- PARTNER Не обеспечивается — Kshana моделирует характеристики сигнала, а не аппаратуру полезной нагрузки или антенн. Оракул (NoneKind): нет: дисциплина, принадлежащая партнёру, по замыслу без модуля и без теста
- MODELLED Раздел sweep вида
campaign(от одного до трёх ключей в точечной записи любого вида, по значениям оси универсального перебора, при необходимости с ансамблем в каждом узле) и monte_carlo. Оракул (InternalConsistency): замкнутая форма случайного блуждания фазы при белом частотном шуме, дисперсия q_wf tau (NIST Technical Note 1337), для статистического аппарата и побайтное равенство с автономными прогонами для задания seed. Проверяется арифметика ансамбля на собственной модели часов движка, а не внешний набор данных
Ограничения#
Что отчёт самого прогона называет не смоделированным или не проверенным:
- MODELLED композиция существующих видов сценариев. Каждое число считывается из реального прогона названного вида; цепочка (аддитивный перенос канала через границу фазы, удержание нулевого порядка на сетке временной шкалы, фаза, заканчивающаяся в вычисленный момент) — это выбор моделирования, и каждая фаза несёт метку вида, который её выполнил. (результат
label) - MODELLED: аддитивный перенос carry и удержание нулевого порядка — это выбор моделирования, и каждая фаза несёт метку вида, который её выполнил. (каталог видов (
kshana kinds --json)) - MODELLED: так же, как у вида
jamming. (комментарий в файле сценария, строка 14) - Устойчивость к подавлению в условиях недоступности GNSS имеет уровень MODELLED и не подтверждена внешней проверкой: проверено по собственному тождеству в замкнутой или аналитической форме — выявляет ошибки переписывания и коэффициентов, но не является внешним оракулом. (матрица верификации (docs/MODELLED-RATIONALE.md))
- Воспроизводимость и гарантии качества ПО — MODELLED, а не validated: одно из частных утверждений проверено извне, но вся возможность составлена из смоделированных частей, поэтому возможность остаётся Modelled. (матрица верификации (docs/MODELLED-RATIONALE.md))
- Перебор параметров и ансамбли Монте-Карло с заданным seed для любого вида сценария имеют уровень MODELLED и не подтверждены внешней проверкой: проверено по собственному тождеству в замкнутой или аналитической форме — выявляет ошибки переписывания и коэффициентов, но не является внешним оракулом. (матрица верификации (docs/MODELLED-RATIONALE.md))
См. также#
- Страница семейства: Кампании
- Все виды: KINDS.md
- Тематическая страница: LEO-PNT.md
- Тематическая страница: RESILIENCE-CROSSWALK.md