Справочник по возможностям
61 карточка возможностей из web/capabilities.json, затем вся матрица верификации из 401 строки.
Карточки возможностей#
Распространение орбит и проектирование группировок
Распространение SGP4/SDP4 по реальным двухстрочным наборам элементов (зафиксированный снимок GPS из Celestrak) или по синтетическим группировкам Уокера, средние элементы которых реализуют формулу i:T/P/F с точностью лучше 1 км за 24 ч. Видимость нескольких орбитальных группировок, геометрический фактор DOP (ухудшение точности) и доступность GNSS, оптимизатор проекта группировки, расчёт размеров по полосам покрытия и перебор проектов Уокера, сообщающий Парето-оптимальные проекты по сетке «плоскости × спутники».
Распространитель Коуэлла и модель сил с шестью возмущениями
Численный распространитель (Коуэлла), дополняющий аналитический путь SGP4/SDP4, с иерархической моделью сил: задача двух тел + полное зональное поле J2–J6, необязательный тессеральный геопотенциал EGM2008 до степени/порядка 70, гравитация Солнца и Луны как третьих тел, зависящая от эпохи (встроенные эфемериды, без ядер DE/SPK), давление солнечного излучения с коническим шаром полной тени и полутени, атмосферное сопротивление, постньютоновская релятивистская поправка Шварцшильда и член увлечения системы отсчёта Лензе–Тирринга — с выбором адаптивных интеграторов: RK4 с удвоением шага или Дормана–Принса RK5(4).
Импульсы, Ламберт и porkchop
Импульсные узлы ΔV с распространением ковариации 6×6, интегрирование конечного импульса, проверенное по уравнению Циолковского для ракеты с точностью лучше 0,01 %, решатель Ламберта Изцо (2015) для одного витка и точный распространитель Кеплера в универсальных переменных, а также перебор porkchop (запуск × прибытие) по C3 / V∞ прибытия, выдаваемый в виде сетки контуров JSON — слой моделирования характеристик над GMAT/Orekit.
Шкалы времени и системы координат ориентации Земли
Шкалы UTC / TAI / TT / UT1 IERS с високосными секундами, API юлианских дат, угол вращения Земли IAU-2000, системы TEME ↔ ECEF на основе GMST и геодезические системы WGS-84, полная нутация IAU 2000A/2000B и прецессия IAU 2006, а также приведение GCRS↔ITRS IAU 2006/2000A на основе CIO без точки равноденствия с полярным движением IERS — проверено побитово по векторам SOFA/ERFA и независимо перекрёстно проверено по ANISE (SPICE на чистом Rust): GCRS→ITRS в сравнении с ANISE ITRF93, при тех же EOP IERS, совпадают с точностью ≤ 0,86 м на земле / ≤ 3,6 м на орбите GNSS.
Прогноз ориентации Земли в реальном времени
Предсказатель ориентации Земли эксплуатационного типа — метод наименьших квадратов по смещению, скорости и основным периодическим членам на скользящем окне, — оцениваемый по действительно архивным прогнозам Bulletin A, а не по инерционному прогнозу. Входные данные по умолчанию в автономном режиме — настоящий продукт IERS finals2000A со строками прогноза Bulletin A, поэтому голый запуск выдаёт заполненную таблицу по горизонтам, а не пустую. UT1 и движение полюса сообщаются по общему набору строк вместе с их комбинацией, так что совместный показатель — одна статистика, а не квадратурная сумма двух разных выборок.
Бесплатформенная INS и навигация с картами
Трёхосная бесплатформенная INS — кватернионная ориентация, механизация WGS-84 NED, компенсация конусного и «гребного» движения и полная детерминированная модель ошибок IMU — плюс акселерометр на атомном интерферометре с холодными атомами из первых принципов (фаза Маха–Цендера, проекционный шум, затухание контраста, связь с вибрацией) и фильтр частиц для навигации без GPS по рельефу местности и гравитации.
Инерциальный выбег и выбег по рельефу при перерыве
Ошибка положения в зависимости от длительности выбега по бюджету ошибок IMU — смещение, случайное блуждание и масштабный коэффициент, у каждого свой закон роста и своя доля в пересечении, — так что цена перерыва в навигации выражается вычисленной кривой, а не перебором скорости дрейфа. Пересечения порогов — выходные данные движка, и при каждом из них названо преобладающее слагаемое, по четырём классам IMU, а интервал привязки к рельефу оценивается в отдельном блоке, так что основные пересечения остаются без внешней помощи.
Сопоставление с картами гравитации, рельефа и магнитного поля
Модель измерений гравиметра на холодных атомах, у которой порог белого шума выведен из физики акселерометра CAI, поле гравитационных аномалий в виде полностью нормированных сферических гармоник низкой степени плюс синтетические масконы, и фильтр частиц для сопоставления с гравитационной картой — расширенный до навигации по рельефу местности по цифровой модели высот SRTM (TERCOM/SITAN), главного геомагнитного поля IGRF-14 до степени/порядка 13 и комбинированного навигатора по гравитации + магнитному полю + рельефу, который объединяет все три скалярных канала. 60-минутный бенчмарк без GPS — перерыв около 700 км / один час, за который инерциальное решение уходит примерно на 70 км, — сводится к ~145 м иерархическим сопоставителем от грубого к точному: цель ESA NAVISP Quantum Wayfarer.
Объединение данных GNSS / INS
15-мерный EKF по вектору ошибок, который проходит перерывы GNSS на калиброванном инерциальном решении; режим по псевдодальностям с тесной связью, который продолжает коррекцию менее чем по четырём спутникам; связанный фильтр часов и положения; общий несцентрированный (по сигма-точкам) оцениватель Калмана; навигатор UKF с тесной связью GNSS/INS, проверенный до 0,77 м СКО на перерыве 120 с на изогнутом проходе LEO; и полный 17-мерный UKF с тесной связью GNSS/INS, у которого квантовое счисление пути CAI проходит перерыв на выведенном случайном блуждании скорости акселерометра на холодных атомах.
Пакетное и последовательное определение орбиты
Восстановление состояния орбиты по измерениям дальности с наземной станции, с композицией модели сил двух тел + J2 и интегратора RK4 с пакетным дифференциальным корректором Гаусса–Ньютона (субметровая точность / мм·с⁻¹ по безошибочным дальностям, ~2 м при пороге шума 5 м) и вариантом с последовательным несцентрированным фильтром.
Информация Фишера и наблюдаемость
Общий переиспользуемый слой информации Фишера / Крамера–Рао (src/fim.rs): информационная матрица M = HᵀWH, нижняя граница Крамера–Рао, ранг наблюдаемости и нуль-пространство дефекта датума (псевдообратная матрица Мура–Пенроуза), а также скаляры планирования D/A/E/T-оптимального эксперимента из симметричного собственного решателя Якоби. Он лежит в основе механизма DOP, границы пассивной геолокации и результата о наблюдаемости лунных абсолютных станций — внутренняя дальнометрия оставляет шестистепенной дефект датума твёрдого тела, который привязка по земной базе РСДБ восстанавливает для разреженной группировки и уточняет для плотной, а абсолютный датум замыкается на трёх неколлинеарных земных станциях.
Распространение CR3BP и целостность LunaNet
Распространитель круговой ограниченной задачи трёх тел Земля–Луна (CR3BP) во вращающейся системе — сохраняющаяся постоянная Якоби и все пять точек Лагранжа — с матрицей перехода состояния 6×6 и корректором однократной стрельбы, строящим по-настоящему периодические гало-орбиты / околопрямолинейные гало-орбиты (NRHO): он воспроизводит опубликованную южную NRHO L2 9:2 (орбиту Gateway) с периодом ~6,57 суток и периселением ~3 250 км. Плюс геометрия цислунных PNT LunaNet / LNIS (приведение MCI↔MCMF, селенографические координаты) с проходом ARAIM на южном полюсе Луны, который честно выявляет разрыв по целостности: σ_URE около 30 м поднимает уровень защиты намного выше предела тревоги 50 м.
Реализация лунной системы отсчёта
Реализует связанную с Луной систему отсчёта по наблюдательной кампании: взвешенная подгонка подобия методом Гаусса–Ньютона по геометрии станция–отражатель, с выдачей датума, его ковариации и хуже всего определённой оси. Связанная калибровка системы отсчёта и шкалы времени учитывается явно, а не поглощается, так что дефицит ранга виден в отчёте, а не скрыт в псевдообратной матрице.
Зона обслуживания лунной навигации и ARAIM
Перебирает иллюстративную группировку класса Moonlight/LCNS по селенографической сетке: видимость, геометрический фактор DOP (ухудшение точности), покрытие и уровни защиты ARAIM по эпохам относительно настраиваемого предела тревоги. Точность дальности в космическом сегменте — параметр, поэтому перебор отвечает на требование к дальности по всей зоне, а не на «выполнено / не выполнено» при одном фиксированном значении.
Бюджет лунной совместимости между поставщиками
Измеряет, насколько на самом деле расходятся три независимых авторитетных лунных эфемериды, и превращает это в закон проектирования: бюджет ошибки системы отсчёта относительно эфемерид, который наследует пользователь со смешанными поставщиками, и допуск согласованности, который должен выдерживать поставщик, чтобы удержать этот бюджет в заявленных пределах.
Наблюдаемость отказов автономной свободной сети
Линейная алгебра, нужная самоссылочной лунной группировке, чтобы обнаруживать собственные отказы без эталонных данных: взвешенный паритетный проектор в форме псевдообратной матрицы для случая дефицита ранга, устойчивой к калибровке датума и шкалы времени, обнаруживаемость по узлам, минимальное обнаруживаемое смещение Баарды и счётчики обнаружения/идентификации блочных искровых византийских отказов на реальной геометрии между узлами DE440.
Лунный датум системы отсчёта по реальной лазерной дальнометрии
Заменяет смоделированную кампанию реальными данными: 337 архивных нормальных точек лунной лазерной дальнометрии ILRS по пяти ретрорефлекторным матрицам, причём каждое наблюдение взвешено по собственной записанной в файле точности. Координаты отражателей — каталог DE440 в главных осях, хранимый под собственным именем файла, отдельно от таблицы DE430 в средней системе Земли: если подать одно во вращение другого, отражатель сдвинется на сотни метров, и ничто не возразит, потому что обе системы — корректно заданные координаты.
Лунные дифференциальные PNT
Дифференциальные поправки между лунной опорной станцией и пользователем. Взаимное уничтожение синфазной составляющей — точное тождество; остаток от пространственной декорреляции — геометрическая модель первого порядка, растущая с длиной базы, а бюджет остатка линии передачи поправок приводится рядом, чтобы ограничивающее слагаемое оставалось видимым, а не растворялось в одном числе.
Лунные шкалы времени и геодезическая РСДБ
Времена пересечения для каждого класса часов лунной шкалы времени — когда класс генератора перестаёт укладываться в заявленную границу без обновления — вместе с наблюдаемой лунной геодезической РСДБ и информацией Фишера, которую она вносит в датум.
Реальная, полученная геометрия лунной группировки
Зона обслуживания рассчитывается по опубликованным проектам группировок, а не по иллюстративному: опорный набор из пяти спутников для демонстрации совместимости LANS, примеры LNCSS на 8, 12 и 16 спутниках и четыре аппарата, реально находившихся на лунной орбите 2023-01-01, по JPL Horizons. Каждый файл указывает собственную систему отсчёта и собственный класс происхождения, горизонт за концом табличных эфемерид отвергается, а не экстраполируется, а иллюстративный кеплеровский результат выдаётся рядом с полученным вместе с разницей между ними и никогда им не заменяется.
Контур подавления на Луне по измеренному разбросу C/N₀
Отношение помеха/сигнал для каждого спутника на реальных лунных наклонных дальностях, где сторона полезного сигнала сохранена как распределение, а не свёрнута до медианы, так что контур подавления несёт полосу неопределённости, которую на самом деле даёт геометрия ретрансляции. Два критерия приводятся рядом: порог по отношению мощностей и потеря захвата, вычисленная по динамике петель слежения. Зона орбитального захвата перебирается по высоте передатчика и ширине луча, и там, где сетка никогда не достигает захвата на лимбе, отчёт говорит об этом и печатает недостаток.
От расписания РСДБ к ковариации координат станций
Накапливает частные производные задержки лунной РСДБ в информационную матрицу Фишера по расписанию «базы × эпохи» и возвращает ковариацию координат станций, так что переход от точности задержки к сигме координат оценивается, а не предполагается. Свободная сеть приводится рядом с сетью с фиксированным датумом, с её дефектом ранга и названным ненаблюдаемым направлением. Ковариация точки на поверхности хранится отдельно от ковариации земной станции, потому что частная производная для маяка в ближнем поле — разность двух единичных векторов станций и ведёт себя не так, как в дальнем поле.
Радиометрическая навигация и PNT на ретрансляторах
Открытый движок радиометрической навигации в дальнем космосе / на Марсе: итеративная задержка по времени света + задержка Шапиро, двух-/одно-/трёхсторонние измерения Доплера и дальности (двухплечевая по Мойеру), когерентный разворот транспондера, регенеративная/PN-дальнометрия и Δ-DOR; ввод-вывод CCSDS-TDM; редуцированно-динамический фильтр квадратного корня информации (эмпирические ускорения + бортовые часы + сопротивление Марса), который выполняет определение орбиты на низкой орбите Марса в синтетическом замкнутом контуре; объединение односторонних и двусторонних измерений; а также ареостационарная ретрансляционная группировка MARCONI со сквозным имитатором характеристик GSE.
Передача между оптическим и РЧ режимами с межмодальной целостностью
Внесение отказов придаёт межмодальному монитору мощность обнаружения вместо прохождения без отказов: минимальное обнаруживаемое смещение по каждой оси при заданном бюджете ложных тревог и пропусков обнаружения. После передачи ковариация, вновь растущая, сопоставляется с пределами тревоги, так что отчёт указывает, как долго одномодальное решение остаётся внутри них, а не только то, что передача была непрерывной. Оптические и РЧ плечи дальнометрии сравниваются только при совпадающих времени накопления и трассе, а отчёт отказывается образовывать отношение к значению, которое было выбрано, а не измерено.
Автономный контроль целостности в приёмнике (ARAIM)
RAIM по снимку и по разделению решений с горизонтальным и вертикальным уровнями защиты (HPL/VPL), обнаружение и исключение отказов и диаграммы целостности Стэнфорда — плюс явный уровень защиты по бюджету риска целостности (MHSS) с режимом отказа всей группировки для двух-/многогруппировочного случая (EU ARAIM / DO-316).
ARAIM по опубликованным опорным векторам
Уровни защиты MHSS движка прогоняются по собственным опубликованным разобранным примерам опорного бортового алгоритма Рабочей группы C ЕС и США, причём каждый переписан с указанием URL получения, даты, страницы и SHA-256 файла и хранится в двух местах, совпадение которых проверяет тест. Приёмочный вектор — внутренне согласованный Reference Airborne Algorithm Description Document v3.1, приложение D. Отчёт Milestone 3 содержит два внутренних дефекта — опечатку в знаке в геометрии и множитель ложной тревоги, вычисленный для 57 режимов отказа, тогда как в тексте указан один, — поэтому его уровни защиты приводятся как измеренные расхождения, а не оцениваются, и дефекты демонстрируются прогоном собственных чисел документа.
Уровни защиты SBAS / WAAS и двухчастотный режим
Уровни защиты SBAS / WAAS в форме взвешенных наименьших квадратов по DO-229E (K-факторы для точного захода на посадку и для полёта по маршруту) и двухчастотная безионосферная комбинация L1/L5 (IS-GPS-705), на которой основан DO-316, с перекрёстной проверкой геометрии уровня защиты по эталонной реализации линейной алгебры.
Holdover, стабильность и передача времени и частоты
Двухсостоятельный holdover по Калману, стабильность семейства Аллана (ADEV / MDEV / TDEV / HDEV) с доверительными интервалами и полная подгонка степенного закона IEEE-1139 с пятью коэффициентами, а также эксплуатационные методы передачи — TWSTFT с замкнутой формой Саньяка по BIPM, общий вид GNSS, безионосферная передача PPP, оптическая линия в свободном пространстве со сцинтилляцией от турбулентности и шкала времени ансамбля часов с обратной дисперсией. Калькулятор holdover часов без GNSS обращает рост ошибки выбега по Ван Лоану в holdover до порога — как долго часы работают свободно, пока ошибка времени не превысит бюджет, — для классических и квантовых классов часов; результат смоделирован, с честным замечанием, что для очень стабильных часов holdover до жёсткого порога определяется принятым порогом шума на больших tau, а не приведённой ADEV.
Псевдодальность, ионосфера и тропосфера
Прямой синтез псевдодальности / Доплера с ионосферой Клобучара (широковещательной) и IONEX / по сетке TEC (измеренной) — включая разборщик файлов IONEX, интерполяцию по времени и отображение наклона в модели тонкой оболочки — тропосфера Саастамойнена + Нилла и RAIM по снимку.
Одиночное определение местоположения (PVT)
Положение реального приёмника, найденное по реальным кодовым псевдодальностям RINEX + широковещательным эфемеридам итерационным взвешенным методом наименьших квадратов — поправка Саньяка / вращения Земли, широковещательные часы с TGD, двухчастотная безионосферная комбинация L1/L2 (или одночастотный Клобучар), тропосфера Саастамойнена/Нилла, взвешивание по углу места, DOP и RAIM по снимку.
Подавление (jamming) и многоуровневое обнаружение спуфинга
Модель подавления (jamming) по бюджету линии (J/S → эффективное C/N₀ → потеря захвата), стохастический детектор спуфинга времени (энергетический тест Неймана–Пирсона / χ²₁ с P_fa/P_md по Монте-Карло и показателем безопасности 1 − P_md) и многоуровневый детектор спуфинга, объединяющий паритетный тест согласованности RAIM, РЧ-монитор мощности AGC и монитор качества сигнала (SQM). Плюс бюджет ошибок квантового инерциального счисления пути, объединяющий белошумовой дрейф атомного интерферометра на холодных атомах с остаточным смещением (перекрёстно проверен независимым интегратором) и ошибку масштабного коэффициента в показатель дрейфа положения за время holdover — инерциальный двойник holdover часов.
Модуляция, помехоустойчивость и слежение за кодом
Слой характеристик сигнала между бюджетом линии и областью измерений: спектральные плотности мощности единичной площади для BPSK-R(n) и sine-BOC(m,n), коэффициент спектрального разделения, из которого помехоустойчивость Q, потребляемая моделью подавления (jamming), выводится прямо из фактических спектров сигнала и генератора помех, среднеквадратичная (Габора) ширина полосы, задающая информационное содержание дальнометрии (BOC > BPSK), тепловой джиттер слежения за кодом когерентной петлёй DLL «раньше–позже», огибающая ошибки многолучевости когерентной разности «раньше минус позже» с подавлением узким коррелятором и проектный компромисс по дальномерным кодам (боковые лепестки автокорреляции m-последовательностей/кодов Голда и трёхзначная граница взаимной корреляции кодов Голда, плюс обращение длины кода в однозначную дальность). Это анализ характеристик сигнала, а не проектирование РЧ-полезной нагрузки или антенной аппаратуры.
Пассивная РЧ-геолокация (TDOA/FDOA)
Определение местоположения генератора помех или спуфера (или оппортунистического источника для обратного PNT) по гиперболоидам разности времён прихода в сети приёмников, решаемое методом наименьших квадратов Гаусса–Ньютона; добавление разности частот прихода при движущихся приёмниках совместно восстанавливает положение и скорость излучателя, с границей Крамера–Рао для ковариации положения по геометрии сети. Модель точечного источника прямой видимости — без многолучевости / NLOS, смещения часов приёмника и слагаемых рефракции.
Форматы RINEX, SP3 и CCSDS
Приём широковещательных эфемерид RINEX-3 для нескольких GNSS (GPS, Galileo, QZSS, BeiDou, ГЛОНАСС), разборщик наблюдений RINEX-3 (компоновка наблюдений RINEX 4,00, как ожидается, разбирается, но ни один файл 4,00 через него не прочитан; навигационные файлы RINEX 4 отвергаются по имени), читатель/писатель точных эфемерид SP3-c/d с интерполяцией Лагранжа, экспорт CCSDS OEM 2,0 + OMM (средние элементы) для средств динамики полёта (GMAT, Orekit, STK) и разбор + выдача сообщений с данными слежения CCSDS-TDM (503) для радиометрического слежения в дальнем космосе.
Матрица верификации с машинной проверкой
Перекрёстная ссылка «требование — модуль — тест — оракул — статус», формируемая самим движком (Markdown/CSV), с проверенными модульными тестами инвариантами честности: строка может быть помечена как проверенная по внешнему эталону, только если у неё есть независимый внешний оракул (NIST / AIAA / SOFA / IGS / опубликованное значение), так что внутренняя проверка самосогласованности не может выдавать себя за валидацию, — а аппаратные возможности и возможности PA, которых Kshana не обеспечивает, записаны как пробелы, принадлежащие партнёру. Исполняемая основа для перекрёстной ссылки верификации по ECSS-E-ST-10-02.
Единица измерения и происхождение у каждой сообщаемой величины
Каждое числовое поле, которое выдаёт сценарий, несёт единицу измерения и класс происхождения из замкнутого словаря, с определением там, где оно есть, и публикуется в виде машиночитаемой схемы рядом с движком. Ужесточаемая проверка прогоняет каждый встроенный вид и отклоняет поле, у которого их нет; виды, ещё не завершённые, названы по одному с причиной, по которой каждый ещё открыт, и список может только сокращаться. Отчёты, которые сами указывают свои константы — бюджет односторонней линии, оптический и РЧ бюджет, — позволяют читателю пересчитать главный показатель только по отчёту.
Бюджеты запуска, входа в атмосферу, покрытия и наведения
Бюджеты проектирования миссии первого порядка, каждый — запускаемый сценарий: геометрия запуска и выведения в задаче двух тел (азимут запуска, минимальное наклонение, выигрыш от вращения Земли, Δv смены плоскости с «дог-леггом», суточные возможности), коридор баллистического входа Аллена–Эггерса (пиковое замедление, скорости пиковой перегрузки и пикового нагрева), геометрия покрытия наблюдения Земли (полоса захвата / GSD в надире / доступ вне надира / повторный пролёт через космический треугольник SMAD), бюджет ошибок ориентации и наведения в 3 степенях свободы (момент от градиента гравитации + бюджет наведения RSS), прогноз проходов над наземной станцией (AOS/TCA/LOS, максимальный угол места, доступ) и бюджет односторонней линии по уравнению линии CCSDS 401 / DSN 810-005 (FSPL, C/N₀, Eb/N₀, запас, замыкание). Аналитический слой до появления аппаратуры, расположенный ниже STK/GMAT/Basilisk — смоделированные бюджеты первого порядка, а не замена 6-степенной или радиометрической модели.
Совместное использование раскрыва для навигации и связи
На входе — план контактов и число раскрывов; на выходе — навигационная скважность, скважность связи, перерывы по сеансам и конкуренция. Политика арбитража названа в отчёте, а не подразумевается, а сеанс, который нельзя обслужить полностью, сообщает долю потерянного, а не теряется в среднем.
Космическая погода и плотность термосферы
Модель космической погоды: индексы солнечной (F10.7 / центрированный по 81 суткам F10.7a) и геомагнитной (Kp, с определяющей таблицей Kp↔ap) активности, экзосферная температура по Jacchia-1971, которую они задают, и нейтральная плотность термосферы на высоте с поправкой на активность в сравнении со статической — зависимость плотности от солнечного цикла, которую статическая атмосфера опускает. Калиброванная связь по высоте однородной атмосферы первого порядка, а не атмосфера NRLMSISE, проверенная по данным.
Оценка обнаружения РЧ-искажений и сравнение PNT
Испытательный стенд для оценки обнаружения РЧ-искажений: размеченный синтетический корпус с обоснованными параметрами (штатный режим / подавление (jamming) / спуфинг времени / спуфинг положения / многолучевость), не зависящий от детектора стенд ROC/AUC, оценивающий любой детектор по Pd для каждого класса при целевой Pfa, и разрыв оптимизма между данными из распределения и вне него. Более глубокое исследование разрыва оптимизма распространяет это на панель из 13 детекторов (энергетический / AGC / SQM / паритетный плюс логистическая регрессия и MLP с одним скрытым слоем с начальным значением (seed)), законы масштабирования внутри и вне распределения с перестановочным нулём и предсказатель деградации вне распределения по схеме «исключить один»; входной каскад программно-определяемого приёмника (сырые IQ/IF → отводы коррелятора раньше/в точке/позже → SQM) и адаптеры приёма реальных данных (RINEX, u-blox UBX, GnssLogger, JammerTest, Yunnan, SatGrid) позволяют прогонять те же детекторы по записям, предоставленным локально. Плюс сравнение квантовых и классических PNT, которое количественно оценивает выигрыш кандидата в часы по синхронизации времени и по инерциальному holdover по измеренной кривой ADEV относительно классического базового уровня, с огибающей устойчивости без GNSS во времени. Модельные рабочие характеристики — никогда не полевые данные и не данные IQ, без вердикта «хорошо / плохо».
Карта пересечения устойчивости квантовых и классических решений
Воспроизводимая карта того, где квантовый датчик обгоняет классический аналог при неопределённости параметров: счисление пути на холодных атомах в сравнении с навигационным классом и holdover оптических часов в сравнении с чип-масштабными, по длительности перерыва и вибрации платформы, причём каждая кривая несёт метку уровня технологической готовности. Воспроизводится командой cargo run --bin crossover_study. Модельные бюджеты характеристик — входные данные — опубликованные или ограниченные коэффициенты, а не лётные данные.
Условный уровень защиты времени
Ограниченная holdover граница необнаруженной ошибки времени при спуфинге GNSS: при наличии независимой перекрёстной проверки ошибка выдаваемого времени ограничена порогом монитора в k сигм, дисперсией выбега по Ван Лоану за время задержки обнаружения и временем до тревоги по CUSUM. Калибровано по реальному записанному спуфингу (JammerTest 2024) и воспроизводимо командой cargo run --example tpl_jammertest. Смоделированная композиция при условии обнаружения — конечной безусловной границы нет, поскольку достаточно медленная рампа обходит одиночный монитор с привязкой к часам.
Оценка устойчивости PNT и неустойчивость решений
Механизм оценки, согласованный с рамочным документом (категории DHS RPCF), который сопоставляет смоделированное поведение архитектуры с частными оценками по измерениям, а затем спрашивает, служит ли какая-либо единая сводная оценка или уровень зрелости устойчивой основой для решения, — через симплекс весов Дирихле, неустойчивость рангов по тау Кендалла, долю смен победителя top-1 и коллапс разнообразия по общим причинам (Hill-N2) — с отчётом об обеспечении уверенности, защищённым хешем целостности. Воспроизводится командой cargo run --example resilience_report. Смоделированные синтетические архитектуры, согласованные с RPCF v2.0; самооценка, а не сертификация.
От пропуска обнаружения к областям целостности
Мост от пропуска обнаружения к целостности: необнаруженное смещение, оставленное пропущенным обнаружением спуфинга / подавления (jamming) / RAIM, раздувает эффективную ошибку положения, которая — при сопоставлении с пределами тревоги для конкретного контекста — относится к областям целостности Stanford-ESA (доступно / недоступно / вводит в заблуждение / опасно). Использует классификацию Stanford для RAIM, привязанную к внешним данным; новой математики целостности не добавляет.
ROI на единицу покрытия
Взгляд через ROI на единицу покрытия — стоимость единицы обеспеченного покрытия при сравнении группировок / архитектур. Составляющая покрытия использует проверенную геометрию покрытия, а арифметика проверена модульными тестами, но стоимость вводит пользователь — поэтому отношение служит вспомогательным средством планирования, а не величиной, проверенной по внешнему эталону (отсюда, честно, и отсутствие значка подтверждения).
Формат обмена Kshana (KIF)
Версионированный самоописывающийся конверт, в который заключён результат сценария вместе с его видом, версией схемы и метками «вычислено по модели» и «проверено по внешнему эталону», так что сохранённый артефакт остаётся самодокументируемым, а более старые конверты читаются с прямой совместимостью.
Оценка доверия к приёмнику для судна
Оценивает, можно ли доверять навигационному определению судна, по NMEA 0183, которое его приёмник и приборы и так выдают: оценка от 0 до 100, три полосы и причины за ними — по эпохам, пакетно, в реальном времени или как шлюз. Мониторы сравнивают определение с собственным движением судна, датчиком курса, лагом и уровнями спутниковых сигналов. Программное обеспечение консультативного характера, не навигационное оборудование с утверждённым типом: ответственность остаётся на операторе. Арифметика мониторов проверена по независимым библиотекам; правило и пороги оценки — собственные для проекта и остаются смоделированными.
Потоки NMEA для обучения экипажей
Записывает синтетический мостиковый NMEA 0183 для сценарного рейса с заданными инструктором событиями подавления (jamming), увода положения, спуфинга времени и повтора, с журналом инструктора, чтобы экипаж мог увидеть на собственных приборах, как выглядит ухудшенное определение. Только текст, ни в коем случае не для действующих навигационных систем судна; ничего не передаётся, и радиосигнал не создаётся. Предложения и их декодированные значения проверены; модели приёмника, неба и событий — модельные (вычислены по модели).
Карта помех и воздействие на маршрут
Строит посуточную карту GeoJSON мест, где воздушные суда (ADS-B) и суда (AIS) сообщали об ухудшенных навигационных данных, из открыто лицензируемых входных данных, а также долю маршрута, проходящую через ячейки с ухудшением. Ячейка с ухудшением — это утверждение о сообщённых полях точности или о неправдоподобных положениях, а не вывод о наличии помех, а ячейка, которую никто не наблюдал, не служит доказательством чистоты маршрута. Прошлые сообщения, а не прогноз.
Телеметрия доверия для служб безопасности
Экспортирует поток доверия как метрики Prometheus, OpenTelemetry (OTLP/HTTP) и события syslog CEF или LEEF через stdout, HTTP, UDP или TCP, чтобы центр управления безопасностью видел навигационный сбой рядом с другими оповещениями. Недоступный сборщик не останавливает оценку и не остаётся незамеченным. Prometheus, OTLP и CEF прочитаны обратно независимыми разборщиками; LEEF проверен только по собственной спецификации.
Подписанные пакеты доказательств
Собирает окно вокруг события доверия в пакет с цепочкой хешей, подписанный Ed25519, который любой может проверить автономно: изменённый, удалённый, подменённый или добавленный файл, повторно подписанный пакет или неверный закреплённый ключ называются прямо. К нему привязан необязательный токен метки времени RFC 3161. Техническая запись, а не юридическое заключение, не установление факта и не аттестация.
Экспорт для испытательного стенда (test-bench)
Записывает движение транспортного средства и события сценария как траекторию CSV и NMEA 0183 для лабораторного имитатора GNSS: столбцы в земной, геодезической и локальной системах скорости, ориентация и UTC. Только движение и события: сигнал не записывается, и характеристики имитатора или приёмника не заявляются.
Сопоставление compliance с общедоступными стандартами
Сопоставляет выходные данные Kshana с пунктами общедоступных документов (руководство IMO для судов, статья 21 директивы ЕС NIS2, EN 16803, рамочный документ DHS США по устойчивым PNT и руководство EASA для авиации) только по номеру пункта, заполняя по прогонам, которые вы ему даёте, и сообщает, какие строки набор прогонов подкрепляет доказательствами, с пробелом по каждой строке. Это не заключение о том, что какой-либо документ выполнен, и не оценка или одобрение кем-либо.
Проверка Galileo OSNMA
Открытый верификатор на чистом Rust на стороне приёмника для аутентификации навигационных сообщений открытой службы Galileo: он проверяет, навигационные данные каких спутников приёмник может аутентифицировать по страницам I/NAV или по потоку u-blox UBX, через проверки открытого ключа, цепочки ключей и тегов по спецификации сигнала в пространстве, и сообщает об аутентификации по каждому спутнику и по времени. Он аутентифицирует данные; никакой стойкости к спуфингу он не заявляет.
Видимость с маской горизонта, DOP и эллипс ошибок
Какие спутники видит пункт, когда здания, причалы, краны или рельеф закрывают часть неба, и как это влияет на геометрический фактор DOP (ухудшение точности) и горизонтальный эллипс ошибок. Горизонт, зависящий от азимута, заменяет единую маску по углу места; набор видимых спутников, его DOP и эллипс выдаются по эпохам и по орбитальным группировкам. Горизонт убирает спутники прямой видимости и ничего больше: он не моделирует ни отражений, ни дифракции, ни уровня сигнала.
Пресеты горизонта и функции геометрии неба
Сведение городской улицы, секторов и рельефа к таблице горизонта, четыре репрезентативных пресета (городская улица, подход к гавани, фьорд, контейнерный терминал) и функции, которые собирают их в скайплот и облако Монте-Карло, из командной строки, MCP, Python и браузера. Пресеты — репрезентативные геометрии с выбранными, указанными размерами, а не съёмки, а сведения проверены только по значениям, вычисленным вручную.
Классификация доверия с учётом геометрии
Ставит геометрию спутников рядом с оценкой доверия к приёмнику и называет класс для каждого вычета: потеря сигнала, плохая геометрия или расхождение между DOP, заявленным приёмником, и DOP, выведенным по видимым спутникам. Геометрия оценивается только тогда, когда она известна, а метка — главный результат: баллы снижает только плохая геометрия. Программное обеспечение консультативного характера, не навигационное оборудование с утверждённым типом.
Исследование лунной опорной станции
Одно воспроизводимое исследование того, на что способна лунная опорная станция на южном полюсе при публичных допущениях: карта покрытия и точности над полярным районом (процентили ошибки положения с поправками и без них, доступность с причиной для каждой недоступной эпохи, уровни защиты и бюджет линии передачи поправок), лаборатория времени, удерживающая лунную опорную шкалу времени на атомных часах, и геодезия добавленного лазерного ретрорефлектора и маяка РСДБ относительно датума по пяти матрицам. Каждый входной параметр помечен публичным источником или как иллюстративный. Это не утверждение о характеристиках какой-либо реальной системы, и Kshana не связана ни с каким ведомством.
Оптические линии передачи времени сквозь облака и турбулентность
Как часто оптическая линия передачи времени работает, когда на трассе есть атмосфера. Для каждого наземного пункта движок выдаёт потери в чистом воздухе, состояние турбулентности Хуфнагеля–Вэлли с гамма-гамма замираниями от сцинтилляции и усреднением по апертуре, доступность относительно запаса линии при заданном облачном климате, потолок, который не поднять никаким запасом, распределение длительностей перерывов и ошибку времени, которую перерыв стоит часам в режиме holdover. Затем он показывает, что дают дополнительные пункты, большая апертура, другая длина волны или адаптивная оптика. Встроенные облачные климаты иллюстративны, а не измерены; результат носит консультативный характер.
GNSS за пределами группировки: космическая зона обслуживания и за ней
Для космического аппарата на сфере (глобальная оболочка из буклета о космической зоне обслуживания ICG) или на кеплеровской траектории от LEO до лунного перелёта подсчитывает по каждой орбитальной группировке (GPS, ГЛОНАСС, Galileo, BDS, QZSS, NavIC) и для всех вместе сигналы выше порога C/N0: доступность одного и четырёх сигналов, самый долгий перерыв, принятое C/N0, геометрический фактор DOP (ухудшение точности) и линии связи по главному лепестку против боковых. Диаграммы направленности передачи — из буклета, параметрический заменитель или ваши собственные; модель ионосферы, плазмосферы и атмосферы по лучу у лимба и проект приёмника слабых сигналов необязательны; включены бортовой фильтр GNSS для высоких орбит и орбит лунного перелёта и относительная навигация построения. MODELLED: при сравнении с таблицами буклета по предварительной регистрации, зафиксированной до прогона, константы минимальной излучаемой мощности и лунный порог согласуются, остальные пороги NOT MET при предварительно зарегистрированном прочтении (почти все — из-за несогласованного угла луча ГЛОНАСС в буклете), а параметрический заменитель боковых лепестков не воспроизводит измеренные диаграммы панелей GPS.
Лунная орбита и поверхность как навигационная и геодезическая инфраструктура
Пять исследований в ограниченной модели трёх тел: бортовое определение орбиты по GNSS Земли на околопрямолинейной гало-орбите относительно независимого определения по наземной дальности и скорости изменения дальности; совместное разрешение целочисленных неоднозначностей фазы несущей по поверхностной станции и орбитальному аппарату (LAMBDA); информация Фишера семипараметрического лунного датума с дальностями «орбитальный аппарат — поверхность» и без них; смещения GNSS, РСДБ и лазерной дальнометрии относительно локальной привязки; и чувствительность к приливным и либрационным параметрам Луны. MODELLED с иллюстративными входными данными: численные методы проверены по независимым программам на numpy и scipy, а не физика. По заранее зарегистрированным порогам три NOT MET: введённая ошибка силы не обнаруживается с заявленной частотой (C3), доля успеха по бутстрепу отличается от оракула numpy на 1.7e-6 при пороге 1e-9 (Q3), и добавление семейства дальностей не всегда снижает след псевдообратной матрицы (G3, половина по следу).
Запустить lunar-infrastructure-od-consistency.toml в Kshana Studio
Матрица верификации#
| Требование | Возможность | Статус | Оракул | Модуль |
|---|---|---|---|---|
| Идентификация степенного шума по автокорреляции с лагом 1 | allan::lag1_noise_id: идентификатор шума по автокорреляции с лагом 1 по Riley и Greenhall (2004) (прореженная фаза с удалённой квадратичной составляющей или усреднённая по группам частота с удалённой линией; повторные первые разности, пока delta = r1/(1+r1) < 0,25 или d = dmax), возвращающий целочисленный и неокруглённый показатель степенного закона alpha (+2 белый PM до -2 случайное блуждание FM) при любом коэффициенте усреднения; он задаёт число степеней свободы по типу шума для карточек устройств библиотеки измеренных часов | VALIDATED | allantools 2024,6 autocorr_noise_id (A. Wallin и соавторы, LGPL-3.0-or-later, запускается генератором тестовых данных как отдельная программа): независимая реализация опубликованного алгоритма Riley–Greenhall, однозначно определённая величина при заявленных соглашениях. Проверяет идентификатор, а не шумовое содержание каких-либо реальных часов | allan (lag1_noise_id, lag1_acf) |
| Аутентификация навигационных данных Galileo OSNMA на стороне приёмника | osnma + kshana osnma verify: открытый верификатор на чистом Rust на стороне приёмника для Galileo OSNMA (SIS ICD Issue 1,1, Receiver Guidelines Issue 1,3) по страницам I/NAV или потоку u-blox UBX-RXM-SFRBX: открытые ключи в дереве Меркла (DSM-PKR), подпись ECDSA P-256/P-521 для DSM-KROOT, проверка цепочки ключей TESLA (SHA-256 или SHA3-256), проверка MACSEQ и меток (HMAC-SHA-256 или CMAC-AES) для ADKD 0, 4 и 12 с перекрёстной аутентификацией, конец/отзыв/обновление цепочки, обновление и отзыв открытого ключа и сообщение о тревоге; статус каждого спутника Authenticated/Failed/Unavailable с причиной каждого сбоя или задержки. Носит консультативный характер: это не навигационное оборудование с утверждённым типом и не служба целостности навигации; характеристики защиты от спуфинга не заявляются | VALIDATED | Официальные тестовые векторы Galileo OSNMA, опубликованные Европейским центром обслуживания GNSS в приложении к Receiver Guidelines (Test_vectors.zip, sha256 ef9b9afc6ef9e1c57393415cf2a1dc80c4035e7c06123907ea0bb97dd3ccf370): 18 из 18 наборов, 186 382 меток аутентифицировано, 0 с ошибкой, запущено автономно 2026-10-10 (запись доказательств в kshana-pro docs/evidence). Область применения: векторы подтверждают криптографическую проверку (Merkle, KROOT/ECDSA, цепочка TESLA, метки MACK, ADKD 0/4/12) и её результаты на опубликованных сценариях; они используют только HMAC-SHA-256, цепочку SHA-256, 128-битные ключи, 40-битные метки и записи таблицы 33 и 34, поэтому CMAC-AES, цепочки SHA3-256 и другие параметры охвачены только опубликованными тестами известных ответов для примитивов и синтетическими тестами. Укрепление в части доверенного времени, привязки данных, срока действия и подтверждения заголовка проверено синтетическими тестами атак, а не внешним оракулом. Не проверялись: списки отзыва сертификатов, реальные сигналы и реальный приёмник (раскладка слов UBX проверена только на синтетических кадрах), деревья Меркла на SHA3-256, свежесть без независимого времени. Это не служба ЕС | osnma (page, subframe, dsm, merkle, signature, tesla, mac, maclt, navdata, verifier, ubx, cli) |
| Характеризация стабильности частоты | Девиации Аллана, модифицированная и Адамара + идентификация степенного шума с доверительными интервалами χ² | VALIDATED | NIST SP 1065 (Riley) / эталонные девиации Stable32 для NBS14 | allan |
| Стабильность частоты на реальных измеренных часах | Перекрывающиеся девиации Аллана и Адамара на реальном цезиевом стандарте | VALIDATED | Перекрывающиеся ADEV/HDEV Stable32 на измеренном фазовом ряду цезиевого 5071A (allantools) | allan |
| Совпадение оценщиков Аллана на каноническом эталонном ряду Stable32 | Перекрывающиеся девиации Аллана, модифицированная Аллана и времени по всей лестнице AF | VALIDATED | Эталонные девиации Stable32 для PHASE.DAT (Riley; стандартный регрессионный ряд) | allan |
| Стабильность частоты в расширенном диапазоне (Theo1 / TOTDEV) | Theo1 и полная девиация (TOTVAR) — оценщики стабильности на больших τ в расширенном диапазоне, доходящие до ~75% записи, где девиация Аллана перестаёт работать около ~50%; построенный на них гибрид ThêoH с удалённым смещением (allan::theoh_curve) остаётся MODELLED | VALIDATED | allantools 2024,06 — независимая сторонняя библиотека стабильности частоты — theo1 (NIST SP 1065 ур. 30) и totdev (NIST SP 1065 ур. 25) на герметичном наборе данных LCG из NIST SP 1065 §12,4; воспроизводится автономно через tests/fixtures/theo1_totvar/generate_theo1_totvar_reference.py | allan |
| Максимальная ошибка временного интервала (MTIE) — метрика дрейфа времени в телекоммуникациях | MTIE(τ): максимальный размах времени от пика до пика в любом скользящем окне τ = m·tau0, статистика дрейфа ITU-T G.810/G.823/G.8261, по которой записаны пределы сетей синхронизации (маски MTIE) — экстремальная (макс/мин) величина, отличная от среднеквадратического семейства Аллана | VALIDATED | allantools 2024,06 — независимая сторонняя библиотека стабильности частоты — mtie() на герметичном фазовом ряду LCG из NIST SP 1065 §12,4; MTIE — чисто максимально-минимальная статистика, поэтому выход оценщика побитово совпадает с allantools на одинаково построенном массиве фазы (зафиксированные эталонные константы с 15 значащими цифрами находятся в пределах 1 ULP). Воспроизводится автономно через tests/fixtures/mtie/generate_mtie_reference.py | allan (mtie, mtie_curve) |
| Модифицированная девиация Аллана / девиация времени (MDEV / TDEV) | MDEV(τ): перекрывающаяся модифицированная девиация Аллана (оценщик со скользящим окном по вторым разностям, различающий белый и фликкер-шум фазы) и TDEV(τ) = τ/√3·MDEV(τ), статистика дрейфа во временной области ITU-T G.811/G.812/G.823, по которой записаны маски синхронизации | VALIDATED | allantools 2024,06 — независимая сторонняя библиотека стабильности частоты — mdev() и tdev() на герметичном фазовом ряду LCG из NIST SP 1065 §12,4 (тот же ряд, что в строках Theo1/TOTDEV/MTIE), вычисляющие те же однозначно определённые оценщики; совпадение с относительной точностью <1e-9. Воспроизводится автономно через tests/fixtures/mdev_tdev/generate_mdev_tdev_reference.py. (Тест phasedat_reference.rs, зависящий от данных, также сверяет их со Stable32 с точностью 1e-3; это жёсткая герметичная перекрёстная проверка, всегда включённая) | allan (modified_adev, time_deviation) |
| Стабильность частоты оптических часов на реальной измеренной кривой | Восстановление степенного закона (белая FM + нижний предел красного шума) методом NNLS по опубликованной измеренной девиации Аллана оптического часового перехода ⁸⁸Sr — воспроизводя σ_y(τ) и главное масштабирование 4.7e-16/√τ на малых τ с подлинным измеренным нижним пределом на больших τ, а не синтезированный нижний предел оптического класса, который holdover.rs принимает в остальных случаях | VALIDATED | Norcia, Young, Eckner, Oelker, Ye, Kaufman, Science 366:93 (2019), рис. 4, измеренная ADEV; кривая взята дословно из Zenodo 10.5281/zenodo.3382347 (CC-BY-4.0). Область ограничена воспроизведением опубликованной измеренной кривой стабильности — показатели устройств по holdover до порога для класса часов остаются MODELLED | quantum_trade (qparams_from_adev_curve), powerlaw |
| Целостность (RAIM/ARAIM/SBAS) | Разделение решений ARAIM с несколькими гипотезами по ARAIM Airborne Design Document (ADD) v4.2 (araim_reference::add_v42_protection_levels и add_v42_protection_levels_ecef: определение подмножеств по правилам P_THRES и FC_THRES, VPL, HPL, эффективный порог монитора EMT и sigma_acc); обнаружение отказов мгновенным RAIM по χ² с исключением одного спутника (raim::snapshot_raim, raim::snapshot_raim_fde) и HPL/VPL по наклону в геодезической местной системе; и комбинация уровней защиты SBAS по DO-229E (sbas::sbas_protection_level) для службы L1. НЕ охвачено, сказано прямо: удобные функции с единой сигмой raim::araim_raim и raim::araim_dual_raim НЕ соответствуют ADD (на совпадающих входных данных они расходятся со Stanford MAAST на 0,75 м по VPL / 4,04 м по HPL и на 0,39 м по VPL / 1,93 м по HPL, это результат); сравнение для двухчастотного многосозвездного (DFMC) SBAS L5 — это результат (308 пар «пользователь–эпоха» без GEO в видимости защищены Kshana, но не MAAST, чей барьер приёма GEO Kshana не моделирует); у raim::solution_separation_raim нет внешнего сравнения | VALIDATED | Три независимых инструмента, предварительно зарегистрированные (0123cee1) до появления каких-либо тестовых данных или выходов оракула, допуски зафиксированы тогда же. (1) ARAIM: Stanford MAAST для ARAIM 2 (коммит ab70e2a3, BSD-3) mhss_raim_baseline_v5.m, запущен как отдельная программа под GNU Octave 8,4 с прокладкой совместимости unique() на стороне драйвера (раскрыта, без изменения алгоритма), при ADD TOL_PL 0,05 м: реализация на Rust воспроизводит эталонную реализацию ADD на 270 реальных случаях. Раскрыто: путь ADD в Kshana был написан после предварительной регистрации, следуя ADD так, как его реализует MAAST; независимая контрольная проверка рецензентом (270 новых геометрий пользователя и второе сообщение поддержки целостности, MAAST перезапущен на замороженном коде) пройдена на том же пороге. (2) Мгновенный RAIM: RTKLIB v2.4.2-p13 (BSD-2) estpos/valsol/raim_fde в отдельной обвязке на C для обнаружения и исключения; уровень защиты по наклону из RTKLIB matinv/xyz2enu плюс SciPy 1.18.1 chi2/ncx2, где обе стороны вычисляют одну и ту же замкнутую форму (Brown; Parkinson и Axelrad), так что проверка уровня защиты охватывает реализацию, а не формулу. (3) SBAS: Stanford MAAST (коммит 7d32b049) usr_vhpl, без изменений, на собственных записанных вещаниях WAAS из MAAST: уровни L1 в пределах 1e-4 м после перемасштабирования K и равный защищённый набор. Те же сравнения дали результаты, изложенные в возможности: функции ARAIM с единой сигмой не соответствуют ADD, а равенство наборов L5 нарушается на 308 парах без GEO в видимости (уровни на 3267 парах, которые защищают оба инструмента, совпадают до 1e-13 м). K-факторы DO-229E/DO-316 — переписанные константы, а реальная геометрия — входные данные; ни то, ни другое не засчитывается как оракул. Редакция 0,30: уровни защиты snapshot_raim перенесены из радиальной в геодезическую местную систему (до 0,31 м по HPL и 0,14 м по VPL на 16 град. с. ш.) | araim_reference (add_v42_protection_levels, add_v42_protection_levels_ecef); raim (snapshot_raim, snapshot_raim_fde, araim_raim, araim_dual_raim, solution_separation_raim); sbas (sbas_protection_level); lunar |
| Распространение и определение орбиты | SGP4/SDP4, Cowell 6-DOF + возмущения, пакетное и последовательное OD | VALIDATED | Проверочные векторы SGP4 по AIAA 2006-6753 | sgp4, propagator, orbit_determination, precise_od |
| Численный распространитель Cowell и силовая модель | Численный распространитель Cowell с иерархической силовой моделью (задача двух тел, зональные J2–J6, третье тело Солнце/Луна, SRP «пушечного ядра», экспоненциальное торможение); RK4 с удвоением шага / DP5(4) / DOP853 | VALIDATED | Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — независимая библиотека, другой интегратор и другая рекурсия по сферическим гармоникам. Консервативные уровни (задача двух тел → зональные J2–J6 → третье тело Солнце/Луна → SRP «пушечного ядра») согласуются до долей метра на дуге 24 ч, подтверждая интегратор и алгебру сил; уровень торможения и абсолютная достоверность входных данных по эфемеридам Солнца и Луны и плотности остаются MODELLED (только характеризация) | propagator, forces |
| Тень SRP от сплюснутой Земли (включается по выбору) | Освещённая доля SRP с эллипсоидом WGS-84 как затмевающим телом (кажущийся радиус Земли от лимба эллипсоида в сторону Солнца, формула линзы из двух дисков; srp_shadow::oblate_conical_shadow), включается по выбору в силовой модели Cowell через propagator::ForceModel::srp_shadow (по умолчанию: сферическая коническая тень, без изменений) | VALIDATED | Orekit 12,2 (Apache-2.0) SolarRadiationPressure.getLightingRatio с затмевающим телом WGS-84 и сферическим OneAxisEllipsoid, запущен как отдельная программа с Солнцем в той же инерциальной точке. Пороги зарегистрированы заранее в xval/srp-oblate-shadow-orekit/PREREGISTRATION.md (6d6d269c): 1e-6 для обоих и разброс между сплюснутой и сферической моделями > 1e-2; все выполнены. Ось эллипсоида — инерциальная ось z с обеих сторон (без прецессии и нутации) | srp_shadow, forces (srp_accel_with_lit_fraction), propagator |
| SRP по модели «коробка с крыльями» и ECOM2, с частными производными (включается по выбору) | SRP не по модели «пушечного ядра»: модель плоских пластин «коробка с крыльями» (Vallado, ур. 8-44; односторонние панели корпуса, крылья, направленные на Солнце) с таблицами Galileo FOC, IOV и IOV в конце срока службы из метаданных спутников GSC, при номинальном рысканье GNSS, с аналитическими частными производными по фактору излучения и по зеркальному и диффузному коэффициентам каждой панели; и эмпирическая модель ECOM2 (D2/B1) с её частными производными. «Коробка с крыльями» включается по выбору в распространителе Cowell (propagator::ForceModel::box_wing_srp, задаёт поле srp_boxwing) и в модели точного определения орбиты (precise_od::PreciseForceModel::box_wing_srp), заменяя член «пушечного ядра» с cr в качестве фактора излучения; оба по умолчанию равны None, оставляя каждый существующий путь побайтово идентичным. ECOM2 не подключена ни к одной силовой модели | VALIDATED | Orekit 12,2 (Apache-2.0) BoxAndSolarArraySpacecraft с FixedPanel и PointingPanel, SolarRadiationPressure(dRef = 1 а. е., pRef = 1361/c), номинальное рысканье GenericGNSS и ECOM2(nD = 2, nB = 1), запущен как отдельная программа с Солнцем в фиксированных инерциальных положениях; производная фактора излучения из Hipparchus Gradient, производные по панелям как центральные разности Orekit (в Orekit их нет). Пороги зарегистрированы заранее в xval/srp-boxwing-orekit/PREREGISTRATION.md (e59df6bf) до появления какого-либо выхода Orekit: 1e-12 относительных (1e-11 сквозных, 1e-9 для разностей); все выполнены (RESULTS.md). VALIDATED охватывает только вычисление модели: таблицы GSC — переписанные входные данные, а адекватность «коробки с крыльями» для реальных орбит Galileo, тепловое переизлучение, модифицированный закон рысканья при малом beta и затменные развороты не охвачены; прогноз SRP для Galileo остаётся MODELLED | srp_boxwing, propagator, precise_od |
| Тень SRP с потемнением солнечного края (включается по выбору) | Освещённая доля SRP как неэкранированная доля солнечного потока с потемнением к краю (закон в приближении Эддингтона I(mu)/I(1) = 2/5 + 3/5 mu, квадратура Гаусса–Лежандра) над сферической Землёй или Землёй WGS-84 (srp_shadow::limb_darkened_shadow, вариант ShadowModel OblateEarthLimbDarkened) | MODELLED | Внешнего нет: в Orekit 12,2 нет коэффициента освещённости с потемнением к краю. Проверено только по замкнутым формам того же закона | srp_shadow |
| Плотность термосферы по NRLMSISE-00 | Порт эмпирической термосферы NRLMSISE-00 (gtd7 и gtd7d: плотности компонентов, полная массовая плотность с аномальным кислородом, температуры; 24 переключателя; режимы суточного Ap и 3-часового массива ap) из версии на C для общественного достояния исходного NRL Fortran | VALIDATED | pymsis 0.13.0 (MIT) version=0, который запускает NRL Fortran GTD7D в одинарной точности, и порт NRLMSISE-00 на C (выпуск 20190709, общественное достояние), скомпилированный как отдельная программа, плюс 17 опубликованных тестовых выходов дистрибутива на C. Пороги зарегистрированы заранее в xval/nrlmsise00-pymsis/PREREGISTRATION.md (e90ae26a) до появления порта; все выполнены (RESULTS.md). Подтверждает порт, а не точность модели относительно измеренной плотности | nrlmsise00 |
| Уровень плотности для торможения по NRLMSISE-00 (включается по выбору) | forces::DensityModel (по умолчанию Exponential, Nrlmsise00 { f107a, f107, ap }) и propagator::ForceModel::drag_density: квадратичное торможение относительно соосно вращающейся атмосферы с плотностью NRLMSISE-00 в геодезической точке WGS-84 (угол вращения Земли при UT1 = TT, местное солнечное время UT + lon/15), постоянная космическая погода для каждой модели; по умолчанию выключено и побитово идентично | VALIDATED | Orekit 12,2 (Apache-2.0) NumericalPropagator/DormandPrince853 с DragForce поверх собственной реализации NRLMSISE00 в Orekit, запущен как отдельная программа с той же системой угла вращения Земли, формой WGS-84, соглашением о местном солнечном времени (среднее Солнце) и TT вместо UT; настройка соглашений проверена оракул против оракула (Orekit против pymsis, 5.2e-5 по плотности). Пороги зарегистрированы заранее в xval/drag-tier-orekit/PREREGISTRATION.md (21647478): 0,5 м + 1e-3 от смещения под действием торможения и две проверки чувствительности > 100 м; все выполнены. Не охвачено: точность модели относительно измеренной плотности, изменяющаяся во времени космическая погода, ветвь GMAT | forces (density_at, drag_accel_with_density), propagator |
| Стандартное экспоненциальное торможение относительно независимой реализации (экваториальное) | Стандартное торможение распространителя Cowell: квадратичное торможение относительно соосно вращающейся атмосферы с forces::atmospheric_density, кусочно-экспоненциальной таблицей Vallado, таблица 8-4, на сферической высоте (propagator::ForceModel::drag со стандартным вариантом Exponential из forces::DensityModel) | VALIDATED | GMAT R2022a (NASA GSFC, Apache-2.0) GmatConsole с атмосферой Exponential (та же 28-диапазонная таблица), точечной массой Земли и PrinceDormand78, запущен, но никогда не включается в поставку. Пороги зарегистрированы заранее в xval/drag-exponential-gmat/PREREGISTRATION.md (640c85c1) по смещению от торможения с каждой стороны (прогон с торможением минус прогон без него), что исключает два значения mu Земли и интеграторы; все выполнены (RESULTS.md). GMAT принимает геодезическую высоту, а kshana — сферическую: они совпадают только на экваторе, поэтому VALIDATED охватывает экваториальные орбиты; вне экватора модели различаются по построению (10,4 % от смещения за 24 ч при 51,6 град., 400 км). В публичной сборке GMAT нет NRLMSISE-00 (плагин отсутствует), поэтому для уровня NRLMSISE-00 есть только оракул Orekit. Точность таблицы относительно измеренной плотности не охвачена | forces (atmospheric_density, drag_accel), propagator |
| Солнце и Луна по DE440 в силовой модели Cowell (включается по выбору) | Уровень эфемерид, включаемый по выбору, для членов третьего тела и SRP численной силовой модели Cowell ForceModel: геоцентрические Солнце и Луна из любого EphemerisProvider (ядро DE440 SPK через KernelEphemeris) при TDB = TT + (TDB - TT), с отказом от поставщика, не способного обслужить эпоху, и подсчётом любого возврата к аналитическому ряду; по умолчанию выключено | MODELLED | Orekit 12,2 (Apache-2.0) NumericalPropagator/DormandPrince853 с ThirdBodyAttraction и SolarRadiationPressure на собственном читателе DE440 в Orekit (orekit-data lnxp1990.440), запущен как отдельная программа; kshana читает побитово проверенный по SPICE фрагмент NAIF de440s.bsp. Пороги зарегистрированы заранее в xval/propagator-de440-orekit/PREREGISTRATION.md (22a5a01d). Порог по орбите (0,5 м) и контроль чувствительности выполнены, но порог по положению Солнца и Луны (3 м / 0,2 м) не достигнут: 6,39 м / 0,244 м. SPICE, читающий то же ядро на его точном TDB, расходится с Orekit на ту же величину (6,25 м / 0,240 м), поэтому разрыв лежит между путём NAIF de440s и читателем DE440 или шкалой времени в Orekit; причина не выделена. Зафиксировано и закреплено, поэтому строка остаётся MODELLED | propagator (ForceModel::with_ephemeris, ForceEphemeris), ephem_provider |
| Атмосферный прилив S1 (включается по выбору) | Суточный прилив S1 атмосферного давления как возмущение геопотенциала: модель N1 Biancale и Bode (2006), степени от 2 до 6, по формуле нагрузки IERS 2010, ур. 6,21 (tides::atmospheric_tide_s1, s1_air_tide_acceleration), включается по выбору в силовых моделях Cowell и точных (air_tide_s1, по умолчанию выключено) | MODELLED | Внешнего для эффекта геопотенциала нет. 24 коэффициента переписаны из GFZ STR06/01, таблица 1, модель N1, и перепроверены строка за строкой по отчёту (SHA-256 890865ae); степени 0, 1, 7 и 8 не используются. Ray и Ponte (2003) не публикуют таблицы сферических гармоник, поэтому второй источник не сравнивался | tides, propagator, precise_od |
| Коэффициенты атмосферного прилива S2 в соглашении IERS | Гармоники давления воздуха S2 по Ray (2001) (n <= 4, прямые и обратные) преобразованы в полностью нормированную форму с опережением по синусу по IERS 2010, ур. 6.20-6.21 (амплитуда, делённая на N_nm, epsilon = 90 град. - psi) и применены как член S2 в tides::atmospheric_tide | VALIDATED | Biancale и Bode, GFZ Scientific Technical Report STR06/01 (2006), таблица 5, модель A2: Ray (2001) опубликована в полностью нормированных гармониках с фазами с опережением по синусу, независимое представление той же модели. Зарегистрировано заранее в xval/s2-air-tide-fix/PREREGISTRATION.md (5e31c37a) вместе с исправлением, которое оно подтверждает. Охватывает только преобразование коэффициентов; для геопотенциального эффекта воздушного прилива внешнего оракула нет | tides (s2_air_waves, atmospheric_tide) |
| Тессеральный геопотенциал в распространителе Cowell | Опциональное тессеральное поле EGM2008 (до степени и порядка 70) как центральная гравитация численной модели сил Cowell ForceModel, вычисляемое в земной системе координат, повёрнутой на угол вращения Земли IAU 2000 (или по цепочке CIO GCRS–ITRS); по умолчанию выключено, поэтому ни один существующий результат не меняется | VALIDATED | Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 с HolmesFeatherstoneAttractionModel на тех же коэффициентах (tools/egm2008_to70.gfc) в системе координат тела, повёрнутой по той же формуле угла вращения Земли, запущенный как отдельная программа. Пороги предварительно зарегистрированы (f0e0e65, изменены до любого сравнения в 2da899a): |dr| <= 0,5 м и |dv| <= 5e-4 м/с, а оба отрицательных контроля промахиваются более чем на 100 м; все пороги выполнены, затем пороги ужесточены до 0,1 м и 1e-4 м/с. Не проверено: точность ориентации Земли (обе стороны используют UT1 = TT без прецессии и нутации в системе Era), вариант системы Cio (только внутренняя проверка), степени выше 70 | propagator (Geopotential, EarthFixedFrame), gravity_sh |
| Гравитация в сферических гармониках высокой степени (EGM2008 до 2190) | Вычисление полностью нормированного поля до степени 2190, устойчивое к потере значимости и к полюсам (SphericalHarmonicField::acceleration_hf / potential_hf, модифицированная прямая столбцовая рекурсия Holmes-Featherstone 2002 с градиентом, свободным от 1/cos phi), потоковый загрузчик ICGEM .gfc (from_gfc_file / from_gfc_reader; полное поле EGM2008 загружается во время работы, а не входит в поставку), а также вычислитель Holmes-Featherstone, выбираемый в опциональном геопотенциале Cowell | MODELLED | Orekit 12,2 (Apache-2.0) HolmesFeatherstoneAttractionModel и pyshtools 4.14.1 (BSD-3-Clause) MakeGravGridPoint, запущенные как отдельные программы; пороги предварительно зарегистрированы в xval/high-degree-gravity/PREREGISTRATION.md (276c869f) и xval/cowell-tesseral-200-orekit/PREREGISTRATION.md (0aa312a6). Orekit согласуется везде, где определён, но pyshtools не достигает своего предварительно зарегистрированного порога в двух приполярных точках (до 7.3e-10 м/с^2; проверка в mpmath с 50 разрядами относит ошибку на счёт pyshtools), на самой полярной оси эталонного значения нет, а предварительно зарегистрированный контроль чувствительности к степени 70 для 24-часовой орбиты не выполнен (0,726 м против > 1 м). Каждый промах записан, а не подогнан, поэтому строка остаётся MODELLED | gravity_sh, propagator (FieldEvaluator) |
| Интегратор DOP853 | Явный метод Рунге–Кутты Hairer DOP853 порядка 8(5 3) с объединённой оценкой погрешности 5-го/3-го порядка, контроллером шага SciPy/Hairer, автоматическим начальным шагом, защитным ограничителем шага с отказом по умолчанию и плотным выходом 7-го порядка; выбирается как вариант интегратора пропагатора Dop853 / propagator::propagate_dop853 | VALIDATED | SciPy 1.18.1 (BSD-3-Clause) solve_ivp(method=DOP853) и его процедуры одного шага, нормы ошибки, плотного выхода и начального шага, независимая реализация; точные двухтельные состояния из mpmath 1.3.0 с 40 разрядами. Пороги предварительно зарегистрированы в xval/dop853-scipy/PREREGISTRATION.md (ae1b25e) до первого сравнения; все выполнены (xval/dop853-scipy/RESULTS.md). В полных прогонах первый шаг SciPy передаётся обоим решателям; процедура начального шага сравнивается отдельно. Не охвачено: RKF7(8), обнаружение жёсткости, определение событий | integrator, propagator |
| Надёжный решатель уравнения Кеплера | Эллиптический решатель Кеплера для всех 0 <= e < 1 и всех средних аномалий: кубический стартёр Markley (1995) и поправка пятого порядка, невязка без потери значимости при вычитании (1-e)E + e(E - sin E) - M и защищённая доводка методом Ньютона (kepler::solve_kepler_markley, propagator::solve_kepler_robust) | VALIDATED | mpmath 1.3.0 (BSD-3-Clause), 50-разрядные корни по точным двоичным входным данным. Пороги предварительно зарегистрированы в xval/kepler-mpmath/PREREGISTRATION.md (df22174), заданы относительно |E| с аргументом об обусловленности при e -> 1, M -> 0; все выполнены (xval/kepler-mpmath/RESULTS.md). Прежние решатели (solve_kepler_checked, orbit::solve_kepler, ephem::solve_kepler) численно не изменены, потому что от них зависят зафиксированные результаты, и эта строка их не охватывает | kepler, propagator |
| Пакетное определение орбиты по дальности, скорости изменения дальности и азимуту/углу места с маскированием станций | Восстановление состояния на эпоху по смешанным измерениям дальности, скорости изменения дальности и азимута/угла места выше маски по углу места методом Гаусса–Ньютона на H = (dh/dx(t)) Phi(t, t0): аналитические частные производные измерений и вариационная матрица перехода состояния с аналитическими производными двухтельной задачи и J2 (интегрируется методом RK4, это не STM в замкнутой форме) | MODELLED | Orekit 12,2 (Apache-2.0) BatchLSEstimator с собственными мгновенными геометрическими измерениями RangeRate и AzEl (перекрёстно проверенными по TopocentricFrame), запущенный как отдельная программа на одинаковых замаскированных наблюдениях с фиксированным начальным значением. Пороги предварительно зарегистрированы в xval/od-measurements-orekit/PREREGISTRATION.md (0cf9076). Все пороги выполнены, кроме B4, согласия бесшумного состояния в 1 см, не достигнутого в 2 из 4 сценариев (1,46, 1,74 см): собственная бесшумная оценка Orekit находится на таком расстоянии от своей смоделированной истины (причина на стороне Orekit не выявлена). Записано и зафиксировано, поэтому строка остаётся MODELLED. Не моделируется: время распространения света, аберрация, рефракция, вращение Земли, последовательный фильтр для этих типов измерений | orbit_determination (determine_orbit_batch_tracking, propagate_with_stm, is_visible), batch_ls (gauss_newton_analytic) |
| Взвешивание наблюдений по кодам точности SP3 | Сопоставление кодов точности SP3 (экспоненты в заголовке ++ в 2^n мм, база %f, стандартные отклонения base^n мм для каждой записи) со средними квадратическими погрешностями положения для каждого наблюдения в движке прецизионного определения орбиты (sp3::parse_sp3_accuracy, Sp3Accuracy::position_sigma_m) | MODELLED | Внешнего эталона нет: веса являются выбором модели (формат SP3 определяет код лишь как показатель точности от производителя; здесь он читается как одно сигма по каждой оси). Существующие записанные прогоны агентств не изменены | sp3, precise_od |
| Гравитационные поля планет из таблиц PDS SHADR | Чтение таблиц сферических гармоник PDS SHADR (from_shadr в SphericalHarmonicField, src/gravity_pds.rs: преобразование единиц, C00 = 1 задано, проверки полноты и нормировки) и вычисление гравитации в системе координат тела для Марса GMM-3 (степень и порядок 120) и лунного поля GRAIL GL0660B (степень и порядок 660) | VALIDATED | pyshtools 4.14.1 (BSD-3-Clause), читающий те же файлы PDS и вычисляющий гравитацию в точке, запущенный как отдельная программа, а также опубликованные заголовки и метки продуктов PDS. Пороги предварительно зарегистрированы в xval/planetary-gravity-pyshtools/PREREGISTRATION.md (32c5b50); все выполнены (RESULTS.md). Данные: NASA PDS Geosciences Node, общественное достояние; обрезки до степени 20 входят в поставку с NOTICE, полные файлы загружаются во время теста | gravity_pds, gravity_sh |
| Подключение опубликованного гравитационного поля к телу | with_gravity_field (в Body, src/gravity_pds.rs): подключает любое загруженное поле сферических гармоник (например GMM-3 или GL0660B) к Body, чтобы пропагатор вычислял его в системе координат тела; опционально, тела по умолчанию не меняются | MODELLED | Только внутренняя согласованность. Каждое опубликованное поле определено в системе координат тела, принятой его производителем (GMM-3 в марсианской системе Konopliv et al. 2006, GL0660B в лунной системе главных осей DE421), тогда как поле вычисляется в системе IAU; это смещение не моделируется | gravity_pds, body, propagator, mars_frame |
| Пакетное и последовательное определение орбиты | Восстановление состояния на эпоху [r,v] по дальностям от наземных станций с помощью пакетного дифференциального корректора Гаусса–Ньютона и последовательного фильтра на модели сил «двухтельная задача + J2» | VALIDATED | Orekit 12,2 (CS GROUP, Apache-2.0) BatchLSEstimator (Левенберга–Марквардта) + KalmanEstimator (EKF) — независимая сторонняя библиотека оценивания на согласованной модели сил; восстановленное состояние на эпоху и СКО послеподгоночных невязок согласуются в пределах <1e-3 м без шума и <3 м при уровне шума 5 м | orbit_determination, precise_od (batch_ls::gauss_newton, fusion::ukf) |
| Решатель времени распространения света для радиометрии дальнего космоса | Запаздывающее решение времени распространения света на прямом участке τ = |r_rx − r_target(t−τ)|/c для радиометрической навигации в дальнем космосе (Земля→Марс/Солнце/Луна) | VALIDATED | ANISE 0,10 (Nyx Space, MPL-2.0), время распространения света с аберрацией по сходящемуся методу Ньютона (Aberration::CN; эквивалент spkapo из SPICE) на эфемеридах JPL DE440 — независимая реализация SPICE на Rust; решатель запаздывания kshana с неподвижной точкой совпал с ним с точностью до долей наносекунды. Более широкие показатели Доплера / Шапиро / OD с редуцированной динамикой остаются MODELLED | radiometric (light_time_solution) |
| Положение спутника по бортовым эфемеридам (мульти-GNSS RINEX) | Кеплеровы бортовые эфемериды IS-GPS-200 / Galileo-OS / BeiDou-OS → положение спутника в ECEF по разобранной навигационной записи RINEX-3 | VALIDATED | RTKLIB v2.4.2-p13 eph2pos(), скомпилированный из исходного кода на C (T. Takasu, BSD-2-Clause) — независимая реализация IS-GPS-200/SIS-ICD, получившая те же навигационные записи RINEX-3; положение спутника в ECEF совпало с точностью до ~62 нм. (Интерполяция прецизионных эфемерид SP3 проверяется отдельно — см. «Интерполяция прецизионных эфемерид SP3») | rinex (parse_nav, RinexEphemeris::sv_position_ecef) |
| Интерполяция прецизионных эфемерид SP3 | Интерполяция Лагранжа по стандарту IGS для положений спутников из прецизионных эфемерид SP3 с поправкой на вращение Земли для каждого узла (поворот каждого узла на ω⊕·(t_node−t) в связанную с Землёй систему момента запроса до подгонки полинома) | VALIDATED | RTKLIB peph2pos(), скомпилированный из исходного кода на C (preceph.c; T. Takasu, BSD-2-Clause) — фактический эталон IGS, независимая реализация; интерполятор kshana (теперь с той же поправкой на вращение Земли для узлов) совпал с ним с точностью до ~15 нм на реальном продукте SP3, тогда как до поправки расхождение составляло ~5,5 см | sp3 (Sp3Interpolator::position_ecef) |
| Кодировщики навигационных сообщений помимо GPS LNAV (GPS CNAV, Galileo I/NAV и F/NAV) | Сообщения GPS CNAV типов 10/11/30, слова Galileo I/NAV типов 1–5 в номинальных чётных/нечётных страницах и страницы Galileo F/NAV типов 1–4: упаковка и квантование полей по ICD, CRC-24Q, свёрточное кодирование со скоростью 1/2 и K=7 (G2 инвертирован для Galileo), блочное перемежение и синхропоследовательности, с парными тестовыми декодерами | MODELLED | Только внутренний прямой и обратный проход и известные ответы из ICD; ни один сторонний декодер не запускался (стенд RTKLIB/GNSS-SDR, читающий KSHANA_NAVMSG_ORACLE_JSON, зависит от наличия данных). MODELLED | gnss_navmsg (gps_cnav, gal_inav, gal_fnav, fec) |
| Читатель глобальных карт ионосферы IONEX и интерполяция на реальной CODE GIM | Читатель IONEX 1,0 (заголовок, значения I5 с фиксированными столбцами, карты TEC и RMS, абсолютные эпохи, пропущенные значения) с билинейной пространственной интерполяцией, интерполяцией по времени, предусмотренной форматом (ближайшая / последовательная / с поворотом карты, формулы 1–3), и TEC вдоль наклонной трассы в модели тонкой оболочки | VALIDATED | Напечатанные значения CODE GIM (точные в каждом узле; карта загружается во время теста и не включена в репозиторий, поскольку её лицензия не подтверждена) и независимая повторная реализация формул интерполяции IONEX 1,0 на стандартной библиотеке Python, зафиксированная вместе с тестовыми данными (пороги предварительно зарегистрированы e4d8b1f, 1e-9 TECU). Проверка третьей стороной (B6, предварительно зарегистрирована, первый прогон): RTKLIB v2.4.2-p13 iontec (BSD-2-Clause, запущен как отдельный инструмент) в 6885 точках запроса согласуется с IonexFile::vtec_at в пределах 3.6e-13 TECU в обоих режимах интерполяции при пороге 1e-5 TECU. Зависит от наличия данных: CODE GIM загружается во время теста, закреплена по SHA; RTKLIB читает файл целиком, потому что его getindex отвергает обрезку по широте. tests/fixtures/ionex_code_gim/fetch.sh загружает её и проверяет SHA-256, тест завершается ошибкой при любых других байтах, а run_rtklib.sh — документированный путь воспроизведения (нужен доступ к сети). Повышено до VALIDATED решением владельца на основании доказательств, зависящих от наличия данных (2026-10-13) | ionex (parse_ionex, parse_ionex_file, IonexFile::vtec_at, IonexFile::slant_tec_at, interpolate_tec_in_time, TecGrid::vtec_at) |
| Сглаживание кода по несущей по методу Hatch на реальных наблюдениях RINEX | Фильтр Hatch без расходимости (безионосферный код, сглаживаемый безионосферной несущей, окно N эпох, перезапуск при потере захвата, скачке геометрически-независимой комбинации или пропуске) в сборке прецизионного одиночного определения положения (PPP) | MODELLED | НАХОДКА по опубликованной координате ITRF2020 станции WTZR: предварительно зарегистрированные пороги (медиана и p95 после сглаживания не более 0,6 от исходных; tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_HATCH.md) не достигнуты, отношения 0,718 и 0,923; остаточная ошибка метрового уровня носит характер смещения (смещение кода C1C, антенна, приливы, долгопериодная многолучевость), а не белого шума, который устраняет сглаживание. MODELLED: статистика фильтра проверена внутренне | hatch (HatchFilter), pvt (assemble_epoch_precise_smoothed, CarrierSmoother) |
| Двойные разности RTK с фиксацией целых чисел по LAMBDA на реальных наблюдениях RINEX | Относительное позиционирование на короткой базе по реальным двухчастотным кодовым и фазовым измерениям GPS: двойные разности относительно самого высокого спутника с их полной ковариацией, плавающий фильтр Калмана по базе и однократным разностям неоднозначностей с повторной инициализацией при срывах, целочисленный метод наименьших квадратов LAMBDA с проверкой по отношению и база, обусловленная зафиксированными целыми числами | VALIDATED | Опубликованные координаты ITRF2020 станций WTZR и WTZZ (IGN ITRF2020_GNSS.SSC, решение 3, с высотами антенн из RINEX), дающие эталонную базу; пороги предварительно зарегистрированы в tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_RTK.md до написания кода. Только короткая база: ионосферные и тропосферные двойные разности не моделируются | rtk_real (run_rtk), lambda (resolve) |
| Решение по времени приёмника методом PPP относительно финальных часов станции IGS | Часы приёмника, оцениваемые статическим плавающим фильтром PPP по реальным двухчастотным кодовым и фазовым измерениям GPS с финальными орбитами и часами IGS: передача времени от приёмника ко времени IGS, безионосферное решение по времени PPP. | VALIDATED | Финальные комбинированные часы IGS для станции WTZR (записи AR файла IGS0OPSFIN_20250550000_01D_05M_CLK, SHA-256 d19f3d45...993d, комбинация сетевых решений нескольких аналитических центров; продукты IGS, свободное использование с указанием авторства); пороги предварительно зарегистрированы в xval/ppp-time/PREREGISTRATION.md до любого сравнения; все выполнены с первого прогона. ЧТО НЕ ПРОВЕРЕНО: одна станция и одно двухчасовое окно после сходимости; время IGS, а не UTC(k); постоянное смещение включает кодовые смещения приёмника и ограничено, а не откалибровано; прослеживаемости к Circular T нет. | ppp_real (run_ppp, PppEpoch::clock_m) |
| Плавающее прецизионное определение положения (PPP) на реальных наблюдениях RINEX | Статический плавающий расширенный фильтр Калмана PPP по реальным двухчастотным кодовым и фазовым измерениям GPS с финальными орбитами и часами IGS: безионосферная комбинация, смещения антенн спутника и приёмника (вариации приёмника), твёрдый земной прилив, эффект намотки фазы, задержка Шапиро, оцениваемая зенитная влажная задержка, плавающие неоднозначности по дугам с обнаружением срывов по геометрически-независимой комбинации / Melbourne-Wübbena | VALIDATED | Опубликованная координата ITRF2020 станции WTZR (IGN ITRF2020_GNSS.SSC, решение 3, перенесённая с её скоростью) — пороги предварительно зарегистрированы в tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_PPP.md до написания фильтра; разработка только на совместно расположенной станции WTZZ. Не моделируется: океаническая нагрузка, PCV спутника, разрешение целочисленных неоднозначностей | ppp_real (run_ppp, parse_antex_receiver, solid_tide_ecef, phase_windup) |
| Чтение навигационных файлов RINEX 4 | Навигационные файлы RINEX 4.00-4.02: записи > EPH для GPS LNAV, Galileo I/NAV и F/NAV, BeiDou D1/D2 и QZSS LNAV декодируются в тип бортовых эфемерид; записи CNAV, CNV1-3, FDMA, SBAS, STO, EOP и ION пропускаются до заголовка следующей записи; запись, в заголовке которой указан другой спутник, и усечённая запись отклоняются | VALIDATED | Объединённый широковещательный файл RINEX 3 от IGS за те же сутки (опубликованные данные, записанные другим генератором файлов по тем же бортовым сообщениям); пороги предварительно зарегистрированы в tests/fixtures/brdc_rinex4_2026200/PREREGISTRATION.md (7aa264b) до первого прогона | rinex (parse_nav, parse_nav_with) |
| Чтение файлов наблюдений RINEX 4 | Заголовки наблюдений RINEX 4.0x (DOI, LICENSE OF USE, STATION INFORMATION, MERGED FILE; метки сопоставляются в столбцах 61–80 для версии 4 и выше) и записи эпох | MODELLED | Соответствие формату на реальном опубликованном файле RINEX 4,00 (прочитанные значения равны напечатанным в файле литералам) и на заголовке, выведенном из спецификации; независимый читатель не запускался, поэтому MODELLED | rinex_obs (parse_obs) |
| Положение геостационарного спутника BeiDou по бортовым эфемеридам | BDS-SIS-ICD-B1I v3.0 §5.2.4.12: положение геостационарного спутника по бортовым эфемеридам (квазиинерциальная система, затем Rz(Ω̇e·tk)·Rx(−5°)), включается опционально через поле include_beidou_geo в NavParseOptions, поэтому читатель по умолчанию по-прежнему пропускает GEO | MODELLED | Предварительно зарегистрировано (7aa264b, 110fef9) относительно прецизионной орбиты IGS MGEX с GEO; такой продукт оказался недоступен в сеансе, где это создавалось, поэтому сравнение ожидается, а строка остаётся MODELLED (проверено только по опубликованным номинальным позициям GEO) | rinex (RinexEphemeris::sv_position_ecef_bds_geo, NavParseOptions) |
| Интерполяция прецизионных часов SP3 | Смещение часов спутника между табулированными узлами часов SP3 линейной интерполяцией по двум охватывающим допустимым узлам (схема RTKLIB pephclk; метка плохих часов пропускается) и те же узлы, переданные в цепочку прецизионных продуктов как записи, эквивалентные часам RINEX | VALIDATED | Финальная комбинация часов спутников IGS с шагом 30 с (IGS0OPSFIN 30S CLK, 2025-02-24): опубликованные оценки часов в моменты запроса, а не интерполированные по SP3; пороги предварительно зарегистрированы в tests/fixtures/sp3_clock_igs_oracle/PREREGISTRATION.md до первого прогона (СКО 0,15 нс, p95 0,30 нс, медиана по узлам 1e-12 с, различимость 2x) | sp3 (Sp3File::clock_s, clock_nodes), precise_products (ClockRinex::from_sp3) |
| Тесно связанная комплексная система GNSS/INS по фазе несущей с плавающими неоднозначностями | Фильтр Калмана в пространстве ошибок по 15 состояниям INS, двухкомпонентным часам приёмника и одной плавающей неоднозначности несущей на каждый отслеживаемый спутник; псевдодальность, фаза несущей и опционально скорость изменения дальности от орбитальной группировки Walker на SGP4 (время распространения света и эффект Саньяка), поправки Klobuchar и Saastamoinen/Niell, применяемые в контуре в собственном положении фильтра; обнаружение срывов по разности несущей во времени с порогом для каждого спутника, расширяемым на неопределённость скорости; повторная инициализация неоднозначностей при срывах и при повторном захвате | MODELLED | Внутренняя согласованность: измерения синтезируются из моделей, которые использует фильтр (χ² NEES/NIS по значениям seed, сходимость без шума, внесение срывов). MODELLED; реальные данные приёмника и сторонний фильтр не сравниваются | fusion::carrier_tc (run_carrier_tc, CarrierTcCfg), fusion::trajectory (truth_epochs) |
| Морские, железнодорожные и авиационные пакеты GNSS/INS с возможностью тесной связи | Три сценария gnss-ins на библиотеке траекторий (судно, идущее зигзагом со скоростью 8 м/с, с пятиминутным перерывом; поезд, проходящий через выемку с двумя видимыми спутниками и туннель; самолёт, у которого перерыв охватывает разворот с креном 25 градусов) и необязательная таблица [tight] пакета: псевдодальности от орбитальной группировки Walker на SGP4, объединяемые замкнутым навигатором, при этом в номинальном режиме используются все спутники выше маски, а в ухудшенном — несколько самых высоких | MODELLED | Внутренне: показатели качества каждого пакета относительно его собственной истины и сравнение слабой и тесной связи на одинаковых входных данных. MODELLED; сравнение аудита с NaveGo не выполнялось | fusion::pack (TightCfg, [tight]), scenarios gnss-ins-maritime / gnss-ins-rail / gnss-ins-aviation |
| Связанный фильтр PNT по псевдодальностям с состоянием смещения и 3D-расширением в пакете fusion | Один сводный фильтр Калмана по положению, скорости, фазе и частоте часов, получающий псевдодальности, которые связывают положение и часы (обновления в форме Джозефа с учётом взаимной ковариации); вариант 1-DOF, дополненный состоянием постоянного смещения акселерометра, который пакет fusion запускает в режиме [coupled]; и 3D-версия с 8 состояниями со строками линии визирования | MODELLED | Внутренняя согласованность: истина смоделирована по собственным моделям фильтров (χ² NEES по значениям seed Монте-Карло, несвязанный пакет на одинаковых датчиках). MODELLED | fusion::coupled (CoupledPntFilter, CoupledPntBiasFilter, CoupledPnt3d), fusion (run_coupled_suite), hybrid (CoupledCfg) |
| Слабосвязанный фильтр Калмана GNSS/INS с плечом рычага на наборе данных KF-GINS | Замкнутый 15-мерный фильтр Калмана в пространстве ошибок, управляемый приращениями IMU, с объединением положений антенны GNSS через модель плеча рычага H = [I 0 −[(C_b^n l_b)×] 0 0], настраиваемый из файла KF-GINS YAML (начальное состояние и сигмы, ARW/VRW, смещения Гаусса–Маркова) | VALIDATED | Опубликованная эталонная траектория набора данных и программа KF-GINS на C++ (GPL-3.0, коммит 8291a93e, запущена как отдельный инструмент); пороги предварительно зарегистрированы в xval/kfgins/PREREGISTRATION.md, и KF-GINS не запускался на этих данных до этой регистрации (проверено в его разделе Results). Все шесть порогов выполнены с первого прогона. ЗАВИСИТ ОТ ДАННЫХ: демонстрационный набор KF-GINS (реальные IMU Leador-A15 и RTK GNSS с эталонной траекторией) не имеет лицензии, поэтому не включён в репозиторий; xval/kfgins/fetch.sh загружает его во время теста с закреплённым SHA-256 каждого файла, и тест завершается ошибкой при несовпадении; путь воспроизведения, требующий доступа к сети, описан в xval/kfgins/PREREGISTRATION.md. Повышено до VALIDATED решением владельца на основании доказательств, зависящих от наличия данных (2026-10-13) | fusion::kfgins (run, loaders, score), fusion::closed_loop (propagate_increments, fuse_position_lever_arm), fusion::gnss_ins_ekf (update_position_lever_arm) |
| Экспорт тестового стенда, прочитанный читателями файлов движения симулятора (gps-sdr-sim) | Файлы движения экспорта стенда, поданные собственным читателям файлов открытого симулятора GNSS, возвращаются как экспортированная траектория: файл NMEA GGA (-g), срез «время/широта/долгота/высота» из CSV движения (-x) и его срез «время/x/y/z» (-u), на 6 сценариях gnss-ins (включая морские, железнодорожные и авиационные пакеты, прочитанные до предела симулятора в 3000 отсчётов) и 2 стационарных. Только движение; никакой сигнал не записывается и не генерируется. | VALIDATED | ЧТО ПРОВЕРЕНО ВНЕШНЕ, сказано узко: gps-sdr-sim (MIT, коммит 28ca29a6) readNmeaGGA, readUserMotion и readUserMotionLLH с собственным llh2xyz WGS 84, вызываемые через xval/testbench-gpssdrsim/driver.c (ни одна функция сигнала не вызывается), в сравнении со связанными с Землёй столбцами CSV движения строка за строкой, с порогами, предварительно зарегистрированными в xval/testbench-gpssdrsim/PREREGISTRATION.md до любого прогона: каждый отсчёт прочитан во всех 8 сценариях; NMEA в худшем случае 1,21 мм (порог 1 см); срез LLH в худшем случае 0,145 мм (порог 1 мм); четырёхстолбцовый связанный с Землёй срез точен (порог 1 мкм, поправка 1); строки gnss-ins на сетке симулятора 10 Гц с точностью до 2.3e-13 с. НАХОДКА (прогон 1, зафиксирована): CSV с удалённым заголовком и полной шириной не читается с ключом -u, потому что 100-символьный буфер строки читателя разбивает каждую 161-символьную строку на два отсчёта; docs/TEST-BENCH.md даёт четырёхстолбцовый срез. ЧТО НЕ ПРОВЕРЕНО: физика истинной траектории сценария; сигнальный выход gps-sdr-sim; читатель любого другого симулятора; любой приёмник. | interop::testbench (write_motion_csv, write_nmea, export) |
| Библиотека траекторий GNSS/INS и импорт истинных данных из CSV | Выбираемые профили движения для пакета gnss-ins (прямая, фигура 8, городское движение с остановками, набор высоты самолётом и координированный разворот, съёмочный дрон), заданные командами скоростей Эйлера и ускорения вдоль трека, замкнутыми на истинное состояние с кинематическим IMU (центростремительная, гравитационная и кориолисова составляющие), и импортированная из CSV истинная траектория, превращённая в IMU, который её воспроизводит; прежний дрейф-прогон без изменений, если профиль не задан | MODELLED | Внутренне: тождества кинематики твёрдого тела, прямой и обратный проход через CSV и собственная ковариация фильтра. MODELLED (реальный журнал поездки не сравнивается) | fusion::trajectory (TrajectoryCfg, Trajectory, kinematic_imu, parse_truth_csv), fusion::pack ([trajectory]) |
| Механизация бесплатформенной INS | Бесплатформенная инерциальная механизация WGS-84 NED с кватернионной ориентацией (с компенсацией конусного и скалинг-движения), распространяющая навигационное состояние по приращениям (Δθ, Δv) | VALIDATED | NaveGo v1.4 (R. Gonzalez et al., LGPL-3), запущенный в Octave — независимый опубликованный инструментарий INS, получающий тот же поток приращений (Δθ,Δv). Ориентация совпадает бит в бит (те же соглашения NED / кватернион со скаляром первым / скорость вращения Земли / транспортная скорость); скорость и положение согласуются с точностью до двух документированных различий — члена северной гравитации от отклонения отвеса, который NaveGo учитывает, а kshana намеренно опускает (гравитация по отвесу; совпадает с замкнутой формой Groves до каждой цифры, с проверкой нижней границы на правдоподобие), и различий интеграторов порядка O(dt²) — это не ошибки механизации | inertial::mechanization, inertial::attitude, inertial::imu_errors |
| Синтез функционалов гравитационного поля (навигационная карта с гравитационной коррекцией / без GNSS) | Модуль гравитации в сферических гармониках + возмущение (мГал) по любой модели ICGEM .gfc; нормальная гравитация GRS80 | VALIDATED | Нормальная гравитация Сомильяна GRS80 (Moritz 1980, IAG) + опубликованные γ_e/γ_p; реальное поле ICGEM EGM2008 | gravity_sh |
| Земля–Луна, CR3BP, NRHO 9:2 относительно орбиты, по которой летел CAPSTONE | Круговая ограниченная NRHO (околопрямолинейная гало-орбита) 9:2 у L2, южная, которую исправляет cr3bp::differential_correct_halo (семейство орбит Gateway и CAPSTONE), сравнивается по средней геометрии (период, радиус перилуния, радиус аполуния) с орбитой, по которой CAPSTONE фактически летел. Измерение того, насколько хорошо член CR3BP описывает реальную орбиту; орбита CR3BP не является орбитой эфемеридной модели и не сравнивается эпоха за эпохой | MODELLED | Измерено относительно реконструированных эфемерид CAPSTONE из JPL Horizons (NAIF -1176, CAPSTONE_merged, ICRF с центром в Луне, 2023-03-01..31 с шагом 10 мин), зафиксированных байт в байт (tests/fixtures/capstone_horizons/, NOTICE.md), предварительно зарегистрировано 4e868170 до загрузки, как измерение с порогами по средней геометрии. Это не валидация: CR3BP не учитывает Солнце, эксцентриситет Луны и поддержание орбиты, которое выполнял CAPSTONE, поэтому пороги описывают, насколько репрезентативна модельная орбита, а не точность. Результаты: docs/design/evidence/cap29d-capstone-nrho/RESULTS.md | cr3bp (differential_correct_halo, PeriodicOrbit) |
| Вращающиеся состояния CR3BP, отображённые в ICRF с центром в Луне на линии Земля–Луна по DE440 | cr3bp::to_moon_centred_icrf отображает безразмерное вращающееся состояние CR3BP Земля–Луна в положение и скорость в ICRF с центром в Луне на мгновенной линии Земля–Луна (единица длины — расстояние Земля–Луна, единица времени — обратная орбитальная скорость, полная угловая скорость системы, включая её внеплоскостную составляющую от ускорения Луны), с обратным преобразованием from_moon_centred_icrf, а cr3bp::to_moon_centred_icrf_de440 читает геоцентрическое состояние Луны из DE440 SPK. Оно отображает состояния; оно не превращает орбиту CR3BP в орбиту эфемеридной модели | VALIDATED | NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.3.0) sxform двухвекторной динамической системы координат (первичный +X вдоль положения Луны относительно Земли, вторичный +Y вдоль её скорости, de440s), применённый к размерному вращающемуся состоянию, построенному из собственного состояния Луны в SPICE, отдельной программой, которая не вызывает код Kshana (tests/fixtures/cr3bp_to_mci_spice/, NOTICE.md). Предварительно зарегистрировано 2313eb1b, изменено до любого прогона в d5ef79b3, чтобы включить внеплоскостную угловую скорость системы (без неё скорость отличалась бы до 8e-2 м/с). Проверка только преобразования уровня Library. Результаты: docs/design/evidence/rm34-cr3bp-to-mci/RESULTS.md | cr3bp (to_moon_centred_icrf, from_moon_centred_icrf, to_moon_centred_icrf_de440) |
| Вид «солнечная система» на ядре JPL (planetary_kernel_path) | Вид solar-system с planetary_kernel_path: каждое сообщаемое тело, чей собственный код NAIF содержится в SPK, получает своё гелиоцентрическое положение и скорость в J2000 из ядра через собственный читатель движка (метка KERNEL), связь, оба конца которой находятся в ядре, вычисляется по нему, барицентры никогда не подставляются вместо планеты, а каждое другое тело остаётся аналитическим со своей меткой; отчёт получает блок ядра (путь, SHA-256, тела и связи, взятые из него) только когда параметр задан. Для de440s.bsp это Меркурий, Венера, Земля и Луна | VALIDATED | NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.3.0) spkezr, гелиоцентрические состояния по полному de440s.bsp, отдельная программа, не вызывающая код Kshana (tests/fixtures/solar_system_kernel/, NOTICE.md); движок читает вырезки de440s бит в бит. Предварительно зарегистрировано f8e946ea. Проверка уровня Library для подключения: сама DE440 и аналитические тела здесь не проверяются. Результаты: docs/design/evidence/cap31-solar-system-kernel/RESULTS.md | solar_system (SolarSystemScenario::planetary_kernel_path, KernelOut); ephem_provider (KernelEphemeris) |
| Porkchop на эфемеридах DE440 | maneuver::porkchop_kernel: перебор «дата запуска × дата прибытия» для стартового C3 (км²/с²) и V-бесконечности прибытия (км/с) с одновитковым прямым решателем Ламберта и защитой от коллинеарности 0,5 град, по гелиоцентрическим состояниям J2000 любых двух тел NAIF, прочитанным из JPL DE440 SPK собственным читателем крейта. Один виток, прямое движение, без ограничений ракеты-носителя и прибытия: это перебор, а не проектирование миссии | VALIDATED | NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.3.0) гелиоцентрические состояния по de440s.bsp и pykep 3.0.1 lambert_problem (ESA, ядро kep3 на C++, MPL-2.0), независимый решатель Ламберта, запущенный как отдельная программа, не вызывающая код Kshana (tests/fixtures/porkchop_de440/, NOTICE.md); движок читает вырезку de440s бит в бит. Предварительно зарегистрировано 2d857fb1. Проверка уровня Library для перебора. Результаты: docs/design/evidence/cap20b-porkchop-de440/RESULTS.md | maneuver (porkchop_kernel, PorkchopGrid); ephem_provider (KernelEphemeris) |
| Оптимизатор импульсных перелётов на эфемеридах DE440 | maneuver::optimise_transfer_kernel: даты отправления и прибытия баллистического двухимпульсного перелёта за один виток, минимизирующие стартовый C3 или V-бесконечность прибытия в пределах типа I или типа II, как непрерывный оптимум (сетка с шагом 2 суток по обоим окнам, затем 2-D метод Нелдера–Мида), по гелиоцентрическим состояниям из DE440 SPK. Оптимизатор дат для одного участка, а не проектирование миссии: без ракеты-носителя, орбиты ожидания, манёвров в дальнем космосе и многовитковых вариантов | VALIDATED | Независимый оптимизатор: NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.3.0) гелиоцентрические состояния на той же вырезке de440s, pykep 3.0.1 lambert_problem (ESA, MPL-2.0) и метод Нелдера–Мида из SciPy 1.18.1, без вызова кода Kshana. Справочник NASA по перелётам Земля–Марс (MIDAS, эфемериды не указаны, сетка дат с шагом 2 суток) является вторичным опубликованным источником и статус не определяет | maneuver (optimise_transfer_kernel, TransferObjective, TransferType, TransferOptimum); ephem_provider (KernelEphemeris) |
| Решатель многовитковых перелётов Ламберта | Все решения задачи Ламберта с числом полных витков до трёх (maneuver::lambert_multirev: одновитковое решение, затем левая и правая ветви для каждого числа витков, Izzo 2015), с граничными скоростями v1 и v2, для прямых и ретроградных перелётов, в канонических и гелиоцентрических единицах СИ, включая перелёты в пределах 1 % от минимального времени полёта для данного числа витков и геометрии, близкие к 180 град. Только двухтельный решатель (без возмущений) | VALIDATED | pykep 3.0.1 lambert_problem (ESA, ядро kep3 на C++, MPL-2.0), независимая библиотека, запущенная как отдельная программа скриптом scripts/gen_lambert_multirev_ref.py; зафиксирован только её численный результат. Предварительно зарегистрировано a75de851 (набор случаев, пороги, правило исхода) до любого сравнения; эталон был сгенерирован заново независимо и совпадает побайтно. Результаты: docs/design/evidence/lambert-multirev/RESULTS.md | maneuver (lambert_multirev, LambertSolution, LambertBranch) |
| Двухтельный решатель перелётов Ламберта | Одновитковый решатель Ламберта Izzo-2015 (r1, r2, время полёта → граничные скорости) для перелётов LEO→GEO→гелиоцентрических, прямых и ретроградных | VALIDATED | lamberthub 1.0.0 izzo2015 (J. Martínez Garrido, MIT) — независимый сторонний решатель Ламберта. Одновитковая (M=0) задача Ламберта имеет единственное решение, поэтому согласие между библиотеками является настоящей внешней проверкой; совпадение до <1e-4 м/с (наблюдалось ~1e-11), тот же вид проверки, что получает DOP по gnss_lib_py | maneuver (lambert) |
| Системы отсчёта и шкалы времени | Прецессия–нутация IAU 2006/2000A, CIO GCRS↔ITRS, шкалы времени с високосными секундами | VALIDATED | Эталонные векторы IAU SOFA / ERFA; Vallado AIAA 2006-6753 (0,1–4 мм) | frames, precession, nutation, cio, timescales |
| Двухчастные юлианские даты и високосные секунды на пути времени околоземной орбиты | Календарная дата и время UTC в двухчастную юлианскую дату UTC по соглашению SOFA dtf2d для суток, заканчивающихся високосной секундой (длиной 86 401 с, допустимо 23:59:60.x), UTC в TAI и обратно, а также UT1 из UTC через TAI, на двухчастных датах начиная с 1972-01-01: путь времени, который принимают SGP4 (Sgp4::propagate_at, отсчёт от двухчастной эпохи) и земное вращение IAU 2006/2000A (sgp4::teme_to_itrs_matrix_eop с двухчастным углом вращения Земли) | VALIDATED | pyerfa 2.0.1.5 (liberfa 2.0.1, BSD-3-Clause; алгоритмы SOFA в выпуске проекта ERFA), независимая библиотека: erfa.dtf2d("UTC"), erfa.utctai и erfa.taiutc на зафиксированных моментах, разность образуется по частям на двухчастных датах, порог 1e-6 с задан до прогона (предварительно зарегистрировано e947e69d). Наибольшая разность 9.6e-12 с (dtf2d) и 1.9e-11 с (utctai, taiutc). Если принять каждые сутки UTC за 86 400 с или оставить долю високосных суток без масштабирования, тест краснеет. UT1 через TAI (iauUtcut1) проверяется на ветви ERFA в строке пути околоземной орбиты. Область: UTC с 1972-01-01; прежнее UTC с дрейфующей скоростью не моделируется | jd2 (Jd2::from_utc_calendar, utc_to_tai, tai_to_utc, utc_to_ut1, tai_to_tt, earth_rotation_angle); sgp4 (Sgp4::new_at, Sgp4::propagate_at) |
| Двухчастные юлианские даты в вращении Земли на пути орбиты | Вращение Земли по двухчастной юлианской дате UT1 на пути орбиты, так что положение в земной системе координат сохраняет микросекунду, которую теряет дата в одном f64 (около 3e-9 рад вблизи 2020): jd2::gmst82 (GMST IAU 1982, соглашение TEME, на двух частях), cio::gcrs_to_itrs_matrix_jd2 (матрица CIO GCRS→ITRS с углом вращения Земли по двум частям) и, построенные на них и проверенные внутренне, frames::teme_to_itrf_jd2 / itrf_to_teme_jd2, orbit::Propagator::position_in_frame_jd2 и own_jd2_utc, опциональный two_part_jd сценария эфемерид (положение ECEF, трасса на поверхности и вид со станции; по умолчанию выключен, без изменений) и преобразования From без потерь между jd2::Jd2 и timescales::TwoPartJd. Прецессия–нутация и эпоха модели сил Cowell остаются в одном f64, где округление в 40 мкс меньше 1e-15 рад или намного меньше погрешности аналитических эфемерид Солнца и Луны | VALIDATED | pyerfa 2.0.1.5 (liberfa 2.0.1, BSD-3-Clause; алгоритмы SOFA в выпуске проекта ERFA), независимая библиотека: gmst82 и c2t06a на зафиксированных двухчастных датах, движение полюса 0,1 и 0,3 угл. сек. Предварительно зарегистрировано b10475ee (даты, пороги) до написания функций и до запуска эталона. Внутренние тесты (параметр сценария, прямой и обратный проход TEME/ITRF, преобразования типов) являются вспомогательной самосогласованностью | jd2 (gmst82, From<TwoPartJd>, From<Jd2>); cio (gcrs_to_itrs_matrix_jd2); frames (teme_to_itrf_jd2, itrf_to_teme_jd2); orbit (Propagator::position_in_frame_jd2, own_jd2_utc); ephemeris (EphemerisScenario::two_part_jd) |
| Матрицы систем координат относительно векторов ERFA: смещение и прецессия IAU 2006, TEME в GCRS и цепочка CIO со смещениями небесного полюса | Три матрицы систем координат, сравниваемые поэлементно или по углу поворота с ERFA на произвольных эпохах: precession::precession_matrix (смещение и прецессия IAU 2006 по углам Фукусимы–Уильямса), nutation::teme_to_gcrs_matrix (поворот TEME в GCRS P^T N^T Rz(-EE) с прецессией IAU 2006, нутацией IAU 2000B и уравнением равноденствий с двумя ведущими дополнительными членами) и cio::gcrs_to_cirs_matrix_with_offsets (поворот GCRS в CIRS со смещениями небесного полюса IERS dX, dY, добавляемыми к модельным X, Y полюса CIP до поворота, соглашение справочника SOFA; новое). Сами модельные решения (нутация 2000B на пути TEME, ряд из двух дополнительных членов) не проверяются, проверяется только их реализация | VALIDATED | pyerfa 2.0.1.5 (liberfa 2.0.1, BSD-3-Clause; алгоритмы SOFA в выпуске проекта ERFA), независимая библиотека: pmat06; numat(obl06, nut00b) с уравнением равноденствий из eect00 (полный ряд дополнительных членов), составленные как P^T N^T Rz(-EE); xys06a, затем c2ixys(X + dX, Y + dY, s). Предварительно зарегистрировано 979c1e39 (эпохи, смещения и пороги) до запуска эталона. Невязка TEME в 1.1e-10 рад — предсказанный эффект сохранения двух дополнительных членов (около 3 мм на орбите GNSS) | precession (precession_matrix); nutation (teme_to_gcrs_matrix); cio (gcrs_to_cirs_matrix_with_offsets) |
| UTC до 1972 года (эпоха дрейфующей скорости) на пути времени с двухчастной юлианской датой | UTC с 1960-01-01 по 1971-12-31, когда UTC шло со смещением скорости относительно TAI и корректировалось долями секунды, на пути с двухчастной юлианской датой: TAI - UTC по таблице дрейфа каждого периода (timescales::tai_minus_utc_on_date), календарная дата UTC в двухчастную юлианскую дату UTC с длиной суток 86 400 с + dleap (Jd2::from_utc_calendar), UTC в TAI с долей суток, масштабированной от UTC к секундам СИ (jd2::utc_to_tai), и TAI обратно в UTC (jd2::tai_to_utc), по SOFA dtf2d, utctai и taiutc. До 1960 года TAI - UTC принимается равным 0 (значение SOFA; UTC не определено) и находится вне заявления. Однократная timescales::tai_minus_utc в f64 по-прежнему ограничивает значение 10 с до 1972 года и не охвачена | VALIDATED | pyerfa 2.0.1.5 (liberfa 2.0.1, BSD-3-Clause; алгоритмы SOFA в выпуске проекта ERFA), независимая библиотека: erfa.dtf2d("UTC"), erfa.utctai и erfa.taiutc на зафиксированных моментах, разность образуется по частям. Предварительно зарегистрировано 23c40661 (моменты, допуск и контрольная сумма для 1972+) до изменения движка и до запуска эталона. Таблица дрейфа переписана из той же таблицы SOFA iauDat, которую использует эталон, поэтому сравнение охватывает арифметику преобразования (длина суток, масштабирование UTC в секунды СИ, итерации), а не саму историческую таблицу | timescales (tai_minus_utc_on_date); jd2 (Jd2::from_utc_calendar, utc_to_tai, tai_to_utc) |
| Бортовые часы спутников ГЛОНАСС и распространение по бортовой орбите | Бортовое смещение часов спутника ГЛОНАСС -tau_n + gamma_n (t - t_b) в момент, отсчитываемый по часам спутника (glonass::GlonassEphemeris::sv_clock_bias_s, смещение, скорректированное на смещение часов двумя итерациями с неподвижной точкой), и положение вектора бортового состояния в связанной с Землёй системе ПЗ-90, распространённого методом RK4 по уравнениям движения из ICD ГЛОНАСС в пределах +/-15 мин от опорной эпохи (GlonassEphemeris::position_ecef), по реальным навигационным записям ГЛОНАСС RINEX 3. Преобразование ПЗ-90.11 в ITRF не применяется (они согласуются на сантиметровом уровне с 2014 года; RTKLIB его тоже не применяет). В выходные данные сценария не подключено: библиотечная функция | VALIDATED | RTKLIB v2.4.2-p13 (T. Takasu, BSD-2-Clause, коммит 71db0ffa) geph2clk и geph2pos, скомпилированные из исходного кода на C в отдельном стенде (xval/rtklib-glonass), который читает тот же файл RINEX собственным читателем RTKLIB, поэтому сравниваются также разбор, знак -tau_n, единицы и итерации, а не только часы и орбита. Предварительно зарегистрировано e099c42a до появления функции и до сборки стенда. Обе стороны вычисляют одну и ту же замкнутую форму часов, поэтому сравнение часов охватывает реализацию, а не формулу. Интеграторы орбиты различаются (RTKLIB шагает по 60 с, затем остаток, Kshana равными шагами не более 60 с), как и константы (RTKLIB mu 3.9860044e14, Kshana ПЗ-90.11 3.986004418e14); наихудший случай 1,1 мм — это именно эта разница, как предсказано до прогона. Область: бортовые эфемериды в пределах интервала действия, а не истинная орбита или истинные часы (сравнения с прецизионными продуктами нет) | glonass (GlonassEphemeris::sv_clock_bias_s, position_ecef, parse_glonass_nav) |
| Единый путь околоземной орбиты: наборы элементов SGP4 в GCRS и ITRS по цепочке IAU 2006/2000A с параметрами ориентации Земли | Путь распространения и систем координат, общий для каждого маршрутизируемого вида околоземной орбиты: набор средних элементов SGP4 с двухчастной эпохой UTC (sgp4::MeanElementSet, читается из элементов проектирования орбитальной группировки через MeanElementSet::from_earth_fixed), распространяемый SGP4/SDP4 в TEME (sgp4::SgpOrbit), и повороты TEME → ITRS и GCRS → ITRS цепочки IAU 2006/2000A с UT1 - UTC и движением полюса (sgp4::teme_to_itrs_matrix_eop, gcrs_to_itrs_matrix_eop, формы без параметров teme_to_itrs_matrix и gcrs_to_itrs_matrix). TEME — истинный экватор даты со средним равноденствием, достигаемый из GCRS через смещение и прецессию IAU 2006, нутацию IAU 2000B и уравнение равноденствий | VALIDATED | Ветвь 1: python-sgp4 2,24 (лицензия MIT; эталонный SGP4 на C++ от D. Vallado, код, породивший проверочные векторы AIAA 2006-6753), WGS-72, улучшенный режим. Ветвь 2: pyerfa 2.0.1.5 (ERFA, BSD-3-Clause, подпрограммы SOFA): c2t06a с TT из utctai/taitt и UT1 из utcut1, а для TEME c2t06a . pnm06a^T . rz(-ee06a). Пороги заданы до прогона (предварительно зарегистрировано 72ea9eb0). Раскрыто: первый прогон не прошёл ветвь 2 в 2016-12-31T23:59:59,5 на одну секунду вращения (UT1 бралось из квазиюлианской даты UTC в день с високосной секундой); движок исправлен (jd2::utc_to_ut1), и второй прогон согласуется при неизменных порогах. Если отбросить движение полюса (46 сбоев) или взять константы WGS-84 вместо WGS-72 (4432 сбоев), тест краснеет. Эта трёхветвевая схема заменила сквозное сравнение с Orekit, которое не прошло на SDP4 Orekit при e = 0 и на его TEME по IERS 1996 (находка остаётся зафиксированной в tests/leo_polar_coverage_full_claim_orekit_oracle.rs) | sgp4 (MeanElementSet, SgpOrbit, Eop, teme_to_itrs_matrix_eop, gcrs_to_itrs_matrix_eop); jd2 (utc_to_ut1, earth_rotation_angle); nutation (teme_to_gcrs_matrix); cio (gcrs_to_cirs_matrix); frames (polar_motion_matrix) |
| Компромисс при проектировании дальномерного кода | Границы боковых лепестков и взаимной корреляции m-последовательностей и кодов Голда, длина↔неоднозначность | VALIDATED | Опубликованная взаимная корреляция кодов Голда GPS C/A (−23,9 дБ); граница Голда 1967 года | navsignal (CodeFamily) |
| Геометрия GNSS / геометрический фактор DOP (ухудшение точности) | GDOP/PDOP/HDOP/VDOP/TDOP по геометрии линий визирования через Q=(HᵀH)⁻¹ с локальным разложением ENU | VALIDATED | DOP из gnss_lib_py 1.0.4 (Stanford NAV Lab) — независимая библиотека, совпадение до 1e-6 относительно | orbit (dop) |
| Ошибка положения из геометрии: СКО ошибки = sigma_UERE x DOP для решения движка по методу наименьших квадратов | dop_error_mc::run_geometry и check: Монте-Карло с фиксированным начальным значением (N = 20 000 эпох на геометрию, sigma = 1,5 м, ChaCha8 seed 36 + i) собственного итерационного решения движка по методу наименьших квадратов (pvt::solve_spp, единичные веса, решается от истинного положения) на 8 геометриях из tests/fixtures/dop/dop_reference.csv, с сравнением дисперсий ошибок по востоку, северу, высоте и часам, СКО H/V/P, корреляции восток–север, средних ошибок и доли внутри 95 %-го горизонтального эллипса с sigma^2 Q, где Q — множитель ковариации ядра orbit::dop (orbit::dop_cofactor, та же арифметика) на той же геометрии | MODELLED | Внутренняя согласованность с замкнутой формой: при линейной гауссовой модели ковариация метода наименьших квадратов равна sigma^2 (H^T H)^-1 (Kaplan and Hegarty (eds.), Understanding GPS: Principles and Applications, 2nd ed., Artech House, 2006, гл. 7). Метод и допуски из проектной записки по геометрии 0,36, раздел 5,2, зафиксированы в коммите предварительной регистрации до первого прогона: каждая дисперсия в пределах 5 % (5 стандартных ошибок выборочной дисперсии при N = 20 000), каждое СКО в пределах 2,5 %, корреляция восток–север в пределах 0,035 (5/sqrt(N)), каждое среднее в пределах 5 стандартных ошибок, доля внутри 95 %-го эллипса в пределах 0,95 +/- 0,0077 (5 биномиальных стандартных ошибок); отрицательные контроли (удвоенный PDOP; ошибки, растущие как 1/sin(угол места), против невзвешенной Q) должны не проходить. КАК ЭТО СКЛАДЫВАЕТСЯ: Q — множитель ковариации ядра orbit::dop, VALIDATED по gnss_lib_py 1.0.4 на тех же 8 геометриях в tests/dop_reference.rs (строка «Геометрия GNSS / геометрический фактор DOP»); эта строка добавляет переход от этих множителей к метрам через решатель движка и не заимствует статус той строки. ПОЧЕМУ MODELLED: внешние наборы данных не задействованы; согласие показывает, что оценщик и шум реализуют sigma x DOP в рамках учебной модели, а не что ошибка какого-либо приёмника равна UERE x DOP, и sigma_UERE является входным параметром | dop_error_mc (run_geometry, check, TOLERANCES); dop_error_ci (run, GEOMETRIES); pvt (solve_spp); orbit (dop, dop_cofactor) |
| Классификация доверия с учётом геометрии: геометрия спутников рядом с оценкой доверия к приёмнику и класс для каждого вычета | receiver_trust::geometry: геометрия спутников для каждой эпохи (хорошая, ухудшенная с причинами few-satellites/high-pdop/high-hdop/sky-blocked или неизвестная, когда журнал не содержит GSV, NAV-SAT или GSA), выведенная из сообщённых углов места и азимутов через orbit::dop или взятая из GSA, с меткой, которая всегда сообщается и никогда не оценивается (good, fair, poor, unknown), и словесным описанием HDOP, PDOP, VDOP, числа спутников и потери сигнала; монитор геометрии в оценке судна, который ничего не вычитает, пока геометрия не станет плохой (отношение max(hdop/4, pdop/6, 5/n_used) выше 1), затем линейно нарастает до предела в 15 баллов при 1,5, и одна геометрия не может опустить оценку ниже ухудшенной полосы (предел, конец нарастания и нижняя граница в [geometry]; без тревоги); класс для каждого вычета (geometry, environment, inconsistency): потеря захвата у спутников ниже 15 град относится к классу geometry, спутники в зоне видимости, но не отслеживаемые, — к классу environment, а вычет за плохую геометрию, у которого заявленный HDOP выходит за пределы max(1,0, 25 % от выведенного HDOP) относительно заявленного неба, — к классу inconsistency | MODELLED | Внутренняя согласованность: классификация проверяется по заявленным ею правилам и по вручную выведенным отношениям на синтетических правках зафиксированного демонстрационного журнала, а контрольные фиксации отсутствия изменений удерживают результаты 0.35.0: ни одна оценка не меняется, пока геометрия не станет плохой; метка сообщается всегда. ПОЧЕМУ MODELLED: пороги выбраны, а не подогнаны (происхождение в geometry_model каждого прогона; значения IEC 61108-1 и GPS SPS приведены как процитированные и подлежат сверке с текстом стандартов), и нет внешнего размеченного набора данных о естественном ухудшении геометрии в сравнении с атаками, по которому можно проверить классификацию. Выведенный DOP использует ядро orbit::dop, VALIDATED по gnss_lib_py, статус которого эта строка не заимствует. Класс геометрии — это утверждение о небе, а не вывод о том, что атаки не было | receiver_trust (geometry: GeometryTracker, geometry_ratio, sky_ratio, geometry_points, GeometryLabel; score: DeductionClass, score_with; monitors; live); telemetry (sample, prometheus, syslog, otlp) |
| Бортовая модель ионосферы (Klobuchar, IS-GPS-200) | Групповая задержка в ионосфере Klobuchar для одночастотного L1 вдоль наклонной трассы по восьми бортовым коэффициентам α/β | VALIDATED | RTKLIB ionmodel (tomojitakasu/RTKLIB, src/rtkcmn.c) — независимая эталонная реализация, скомпилированная из исходного кода; совпадение до < 1e-4 м | gnss_sim (klobuchar_delay_m) |
| Статистическое ядро целостности RAIM/ARAIM (законы χ² / нецентральный χ² / нормальный) | Распределительная основа, на которой держится каждый уровень защиты: порог обнаружения отказа по снимку χ²₁₋ₚfₐ(dof), нецентральность пропуска обнаружения pbias=√λ и множители K_fa/K_md/K_V разделения решений | VALIDATED | SciPy 1.17.0 (scipy.stats.chi2/.norm/.ncx2 + optimize.brentq) — независимая библиотека (Cephes/Boost), другой алгоритм, чем ряд неполной гамма-функции в Kshana; совпадение до ≤1e-6 относительно. Только ядро. *Распределение* бюджета P_HMI в ARAIM MHSS больше не остаётся без опубликованного численного эталона — собственный рабочий пример технической подгруппы ARAIM WG-C теперь подкрепляет отдельную строку «Уровни защиты ARAIM MHSS относительно опубликованных эталонных векторов», совпадение при собственном допуске эталона TOL_PL = 5e-2 м, — поэтому область этой строки — статистическое ядро, а распределение несёт та строка (см. docs/ARAIM_REFERENCE.md) | raim (chi2_cdf, chi2_quantile, noncentral_chi2_cdf, normal_cdf, normal_quantile, pbias) |
| Уровень защиты SBAS (HPL/VPL по DO-229E, взвешенный метод наименьших квадратов) | Уровни защиты по DO-229E, приложение J, взвешенным методом наименьших квадратов: D=(GᵀWG)⁻¹ по углу места и азимуту каждого спутника и бюджету ошибок, большая полуось горизонтального эллипса ошибок и вертикальное σ, масштабированные опубликованными коэффициентами K | VALIDATED | Ответвление RTKLIB для SBAS-PL — zsiki/rtklib_ws waasprotlevels() (Siki & Takács 2017, «DO-229D Appendix J»), запущенное rnx2rtkp -ws на реальных сообщениях EGNOS GEO-PRN120 и реальном RINEX BUTE/Будапешт; независимая сторонняя реализация, HPL совпадает до < 2e-3 м. gLAB v6.0.0 (core/filter.c) подтвердил идентичное соглашение. Оба эталона округляют K_V→5,33, тогда как у Kshana точное Φ⁻¹(1−5e-8)=5,3267 (~0,06%), поэтому вертикаль проверяется как свободная от коэффициента K величина d_U | sbas (sbas_protection_level) |
| Метрики оценки ML-детекторов (ROC/AUC/матрица ошибок/Pfa-Pmd) | AUC (Манна–Уитни, совпадения ½), матрица ошибок при пороге, P_d/P_md/P_fa/точность (precision)/доля верных ответов (accuracy)/F1 | VALIDATED | scikit-learn 1.9.0 (Pedregosa et al., JMLR 2011) — независимая библиотека, точное совпадение | impairment_eval (auc, confusion_at, roc_curve) |
| Оценка обнаружения аномалий на реальной телеметрии космических аппаратов | ROC AUC + бутстрэп-доверительный интервал, разделяющий реальные размеченные аномалии; прозрачный детектор (воспроизводит разметку) | VALIDATED | scikit-learn roc_auc_score на тестовой части OPSSAT-AD (Ruszczak et al. 2025, CC BY 4,0) — реальная телеметрия OPS-SAT | impairment_eval, eval_stats |
| Численные ядра квантового компромисса (NNLS / полосы χ² / Q по Ван Лоану) | Подгонка измеренной ADEV методом NNLS, полосы согласованности χ² для NEES/NIS и дискретная ковариация шума процесса часов по Ван Лоану (инерционный выбег в holdover) — вычислительный хребет движка компромиссов | VALIDATED | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm; NNLS+Q точно, χ² <5e-4 при рабочем dof. Только ядра — показатели характеристик устройств остаются Modelled (следующая строка) | quantum_trade (qparams_from_adev_curve), detection (chi2_inv_cdf), clock_state (ClockState3) |
| Геомагнитное эталонное поле (синтез IGRF-14) | Синтез основного поля IGRF-14 в сферических гармониках — компоненты X/Y/Z/F, склонение и наклонение — для слоя альтернативного PNT по магнитным аномалиям | VALIDATED | ppigrf 2.1.0 (K. M. Laundal, MIT) — эталонная реализация IGRF на чистом Python от IAGA-VMOD, поставляемая с официальными коэффициентами IGRF14.shc (IAGA 14-го поколения, Zenodo 10.5281/zenodo.14012302); независимая сторонняя кодовая база, вычисляющая однозначно определённое поле IGRF-14, совпадение на глобальной сетке | igrf, igrf_data |
| Статистики обнаружения — гауссова AUC и минимально обнаруживаемый отказ | Аналитическая бинормальная ROC AUC = Φ(μ/(σ√2)) и минимально обнаруживаемый отказ σ·(Φ⁻¹(1−P_fa)+Φ⁻¹(P_d)), лежащие в основе квантовых детекторов отказов и детекторов аномалий | VALIDATED | scipy 1,17 (Cephes ndtr/ndtri) + scikit-learn roc_auc_score (Pedregosa et al., JMLR 2011), обе BSD-3-Clause — независимые библиотеки, вычисляющие те же однозначно определённые величины гауссова хвоста и AUC, совпадение до порога функции ошибок A&S (~7e-8). Квантовое преимущество над классическим, построенное поверх, остаётся MODELLED | quantum_faults, eval_stats, detection |
| Ядро ранговых статистик (τ Кендалла / Дирихле / процентиль) | Ядра ранговой корреляции и передискретизации в исследовании нестабильности решений об устойчивости: τ-b Кендалла, среднее Дирихле, ранжирование соревновательного типа и доверительные интервалы по процентилям | VALIDATED | scipy 1,18 (stats.kendalltau variant='b', rankdata) + numpy.percentile (BSD-3-Clause) — независимые реализации (τ сортировкой слиянием) однозначно определённых ранговых статистик, совпадение до 1e-12. Исследование нестабильности решений, построенное на этих ядрах, остаётся MODELLED | resilience::stats |
| Ядро вывода приоритетов MCDA (собственный вектор AHP / коэффициент согласованности) | Веса приоритетов метода анализа иерархий = нормированный главный (Перрона) собственный вектор обратносимметричной матрицы парных сравнений методом степенных итераций, с индексом согласованности (Consistency Index) и коэффициентом согласованности (Consistency Ratio) по Саати и порогом приёмки CR<0,10 | VALIDATED | Каноническая таблица случайного индекса Саати (1980) (RI(5)=1,12) воспроизведена точно + SciPy/LAPACK scipy.linalg.eig (BSD-3-Clause) как независимый решатель собственных значений, вычисляющий тот же однозначно определённый собственный вектор/значение Перрона, совпадение до <1e-9. Слой решений Парето / чувствительности / MAUT, построенный на этом ядре, остаётся MODELLED (агрегаторы WSM/WPM/TOPSIS/VIKOR/PROMETHEE/ELECTRE проверены внешне отдельно — см. строки ниже) | mcda::ahp |
| Ядра взвешенной агрегации MCDA (WSM / WPM) | Модель взвешенной суммы (аддитивный агрегат с min–max-нормировкой + ранжирование) и модель взвешенного произведения (мультипликативный агрегат с нормировкой на сумму и обратной величиной для затрат) — два оценщика значений агрегации для компромиссных исследований | VALIDATED | pymcdm (methods.WSM + normalizations.minmax_normalization; methods.WPM + normalizations.sum_normalization) — независимая, широко используемая сторонняя библиотека MCDA на Python, вычисляющая те же однозначно определённые взвешенные агрегаты; совпадение до <1e-9. Воспроизводится офлайн через tests/fixtures/mcda_wsm/ и tests/fixtures/mcda_wpm/. На входе «мусор — на выходе мусор»; слой чувствительности и робастности остаётся MODELLED | mcda::wsm, mcda::wpm |
| Ранжирование MCDA по расстоянию до идеала (TOPSIS) | Technique for Order of Preference by Similarity to Ideal Solution — min–max-нормировка, взвешенные положительное и отрицательное идеальные решения, относительная близость Cᵢ = d⁻/(d⁺+d⁻) и ранжирование | VALIDATED | pymcdm methods.TOPSIS + normalizations.minmax_normalization — независимая сторонняя библиотека MCDA, вычисляющая те же однозначно определённые коэффициенты близости; совпадение до <1e-9. Воспроизводится офлайн через tests/fixtures/mcda_topsis/generate_topsis_reference.py | mcda::topsis |
| Компромиссное ранжирование MCDA (VIKOR) | VlseKriterijumska Optimizacija — групповая полезность Sᵢ, индивидуальное сожаление Rᵢ и компромиссный индекс Qᵢ при весе стратегии v=0,5, с ранжированием «меньше — лучше» | VALIDATED | pymcdm methods.VIKOR(v=0,5) — независимая сторонняя библиотека MCDA, вычисляющая ту же однозначно определённую агрегацию S/R/Q с нормировкой по диапазону; совпадение до <1e-9. Воспроизводится офлайн через tests/fixtures/mcda_vikor/generate_vikor_reference.py | mcda::vikor |
| Ранжирование MCDA по чистому потоку превосходства (PROMETHEE II) | Preference Ranking Organization METHod — индекс парных предпочтений с шестью стандартными формами обобщённого критерия, положительные и отрицательные потоки превосходства и полное ранжирование по чистому потоку (обычный критерий проверен) | VALIDATED | pymcdm methods.PROMETHEE_II('usual') — независимая сторонняя библиотека MCDA, вычисляющая тот же однозначно определённый чистый поток превосходства; совпадение до <1e-9. Воспроизводится офлайн через tests/fixtures/mcda_promethee/generate_promethee_reference.py. Формы предпочтения с порогами (q/p/σ) сводятся к той же алгебре обобщённого критерия и остаются проверенными по свойствам | mcda::promethee |
| Ядро выбора по превосходству MCDA (ELECTRE I) | ELimination Et Choix Traduisant la REalité — матрицы согласия и несогласия, отношение доминирования по согласию без вето и ядро выбора по превосходству (соглашение: все критерии на максимум, веса нормированы на сумму, единая глобальная шкала) | VALIDATED | pyDecision algorithm.electre_i (Valdecy Pereira) — независимая сторонняя библиотека многокритериальных решений, вычисляющая те же однозначно определённые согласие/несогласие/доминирование/ядро; совпадение поэлементно до <1e-9. Воспроизводится офлайн через tests/fixtures/mcda_electre/generate_electre_reference.py. Выбор порогов ĉ/d̂ — входные данные аналитика (чувствительность остаётся MODELLED) | mcda::electre |
| Ядра агрегации MCDA (WASPAS / MOORA) | Weighted Aggregated Sum Product ASSessment (выпуклая смесь с линейной нормировкой λ·WSM+(1−λ)·WPM при λ=0,5) и система отношений MOORA (взвешенная сумма выгод с векторной нормировкой минус взвешенная сумма затрат) — смесь значений с повышенной устойчивостью и знаковый оценщик системы отношений | VALIDATED | pymcdm (methods.WASPAS + normalizations.linear_normalization, l=0,5; методы MOORA, система отношений, векторная нормировка) — независимая, широко используемая сторонняя библиотека MCDA на Python, вычисляющая те же однозначно определённые агрегаты; совпадение до <1e-9. Воспроизводится офлайн через tests/fixtures/mcda_waspas/ и tests/fixtures/mcda_moora/. На входе «мусор — на выходе мусор»; слой чувствительности и робастности остаётся MODELLED | mcda::waspas, mcda::moora |
| Пропорциональное ранжирование MCDA (COPRAS) | COmplex PRoportional ASsessment — значимость выгод S⁺ с нормировкой на сумму столбца плюс член значимости обратных затрат, относительная значимость Q и степень полезности U = Q/max Q (лучшая альтернатива = 1) | VALIDATED | pyDecision algorithm.copras_method (Valdecy Pereira) — независимая сторонняя библиотека MCDA, вычисляющая ту же однозначно определённую относительную значимость/полезность COPRAS. pyDecision выбрана намеренно: COPRAS в pymcdm 1.4.0 алгебраически вырождается в тривиальное S⁺+S⁻ и не является верным эталоном, тогда как pyDecision реализует каноническое Q = S⁺+(min(S⁻)·ΣS⁻)/(S⁻·Σ(min(S⁻)/S⁻)). Совпадение до <1e-9; воспроизводится офлайн через tests/fixtures/mcda_copras/generate_copras_reference.py | mcda::copras |
| Задержка обнаружения изменений и ARL для CUSUM | Наихудшая задержка обнаружения табличного детектора CUSUM (⌊h/(z−k)⌋+1) и средняя длина серии вне контроля, используемые мониторами уровня защиты времени и спуфинга | VALIDATED | Опубликованная ARL табличного CUSUM: броуновское приближение Зигмунда (1985) (Hawkins & Olwell 1998, ур. 3,7), перекрёстно привязанное к таблицам ARL из Montgomery, Introduction to Statistical Quality Control (Wiley) для k=½, h∈{4 5}; детерминированная задержка совпадает точно с эталоном первого прохождения. Составная граница TPL остаётся MODELLED | tpl (Cusum), security |
| Дисперсия выбега часов в holdover и обращение порога | Рост дисперсии фазовой ошибки при выбеге q_wf·t + q_rw·t³/3 + q_drift·t⁵/20 и её монотонное обращение в порог holdover по ошибке времени | VALIDATED | scipy 1,18 (BSD-3-Clause): linalg.expm, вычисляющая дискретный шум процесса по Ван Лоану (1978) Q₀₀ = ∫₀ᵗ ΦQcΦᵀds методом масштабирования и возведения в квадрат с аппроксимацией Паде на расширенной матрице 6×6 — независимый путь, который никогда не видит полиномиальных коэффициентов kshana; а также optimize.brentq, обращающая ту же монотонную кривую в сравнении с бисекцией kshana. Показатели уровня красного шума по классам (ClockClass) остаются MODELLED | holdover (coast_phase_variance, holdover_seconds) |
| Ядро разнообразия по обратному индексу Симпсона | Эффективное архитектурное разнообразие = обратный индекс Симпсона / число Хилла порядка 2, 1/Σpᵢ², по качествам источников в группах независимости (член разнообразия в оценке устойчивости) | VALIDATED | scikit-bio 0.7.3 skbio.diversity.alpha.inv_simpson (McDonald et al., BSD-3-Clause) — независимая сторонняя библиотека, вычисляющая однозначно определённый обратный индекс Симпсона; воспроизведено байт в байт. Система оценки DHS-RPCF (веса/уровни), построенная поверх, остаётся MODELLED | resilience::diversity (effective_diversity) |
| Маска линии горизонта, зависящая от азимута: видимое множество, азимут и угол места, и DOP под маской | skyline + frames::look_angles + geometry::sky_geometry: геодезические (WGS-84) азимут и угол места спутника с наземной точки, таблица маски по азимуту и углу места с линейной интерполяцией по азимуту и замыканием на 360 град, видимое множество el >= max(mask_deg, mask(az)) и DOP с общими часами и матрица кофакторов ENU и часов этого множества (ядро, лежащее в основе orbit::dop). Так раздел [skyline] определяет видимость в видах gnss-sim, jamming, leo-pvt, leo-pass и nmea-scenario и, с наземной точкой user_site, в orbit и integrity | VALIDATED | Orekit 12,2 (Apache-2.0): TopocentricFrame на WGS-84 OneAxisEllipsoid для углов обзора и ElevationMask для каждой таблицы, запущенные xval/orekit-skyline/OrekitSkyline.java на зафиксированных состояниях в земной системе координат (распространение не сравнивается), вместе с gnss_lib_py 1.0.4 (метаданные пакета: MIT) get_dop для DOP и матрицы DOP ENU и часов для множеств, которые Orekit считает видимыми. Предварительно зарегистрировано (xval/orekit-skyline/PREREGISTRATION.md, коммит e4b9d912) до запуска любого из эталонов на входных данных сравнения; линейная интерполяция Orekit с замыканием была заранее подтверждена на синтетическом зонде. Область: табличные маски, геодезические углы обзора, видимое множество под маской и его DOP с общими часами и кофактор. ЗДЕСЬ НЕ ПРОВЕРЕНО: сокращения для городского каньона, секторов и рельефа и предустановки (их 360-точечные таблицы поданы как входные данные; строки «Сокращение городского каньона, секторов и рельефа до таблицы» и «Предустановки линии горизонта»), состояния часов по системам и эллипс ошибок (строка «Горизонтальный эллипс ошибок и кофактор по системам из ковариации геометрии»), вращение GMST наземной точки user_site в orbit/integrity и привязка каждого пропагатора к одному моменту (Orekit получает состояния в земной системе координат), а также любое реальное препятствие (только прямая видимость) | skyline (Skyline::cut_deg, Skyline::visible); frames (look_angles, is_visible_skyline); orbit (UserPath, sky_view, cofactor_from_los); geometry (sky_geometry) |
| Сокращение городского каньона, секторов и рельефа до таблицы | skyline: городской каньон в замкнутой форме (срез atan((h - a) / d) при d = (w/2) / abs(sin(az - s)), открытые концы для конечной длины), секторы с резкими краями по часовой стрелке с замыканием и точки рельефа, сведённые к таблице с падением из-за кривизны d^2/(2 * 4/3 R); линия горизонта — их поточечный максимум с любой таблицей | MODELLED | Внутренняя проверка: замкнутые формы сверены со значениями, вычисленными вручную (углы места верхушек стен заданной улицы, условие открытого конца, падение из-за кривизны для заданной точки). Внешнего эталона нет: проектная записка относит эти сокращения к MODELLED, а ElevationMask в Orekit принимает таблицу, поэтому сравнение в строке «Маска линии горизонта, зависящая от азимута: видимое множество, азимут и угол места, и DOP под маской» читает их 360-точечные таблицы как входные данные и их не проверяет | skyline (Canyon::cut_deg, Sector::contains, TerrainPoint::elevation_deg, reduce_terrain, SkylineCfg::build) |
| Предустановки линии горизонта (городская улица, подход к гавани, фьорд, контейнерный терминал) | skyline::PRESETS: четыре REPRESENTATIVE геометрии с размерами, указанными в проектной записке, и строкой происхождения у каждой: city-street (каньон, улица 0 град, 20 м между стенами в 30 м, антенна 1,5 м), harbour-approach (секторы: открыто в сторону моря на 180 град, здания набережной 8 град на 90 град, волнолом 3 град), fjord (рельеф: стены на 600 м выше антенны на расстоянии 1,5 км по обе стороны канала север–юг, с учётом падения из-за кривизны), container-terminal (секторы: штабели 12 град над половиной со стороны суши, стрелы кранов 35 град и 25 град над двумя узкими секторами); переопределяются по полям | MODELLED | Нет: выбранные и заявленные размеры, а не обследование какой-либо улицы, порта, фьорда или терминала (отношение сторон улицы лежит в пределах полосы 0.5-2 по Oke (1988); фьорд соответствует порядку западнонорвежских фьордов; штабели используют высоту контейнеров high-cube по ISO 668). Тест сверяет предустановки с их собственными заявленными размерами, это проверка переписывания, которую правило валидации не засчитывает | skyline (PRESETS, preset, preset_list) |
| Горизонтальный эллипс ошибок и кофактор по системам из ковариации геометрии | geometry::sky_geometry: кофактор ENU и часов (H^T H)^-1 с одними общими часами приёмника или с часами для каждой системы (ядро orbit::cofactor_from_los) и горизонтальный эллипс ошибок из его блока восток–север (полуоси k sigma sqrt(lambda), k = sqrt(-2 ln(1 - p)), азимут большой оси от севера) | VALIDATED | numpy 2.5.4 (BSD-3-Clause), xval/numpy-ellipse/ellipse.py: numpy.linalg.inv от G^T G и numpy.linalg.eigh от его горизонтального блока на зафиксированных входных данных, независимая численная библиотека, выполняющая обращение и разложение по собственным значениям собственными алгоритмами (стандарт P2). Предварительно зарегистрировано в xval/numpy-ellipse/PREREGISTRATION.md (коммит 0bbeeaee) до прогона; форматирование вывода драйвера было исправлено один раз после предварительной регистрации (скаляр numpy, записанный как np.float64(...)), без изменения протокола и допусков. Проверенное утверждение — линейная алгебра на этих входных данных; гауссова модель ошибок и UERE являются заданными входными данными, а не измеренной точностью и не границей целостности | geometry (sky_geometry, ellipse); orbit (cofactor_from_los) |
| Функции геометрии неба: видимость, DOP, ковариация, эллипс ошибок, облако Монте-Карло | geometry (sky_geometry, sky_monte_carlo, skyline_presets, skyline_profile, skyplot_svg; CLI kshana sky и kshana skyline, функции Python и WASM с теми же именами, MCP sky_geometry): по точке, времени и предустановкам орбитальной группировки (или по спутникам в виде азимута/угла места либо ECEF) — видимые и замаскированные линией горизонта спутники, GDOP/PDOP/HDOP/VDOP/TDOP, кофактор единичной дисперсии (H^T H)^-1 и ковариация в системе восток–север–вверх с одними часами приёмника на каждую систему или одними общими, горизонтальный эллипс ошибок (полуоси k sigma sqrt(lambda), k = sqrt(-2 ln(1 - p)), ориентация 0,5 atan2(2 Q_EN, Q_NN - Q_EE) от севера), а также n ошибок метода наименьших квадратов с фиксированным начальным значением при независимых гауссовых ошибках дальности с их эмпирической ковариацией, СКО и 95 %-м охватом. Кофактор — это orbit::cofactor_from_los, единственное ядро, лежащее в основе orbit::dop и orbit::dop_cov (dop — редукция dop_cov): второй реализации DOP нет | MODELLED | Факторы DOP с одними часами опираются на ядро, проверенное по gnss_lib_py 1.0.4 (строка «Геометрия GNSS / геометрический фактор DOP (ухудшение точности)»); собственные проверки этой строки внутренние: sky_geometry воспроизводит orbit::dop и dop_cov на той же геометрии, эллипс воспроизводит аналитическое разложение 2x2 по собственным значениям, входные данные ECEF и азимут/угол места согласуются, а СКО и 95 %-й охват облака с фиксированным начальным значением согласуются с геометрией. Ковариация ENU с одними часами на систему и эллипс VALIDATED в строке «Горизонтальный эллипс ошибок и кофактор по системам из ковариации геометрии» (numpy, P2); здесь остаётся MODELLED композиция: распространение предустановок до показательного неба, облако Монте-Карло (сверяется с геометрией, из которой взята выборка, это проверка самосогласованности) и поверхности. Предустановки орбитальной группировки дают показательное небо, а не датированное; гауссова модель ошибок и UERE являются заданными входными данными, а не измеренной точностью и не границей целостности | geometry; orbit (cofactor_from_los, dop_cov, dop); surface (sky_geometry, sky_monte_carlo, skyline_presets, skyline_profile, skyplot_svg) |
| Holdover часов без ГНСС | Рост ошибки выбега в замкнутой форме + holdover до порога; классы квантовых часов | MODELLED | Многошаговая рекурсия ковариации clock_state (перекрёстная проверка в той же кодовой базе); лежащее в основе ядро дисперсии выбега и обращения holdover проверено внешне по scipy (см. «Дисперсия выбега часов в holdover и обращение порога»). Показатели holdover по классам уровня красного шума остаются MODELLED | holdover |
| Карточки измеренных устройств-часов (предсказание на отложенных данных) | clock_library: карточка устройства (белый фазовый шум, белый, фликкер и случайное блуждание ЧМ плюс линейный дрейф частоты), подогнанная к одной трети именованной измеренной записи часов после записанного в журнал прохода подготовки (удалены пропуски, выбросы фазы, скачки фазы, всплески; скачки частоты записаны в журнал), с весами по степеням свободы типов шума, определённым по лагу 1, и её предсказанная девиация Аллана, оцениваемая на отложенных двух третях; читатели файлов часов RINEX и IGS, файлов BIPM по лабораториям и раздела Circular T 1; преобразование карточки в модель шума временных слотов, расширенную модель часов для фильтра Калмана и уровни шума монитора спуфинга | MODELLED | Измеренные записи, отложенные: финальные комбинированные часы IGS с шагом 30 с для 11 спутников GPS Block IIF за 2026-03-01 — 14 (окно, которое ни один тест не открывал; IGS, открыто с указанием авторства) и приёмник JammerTest 2024 u-blox ZED-F9P в его неоцениваемых стационарных сеансах (GPL-3.0-or-later). Внешнее сравнение D9 (предварительно зарегистрировано 2ec76864, отношение предсказанной к измеренной девиации Аллана каждой карточки в пределах [1/1.5, 1,5] на её подогнанных временах усреднения), находка (остаётся MODELLED): 10 из 11 карточек GPS IIF укладываются в порог; G27 оптимистична на двухчасовом масштабе (0,662 при 7680 с, наихудший коэффициент 1,510), периодическая ошибка часового масштаба, которую степенная карточка не несёт. Карточка TCXO приёмника заблокирована: вне записанных в журнал передач остальные сеансы набора данных оставляют 167 эпох против требуемых 3600. Сообщено, не вслепую (записи, открытые более ранними строками): карточка цезиевых часов 5071A укладывается в порог (наихудшее 1,070 до 4096 с), карточка OCXO консервативна и выходит за порог (2,348 при 128 с; её уровень шума меняется в ходе записи), а карточка стронциевых часов Norcia, подогнанная по трём самым коротким опубликованным точкам, укладывается в него на двух оцениваемых точках (1,291, 1,405). Пассивные водородные мазеры Galileo (недоступен источник финальных часов Galileo без регистрации) и Deep Space Atomic Clock (одно открытое значение в космосе) заблокированы. D9, раунд 2, TCXO приёмника ZED-F9P как класс модели за 14 суток на 12 стационарных станциях Вроцлава (Zenodo 6488497, CC BY 4,0; предварительно зарегистрировано fb475550), находка: с зарегистрированным конвейером 11 из 12 станций не поддались оценке (RAIM отклонил большинство безионосферных эпох), а BX14 не прошла; раскрытый повторный прогон с исправленным конвейером (предварительно зарегистрировано c9cc0d49) проходит 1 из 11 слепых станций (BX12, 1,412; BX07 1,532 и BX13 1,542 лишь чуть за порогом), потому что часы приёмников одиночного определения положения по прерывистым файлам с шагом 30 с не являются чистой записью генератора | clock_library (card, condition, series), realdata::clk, allan (lag1_noise_id) |
| Карточки измеренных часов GPS Block IIF с членами на виток (предсказание на отложенных данных) | clock_library::card::DeviceCard::fit_phase_periodic: карточка устройства, несущая фазовые члены от одного до четырёх на виток (период T/k, T = 43 082,05 с), подогнанные совместно с квадратичным методом наименьших квадратов по одной трети измеренной записи часов спутника, с замкнутым вкладом каждого члена в девиацию Аллана 4 A^2 sin^4(pi tau / P) / tau^2 в предсказанной девиации Аллана | MODELLED | Измеренные записи, отложенные: финальные комбинированные часы IGS с шагом 30 с для 11 спутников GPS Block IIF за 2026-04-01 — 14 (окно, которое ни один тест не открывал; IGS, открыто с указанием авторства). Внешнее сравнение D9 (предварительно зарегистрировано fb475550, отношение предсказанной к измеренной девиации Аллана в пределах [1/1.5, 1,5] на каждом подогнанном времени усреднения для каждого спутника), находка (остаётся MODELLED): 9 из 11 карточек укладываются в порог; G03 (1,947) и G25 (1,581) оптимистичны между 60 с и 2000 с, потому что их отложенные записи шумнее подгоночных третей (в отложенной части G25 16 пропусков и 29 выбросов фазы), это изменение часов, а не отсутствие периодического члена. Исключение периодических членов из предсказания не выдерживают все 11 карточек (от 1,77 до 4,96), поэтому именно члены несут предсказание | clock_library (card) |
| Оценивание состояния бортовых часов | Часы Калмана с 3 состояниями (фаза/частота/дрейф) по Ван Лоану, стабилизированные по Джозефу | MODELLED | filterpy 1.4.5 KalmanFilter (R. Labbe, MIT), с F через scipy.linalg.expm и Q через блочную матрицу Ван Лоана (1978) — независимая эталонная реализация, воспроизводящая всю траекторию фильтра kshana. Согласованность между реализациями: физика часов и калибровка Аллана внешне не проверены, поэтому остаётся MODELLED. Внешнее сравнение 0,30, находка (остаётся MODELLED): на финальных часах IGS с шагом 30 с для 11 спутников GPS Block IIF (2025-08-17 — 30), при Q, подогнанной к ADEV первой половины, и оценке фильтра на отложенной второй половине фильтр согласован на один шаг вперёд (от 0,906 до 0,971 эпох внутри его 95 %-й полосы, порог 90 %), но излишне уверен на горизонте одного часа у 9 из 11 часов (от 0,486 до 0,829), а его суммы инноваций выходят за [2,4, 3,6] у 5. Подогнанный белый фазовый шум равен нулю на каждом спутнике, а ошибки часового масштаба (периодические члены, фликкер ЧМ) в модели с 3 состояниями нет. Раунд 2 для 0,30, расширенный фильтр (фликкер ЧМ и состояния с одним и двумя членами на виток) на новых отложенных часах IGS за 2025-09-01 — 14 (предварительно зарегистрировано 4b1a841e), находка (остаётся MODELLED): критерии согласованности на один шаг и на один час выполняются на всех 11 спутниках (от 0,948 до 0,988 и от 0,907 до 0,996), но критерий суммы инноваций не выполняется на G24 (0,964) и G30 (1,929) относительно [2,4, 3,6]. D9, раунд 3, расширенный фильтр раунда 2, настройка и критерии без изменений после замороженного детектора подготовки clock_library, на новых часах IGS за 2026-04-01 — 14 (предварительно зарегистрировано fb475550), находка (остаётся MODELLED): (a) один шаг от 0,941 до 0,968 и (c) среднее утроенного NIS от 2,641 до 3,549 выполняются на всех 11 спутниках; (b) один час не выполняется на G09 (0,894) и G26 (0,876) относительно 0,90 | clock_state |
| Бюджет ошибок передачи времени | Двусторонняя передача/TWSTFT (Саньяк), общий вид GNSS, PPP; дрожание линии→дальность | MODELLED | Величина эффекта Саньяка сверена с авторитетным ОПУБЛИКОВАННЫМ ЗНАЧЕНИЕМ — N. Ashby, 'Relativity in the GPS', Living Reviews in Relativity 6:1 (2003), ур. 1,29: восточный экваториальный облёт накапливает 207,4 нс (2ωA_E/c²); kshana воспроизводит 207,386 нс. Независимо подтверждено RTKLIB 2.4.3 geodist() (Takasu, BSD-2-Clause), несущим ту же геометрию 2Aω/c². Составной бюджет BIPM TWSTFT по транспондеру/общему виду/PPP внешнего эталона не имеет, поэтому возможность остаётся Modelled | timetransfer, timetransfer_adv |
| Модуляция навигационных сигналов и анализ слежения за кодом | PSD для BPSK-R/BOC, коэффициент спектрального разделения κ, полоса Габора, дрожание DLL, многолучевость | MODELLED | Взаимная и автокорреляция кодов Голда GPS C/A совпали ТОЧНО (целые ±65/−1/63) с независимой генерацией кодов по IS-GPS-200; форма PSD для BPSK-R(1)/BOC(1 1) в сравнении с независимой периодограммой scipy. Замкнутые формы модуляции/SSC/DLL (Betz 2001 / Kaplan & Hegarty) остаются аналитическими, поэтому строка остаётся MODELLED, но подзадача корреляции кодов совпадает с внешним эталоном. Раунд 2 для 0,30 относительно напечатанных значений Betz 2001 и Hein et al. 2006 (предварительно зарегистрировано 9f4f2ce8, половина напечатанной единицы), находка (остаётся MODELLED): все 45 спектральных ячеек таблицы 1, значения корреляции для 1 ГГц, показатели помех MBOC и 2 из 3 смещений на рис. 17 согласуются; первые боковые лепестки на 24 МГц, смещение BOC(8 4) на рис. 17 и каждое наихудшее смещение из-за многолучевости на рис. 18-21 (на 11–15 % ниже) не согласуются. Kshana и независимое вычисление в NumPy по предварительно зарегистрированной трактовке согласуются, поэтому расхождение лежит в этой трактовке или в неуказанной детали статьи; причина не выяснена | navsignal |
| Генерация расширяющего кода GPS L1 C/A | Генератор кода C/A на регистрах G1/G2 с линейной обратной связью, воспроизводящий опубликованные в IS-GPS-200 проверочные восьмеричные векторы первых 10 символов для PRN 1–9 (плюс длина 1023 символа, баланс единиц 512, трёхзначная периодическая автокорреляция) | VALIDATED | IS-GPS-200, таблица 3-Ia «Назначения фазы кода» — авторитетные опубликованные правительством США в общественном достоянии проверочные ВОСЬМЕРИЧНЫЕ векторы первых 10 символов (GPS Directorate, navcen.uscg.gov); собственный регистр G1/G2 kshana точно воспроизводит каждый вектор PRN 1–9. Нижележащие замкнутые формы модуляции/SSC/DLL остаются Modelled (отдельная строка) | sdr |
| Характеристики квантовых инерциальных датчиков | Акселерометр на интерферометре холодных атомов из первых принципов (k_eff·T², QPN) | MODELLED | Опубликованные числовые векторы первичных статей по CAI (передаточная функция Cheinet 2008; чувствительность Peters/Freier): k_eff·T² совпадает точно, дробовой шум ASD — односторонний нижний предел в пределах ~2× от каждого опубликованного прибора (реальные устройства несут технический шум выше квантового предела). Вилка, а не равенство. Раунд 2 для 0,30 (предварительно зарегистрировано fcb9ac64), находка (остаётся MODELLED): шум вращения только по QPN в сравнении с измеренными точками Gauguet et al. 2009, рис. 14, даёт отношения от 0,695 до 0,788 в трёх допущенных точках (0,751 в рабочей точке), не достигая предварительно зарегистрированного порога 30 % на 0,5 пункта; предел QPN лежит на 21–31 % ниже измеренного шума, как и следует ожидать от модели без шума лазера и детектирования. Композиция градиометра совпадает с линией модели QPN у Janvier et al. 2022 (отношение от 1,013 до 1,017, Reference). Измеренный тест не может выявить ошибку композиции sqrt(2); это может сделать только линия Janvier с неравным контрастом | inertial::quantum_imu |
| Неоднозначность полос и динамический диапазон квантового инерциального датчика | Динамический диапазон неоднозначности полос Маха–Цандера: 2π-периодичный отсчёт полос задаёт максимальную однозначную удельную силу a_max=π/(k_eff·T²), а однозначный диапазон в ячейках разрешения a_max/σ_a=π/σ_Φ не зависит от оптического масштабного коэффициента — выигрыш чувствительности по T² стоит однозначного диапазона в точном соответствии (время опроса обменивает разрешение на диапазон, оставляя число ячеек заданным фазовым шумом отсчёта) | MODELLED | Самосогласованность модели полос интерферометра: край полуполосы, 2π-периодическая структура наложения и сокращение масштабного коэффициента в отношении диапазона к разрешению — замкнутые алгебраические тождества, проверяемые по собственным функциям фазы и чувствительности Маха–Цандера в движке — проверки внутренней согласованности, а НЕ внешний набор данных, поэтому строка остаётся InternalConsistency. MODELLED идеальная неоднозначность полос для трёх импульсов; без границ по аберрациям волнового фронта и потере контраста для однозначного диапазона | inertial::quantum_imu |
| Устойчивость квантовой инерциальной счисляемой навигации | Составной бюджет положения по смещению, масштабному коэффициенту, VRW и затуханию стабильности в holdover | MODELLED | Независимое интегрирование SDE методом Монте-Карло в numpy для дважды проинтегрированного белого шума ускорения (проверяет аналитическую дисперсию VRW по подлинно независимому алгоритму) + опорное опубликованное значение Groves 2013 для членов смещения и масштабного коэффициента; показатели устройств CAI количественно описывают оборудование партнёра и остаются MODELLED | inertial::quantum_imu (QuantumNavBudget) |
| Комплексирование датчиков GNSS/INS | Фильтр Калмана в пространстве ошибок с 15 состояниями, слабосвязанный (проверен на реальной поездке с IMU/GNSS относительно NaveGo); тесно связанный UKF по псевдодальности и доплеру и связанный фильтр часов и положения (только согласованность, вне проверенного утверждения) | VALIDATED | NaveGo v1.4 (R. Gonzalez, LGPL-3.0, запущен как инструмент в GNU Octave, никогда не подключается как библиотека): его слабосвязанный ins_gnss на собственной реальной поездке наземного транспортного средства с IMU/GNSS Ekinox, оба решения оценены относительно эталонной траектории Ekinox. Оба фильтра читают одни и те же входные данные float32 с частотой 20 Гц, а конфигурация Kshana сопоставлена механически по опубликованным параметрам набора данных. Горизонтальное и вертикальное СКО положения Kshana и СКО инноваций положения укладываются в 1.2x от показателей NaveGo (измерено 0,912, 0,940 и 0,861), а её среднее нормированной инновации не более 1,5 (измерено 0,395: примерно 2.5x недостаточная уверенность при заявленных сигмах GNSS набора данных); допуски заданы до сравнения. Область: GNSS присутствует с частотой 5 Гц всю поездку, поэтому перерыв или выбег не проверяются, и проверка выявляет грубые дефекты фильтра, а не тонкую настройку (необработанные решения с поправкой на плечо рычага оказались бы вблизи вертикального порога); преобразование плеча рычага вычисляется в тестовой обвязке. Тесно связанный UKF и связанный фильтр часов и положения сохраняют проверки согласованности по filterpy 1.4.5 (линейные апостериорные до 2.4e-12) и остаются вне проверенного утверждения | fusion (gnss_ins_ekf, tightly_coupled, ukf, coupled) |
| Устойчивость к подавлению без ГНСС | Геометрия бюджета линии J/S, C/N₀ с защитой от подавления, потеря захвата по каждому спутнику | MODELLED | Уравнение бюджета линии C/N₀ с защитой от подавления, перекрёстно проверенное независимым повторным выводом в numpy (использует ту же замкнутую форму → InternalConsistency), плюс характеристика ухудшения C/N₀ по реальному JammerTest-2024. Раунд 2 для 0,30, заблокировано (остаётся MODELLED): измеренное падение C/N0 в JammerTest 2024 против предсказания бюджета линии (предварительно зарегистрировано 6a66994b, в пределах 3 дБ) не выполнялось, потому что положение и ориентация антенны F8.1 в Bleik и доля L1 в мощности многодиапазонной рампы 1.6.4 не задокументированы ни в каталоге испытаний, ни в официальном журнале | jamming |
| Обнаружение спуфинга | Объединённый для каждой эпохи показатель качества безопасности: χ² с поддержкой часов, RAIM, AGC, SQM | MODELLED | Параметры сценариев TEXBAT (Humphreys 2012) — характеристика, а не зафиксированные векторы. Внешнее сравнение 0,30, находка (остаётся MODELLED): на JammerTest 2024 (Bleik; данные GPL-3.0) мониторы на уровне наблюдаемых (хи-квадрат с поддержкой часов, RAIM, отказ решения) не подняли тревогу в пределах 10 с ни у одного из 8 поддающихся оценке опубликованных начал спуфинга (где окно до начала было чистым, первая тревога пришла через 10,2–39 с после опубликованного начала слота), а три окна до начала содержали ложные тревоги монитора часов (81, 64 и 173 эпох). Первым наблюдаемым эффектом была потеря двухчастотного слежения за GPS, а не несогласованность RAIM. Опубликованные начала — это начала слотов расписания с точностью до минуты; то, что они предшествуют радиочастотному захвату, является интерпретацией, а не измерением. Раунд 2 для 0,30, относительно официального журнала JammerTest 2024 организаторов (разрешение до секунды; предварительно зарегистрировано 6a66994b с калиброванным по Адамару монитором часов с тремя состояниями без фиксации), находка (остаётся MODELLED): монитор подаёт тревогу в пределах 10 с на 4 из 10 зарегистрированных начал; на остальных шести он опаздывает на 18–211 с или даёт ложные тревоги часов до начала (1 на 2.1.4, 85 на 2.3.15). D9, раунд 3 (карточка приёмника по другим сеансам устройства JammerTest, предварительно зарегистрировано 2ec76864) заблокирован: 167 обучающих эпох против 3600. D9, раунды 4 и 4b (уровни шума из карточки класса модели u-blox ZED-F9P, Вроцлав 2021, предварительно зарегистрировано fb475550; 4b — раскрытый повторный прогон с исправленным извлечением, c9cc0d49), находка (остаётся MODELLED): ноль ложных тревог до начала на всех 10 зарегистрированных началах и 6 из 10 в пределах 10 с; 2.1.1, 2.3.5, 2.3.10 и 2.6.1 остаются запоздавшими (+211, +23, +18, +51 с), без изменений от уровня шума часов | spoof, spoof_detect, spoof_monitors |
| Уровень защиты времени при спуфинге | Граница в замкнутой форме для наихудшей необнаруженной ошибки времени = порог монитора + σ выбега генератора за задержку обнаружения CUSUM, сообщаемая как полоса уровня красного шума | MODELLED | Составляется из проверенных (Validated) примитивов (allan/holdover по Ван Лоану, порог безопасности); калибровано на сценарии JammerTest 2024 2.1.1 (~1,01 мс реального смещения передаваемого времени против заявленных ≤51 нс). Мост над проверенными частями, сам по себе не внешняя проверка. Внешнее сравнение 0,30, находка (остаётся MODELLED): на сценариях спуфинга JammerTest 2024 измеренная необнаруженная ошибка передаваемого времени превышает номинальный TPL на 3 из 8 обнаруженных начал: 184,3 против 34,6 нс (2.1.4), 295,7 против 159,3 нс (2.3.5) и 143,0 против 69,0 нс (2.3.11); три из пяти оставшихся в пределах тривиальны (зафиксированная ложная тревога до начала). Вероятная причина: член выбега по калибровке на 60 с с нулевым шумом дрейфа не покрывает блуждание частоты TCXO приёмника за 15–39 с. Измеренная ошибка — это собственная оценка часов Kshana по одиночному определению положения относительно прямой, подогнанной к её собственным оценкам до начала, поэтому даже согласие не было бы полностью независимым. Раунд 2 для 0,30, относительно начал из официального журнала JammerTest 2024 и измеренной ошибки времени приёмника (предварительно зарегистрировано 6a66994b), находка (остаётся MODELLED): на 4 из 10 зарегистрированных началах необнаруженная ошибка превышает TPL с состоянием дрейфа (634,7 против 458,5 нс на 2.1.1, 232,6 против 16,2 нс на 2.3.5, 41,3 против 6,0 нс на 2.3.10, 218,6 против 47,4 нс на 2.6.3) | tpl |
| Анализ цислунных миссий | STM CR3BP + дифференциальный корректор одиночной стрельбы; южная NRHO у L2 | VALIDATED | NASA/JPL Three-Body Periodic Orbit Database (SSD, periodic_orbits.api; южное гало-семейство Земля–Луна у L2, методика Howell/Davis) — опубликованные извне период T, константа Якоби C и начальные условия перпендикулярного пересечения; корректор STM одиночной стрельбы kshana, запущенный от начального условия каталога с возмущением, сходится обратно к членам каталога | cr3bp |
| Альтернативное / дополнительное PNT | Сопоставление с картой гравитации, навигация по рельефу (TERCOM/SITAN), магнитные аномалии | MODELLED | Коэффициенты IGRF-14; согласованный фильтр CRLB из первых принципов. Поле эталонного теста реального гравитационного поля проверено внешне (строка «Синтез гравитационной аномалии по модели сферических гармоник»), но у его навигационного результата внешнего эталона нет | altpnt, mapmatch, gravimeter, igrf |
| Синтез гравитационной аномалии по модели сферических гармоник | Гравитационная аномалия в сферическом приближении (Barthelmes STR09/02, ур. 126, ICGEM gravity_anomaly_sa) по полностью нормированным коэффициентам относительно уровенного эллипсоида в замкнутой форме (WGS84/GRS80) с членом нулевой степени, на сетке для сопоставителя карты гравитации | VALIDATED | ICGEM Calculation Service (GFZ Potsdam), независимая реализация: EGM2008, усечённая на степени 70, gravity_anomaly_sa, WGS84, без приливов, член нулевой степени, h = 0. Результат сервиса не несёт явной лицензии, поэтому сетки загружаются во время теста с закреплённым SHA-256 (tools/fetch_icgem_grid.sh), а только десять значений приведены с указанием источника | gravity_sh, altpnt::maps, gravimeter |
| Читатель цифровой модели высот SRTM на реальном рельефе | Собственноручно написанный парсер SRTM .hgt (16-битный, big-endian, северная строка первой, с учётом пустот) + билинейный сэмплер, читающий реальный тайл ЦМР из общественного достояния и воспроизводящий документированный съёмочный ориентир | VALIDATED | Тайл NASA/USGS SRTM v3 (1 угловая секунда) N36W117 — данные о высотах правительства США, PUBLIC-DOMAIN, из открытого зеркала AWS elevation-tiles-prod, прореженные до 6 угловых секунд и зафиксированные в tests/fixtures/terrain/ (см. NOTICE.md), плюс обрезки N36W117 и N36W119 в полном разрешении, поузлово сверенные с независимым читателем SRTMHGT из GDAL и с съёмочными ориентирами: гора Уитни (4421 м) и Бэдуотер (−86 м). Документированный ориентир бассейна Бэдуотер (−86 м, самая низкая точка Северной Америки) привязывает географически привязанное чтение. Навигационная привязка по сопоставлению рельефа/TERCOM, использующая ЦМР, остаётся Modelled (отдельная строка «Альтернативное / дополнительное PNT») | altpnt::terrain |
| Воспроизводимость и гарантии качества программного обеспечения | Детерминированность, хеширование сценариев, SBOM и межплатформенные эталонные барьеры | MODELLED | Соответствие SBOM официальной схеме CycloneDX 1,5 JSON (+ допустимые идентификаторы SPDX) — внешний опубликованный стандарт, ноль ошибок проверки по всему графу зависимостей; часть о детерминизме показателей качества и побайтной воспроизводимости остаётся зафиксированной проверкой самосогласованности, поэтому строка остаётся MODELLED | report, scenario; CI (golden/determinism/SBOM) |
| Оценка обнаружения радиочастотных искажений методами ИИ/МО (13494) | Размеченный синтетический корпус искажений + независимая от детектора обвязка ROC/AUC/матрица ошибок/Pfa-Pmd; защита от утечки, стратифицированное разбиение, отчёт об оптимизме при сдвиге распределения (внутри и вне режима). Запускается из CLI и привязок как вид сценария impairment-eval (scenarios/impairment-eval.toml) | MODELLED | Границы AUC в замкнутой форме (Манна–Уитни) + идеальный детектор-оракул; корпус СИНТЕТИЧЕСКИЙ (основан на параметрах, не полевые данные/IQ) | impairment_eval |
| Исследование разрыва оптимизма при обнаружении радиочастотных искажений методами ИИ/МО и предиктор разрыва только по ID | Контролируемое синтетическое исследование разрыва оптимизма AUC между внутренним и внешним по отношению к распределению для опубликованных методов и обучаемых детекторов (логистическая регрессия / MLP с одним скрытым слоем): тенденции законов масштабирования по классам (ρ Спирмена + наклон по 1−тяжесть) и гребневой предиктор только по ID, оценивающий разрыв лишь по диагностике внутри распределения, оцениваемый с исключением по одному детектору и по одному классу. Воспроизводится через cargo run --release --example optimism_study | MODELLED | Выведенные вручную статистики против замкнутых форм (бинормальная AUC Φ(d'/√2), дисперсия DeLong, ρ Спирмена со связанными рангами, точное восстановление OLS) + перекрёстная проверка с исключением по одному против базового уровня «предсказать среднее». Корпус СИНТЕТИЧЕСКИЙ (основан на параметрах, никогда не полевые данные/IQ), а разрыв оптимизма — это сдвиг тяжести от синтетики к синтетике, а НЕ результат перехода от симуляции к полю | impairment_study, impairment_ml, eval_stats |
| Квантовое и классическое PNT: компромисс и устойчивость без ГНСС (13503) | Приём измеренной ADEV (NNLS), таблица компромиссов (holdover по времени и по инерции + выигрыш), огибающая устойчивости по времени; оговорка о нижнем пределе приложена к артефакту. Запускается из CLI и привязок как вид сценария quantum-trade (scenarios/quantum-trade.toml) | MODELLED | Ядро подгонки измеренной ADEV→PSD (NNLS) сверено со scipy.optimize.nnls (tests/scipy_reference.rs / tests/quantum_vs_classical_pnt_trade_reference.rs) — независимое внешнее ядро; но ЧИСЛА компромисса количественно описывают (но никогда не подтверждают) часы партнёра/CAI, поэтому сам компромисс остаётся MODELLED, без ореола проверенности | quantum_trade |
| Среда космической погоды и плотность термосферы, определяемая активностью | Солнечные/геомагнитные индексы (определяющая таблица Kp↔ap), экзосферная температура Jacchia-1971 и плотность термосферы Jacchia 1971 (SAO Special Report 332: статические профили диффузии, воспроизводящие его таблицу 7, с суточными, геомагнитными, полугодовыми, сезонно-широтными и гелиевыми вариациями) относительно статической атмосферы USSA76. Запускается из CLI и привязок как вид сценария space-weather (scenarios/space-weather.toml) | MODELLED | Определяющая таблица Kp↔ap + замкнутая форма экзосферной температуры Jacchia-1971 (совпадение до <1 К с опубликованными опорными значениями, tests/space_weather_reference.rs); плотность охарактеризована относительно pymsis NRLMSISE-00 (независимая модель NRL): размах солнечного цикла на 800 км составляет 10.4x против 13.6x у NRLMSISE-00. Пересмотр 0,30: калиброванный фактор активности первого порядка заменён на Jacchia 1971 (плотность сценария по умолчанию на 400 км 4.176e-12 -> 6.929e-12 кг/м3; reference_exospheric_temperature_k удалён, mean_exospheric_temperature_k добавлен). Раунд 2 для 0,30, измеренные плотности по акселерометрам TOLEOS CHAMP/GRACE/GRACE-FO (ESA Swarm DISC; предварительно зарегистрировано 20eed695), находка (остаётся MODELLED): усреднения по орбите на 400–500 км укладываются в коэффициент 2 при солнечном максимуме вне бурь (CHAMP 2001 521/521, GRACE-A 2002 120/120, GRACE-FO 2024 526/547), но Jacchia 1971 примерно в 1.7x слишком плотна в солнечный минимум 2008 (GRACE-A 412/544 в пределах коэффициента 2), поэтому плотность не подтверждена | space_weather |
| Совместимость с CCSDS OEM (импорт эфемерид GMAT/Orekit/STK) | Импортёр CCSDS 502,0 OEM (parse_oem), терпимый к строкам COMMENT / дополнительным ключевым словам метаданных / блокам ковариации и точно обратный писателю; круговой проход + приём внешнего файла с проверкой согласованности скорости. Запускается из CLI и привязок как вид сценария oem-interop (scenarios/oem-interop.toml) | VALIDATED | Независимый сторонний парсер CCSDS-502 oem 0.4.5 (MIT, https://pypi.org/project/oem/) — отдельная кодовая база, декодирующая выданный kshana OEM EME2000/UTC побайтно идентично (24 состояния в 2 наборах, Δ положения/скорости = 0) и чей строгий читатель подтверждает токены метаданных; парсер kshana также согласуется с ним на включённом в поставку внешнем OEM. Две честные находки по совместимости (библиотека oem отвергает соглашение kshana о многосегментности для каждого спутника и его строки ковариации с несколькими записями) задокументированы в тесте — поэтому это подтверждает соответствующий обмен одним объектом, а не полное соответствие CCSDS-502 для каждого варианта kshana | oem |
| Окно запуска и геометрия выведения (анализ миссий) | Двухтельные азимуты запуска (sin Az = cos i / cos lat), минимально достижимое наклонение, круговая скорость, восточная добавка от вращения Земли, Δv смены плоскости по dogleg и ежедневные возможности и, при заданных эпохе и строках IERS finals2000A, скорость площадки относительно истинного полюса (launch::site_rotation_speed_at). Запускается из CLI и привязок как вид сценария launch-window (scenarios/launch-window.toml) | MODELLED | Геометрия запуска в сферической тригонометрии в замкнутой форме против опорных опубликованных разобранных примеров (Vallado, Fundamentals of Astrodynamics, 4-е изд., алгоритм 37 азимут запуска + гл. 6 смена плоскости; tests/launch_window_ascent_geometry_reference.rs). Они используют ту же замкнутую форму, которую реализует kshana (проверка паритета с опубликованным значением / переписывания, InternalConsistency); MODELLED двухтельная задача, без модели треугольника скоростей вращающейся Земли / выведения / потерь на сопротивление. Внешнее сравнение 0,30 с Orekit 12,2 (Apache-2.0), находка (остаётся MODELLED): геометрия согласуется до округления (наклонение, прочитанное обратно из азимута отсечки по 158 случаям, наихудшее 2.6e-15 рад; минимальное наклонение, круговая скорость и dogleg delta-v до 3e-16), но скорость площадки от вращения Земли не достигает предварительно зарегистрированного порога 1e-6 относительно на широте 62,9 град (1.12e-6). Разрыв растёт как tan(lat), что согласуется со смещением полюса из-за движения полюса примерно на 5.8e-7 рад в земной системе Orekit, которое сферическое ω·R·cos(lat) не учитывает. Заявление не было сужено до прогона, поэтому строка не может быть повышена по этому сравнению. Раунд 2 для 0,30 (предварительно зарегистрировано 71bebf63): при наличии эпохи и строк IERS скорость площадки относительно истинного полюса (поле сценария site_rotation_speed_true_pole_m_s) согласуется с Orekit в пределах 1e-6 на 24 площадках по четырём долготам (наихудшее 4.9e-8), но номинальная скорость без эпохи, которую сценарий по умолчанию выдаёт как добавку от вращения Земли, по-прежнему не достигает порога на 1.12e-6, поэтому строка остаётся MODELLED до решения о выводе по умолчанию | launch |
| Коридор баллистического входа в атмосферу (Аллен–Эггерс) | Пиковое замедление (не зависит от баллистического коэффициента), скорость и высота при пиковой перегрузке и скорость пикового нагрева для баллистического входа в экспоненциальную атмосферу. Запускается из CLI и привязок как вид сценария reentry (scenarios/reentry.toml) | MODELLED | Аналитический вход Аллена–Эггерса в замкнутой форме, дополнительно перекрёстно проверенный численным интегрированием scipy 1,18 solve_ivp (DOP853) ТОГО ЖЕ ОДУ входа с одним сопротивлением (tests/ballistic_re_entry_corridor_reference.rs, 36 случаев, наихудшее a_max отн. 2.9e-9) — проверка численного интеграла против собственной аналитической формы, поэтому по-прежнему InternalConsistency, НЕ внешняя проверка. MODELLED баллистический (без подъёмной силы), без аэротермики/TPS — выходной результат нагрева — это скорость, а не тепловой поток. Внешнее сравнение 0,30, находка (остаётся MODELLED): относительно реконструкции входа SRC Stardust (Desai and Qualls, NASA NTRS 20080008567) пиковое замедление Аллена–Эггерса для напечатанного инерциального состояния входа (12,9 км/с, -8.2 град, H 7200 м) составляет 61,8 g против 32,89 g по лучшей оценённой траектории, +88 % при допуске 15 %: решение с постоянным углом траектории и без гравитации примерно удваивает пик для пологого входа быстрее убегания. На Stardust не было акселерометра, поэтому реконструкция — это оценка траектории. Раунд 2 для 0,30, заблокировано (остаётся MODELLED): интегрированное плоское решение материальной точки (reentry::simulate_planar_entry, US76, обратноквадратичная гравитация, кривизна) согласуется с лучшими оценёнными траекториями Stardust и Genesis в пределах 15 % (+11,3 %, +5,6 %), но эти максимумы — результаты моделирования агентств, а не измерения, поэтому это лишь перекрёстная проверка. Сравнение по акселерометру (предварительно зарегистрировано a94a283d) заблокировано из-за отсутствия читаемой копии анализа Hayabusa2 REMM (doi 10.57350/jesa.16) | reentry |
| Геометрия следа и покрытия полезной нагрузки наблюдения Земли | Геометрия пространственного треугольника SMAD: угловой радиус Земли, ширина полосы обзора, GSD в надире, максимальный доступ вне надира и круговой период, плюс период узла первого порядка по J2 (eo_payload::j2_nodal_period) и расстояние между трассами на экваторе R_e (omega_E - dOmega/dt) T_nodal (eo_payload::ground_track_spacing_equator_j2) с флагом сплошного покрытия, для высоты орбиты, наклонения и поля зрения FOV/IFOV датчика. Запускается из CLI и привязок как вид сценария eo-coverage (scenarios/eo-coverage.toml); его наклонение по умолчанию — солнечно-синхронное из eo_payload::sun_synchronous_inclination, удобное значение по умолчанию, не входящее в проверенное утверждение | VALIDATED | Orekit 12,2 (Apache-2.0) и GeographicLib 2,1 (MIT), обе запущены как отдельные программы, предварительно зарегистрированы (766823f3) до изменения движка и любого запуска эталона: величины для сферы в пределах 1e-9 относительно (наихудшие: угловой радиус 5.4e-16, полоса обзора 7.0e-13, доступ 1.9e-14), период 1e-12 (1.6e-16), GSD в надире 1e-7 (2.9e-10), период узла по J2 и расстояние между узлами в пределах 0,1 % от численного распространения J2 в Orekit с детектором узлов (1.2e-5 и 6.7e-5), флаг сплошности точен (168/168), а относительно эллипсоида WGS-84 лимб в пределах 0,3 град (0,186 град) и максимальная дальность по поверхности в пределах 0,5 % (3.2e-3). Исключение члена узловой регрессии не выдерживают 35 из 42 узловых точек. Область MODELLED: след на сферической Земле; без радиометрии, MTF, атмосферы, дрожания и бликов; наклонение по умолчанию для солнечно-синхронной орбиты не сравнивается. Более ранняя перекрёстная проверка по Skyfield/SGP4 сохранена как регрессия. Пересмотр 0,30: расстояние теперь несёт узловую регрессию J2 (сценарий по умолчанию 2756,37 -> 2752,17 км) | eo_payload (j2_node_rate, j2_nodal_period, ground_track_spacing_equator_j2, sun_synchronous_inclination) |
| Кадрирование TM/TC по CCSDS Space Packet (133,0) | Кодирование и декодирование первичного заголовка CCSDS 133.0-B Space Packet (версия/тип/вторичный заголовок/APID/флаги последовательности/счётчик/длина данных) + сценарий кадрирования. Запускается из CLI и привязок как вид сценария space-packet (scenarios/space-packet.toml) | VALIDATED | spacepackets 0.32.0 (us-irs/spacepackets-py, R. Mueller, Apache-2.0) — независимая сторонняя реализация CCSDS 133.0-B-2; encode_packet/decode_packet kshana совпали побайтно (6-октетный первичный заголовок для 33 случаев + полный закодированный пакет для 12) | space_packet |
| Вторичный заголовок CCSDS Space Packet, контроль ошибок пакета и сегментация | Расширения CCSDS 133.0-B-2 Space Packet рядом с первичным заголовком: вторичный заголовок, несущий временной код CCSDS 301.0-B (CUC или CDS, явное или неявное поле P) и вспомогательные данные, поле контроля ошибок пакета CRC-16, сегментация крупного блока пользовательских данных и его сборка, потоковое декодирование с проверкой пропусков и порядка последовательности и пакеты PUS-TM. Выход первичного заголовка побайтно идентичен прежнему | VALIDATED | Предварительно зарегистрировано (003ef3eb) до любого сравнения; четыре независимые реализации, ни одна не под GPL, ничего не включено в репозиторий: ccsdspy 2.0.1 (BSD-3-Clause) декодирует 34 пакета, записанных Kshana, в 5 потоках (первичный заголовок, поле P, грубое и точное время, поля CDS, вспомогательные данные, пользовательские данные, PEC), и оба сегментированных блока по 1000 октетов собираются из его пользовательских данных с 0 расхождений, а также он помечает потоки с пропущенным и переставленным пакетами, которые Kshana отклоняет; CRC для 8 сообщений и 57 полей PEC равен CPython binascii.crc_hqx и spacepackets-rs 0.18.0 (контрольное значение 0x29B1); 66 случаев временных кодов CUC и CDS равны записи и чтению spacepackets-rs 0.18.0 октет в октет (3 случая CDS также у spacepackets-py 0.32.0); 4 пакета PusTm из spacepackets-py 0.32.0 побайтно идентичны пакетам Kshana. Не охвачено: временные коды эпох агентств (7 случаев опираются на модульные тесты), кадры передачи TC и любой канальный уровень ниже пакета | space_packet (TimeCode, SecondaryHeader, контроль ошибок пакета, сегментация и сборка, потоковое декодирование) |
| Экспорт SPICE SPK (типы 9 и 13) | Писатель и читатель ядер NAIF SPICE SPK типов 9 (Лагранж, неравные шаги времени) и 13 (Эрмит, неравные шаги времени) с форматом DAF, дескрипторами сегментов и каталогами эпох, а также экспорт CCSDS OEM в ядро SPK (эпохи UTC или TDB в эфемеридное время) | VALIDATED | CSPICE N0067 через spiceypy 8.3.0, ядро високосных секунд naif0012.tls, предварительно зарегистрировано (5059fd2a) до того, как SPICE прочитал любое ядро Kshana: опись четырёх ядер Kshana в SPICE точна; spkpvn и spkgeo на 5 516 эпохах и 690 вычислениях цепочек равны собственному вычислению Kshana бит в бит и остаются в пределах порога в каждом узле (наихудшее 0,022 от него); Kshana читает ядра, записанные SPICE, бит в бит идентично; при тех же входных данных ядра Kshana побайтно идентичны ядрам SPICE (0 различающихся байтов в четырёх файлах); эпохи OEM преобразуются в эфемеридное время в пределах 6.0e-8 с от str2et (порог 1e-6 с), и SPICE вычисляет экспорт OEM в пределах порога (наихудшее 0,060). Синтетические кеплеровы дуги: ничего о физической точности. Другие типы SPK не записываются | spk_writer (SpkSegment, to_bytes, from_bytes, eval, et_from_label, oem_to_spk_segments) |
| Типы SPICE SPK 3 и 21 (Чебышёв, расширенные линии разностей) | Писатель и читатель сегментов NAIF SPICE SPK типа 3 (многочлены Чебышёва для положения и скорости на фиксированных интервалах, степень от 0 до 27) и типа 21 (расширенные модифицированные разностные массивы, линии разностей интеграторов JPL, MAXDIM от 15 до 25), по заданным записям, в файлах, которые также содержат сегменты типов 9 и 13; выбор записей и вычисление в порядке читателей SPICE. Kshana не подгоняет коэффициенты Чебышёва и не порождает линии разностей | VALIDATED | CSPICE N0067 через spiceypy 8.3.0 (spkw03, spkw13 и, из той же библиотеки по её символу f2c, spkw21; spkpvn, spkgeo), предварительно зарегистрировано (e1cf80d8) до появления кода, синтетические записи получены из SHA-1 этого коммита: для трёх файлов (тип 3 степеней 0, 12 и 27 с 3–150 записями; тип 21 MAXDIM 15, 20 и 25 с 1–250 линиями, от нуля до двух записей каталога и цепочкой центров; типы 3, 21 и 13 в одном файле с комментариями) опись ядер Kshana в SPICE точна, ядра Kshana побайтно идентичны ядрам, которые SPICE записывает по тем же записям, а spkpvn и spkgeo равны читателю Kshana бит в бит на файлах Kshana и на файлах SPICE (48 876 компонентов в каждую сторону, порог 1e-12 относительно). Синтетические записи: ничего о физической точности; реальные ядра типа 21, произведённые JPL, в набор случаев не входят | spk_writer (SpkType::Chebyshev3, SpkType::DiffLines21, SpkSegment, InterpolatedSpk) |
| Сообщения CCSDS об ориентации (AEM, APM) | Писатель и читатель сообщений CCSDS 504.0-B-2 об ориентации в KVN и NDM/XML: AEM версии 2,0 (и 1,0 в KVN, с ATTITUDE_DIR, QUATERNION_TYPE и числовыми последовательностями поворотов) с типами ориентации по кватернионам, углам Эйлера и вращению и их вариантами производной, угловой скорости и нутации, несколько сегментов; APM версии 2,0 с блоками кватерниона, Эйлера, угловой скорости, вращения, инерции и манёвра; кватернион A-в-B для записи (504.0-B-2, приложение F) | VALIDATED | Парсеры и писатели Orekit 13.1.8 (Apache-2.0), запущенные как отдельная программа (xval/adm-orekit), предварительно зарегистрировано (7a6a05fe) до любого сравнения: Orekit разбирает каждое записанное Kshana сообщение (14 AEM KVN, 11 AEM XML, 4 APM KVN, 4 APM XML), и каждое значение в пределах своего порога (кватернионы 1e-14, углы 1e-9 град; наихудшее 0,054 от порога); Kshana разбирает 31 сообщение, которые Orekit записывает по тем же входным данным, в пределах каждого порога; поворот каждой из 135 записей кватернионов, Эйлера и вращения равен AemSegment.getAngularCoordinates в пределах 1e-12 (наихудшее 0,0071 от порога). Все 15 сообщений Kshana в XML проходят проверку по схеме NDM/XML 4.0.0 (зависит от наличия данных, загружается с закреплённым SHA-256). Находка: писатель APM в Orekit отказывается записывать манёвр без MAN_DELTA_MASS (необязательного в стандарте), поэтому манёвры APM охвачены только в направлении «Kshana записывает». Вне набора случаев: типы AEM 1,0 */RATE и XML, повторяющиеся блоки APM | adm (AemMessage, ApmMessage, quaternion_a_to_b), ndm_xml |
| Сообщения CCSDS об орбитальных данных (OPM, OMM, OCM) | Писатель и читатель сообщений CCSDS 502.0-B-3 об орбитальных данных в KVN и NDM/XML: OPM 3,0 и 2,0 (вектор состояния, оскулирующие кеплеровы элементы, параметры космического аппарата, ковариация, манёвры, пользовательские параметры), OMM 3,0 и 2,0 (средние элементы по среднему движению или большой полуоси, параметры, связанные с TLE, с BSTAR или BTERM и AGOM, ковариация) и OCM 3,0 с траекторией (CARTP, CARTPV, CARTPVA; абсолютные или относительные эпохи), блоками физических свойств, ковариации (CARTP, CARTPV в порядке LTM), манёвров и пользовательскими; OMM полной точности из набора элементов SGP4 рядом с неизменным OmmFile::to_omm_kvn | VALIDATED | Парсеры и писатели Orekit 13.1.8 (Apache-2.0) для OPM, OMM и OCM, запущенные как отдельная программа (xval/odm-orekit), предварительно зарегистрировано (cc6841da) до любого сравнения: 27 из 30 записанных Kshana сообщений (6 случаев OPM, 5 OMM и 5 OCM в KVN и XML для версии 3,0) разбираются в Orekit с каждым значением в пределах 1e-14 относительно и каждой эпохой в пределах 1e-9 с (904 значения, наихудшее 0,021 от порога), а Kshana читает все 25 сообщений, которые Orekit записывает обратно, в пределах тех же порогов (858 значений, наихудшее 0,020); все 14 сообщений Kshana в XML проходят проверку по схеме NDM/XML 4.0.0 (зависит от наличия данных). Находки, зафиксированные, сужающие заявление: Orekit требует ELEMENT_SET_NO (необязательного в 502.0-B-3), отказывается принимать COMMENT в пользовательских параметрах XML (схема это допускает), не записывает BTERM без BSTAR (поэтому BTERM и AGOM охвачены только в направлении «Kshana записывает») и прибавляет относительные эпохи OCM как секунды СИ, поэтому в TDB они отличаются от календарного чтения TDB примерно на 1.9e-10 с/с (UTC, TAI и TT согласуются). Прежний вывод OmmFile::to_omm_kvn, оборачивающий метаданные OMM в META_START/META_STOP, Orekit отвергает (записано). Вне области: блоки OCM PERT и OD, некартезианские наборы элементов, другие порядки ковариации | odm (OpmMessage, OmmMessage, OcmMessage, Section, OcmBlock), ndm_xml |
| Бюджет ошибки ориентации и наведения, 3-DOF (AOCS) | Наихудший гравитационно-градиентный возмущающий момент ((3/2)(μ/R³)ΔI) как пик по ориентации (проверяемое утверждение), а также бюджет ошибки наведения по RSS для именованных вкладов 1σ с указанием доминирующего слагаемого (квадратичная сумма чисел, заданных вызывающей стороной, вне проверяемого утверждения). Запускается из CLI и привязок как вид сценария attitude-budget (scenarios/attitude-budget.toml) | VALIDATED | Basilisk 2.9.1 GravityGradientEffector (AVSLab, ISC) — независимая реализация на C++ полного тензорного гравитационно-градиентного момента: пик Kshana (3/2)(μ/R³)ΔI равен моменту Basilisk при ориентации 45 градусов с относительной погрешностью до 1e-12 (наихудшая 2.1e-15) для 5 высот и 8 тензоров инерции и ограничивает момент Basilisk при 2000 случайных ориентациях для каждого случая; допуск зафиксирован до сравнения. Проверяемое утверждение: пик гравитационно-градиентного момента. Бюджет наведения по RSS — это квадратичная сумма чисел, заданных вызывающей стороной, без внешней истины, и он остаётся вне этого утверждения; написанная вручную максимизация полного тензора Hipparchus сохраняется как вспомогательная проверка внутренней согласованности. Моделирование контура управления, 6-DoF и гибких мод не выполняется | attitude_budget |
| Прогнозирование проходов над наземной станцией (наземный сегмент) | Проходы видимости во временной области (AOS/TCA/LOS, максимальный угол места, длительность) для орбитального пропагатора движка над станцией выше маски угла места, с интерполированными моментами восхода и захода и суммарным доступом: passes::predict_passes, геометрический планировщик (без рефракции и времени распространения света). Вид сценария passes запускает предиктор видимых положений из строки «Apparent ground-station pass prediction with refraction and light time» | VALIDATED | Orekit 12,2 (CS GROUP, Apache-2.0) + Hipparchus 3,1 — независимая библиотека динамики полёта: ElevationDetector (поиск корней методом Брента) + EventsLogger по эфемеридам ITRF, станция как WGS-84 TopocentricFrame. AOS, LOS, максимальный угол места, число проходов и суммарный доступ совпали при одинаковых орбите, станции, маске и окне (зафиксированный набор данных; драйвер xval/orekit-passes) | passes |
| Прогнозирование видимых проходов над наземной станцией с учётом рефракции и времени распространения света | Проходы видимости (AOS, TCA, LOS, максимальный видимый угол места, длительность) набора элементов SGP4 над станцией WGS-84 на проверенном пути для околоземных орбит (IAU 2006/2000A, необязательные параметры ориентации Земли) с тропосферной рефракцией по ITU-R P.834-9 (уравнения 9–14, коэффициенты, напечатанные в Рекомендации) и временем распространения света на нисходящей линии; каждая поправка отключаема; моменты пересечения находятся делением пополам с точностью 1e-7 с, а кульминация — поиском золотого сечения. Запускается из CLI и привязок как вид сценария passes (scenarios/passes.toml); обе поправки по умолчанию включены | VALIDATED | Orekit 13.1.8 (CS GROUP, Apache-2.0) с Hipparchus 4.0.3: TLEPropagator на тех же наборах элементов в TEME, которую Orekit строит по заявленному определению (её IERS 2010 TOD, повёрнутая на GAST - GMST), ElevationDetector и ElevationExtremumDetector с ITURP834AtmosphericRefraction и без неё, а также AngularAzEl с AngularRadioRefractionModifier для случая со временем распространения света; пересечения и максимум найдены средствами Hipparchus; 60 случаев (четыре орбиты, пять станций на уровне моря, маски 0, 5 и 10 градусов, 24 часа). Пороги зафиксированы до прогона (предварительная регистрация e947e69d, этап 3 из 72ea9eb0). Если пренебречь временем распространения света (9777 отказов) или заменить константу P.834 1,728 на 1,828 (7883 отказов), тест становится красным. Область применения: станции на уровне моря; коэффициент P.834 h*theta0^2 в Orekit равен 0,011380, тогда как Рекомендация печатает 0,01380 (зафиксировано), поэтому высоты над уровнем моря не сравниваются. Раунд 1, сравнение с TEME Orekit по умолчанию на основе IERS 1996, выдержал все пороги по проходам, но не выдержал порог по направлению из-за расхождения конвенций TEME в 72 мсд (зафиксировано) | passes (predict_passes_apparent, apparent_look_angles, ApparentOptions, p834_tau_s_deg, p834_tau_deg, p834_theta_m_deg, p834_apparent_elevation_deg, PassesScenario) |
| Адаптивное кодирование и модуляция DVB-S2 на проходе нисходящей линии LEO | Es/N0 нисходящей линии вдоль каждого прохода одного спутника над одной станцией (EIRP, потери в свободном пространстве, потери в атмосфере по закону косеканса, прочие потери, G/T, постоянная Больцмана, символьная скорость), наиболее эффективный MODCOD DVB-S2, который проходит порог квазибезошибочного приёма по ETSI EN 302 307-1 V1.4.1, таблица 13, плюс запас на реализацию на каждом шаге, объём данных ACM за проход и базовый уровень с постоянным кодированием, замыкающийся на маске и на наибольшей дальности. Запускается как вид сценария acm-link. Иллюстративные входные данные; MODELLED. | MODELLED | Внутренняя согласованность: спектральная эффективность, вычисленная в замкнутом виде по K_bch из таблицы 5a и длинам кадров, согласуется с эффективностями, которые печатает таблица 13 (проверка правильности переноса таблицы порогов); составляющие бюджета линии согласуются со своими замкнутыми формами; выбор монотонен по Es/N0 и учитывает запас; ACM передаёт объём не меньше, чем при постоянном кодировании. Геометрия прохода берётся из отдельно VALIDATED предиктора видимых проходов. ЧТО НЕ ПРОВЕРЕНО: ни с внешним инструментом, ни с измеренной линией сравнение не проводилось; пороги — идеальные значения стандарта для AWGN, а не значения какого-либо модема; замирания в дожде, потери наведения вдоль прохода и пилот-сигналы не моделируются. | contact_schedule (es_n0_db, select_modcod, fspl_db, atmospheric_loss_db, ccm_modcod, pass_capacity, AcmLinkScenario); passes::predict_passes_apparent |
| Планирование наземных контактов для нескольких спутников и нескольких станций с разрешением конфликтов | Кандидаты в контакты из каждого прохода «спутник — станция» с объёмом данных ACM; конфликты, когда одна антенна обслуживала бы два спутника в пределах времени перенацеливания либо один спутник передавал бы данные на две станции одновременно; взвешенная по приоритетам целевая функция доставки, ограниченная накопленным объёмом каждого спутника; ленивый жадный план по предельной ценности, базовый план «первым пришёл — первым обслужен» и точный метод ветвей и границ для не более чем 26 кандидатов с указанием разрыва оптимальности жадного плана. Запускается как вид сценария contact-schedule. Иллюстративные входные данные; MODELLED. | MODELLED | Внутренняя согласованность: точный метод ветвей и границ совпадает с полным перебором на малых случайных наборах, каждый план проверяется на допустимость по правилам конфликтов, а жадный план никогда не превосходит точный оптимум. ЧТО НЕ ПРОВЕРЕНО: ни с внешним планировщиком, ни с эксплуатационным планом сравнение не проводилось; контакты берутся целиком (без разбиения), накопленный объём фиксируется в начале окна, время наведения сверх фиксированного времени перенацеливания и бортовая память не моделируются. | contact_schedule (conflicts, objective, delivered, schedule_chronological, schedule_greedy, schedule_optimal, ContactScheduleScenario) |
| Односторонний бюджет линии (связь и проектирование линий) | Потери в свободном пространстве, C/N₀, Eb/N₀, запас и замыкание по уравнению линии CCSDS 401 / DSN 810-005 для EIRP/G·T/дальности/скорости/диапазона относительно требуемого Eb/N₀. Запускается из CLI и привязок как вид сценария link-budget (scenarios/link-budget.toml) | VALIDATED | Опубликованная таблица управления проектом телекоммуникаций дальнего космоса в виде зафиксированных числовых векторов: DESCANSO / J. H. Yuen (ed.), Deep Space Telecommunications Systems Engineering, JPL Pub 82-76, таблица 1-1 (Galileo, X-диапазон) — kshana заново собирает статьи таблицы и воспроизводит её опубликованные сквозные значения L_fs 290,54 дБ и Pr/N0 54,6 дБ-Гц; потери в свободном пространстве также сверены с ITU-R P.525 | linkbudget |
| Экономичная постановка «стоимость на единицу покрытия» и ROI | Стоимость за процент покрытия и ROI «покрытие на евро» на основе движка расчёта размера орбитальной группировки; стоимость спутника — это заданный вызывающей стороной диапазон низкая/номинальная/высокая (без выдуманных цен) | MODELLED | Арифметика стоимости в замкнутом виде в сравнении со значениями, выведенными вручную; экономическая ПОСТАНОВКА для смоделированной величины покрытия, а не котировка и не проверенная модель стоимости | frugal (over walker) |
| Влияние пропуска обнаружения на целостность (HPL/VPL с учётом контекста против предела тревоги) | Сопоставляет необнаруженное смещение от спуфинга или подавления с эффективной ошибкой → область Стэнфорда (доступно/недоступно/MI/HMI) относительно HAL/VAL для конкретного контекста (открытое небо или город) | MODELLED | Использует классификацию Стэнфорда для RAIM, проверенную внешним образом (raim::classify_stanford); само сопоставление «пропуск обнаружения → предел тревоги» смоделировано и не является сертифицированным распределением целостности | integrity_impact (over raim) |
| Паспорт параметров модели ошибок CAI с цитируемыми источниками (13503) | Диапазоны (наилучший/номинальный/консервативный) характеристик холодноатомного интерферометра — нестабильность смещения, случайное блуждание скорости и угла, стабильность масштабного коэффициента, частота выборки, ограниченная временем опроса, динамический диапазон при неоднозначности полос, — каждый с прослеживаемой ссылкой; передаётся в QuantumNavBudget без моделирования аппаратуры | MODELLED | Внутренняя согласованность: цитируемый диапазон VRW сверен с физикой CaiAccelerometer::accel_asd, а необработанный динамический диапазон вычислен по пределу неоднозначности полос; числа — диапазоны MODELLED по обзору литературы (needs_source_confirmation), ни одно устройство не проверено, ореола проверки нет | inertial::cai_params (over inertial::quantum_imu) |
| Эталонный тест соответствия целостности времени — классификатор эпох по диаграмме целостности Стэнфорда | Классификация эпох TIB по диаграмме целостности Стэнфорда (номинально/недоступно/MI/HMI) | MODELLED | Независимая реализация правила четырёх областей на numpy (scripts/gen_tib_scorer_reference.py) на том же наборе выборок; метод Cited из диаграммы целостности Стэнфорд–ESA (Tossaint et al., ION GNSS 2007) и RTCA DO-229 WAAS MOPS. НЕ оракул точности ExternalDataset — тест не зависит от честности. | src/benchmark/stanford.rs |
| Эталонный тест соответствия целостности времени — оценка покрытия целостности | Оценка покрытия целостности TIB (доли HMI/MI/доступности + вердикт о покрытии оценкой с запасом) | MODELLED | Независимый пересчёт областей на numpy в tests/fixtures/tib/reference.json; только перекрёстная проверка механизма оценки, без утверждения о точности. | src/benchmark/coverage.rs |
| Эталонный тест соответствия целостности времени — каталог неисправностей (параметрические генераторы) | Меню неисправностей TIB (расхождение доменов, скачок часов, дрейф в holdover, статическая/нарастающая/симметричная/асимметричная задержка, повтор в пределах свежести, избирательная по пути, кворум k из N) | MODELLED | Репрезентативные параметрические генераторы неисправностей (Modelled); необнаруживаемый набор (симметричная задержка, повтор в пределах свежести) Cited из Mizrahi RFC 7384 и Narula & Humphreys (IEEE JSTSP 2018). Внешнего оракула нет — каталог неисправностей не делает измеренных утверждений. | src/benchmark/faults.rs |
| Эталонный тест соответствия целостности времени — вердикт о поглощении необнаруживаемого | Вердикт TIB о поглощении необнаруживаемого (симметричная задержка и повтор должны поглощаться PL и никогда не сообщаться как обнаруженные) | MODELLED | Проверка свойства: перечисление Verdict структурно не может сообщить необнаруживаемую неисправность как обнаруженную (Mizrahi RFC 7384); поглощено ⟺ PL ≥ смещение. Оракула точности нет. | src/benchmark/scorecard.rs |
| Инженерия космической платформы (AOCS/тепловой режим/конструкции/двигательная установка/электропитание) | Не предоставляется — Kshana — симулятор навигационных характеристик, а не разработчик платформ | PARTNER | | |
| Проектирование навигационной РЧ-полезной нагрузки и антенного оборудования | Не предоставляется — Kshana моделирует характеристики сигнала, а не аппаратуру полезной нагрузки или антенн | PARTNER | | |
| Проектирование и доведение аппаратуры квантовой полезной нагрузки | Не предоставляется — только модели характеристик; аппаратура на холодных атомах и часы — зона ответственности партнёра | PARTNER | | |
| Обеспечение качества лётной аппаратуры (радиация/EEE/MAIT) | Не предоставляется — Kshana касается только обеспечения качества программного обеспечения; обеспечение качества лётной аппаратуры — зона ответственности партнёра | PARTNER | | |
| Лунное координатное время | Релятивистская скорость хода часов Земля–Луна (LTC/TCL) + цепочка TT/TAI/UTC + ансамбль | VALIDATED | Ashby & Patla 2024, «A Relativistic Framework to Estimate Clock Rates on the Moon», Astronomical Journal 167:149 (NIST; основа для LTC LunaNet по IAU/IAG): собственный потенциал поверхности Луны L_m = 3.13881e-11 и вековой итог 56,02 мкс/сут совпали с опубликованными числовыми значениями; геоцентрическая скорость Луны сверена с JPL DE440 (de440s.bsp через SPICE) | lunar_time |
| Самоописание гибридного оптического и радиочастотного отчёта | Отчёт hybrid-optical-rf указывает конфигурацию линии, с которой он действительно выполнялся (длина волны несущей, передающая и приёмная апертура, дальность, длительность импульса, время интегрирования, эффективности и потери, с разрешёнными значениями по умолчанию), и содержит блок единиц с единицей измерения и классом происхождения каждой величины, которую статья, вероятно, будет цитировать, включая следы ковариации передачи в квадратных метрах | MODELLED | Внешнего оракула нет, и быть не может: это самоописание, а не измерение. Оно записывается, потому что его отсутствие было дефектом — P5 пришлось брать длину волны несущей и передающую апертуру из значений по умолчанию в исходном коде и делать вывод, что голый variance выражен в квадратных метрах, по проверке внутренней согласованности. Вывод оказался верным, и именно поэтому это было важно: ничто не обнаружило бы ошибку, будь он неверным | hybrid_integrity |
| Доступность гибридной оптической и радиочастотной линии на радиочастотной стороне | Отчёт hybrid-optical-rf указывает доступность радиочастотной линии, составленную из величин, которые движок уже вычисляет, а не из импортированной климатологии, и формулирует композицию как именованное правило: A_rf = I_closure * I_track, где I_closure — вердикт о замыкании одностороннего бюджета линии CCSDS-401 / DSN-810-005 (linkbudget::link_budget, запас Eb/N0 >= 0) на собственной дальности сценария, а I_track — вердикт контура слежения (jamming::lock_status) по C/N0, которое вернул ТОТ ЖЕ бюджет. Каждый множитель передаёт класс происхождения своих входных данных на выход, а множители, которые намеренно НЕ входят в произведение — геометрическая видимость, отказ из-за помех и климатология радиочастотных перерывов, — названы с указанием причины, а не молча принимаются равными 1. Разрешённое радиочастотное плечо дублируется в собственном блоке rf_link_configuration, а непрерывные величины рядом с индикатором (запас линии, запас по C/N0, дальности замыкания и слежения в замкнутом виде и использование дальности) — это обращения по дальности того же бюджета. Отчёт полностью указывает — в блоке и в записи единиц, на которую попадает читатель, — что эта величина ОГРАНИЧЕНА ЗАПАСОМ И ГЕОМЕТРИЕЙ и ДЕТЕРМИНИРОВАНА, тогда как оптическая доступность ОГРАНИЧЕНА ПОГОДОЙ И КЛИМАТОЛОГИЕЙ и вероятностна, поэтому их никогда нельзя приводить как сопоставимую пару процентов | MODELLED | Внешнего оракула нет, и ExternalDataset отклонён. Два входа — запас Eb/N0 и пересечение порога C/N0 — оба являются функциями MODELLED EIRP, добротности и сводного распределения потерь; записи об измеренной доступности для гибридной оптической и радиочастотной службы Земля–Луна, с которой можно было бы сверить составную величину, нет. Существующие проверки внутренние и названы таковыми: композиция пересчитывается по собственным опубликованным запасам отчёта, а не по внутренним значениям излучателя, а дальность замыкания проверяется повторным прогоном уравнения линии НА ней с требованием, чтобы запас обратился в нуль, — это круговая проверка обращения, а не независимая реализация. Честный предел величины записан в самом отчёте: это детерминированный индикатор 0/1, а не вероятность, потому что ничто в этом движке не измеряет распределение радиочастотных перерывов линии в этом диапазоне и этой геометрии. Этот недостающий вход назван в rf_availability.factors_not_included, а не выдуман, и именно его предоставление понадобилось бы для вероятностной радиочастотной доступности | hybrid_integrity, linkbudget, jamming |
| Сопоставимое сравнение оптической и радиочастотной дальнометрии | Отчёт hybrid-optical-rf выдаёт отношение оптической и радиочастотной дальнометрии вместе с ОДНОЙ конфигурацией, при которой оценивались оба плеча, в том же объекте: тот же односторонний путь, та же дальность и то же время накопления. Оптическое плечо — это фотонно-ограниченная граница Крамера — Рао по ToA движка для одностороннего числа фотонов; радиочастотное плечо — это тепловой джиттер слежения за кодом DLL (опережение–запаздывание) движка при C/N0, которое возвращает собственный бюджет линии движка для той же односторонней дальности. Шумовая полоса контура выводится, а не выбирается: B_L = 1/(2*integration_s) ставит радиочастотное плечо ровно на оптическое время накопления, а если вызывающая сторона переопределяет её так, что времена усреднения расходятся, отношение REFUSED — null, с указанием расхождения и обоих времён, — вместо того чтобы приводиться для двух рабочих точек. Отношение с ВЫБРАННЫМ параметрическим rf_position_sigma_m сценария не образуется, и отказ объясняет причину: этот вход не несёт никакой конфигурации. Опубликованный двусторонний оптический итог и точный множитель, связывающий его с плечом одностороннего сравнения, выдаются рядом с отношением, так что отчёт нельзя прочитать как содержащий две расходящиеся оптические сигмы | MODELLED | Внешнего оракула для ОТНОШЕНИЯ нет, и ExternalDataset отклонён намеренно. У лежащей в основе радиочастотной цепочки он есть — tests/validate_p5_rf_ranging_precision.rs сверяет linkbudget::link_budget и navsignal::dll_code_jitter_chips с независимым набором на Python/NumPy и с жёстко заданным рабочим значением Kaplan & Hegarty (2.814e-3 чипа / 0,825 м при 45 дБ-Гц), а у оптической границы Крамера — Рао есть собственная строка в замкнутом виде. Ссылка на любой из этих якорей для данной строки была бы заимствованной проверкой, предотвращению которой служат инварианты матрицы: здесь величина — это ОТНОШЕНИЕ при конфигурации с MODELLED EIRP, добротностью, мощностью передачи и апертурой, и измеренного сравнения оптической и радиочастотной дальнометрии в общей рабочей точке, с которым его можно было бы сверить, не существует. Внутренне проверяется то, в чём отношение действительно может ошибиться: что оба плеча находятся в одной рабочей точке. Это измеряется масштабированием общего времени накопления с требованием, чтобы оба плеча менялись по одному закону квадратного корня, а отношение оставалось на месте, и обеспечивается тем, что отношение прямо отвергается, когда времена усреднения расходятся. Обе границы — пределы теплового и дробового шума, и обе исключают задержку в среде, ошибку часов и неоднозначность, поэтому исключение одинаково с обеих сторон; отчёт говорит об этом прямо, а не оставляет это на домысел | hybrid_integrity, optical_linkbudget, linkbudget, navsignal |
| Самоописание отчёта о бюджете линии | Отчёт о бюджете линии указывает каждую абсолютную константу, по которой вычислялся его собственный запас, — частоту несущей, использованную для потерь в свободном пространстве, EIRP, добротность, сводные потери и член Больцмана, — а также требуемое G/T, при котором запас равен нулю, константу линии (EIRP − потери − требуемое Eb/N0), которая является единственной комбинацией, которую может зафиксировать опубликованная таблица скорость/усиление, и, когда вызывающая сторона задаёт шумовую температуру системы, усиление приёмной антенны, которое подразумевает эта добротность | MODELLED | Внешнего оракула нет: это самоописание поверх уравнения, уже проверенного по опубликованной таблице управления проектом (см. строку об одностороннем бюджете линии). Оно записывается, потому что его отсутствие было измеренным дефектом — для воспроизведения выпущенного d1_rate_gain_beamwidth.csv пришлось подбирать одну эффективную константу с точностью до 0,0034 дБ по всем тридцати строкам, а теперь движок и называет эту комбинацию, и доказывает тестом, что ни одна выпущенная таблица не могла бы разделить её три составляющие | linkbudget |
| Таблица перехода лунного времени по классам часов | Один прогон бюджета лунного времени выдаёт строку перехода «часы — система отсчёта» для каждого класса часов при едином общем члене системы отсчёта, так что единственной переменной в сравнении остаются часы; каждая строка несёт переход, найденный двумя способами, — делением пополам по общей степенной кривой ошибки времени и алгебраическим обращением по доминирующему типу шума в строке, — с относительной разностью между ними | MODELLED | Два разных вычисления одной и той же величины в кодовой базе, а не одно, переформулированное: деление пополам по степенной кривой IEEE-1139 ничего не знает о типе шума, тогда как замкнутая форма обращает доминирующий тип алгебраически, так что неверно классифицированный тип шума или плохая скобка проявляются как заметно не малая относительная разность. Четыре значения также воспроизводят опубликованную таблицу статьи с точностью до половины её последней напечатанной цифры, — но сама эта таблица была восстановлена по той же замкнутой форме, поэтому это проверка воспроизводимости, а не внешний оракул, а член системы отсчёта, относительно которого выполняется измерение, — это распределение Modelled | lunar_time_budget |
| Совместная ошибка UT1 и движения полюса на общем наборе строк | Одна таблица сообщает ошибку прогноза UT1, ошибку полюса при движении полюса и их квадратичную комбинацию на Луне на ИДЕНТИЧНОМ наборе эпох для каждого горизонта, выдавая эпохи, на которых измерялась каждая составляющая. Отдельно сценарий называет, какой вход EOP действует, и раскладывает перепись его строк, а также всегда выдаёт таблицу горизонтов «прогноз против окончательных значений» с явным указанием причины, по которой она пуста, когда это так | VALIDATED | astropy 8.0.1 utils.iers (BSD-3), читающий продукт IERS finals2000A по собственному правилу «Бюллетень B, иначе A», и pyerfa 2.0.1.5 (SOFA) — полные повороты от небесной к земной системе (c2i06a, sp00, pom00, c2tcio; угол вращения Земли по IERS 2010, уравнение 5,15, в точной арифметике), запущенные как отдельные программы на дословных строках замороженного finals2000A.all от 2026-09-30; зарегистрировано заранее (455b8fb5) с поправками A1 и A2, фиксирующими только численную точность оракула (обе раскрыты вместе с прогонами, за которыми последовали): каждый список эпох таблицы 3 совпал, статистики UT1 и полюса — в пределах 6e-16, комбинация — в пределах 1.9e-7, 12/12 случаев «прогноз против окончательных значений». Проверка комбинации не может различить ошибки члена полюса меньше примерно 1e-4 в относительном выражении, потому что в ней доминирует UT1; точность полюса опирается на проверку статистики полюса с точностью 1e-9. Правила набора эпох и запасного варианта — это генератор, повторяющий определения Kshana, а статусы пустой таблицы — проектное поведение без внешней истины. Величины: реализованные ошибки прогноза по таблице 3a годового отчёта IERS 2019, Kshana/IERS 1,001–1,100 на 1–90 сут (порог [0,8, 1,25], Measured). Перепись строк: astropy (строка с автономным входом). Раунд 1 (сохранён как регрессионный): по формуле точности, напечатанной в 178 выпусках Бюллетеня A, полюс согласуется в пределах 1.5x, а UT1 — нет, что проверяет формулу IERS по её реализованной ошибке | frame_eop, realtime_frame_eop |
| Автономный вход параметров ориентации Земли по умолчанию — настоящий продукт IERS | Значение по умолчанию для среды выполнения realtime-frame-eop — собственная встроенная копия дословной выборки IERS finals2000A (tools/finals2000A_20260930.txt: 174 последовательных суточных строк, MJD 61224–61397, вырезанных из finals2000A.all от 2026-09-30), содержащая все три вида строк, которые определяет формат, классифицированные по флагам IERS I/P (eop::row_vintage): 30 окончательных строк Бюллетеня B, 54 быстрых измеренных строк (флаг I без блока Бюллетеня B) и 90 прогнозов Бюллетеня A (флаг P). Голый запуск без аргумента-файла и без сети выдаёт заполненную таблицу по горизонтам, перепись rows = final_rows + rapid_rows + prediction_rows (174 = 30 + 54 + 90) и predicted_rows.n = 90 на MJD 61308–61397; граница «как выпущено» для сравнений «прогноз против окончательных значений» — последняя измеренная строка. Прежняя выборка из 32 строк (tools/finals2000A_2026.txt, у каждой строки флаг I) и пятистрочная выдержка только с окончательными значениями по-прежнему поставляются и проверяются: на них predicted_rows.n равно 0 — это свойство входного файла, а не результат разбора | VALIDATED | astropy 8.0.1 astropy.utils.iers.IERS_A (BSD-3-Clause), читающий те же байты собственным читателем, и таблица Бюллетеня A IERS, том XXXIX, № 039, скопированная число в число; зарегистрировано заранее (6fdae01b) с шестью точными критериями до запуска astropy. Все шесть выполнены: 30 окончательных, 54 быстрых и 90 прогнозных строк с равными списками MJD, у каждой прогнозной строки флаг P, перепись при запуске по умолчанию совпадает, а прогнозы совпадают с Бюллетенем A в пределах последней напечатанной цифры. Раскрыто: срез выбран простым срезом столбцов флагов и блока Бюллетеня B, который показал 30/54/90, до коммита; выборка — это дословный срез, вырезанный этим репозиторием из продукта IERS (SHA-256 в NOTICE набора данных). Проверяемое утверждение — классификация видов строк и перепись поставляемого входа по умолчанию и его прогнозных строк; произвольные пользовательские входы классифицируются по тому же правилу флагов, но в сравнение не входят. 0,30 раунд 1 (заменён): прежнее значение по умолчанию называло 12 строк с флагом I прогнозами Бюллетеня A; теперь движок классифицирует по флагу. ПЕРЕСМОТРЫ: ячейки запуска по умолчанию, которые изменились, перечислены от старых к новым в docs/revisions/M035-default-eop-recut-cell-changes.md (predicted_rows 12 -> 90, нижний предел полюса 0,06776 -> 0,05550 мсд, член ориентации Земли 14,01601 -> 14,01583 м, итог 20,09759 -> 20,09746 м и 67,03834 -> 67,03790 нс, строки таблицы 2 из tests/golden/realtime-frame-eop.csv и величины согласия эксплуатационного предиктора); более ранние — в docs/revisions/G12-default-eop-cell-changes.md | realtime_frame_eop, eop |
| Площадь захвата в зависимости от высоты и ширины луча | Двухосевой перебор взвешенной по диаграмме, ограниченной по высоте площади захвата поверхности по высоте передатчика и диаметру антенны с выдачей одной строки на рабочую точку, с шириной луча по половинной мощности, которую подразумевает каждый диаметр, а захват края диска сообщается как ПОРОГ — для каждой строки J/S на крае, его запас и мощность передачи, которая его замкнула бы; для каждой сетки — найденные пересечения либо явное утверждение, что край диска нигде на сетке не достигается, с указанием недостатка | MODELLED | Включение множеств: отношение «помеха/сигнал» входит как равномерное смещение в децибелах, поэтому захваченное множество при большей мощности передачи содержит множество при меньшей, и доля может только расти — свойство, которого диаграмма Эйри НЕ даёт по ширине луча или высоте, где захваченная область разбивается на кольца, а доля действительно немонотонна. Никакая опубликованная таблица не даёт захваченную долю диска для лунного орбитального передатчика в зависимости от высоты и ширины луча, поэтому для сверки этих ячеек нет ничего внешнего; диаграмма, лежащая в основе, отдельно Validated по опубликованным значениям функций Бесселя и сохраняет собственную строку | antenna |
| Воспроизводимость бюджета ошибки лунного времени | Сценарий lunar-time-budget публикует свои выходы в виде массивов как таблицу длинной формы («индекс сетки, время усреднения, член») рядом с отчётом, так что семь кривых x(tau) по членам и итог по сумме квадратов — это выход движка, а не то, что читатель восстанавливает по описанию метода | MODELLED | Только самосогласованность: опубликованный итог сверяется с корнем из суммы квадратов членов в том же файле, а выдаваемая кривая воспроизводит выпущенный p3_time_budget_curve.csv по всем 57 точкам. Обе проверки используют собственные определения членов этого движка, поэтому ни одна не независима. Член часов опирается на опубликованные спецификации часов, но ВЕЛИЧИНЫ нижних пределов линии, системы отсчёта, релятивистского члена и эфемерид — документированные бюджетные распределения без внешнего оракула | lunar_time_budget_scenario |
| Лаборатория лунного станционного времени: holdover miniRAFS относительно LTC | Необязательный блок [time_lab] сценария lunar-time-budget моделирует часы лунной опорной станции (по умолчанию класс miniRAFS, любой названный класс или карточка устройства, подогнанная по заданным точкам стабильности), подстроенные под координатное лунное время, а затем свободно идущие или заново подстраиваемые каждые N секунд: кривая ошибки времени x(t) как корень из суммы квадратов степенного члена часов, постоянного остатка подстройки (ILLUSTRATIVE), постоянного остатка реализации LTC и включаемого по выбору члена скорости, зависящего от высоты станции; время после подстройки до 1, 10 и 100 нс (или заданных порогов) делением пополам рядом с обращением в замкнутом виде для доминирующего типа шума, а также доминирующий член на каждом заданном горизонте, всё с единицами измерения | MODELLED | Только внутренняя согласованность: время до порога, найденное делением пополам, сверяется с обращением в замкнутом виде для доминирующего типа шума часов, а член свободно идущих часов — с собственным членом часов бюджета. Классы часов опираются на опубликованные суточные спецификации (их собственные строки); скорость LTC здесь заново не выводится и сохраняет собственную строку VALIDATED (Лунное координатное время); остаток подстройки ILLUSTRATIVE, остаток реализации — бюджетное распределение, тепловая модель не включена. Целевой уровень в наносекундах, описанный в материале ICG WG-B по лунному PNT за июнь 2024, приводится как утверждение источника, а не принимается как утверждение; ничто здесь не является утверждением о каких-либо реальных часах станции | lunar_time_lab (over clock_specs, lunar_time_budget, lunar_time) |
| Лунная геодезическая РСДБ | Задержка РСДБ в ближнем поле для земной базы, наблюдающей лунный маяк, + частные производные | MODELLED | Задержка delta_dor для плоской волны (в той же кодовой базе) в пределе дальнего поля; частные производные конечными разностями. Внешнее сравнение 0,30 — вывод (остаётся MODELLED): по сравнению со сошедшимися временами распространения света ANISE 0,10 через DE440 (75 задержек на 2024-01-01 для трёх баз DSN, сформированных xval/anise-lunar-od без кода Kshana) ни одна задержка не укладывается в допуск 1 пс. Наибольший разрыв — 24 мкс, из-за аналитического центра Луны (около 200 км от DE440), единственной мгновенной геометрии без итерации по времени распространения света (3,6 мкс) и отброшенного движения полюса; частные производные маяка отличаются до 2.9e-3 в относительном выражении при пороге 1e-6. Утверждение из документации модуля о том, что приближения системы отсчёта ниже точности модели, на этом уровне не выполняется. Раунд 0,30 2: путь через ядра (lunar_vlbi::KernelGeometry) проверен по временам распространения света NAIF SPICE в собственной строке «Лунная геодезическая РСДБ, путь через ядра»; сравнение этого пути с ANISE (75/75 в пределах 1 пс, наихудшее 0,12 пс, tests/lunar_vlbi_anise_oracle.rs::kernel_delay_matches_the_anise_light_time_difference) — это только перекрёстная проверка вычисления ядер, потому что решение для времени распространения света в этой оснастке — собственное для проекта. Эта строка (аналитический путь по умолчанию) остаётся MODELLED с указанным выше выводом | lunar_vlbi |
| Лунная геодезическая РСДБ, путь через ядра | Задержка РСДБ в ближнем поле для земной базы, наблюдающей лунный маяк, с частными производными по маяку и станции, на пути через ядра (lunar_vlbi::KernelGeometry): Земля и Луна по DE440, главные оси Луны по DE440, ориентация Земли по ITRF93 с UT1 и движением полюса, каждое время распространения света сведено в барицентрической системе, частные производные с множителем времени распространения света 1/(c - u.V). Запускается как сценарий lunar-vlbi с заданными planetary_kernel_path, earth_orientation_kernel_path и moon_orientation_kernel_path; проверяемые выходы — ряд geometric_delay_s на пути через ядра и epoch_partials. На пути через ядра delay_s добавляет аналитический разностный член Шапиро, который не сравнивается, а delay_rate и near_field_correction_us не сравниваются | VALIDATED | NAIF SPICE Toolkit N0067 (spiceypy 8.2.0, MIT): сошедшиеся ньютоновские времена распространения света (spkcpt/spkcpo, CN) от маяка, неподвижного в MOON_PA_DE440, до станций DSN DSS-14, DSS-43 и DSS-63 по станционному ядру NAIF earthstns_itrf93_260814.bsp с de440s, moon_pa_de440_200625, moon_de440_250416.tf, earth_latest_high_prec и naif0012; частные производные — пятиточечные центральные разности времён распространения света SPICE, а не формула Kshana 1/(c - u.V). Зарегистрировано заранее (a689c797, эпохи 2024) с порогами 1 пс для каждой задержки и 1e-6 в относительном выражении для каждой частной производной. Первый прогон не прошёл (17/75 задержек в пределах 1 пс, наихудшая 1.03e-11 с): SPICE хранит ET в одном double, шаг которого в 2024 округляет эпоху излучения на величину до 6e-8 с, около 6 пс времени распространения света, и остаток совпадает с этим округлением с корреляцией 0,99999 (зафиксировано; рецензент воспроизвёл это независимо). Поправка 66e365d4, написанная после этого результата и до появления её набора данных, перенесла тот же оракул и пороги на 25 почасовых эпох вблизи J2000, где шаг ET не превышает 1.5e-11 с: 75/75 задержек в пределах 1 пс (наихудшая 6.2e-14 с), 75/75 частных производных маяка (наихудшая 7.4e-9), 150/150 частных производных станции (наихудшая 3.8e-11). Вне утверждения: аналитический путь по умолчанию (ряд для Луны и средняя лунная система отсчёта, 24 мкс от ANISE через DE440, строка «Лунная геодезическая РСДБ»), разностный член Шапиро, который сценарий добавляет аналитически, среда распространения и перевод из барицентрической в геоцентрическую шкалу | lunar_vlbi (KernelGeometry, delay_partials_beacon_body, delay_partials_stations, LunarVlbiScenario); naif_kernel |
| Читатель ядер NAIF: контейнер DAF, SPK типа 2 и двоичный PCK типа 2 | Собственный читатель двоичных ядер NAIF движка на чистом Rust (naif_kernel): контейнер DAF (оба порядка байтов, связанные записи сводок), сегменты положения SPK типа 2 на многочленах Чебышёва, связанные через свои центры с наименьшим общим предком, и сегменты углов Эйлера двоичного PCK типа 2, превращаемые во вращение из J2000 в систему тела, с эпохами в виде двухчастного ET, чтобы смещение менее микросекунды сохраняло точность. Через него читают DE440 KernelEphemeris (ephem_provider) и пути через ядра lunar_vlbi, lunar_llr и lunar_vlbi_fim. Утверждение состоит в том, что он правильно читает ядра JPL; это не утверждение о точности DE440 или аналитических рядов движка для Солнца и Луны | VALIDATED | Два независимых читателя ядер на одних и тех же файлах NAIF: NAIF SPICE Toolkit N0067 (CSPICE через spiceypy 8.2.0, MIT; spkezr и pxform) и ANISE 0.10.6 (Nyx Space, MPL-2.0; Almanac.translate и Almanac.rotate), оба запущены как отдельные программы на de440s.bsp и moon_pa_de440_200625.bpc. Зарегистрировано заранее (abcd9133) до появления какого-либо набора данных или значения оракула: начальное значение сетки — первые 16 шестнадцатеричных цифр хеша этого коммита, поэтому ни 200 эпох, ни пары тел нельзя было выбрать с оглядкой на результат; каждая эпоха также содержит Луну и Солнце относительно Земли. Пороги заранее зафиксированы по вычислению многочленов Чебышёва с двойной точностью (не более 15 коэффициентов, n^2 u = 2.5e-14 на вычисление, два вычисления и до двух переходов с каждой стороны): положение 1e-13 R + 1e-5 м, скорость 1e-13 V + 1e-10 м/с, где R и V — большая величина относительно наименьшего общего предка; элемент вращения 1e-13 W + 1e-15, где W — сумма коэффициентов покрывающей записи; ANISE добавляет 2 нс относительного движения для своих наносекундных эпох. Результат: каждое из 600 состояний и 200 вращений укладывается в свой порог относительно обоих оракулов, и на обрезанных, и на полных ядрах; наихудшее значение — 6.0e-3 порога (положение), 5.9e-3 (скорость), 3.7e-3 (вращение). Мутация: вычисление каждой записи при -s даёт 3597 несовпадений. Раскрыто: более ранняя проверка на 25 эпохах по SPICE (4.6e-5 м, tests/naif_kernel_reader_check.rs) была замечена до этой строки и не является её доказательством; первый прогон генератора набора данных прервался на пустом интервале сетки, не выдав ни одного значения, и был исправлен. Обе стороны читают DE440, поэтому согласие подтверждает читатель, а не эфемериды | naif_kernel (DafFile, SpkKernel, PckKernel); ephem_provider (KernelEphemeris) |
| Земной GNSS на лунном расстоянии | Приём земного GNSS на лунном расстоянии: слой слабого сигнала, который называет таблица 1 в P7 и для которого у движка не было модели. Для каждого спутника и каждой эпохи вычисляются угол от оси относительно надира передатчика, затмевает ли Земля прямой путь, наклонная дальность и потери в свободном пространстве, коэффициент усиления передатчика под этим углом, принимаемая мощность и отношение несущей к спектральной плотности шума; затем агрегируются только линии, проходящие порог слежения, и перебирается полный оборот орбитальной группировки, так что ответом является РАСПРЕДЕЛЕНИЕ, а не один снимок. Результат определяют три факта, и отчёт указывает каждый из них: Земля видна под углом 13,90 градуса с радиуса орбитальной группировки, поэтому ПИК луча геометрически недоступен любому лучу, идущему к Луне; остаются край главного лепестка и боковые лепестки — режим, в котором LuGRE работал у Луны в 2025; а потери на трассе L1 составляют около 208 дБ, примерно на 25 дБ больше, чем платит наземный пользователь. MEASURED на встроенной геометрии класса GPS из 24 спутников на 64 эпохах одного орбитального периода: доступность СИГНАЛА 0,375 при наилучшей линии 30,93 дБ-Гц и доступность РЕШЕНИЯ 0,000 — не более двух одновременно отслеживаемых линий, а не четырёх, нужных для определения положения. Разделение этих двух доступностей и есть главное, и отчёт не допускает их смешения: земной GNSS на лунном расстоянии — слой уровня ВРЕМЕНИ, а не положения, и априорное значение для многослойной устойчивости должно брать доступность решения. Обусловленность выдаётся по той же причине: каждый видимый спутник лежит внутри конуса шириной в пару градусов, если смотреть с Луны, так что линии визирования почти параллельны по построению. Запускается как вид earth-gnss-lunar. Переформулировано по D7: утверждение на лунном расстоянии — это ОТНОСИТЕЛЬНОЕ отношение несущей к спектральной плотности шума между спутниками в одной эпохе по измеренным двумерным диаграммам передачи (NAVCEN, Block IIR/IIR-M) плюс геометрическая видимость; абсолютное C/N0 не заявляется (Parker et al. сообщают об общих потерях 7–12 дБ). | MODELLED | Тождества в замкнутом виде и внутренняя согласованность; внешний оракул НЕ заявляется. Половинный угол лимба сверяется с asin(R_earth/r_orbit), а геометрия — с ним; потери в свободном пространстве, ядро DOP и распространение SGP4, которые здесь составляются, проверены внешне каждое в своей строке, и эта строка не заимствует их статус. ПОЧЕМУ MODELLED — из-за диаграммы передачи: усиление под углом задаётся равномерно освещённой круглой апертурой, то есть диаграммой Эйри, тогда как настоящая антенна GPS L1 — двенадцатиэлементная спиральная решётка с профилированным главным лепестком, пик которого смещён от оси, чтобы выровнять мощность по диску Земли, и с боковыми лепестками, не соответствующими диаграмме Эйри. Опубликованные измеренные диаграммы существуют и здесь не включены, поэтому верны порядки и порядки величин, но не дБ какого-либо отдельного спутника. ПЕРВАЯ РЕАЛИЗАЦИЯ ЭТОЙ СТРОКИ БЫЛА НЕВЕРНОЙ ТАК, ЧТО ЭТО СТОИТ ЗАПИСАТЬ: выражение Эйри верно только в передней полусфере, его аргумент зависит от sin(theta), и при theta около 180 градусов оно оборачивается и возвращает ПОЛНОЕ УСИЛЕНИЕ ПО ОСИ позади апертуры, — поэтому две самые сильные линии в первом отчёте принадлежали спутникам, направившим антенны от Луны, и только они проходили порог. Позади апертуры модель теперь применяет плоский нижний предел заднего лепестка, заданный как граница, а не как выдуманная форма диаграммы. Намеренно отсутствуют следующие факторы, каждый из которых делает бюджет ОПТИМИСТИЧНЫМ: нет ионосферных и тропосферных потерь на лучах, скользящих по лимбу, нет поляризационных потерь, потерь наведения и реализации, и принята сферическая Земля без рефракционного расширения. Положение Луны — ВХОДНОЕ значение, а не поиск по эфемеридам, потому что проверяются линия и геометрия луча. Для перевода этой строки в Validated нужны измеренная диаграмма передачи и нормальные точки LuGRE для сверки; ни того ни другого в репозитории нет, и здесь они не выдумываются. Раунд 0,30 2 — вывод (остаётся MODELLED): путь линии с измеренными входными данными (настоящие положения SP3, мощность передачи по блокам, табличные диаграммы передачи и приёма, гистерезис захвата и слежения) был сверен с Montenbruck et al. 2023, таблица 3, для GENESIS на 6000 км (зарегистрировано заранее 5b414f0a): средние для зенитной антенны согласуются в 5 из 6 случаев в пределах одного дБ от чувствительности из статьи; средние для надирной антенны на 1,0–2,4 спутника выше напечатанных, вероятно потому, что в статье использовались зависящие от азимута диаграммы боковых лепестков GPS, которые не опубликованы. Величины этой строки для лунного расстояния по-прежнему используют диаграмму Эйри как замену. 0,30+ D7 — вывод (остаётся MODELLED): переформулированная величина — РАЗНОСТЬ C/N0 между спутниками Block IIR/IIR-M, отслеживаемыми в одной эпохе, предсказанная по измеренным диаграммам L1 NAVCEN для каждого SVN (двумерным, в системе отсчёта рыскания) в сравнении с лётным C/N0 LuGRE (зарегистрировано заранее 768cb62b: 99 % видимых, СКО пар <= 3,0 дБ, медиана <= 2,0 дБ, не менее 50 записей и 30 пар) — имеет слишком мало данных: 26 подходящих эпох перелёта и лунной орбиты содержат 15 отслеживаемых записей IIR/IIR-M (в основном отслеживаются IIF и III) и одну пару. Все 15 предсказаны видимыми, а остаток единственной пары равен -0.06 дБ; ничего не заявляется | earth_gnss_lunar |
| Определение лунной орбиты: земной GNSS против наземных радиометрических измерений | Определение орбиты на околопрямолинейной гало-орбите (или эллиптической замороженной орбите) по двум независимым типам данных: псевдодальностям земного GNSS, принятым на борту (правило линии из строки «Земной GNSS на лунном расстоянии» плюс затмение Луной), и наземным двусторонним измерениям дальности и скорости изменения дальности с трёх станций Deep Space Network. Каждое — одношаговый пакетный метод наименьших квадратов около опорной орбиты с его формальной ковариацией; Монте-Карло с начальным значением (seed) для разности двух оценок проверяет, объясняют ли её две ковариации (q = d' (P_G + P_R)^-1 d, хи-квадрат с шестью степенями свободы при совпадении моделей), и что делает с этой статистикой немоделируемое ускорение. | MODELLED | Независимая программа на scipy/numpy интегрирует те же уравнения в вариациях (порог O1). Ничто не сравнивается с измерением лунной орбиты. Оракул проверяет численные методы заявленных формул, а не физику, поэтому строка остаётся MODELLED. Ограниченная модель трёх тел: без Солнца, без лунных гармоник, ось вращения Земли вдоль нормали к орбите, ILLUSTRATIVE входные данные приёмника и станции. | lunar_infra::{orbit, gnss, od} |
| Разрешение неоднозначностей фазы несущей на Луне: поверхность и орбитальный аппарат | Межприёмные однократно разностные фаза несущей и код земного GNSS на лунной поверхностной станции и орбитальном аппарате, с исключением разности часов для каждой эпохи, одной неоднозначностью на непрерывный проход и самым длинным проходом в качестве калибровки. Ковариация неоднозначностей с плавающей точкой — дополнение Шура; LAMBDA разрешает целые числа, вероятность, найденная методом бутстрэпа, приводится рядом с долей успеха целочисленных наименьших квадратов по Монте-Карло с начальным значением (seed) и сигмами положения для плавающего и фиксированного решений. Сообщается как найдено: при зарегистрированных 12 дБи задача двойных разностей неформируема (поправка 1 перенесла значение по умолчанию на 25 дБи после того, как были увидены только подсчёты доступности), а при 25 дБи целочисленная фиксация НЕ достигается — вне досягаемости (самое большее несколько процентов), хотя плавающее решение улучшается с длиной дуги. | MODELLED | Независимое решение на numpy тех же нормальных уравнений по экспортированным строкам (Q3) и полный перебор целых чисел (Q4). Ни с какими измерениями фазы несущей GNSS или на Луне сравнение не проводится. MODELLED. | lunar_infra::phase; lambda |
| Совместное оценивание лунной системы отсчёта: поверхностные станции и орбитальные аппараты | Информация Фишера для семипараметрического лунного датума системы отсчёта по лазерной дальнометрии с земных станций до пяти отражателей отдельно и с добавлением измерений дальности от орбитальных аппаратов до поверхностных станций: информационная матрица, ранг, сигмы Крамера — Рао, метрика вырожденности модуля лунной идентифицируемости и случайные наборы станций с начальным значением (seed). Орбита считается известной в лунных осях (её ошибка учитывается сигмой дальности орбитального аппарата). | MODELLED | Независимая конечная разность прямой модели на numpy (F2). Ни с какими реальными решениями лунной системы отсчёта сравнение не проводится. Коэффициент зависит от предполагаемой известной орбиты и сигмы дальности 1 м. MODELLED. | lunar_infra::frame; lunar_datum; lunar_identifiability; lunar_llr_geometry |
| Точность привязки систем отсчёта в космосе: совмещённые GNSS, РСДБ и лазерная дальнометрия | Точность по Крамеру — Рао межтехнологических смещений переноса, масштаба и поворота между системами отсчёта GNSS, РСДБ и лазерной дальнометрии, когда один космический аппарат несёт все три, с исключением положения аппарата в каждой эпохе и девятью мешающими параметрами локальной привязки с априорным значением, при переборе точности локальной привязки. Ковариации — методом квадратного корня (нормальные уравнения теряют разряды, когда технологии почти идеальны). | MODELLED | Независимая сложенная система на numpy с неизвестными положениями, исключёнными явными дополнениями Шура (T3). Ни с данными GRASP, Genesis или другой миссии сравнение не проводится. MODELLED. | lunar_infra::tie; fim::crlb_srif |
| Чувствительность к числам Лява и либрации Луны | Информация Фишера для h2, k2, l2 и амплитуд физической либрации по лазерной дальнометрии (радиальное и горизонтальное приливное смещение, вращение отражателя), слежению за орбитальным аппаратом (ускорение k2 степени 2, проинтегрированное вдоль линии визирования, с удалённым трендом), поверхностному гравиметру (гравиметрический фактор 1 + h2 - 1,5 k2) и поверхностным часам (относительная скорость хода (1 + k2 - h2) W2/c2, привязанная к константам лунного времени). Номинальные значения h2 и l2 — точки линеаризации; исследование говорит, что к чему чувствительно, а не каковы эти числа. | MODELLED | Независимая сборка по конечным разностям на numpy (G2) и вычисление в замкнутом виде (G4). Чувствительность к k2 для семейства орбитальных аппаратов — оценка верхнего края (состояние орбиты здесь поглощает лишь константу и тренд). Ни с какими измерениями лунных приливов или либрации сравнение не проводится; k2 взято из Lemoine et al. 2014 как номинальное. MODELLED. | lunar_infra::geodesy; lunar_od::degree2_tide_accel; lunar_time |
| Дополнение DOP маяками на лунной поверхности | Геометрический фактор DOP с дополнением маяками для лунного поверхностного пользователя: строки линий визирования видимых спутников и строки дальнометрии видимых поверхностных маяков объединяются в одну матрицу плана и вычисляются через общее ядро DOP, а полученный DOP отображается в реализованную точность 1 сигма В МЕТРАХ через эквивалентную пользовательскую ошибку дальнометрии для каждого маяка, составленную как корень из суммы квадратов членов синхронизации часов, многолучевости и привязки. Видимость маяков — геометрический горизонт безвоздушной Луны для двух высот, у которого нет рефракционного расширения, и потому он точен, а не приближён. Запускается как вид сценария lunar-beacon, который сообщает результаты для одних спутников, спутников плюс маяков и более крупной орбитальной группировки как конкурирующего пути к той же геометрии. MEASURED на встроенной эталонной геометрии (пользователь на -80 градусах, три привязанных маяка, иллюстративная LCNS из шести спутников при t=0, маска 5 градусов): 5 видимых спутников дают PDOP 9,6941 и 3-D 1 сигма 11,222 м; добавление маяков, которые действительно выходят за горизонт, даёт PDOP 4,1160 и 4,765 м, выигрыш в 2,355 раза; служба из 24 спутников вместо этого даёт PDOP 2,4226 и 2,804 м, выигрыш в 4,002 раза. Отчёт печатает число ВИДИМЫХ маяков, а не настроенное, и на этой геометрии за горизонт выходит только ОДИН из трёх маяков: два боковых пункта находятся примерно в 333 км от пользователя при горизонте 86 км для антенны высотой 2 м, так что читателю не приходится считать, что вклад внесли все три | MODELLED | Арифметика DOP — ядро crate::orbit::dop, отдельно проверенное внешне по gnss_lib_py в tests/dop_reference.rs; эта строка не заимствует заново статус той строки. Горизонт видимости маяков — замкнутая форма L01, а sigma = DOP x sigma_URE — стандартное соотношение GNSS (Kaplan and Hegarty, Understanding GPS/GNSS, раздел 7). В пределах этой строки само дополнение проверяется по независимому пути DOP в репозитории и привязано к зафиксированному эталону. ПОЧЕМУ MODELLED: проект орбитальной группировки, размещение маяков, высоты антенн и все три величины бюджета ошибок — иллюстративные входные данные, а не действующая съёмка или измеренная линия, поэтому приведённые метры — свойство выбранного сценария, а не какой-либо развёрнутой службы. ПРИМЕЧАНИЕ О ПРОИСХОЖДЕНИИ: эта возможность была заявлена в README и проверялась двумя тестами валидации, но НЕ имела строки в матрице и вида сценария, поэтому её нельзя было вызвать запуском вообще. Она была заявлена в тексте, отсутствовала в реестре и была недоступна в движке одновременно. Строка и вид добавлены вместе. Раунд 0,30 2 (зарегистрировано заранее db0eb9ec), заблокирован (остаётся MODELLED): видимость ANISE 0.10.6 и DOP на numpy на геометрии строки согласуются (видимые наборы точно, включая 72 случаев у горизонта и 48 случаев у маски; DOP в пределах 7.2e-13), но приведённые метры — это DOP, умноженный на иллюстративную ошибку дальнометрии 1,158 м по корню из суммы квадратов, без оракула; ограничение области, которое исключило бы их, ожидает решения владельца | lunar_beacon |
| Слепота целостности к синфазным ошибкам | Точное разложение ошибки измерения в подпространстве чётности на часть, которую RAIM не видит, и часть, которую видит. Для линеаризованной модели снимка y = G·x + e любая ошибка dy однозначно раскладывается на СЛЕПУЮ составляющую в range(G) — поглощаемую как ошибка состояния S·dy и аннулируемую проектором невязки Pperp = I − G·S, а потому невидимую для ЛЮБОГО теста по невязке, а не только для конкретного порога, — и ОБНАРУЖИМУЮ составляющую в пространстве чётности. Модуль возвращает проектор, разложение и слепую долю, так что вызывающая сторона может количественно оценить, какую часть конкретной ошибки монитор снимка структурно не способен сообщить. Применительно к реальному межэфемеридному нижнему пределу: метровое расхождение DE440 и INPOP21a, а также DE440 и EPM2021 в геоцентрическом положении Луны поглощается почти целиком как ошибка положения пользователя (медианная слепая доля 1,000000; медианная слепая ошибка положения 2,3955 м и 2,0050 м) при невязке чётности на уровне 1e-15 м | VALIDATED | P2: numpy linalg.lstsq (LAPACK gelsd SVD, BSD-3) пересчитывает разложение по методу наименьших квадратов на зафиксированных входных данных С настоящей частью чётности (dy = E·Δs + w, w ~ N(0, 1 м), начальное значение (seed) 20261001) на геометрии из 8 спутников и подмножестве из 6 спутников, 1464 случаев по обеим реальным межэфемеридным парам, зарегистрировано заранее (f672a314): blind_dx, residual, blind_norm и detectable_norm в пределах 1e-12 относительно |dy|, а blind_fraction в пределах 1e-12 абсолютно (наихудшие blind_dx 1.06e-14, residual 4.4e-15, blind_fraction 3.1e-15). numpy сам строит G по зафиксированным положениям, тогда как движок использует нормальные уравнения с методом Гаусса — Жордана; косая левая обратная матрица делает тест красным при 5.5e-2 |dy|. Поправка 1 (86c53301, после первого прогона, раскрыта) ослабила только входное предусловие для доли чётности (каждый случай не менее 1e-3 и 95 % каждой геометрии не менее 0,05), но не порог согласия. Проверяемое утверждение, как допускает P2: линейная алгебра разложения на этих входных данных; величины межэфемеридного нижнего предела и иллюстративная лунная геометрия (8 узлов типа LCNS на 5000 км) — входные данные, а не проверенные, а слепота — известное свойство всех RAIM по снимку. Сравнение с numpy в раунде 1 (tests/lunar_common_mode_integrity_reference.rs) проверяло только тождество S·G = I, потому что его входные данные лежали в range(G); оно сохранено как регрессионное. Происхождение эфемерид: tests/fixtures/inter_ephemeris/NOTICE.md (JPL, IMCCE, IAA RAS) | lunar_common_mode |
| Уровень защиты от синфазных ошибок и полная огибающая целостности | cmpl_horizontal ограничивает горизонтальную ошибку положения при k сигма, вносимую слепым классом синфазных ошибок, формируя blind_position_covariance = S*Cov*S^T и проецируя её в ENU; integrity_envelope сообщает hpl_total = hpl_araim + cmpl. Различие, ради которого существует эта пара: тест по НЕВЯЗКЕ RAIM/ARAIM доказуемо слеп к ошибкам в range(G), но УРОВЕНЬ ЗАЩИТЫ ARAIM — нет: его член при отсутствии неисправностей уже ограничивает их с точностью до URA поставщика плюс номинальное смещение. Поэтому CMPL — это лишь межпоставщиковый ПРЕВЫШАЮЩИЙ остаток, который URA/ISM отдельного поставщика не перекрывает с запасом, а сумма — консервативная граница по неравенству треугольника, а не RSS, верная только там, где этот остаток ещё не включён в URA. | MODELLED | Аналитическая алгебра проектора, проверенная сама по себе: ковариация, заключённая в range(G), должна давать положительный CMPL, ковариация, заключённая в пространстве чётности, — приблизительно нуль, а огибающая должна складывать два вклада, ортогональных в пространстве измерений. Синфазная ковариация, геометрия орбитальной группировки и k — репрезентативные входные данные Modelled, а НЕ сертифицированный бюджет, и не заявляется, что граница по треугольнику точна. ПРИМЕЧАНИЕ О ПРОИСХОЖДЕНИИ: cmpl_horizontal, blind_position_covariance и integrity_envelope — публичные и поставляемые, и их модульные тесты уже цитировались строкой о слепоте к синфазным ошибкам, но САМО УТВЕРЖДЕНИЕ ОБ ОГИБАЮЩЕЙ строки не имело — поэтому единственная оговорка, сохраняющая его честным, — что сумма является границей по неравенству треугольника, а не RSS, — нигде в реестре не была указана. Строка регистрирует утверждение и оговорку вместе. | lunar_common_mode |
| Совместное многотехнологическое лунное OD + часы | Пакетное слияние РСДБ + лунной локальной дальнометрии + дальнометрии между спутниками для восстановления положений станций и орбитальной группировки и часов | VALIDATED | P2: numpy 2.4.6 (numpy.linalg.lstsq с LAPACK gelsd, numpy.linalg.inv; BSD-3) пересчитывает каждый шаг Гаусса — Ньютона, сошедшееся решение взвешенных наименьших квадратов, формальные сигмы и ошибку станции на зафиксированных якобианах и наблюдениях шести смоделированных сетей, зарегистрировано заранее (5094bc31) при относительном пороге max(1e-8, 100 kappa eps). Первый прогон не прошёл для сети без РСДБ (6.1e-7 против 1e-8, обращение нормальных уравнений при обусловленности 1.4e5); исправление движка, написанное после этого результата (batch_ls::gauss_newton_qr, шаг QR по Хаусхолдеру, используемый estimate и formal_covariance), было перезапущено при неизменном пороге: шаги от 1.1e-14 до 2.4e-11, сигмы не более 1.3e-11. Проверяемое утверждение — линейная алгебра решения слияния на этих входных данных, а не физические величины смоделированной сети или её моделей наблюдений: строка о задержке лунной геодезической РСДБ остаётся MODELLED (её аналитический путь отличается от ANISE до 24 мкс), а у систем отсчёта есть собственные строки. Восстановление внесённой смоделированной истины и согласованность NEES остаются внутренними проверками; более ранняя перекрёстная проверка Orekit 12,2 / Hipparchus методом Левенберга — Марквардта (tests/lunar_joint_multi_technique_od_reference.rs) задействует batch_ls::gauss_newton, который estimate больше не вызывает, и сохранена как проверка этого примитива. Пересмотр 0,30: ошибки станций lunar-joint-od-clock по умолчанию 3,541344 -> 3,541350 м с РСДБ и 2183,119 -> 2183,558 м без (решение QR). Пересмотр 0,36 (STUDIO-15, переносимая математика; docs/revisions/STUDIO15-portable-math-rebaseline.md): 3,541350 -> 3,536885 м с РСДБ и 2183,558 -> 2184,021 м без, а решение без РСДБ останавливается после 5 итераций, а не 2 (остановка, ограниченная округлением, на плохо обусловленной сети); зарегистрированное заранее сравнение было перезапущено на заново экспортированных входных данных при неизменном пороге (numpy 2.4.6, все шесть сетей проходят) | lunar_combination (problem, model, estimate, formal_covariance); batch_ls (gauss_newton_qr) |
| Информация Фишера и наблюдаемость по Крамеру — Рао | Информация Фишера M=HᵀWH, нижняя граница Крамера — Рао, ранг наблюдаемости и нуль-пространство дефекта датума (псевдообратная матрица Мура — Пенроуза), а также скаляры D/A/E/T-оптимального планирования эксперимента по симметричному собственному решателю Якоби | VALIDATED | NumPy 2.4.1 (numpy.linalg.eigh / .inv; BSD-3-Clause, на основе LAPACK) — независимый сторонний эталон, вычисляющий те же однозначно определённые собственные значения, ковариацию Крамера — Рао σ²(XᵀX)⁻¹ и геометрические факторы DOP для GNSS другим алгоритмом (разделяй и властвуй из LAPACK + LU), чем циклический перебор Якоби Kshana и спектральная псевдообратная матрица; совпадение до 1e-9. Тот же класс внешних библиотек уже проверяет движок DOP (по gnss_lib_py) и ядра χ²/erf (по SciPy). Дополнительно сверено с замкнутыми формами CRLB по Kay (1993) и с достижением CRLB по Монте-Карло (внутренне) | fim |
| Наблюдаемость абсолютного положения лунных станций (дефект датума) | Наблюдаемость по информации Фишера для совместного лунного решения: без земных баз датум абсолютной системы отсчёта лежит в нуль-пространстве HᵀWH (положение станции ненаблюдаемо); ≥3 баз восстанавливают полный ранг и ограничивают ошибку станции по Крамеру — Рао, которую достигает оцениватель | MODELLED | Аналитическая структура дефекта датума — ненаблюдаемая мода абсолютной системы отсчёта лежит в нуль-пространстве информации Фишера (в замкнутом виде), порог ранга совпадает с опубликованным обоснованием схемы из 3 станций, а оцениватель достигает получаемой CRLB по Монте-Карло. Сама лунная геометрия — репрезентативная сеть (не лётные эфемериды), поэтому строка остаётся MODELLED; лежащий в основе движок FIM/CRLB отдельно проверен по замкнутым формам Kay (1993). Раунд 0,30 2 (зарегистрировано заранее fab02df9), заблокирован (остаётся MODELLED): NumPy/SciPy пересчитывают ранг и дефект при заявленном пороге 1e-9, долю осей станции в нуль-пространстве (в пределах 8.4e-10) и CRLB станции (в пределах 1.2e-10) на 17 зафиксированных конфигурациях, созданных Kshana (P2). Не повышено: утверждение, что оцениватель достигает границы (эффективность по Монте-Карло около 0,98), не имеет оракула, а ограничение области, которое оставило бы его MODELLED, ожидает решения владельца | lunar_combination (lunar_observability) + fim |
| Реализация лунной системы отсчёта | Подгонка 7-параметрического датума Гельмерта + привязка ориентации ICRF по сети точек | VALIDATED | Независимый решатель взвешенного преобразования подобия Умеямы (Хорна) в замкнутом виде (numpy/scipy на основе SVD; Umeyama 1991 IEEE TPAMI, Horn 1987 JOSA A) — алгоритм, отличный от итеративной подгонки Гаусса — Ньютона в kshana, достигающий того же однозначно определённого оптимума взвешенных наименьших квадратов на побайтно идентичных сетях точек | lunar_frame_realise |
| Объём навигационного обслуживания на Луне | Лунные DOP, покрытие и доступность класса Moonlight + обобщённые лунные уровни защиты ARAIM по объёму обслуживания | VALIDATED | Независимый сторонний эталон — кеплеровский пропагатор ANISE 0.10.2 astro::Orbit (Nyx Space, MPL-2.0) — путь вычисления для двух тел в равноденственных элементах, отличный от кеплеровского метода Ньютона — Рафсона в kshana; положение MCI каждого спутника согласуется с точностью <1e-3 м, а выведенные число и набор видимых спутников совпадают точно в каждой точке сетки. Ядро DOP проверено по gnss_lib_py; целостность использует опубликованные параметры LunaNet/LCNS | lunar_service |
| Генерация расширяющих кодов LunaNet AFS (LSIS V1.0) | Коды Augmented Forward Signal из LSIS V1.0 (29 января 2025): первичный код AFS-Q из 10230 чипов, сформированный по построению пилота L1C из IS-GPS-800 с индексами IS-GPS-800J (те же 210 назначений, что печатает приложение D LSIS), коды Голда AFS-I из 2046 чипов, сформированные по g1 = x^11 + x^2 + 1 и g2 = x^11 + x^8 + x^5 + x^2 + 1 с задержкой G2 каждого PRN, восстановленной по файлу приложения 3 стандарта, четыре вторичных кода, третичные коды из 1500 чипов, временное назначение узлов по таблице 11 и ярусный пилотный код. Содержимое LSIS считывается во время выполнения из локального кэша, проверенного по SHA-256 и заполненного из размещённого NASA PDF, и никогда не распространяется заново | MODELLED | Эталон: значения, которые LSIS V1.0 печатает для проверки (таблицы C-1–C-5, D-1–D-6, E-1–E-6), и его электронные файлы кодов из приложения 3 при критерии нулевого расхождения, зафиксированном до сравнения. Критерий не выполнен из-за одной напечатанной ячейки, внутренне противоречащей собственному файлу приложения 3 стандарта, поэтому строка остаётся MODELLED; составлена заметка об опечатке. Те же чипы также равны чипам LANS-AFS-SIM (строка «Формирование основной полосы LunaNet AFS относительно независимого генератора при заданном состоянии его канала») | lunar_afs::codes, lunar_afs::lsis, lunar_afs::params (IS-GPS-800J indices) |
| Формирование основной полосы LunaNet AFS относительно независимого генератора при заданном состоянии его канала (LSIS V1.0) | Ядро формирования основной полосы AFS (LSIS-130: комплексная огибающая I + jQ, I = код Голда AFS-I, умноженный на кадр 500 символов/с при 1,023 Мчип/с, Q = ярусный пилот AFS-Q при 5,115 Мчип/с, вращение несущей, выравнивание чипов и символов) воспроизводит отсчёты независимого генератора, когда управляется записанным состоянием канала этого генератора (фазы и скорости кода, фаза и частота несущей, амплитуда по каналам). Не охвачено: модель узла, выводящая это состояние из Доплера, задержки и отношения несущей к спектральной плотности шума, разделение мощности 50/50, вычисляемое по отношению несущей к спектральной плотности шума (амплитуды берутся из симулятора), а также метаданные SigMF и запись 8-битных отсчётов | VALIDATED | Библиотека: LANS-AFS-SIM (T. Ebinuma, BSD-2-Clause, коммит 480c6bf353717bafc04b5ee5bafb38ed90e61aae, сборка для S-диапазона, запускается как отдельная программа); отсчёты Kshana управляются только записанным состоянием канала симулятора, а сборка с печатью одной только трассы проверена как побайтно идентичная неисправленной. Пороги зафиксированы до прогона: ноль расхождений по чипам и символам, |rho| >= 0,999 за прогон и >= 0,99 на блок 2 мс, фаза в пределах 0,05 рад. Равные амплитуды I и Q — входные данные сравнения, поэтому разделение мощности им не проверяется. LANS-AFS-SIM читает свои третичные коды из файла приложения 3 LSIS, так что эта часть не независима от строки о кодах. LANS-AFS-SIM и PocketSDR-AFS имеют общего автора и считаются одной независимой реализацией. Ограничено наличием данных: сравнение с LANS-AFS-SIM требует локального кэша LSIS V1.0 (xval/lunar-afs/fetch_lsis.sh, проверка SHA-256) и без него пропускается с уведомлением | lunar_afs::waveform::render, lunar_afs::codes, lunar_afs::frame |
| Канальное кодирование кадра LunaNet AFS, FID 0 (LSIS V1.0) | Кадр FID 0 из LSIS V1.0 длительностью 12 с и 6000 символов: шаблон синхронизации из 68 символов, подкадр 1 с BCH (51, 8) (порождающий многочлен 763 в восьмеричной записи), CRC-24 ((1 + X)·P(X)) на подкадрах 2–4, кодирование LDPC со скоростью 1/2 с напечатанными A, B^-1, C, D (приложение 1 к LSIS, считывается во время выполнения из проверенного по SHA-256 локального кэша) и прокалыванием по стандарту, блочный перемежитель 60 x 98; исчерпывающий декодер подкадра 1, помечающий TOI вне 0..99, и нормированный декодер LDPC min-sum, написанный только по H = [[A, B, 0], [C, D, I]] | VALIDATED | Библиотека: LANS-AFS-SIM (T. Ebinuma, BSD-2-Clause, коммит 480c6bf353717bafc04b5ee5bafb38ed90e61aae), чьи собственные BCH, CRC, LDPC и перемежитель создают кадры, посимвольно идентичные кадрам Kshana для того же содержимого (ноль расхождений, порог зафиксирован до прогона). Подкреплено эталонными значениями: рабочим примером BCH с рисунка 8 LSIS V1.0 и контрольным значением CRC-24/LTE-A (каталог параметризованных алгоритмов CRC Грега Кука), оба совпадают побитово; а также тем, что PocketSDR-AFS декодировал каждый подкадр кадров, которые он синхронизировал в трёх прогонах, с успешным CRC и совпадающими битами подкадра 2. Проверка по чётности близка к внутреннему тождеству (она подтверждает, что напечатанная B^-1 обращает напечатанную B) и не засчитывается как оракул. Ограничено наличием данных: сравнение с LANS-AFS-SIM требует локального кэша LSIS V1.0 (xval/lunar-afs/fetch_lsis.sh, проверка SHA-256) и без него пропускается с уведомлением | lunar_afs::frame, lunar_afs::ldpc, lunar_afs::lsis |
| Декодируемость LunaNet AFS в замкнутом контуре независимым приёмником (LSIS V1.0) | Запись Kshana AFS, захваченная, отслеженная и декодированная независимым программным приёмником и сопоставленная с собственными истинными метками записи. Это доказывает только соответствие стандарту и согласованность меток; это не утверждение о физике канала, распространении, принимаемой мощности или бюджетах линии, значения которых в записи — выбранные входные данные | MODELLED | Библиотека: PocketSDR-AFS (T. Ebinuma по PocketSDR 0,13 T. Takasu, BSD-2-Clause, коммит 5b23809f30d68518b7fad7a564fd0fac57cc497d, сборка для S-диапазона, копия с уровнем журнала только для печати) при критериях, зафиксированных до каждого прогона. Третье предварительно зарегистрированное сравнение полностью выполняет свои пороги декодирования и слежения C1 и C2, но не выполняет свою защиту G0 в том виде, как она записана (два прогона неизменённого приёмника различаются в одних и тех же четырёх записях захвата), а второе не дотянуло на 5 нарушений, поэтому строка остаётся MODELLED. LANS-AFS-SIM и PocketSDR-AFS имеют общего автора и считаются одной независимой реализацией; проверки напечатанных векторов в строке о кодировании кадров защищают от общего неверного прочтения | lunar_afs::waveform (recording and truth labels), xval/lunar-afs/run_pocketsdr.sh |
| Кросс-генераторное соответствие GPS L1 C/A | Расширяющие коды GPS L1 C/A (sdr::CaCode) и подкадры LNAV 1–3 (gps_lnav: квантование полей по IS-GPS-200 со значением числа пи из спецификации, упаковка в дополнительном коде, слова TLM и HOW, чётность по таблице 20-XIV с инверсией D29*/D30*, биты, решающие чётность, в словах 2 и 10), сравнённые бит в бит с gps-sdr-sim на его поставляемом brdc0010.22n (32 спутника) | MODELLED | gps-sdr-sim (MIT, коммит 28ca29a6, запускается как отдельная программа через зафиксированную оснастку), зарегистрировано заранее f88f2969 с побитовым порогом для (A) чипов C/A, (B) каждого вычисленного поля LNAV, (C) каждого бита чётности. ВЫВОД: (A) 0 из 32 736 чипов различаются, (C) чётность 0 из 1 920 слов различается, (B) 230 из 1 152 вычисленных полей различаются на одну единицу: eph2sbf в gps-sdr-sim усекает к нулю приведениями типов C там, где передаваемому целому нужно округление (каждое различающееся значение лежит в пределах 0,01 единицы от округлённого целого Kshana). Остаётся MODELLED: зарегистрированный порог был конъюнкцией | gps_lnav, sdr |
| Геометрия сигнала сцены GNSS IQ относительно независимого генератора основной полосы | Истина для каждого спутника генератора сцены IQ для сцены GPS L1 C/A по широковещательным эфемеридам (iq::scene: SatGeometry по широковещательным эфемеридам, порождаемая в записи истины TruthRecord): какие спутники выше горизонта, псевдодальность, фаза кода в первом отсчёте, доплеровский сдвиг несущей и углы наблюдения для неподвижного приёмника, в сравнении с состоянием канала, по которому gps-sdr-sim строит первый блок собственного выхода I/Q, для тех же эфемерид, приёмника и времени начала (ионосфера выключена с обеих сторон) | VALIDATED | gps-sdr-sim (T. Ebinuma, MIT, коммит 28ca29a6) — независимый генератор основной полосы GPS L1 C/A, собранный собственным Makefile и запущенный как отдельная программа на его поставляемом brdc0010.22n в примерном месте из текста его справки (scripts/gen_iq_gpssdrsim_ref.sh); зафиксированная оснастка, скомпонованная с той же сборкой, печатает состояние канала (computeRange, computeCodePhase) за первым блоком программы. Пороги зафиксированы до запуска генератора (предварительная регистрация 7777da53). Область применения: геометрия GPS L1 C/A для неподвижного приёмника без ионосферы, тропосферы и часов приёмника; модели каналов, шум и содержимое навигационных данных сцены в эту строку не входят | iq::scene (Scene, SatGeometry, TruthRecord) |
| Захват GNSS IQ на независимо сформированных отсчётах I/Q | iq::acq::acquire (параллельный поиск фазы кода по БПФ с порогом Marcum-Q для квадратичного закона) с репликой GpsL1Ca на 20 мс собственного 8-битного выхода I/Q gps-sdr-sim, декодированного декодером отсчётов iq::io (ci8, 2,6 МГц, 11 спутников, без шума): каждый PRN с 1 по 32 ищется в двух окнах по 10 мс, результат сравнивается с фазой кода и Доплером, которые промодулировал gps-sdr-sim | MODELLED | Отсчёты I/Q gps-sdr-sim (MIT, коммит 28ca29a6) и его собственное состояние канала, зарегистрировано заранее 7777da53: (B1) каждый смоделированный PRN захвачен, (B2) никакой другой PRN не захвачен, (B3) фаза кода в пределах 0,5 чипа, (B4) Доплер в пределах 125 Гц. ВЫВОД: B1, B3 и B4 выполняются в обоих окнах (наихудшие 0,195 чипа, 72 Гц), но B2 не выполняется: все 21 PRN, которые gps-sdr-sim не моделировал, также пересекают порог (статистика от 151 до 206 против 79,5; смоделированные PRN — 1 300 и выше). Порог задан для гауссова шума измеренной мощности отсчётов; gps-sdr-sim шум не добавляет, поэтому ячейки отсутствующего PRN содержат взаимную корреляцию других спутников. Остаётся MODELLED: зарегистрированный порог был конъюнкцией | iq::acq (acquire, AcqConfig); iq::io (decode_samples); iq::scene (GpsL1Ca) |
| Мониторы IQ, оцениваемые в кампаниях лабораторного воспроизведения: обнаружение, пропуски, ложные тревоги и показатели ложной тревоги в замкнутом виде | iq::campaign::detect и исполнитель кампании: необязательная таблица [monitors] запускает мониторы IQ на каждой ячейке за единый проход исполнителя. Мониторы мощности и спектра видят отсчёты после каждой цепочки входного каскада; мониторы C/N0, SQM и захвата видят обновления контуров каждого отслеживаемого канала. Каждая тревога оценивается по заявленным событиям: обнаружено или пропущено для каждой тройки (событие, вид тревоги, канал), время обнаружения и ложные тревоги вне событий за время их экспозиции. Для каждого теста указан показатель ложной тревоги в замкнутом виде: мощность на блок (точный хвост гамма-распределения), избыток спектра на блок (приближение), эксцесс (односторонний гауссов), импульсы (биномиальный потолок), SQM на усреднённое обновление (2Q(k) = Q(1/2, k^2/2), новое) и ARL0 для CUSUM по C/N0 (Siegmund). Без таблицы ячейки, ключи и дайджесты не меняются. Помеховый сигнал не синтезируется | MODELLED | Собственные замкнутые формы мониторов на собственных сценах Kshana GPS L1 C/A (шум и законные сигналы; события ослабления собственных сигналов спутников) относительно порогов, зарегистрированных заранее в docs/design/MONITORS-IN-CAMPAIGN.md (382ab2f4). ВЫВОД: M1, M2 и M4 выполнены. M3 выполнен по обнаружению (18 из 18 ослаблений, P_md 0) и NOT MET по условию о времени: медианное время обнаружения — 1,001 с при 2 x ARL1 отсчётов = 0,433 с. CUSUM видит одну оценку на окно 1 с, поэтому граница по числу отсчётов меньше одного отсчёта. Только внутренняя согласованность: ни реальный приёмник, ни записанные помехи не проверяются | iq::campaign (detect, runner, spec); iq::monitor (stats::gaussian_two_sided_pfa, sqm) |
| ROC обнаружения мониторов IQ по оценённой кампании лабораторного воспроизведения | iq::campaign::detect (windows, roc) и iq::campaign::report::rocs: каждая ячейка кампании с мониторами хранит для каждого вида тревоги и канала максимум собственной тестовой статистики монитора по каждому заявленному окну события (положительные) и по разбитым на плитки окнам roc_window_s вне событий (отрицательные). Статистики — отклонение мощности блока, избыток PSD, эксцесс z, |z| SQM усреднённой метрики и CUSUM по C/N0. Отчёт объединяет их по видам в эмпирическую ROC на уровне окон с её AUC и рабочей точкой при заданном пороге, записанную как roc.json (kshana.campaign-roc/1) и раздел Detection ROC в report.html. Кампания без мониторов не пишет ни того ни другого | MODELLED | Синтетические кампании на собственных сценах Kshana GPS L1 C/A (ослабления собственных сигналов спутников) относительно порогов, зарегистрированных заранее в docs/design/DETECTION-ROC.md (b47e358d). ВЫВОД: R2 выполнен (уровень случайности, когда обнаруживать нечего). R1 NOT MET: AUC cn0_drop 0,7855 против 0,95, потому что каждое отрицательное окно после события наследует затухание CUSUM от обнаружения (все 18 послесобытийных отрицательных достигают 81 или более; все 18 дособытийных остаются на 0). Только внутренняя согласованность: ни реальный приёмник, ни записанные помехи не проверяются | iq::campaign (detect, report, runner); iq::monitor::spectral (kurtosis_reference) |
| Калибровка моделей C/N0 и захвата открытого приёмника по результатам кампаний IQ с заявленной ошибкой прогноза | iq::labfit (campaign, cn0, iqfit, iqreport) и [input] campaign на kshana iq labfit, Python kshana.iq_labfit и инструмент labfit для MCP (только папки кампаний внутри его рабочего каталога): читает выходную папку kshana iq campaign по её ДАЙДЖЕСТУ и группирует оценённые ячейки в единицы подгонки (сигнал x структура контура x цепочка входного каскада x тип помехи, никогда не объединяются). Для каждой единицы подгоняет измеренное C/N0 к заявленному J/S в форме спектрального разделения. Q_eff не идентифицируется по данным C/N0 без независимого измерения мощностей помехи и сигнала, поэтому Q задаётся, а не подгоняется (таблица типов, q события или для неизвестного типа наиболее вредное заявленное значение, cw Q = 1). Подгоняемый параметр — идентифицируемое смещение delta_eff = delta - 10 log10 Q, а защита по корреляции сообщает о вырожденности. Ячейки C/N0 с захватом ниже 90 % цензурируются и перечисляются. Пороговое J/S задаётся напрямую и в замкнутом виде; модели слежения и эмпирического захвата связаны через модель C/N0 с интервалами срыва и повторного захвата. Кластерный бутстрэп по записям с начальным значением (seed) (1000 реплик) даёт перцентильные интервалы; 90 % интервалы прогноза получают из розыгрышей остатков; отложенные проверки с исключением одной записи делятся на интерполяцию и экстраполяцию; зарегистрированная заранее таблица [validation] хешируется, и каждый порог оценивается как PASS/FAIL. Отчёт kshana.labfit-iq/1 в виде JSON, CSV и сгенерированного Markdown с блоком единиц. Только синтетика (без записи третьей стороны, без сигнала помехи). Путь labfit по журналу приёмника не изменён | MODELLED | Синтетическое восстановление параметров на собственных сценах Kshana GPS L1 C/A с известным профилем C/N0, наложенным по формуле из раздела 3,1, отслеженных и оценённых kshana iq campaign, относительно порогов, зарегистрированных заранее в docs/design/LABFIT-FROM-IQ.md (раздел 5,1, изменён 2026-10-12 в b7117bf, раздел 13). Оценщик C/N0 кампаний (M2M4) был зафиксирован в 5b13e3c2, отправлен до первой оценки порогов (закоммичен вместе с кодом подгонки, а не отдельно), после одного раскрытого диагностического прогона слежения. ВЫВОД по кампании с 18 событиями: (c) PASS; (a') NOT MET, ошибка delta_eff -1.097 дБ против 0,5 дБ (всё ещё -0.89 дБ в ячейках от 38 дБ-Гц и выше); (b') NOT MET, 0 из 50 кампаний покрывают истину (ошибка -1.189 +/- 0,093 дБ, интервал около 0,3 дБ); (d) NOT MET, замкнутая форма на 2,20 дБ ниже прямого J/S при потере, около подогнанного интервала срыва, умноженного на скорость нарастания (2,09 дБ); исходные положения (a) и (b) о Q — NOT MET, потому что Q не идентифицируется. ПОСЛЕДУЮЩАЯ ПРОВЕРКА (пороги зарегистрированы заранее в 1e532f84, docs/design/evidence/labfit-followup/RESULTS.md): на кампании со ступенчатым J/S delta_eff восстанавливается в пределах +0,185 дБ (S1 MET: ошибка нарастания — запаздывание оценщика); (d) в записанном виде выполняется на ней моделью контура слежения (0,45 дБ), но не эмпирической (6,42 дБ), поэтому S2 — NOT MET; на новой кампании с нарастанием (d) с подогнанными интервалами срыва, к которым добавлена скорость нарастания каждого события, укладывается в 1 дБ для обеих моделей (R1 MET), а (a') и (d) в записанном виде снова не выполняются (-1.25 дБ; 2,32 и 9,47 дБ). Проверяется метод, а не какой-либо приёмник: по синтетическим данным он не может быть VALIDATED | iq::labfit (campaign, cn0, iqfit, iqreport, schema, mod); iq::cli::labfit |
| Кодирование GPS LNAV, декодированное независимой библиотекой приёмника | Подкадры LNAV 1–3 Kshana (gps_lnav::encode_subframes) для 32 эфемерид brdc0010.22n, поданные в decode_word и decode_frame RTKLIB: чётность каждого слова, декодирование подкадров с согласованным выпуском данных и каждый декодированный параметр относительно целого числа Kshana и входного значения | MODELLED | RTKLIB v2.4.2-p13 (BSD-2-Clause, коммит 71db0ffa) decode_word/decode_frame как отдельная программа, зарегистрировано заранее ca5f0142: R1 чётность и декодирование, R2 декодированное значение равно целому числу Kshana, умноженному на масштаб IS-GPS-200, в пределах 2^-52 в относительном выражении, R3 в пределах половины кванта входного значения. ВЫВОД: R1 — 960 из 960 слов и 96 из 96 подкадров; R3 — каждый параметр, неделя и опорные времена точны; R2 не выполняется для 41 значений (af1, delta-n, IDOT) на 1–4 единицы младшего разряда, потому что P2_43 в RTKLIB — десятичное 1.136868377216160E-13, на 2.6e-16 в относительном выражении отличное от 2^-43; деление на константу RTKLIB возвращает целое число Kshana во всех случаях. Остаётся MODELLED: зарегистрированный порог R2 был слишком жёстким для собственной константы оракула | gps_lnav |
| Кодирование навигационного сообщения GPS LNAV | Подкадры LNAV 1–3 по IS-GPS-200 (gps_lnav::encode_subframes: квантование с округлением до ближайшего каждого параметра часов и орбиты при масштабных множителях и значении числа пи из спецификации, упаковка в дополнительном коде, слова TLM и HOW, чётность по таблице 20-XIV с инверсией D29*/D30*, биты, решающие чётность, в словах 2 и 10) — сообщение, которое передаёт генератор сигнала GPS L1 C/A | MODELLED | RTKLIB v2.4.2-p13 (BSD-2-Clause, коммит 71db0ffa) readrnx разбирает ежедневный широковещательный файл IGS BRDC00IGS_R_20250610000_01D_MN.rnx, а decode_word/decode_frame декодируют слова Kshana, запускается как отдельная программа; зарегистрировано заранее d4d9eb9d до получения файла, порог точного совпадения целых чисел. Мутация: усечение вместо округления даёт 235 отказов. Более ранние сравнения того же кодировщика записаны как выводы: с gps-sdr-sim, который усекает (230 полей), и со масштабированными значениями RTKLIB, чья десятичная константа 2^-43 не уложилась в порог в одну единицу младшего разряда (41 значений). Последующая проверка интегратором (остаётся MODELLED): сравнение согласуется, и мутация набора чётности тоже делает его красным, но предварительная регистрация d4d9eb9d попала в публичную ветку в 20:02:29 UTC, через две секунды после коммита с результатом 1783f904 (20:02:27 UTC), в котором уже есть выход RTKLIB для этого файла, поэтому порядок «зарегистрировано до получения файла» показать нельзя; новая регистрация, отправленная до получения невиданного широковещательного файла, решила бы вопрос | gps_lnav |
| Захват и оценка C/N0 на реальных лунных IQ | Параллельный поиск фазы кода (acquisition::pcps_acquire: переносимое БПФ, когерентное свёртывание, некогерентное накопление, порог хи-квадрат для вероятности ложной тревоги по всему поиску), уточнение, разомкнутая мгновенная корреляция с доплеровским сдвигом кода и оценщик C/N0 M2M4, запущенные на пакетах IQ LuGRE L1 с 4-битными отсчётами, считанных через realdata::ion_sdr | MODELLED | GNSS-SDR 0.0.19 (GPL-3.0, отдельная программа, зафиксированная конфигурация) на девяти неповерхностных пакетах L1 и ИСХОДНОМ C/N0 лётного приёмника (LuGRE Mission Data, Zenodo 16411687, CC BY 4,0), зарегистрировано заранее 768cb62b. ВЫВОД: читатель Kshana декодирует все 288 сравниваемых интервалов так же, как независимый конвертер; GNSS-SDR объявляет положительными 266 из 288 поисков, и Kshana согласна во всех 266 решениях, но лишь 250 локализованы в ячейке GNSS-SDR (A2 не выполняется); ветвь C/N0 пуста, поскольку ни одна лётная эпоха RAW не лежит в пределах 30 с от какого-либо пакета (ближайшая — 141 с). Большинство положительных — артефакты: голые уровни дополнительного кода несут среднее -0.5 по I и Q, линию нулевой частоты на 32 дБ выше шума в полосе 1 кГц, которую захватывают оба приёмника. Два пакета (OP5, OP12) были исключены по ошибке: прочтение их метаданных с отброшенными цифрами было принято за противоречие их заголовкам; реальная причина состояла в том, что читатель не мог прочесть отсчёт шире слова (с тех пор исправлено). Остаётся MODELLED | acquisition, portable_math, realdata::ion_sdr, realdata::lugre |
| Захват на реальных лунных IQ относительно предсказанного по орбите Доплера (решение по мощности отсчётов) | acquisition::pcps_acquire с решением по мощности отсчётов на девяти неповерхностных пакетах LuGRE L1 с уровнями mid-rise; разности Доплера между захваченными спутниками сравниваются с разностями, предсказанными по окончательным орбитам ESA и реконструированной Firefly траектории Blue Ghost | MODELLED | Предсказанный Доплер по окончательным орбитам ESA/ESOC и реконструированной траектории NAIF CLPS (xval/lugre-predicted-doppler/predict.py, независимо от Kshana), зарегистрировано заранее 0d1839d2. ВЫВОД: все 288 поисков пересекают порог на шуме (статистики мощности отсчётов около 430–520 против 346,3), поэтому P1 выполняется тривиально, и P3 выполняется (274 из 288 предсказаны видимыми), а P2 не выполняется для 4033 из 4036 пар. Ограниченный по полосе входной каскад повышает шум каждой ячейки примерно в 1,46 раза (зафиксировано: уровень шума 292 против белого шума 200 на OP2 PRN 1), чего статистика мощности отсчётов не видит. Остаётся MODELLED | acquisition, realdata::ion_sdr |
| Захват на реальных лунных IQ с оценкой по предсказанному по орбите Доплеру | acquisition::pcps_acquire с решением по усреднению ячеек (пик относительно средней ячейки сетки, устойчивое к шуму с ограниченной полосой) на девяти неповерхностных пакетах LuGRE L1 с уровнями mid-rise; разности Доплера между захваченными спутниками сравниваются с разностями, предсказанными по окончательным орбитам ESA и реконструированной Firefly траектории Blue Ghost | MODELLED | Предсказанный Доплер по окончательным орбитам ESA/ESOC и реконструированной траектории NAIF CLPS (xval/lugre-predicted-doppler/predict.py, независимо от Kshana), зарегистрировано заранее a81a9a4e. ВЫВОД: P1 и P3 выполняются (4 пакета, 12 из 12 захватов предсказаны видимыми), но P2 не выполняется для 8 из 8 пар. Две самые сильные пары совпадают с предсказанием по величине при обратном знаке (OP2 PRN 18/24: +7670,0 Гц измерено, -7693.9 предсказано; OP17 PRN 11/30: +11155,0, -11114.4), так что зарегистрированный порядок с I в младшем полубайте — сопряжённый к порядку пакетов; шесть обнаружений чуть выше порога не совпадают ни с одним знаком. Разброс Доплера при уточнении (от 30 до 50 Гц между двумя прогонами) также был недооценён регистрацией. Остаётся MODELLED | acquisition, realdata::ion_sdr |
| Захват на отложенных реальных лунных IQ относительно предсказанного по орбите Доплера | acquisition::pcps_acquire (решение по усреднению ячеек, вероятность ложной тревоги 1e-7) с refine_doppler_coherent на пакетах LuGRE L1, записанных на лунной поверхности (I в старшем полубайте, уровни mid-rise); разности Доплера между захваченными спутниками относительно разностей, предсказанных по окончательным орбитам ESA и посадочному ядру Firefly | MODELLED | Предсказанный Доплер по окончательным орбитам ESA/ESOC и посадочному ядру NAIF CLPS Firefly (xval/lugre-predicted-doppler/predict_surface.py, независимо от Kshana), зарегистрировано заранее 2108e6ff на пакетах, никогда не открывавшихся ранее. ВЫВОД: проверка на нетривиальность не проходит; ни один пакет не содержит двух захватов. OP40 исключён (метаданные называют отсутствующий файл); OP38, OP73, OP77_0, OP77_1 ничего не захватывают и не показывают ложной тревоги при 1e-7 (наибольшие статистики от 325 до 356 против 385,9); OP74 и OP76 захватывают PRN 31, а OP78_0 и OP78_1 — PRN 12, каждый по одному, все предсказаны видимыми. Остаётся MODELLED. Раскрытые отклонения: зарегистрированный порог Доплера 10 Гц опирается на синтетическое Монте-Карло когерентного уточнения, а не на разброс уже виденных пакетов, о котором просил интегратор; OP40 был исключён до прогона, потому что его метаданные называют файл отсчётов, которого нет в поставке набора данных | acquisition, realdata::ion_sdr, realdata::lugre |
| Совместная геометрия связи и навигации на Луне | Топоцентрические углы наблюдения для каждого спутника (азимут по часовой стрелке от севера, угол места) и наклонная дальность в названном селенографическом пункте при заданном положении спутника в связанной с Луной системе пункта (проверяемое утверждение). Точность дальнометрии по сигналу в пространстве задаётся параметром сценария, так что перебор по объёму обслуживания выдаёт ТРЕБОВАНИЕ к дальнометрии, а не «прошёл/не прошёл» при одной фиксированной сигме; этот параметр — проектный вход вне проверяемого утверждения | VALIDATED | ANISE 0.10.2 (Nyx Space, MPL-2.0, запускается как инструмент из xval/anise-service-geometry, двоичный файл lunar-look-angles-xval, который не вызывает код Kshana): собственная процедура ANISE для азимута, угла места и дальности (azimuth_elevation_range_sez) для пунктов, построенных её конструктором по широте, долготе и высоте на Луне pck00011 (сфера 1737,4 км), со спутниками, повёрнутыми в MOON_PA_DE440 через moon_pa_de440_200625.bpc. 768 отсчётов для 8 пунктов (4 названных пункта и 4 других, выше и ниже горизонта), 12 эпох и 8 спутников согласуются в пределах 1e-6 градуса по азимуту и углу места и 1 мм по дальности и положению пункта (зафиксировано до сравнения); измерено 2.2e-12 градуса, 2.1e-13 градуса и 5.6e-9 м. Утверждение: размещение пункта и углы наблюдения при заданном положении спутника в связанной с пунктом системе. Собственная реализация Kshana лунной связанной системы по среднему вращению и параметр точности дальнометрии вне его; модульные тесты геометрии в замкнутом виде сохраняются как вспомогательные проверки | lunar_service |
| Лунные дифференциальные PNT | Дифференциальная опорная станция класса NovaMoon: подавление синфазной ошибки + остаток, растущий с базой + уровни защиты DGNSS | MODELLED | Тождество дифференциального подавления ошибок + повторное использование механизма PL SBAS по DO-229E; решение с однократными разностями + WLS дополнительно сверено с lsq()/matinv() из RTKLIB (Takasu, BSD-2-Clause, скомпилированный C) — независимый код решателя, но та же алгебра разностей линий визирования первого порядка, так что по-прежнему InternalConsistency | lunar_dpnt |
| Экспорт для лунной интероперабельности | Экспорт лунной системы отсчёта, времени и эфемерид, согласованный с LunaNet/IOAG (CCSDS OEM + KIF), с проверкой соответствия при круговом обходе | MODELLED | Лунный экспорт OEM из kshana, заново разобранный независимой сторонней библиотекой oem (R. J. Anderson): токены системы отсчёта и времени и состояние для каждой эпохи согласуются с точностью записи (1 мм / 1e-9 км/с), а экспорт с отброшенным TIME_SYSTEM отвергается — структурный круговой обход обмена; физическая семантика лунной системы отсчёта и времени проверяется их собственными строками, поэтому эта строка остаётся MODELLED. Внешнее сравнение 0,30 — вывод (остаётся MODELLED): второй независимый читатель, разборщик CCSDS OEM из Orekit 12,2 (Apache-2.0, строгие значения по умолчанию), отвергает оба лунных файла, потому что не реализует системы времени LTC и TCL (он декодирует OEM крейта в EME2000/UTC и декодирует лунные файлы, когда TIME_SYSTEM заменён на TDB); oem 0.4.5 декодирует их в пределах записанной точности только за счёт отступления от неподдерживаемой системы времени. Обмен этими лунными файлами с распространёнными читателями CCSDS не установлен | lunar_interop |
| Оценка по рамкам устойчивости PNT | Подоценки по измерениям для семи собственных категорий устойчивости Kshana (не термины DHS), функций RDRR RethinkPNT и критериев Yang, каждая помечена Modelled с указанием своего драйвера; предварительный уровень RPCF с условием ограниченной деградации. Самооценка на основе моделирования, никогда не сертификация. | MODELLED | Выведенные вручную формулы для каждой метрики: разнообразие по обратному Симпсону, взвешенный среднеарифметический композит, ограниченные и неограниченные длительности по временной шкале, лестница уровней по слабейшему звену | resilience::arch, resilience::score, resilience::diversity, resilience::timeline |
| Исследование нестабильности решений по оценке устойчивости | Количественно показывает, как одна композитная оценка или уровень RPCF переупорядочивает архитектуры при допустимом симплексе весов и ансамбле угроз (доля смен top-1, дисперсия тау Кендалла, доля смен уровня, диапазоны рангов); анализ «заявлено против измерено» и схлопывания разнообразия. | MODELLED | Тождества ранговых статистик в замкнутом виде (тау в [-1,1] со значениями, вычисленными вручную; детерминированное Дирихле с начальным значением) и построенные устойчивые и неустойчивые свидетели | resilience::stats, resilience::study, resilience::panel |
| Репрезентативность демонстрации и разрывы до полёта | Реестр честности для каждого результата, уточняющий выход демонстрации: его внешние опоры, смоделированные допущения, разрывы до полёта и репрезентативный диапазон TRL, с принудительными инвариантами (Validated требует внешней опоры; Modelled требует разрыва и не может заявлять выше TRL 4). | MODELLED | Инварианты в замкнутом виде, соответствующие дисциплине «репрезентативность обоснована + разрывы до полёта выявлены» для compliance; привязаны к границе между статусом верификации и видом оракула | representativeness |
| Свидетельства компромисса «квантовое против классического» (общая форма) | Один воспроизводимый объект TradeEvidence (фиксированная рамка: сценарий + seed + движок; общие значения «квантовое против классического» для каждого показателя качества с корректной по знаку выгодой, необязательный 95% доверительный интервал, метка validated/modelled), несущий запись о репрезентативности, так что каждая квантовая вертикаль PNT сообщает компромисс одинаково честно. | MODELLED | Тождества выгоды и победителя в замкнутом виде + точная обёртка существующего quantum_trade::TradeResult; честность привязана к реестру репрезентативности и меткам верификации | qtrade |
| Библиотека моделей ошибок квантовых устройств | Карточки устройств (оптические/на захваченных ионах/на ионах ртути + классические часы, повторно используемые из holdover/clock_state; холодноатомный интерферометр; классические линии передачи времени и линии на запутанных/одиночных фотонах), каждая несёт запись о репрезентативности; линия на запутанных фотонах добавляет модель точности синхронизации, ограниченной дробовым шумом (~jitter/sqrt(R*tau), штраф за тёмные отсчёты, систематический нижний предел). | MODELLED | Повторно используемые коэффициенты часов и CAI (holdover/clock_state, опубликованные значения) + тождества дробового шума и потерь в замкнутом виде для линии на запутанных фотонах | quantum_devices |
| Доверенное квантовое время (передача времени + защищённое распространение + аномалии) | Сквозная цепочка передачи времени «квантовая против классической» (инерционный ход часов + точность линии в квадратуре), повторно используемый уровень защиты времени, показатель безопасности по атакам с задержкой и повтором (1-P_md) и вероятность обнаружения аномалии часов + задержка CUSUM, выдаваемые как честный TradeEvidence с записью о репрезентативности. | MODELLED | Квадратурный бюджет в замкнутом виде на повторно используемых проверенных ядрах (ADEV по Stable32/NIST; граница TPL; обнаружение analytic_pd/pmd); честность привязана к реестру репрезентативности | timetransfer_chain |
| Квантовая навигация без GNSS | Квантовое (холодноатомный интерферометр) против классического счисления пути навигационного класса по INS при отсутствии GNSS: рост ошибки положения, holdover до порога положения и компромисс «квантовое против классического» как честный TradeEvidence; честное замечание о наблюдаемости (смещение ненаблюдаемо без решения, поэтому ошибка растёт). | MODELLED | Повторно используемые инерциальные бюджеты, сверенные с независимым двойным интегрированием в Octave того же ОДУ счисления пути (другая среда выполнения, общая модель → ReferenceImpl) плюс опубликованный краткосрочный шум Freier-2016 как односторонняя опора; композит «квантовое против классического» остаётся MODELLED | quantum_nav_od |
| Обнаружение неисправностей и аномалий для квантовых систем PNT | Каталог квантовых неисправностей с метками (скачок частоты/дрейф/потеря захвата часов; скачок смещения/пропадание датчика), AUC ROC статистики обнаружения с бутстрэп-доверительным интервалом и минимально обнаружимая неисправность при фиксированной частоте ложных тревог; монитор с квантовыми часами обнаруживает меньшие неисправности, чем классический, и выдаётся как честный TradeEvidence. | MODELLED | Гауссова AUC в замкнутом виде = Phi(mu/(sigma*sqrt2)), сверенная с внешне проверенной eval_stats::bootstrap_auc_ci (по scikit-learn) + аналитические пороги обнаружения | quantum_faults |
| Динамика ориентации твёрдого тела без моментов | Уравнения вращательного движения Эйлера (I ω̇ = τ − ω × Iω, главные оси и общий тензор инерции), связанные с кинематикой ориентации на кватернионах (q̇ = ½ q ⊗ ω) и распространяемые интегратором RK4 с фиксированным шагом, который заново нормирует кватернион на каждом шаге | VALIDATED | Basilisk 2.9.1 — распространение твёрдого тела космического аппарата (AVSLab, ISC; ориентация MRP через собственные связанные уравнения ступицы, svIntegratorRKF78 при относительном допуске 1e-12), независимая реализация уравнений твёрдого тела без моментов: кватернион RK4 Kshana (dt 0,01 с) и угловые скорости тела согласуются в пределах 1e-9 на 1e4 с для двух общих недиагональных тензоров инерции (наихудшие 3.3e-11 и 3.4e-12 рад/с); допуск зафиксирован до сравнения. Проверяемое утверждение: движение без моментов; член внешнего момента не сравнивается. Проверки законов сохранения и симметричного волчка сохраняются как вспомогательная самосогласованность. Среда с гибким телом, контуром управления и внешним моментом не моделируется | attitude_dynamics |
| Динамика относительного движения Клохесси — Уилтшира / Хилла | Относительное движение преследователя вокруг цели на круговой опорной орбите в системе LVLH: линеаризованные уравнения Клохесси — Уилтшира (ẍ−2nẏ−3n²x=0, ÿ+2nẋ=0, z̈+n²z=0), решаемые матрицей перехода состояния Φ(n,t) размера 6×6 в замкнутом виде (Clohessy–Wiltshire 1960; Vallado, алгоритм 48) с условием ограниченной относительной орбиты ẏ₀=−2n·x₀ и поправкой второго порядка в замкнутом виде (cw_dynamics::second_order_correction, отклик CW на квадратичные члены точных уравнений для круговой орбиты ведущего; Karlgaard и Lutze 2003, Newman, Lovell и Pratt 2015), составленной как cw_dynamics::propagate_second_order. Проверяемый выход — propagate_second_order; одна линейная Φ характеризуется относительно нелинейной истины, но не проверяется | VALIDATED | Orekit 12,2 (Apache-2.0) NumericalPropagator, два тела, LOFType.QSW, запускается как отдельная программа (набор данных не менялся с раунда 1). Порог 1e-3 м, зарегистрированный заранее, на каждом отсчёте каждого случая; исправление движка второго порядка было перезапущено против него без изменений (поправка 8c8e768d, написанная до появления пропагатора, с раскрытием того, что разрывы первого порядка были известны). propagate_second_order согласуется в пределах 1.15e-7 м (C1), 9.8e-8, 5.4e-8 и 2.2e-8 м; уменьшение члена второго порядка вдвое даёт отказ при 1.85e-3–3.14e-3 м. Одна линейная Φ отклоняется от нелинейной истины на 1,2–6,3 мм при 100 м за треть орбиты (отброшенный член второго порядка; её строгий тест оставлен игнорируемым), поэтому она характеризуется, а не проверяется. Сохранённые внутренние проверки: Φ против интегрирования уравнений Хилла методом RK4, Φ(t)Φ(−t)=I, тождества ограниченной орбиты и дрейфа −12π·x₀ и масштабирование остатка третьего порядка члена второго порядка. Область применения: круговая орбита ведущего, разделения около 100 м, до трети орбиты; без эксцентриситета (Tschauner–Hempel), членов J2 и дифференциального сопротивления; допущение малого разделения | cw_dynamics (propagate, second_order_correction, propagate_second_order) |
| Пассивная геолокация излучателя по TDOA/FDOA | Определение положения излучателя (источник помех или спуфер, либо оппортунистический источник для обратной PNT) по разности времён прихода в сети приёмников — пересечение гиперболоидов τᵢ=(Rᵢ−R₀)/c, решаемое методом наименьших квадратов Гаусса — Ньютона, — и, добавляя разность частот прихода (разности скоростей изменения дальности) при движущихся приёмниках, совместное восстановление положения и скорости; с нижней границей Крамера — Рао для ковариации положения по геометрии измерений | MODELLED | Самосогласованность оценивателя и геометрии: круговые обходы прямое→обратное, тождество Фишера/CRLB J·CRLB=I, монотонность GDOP и достижение оценивателем собственной границы Крамера — Рао при шуме Монте-Карло — проверки внутренней согласованности, НЕ внешний набор данных, поэтому строка остаётся InternalConsistency. MODELLED пассивная геолокация — модель точечного источника по линии визирования; без многолучевости и NLOS, смещения часов приёмника и членов атмосферной рефракции. Раунд 0,30 2 относительно Ho и Chan 1993 и Ho и Xu 2004 (зарегистрировано заранее f89018b8, 1 % от каждого напечатанного значения) — вывод (остаётся MODELLED): граница TDOA с ограничением на поверхность воспроизводит геометрические множители 40 Н (-0.11 %, -0.02 %) и максимальное TDOA; совместная граница TDOA+FDOA воспроизводит рис. 6 (+0,06 %, -0.17 %) и, в источнике, который называет собственный код авторов для рис. 7 (поправка, написанная после того, как этот результат был увиден, раскрыта), рис. 7 (+0,11 %, -0.02 %); она равна опубликованному коду границы авторов (в стиле BSD, запущен в GNU Octave) с точностью 3e-12; решатель максимального правдоподобия со взвешиванием по ковариации достигает напечатанной границы (от +0,3 до +0,4 %). Множители для Оттавы, которые статья печатает по Монте-Карло (251, 7,1), отличаются на +1,3 % и +4,4 %, вне порога 1 % | geolocation |
| Пиковое торможение баллистического входа в атмосферу по 3-DoF в сравнении с опубликованным номиналом Stardust | Вход материальной точки по 3-DoF над вращающейся сферической Землёй через стандартную атмосферу США 1976, интегрируемый методом RK4 из инерциального состояния входа, с выдачей пикового торможения и его высоты; планетарное относительное состояние входа выводится из инерциального. Запускается как вид сценария entry-heating. | VALIDATED | Номинал Stardust по Desai, Mitcheltree и Cheatwood (1999, NASA NTRS 20050042027): максимальное торможение 33,4 g при 12,6 км/с относительно планеты со стартовой массой 45,8 кг, траектория POST по 6-DoF с полной аэродинамической базой данных; граница входа по Desai, Lyons, Tooley и Kangas (NTRS 20090004445): радиус 6503,14 км, инерциальная скорость 12,9 км/с при -8.2 градуса. Пороги зарегистрированы заранее в xval/entry-stardust/PREREGISTRATION.md до какого-либо прогона на этих входных данных; оба выполнены с первого прогона. ЧТО НЕ ПРОВЕРЕНО: один опубликованный случай и одна величина (пиковое торможение, которое в баллистическом приближении не зависит от баллистического коэффициента); широта и курс входа предполагаются; нагрев, тепловая нагрузка и точка посадки с ним не сверялись; материальная точка с постоянным C_D, а не 6-DoF. | entry_eo_ascent::entry_heating (simulate_entry, inertial_to_relative, EntryHeatingScenario) |
| Конвективный нагрев критической точки при входе (Sutton-Graves) на входе по 3-DoF | Конвективный тепловой поток в критической точке q = k sqrt(rho/R_n) V^3 с константами Sutton-Graves для земного воздуха и атмосферы Марса (NASA TR R-376, 1971), его пик и интегральная тепловая нагрузка вдоль входа по 3-DoF, баллистического или с подъёмной силой при постоянном крене, на Земле или Марсе. | MODELLED | Внутренняя согласованность: соотношение и константы, как напечатано в NASA TR R-376, проверка сходимости по половинному шагу и ожидаемый порядок пиков нагрева и торможения. ЧТО НЕ ПРОВЕРЕНО: ни одно опубликованное значение нагрева не сравнивалось (статьи по Stardust дают проектный предел и оценку конвективного плюс излучательного нагрева около 1200 Вт/см2, с которой конвективное одно соотношение сравниться не может); нет излучательного нагрева, поправки на температуру стенки или каталитичность и отклика тепловой защиты. | entry_eo_ascent::entry_heating (stagnation_heat_flux, simulate_entry) |
| Радиометрия электрооптического формирователя изображений, MTF, относительный отклик края и NIIRS по GIQE 4 | Бюджет отношения сигнал/шум надирного формирователя изображений (ламбертова яркость сцены, уравнение камеры, дробовой, темновой, считывающий шум и шум квантования), системная MTF на частоте Найквиста как произведение дифракции неперекрытой апертуры, апертуры детектора, линейного смаза и гауссова дрожания, отклик края и относительный отклик края, интегрированные по этой MTF, Q = lambda F / p, и NIIRS по GIQE версии 4 без компенсации MTF. Запускается как вид сценария eo-radiometry. | MODELLED | Замкнутые формы: дифракционная MTF на половине частоты среза, край-рампа в один пиксель для чистой апертуры детектора (RER 1), край по нормальной функции распределения для гауссова размытия (RER = erf(0.5/(sigma sqrt 2))), масштабирование дробового шума и коэффициенты GIQE 4 как опубликовано (Leachtenauer et al., Applied Optics 36(32), 1997). ЧТО НЕ ПРОВЕРЕНО: ни с каким внешним формирователем изображений, измеренной MTF или оценённым изображением сравнение не проводилось; GIQE — эмпирическая регрессия с собственной ошибкой; нет рассеянного света, атмосферной MTF, компенсации MTF и наложения спектров. | entry_eo_ascent::eo_radiometry (Imager, snr_budget, giqe4_niirs, EoRadiometryScenario) |
| Потери на силу тяжести, сопротивление, управление и противодавление при выведении ракеты | Плоский гравитационный разворот при выведении многоступенчатого аппарата над невращающейся сферической Землёй через стандартную атмосферу США 1976 (плотность и давление) с толчком по тангажу, тягой, уменьшенной противодавлением сопла, отсечками ступеней на точных границах шагов, а также потерями на силу тяжести, сопротивление, управление и противодавление, интегрируемыми рядом с состоянием. Запускается как вид сценария ascent-losses. | MODELLED | Внутренняя согласованность: точное тождество скорость отсечки = сумма Isp g0 ln(m0/mf) минус четыре интегрированные потери (остаток ниже 1e-6 м/с), уравнение Циолковского для вертикального вакуумного разгона, где единственная потеря — сила тяжести, и давления US76 на уровне моря и на тропопаузе. ЧТО НЕ ПРОВЕРЕНО: потери ни одного опубликованного аппарата не сравнивались; нет вращения Земли, пассивного участка, дросселирования и наведения сверх толчка; постоянный C_D; это не оптимизатор траекторий. | entry_eo_ascent::ascent (simulate_ascent, AscentScenario); reentry::us76_pressure |
| Двустороннее уравнение TWSTFT, бюджет неопределённости и стабильность линии с фликкерной и суточной невзаимностью | Двустороннее уравнение TWSTFT, решаемое для T_A - T_B с задержками передачи и приёма станций, ионосферной асимметрией вверх/вниз в Ku-диапазоне, разностью задержек ответчика и членами Саньяка, относительно его точной прямой модели; квадратурный бюджет неопределённости с TDEV линии как членом типа A; двусторонний ряд с белым и фликкерным фазовым шумом (Kasdin-Walter), суточной невзаимностью и постоянным остатком взаимности; а также скорость, СКО остатка, TDEV и ADEV поданных рядов часов станций Circular T, MJD-CSV или IGS RINEX. Запускается как вид сценария time-transfer-budget. | MODELLED | Внутренняя согласованность: прямая модель и решённое уравнение согласуются до 1e-15 с, член Саньяка равен независимой форме контура BIPM 2A omega/c^2 модуля, ионосферный член равен 40,3 TEC (1/f_up^2 - 1/f_down^2)/c, а шумовые процессы показывают ожидаемые формы TDEV. ЧТО НЕ ПРОВЕРЕНО: ни одно реальное измерение TWSTFT или отчёт о калибровке не сравнивались; заданные задержки и неопределённости — входные данные, а не измеренные; стабильности поданных рядов сообщаются, а не проверяются. | twstft_budget (counter_readings, solve_offset, combined_uncertainty, flicker_phase, two_way_series, series_stability); time_transfer_budget (TimeTransferBudgetScenario, read_series) |
| Численные методы атмосферы на наклонной оптической трассе: дисперсия Рытова, сцинтилляция, вероятность замирания гамма-гамма, усреднение по апертуре, оптическая толщина облаков и ясного воздуха | Cn2 Хафнагеля — Валли, интегрируемый вдоль наклонной трассы, для дисперсии Рытова плоской и сферической волны (восходящая и нисходящая линии), индекс сцинтилляции Эндрюса — Филлипса и параметры гамма-гамма, вероятность замирания и запас на замирание гамма-гамма, коэффициент усреднения по апертуре при слабой турбулентности, оптическая толщина облака для столба жидкой воды и оптическая толщина ясного воздуха по видимости Ким плюс Рэлей, заменяющие сводные атмосферные потери бюджета оптической линии, когда задана атмосфера. Запускается внутри вида сценария optical-atmosphere. | MODELLED | Численные методы сравниваются с независимой программой (xval/optical-atmosphere/oracle.py, mpmath 1.4.1 при 30 знаках, квадратура tanh-sinh по исходной переменной высоты и плотности гамма-гамма через функцию Бесселя K), не имеющей общего кода с Kshana, при порогах, зафиксированных до появления какой-либо реализации (xval/optical-atmosphere/PREREGISTRATION.md). ПОЧЕМУ MODELLED: этот оракул вычисляет те же опубликованные формулы, поэтому он проверяет реализацию заявленных формул, а не атмосферу; ни пример проверки ITU-R, ни измеренная запись сцинтилляции или ослабления на наклонной трассе не используются (значения ITU — открытый вопрос лицензирования, и в репозиторий они не включены). Уровень профиля Cn2, видимость, масштабные высоты аэрозоля и молекул, длина пути усреднения по апертуре и подгонка моментов для применения усреднения по апертуре к параметрам гамма-гамма — заявленные входные данные или соглашения. Строка источника в модуле фиксирует, что один широко копируемый обзор печатает второй показатель сцинтилляции как 7/6, где Andrews и Phillips дают 5/6; реализована форма 5/6 | optical_atmosphere (rytov_variance, scintillation, gamma_gamma_cdf, fade_margin_db, aperture_averaging_factor, cloud_optical_depth, clear_air_optical_depth); optical_linkbudget (optical_link_budget_atmosphere) |
| Доступность оптического наземного пункта, зависящая от погоды, и разнесение пунктов с корреляцией по расстоянию | Доступность оптической линии относительно заявленного запаса линии по логнормальному климату облачной жидкой воды (количество по ITU-R P.840, ослабление по геометрической оптике) и независимому замиранию из-за турбулентности по гамма-гамма, запас линии, необходимый для целевых доступностей, и потолок, который никакой запас не поднимает, логнормальные длительности перерывов, гипотетические варианты техник улучшения и сетевая доступность по однофакторной гауссовой копуле, у которой парная корреляция равна exp(-расстояние/длина декорреляции). Запускается как вид сценария optical-atmosphere. | MODELLED | Внутренняя согласованность: пределы в замкнутом виде и монотонность модели разнесения, замкнутая форма потолка облачности и логнормальные тождества перерывов. Внешний оракул НЕ заявляется, и сравнение с ним не проводилось: ни измеренная доступность оптической наземной станции, ни запись прямой видимости без облаков не используются. ПОЧЕМУ MODELLED: климат облаков (вероятность облачности, медиана и разброс столба жидкой воды, длительности перерывов), независимость облаков и турбулентности, форма гауссовой копулы, длина декорреляции и каждый выигрыш техники — допущения; поставляемые сценарии задают ILLUSTRATIVE климаты, а не набор данных. Для повышения этой строки нужны цитируемая измеренная запись доступности и порог, зарегистрированный до сравнения | optical_weather; optical_sitediv; optical_techniques; optical_atmosphere_scenario |
| Непрерывность синхронизации и дальнометрии при оптических перерывах | Распределение длительностей перерывов оптического пункта, связанное с дисперсией инерционного хода часов в замкнутом виде из модели holdover: ошибка синхронизации и дальнометрии при заявленных квантилях перерывов, holdover до порога синхронизации, доля перерывов и времени перерывов внутри него и доступность синхронизации A + U E[min(D, T_h)]/E[D] для классических и квантовых классов часов. Запускается внутри вида сценария optical-atmosphere. | MODELLED | Внутренняя согласованность с модулем holdover, бит в бит; внешний оракул НЕ заявляется. Спектральные плотности классов — синтезированные нижние пределы при большом tau, которые модуль holdover уже несёт, поэтому величины наследуют его заявленную оговорку: holdover до жёсткого порога определяется предполагаемым нижним пределом красного шума, а не цитируемой девиацией Аллана. Длительности перерывов — логнормальная модель с заявленными параметрами, а не измеренная запись длительности облаков | optical_outage_holdover (couple, clock_psds); holdover (coast_phase_sigma, holdover_seconds, phase_to_range_m) |
| Запас оптической линии во времени: одна реализация погоды пункта с начальным значением (seed) | Включаемая по выбору таблица [timeseries] (длительность, шаг, seed) заставляет вид optical-atmosphere также записывать для каждого пункта одну реализацию с начальным значением заявленной модели пункта во времени: эпизоды облачности (ясные промежутки экспоненциальны, облачные перерывы логнормальны с заявленными средним и разбросом, доля времени в облаках задана заявленной вероятностью облачности), один логнормальный столб жидкой воды на каждый эпизод облачности, один отсчёт сцинтилляции гамма-гамма на шаг и по ним запас линии, замирания из-за облаков и сцинтилляции и флаг работоспособности линии, с реализованными доступностью, долей облачности, числом перерывов и самым долгим перерывом. Без таблицы результат — документ 0,37. Розыгрыши проходят через переносимые маршруты распределений и математики, поэтому native и wasm32 дают одни и те же байты. | MODELLED | Только внутренняя согласованность; внешний оракул НЕ заявляется, и для реализации погоды его не существует. Проверки сравнивают один розыгрыш со статистическим выходом той же модели, поэтому успех говорит, что генератор выбирает из заявленных распределений (доступность и доля облачности розыгрыша лежат в зарегистрированных заранее допусках относительно заявленных величин), а не что какой-либо реальный пункт ведёт себя так. Ряд — одна реализация, а не климат: его доступность отличается от заявленной на ошибку выборки розыгрыша, а отсчёты сцинтилляции на разных шагах независимы, что является заявленным упрощением процесса, декоррелирующего за миллисекунды. Погодные входные данные остаются допущениями сценария. | optical_timeseries (site_series, SiteModel, SeriesSpec, Series); optical_atmosphere_scenario (TimeseriesSpec) |
| Читатель файлов орбитальных данных TRK-2-18 и модель марсианского 2-стороннего Доплера с рампами | Читатель файлов орбитальных данных DSN (TRK-2-18): группы записей по 36 байт (метка файла, идентификатор, орбитальные данные, рампы по станциям, смещения часов, сводка, конец файла), а в каждой записи орбитальных данных — метка времени от 1950, задержки нисходящей и восходящей линии, наблюдаемая, станции, тип данных, диапазоны, достоверность, канал, космический аппарат, 46-битная опорная частота и время сжатия; время начала и конца рамп, скорости и начальные частоты. Поверх него — модель 2-стороннего Доплера X-диапазона с рампами (интегрированные восходящие рампы, круговое время распространения света с Шапиро и тропосферой, станции DSN через цепочку CIO по IAU 2006/2000A и EOP IERS, время станции) и пакетное определение орбиты марсианского орбитального аппарата (поле GMM-3, третьи тела, SRP, сопротивление). | MODELLED | Метка PDS3, которую процесс подготовки навигационных данных DSN выдал вместе с файлом (NASA PDS Geosciences Node, MRO-M-RSS-1-MAGR-V1.0), сверена с порогами, зарегистрированными заранее в xval/mro-odf/PREREGISTRATION.md до появления читателя. MODELLED, потому что один зарегистрированный порог (строки таблицы конца файла, 121 в файле против 120 в метке) не выполнен; метка здесь внутренне противоречива. Этап 2 (xval/mro-od/PREREGISTRATION.md, поправки A1 и A2 до оценённого результата): Доплер, предсказанный по реконструкции навигационной группы MRO (mro_psp5, NAIF), совпадает с наблюдаемым 2-сторонним Доплером с рампами с точностью 12,5 мГц на проходах, не использованных при разработке, порог выполнен; зарегистрированное определение орбиты не удалось на оценённой дуге (нормальная матрица не положительно определена) и орбиты не дало, поэтому пороги по орбите не выполнены. Прогон 2 (xval/mro-od/PREREGISTRATION-RUN2.md, демпфированный оцениватель, та же дуга и пороги, поправка к оценке R2-A1 раскрыта в docs/revisions) сошёлся: оценённая орбита в пределах 0,36 км СКО (0,53 км максимум) от реконструкции, пороги выполнены, но СКО Доплера после подгонки — 48,6 мГц против порога 30 мГц, не выполнено, поэтому строка остаётся MODELLED. ЧТО НЕ ПРОВЕРЕНО: ни одна оценённая орбита не выполнила все зарегистрированные пороги; ионосфера, солнечная плазма и большая часть смещения антенны (радиальное смещение 1,5 м подгоняется на проходе разработки) не моделируются. | odf (parse_odf, Odf, OdfObservation, OdfRamp, seconds_1950); mars_od (DopplerModel, RampTable, compress_two_way, MarsDynamics, fit, fit_damped); naif_kernel (SPK type 1); gravity_pds (SphericalHarmonicField::from_shadr) |
| Управление ориентацией с замкнутым контуром по обратной связи MRP на силовых маховиках | Инерциальное управление ориентацией жёсткого корпуса с тремя и более сбалансированными силовыми маховиками: закон обратной связи MRP L_r = -K sigma_BR - P omega_BR (Шауб и Джункинс), моменты двигателей маховиков минимальной нормы G_s u = -L_r с ограничением по пределу каждого маховика, связанная динамика корпуса и маховиков, в которой момент инерции корпуса включает момент инерции вращения маховиков, кватернионная кинематика, RK4 с экстраполятором нулевого порядка. Запускается как вид сценария aocs (контур по истинному состоянию). | VALIDATED | Basilisk 2.9.1 (AVSLab, ISC; bsk запускается как отдельный инструмент, не подключается как библиотека и не включается в код): корпус космического аппарата, reactionWheelStateEffector (BalancedWheels, ограничение момента включено), simpleNav, inertial3D, attTrackingError, mrpFeedback (без интегрального члена) и rwMotorTorque при dt = 0,1 с с его RK4 — в сравнении с собственной реализацией Kshana на трёх случаях (три ортогональных маховика; четырёхмаховичная пирамида; четырёхмаховичный случай с насыщением), пороги предварительно зарегистрированы в xval/aocs-basilisk/PREREGISTRATION.md до написания кода и прогона. Все пороги выполнены с первого прогона. ЧТО НЕ ПРОВЕРЯЛОСЬ: шум датчиков в контуре, интегральная обратная связь, наведение со слежением, трение маховиков, вибрации, ограничения скорости и мощность, коэффициенты усиления какого-либо реального космического аппарата; сравнение проверяет реализацию закона и динамики относительно независимой, но не лётный регулятор. | aocs (AocsConfig, required_torque, motor_torques, rates, rk4_step, simulate, mrp_from_quaternion); aocs_kind (AocsScenario) |
| Оценка ориентации мультипликативным EKF по гироскопу и звёздному датчику | Мультипликативный EKF Леффертса — Маркли — Шустера: состояния ошибки ориентации в связанной системе координат и смещения гироскопа, распространение по угловой скорости гироскопа за вычетом оценки смещения и дискретному шуму процесса Фаренкопфа (случайное блуждание угла и скорости), обновления по звёздному датчику с невязкой 2 vec(q^-1 q_st) в форме Джозефа и мультипликативный сброс; дискретный имитатор гироскопа и звёздного датчика по Фаренкопфу. Вид aocs может замкнуть контур управления по этой оценке. | MODELLED | Внутренняя согласованность: нормированная квадратичная ошибка оценивания фильтра относительно истины, смоделированной по тем же моделям датчиков на начальных значениях Монте-Карло, и сходимость оценок ориентации и смещения. ЧТО НЕ ПРОВЕРЯЛОСЬ: внешний оцениватель и лётные данные не сравнивались (в Basilisk 2.9.1 нет модуля MEKF); модели датчиков учебниковые, без неточности установки, масштабного коэффициента и влияния поля зрения звёздного датчика. | aocs_mekf (Mekf, GyroSim, attitude_error, spd_solve6); aocs_kind (estimator) |
| Определение ориентации по Вахбе, TRIAD и QUEST | Оптимальная трёхосная ориентация по взвешенным векторным наблюдениям (направления на звёзды, Солнце и по магнитометру): детерминированный двухвекторный TRIAD, q-метод Давенпорта (точный минимизатор функции потерь Вахбы — оптимальный кватернион является собственным вектором наибольшего собственного значения матрицы Давенпорта K размера 4×4, который находится симметричным методом Якоби), и QUEST (корень характеристического уравнения K по методу Ньютона/секущих с началом в Σ весов, затем восстановление кватерниона по вектору Гиббса) | VALIDATED | scipy.spatial.transform.Rotation.align_vectors (SciPy 1,13; Virtanen и др., Nature Methods 2020) — решение задачи Вахбы по Кабшу/Маркли через SVD, действительно независимый алгоритм (SVD матрицы профиля ориентации) и независимая кодовая база по отношению к собственному разложению матрицы K Давенпорта и методу характеристического корня QUEST в kshana, вычисляющие ТУ ЖЕ однозначно определённую оптимальную по Вахбе ориентацию. На незашумлённых наборах взвешенных векторных наблюдений TRIAD, q-метод и QUEST воспроизводят оптимальный поворот scipy с точностью <1e-9 рад (сравнение через не зависящий от знака угол ошибки ориентации). Статистическое утверждение Монте-Карло с шумом «оптимальный метод лучше TRIAD» остаётся MODELLED (внешнего оракула нет); только наблюдения единичными векторами направлений — без моделирования поля зрения, смещения и временной корреляции датчика, а QUEST вырождается при 180° (этот случай покрывает q-метод) | wahba |
| Статистики обнаружения при захвате GNSS квадратичным детектором | Квадратичный (некогерентный) детектор захвата при поиске по фазе кода × Доплеру: вероятность ложной тревоги (центральное χ² с 2M степенями свободы), порог, достигающий целевой P_fa (обратная функция χ² CDF, найденная бисекцией), и вероятность обнаружения (нецентральное χ² с параметром нецентральности 2M·ρ для отношения сигнал/шум ρ после корреляции в одной ячейке), с обобщённой Q-функцией Маркума Q_M(a,b)=1−F_{χ'²(2M,a²)}(b²) | VALIDATED | scipy.stats.ncx2 / scipy.stats.chi2 (SciPy 1,13; Cephes/Boost) — алгоритм, независимый от ряда неполной гамма-функции в kshana (raim::chi2_cdf / noncentral_chi2_cdf), а именно цепная дробь для нецентрального и центрального χ²; вычисляет то же однозначно определённое ЯДРО статистик обнаружения: обобщённую Q-функцию Маркума Q_M(a,b)=ncx2.sf(b²,2M,a²), вероятность обнаружения P_d, вероятность ложной тревоги P_fa и обращение P_fa→порог, с совпадением до ~1e-6 — на том же основании независимости, что и строка Validated «статистическое ядро целостности RAIM/ARAIM». Только ЯДРО: усреднение по ячейкам CFAR и потери при попадании на границу бинов кода и Доплера остаются MODELLED | acquisition |
| Разрешение целочисленных неоднозначностей фазы несущей GNSS (LAMBDA) | Целочисленная фиксация неоднозначностей методом наименьших квадратов по схеме LAMBDA: целочисленное (Z) декоррелирующее преобразование с сохранением объёма (целочисленная редукция размера по Гауссу для множителя L D Lᵀ) + точный поиск целочисленного метода наименьших квадратов методом ветвей и границ в глубину по Шнорру — Эйхнеру, с проверкой отношения на двух лучших кандидатах (проверенное утверждение); плюс замкнутая формула вероятности успеха бутстрэп-фиксации P_s=∏(2Φ(1/(2σ_{i|I}))−1), проверяемая только внутренне и вне проверенного утверждения | VALIDATED | RTKLIB v2.4.2-p13 lambda() (его исходный файл lambda.c, Т. Такасу, BSD-2-Clause), независимая редукция LAMBDA и поиск MLAMBDA, скомпилированные из C и запускаемые как инструмент, на 300 случайных ковариациях (n от 2 до 10): у целочисленного метода наименьших квадратов единственный минимизатор, поэтому зафиксированные целые числа должны совпасть (0 расхождений), а две наименьшие квадратичные нормы, участвующие в проверке отношения, должны совпасть с относительной точностью 1e-9 (измерено 5.6e-13); допуск зафиксирован до сравнения. Проверенное утверждение: решение ILS и две его лучшие нормы. RTKLIB не вычисляет вероятность успеха бутстрэп-фиксации, и она по-прежнему проверяется внутренне по Монте-Карло процесса округления; инварианты Z-преобразования и полный перебор остаются вспомогательными проверками. Только декорреляция по Гауссу (перестановки переупорядочивания полной редукции LAMBDA ускоряют поиск, но не меняют ни точный ответ ILS, ни вероятность бутстрэп-фиксации) | lambda |
| Прицеливание в B-плоскости и гравитационный манёвр в приближении сопряжённых конических сечений | Геометрия гиперболического пролёта (a=−μ/v∞², e=1+r_p·v∞²/μ, угол поворота δ=2·asin(1/e), прицельный параметр |B|=|a|·√(e²−1)), система координат точки прицеливания в B-плоскости Ŝ/T̂/R̂ и разложение B·T̂/B·R̂, а также гравитационный манёвр в приближении сопряжённых конических сечений (модуль v∞ сохраняется, направление отклоняется на δ, гелиоцентрическое Δv=2·v∞·sin(δ/2) без расхода топлива) с параметром Тиссерана T_P=a_P/a+2√((a/a_P)(1−e²))cos i | VALIDATED | GMAT R2026a (Apache-2.0, запускается как отдельная программа) на 192 гиперболических околоземных состояниях: B.T, B.R и |B| в пределах 1e-6 км (худший случай 1.35e-8 км), угол поворота и обе асимптоты в пределах 1e-9 рад (худший случай 9.3e-15 рад); изменение скорости при манёвре по C3 и асимптотам GMAT в пределах 1e-9 v_inf (худший случай 5.6e-14); гелиоцентрические большая полуось, эксцентриситет и наклонение на 350 гелиоцентрических состояниях до и после манёвра в пределах 1e-9 относительной погрешности и 1e-12 рад (худшие случаи 2.2e-14 и 4.1e-14 рад); параметр Тиссерана относительно sbpy 0.6.0 (BSD-3) на элементах GMAT в пределах 1e-9 (худший случай 1.3e-15) и относительно 3 - C3/v_c^2 (8.9e-16); и замкнутая формула Тиссерана относительно таблицы 8,1 Касуги и Джуитта (2019) для 12 объектов в пределах границы округления, принятого в публикации (худший случай — 0,39 от неё; опубликованное расчётное значение уровня P1). Предварительно зарегистрировано (436293bf; гелиоцентрическое исправление 6fd9f5e6); поправка 374c806b, написанная после генерации файлов оракула и до получения любого значения Kshana, расширила фильтр входного наклонения с 1e-2 до 1e-3 рад, сохранив больше хуже обусловленных состояний. Область MODELLED: двухтельный пролёт в приближении сопряжённых конических сечений на круговой планетной орбите, без перехода через сферу влияния, возмущений при сближении и эфемерид | bplane |
| Формирование диаграммы антенной решётки CRPA для защиты от подавления | Подавление в антенне с управляемой диаграммой приёма: комплексные векторы наведения решётки a(û)=exp(j·k·pₙ·û), детерминированное наведение нулей (единичное усиление в направлении на космический аппарат, точные нули в направлении до N−1 источников подавления через вектор минимальной нормы w=Aᴴ(AAᴴ)⁻¹b) и адаптивные веса MVDR w=R⁻¹a_sv/(a_svᴴR⁻¹a_sv), самостоятельно направляющие глубокие нули на сильные помехи (с собственным ядром комплексной линейной алгебры, написанным с нуля) | VALIDATED | numpy.linalg / scipy.linalg (комплексное решение LAPACK zgesv) — кодовая база линейной алгебры, независимая от собственного комплексного ядра kshana, написанного с нуля; вычисляет ТЕ ЖЕ однозначно определённые веса: MVDR w=R⁻¹a_sv/(a_svᴴR⁻¹a_sv) и наведение нулей минимальной нормы w=Aᴴ(AAᴴ)⁻¹b, а также получающиеся коэффициенты усиления диаграммы решётки, с совпадением до ~1e-9 — тот же класс оракула, что и в строках Validated DOP (gnss_lib_py) и информации Фишера (numpy). MODELLED: узкополосная решётка из одинаковых изотропных элементов в дальней зоне — без взаимной связи, рассогласования элементов, конечной полосы (STAP) и ошибки оценки вектора наведения | crpa |
| Степенной шум часов по IEEE-1139 + предел фликкер-FM | Пятикоэффициентное преобразование спектральной плотности мощности в вариацию Аллана по IEEE-1139 S_y(f)=Σh_α f^α → σ_y²(τ) (белый и фликкерный PM, белый, фликкерный FM и случайное блуждание FM), предел фликкер-FM σ_y=√(2 ln2·h_{-1}) как полноправный подгоняемый член и неотрицательная подгонка семейства FM в базисе {(2π²/3)τ, 2 ln2, 1/(2τ)}, восстанавливающая предел, который базис дрейфа {1/τ,τ,τ³} представить не может | VALIDATED | allantools 2024,06 (А. Валлин; коэффициенты Касдина и Уолтера 1992 / Верно 2015) — независимая сторонняя кодовая база и линия цитирования, вычисляющие ТО ЖЕ однозначно определённое преобразование IEEE-1139 из спектральной плотности мощности в σ_y(τ) для каждого из пяти типов степенного шума. powerlaw::allan_deviation в kshana совпадает с замкнутыми формулами allantools (белый и фликкерный FM, RW-FM и белый PM с относительной точностью <5e-9; фликкерный PM до ~1e-5 — подлинный признак независимости, поскольку kshana использует табличную константу 1,038 из NIST-SP-1065, а allantools — полное выражение 3γ−ln2), а предел фликкер-FM √(2 ln2·h_{-1}) совпадает с allantools по всей шкале — тот же порог, который проходят строки Validated MDEV/TDEV/Theo1/MTIE. MODELLED: стационарная степенная модель — без члена детерминированного дрейфа (τ²); коэффициенты отдельных устройств и измеренные пределы остаются Modelled | powerlaw |
| Обмен блоками ковариации в CCSDS OEM | Сериализация и разбор блока CCSDS 502,0 OEM COVARIANCE_START…COVARIANCE_STOP — ковариационной матрицы положения и скорости размера 6×6, записанной как её нижний треугольник из 21 элемента (канонический порядок от CX_X до CZ_DOT_Z_DOT) с необязательным COV_REF_FRAME; дополняет существующие запись и разбор вектора состояния OEM, так что ковариации определения орбиты и фильтров проходят круговое преобразование в стандартном формате | VALIDATED | oem 0.4.5 (MIT, https://pypi.org/project/oem/) — ТОТ ЖЕ независимый разборщик CCSDS-502, которому доверяет строка Validated «совместимость CCSDS OEM», совершенно отдельная кодовая база (собственный токенизатор KVN, конечный автомат раздела ковариации и сборка матрицы в numpy). kshana выдаёт полный сегмент OEM с блоком COVARIANCE, содержащим немаркированные голые числа нижнего треугольника; oem разбирает его и восстанавливает симметричную матрицу 6×6, совпадающую с входной ковариацией kshana поэлементно с точностью до округления f64 — подлинный сквозной обмен между библиотеками (сравнение с восстановлением oem, а не с повторным разбором kshana), закрывающий прежний пробел строки «нет стороннего эталонного файла» | oem (covariance_block_kvn, parse_covariance_block) |
| Рост ошибки инерциальной навигации/TRN при выбеге и пересечения порогов | Бюджет ошибки положения в зависимости от длительности выбега, построенный по коэффициентам IMU: каждый источник ошибки (смещение акселерометра, смещение гироскопа, случайное блуждание скорости, случайное блуждание угла, масштабный коэффициент в крейсерском полёте и при устойчивой удельной силе) распространяется через девятисостоятельную модель ошибок локально-горизонтной INS с обратной связью Шулера (inertial::coast::ErrorDynamics по Гроувзу, 2-е изд., гл. 14: ошибки ориентации, скорости и положения, вертикальный канал с градиентом силы тяжести, радиусы WGS-84 и нормальная сила тяжести, горизонтальная платформа, движущаяся на север с заданной скоростью, latitude_deg и height_m; систематические члены через расширенную матричную экспоненту, случайные блуждания по Ван Лоану), одночлены плоской Земли сохранены только как leading_order_m; вклады объединяются по заявленному правилу (rss / linear-sum / deterministic-sum-with-stochastic-rss); длительности выбега, при которых достигаются заданные вызывающей стороной пороги положения (10 м и 50 м по умолчанию), находятся прямым сканированием по первому пересечению (first_crossing_s, так как ограниченные по Шулеру кривые немонотонны), с указанием доминирующего источника при каждом пересечении; и режим с ограничением по TRN, дающий наибольший интервал между привязками по рельефу, при котором каждый порог выдерживается. Запускается как вид сценария ins-trn-coast | VALIDATED | NaveGo v1.4 (коммит 24d9488, LGPL-3.0), запускается как отдельная программа в GNU Octave 8.4.0: прогоны свободного инерциального выбега с тем же профилем ошибок IMU, с одной исправленной численной мёртвой зоной в обновлении кватерниона (qua_update.m: условие на скорость ниже 1e-8 рад/с заменено на wnorm == 0, применено к копии времени выполнения и однократно проверено на совпадение; при этом условии медленно дрейфующая ориентация платформы замирала и обрывала обратную связь Шулера). Предварительно зарегистрировано (4262b969) с исправленным генератором до его запуска; движок (440b3877) зафиксирован до открытия любого исправленного вывода; тот же порог 5 %, 48 точек, члены, начальные значения и статистика, что в раунде 1. Результат: 48/48 в пределах 5 % (худшие значения: +3,70 % для случайного блуждания скорости при 1200 с, +3,33 % для случайного блуждания угла при 1800 с); при 3600 с NaveGo/Kshana дают 2375.4/2376.2 м для смещения акселерометра и 130 885/131 675 м для смещения гироскопа. Обнуление обратной связи Шулера по транспортной скорости не проходит проверку (+695 % при 3600 с). Раскрыто: одноканальные предсказания Шулера и значения NaveGo раунда 1 были известны; в модели нет подгоняемого параметра. Область применения: кривые ошибок по членам при классе Tactical, 45 град с. ш., горизонтальная платформа, направленная на север, до 3600 с; пересечения, правило объединения и режим TRN — детерминированные функции этих кривых. Коэффициенты класса IMU (диапазоны Гроувза 2013, таблица 4,1) и остаточная ошибка привязки TRN остаются входными данными MODELLED. Раунд 1 (заменён): одночлены плоской Земли, теперь leading_order_m, завышают оценку после 600 с (в 2.2–8 раз за час). Редакция 0,30: изменяются все выходные данные ins-trn-coast (пик TRN поставляемого сценария 52,932679 -> 44,711834 м) | inertial::coast (ErrorDynamics, ErrorSource, source_error_m, CoastModel, Contribution, Combination, TrnFixMode, first_crossing_s, InsTrnCoastScenario); scenario kind ins-trn-coast |
| Соотношение времени апертуры между навигацией и связью | Один прогон принимает план контактов (список окон aos_s/los_s, в каждом из которых апертуру запрашивают для навигации или связи — тот же словарь окон, который выдаёт passes::predict_passes, преобразованный aperture_duty::windows_from_passes), число апертур и явную политику арбитража, и возвращает долю времени навигации, долю времени связи, долю простоя и простой на каждый сеанс. Политика является входным параметром с документированным значением по умолчанию (navigation-priority; также communications-priority и невытесняющая first-come-first-served), а отчёт содержит применённую политику, её полное определение и определения долей и простоя, потому что приведённая доля времени без правила арбитража невоспроизводима. Расписание строится точным заметанием интервалов по границам окон, поэтому окно, заканчивающееся точно там, где начинается следующее, никогда не конкурирует, а апертуро-секунды навигации, связи и простоя накапливаются независимо в этом одном заметании. Запускается как вид сценария aperture-duty-cycle | MODELLED | Внутренняя согласованность по трём величинам, вычисляемым разными выражениями в одном заметании и затем обязанным сойтись. Апертуро-секунды навигации, связи и простоя накапливаются раздельно — простой из (апертуры − |обслуженные|) на каждый элементарный интервал, а не как остаток, — и их сумма проверяется на равенство апертуры × horizon_s, что сразу нарушается при неверно заданной границе, дважды учтённом или пропущенном интервале; кроме того, отдельно требуется, чтобы обслуженное время по сеансам складывалось в два итога по обслуживанию. Структурные свойства планировщика измеряются, а не предполагаются: проверяется, что обслуженное время не убывает с ростом числа апертур на 200 псевдослучайных планах для всех трёх политик (неочевидно для невытесняющей политики, где лишняя апертура меняет распределение занятости на каждой последующей границе), а арифметика границ закреплена на паре касающихся окон и окон с перекрытием в одну секунду, где ошибка на единицу иначе осталась бы незамеченной. Связка с предсказателем проходов проверяется по выходным данным passes::predict_passes: при одной апертуре и отсутствии конкурирующего обслуживания апертуро-секунды навигации равны собственной суммарной длительности проходов, вычисленной предсказателем. Внешний оракул не заявляется, и его не существует: возможность заменяет расчёт вручную, а не проверяется по нему, прилагаемый план контактов иллюстративный, а не лётный, и ни один эксплуатационный планировщик не публикует пару «план плюс ответ» с указанным правилом арбитража — доля времени, вычисленная при неуказанной политике, несопоставима с вычисленной при указанной, а зависимость от политики измерена (доли навигации 100/150 против 50/150 на одном и том же плане). Время перенацеливания и смены режима, объём данных, состояние буфера, энергия и замыкание линии связи исключены в подписи отчёта, а не моделируются молча | aperture_duty |
| РЧ-подавление лунной поверхностной навигации (J/S по каждому спутнику) | Лунное отношение мощности помехи к мощности сигнала, эффективное C/N₀ и срыв слежения для пользователя на селенографической поверхности при подавлении с лунной поверхности (или с возвышения) для иллюстративной орбитальной группировки класса Moonlight/LCNS по открытым источникам. Объединяет открытую цепочку подавления (j_over_s_db, effective_cn0_dbhz, rx_antenna_gain_db, lock_status, q_factor, nominal_cn0_dbhz, free_space_path_loss_db) с открытой геометрией лунного неба (lunar_service::LunarConstellation + topocentric, lunar::selenographic_to_mcmf); геометрия и радиометрия заново не выводятся. В отличие от земного вида jamming, сигнальное звено не является фиксированной принимаемой мощностью: изотропная принимаемая мощность каждого спутника равна его собственной EIRP по бюджету линии минус FSPL(наклонная дальность), поэтому J/S меняется от спутника к спутнику с лунной дальностью и углом места. Выдаёт ОДНУ СТРОКУ НА КАЖДУЮ ВИДИМУЮ ЛИНИЮ (эпоха, спутник) в JSON и в артефакте *.table.csv, причём обе принимаемые мощности, разностью которых является J/S, напечатаны рядом; агрегированные показатели качества приводятся рядом с этой таблицей, но не вместо неё. Запускается как вид сценария lunar-jamming | MODELLED | Перекрёстная проверка композиции независимым путём кода в репозитории: каждое J/S по линии заново получается как разность двух бюджетов линии, вычисленных через linkbudget::received_signal_power_dbw, потери в свободном пространстве в котором задаются единственным выражением 20·log10(4πRf/c), а не трёхчленной суммой, которую использует jamming::free_space_path_loss_db — оба совпадают с точностью < 1e-9 дБ в каждой строке (измеренный худший случай 7.11e-14 дБ, то есть округление чисел с плавающей точкой). Лежащая в основе цепочка помех, которую она объединяет, отдельно привязана к внешнему эталону в tests/gnss_denied_jamming_resilience_reference.rs (независимый вывод J/S и эффективного C/N₀ на numpy/scipy, привязанный к Kaplan и Hegarty, §9,4, а также измеренное C/N₀ JammerTest 2024, Zenodo 10.5281/zenodo.15910563); лунная геометрия, которую она объединяет, — это геометрия lunar_service/lunar с собственными оракулами. Проверенные здесь тождества в замкнутой форме: вдвое меньшее удаление источника подавления добавляет ровно 20·log10(2) дБ к каждой строке; J/S строго инвариантно к усилению пользовательской антенны по оси, тогда как C/N₀ изменяется ровно на это усиление; маска по углу места не меняет ни одной оставшейся строки с точностью до бита. Сама строка остаётся ReferenceImpl/Modelled: измеренной кампании по лунному подавлению, с которой можно было бы провести проверку, не существует, а орбитальная группировка — иллюстративная геометрия класса Moonlight/LCNS по открытым источникам, а не лётные эфемериды | lunar_jamming (composing jamming, lunar_service, lunar) |
| Лунный контур отказа в обслуживании с полосой неопределённости по измеренному разбросу C/N₀ | Отчёт lunar-jamming больше не опирает контур отказа в обслуживании на одно скалярное значение. Он выдаёт полное измеренное распределение C/N₀ полезного сигнала по таблице по спутникам — n, min, p05, p25, медиана, p75, p95, max, среднее, выборочное стандартное отклонение и собственная асимметрия выборки (p95 − медиана) − (медиана − p05) — рядом со строками по линиям, которые не изменились. Затем контур приводится для каждой из этих порядковых статистик по ОБОИМ критериям отказа в обслуживании, которые распознаёт движок, и ни один не подменяет другой: действующему критерию отношения мощностей (J/S = 30 дБ, тот же порог, что используют attack_surface и tracking_loop, и критерий столбца denial выпущенной таблицы лунного подавления линий связи) и критерию срыва слежения (эффективное C/N₀ падает до tracking_threshold_dbhz), по которому оценивается столбец links[].status самого отчёта. Каждая точка контура задана по обеим осям плоскости отказа — EIRP источника подавления, требуемая при удалении сценария, и удаление, достаточное для отказа при EIRP сценария, — так что полоса является интервалом на тех же осях, на которых строится график контура. Границы полосы — это contour(p05) и contour(p95): то же замкнутое отображение, применённое к собственным квантилям выборки, а не сигма, подогнанная под выборку, и не медиана ± k·stdev, и отчёт говорит об этом в строке band_definition рядом с числами. stdev выдаётся для преемственности и ничем не используется. У квантиля, у которого C/N₀ уже не выше порога слежения, нет конечного подавляющего J/S; эти столбцы выдаются как null со счётной причиной, а не как бесконечность или ограниченный радиус | MODELLED | Внутренняя согласованность относительно собственных прямых функций движка — всё, что эта возможность может честно заявить. Каждая точка контура — замкнутое обращение, и каждое обращение проверяется прогоном его ответа обратно через ПРЯМУЮ функцию, по которой оценивались строки самого отчёта: столбец J/S через jamming::effective_cn0_dbhz (она должна вернуть tracking_threshold_dbhz с точностью < 1e-9 дБ·Гц), столбец удаления через jamming::free_space_path_loss_db и jamming::j_over_s_db (то же J/S с точностью < 1e-9 дБ), столбец EIRP через jamming::j_over_s_db при собственном удалении сценария. Далее проверяется, что контур является ГРАНИЦЕЙ множества отказа, а не точкой внутри него: lock_status теряет слежение по строгому неравенству, поэтому измеряется, что вердикт меняется с DEGRADED на LOST при отклонении J/S на 1e-4 дБ по обе стороны от контура, чего контур с ошибкой на эпсилон не выдержал бы. Сильнейшая проверка выполняется по линиям, а не по квантилям: применение того же отображения к собственному C/N₀ каждой строки в точности воспроизводит столбец статуса отчёта — 0 расхождений на 38 из 38 строк в документированной рабочей точке (kind = lunar-jamming, все входные параметры по умолчанию, кроме jammer.range_m = 25 000 м), где 26 строк имеют статус LOST, а 12 — нет. Монотонность измерена, а не предполагается: 20 001 отсчётов на [tracking_threshold + 1e-3, 80] дБ·Гц, 0 нарушений строго убывающего удаления и строго возрастающей требуемой мощности, так что порядок квантилей в полосе продемонстрирован, а не заявлен. ExternalDataset отклонён, а вместе с ним и Validated: измеренной кампании по лунному подавлению, с которой можно было бы сравнить радиус отказа, не существует, орбитальная группировка — иллюстративная геометрия класса Moonlight/LCNS по открытым источникам, а не лётные эфемериды, а входные данные контура (EIRP, мощность источника подавления, коэффициенты усиления антенн, шумовая температура) — репрезентативные величины. ReferenceImpl также рассматривался и отклонён — обратное и прямое выражения представляют ОДНУ И ТУ ЖЕ алгебру, прочитанную в двух направлениях, поэтому круговая проверка ловит ошибки переписывания и знака, но не является независимой реализацией; назвать её перекрёстной проверкой означало бы заимствованную независимость, для предотвращения которой существуют инварианты матрицы. Что даёт полоса — измерено и указано, а не заявлено: в этой рабочей точке контур по одному скаляру равен 27,402916 км и относит 25 км к стороне отказа для всех 38 строк, тогда как полоса 21,256108 .. 29,921360 км содержит рабочую точку и потому отражает разделение, которое на самом деле показывает таблица. Два критерия также измерены как расходящиеся — полоса по отношению мощностей (38,186527 .. 53,691675 км) вообще не содержит 25 км, — поэтому печатаются оба | lunar_jamming (denial_js_db, range_for_free_space_path_loss_m, Cn0Distribution, DenialContourPoint, ContourBand, DenialContour; inverting jamming::effective_cn0_dbhz, jamming::j_over_s_db and jamming::free_space_path_loss_db) |
| Мощность обнаружения межмодального монитора целостности | Отчёт hybrid-optical-rf показывает, что межмодальный монитор хи-квадрат действительно способен ОБНАРУЖИТЬ, а не только то, что он проходит случай без неисправностей: минимальное обнаруживаемое смещение по каждой отслеживаемой оси (восток, север, вертикаль, часы) при заявленных в сценарии вероятностях ложной тревоги и пропуска обнаружения, кривую мощности обнаружения по обе стороны от него, кратность смещения без шума, при которой реализованная статистика впервые пересекает порог, и время до обнаружения для линейно нарастающего смещения с заданной скоростью. Неисправности также вносятся через настоящий монитор, и возвращаемая им статистика приводится рядом с аналитическим предсказанием | MODELLED | Два внутренних оракула, без внешнего набора данных. (1) Замкнутое круговое преобразование: минимальное обнаруживаемое смещение получается обращением хвоста нецентрального хи-квадрат по параметру нецентральности (raim::pbias) и проверяется подстановкой получившегося параметра нецентральности обратно в raim::noncentral_chi2_cdf при собственном пороге монитора, что должно вернуть P_md. (2) Внесение и анализ: смещение записывается в РЧ-оценку одной оси, и cross_raim::run_cross_raim запускается заново, так что статистика, сравниваемая с аналитическим параметром нецентральности, — это та, которую вычислил сам монитор, а не повторный вывод. Начальное значение Монте-Карло самой статистики входит в тесты как третья проверка; в отчёт оно сознательно НЕ включено, потому что выборочная оценка была бы медленнее и невоспроизводима с точностью до бита. ExternalDataset отклонён: величина — это мощность обнаружения ЭТОГО монитора при распределении сигм ЭТОГО сценария, а величины сигм, на которые масштабируется MDB, — репрезентативные входные данные Modelled, а не измерения. ReferenceImpl также рассматривался и отклонён — Монте-Карло выбирает ту же статистику, которую описывает анализ, поэтому он ловит ошибки переписывания и коэффициентов, но не является независимой реализацией монитора. Раунд 2 0,30 (предварительно зарегистрирован 0135a9e4), заблокирован (остаётся MODELLED): SciPy 1.18.1 chi2/ncx2/brentq воспроизводят порог отчёта (в пределах 5.4e-12), MDB по осям, кривую мощности, кратность пересечения и время до обнаружения для нарастающего смещения (в пределах 5.3e-10) на пяти конфигурациях; у статистик внесённых неисправностей нет независимого оракула, а величины сигм — входные данные Modelled, поэтому определение области применения ждёт решения владельца | hybrid_integrity |
| Повторный рост ковариации после передачи относительно предела тревоги | Отчёт hybrid-optical-rf раскрывает модель шума процесса фильтра и указывает, сколько времени решение после передачи остаётся в пределах предела тревоги: для обоих направлений передачи он берёт ковариацию по осям, оставшуюся после передачи, распространяет её вперёд при заданном шуме процесса типа случайного блуждания и сообщает момент, когда 1σ, масштабированная по коэффициенту охвата, достигает горизонтального, вертикального и временного пределов тревоги, какой из пределов срабатывает первым, постоянную времени удвоения дисперсии и выборочный профиль выбега, охватывающий пересечение. Спектральные плотности шума процесса, коэффициент охвата и пределы тревоги — всё это входные параметры с документированными значениями по умолчанию | MODELLED | Внешнего оракула нет. Пересечение — решение роста дисперсии случайного блуждания в замкнутой форме, и тесты пересчитывают его независимо по значениям, которые публикует сам отчёт, а не по внутренним данным генератора. Начальная ковариация зафиксирована с точностью до бита по следу, уже сообщённому существующим блоком передачи, поэтому выбег не может распространять ковариацию, которой никто больше не видел. Спектральные плотности шума процесса — репрезентативные входные данные MODELLED, и времена пересечения масштабируются прямо вместе с ними, что тест масштабирования формулирует как измеренное свойство, а не как утверждение. ExternalDataset сознательно отклонён: время выбега — прямая функция двух спектральных плотностей Modelled и пределов тревоги, которые сами репрезентативны, а измеренного выбега при оптико-радиочастотной передаче на Луне, с которым можно было бы сравнить, не существует. Внешнему оракулу здесь потребовалась бы опубликованная кривая роста ковариации после передачи или точности holdover для сопоставимого приёмника с указанной моделью шума процесса, проверенная с заданным допуском | hybrid_integrity |
| Диаграмма антенны вне оси в экспорте лунной геометрии | Экспорт геометрии по каждому спутнику содержит для каждой пары (эпоха, спутник) угол вне оси НА СПУТНИКЕ и коэффициент усиления передачи в направлении площадки по реальной диаграмме равномерно освещённой круглой апертуры (Эйри) и сообщает число спутников в луче по этой диаграмме РЯДОМ с числом спутников в луче по симметричному приближению «усиление — ширина луча» (θ_3dB[град] = √(31000/G_lin)); разность выдаётся как явная поправка по линиям, в спутниках на эпоху и как худшая отдельная эпоха. Оба подразумеваемых коэффициента использования апертуры для приближения выдаются (0,641 для правила 70·λ/D градусов, с которым оно приводится, 0,920 для равномерной круглой апертуры), чтобы эффективность, которую оно молча предполагает, была указана, а не выводилась. По умолчанию отключено: блок появляется только тогда, когда заданы и площадка экспорта, и апертура | MODELLED | Смешанный случай, и области разделены, а не объединены. Лежащая в основе ДИАГРАММА проверена по внешнему эталону и сохраняет собственную строку (эталонные данные scipy.special.j1 с точностью < 0,05 дБ в tests/validate_p1_orbital_footprint.rs, а здесь ещё и опубликованная абсцисса половинной мощности Эйри x = 1,61634, найденная бисекцией, а не предполагаемая). ГЕОМЕТРИЯ проверяется по замкнутой тригонометрии треугольника, записанной другим выражением, чем проверяемое скалярное произведение. ВКЛЮЧЕНИЕ реального луча в приближённый конус — выведенная алгебра (28.019/√η против 29,479 градуса на λ/D), поэтому поправка может быть неположительной только при η ≤ 0,9035. Но сами ЧИСЛА спутников в луче внешнего оракула не имеют: ни в одной опубликованной таблице не указано, сколько спутников оболочки класса Moonlight/LCNS удерживают южнополярную площадку в луче половинной мощности данной антенны, а орбитальная группировка — иллюстративное приближение по открытым источникам, а не лётные эфемериды. Поэтому измеренное расхождение в документированной рабочей точке — 0 линий в луче по реальной диаграмме против 28 по приближению, −2,33 спутника на эпоху, худшая эпоха 3, на 76 оценённых линиях — является находкой MODELLED о приближении, закреплённой как литерал регрессии (ближайшая строка отстоит на 0,069° от любого края луча, что на четыре порядка больше любого расхождения в последней цифре), а не внешне проверенным числом охвата. Назвать строку ExternalDataset на основании собственной внешней привязки диаграммы означало бы заимствованную проверку, для предотвращения чего существуют инварианты матрицы. Раунд 2 0,30 (предварительно зарегистрирован d9755d28), заблокирован (остаётся MODELLED): геометрия SPICE и функции Бесселя SciPy воспроизводят угол вне оси (худший случай 3.0e-5 град), усиление Эйри и признаки попадания в луч на 6 336 строках состояний реальных орбитальных аппаратов и в документированной рабочей точке; но на реальной геометрии признаки расходятся по идентичности спутника (ближайшая линия отстоит на 1,66 град от края луча), видимость при 5 град проверяется как признак, а не как числовой угол места, признак симметричного приближения применяет эмпирическое правило 31000/G к проверенному углу без проверки самого правила, а подразумеваемые коэффициенты использования не имеют оракула; определение области применения ждёт решения владельца | lunar_service, antenna |
| Срыв слежения и затягивание спуфингом в контуре слежения при помехах | Срыв слежения, вычисленный по динамике контуров, а не по отношению мощностей: тепловое дрожание 1σ несущей (Костас) и кода (некогерентный опережающий/запаздывающий) в зависимости от C/N₀ с потерями на возведение в квадрат, относительно заданных правил 3σ_PLL + θ_e ≤ 45° и 3σ_DLL + запаздывание по скорости ≤ d/2 чипа; пороги C/N₀ срыва и повторного захвата с указанием определяющего контура и гистерезисом, ВЫВЕДЕННЫМ из более широкой полосы затягивания, а не заявленным; заявленное время до срыва слежения по двухпороговому детектору захвата с подтверждающими задержками, приводимое отдельно от физического времени ухода фазы (среднее время Витерби между проскальзываниями циклов, в log₁₀ с, так как оно охватывает сотни порядков); наибольшая скорость смещения кода и скорость изменения доплеровской частоты несущей, которые контуры жертвы способны отслеживать; и РАДИУС ОТКАЗА, следующий из динамики контуров, приводимый рядом с существующим радиусом по отношению мощностей, причём их разность со знаком является отдельным именованным полем. Запускается как вид сценария tracking-loop | MODELLED | Собственный коррелятор sdr движка (sdr::correlate / synth_if / CaCode), пошагово запускаемый на начальном значении синтетической ПЧ при откалиброванном C/N₀ — отдельный путь кода, получающий те же числа численной корреляцией дискретизированных IQ, а не алгебраическим выражением для дрожания, то есть другой путь, а не пересказ, — плюс стандартные табличные значения модифицированной функции Бесселя I₀ для члена проскальзывания циклов. Теория контуров по Kaplan и Hegarty, гл. 8 и по Витерби и Гарднеру для времени проскальзывания. Строка остаётся ReferenceImpl/MODELLED: перекрёстная проверка находится в той же кодовой базе, а проверка bessel_i0 подтверждает одну специальную функцию, а не модель слежения, поэтому повышение строки на этом основании было бы самообслуживающей маркировкой. Для ExternalDataset потребовался бы записанный набор необработанных ПЧ-данных с эталонным C/N₀ и размеченным моментом срыва слежения (класс TEXBAT/OAKBAT); в этом дереве такого набора нет, и даже с IQ эти наборы не публикуют эталонного состояния контуров по эпохам, поэтому заявленное время срыва слежения можно было бы проверить лишь по детектору захвата какого-то другого приёмника, что является модельным выбором, а не оракулом. Полосы контуров, время интегрирования, разнос коррелятора, коэффициент затягивания, задержки, мощность источника подавления и коэффициенты усиления антенн — репрезентативные значения диапазона, а не паспортные данные. Раунд 2 0,30, GNSS-SDR 0.0.19 (GPL-3.0, запускается как программа) на независимо сгенерированной ПЧ (предварительно зарегистрировано 6ef7698c, поправки к методу измерения раскрыты), результат-находка (остаётся MODELLED): дрожание PLL и DLL замкнутого контура совпадает в пределах 8 % при 35–45 дБ·Гц, динамическая нагрузка 10 Гц/с — в пределах 1 %, а запаздывание кода по скорости первого порядка — в пределах 2 %; при 30 дБ·Гц дрожание PLL на 21 % выше, а дрожание DLL на 32 % ниже, измеренные пороги по правилу 15 градусов лежат на 1,5 дБ выше, чем у движка, а контур второго порядка проскальзывает на 0,5–2 порядка чаще, чем даёт оценка времени проскальзывания первого порядка. Редакция 0,30: время проскальзывания Костаса теперь использует SNR контура rho/4 (проскальзывания на полцикла); значение по умолчанию jitter_table log10_mean_time_to_cycle_slip_s падает с 11,58 до 2,10 при пороге 25,47 дБ·Гц | tracking_loop (composing sdr, jamming) |
| Ковариация координат станций лунного РСДБ по расписанию слежения | Частные производные задержки, накопленные по расписанию баз × эпох в информационную матрицу Фишера, обращаются в ковариацию координат станций и сигму станции по каждой координате, заменяя предполагаемую изотропную связь равного распределения по скалярной точности задержки. Состояние содержит координаты станций в земной системе (ITRS), поэтому якобиан — это инерциальная частная производная, повёрнутая матрицей GCRS→ITRS каждой эпохи, а вращение Земли делает эти координаты наблюдаемыми — отчёт ИЗМЕРЯЕТ развёртку линии визирования в земной системе и склонение маяка, а не предполагает их. Ранг, дефект датума, число обусловленности, информационный спектр и нуль-пространство свободной сети выдаются при каждом прогоне, а при дефиците ранга главная сигма публикуется как NULL со статусом, а не считывается из почти вырожденного обратного. Значение равного распределения c·σ_τ·√(g/N) для ТОГО ЖЕ расписания печатается рядом с вычисленным вместе с их отношением, а также изотропная оценка по следу √(p/trace(M)), которую AM-HM делает жёсткой нижней границей. Запускается как вид сценария lunar-vlbi-fim | VALIDATED | Независимый путь внутри репозитория. Каждая строка якобиана заново получается центральной конечной разностью lunar_vlbi::vlbi_delay_s, вычисляемой по собственным земным и лунным связанным координатам состояния, повёрнутым вперёд по цепочке систем координат, — путь, который не вычисляет производных и не разделяет ни одного выражения с аналитическими частными производными, — и информационные матрицы, построенные двумя путями, совпадают с точностью < 1e-6 от наибольшего диагонального элемента. Ядро линейной алгебры, которое здесь используется (information_matrix, crlb, sym_eig), отдельно привязано к внешнему эталону numpy.linalg.eigh / numpy.linalg.inv в tests/fim_observability_reference.rs, а наблюдаемая задержка несёт собственный оракул дальнего поля delta-DOR из lunar_vlbi; строка не заимствует ни тот, ни другой статус. Проверенные здесь тождества в замкнутой форме, обозначенные как таковые: масштабирование σ² и 1/N и √(p/trace(M)) как нижняя граница AM-HM, которую вычисленная сигма превзойти не может и которая совпадает со значением равного распределения лишь на изотропной геометрии, — поэтому измеренное отношение в точности равно анизотропии, которую отбросило предположение. Внешнее сравнение 0,30 (Библиотека: NAIF SPICE CSPICE N0067 через spiceypy 8.2.0, MIT; DE440, ITRF93 earth_latest_high_prec, MOON_PA), предварительно зарегистрированное (50863551) вместе с прогоном чувствительности к ошибке модели на стороне движка: каждая строка якобиана перестраивается центральными разностями сошедшихся ньютоновских разностей светового времени по геометрии SPICE (уравнение светового времени — короткий скрипт по положениям SPICE; геометрию обеспечивает SPICE), с расписанием, перестроенным по углам места SPICE. Расписание, ранг, дефект, информационный спектр, число обусловленности, сигмы станций, главная сигма, оценка по следу, отношения к равному распределению, нуль-пространство свободной сети, развёртка линии визирования и склонение маяка совпадают в пределах предварительно зарегистрированных 1 % / 0,1 град, что лежит выше известной аналитической ошибки Луны движка (3.2e-3 по сигмам, измерена до прогона). NumPy 2.3.5 повторяет линейную алгебру на зафиксированном якобиане движка с точностью 2e-13 (P2). Validated как граница Крамера — Рао для заявленного сокращённого набора параметров на заявленных иллюстративных входных данных: эфемериды центра Луны, часы, тропосфера и параметры ориентации Земли в обоих ветвях зафиксированы, поэтому это не точность реальной кампании | lunar_vlbi_fim (composing lunar_vlbi, fim, cio, lunar_frame, frames) |
| Ковариация координат точки лунной поверхности по расписанию задержек РСДБ, отдельная от ковариации земных станций | Третий вариант выбора датума, all-stations-fixed, который фиксирует каждую земную станцию и оценивает только связанные с Луной координаты МАЯКА, — конфигурация, для которой на самом деле приводится неопределённость точки лунной поверхности, так как координаты земных станций являются входными данными модели задержки, а не её неизвестными. Он существует потому, что ковариация на уровне станции и ковариация точки поверхности — РАЗНЫЕ ВЕЛИЧИНЫ, разделённые плечом ρ/B, и ничто раньше не мешало приводить одну вместо другой. Выдаваемый блок beacon_link содержит ρ, наибольшую базу, плечо, форму равного распределения для точки поверхности c·σ_τ·(ρ/B)·√(g/N), вычисленную сигму маяка по каждой координате и их отношение — отношение равно null, а не вводит в заблуждение, когда маяк не оценивается или матрица имеет дефицит ранга. B принимается равной НАИБОЛЬШЕЙ имеющейся базе, самой благоприятной, поэтому отношение может только занижать. Запускается как datum = "all-stations-fixed" с estimate_beacon = true, что отклоняется с сообщением, называющим недостающий вход, если маяк не оценивается | MODELLED | Тождества в замкнутой форме, внешний оракул не заявляется и недоступен. Плечо проверяется по ρ/B, а две формы равного распределения — друг по другу с точностью 1e-15 — это алгебраические тождества, поэтому они ловят ошибку подключения и ничего больше, и обозначены как таковые. Существенный результат MEASURED, а не заявлен: задержка по фиксированной базе ограничивает НАПРАВЛЕНИЕ на маяк, поэтому составляющая по линии визирования попадает в информационную матрицу только через член дальности ближнего поля, а тест считывает получающуюся анизотропию с выданного спектра, а не выводит её. AM-HM делает √(p/trace(M)) жёсткой нижней границей, поэтому связь по изотропному равному распределению может только ЗАНИЖАТЬ, а отношение вычисленного к равному распределению — это в точности отброшенная анизотропия. MEASURED на паре типа Голдстоун/типа Канберра, хорда которой равна 10726,748 км: за 112 выбранных дней 36 вообще не допускают ни одной эпохи взаимной видимости при маске 10°, наибольшее число взаимно видимых эпох — 17 из расписания в 49 отсчётов, а на 73 пригодных днях трёхкомпонентное отношение составляет от 113,9× до значений на четыре порядка больше, медиана 1513×, тогда как при ограничении двумя поперечными направлениями, которые линия визирования не обделяет, получается от 3,94× до 25,8×, медиана 7,8×. ЧЕГО ЭТА СТРОКА НЕ ЗАЯВЛЯЕТ: что какое-либо из этих чисел является свойством реальной кампании. Она устанавливает, что величина для точки поверхности теперь ВЫЧИСЛЯЕТСЯ, а не предполагается, и что её нельзя молча подменять величиной на уровне станции. Остаётся ReferenceImpl/MODELLED: опубликованной ковариации точки поверхности лунного РСДБ, по которой можно было бы проверить, не существует, станции и площадка маяка иллюстративные, а не съёмочные, эфемериды, часы, тропосфера и параметры ориентации Земли ЗАФИКСИРОВАНЫ, так что это граница Крамера — Рао для сокращённого набора параметров, оптимистичная сама по себе. Та же величина на пути ядра (маяк на Луне DE440) проверена в собственной строке «…, путь ядра»; на этом аналитическом пути наименьшая сигма маяка на 3,9 % ниже оракула SPICE этой строки, поэтому эта строка остаётся MODELLED | lunar_vlbi_fim (composing lunar_vlbi, fim, cio, lunar_frame, frames) |
| Ковариация координат точки лунной поверхности по расписанию задержек РСДБ, путь ядра | Ковариация маяка при всех зафиксированных станциях в сценарии lunar-vlbi-fim (все земные станции зафиксированы, связанные с Луной координаты маяка оцениваются отдельно) с маяком, помещённым на Луну JPL DE440, считываемую собственным читателем ядер движка (planetary_kernel_path; lunar_vlbi_fim::epoch_geometry_with, ephem_provider::KernelEphemeris). От аналитического пути отличается только центр Луны; вращение тела IAU 2015, станции, вращение Земли и линейная алгебра те же. Проверенные выходные данные — набор наблюдений, информационный спектр 3 x 3, ранг и число обусловленности, три связанные с телом сигмы маяка и их RMS, плечо и отношение вычисленного к равному распределению на расписании по умолчанию. Запускается как сценарий lunar-vlbi-fim с datum = "all-stations-fixed", estimate_beacon = true и заданным planetary_kernel_path | VALIDATED | Обязательная ветвь Library: NAIF SPICE Toolkit N0067 (spiceypy 8.2.0, MIT) на de440s, earth_latest_high_prec (ITRF93 с UT1 и движением полюса) и лунных системах DE440, маяк закреплён в MOON_ME; каждая строка якобиана — центральная разность 3 км сошедшейся ньютоновской разности светового времени (собственный код светового времени оракула M069, импортированный), а не частная производная Kshana; видимость перестроена по углам места WGS-84; eigh и inv из NumPy 2.3.5 / SciPy 1.18.1 (BSD-3-Clause, LAPACK). Ветвь P2: NumPy на зафиксированном якобиане движка. Предварительно зарегистрировано (4a51256) до появления эталонных данных и оракула, с порогами 1 % для собственных значений, обусловленности, сигм, RMS и отношения, 1e-4 для плеча, точное совпадение набора наблюдений и ранга; P2 1e-9. Раскрыто: сравнение только на стороне движка аналитической Луны и Луны из ядра (3,9 % по сигме y) было выполнено до предварительной регистрации, чтобы выбрать путь ядра, и указано в ней. Результат: обе ветви согласуются, худший случай 1.7e-3 (сигма y маяка 0,081211 м против 0,081351 м). Мутация: транспонирование вращения тела в частной производной маяка проваливает обе ветви. Обе стороны читают DE440, поэтому согласие подтверждает геометрию и линейную алгебру на DE440, но не сам DE440. Вне утверждения: точность точки поверхности в реальной кампании (часы, тропосфера и ориентация Земли зафиксированы; иллюстративные станции и площадка маяка) и аналитический путь по умолчанию (строка выше, остающаяся MODELLED: на аналитической Луне сигма y на 3,9 % ниже этого оракула) | lunar_vlbi_fim (epoch_geometry_with, schedule, schedule_jacobian); ephem_provider (KernelEphemeris); naif_kernel |
| Лунный дифференциальный PNT — бюджет остаточных ошибок линии поправок | Три члена, которые дифференциальная поправка приобретает между эпохой вычисления и эпохой использования, каждый из которых прежде оставался нерасчитанным запасом: ошибка привязки опорной станции (коррелирована по спутникам, не зависит от базы, передача положения ~1:1 и доказуемо не усиливается DOP), старение поправки (замороженный вектор ошибки орбиты, заново спроецированный на линию визирования, на которую собственный распространитель движка помещает спутник на одну задержку позже, плюс дрейф часов c·σ_y(τ)·τ по откалиброванному степенному закону) и равномерное квантование линии связи по точной полной шкале ±(orbit_err + clock_err) с дисперсией step²/12. Приводится в областях дальности и положения, рядом с существующими остаточной ошибкой и уровнем защиты, но не вместо них, с кривой по задержке рядом с единичным значением | MODELLED | Тождества в замкнутой форме и самосогласованность: дисперсия step²/12 равномерного квантователя, точное распространение ковариации (GᵀG)⁻¹GᵀRG(GᵀG)⁻¹, вырождающееся в σ·PDOP при равных σ, передача члена привязки 1:1 как следствие û_user ≈ û_ref и квадратурное замыкание при отключении. Перекрёстная проверка PDOP по orbit::dop использует ту же нормальную матрицу [−û, 1], поэтому это проверка согласованности, и она названа таковой, а не независимым оракулом. ExternalDataset недоступен и не заявляется: ни у одной лунной поверхностной станции нет опубликованной съёмочной точности, ни у одной лунной линии дифференциальных поправок нет опубликованной задержки или формата сообщений, а результат квантования — замкнутая формула, а не измерение. RTKLIB — уже внешний оракул кода для ядра одиночных разностей и взвешенных наименьших квадратов — можно было бы запустить с намеренно неверно привязанной базой, чтобы подтвердить передачу привязки 1:1, но это независимый код над той же алгеброй первого порядка по линии визирования. ВЕЛИЧИНЫ — MODELLED: значение привязки по умолчанию — собственное распределение этого крейта на реализацию лунной системы координат, а не измеренная станция, задержка и число бит — ILLUSTRATIVE входные данные, а рост самого ВЕКТОРА ошибки эфемерид вещания вообще не моделируется — об этом сказано в выдаваемой строке закона старения, потому что именно этот член с наибольшей вероятностью будет доминировать в реальной линии | lunar_dpnt |
| Карта охвата и точности лунной опорной станции | Развёртка Монте-Карло лунной дифференциальной модели PNT по южнополярной сетке пользователей и суткам эпох (вид lunar-station-coverage): для дифференциальной опорной станции на известной южнополярной площадке — по каждой точке и по региону — процентильная скорректированная и нескорректированная ошибка положения (3-D, горизонтальная, вертикальная), доступность с причиной для каждой недоступной эпохи (user_lt4, station_missing_sat), охват относительно порога, заданного до прогона, уровни защиты DO-229E, радиус охвата по азимутальным секторам и бюджет линии поправок на станции и в худшей точке. Это не заявление о характеристиках какой-либо реальной системы; не связано с каким-либо ведомством и не одобрено им | MODELLED | Арифметика, пересчитанная независимым скриптом numpy на выгруженных случаях (scripts/gen_lunar_station_ref.py, numpy 2.5.4; предварительно зарегистрирована в tests/fixtures/lunar_station/PREREGISTRATION.md, зафиксирована отдельно в 9caedf97 до первого прогона): на 20 случаях с включёнными всеми членами ошибки видимые множества и статус идентичны, необработанные ошибки дальности совпадают с точностью 1.4e-14 м, векторы и модули ошибки положения — с точностью 1.4e-9 м при пороге 1e-6 м, а p95 каждой точки равно numpy.percentile с точностью до бита; поправки станции НЕ ВЫПОЛНИЛИ свой порог 1e-9 м (худший случай 3.73e-9 м, 15 из 20 случаев), а вместе с ними и скорректированные ошибки дальности: проверка в 60-значной арифметике показала, что обе стороны лежат в пределах округления двойной точности от точного значения, так как член привязки — разность двух дальностей порядка 1e7 м, единица последнего разряда которых равна 1.86e-9 м; записано, не подгонялось. Вид в точности сводится к виду lunar-differential-pnt при одной точке, одной эпохе и одном испытании. Модель ошибок, модель декорреляции и каждый порог — собственные для этого проекта или ILLUSTRATIVE; ничто здесь не является заявлением о какой-либо реальной системе | lunar_station (over lunar_dpnt, lunar_service) |
| Маски горизонта лунного рельефа по заданному профилю или полярной ЦМР | Зависящие от азимута маски горизонта для каждой площадки для вида lunar-station-coverage (опорная станция и каждая точка пользователя) и сетки moonlight-service-volume с её площадкой экспорта по каждому спутнику (каждая строка экспорта получает clears_terrain) в формате таблицы линии горизонта 0,36 (skyline::Skyline, линейно по азимуту с замыканием на 360 град; заданный профиль и горизонт ЦМР на одной площадке объединяются как их поточечный максимум): заданный [terrain] station_horizon или user_horizon с указанием источника и/или горизонт, найденный трассировкой лучей по южной полярной стереографической ЦМР (сеточная полярная раскладка LRO LOLA, считываемая из дескриптора, фиксирующего её размер и SHA-256, или тайл широты и долготы realdata::lola_dem с [terrain] dem_tile_path, воспроизводимый с его SHA-256) по большим кругам лунной сферы с точной кривизной, с заданной высоты мачты, с заданным шагом по азимуту и дальностью. Спутник учитывается на площадке, когда он выше плоской маски mask_deg и горизонта на своём азимуте (lunar_service::topocentric); эпоха, в которой горизонт оставляет менее четырёх спутников в точке, где плоская маска даёт четыре, учитывается как причина недоступности terrain_masked. Включённая в поставку ЦМР — фрагмент продукта LOLA LDEM_75S_240M, находящегося в общественном достоянии, с передискретизацией блочным средним 5 x 5 до 1200 м (data/lunar-dem/NOTICE.md). При отсутствии каждая площадка сохраняет плоскую маску, а каждый документ побайтово идентичен | MODELLED | Поверхности в замкнутой форме (InternalConsistency): понижение горизонта голой сферы, кратер на плато на сфере с наблюдателем в центре и вне его, а также аналитический конус относительно его собственной растеризации. На реальном фрагменте независимая трассировка лучей на numpy (scripts/gen_lunar_terrain_ref.py, numpy 2.5.3; предварительно зарегистрирована в tests/fixtures/lunar_terrain/PREREGISTRATION.md, зафиксирована отдельно в edbb9b02 до появления скрипта) согласуется на пяти площадках: высоты площадок с точностью 1.0e-11 м и все 1800 углов возвышения горизонта с точностью 5.5e-10 град при порогах 1e-6, числа усечённых лучей совпадают точно; это проверяет арифметику, а не рельеф. Ни одно опубликованное значение полярного горизонта или освещённости не воспроизведено: включённый фрагмент 1200 м сглаживает рельеф масштаба меньше километра, который разрешают опубликованные исследования освещённости, поэтому горизонты ЦМР — это линия визирования MODELLED над передискретизированной реальной ЦМР, а не проверенный горизонт. Площадка станции и орбитальная группировка остаются ILLUSTRATIVE; ничто здесь не является заявлением о какой-либо реальной системе | lunar_terrain (over skyline, lunar_service::topocentric_basis); lunar_station; lunar_service (coverage_masked, masked_visible) |
| Многолучевость и аппаратные члены приёмника лунной опорной станции | Необязательный раздел [receiver] вида lunar-station-coverage (LRS-02): зависящая от угла места сигма многолучевости sigma(el) = a + b exp(-el / el0) у пользователя и на станции (функциональная форма RTCA DO-229 для воздушных судов, её a = 0,13 м, b = 0,53 м, el0 = 10 град по умолчанию; на Луне любое значение ILLUSTRATIVE), белая у пользователя и марковская первого порядка Гаусса по эпохам на станции (rho = exp(-dt / tau)); тепловой шум кода DLL по разности опережающего и запаздывающего sigma = L_c sqrt(B_L d / (2 C/N0) (1 + 2 / ((2 - d) T C/N0))); межканальные смещения по каналам, постоянные в течение испытания, у пользователя и на станции. Члены станции входят в её поправки, члены пользователя — в необработанные и скорректированные измерения, каждый на собственном потоке с начальным значением. При отсутствии каждый документ не меняется | MODELLED | Замкнутые формулы и статистика собственных выборок модели (InternalConsistency): формула DLL относительно ручного расчёта, форма DO-229, разность двух приёмников при нулевой базе, корреляция Гаусса — Маркова на лаге 1. Измерений лунной многолучевости или приёмника, с которыми можно было бы сравнить, не существует; значения ILLUSTRATIVE, и ничто здесь не является заявлением о каком-либо реальном приёмнике | lunar_receiver; lunar_station |
| Рост ошибки эфемерид лунной опорной станции за время задержки поправки | Необязательный вход orbit_err_growth_m_per_s вида lunar-station-coverage (LRS-03): поправка, применённая через latency_s после вычисления, упускает рост g latency_s ошибки вещательной орбиты, где g изотропно с 3-D среднеквадратичной скоростью, выбирается для каждого спутника и испытания на собственном потоке с начальным значением (1-сигма скорость по дальности tau / sqrt(3)), сверх повторной проекции замороженной ошибки на линию визирования. При отсутствии каждый документ не меняется. Дополнение K5 к сравнению с опубликованными утверждениями, предварительно зарегистрированное отдельно, запускает K5 при 0,001, 0,01 и 0,1 м/с (ILLUSTRATIVE) | MODELLED | Замкнутая сигма члена роста и проверка распространения первого порядка (InternalConsistency). Дополнение K5 (tests/fixtures/lunar_station_published/ADDENDUM-LRS03.md, предварительно зарегистрировано отдельно в 59d88248): K5 не выполняется при каждой скорости, скорректированное p95 3-D 369,8 м, 2315 м и 22797 м против порога 1,5 м (292,96 м записано без роста), как заявлено до прогона. Ни один публичный источник не даёт скорости роста для Луны: ILLUSTRATIVE | lunar_station (orbit_growth_range_sigma_m) |
| Режимы решения лунной опорной станции: ограничение по высоте, три спутника, окно для неподвижного пользователя | Необязательный раздел [solution] вида lunar-station-coverage (LRS-06): строка псевдоизмерения высоты up . dx = e_h с заданной 1-сигмой, взвешенная относительно строк дальности, минимум в три спутника, допускаемый только вместе с ней, и решение взвешенным методом наименьших квадратов по последним window_epochs эпохам с общим неподвижным положением и одними часами на эпоху (ответ фильтра для неподвижного положения без шума процесса по тем же данным; ошибки эпох считаются независимыми). При отсутствии мгновенное решение и каждый документ не меняются. Дополнение к сравнению с опубликованными утверждениями в стиле решения источников, предварительно зарегистрированное отдельно | MODELLED | Редукция мгновенного решения и замкнутые случаи решателя (InternalConsistency). Дополнение (tests/fixtures/lunar_station_published/ADDENDUM-LRS06.md, предварительно зарегистрировано отдельно в 001ca100) с ограничением по высоте 1 м, тремя спутниками и окном в 6 эпох (ILLUSTRATIVE настройки; источники указывают фильтр, ограничение по высоте и три спутника, но не их настройки): K1–K5 не выполняются, K6 выполняется, 1 из 6 как в записанном прогоне; скорректированная ошибка 3-D по p95 для R300 падает с 280,6 м до 2,11 м (горизонтальная 0,90 м, не оценивается), а охват остаётся 0. Предположение окна о независимости играет в его пользу. Это не заявление о какой-либо реальной системе | lunar_solution; lunar_station (solution_figures) |
| Точность и охват лунной опорной станции по сравнению с опубликованными утверждениями | Вид lunar-station-coverage, запущенный при открытых предположениях опубликованных материалов о лунной дифференциальной опорной станции (четыре навигационных спутника на замороженных эллиптических орбитах с периодом 24 ч, SISE 10 м 95 %, шум кода 0,30 м, задержка поправки 1 с и 600 с, привязка станции с субдециметровой точностью, опубликованная примерная площадка станции, южнополярные окружности 300 км и 600 км) и оценённый по числовым утверждениям источников по шести односторонним порогам, предварительно зарегистрированным до прогона: охват всего южного полюса при субметровом p95 (K1, K2), субметровое и дециметровое скорректированное p95 (K3, K4), субметровое значение, сохраняемое при задержке 600 с (K5), и точность, сохраняемая при базе от 10 км до 500 км (K6) | MODELLED | Эталон: числовые утверждения пяти открытых источников, зарегистрированные с URL, датой получения, SHA-256 и лицензией в tests/fixtures/lunar_station/SOURCES.md (arXiv:2602.08432v3; слайды IOAG Cislunar PNT Workshop 2025 и 2026; UNOOSA ICG WG-B Lunar PNT, июнь 2024), переписаны со ссылками на страницы в tests/fixtures/lunar_station_published/CLAIMS.md. Пороги, случаи и входные данные были предварительно зарегистрированы в tests/fixtures/lunar_station_published/PREREGISTRATION.md (редакция 2, 05bf9a19, зафиксирована отдельно до прогона). Первый прогон 0,36, результат-находка (остаётся MODELLED): проходит 1 из 6 порогов. Охват равен 0,00 на обеих окружностях при требовании >= 0,95, а скорректированная ошибка 3-D по p95 равна 280,6 м (300 км) и 293,0 м при задержке 600 с, против <= 1,5 м. Дециметровый порог (K4) не мог быть пройден при шуме кода источников 0,30 м, что отражает противоречие между источниками, а не результат модели. K6 выполняется (отношение 1,39 при <= 1,5), но, будучи отношением двух величин, определяемых геометрией, не служит свидетельством о декорреляции ни в одну сторону. Причина: элементы орбит спутников не опубликованы, а на ILLUSTRATIVE элементах из дерева пользователь и станция имеют общие четыре спутника выше 5 град лишь в 8,2 % (300 км) и 6,3 % (600 км) эпох, при почти вырожденной геометрии (нескорректированное p95 3,8 км против < 10 м у источников). В моделированиях источников использовались фильтр, ограничение по высоте и три спутника в общей видимости, чего мгновенный вид не моделирует. Поэтому сравнение не подтверждает и не опровергает опубликованное утверждение «субметровая точность на всём южном полюсе». Оно показывает, что результат этой модели зависит от орбит, которые не опубликованы. Это не заявление о какой-либо реальной системе; не связано с каким-либо ведомством и не одобрено им | lunar_station (over lunar_dpnt, lunar_service) |
| Ядро уровня защиты ARAIM для Луны | Шаг от геометрии к ковариации для лунного уровня защиты — (GᵀG)⁻¹ по геометрии со всеми видимыми спутниками и по каждой подгеометрии с одиночной неисправностью, с проекцией на местную вертикаль и следом горизонтального блока — и его статистическое ядро: множитель детектора Бонферрони, гауссов верхний хвост каждой гипотезы неисправности и решение корня, отображающее бюджет риска целостности на уровень защиты, на лунном объёме обслуживания из 7 точек | VALIDATED | Объединены две признанные сторонние реализации, обе запускаются офлайн, эталонные данные заново сгенерированы сквозным образом и проверены на побайтовое совпадение. RTKLIB 2.4.2-p13 (Т. Такасу, BSD-2-Clause), коммит 71db0ff, src/rtkcmn.c, скомпилированный из исходного кода C с -ULAPACK: lsq() → matinv() → ludcmp()/lubksb() обращает нормальную матрицу LU-разложением Краута с частичным выбором ведущего элемента, алгоритмом, не связанным с написанным вручную обращением Гаусса — Жордана invert4() в kshana; numpy.linalg.inv (LAPACK getrf/getri) заново обращает каждую как третье независимое обращение, согласуясь с RTKLIB с относительной точностью 1.112e-12. SciPy 1.17.0 / NumPy 2.4.1 (BSD-3-Clause) предоставляют norm.isf, norm.sf (Cephes ndtri/ndtr) и optimize.brentq — против ряда неполной гамма-функции Numerical Recipes, обратной функции по бисекции и 200-шаговой бисекции в kshana; при этом прямая sf в SciPy — иной численный путь в дальний хвост, чем 1 − Φ в kshana, поэтому сокращение в глубоком хвосте измеряется, а не повторяется. Вертикальная ось — радиальный единичный вектор (определение местной вертикали на сферической Луне), а горизонтальная дисперсия — след горизонтального блока, так что соглашение об азимуте восток/север не является общим. ЭТОЙ СТРОКОЙ ЯВНО НЕ VALIDATED: σ_URE, априорная вероятность неисправности по спутнику и иллюстративная орбитальная группировка класса Moonlight/LCNS — входные данные MODELLED, переданные оракулу как есть; а ФОРМА уравнения целостности MHSS для одиночной неисправности переписана из той же опубликованной границы, которую реализует kshana, — общая замкнутая формула есть общее предположение, поэтому эта строка охватывает неверное вычисление этого уравнения, а не неверный его выбор. Ни одна сторонняя реализация ARAIM MHSS недоступна (RTKLIB не имеет точки входа для уровня защиты, такого дистрибутива в PyPI нет, Stanford MAAST написан на MATLAB), что остаётся предстоящим улучшением | lunar_service (lunar_protection_level, lunar_protection_level_with_sigma), lunar (lunar_araim_with_sigma), raim (araim_raim) |
| Уровни защиты ARAIM MHSS относительно опубликованных эталонных векторов | Само уравнение уровня защиты по разделению решений при множественных гипотезах: взвешенный метод наименьших квадратов по всем видимым спутникам и по режиму каждой неисправности на геометрии восток/север/вверх с одним состоянием часов на орбитальную группировку, сигмы подрешений, сигмы разделения решений и односторонние проекции номинального смещения, пороги Бонферрони K_fa, распределение риска неконтролируемой неисправности и VPL/HPL, решающие уравнение риска целостности. Запускается как вид сценария araim-reference-check | VALIDATED | Рабочая группа C ЕС и США, Техническая подгруппа ARAIM, Reference Airborne Algorithm Description Document v3.1 (20 июня 2019), приложение D, разобранный числовой пример — опубликованные ВХОДНЫЕ ДАННЫЕ (геометрическая матрица для 10 спутников и 2 орбитальных группировок, диагонали C_int/C_acc, b_nom, P_sat, P_const, константы LPV-200) и опубликованные ВЫХОДНЫЕ ДАННЫЕ (VPL 18,3 м, HPL 13,45 м, EMT 7,2998 м, σ_v_acc 1,3694 м, K_fa_3 5,1083 и шесть промежуточных величин неисправности орбитальной группировки), получено 2026-09-20, SHA-256 источника 7f42934488c5c2261363439fabd48385e39526df34d514f395e22b6990b6bdb7. Совпадение при СОБСТВЕННОМ заявленном допуске эталона TOL_PL = 5e-2 м: VPL 0,0074 м, HPL 0,0437 м; EMT и σ_v_acc — до их напечатанной точности. Отчёт Milestone 3 той же подгруппы (2016), приложение A, §A.IX излагает тот же пример, но внутренне противоречив: опечатка в знаке в строке 3 матрицы G (+0,7477 там, где документ 2019 печатает −0,7477; при плюсе собственное σ_v_acc документа получается 0,8690 м против опубликованного 1,47 м), и K_fa_3 вычислен для 57 режимов неисправности, тогда как документ задаёт N_fault_max = 1, то есть 12, поэтому его EMT следует порогу для 57 режимов, а VPL/HPL — нет. Ни одна соответствующая реализация не может воспроизвести все его выходные данные одновременно. Его геометрические промежуточные величины воспроизводятся точно, а его уровни защиты записаны как измеренные расхождения (VPL 0,0171 м, HPL 0,0842 м, EMT 0,4806 м), исключены из показателя приёмки; допуск не расширялся, чтобы их поглотить. ОБЛАСТЬ ПРИМЕНЕНИЯ: только N_fault_max = 1 — подмножества с несколькими событиями отклоняются, а не усекаются, а исключение, проверка согласованности по хи-квадрат и шаг повторного распределения при двойном учёте остаются MODELLED | araim_reference (araim_reference_protection_levels, published_vectors), raim (araim_protection_level, araim_integrity_risk, normal_quantile) |
| ARAIM с одновременными гипотезами неисправности нескольких спутников | araim_reference::add_v42_subset_plan: правило определения подмножеств ADD v4.2 (P_THRES, FC_THRES, контролируемые подмножества с наименьшим числом исключённых — первыми), обобщённое с пар на одновременные сочетания до max_order событий спутников и орбитальных группировок, с точным априорным значением P_no fault prod q_e; add_v42_protection_levels_to_order запускает на нём путь уровней защиты ADD v4.2 (порядок 2 — в точности существующий путь). raim::araim_subset_raim (по желанию): расширенный RAIM по этому набору гипотез, каждое контролируемое подмножество — один режим (p_fault, T, b, sigma) в сумме риска целостности, ненаблюдаемые подмножества переносятся в неконтролируемый риск, бюджет масштабируется по распределению ADD неконтролируемого риска, а при обнаружении неисправности сообщается подмножество с наибольшим нормированным разделением. Априорные значения, требующие более глубоких подмножеств, чем max_order, отклоняются, а не усекаются | MODELLED | Внутренняя согласованность (InternalConsistency): сведение порядка 2 к пути ADD v4.2, проверенному MAAST, независимый повторный вывод априорных значений и построенная неисправность двух спутников. Прогонов MAAST или RTKLIB для сочетаний сверх пар не проводилось, поэтому более глубокие наборы гипотез и уровни защиты RAIM подмножеств внешне не проверены. araim_subset_raim разделяет упрощения araim_dual_raim (одна сигма для целостности и точности, одни часы, простой нормальный хвост): он не соответствует ADD | araim_reference (add_v42_subset_plan, add_v42_protection_levels_to_order); raim (araim_subset_raim, SubsetRule) |
| RAIM рядом с показателями качества holdover часов | Необязательный раздел [integrity] вида clock (clock_integrity::run): по заданной площадке и предустановкам орбитальных группировок (geometry::sky_geometry), на каждой эпохе целостности, пока временная шкала GNSS не подавлена, мгновенный RAIM (raim::snapshot_raim: проверка по хи-квадрат для чётности, уровни защиты по наклону) по спутникам выше маски с гауссовыми невязками с начальным значением и заданной сигмой и необязательным заданным смещением; отдельный блок integrity_fom с вердиктами по эпохам, уровнями защиты и доступностью. Эпохи с подавлением сообщаются как недоступные, а не экстраполируются; показатели качества holdover не меняются, а без раздела выход побайтово идентичен | MODELLED | Внутренняя согласованность (InternalConsistency): уровни защиты — это уровни snapshot_raim, который проверен по RTKLIB в собственной строке, пересчитанные на той же геометрии; поведение без неисправностей и с внесёнными неисправностями. Небо — репрезентативная предустановленная геометрия (а не датированный альманах), невязки синтетические, а сигма, пределы тревоги и вероятности — заданные входные данные; ничто здесь не является заявлением о доступности реального приёмника | clock_integrity (run, sky_at, IntegrityCfg); scenario (Scenario::integrity); report (RunResult::integrity_fom); api (clock dispatch) |
| Пространственная, зашумлённая наблюдаемость длины дуги для нескольких семейств в цислунном пространстве | Порог наблюдаемости по длине дуги в цислунном пространстве в ПРОСТРАНСТВЕННОЙ шестисостоятельной CR3BP, а не в плоской четырёхсостоятельной, для семейств DRO, гало L2 и почти прямолинейных гало L2, с шумом измерений, входящим в грамиан, и с приведением ДВУХ критериев, так как единственного честного нет: опубликованного критерия ранга, который доказуемо инвариантен к гомоскедастической сигме измерений (отбеливание умножает матрицу наблюдаемости на скаляр, оставляя относительный спектр сингулярных чисел, а значит ранг, дефект и обусловленность неизменными), и критерия оцениваемости — первой дуги, на которой формальная неопределённость положения 1σ начального состояния ведущего аппарата падает ниже заданной границы, — единственного, который действительно меняется с шумом. Каждый порог сопровождается скобкой сетки эпох, в которой он лежит; недостигнутый критерий равен null с указанием причины. Плоский режим остаётся режимом по умолчанию, а семейства вне плоскости в нём отклоняются, а не сплющиваются в состояние, которое не может их представить | MODELLED | Независимый ранг по строчно-ступенчатой форме методом исключения Гаусса с частичным выбором ведущего элемента подтверждает каждый вердикт о ранге в шестисостоятельном случае — другой алгоритм, не разделяющий кода с проверяемым путём через собственные значения/SVD. Матрица перехода состояния CR3BP размера 6×6, которую она использует, несёт собственный оракул ReferenceImpl относительно вариационного интегрирования SciPy, а начальные условия для гало/NRHO берутся из корректора, воспроизводящего опубликованную южную орбиту Gateway L2 9:2. Существующая ветвь фильтра информации с квадратным корнем явно НЕ засчитывается как подтверждение: она использует те же якобианы и сводится к той же нормальной матрице, поэтому это проверка согласованности между двумя численными механизмами, и выдаваемая метка расширения говорит об этом. НЕ привязана к внешнему эталону, и потому ExternalDataset отклонён, а не заимствован из строки STM: сами пороговые длины дуг зависят от конструкции орбитальной группировки MODELLED, сетки эпох и — измеримо, до 40 раз — от допуска на сингулярные числа. Опубликованное плоское значение 2,09 ч точно воспроизводится при rel_tol = 1e-6 и само зависит от допуска (10,25 ч при 1e-4, 0,42 ч при 1e-8), что является свойством критерия, а не орбиты. Ни один публичный набор данных не публикует порог наблюдаемости по длине дуги для выбранной цислунной орбитальной группировки. MEASURED РЕЗУЛЬТАТ: пространственный шестисостоятельный порог равен 22,17 ч для NRHO L2 и 40,42 ч для гало L2 и НЕ СУЩЕСТВУЕТ для плоского семейства DRO, на котором выводилось опубликованное утверждение, — ранг 4 из 6 с дефектом датума 2 и двумя строго нулевыми собственными значениями, структурный дефект, который не устраняется никакой длиной дуги | cislunar_observability, observability_gramian, intersat_range, cislunar_srif |
| Ошибка прогноза ориентации Земли в операционном стиле, измеренная как «прогноз против окончательных значений» | Подгонка методом наименьших квадратов смещения и скорости по замыкающему окну плюс основные периодические члены — годовой, полугодовой и два основных зональных прилива для UT1; Чандлеровский, годовой и полугодовой для полюса — с экстраполяцией и переносом вперёд последней невязки в окне: класс, который использует Bulletin A IERS, вместо предсказателя постоянства, на котором основывался опубликованный горизонт. Оценка единственным честным способом: прогноз на T+h, построенный по оперативным строкам Bulletin A на момент T или ранее, измеряется относительно окончательного значения Bulletin B, ОПУБЛИКОВАННОГО ПОЗЖЕ, на T+h, а рядом оценивается постоянство на том же наборе эпох относительно тех же окончательных значений. Целевая эпоха без опубликованного окончательного значения отбрасывается, а не переоценивается по оперативному столбцу; периодический член, который окно не может ограничить, сообщается как отвергнутый с указанием циклов, которые окно реально охватывает; неполное окно отклоняется, а не молча сокращается | MODELLED | Три независимых пути, ни один из которых не является опубликованным показателем точности прогноза. (1) Аналитический сигнал с известными коэффициентами — единственный способ задействовать периодический механизм, так как ни один из зафиксированных рядов не достаточно длинен, чтобы допустить годовой член. (2) Учебниковое решение методом наименьших квадратов в замкнутой форме, иная алгебра, чем у проверяемого матричного решения, на реальных строках. (3) Подлинные архивные строки прогноза Bulletin A, которые публикует реальный продукт 2026, сравниваемые по заблаговременности как статистика СОГЛАСИЯ и явно не как ошибка: 0,256 мс при 1 сут, 0,695 мс при 2 сут, 1,252 мс при 3 сут, с дрейфом до 3,885 мс при 9 сут. Поэтому это КЛАСС Bulletin A, близкий при малой заблаговременности, а не сам Bulletin A. Невязки «прогноз против окончательных значений» — реальные измеренные величины на реальных строках IERS, но их величина проверяется только по НАПРАВЛЕНИЮ сравнения, а не по опубликованной IERS цифре точности — чтение реального продукта есть происхождение данных, а не оракул. MEASURED: на 1-е сутки операционный предсказатель даёт ошибку в системе Луны 3,78 м против 11,39 м у постоянства (в 3,01 раза), на 2-е — 10,23 м против 21,72 м (в 2,12 раза), на 3-и — 20,33 м против 30,57 м (в 1,50 раза) — и он ХУЖЕ при заблаговременности более трёх суток (0,87 раза при 5 сут, 0,43 раза при 10), что отчёт выдаёт, а не показывает лишь горизонты, которые ему льстят. НЕ воспроизведены: авторегрессионный фильтр невязок и табличная редукция зональных приливов, 365-дневное операционное окно недостижимо при зафиксированных данных, и в этом репозитории НЕТ архивированной более ранней версии ряда, поэтому таблица архивных версий не содержит строк, а не оценивает синтезированную. Внешнее сравнение 0,30, результат-находка (остаётся MODELLED): при оценке относительно тех же окончательных значений по 178 архивным выпускам Bulletin A с окном крейта по умолчанию в 15 суток средняя абсолютная ошибка UT1 предсказателя в 2.4–12.6 раза больше, чем у Bulletin A, при 1–10 сут (порог 1.5 раза) и составляет 5,32 мс при 10 сут, вне диапазона 0,36–3,13 мс 2nd EOP PCC; для полюса — в 1.5–1.85 раза больше, чем у Bulletin A (в пределах 1.5 раза только при 6 и 7 сут); не выполняются 19 из 21 предварительно зарегистрированных условий. Исправление к пути (3): строки продукта 2026, с которыми проводилось сравнение, несут флаг IERS I (измерено), а не P, поэтому эти цифры согласия относятся к измеренным оперативным значениям, а не к прогнозам Bulletin A. Раунд 2 0,30, предсказатель по методу наименьших квадратов плюс авторегрессия с аналитически удалёнными зональными приливами, относительно 178 архивных выпусков Bulletin A при пороге раунда 1 (предварительно зарегистрировано c93605b4), результат-находка (остаётся MODELLED): выполняются 12 из 21 условий; средняя абсолютная ошибка UT1 составляет от 1,73 до 2.11 величины Bulletin A при 2–10 сут (порог 1.5 раза), тогда как полюс в пределах 1.27 раза при любой заблаговременности. Редакция 0,30: теперь, когда входные данные офлайн классифицируются по флагу IERS, цифры согласия пути (3) относятся к реальным прогнозам Bulletin A (0.256/0.695/1.252/3.885 мс при 1/2/3/9 сут против оперативных строк -> 0.133/0.421/0.839/2.786 мс) | frame_eop, realtime_frame_eop |
| Лунный датум системы координат по кампании наблюдений | Семипараметрический датум Гельмерта, полученный по СМОДЕЛИРОВАННОЙ КАМПАНИИ НАБЛЮДЕНИЙ, а не восстановленный по внесённому преобразованию. Земные станции наблюдают каталог маяков на лунной поверхности с указанными источниками по явному расписанию; частные производные задержки лунного РСДБ накапливаются в информационную матрицу Фишера координат маяков и преобразуются через схему Гельмерта A = [I₃ | [p]ₓ | p] в H = AᵀM_bA, так что сообщаемая точность датума является функцией программы наблюдений — строго линейной по сигме задержки и монотонной по дуге через либрацию, которую измеряет отчёт. Дефект датума является предметом, а не сноской: ранг, дефект, число обусловленности, спектр, ненаблюдаемые направления в семипараметрическом базисе, самое слабое направление даже при полном ранге и доля каждого параметра в нём выдаются при каждом прогоне, а любой параметр, не ограниченный кампанией, публикуется как NULL со статусом. Корреляция ошибок маяков MEASURED, а не предполагается — строго нулевая при зафиксированных станциях и печатается с её ценой, когда они оцениваются. Запускается как вид сценария lunar-frame-campaign | MODELLED | Тождества в замкнутой форме и независимый путь внутри репозитория, внешний оракул не заявляется. Схема Гельмерта — единственная новая производная в модуле — заново выводится центральной конечной разностью lunar_frame_realise::apply_helmert, путём, не разделяющим ни одного выражения с аналитической формой. Накопление, которое она использует, принадлежит lunar-vlbi-fim, чей якобиан там сравнивается конечными разностями с lunar_vlbi::vlbi_delay_s, а ядро линейной алгебры которого отдельно привязано к внешнему эталону numpy в tests/fim_observability_reference.rs — эта строка не заимствует ни тот, ни другой статус. Физический оракул структурный, а не численный: частная производная задержки по маяку — это ближнепольная РАЗНОСТЬ двух почти параллельных единичных векторов, поэтому хуже всего определяемым направлением сдвига ДОЛЖНО быть связанное с телом направление на Землю, и тест подтверждает вычисленный ответ по отдельно измеренному направлению. MEASURED: сигма сдвига по кампании 6,3975 м против ошибки восстановления 0,3125 м в сценарии с внесённым преобразованием (в 20,5 раза точнее), тогда как вращение и масштаб идут В ДРУГУЮ сторону — в 2,32 и 13,5 раза хуже: путь с внесением предполагает одну изотропную сигму и потому распределяет свою ошибку равномерно по семи параметрам, чего наблюдаемая задержка не делает. Ранг 7/7, но обусловленность 3.8e5, с одним направлением на 99,57 % чисто сдвиг в сторону Земли, в сорок раз хуже любого другого. ЧЕГО ЭТА СТРОКА НЕ ЗАЯВЛЯЕТ: что цифра по кампании верна в абсолютном выражении. Она устанавливает, что цифра теперь ВЫВОДИТСЯ из расписания, геометрии и модели ошибок, а не из подложенного ответа. Остаётся ReferenceImpl/MODELLED: опубликованной пары «кампания лунного РСДБ плюс ковариация датума» не существует, сеть станций и сигма задержки — ILLUSTRATIVE входные данные (каталог маяков имеет источник, кампания — нет), наблюдения считаются независимыми, тогда как тропосфера и часы реального сеанса коррелированы между близкими сканированиями, а эфемериды, часы, тропосфера и параметры ориентации Земли ЗАФИКСИРОВАНЫ. Внешнее сравнение 0,30, результат-находка (остаётся MODELLED): при перестроении каждой строки якобиана маяка по световым временам NAIF SPICE (DE440, ITRF93, MOON_ME; предварительно зарегистрировано 50863551) расписание, ранг Гельмерта, сигмы датума (в пределах 4.7e-3), обусловленность, самое слабое направление (0,07 град), развёртка либрации и порядок дуг совпадают на шести сценариях в пределах предварительно зарегистрированных 1 % / 0,2 / 0,05 град. NumPy на зафиксированном якобиане движка совпадает с точностью 3e-14 при зафиксированных станциях. При оцениваемых станциях различие составляет 6.8e-6 против предварительно зарегистрированного 1e-9, посылка которого об обусловленности оказалась неверной (обусловленность Гельмерта 2.1e8; независимые пути NumPy расходятся на 3e-6; вклад запасного варианта псевдообратной матрицы движка 1e-9 не исключён), поэтому строка не повышается на этой предварительной регистрации. Повторная регистрация 0,36 с порогом, масштабированным по обусловленности (предварительно зарегистрировано b887eb05; t = max(1e-12, 10 kappa 2^-53) по обусловленности совместной информации и её редукции Гельмерта), результат-находка (остаётся MODELLED, NOT MET): шаг 0 исключает запасной вариант псевдообратной матрицы как причину расхождения 6.8e-6 (ни одна матрица до матрицы Гельмерта не переходит на запасной вариант в шести исходных сценариях, наименьший запас — коэффициент 2,6), ветвь SPICE по-прежнему выполняется на всех шести, а NumPy совпадает в пределах порога на шести из восьми сценариев (по умолчанию, две дуги, сигма задержки 3x, коллинеарный дефект и новый прогон с зафиксированными станциями 2026-12-01; худший случай — 0,13 от порога). Он не выполняется на stations_estimated (сигмы датума до 6.8e-6, обусловленность 9.1e-6, норма с отброшенной независимостью 3.5e-6, при t = 5.9e-7), а на новой дате у маяка на южном полюсе нет наблюдений, поэтому информация о маяке имеет дефицит ранга (запасной вариант псевдообратной матрицы до матрицы Гельмерта в обоих новых сценариях), и неизменный оракул NumPy не может вычислить stations_estimated_fresh (вырожденная матрица). Результаты: docs/design/evidence/mr05-lunar-datum-cond/RESULTS.md | lunar_frame_campaign (composing lunar_vlbi, lunar_vlbi_fim, fim, lunar, lunar_frame_realise, frames, cio, lunar_frame) |
| Подтверждение порога по длине дуги в цислунном пространстве независимым оценивателем | Пакетный оцениватель наименьших квадратов, который ВОССТАНАВЛИВАЕТ начальное состояние ведущего аппарата по смоделированным межспутниковым измерениям на растущих префиксах той же сетки эпох, которую использует таблица «ранг против дуги», с частными производными измерений, взятыми как центральные конечные разности составной прямой модели. Он не использует ничего из механизма, которым измерялся порог, — ни строки аналитического якобиана, ни вариационной матрицы перехода состояния, ни разложения по сингулярным числам или собственным значениям, ни допуска на ранг, ни фильтра информации с квадратным корнем — и разделяет лишь динамику, начальные условия, скалярную наблюдаемую и сетку эпох, каждая из которых названа в выдаваемом документе. Два критерия, оба развёрнуты: восстановление без шума (аналог ранга) и оцениваемость по Монте-Карло (аналог оцениваемости, измеренный относительно известной истины, а не предсказанный по ковариации). Запускается как вид сценария cislunar-arc-recovery | MODELLED | Отдельный оцениватель в этой кодовой базе на другом алгоритме и непересекающемся пути кода: нелинейный взвешенный метод Гаусса — Ньютона с частными производными по конечным разностям, чей вердикт читается как измеренная ошибка восстановления состояния в км и мм/с. У него нет общих выражений с путём грамиана через ранг и ковариацию, а разделение ОБЕСПЕЧИВАЕТСЯ проверкой исходного текста, а не заявляется. MEASURED на опубликованной плоской сетке DRO: критерий ОЦЕНИВАЕМОСТИ CORROBORATED — измеренная граница Монте-Карло 5,739130 ч против формальной 5,739130 ч (отношение 1,0000), а измеренный RMS воспроизводит формальное 1σ на 21 длинах дуг с геометрическим средним отношением 0,9804. Критерий РАНГА NOT corroborated как граница восстанавливаемости: оцениватель восстанавливает с 0,782609 ч против 2,086957 ч у грамиана, отношение 0,375, а при 1,826087 ч — последнем префиксе, который чтение ранга оценивает в 3 из 4 — восстанавливает до 1.96e-5 от априорного смещения. Граница восстановления неподвижна на трёх десятичных порядках собственной границы, тогда как порог по рангу охватывает от «никогда» до 0,782609 ч на четырёх порядках rel_tol, и они совпадают точно при rel_tol = 1e-8. Этот диапазон сначала был записан как достигающий 0,260870 ч; эта цифра была АРТЕФАКТОМ, порождённым чтением ранга, которое насчитало 4 направления по 2 строкам измерений ниже уровня шума f64, и она исправлена здесь, а не оставлена. Чтение ранга теперь ограничено неравенством Сильвестра с выдачей причины, а исправленный диапазон насыщается точно на дуге, где независимый оцениватель восстанавливает, что усиливает перекрёстную проверку этой строки, а не ослабляет её: опубликованное значение 1e-6 — консервативное СОГЛАШЕНИЕ о сингулярных числах, а не утверждение о восстанавливаемости. Та же картина в пространстве: NRHO 9,290323 ч против 21,677419 ч, гало 22,978723 ч против 39,829787 ч, с точным согласием по оцениваемости в обоих случаях. Плоский шестисостоятельный DRO не восстанавливается ни на какой дуге, независимо воспроизводя структурный дефект датума этого семейства оценивателем, которому о нём ничего не сообщали. НЕ привязано к внешнему эталону — динамика и начальные условия общие с проверяемым анализом, и ни один публичный набор данных не публикует такой порог — поэтому ExternalDataset отклонён | cislunar_arc_recovery, batch_ls |
| Лунный объём обслуживания по реальной, полученной геометрии орбитальной группировки | Принимает табличную эфемериду состояний с центром в Луне (результат вычисления по ядру SPK/BSP) или опубликованное определение орбитальной группировки через ephemeris_path, выполняет по ней тот же перебор охвата / DOP / уровня защиты и выдаёт подразумеваемое им требование к точности дальности σ_URE РЯДОМ с неизменными иллюстративными кеплеровскими и возмущёнными результатами, а их разность — как отдельную именованную величину. Каждая цифра несёт класс происхождения, который отличает полученное из ядра от полученного из опубликованных элементов и от смоделированного, так что в последующем цитировании их нельзя спутать | MODELLED | ГЕОМЕТРИЯ внешняя и снабжена хешем: три набора эталонных данных, числа которых берутся только из документов, полученных с URL, датой получения и SHA-256, и воспроизводимых зафиксированными генераторами, которые проверяют хеш источника и ПРЕРЫВАЮТ работу, а не выдают число, — опорная орбитальная группировка демонстрации совместимости LANS (NASA NTRS 20250009447, SHA-256 d1b916be…), примеры LNCSS (NAVIGATION 70(4) navi.613, CC BY, SHA-256 4e294687…) и подлинные эфемериды летавших космических аппаратов LRO, Danuri, Chandrayaan-2 и CAPSTONE, вычисленные по собственным восстановленным ядрам JPL через Horizons. Публичного ядра орбитальной группировки лунной навигации НЕ существует — Moonlight/LCNS, LCRNS и LNSS не летают, и NAIF ничего для них не публикует, — и ничего не придумывалось. ВЫВЕДЕННОЕ требование к σ_URE НЕ имеет внешнего оракула (никто не публикует точность дальности, которой требует лунный HPL 50 м на этом объёме обслуживания), поэтому оно проверяется по собственному алгебраическому тождеству и независимо — повторным прогоном всего перебора при вычисленном требовании с подтверждением того, что доступность там переключается. MEASURED: опубликованному проекту из 8 спутников требуется σ_URE 2,9044 м при охвате 100 % против 0,3591 м при 37,85 % у иллюстративной орбитальной группировки — пересмотр опубликованного числа в 8,09 раза по правилу программы R4. Качественный вывод сохраняется (класс LNIS в 30 м по-прежнему не замыкает южнополярный HPL 50 м), но недостаток был преувеличен в восемь раз. Демонстрация LANS с 5 спутниками даёт НОЛЬ выборок уровня защиты — пять спутников не могут обеспечить шесть в видимости, нужные набору гипотез об одиночной неисправности, — и поле требования ОТСУТСТВУЕТ, а не выдумывается; то же для четырёх реальных космических аппаратов при охвате 0 %. InternalConsistency — честный вид: ВХОДНЫЕ данные внешние и снабжены хешем, но величина, о которой эта строка, проверена только относительно самой себя. Внешнее сравнение 0,30, результат-находка (остаётся MODELLED): относительно статистик примеров LNCSS из navi.613 на 346 узлах сетки 4 из 12 статистик доступности выходят за предварительно зарегистрированные 2 процентных пункта (случай A: -4.0, +22,5 и -3.6 п. п.; случай B: -12.1 п. п.). Вероятные причины: элементы прочитаны в неверной системе координат, двухтельная задача Кеплера на 15 суток против незаявленной модели сил в статье и сетка, не воспроизводимая по тексту. Половина по PDOP не могла быть оценена (LANS не печатает числовой статистики); тест сравнения зафиксирован и игнорируется. Раунд 2 0,30, результат-находка (остаётся MODELLED): относительно оракула Orekit 12,2 / Hipparchus 3,1, вычисляющего весь отчёт (распространение Orekit, видимость и DOP через DOPComputer, уровни защиты MHSS, составленные в Hipparchus, требование, решаемое для каждой выборки; предварительно зарегистрировано d3ce97b2), на всех пяти полученных геометриях и двух сетках 155 из 160 значений совпадают в пределах предварительно зарегистрированных порогов (2 п. п., 5 %, 1 %), включая требование sigma_URE для LNCSS A и C (3,879072208 м с обеих сторон для случая A) и отсутствующее требование для LANS и орбитальных аппаратов. LNCSS B на плотной сетке не проходит по статистикам худшей выборки (sigma_required 0,000923 против 0,001511 м, hpl_max 1.63e6 против 0.99e6 м), где почти вырожденные геометрии (PDOP около 1e6) усиливают согласие по положению на уровне метра; требование по p95 согласуется (1,6343 против 1,6357 м). Требование по худшей выборке некорректно поставлено на вырожденной геометрии. Относительно navi.613: 4 из 12 по-прежнему вне 2 п. п. (закреплено) | lunar_ephemeris, lunar_service |
| Единица измерения и происхождение объявлены для каждой сообщаемой величины | Машиночитаемая схема, задающая единицу измерения, класс происхождения и определение для каждого числового поля каждого отчёта сценария, плюс единый глобальный контроль, который запускает каждый зарегистрированный вид сценария и завершается неудачей, если у выданного числового поля нет того или другого. Словарь происхождения закрыт, и каждый класс несёт уровень доказательств, причём два класса намеренно отображены на inherits-scenario-label и depends-on-input, а не получают уровень, которого класс не определяет | MODELLED | Сам выдаваемый документ: каждый числовой лист должен разрешаться в запись в собственном блоке units этого документа. Внешнего реестра единиц, по которому можно было бы проверить ОБЪЯВЛЕННУЮ единицу, нет, поэтому объявленная единица — рецензированное утверждение, а не проверенное: контроль проверяет ПОЛНОТУ и КОРРЕКТНОСТЬ ФОРМЫ, а не истинность, и Validated было бы неверно, потому что ничто внешнее не подтверждает, что m — правильная единица для поля с именем _m. Независимая перекрёстная проверка по суффиксу имени была проведена по 1 434 полям, описанным В ТОТ МОМЕНТ: из 691 с суффиксом, несущим единицу, 40 расходятся с объявленной единицей, и все 40 объяснены (суффиксы «в секунду», минимумы, апертуро-секунды, ньютон-метры против суффикса, похожего на нанометр), поэтому неверной единицы не выявлено. Эта перекрёстная проверка с тех пор не повторялась, а охват вырос сверх неё — цифра оставлена такой, какой была реально измерена, а не пересчитана на текущий итог. На момент этого изменения (0.27.0) охват вырос с 7 из 56 видов до 60 из 61 и с 389 из 1354 полей до 1 742 из 1 744 (docs/field-units-schema.json, который поддерживается актуальным проверкой на устаревание). НЕ осталось ни одного непокрытого вида (потолок 0, FUT-28, 0,36): последним был sweep-nd, у которого два столбца задаются вызывающей стороной, поэтому их единицы — данные; теперь они описаны как mixed - see note, а единица каждого положения считывается из собственной таблицы единиц ПЕРЕБИРАЕМОГО пакета в key_units и metric_units (или берётся из объявленной unit оси, которая должна совпадать с единицей пакета, если существуют обе; null, если нет ни той, ни другой, — указано, а не угадано). cislunar-observability был предпоследним и сошёл со списка, когда его выпущенный документ получил блок units: закрепление аддитивности, которое называло units запрещённым ключом, теперь ДОКАЗЫВАЕТ, что добавление аддитивно, — уберите блок обратно, и документ по-прежнему даёт хеш, равный двум константам, зафиксированным до его появления, так что выпущенное значение, сдвинувшееся под добавлением, всё равно не пройдёт. Работа также выявила двенадцать дефектов единиц или документации в существующем коде, о которых сообщено, а не исправлено в рамках R1 | field_schema |
| Лунный датум системы координат по РЕАЛЬНОЙ кампании наблюдений | Ковариация семипараметрического датума Гельмерта, у которой два смоделированных входа заменены измеренными: расписание — эпохи передачи с Земли 337 архивных нормальных точек лазерной локации Луны ILRS (с 2015-04-08 по 2015-06-27, Grasse MeO 7845 и Matera MLRO 7941, все пять решёток уголковых отражателей), а вес каждого наблюдения — собственная архивная точность этой точки bin_rms/√n_raw — медиана 5,13 мм односторонней дальности, считанная из файла. Координаты станций IERS ITRF2020, координаты отражателей JPL DE430, таблица 7. Запускается как вид сценария lunar-llr-datum. Проверенное утверждение (0,36) узкое: на аналитическом пути по умолчанию вычисление ковариации датума согласуется с независимым оракулом SPICE по световому времени и NumPy на новых измеренных нормальных точках; это не точность LLR и не свидетельство того, что аналитическая Луна точна | VALIDATED | Тождества в замкнутой форме, независимый путь внутри репозитория и, начиная с 0,36, независимый библиотечный оракул SPICE и NumPy на новых измеренных данных (ниже); опубликованной пары «ковариация датума лунной LLR» для проверки не существует, поэтому никакая точность не заявляется. Единственная новая производная — частная производная дальности по связанному с телом положению отражателя — заново выводится центральной конечной разностью двустороннего светового времени, которое она дифференцирует, путём, не разделяющим ни одного выражения с аналитической формой. Физический оракул структурный: частная производная дальности ЕСТЬ удвоенная линия визирования, поэтому связанная с телом координата вдоль среднего направления на Землю должна определяться гораздо лучше двух координат в плоскости неба, до которых дотягивается только либрация, — измерено от 50,7× до 71,7× по пяти решёткам относительно развёртки либрации, которую отчёт измеряет независимо, причём печатаются и изотропное предсказание для малых углов, и поперечная анизотропия, объясняющая разрыв. ЧТО ИЗМЕНИЛОСЬ: расписание, число наблюдений и вес каждого наблюдения теперь измерены; используются 337 из 349 архивных точек, а 12 не используемых пропускаются и учитываются, потому что в ITRF2020 нет положения для Apache Point. MEASURED: сигма сдвига датума 1.851746e-2 м против 6,3975 м в СМОДЕЛИРОВАННОЙ кампании (в 345 раз), вращение в 36 раз, масштаб в 24 раза — отношение между лазерно-дальномерной сетью и сетью с задержками РСДБ, поэтому это находка, а не проверка. Ранг информации об отражателях 15/15 при межрешёточной связи, в точности равной 0; ранг Гельмерта 7/7, обусловленность 2.4e4. ЧЕГО ЭТА СТРОКА НЕ ЗАЯВЛЯЕТ: что цифра верна в абсолютном выражении. Реальное решение LLR одновременно оценивает орбиту Луны, физические либрации, ориентацию Земли, координаты станций и приливные и релятивистские параметры и сообщает дециметры (собственные 0.12–0.27 м таблицы 7 DE430), тогда как эта граница намного меньше; это граница Крамера — Рао для заданного сокращённого набора параметров, а не точность. Вне проверенного утверждения (modelled, не проверено): эфемериды центра Луны и ориентация тела IAU 2015 смоделированы, а тропосфера, приливы, эксцентриситет станции, движение полюса, UT1-UTC, релятивистская задержка и часы станций отсутствуют. Их совокупная величина ОПУБЛИКОВАНА, а не обоснована — односторонняя дальность «наблюдённое минус вычисленное» 156 494 м RMS по 337 точкам, — а их влияние на ковариацию ОГРАНИЧЕНО, а не обосновано: повторное решение всего датума с каждой частной производной, наклонённой на 0,1° (вдвое больше измеренного наклона эфемериды в худшей эпохе, знак чередуется), сдвигает результат на 0,288 %. ВНЕШНЯЯ ПРОВЕРКА (раунд 2 0,30, предварительно зарегистрирована 6b27964a), результат-находка (остаётся MODELLED): двустороннее световое время SPICE (DE440, ITRF93, лунная ориентация DE440) с частными производными по конечным разностям и обратная матрица numpy на тех же 337 измеренных нормальных точках и весах согласуются по учёту, по обоим рангам, нулевой связи, остаточному RMS (2.1e-5) и 15 из 16 цифр ковариации. Сигма сдвига по z на 1,03 % выше при предварительно зарегистрированном пороге 1 %. С центром Луны из DE440 она падает до 0,049 % (c51f8b2, данные уже видели), а на новых нормальных точках 2019 года датум с Луной из ядра выдерживает каждый порог (строка «…, центр Луны из ядра»), где аналитическая Луна также остаётся в пределах порогов (худший случай 3.8e-3, только для сведения), так что это сравнение не различает модели Луны. ПРОГОН АНАЛИТИЧЕСКОГО ПУТИ НА НОВЫХ ДАННЫХ (0,36, предварительно зарегистрирован 31f5283 до получения любой точки): неизменный оракул SPICE и NumPy на 151 использованных нормальных точках EDC CRD v2 за 2025-04..06 (год, который ни один тест не использовал; файлы получены заново, а оракул перезапущен независимо, см. NOTICE эталонных данных) при тех же порогах: учёт, ранги, числа по решёткам и нулевая связь равны; сигмы и нормы — худший случай 1.11e-3 (порог 1 %), обусловленность 8.95e-4 (2 %), отношения поперёк/вдоль — худший случай 1.79e-3 (2 %); SPICE O-C 10,79 м. VALIDATED на этом основании только как проверка вычисления ковариации по библиотеке; аналитический остаточный RMS на этом срезе равен 222 км, поэтому пороги не различают модели Луны (как и в строке с ядром). Результаты: docs/design/evidence/mr06-llr-analytic-fresh/RESULTS.md | lunar_llr, realdata::llr_crd (composing fim, cio, frames, ephem, lunar_frame, lunar_frame_campaign) |
| Геодезия лунной опорной станции: добавленные уголковый отражатель и маяк РСДБ относительно датума по пяти решёткам | Необязательные входы extra_reflectors и extra_beacons сценария lunar-llr-datum добавляют блок station_geodesy: информацию Гельмерта по пяти решёткам из архивного среза лазерной локации Луны плюс информацию, которую вносят в семипараметрический датум добавленный уголковый отражатель (дальность измеряется в архивные эпохи нормальных точек, когда станция локации выше своего горизонта, каждая с архивным весом этой нормальной точки) и добавленный маяк РСДБ (наблюдаемый сетью и расписанием lunar-frame-campaign при зафиксированных земных станциях, через частные производные задержки lunar-vlbi-fim) на заданных площадках; решение пересчитывается, с 1-сигмой каждого параметра Гельмерта до и после, их отношением, нормами до и после и экстремальными собственными значениями разности Фишера. При отсутствии или пустом значении отчёт не меняется | MODELLED | Только внутренняя согласованность: каждая добавленная площадка — отдельная точка, а лазерная дальность или задержка РСДБ при зафиксированной станции затрагивает одну точку, поэтому её информация A_p^T M_p A_p положительно полуопределена и складывается; тест проверяет по этому разность Фишера и каждую дисперсию. Результат по пяти решёткам — существующая строка по реальным данным, и он не меняется. Добавленный отражатель повторно использует эпохи, запланированные для пяти существующих решёток, — ILLUSTRATIVE расписание, а сеть, расписание и сигма задержки добавленного маяка — ILLUSTRATIVE входные данные lunar-frame-campaign; площадка — ILLUSTRATIVE южнополярное положение. С южнополярной площадки Земля видна низко над горизонтом или не видна вовсе, что выражают существующие тесты углов обзора; ни одна из площадок не облучается непрерывно. Цифры — границы Крамера — Рао для сокращённого набора параметров, а не решённый датум и не заявление о какой-либо реальной станции | lunar_llr (over lunar_frame_campaign::beacon_information, schedule_for and solve_datum_information, lunar_vlbi_fim) |
| Лунный датум системы координат по РЕАЛЬНОЙ кампании наблюдений, центр Луны из ядра | Ковариация семипараметрического датума Гельмерта lunar-llr-datum по архивным нормальным точкам ILRS и их измеренным весам на пути ядра: геоцентрический центр Луны считывается из JPL DE440 собственным читателем ядер движка (planetary_kernel_path; lunar_llr::llr_geometry_with, ephem_provider::KernelEphemeris). От аналитической строки отличается только центр Луны; ориентация IAU 2015, отсутствующие движение полюса и UT1, каталоги, правила отбора, веса и линейная алгебра те же. Проверенное утверждение лишь в том, что ковариация датума на этом пути согласуется с независимым оракулом SPICE и NumPy на новых, ранее не виденных нормальных точках. Сравнение не различает модели Луны и не проверяет центр Луны: на том же срезе аналитическая Луна также проходит каждый порог, предварительно зарегистрированная мутация (чтение Луны из ядра с опозданием на один час) не была обнаружена, и центр Луны с ошибкой около 4 650 км также проходит (см. текст оракула). Это не свидетельство того, что Луна из ядра улучшает датум. Запускается как сценарий lunar-llr-datum с planetary_kernel_path (и normal_points_dir для другого среза) | VALIDATED | NAIF SPICE Toolkit N0067 (spiceypy 8.2.0, MIT), двусторонние световые времена на DE440, ориентация Земли ITRF93 и лунная ориентация DE440 (MOON_ME) с частными производными по конечным разностям 100 м, а также информационная матрица и обратная матрица numpy 2.3.5 (BSD-3-Clause, LAPACK): неизменный генератор сравнения аналитической строки (6b27964a), запущенный на новом срезе (нормальные точки EDC CRD, 2019-04..06), предварительно зарегистрированном в 830d945a до получения какой-либо его части, при порогах аналитической строки (1 % для сигм и норм, 2 % для обусловленности и отношений, точный учёт, ранги и связь) и его самопроверке оракула (SPICE O-C 10,86 м < 100 м). Каждая величина выдерживается, худший случай 7.6e-5. Мутации: запланированная задержка Луны на один час НЕ обнаружена (ковариация зависит от разброса линий визирования, а не от их времени); структурная мутация, выбранная впоследствии и раскрытая как таковая, — отбрасывание частной производной нисходящего звена — проваливает каждую сигму. Находка: на этом срезе аналитическая Луна также проходит (худший случай 3.8e-3), поэтому порог не различает модели Луны, и это подтверждает ковариацию на новых данных, а не улучшение от Луны из ядра. Проверка интегратора на сгибе (не предварительно зарегистрирована): Луна из ядра, считанная относительно барицентра Земля — Луна вместо Земли (остаточный RMS 4 649 км), и эпоха ядра без TT минус UTC (69 с; остаток 2,6 км) обе по-прежнему проходят каждый порог, а отбрасывание sqrt(n_raw) из измеренных весов проваливает все 16 величин с порогами; сравнение чувствительно к весам, частным производным и линейной алгебре, но не к центру Луны. Обе стороны читают DE440: это подтверждает вычисление на DE440, но не сам DE440. Вне утверждения: точность LLR (граница Крамера — Рао для сокращённого набора параметров) | lunar_llr (llr_geometry_with, LunarLlrDatumScenario); ephem_provider (KernelEphemeris); naif_kernel |
| Встроенная аналитическая лунная эфемерида — её ЗАЯВЛЕННАЯ ГРАНИЦА ТОЧНОСТИ проверена по реальным данным | ephem::moon_position, маломощный геоцентрический лунный ряд, к которому крейт возвращается при отсутствии ядра DE/SPK, измеренный относительно реальной лазерной локации Луны и относительно опубликованной планетной эфемериды на том же промежутке. Эта строка подтверждает границу, которую модуль заявляет о себе, а НЕ точность: подтверждено, что ряд не хуже, чем он утверждает, но не подтверждено, что он хорош | VALIDATED | ДВА независимых внешних набора данных, не имеющих ничего общего. (1) 337 архивных нормальных точек лазерной локации Луны ILRS (EUROLAS Data Center, DGFI-TUM, с 2015-04-08 по 2015-06-27, пять решёток уголковых отражателей, зафиксированы с SHA-256 по файлам и скриптом повторной загрузки и проверки): односторонняя дальность «наблюдённое минус вычисленное» 156 494 м RMS, с координатами станций из IERS ITRF2020 и координатами отражателей из JPL DE430, таблица 7, поэтому остаток определяется рядом для центра Луны. (2) Геометрические геоцентрические состояния Луны JPL Horizons на том же промежутке: 112 567 м RMS по радиусу, 195 655 м RMS по вектору, худшая эпоха 360 324 м = 0,0536°. Остаток дальности реагирует на РАДИАЛЬНУЮ часть ошибки эфемериды, поэтому (1) и (2) — одна и та же величина, полученная двумя путями, и они согласуются в пределах 1,39×, что даёт сценарию lunar-llr-datum основание относить свой остаток на счёт эфемериды. Собственная документация модуля движка заявляет ~0,3° / ~несколько·10² км; оба измерения укладываются в неё, угловое утверждение — с запасом в 5,6 раза. ОБЛАСТЬ ПРИМЕНЕНИЯ, указанная так, чтобы читатель не мог ошибиться: это подтверждает заявленную ГРАНИЦУ, а не цифру точности. Ряд остаётся непригодным для любого применения, требующего лучше ~1e5 м, и это ограничение составляет содержание строки не меньше, чем согласие. Воспроизводится офлайн зафиксированными скриптами получения и проверки | ephem (moon_position), lunar_llr, realdata::llr_crd |
| Целостность контроля — зелёный результат, означающий то, что он говорит | Три структурные проверки самого процесса верификации, каждая из которых закрывает класс дефектов, доходивших до канонического контроля как перемежающийся или ложный красный результат. (1) Каждый построенный путь ко временному файлу в исходных текстах Rust должен содержать компонент, уникальный для каждого вызова; идентификатор процесса отвергается, потому что cargo запускает тесты библиотеки как параллельные потоки ОДНОГО процесса, а идентификатор процесса у всех них общий. (2) Каждое побайтовое или хеш-закрепление должно заявлять рядом с собой или в заголовке своего модуля, что оно охватывает и что намеренно исключает, — чтобы сквозное изменение позволяло с первого взгляда увидеть, какие закрепления затронуты, а какие незаметно превратились в детекторы изменений на уровне всего репозитория. (3) Зелёный результат можно заявлять только по ПОЛНОМУ набору тестов: scripts/gate.sh запускает cargo test --all, фиксирует настоящий код выхода без конвейера на пути и записывает квитанцию с названием коммита, числом интеграционных бинарных файлов, числом тестов и длительностью; проверка перед отправкой отклоняет отправку коммита, который не назван ни в одной действительной квитанции, на чистом дереве. Повторяемость отдельно выборочно проверяется scripts/check-repeatability.sh, который запускает набор тестов библиотеки N раз и завершается неудачей, если набор проходящих тестов различается. | MODELLED | Замкнутая форма: каждая проверка запускается на фиксированном заведомо плохом фрагменте, на котором она должна сработать, и фиксированном заведомо хорошем, на котором она должна молчать; оба — литеральные константы, на которые детектор повлиять не может. Два заведомо плохих фрагмента — дефекты F22 и F25 в их первоначальном виде. Это ВНУТРЕННИЙ оракул, и строка соответственно MODELLED: он доказывает, что проверки отличают дефект от его исправления, а не то, что описываемые ими классы исчерпывающи. Заявленные слепые зоны — общее состояние, не являющееся путём, закрепление, заданное короткой именованной константой, редкая гонка, которую три прогона не выбирают, и квитанция, которую может подделать любой, кто способен записать файл, — выписаны в документации модуля tests/source_guards.rs и в заголовке каждого скрипта, а не оставлены на обнаружение. | scripts/gate.sh, scripts/check-gate-receipt.sh, scripts/check-repeatability.sh, scripts/install-gate-hook.sh |
| Составной временной PL — скалярная специализация MHSS (H=1_N) | Скалярный TPL по разделению решений по разнородным источникам по времени; PL определяется шумом подмножества с худшим исключением + смещением UTC(k) | VALIDATED | P2: numpy 2.3.5 linalg.lstsq и scipy 1.18.1 (norm.isf, norm.sf, brentq) пересчитывают собственными алгоритмами оценки взвешенного метода наименьших квадратов по подмножествам, общую ковариацию разделения sqrt(Δ Σ Δᵀ), смещения и по ним уровень защиты на 300 зафиксированных входных данных (tests/fixtures/tpl_scalar_numpy_oracle); PL совпадает в пределах 1e-9 относительной погрешности (худший случай 1.2e-10), а определяющее исключаемое подмножество идентично, допуск зафиксирован до сравнения. Множители, априорные значения и мажоранты смещения — входные данные, а структура уравнения PL (список режимов, разделение ir/2, проекция смещения) — заявленный вход, как и в строке ядра уровня защиты ARAIM для Луны; проверенное утверждение — линейная алгебра и PL на этих входных данных, а не физические величины временного сценария. Происхождение ARAIM: Blanch 2015 / Joerger 2014 | src/integrity/tpl_scalar.rs |
| Составной временной PL — прохождение holdover с начальным значением P0 | PL(τ)=max(TPL_handover,HPL(τ)); полунепрерывность снизу PL(0+)≥PL(0−); бегущий максимум K(IR/2); показатели фазы τ/τ³/τ⁵ | MODELLED | Тесты свойств (монотонность, отсутствие падения при передаче) + проверка показателей относительно holdover::coast_phase_variance | src/integrity/composed_pl.rs |
| Составной временной PL — покрытие огибающей holdover, многолетний режим (tau>=90d) | Огибающая бегущего максимума мажорирует (без пробоя) реальный метрологический ряд при каждой проверенной задержке tau>=90d на непересекающемся сегменте; малая tau (<=30d) — раскрытая граница Modelled | VALIDATED | Ряд BIPM Circular-T [UTC-UTC(USNO)] с шагом 5 суток, MJD 56074-60429 (872 точки, webtai API); непересекающиеся подгонка и проверка, многолетнее покрытие без пробоя | src/integrity/composed_pl.rs |
| Составной временной PL — огибающая LIL п. н. (невозможность + согласованность) | Конечного худшего случая holdover нет (супремум броуновского движения расходится); HPL с распределением по IR согласуется с огибающей Хартмана — Винтнера при IR→0 | MODELLED | Тождество замкнутой огибающей п. н. √(2Dt·lnln t) + проверка доминирования HPL; шов невозможности Baweja arXiv:2606,24210 | src/integrity/lil_envelope.rs |
| Мажоранта целостности смещения прослеживаемости разнородных UTC(k) | Мажоранта смещения по источнику b = (U/k_cov)·Phi^-1(1-tail/2) + старение, раздувающая опубликованную расширенную неопределённость типа B до распределённого хвоста целостности; связана с tpl_scalar как bias_s | MODELLED | Независимое воспроизведение замкнутой формы мажоранты средствами numpy + stdlib statistics (InternalConsistency). Ряд BIPM Circular-T [UTC-UTC(USNO)] — лишь ЦИТИРУЕМЫЙ вход: это ТОТ ЖЕ ряд, который уже Validated для строки покрытия holdover R4, и он здесь НЕ проверяется повторно; воспроизведение его значений ничего не доказывает для R2. Глубокий хвост целостности — Modelled. Внешнее сравнение 0,30, результат-находка (остаётся MODELLED): по файлам BIPM UTC-UTC(k) для отдельных лабораторий (102 лабораторий, 105 024 строк с опубликованными неопределённостями) мажоранта b = 2,576 u при хвосте 1e-2 превышается в 50,8 % строк (Клоппер — Пирсон 95 %: от 50,4 до 51,1 %) и более чем в 1 % строк у 101 из 102 лабораторий. Опубликованная u — неопределённость определения BIPM для UTC-UTC(k), а не граница смещения, которое регулярно достигает многих u; мажоранта в заданном виде не ограничивает реальное смещение прослеживаемости UTC(k). Раунд 2 0,30, мажоранта реализованных смещений UTC-UTC(k), обученная на данных BIPM Circular T за 2015–2022 и проверенная на данных за 2023–2026 (предварительно зарегистрировано ca0921a4, совокупное превышение не более 1e-2), результат-находка (остаётся MODELLED): совокупное превышение равно 0,0333 (694 из 20 826 строк по 82 лабораториям; 0,0127 без 430 строк, для которых по правилу нет границы). D9, раунд 3, совокупная иерархическая граница старения (utck_bound), предварительно зарегистрирована fb475550 и оценивается проспективно по выпускам Circular T начиная с 465: ещё не запущена (выпуск 465 опубликован 2026-10-12 примерно с 285 проверочными значениями; предварительно зарегистрированное правило в 1000 значений требует выпусков примерно до 468, а для прогона нужны архивные файлы по лабораториям от 2026-09-30, поскольку BIPM с тех пор переписал 87 из 113) | src/integrity/hetero_budget.rs |
| Коррелированная кросс-ковариация смещений прослеживаемости (распределение, небезопасное при общем режиме) | Кросс-ковариация смещений N×N с внедиагональными элементами rho·b_i·b_j для источников, разделяющих реализатор UTC(k); ДОКАЗАНО correlated_fused_bias >= independent_fused_bias (наивное независимое распределение занижает объединённое смещение -> оптимистично -> небезопасно) | MODELLED | Независимое воспроизведение на numpy кросс-ковариации и неравенства объединённых смещений «коррелированное против независимого» (InternalConsistency). Репрезентативный набор источников; сценарий Modelled. | src/integrity/hetero_budget.rs |
| Обобщённое (GLS) отбеливание общего режима (Эйткен) + тождество Махаланобиса | Написанное вручную разложение Холецкого Omega=LL^T и отбеливание прямой подстановкой z=L^-1 r (Cov(z)=I при Cov(r)=Omega); квадрат Махаланобиса z^T z = r^T Omega^-1 r | VALIDATED | P2: numpy 2.3.5 linalg.cholesky (LAPACK potrf), solve (gesv) и inv на 201 зафиксированных в репозитории входных SPD-матрицах (tests/fixtures/gls_whitening_numpy_oracle) проверяют написанный вручную множитель, отбелённый остаток и оператор отбеливания; квадрат Махаланобиса проверяется по solve(Omega, r), который не использует разложение Холецкого, так что тождество z^T z = r^T Omega^-1 r подтверждается независимым путём. Всё в пределах 1e-12 по относительной погрешности (наихудший случай 7.9e-16), допуск зафиксирован до сравнения. Наибольшее число обусловленности равно 19,3, поэтому плохо обусловленные матрицы не охвачены. Отбеливание GLS/Aitken 1935 имеет уровень Cited. | src/integrity/gls_commonmode.rs |
| Статистика согласованности общего режима (отказ общего опорного источника, невидимый для разделения решений) | Статистика счёта (1^T Omega^-1 r)^2/(1^T Omega^-1 1) ~ chi^2_1 для сдвига общего режима, который разделение решений (контрасты, ортогональные 1) увидеть не может; сдвиг общего режима увеличивает её, тогда как попарные разделения остаются плоскими | MODELLED | Независимое воспроизведение статистики в numpy и проверка свойства: инъекция общего режима увеличивает её (InternalConsistency). Смоделированный сценарий. 0,30 раунд 2 (предварительно зарегистрирован f9aa360d), заблокирован (остаётся MODELLED): numpy 2.3.5 LAPACK gesv воспроизводит значение статистики на 261 зафиксированных случаях (в пределах 3.5e-15 для хорошо обусловленных, 1.2e-9 при числе обусловленности до 6.1e7); нулевой закон chi-square(1) является цитируемой теоремой, а плоские попарные разделения — тождеством, для которого нет выходных данных движка для сравнения, поэтому определение области применения ожидает решения владельца | src/integrity/gls_commonmode.rs |
| Оценка необнаруживаемого общего режима для остатка вне Omega | Потолок необнаруживаемого общего режима: наибольшая величина отказа вдоль направления d, которая ускользает ОДНОВРЕМЕННО от разделения (alpha_ss = T_ss / отбелённая норма контраста d) и от статистики общего режима (alpha_cm = sqrt(T_cm 1^T Omega^-1 1) / |1^T Omega^-1 d|); приводится как min(alpha_ss, alpha_cm). При положительно определённой Omega два слепых направления (d, пропорциональное 1, и 1^T Omega^-1 d = 0) взаимно исключают друг друга, поэтому потолок КОНЕЧЕН для каждого ненулевого d; он бесконечен только для нулевого направления или не положительно определённой Omega. Направление вне смоделированной общей оси слепо только для статистики общего режима и ограничено разделением | VALIDATED | P2: numpy 2.3.5 linalg.solve (LAPACK gesv, LU без разложения Холецкого) пересчитывает alpha_ss (порог, делённый на отбелённую норму контраста d после удаления его общего коэффициента режима по GLS), alpha_cm и их минимум на 256 зафиксированных входных наборах (Omega, d, T_ss, T_cm) (tests/fixtures/gls_outside_omega_bound_numpy_oracle), включая чисто общережимные направления, направления вне смоделированной общей оси, а также случаи нулевого направления и не положительно определённой матрицы, которые должны давать +inf; предварительно зарегистрировано (d070699a; поправка 8a44267b, до любого сравнения, с уточнением матричной формы); допуски зафиксированы до сравнения. Текст возможности исправлен решением владельца (2026-10-02): в нём говорилось, что оценка бесконечна для направления вне общей оси, что противоречило коду и этому сравнению. То, что идеализированный детектор с одним контрастом даёт нижнюю границу необнаруживаемой величины для реального детектора подмножества, остаётся на уровне Modelled | src/integrity/gls_commonmode.rs |
| Идентифицируемость лунного датума: линейная алгебра разложения | Маргинал по дополнению Шура для блока {луноцентр-X, масштаб} информации Фишера 7-параметрического датума Гельмерта: скалярная метрика вырожденности lambda_min(S), CRLB начала координат по X и корреляция начала координат и масштаба | VALIDATED | Независимый эталон на SciPy/NumPy (scripts/gen_datum_identifiability_ref.py -> tests/fixtures/datum_identifiability/scipy_ref.csv): дополнение Шура, его собственные значения и обратная матрица 2x2, вычисленные независимой библиотекой. Охват ограничен ЛИНЕЙНОЙ АЛГЕБРОЙ разложения; ВЕЛИЧИНЫ лунной корреляции и CRLB для реальной геометрии остаются MODELLED. | lunar_identifiability |
| Классификация нуль-пространства лунного датума (аддитивность рангов LLR + снятие дефекта либрацией) | Классификация проблемы датума при внутренних измерениях дальности: одно наблюдение дальности даёт ранг 1 (6-мерное нуль-пространство); пара «начало координат по X — масштаб» почти вырождена, а физическая либрация DE440 снижает дефект до нуля, при этом пара остаётся почти вырожденной | MODELLED | Геометрическая структура, воспроизведённая движком, плюс тождество Шура 2x2 в замкнутой форме; согласуется по СТРУКТУРЕ с Sosnica et al. 2025 (arXiv:2510,15484), чьи опубликованные величины здесь НЕ воспроизводятся. Классификация структурная; величины корреляции и CRLB для реальной геометрии — MODELLED (координаты и ориентация отражателей зафиксированы). 0,30 внешнее сравнение, вывод (остаётся MODELLED): по сравнению с Sosnica et al. 2025 корреляция начала координат и масштаба по информации Фишера для дальности (-0.993 / -0.988) отличается от опубликованной -0.97 не более чем на 0,05, но на собственной пятиотражательной геометрии статьи корреляция 7-параметрического преобразования Гельмерта с равными весами составляет -0.78 (опубликованное значение опирается на погрешности отдельных отражателей, которые в статье не приведены), а CRLB начала координат (от 0,6 до 1,2 мм при шуме дальности 3 мм) на 96–98 % ниже приведённых в статье 3,07 см при допуске 20 %. Величины не воспроизведены | lunar_identifiability, lunar_datum |
| Информация о лунном датуме по нескольким методам (LLR + лунный VLBI + дальность до орбитального аппарата) | Строки якобиана датума для дальности LLR до отражателей на Земле, дифференциальной задержки лунного VLBI по двум станциям и дальности «орбитальный аппарат — маяк» по 7-параметрическому датуму, объединённые в единую согласованно предобусловленную информацию Фишера; показывает, что нерадиальное (орбитальное или разнесённое по глубине) слежение устраняет вырожденность «начало координат по X — масштаб», тогда как поперечный VLBI помогает лишь косвенно | MODELLED | Перекрёстные проверки аналитических и конечно-разностных частных производных каждого метода (внутренние); НАПРАВЛЕНИЕ улучшения — геометрический факт. Расположение маяков, расписания и шум — MODELLED и представительные (см. tests/fixtures/llr_geometry/NOTICE.md). | lunar_datum, lunar_identifiability |
| Поставщик ориентации лунных главных осей DE440 | Вращение MOON_PA_DE440 в J2000 для произвольных эпох в интервале от 2014-01-01 до 2030-12-31 TDB посредством геодезической интерполяции R0·Exp(f·Log(R0ᵀR1)) между узлами зафиксированного в репозитории суточного ряда из 6 209 строк (функции try_ возвращают OrientationSpanError вне этого интервала, безошибочные функции паникуют; значения никогда не обрезаются); встроено на этапе компиляции, поэтому во время выполнения нет обращений к файловой системе, и сборка WASM содержит его | VALIDATED | NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.2.0, запускается как инструмент): pxform от MOON_PA_DE440 к J2000, вычисляющая двоичный PCK JPL moon_pa_de440_200625.bpc напрямую с собственным файлом системы отсчёта NAIF moon_de440_250416.tf, в 2 000 случайных эпохах вне узлов во встроенном окне. Угол поворота между матрицами Kshana и SPICE укладывается в 1.7e-5 рад (30 м при среднем радиусе 1737,4 км, зафиксировано до сравнения); измеренный наихудший результат — 1.7e-6 рад (3 м), RMS — 7.8e-7 рад, а наихудший результат на 6 000 дополнительных эпох, выбранных верификатором, — 1.75e-6 рад. Суточные узлы сами были извлечены из того же файла (scripts/gen_de440_moon_pa.py, SHA-256 фикстуры 3076f81ef95d83f5efa240ed4c7ccb422f109407dde841fcf28d42dc63586eb7), поэтому это сравнение проверяет интерполяцию между ними, что и является утверждением. Обнаружено этим сравнением и исправлено: прежняя поэлементная линейная интерполяция с ортогонализацией Грама — Шмидта сохраняла ось, но не угол вращения 13,2 град/сут и давала ошибку до 2.0e-4 рад (340 м) вблизи четвертных точек; прежняя оценка около 14 м получалась из проверки, которая выбирает только середины интервалов. Ряд охватывает период с 2014-01-01 по 2030-12-31, а вне него возникают ошибки (раунд 2); его узлы за 2024–2025 годы воспроизводятся из того же файла с точностью 4.3e-13. Приведённое выше сравнение SPICE вне узлов охватывает только 2024–2025 годы, то есть проверенное окно; расширенные узлы получены из того же файла и тем же скриптом, но вне узлов не сравнивались. Геометрическая основа для анализа идентифицируемости, а не продукт определения ориентации с точностью лучше метра | lunar_orientation |
| Геометрическая основа лунного датума LLR (отражатели в системе главных осей, наземные станции, аналитические частные производные дальности) | Пять ближних к Земле решёток уголковых отражателей в метрах в связанной системе главных осей PA и наземные станции LLR в геодезических координатах; размещение отражателей из связанной системы в инерциальную через ориентацию PA по DE440; аналитические частные производные дальности «Земля — отражатель» по 4-параметрическому датуму; и информационная матрица Фишера только по LLR, показывающая вырожденность «луноцентр X — масштаб», которая и обосновывает 7-параметрический анализ | MODELLED | Вычисление проверено внутренне: каждая аналитическая частная производная — по конечной разности, а случай нулевого датума — по номинальной дальности. КАТАЛОГ проверен внешне и независимо: координаты главных осей DE440 (Park et al. 2021, tests/fixtures/llr_geometry/de440_retroreflectors_pa.csv) перекрёстно проверены по таблице 6 меморандума о поверхностных координатах DE430 (tests/fixtures/lunar_llr/de430_retroreflectors_pa.csv, машинно извлечённой из PDF с проверенной SHA-256 скриптом tests/fixtures/lunar_llr/generate_de430_retroreflectors_pa.py) и совпадают с точностью 1,12 м, тогда как реализация тех же пяти решёток в системе среднего положения Земли отличается на 672–871 м. СТРУКТУРА ВЫРОЖДЕННОСТИ проверена по опубликованному результату: Sosnica et al. 2025, 'Definition and Realization of the International Lunar Reference Frame', arXiv:2510,15484, где для системы лунных главных осей приводится коэффициент корреляции «луноцентр X — масштаб» r = -0.97 и сообщается, что LLR не достигает фактического центра масс Луны с точностью лучше 12 см из-за этой корреляции. Этот модуль воспроизводит ту же структуру (|corr(t_x, scale)| между 0,9 и 0,9999, дефект датума <= 1) по плану Фишера только для LLR. Подкрепление получено между эфемеридами, а не круговым прогоном: статья объединяет INPOP21a, DE430 и EPM2021, тогда как этот модуль управляется либрацией DE440. НЕ воспроизведена величина: корреляция здесь около -0.988 против их -0.97, а 4-параметрический CRLB составляет доли миллиметра против достигнутого у них порога в 12 см, потому что ориентация и координаты отражателей здесь зафиксированы, а там оцениваются. Только геометрия и структура вырожденности; никаких утверждений о точности решённого датума. 0,30 внешнее сравнение: части этого модуля, относящиеся к измеренной дальности (reflectors(), stations_itrf(), размещение PA по DE440 и барицентрическое время распространения света llr_bcrs_one_way_m), проверены в собственной строке, модель измеренной дальности LLR, по 192 нормальным точкам ILRS (RMS 2,81 м при пороге 10 м). Эта строка остаётся MODELLED, потому что измеренное сравнение не затрагивает остальную часть её утверждения. Каталог геодезических станций stations() округляет APOLLO до 0,001 град; при геоцентрическом времени распространения света он даёт 22,7 м на тех же точках (тест reflector_ranges_against_ilrs_normal_points; 96 м при прежней поэлементной интерполяции ориентации). Аналитические частные производные дальности и информация Фишера только по LLR вычисляются через llr_range_m и reflector_inertial с аналитическим рядом для Луны (ephem::moon_position, около 0,3 град от GCRS) и без учёта времени распространения света | lunar_llr_geometry |
| Модель измеренной дальности LLR (каталог отражателей, станции ITRF2020, размещение главных осей по DE440, барицентрическое время распространения света по IERS 2010) | Односторонняя дальность «наземная станция — отражатель» для нормальной точки лазерной локации Луны: пять ближних к Земле решёток уголковых отражателей в метрах в связанной системе главных осей (PA) DE440 (lunar_llr_geometry::reflectors); станции из stations_itrf(), а именно Grasse 7845 и Matera 7941 из ITRF2020 на эпоху 2015,0 с их скоростями, помещённые в Геоцентрическую небесную систему отсчёта (GCRS) преобразованием IERS 2010 с движением полюса по Bulletin A (lunar_vlbi::station_inertial_position_itrs), и APOLLO 7045 в опубликованном оператором приближённом геоцентрическом положении (без скорости); размещение отражателей из связанной системы в инерциальную через ориентацию PA по DE440 (lunar_orientation::try_de440_moon_pa_body_to_inertial, возвращающая ошибку вне 2014–2030); и барицентрическое время распространения света по IERS Conventions 2010, раздел 11,2 (lunar_llr_geometry::llr_bcrs_one_way_m: преобразование станции и отражателя из системы тела в BCRS по уравнению 11,19 и задержка Шапиро от Солнца, Земли и Луны по уравнению 11,17). ВХОДНЫЕ ДАННЫЕ, не часть утверждения: барицентрические состояния и потенциалы Земли, Луны и Солнца (DE440 через SPICE), UT1-UTC и движение полюса по IERS, а также измеренное время полного пути, переведённое из TT в TDB. СО СТОРОНЫ ТЕСТОВОЙ ОБВЯЗКИ, не часть утверждения: зенитная задержка Mendes-Pavlis с отображением FCULa, в тесте, с углом места из каталога геодезических станций stations(). Не смоделированы: приливы, эксцентриситеты станций, тепловые члены отражателей | VALIDATED | Измерено: 192 лунных нормальных точек ILRS CRD v2 (EUROLAS Data Center, DGFI-TUM, 2024-04 — 2024-06; Grasse 151, APOLLO 32, Matera 9; зафиксированы без изменений вместе с SHA256SUMS). Предсказанная односторонняя дальность сравнивается с произведением c на половину измеренного времени полного пути в TDB. Порог зафиксирован до сравнения: RMS не более 10 м по всем 192 точкам И по 160 точкам только двух станций ITRF2020. Порог взят из третьей поправки к предварительной регистрации 3e0f5cdf, зафиксированной до изменения движка и прогона; значение 10 м не менялось с раунда 1. Измерено: 2,81 м (среднее 2,67 м) по всем точкам; 2,96 м по станциям ITRF2020; APOLLO 1,94 м; срез 2015 года (349 точек, вторичный) 3,82 м. Мутация: обнуление звеньев задержки Шапиро от Солнца даёт 10,19 м, что не проходит. История, раскрытая полностью: 96 м при поэлементной интерполяции ориентации; 22,7 м после геодезической интерполяции с геодезическим каталогом; 10,94 м со станциями ITRF2020 и движением полюса, но с геоцентрическим временем распространения света (общее смещение +10,9 м). Барицентрическая модель была написана после того, как это смещение стало известно. Это опубликованная модель IERS 2010, раздел 11,2, без свободных параметров. Третья поправка заменила самостоятельно введённое условие «только ITRF2020/SLRF2020» после результата BLOCKED. RMS только по ITRF2020 проходит без APOLLO, для которого нет решения ITRF2020 или SLRF2020, а его положение — приближённое, заявленное оператором. Остаётся общее смещение +2,7 м, ниже порога и без подгонки. Порог слабый относительно результата: отсутствующий солнечный член в 7,6 м всё равно даёт 10,19 м. Члены ниже порога по отдельности не разрешаются: при обнулённом движении полюса RMS составляет 6,15 м (станции ITRF2020 5,98 м), а при удалении преобразования по уравнению 11,19 — 2,96 м; оба варианта всё равно прошли бы. Скорости станций и члены Шапиро от Земли и Луны ещё меньше. Сравнение подтверждает собранную одностороннюю дальность на уровне RMS 10 м и солнечный член Шапиро, но не каждую перечисленную составляющую | lunar_llr_geometry (reflectors, stations_itrf, ItrfStation, StationCoordinates, llr_bcrs_one_way_m, body_to_bcrs_tdb, shapiro_leg_m, BcrsEvent); lunar_orientation (try_de440_moon_pa_body_to_inertial); lunar_vlbi (station_inertial_position_itrs) |
| Связанная калибровка лунной системы отсчёта и шкалы времени: совместное нуль-пространство пространственного датума, смещения часов и ухода частоты часов | assemble_coupled_info строит 9-параметрическую связанную информацию Фишера по [t_x, t_y, t_z, s, theta_x, theta_y, theta_z, d_tau, d_alpha]; classify_null_space возвращает инвариантное к базису разложение её нуль-пространства на чисто пространственные, чисто временные и действительно связанные измерения, плюс норму связи проектора «пространственное — временное»; coupled_marginal_eigs даёт маргинал {масштаб, смещение} по дополнению Шура. На зафиксированных сетях движок сообщает датум полного ранга (дефект 0) для корректно поставленного случая и точный дефект по единственному направлению ухода для случая одной эпохи (прошедшее время равно нулю, поэтому уход по построению ненаблюдаем) и вычисляет маргинал {s, d_tau} в обоих случаях. | VALIDATED | ЧТО ПРОВЕРЕНО ВНЕШНЕ, сформулировано узко: kshana вычисляет разложение по собственным значениям собственным написанным вручную решателем Якоби (fim::sym_eig), а маргинал — собственной псевдообратной матрицей; оракул пересчитывает оба результата в numpy/LAPACK (np.linalg.eigvalsh/eigh/pinv) через scripts/gen_coupled_gauge_ref.py. Согласие с точностью rel<1e-3 поэтому является проверкой АРИФМЕТИКИ ЭТОГО КРЕЙТА независимой библиотекой относительно стандартной реализации, и это есть заявленное утверждение уровня Validated, причём целиком. ЧЕГО НЕТ: сборка и классификация нуль-пространства — собственные правила этого модуля, а оракул воспроизводит их по той же спецификации, а не по независимому источнику — это подтверждает реализацию, а не правило. Геометрия маяков и орбитальных аппаратов — Modelled и представительная. Строки наблюдений действительно несут реальную ориентацию Луны PA по DE440 (lunar_datum::orbiter_range_row_datum7 -> lunar_orientation::de440_moon_pa_body_to_inertial), но это ВХОДНЫЕ ДАННЫЕ, которые получают обе стороны, а не свидетельство об ответе, и записано это здесь как происхождение, а не как основание для статуса — то же различие main уже проводит в строке целостности общего режима. Каждое число с плавающей точкой в строке округляется до 6 знаков после запятой перед записью network.json, так что обе стороны читают идентичные числа IEEE-754 двойной точности, и единственное оставшееся различие — решатель. | lunar_gauge |
| Вырожденность «дальность — смещение часов» при односторонних лунных измерениях дальности и закон проектирования по геометрическому разнообразию | Вырожденность «радиальная дальность на узел — смещение часов приёмника» точна: 1 м соответствует 3,336 нс (единица, делённая на c). Маргинал {масштаб, смещение} по дополнению Шура (coupled_marginal_fisher) показывает, что в геометрически разнообразной сети двусторонние измерения дальности поднимают маргинал примерно в той же степени, что и равное число дополнительных односторонних данных, тогда как в идеализированном режиме одного узла двусторонний выигрыш больше на порядки. Из этого следует закон проектирования: именно геометрическое разнообразие, а не двусторонние измерения дальности как таковые, разделяет масштаб лунной системы отсчёта и смещение шкалы времени при односторонних измерениях; двусторонняя или внешняя привязка времени требуется только при низком разнообразии или в режиме одного пользователя. | MODELLED | Маргинальная информация Фишера по дополнению Шура для связанной информационной матрицы, в замкнутой форме линейной алгебры, проверенная по двум предельным режимам, которые она предсказывает. Эквивалентность 1 м и 3,336 нс есть определение метра через c и не является эмпирическим результатом. Сети наблюдений представляют собой представительную геометрию уровня Modelled, поэтому закон проектирования — это утверждение о предъявленной ему геометрии и не содержит никаких утверждений о какой-либо действующей лунной сети. | lunar_gauge |
| Связь релятивистского хода часов с системой отсчёта для лунной шкалы времени | rate_frame_jacobian(_with) даёт чувствительность хода лунной шкалы времени к реализации системы отсчёта по экваториальному эффективному потенциалу, усечённому на степени 2 (GM, экваториальный радиус, J2, вращение; LunarSurfacePotential): d_alpha/d_scale = L_m, около +3.1388e-11; d_alpha/d_velocity = -|v_moon|/c^2, около -1.11e-14 (зависит от времени); d_alpha/d_r_radial = g_eff/c^2, около +1.806e-17 на метр. При радиальном сдвиге датума на 1 м это возмущение хода около 1.8e-17 (арифметическое следствие радиальной составляющей), намного меньше примерно 1.7e-11 отклонения хода лунной шкалы времени относительно TT | VALIDATED | Предварительно зарегистрировано (5590ab21): L_m сверяется с Ashby and Patla 2024 (AJ 167:149), уравнение (10), 3,13881(15)e-11, по GM, a_m, omega_m и J2 из статьи для двух полей степени 350, на которые ссылается статья (Bertone et al. 2021, AIUB-GRL350A/B), в пределах 1e-4; радиальная составляющая сверяется с экваториальной гравитацией тех же полей по pyshtools 4.14.1 (BSD-3) в пределах 1e-4 (измерено 8.3e-5 и 6.7e-5, запас узкий); скоростная составляющая сверяется со скоростью Луны по JPL Horizons DE441 в пределах 4.5e-3. Замкнутая форма степени 2 для опубликованного значения степени 350 (остаточные степени 3–350; Reference, не P1). Раскрыто: результат записи 1 был известен до предварительной регистрации, а поставляемый по умолчанию радиус 1738,14 км — определение поверхности из статьи, принятое после раунда 1. Приливные вклады и полоса сравнения остаются цифрами уровня Modelled для поверхности отсчёта | lunar_gauge, lunar_time |
| Инвариантная к базису классификация связанного нуль-пространства системы отсчёта и шкалы времени | classify_null_space раскладывает нуль-пространство датума на чисто пространственную (размерность d минус ранг U_T), чисто временную (d минус ранг U_S) и действительно связанную (ранг U_S плюс ранг U_T минус d) части, плюс норму связи проектора «пространственное — временное» p_st_norm, норму Фробениуса внедиагонального блока проектора нуль-пространства. Каждая из этих величин является функцией ПРОЕКТОРА, а не выбранного базиса, поэтому они инвариантны относительно любого ортонормированного выбора нулевых векторов, и именно это делает классификацию пригодной для отчёта. | VALIDATED | SciPy/NumPy (BSD-3-Clause; scipy.linalg.null_space и numpy.linalg.svd, LAPACK gesdd) классифицируют те же зафиксированные матрицы по пересечению подпространств, dim null([F; E_T]) и dim null([F; E_S]), и по проектору нуль-пространства через SVD, который отличается от собственных векторов Якоби и формул ранга Грама в Kshana; предварительно зарегистрировано (d429993c): целые числа точно, p_st_norm с точностью 1e-9 (P2, независимая численная библиотека), с заранее фиксированным порогом ранга и утверждаемым спектральным разрывом не менее 1e6. Утверждение строки — это классификация заданной матрицы, поэтому P2 покрывает его полностью. Построенные случаи включают прямые суммы, связанные и смешанные нуль-пространства и случайные смены базиса; размерности реальных сетей из строки связанной калибровки здесь заново не пересчитываются. Внутрикрейтовый тест инвариантности (повёрнутый нулевой базис даёт идентичные результаты) сохранён | lunar_gauge |
| Представительное меню многометодных измерений и правило аддитивного объединения информации Фишера | MeasurementBlock хранит одну кандидатную кампанию измерений как вклад в информацию Фишера 7x7 плюс скалярную относительную стоимость; block_from_rows строит его из необработанных строк якобиана датума, так что каждый блок предобусловливается одинаково через lunar_identifiability::assemble_multi_info; combine суммирует информацию выбранного подмножества, и это верное правило, потому что информация Фишера аддитивна для независимых измерений; representative_lunar_menu поставляет детерминированное меню из четырёх блоков (LLR, поперечный VLBI-маяк на лимбе, орбитальный аппарат на видимой стороне и орбитальный аппарат на обратной стороне). Оптимизатор плана с ограничением по бюджету, использующий это меню, не входит в этот крейт. | MODELLED | Аддитивность информации Фишера для независимых измерений — свойство замкнутой формы, проверенное здесь по независимо написанной поэлементной сумме, а также по инвариантности к порядку и монотонности, которые из неё следуют. ЗАМЕЧАНИЕ О СВИДЕТЕЛЬСТВАХ: у объединителя прежде не было ни одного теста, а единственный тест в модуле суммировал две информационные матрицы прямо в тексте теста вместо вызова объединителя, так что сломанный объединитель оставил бы модуль зелёным; теперь тест проходит через combine и падает при его мутации. Все расположения маяков, геометрия орбитальных аппаратов, точности отдельных методов и относительные стоимости — представительные значения, а не параметры миссий (см. tests/fixtures/llr_geometry/NOTICE.md), поэтому каждая метрика вырожденности и каждая цифра CRLB, полученные через это меню, наследуют статус Modelled, присущий lunar_identifiability::decompose. | lunar_techniques |
| Межпоставщиковая согласованность лунной системы отсчёта и динамики (реальное сравнение эфемерид) | разложение расхождения геоцентрических положений Луны по DE440/INPOP21a/EPM2021 только по вращению (6 параметров: сдвиг и вращение) на сокращаемую общую привязку ICRF и неустранимый избыток ориентации лунной орбиты (полная 7-параметрическая подгонка Гельмерта — отдельная публичная функция, НЕ охваченная этой внешней проверкой: её свидетельство — внутренний модульный тест аналитического восстановления плюс tests/lunar_helmert_fit_cross_check.rs, который согласует её с точной подгонкой Гаусса — Ньютона уровня Validated в lunar_frame_realise и фиксирует противоположное соглашение о знаке вращения между ними) | VALIDATED | Три независимые авторитетные эфемериды — DE440 (JPL), INPOP21a (IMCCE), EPM2021 (IAA RAS) — выбраны через IMCCE calceph и перекрёстно проверены независимой подгонкой наименьших квадратов по SVD в numpy. ПОЧЕМУ ЗДЕСЬ Validated, А В lunar_common_mode — НЕТ, на тех же трёх эфемеридах: здесь сообщаемая величина ЕСТЬ свойство опубликованных данных — их взаимное расхождение, — так что оракулом служат сами эфемериды, а не входные данные. В lunar_common_mode то же расхождение подаётся в MODELLED геометрию орбитальной группировки, и ответ является свойством этой модели, поэтому та строка корректно имеет статус Modelled/ReferenceImpl. | lunar_interop_budget |
| Допуск межпоставщиковой согласованности для пользователя со смешанными поставщиками | consistency_tolerance: обращает бюджет положения пользователя в требование к согласию по Гельмерту между поставщиками для каждого параметра (начало координат/масштаб/вращение) при опорном плече, при необходимости увеличенное за счёт CRLB реализации одного поставщика уровня P1 | MODELLED | Оценка худшего случая по неравенству треугольника для действия точечного якобиана Гельмерта (замкнутая форма) | lunar_interop_budget |
| Бюджет ошибок межпоставщиковой совместимости лунной системы отсчёта и закон проектирования «система отсчёта против эфемерид» | interop_budget: разделение на сокращаемую (общая привязка системы отсчёта) и неустранимую (динамика) части при соглашениях PerProvider / CommonFrameTie / CommonEphemeris, с метрикой закона проектирования — неустранимой долей (~0,69 на реальных DE440/INPOP/EPM: один общий тег системы отсчёта оставляет доминирующий нижний предел) | MODELLED | RMS-агрегирование попарных разложений уровня Validated при каждом соглашении (замкнутая форма) | lunar_interop_budget |
| Конвейер линейной алгебры для наблюдаемости отказов автономной свободной сети (проектор чётности, обнаруживаемость, параметр нецентральности MDB, блочная византийская искра) | На реальной лунной сети DE440 по узлам (каждая строка — дифференциальная односторонняя дальность между узлами, построенная через pernode_range_row с реальным направлением визирования в системе PA Луны по DE440) движок вычисляет взвешенный проектор чётности P⊥ = I − G(GᵀWG)⁺GᵀW (форма с псевдообратной матрицей для неполного ранга, устойчивая к 8-мерной калибровке «датум ⊕ шкала времени»), невязку обнаруживаемости T1 ‖P⊥·b‖ (отказы в области значений аннулируются, обычные отказы обнаруживаются), квадратичную форму нецентральности MDB по Baarda cᵀWP⊥c (правильная взвешенная форма с одним P⊥, а НЕ форма с двойным P⊥ cᵀP⊥WP⊥c) с MDB = √(λ₀/cᵀWP⊥c), а также числа обнаружения и идентификации блочной византийской искры для составных эффективных сигнатур пиров P⊥·B_T (по рангу столбцов, а не просто ненулевые) | VALIDATED | Независимое воспроизведение линейной алгебры в numpy/scipy на реальных строках направления визирования Луны в системе PA по DE440 (P⊥ из SVD отбелённого плана W^{1/2}G; параметр нецентральности MDB из классического квадрата нормы подпространства чётности по Baarda (1968); ранг блока из подсчёта сингулярных значений в numpy SVD) — принципиально иной численный путь, чем циклическое разложение Якоби для GᵀWG в крейте. Охват (по tests/fixtures/faultobs/NOTICE.md): это подтверждает ЛИНЕЙНО-АЛГЕБРАИЧЕСКИЙ КОНВЕЙЕР только на этих строках. Геометрия узлов — Modelled. Это НЕ эксплуатационная гарантия целостности, НЕ сертификация уровня защиты и НЕ какое-либо утверждение о доступности RAIM/ARAIM, и НЕ миссионная гарантия византийской отказоустойчивости: ЧИСЛО допускаемых отказов для этой сети — Modelled, тогда как ГРАНИЦА блочной искры «обнаружение > f / идентификация > 2f» — Cited (Fawzi–Tabuada–Diggavi 2014; Shoukry–Tabuada 2016; блочная искра по Donoho–Elad 2003) и реализована в коде как доказанная конкретизация | lunar_faultobs |
| Граница блочной византийской искры для обнаружения и идентификации в автономной лунной сети по узлам (T3) | byzantine_bound конкретизирует границу кодирования для безопасного оценивания состояния и разреженной наблюдаемости на геометрии сети по узлам: византийский пир вносит произвольную линейную комбинацию измерений, в которых он участвует, а сеть ОБНАРУЖИВАЕТ любую коалицию из ≤ f = block_spark − 1 пиров и однозначно ИДЕНТИФИЦИРУЕТ любую коалицию из ≤ ⌊(block_spark − 1)/2⌋, где block_spark — наименьшая коалиция пиров, составные эффективные сигнатуры P⊥·B_T которой имеют неполный ранг столбцов. Обнаруживаемость пира — это ПОЛНЫЙ РАНГ СТОЛБЦОВ P⊥·B_j (ненулевой, но не полного ранга блок — это ненулевая атака, которая попадает в range(G) и не оставляет невязки), а не просто P⊥·B_j ≠ 0 | MODELLED | Геометрическая конкретизация границы блочной искры и безопасного оценивания состояния (Fawzi–Tabuada–Diggavi 2014; Shoukry–Tabuada 2016; блочная искра по Donoho–Elad 2003; Candès–Tao 2005) — НЕ порог консенсуса Lamport–Shostak–Pease 3f+1 («византийский» называет только МОДЕЛЬ произвольных или сговорившихся отказов). Конкретное число допускаемых отказов — свойство уровня Modelled представительной геометрии сети, проверенное на внутреннюю согласованность вручную построенными аналитическими случаями и формулами подсчёта | lunar_faultobs |
| Нижний предел временной калибровки при автономном holdover для самореферентной лунной орбитальной группировки (T4) | holdover_floor устанавливает, что в ансамбле автономных узлов, связанных только межузловыми измерениями, общий ход часов (δα_j += 1 ∀j) является свободным параметром шкалы времени ансамбля, лежащим в N(GᵀWG): никакое количество дополнительных межузловых измерений дальности не может его наблюдать (rate_in_gauge = true, temporal_gauge_dim = 2 вместе с общим смещением). Это подлинный нижний предел holdover — временной аналог позиционной калибровки жёсткой системы отсчёта. Добавление одной внешней привязки абсолютного хода (прямая связь с эталоном вне сети) выводит общий ход из нуль-пространства (rate_in_gauge = false, temporal_gauge_dim = 1), что доказывает: предел — реальная калибровка, а не артефакт модели генератора | MODELLED | Аргумент о свободном параметре шкалы времени ансамбля (Percival 1978; Lewandowski & Thomas 1991), конкретизированный на представительной реальной лунной сети DE440 по узлам: нулевой тест относительной невязки аналитического генератора общего хода относительно GᵀWG, с контрастом при снятом вырождении, отличающим подлинную калибровку от артефакта модели генератора. Представительная геометрия уровня Modelled, а не сертифицированный бюджет синхронизации | lunar_faultobs |
| Разделение на общую и дифференциальную составляющие по поставщикам, унификация через единичный дефект ранга и наклон разрыва защиты (T5 / §0 / g7) | Три грани единого разложения ℝ^{state_dim} = N(GᵀWG) ⊕ range(GᵀWG), где 8-мерная калибровка «датум ⊕ шкала времени» — это N(G), а state_dim − 8 = 32 наблюдаемых направлений — range(G): (T5) provider_mismatch_split классифицирует общее смещение нескольких поставщиков (∈ range(G)) как НЕОБНАРУЖИВАЕМОЕ — требующее внешней привязки — а дифференциальное смещение (∉ range(G)) как самоконтролируемое / ОБНАРУЖИВАЕМОЕ; (§0) унификация состоит в том, что ТО ЖЕ слепое подпространство range(G) определяет класс необнаруживаемых отказов, так что калибровка датума N(G) и слепое к отказам подпространство range(G) — это одна геометрия, а не две; (g7) slope возвращает наклон разрыва защиты по Brown ‖Π_obs Δx̂‖ / ‖P⊥b‖_W → ∞ для отказа b ∈ range(G) (оценка искажена при нулевой чётности) и конечный наклон для обнаруживаемого отказа | MODELLED | Алгебра проектора чётности и псевдообратной матрицы в замкнутой форме на представительной реальной лунной сети DE440 по узлам: разделение на общую и дифференциальную части, унификация N(G) ⊕ range(G) и наклон разрыва защиты по Brown (1992) следуют из аннулирования образа P⊥·G = 0. Представительная геометрия уровня Modelled, а не сертифицированный уровень защиты | lunar_faultobs |
| MTIE и TDEV для телекоммуникационной синхронизации на ряде ошибок времени при holdover | Максимальная ошибка временного интервала и девиация времени, о которых сообщает тип сценария telecom-timing, на записи holdover телекоммуникационного масштаба: MTIE в скользящем окне с монотонной очередью за O(n) (telecom_timing::mtie_sliding, нужен, чтобы сутки односекундных отсчётов обрабатывались быстро) и TDEV движка (allan::time_deviation), вычисленные на сетке, о которой сообщает этот тип, и считанные обратно из полного прогона, принимающего ряд | VALIDATED | allantools 2024,06 — независимая сторонняя библиотека стабильности частоты — mtie() и tdev() на tests/fixtures/telecom_timing/holdover_te_series.csv, причём ряд разобран из одного и того же 17-значного текста с обеих сторон; эталон записывает SHA-256 ряда и может быть воссоздан офлайн через tests/fixtures/telecom_timing/generate_telecom_timing_reference.py. Подтверждает ОЦЕНИВАТЕЛИ на этой записи, а не синтетический holdover, который её породил | telecom_timing (mtie_sliding, mtie_curve_ns, tdev_curve_ns); allan (mtie, time_deviation) |
| Маски телекоммуникационной синхронизации ITU-T с PASS/FAIL и запасом | Переписанные пределы ITU-T G.8272 (07/2025) PRTC-A/B, G.8272.1 (2024) Amd. 1 (07/2025) ePRTC в режиме привязки и ePRTC-A при holdover (включая огибающую ошибки времени из таблицы 3), G.8273.2 (2023) Amd. 2 (11/2025) T-BC/T-TSC классов A–D и G.8271.1 (2022) Amd. 3 (05/2025) опорной точки C, каждый открытый или закрытый интервал — как его указывает таблица, с пропуском всех записей «для дальнейшего изучения»; для каждой проверки — вердикт и запас в определяющей точке, а также время превышения каждого бюджета. Запускается как тип сценария telecom-timing | MODELLED | Переписанный текст названных Рекомендаций (свободно доступны на itu.int), где каждый предел сопровождается своей таблицей или пунктом и перечислен в docs/TELECOM-TIMING.md вместе со всеми неподтверждёнными или нереализованными пунктами; тождества непрерывности в точках излома, вытекающие из таблиц, проверяются в тестах. Переписанный стандарт с проверками внутренней согласованности, а не испытание на соответствие и не внешняя проверка. 0,30 раунд 2 (предварительно зарегистрирован 970003ee), заблокирован (остаётся MODELLED): десять значений масок и тринадцать значений holdover для ePRTC-A, которые Рекомендации приводят как рабочие числа (G.8272, рис. 1–2, G.8272.1 Amd.1, п. 8.2.1 и рис. V.1–V.3, G.8271.1 Amd.3, рис. 7-2 – 7-4), воспроизводятся с точностью до половины печатной единицы, причём большинство из них — константы таблиц или точки излома; на рис. 7-2 G.8271.1 подписано 200 нс при 1,3 с вопреки собственной таблице 7-1 (197,5 нс). Для пределов классов A–D по G.8273.2 печатных рабочих значений нет, а подписи точек излома ePRTC в режиме привязки по G.8272.1 (на сплошных линиях построения) были исключены предварительно зарегистрированным правилом отбора, поэтому они остаются переписанными значениями | telecom_timing (MASKS, eprtc_a_holdover_limit_ns, check_curve, check_mask) |
| Маски блуждания при генерации для синхронизации частоты ITU-T (G.811, G.812, G.8262, G.8262.1) | Семь масок блуждания при генерации MTIE и TDEV при постоянной температуре для типа telecom-timing: G.811 (09/1997) PRC (автономный), G.812 (06/2004) типы I, II и III, G.8262 (10/2024) EEC варианты 1 и 2 и G.8262.1 (11/2025) eEEC (режим привязки), включая степенные участки, которые записаны в таблицах (8 τ^0.5 и подобные), каждый интервал открыт или закрыт как напечатано, измеренные через фильтр 10 Гц, который указывают пункты (принят применяемым до дискретизации); опорный сценарий scenarios/telecom-synce-eec.toml сопоставляет свободно работающий OCXO с тремя масками EEC. Не реализованы: допуски при переменной температуре, holdover, переходные процессы, джиттер и точность частоты по G.811 | MODELLED | Переписанный текст названных Рекомендаций (загружены с itu.int 2026-10-13), каждая строка заново сверена с текстом, а непрерывность в точках излома, которую подразумевают напечатанные коэффициенты, ограничена в тестах (например, 40 · 10^0,4 = 100,48 нс против плато 100 нс в таблице 4 G.812). Переписанный стандарт с проверками внутренней согласованности, а не испытание на соответствие и не внешняя проверка. G.812 (06/2004) числится заменённой предварительно опубликованной редакцией 08/2026, а у G.811 есть Amd. 1 (04/2016); ни одну из них прочитать не удалось, поэтому ни одна не проверяется. Сценарий со свободно работающим OCXO завышает вклад генератора при интервалах наблюдения, длинных по сравнению с постоянной времени контура; он ничего не говорит о часах какого-либо оборудования | telecom_timing (MASKS, Segment::tau_exponent, MeasurementFilter::LowPass10HzAtSource, MaskCondition::Autonomous) |
| Форматы журналов часов (RINEX clock, TimeLab ASCII, TAPR TICC), считываемые в нормализованный ряд фазы | clock_log::read_input: один уровень разбора, который превращает файл RINEX clock (записи AS/AR одних именованных часов, версии 2 и от 3,00 до 3,04), ASCII-журнал фазы или частоты в стиле TimeLab либо журнал меток времени или интервалов TAPR TICC в единую фазовую сетку, с tau0, заданным явно, взятым из заголовка или равным медианному шагу, с подсчётом каждого пропуска, отсчёта вне сетки и дубликата и с политикой пропусков: отказ, самый длинный непрерывный участок или линейное заполнение; подключён по желанию к ряду telecom-timing ([series.clock_log], с добавлением блока clock_log) и к типу clock ([clock_log], с добавлением блока measured с ADEV, TDEV и MTIE, SHA-256 таблицы и SHA-256 фазы; runs = 1). Без таблицы оба типа побайтово идентичны | MODELLED | Предварительно зарегистрировано в tests/fixtures/clock_log/PREREGISTRATION.md (зафиксировано отдельно, 159334f2, до появления набора тестовых данных); записано в RESULTS.md. Три синтетических журнала с заданным начальным значением, по одному на формат (пропуск TICC в три эпохи, вторые часы RINEX, которые нужно игнорировать), считаны обратно независимым читателем, написанным тем же автором по docs/CLOCK-LOG-FORMATS.md: сетка, число пропусков и заполнений совпадают, а наибольшая разность фазы равна 0 с (порог 1e-13 с). allantools 2024,6 oadev, tdev и mtie на этой фазе согласуются с относительной точностью 2.5e-14 (порог 1e-10) при каждом коэффициенте усреднения, который он вычисляет; MTIE по всей записи, о котором сообщает движок, он не вычисляет, поэтому для этой одной точки на каждый журнал нет значения оракула, и порог в данной формулировке там не выполнен. MODELLED: журналы синтетические, а оракул-читатель делит автора с кодом; реальные файлы часов TimeLab, TICC и RINEX с приборов не сравнивались | clock_log (read_input, MeasuredPhaseReport, MEASURED_UNITS, TELECOM_LOG_UNITS); telecom_timing (SeriesInput::clock_log); api (clock kind [clock_log]) |
| Форматы журналов часов linuxptp (ptp4l, phc2sys, ts2phc) и chrony (tracking, statistics), считываемые в нормализованный ряд фазы | clock_log::read_input с форматами ptp4l, phc2sys, ts2phc, chrony-tracking и chrony-statistics: записанное смещение строки сервопривода linuxptp (нс, собственная метка времени строки в квадратных скобках, показания до первого сообщения сервопривода о s2 отбрасываются и подсчитываются) либо журнала chrony tracking или statistics (с, по позиции столбца, дата и время UTC) превращается в единую фазовую сетку по тем же политикам пропусков, что и у других форматов; селектор источника (clock) указывает один из нескольких интерфейсов, часов или адресов; журналы питают ряд telecom-timing, тип clock и тип holdover-test | MODELLED | Наборы тестовых данных написаны для Kshana по публичным макетам строк демонов, с выдуманными значениями (NOTICE.md в папке набора); журнал реальной установки не читался, и ни один оракул не сравнивает разбор с другим читателем, поэтому макет, различающийся между версиями демонов, всё равно может быть отвергнут или прочитан неверно. Оценивателями, которые получают фазовый ряд, являются те, что проверены по allantools в строках выше | clock_log (parse_linuxptp, parse_chrony, grid_timed_offsets) |
| Испытание holdover, оцениваемое по записи ошибки времени, предоставленной оператором | Тип holdover-test: запись ошибки времени (журнал часов linuxptp, chrony, TICC, TimeLab или RINEX либо пары time_s,time_error_ns) разделяется в два момента, указанных оператором для отключения и возврата GNSS, на этап базового уровня, этап holdover и этап восстановления; базовый уровень измеряется относительно масок ITU-T, написанных для часов в режиме привязки, а holdover — относительно масок для holdover или автономных часов, огибающей holdover ePRTC-A и бюджетов ошибки времени; для holdover сообщается смещение частоты по методу наименьших квадратов, которое удерживала система, а для восстановления — вошла ли |TE| в заданную полосу и когда, и оставалась ли в ней в течение заданного времени, а также пик и наибольший скачок. Каждый предел — тот, который переписывает тип telecom-timing; два момента — заявление оператора и не проверяются | MODELLED | Расчёт вручную на записях, построенных по формулам, у которых наклон, скачок, экстремум и время восстановления известны до прогона (тесты их указывают), а также маски, огибающая и бюджеты из строк telecom-timing выше. Лабораторное измерение реального holdover не оценивалось, внешний оракул не сравнивался, поэтому этот тип не делает утверждений ни о каких часах или системе; прежде чем какую-либо цифру по классу часов можно было бы повысить, нужен партнёр с лабораторией синхронизации | holdover_test (HoldoverTestScenario, recovery, linear_fit); telecom_timing (check_mask, check_envelope, budget_results) |
| Доступность сигналов GNSS в Космическом сервисном объёме и за его пределами в сравнении с буклетом ICG SSV | Развёртки доступности типа gnss-ssv: по орбитальным группировкам (GPS, GLONASS, Galileo, BDS, QZSS, NavIC) и совместно — доля пар (пользователь, эпоха) как минимум с одним и как минимум с четырьмя сигналами и самый длинный перерыв, для пользователя на сфере (глобальная оболочка буклета из 2,562 точек, 14 суток с шагом 1 минута) или на траектории (GEO, HEO, лунный перелёт), по кеплеровым орбитам из приложения C буклета, постоянной минимальной излучаемой мощности внутри опорного внеосевого угла, затенению Землёй, заданному сферой плюс 50 км, и порогу C/N0; антенны пользователя — из таблицы B10 буклета | MODELLED | Буклет ICG Space Service Volume (UN OOSA ST/SPACE/75, 2018), сам являющийся моделированием, сравнён по предварительной регистрации, зафиксированной до прогона (xval/gnss-ssv/PREREGISTRATION.md; результаты в xval/gnss-ssv/RESULTS.md, закреплены tests/ssv_booklet_results.rs, включая промахи). Прогон 1 на предварительно зарегистрированном прочтении: константы минимальной излучаемой мощности и лунный порог согласуются (S0, S6 — достигнуты); пороги верхнего и нижнего SSV, радиочастотного порога, GEO и HEO — NOT MET, почти полностью из-за GLONASS, для которой буклет даёт 20 и 28 градусов в таблицах B2 и B6 и 26 и 34 градусов в таблице 4,2. Диагностический вариант с углами из таблицы 4,2 согласуется в каждой ячейке верхнего SSV, нижнего SSV и шести миссий GEO (он не заменяет прогон 1; ячейки RF, HEO и лунные всё равно расходятся). Измеренные диаграммы панелей GPS L1 параметрической заменой не воспроизводятся (RMS от 6 до 9 дБ при пороге 3 дБ). Согласие показывает, что заявленный метод буклета воспроизведён, а не что сигналы GNSS ведут себя именно так | ssv (constellations, geom, sweep, pattern, check) |
Эффекты ионосферы, плазмосферы и атмосферы на скользящих лучах вдоль лимба для сигналов GNSS и конструкция приёмника слабых сигналов в типе gnss-ssv | Ионосфера Чепмена, плазмосфера типа Gallagher и нейтральная атмосфера (изгиб из-за рефракции, поглощение кислородом, дефокусировка), проинтегрированные вдоль прямого луча между передатчиком и пользователем: наклонное полное электронное содержание, его плазмосферная часть, избыточная задержка, высота касания и потери на скользящих линиях связи; а также конструкция приёмника слабых сигналов (когерентное и некогерентное накопление, предел по биту данных, помощь, поиск по Доплеру), которая задаёт порог C/N0 по моделям захвата и контуров слежения | MODELLED | Замкнутые формы и опубликованные величины в тестах (пик слоя Чепмена и изгиб на поверхностном лимбе, несколько TECU плазмосферы на луче от GPS до GEO); конструкция приёмника повторно использует модели захвата и контуров слежения и их тесты. Измеренные данные лимбового зондирования или приёма слабых сигналов с ней не сравниваются | ssv (limb, weak) |
| Бортовой навигационный фильтр GNSS для космических аппаратов на высоких орбитах и при лунном перелёте | Режим [navigation] типа gnss-ssv: девятисостоятельный расширенный фильтр Калмана (положение, скорость, смещение и дрейф часов приёмника, масштаб светового давления Солнца) по псевдодальностям, чьи доступность, шум и C/N0 берутся из той же геометрии линий связи, что и в развёртках; истина интегрируется с учётом J2, возмущений третьими телами — Солнцем и Луной — и светового давления с тенью, фильтр моделирует J2 и третьи тела и оценивает световое давление; сообщаются ошибки положения и скорости внутри орбит GNSS и выше них, самый длинный пропуск измерений и среднее NEES | MODELLED | Смоделированная истина сопоставляется с собственной оценкой фильтра (средняя нормированная квадратичная ошибка оценивания у согласованного фильтра для положения составляет около 3) и с детерминированностью при фиксированном начальном значении. Лётные или записанные данные GNSS на высоких орбитах не сравниваются; Солнце и Луна — грубые круговые замены низкой точности | ssv::nav (run_nav, Ekf) |
| Относительная навигация построения из нескольких космических аппаратов на сильно эллиптической орбите по GNSS | Режим [formation] типа gnss-ssv: ведущий и ведомые аппараты запускают каждый абсолютный фильтр; положение ведомого относительно ведущего оценивается вычитанием абсолютных оценок и относительным фильтром по однократно разностным псевдодальностям сигналов, которые отслеживают оба аппарата, при этом относительная динамика есть разность двух нелинейных траекторий | MODELLED | Та же смоделированная истина, что и для абсолютного фильтра: ошибка относительного фильтра относительно истинного относительного состояния и проверка того, что он справляется не хуже, чем вычитание двух независимых абсолютных определений. Данные о лётных построениях не сравниваются | ssv::formation (run_formation, RelEkf) |
Бюджет ошибок навигации и синхронизации времени цепочки фаз миссии от запуска до входа в атмосферу (mission-thread) | Вид mission-thread: документ из фаз, каждая из которых относится к одному из восьми зарегистрированных видов; фазы выполняются по порядку, а ковариация 6x6, часы и система координат передаются по заданному правилу (carry; inflate, белый шум ускорения на заданном интервале по прямолинейной модели; reacquire, счисление пути, затем нижний предел источника, никогда не ниже него, никогда не сброс); преобразования систем координат GCRF, MCI и MCMF и преобразования шкал времени через TT, каждое отдельной строкой бюджета, с состоянием Луны из необязательного среза ядра DE440 и аналитическим рядом как заявленным запасным вариантом; запас относительно заданного требования, самое слабое звено, события и график хронологии. Каждое число является заданным входом или моделью такого входа | MODELLED | Расчёты вручную в тестах (рост ковариации по прямой, средний звёздный поворот, вековой ход лунных часов) и, только для состояния Луны, зафиксированные срезы ядра DE440 в сравнении с закреплёнными значениями JPL Horizons (наихудшее 2,6 м и 7e-6 м/с). Данные ни одной миссии с цепочкой не сравниваются; её фазы идут отдельными строками. Документ представляет собой заданную цепочку с входными данными ILLUSTRATIVE, только из открытых источников и без одобрения какого-либо агентства | mission_thread (scenario, handover, conversions, budget, phase) |
Запуск и выведение на опорную орбиту с захватом и пропаданием ГНСС (launch-ascent) | Фаза launch-ascent: ковариация положения и скорости при постоянной скорости с белым шумом ускорения (класс счисления пути), определение места по ГНСС заданной точности, применяемое после времени захвата и вне заданных пропаданий, часы со смещением и дрейфом, дисциплинируемые теми же определениями, и состояние вывода на опорную орбиту | MODELLED | Установившееся состояние Риккати и расчёт предсказания вручную в тестах. Ничто здесь не моделирует ракету-носитель или приёмник; каждое число является заданным входом | mission_thread::earth::launch (LaunchAscent) |
Относительная навигация до границ стыковки на низкой околоземной орбите по участкам датчиков (leo-rendezvous) | Фаза leo-rendezvous: относительное состояние в осях LVLH цели с переходом Клохесси–Уилтшира в замкнутом виде, ковариация фильтра Калмана 6x6 с белым шумом ускорения и обновления положения, дисперсия которых равна дисперсии датчика на текущей дальности, на участках заданного датчика (ILLUSTRATIVE оптическая камера, лидар и радиодальномерные формы); окно стыковки — это время, начиная с которого относительная сигма остаётся внутри границы захвата, до конца фазы. Абсолютная ковариация активного аппарата передаётся дальше без изменений, и строка об этом говорит | MODELLED | Расчёт вручную по одной оси предсказания и обновления в тесте; переход Клохесси–Уилтшира — тот, который cw_dynamics проверяет по независимому численному интегрированию. Датчики ILLUSTRATIVE, и никакое реальное сближение не сравнивается | mission_thread::earth::rendezvous (LeoRendezvous); cw_dynamics; mission_thread::sensors |
Транслунарная инжекция и цислунный перелёт: распространённые среднее состояние и ковариация с обновлениями по слежению (tli-and-cruise) | Фаза tli-and-cruise: среднее состояние по пропагатору Коуэлла движка (точечная масса Земли и J2, Солнце и Луна как третьи тела, Луна из ядра DE440 нити там, где оно покрывает сегмент, а Солнце из аналитического ряда); ковариация по матрице перехода состояния, полученной конечными разностями этого распространения (номинальный прогон и шесть возмущённых прогонов на сегмент), с белым шумом ускорения; размер и ошибка направления импульса TLI; определения gnss-ssv, доступность и PDOP которых берутся из расчёта по зоне обслуживания в космосе вдоль оскулирующей орбиты, замещающей дугу; слежение по дальности и скорости изменения дальности вдоль геоцентрического направления, масштабируемое скважностью наземной сети, с обновлением в форме Джозефа | MODELLED | Теорема Лиувилля (определитель матрицы перехода состояния консервативной части равен единице) и более мелкая разность в тестах; среднее состояние сравнивается с открытой траекторией в строке ниже, по которой оно не достигает порога. Ошибка импульса, обновления и ковариация ни с чем не сравниваются | mission_thread::earth::tli_cruise (TliCruise); propagator; ssv::sweep |
Ковариация на границе входа, вероятность коридора, пиковое замедление и пятно посадки (entry) | Фаза entry: возвратный участок tli-and-cruise без импульса, заканчивающийся на границе входа; угол наклона траектории и его сигма по полной ковариации через градиент конечными разностями; вероятность того, что угол лежит внутри заданного коридора; пиковое замедление при номинальном угле и на обеих границах коридора по плоскому баллистическому входу материальной точки движка (с обнаружением рикошета) наряду с замкнутой формулой Аллена–Эггерса; пятно посадки по заданной чувствительности по дальности и ковариации на границе входа поперёк плоскости орбиты. Подъёмная сила, наведение и нагрев не моделируются | MODELLED | Расчёты вручную в тестах (сигма угла равна сигме перпендикулярной скорости, делённой на скорость; гауссова масса в коридоре). Плоский вход принадлежит самому движку, а форма Аллена–Эггерса является сравнением в замкнутом виде; ни один выполненный вход не сравнивается | mission_thread::earth::entry (Entry); reentry |
Покрытие наземной сети и скважность слежения для фазы нити ([ground_network] из mission-thread) | Наложение наземной сети: станции с минимальным углом места, видимость аппарата при заданной геометрии (состояние входа, пролетаемое в двух телах с J2, положение Луны для перелёта или заданная скважность), передачи между станциями, каждая из которых теряет заданное время, и получающаяся скважность, передаваемая в частоту обновлений наземного слежения фазы; самый длинный интервал без станции в зоне видимости является строкой бюджета | MODELLED | Проверки геометрии зенита и антипода и ожидаемая видимость удалённой цели в тестах. Никакая реальная сеть, антенна или расписание не моделируются | mission_thread::earth::ground_network |
Относительная навигация до стыковки на лунной орбите (lunar-orbit-rendezvous) | Вид и фаза lunar-orbit-rendezvous: совместная пакетная оценка Гаусса–Ньютона по двум аппаратам на дуге (двадцать один параметр: оба состояния и устойчивые смещения положения сигнала в пространстве, общие и независимые), наращиваемая на четверти, половине и всей дуге с делением шага, по одному абсолютному определению для каждого аппарата (граница сопровождения пилотного кода AFS, набор ретрансляторов ILLUSTRATIVE) и дальности межспутниковой линии, при лунной модели сил крейта; средняя нормированная квадратичная ошибка оценки, проверка Клохесси–Уилтшира на круговой орбите и передаваемая ковариация 6x6 | MODELLED | Самосогласованность при предварительной регистрации (xval/mission-thread-lunar/PREREGISTRATION.md, результаты и история оценивателя в RESULTS.md): среднее NEES относительного состояния равно от 5,85 до 5,93 при полосе от 5,2 до 6,8 в четырёх конфигурациях, MET на четвёртой конструкции оценивателя после того, как три конструкции последовательного фильтра не достигли порога; истина и оцениватель используют одну модель сил, так что это ничего не говорит об ошибке модели. Общий с ней пропагатор сравнивается с LRO и CAPSTONE в строке ниже | lunar_rendezvous (LunarRendezvousScenario); lunar_phase; mission_thread::lunar |
Бюджет рассеяния посадки в лунной полярной точке (lunar-descent) | Вид и фаза lunar-descent: пятисостоянная инерциальная модель ошибок по осям (положение, скорость, смещение акселерометра, наклон, смещение гироскопа) при активном спуске с поддержкой определениями AFS (автономными или дифференциальными, со случаем трёх ретрансляторов с поддержкой часов), определением по рельефу (сопоставитель terrain-nav движка на синтетическом рельефе или граница Крамера–Рао на ЦМР LOLA с правилом проблемы апертуры) и лунным временем, с эллипсом касания по методу Монте-Карло | MODELLED | Инерциальный дрейф в замкнутом виде, собственные результаты повторно используемых видов и калибровка эллипса 3 сигма (доля внутри согласуется с ожидаемой) в тестах. Ни одна выполненная или испытанная посадка не сравнивается | lunar_landing (LunarLandingScenario); lunar_phase; terrain_nav |
Доступность позиционирования и синхронизации времени на поверхности по точке и сезону на лунных полюсах (lunar-surface) | Вид и фаза lunar-surface: доступность ретрансляторов и PDOP, видимость Земли и Солнца и дисциплинируемые часы поверхности для каждой точки и сезона, с рельефным горизонтом moonlight-service-volume; прогон для одной точки совпадает с доступностью и PDOP этого вида вплоть до бита | MODELLED | Точное равенство с существующим видом для одной точки и проверки монотонности в тестах. Набор ретрансляторов ILLUSTRATIVE, и никакое измерение на поверхности не сравнивается | lunar_surface_map (LunarSurfaceMapScenario); lunar_phase |
Активный подъём из лунной полярной точки на орбиту вывода (lunar-ascent) | Вид и фаза lunar-ascent: пятисостоянная инерциальная модель ошибок по осям на активном подъёме с удельной силой вдоль траектории, с поддержкой определениями AFS и лунным временем; сообщает ковариацию положения и скорости при выводе, переносимую на орбиту, и разброс при отсечке двигателя (сообщается, но не переносится) | MODELLED | Инерциальный дрейф в замкнутом виде и проверки монотонности в тестах. Ни один выполненный подъём не сравнивается | lunar_ascent (LunarAscentScenario); lunar_phase |
| Распространение по лунной модели сил в сравнении с открытыми восстановленными траекториями лунных орбитальных аппаратов и цислунных аппаратов | Пропагатор, общий для лунных видов (GRAIL GL0660B степени и порядка 150, Земля и Солнце как третьи тела, релятивизм, ориентация Луны по DE440), в сравнении с открытыми траекториями JPL Horizons для LRO (24 ч, отсчёты через 10 минут) и CAPSTONE (один оборот 6,5 суток, отсчёты через час) по порогам, зафиксированным в закоммиченном файле до прогона | MODELLED | Эфемериды космических аппаратов JPL Horizons для LRO и CAPSTONE по порогам, зарегистрированным заранее в xval/mission-thread-lunar/PREREGISTRATION.md (поправки 1–6). LRO: MET, наибольшая 3-D разность 33 м и радиальная СКО 2,4 м против 500 м и 60 м. CAPSTONE: NOT MET, разность конечных положений 136,8 км против 25 км и разность перицентра 28,4 км против 10 км, причины не выделены. Строка остаётся смоделированной, потому что порог CAPSTONE не достигнут, а сравнение проверяет общий пропагатор, а не какой-либо фильтр, сигнал или бюджет | lunar_od (LunarForceModel); precise_od; mission_thread_lunar_oracles (example) |
Распространение среднего состояния по цислунной траектории в сравнении с открытой траекторией Artemis I (tli-and-cruise) | Распространение среднего состояния фазы tli-and-cruise (Коуэлл, точечная масса Земли и J2, Солнце и Луна как третьи тела, Луна из среза DE440) в сравнении с открытой траекторией Artemis I из JPL Horizons на дуге инерционного участка 72 ч от 2022-11-16 18:00 TDB, в эпохи через 12 часов, по порогам, зафиксированным в закоммиченном файле до прогона | MODELLED | JPL Horizons, цель -1023 (траектория после TLI по фактическому полёту по навигации NASA), по порогам, зарегистрированным заранее в xval/mission-thread/PREREGISTRATION.md (поправка 1 меняет только запрошенный интервал). NOT MET, и это заявлено как промах: наибольшая разность положения 45,3 км против 5 км и разность скорости 0,249 м/с на 72 ч против 0,05 м/с. Диагностика, написанная после вердикта, относит промах к пяти импульсным изменениям скорости от 0,09 до 0,22 м/с в эталоне (зарегистрированное заранее предположение, что в окне не было импульса, оказалось неверным); на остальных 67 часах модель воспроизводит следующее часовое состояние с медианой 0,38 м. Проверяет только среднее состояние одной дуги инерционного участка: ни ковариацию, ни фильтр, ни обновления, ни другие фазы | mission_thread::earth::tli_cruise; propagator; mission_thread_oracle (example) |
| Члены ошибки холодно-атомного интерферометра: фазовый шум рамановского лазера, смещение из-за кривизны волнового фронта и разрешение неоднозначности полос | inertial::cai_error_terms (библиотечные функции, пока не доступные из типа сценария): весовая функция рамановской фазы трёхимпульсного интерферометра с прямоугольными импульсами (Cheinet et al. 2008, уравнение 8) с замкнутой формой для белого фазового шума (pi/2)^2 S_phi0/tau_R и численным путём для любого спектра; частотный шум лазера, который задержка при ретроотражении не компенсирует (Le Gouet et al. 2007, уравнения 9–11); смещение волнового фронта из-за чистой расфокусировки sigma_v^2/R для теплового облака и его уменьшение за счёт радиуса детектирования; вероятность неверного индекса полосы erfc(pi/(sqrt(2) s)) при помощи классического акселерометра и для двух времён опроса, и обратная ей величина | MODELLED | Каждая замкнутая форма сверена в тестах с независимым численным путём (квадратура в частотной области точной передаточной функции и фильтра задержки, метод Монте-Карло по атомам для смещения волнового фронта, метод Монте-Карло по импульсам для индекса полосы) и её предельными случаями. Одно опубликованное рабочее значение: Cheinet et al. 2008 (arXiv:physics/0510197, разд. IV) указывают, что при tau_R = 20 мкс для 1 мрад за импульс нужен белый рамановский фазовый шум ниже -111 дБ рад^2/Гц; один белый член даёт 0,99 мрад (статья выводит уровень по своему уравнению 17, фликкер плюс белый). Внутренняя согласованность и одно рабочее значение, а не внешняя проверка; аберрации высших порядков и шум какого-либо конкретного лазера не моделируются | inertial::cai_error_terms |
| Точные эквивалентные степени свободы по Greenhall и Riley для дисперсий Аллана, модифицированной Аллана и Адамара | allan::edf_greenhall (с обёртками edf_greenhall_adev, _mdev и _hdev): полный алгоритм Greenhall и Riley, Proc. 35th PTTI (2003), раздел 3 (уравнения 7–13 и коэффициенты для больших J из таблиц 1–3), для порядков разности от 1 до 3, показателей шума от +2 до -4 везде, где alpha + 2d > 1, для перекрывающихся и неперекрывающихся, модифицированных и немодифицированных оценивателей; NaN там, где он неприменим, включая случай немодифицированного белого фазового шума с ceil(M/S) <= d, замкнутая форма для которого не реализована. assurance::uncertainty::edf теперь использует тот же код и сохраняет свои выходные данные бит в бит | VALIDATED | allantools 2024,6 ci.edf_greenhall — сторонняя реализация опубликованного алгоритма, запущенная scripts/gen_greenhall_edf_ref.py по сетке, предварительно зарегистрированной в xval/greenhall-edf/PREREGISTRATION.md (зафиксирована отдельно, 0db0bb7a, до любого сравнения): во всех 4 876 точках, где она возвращает конечное edf, kshana согласуется с относительной точностью 6.0e-13 (порог 1e-9); в её 46 точках с NotImplementedError kshana возвращает NaN; встречается каждая метка случая; обёртки равны ядру бит в бит; uncertainty::edf побитово идентична на 274 280 значениях (закреплено SHA-256 до рефакторинга). В 32 точках (alpha -4, d 3, немодифицированная, случай 2,2) allantools даёт сбой при поиске в таблице 2, поэтому для них нет значения оракула, и они не учитываются. Stable32 не запускался. Редакция 0,36 (docs/revisions/STUDIO15-greenhall-edf-portable.md): на переносимой математике ядро берёт логарифм из вычисления в формате double-double с однократным округлением (allan::greenhall_ln), и неизменённый порог 1 снова выполняется во всех 4 876 точках, наихудшая относительная погрешность 6.0e-13; защита uncertainty::edf перебазирована на переносимый дамп 0,36 (сдвинулись 3 746 из 274 280 значений, не более чем на 1.6e-12 относительно, от базы на математике хоста) | allan (edf_greenhall, greenhall_edf_core); assurance::uncertainty (edf) |
| Предустановки holdover генераторов по открытым спецификациям | Четыре предустановки — OCXO (Microchip OX-208), рубидиевый (Microchip 8040C), цезиевый (Microchip 5071A, высокопроизводительная трубка) и CSAC (Microchip SA.45s) — каждая несёт максимумы девиации Аллана, старение и границу по температуре из своей спецификации; неотрицательная аппроксимация методом наименьших квадратов частотного шума (белый + фликкер + случайное блуждание), масштабированная так, чтобы огибать каждую точку спецификации, фликкерный пол не ниже значения при наибольшем τ, линейное старение и синусоидальный температурный член, синтезируемые как holdover с начальным значением после потери GNSS | MODELLED | Четыре названные спецификации Microchip (номера документов и URL — в каждой предустановке и в docs/TELECOM-TIMING.md) для входных цифр; замкнутая форма линейного старения и свойство огибающей у аппроксимации — как внутренние проверки. Как цифры превращаются в модель шума — аппроксимация, правило пола, 30-дневный месяц, линейное прочтение температуры — это выбор моделирования; ни одна предустановка не является измерением отдельного экземпляра. 0,30 раунд 2, односторонние пороги относительно измеренных экземпляров (предварительно зарегистрированы a01c491c), вывод (остаётся MODELLED): станция IGS THU2 с Symmetricom 8040C в окончательных часах ESA MGEX имеет девиацию Аллана от 0,35 до 0,87 от рубидиевой предустановки, но ошибку holdover от 1,07 до 1,60 от неё; запись 5071A выходит за пределы цезиевой предустановки до 1000 с (белый фазовый шум измерения, 30x при 1 с) и при holdover (от 1,15 до 8,74); худший производственный SA.45s 2011 года в 1.26x выше предустановки CSAC при 1 с; для OX-208 измеренной записи нет (заблокировано) | telecom_timing (PRESETS, fit_noise, with_flicker_floor, synthesize_holdover); models (ClockModel) |
| Прогноз holdover по измеренной записи часов, проверенный на отложенных данных | Путь по измеренной записи типа slot-timing: перекрывающаяся девиация Аллана фазовой записи, аппроксимированная методом неотрицательных наименьших квадратов со взвешиванием по edf в базисе белого фазового шума и частотной модуляции по IEEE Std 1139 (slot_timing::fit_weighted), затем обращённая для получения времени инерционного хода, при котором ошибка времени достигает порога (slot_timing::slot_budget). Пол красного шума измеряется по записи, а не предполагается | VALIDATED | Реальные свободно работающие атомные часы: 556 990 односекундных фазовых отсчётов цезиевого стандарта 5071A, измеренных относительно водородного мазера (A. Wallin, распространяется с allantools; закреплённый коммит и SHA-256 — в scripts/fetch_cs5071a.sh), та же запись, которую tests/cs5071a_reference.rs использует для оценивателей. Отложенные две трети — внешнее измерение, которого прогноз не видел. С условием наличия данных: рабочий процесс realdata-clock загружает запись и запускает тест с KSHANA_REQUIRE_REALDATA=1. Подтверждает путь «аппроксимация, затем обращение» на атомном стандарте с преобладанием белого частотного шума при инерционном ходе до примерно 50 000 с; не спецификации и не источники по классам, не детерминированные члены. НЕ кварцевый генератор: на измеренной записи OCXO (tests/slot_timing_ocxo_holdout.rs, allantools, 5,5 ч относительно водородного мазера) отложенный прогноз консервативен, от 0,59 до 0,70 измеренного нарушения, и в основном выходит за порог, потому что пол шума этого генератора за время записи уменьшился вдвое; на обучающей выборке он составляет от 0,98 до 1,17. Кварцевый случай остаётся MODELLED. НЕ атомные часы на орбите тоже: на 10 часах спутников GPS Block IIF (tests/slot_timing_igs_holdout.rs, окончательные 30-секундные часы IGS, 14 суток, протокол написан до загрузки) 8 укладываются в порог, а 2 (G25, G30) оптимистичны до примерно 2x, поэтому по протоколу орбитальный случай остаётся MODELLED | slot_timing (ClockNoise::from_phase_record, fit_weighted, slot_budget, breach_after_sync_s) |
| Секунды до выхода свободно работающих часов за защитный интервал временного слота и частота определений, которая удерживает их внутри | Тип slot-timing: предсказанная ошибка E(t) = k·√(σ₀² + σ_x²(t)) + (|y₀| + |c_T·ΔT|)·t + ½|D|t², обращённая для получения нарушения, оставшегося времени, интервала повторной синхронизации за вычетом задержки определения и числа определений в сутки, причём каждый член расписан отдельно с указанием преобладающего; часы — из шести значений по умолчанию ClockClass (TCXO, OCXO и RAFS добавлены, каждый со ссылкой на одну спецификацию), предустановок telecom-timing, встроенной спецификации или измеренной записи; нарушение за пределами наибольшего времени усреднения источника помечается как экстраполированное | MODELLED | Замкнутые формы для каждого члена по отдельности и независимый поиск корня holdover::holdover_seconds; цифры из спецификаций — названные документы (docs/SLOT-TIMING.md). Значение по умолчанию для класса опирается на предполагаемый пол красного шума, а источник-спецификация — это огибающая максимумов, поэтому ни то, ни другое не является измерением отдельного экземпляра | slot_timing (predicted_error_s, breach_after_sync_s, terms_at, slot_budget, ClockNoise::from_datasheet, SlotTimingScenario); clock_state (ClockClass::Tcxo, Ocxo, Rafs, source) |
| Уровень защиты синхронизации времени для приёмника на орбите при спуфинге GNSS | orbital_timing::orbital_timing, доступная как раздел спуфинга типа slot-timing: скорость и период круговой орбиты, наибольшее время, в течение которого наземный спуфер может достичь спутника за один пролёт, нижний предел монитора с поддержкой часов и задержка обнаружения CUSUM, условный уровень защиты (нижний предел плюс инерционный ход за время задержки), уход, который накапливает спуфер с заданной максимальной скоростью нарастания до того, как спутник покинет зону покрытия или будет выполнена независимая проверка, и является ли каждая проверка по наземному контакту или перекрёстной линии связи независимой от одного наземного спуфера | MODELLED | Сведение к существующему уровню защиты синхронизации времени и к замкнутым формам видимости для круговой орбиты и сферической Земли. При условии обнаружения, один наземный спуфер с заданной скоростью нарастания, пролёт над головой над невращающейся Землёй; не проверено на приёмнике на орбите, подвергшемся спуфингу | orbital_timing (orbital_timing, visibility_half_angle_rad, max_pass_s, crosslink_neighbour_is_outside_footprint) |
| Спектральные плотности мощности сигналов L-диапазона в замкнутой форме и коэффициенты спектрального разделения | Спектральные плотности мощности единичной площади для GPS L1 C/A и L2C (BPSK(1)), GPS L5 и Galileo E5a (BPSK(10)), sine-BOC(1 1) и Galileo E1 MBOC(6,1,1/11) (navsignal::Modulation::psd, с добавленным вариантом MBOC), их численно найденные нули и максимумы (spectrum::psd_nulls_hz, psd_peak_hz, main_lobe_null_to_null_hz) и коэффициент спектрального разделения сигнала относительно любого спектра при любом смещении (navsignal::spectral_separation_coeff_offset) или относительно тона, плоского шума, чирпа или согласованного шума (spectrum::Jammer::ssc), с коэффициентом защиты от помех Q = 1/(R_c kappa) | VALIDATED | Опубликованные значения из учебников: главный лепесток BPSK(n) шириной 2n x 1,023 МГц между нулями и коэффициенты защиты от помех Q = 1 для узкополосной (CW) помехи и Q = 1,5 для помехи с расширенным спектром, согласованной с C/A (Kaplan & Hegarty, Understanding GPS/GNSS, 3-е изд., раздел 9,4); главные лепестки BOC(m,n) с центрами на плюс-минус m x 1,023 МГц (Betz, Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4), 2001); коэффициенты спектрального разделения -61.8, -64.8 и -67.8 дБ/Гц для C/A с C/A, BOC(1 1) с BOC(1 1) и C/A с BOC(1 1) (Betz 2001; Hein et al., MBOC: The New Optimized Spreading Modulation Recommended for Galileo L1 OS and GPS L1C, Inside GNSS, May/June 2006), воспроизведённые здесь по их замкнутым формам автокорреляции через равенство Парсеваля. Максимум BOC(1 1) находится не на 1,023 МГц: лепесток тянется от нуля несущей до 2,046 МГц и достигает пика на 0,759 МГц, и тест фиксирует оба значения. Смесь MBOC — определение из ICD, проверенное только на единичную площадь и линейность | navsignal (Modulation::psd, spectral_separation_coeff_offset, q_from_ssc); spectrum (psd_nulls_hz, psd_peak_hz, main_lobe_null_to_null_hz, Jammer::ssc) |
| Водопад спектра L-диапазона с J/S по диапазонам и эффективным C/N0 при заданной по сценарию временной шкале помех | Тип spectrum: сетка «частота по времени» спектральной плотности мощности L-диапазона (тепловой пол k T_sys при T_sys = T_ant + 290 K (F - 1), сигналы при минимальных принимаемых мощностях по спецификации интерфейса, а также помехи: непрерывная волна, узкополосная, чирп и согласованный шум, с моментами включения и выключения), каждая ячейка усреднена по своему интервалу частоты и строке (чирпы — точно по полным и частичным разверткам, помехи — по скважности), эффективный C/N0 по диапазонам = [1/(C/N0) + sum (J/S) kappa]^-1 для каждой строки, J/S по диапазонам, J/S в полосе и водопад в формате SVG со столбцами C/N0. Отчёт содержит перекрёстную проверку относительно цепочки типа jamming на тех же входных данных линии связи | MODELLED | Сведение к уравнению защиты от помех и бюджету линии связи существующего типа jamming (тот же код, вызываемый на тех же входных данных) и к замкнутой форме пола шума k T0 F. Спектры сигналов под ними — это проверенная строка выше; мощности помех, временная шкала и полосы входных каскадов — входные данные сценария, спектры непрерывны (без линий кода расширения), и никакая автоматическая регулировка усиления, бланкирование или диаграмма антенны на помеху не действуют. В репозитории нет измеренного спектра при помехах для сверки составной модели. Таблица Q типа jamming (CW и узкополосная 1, широкополосная и с качанием частоты 2 с 0,36: значения из учебников, закреплённые по замкнутым формам navsignal) согласуется со значением этой модели для CW и отличается от того, что она выводит для шума, согласованного с C/A (1,5), и для плоского шума от нуля до нуля без нормировки в полосе (2,2); отчёт печатает оба | spectrum (SpectrumScenario, SpectrumModel::bin_psd_w_per_hz, SpectrumModel::band_state, effective_cn0_multi_dbhz, system_temp_k, Jammer::power_fraction_in, Jammer::duty) |
| Ввод и вывод записей SigMF и оценки спектра по Уэлчу для комплексных IQ | sigmf: чтение и запись записей Signal Metadata Format (JSON .sigmf-meta с основными полями global, captures и annotations; необработанный .sigmf-data как cf32_le, ci16_le или ci8, целочисленные декодеры общие с realdata::iqif::load_iq), всё на строках и буферах байтов. spectrum::welch_psd: периодограммы с окном Ханна, с перекрытием, усреднённые, с масштабированием по плотности, на собственном в крейте преобразовании по основанию 2 (spectrum::fft_in_place). Эти две функции составляют проверенное утверждение. spectrum::synthesise_iq выдаёт модель в виде IQ, а раздел [iq] типа spectrum прогоняет цепочку «модель — IQ — SigMF — Welch» и сравнивает с моделью; его раздел [recording] оценивает реальную запись (в нативных сборках); синтез и эти сравнения с моделью находятся вне проверенного утверждения | VALIDATED | scipy 1.18.1 scipy.signal.welch (BSD-3-Clause) с тем же периодическим окном Ханна, перекрытием, масштабированием по плотности, без удаления тренда и с двусторонним средним усреднением: каждый интервал частоты в пределах 1e-12 относительной погрешности (наблюдалось 6.0e-14) на 27 случаях, причём числа сегментов взяты из собственной спектрограммы scipy. sigmf-python 1.13.0 (LGPL-3.0, запускается как инструмент) записывает пять сторонних записей (cf32_le, ci16_le, ci8, две записи с аннотациями, ненулевой первый sample_start), которые крейт декодирует бит в бит с теми же основными полями, и читает записи крейта обратно бит в бит; схема метаданных SigMF v1.2.6 сообщает ноль ошибок для метаданных крейта. Допуски зафиксированы до первого сравнения. Вне утверждения: spectrum::synthesise_iq и сравнения [iq] и [recording] с моделью (у синтеза нет единственного верного ответа; периодический чирп показывает линии, пульсации Френеля и краевые хвосты, которых нет в гладкой модели, суммарная мощность в пределах 2 %), соглашение о масштабировании целых чисел в числа с плавающей точкой (крейт делит на 32767 и 127, автомасштабирование sigmf-python — на 2^15 и 2^7, что спецификация оставляет открытым; сравнение использует необработанные коды), многоканальные записи и типы данных, которые читатель отвергает | sigmf (read, write, encode, decode, parse_meta, meta_to_json); spectrum (welch_psd, fft_in_place, synthesise_iq) |
| Положения планет по всей Солнечной системе по кеплеровым элементам JPL Standish | Гелиоцентрические положения Меркурия, Венеры, барицентра Земля — Луна, Земли, Марса, Юпитера и Сатурна по таблице 1 Standish (от 1800 н. э. до 2050 н. э.) и всех восьми планет по таблицам 2a/2b (от 3000 до н. э. до 3000 н. э., с членами средней аномалии b, c, s, f), шаг за шагом по алгоритму страницы JPL и повёрнутые в ICRF (Международная небесная система отсчёта) по наклону эклиптики со страницы; Земля отделяется от барицентра лунным рядом Montenbruck & Gill и отношением масс. Составлено как ephem_provider::AnalyticSolarSystem, так что любое тело доступно относительно любого другого, и запускается как тип solar-system | VALIDATED | Геометрические гелиоцентрические векторы JPL Horizons DE441 (эклиптические и в ICRF), загруженные после коммитов предварительной регистрации 80451866, 8d38a28b и 558cc807. Порог: для каждой планеты и компоненты RMS не более 1.0x приближённых ошибок из Explanatory Supplement, 3-е изд., таблица 8.10.1 (строка EMB для Земли); разделение Земля — EMB проверяется напрямую по DE441 399 минус 3, не более 0,3 град и 8,1 км в каждую эпоху 1950–2050 (порог длины 8,1 км взят из точности лунного ряда, указанной в собственной документации Kshana по эфемеридам со ссылкой на Montenbruck и Gill, и по книге не проверялся; измеренные 6,09 км лежат близко к нему). Статистика RMS выбрана при том, что предыдущее сравнение на 27 эпохах достигало 1.87x номинала в максимуме; ошибки в отдельной эпохе достигают 3.83x (3.87x в случае ICRF). Supplement не определяет свои цифры как RMS. Случай B поворачивает обе стороны с наклоном эклиптики IAU 1976, введённым в тесте, так что поворот не проверяется сам относительно себя. Выбор таблицы по умолчанию в AnalyticSolarSystem не проверяется (тесты принудительно используют таблицу 1). Уран и Нептун по таблице 1 — отдельная строка MODELLED | ephem (standish_state, standish_elements, standish_nominal_error, ecliptic_to_icrf); ephem_provider (AnalyticSolarSystem); solar_system (SolarSystemScenario) |
| Положения Солнца, Луны, Меркурия и Венеры по ядру DE440 на эпохи UTC (KernelEphemeris) | Геометрические положения Солнца, Меркурия, Венеры, Земли и Луны друг относительно друга (оси J2000/ICRF, метры) по ядру JPL DE440 через ephem_provider::KernelEphemeris на эпохи UTC: названия тел сопоставлены кодам NAIF, UTC проведено через таблицу високосных секунд, а TT в TDB — двучленным рядом TDB-TT, ядро прочитано собственным читателем движка. Тело, которое ядро хранит только как барицентр системы (от Марса до Нептуна, Плутон в de440s), отвергается и никогда не подменяется. Строка Standish без ядра остаётся путём для браузера и запасным путём | VALIDATED | Skyfield 1,54 (MIT) с собственной таблицей високосных секунд, собственным TDB-TT и собственным читателем того же файла NAIF de440s.bsp (jplephem), запущенный как отдельная программа на эпохи UTC. Предварительно зарегистрировано (0bfafe6d) до появления набора тестовых данных, сетка получена из хеша этого коммита, с порогом 5e-5 с, умноженным на относительную скорость (заявленная точность двучленного TDB-TT движка), плюс 1e-13 барицентрического расстояния плюс 1e-5 м, для каждой компоненты. Результат: все 600 внутри, наихудшее 0,66 порога (2,96 м на быстрой паре, собственная ошибка ряда TDB-TT). Мутация: TT, использованное как TDB, не проходит при превышении порога в 33 раза. Обе стороны читают DE440: это подтверждает поставщика и его цепочку времени, а не DE440. Вне утверждения: планеты за Венерой как тела (de440s содержит только их барицентры), спутники планет и точность ниже двучленного ряда TDB-TT (несколько метров для самых быстрых пар) | ephem_provider (KernelEphemeris::relative_position_utc, utc_to_tdb_jd2); naif_kernel; timescales |
| Время распространения света между телами Солнечной системы | Ньютоновское одностороннее время распространения света от любого тела до любого другого, принятое в эпоху, найденное радиометрическим решателем неподвижной точки для времени распространения света (radiometric::light_time_solution, передатчик в запаздывающем положении) через solar_system::link_on на любом EphemerisProvider; тип solar-system запускает его на аналитической Солнечной системе в гелиоцентрической системе отсчёта (solar_system::link). Двусторонняя дальность из radiometric::two_way_range и задержка Шапиро от Солнца из radiometric::shapiro_delay сообщаются отдельно и внешне не сравниваются. Выдаётся для каждого тела относительно наблюдателя и для любой дополнительной линии связи типом solar-system, а для нисходящей линии от тела к Земле — типом body-pnt | VALIDATED | Одностороннее ньютоновское время распространения света LT по нисходящему участку из JPL Horizons DE441 (VEC_CORR=LT, наблюдатель в центре Земли), предварительно зарегистрировано (480037d3, поправка 54d5c86f, менявшая только шаг узлов интерполяции после того, как первая загрузка не прошла предусловие по точности интерполяции в 10 м, до сравнения какого-либо времени распространения света) с порогом 1e-6 с на каждое время распространения света, причём решателю поданы барицентрические положения DE441, так что видна итерация запаздывающего передатчика (решатель с первой итерацией ошибается до 0,1 с). На аналитических положениях Standish время распространения света ровно настолько хорошо, насколько хороши эти положения (см. строку положений планет); поставляемая линия связи считает Солнце инерциальным центром, что остаётся в пределах этой ошибки положения, но отдельно не проверено. two_way_range и shapiro_delay внешне не сравниваются | radiometric (light_time_solution, two_way_range, shapiro_delay); solar_system (link, link_on); ephem_provider (AnalyticSolarSystem) |
| Уран и Нептун по таблице 1 Standish, Плутон и скорости планет | Положения Урана и Нептуна по таблице 1 Standish (по умолчанию внутри 1800 н. э. — 2050 н. э.), Плутона по строке таблицы 1 из 1992 года, которую текущая страница JPL больше не приводит, и гелиоцентрическая скорость каждой планеты: производная двух тел со средним движением, которое подразумевают элементы, плюс поворот эллипса скоростями перигелия, наклонения и узла | MODELLED | Измерено относительно JPL Horizons DE441 (те же зафиксированные наборы данных), но не подтверждено: заявленные в таблице 1 цифры для Урана и Нептуна превышены до 2,0 и 5,2 раза относительно гелиоцентрических положений DE441 (Нептун укладывается в них относительно барицентрических положений, что говорит о том, что подгонка была негелиоцентрической), страница не указывает ошибку для Плутона, а опубликованной границы для скоростей нет. Таблицы 2a/2b укладываются в собственные цифры для Урана и Нептуна и охвачены проверенной строкой | ephem (standish_state, StandishElements::state_at_mean_anomaly, Planet::Pluto); solar_system (position_label) |
| Положения Луны и семи крупных спутников (Фобос, Деймос, галилеевы спутники, Титан) | Геоцентрическая Луна по ряду Montenbruck & Gill (чей член -1.3972 град за столетие уже относит её к равноденствию J2000) и планетоцентрические положения и скорости Фобоса, Деймоса, Ио, Европы, Ганимеда и Каллисто по средним элементам JPL Solar System Dynamics в плоскости Лапласа каждого спутника со скоростью средней долготы, взятой из скорости синхронного вращения IAU (таблица печатает период со слишком малым числом цифр, чтобы удержать фазу), и Титана по модели вращения IAU (спутник на минус связанной с телом оси x на средней дистанции), потому что напечатанная строка плоскости Лапласа для Титана не воспроизводит Horizons даже в собственную эпоху | MODELLED | Измерено относительно эфемерид спутников JPL Horizons (DE441, MAR099, JUP365, SAT441), зафиксированных в tests/fixtures/solar_system/horizons_satellites_icrf.csv вместе с запросом и датой получения; опубликованной точности для средних элементов или для размещения по модели вращения нет, поэтому закреплённые пороги выявляют регрессии и ничего не подтверждают. Средние элементы не учитывают резонансные и солнечные возмущения, а вековое ускорение Фобоса не моделируется | ephem (satellite_state, Satellite, SatelliteMethod, moon_icrf, moon_icrf_velocity); ephem_provider (AnalyticSolarSystem) |
| Физические константы каждого тела Солнечной системы и отчёт по всей системе | Тело получает Меркурий, Венеру, Юпитер, Сатурн, Уран, Нептун, Плутон, Фобос, Деймос, Ио, Европу, Ганимед, Каллисто и Титан (гравитационный параметр, опорный радиус, J2, где он опубликован, с радиусом, к которому он отнесён, полюс и нулевой меридиан IAU), поиск по имени и запись BodyFacts (код NAIF, класс, родитель, экваториальный и средний радиус); тип solar-system сообщает их для всех восемнадцати тел вместе с положениями, временем распространения света и треком орбиты за один оборот, причём каждое тело помечено как VALIDATED или MODELLED | MODELLED | Переписанные опубликованные константы, каждая со ссылкой там, где она определена: гравитационные параметры из записей тел JPL Horizons и таблицы физических параметров спутников JPL, радиусы из таблиц физических параметров JPL (IAU WGCCRE 2015), полюса и нулевые меридианы от Рабочей группы IAU по картографическим координатам и элементам вращения (средние значения, без членов скорости T и периодических членов), J2 из Smith et al. 2012, Iess et al. 2018 и 2019, а также Jacobson 2009 и 2014. Проверено на внутреннюю согласованность (период вращения Юпитера относительно скорости системы III, каждое J2 относительно своего опорного радиуса), а не по внешнему оракулу. 0,30 раунд 2: значения GM приняты из gm_de440, а элементы Фобоса и Деймоса — из pck00011, так что 0 из 84 констант четырнадцати добавленных тел теперь отличаются от NAIF (было 12), что является проверкой переписи и не засчитывается. 0,36: связанная с телом ориентация IAU и GM четырнадцати добавленных тел выделены в собственную строку VALIDATED («Ориентация тел IAU и гравитационный параметр четырнадцати добавленных тел Солнечной системы»); в этой строке остаётся остальное. J2 и средний радиус цитируются, а не подтверждаются; положения в отчёте опираются на собственные строки; а prime_meridian_deg в отчёте для Земли, Луны и Марса остаётся на условных константах (до 6.6e-3, 2.8e-2 и 9.6e-4 рад от IAU_<BODY>). Правки 0,30: GM Фобоса 7.087e5 -> 7.087546066894452e5, Деймоса 9.62e4 -> 9.615569648120313e4, Урана 5.7939506103e15 -> 5.793951256527211e15, Нептуна 6.83509997e15 -> 6.835103145462294e15, Плутона 8.69326e11 -> 8.696138177608748e11 м³/с²; экваториальный радиус Фобоса 13,1 -> 13,0 км; prime_meridian_deg теперь включает квадратичные и периодические члены | body (Body::by_name, Body::facts, Body::prime_meridian, SOLAR_SYSTEM, BodyFacts); solar_system (SolarSystemScenario, position_label) |
| Ориентация тел IAU и гравитационный параметр четырнадцати добавленных тел Солнечной системы | Body::iau_rotation_et — вращение от J2000 к связанной с телом системе IAU для Меркурия, Венеры, Юпитера, Сатурна, Урана, Нептуна, Плутона, Фобоса, Деймоса, Ио, Европы, Ганимеда, Каллисто и Титана с каждой вековой скоростью, квадратичным и периодическим членом, которые тело несёт в pck00011, а также поле гравитационного параметра mu тех же четырнадцати тел. Солнце, Земля, Луна и Марс несут условные константы, принадлежащие другим строкам, и не охвачены | VALIDATED | NAIF SPICE Toolkit (CSPICE N0067 через spiceypy) pxform('J2000', 'IAU_<BODY>') на pck00011.tpc — независимая реализация той же модели вращения IAU, и NAIF gm_de440.tpc для GM, причём наборы данных сгенерированы отдельной программой, не вызывающей код Kshana (tests/fixtures/body_orientation_spice_oracle/, NOTICE.md). Предварительно зарегистрировано 154bc54 (с исходным порогом 1e-9 рад из c2434204) до появления набора данных на новых эпохах; новый набор был воссоздан независимо и побайтово идентичен. GM — это переписанное значение DE440, сверенное с опубликованным файлом, а не независимое определение GM. Результаты: docs/design/evidence/mr08-body-orientation/RESULTS.md | body (Body::iau_rotation_et, Body::iau_angles_et, Body) |
| Позиционирование вокруг любого тела Солнечной системы с локальной орбитальной группировкой и линией связи в дальнем космосе с Землёй | Тип body-pnt: орбитальный аппарат или посадочный модуль на поверхности вокруг выбранного по имени тела навигирует по односторонним псевдодальностям от навигационной группировки Walker вокруг тела (двутельные орбиты с вековым дрейфом по J2 тела, неизвестные часы пользователя) и по необязательной двусторонней дальности от Земли, не зависящей от часов, причём направление и расстояние до Земли берутся из аналитических эфемерид в каждую эпоху; линии визирования, заслонённые сферой тела, и маска возвышения на поверхности; для каждой эпохи — GDOP и PDOP только по группировке (orbit::dop), формальная неопределённость положения с строкой Земли и без неё и определения Гаусса — Ньютона с заданным начальным значением (batch_ls::gauss_newton) в обоих вариантах, с временем распространения света и временем полного пути от тела до Земли | MODELLED | Замкнутые формы и самосогласованность: третий закон Кеплера для периода ретранслятора, радиус орбиты и радиус поверхности, сохраняемые на протяжении прогона, добавление измерения, никогда не увеличивающее формальную неопределённость, и согласие ошибок с заданным начальным значением с ковариацией. Орбиты ретрансляторов игнорируют третьи тела (притяжение Юпитера для ретрансляторов вокруг Европы не моделируется), шум гауссов на заданных уровнях, а модель измерений мгновенна, поэтому это не проверено по навигационным данным какой-либо миссии | body_pnt (BodyPntScenario, formal_sigma, fix_error); orbit (dop); batch_ls (gauss_newton); mars_pnt (chord_clears_sphere); mars_frame (bodyfixed_to_inertial) |
| Геометрия группировки Walker и опубликованные номинальные слоты GPS, Galileo и GLONASS | Генераторы типа constellation-design: схемы Walker delta и star в соглашении T/P/F (шаг узлов 360/P или 180/P, шаг в плоскости 360·P/T, фазовый сдвиг между плоскостями 360·F/T), а также базовая и расширяемая 24-слотовая предустановки GPS, предустановки Galileo и GLONASS, построенные по опубликованным номинальным элементам и помещённые в связанную с Землёй систему отсчёта по гринвичскому часовому углу, который указывают их документы | VALIDATED | Опубликованные документы агентств: Galileo Open Service Service Definition Document, выпуск 1,1 (European GNSS Service Centre), таблицы 1 и 23, опорная группировка на 2016-11-21 00:00 UTC; GLONASS Interface Control Document, редакция 5,1 (2008), раздел 5,2, формула слотов для долготы узла и аргумента широты; GPS Standard Positioning Service Performance Standard, 5-е издание (April 2020), таблицы 3.2-1, 3.2-2 и 3.2-3, включая столбец пересечения экватора трассой подспутниковой точки, который есть независимое описание связанной с Землёй геометрии, которую предустановка должна воспроизводить. Подтверждает генераторы и переписанные значения; фаза средней орбиты BeiDou и узлы наклонных геосинхронных орбит не опубликованы и не охвачены | constellation (WalkerSpec::elements, gps_slots, galileo_walker, glonass_slots, GPS_BASELINE_SLOTS, GPS_EXPANDABLE_SLOTS) |
| Глобальный геометрический фактор DOP базовой группировки GPS | Движок покрытия типа constellation-design на базовой 24-слотовой предустановке GPS при условиях приложения B к GPS Standard Positioning Service Performance Standard (SPS PS) (одни звёздные сутки, 287 пятиминутных шагов, глобальная сетка 4 x 4 град со взвешиванием по косинусу широты, все в зоне видимости, маска 5 град, одни часы приёмника): глобальное распределение HDOP, медиана PDOP и доступность PDOP не более 6, глобально и в наихудшей точке | VALIDATED | GPS SPS PS, 5-е издание (April 2020), приложение B, разделы B.3.2.2 и B.3.2.3, опубликованное глобальное среднее распределение HDOP полностью заполненной базовой 24-слотовой группировки (медиана 0,94, 90 % 1,16, 95 % 1,25, 98 % 1,37, среднее 0,96), таблица 3.8-1 (доступность PDOP) и таблица B.3-1 (ансамблевый PDOP деградировавшей группировки, используемый только как верхняя граница), плюс выведенная вручную замкнутая форма для одной эпохи. Распределения VDOP и PDOP полной группировки опубликованы только в виде рисунка, поэтому PDOP закреплён односторонне; наихудшая точка пространства-времени (HDOP 2,40 и VDOP 5,22 здесь, 2,49 и 5,43 опубликовано) зависит от сетки и сообщается, а не закрепляется | constellation (coverage, dop_at, NormalAccum) |
| Карты покрытия и геометрического фактора DOP для произвольных многоконстелляционных проектов в масштабе вокруг любого центрального тела | Тип constellation-design за пределами двух закреплённых случаев: явные и многооболочечные проекты, несколько группировок в одном прогоне с одними часами приёмника на группировку, Земля, Луна и Марс по константам тел, предустановка BeiDou (смоделированы фаза средней орбиты и пересечение наклонной геосинхронной орбиты на 118 град в. д.), спутники в зоне видимости, GDOP, PDOP, HDOP, VDOP и доступность в каждой ячейке, прореженные трассы и предварительный фильтр видимости по широте подспутниковой точки, который прогоняет проект из 5 000 спутников на сетке 10 град за долю секунды | MODELLED | Внутренняя согласованность: полный перебор по углу места, вычисленные вручную сведения и сведения orbit::dop, а также замкнутая геометрия Walker и геосинхронных орбит. Двутельные орбиты с необязательным вековым J2, сферическое тело с местной вертикалью вдоль радиуса, только геометрическая видимость (без мощности сигнала, исправности спутников, рельефа или возмущений от третьих тел), и относительная фаза между системами, взятая из разных опорных эпох, так что это не снимок какой-либо даты. 0,30 обзор, вывод (остаётся MODELLED): предустановки укладываются в опубликованные односторонние нижние границы доступности DOP (BeiDou OS Performance Standard 3,0, Galileo OS SDD) на 100 %, но при PDOP движка, удвоенном в черновой копии, они всё равно укладываются (наихудшая точка 99,36 %), поэтому эти границы не способны обнаружить даже ошибку в 100 % в величине, которую вычисляет эта строка; ужесточение их после прогона было бы допуском задним числом. Для повышения нужно двустороннее сравнение значений DOP на идентичной геометрии с заранее заданным допуском. 0,30 раунд 2 (tests/coverage_dop_full_oracle.rs, предварительно зарегистрирован add671d6), вывод (остаётся MODELLED): положения, углы места, азимуты и трассы по Orekit 12,2 с GDOP/PDOP/HDOP/VDOP по gnss_lib_py 1.0.4 (общие часы) и обратной матрицей numpy (одни часы на группировку) согласуются по каждому порогу на Galileo, GPS, BeiDou, Galileo+GPS (по одним часам на каждую) и проекте Земли из 1584 спутников (DOP в пределах 2e-14 относительной погрешности, идентичное определение, доступность и числа видимых). На проектах для Луны и Марса элементы, положения, видимость и трассы согласуются, но DOP превышает заранее заданный относительный порог 1e-9 в ячейках, где наибольший PDOP равен 1434 или больше (до 8e-6), а 4 ячейки отличаются на одну эпоху определения на численно вырожденной геометрии (опорный элемент движка 1e-10 против ранга numpy), поэтому строка не подтверждена. Правки 0,30: опорные часы для TDOP/GDOP теперь принадлежат группировке с наименьшим номером в зоне видимости (глобальный максимум GDOP constellation-multi-gnss-coverage 2,2236 -> 2,1205, среднее 1,122 -> 1,131), а числа видимых по группировкам суммируются как целые | constellation (coverage, ConstellationDesignScenario, beidou_slots, body_by_name) |
| Составная миссия через типы сценариев на одной общей временной шкале | Фазы типа campaign: каждая фаза запускает один или несколько сценариев существующих типов через run_toml, считывает их выходные данные в именованные каналы (ошибка времени часов и защитный интервал, средняя эффективная отношение несущей к плотности шума и нижний предел слежения, вертикальный уровень защиты и предел тревоги, ошибка положения, отслеживаемые спутники, флаги тревоги) по предустановкам для типов или явным путям результатов, помещает их в начало фазы и удерживает на общей сетке, с границами фаз и событиями; состояние передаётся дальше через carry (канал продолжается с конечного значения предыдущей фазы), handoff (номер предыдущей фазы записывается в следующий сценарий) и end_at (фаза заканчивается в момент, вычисленный прогоном, например во время обнаружения монитора спуфинга); хеш кампании и дайджест по каждому результату участника | MODELLED | Тождества композиции относительно автономных прогонов тех же типов: однофазная кампания воспроизводит автономный результат бит в бит, перенесённое смещение равно последнему собственному отсчёту предыдущего прогона, а фаза, оконченная через end_at, имеет длину, в точности равную времени обнаружения прогона. Аддитивный перенос через границу фазы и удержание нулевого порядка — выбор моделирования, и каждая фаза настолько хороша, насколько хорош запустивший её тип; ни одна составная миссия не сверена с измеренной | campaign (run_campaign_detailed, run_chain, presets, extract, to_svg) |
| Перебор параметров и ансамбли Монте-Карло с заданным начальным значением для любого типа сценария | Разделы sweep (от одного до трёх ключей через точку любого типа, на значениях осей универсального перебора, при желании с ансамблем в каждом узле) и monte_carlo типа campaign: реализация k запускается при base_seed + k; для каждой метрики сообщаются среднее, стандартное отклонение, перцентили 5/50/95 по методу ближайшего ранга и доверительный интервал среднего 95% по перцентильному бутстрэпу с фиксированным начальным значением (inertial::metric_stat); единицы метрик берутся из собственного блока units перебираемого типа | MODELLED | Замкнутая форма случайного блуждания фазы при белом частотном шуме с дисперсией q_wf tau (NIST Technical Note 1337) для статистического аппарата и побайтовое равенство с автономными прогонами для задания начальных значений. Проверяется арифметика ансамбля на собственной модели часов движка, а не внешний набор данных | campaign (run_sweep, run_monte_carlo, ensemble); sweep (GenericAxis, coords_of, set_dotted_value); inertial (metric_stat) |
| Несколько сценариев при общих условиях с объединённой сводкой | Раздел compose типа campaign: именованные общие значения (например, мощность и положение одной помехи) записываются в каждый элемент по ключам, к которым они привязаны, каждый элемент запускается, а по каждой метрике сообщаются наименьшее, наибольшее и среднее значения среди элементов с указанием элемента; единицы метрик должны совпадать у всех элементов | MODELLED | Тождество композиции относительно автономного прогона. Арифметика общих условий — учёт; физика принадлежит типам-элементам, у каждого из которых своя строка | campaign (run_compose) |
| Ограниченная оптимизация одной метрики по параметрам кампании | Раздел optimize типа campaign (CAP-32): от одного до трёх ключей сценария через точку, ограниченных [lo, hi] в линейной или логарифмической шкале, одна метрика, считываемая по пути результата, цель — minimize, maximize или target; метод — сетка (значения осей перебора) или детерминированный симплекс Нелдера — Мида в нормированных координатах с проекцией на коробку и стандартными коэффициентами; отсутствующая или не конечная метрика получает наихудшую оценку и остаётся в трассе; при runs > 1 метрика — среднее по общим начальным значениям; каждое вычисление — реальный прогон названного типа, перечисленный в trace и учтённый в дайджесте воспроизводимости | MODELLED | Только внутренняя проверка: точная замкнутая форма уравнения линии связи -20 log10(range), независимая полная сетка по тому же типу и функция Розенброка. Порог 1-D раунда 1: NOT MET (предварительно зарегистрированная коробка исключала решение в 3 дБ; оптимизатор остановился на границе), записано в docs/design/evidence/cap32-optimize/RESULTS.md и повторно не оценивалось. Оптимум локален для коробки и начальной точки; утверждения о глобальном оптимуме нет | campaign::optimize (run_optimize, nelder_mead) |
| Замкнутые формы с ограниченной полосой для любого дальномерного сигнала: мощность в полосе и джиттер слежения за кодом по схеме «ранний — поздний» относительно опубликованных значений, с перекрёстной проверкой ширины полосы по Габору и спектрального разделения со смещением | navsignal: интегральный синус (sine_integral), доля мощности BPSK-R внутри двусторонней полосы в замкнутой форме (bpsk_power_in_band_closed_form), ширина полосы по Габору BPSK с ограниченной полосой в замкнутой форме (bpsk_gabor_bandwidth_closed_form_hz), джиттер когерентной и некогерентной системы слежения за задержкой по схеме «ранний — поздний» с ограниченной полосой для любого спектра единичной площади по Betz & Kolodziejski 2009 (dll_jitter_bandlimited_s) и его граница Габора при исчезающе малом разносе (dll_jitter_small_spacing_limit_s), коэффициент спектрального разделения BPSK со смещением в замкнутой форме (bpsk_offset_ssc_closed_form), спектр Galileo E5 AltBOC(15 10) (altboc_15_10_psd) и разборщик меток модуляции (parse_modulation); используется типом leo-signal для каждого проекта сигнала | VALIDATED | Внешне закреплено: 90,3 процента мощности главного лепестка, когерентный джиттер «ранний — поздний» в заявленной рабочей точке, табличные значения интегрального синуса и собственный коэффициент спектрального разделения BPSK 2/(3 R_c) при нулевом смещении. Только внутренние перекрёстные проверки, а не внешняя проверка: замкнутая форма ширины полосы по Габору BPSK с ограниченной полосой и её асимптота, а также коэффициент спектрального разделения BPSK со смещением при ненулевых смещениях, оба выведены здесь и проверены квадратурой. Опубликованные замкнутые формы: спектр sinc в квадрате для BPSK-R и его 90 процентов мощности главного лепестка (Kaplan & Hegarty, Understanding GPS/GNSS, 3-е изд.); когерентный джиттер слежения за кодом «ранний — поздний» sigma^2 = B_L d / (2 C/N0) chips^2 (Kaplan & Hegarty, раздел 8) и обобщение с ограниченной полосой с его пределом по Габору (Betz & Kolodziejski, Generalized Theory of Code Tracking with an Early-Late Discriminator, Part I, IEEE Transactions on Aerospace and Electronic Systems 45(4), 2009); таблицы интегрального синуса из Abramowitz & Stegun (таблица 5,1); коэффициент спектрального разделения как преобразование Фурье квадрата автокорреляции (Betz 2001). Спектр AltBOC проверяется только на единичную площадь и положение лепестков (выражение из Galileo Open Service Signal-in-Space Interface Control Document интегрируется в 8 и делится на него). | navsignal (sine_integral, bpsk_power_in_band_closed_form, bpsk_gabor_bandwidth_closed_form_hz, dll_jitter_bandlimited_s, dll_jitter_small_spacing_limit_s, bpsk_offset_ssc_closed_form, altboc_15_10_psd, parse_modulation) |
| Максимальный доплеровский сдвиг навигационного спутника на низкой околоземной орбите, определяющий размер области поиска при захвате | leo_signal::max_doppler_hz: наибольший доплеровский сдвиг спутника при пролёте над головой при маске возвышения для круговой орбиты, v R_E cos(el) / (R_E + h) умноженное на f / c, по собственной несущей и высоте орбиты каждой предустановки; тип leo-signal добавляет члены генератора и пользователя и превращает его в интервалы по Доплеру | VALIDATED | Опубликованные цифры: максимальный доплеровский сдвиг Xona Pulsar X1 от 32 до 34 кГц (Leclère, Marathe & Reid, ION GNSS+ 2025, https://arxiv.org/abs/2509.19551); доплеровский сдвиг Iridium до +/-36 кГц (Resilient Navigation and Timing Foundation, Recent PNT Improvements and Test Results Based on Low Earth Orbit Satellites). Вращение Земли не учтено, что сдвигает цифру до примерно 2,3 кГц; обе опубликованные цифры выполняются и без него. | leo_signal (max_doppler_hz) |
| Проекты сигналов позиционирования, навигации и времени на низкой околоземной орбите: слежение за кодом, захват, совместимость с GNSS и компромисс по диапазону для любой системы | Тип leo-signal: параметризованные проекты сигналов (диапазон, ширина полосы передачи, распределение ITU; компоненты захвата, данных и пилотные с BPSK(n), BOC(m,n), MBOC или плоскими спектрами, доли мощности, поднесущие FDMA, длины кодов и скорости данных) из встроенных при компиляции публичных файлов предустановок (Xona Pulsar, Iridium STL, сигнал оказии Starlink, CentiSpace, общий проект C-диапазона и общие проекты UHF/L/S/C/широкого C, у каждого — URL источника, а неопубликованные значения помечены как «REPRESENTATIVE») либо записанные встроенно; для каждого сигнала — спектральная плотность мощности с ограниченной полосой, доли мощности в полосе, ширина полосы по Габору, джиттер кода относительно C/N0 и разноса и точность дальнометрии, пространство поиска при захвате, вероятность обнаружения по квадратичному закону и среднее время последовательного и кодово-параллельного захвата, коэффициент спектрального разделения с GPS L1 C/A, Galileo E1, GPS L5, Galileo E5a, E5b и AltBOC и от них с ухудшением C/N0, а также допуск по J/S для CW, широкополосной и согласованной помехи по цепочке SSC типа spectrum; компромисс по диапазону между ионосферной задержкой, потерями в свободном пространстве, точностью дальнометрии при равном C/N0 и равной EIRP и устойчивостью к помехам; и качественные проверки формы проекта относительно описанного измерения | MODELLED | Проверенные замкнутые формы двух строк выше, тождество ложной тревоги при квадратичном законе P_d(snr = 0) = P_fa и среднее время захвата по Holmes, а также сведение к собственной цепочке SSC типа spectrum (тот же код Jammer::ssc). Сами проекты — входные данные: предустановки с пометкой «REPRESENTATIVE» или «WORKSHOP» не являются опубликованными спецификациями, спектры улучшенного Feher QPSK, манипуляции сдвигом кода и OFDM аппроксимированы, а проверки формы сравнивают формы, а не откалиброванные уровни. | leo_signal (LeoSignalScenario, SignalDesign, Component, Shape, code_jitter_m, gabor_bandwidth_hz, detection_probability, threshold_for_pfa, mean_acquisition_time_s, ssc_leo_into_gnss, ssc_gnss_into_leo, jammer_tolerance, gnss_victim, preset, public_signal) |
| Многодиапазонный водопад спектра (UHF, L, S, C) с проектными сигналами и помехами по диапазонам | Тип spectrum, расширенный за пределы L-диапазона: диапазоны, заданные как предустановленный проект сигнала (рисуется со всеми компонентами, с ограничением полосы шириной полосы передачи, C/N0 и J/S относятся к отслеживаемой компоненте) или как произвольные несущая и модуляция; дополнительные панели водопада по любому диапазону частот на той же временной шкале и цветовой шкале; широкополосная (заградительная) помеха наряду с CW, узкополосной, чирпом и согласованным шумом; J/S и эффективный C/N0 по диапазонам по неизменной цепочке коэффициента спектрального разделения | MODELLED | Сведение к существующей цепочке спектра и уравнению защиты от помех типа jamming (однокомпонентный диапазон даёт те же числа, что и до расширения) и спектрам сигналов из проверенных строк. Мощности помех, временная шкала, полосы входных каскадов и проектные сигналы — входные данные, а проектный сигнал обрезается на своей полосе передачи (внеполосного излучения нет). | spectrum (Band::unit_psd, Band::tracked_power_dbw, BandDesign, BandCfg, PanelCfg, SpectrumScenario, Waveform, multi_band_svg); leo_signal (SignalDesign::to_spectrum_band) |
| Коэффициенты удельного ослабления в дожде для любого диапазона, используемого линией связи LEO-PNT | ITU-R (International Telecommunication Union, Radiocommunication Sector) P.838-3, уравнения (1)–(5): k_H, alpha_H, k_V, alpha_V из аппроксимаций кривых таблиц 1–4, зависящие от трассы и поляризации (k, alpha) и удельное ослабление k R^alpha; используется членом дождя типа leo-pass | VALIDATED | ITU-R P.838-3 (03/2005), таблица 5, собственные табулированные k_H, alpha_H, k_V, alpha_V Рекомендации, зафиксированные в tests/fixtures/leo_link/p838_3_table5.csv вместе с URL PDF и датой получения. Таблица округлена до напечатанных цифр, поэтому порог — это округление | leo_link::itu (p838_coefficients, p838_k_alpha, rain_specific_attenuation_db_km) |
| Долговременное ослабление в дожде на наклонной трассе линии связи «Земля — космос» | ITU-R P.618-14, раздел 2.2.1.1, шаги 2–10 (наклонная и горизонтальная трасса ниже высоты дождя, коэффициенты горизонтального сокращения и вертикальной поправки, A0.01 и его масштабирование до 0,001 %–5 % среднего года), причём высота дождя (P.839) и R0.01 (P.837) — входные данные, потому что движок не содержит ни одной цифровой карты; применяется по диапазонам и эпохам типом leo-pass | VALIDATED | Файл проверочных примеров ITU-R Study Group 3 CG-3M3J-13-ValEx-Rev8.3.0 для P.618-14 в табулировании со страниц проверки ITU-Rpy, с высотой дождя P.839-4 каждой площадки из тех же примеров; зафиксирован в tests/fixtures/leo_link/p618_14_rain_attenuation.csv вместе с URL и датой получения. Подтверждает процедуру при заданных h_R и R0.01, а не карты | leo_link::itu (p618_rain_attenuation_db, RainPath) |
| Тропосферные амплитудные сцинтилляции на линии связи «Земля — космос» | ITU-R P.618-14, раздел 2.4.1, шаги 3–9 (опорная sigma по N_wet, эффективная длина трассы, коэффициент усреднения антенной, глубина замирания для 0,01 %–50 % времени), причём N_wet — входные данные или вычисляется по температуре, влажности и давлению выражениями ITU-R P.453-14; ниже 4 ГГц тип leo-pass помечает значение как экстраполяцию | VALIDATED | Проверочные примеры ITU-R Study Group 3 (CG-3M3J-13-ValEx-Rev8.3.0) для сцинтилляций по P.618-14, с N_wet по P.453-14 каждой площадки из тех же примеров; зафиксированы в tests/fixtures/leo_link/p618_14_scintillation.csv вместе с URL и датой получения. Выражение влажной рефракции по температуре и влажности этой строкой не охвачено | leo_link::itu (p618_scintillation_db, wet_refractivity, ScintillationPath) |
| Потери при проникновении в здание для пользователя LEO-PNT внутри помещения | ITU-R P.2109-2, приложение 1, уравнения (1)–(10) с таблицей 1: потери, не превышаемые с вероятностью P, для традиционных и теплоэффективных зданий при угле места трассы у фасада, от 80 МГц до 100 ГГц; применяется по диапазонам и эпохам к пользователю внутри помещения типом leo-pass (случай UHF в помещении) | VALIDATED | Значения из рабочей книги проверки Clutter and BEL ITU-R Study Group 3, переписанные из проверочного скрипта эталонной реализации на MATLAB (github.com/eeveetza/p2109), зафиксированные в tests/fixtures/leo_link/p2109_bel.csv вместе с URL и датой получения. Рабочая книга печатает три десятичных знака | leo_link::itu (p2109_building_entry_loss_db, BuildingClass); detection (normal_inv_cdf) |
| Ионосферная задержка первого порядка по диапазонам, безионосферная комбинация и потери в свободном пространстве | Групповая задержка 40,3 STEC/f^2 по диапазонам; безионосферные коэффициенты f1^2/(f1^2 - f2^2) и -f2^2/(f1^2 - f2^2) и усиление шума sqrt(a1^2 s1^2 + a2^2 s2^2) для любой пары диапазонов; потери в свободном пространстве 20 log10(4 pi R f/c) из linkbudget::free_space_loss_db в её форме для километров и мегагерц | VALIDATED | IS-GPS-200, раздел 20.3.3.3.3.2, где указано отношение групповых задержек L1/L2 gamma = (77/60)^2, вытекающее из масштабирования первого порядка 1/f^2, и формула передачи Friis (Proc. IRE, 1946). Подтверждает законы масштабирования, а не наклонное TEC | leo_link::iono (group_delay_m, iono_free_coefficients, iono_free_noise_amplification); leo_link (fspl_db); linkbudget (free_space_loss_db) |
| Максимальный доплеровский сдвиг, который видит неподвижный пользователь на орбите LEO или MEO | leo_link::geometry::max_static_user_range_rate: поиск по каждому положению на орбите и каждому пользователю на горизонте спутника круговой орбиты при вращении Земли наибольшей скорости изменения дальности, плюс орбитальная и наибольшая связанная с Землёй скорость спутника; сообщается по диапазонам как огибающая по Доплеру типом leo-pass и используется как окно поиска при холодном старте его модели низкого энергопотребления | VALIDATED | Leclere, Marathe and Reid, Insights into Xona Pulsar LEO PNT: Constellation, Signals, and Receiver Design, ION GNSS+ 2025, arXiv 2509,19551, таблица 1 (неподвижный приёмник на сфере 6371 км, вращение Земли — единственный иной эффект): 37751,7 / 33628,5 / 31813,4 / 4018,4 Гц на L1. Охватывает круговые двутельные орбиты | leo_link::geometry (max_static_user_range_rate, DopplerEnvelope, doppler_hz) |
| Пролёт LEO-PNT и его бюджет линии связи по диапазонам в сравнении со спутниками MEO GNSS в зоне видимости | Тип leo-pass: спутники из спроектированного пролёта, элементов, TLE через SGP4 или группировки Walker из constellation-design; по диапазонам и эпохам — углы визирования, дальность, скорость изменения дальности и ускорение дальности в замкнутой форме (проверяются при каждом прогоне по центральным разностям и сообщаются), потери в свободном пространстве, EIRP с изофлюксной, гауссовой или плоской диаграммой, патч-антенна, полусферическая или изотропная антенна пользователя, газовое ослабление ITU-R P.676-10, приложение 2, дождь и сцинтилляции P.618, потери при проникновении в здание P.2109, рассогласование поляризации, шумовая температура системы, C/N0, доплеровский сдвиг и скорость его изменения, а также задержка первого порядка по наклонному TEC по Klobuchar или вертикальному TEC, масштабированному долей Чепмена ниже спутника; безионосферные пары с шумом кода в пике пролёта; несущие Galileo или GPS по принимаемым мощностям из их документов интерфейса через тот же приёмник | MODELLED | Замкнутые формы и самосогласованность: тождества скорости изменения дальности и ускорения дальности относительно численных производных, изофлюксное усиление, компенсирующее рост дальности, предельные случаи потерь на поляризацию из учебников, качественное наблюдение «LEO против GNSS» (колоколообразный пролёт длительностью в минуты с пиком на несколько дБ выше плоских несущих GNSS в 44–51 дБ-Гц). EIRP и диаграммы — опубликованные принимаемые мощности, пересчитанные в EIRP, или представительные выборы; газовый член — устаревший упрощённый метод P.676-10; и ничто не сравнивается с измеренным C/N0 для LEO | leo_pass (LeoPassScenario); leo_link::geometry (design_pass, link_geometry, numerical_check, SatMotion, UserMotion); leo_link::antenna; leo_link::itu (p676_gaseous_attenuation_db); leo_link (system_noise_temperature_k, cn0_dbhz) |
| Названные предустановки систем LEO-PNT с указанными источниками и независимый от системы движок | leo_link::presets: общая многодиапазонная (UHF, L, S, C), общая C-диапазонная, Xona Pulsar X1/X5, Iridium STL, Starlink как сигнал оказии только для Доплера, CentiSpace и необязательная предустановка Celeste IOD, у каждой источник помечен PUBLIC (с URL), REPRESENTATIVE или WORKSHOP, причём рабочая — в необязательном файле предустановки Celeste IOD, компилируемом только при наличии этого файла; каждый диапазон и каждая орбита переопределяются в сценарии, а сценарий может вообще не называть предустановку | MODELLED | Переписанные цитируемые публичные цифры и проверка согласованности: EIRP, заданная по опубликованной минимальной принимаемой мощности, предсказывает опубликованный максимум в пределах 0,5 дБ при плоской диаграмме. Это проверка разброса дальности, а не подтверждение антенны какого-либо спутника; представительные предустановки не делают утверждений о реальной системе | leo_link::presets (SystemPreset, BandPreset, all, by_id, gnss_meo); leo_pass (resolve_bands) |
| Позиционирование с низким энергопотреблением: время до первого определения и энергия на определение в зависимости от скважности | leo_link::energy и раздел [iot] типа leo-pass: когерентное накопление, ограниченное скоростью изменения доплеровского сдвига, некогерентные суммы при квадратичном законе до порога обнаружения, поиск по интервалам Доплера по огибающей орбиты для неподвижного пользователя (холодный) или по вспомогательному окну (горячий), параллельный или последовательный поиск кода, время навигационного сообщения при холодном старте, энергия на определение и срок службы батареи при разных интервалах определений, для каждого диапазона LEO и сигнала GNSS | MODELLED | Внутренняя согласованность заявленной модели проекта: каждая мощность, порог и выбор поиска — входные данные, а модель игнорирует неоднозначность границы бита, пропуск обнаружения и повторный захват. С измеренным приёмником не сравнивалось | leo_link::energy (fix_budget, duty_curve, IotReceiver, IotSignal); leo_pass (iot_section) |
| Глобально усреднённые веса ошибки дальности сигнала в пространстве для любой высоты орбиты | leo_navmsg::sisre::sisre_weights: радиальный вес w_R и квадрат поперечного веса w_AC^2 как средние от cos^2 и половины sin^2 надирного угла линии визирования по пользователям, равномерно распределённым на видимой шапке Земли выше маски возвышения, для любого радиуса орбиты, интегрированием по Симпсону; используется в каждой цифре SISRE в leo-navmsg (при 510 км w_R 0,46 и w_AC^2 1/2.5) | VALIDATED | Опубликованная таблица весовых коэффициентов SISRE из Montenbruck, Steigenberger and Hauschild (2018), Multi-GNSS signal-in-space range error assessment - Methodology and results, Advances in Space Research 61(12):3020-3038, doi 10.1016/j.asr.2018.03.041: GPS 0,98 и 1/49, GLONASS 0,98 и 1/45, Galileo 0,98 и 1/61, BeiDou MEO 0,98 и 1/54, BeiDou IGSO/GEO 0,99 и 1/126. То же среднее, вычисленное на радиусах LEO, даёт веса LEO; опубликованная таблица для LEO не закреплена, поэтому значения для LEO — применённый проверенный метод, но не проверенные отдельно | leo_navmsg::sisre (sisre_weights, StatsAcc) |
| Пользовательский алгоритм бортовых эфемерид по ICD Galileo как основа навигационного сообщения LEO | leo_navmsg::elements::kepler_point: вычисление кеплеровых элементов по Galileo OS SIS ICD (уравнение Кеплера, поправки второй гармоники, связанный с Землёй узел), написанное отдельно от вычислителя RINEX движка, возвращающее положение вместе с аргументом широты, наклонением и узлом, по которым строится система координат поправок «вдоль / поперёк / радиально», и члены расширения Liu et al. 2025 | VALIDATED | Положения ECEF eph2pos из RTKLIB 2.4.2-p13 (независимая реализация того же алгоритма ICD) для реальных записей вещания BKG/IGS за 2024-09-10, оба зафиксированы с указанием происхождения в tests/fixtures/rinex_sp3_interop (NOTICE, rinex_ecef_reference.txt, brdc_multignss_slice.rnx). Это подтверждает кеплеров пользовательский алгоритм; добавленные сверху поправки «вдоль / поперёк / радиально» охвачены собственными строками, а члены Liu — строкой Liu et al. 2025 с 22 параметрами | leo_navmsg::elements (kepler_point, kepler_frame, ephemeris_at, sat_state) |
| Проверка кадра CRC-24Q для навигационного сообщения LEO | leo_navmsg::codec::crc24q: порождающий полином 0x1864CFB, начальное значение 0, без отражения, без финального XOR, проверка, которую кадр LEO Kshana несёт по каждому предшествующему байту | VALIDATED | Контрольное значение каталога CRC для этих параметров (каталог CRC reveng.sourceforge.io, CRC-24/LTE-A: ширина 24, poly 0x864CFB, init 0, check 0xCDE703), которые являются параметрами CRC-24Q из RTCM 10403 и Galileo OS SIS ICD, и пример кадра сообщения типа 1005, напечатанный в RTCM 10403 | leo_navmsg::codec (crc24q, encode, decode) |
| Подгонка бортовых эфемерид LEO и ошибка дальности сигнала в пространстве в зависимости от интервала подгонки и периода обновления | Подгонка и компромисс типа leo-navmsg: истинная орбита, проинтегрированная с зональной гравитацией J2–J6 или EGM2008 до выбранной степени и с торможением, и часы с заданным начальным значением, свободные или с подстройкой; подгонка Левенберга — Марквардта кеплерова набора Galileo по неособым элементам со слабыми априорными значениями, затем полиномы поправок вдоль, поперёк и радиально линейным методом наименьших квадратов; полином часов, подогнанный за вычетом релятивистского члена пользователя; SISRE (только по орбите и с часами) по периодам использования, центрированным в окнах подгонки, в зависимости от интервала подгонки и периода обновления. Проверенная часть: 16-параметрическая кеплерова подгонка и её SISRE только по орбите в зависимости от интервала подгонки на реальных прецизионных орбитах и проинтегрированная истинная орбита с J2–J6/EGM2008(20, 70)/торможением относительно Orekit 12,2 в пределах 4,6 мм за 6 ч (порог 2 см, тот же вход по плотности); полиномы поправок, подгонка часов (свободные или с подстройкой часы с заданным начальным значением) и компромисс по периоду обновления остаются на уровне modelled | VALIDATED | Реальные прецизионные научные орбиты как истина (операционные редуцированно-динамические орбиты TU Graz IfG/ITSG, свободные для любого использования с указанием авторства; значения SHA-256 в NOTICE набора данных), подогнанные 16-параметрическим набором на дугах 20 и 30 мин, относительно статистики, которую Liu et al. 2025 (Remote Sensing 17(16):2894, CC BY 4,0) публикуют для тех же спутников и суток: СКО вдоль, поперёк и радиально — каждое в пределах 1.5x (измерено от 0,804 до 1,087), SISRE в пределах 1.5x (измерено от 0,716 до 0,809) и веса SISRE в пределах 0,005 от таблицы 2 (измерено 0,0007); допуски зафиксированы до сравнения. Покомпонентный барьер придаёт тесту силу: обнуление скорости наклонения оставляет каждое отношение SISRE в пределах 1.5x, но не проходит барьер по поперечной составляющей. Единообразное отношение SISRE от 0,72 до 0,81 принадлежит статье: её напечатанные значения SISRE используют веса таблицы 2 без возведения в квадрат, а не собственное уравнение 9, которому следует Kshana (Montenbruck et al. 2018). Проинтегрированная истинная орбита (зональные J2–J6, EGM2008 до степени 20 и 70, торможение) согласуется с Orekit 12,2 (CS GROUP, Apache-2.0) и Hipparchus 3,1, распространёнными из того же начального состояния в тех же системах отсчёта с тем же входом по плотности, в пределах 4,55 мм за 6 ч (порог 0,02 м зафиксирован до прогона, предварительная регистрация 65e4d46c). Вне утверждения: полиномы поправок, подгонка часов и компромисс по периоду обновления, у которых остаются внутренние проверки (истинная двутельная орбита, восстановленная 16-параметрическим набором с точностью лучше 1 мм, и внутренняя перекрёстная проверка numpy экспортированных сообщений на GRACE-FO с его часами CLK1B, написанная и запущенная этим проектом и не являющаяся независимым оракулом) | leo_navmsg::fit (fit_message, lstsq, polyfit); leo_navmsg::truth (TruthOrbit, TruthClock); leo_navmsg (sequence_stats, LeoNavmsgScenario) |
| Обновление навигационного сообщения LEO в середине пролёта с проверкой непрерывности при переключении | Анализ midpass-update типа leo-navmsg: самый высокий пролёт над пользователем в пределах интервала поиска, сообщения по глобальному расписанию с периодами использования, центрированными в окнах подгонки, и при каждом переключении — скачок положения в 3D, скачок часов, скачок псевдодальности пользователя, наибольший скачок по любой видимой линии визирования (замкнутая форма по надирному конусу), ошибка дальности до и после, а также PASS/FAIL относительно порога | MODELLED | Внутренняя согласованность (тождество скачка и граница по конусу относительно полной выборки). Порог — входные данные; никакого опубликованного требования к непрерывности для LEO не закреплено | leo_navmsg (LeoNavmsgScenario::midpass, worst_case_jump, elevation, geodetic_to_ecef) |
| Документированное двоичное кодирование навигационного сообщения LEO с бюджетом ошибок квантования | leo_navmsg::codec: собственный кадр Kshana (преамбула, версия, модель, длина, полезная нагрузка, CRC-24Q) для четырёх моделей эфемерид, полином часов, SVID, возраст данных, диапазон, исправность, набор Klobuchar, коэффициенты NeQuick-G и параметры UTC, каждое поле с указанными шириной и шагом (field_table), квантование с отказом при выходе за диапазон и бюджет наибольшего изменения положения и часов, которое вызывает изменение каждого поля на полшага в течение окна действительности | MODELLED | Тождества прямого и обратного преобразования и сам бюджет. Формат — собственный формат Kshana, смоделированный по опубликованным компонентам сообщения и набору полей Galileo ICD; это не раскладка битов Celeste или какой-либо другой системы (ни одна не публична), поэтому внешней раскладки для сверки нет | leo_navmsg::codec (encode, decode, write_payload, read_payload, field_table, quantisation_budget) |
| Экспорт навигационных сообщений LEO в стиле RINEX-4 и в CSV | leo_navmsg::text: блок в стиле RINEX-4 (заголовок записи > EPH, строка спутника и эпохи с тремя членами часов, строки бортовой орбиты D19.12) с буквой системы L и типами записей KP16, KRAC, LU22 и APOL, помеченный в каждом заголовке как расширение Kshana, не являющееся частью RINEX 4,02, и таблица CSV со схемой столбцов по умолчанию и предустановленными схемами, у каждой — импортёр | MODELLED | Прямое и обратное преобразования и календарная арифметика. RINEX 4,02 не определяет навигационных записей LEO (IGS RINEX 4,02), поэтому раскладка — документированное расширение со ссылкой на arXiv 2401,17767 как на предшествующий уровень техники; внешнего читателя для сверки с ней не существует | leo_navmsg::text (rinex_export, rinex_import, csv_export, csv_import, calendar, from_calendar) |
| 22-параметрическая модель эфемерид LEO по Liu et al. 2025 и её подгонка на реальных прецизионных орбитах | вариант Liu22 модели leo_navmsg::elements::EphemerisModel, вычисляемый kepler_point с Liu22Extra: 16-параметрический набор плюс скорость большой полуоси a_dot, скорость среднего движения n_dot, входящая как n = sqrt(mu/A0^3) + dn + n_dot tk, переписанная из уравнения 1 статьи (сравнение подгонки не зависит от этого соглашения о масштабе, поэтому смысл передаваемого значения nDot здесь не подтверждается), а также гармоники радиуса Crs1, Crc1, Crs3, Crc3 с однократной и трёхкратной частотой на оборот по нескорректированному аргументу широты. Её подгонка через leo_navmsg::fit::fit_message берёт из раздела 2,3 статьи начало и оцениватель (каждая поправка начинается с нуля; обычный метод наименьших квадратов без априорных значений; ограничение статьи в 100 итераций), но останавливается по правилу сходимости параметров Kshana (каждый шаг меньше 1e-3 своей формальной сигмы), а не по правилу статьи об изменении RMS меньше 0,1 мм. Подгонка по дугам 20 и 30 минут табулированной прецизионной орбиты | VALIDATED | Измерено: операционные редуцированно-динамические орбиты TU Graz IfG/ITSG (свободные для любого использования с указанием авторства; значения SHA-256 в NOTICE набора данных) спутников GRACE-A, GRACE-C, Sentinel-2A и Sentinel-6A — истина, подогнанная на дугах 20 и 30 мин и сравнённая со строками с 22 параметрами (a_dot, n_dot, Crs3, Crc3, Crs1, Crc1) из таблиц 4, 5, 6 и 8 у Liu, Su, Xie, Zhou and Qu (2025), Remote Sensing 17(16):2894, doi 10.3390/rs17162894 (CC BY 4,0; числа цитируются, а не вносятся в репозиторий). Пороги зафиксированы до первого сравнения: СКО вдоль, поперёк и радиально — каждое в пределах 1.5x в обе стороны, и SISRE в пределах 1.5x, для каждого спутника и обеих длин дуг. Повторный прогон раунда 2 был предварительно зарегистрирован (aa559785) до изменения движка и до загрузки отложенных орбит: подгонка по уравнению 1 и разделу 2,3 статьи плюс двое новых отложенных суток на спутник относительно тех же напечатанных значений. Измерено: каждое отношение для суток из статьи от 0,755 до 1,138 и каждое отношение для отложенных суток от 0,683 до 1,186. Раскрыто: отношения вдоль трассы при 20 мин первого прогона 1,71 (Sentinel-2A) и 1,86 (Sentinel-6A) были известны до повторного прогона. Самые низкие отношения SISRE для отложенных суток лежат вблизи нижней границы 0,667, потому что напечатанный в статье SISRE использует веса таблицы 2 без возведения в квадрат (см. строку 16-параметрической подгонки). Предварительная регистрация неверно изложила правило остановки статьи (статья останавливается при изменении RMS меньше 0,1 мм); сохранено предварительно зарегистрированное правило сходимости параметров. Мутация: возврат априорных значений с центром в нуле даёт для Sentinel-6A при 20 мин вдоль трассы 1,08 против 0,70 см (1,54), что не проходит. Проверка рецензентом: соглашение до 0.30 (множитель 1/2 при n_dot) оставляет каждую цифру неизменной, поэтому сравнение ограничивает функциональное пространство 22-параметрической модели и качество её подгонки, а не соглашение о n_dot. Вне утверждения: ATOMIC полином ECEF и синтетическая таблица сравнения моделей для пяти высот, у которых своя строка MODELLED | leo_navmsg::elements (kepler_point, Liu22Extra); leo_navmsg::fit (fit_message, fit_kepler, initial_params, formal_sigma); leo_navmsg::truth (TruthOrbit) |
| ATOMIC: полином ECEF с нулевыми часами и синтетическое сравнение моделей LEO на пяти высотах | Вариант EcefPoly модели leo_navmsg::elements::EphemerisModel: полином ECEF по каждой оси без членов часов, релятивистский член из -2 r.v/c^2, оценённый относительно подстраиваемых часов. Также анализ сравнения моделей (liu_comparison по LIU2025_TABLE): он подгоняет 22-параметрическую модель на пяти высотах из статьи по 20-минутным дугам орбиты, проинтегрированной в Kshana, и выводит результат рядом с опубликованным SISRE | MODELLED | ATOMIC: факты о модели из InsideGNSS (полином 6-го порядка, срок действия около одной минуты, обновление каждые 30 с, подстраиваемые часы, ошибка часов 24 см). Это описательные факты, для которых нет опубликованных чисел для сравнения. Таблица для пяти высот выводит SISRE по Liu et al. 2025 (8,88, 6,21, 2,87, 2,11 и 0,75 см на высотах 320, 475, 786, 966 и 1336 км на 20-минутной дуге) рядом с подгонкой Kshana на собственной проинтегрированной орбите (4,25, 2,87, 2,20, 1,25 и 0,51 см; отношения от 0,46 до 0,77); значения не зафиксированы, поскольку в статье подгонялись реальные прецизионные орбиты и эталонные орбиты различаются. 22-параметрическая модель и её подгонка проверены на реальных орбитах в строке Liu et al. 2025 22-parameter LEO ephemeris model and its fit on real precise orbits. Редакция 0,30: значения в таблице изменились при подгонке по соглашению статьи (GRACE-A 5,40 -> 4,25 см, GRACE-C 4,12 -> 2,87, Sentinel-2A 2,95 -> 2,20, HY-2A 2,38 -> 1,25, Sentinel-6A 0,70 -> 0,51) | leo_navmsg::elements (EcefPoly, ephemeris_at); leo_navmsg (liu_comparison, LIU2025_TABLE) |
| Одночастотные ионосферные услуги и услуги UTC навигационного сообщения LEO | leo_navmsg::services: широковещательная задержка Klobuchar на любой несущей (модель L1 движка, масштабированная на (f_L1/f)^2), эффективный уровень ионизации NeQuick-G Az = ai0 + ai1 mu + ai2 mu^2 с правилами для нулевого набора коэффициентов и для [0, 400] sfu, а также системное время в UTC для трёх случаев ICD с секундой координации | VALIDATED | GNSSTk 15.3.1 (ARL:UT, LGPL-3.0, коммит 55ea3344, запускается как отдельная программа через обвязку; код GNSSTk в проект не включён): getIonoCorr класса KlobucharIonoNavData на L1, L2 и L5, getEffIonoLevel класса NeQuickIonoNavData для Az с правилами для нулевого набора коэффициентов и для [0, 400] sfu и getOffset класса GPSLNavTimeOffset для дрейфа UTC, в пределах 1e-3 м, 1e-6 sfu и 1e-9 с; а также ERFA через pyerfa 2.0.1.5 (BSD-3), которая выводит UTC из таблицы секунд координации IERS, для трёх случаев ICD с секундой координации на реальных секундах координации 2015-06-30 и 2016-12-31, включая отсчёт 23:59:60, в пределах 1e-9 с (GNSSTk не реализует правило длины суток случая (b) из ICD, поэтому там он не использовался, как записано в предварительной регистрации). Входные данные — реальные коэффициенты из заголовка IGS BRDC. Предварительно зарегистрировано (6a66994b; поправка 88807a7e зафиксировала подмножество сетки секунд координации из 21 602 строк до того, как какое-либо значение Kshana было сравнено). Интегрирование электронной плотности NeQuick не реализовано, и поправка для спутника LEO, летящего внутри ионосферы, не вводится | leo_navmsg::services (klobuchar_delay_m, effective_ionisation_level, system_to_utc) |
| Доплер, с которым должен справляться наземный приёмник при работе с навигационным спутником LEO | Точная скорость изменения дальности спутника, чьи положение и скорость в земной системе координат получены из двухтельной орбиты с вековым дрейфом J2 и вращением Земли (leo_fusion::geom::EarthOrbit::state, скорость — точная производная положения по времени), пересчитанная в Доплер на несущей; наибольший по модулю Доплер, скорость изменения Доплера и рывок выше маски по углу места на заданном окне (leo_fusion::doppler::doppler_envelope), выводятся по каждой системе LEO видом leo-pvt в режиме doppler | VALIDATED | Воспроизведены опубликованные значения по заданной орбите и несущей: Доплер Iridium до ±36 кГц (Resilient Navigation and Timing Foundation, Recent PNT improvements and test results based on LEO satellites) и максимальный Доплер Xona Pulsar X1 от 32 до 34 кГц (Leclère, Marathe and Reid, ION GNSS+ 2025, arXiv:2509,19551). Значение для Iridium — округлённая верхняя граница, отсюда порог 5%. Скорость изменения Доплера и рывок выводятся, но не проверены: смоделированный рывок Pulsar X1 при пролёте над головой составляет около 1,0 Гц/с^2 против опубликованного 1,26 | leo_fusion::geom (EarthOrbit); leo_fusion::doppler (range_rate, doppler_envelope) |
| Позиционирование по Доплеру LEO, по одному и по нескольким спутникам, с состояниями дрейфа часов и скорости | Пакетный метод Гаусса — Ньютона для позиционирования по скорости изменения дальности с аналитическими частными производными (d rho_dot / d r = -(I - u u^T)(v_s - v_u)/rho, d/dv = -u, d/d drift = 1), постоянная скорость пользователя как опция, псевдоизмерение высоты для наземного пользователя, демпфированные шаги; формальная ковариация в истинной точке; проекции вдоль трассы, поперёк трассы и по вертикали; точность за один пролёт в зависимости от поперечного смещения пользователя; момент наибольшего сближения. Режим doppler вида leo-pvt добавляет ошибку в зависимости от длины окна и режим сигналов оппортунности только по Доплеру (пресет starlink-sop) | MODELLED | Внутренняя согласованность: восстановление без шума, кинематическое тождество rho_ddot = (|v|^2 - rho_dot^2 + d.a)/rho, продифференцированное численно, нулевой Доплер в момент наибольшего сближения, зеркальное решение для одиночного пролёта и ошибки с начальным значением (seed) относительно формальной ковариации. Значение для Starlink из работы Kozhaya, Saroufim and Kassas (NAVIGATION 72(1), 2025: около 2 м за 20 с по трём спутникам) служит только для сравнения: смоделированный приёмник с идеальными эфемеридами и всеми ошибками, собранными в сигме Доплера 30 Гц, в несколько раз менее точен на том же окне, а приёмник и частота измерений из статьи не воспроизведены | leo_fusion::doppler (solve, formal_covariance, single_pass_geometry, offset_site, closest_approach); leo_fusion::pvt_kind (run_doppler) |
| Совместное позиционирование по псевдодальностям GNSS и LEO с межсистемными смещениями и моделями ошибок для каждого сигнала | Решения методом взвешенных наименьших квадратов Гаусса — Ньютона по любой комбинации систем, одни часы приёмника на каждую систему (межсистемное смещение оценивается вместе с положением) или известное широковещательное смещение относительно опорной шкалы времени; сигмы отдельных измерений задаёт вызывающая сторона, по умолчанию это тепловой шум петли слежения за задержкой движка (navsignal::dll_code_jitter_chips) при C/N0 для данного угла места в сочетании с ошибкой дальности в сигнале в пространстве; невзвешенный DOP (GDOP, PDOP, HDOP, VDOP, TDOP) в местной геодезической системе, формальные сигмы «восток — север — вверх» и сигмы смещений; совместный режим leo-pvt сравнивает решения только по GNSS, только по LEO и объединённые и строит зависимость DOP от числа добавленных спутников LEO | MODELLED | Вручную выведенный DOP для четырёх спутников (один спутник в зените и три на горизонте через 120 град, нормальная матрица которых обращается вручную), структурное тождество, по которому система со своими часами и одним спутником не добавляет геометрии, восстановление положения, часов и смещения без шума и ошибки с начальным значением (seed) относительно ковариации. Только внутренние проверки; с выходными данными приёмника не сравнивалось. Внешнее сравнение 0,30, находка (остаётся MODELLED): на мульти-GNSS сутках IGS (ABMF 2018-05-13, GPS и Galileo C1C, широковещательные эфемериды, Klobuchar) межсистемное смещение согласуется с RTKLIB v2.4.2-p13 rnx2rtkp (медианная разность -0.11 нс после исправления широковещательной групповой задержки 0,30, -0.35 нс до него; порог 1 нс), но лишь 93,6 % из 280 эпох (93,2 % до исправления) находятся в пределах 3 м от координаты ITRF2020 против предварительно зарегистрированных 95 %. Сам RTKLIB достигает 88,2 % на тех же данных, так что порог лежит за пределами возможностей одночастотного позиционирования по широковещательным данным на этой станции в эти сутки и не является расхождением решателей; тест сравнения зафиксирован в репозитории как игнорируемый. Раунд 2 для 0,30, более строгие входные данные при неизменном пороге 3 м / 95 % / 1 нс, находка (остаётся MODELLED): с безионосферной парой Galileo E1/E5a (предварительно зарегистрировано 6927e039) в пределах 3 м находятся 79,9 % эпох (RTKLIB 67,9 %); с прецизионными орбитами, часами, смещениями антенн спутников и кодовыми смещениями CODE MGEX (предварительно зарегистрировано 7d8c3597) — 94,2 % (RTKLIB 94,1 %), а межсистемное смещение отличается от RTKLIB на -1.03 нс, потому что одиночный режим RTKLIB игнорирует смещения антенн спутников (+0,04 нс, когда их не учитывают оба) | leo_fusion::joint_pvt (solve, dop, code_sigma_dll_m, SystemClock); leo_fusion::system (SystemCfg, System); leo_fusion::pvt_kind (run_joint) |
| Сходимость точного абсолютного позиционирования (PPP) только по GNSS и с усилением за счёт LEO | Расширенный фильтр Калмана для PPP с вещественными неоднозначностями по безионосферным коду и фазе: статические координаты, белый шум часов приёмника, одно межсистемное смещение на каждую дополнительную систему, зенитная влажная задержка как случайное блуждание, отображаемая через 1/sin(угол места), вещественная неоднозначность на каждую дугу спутника, добавляемая при восходе и удаляемая при заходе, и ошибка точных орбиты и часов, общая для кода и фазы спутника, обрабатываемая как одно коррелированное двухстрочное обновление в стабилизированной форме Джозефа; измерения моделируются по той же модели; время сходимости (ошибки ниже порогов до конца прогона), кривые ошибок и усреднённое по прогону NEES положения для варианта только с GNSS и для каждого случая с LEO, запускается видом leo-ppp | MODELLED | Хи-квадрат-тест NEES — это проверка внутренней согласованности (истина и фильтр используют одну модель). Тенденция сравнивается с работой Li et al., LEO constellation-augmented multi-GNSS for rapid PPP convergence, J. Geod. 93:749-764 (2019), doi 10.1007/s00190-018-1195-2: время мульти-GNSS 9,6 мин сокращается до 7,0, 3,2, 2,1 и 1,3 мин при 60, 96, 192 и 288 спутниках LEO. Встроенный сценарий даёт 7,4, 4,8, 3,2, 2,7 и 2,3 мин со своими репрезентативными оболочками 1000 км, 60 град, шумами и станциями; орбитальные группировки, шумы и определение сходимости из статьи не воспроизведены, поэтому это MODELLED согласованность тенденции (монотонное сокращение, наибольшая группировка — менее трети времени только по GNSS), а не подтверждение по независимому эталону | leo_fusion::ppp (run, PppScenario, LI_2019) |
| Точность позиционирования в 5G-сетях с неназемным сегментом (NTN) в зависимости от ширины полосы сигнала | Граница Крамера — Рао для времени прихода по среднеквадратичной (габоровской) ширине полосы, c/(2 pi beta sqrt(2 (C/N0) T)), для плоского спектра OFDM (beta = B/sqrt(12)), ограниченного по полосе спектра BPSK (числитель в замкнутом виде) или любого спектра квадратурой, и по частоте комплексного тона, sqrt(3/(2 pi^2 (C/N0) T^3)); решения по времени прихода нисходящих сигналов с неизвестными часами приёмника и доплеровское решение по одному спутнику за пролёт в полосе S 3GPP n256 MSS, запускается видом ntn-positioning | VALIDATED | Опубликованные рабочие значения (P1): Bachl, Lei and Nabeel, arXiv:2608,10270 (2026), границы для одного SSB в NR NTN воспроизведены по карте SSB из 3GPP TS 38,211 собственными численными функциями Kshana (W_rms 1,9616 против 1,96 МГц, sigma_t 38,755 против 39 мкс, sigma_f 100.79/87.28 против 101/87 Гц, sigma_rho 0.5970/0.5831 против 0.60/0.58 м, каждое значение в пределах половины единицы напечатанной последней цифры); среднеквадратичные ширины полосы BPSK-R по Betz 2001, таблица 1 (1.128/3.477 против 1.1/3.5 МГц, дополнительно); ковариации решений по времени прихода и по Доплеру согласуются с numpy.linalg.inv из numpy 2.4.6 на выгруженной геометрии (P2; 5e-15 и 1.2e-5 относительно, пороги 1e-5 и 1e-3). Предварительно зарегистрировано (9f2875db; часть C 0d66dccd). Решение движка joint_pvt::formal_sigma_enu (граница, вычисленная в истинной точке, а не по зашумлённому решению) было написано после того, как первый прогон при 200 кГц не прошёл на 6.5e-5, и затем прогнано заново при неизменном допуске. Формы для плоского спектра и комплексного тона, которые запускает сценарий (gabor_bandwidth_flat_hz, doppler_crb_sigma_hz), доходят до проверки P1 через модульные тесты тождеств внутри крейта. Это границы для канала без многолучевости, а не достигнутая точность. Редакция 0,30: ntn-5g-positioning toa_median_sigma_3d_m 2,0903959 -> 2,0903962 м (NR 5 МГц) и 25,938613 -> 25,938839 м (NB 200 кГц) | leo_fusion::ntn (gabor_bandwidth_flat_hz, gabor_bandwidth_bpsk_hz, gabor_bandwidth_numeric_hz, rms_duration_numeric_s, toa_crb_sigma_m, doppler_crb_sigma_hz, frequency_crb_sigma_hz, NtnScenario::geometry, NtnScenario); leo_fusion::joint_pvt (formal_sigma_enu) |
| Передача времени в UTC с помощью LEO в зависимости от C/N0 и генератора приёмника | Измерения часов по каждому спутнику LEO в зоне видимости в известном положении, объединённые по обратной дисперсии из модели шума псевдодальности, отфильтрованные двухсостоянным (фаза, частота) фильтром Калмана, чей шум процесса — это белый шум частоты и шум случайного блуждания частоты класса генератора (slot_timing::ClockNoise, clock_state::ClockClass; дисперсия выбега holdover::coast_phase_variance), истинные часы с начальным значением (seed) из тех же уровней и выражение системного времени в UTC из IS-GPS-200, раздел 20.3.3.5.2.4, с неопределённостью широковещательного смещения, добавленной как смещение для каждого прогона; режим timing вида leo-pvt перебирает генераторы и смещения C/N0 | MODELLED | Внутренняя согласованность: опубликованное выражение смещения, вычисленное вручную, нормированная ошибка по 40 начальным значениям (seed) и нижняя граница, заданная неопределённостью смещения. Значение NIST для приёмников времени Iridium с миниатюрными атомными часами (менее 40 нс от UTC(NIST) за 40 суток) служит только для сравнения; встроенный сценарий Iridium даёт от 10 до 11 нс СКО при номинальной мощности с репрезентативной ошибкой дальности 5 м. Фликкер-шум частоты и ионосферная задержка не моделируются | leo_fusion::timing (simulate, utc_offset_s, system_to_utc_s); leo_fusion::pvt_kind (run_timing) |
| Покрытие LEO и геометрический фактор DOP для полярных и арктических пользователей по сравнению с GNSS на MEO | Число спутников в зоне видимости и медианные PDOP, HDOP и VDOP с доступностью в зависимости от широты по выбранным долготам и эпохам для одних лишь систем GNSS на MEO, одних лишь систем LEO и всех вместе, у каждой системы своя маска и своя модель часов, запускается полярным режимом leo-pvt; орбиты — наборы элементов SGP4/SDP4 на эпоху перебора (2026-01-01T00:00:00 UTC в полярном режиме), переведённые в земную систему координат по проверенному пути земных орбит (IAU 2006/2000A, UT1 = UTC, без движения полюса) | VALIDATED | Orekit 13.1.8 (Apache-2.0) с Hipparchus 4.0.3: состояния движка в GCRS, повёрнутые в ITRF средствами Orekit (IERS 2010), видимость в WGS-84 TopocentricFrame относительно маски каждой системы, org.orekit.gnss.DOPComputer для одной неизвестной часов и NumPy 2.4.6 numpy.linalg.inv (P2) для нескольких; путь проверен по python-sgp4 и ERFA (строка 'One Earth-orbit path'). Пороги зафиксированы до прогона (предварительно зарегистрировано 72ea9eb0; T2 и T3 — пороги раунда 2 для 0,30). Шаг TEME -> GCRS, замороженный на J2000, делает тест красным (4739 отказов). Только геометрия; без сцинтилляций, рельефа и мощности сигнала. VDOP GNSS растёт к полюсу (от 1,20 на экваторе до 1,51 при 89,9 град для GPS и Galileo во встроенном сценарии), тогда как околополярная оболочка LEO там сходится. История: раунд 2 (3254d456) согласовался на табличных двухтельных состояниях; полное утверждение раунда 1 D8 относительно собственного распространения TLE в Orekit (e947e69d) оказалось находкой: SDP4 в Orekit при e = 0 и его IERS 1996 TEME зафиксированы | leo_fusion::polar (latitude_sweep, latitude_sweep_at, element_sets, satellite_states_at); leo_fusion::joint_pvt (dop); sgp4 (MeanElementSet::from_earth_fixed, SgpOrbit, teme_to_itrs_matrix) |
| Именованные системы LEO PNT как необязательные пресеты данных, каждая со своим источником | Независимые от системы входные данные: каждая система — это оболочки Уокера, явные элементы или пресет GNSS, сигнал (несущая, скорость чипов, ширина полосы, принимаемая мощность или диапазон C/N0), SISRE, сигма Доплера и модель часов; пресеты заполняют только то, что сценарий оставил незаданным, по одному файлу на каждый, с источниками, помеченными как «PUBLIC» (с URL), «WORKSHOP» или «ПРОИЗВОДНЫЙ», а неопубликованные значения указаны как репрезентативные: Xona Pulsar X1/X5, Iridium STL, сигналы оппортунности Starlink, CentiSpace, репрезентативная система в диапазоне C, модель эфемерид ATOMIC с нулевыми часами и один пресет, полученный на семинаре, в необязательном файле пресетов Celeste IOD, исключаемом удалением этого файла и его сценариев | MODELLED | Перенос цитируемых публичных значений, проверенный по структуре (у каждого публичного источника есть URL, схемы Уокера делятся нацело, C/N0 из принимаемой мощности относительно kT при 290 K), а не по внешнему оракулу. Репрезентативные значения названы в каждом пресете и носят иллюстративный характер | leo_fusion::presets (all, by_id, cn0_range_dbhz, noise_density_dbw_hz); leo_fusion::system (SystemCfg::build) |
| Одна система LEO-PNT от начала до конца: проектирование сигнала, бюджет линии на пролёт, навигационное сообщение и объединённое позиционирование, выход каждого этапа передаётся следующему | Вид leo-pnt-chain: проект leo-signal (публичный пресет или встроенный) задаёт центр, ширину полосы, скорость чипов и распределение EIRP полосы leo-pass; пролёт даёт C/N0 отслеживаемой компоненты и ограниченный по полосе джиттер кода на каждую эпоху; линия C/N0 по методу наименьших квадратов от sin(угол места), SISRE сообщения leo-navmsg (подогнанный на орбите спутника пролёта плюс указанный член определения орбиты в сумме квадратов) и несущая и скорость чипов проекта передаются каждой системе LEO в совместном решении leo-pvt и, при необходимости, в случаи LEO в leo-ppp; каждая передача выводится со своим значением и единицей | MODELLED | Самосогласованность передач: каждое передаваемое значение равно собственному выходу предыдущего этапа, а изменение входа предыдущего этапа сдвигает каждый зависящий от него показатель ниже по цепочке. Этапы сохраняют собственные метки; цепочка не добавляет физики и внешнего оракула | leo_pnt_chain (LeoPntChainScenario); leo_pass (BandCfg::signal, design_tracking); leo_navmsg (LeoNavmsgScenario::broadcast_sisre); leo_fusion::pvt_kind; leo_fusion::ppp |
| Обнаружение спуфинга по Доплеру LEO и согласованности геометрии пролёта | Раздел [spoofer] вида leo-pass: спуфер подделывает, согласованно по дальности и скорости изменения дальности, сигналы, наблюдаемые в заявленном положении, которое скачком смещается и/или отодвигается от истинного после момента начала (для каждой полосы LEO и для сигнала GNSS на MEO); приёмник предсказывает каждую скорость изменения дальности по широковещательной орбите и независимому априорному положению и скорости и проверяет измеренные скорости изменения дальности статистикой хи-квадрат обобщённого метода наименьших квадратов на окне эпох (дрейф часов — мешающий параметр или задан априори) по каналам GNSS, каналам LEO и всем каналам, с тепловым шумом петли частотной автоподстройки из C/N0 (Kaplan & Hegarty 2006, раздел 5.6.2); вероятность обнаружения по нецентральному закону хи-квадрат при заданной вероятности ложной тревоги, обнаружение объявляется при заданной вероятности пропуска обнаружения | MODELLED | Замкнутые формы и тождества, а не внешнее измерение: градиент скорости изменения дальности относительно центральной разности, статистика в информационной форме относительно плотной ковариационной формы, чистый дрейф часов, дающий ноль, смещение, объяснимое априорными данными, дающее не более |dx|^2/sigma_p^2, статистика, квадратичная по скачку. Ни одно значение обнаружения не сравнивалось с измеренной атакой; спуфер идеализирован (без признаков мощности, угла прихода или пика корреляции) | leo_link::spoof (range_rate_position_gradient, line_of_sight, fll_frequency_jitter_hz, doppler_consistency_window, doppler_consistency); leo_pass (SpooferCfg, spoof_section) |
| Обнаружение спуфинга по межполосной согласованности многополосного сигнала LEO | Для каждого спутника LEO и каждой пары дальномерных полос раздел [spoofer] формирует безгеометрическую комбинацию псевдодальностей, убирает ионосферную модель приёмника и проверяет её шаг от эпохи к эпохе относительно кодового шума двух полос и заданной допустимой немоделируемой скорости изменения ионосферы (двусторонний гауссов тест, точная вероятность обнаружения); спуфер, подделывающий одни полосы и не подделывающий другие, или все полосы без ионосферы виден в момент начала; тот, кто подделывает все полосы и имитирует ионосферу, не виден, что и указано в результате | MODELLED | Тождества: ступенька начала для спуфера без ионосферы равна разности смоделированных ионосферных задержек пары, порог равен двустороннему нормальному квантилю, умноженному на стандартное отклонение ступеньки, плюс граница скорости. Ионосферная модель приёмника — это модель движка, поэтому подлинная невязка по построению имеет нулевое среднее; внешнего оракула нет | leo_link::spoof (cross_band_step); leo_pass (spoof_section: pairs, cross_band) |
| Зондирование ионосферы: наклонное TEC по двухполосной задержке пролёта LEO | Для каждой пары полос спутника leo-pass отчёт даёт наклонное полное электронное содержание, которое безгеометрическая кодовая комбинация восстанавливает в пике пролёта, (P2 - P1) f1^2 f2^2 / (40,3 (f1^2 - f2^2)), и его 1-сигму по тепловому кодовому шуму двух полос, так что любую многополосную конструкцию LEO-PNT можно оценить как ионосферный зонд | MODELLED | Тождество дисперсии первого порядка, точное по построению относительно собственной задержки первого порядка движка (чей масштаб 1/f^2 имеет уровень VALIDATED относительно IS-GPS-200 в своей строке); прецизионность определяется только тепловым кодовым шумом, без многолучевости и межчастотных смещений. Раунд 2 для 0,30, измерено (предварительно зарегистрировано 5e795f93), находка (остаётся MODELLED): глобальная ионосферная карта CODE CODG1330.18I относительно кода ABMF C1C/C2W со смещениями CODE даёт 33 из 36 средних по дугам в пределах 3 TECU (худшее +6,84 TECU на вечерней дуге; СКО по эпохам 3,95 TECU) против порога «каждая дуга»; не проверено | leo_pass (IonoFreePair::geometry_free_stec_tecu, geometry_free_stec_sigma_tecu); leo_link::iono::geometry_free_stec_tecu |
| Ковариация датума лунной системы отсчёта с оцениваемыми станциями по сравнению с расширенной точностью в 50 знаков | Семипараметрическая ковариация датума Гельмерта сценария lunar-frame-campaign с оцениваемыми земными станциями (станция 1 закреплена), как её вычисляет lunar_frame_campaign в binary64: совместная информация Фишера по станциям и маякам, накопленная из якобиана задержки, блок станций, маргинализованный дополнением по Шуру через спектральное обращение Якоби, H = AᵀSA, сформированная с планом Гельмерта и обращённая спектрально. Задача плохо обусловлена по построению (число обусловленности Гельмерта от 2.1e8 до 2.3e8, число обусловленности совместной информации от 1.6e12 до 3.0e13): относительное изменение дополнения по Шуру на 1e-9 сдвигает сигмы датума до 28 %. Выводятся: семь сигм датума, число обусловленности Гельмерта и самое слабое направление. УТВЕРЖДЕНИЕ, СУЖЕННОЕ: сигмы датума и число обусловленности движка лежат в пределах априорной границы ошибки наихудшего случая для обратно устойчивого конвейера двойной точности на этой задаче; это не означает, что они так же точны, как позволяет двойная точность (факторизационный путь примерно в тысячу раз точнее на тех же входных данных, а необязательный решатель по квадратному корню — примерно в десять миллионов раз), а самое слабое направление проверено только там, где его порог меньше прямого угла (контроль с неподвижными станциями) | VALIDATED | mpmath 1.3.0 (BSD-3-Clause) с 50 значащими цифрами, самопроверка при 80 (согласие 1.1e-38 или лучше), на зафиксированных в репозитории якобиане, весах и плане Гельмерта движка: собственное LU-решение mpmath для дополнения по Шуру, его обращение для H и его спектральное разложение Якоби (P2, независимая численная библиотека). Предварительно зарегистрировано 804662d5 до появления фикстуры, пороги — из формулы обратной ошибки первого порядка: константа (3n+1)n + m, умноженная на единичное округление (Higham, Accuracy and Stability of Numerical Algorithms, теорема 10,4, форма уровня B), умноженная на точную чувствительность первого порядка каждой величины к совместной информации, дополнению по Шуру и H. Измерено: сигмы датума в пределах 4.8e-6 на 2026-03-18 (пороги от 9.6e-2 до 2.2e-1), 9.7e-6 на 2024-01-01 (пороги от 2.8e-2 до 6.9e-2) и 2.0e-14 с неподвижными станциями (пороги от 1.0e-11 до 2.8e-7); число обусловленности в пределах 4.6e-6, 1.3e-5 и 4.1e-14. В сценариях с оцениваемыми станциями пороги соответствуют наихудшему случаю и на четыре порядка выше измеренной ошибки, а порог самого слабого направления там превышает прямой угол, поэтому эта проверка не засчитывается; в контроле с неподвижными станциями самое слабое направление согласуется до 6.6e-16 рад против порога 9.4e-11, измеренное хордой между единичными векторами (прежний компаратор на acos не мог различать углы меньше 1.5e-8 рад; порог не изменён). Диагностика: маршруты Холецкого и QR в NumPy 2.3.5 достигают 9e-9 и 5e-9 на входных данных 2024-01-01, его маршруты обращения и собственных значений — 2.9e-6 и 6.2e-6: движок в пределах своей границы, но примерно в тысячу раз менее точен, чем факторизационный маршрут. Проверяет линейную алгебру на зафиксированных входных данных, но не якобиан (его проверяет ветвь SPICE в строке кампании) и не физическую точность иллюстративной кампании | lunar_frame_campaign, fim |
| Решатель датума в форме квадратного корня из информации по сравнению с расширенной точностью в 50 знаков | Необязательный решатель в форме квадратного корня из информации (lunar-frame-campaign solver = "srif"; по умолчанию без изменений), который никогда не формирует и не обращает информационную матрицу датума: QR-разложение Хаусхолдера (ортогонально-треугольное разложение) взвешенного якобиана задержки как обновление измерения фильтра в форме квадратного корня из информации, земные станции маргинализуются через замыкающий треугольный блок (чьё произведение Грама есть дополнение по Шуру), второе QR-разложение R_bb A для семипараметрического датума Гельмерта, сигмы как нормы строк обратной треугольной матрицы, а спектр (число обусловленности, самое слабое направление) — из односторонней якобиевской сингулярной декомпозиции. Скалярные произведения компенсируются безошибочным произведением с разбиением Деккера, так что каждая операция — это правильно округлённая базовая операция IEEE-754 или квадратный корень; одинаковые результаты на всех платформах выводятся из этого, а не проверяются на разных платформах | VALIDATED | mpmath 1.3.0 (BSD-3-Clause) с 50 значащими цифрами, самопроверка при 80 (согласие 1.4e-43 или лучше), на зафиксированных в репозитории якобиане, весах и плане Гельмерта движка (P2, независимая численная библиотека: собственные LU-решение, обращение, разложение Холецкого и спектральное разложение Якоби в mpmath). Предварительно зарегистрировано b41908c9 до написания решателя, пороги — из границы обратной ошибки первого порядка в форме квадратного корня: константа mn плюс (3n+1)n, умноженная на единичное округление (Higham, Accuracy and Stability of Numerical Algorithms, теорема 19,4 и глава 8), умноженная на точные чувствительности. Измерено: сигмы датума в пределах 3.0e-13 на 2026-06-09 (пороги от 4.1e-7 до 5.3e-7), 1.9e-15 с неподвижными станциями (пороги вплоть до 4.8e-12), 3.8e-13 на 2026-03-18 и 2.3e-13 на 2024-01-01, где спектральный решатель по умолчанию ошибается на 4.8e-6 и 9.7e-6; число обусловленности в пределах 4.9e-13; самое слабое направление в пределах 1.4e-13 рад (контроль 1.7e-16 против 5.1e-10). ПРЕДЕЛ ПРОВЕРКИ: пороги подтверждают лишь ошибки датума ниже примерно 2e-7 относительно; измеренные значения порядка 1e-13 — это наблюдения, а не то, что подтверждают пороги. Проверка отвергает спектральный решатель по умолчанию (сигмы 9.7e-6 против 2.9e-7 на 2024-01-01; на определяющую дату 1.3e-6 против 4.9e-7, запас от 1,3 до 2,6) и ошибочно взятое обратное треугольное (нормы столбцов: красный), но перевёрнутый знак Хаусхолдера, некомпенсированное скалярное произведение и сигмы из спектрального обращения H, сформированной из множителя в форме квадратного корня (3.7e-9), все проходят, так что она не показывает, что каждый шаг в форме квадратного корня необходим. Проверяет линейную алгебру необязательного решателя на зафиксированных входных данных, но не якобиан и не решатель по умолчанию; побитовая воспроизводимость на разных платформах выводится из используемых операций и проверена только как идентичность при повторном запуске на одной платформе | linalg_sr, lunar_frame_campaign |
| Морские мониторы доверия: арифметика, на которой они основаны (декодирование NMEA, геодезические смещения, кинематические статистики и статистики невязок датчиков) | Для судна receiver_trust декодирует предложения NMEA 0183, которые выдают приёмник и его приборы (GGA, RMC, VTG, HDT, VHW, VBW, ZDA, GSV), формирует смещение «восток — север» между определениями положения (maritime::en_offset_m) и по ним вычисляет статистики, на которых основаны решения мониторов: подразумеваемую скорость, невязку счисления пути, подразумеваемое ускорение и подразумеваемую скорость поворота на окнах 30 с, невязки «курс по компасу — путевой угол», «скорость по лагу — скорость относительно грунта» и высоты антенны (медианы за 10 с), а также разброс и рост отношения сигнал/шум спутниковых сигналов. | VALIDATED | ЧТО ПРОВЕРЯЕТСЯ ВНЕШНЕ, сформулировано узко: (1) декодирование каждого поля, которое читают мониторы, относительно pynmea2 1.19.0 (MIT) на 8 синтетических журналах (1 086 эпох) с точностью до 1e-9 в единице поля (широта и долгота, высота, отделение геоида, HDOP, скорости, путевой угол, курс, отношение сигнал/шум; целые числа и даты точно; время суток с точностью до 1e-6 с), наибольшие расхождения на уровне последней цифры числа двойной точности; (2) смещение «восток — север» между двумя определениями положения, как расстояние и азимут, относительно геодезической линии WGS84 из geographiclib 2,1 (MIT) на 223 парах определений положения с базами до 2 км, на широтах от -45 до 70 градусов и через антимеридиан, с точностью до 0,01 м и 0,001 градуса (азимут сравнивается со средним азимутом геодезической линии, то есть с направлением хорды); (3) входные статистики мониторов на 341 оценённой эпохе синтетического рейса длительностью 400 с с поворотом и скачком положения относительно пересчётов на Python, которые используют geographiclib для расстояния и азимута, pynmea2 для декодирования и numpy для медиан и стандартных отклонений: подразумеваемая скорость с точностью до 0,005 м/с, невязка счисления пути до 0,02 м, ускорение до 5e-4 м/с^2, скорость поворота до 1e-3 град/с, медианы невязок и разброс и рост отношения сигнал/шум до 1e-6. ЧТО НЕ ПРОВЕРЯЕТСЯ: длины окон, допуски и пороги мониторов — собственные правила этого проекта; Python воспроизводит их по той же документации, поэтому совпадение подкрепляет реализацию арифметики, но не сами правила. Для предложения THS нет класса в pynmea2, а предложение ROT не читается; ни то, ни другое не охвачено. Таблица соответствия источника NMEA и номера спутника идентификатору спутника в стиле RINEX — собственная таблица проекта (сравниваются только номер, источник и значение). Для входов шага времени, часов хоста и статуса аутентификации оракула нет. Все данные — синтетический текст из receiver_trust::synth; ничто здесь не является измерением, и не делается никаких утверждений о том, как любой монитор работает при реальных помехах. Азимут: сравнивается со средним азимутом геодезической линии. Предварительно зарегистрированное сравнение с прямым азимутом в определении положения 1 не прошло при 0,001 градуса (77 из 223 пар, наихудшее 8.3e-3 градуса) из-за расхождения в определении, а не из-за арифметики; поправка была сделана после первого прогона, и оба результата записаны (сравнение с прямым азимутом остаётся в тесте как описательная, не зарегистрированная заранее граница 0,01 градуса). Раскрыто: первые прогоны выявили входные данные, задействовавшие слишком мало (ускорение и скорость поворота обнулялись на каждой эпохе, а трек через антимеридиан его не пересекал), ошибку в синтетическом генераторе (нет перехода долготы через границу) и, для азимута, что зарегистрированная величина оракула (прямой азимут геодезической линии в первом определении положения) отличается от направления хорды примерно на половину сближения меридианов (77 из 223 пар вне 0,001 градуса, наихудшее 8.3e-3); входные данные исправлены, а азимут сравнён со средним азимутом при том же допуске (поправки 1—3 в предварительной регистрации, внесённые после просмотра результатов и поэтому не слепые); сравнения путевого угла и курса сделаны круговыми (360 и 0 градусов — один и тот же курс, поправка 5). Мутация: масштабирование восточного смещения на 1e-4 не проходит геодезическое сравнение. | receiver_trust (ingest, maritime) |
| Морская оценка доверия: агрегирование свидетельств мониторов в оценку от 0 до 100 и её три диапазона | Каждый монитор сводит свои свидетельства к отношению статистики к порогу; оценка равна 100 минус сумма по мониторам произведений веса на ограниченную линейную рампу отношения (0 до 0,5, 1 при 1,5), ограниченная диапазоном от 0 до 100 и округлённая до 0,1, с границами диапазонов 90 и 55; каждая эпоха перечисляет мониторы, снизившие оценку, и их баллы. | MODELLED | Реализация относительно спецификации, НЕ внешний оракул: независимая переписанная «с чистого листа» реализация на Python (scripts/maritime_score_cleanroom.py), написанная читателем, которому были даны только docs/RECEIVER-TRUST.md и docs/MARITIME-TRUST.md, но не исходный код на Rust, согласуется с score_from_ratios на 600 векторах отношений (оценка, диапазон, баллы и порядок снижений, разность 0) после того, как документация была дополнена там, где первый читатель нашёл в ней пробелы или противоречия (порядок при равенстве, округление, отношение для монитора «прошёл или не прошёл», два примера, числа в которых не соответствовали формуле). Это показывает, что документации достаточно и код делает то, что в ней сказано. ЧТО НЕ ПРОВЕРЯЕТСЯ и почему строка остаётся MODELLED: само правило (веса, рампа, границы диапазонов, удержание свидетельств) — собственное правило проекта, зарегистрированное заранее, но без внешнего источника, и ничто здесь не показывает, что оценка 80 или 40 означает то, что хотел бы видеть штурман при реальных помехах; никаких значений такого рода не приводится. Пороги мониторов также собственные для проекта (строка A проверяет только их арифметику). | receiver_trust (score, monitors, live) |
| Соответствие учебного потока NMEA 0183 и декодированные значения | Синтетические потоки NMEA 0183 для мостика в учебных целях для экипажа (kshana nmea-scenario): GGA, RMC, VTG, ZDA, GNS, GSA, GSV, HDT, VBW и маркер PKSHT, сгенерированные по истинному треку со смоделированными эффектами приёмника, неба, подавления (jamming) и спуфинга. Только текстовый вывод; ничего не передаётся. | VALIDATED | ЧТО ПРОВЕРЯЕТСЯ ВНЕШНЕ, сформулировано узко: все 225 227 предложений восьми синтетических учебных потоков (четыре сценария библиотеки, начальные значения (seed) 1 и 7; GGA, RMC, VTG, ZDA, GNS, GSA, GSV, HDT, VBW и маркер PKSHT) разбираются в pynmea2 1.19.0, независимом разборщике NMEA, с верной контрольной суммой и ожидаемыми источником и типом. Положение, скорость относительно грунта, путевой угол, курс, время и дата UTC, статус определения положения и число спутников в GGA, которые он декодирует, равны истинному треку генератора в пределах допусков, зафиксированных до первого сравнения (1.5e-6 град, 0,06 уз, 0,07 км/ч, 0,11 град для путевого угла, 0,5 град для курса, 0,02 с), запуск scripts/gen_nmea_training_ref.py с фикстурой в tests/fixtures/nmea_training_ref/. Ожидание числа спутников в GGA было исправлено после первого прогона в соответствии с соглашением NMEA (00 без определения положения); числовые допуски не изменены относительно коммита предварительной регистрации. ЧТО НЕ ПРОВЕРЯЕТСЯ: что какой-либо приёмник, картплоттер или система мостика принимают эти потоки; реалистичность моделей приёмника, неба, подавления (jamming) или спуфинга (номинальное небо, смоделированный шум, профили увода и повтора — всё MODELLED); HDOP, высота и содержимое DOP и GSA/GSV сверх синтаксиса и числа элементов; журнал инструктора. Ничего не передаётся, и не заявляется никаких характеристик защиты от подавления или спуфинга. | nmea_synth (track, sentences, scenarios); cli nmea-scenario |
| Карта помех: значения кодов точности, значения «недоступно» в AIS, назначение ячеек сетки, длина маршрута по состояниям ячеек и маскирование суши | Толкование кодов точности и целостности навигации ADS-B, которые использует карта (граница EPU, которой соответствует код NACp, граница радиуса охвата, которой соответствует код NIC, и низкий и хороший классы, которые метод из них выводит); значения «недоступно» для положения и скорости в AIS, которые читатель AIS отбрасывает; фиксированная ячейка сетки широты и долготы, в которую попадает положение; длина маршрута и её разбивка по состояниям ячеек (ухудшено, не ухудшено, не оценено, не наблюдалось), которую выдаёт оценка экспозиции маршрута; и лежит ли положение вглубь суши от полигона суши больше чем на буфер. Ячейка, помеченная как ухудшенная или аномальная, — это утверждение о сообщаемых полях точности или неправдоподобных положениях, а не вывод о наличии помех, и ничто здесь этого не проверяет. | VALIDATED | ЧТО ПРОВЕРЯЕТСЯ ВНЕШНЕ, сформулировано узко: пять независимых реализаций читают одни и те же синтетические входные данные. (1) pyModeS 2,21 декодирует синтетические кадры DF17 эксплуатационного статуса и положения в воздухе; границы EPU по NACp в Kshana согласуются до 0,5 м (наибольшая разность 0,4 м), границы охвата по NIC для кодов от 5 до 11 — до 1 м, а низкий и хороший классы относят все 12 кодов NACp и каждый код NIC, который выдаёт оракул (от 0 до 11), по ту же сторону порогов, которые подразумевают границы оракула (0 расхождений). (2) pyais 3.3.0 декодирует предложения AIVDM типа 1, биты полезной нагрузки которых скрипт упаковывает из необработанных значений полей ITU-R M.1371; Kshana отвергает ровно те декодированные положения «недоступно» (широта 91, долгота 181) и скорость (102,3 уз) и сохраняет значения от 0 до 102,2 уз как декодированные (0 расхождений на 94 кадрах). (3) covers() из shapely 2.2.0 на полигонах ячеек согласуется с grid::Grid::cell_of для 1770 точек при размерах ячеек 0,5, 0,25, 1 и 0,07 градуса, включая точки у границ, оба полюса и антимеридиан (0 расхождений). (4) пересечение маршрута и ячеек в shapely 2.2.0 с длинами геодезических линий WGS84 из GeographicLib 2,1 согласуется с оценкой экспозиции маршрута на 8 синтетических маршрутах, включая два, пересекающих антимеридиан: общая длина до 0,6% (наибольшая разность 0,49%, сфера против эллипсоида) и длина каждого состояния ячеек до 0,6% плюс 125 м на каждый фрагмент (наибольшее — 21% этого допуска). (5) contains() из shapely 2.2.0 с азимутально-равнопромежуточным расстоянием pyproj до береговой линии согласуется с маской суши 2000 м на 992 точках центров решётки вокруг четырёх синтетических островов, один из них с озером (0 расхождений; 4 точки в пределах 20 м от буфера исключены и подсчитаны). Допуски зафиксированы в tests/fixtures/interference_map_ref/PREREGISTRATION.md до какого-либо сравнения и не менялись после; два дефекта синтетических входных данных, найденные первым прогоном, записаны там же. ЧТО НЕ ПРОВЕРЯЕТСЯ: Kshana не декодирует необработанные кадры Mode S и предложения AIVDM, так что проверяется её толкование уже декодированных значений, а не декодер. Радиусы охвата NIC оракула для кодов 1, 2 и 4 отличаются от DO-260B (20, 8 и 2 NM), поэтому численно сравниваются только коды от 5 до 11. Правило положения (0, 0), нижняя граница высоты, фильтр типа источника, хеширование идентификаторов, пороги и статистики метода и выбор размера ячейки — собственные решения Kshana и ни с чем не сверяются. Сравнение маршрутов использует одно и то же определение пути, прямого по широте и долготе, с обеих сторон, так что проверяются длины и назначение ячеек, а не то, что этот путь правильный для судна или воздушного судна. Ничто здесь не показывает, что помеченная ячейка — это помеха. Входные данные синтетические; фикстуры оракула записываются скриптом scripts/gen_interference_map_ref.py (pyModeS распространяется под GPL-3.0 и используется только в этом автономном скрипте; для CI Python не нужен). | interference_map (adsb::nacp_epu_bound_m, adsb::nic_rc_bound_range_m, adsb::AdsbParams::classify, ais::ais_position_is_valid, ais::ais_speed_kn, grid::Grid::cell_of, route::exposure, land::LandMask::is_inland) |
| Область источника помех: допустимая область излучателя по сообщениям о положении воздушных и морских судов | Допустимая область, где может находиться источник ухудшения навигационных сообщений, по сообщениям о положении ADS-B (NIC/NACp) или AIS: радиопрямая видимость на радиусе Земли 4/3 по высоте сообщения и диапазону высот антенны излучателя, ограниченная эффективная дальность для неизвестной мощности, затронутые единицы смещают апостериорное распределение к своей зоне досягаемости, а незатронутые единицы с прямой видимостью смещают его в обратную сторону; единицы объединяются в сеансы во времени и пространстве. Результат — области наибольшей плотности на заданных уровнях доверия, апостериорный центроид с эллипсом моментов, начало, конец и длительность сеанса, затронутая площадь и число различных воздушных судов выше минимума для публикации, суточный профиль и часы в сутки. Без учёта рельефа; один источник на сеанс; достоверность зависит от модели. Необязательное объединение с определением TDOA по geolocation. | MODELLED | Пока внешних нет. Только синтетические прямо-обратные циклы от генератора, который использует модель оценивателя, поэтому они проверяют код и калибровку заявленных уровней в рамках этой модели и ничего не говорят о реальных излучателях. Внешняя проверка по опубликованным площадкам передатчиков Jammertest 2025 была зарегистрирована заранее (docs/emitter-region/PREREGISTRATION.md, утверждена владельцем до любого оцениваемого прогона) и выполнена один раз (docs/emitter-region/RESULTS.md): ADS-B NOT ASSESSABLE (2 запланированных сеанса, меньше зарегистрированного минимума 4) и AIS NOT ASSESSABLE (нет опубликованного сеанса), поэтому ни один порог не проверялся и строка остаётся MODELLED | interference_map::emitter (estimate, sessions, build_units, profile, GaussianFix::from_tdoa), interference_map::emitter_out (locate), kshana interference-map locate |
| Форматы передачи телеметрии доверия: текстовая экспозиция Prometheus и JSON OpenTelemetry OTLP/HTTP | Доверие к GNSS (оценка, диапазон, причины, шлюз и, по запросу, положение) в виде текстовой экспозиции Prometheus, выдаваемой на /metrics, и в виде метрик OTLP/HTTP JSON, с ограничением кардинальности меток причин. | VALIDATED | ЧТО ПРОВЕРЯЕТСЯ ВНЕШНЕ, сформулировано узко: наша текстовая экспозиция Prometheus для синтетического потока из 84 строк (значения меток с кавычками, обратными косыми чертами, переводами строк и текстом не в ASCII, 64 ряда причин плюс свёртка 'other', измерители шлюза и положения) принимается текстовым разборщиком prometheus_client 0.26.0, а семейства метрик, типы, текст справки, наборы меток и значения, которые он читает, в точности равны состоянию реестра (значения — по равенству f64). Наш OTLP/HTTP JSON для того же реестра разбирается protobuf 7.36.2 json_format.Parse(ignore_unknown_fields=False) в ExportMetricsServiceRequest из opentelemetry-proto 1.45.1, и каждое имя метрики, описание, единица, вид, монотонность, временная агрегация, атрибут, значение, время начала и время равны состоянию реестра в точности. Оба разборщика показали, что отвергают неизвестное поле, значение неверного типа и неправильно сформированную строку (scripts/gen_telemetry_formats_ref.py). Схема 1,3 (0,36), зарегистрирована заранее (fb226057) до того, как какой-либо инструмент её прочитал: для синтетического потока схемы 1.3 из 64 строк (статусы геометрии, DOP, метки и потеря сигнала присутствуют, null, отсутствуют и неизвестны; классы снижений; неразбираемые строки) те же два разборщика читают ряды геометрии (Prometheus kshana_trust_geometry*, OTLP kshana.geometry.*) и метку класса на kshana_trust_reason_active в точности так, как следует из реестра (24 семейства и 54 выборки; 12 метрик и 31 точка), promtool 3.5.0 check metrics завершается с кодом 0 без замечаний, OpenTelemetry Collector contrib 0.135.0 принимает OTLP/HTTP JSON (статус 200, ничего не отвергнуто), а его файловый экспортёр записывает запрос без изменений (xval/telemetry-1.3, с условием на данные: архивы релизов загружаются с зафиксированным SHA-256, а их выходные данные зафиксированы в репозитории). ЧТО НЕ ПРОВЕРЯЕТСЯ: конечная точка HTTP, доставка, тайм-ауты и переподключение оракулом не проверяются, равно как и приёмник prometheus в Collector; реестр читается через методы доступа, поэтому неисправность в самом состоянии реестра не будет поймана; проверка «зафиксированный выход актуален» для OTLP выполняется только с функцией otlp; имена метрик и их полезность для операционного центра не проверены; CEF и LEEF не охвачены (см. следующую строку). | telemetry (prometheus: Registry, render; otlp: build_payload, Exporter (feature otlp); sample) |
| События SIEM телеметрии доверия: Common Event Format (CEF) поверх syslog | События смены диапазона (или по каждой эпохе) в виде полезной нагрузки Common Event Format в оболочке RFC 5424 поверх UDP или TCP, с документированным отображением полей и экранированием CEF. | VALIDATED | ЧТО ПРОВЕРЯЕТСЯ ВНЕШНЕ, сформулировано узко: относительно двух независимых разборщиков с открытым кодом (оракулы: pycef 1,11 (PyPI, MIT); кодек CEF для Logstash (logstash-codec-cef 6.2.7 в Logstash 8.15.3)), на корпусе строк CEF, записанных этим крейтом (157 до поправки 4 ниже, 170 после неё, 176 после поправки 5): каждая смена диапазона и каждая эпоха зафиксированного в репозитории синтетического потока доверия из 84 строк, а также состязательный текст в именах хостов, причинах, метках времени и именах шлюзов, содержащий знаки равенства, обратные косые черты, обратную косую черту со знаком равенства, вертикальные черты, переводы строк, возвраты каретки, табуляции, серии пробелов, многобайтные и астральные символы и подобия ключей, крайние оценки и смещения, каждый диапазон с предыдущим диапазоном и без него. pycef разбирает строки, заголовок которых не требует экранирования (153 до поправки 4, 166 после неё, 172 после поправки 5), и точно восстанавливает поля заголовка, уровень важности, точный набор ключей расширения и каждое значение (числа — по равенству f64) по правилам снятия экранирования из спецификации CEF, которых pycef не применяет и которые применяет scripts/gen_cef_ref.py. Кодек Logstash, который снимает экранирование сам, разбирает каждую строку (157, затем 170, затем 176), удовлетворяет тому же порогу, а также восстанавливает четыре поля заголовка, требующие экранирования (вертикальная черта, обратная косая черта и знак равенства в строке версии), которые шаблон заголовка pycef прочитать не может, так что экранирование заголовка опирается только на кодек Logstash. Порог сравнения был зарегистрирован в коммитах 5172e579 (pycef) и 0a7598aa (Logstash) до запуска любого из разборщиков, и оба выполнили его при первом сравнении. Раскрыты пять поправок. Поправки (1)—(3) не затрагивали ни правило сравнения, ни ожидаемое значение: (1) утверждение о размере корпуса исправлено с 5 на 4 смены диапазона — ошибка подсчёта, поскольку в потоке 4; (2) исправлена обвязка разделителя конвейера в запуске Logstash после первой попытки, не давшей событий; (3) оценка доверия и смещение эпохи перенесены из целочисленных полей CEF cn1 и cn2 в поля с плавающей точкой cfp1 и cfp2 — изменение формата передачи, сделанное в этом выпуске, после чего корпус был сгенерирован заново, а оба оракула запущены повторно при неизменном пороге и снова его выполнили. Поправка (4), 0,36, расширила корпус и ожидаемый набор ключей, зарегистрирована в d6331429 до того, как любой из разборщиков обработал новые строки: входные данные схемы 1,3 добавляют геометрию спутников в пользовательские поля cs6 (метка geometry: статус, затем ';' и классы снижений), cfp3 (geometryHdop) и cfp4 (geometryPdop); 13 случаев геометрии (корпус до 170 строк) и три новых ключа; оба выполнили порог, в остальном без изменений, при первом сравнении (pycef 166 из 170 строк разобрано, 4 случая заголовка уровня 2 как прежде; Logstash 170 из 170). Поправка (5), 0,36, добавила 6 случаев метки геометрии (корпус до 176 строк), зарегистрирована в 9a8e4fa9 до того, как любой из разборщиков обработал их: для входных данных, несущих метку геометрии, cs6 получает третье поле (';' и метку), а cn1 (geometryUsedSatellites) — используемые спутники; таблица отображения кодека Logstash была прочитана заранее (полей flexString нет, поэтому cs6, а не flexString1); оба выполнили порог при первом сравнении (pycef 172 из 176, Logstash 176 из 176), и каждая более ранняя эталонная запись воспроизведена без изменений. ЧТО НЕ ПРОВЕРЯЕТСЯ: ни один из разборщиков не проверяет типы значений cfp (оба хранят их как текст), так что использование полей с плавающей точкой опирается на словарь CEF, а не на оракул; ни один коммерческий SIEM не запускался; имена ключей расширения и их отображение — выбор этого крейта, а разборщики показывают лишь, что они читаются обратно как записаны; оболочка RFC 5424, доставка, тайм-ауты и переподключение не охвачены; pycef — небольшой разборщик, последний раз выпущенный в 2020 году, и кодек Logstash — более весомый оракул. | telemetry (syslog: cef, rfc5424, SyslogSink; time) |
| События SIEM телеметрии доверия: Log Event Extended Format (LEEF) поверх syslog | События смены диапазона (или по каждой эпохе) в виде полезной нагрузки Log Event Extended Format 2,0 в оболочке RFC 5424 поверх UDP или TCP, с документированным отображением полей. | MODELLED | ЧТО ПРОВЕРЯЕТСЯ: собственные тесты этого крейта на точное совпадение строк для документированного отображения полей LEEF и поля оболочки RFC 5424; поддерживаемого разборщика LEEF с открытым кодом не существует (поиск по индексу пакетов Python его не нашёл), поэтому формат проверяется по собственной спецификации, прочитанной тем же автором, а не по внешнему оракулу. ЧТО НЕ ПРОВЕРЯЕТСЯ: принимаются ли полезные нагрузки LEEF разборщиком или SIEM какого-либо поставщика; правила экранирования сверх документированных; поведение настоящего сборщика syslog. | telemetry (syslog: leef, rfc5424, SyslogSink; time) |
| Целостность пакета доказательств: подпись, цепочка хешей и процедура проверки | Подписанный пакет доказательств события доверия к GNSS с цепочкой хешей: SHA-256 по каждому файлу и цепочка по манифесту, подпись Ed25519 по точным байтам манифеста и средство проверки, которое называет каждый сбой (изменённый, удалённый, переименованный, подменённый или добавленный файл, переупорядоченный или изменённый манифест, манифест, заново хешированный без ключа, повторно подписанный пакет, неверный закреплённый ключ и токен метки времени, который удалён, заменён, является мусором или относится к другому документу). | VALIDATED | ЧТО ПРОВЕРЯЕТСЯ ВНЕШНЕ, сформулировано узко: (1) функции Ed25519, которые пакет использует для подписи и для строгой проверки (evidence::bundle::sign_detached, evidence::verify::verify_detached), воспроизводят открытые ключи и подписи тестовых векторов RFC 8032, раздел 7,1, 1, 2, 3 и 1024 байт в байт, принимают их и отвергают каждый перевёрнутый бит вектора 1 и каждый седьмой бит остальных, а также неканоническую подпись S+L; векторы разбираются из текста RFC и воспроизводятся двумя независимыми реализациями (cryptography/OpenSSL и PyNaCl/libsodium) в scripts/gen_ed25519_rfc8032_ref.py. (2) evidence::bundle::sha256_hex, хеш, лежащий в основе каждого хеша пакета и цепочки, в точности воспроизводит примеры SHA-256 из FIPS 180-4 (abc; сообщение из 448 бит; миллион a), пустое сообщение и дайджесты hashlib для лестницы длин от 0 до 130 байт на границах заполнения. (3) Средство проверки, написанное на Python только по docs/EVIDENCE-PACKS.md (scripts/evidence_verify_cleanroom.py: hashlib и cryptography; его автор не читал код на Rust), в точности согласуется с проверяющим на Rust на 71 синтетических нетронутых и подделанных пакетах по вердикту, набору сбоев с именами файлов, вердикту по подписи и голове цепочки, пересчитанной по файлам, и той, которую записывает манифест. При первом прогоне согласовались 64 из 71; расхождения были одной неоднозначностью спецификации (проверка закреплённого ключа по нечитаемому манифесту), одним отклонением интерфейса оракула и одним не полностью построенным случаем; предложение спецификации уточнено, оракул заново реализован по тексту, а случай дополнен, без изменения допусков и ожиданий (записано в коммите d54e14c6). ЧТО НЕ ПРОВЕРЯЕТСЯ: средство проверки «с чистого листа» — независимая реализация другого автора, а не сторонний авторитет, и оно разделяет выбор спецификации, поэтому оно подкрепляет эту реализацию правил, а не сами правила; векторы проверяют примитивы, а не замысел формата пакета. В этой строке токен RFC 3161 читается только ради отпечатка сообщения, а тестовые токены синтетические и не подписаны; подпись и цепочка удостоверяющего центра проверяются по выбору (kshana evidence verify --tsa-ca) отдельной строкой 'RFC 3161 timestamp-token signature and chain verification'. Случаи подделки синтетические. Ничто здесь не является ни юридическим заключением о каком-либо пакете, ни его аттестацией. | evidence (bundle: create_bundle, sign_detached, chain_link, sha256_hex; verify: verify_bundle, verify_detached; tsr; assemble; cli) |
| Проверка подписи и цепочки токена метки времени RFC 3161 | evidence::tsa::verify_token и необязательный kshana evidence verify --tsa-ca <anchors.pem> для timestamp.tsr пакета: TimeStampResp или «голый» TimeStampToken по RFC 3161 (CMS SignedData над TSTInfo), проверяемый автономно относительно доверенных якорей так, как его проверяет openssl ts -verify: тип содержимого и дайджест сообщения в подписанных атрибутах над TSTInfo; подпись над подписанными атрибутами (RSA PKCS#1 v1.5, RSASSA-PSS, ECDSA P-256 и P-384; открытые операции RSA на crypto-bigint); хеш ESS signing-certificate v1 (SHA-1) или v2, называющий сертификат подписанта, найденный среди недоверенных сертификатов токена и вызывающей стороны; критическое, единственное расширенное использование ключа timeStamping у подписанта; цепочка до доверенного самовыданного якоря с подписью каждого сертификата, статусом УЦ и использованием ключа, и каждый сертификат действителен в момент genTime токена; и отпечаток сообщения относительно данных. Не проверяется: отзыв (CRL, OCSP), ограничения имён и политик, nonce | VALIDATED | OpenSSL 3.0.13 (openssl ts -verify -attime genTime и openssl cms -verify -cades -purpose timestampsign плюс отпечаток TSTInfo для токенов RSA-PSS), запуск tests/fixtures/evidence_tsa/run_openssl.sh на 27 случаях из cases.tsv: RSA PKCS#1 v1.5 с SHA-256 и SHA-512 и ESS v1 и v2, корень ECDSA P-384 над промежуточным P-256 и TSA P-256 и P-384, RSA-PSS, токен без сертификата подписанта с его передачей и без неё, токены с подписью CAdES, перевёрнутый байт подписи (три алгоритма), изменённый TSTInfo (два), перевёрнутая подпись промежуточного сертификата, двойник сертификата ESS, неверные якоря (четыре), истёкший сертификат TSA, некритическое и неверное расширенное использование ключа и неверные данные (три). Предварительно зарегистрировано в tests/fixtures/evidence_tsa/PREREGISTRATION.md (зафиксировано отдельным коммитом 30ad70b2 до появления средства проверки; вердикты OpenSSL затем перезапущены, байт в байт совпадают). Первый прогон: все 27 вердиктов согласуются (B1) и каждый genTime согласуется с точностью до секунды (B2). Область применимости, сформулированная узко: самостоятельно сгенерированные тестовые сертификаты и токены, созданные тем же OpenSSL, который их оценивает; OpenSSL — независимая реализация, а не служба меток времени; токен какого-либо публичного удостоверяющего центра в проект не включён (freetsa.org не указывает лицензии). Ничто здесь не аттестует никакую реальную метку времени | evidence::tsa (verify_token, pem_certificates); evidence::verify (VerifyOptions::tsa_anchors, Failure::TimestampAuthorityInvalid); evidence::cli (--tsa-ca) |
| Пороги помех для доверия к приёмнику, откалиброванные на наборе данных JammerTest 2024 | receiver_trust::calibration::run_dataset: предварительно зарегистрированная калибровка мониторов падения C/N0, AGC и индикатора подавления (jamming) на публичном наборе данных JammerTest 2024 (Zenodo 15911589, GPL-3.0-or-later, загружается во время выполнения и в проект не включается): для каждой папки временная шкала с шагом 1 с из mon_rf.csv и rinex.csv, мониторы запускаются один раз, каждая эпоха после калибровки помечается как чистая или с подавлением по attack_log папки (со сдвигом из CEST в UTC, защитный интервал 60 с), каждый порог перебирается по фиксированной сетке, выбирается наименьший порог, при котором объединённая вероятность ложной тревоги на чистых данных не превышает 0,01, и подсчёты на отложенных данных по схеме «исключи одну папку»; перекрёстная проверка читателя UBX. Выбор поставляется только как необязательный профиль [monitors] profile = "jammertest-2024-calibrated" (cn0_drop_db 1,5, agc_k_sigma 3,5, jam_ind_threshold 29); правило по умолчанию и каждый выход без него не изменены | MODELLED | Опубликованные журналы событий набора данных (окна attack_log) как истина о событиях, согласно предварительной регистрации xval/jammertest-trust/PREREGISTRATION.md (зафиксирована отдельным коммитом 0fa012b до запуска обвязки). Первый и единственный прогон (xval/jammertest-trust/RESULTS.md): оценке подлежат 14 из 24 папок (7 с подавлением), 3 502 чистая и 9 560 эпох с подавлением. Вероятность ложной тревоги на чистых отложенных данных: cn0_drop_db 0,0231 (81/3502) против порога 0,02, FAIL; agc_k_sigma 0,0003, pass; jam_ind_threshold 0,0094, pass; объединение трёх: ложные тревоги 0,0328, обнаружение 0,807 против 0,05 и 0,50, pass. По зарегистрированному правилу строка имеет уровень MODELLED (один порог не выполнен). Узко: один тип приёмника (u-blox ZED-F9P), одно событие, плановые одноминутные слоты как истина (обнаружение — нижняя оценка; «чистые» означает вне зарегистрированных окон); калибровка на журналах CSV, а читатель UBX даёт больше ложных тревог на двух папках. Диапазоны морской оценки доверия не откалиброваны | receiver_trust::calibration (run_dataset); receiver_trust::monitors (MonitorConfig::profile, JAMMERTEST_2024_CALIBRATED); realdata::jammertest; examples/jammertest_trust_calibration.rs |
| Оценка Jammertest: журнал приёмника, оцениваемый по каждому запланированному испытанию (задержка обнаружения, пропущенные тревоги, ложные тревоги, время восстановления) относительно опубликованного плана испытаний | jammertest::{plan, score, dataset} (kshana jammertest import|score): каталог испытаний NPRA и план передач (MIT, загружается с зафиксированным SHA-256, в проект не включается) читаются как запланированная истина с сохранением идентификаторов каталога; прогон receiver-trust оценивается по каждому испытанию (первая тревога минус запланированное начало, обнаружено/с опозданием/пропущено относительно допуска, время до первого интервала без тревог, тревоги вне каждого слота и его защитного интервала), с подписанным пакетом доказательств, содержащим итоговую карту оценок. Расписание — это запланированные слоты, а не записанное время работы в эфире | MODELLED | Число слотов плана по областям испытаний (76, 77 и 45 слотов, из которых 61, 63 и 32 передают) подсчитано независимо скриптом по тому же JSON; окна attack_log набора данных 2024 года взяты как истина о событиях, согласно xval/jammertest-score/PREREGISTRATION.md (зафиксировано отдельным коммитом c2e6d3b до запуска оценщика). Первый и единственный прогон (xval/jammertest-score/RESULTS.md): зарегистрированное правило минимума данных НЕ ВЫПОЛНЕНО (4 оцениваемых окна подавления из 4 из 12 папок UBX против минимума в 10 окон из 2 папок: 5 папок отброшены по базовому правилу, 3 журнала UBX содержат только время недели GPS), поэтому пороги от B1 до B4 оценить нельзя; ничего не ослаблялось и не перезапускалось. v2 (xval/jammertest-score/PREREGISTRATION-v2.md, зафиксировано отдельным коммитом, только обработка данных: журналы только со временем GPS размещаются по дате, 12 папок только с CSV, сессия подвижной платформы для подвижных ровер-приёмников; те же пороги и правило минимума данных): сохранено 14 из 24 папок, но лишь 7 оцениваемых окон подавления, правило минимума данных снова не выполнено, ни один порог оценить нельзя (RESULTS-v2.md). Запланированная истина: запланированный слот не является записью работы в эфире, пропуск может означать испытание, которое не проводилось, задержка отсчитывается от запланированного начала, а «чисто» означает вне запланированных слотов. Обнаружение мониторами в области измерений ничего не говорит о спуфере малой мощности. Один тип приёмника (u-blox ZED-F9P). Набор данных SimulaMet NMEA 2025 года не используется (лицензия не указана, доступ по подписке) | jammertest::plan (parse_catalog, parse_plan, import, import_attack_log, events_toml); jammertest::score (score_run); jammertest::dataset (run_dataset); jammertest (score_log, score_pack); examples/jammertest_score_2024.rs |
| Экспорт для испытательного стенда (kshana bench-export): столбцы в земной системе координат, геодезические и локальные столбцы скорости, столбцы ориентации и вывод NMEA 0183 | Столбцы CSV движения: положение в земной системе координат, геодезическое положение, скорость в земной системе координат, курс/тангаж/крен и UTC, а также предложения NMEA GGA/RMC, записанные из синтетических сценариев (gnss-ins, включая automotive-urban-canyon, jamming, gnss-sim). Только движение и события; никакой сигнал не записывается, и никаких характеристик симулятора или приёмника не заявляется. | VALIDATED | ЧТО ПРОВЕРЯЕТСЯ ВНЕШНЕ, сформулировано узко: относительно pyproj 3.8.0 (PROJ 9.8.1), geographiclib 2,1, pynmea2 1.19.0 и scipy 1.18.1, запуск scripts/gen_testbench_ref.py на 4 синтетических сценариях, с допусками, зафиксированными до первого сравнения (каждый — наихудший случай округления записывающей стороны): столбцы в земной системе координат равны преобразованию WGS 84 геодезических столбцов (наихудшее 1.3e-4 м, порог 3e-4) и обратному (1.3e-9 град, порог 2e-9; высота 1.3e-4 м, порог 3e-4) в каждой строке; скорость в земной системе координат, повёрнутая в систему «север — восток — вниз» топоцентрической операцией PROJ, равна истинной скорости движка в NED (7.5e-5 м/с, порог 2e-4); курс, тангаж и крен равны углам рыскания, тангажа и крена из scipy для истинного кватерниона движка (5.0e-7 град, порог 1e-6); каждое предложение NMEA разбирается в pynmea2 с верной контрольной суммой, а его декодированные положение (1.2e-3 м, порог 5e-3), высота, скорость, путевой угол (5.0e-4 град, порог 1e-3) и время равны значениям движения; столбец UTC равен независимой арифметике даты и времени. SHA-256 проверенных точных байтов CSV и NMEA зафиксирован. ЧТО НЕ ПРОВЕРЯЕТСЯ: сама истинная траектория сценария (профиль движения и его интегрирование); соглашения (курс — это рыскание корпуса, а не путевой угол, и отличается от него до примерно 77 градусов в automotive-urban-canyon; качество GGA, число спутников и HDOP — заглушки); читает ли какой-либо лабораторный симулятор файлы так, как задумано; любые характеристики симулятора или приёмника. Оракулы проверяют преобразования и кодировки, а не физику сценария. Работа с локальной системой координат проверяется только через поворот скорости и скорость и путевой угол NMEA (в CSV нет столбца локального положения). | interop::testbench (write_motion_csv, write_nmea, trajectory_of, export); fusion::pack::truth_trajectory |
| Сопоставление compliance с общедоступными стандартами | compliance (kshana compliance-report): отображение выходных данных Kshana на пункты публичных стандартов только по номеру, заполняемое из заданных прогонов; результат засчитывается для возможности только тогда, когда он несёт свидетельства, названные в отображении, пустой набор ничего не подтверждает, а формулировка — «подкрепляет доказательствами»; отчёт не является выводом о том, что какой-либо стандарт выполнен, и не является оценкой или одобрением со стороны кого бы то ни было. | MODELLED | Ссылки проверены по извлечённому скриптом индексу заголовков цитируемых публичных документов, прочитанных 2026-10-10 (tests/compliance_references.rs). ЧТО ПРОВЕРЯЕТСЯ: 49 цитируемых ссылок на пункт, раздел, параграф или заголовок существуют в цитируемом документе, а 7 цитируемых URL разрешились в записанную дату (2 по второму маршруту); отрицательные контроли не проходят. ЧТО НЕ ПРОВЕРЯЕТСЯ: верность какого-либо пересказа, отображения или пробела; пункты EN 16803 (платный, только текст каталога); более поздние редакции; индекс не является независимой реализацией. | compliance |
| Морские интеграции: плагин Signal K, поток шлюза и панель оценки OpenCPN, референсная сборка | Оценка доверия, диапазон, причины, состояние шлюза и положение, сообщаемое приёмником, публикуются в navigation.gnss.kshana на сервере Signal K с уведомлениями warn, alarm и normal (integrations/signalk); потоком NMEA через шлюз, в котором определение положения помечается недействительным, пока доверие обрушено, и с одним предложением PKSHT за цикл, передаваемым в OpenCPN по TCP самим шлюзом или небольшим ретранслятором, и родной панелью оценки OpenCPN, читающей предложение PKSHT (integrations/opencpn); а также юнитами systemd и контейнером, запускающими шлюз (deploy/reference-build). Там, где они показывают вывод, они несут консультативное заявление: Программное обеспечение консультативного характера, не навигационное оборудование с утверждённым типом (IEC 61108, IEC 61162): ответственность за судовождение остаётся на операторе. | MODELLED | ЧТО ПРОВЕРЯЕТСЯ, сформулировано узко: что эти интеграции работают с настоящим программным обеспечением, для которого написаны. СВИДЕТЕЛЬСТВА зафиксированы в integrations/signalk/evidence/README.md (с файлами JSON) и integrations/opencpn/evidence/README.md (со снимками экрана и журналами), в каждом случае со скриптом, который их воспроизводит. (1) Signal K: плагин, загруженный в зафиксированный пакет npm signalk-server 2.33.0 в закрытом пространстве имён сети только с петлевым интерфейсом, на синтетических данных. Собственные интерфейсы REST и WebSocket сервера показали опубликованные пути, метаданные оценки и уведомление, которое прошло состояния «отсутствует», warn, alarm, normal (после удержания) и снова warn, когда данные прекратились. При настоящем kshana, запускаемом плагином на NMEA, которую получил сам сервер, уведомление прошло состояния warn, затем alarm, а сообщаемое положение было опубликовано; собственный navigation.position сервера записывался его провайдером NMEA, а не плагином. Повторно запущено на живой схеме JSON 1,2. (2) OpenCPN: плагин, собранный по заголовку API плагинов OpenCPN и wxWidgets 3.2.4, загруженный в пакет Ubuntu 24,04 программы OpenCPN 5.8.4 на виртуальном дисплее; OpenCPN загрузил его, выполнил инициализацию и передал ему предложения PKSHT потока через шлюз, а панель стала красной в диапазоне недоверия. В одном чистом прогоне собственная позиция судна в OpenCPN перестала обновляться, а его индикатор определения положения сбросился, когда шлюз пометил определение положения как недействительное. Второй прогон, питаемый напрямую слушателем TCP шлюза, показал доставку плагину, но не чистое сопоставление «до и после». (3) Тесты ретранслятора воспроизводят записанный фрагмент потока через шлюз по настоящему сокету TCP и проверяют, что получает потребитель (байты без изменений, верные контрольные суммы в каждом предложении, включая переписанные, согласие GGA и RMC, одно PKSHT за цикл с полем шлюза там, где определение положения недействительно), а сквозной скрипт проверяет, что потребитель слушателя шлюза получает ровно те байты, которые тот же шлюз пишет в стандартный вывод. (4) Разборщики PKSHT (JavaScript и C++) запускаются на предложениях, записанных из вывода kshana, и отвергают неверную контрольную сумму, версию или оценку вне диапазона от 0 до 100. (5) Юниты systemd проверяются командой systemd-analyze verify (systemd 255, двоичные файлы заменены заглушками) и защитами от оболочки в ExecStart, политики перезапуска и ключей песочницы; обработка аргументов точки входа контейнера проверяется с заглушкой вместо двоичного файла. ЧТО НЕ ПРОВЕРЯЕТСЯ: для любого значения, которое показывают эти интеграции, нет внешнего оракула. Сами значения доверия — это строки выше, а прогон интеграции показывает лишь то, что обвязка их переносит; поэтому эта строка имеет уровень MODELLED, а не VALIDATED (docs/VALIDATION.md). Не использовались ни настоящее судно, ни приёмник, ни длительный прогон, ни другая версия любого из хостов, ни другая операционная система или рабочий стол; все данные — синтетический текст, и ничто здесь не является измерением. Звук и визуальная обработка уведомления настоящим клиентом Signal K, кнопка панели инструментов OpenCPN, настройки и устаревшее состояние, а также упаковка для менеджера плагинов OpenCPN не проверялись. Ключи песочницы systemd проверены только на синтаксис, не запускались под действующим systemd, а сборка образа контейнера и его проверка работоспособности не имеют зафиксированных здесь свидетельств. Никаких значений обнаружения или ложной тревоги не заявляется. Программное обеспечение консультативного характера, не навигационное оборудование с утверждённым типом (IEC 61108, IEC 61162): ответственность за судовождение остаётся на операторе. | receiver_trust (в работе: шлюз, его слушатель TCP, PKSHT); вне крейта: integrations/signalk (JavaScript), integrations/opencpn (ретранслятор на JavaScript, родной плагин на C++), deploy/reference-build (юниты systemd, контейнер) |
| Слежение за BOC(1 1): масштабирование DLL и разрешение неоднозначности «bump-jump» (по выбору) | Поле boc структуры iq::track::LoopConfig (по выбору, по умолчанию None): три дискриминатора DLL, масштабированные так, чтобы показывать ошибку кода в чипах с единичным наклоном на главном пике синусного BOC(1 1), и монитор bump-jump на очень ранних и очень поздних коррелятора на одном полупериоде поднесущей (0,5 чипа), который перескакивает NCO кода к главному пику, когда реверсивный счётчик достигает N (8 по умолчанию). Без этой опции каждый выход остаётся без изменений. | MODELLED | Внутренняя согласованность относительно внесённой истины и замкнутых форм, при порогах, зарегистрированных заранее в 6b68f6cc (docs/design/evidence/boc-bump-jump/). Сигнал данных BeiDou B1C (PRN 19, 5 МВыб/с), сгенерированный iq::scene: при выключенной опции старт на боковом пике остаётся ложно захваченным на предсказанных ±(0,5 + d/4) чипа (измерено ±0,549); при включённой — один перескок к главному пику на 0,08 с и СКО в позднем окне 0,0008 чипа при 45 дБ-Гц и 0,0048 чипа при 35 дБ-Гц; без перескока с главного пика при 35, 40 и 45 дБ-Гц за 4 с; масштабированный наклон EMLP от 0,94 до 0,99 на дискретизированном сигнале (немасштабированный от 3,6 до 3,8). Один лишь детектор bump-jump на тройках коррелятора с точной ковариацией шума BOC(1 1) не дал ни одного ложного перескока за 100 000 обновлений при 25—45 дБ-Гц и обнаружил 1000 из 1000 стартов на боковом пике при 35 дБ-Гц. NOT MET (находка F1): зарегистрированная заранее сетка модульных тестов для масштабирования включает смещения вне линейного диапазона дискриминаторов, где масштабированные показания промахиваются мимо смещения до 48 %. ЧТО НЕ ПРОВЕРЯЕТСЯ: полевые данные IQ, ограниченные по полосе входные тракты, составные реплики MBOC/QMBOC и любой внешний приёмник. | iq::track::boc (BocKind, BocTracking, BumpJump, boc11_dll_scale); iq::track::channel (the bump-jump taps and Channel::bump_jumps) |
| Ионосферный сцинтилляционный канал IQ (модель Cornell) относительно измеренной сцинтилляции GPS L1 на частоте 50 Гц | iq::channel::scint, сцинтилляционная модель Cornell (интенсивность по Райсу, спектр Баттерворта второго порядка, фаза arg z), управляемая измеренными S4 окна и временем декорреляции интенсивности, сравнивается по тому, что она порождает сверх этих двух входных величин; realdata::scint50 читает измеренный журнал, убирает тренд и запускает сравнение. | MODELLED | Измеренные данные при порогах, зарегистрированных заранее в b6ccb499 (xval/scint-malindi/): запись Zenodo 16941224 (INGV, Малинди, 18 марта 2023, GPS PRN 26, интенсивность и фаза несущей на 50 Гц, CC BY 4,0, SHA-256 проверен). 22 подходящих окна по 60 с (N1 выполнено). MET: распределение интенсивности (D Колмогорова — Смирнова 0,0415, порог 0,05) и фазовая сцинтилляция, связанная с S4 (медиана отношения измеренного к модельному sigma-phi 0,779, порог от 2/3 до 3/2). NOT MET (находка F1): доля глубоких замираний в модели в 2,38 раза больше измеренной (порог от 0,5 до 2), а среднее замирание в 3,51 раза длиннее (порог от 2/3 до 3/2). Находка F2: зарегистрированная обработка читает свёрнутую фазу модели, что выявила самопроверка; B3, повторённый апостериори с развёрнутой фазой, даёт 0,804. ЧТО НЕ ПРОВЕРЯЕТСЯ: другие ночи, станции, широты или сигналы; шум приёмника в модели. Строка остаётся MODELLED. | iq::channel::scint (Scintillation, ScintParams); realdata::scint50 (parse_log, segments, measured_windows, model_windows, compare) |
| Вариант CFAR с усреднением по ячейкам в захвате IQ | iq::acq::ca_cfar и ca_cfar_cells (по выбору): ячейка сетки захвата сравнивается со средним опорных ячеек её строки Доплера (защитные и шаговые задержки, с заворачиванием по периоду) с коэффициентом alpha, заданным из замкнутой формы вероятности ложной тревоги CA-CFAR для M некогерентных блоков (ca_cfar_pfa, ca_cfar_alpha). Детектор по мощности отсчёта остаётся по умолчанию, и каждый существующий выход не изменяется. | MODELLED | Замкнутая форма при порогах, зарегистрированных заранее в 3724aefa (docs/design/evidence/acq-cfar/). Вероятность ложной тревоги CA-CFAR для ячеек Gamma(M) относительно Монте-Карло точной модели: 18 из 18 случаев в пределах 3 биномиальных сигм. На каждой ячейке поисков iq::acq (GPS L1 C/A, 2,5 МВыб/с, по 210 000 ячеек) при расчётном 1 %: 0,977 % и 0,969 % на гауссовом шуме и 1,006 % и 0,999 % на 2-битном квантованном шуме (M = 1 и 4; порог плюс-минус 20 %); решения не меняются при масштабировании входа. NOT MET (находка F1): на 2-битном сигнале без шума обнаружение и его ячейка верны, но 1,28 % внепиковых ячеек строки пика (порог 1 %) превышают порог на детерминированных боковых лепестках корреляции кода. ЧТО НЕ ПРОВЕРЯЕТСЯ: другие варианты CFAR, двумерные окна, ограниченные по полосе входные тракты, полевые данные. | iq::acq (CfarConfig, ca_cfar, ca_cfar_cells, ca_cfar_pfa, ca_cfar_alpha) |
| Модель спектра: диапазоны GLONASS, BeiDou и Galileo E6 (по выбору) | spectrum::default_band определяет, только по имени (MORE_BAND_NAMES), GLONASS L1OF и L2OF на каждом канале FDMA K = -7 … 6 (BPSK, 0,511 Мчип/с), BeiDou B1I (BPSK(2)), B1C (MBOC(6,1,1/11)), B2a и B3I (BPSK(10)) и Galileo E6 (BPSK(5)), с несущими и минимальными принимаемыми мощностями из их документов управления интерфейсом; набор диапазонов по умолчанию и каждый существующий выход не изменяются. | MODELLED | Опубликованные документы управления интерфейсом и замкнутые формы при порогах, зарегистрированных заранее в 5806f28b (docs/design/evidence/spectrum-bands/): GLONASS ICD, редакция 5,1, BDS-SIS-ICD B1I 3,0, B1C 1,0, B2a 1,0 и B3I 1,0, Galileo OS SIS ICD, выпуск 2,1. MET: каждая несущая, скорость чипов и принимаемая мощность в том виде, как они перенесены (28 каналов GLONASS), первые нули BPSK на скорости чипов, составной B1C, равный MBOC(6,1,1/11), как даёт таблица мощностей его ICD, тождество пути C/N0 и побайтово одинаковые сценарии спектра. NOT MET: порог единичной площади, который в написанном виде был недостижим (находка F1; площади равны замкнутой форме доли в полосе), и согласие по каждой ячейке спектра волновых форм B1I и B1C слоя IQ с огибающей модели (1,26 и 1,56 дБ против 0,5 дБ, находка F2; GLONASS 0,07 дБ), поскольку коды Голда и Вейля имеют неравномерные линейчатые спектры; при усреднении по полосе главные лепестки согласуются в пределах 0,25 дБ. ЧТО НЕ ПРОВЕРЯЕТСЯ: записанные данные IQ, другие сигналы, внутрисистемные помехи. | spectrum (default_band, MORE_BAND_NAMES, GLONASS_CHANNELS) |
| Первичные дальномерные коды BeiDou B1I относительно независимого генератора | iq::signals::beidou::b1i_bits и b1i: коды Голда BDS-SIS-ICD-B1I-3.0, усечённые до 2046 чипов, PRN от 1 до 63, в том виде, как их генерирует, захватывает и отслеживает слой IQ. | VALIDATED | GNSS-SDR v0.0.19 (тег v0.0.19, коммит 1ddd4562), независимая реализация того же ICD с открытым кодом: его beidou_b1i_code_gen_int, скомпилированная отдельно, сгенерировала все 63 кода. В репозитории зафиксирован только её программный вывод: tests/fixtures/iq_signals/beidou_b1i_gnss_sdr.txt, префикс из 64 чипов и SHA-256 каждого кода из 2046 чипов. Этот вывод — первичные коды PRN BeiDou B1I, которые определяет публичный BDS-SIS-ICD-B1I-3.0; ни исходного кода, ни двоичных файлов GNSS-SDR в репозитории нет. Порог зарегистрирован заранее в 911106d1 (xval/beidou-b1i-gnss-sdr/): все 2046 чипов всех 63 PRN идентичны, без инверсии, сдвига и переименования. Результат: 63 из 63 идентичны; фикстура сгенерирована заново из свежего снимка v0.0.19 (SHA-256 исходного файла записан) и побайтово совпадает. ЧТО НЕ ПРОВЕРЯЕТСЯ: вторичный код NH20, список PRN GEO, несущая и скорость чипов. | iq::signals::beidou (b1i_bits, b1i) |
| Дальномерные и накладываемые коды GPS L1C относительно печатных проверочных столбцов IS-GPS-800J | iq::signals::gps::l1c_p_bits, l1c_d_bits и l1c_o_bits: дальномерные коды Вейля L1CP и L1CD (вычисленная последовательность Лежандра, индекс Вейля, расширяющая последовательность, вставляемая перед чипом p) и накладываемые коды L1CO S1, PRN от 1 до 63. | VALIDATED | IS-GPS-800J (01-AUG-2022, заявление о распространении A), проверочные столбцы, которые он печатает рядом с параметрами генератора: таблица 3.2-2 — начальные и конечные 24 чипа каждого кода L1CP и L1CD, таблица 3.2-3 — начальные и конечные 11 бит каждого кода L1CO, таблица 6.2-1 — последовательность Лежандра длины 10223; перенесены скриптом scripts/extract_is_gps_800_tables.py из PDF (SHA-256 c4aad710...). Пороги зарегистрированы заранее в fe372e26 (docs/design/evidence/l1c-codes/): 252 из 252 столбцов, 63 из 63 накладываемых кодов и 10 223 из 10 223 бит Лежандра идентичны; извлечение с --check проходит; отрицательный контроль не проходит на переименованных, инвертированных и сдвинутых кодах. ЧТО НЕ ПРОВЕРЯЕТСЯ: сами параметры генератора (они берутся из тех же таблиц), чипы между печатными столбцами, шаблон поднесущей TMBOC и коды L1CO S2. | iq::signals::gps (l1c_weil, l1c_ranging_bits, l1c_p_bits, l1c_d_bits, l1co_s1_run, l1c_o_bits); iq::signals::tables |
| Первичные коды LunaNet AFS-I и AFS-Q относительно печатных проверочных столбцов LSIS-AFS V1.0 | iq::signals::lunanet::afs_i_bits и afs_q_primary_bits (имена сигналов lunanet-afs-i и lunanet-afs-q в kshana iq): код Голда AFS-I (2047, укороченный по циклу до 2046, G2 с задержкой по каждому PRN) и первичный код Вейля AFS-Q (вычисленная последовательность Лежандра, индекс Вейля, расширяющая последовательность, вставляемая перед чипом p), PRN от 1 до 210. | VALIDATED | Относительно печатных таблиц LSIS-AFS V1.0 (в спецификации помечены TBC): LunaNet Interoperability Specification V5, Applicable Document 1 Volume A: LunaNet Signal-In-Space Recommended Standard, Augmented Forward Signal (LSIS-AFS) V1.0, 29 января 2025 (NASA; SHA-256 PDF 986e0795...), проверочные столбцы, которые он печатает рядом с параметрами генератора: таблицы C-1—C-5 и D-2—D-6 — первые и последние 24 чипа каждого кода AFS-I и AFS-Q, таблица D-1 — последовательность Лежандра длины 10223; извлечено скриптом scripts/extract_lunanet_afs_tables.py (xval/lunanet-afs/oracle/). Пороги зарегистрированы заранее в b3ba5d5 (xval/lunanet-afs/PREREGISTRATION.md) до появления генератора: B1 420 из 420, B2 идентично, B3 420 из 420. Документ помечает свои таблицы кодов как {LSIS-TBC} и указывает, что они предназначены только для испытаний и интеграции, поэтому это проверяет построение относительно таблиц этой редакции, а не более поздней. Зарегистрированное заранее утверждение о печатном начальном состоянии G2 (B1b) было сформулировано с неверным направлением и NOT MET (0 из 210), зафиксировано; исправленное соотношение (2047 минус задержка) выполняется для 210 из 210 и записано как апостериорное. ЧТО НЕ ПРОВЕРЯЕТСЯ: сами параметры генератора (те же таблицы), чипы между печатными столбцами, третичный код, слой сообщений и кодирование LDPC. | iq::signals::lunanet (afs_i_bits, afs_q_primary_bits, legendre_bits); iq::signals::lunanet_tables; iq::lunanet_afs::check_spec |
| Третичные коды LunaNet AFS и слой сообщений (SB1 BCH, CRC-24Q, перемежитель) относительно LSIS-AFS V1.0 | iq::signals::lunanet::afs_q_tertiary_bits, afs_q_tiered; iq::lunanet_afs: синхронизирующая последовательность, кодер SB1 BCH(51 8) и декодер на 256 гипотез, CRC-24Q, блочный перемежитель 60 x 98, проверка потока символов (kshana lunanet-afs-check) и генератор тестового потока с подкадрами-заглушками. Кодирование LDPC со скоростью 1/2 для подкадров от 2 до 4 не реализовано (его матрицы находятся в отдельном приложении). | MODELLED | LSIS-AFS V1.0 (как выше): последовательность Лежандра длины 1499 (таблица E-1, идентична) и первые и последние 24 чипа третичных кодов (таблицы E-2—E-6: 419 из 420 столбцов идентичны; документ печатает одни и те же последние 24 чипа, A14850, для PRN 147 и PRN 151, а генератор воспроизводит значение PRN 151, так что запись для PRN 147, скорее всего, опечатка; порог 420 из 420 NOT MET, и промах зафиксирован); разобранный пример на рисунке 8 для кода SB1 (один пример: 0x045 кодируется в 0x229F61DBB84A0); CRC-24Q относительно каталожного контрольного значения 0xCDE703 для ASCII 123456789; собственная арифметика кадра в документе. Пороги зарегистрированы заранее в b3ba5d5. Один зафиксированный промах и один разобранный пример для слоя сообщений, поэтому строка остаётся MODELLED. ЧТО НЕ ПРОВЕРЯЕТСЯ: LDPC и слова CRC внутри подкадров от 2 до 4, содержимое сообщений и любой записанный поток | iq::lunanet_afs; iq::signals::lunanet (afs_q_tertiary_bits, afs_q_overlay_bits, afs_q_tiered); surface (lunanet_afs_check_spec, lunanet_afs_check_symbols, lunanet_afs_generate) |
| Пакеты стандартов: сценарии, оцениваемые по порогам, заданным до прогона | standards_pack (kshana standards-pack): тестовые профили рамочной программы DHS Resilient PNT для уровней от 1 до 4, уровни точности и оценка целостности по IMO MSC.1/Circ.1575 и пакеты ICAO Doc 9849, приложение F: «контролировать, оценивать и смягчать»: каждый тест запускает встроенный вид сценария и сравнивает поля результата с порогами, заданными в пакете, а тесты, которым нужен журнал приёмника, перечисляются как NEEDS INPUT и не оцениваются. | MODELLED | Внешних нет для результатов сценариев: каждый тест пакета запускает вид сценария уровня MODELLED. Пороги — это заявленный профиль автора пакета (рамочная программа DHS значений не задаёт; пределы точности IMO — таблица C-1 из MSC.1/Circ.1575, прочитанная полностью; пакет ICAO следует собственной презентации ICAO по плану смягчения радиопомех, потому что Doc 9849 — платная публикация и не читался), зафиксированные до любого оцениваемого прогона в файлах PREREGISTRATION.md в стиле xval в standards/. Порог MET означает, что смоделированный сценарий выполнил заданный порог, и ничего не говорит о каком-либо изделии | standards_pack; compliance (standards-pack facts in compliance-report) |
| Лабораторный пакет доказательств полного цикла (сценарий, условия испытания, журнал приёмника, оценка) | evidence::roundtrip (kshana evidence round-trip) и экспорт журнала приёмника kshana.test-conditions/1 из kshana bench-export: подписанный пакет, фиксирующий хеш сценария, хеш заданных условий, хеш журнала и оценку относительно заданных событий и отвергающий условия, не совпадающие с событиями оценки, или журнал, хеш которого не совпадает с заданным. Никакой сигнал не записывается, не воспроизводится и не планируется. | MODELLED | Внешних нет: пакет связывает хеши и оценку журнала приёмника уровня MODELLED, проверенную на синтетических данных (экспортированный NMEA встроенного сценария рассматривается как журнал приёмника). Лабораторный прогон не заявляется | evidence::roundtrip, evidence::assemble, interop::testbench (write_conditions_json), iq::campaign::conditions |
| Движок слежения IQ относительно GNSS-SDR 0.0.19 на независимых записях | Полный движок слежения слоя IQ (iq::track через kshana iq track: передача от захвата, корреляторы, NCO, ФАПЧ Костаса второго порядка 15 Гц, ССЗ DLL с огибающей EML первого порядка 2 Гц с поддержкой по несущей, индикатор захвата и оценщики C/N0) на GPS L1 C/A при 30—45 дБ-Гц. | MODELLED | GNSS-SDR 0.0.19 (GPL-3.0-or-later, пакет Ubuntu 24,04, запускается как отдельная программа; зафиксированы только производные числа), отслеживающий те же записи numpy (независимые от движка), оба измерены относительно аналитической истины. Пороги зарегистрированы заранее в 48edd4a5, изменены до любой тестовой записи в 1e4288c4 (ЧАПЧ 10 Гц только на этапе вхождения в синхронизм в обоих приёмниках, после того как зарегистрированная калибровка не прошла из-за неверной передачи в GNSS-SDR, находка F3). MET при 30, 35, 40 и 45 дБ-Гц: джиттер несущей в пределах 4,3 %, джиттер кода в пределах 4,6 % и среднее и разброс Доплера в пределах значений GNSS-SDR. NOT MET: C/N0 движка по NWPR на 2,3—7,1 дБ ниже SNV GNSS-SDR (находка F4, известный предел NWPR; его M2M4 в пределах 0,06 дБ от истины); индикаторы захвата фазы различаются по определению (F5); при 30 дБ-Гц GNSS-SDR дважды сорвал слежение, а движок нет (F6). Собственная передача GNSS-SDR захватила неверную частоту в 3 из 30 калибровочных прогонов. ЧТО НЕ ПРОВЕРЯЕТСЯ: другие сигналы, снятие битов данных, повторный захват, полевые записи. Строка остаётся MODELLED. | iq::track (Channel, LoopCore, design); iq::cli::track |
| Коэффициенты усиления антенны CRPA в виде jamming относительно независимого пересчёта на numpy | Необязательный раздел [crpa] вида jamming: диаграмма для каждого канала на каждый спутник (подавление с нулём в направлении источника помех или MVDR по sigma^2 I + P_j a_j a_j^H), масштабирующая шум каждой линии на ||w||^2 и помеху на |w^H a_j|^2 перед существующим уравнением C/N0 при защите от подавления. | MODELLED | Независимый пересчёт на numpy (xval/crpa-jamming/oracle.py, без общего кода: векторы наведения numpy, numpy.linalg.solve и inv) каждой линии геометрии jamming-demo с квадратной решёткой из 4 элементов при обоих взвешиваниях. Пороги зарегистрированы заранее в 08d83b4d. MET: A1 (все 150 результатов сценариев побайтово совпадают без раздела, после исправления: первая сборка добавляла единицы crpa в таблицу единиц каждого прогона jamming), A2 (один элемент равен отсутствию решётки до 1e-12 дБ), A3 по шумовому коэффициенту решётки и эффективному C/N0 (912 взвешиваний линий в пределах 1e-9 дБ, наихудшее 2.1e-14 дБ) и по нулю в направлении источника помех при подавлении (ниже -200 дБ с обеих сторон), A4 (MVDR в пределах 0,1 дБ от подавления при JNR 80 дБ). NOT MET: A3 по усилению MVDR в направлении источника помех, 194 из 456 линий выше 1e-9 дБ при переносимой математике 0,36 (202 при математике хоста; docs/revisions/STUDIO15-batch4-rebaseline.md) (наихудшее 1.7e-6 дБ) на остатках от -100 до -188 дБ, где сокращение в float64 ограничивает обе реализации (inv и solve в numpy расходятся между собой на 169 линиях, наихудшее 7.9e-7 дБ); эффективный C/N0, который они питают, не затронут. ЧТО НЕ ПРОВЕРЯЕТСЯ: взаимная связь, рассогласование элементов, широкополосная обработка, несколько источников помех, любое антенное оборудование. Это пересчёт тех же уравнений, а не внешний оракул; строка остаётся MODELLED. | jamming (CrpaCfg, crpa_weights, run_jamming); crpa (null_steering_weights, mvdr_weights, covariance) |
| Экранирование источника помех рельефом в виде jamming против независимого пересчёта на numpy на реальном тайле SRTM | Необязательная секция [terrain] вида jamming: профиль рельефа по дуге большого круга между источником помех и приёмником на тайле SRTM .hgt с k-фактором выпуклости Земли, доминирующая острая кромка (наибольшее значение ню Френеля–Кирхгофа) и потеря на одиночной острой кромке по ITU-R P.526-15, раздел 4,1, вычитаемая из мощности источника помех на входе приёмника. | MODELLED | Независимый пересчёт на numpy (xval/jamming-terrain/oracle.py, без общего кода: собственное чтение .hgt, билинейная интерполяция, круговое преобразование WGS 84, профиль, выпуклость, nu и J(nu)) десяти положений источника помех вокруг приёмника в бассейне Бэдуотер на зафиксированном реальном тайле SRTM tests/fixtures/terrain/N36W117_sub6.hgt. Пороги и положения предварительно зарегистрированы в 92cd2bfd. Все MET: аддитивность (все 150 результатов сценариев побайтно идентичны без этой секции); точки профиля и препятствие для каждого положения совпадают, а nu и потеря укладываются в 1.6e-10 (порог 1e-9); потеря не растёт, пока источник помех поднимается от 2 до 4902 м; потеря уменьшает каждое J/S ровно на свою величину и ни на что другое; J(nu) в пределах 1e-12 дБ от значения оракула. Результаты: положения за горами Блэк и Фьюнерал теряют от 44 до 48 дБ; два положения на дне долины теряют 8 и 15 дБ только из-за выпуклости Земли при высотах антенн 2 м, то есть в предельном случае модели одиночной острой кромки. ЧТО НЕ ПРОВЕРЯЕТСЯ: любое измеренное распространение, дифракция на нескольких кромках, отражение от земли, местные предметы, собственная погрешность цифровой модели рельефа. Это пересчёт той же модели, а не внешний оракул; строка остаётся MODELLED. | jamming_terrain (TerrainCfg, jammer_terrain, knife_edge_loss_db); jamming (run_jamming_sky) |
| Гистерезис захвата и квантователь во входном тракте в виде jamming против независимых пересчётов | Необязательные секции вида jamming: [acquisition] (спутник захватывается при значении не ниже порога захвата после задержки повторного захвата и удерживается, пока значение не ниже порога сопровождения) и [front_end] (показание АРУ 10 log10(1 + J/N) и потеря гауссовского квантователя АЦП, вычитаемые из каждого канала связи, с пометкой, что для негауссовских источников помех они недействительны). | MODELLED | Независимый пересчёт на Python каждого флага захвата (xval/jamming-acq-agc/hysteresis.py) по эффективному C/N0 движка на каждую эпоху, независимый метод Монте-Карло на numpy для потери квантователя (xval/jamming-acq-agc/quantiser_mc.py, собственный поиск оптимального шага, 2^22 выборок) и контур АРУ слоя IQ. Пороги предварительно зарегистрированы в 70c72fcc, с дополнительной серией прогонов с начальным значением 37793290. MET: аддитивность (все 150 результатов сценариев побайтно идентичны без этих секций); каждый флаг совпадает на дополнительных прогонах (1824 каналов связи, из них 732 с гистерезисом); монотонность по порогу; потеря квантователя в пределах 0,0007 дБ от результата Монте-Карло при 1–4 битах (порог 0,02 дБ); показание АРУ в пределах 0,012 дБ от контура АРУ (порог 0,05 дБ). NOT MET: зарегистрированные прогоны гистерезиса (jamming-demo при 10–30 дБВт) оказались неинформативными, так как все каналы связи были потеряны, а их H2 и H4 выполнены лишь тривиально. Результат: при CW-источнике помех 1-битный АЦП теряет примерно на 5 дБ больше, чем гауссовская величина, которую применяет движок, и помечается как недействительный. ЧТО НЕ ПРОВЕРЯЕТСЯ: сам поиск захвата, динамика АРУ во времени, любое аппаратное обеспечение приёмника. Это пересчёты той же модели, а не внешний оракул; строка остаётся MODELLED. | jamming_rx (AcquisitionCfg, AcqState, FrontEndCfg, front_end); jamming (run_jamming_sky); iq::frontend::quant (optimum_step_sigma) |
| Ограниченный по времени втягивающий режим ФАП-ЧС ниже порога передачи управления от FLL к PLL в проекте по умолчанию (по выбору) | Необязательный параметр iq::track carrier.fll_pull_in_max_s (поле fll_pull_in_max_s структуры iq::track::LoopConfig): при fll_assist = pull-in FLL передаёт управление PLL через фиксированное время втягивания независимо от PLI, с соответствующим интервалом возврата, пока PLI впервые не достигнет fll_off_pli. | MODELLED | Внутренняя согласованность относительно заданной истины: синтетический источник GPS L1 C/A без данных (PRN 13, 1500 Гц, 4,1 МГц, 8 с, десять начальных значений шума) с известной фазой несущей при порогах, предварительно зарегистрированных в 58789af0 (docs/design/evidence/fll-handover-floor/). MET: контроль (режим по умолчанию без ограничения не передаёт управление в 9 из 10 запусков при 33 дБ-Гц); аддитивность (хеш по умолчанию и существующие тесты сопровождения не изменились); втягивание при передаче управления с отклонением 100 Гц при 45 дБ-Гц. NOT MET: при ограничении 1,0 с передача управления и удержание в каждом прогоне (16 из 20 при 33 дБ-Гц, 8 из 20 при 31 дБ-Гц; остальные циклически переключаются между вынужденными передачами управления и возвратом FLL) и фазовое дрожание в пределах 25 % от PLL без FLL (10,8 против 6,1 градуса при 33 дБ-Гц). ЧТО НЕ ПРОВЕРЯЕТСЯ: биты данных, другие сигналы и частоты дискретизации, полевые записи. Значение по умолчанию не изменено; строка остаётся MODELLED. | iq::track (LoopConfig, FllGate, design); iq::track::channel (the FLL gate) |
| Читатель файлов решений RTKLIB .pos для receiver-trust | Читает файл решений RTKLIB (время в календарном виде или как неделя GPS/TOW, положение в широте и долготе или в ECEF, число используемых спутников) в временну́ю шкалу receiver-trust (receiver_trust::machines::rtklib). | MODELLED | Внешних нет: файл, созданный RTKLIB, не читался, а расположение столбцов взято из руководства RTKLIB. Проверено только на самостоятельно написанных файлах; преобразование ECEF повторно использует frames::ecef_to_geodetic, у которого есть собственные строки | receiver_trust::machines::rtklib (read_rtklib_pos); receiver_trust::LogFormat::RtklibPos |
| Журналы NovAtel OEM7 в ASCII и двоичном виде (BESTPOS, RANGE, RXSTATUS) для receiver-trust | Читает BESTPOS (положение), RANGE (C/No по сигналам) и RXSTATUS (флаг подавления приёмника как собственное сообщение приёмника об эпохе) из журналов OEM7 в ASCII и двоичном виде, с проверкой CRC, только для чтения (receiver_trust::machines::novatel). | MODELLED | Внешних нет в качестве порога соответствия. Расположение полей и CRC соответствуют общедоступной документации OEM7 (docs.novatel.com); процедура CRC один раз проверена по значению CRC, которое документация указывает для собственного примера BESTPOSA (процитировано, не приведено дословно). Тестовые данные написаны самостоятельно; журнал реального приёмника не читался | receiver_trust::machines::novatel (read_novatel, novatel_crc32); receiver_trust::LogFormat::Novatel |
| Читатель отношения несущая/шум RTCM 3 MSM4 и MSM7 для receiver-trust | Читает C/N0 каждой сигнальной ячейки сообщений RTCM 3 MSM4 и MSM7 (GPS, ГЛОНАСС, Galileo, SBAS, QZSS, BeiDou, NavIC) из потока кадров, с проверкой CRC-24Q (receiver_trust::machines::rtcm3). Структуры взяты из таблиц pyrtcm под лицензией BSD, а не из текста стандарта RTCM. | MODELLED | Эталонная реализация в разовой проверке, а не тест в наборе: декодер pyrtcm 1.2.0 читает те же самостоятельно написанные кадры и получает те же C/N0 и время эпохи. Он разделяет источник таблиц с этим читателем, поэтому проверяет обработку битов, а не структуру. Запись реального приёмника или базовой станции не читалась | receiver_trust::machines::rtcm3 (read_rtcm3, crc24q); receiver_trust::LogFormat::Rtcm3 |
| Адаптер монитора GNSS-SDR для receiver-trust | Читает сообщения GNSS-SDR Monitor (Gnss_Synchro) и PVT-monitor, переданные в виде строк JSON с именами полей proto, в C/N0 по каналам, решение, число используемых спутников, HDOP и обзор неба (receiver_trust::machines::gnss_sdr; integrations/gnss-sdr/relay.py). | MODELLED | Внешних нет: имена полей взяты из документации GNSS-SDR; ни читатель, ни relay.py не запускались ни на работающем GNSS-SDR, ни на реальной записи | receiver_trust::machines::gnss_sdr (read_gnss_sdr_monitor); receiver_trust::LogFormat::GnssSdr |
| Приём журналов IMU, ввод курса по гироскопу и подбор по Аллану параметров гибридных датчиков | Читает CSV IMU (документированные столбцы или формат EuRoC); интегрирует скорость рыскания в курс, который читает монитор курса и пути ([log.imu]); и подбирает параметры шума акселерометра и гироскопа для гибридных сценариев и сценариев объединения по неподвижному журналу методом перекрывающейся девиации Аллана (imu-fit). | MODELLED | Внешних нет: подбор проверен на синтетических журналах белого шума с известными коэффициентами, курс — на журналах с постоянной скоростью рыскания. Реальный журнал IMU не подбирался, а q_aa не подбирается | receiver_trust::machines::imu, imu_fit; surface::imu_fit; scenario [log.imu] |
| Обнаружение Home Assistant по MQTT и экспортёр состояния для телеметрии доверия | Документ состояния в JSON и сообщения обнаружения Home Assistant по MQTT для потока доверия: выводятся как текст на каждой поверхности и публикуются по MQTT 3.1.1 QoS 0 из командной строки (telemetry::mqtt; trust-telemetry --mqtt-tcp, --print-mqtt, format mqtt). | MODELLED | Внешних нет: пакеты читал локальный приёмник на петле, написанный для теста, а не настоящий брокер, и Home Assistant не запускался | telemetry::mqtt (discovery, state_json, connect_packet, publish_packet, MqttSink); surface::TelemetryFormat::Mqtt |
| Пакет ROS 2 для receiver-trust и мост gnss_lib_py | Мост без ROS, который записывает сообщения о решении и спутниках как NMEA и оценивает их через привязку Python (integrations/ros2/kshana_trust), и мост от NavData gnss_lib_py к receiver-trust через формат rtklib-pos (integrations/gnss_lib_py). | MODELLED | Внешних нет: узел ROS не запускался в работающем графе ROS 2, а имена полей ublox_ubx_msgs не сверялись с работающим драйвером. gnss_lib_py (MIT) запускался для теста моста | integrations/ros2/kshana_trust (bridge.py, trust_node.py); integrations/gnss_lib_py/kshana_gnss_lib_py.py |