Машинный перевод, не проверенный носителем языка. Эталоном служит английская версия.

Страницы видов сценариевПравить на GitHubИсточник: docs/kinds/by-kind/campaign.md

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 композиция существующих видов сценариев. Каждое число считывается из реального прогона названного вида; цепочка (аддитивный перенос канала через границу фазы, удержание нулевого порядка на сетке временной шкалы, фаза, заканчивающаяся в вычисленный момент) — это выбор моделирования, и каждая фаза несёт метк

График, который движок записывает для scenarios/campaign-sweep-jammer-power.toml, вид campaign

Доказательства#

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, Python kshana.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))

См. также#