Матриця верифікації
Повний машинно перевірюваний реєстр доказів (ledger): 401 рядків — 176 VALIDATED, 221 MODELLED, 4 PARTNER. Рядок може мати позначку VALIDATED лише за наявності незалежного зовнішнього оракула (це забезпечують тести інваріантів матриці). Ті самі дані, з клікабельними посиланнями для кожного рядка на кожен тест, модуль і закомічений тестовий файл, — це реєстр валідації на https://kshana.dev. Причину, чому кожен змодельований рядок не перевірено зовні, див. у MODELLED-RATIONALE.md.
| ID | Вимога | Можливість | Модуль | Тести | Оракул | Статус |
|---|---|---|---|---|---|---|
| VM-60fc9ecb | Ідентифікація степеневого шуму за автокореляцією на лагу 1 | allan::lag1_noise_id: ідентифікатор шуму за автокореляцією на лагу 1 за Райлі та Грінголом (2004) (децимована фаза з вилученням квадратичного складника або усереднена за групами частота з вилученням лінійного складника; повторювані перші різниці, доки delta = r1/(1+r1) < 0,25 або d = dmax), що повертає цілий і незаокруглений показник степеня alpha (від +2 білий PM до -2 випадкове блукання FM) за будь-якого коефіцієнта усереднення; він задає ступені свободи типу шуму для карток пристроїв бібліотеки виміряних годинників | allan (lag1_noise_id, lag1_acf) | tests/clock_library_lag1_noise_id_allantools.rs (140 випадків: десять записів зі степеневим законом за Касдіним, b = 0 до -4, як дані фази та частоти, af = 1 до 64; alpha_int і d ідентичні, найгірші |d alpha| 9.6e-13 і |d rho| 4.8e-13 проти 1e-9; попередньо зареєстровано 2ec76864); allan::tests (lag1_identifies_white_pm_white_fm_and_random_walk_fm; lag1_is_blind_to_a_quadratic_phase_trend) | allantools 2024,6 autocorr_noise_id (A. Wallin та співавтори, LGPL-3.0-or-later, запускається генератором тестових даних як окрема програма): незалежна реалізація опублікованого алгоритму Райлі–Грінголя, однозначно визначена величина за вказаних умовностей. Перевіряє ідентифікатор, а не шумовий вміст будь-якого реального годинника | VALIDATED |
| VM-455af4b5 | Автентифікація навігаційних даних Galileo OSNMA на боці приймача | osnma + kshana osnma verify: відкритий верифікатор на чистому Rust на боці приймача для Galileo OSNMA (SIS ICD, випуск 1,1, Receiver Guidelines, випуск 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 із причиною для кожного збою чи затримки. Лише консультативно: це не навігаційне обладнання із затвердженням типу і не служба цілісності навігації; жодної ефективності проти спуфінгу не заявляється |
osnma (page, subframe, dsm, merkle, signature, tesla, mac, maclt, navdata, verifier, ubx, cli) | tests/osnma_official_vectors.rs (за вибором, KSHANA_OSNMA_VECTORS: усі 18 наборів векторів, автентифіковано 186 382 міток, 0 невдалих, нижні межі для кожного набору, оголошені ланцюги, ADKD 0/4/12, перевірене сповіщення, відновлення автентифікації після завершення ланцюга, відкликання ланцюга та ключа і новий відкритий ключ; автономно, вектори не поширюються); tests/osnma_synthetic.rs (набір атак: підроблені підкадри з далекого майбутнього, закінчення терміну та прив'язка до даних, сповіщення та «не використовувати», підтвердження заголовка, фіктивні мітки, MACSEQ, конфлікт ключів, застарілий і відтворений KROOT, CMAC-AES/SHA3-256/P-521 через верифікатор); модульні тести osnma (відомі відповіді RFC 4231, RFC 4493, FIPS 197, FIPS 202, RFC 6979 і CRC-24Q) | Офіційні тестові вектори Galileo OSNMA, опубліковані European GNSS Service Centre як додаток до 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, свіжість без незалежного часу. Не є службою ЄС | VALIDATED |
| VM-27e53cda | Характеристика стабільності частоти | Девіація Аллана/модифікована/Адамара + ідентифікація степеневого шуму з довірчими інтервалами χ² | allan | tests/allan_reference.rs (NBS14 проти Stable32 з точністю 1e-4); allan::tests | Еталонні девіації NIST SP 1065 (Райлі) / Stable32 на NBS14 | VALIDATED |
| VM-f329e455 | Стабільність частоти на реальному виміряному годиннику | Перекривна девіація Аллана + перекривна девіація Адамара на реальному цезієвому стандарті | allan | tests/cs5071a_reference.rs (реальні дані 5071A Cs проти H-мазера, 556 990 точок, 16 коефіцієнтів усереднення проти Stable32 з точністю 1e-3; залежить від наявності даних через scripts/fetch_cs5071a.sh) | Перекривні ADEV/HDEV за Stable32 на виміряному фазовому ряді цезієвого годинника 5071A (allantools) | VALIDATED |
| VM-374517c9 | Паритет оцінювачів Аллана на канонічному еталонному ряді Stable32 | Перекривна девіація Аллана + модифікована девіація Аллана + девіація часу на всій драбині AF | allan | tests/phasedat_reference.rs (Stable32 PHASE.DAT, 139 коефіцієнтів усереднення, OADEV/MDEV/TDEV з точністю 1e-3; залежить від наявності даних через scripts/fetch_phasedat.sh) | Еталонні девіації Stable32 для PHASE.DAT (Райлі; стандартний регресійний ряд) | VALIDATED |
| VM-5ced4913 | Стабільність частоти розширеного діапазону (Theo1 / TOTDEV) | Theo1 і повна девіація (TOTVAR) — оцінювачі стабільності на довгих τ розширеного діапазону, що сягають ~75 % запису там, де девіація Аллана вичерпується біля ~50 %; гібрид ThêoH зі знятим зміщенням (allan::theoh_curve), побудований на них, залишається MODELLED | allan | tests/theo1_totvar_reference.rs (Theo1 + TOTDEV на 1000-точковому наборі даних LCG з NIST SP 1065 §12,4, 6 + 6 коефіцієнтів усереднення проти allantools 2024,06 з точністю <1e-9); allan::tests (відстеження замкненої форми для білого FM; тотожність TOTVAR=ADEV при m=1; інваріантність Theo1/TOTVAR до зміщення фази/частоти; нахил -1/2 для білого FM) | 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 | VALIDATED |
| VM-fb93df39 | Максимальна похибка часового інтервалу (MTIE) — метрика дрейфу в телекомунікаціях | MTIE(τ): максимальний розмах між піками похибки часу в будь-якому ковзному вікні τ = m·tau0, статистика дрейфу ITU-T G.810/G.823/G.8261, відносно якої записано обмеження мереж синхронізації (маски MTIE) — екстремальний (макс./мін.) показник, відмінний від родини Аллана з RMS | allan (mtie, mtie_curve) | tests/mtie_reference.rs (MTIE на герметичному 1000-точковому ряді фази LCG з NIST SP 1065 §12,4, 9 коефіцієнтів усереднення m=1..256 проти mtie з allantools 2024,06 з точністю <1e-9, спостережено ≤4e-15); allan::tests (виведений вручну розмах; монотонне незменшення за τ; точне a·m на чистому лінійному зростанні) | allantools 2024,06 — незалежна стороння бібліотека стабільності частоти — mtie() на герметичному фазовому ряді LCG NIST SP 1065 §12,4; MTIE є суто статистикою максимуму/мінімуму, тож вихід оцінювача побітово збігається з allantools на ідентично побудованому фазовому масиві (закомічені еталонні константи з 15 значущими цифрами лежать у межах 1 ULP). Відтворюється офлайн за допомогою tests/fixtures/mtie/generate_mtie_reference.py | VALIDATED |
| VM-f2098d5f | Модифікована девіація Аллана / девіація часу (MDEV / TDEV) | MDEV(τ): перекривна модифікована девіація Аллана (оцінювач із ковзним вікном за другою різницею, що відокремлює білий фазовий шум від фліккер-шуму фази), і TDEV(τ) = τ/√3·MDEV(τ), статистика дрейфу в часовій області ITU-T G.811/G.812/G.823, відносно якої записано маски синхронізації | allan (modified_adev, time_deviation) | tests/mdev_tdev_reference.rs (MDEV + TDEV на герметичному 1000-точковому ряді фази LCG з NIST SP 1065 §12,4, 8 коефіцієнтів усереднення m=1..200 проти mdev/tdev з allantools 2024,06 з відносною точністю <1e-9, плюс тотожність τ/√3 на реальному ряді); allan::tests (нахил −1/2 для білого FM; виведений вручну малий випадок MDEV) | 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; це жорстка, завжди ввімкнена герметична перехресна перевірка) | VALIDATED |
| VM-459d2f31 | Стабільність частоти оптичного годинника на реальній виміряній кривій | Відновлення степеневого закону (білий FM + червоний шумовий поріг) методом NNLS за опублікованою виміряною девіацією Аллана оптичного годинникового переходу ⁸⁸Sr — відтворення σ_y(τ) і головного масштабування 4.7e-16/√τ на малих τ зі справжнім виміряним порогом на довгих τ, а не синтезованим порогом оптичного класу, який holdover.rs інакше припускає | quantum_trade (qparams_from_adev_curve), powerlaw | tests/optical_clock_adev_reference.rs (σ_y(τ) годинника на ⁸⁸Sr-пінцетах за Norcia та ін., 8 часів усереднення 0,92–117,76 с, включено дослівно за CC-BY-4.0: NNLS відтворює криву з RMS ~10% / ≤21% у найгіршій точці; відновлений √q_wf = 4.33e-16 збігається з опублікованим 4.7e-16/√τ; q_rw > 0 виміряний поріг червоного шуму) | Norcia, Young, Eckner, Oelker, Ye, Kaufman, Science 366:93 (2019), рис. 4, виміряна ADEV; крива взята дослівно з Zenodo 10.5281/zenodo.3382347 (CC-BY-4.0). Обмежено відтворенням опублікованої виміряної кривої стабільності — показники пристроїв holdover до порогу для класу годинника залишаються MODELLED | VALIDATED |
| VM-3cfc418d | Цілісність (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 не має зовнішнього порівняння | 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 | tests/integrity_araim_stanford_oracle.rs::araim_mhss_matches_stanford_maast_add_v4_2 (270 випадків реальної геометрії, Celestrak GPS+Galileo та IGS SP3: найгірші |dVPL| 2.2e-3 м, |dHPL| 1.1e-3 м, |dEMT| 2.1e-10 м проти TOL_PL з ADD 0,05 м); tests/integrity_araim_stanford_oracle.rs::uniform_sigma_matched_gap_finding (розбіжності за однорідної сигми, зафіксовані); tests/integrity_snapshot_raim_rtklib_oracle.rs::snapshot_raim_decisions_and_slope_levels_match_rtklib (реальні дані IGS ABMF 2018-05-13, 288 епох, 2016 випадків із внесеними зміщеннями від 10 до 100 м: рішення про виявлення 2016/2016 і про виключення 801/801 ідентичні, нахилові HPL/VPL у межах 2.7e-12 м проти 1e-6 м); tests/integrity_sbas_stanford_oracle.rs::sbas_l1_protection_levels_match_stanford_maast_on_real_waas_messages (2868 пар «користувач–епоха» на реальних широкомовних повідомленнях WAAS, та сама захищена множина, найгірші |dVPL| 7.1e-6 м і |dHPL| 1.6e-5 м проти 1e-4 м); tests/integrity_sbas_stanford_oracle.rs::sbas_l5_finding_geo_reception_gate (висновок щодо L5, зафіксований); tests/igs_real_data.rs і tests/araim_dual_real_data.rs (перевірка правдоподібності на реальних IGS SP3 і геометрії Celestrak, збережені як регресійні перевірки, а не оракули) | Три незалежні інструменти, попередньо зареєстровані (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; незалежний holdout рецензента (270 нових геометрій користувача та друге повідомлення підтримки цілісності, MAAST перезапущено проти замороженого коду) пройдено за того самого порогу. (2) Знімковий RAIM: RTKLIB v2.4.2-p13 (BSD-2) estpos/valsol/raim_fde в окремій обв'язці на C для виявлення та виключення; PL за нахилом з RTKLIB matinv/xyz2enu плюс SciPy 1.18.1 chi2/ncx2, де обидві сторони обчислюють той самий замкнений вираз (Браун; Паркінсон і Аксельрад), тож перевірка PL охоплює реалізацію, а не формулу. (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 град п. ш.) | VALIDATED |
| VM-e73617ea | Поширення та визначення орбіти | SGP4/SDP4, Cowell 6-DOF + збурення, пакетне/послідовне OD | sgp4, propagator, orbit_determination, precise_od | tests/sgp4_verification.rs (666 верифікаційних векторів AIAA, найгірше 4,12 мм); tests/sgp4_crate_comparison.rs (незалежний крейт sgp4) | Верифікаційні вектори SGP4 за AIAA 2006-6753 | VALIDATED |
| VM-7b9f2f5d | Чисельний пропагатор Cowell і модель сил | Чисельний пропагатор Cowell з ієрархічною моделлю сил (двотільна, зональні J2–J6, третє тіло Сонця/Місяця, гарматне ядро SRP, експоненційний опір); RK4 з подвоєнням кроку / DP5(4) / DOP853 | propagator, forces | tests/numerical_cowell_propagator_reference.rs (275 епох = 11 випадків × 25 погодинних станів, LEO+GTO, проти Orekit 12,2 DormandPrince853; консервативні рівні T1–T5, найгірше |Δr| 0,08 м за 24 год; рівень опору схарактеризовано на 333 м) | Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — незалежна бібліотека, інший інтегратор і інша рекурсія сферичних гармонік. Консервативні рівні (двотільна → зональні J2–J6 → третє тіло Сонця/Місяця → гарматне ядро SRP) збігаються із субметровою точністю на дузі 24 год, що підтверджує інтегратор і алгебру сил; рівень опору та абсолютна точність вхідних даних ефемерид Сонця/Місяця й густини залишаються MODELLED (лише характеризація) | VALIDATED |
| VM-69a790eb | Тінь SRP для сплюснутої Землі (за вибором) | Освітлена частка SRP з еліпсоїдом WGS-84 як тілом, що затуляє (видимий радіус Землі від лімба еліпсоїда в напрямку Сонця, формула подвійного диска-лінзи; srp_shadow::oblate_conical_shadow), вмикається за вибором у моделі сил Cowell через propagator::ForceModel::srp_shadow (за замовчуванням: сферична конічна тінь, без змін) | srp_shadow, forces (srp_accel_with_lit_fraction), propagator | tests/srp_oblate_shadow_orekit_oracle.rs (2400 геометрій через край тіні, 884 у півтіні, від LEO до GEO, схилення Сонця 0 і +-23.44 град, 8 азимутів: найгірше |dnu| 7.41e-9 для WGS-84 і 2.24e-9 для сферичної базової моделі; відношення Orekit для WGS-84 і сфери відрізняються до 0,98, тож набір розрізняє сплюснутість); модульні тести srp_shadow і propagator | Orekit 12,2 (Apache-2.0) SolarRadiationPressure.getLightingRatio із затуляючим тілом WGS-84 і сферичним OneAxisEllipsoid, запущений як окрема програма з Сонцем у тому самому інерційному положенні. Пороги попередньо зареєстровано в xval/srp-oblate-shadow-orekit/PREREGISTRATION.md (6d6d269c): 1e-6 для обох і розкид сплюснутої проти сфери > 1e-2; усі виконано (met). Вісь еліпсоїда — інерційна вісь z з обох боків (без прецесії-нутації) | VALIDATED |
| VM-7244b960 | SRP «коробка з крилами» та ECOM2 із частинними похідними (за вибором) | Не гарматне ядро SRP: плоскопанельна модель «коробка з крилами» (Vallado рівн. 8-44; односторонні панелі корпусу, крила, спрямовані на Сонце) з таблицями Galileo FOC, IOV і IOV наприкінці строку служби з метаданих супутників GSC, за номінального керування рисканням ГНСС, з аналітичними частинними похідними за фактором випромінювання та дзеркальним і дифузним коефіцієнтами кожної панелі; а також емпірична модель ECOM2 (D2/B1) з її частинними похідними. «Коробка з крилами» вмикається за вибором у пропагаторі Cowell (propagator::ForceModel::box_wing_srp із заданням його поля srp_boxwing) і в моделі прецизійного визначення орбіти (precise_od::PreciseForceModel::box_wing_srp), замінюючи член гарматного ядра з cr як фактором випромінювання; обидва за замовчуванням дорівнюють None, залишаючи кожен наявний шлях побайтно ідентичним. ECOM2 не підключено до жодної моделі сил | srp_boxwing, propagator, precise_od | tests/srp_boxwing_orekit_oracle.rs (252 геометрій на орбіті Galileo, 7 випадків із Сонцем, включно з відстанями в перигелії та афелії, 100 випадкових орієнтацій; сума плоских пластин найгірше 2.05e-15 відносно за 1056 випадків; наскрізно з власними орієнтацією та тиском Orekit найгірше 2.39e-15 за 747 випадків повного освітлення Сонцем, тоді як типові константи тиску Orekit відрізняються на >= 4.43e-3, тож порівняння розрізняє константу; номінальна матриця рискання найгірше 1.89e-15; частинна похідна коефіцієнта випромінювання найгірше 1.35e-15; частинні похідні по панелях найгірше 4.12e-13 відносно до центральних різниць Orekit за 10836 випадків панелей; прискорення ECOM2 і частинні похідні найгірше 1.74e-15); модульні тести srp_boxwing (граничні випадки замкненої форми, частинні похідні скінченними різницями); тести підключення propagator і precise_od | Orekit 12,2 (Apache-2.0) BoxAndSolarArraySpacecraft з FixedPanel і PointingPanel, SolarRadiationPressure(dRef = 1 а. о., pRef = 1361/c), GenericGNSS nominal yaw і ECOM2(nD = 2, nB = 1), запущений як окрема програма із Сонцем у фіксованих інерційних положеннях; похідна фактора випромінювання з Hipparchus Gradient, похідні кожної панелі як центральні різниці Orekit (в Orekit їх немає). Пороги попередньо зареєстровано в xval/srp-boxwing-orekit/PREREGISTRATION.md (e59df6bf) до появи будь-якого виходу Orekit: 1e-12 відносно (1e-11 наскрізно, 1e-9 для різниць); усі виконано (met) (RESULTS.md). VALIDATED охоплює лише обчислення моделі: таблиці GSC є переписаними вхідними даними, а адекватність «коробки з крилами» для реальних орбіт Galileo, теплове перевипромінювання, модифікований закон рискання за малого бета і заходи в тінь не охоплено; прогноз SRP для Galileo залишається MODELLED | VALIDATED |
| VM-dfdd58c8 | Тінь SRP із потемнінням Сонця до краю (за вибором) | Освітлена частка SRP як незатулена частка сонячного потоку з потемнінням до краю (закон наближення Еддінгтона I(mu)/I(1) = 2/5 + 3/5 mu, квадратура Гаусса–Лежандра) над сферичною або WGS-84 Землею (srp_shadow::limb_darkened_shadow, варіант ShadowModel OblateEarthLimbDarkened) | srp_shadow | srp_shadow::tests (кільцева замкнена форма, рівномірний закон, що відтворює конічну тінь, межі повного Сонця та повної тіні) | Зовнішнього немає: в Orekit 12,2 немає коефіцієнта освітлення з потемнінням до краю. Перевірено лише за замкненими виразами того самого закону | MODELLED |
| VM-34cdc433 | Густина термосфери за NRLMSISE-00 | Порт емпіричної термосфери NRLMSISE-00 (gtd7 і gtd7d: густини видів, повна масова густина з аномальним киснем, температури; 24 перемикачі; режими добового Ap і 3-годинного масиву ap) з версії на C із суспільного надбання, створеної з NRL Fortran | nrlmsise00 | tests/nrlmsise00_reference.rs (720 точок сітки, від 90 до 1000 км, 4 широти, 2 місцевих часи, 3 доби, низька/помірна/висока активність: густина в межах 1.866e-6 відносно та температура в межах 1.97e-4 K від pymsis; бітово ідентично порту на C; 17 опублікованих тестових випадків на C, 187 значень у межах 0,496 одиниці 7-ї значущої цифри); модульні тести nrlmsise00 | pymsis 0.13.0 (MIT) version=0, що запускає NRL Fortran GTD7D в одинарній точності, і порт NRLMSISE-00 на C (випуск 20190709, суспільне надбання), скомпільований як окрема програма, а також 17 опублікованих тестових виходів дистрибутива на C. Пороги попередньо зареєстровано в xval/nrlmsise00-pymsis/PREREGISTRATION.md (e90ae26a) до появи порту; усі виконано (met) (RESULTS.md). Перевіряє порт, а не точність моделі відносно виміряної густини | VALIDATED |
| VM-c19ea19a | Рівень густини опору за NRLMSISE-00 (за вибором) | forces::DensityModel (Exponential за замовчуванням, Nrlmsise00 { f107a, f107, ap }) і propagator::ForceModel::drag_density: квадратичний опір проти співобертної атмосфери з густиною NRLMSISE-00 у геодезичній точці WGS-84 (кут обертання Землі з UT1 = TT, місцевий сонячний час UT + lon/15), стала космічна погода для кожної моделі; за замовчуванням вимкнено й побітово ідентично | forces (density_at, drag_accel_with_density), propagator | tests/drag_tier_orekit_oracle.rs (4 випадки × 25 погодинних станів за 24 год, кругова 51,6 град, 400 км за низької/помірної/високої активності та 300 км: найгірші |dr| 0,0303 м і |dv| 3.36e-5 м/с проти від 3,3 до 141,8 км зміщення через опір, найгірша похибка/поріг 0,003; контроль із експоненційною густиною помиляється на 119,1 м); модульні тести forces і propagator (типово бітово ідентично; рівень обчислює порт у земно-фіксованій геодезичній точці) | 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 м; усі виконано (met). Не охоплено: точність моделі відносно виміряної густини, змінна в часі космічна погода, ланка GMAT | VALIDATED |
| VM-36db0ce5 | Експоненційний опір за замовчуванням проти незалежної реалізації (екваторіальний) | Опір пропагатора Cowell за замовчуванням: квадратичний опір проти співобертної атмосфери із forces::atmospheric_density, кусково-експоненційною таблицею з Vallado, таблиця 8-4, на сферичній висоті (propagator::ForceModel::drag зі стандартним варіантом Exponential у forces::DensityModel) | forces (atmospheric_density, drag_accel), propagator | tests/drag_exponential_gmat_oracle.rs (екваторіальні випадки E400, E300 і E250x600 на J2000.0, 25 погодинних станів за 24 год: зміщення, спричинене опором, узгоджується з GMAT не більше ніж на 0,016 порога 0,5 м + 1e-3|D| проти від 21,5 до 143,9 км зміщення; зміна Cd*A/m на +1 % сягає 9,83 порога; нахилений випадок I400 повідомлено, розбіжність 10,4 %, заявлена різниця у визначенні висоти) | GMAT R2022a (NASA GSFC, Apache-2.0) GmatConsole з атмосферою Exponential (та сама 28-смугова таблиця), точковою масою Землі та PrinceDormand78, запущений, ніколи не вбудований у код. Пороги попередньо зареєстровано в xval/drag-exponential-gmat/PREREGISTRATION.md (640c85c1) за зсувом від опору з кожного боку (прогін з опором мінус без опору), що скорочує два значення mu Землі та інтегратори; усі виконано (met) (RESULTS.md). GMAT приймає геодезичну висоту, а kshana — сферичну: вони збігаються лише на екваторі, тож VALIDATED охоплює екваторіальні орбіти; поза екватором моделі відрізняються за задумом (10,4 % зсуву за 24 год за 51,6 град, 400 км). Публічна збірка GMAT не має NRLMSISE-00 (плагін відсутній), тож рівень NRLMSISE-00 має лише оракул Orekit. Точність таблиці відносно виміряної густини не охоплено | VALIDATED |
| VM-6c291c83 | Сонце та Місяць за DE440 у моделі сил Cowell (за вибором) | Рівень ефемерид за вибором для членів третього тіла та SRP чисельної ForceModel Cowell: геоцентричні Сонце та Місяць із будь-якого EphemerisProvider (ядро DE440 SPK через KernelEphemeris) у TDB = TT + (TDB - TT), з відмовою постачальнику, який не може обслужити епоху, і підрахунком будь-якого повернення до аналітичного ряду; за замовчуванням вимкнено | propagator (ForceModel::with_ephemeris, ForceEphemeris), ephem_provider | tests/propagator_de440_orekit_oracle.rs (5 випадків x 25 щогодинних станів за 24 год, LEO, GEO і HEO, третє тіло та третє тіло + SRP: найгірше |dr| 0,0170 м, |dv| 1.84e-5 м/с; аналітичний контроль відхиляється на 9,96 м; Сонце 6,39 м і Місяць 0,244 м від положень DE440 Orekit, зафіксований промах); модульні тести propagator (відмова провайдера, облік резервного переходу, спільний між клонами) | 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 м), тож розбіжність лежить між шляхом de440s у NAIF і читачем DE440 або шкалою часу в Orekit; причину не відокремлено. Зафіксовано й закріплено, тож рядок залишається MODELLED | MODELLED |
| VM-555b0707 | Атмосферний приплив S1 (за вибором) | Добовий атмосферний приплив S1 від тиску повітря як збурення геопотенціалу: модель N1 Б'янкале та Боде (2006), степені від 2 до 6, за формулою навантаження IERS 2010 рівн. 6,21 (tides::atmospheric_tide_s1, s1_air_tide_acceleration), вмикається за вибором у моделях сил Cowell і прецизійній (air_tide_s1, за замовчуванням вимкнено) | tides, propagator, precise_od | tides::tests (член S1 добовий, повертається на 90 градусів за чверть доби та має амплітуду коефіцієнта навантаження кожного рядка; фізична величина на LEO); propagator::tests::the_s1_air_tide_flag_adds_exactly_the_s1_acceleration | Зовнішнього немає для ефекту геопотенціалу. 24 коефіцієнти переписано з GFZ STR06/01, таблиця 1, модель N1, і перевірено рядок за рядком за звітом (SHA-256 890865ae); степені 0, 1, 7 і 8 не використовуються. Рей і Понте (2003) не друкують таблиці сферичних гармонік, тож другого джерела для порівняння не було | MODELLED |
| VM-9ad1723e | Коефіцієнти атмосферного припливу S2 в умовностях IERS | Гармоніки тиску повітря S2 за Реєм (2001) (n <= 4, прямі й зворотні) перетворено до повністю нормованої форми з випередженням за синусом за рівняннями IERS 2010 6.20-6.21 (амплітуду поділено на N_nm, epsilon = 90 град - psi) і застосовано як член S2 у tides::atmospheric_tide | tides (s2_air_waves, atmospheric_tide) | tests/s2_air_tide_gfz_table5.rs (21 з 21 хвиль узгоджуються з опублікованою моделлю A2: найгірше 0,00050 см, 0,050 град проти порогів 0,0006 см, 0,1 град); tests/tides_iers.rs (смуга амплітуди S2) | Biancale і Bode, GFZ Scientific Technical Report STR06/01 (2006), таблиця 5, модель A2: Рей (2001), опублікований у повністю нормованих гармоніках із фазами з випередженням за синусом, незалежне подання тієї самої моделі. Попередньо зареєстровано в xval/s2-air-tide-fix/PREREGISTRATION.md (5e31c37a) разом із виправленням, яке воно перевіряє. Охоплює лише перетворення коефіцієнтів; геопотенціальний ефект атмосферного припливу не має зовнішнього оракула | VALIDATED |
| VM-ab8e111d | Тесеральний геопотенціал у пропагаторі Cowell | Тесеральне поле EGM2008 за вибором (до степеня/порядку 70) як центральна гравітація чисельної ForceModel Cowell, яке обчислюється в земній системі координат, повернутій на кут обертання Землі IAU 2000 (або за ланцюжком CIO GCRS-ITRS); за замовчуванням вимкнено, тож жоден наявний вихід не змінюється | propagator (Geopotential, EarthFixedFrame), gravity_sh | tests/cowell_tesseral_orekit_oracle.rs (6 випадків × 25 погодинних станів за 24 год: EGM2008 8x8 і 70x70 на LEO 45 град, полярній 89,9 град, сонячно-синхронній 98,2 град, GTO та 70x70 із Сонцем/Місяцем і SRP; найгірші |dr| 0,0355 м, |dv| 3.74e-5 м/с; негативні контролі помиляються на 6168 м (заморожена Земля) і 20871 м (лише зональні)); модульні тести propagator (тотожність зональної межі з точністю 1e-12, система CIO біт у біт проти precise_od, інтеграл Якобі збережено з точністю 1e-9 за 6 год) | Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 з HolmesFeatherstoneAttractionModel за тими самими коефіцієнтами (tools/egm2008_to70.gfc) у системі координат тіла, повернутій за тією самою формулою кута обертання Землі, запущений як окрема програма. Пороги попередньо зареєстровано (f0e0e65, змінено до будь-якого порівняння в 2da899a): |dr| <= 0,5 м і |dv| <= 5e-4 м/с, а обидва негативні контролі розходяться більш ніж на 100 м; усі виконано (met), після чого пороги посилено до 0,1 м і 1e-4 м/с. Не перевірено: точність орієнтації Землі (обидва боки використовують UT1 = TT без прецесії-нутації в системі Era), варіант системи Cio (лише внутрішня перевірка), степені вище 70 | VALIDATED |
| VM-011311b1 | Високостепенева сферично-гармонічна гравітація (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 Geopotential | gravity_sh, propagator (FieldEvaluator) | tests/gravity_sh_high_degree.rs (Orekit у 8 позаосьових точках: макс. |da| 2.2e-17 м/с^2 при N = 70, виконується завжди; 3.5e-17, 3.9e-17 і 7.3e-17 м/с^2 при N = 200, 360, 2190, за наявності даних KSHANA_EGM2008_GFC); tests/cowell_tesseral_200_orekit_oracle.rs (24-годинна орбіта 200x200, за наявності даних: найгірше |dr| 0,1317 м, |dv| 1.45e-4 м/с; контроль ступеня 70 0,726 м); модульні тести gravity_sh (збіг з класичним обчислювачем до 1e-13 при ступені 70, скінченна різниця та неперервність на полюсі для поля ступеня 2190, член ступеня 2190 з антипереповненням проти обчислення з розширеним показником) | 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; 50-значна перевірка в mpmath відносить похибку на pyshtools), немає значення оракула точно на полярній осі, а попередньо зареєстрований контроль чутливості за степенем 70 для орбіти на 24 год не спрацював (0,726 м проти > 1 м). Кожен промах зафіксовано, а не підігнано, тож рядок залишається MODELLED | MODELLED |
| VM-c46b5c0f | Інтегратор DOP853 | Явний метод Рунге–Кутти Hairer DOP853 8(5 3) із комбінованим оцінювачем похибки 5-го/3-го порядку, контролером кроку SciPy/Hairer, автоматичним початковим кроком, захисним обмежувачем кроку з відмовою за замовчуванням і щільним виходом 7-го порядку; вибирається як варіант Integrator пропагатора Dop853 / propagator::propagate_dop853 | integrator, propagator | tests/dop853_scipy_oracle.rs (8 одиничних кроків: стан у межах 5.55e-15 відносно, похідна FSAL 3.46e-15, щільний вихід 1.99e-14, рішення про прийняття/відхилення ідентичні; 3 повні прогони при rtol = atol = 1e-12 (LEO 58000 с, e = 0,7 за 5 періодів, Arenstorf за один період): початковий крок ідентичний, прийняті кроки 502/501, 390/390, 298/298 і обчислення 6025/6013, 5497/5497, 4285/4285 проти SciPy, кінцеві стани в межах 2.95e-13 відносно (задача двох тіл) і 1.58e-12 (Arenstorf), щільний вихід у межах 9.5e-13; точність проти точного розв'язку Кеплера в mpmath дорівнює точності SciPy (LEO 8.44e-5 м, періодичність Arenstorf 1.475e-9)); модульні тести integrator і propagator (24 год задачі двох тіл проти точного Кеплера в межах 0,1 м) | SciPy 1.18.1 (BSD-3-Clause) solve_ivp(method=DOP853) та його підпрограми одного кроку, норми похибки, щільного виходу й початкового кроку, незалежна реалізація; точні двотільні стани з mpmath 1.3.0 із 40 цифрами. Пороги попередньо зареєстровано в xval/dop853-scipy/PREREGISTRATION.md (ae1b25e) до першого порівняння; усі виконано (met) (xval/dop853-scipy/RESULTS.md). Перший крок SciPy передається обом розв'язувачам у повних прогонах; підпрограма початкового кроку порівнюється окремо. Не охоплено: RKF7(8), виявлення жорсткості, пошук подій | VALIDATED |
| VM-801a1141 | Надійний розв'язувач рівняння Кеплера | Еліптичний розв'язувач Кеплера для всіх 0 <= e < 1 і всіх середніх аномалій: кубічний початковий набір і виправлення п'ятого порядку за Markley (1995), залишок без скорочення (1-e)E + e(E - sin E) - M і захищене уточнення Ньютона (kepler::solve_kepler_markley, propagator::solve_kepler_robust) | kepler, propagator | tests/kepler_mpmath_oracle.rs (405 точок сітки, e від 0 до 0,999999, M у [-pi, pi] аж до 1e-12: найгірше |E - E_ref| 0,898 eps|E| проти порога 8 eps|E|; 9 точок із намотаним M на рівні не гірше 0,013 свого порога; жодного уточнювального кроку Ньютона не знадобилося в жодній із 414 точок; обгортка бітово ідентична); модульні тести kepler | mpmath 1.3.0 (BSD-3-Clause), 50-значні корені за точними двійковими вхідними даними. Пороги попередньо зареєстровано в xval/kepler-mpmath/PREREGISTRATION.md (df22174), задано відносно |E| з аргументом обумовленості e -> 1, M -> 0; усі виконано (met) (xval/kepler-mpmath/RESULTS.md). Застарілі розв'язувачі (solve_kepler_checked, orbit::solve_kepler, ephem::solve_kepler) чисельно не змінено, оскільки від них залежать закомічені виходи, і цей рядок їх не охоплює | VALIDATED |
| VM-16c33630 | Пакетне визначення орбіти за швидкістю зміни дальності та az/el із маскуванням станції | Відновлення стану на епоху зі змішаних вимірювань дальності, швидкості зміни дальності та азимута/кута місця вище маски кута місця методом Гаусса–Ньютона за H = (dh/dx(t)) Phi(t, t0): аналітичні частинні похідні вимірювань і варіаційна матриця переходу стану з аналітичними двотільними частинними похідними + J2 (інтегрована RK4, а не STM у замкненому вигляді) | orbit_determination (determine_orbit_batch_tracking, propagate_with_stm, is_visible), batch_ls (gauss_newton_analytic) | tests/od_tracking_measurements_reference.rs (8 сценаріїв: швидкість зміни дальності, az/el і змішані, LEO та MEO, без шуму та із зерном сигма 5 м / 5 мм/с / 1e-4 рад, маски 5 і 10 град, проти Orekit 12,2: множини видимих ідентичні; значення вимірювань у межах 5.84e-8 м, 6.30e-10 м/с, 1.44e-13 рад; STM у межах 1.2e-14 відносно; зашумлені стани в межах 1,74 см і 1.14e-5 м/с; післяпідгінковий RMS для кожного типу в межах 2.7e-4 відносно; kshana без шуму проти істини 1.06e-8 м; kshana без шуму проти Orekit 1,464 і 1,740 см у двох сценаріях, зафіксований промах порогу 1 см); модульні тести orbit_determination і batch_ls | Orekit 12,2 (Apache-2.0) BatchLSEstimator із власними миттєвими геометричними вимірюваннями RangeRate і AzEl (перехресно перевіреними за TopocentricFrame в Orekit), запущений як окрема програма на ідентичних замаскованих спостереженнях із зерном. Пороги попередньо зареєстровано в xval/od-measurements-orekit/PREREGISTRATION.md (0cf9076). Усі пороги виконано, крім B4, узгодження стану без шуму в 1 см, яке не досягнуто у 2 із 4 сценаріїв (1,46, 1,74 см): власна безшумна оцінка Orekit лежить на такій відстані від його змодельованої істини (причину з боку Orekit не відокремлено). Зафіксовано й закріплено, тож рядок залишається MODELLED. Не змодельовано: час проходження світла, аберацію, рефракцію, обертання Землі, послідовний фільтр для цих типів вимірювань | MODELLED |
| VM-f7b86f0a | Зважування спостережень за кодом точності SP3 | Відображення кодів точності SP3 (заголовок ++ показники степеня у 2^n мм, база %f, стандартні відхилення base^n мм для кожного запису) на сигми положення для кожного спостереження для рушія прецизійного визначення орбіти (sp3::parse_sp3_accuracy, Sp3Accuracy::position_sigma_m) | sp3, precise_od | модульні тести src/sp3.rs; tests/agency_galileo.rs::galileo_e11_sp3_accuracy_weighted_fit (закомічена 8-годинна фікстура ESOC, сигма 0,032 м з показника заголовка 5: 3D RMS рівня 1 0,132 м без змін, рівня 2 0,035 м проти 0,070 м при сигмі 1 м, зміна походить від переурівноваженого емпіричного апріорного обмеження); tests/agency_swarm.rs (продукт Swarm не містить кодів точності та переходить на резервний варіант, закріплено) | Зовнішнього немає: ваги є вибором моделювання (формат SP3 визначає код лише як показник точності від виробника; тут його читають як однорозмірну сигму для кожної осі). Наявні записані прогони агентств не змінено | MODELLED |
| VM-70e79085 | Гравітаційні поля планет із таблиць PDS SHADR | Читання таблиць сферичних гармонік PDS SHADR (from_shadr у SphericalHarmonicField в src/gravity_pds.rs: перетворення одиниць, задане C00 = 1, перевірки повноти та нормування) і обчислення гравітації в системі, пов'язаній з тілом, для Mars GMM-3 (d/o 120) та місячного поля GRAIL GL0660B (d/o 660) | gravity_pds, gravity_sh | tests/planetary_gravity_pds.rs (вирізки зі ступенем 20 виконуються завжди: найгірше |dg|/|g| 9.7e-16, відносно до збурення 3.4e-11; GMM-3 d/o 120 по всій сфері 3.7e-15 / 6.3e-12 і GL0660B d/o 660 при |lat| <= 60 град 5.0e-14 / 1.0e-10, залежить від наявності даних; заголовки та вибрані коефіцієнти дорівнюють опублікованим продуктам PDS, кількість записів 7380 і 218790); модульні тести gravity_pds | pyshtools 4.14.1 (BSD-3-Clause), що читає ті самі файли PDS і обчислює точкову гравітацію, запущений як окрема програма, а також опубліковані заголовки й мітки продуктів PDS. Пороги попередньо зареєстровано в xval/planetary-gravity-pyshtools/PREREGISTRATION.md (32c5b50); усі виконано (met) (RESULTS.md). Дані: NASA PDS Geosciences Node, суспільне надбання; вирізки степеня 20 постачаються з NOTICE, повні файли завантажуються під час тестування | VALIDATED |
| VM-4b74b49f | Приєднання опублікованого гравітаційного поля до тіла | with_gravity_field (у Body, в src/gravity_pds.rs): приєднує будь-яке завантажене сферично-гармонічне поле (наприклад, GMM-3 або GL0660B) до Body, щоб пропагатор обчислював його в системі, пов'язаній з тілом; за вибором, тіла за замовчуванням не змінюються | gravity_pds, body, propagator, mars_frame | tests/planetary_gravity_pds.rs::a_shadr_field_attached_to_a_body_drives_the_propagator; gravity_pds::tests::with_gravity_field_is_opt_in | Лише внутрішня узгодженість. Кожне опубліковане поле визначене в системі координат його виробника, пов'язаній з тілом (GMM-3 — у марсіанській системі Konopliv et al. 2006, GL0660B — у місячній головноосьовій системі DE421), тоді як поле обчислюється в системі IAU; зсув не змодельовано | MODELLED |
| VM-9aa52bbe | Пакетне та послідовне визначення орбіти | Відновлення стану на епоху [r,v] за дальностями від наземної станції за допомогою пакетного диференціального корегувальника Гаусса–Ньютона та послідовного фільтра на двотільній моделі сил + J2 | orbit_determination, precise_od (batch_ls::gauss_newton, fusion::ukf) | tests/batch_sequential_orbit_determination_reference.rs (8 сценаріїв: 6 безшумних LEO/MEO/ексцентричних/3–4 станцій + 2 σ=5 м, проти Orekit 12,2; найгірше пакетне |Δr| 1e-3 м / |Δv| 1e-6 м/с, послідовне |Δr| 0,9 м) | Orekit 12,2 (CS GROUP, Apache-2.0) BatchLSEstimator (Левенберг–Марквардт) + KalmanEstimator (EKF) — незалежна стороння бібліотека оцінювання на узгодженій моделі сил; відновлений стан на епоху та RMS залишків після підгонки збігаються до <1e-3 м без шуму та <3 м за шумового порогу 5 м | VALIDATED |
| VM-7d653b9e | Радіометричний розв'язувач часу проходження світла для далекого космосу | Запізнений (низхідна гілка) односторонній розв'язок часу проходження світла τ = |r_rx − r_target(t−τ)|/c для радіометричної навігації далекого космосу (Земля→Марс/Сонце/Місяць) | radiometric (light_time_solution) | tests/deep_space_mars_radiometric_reference.rs (24 ліній зв'язку за 8 епох 2020–2027 проти ANISE DE440; найгірше |Δτ| 1.03e-9 с, |Δrange| 0,31 м на відстані до 2,5 а. о.) | ANISE 0,10 (Nyx Space, MPL-2.0), час проходження світла з аберацією за збіжним Ньютоном (Aberration::CN; еквівалент SPICE spkapo) над JPL DE440 — незалежна реалізація SPICE на Rust; розв'язувач запізнення kshana з нерухомою точкою збігся із субнаносекундною точністю. Ширші показники Доплера / Шапіро / OD зі зниженою динамікою залишаються MODELLED | VALIDATED |
| VM-ddaed06d | Положення супутника за бортовими ефемеридами (багатосистемний RINEX) | Положення супутника в ECEF за кеплеровими бортовими ефемеридами IS-GPS-200 / Galileo-OS / BeiDou-OS з розібраного навігаційного запису RINEX-3 | rinex (parse_nav, RinexEphemeris::sv_position_ecef) | tests/rinex_sp3_interop_reference.rs (84 випадки «SV–епоха»: GPS + Galileo + BeiDou-MEO, 12 SV × 7 зсувів, проти RTKLIB eph2pos; найгірше |Δ| по осі 6.2e-8 м) | RTKLIB v2.4.2-p13 eph2pos(), скомпільований з коду на C (T. Takasu, BSD-2-Clause) — незалежна реалізація IS-GPS-200/SIS-ICD, якій подано ті самі навігаційні записи RINEX-3; положення супутника в ECEF збігається приблизно до 62 нм. (Інтерполяція прецизійних ефемерид SP3 перевіряється окремо — див. «Інтерполяція прецизійних ефемерид SP3») | VALIDATED |
| VM-771c34bd | Інтерполяція прецизійних ефемерид SP3 | Інтерполяція положень супутників за прецизійними ефемеридами SP3 за стандартом IGS методом Лагранжа з поправкою на обертання Землі для кожного вузла (кожен вузол обертається на ω⊕·(t_node−t) у земну систему координат на момент запиту перед підгонкою полінома) | sp3 (Sp3Interpolator::position_ecef) | tests/sp3_interp_reference.rs (72 випадки «SV–епоха» поза вузлами / 6 супутників проти RTKLIB peph2pos; найгірше |Δ| по осі 1.5e-8 м) | RTKLIB peph2pos(), скомпільований з коду на C (preceph.c; T. Takasu, BSD-2-Clause) — де-факто еталон IGS, незалежна реалізація; інтерполятор kshana (тепер із тією самою поправкою на обертання Землі для вузлів) збігся приблизно до 15 нм на реальному продукті SP3, замість ~5,5 см до поправки | VALIDATED |
| VM-a5c3941a | Кодувальники навігаційних повідомлень, окрім 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), блочне перемежування та синхропослідовності, з відповідними тестовими декодерами | gnss_navmsg (gps_cnav, gal_inav, gal_fnav, fec) | gnss_navmsg::tests (контрольне значення CRC-24Q 0xCDE703; імпульсна характеристика згортального коду; Viterbi виправляє вставлені помилки; ширини розкладки); tests/gnss_navmsg_roundtrip.rs (початкові біти полів дорівнюють номерам бітів ICD; кодування -> FEC -> перемежування -> Viterbi -> декодування повертає значення в межах половини LSB); tests/gnss_navmsg_galileo_brdc_grid.rs (записи IGS BRDC 2018-133 Galileo на сітці LSB, найгірше 3.6e-3 LSB; попередньо зареєстрований поріг кількості супутників не досягнуто, 15 із 20, FINDING) | Лише внутрішній круговорот і відомі відповіді за ICD; жодного стороннього декодера не запускалося (обв'язка RTKLIB/GNSS-SDR, що читає KSHANA_NAVMSG_ORACLE_JSON, залежить від наявності даних). MODELLED | MODELLED |
| VM-fd4e4555 | Зчитувач глобальної іоносферної карти IONEX та інтерполяція на реальній GIM від CODE | Зчитувач IONEX 1,0 (заголовок, значення I5 у фіксованих стовпцях, карти TEC і RMS, абсолютні епохи, пропущені значення) з білінійною просторовою інтерполяцією, часовою інтерполяцією формату «найближча / послідовна / повернута карта» (рівн. 1-3) та похилим TEC у тонкій оболонці | ionex (parse_ionex, parse_ionex_file, IonexFile::vtec_at, IonexFile::slant_tec_at, interpolate_tec_in_time, TecGrid::vtec_at) | tests/ionex_code_gim_oracle.rs (закомічена синтетична карта IONEX проти еталонної формули: 20 075 вузлів точно, інтерполяція макс. |Δ| 3.5e-13 TECU; залежить від наявності даних у KSHANA_IONEX_CODE_GIM_DIR, реальна вирізка за широтою фінального GIM від CODE за 2018-05-13, отримана fetch.sh із закріпленим SHA-256: вузли точно, інтерполяція макс. |Δ| 3.6e-13 TECU на 15 795 відліках, похила TEC 5.1e-13 TECU; залежить від наявності даних RTKLIB v2.4.2-p13 iontec у 6885 точках запиту, прогін 2026-10-13: макс. |Δ| 3.6e-13 TECU в обох часових режимах, поріг 1e-5 попередньо зареєстровано); ionex::tests | Надруковані значення GIM від CODE (точні в кожному вузлі; карту завантажують під час тестування, а не постачають із кодом, оскільки її ліцензію не підтверджено) та незалежна повторна реалізація формул інтерполяції 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. Залежить від наявності даних: GIM від CODE завантажують під час тестування, закріплено за SHA; RTKLIB читає повний файл, оскільки його getindex відхиляє обрізання за широтою. tests/fixtures/ionex_code_gim/fetch.sh завантажує його та перевіряє SHA-256, тест завершується невдачею на будь-яких інших байтах, а run_rtklib.sh є задокументованим шляхом відтворення (потрібен доступ до мережі). Підвищено до VALIDATED за рішенням власника на підставі доказів, що залежать від наявності даних (2026-10-13) | VALIDATED |
| VM-f40289c2 | Згладжування коду за несівною за Hatch на реальних спостереженнях RINEX | Фільтр Hatch без розбіжності (безіоносферний код, що несе безіоносферна несівна, вікно з N епох, перезапуск при втраті захоплення, стрибку геометрично-вільної комбінації або пропуску) у складанні прецизійного одноточкового позиціонування | hatch (HatchFilter), pvt (assemble_epoch_precise_smoothed, CarrierSmoother) | hatch::tests (наскрізна передача без шуму; дисперсія білого шуму 1/(2N-1); перезапуски); tests/hatch_wettzell_oracle.rs::hatch_finding_is_pinned (WTZR 2025-02-24 01-06 год, 600 епох, N = 100: медіана 3D-похибки 1,553 -> 1,116 м, p95 3,473 -> 3,207 м) | ВИСНОВОК за опублікованою координатою ITRF2020 WTZR: попередньо зареєстровані пороги (медіана та p95 після згладжування не більше 0,6 × сирого; tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_HATCH.md) не досягнуто, відношення 0,718 і 0,923; залишкова похибка на рівні метрів має характер зміщення (кодове зміщення C1C, антена, припливи, довгоперіодна багатопроменевість), а не білий шум, який усуває згладжування. MODELLED: статистику фільтра перевірено внутрішньо | MODELLED |
| VM-0f3c1299 | Подвійні різниці RTK із цілочисельною фіксацією LAMBDA на реальних спостереженнях RINEX | Відносне позиціонування на короткій базі за реальним двочастотним кодом і фазою несівної GPS: подвійні різниці відносно найвищого супутника з повною коваріацією, фільтр Калмана з дійсними значеннями за базовою лінією та одинарно-різницевими неоднозначностями з повторною ініціалізацією після зривів, цілочисельний метод найменших квадратів LAMBDA з тестом відношення та базова лінія, обумовлена зафіксованими цілими числами | rtk_real (run_rtk), lambda (resolve) | tests/rtk_real_wettzell_oracle.rs (станції IGS WTZR база / WTZZ ровер, 1,4 м, 2025-02-24 00-03 год, 30 с: 359 епох, фіксація у 100 % починаючи з 00:10, медіана похибки фіксованої бази 4,5 мм, p95 5,5 мм; перші 10 хв із фіксацією 2,6 мм проти плаваючого 13 см); rtk_real::tests | Опубліковані координати ITRF2020 для WTZR і WTZZ (IGN ITRF2020_GNSS.SSC, розв'язок 3, з висотами антен із RINEX), що дають еталонну базову лінію; пороги попередньо зареєстровано в tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_RTK.md до написання коду. Лише коротка база: іоносферні та тропосферні подвійні різниці не моделюються | VALIDATED |
| VM-2a1dcc58 | Розв'язок часу за годинником приймача PPP проти фінального станційного годинника IGS | Годинник приймача, оцінений статичним фільтром PPP з дійсними неоднозначностями на реальному двочастотному коді та фазі GPS із фінальними орбітами й годинниками IGS: передавання часу від приймача до часу IGS, безіоносферний розв'язок часу PPP. | ppp_real (run_ppp, PppEpoch::clock_m) | tests/ppp_time_igs_station_clock.rs (WTZR 2025-02-24, 04:00-05:55, 24 епохи: Kshana мінус IGS std 0,075 ns, поріг 0,20; середнє -0.659 ns, поріг 5,0) | Фінальний комбінований годинник IGS для станції WTZR (записи AR файла IGS0OPSFIN_20250550000_01D_05M_CLK, SHA-256 d19f3d45...993d, комбінація мережевих розв'язків кількох аналітичних центрів; продукти IGS, вільне використання із зазначенням авторства); пороги попередньо зареєстровано в xval/ppp-time/PREREGISTRATION.md до будь-якого порівняння; усі витримано з першого прогону. ЧОГО НЕМАЄ: одна станція і одне двогодинне вікно після збіжності; час IGS, а не UTC(k); стале зміщення містить кодові зміщення приймача та є обмеженим, а не відкаліброваним; простежуваності до Circular T немає. | VALIDATED |
| VM-8381d091 | Прецизійне точкове позиціонування з дійсними неоднозначностями на реальних спостереженнях RINEX | Статичний розширений фільтр Калмана PPP з дійсними неоднозначностями на реальному двочастотному коді та фазі несівної GPS із фінальними орбітами й годинниками IGS: безіоносферна комбінація, зсуви антен супутника та приймача (варіації приймача), твердоземний приплив, фазове намотування, затримка Шапіро, оцінена зенітна волога затримка, дійсні неоднозначності на кожній дузі з виявленням зривів за геометрично-вільною комбінацією / Мельбурна–Вюббена | ppp_real (run_ppp, parse_antex_receiver, solid_tide_ecef, phase_windup) | tests/ppp_real_wettzell_oracle.rs (станція IGS WTZR, 2025-02-24 00-06 год, 30 с, утримано від розробки: горизонталь в останню епоху 1,5 мм, вгору −2,9 см; 04-06 год 240/240 епох у межах 0,10 м у 3-D, p95 6,7 см; лише за кодом p95 1,70 м; залежить від наявності даних RMS ZTD 1,7 см проти EUREF); ppp_real::tests; tests/ppp_parity_glab_rtklib.rs (RM-31: PPP RTKLIB v2.4.2-p13 на тих самих вхідних даних узгоджується в межах 0,05 м на 240/240 епох, 9,7 мм на останній, за третьою реєстрацією після двох прогонів, у конфігурації RTKLIB яких бракувало твердого припливу, а антену було поставлено в слот бази, обидва зафіксовано як висновки; поріг паритету SPP не досягнуто, медіана 1,085 м проти 0,50 м; gLAB 6.0.0 у першому зареєстрованому прогоні, командний рядок поправки 4: PPP у межах 0,05 м на 240/240 епох і 5,0 мм на останній, поріг SPP не досягнуто, медіана 1,187 м, висновок: власні розв'язки SPP двох еталонних інструментів розходяться на медіану 0,852 м, тож цей поріг було встановлено жорсткіше, ніж узгодженість між інструментами) | Опублікована координата ITRF2020 для WTZR (IGN ITRF2020_GNSS.SSC, розв'язок 3, пропагована з її швидкістю) — пороги попередньо зареєстровано в tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_PPP.md до написання фільтра; розробка лише на сумісно розташованій станції WTZZ. Не змодельовано: океанічне навантаження, PCV супутника, розв'язання цілочисельних неоднозначностей | VALIDATED |
| VM-020e03fb | Читання навігаційних файлів 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 пропускаються до заголовка наступного запису; запис, заголовок якого називає інший супутник, або обрізаний запис відхиляється |
rinex (parse_nav, parse_nav_with) | tests/rinex4_nav_brd400_oracle.rs (IGS BRD400DLR_S RINEX 4,02 проти BRDM00DLR_S RINEX 3,04 за 2026-07-19, зріз 00-02 год: G 37 / E 478 / C 72 записів збіглися в обидва боки, кожне поле ідентичне, положення на Toe 0 м; повна доба залежить від наявності даних: G 416 / E 5668 / C 865 / J 118); rinex::tests | Об'єднаний бортовий файл RINEX 3 від IGS за той самий день (опубліковані дані, створені іншим генератором файлів з тих самих бортових повідомлень); пороги попередньо зареєстровано в tests/fixtures/brdc_rinex4_2026200/PREREGISTRATION.md (7aa264b) до першого прогону | VALIDATED |
| VM-93d6d028 | Читання файлів спостережень RINEX 4 | Заголовки спостережень RINEX 4.0x (DOI, LICENSE OF USE, STATION INFORMATION, MERGED FILE; мітки зіставляються в стовпцях 61-80 для версії 4 і новіших) і записи епох | rinex_obs (parse_obs) | tests/rinex4_obs_mao0.rs (перші 4 епохи файлу IGS MGEX RINEX 4,00 MAO000USA_R_20231980000_01D_30S_MO, 58 супутників, 7 систем: записи заголовка та значення першої епохи дорівнюють опублікованим літералам); rinex_obs::tests::parses_a_rinex_4_header_with_its_new_records (синтетичний заголовок 4,02 зі специфікації) | Відповідність формату на реальному опублікованому файлі RINEX 4,00 (прочитані назад значення дорівнюють надрукованим у файлі літералам) і на заголовку, виведеному зі специфікації; незалежного зчитувача не запускалося, тож MODELLED | MODELLED |
| VM-c58c97b0 | Положення геостаціонарного супутника BeiDou за бортовими ефемеридами | Положення геостаціонарного супутника за бортовими ефемеридами за BDS-SIS-ICD-B1I v3.0 §5.2.4.12 (квазіінерційна система, потім Rz(Ω̇e·tk)·Rx(−5°)), вмикається за вибором через поле include_beidou_geo в NavParseOptions, тож стандартний зчитувач і далі пропускає GEO | rinex (RinexEphemeris::sv_position_ecef_bds_geo, NavParseOptions) | tests/bds_geo_broadcast_oracle.rs (реальні записи C01-C04: геостаціонарний радіус, довготи 140.02/80.04/110.55/159.99 град на опублікованих слотах, |широта| 2,13 град з нахилом проти 6,65 без; попередньо зареєстроване порівняння широкомовного та точного SP3 залежить від наявності даних KSHANA_BDS_GEO_SP3 і не запускалося); rinex::tests | Попередньо зареєстровано (7aa264b, 110fef9) проти прецизійної орбіти IGS MGEX з GEO; такого продукту не було доступно із сеансу, який це створював, тож порівняння очікується, а рядок є MODELLED (перевірено лише за опублікованими номінальними слотами GEO) | MODELLED |
| VM-6cc640b7 | Інтерполяція прецизійних годинників SP3 | Зсув годинника супутника між табличними вузлами годинників SP3 лінійною інтерполяцією між двома суміжними дійсними вузлами (схема pephclk в RTKLIB; сигнальне значення поганого годинника пропускається), а ті самі вузли подаються в ланцюжок прецизійних продуктів як записи, еквівалентні годинникам RINEX | sp3 (Sp3File::clock_s, clock_nodes), precise_products (ClockRinex::from_sp3) | tests/sp3_clock_igs_oracle.rs (фінальний SP3 від IGS з кроком 15 хв за 2025-02-24 проти фінальних годинників IGS з кроком 30 с, 32 супутники GPS: медіана |Δ| у вузлах 2.6e-13 с; 3038 записів середніх точок RMS 0,121 ns, p95 0,265 ns; за утримання вузла замість цього 4,24 ns RMS); sp3::tests::clock_interpolation_is_linear_between_valid_nodes_and_exact_at_them | Фінальна комбінація годинників супутників IGS на 30 с (IGS0OPSFIN 30S CLK, 2025-02-24): опубліковані оцінки годинників на моменти запиту, не інтерпольовані із SP3; пороги попередньо зареєстровано в tests/fixtures/sp3_clock_igs_oracle/PREREGISTRATION.md до першого прогону (RMS 0,15 нс, p95 0,30 нс, медіана вузлів 1e-12 с, розрізнення 2x) | VALIDATED |
| VM-c65fdad2 | Тісно зв'язана GNSS/INS на фазі несівної з дійсними неоднозначностями | EKF у просторі помилок над 15 станами INS, двостановим годинником приймача та однією дійсною неоднозначністю несівної на кожен супутник, що відстежується; псевдодальність, фаза несівної та необов'язкова швидкість зміни дальності від угруповання SGP4 Walker (час проходження світла та ефект Саньяка), поправки Klobuchar і Saastamoinen/Niell, що застосовуються в контурі на власному положенні фільтра; виявлення зривів за часово-диференційованою несівною з порогом для кожного супутника, розширеним за невизначеністю швидкості; повторна ініціалізація неоднозначностей після зривів і повторного захоплення | fusion::carrier_tc (run_carrier_tc, CarrierTcCfg), fusion::trajectory (truth_epochs) | tests/fusion_carrier_tc.rs (їзда за траєкторією figure-8: усталений 3D RMS 0,025 м за несівною проти 0,470 м за кодом на однакових вимірюваннях; 12 зерен, середнє NIS/dof 1,00 і усталене NEES/dof 0,92; зрив на 1 цикл виявлено в його епосі без хибних тривог, а розв'язок залишився цілим; вимкнення широкомовних поправок підвищує похибку коду з 0,51 м до 19,6 м (іоносфера) і 8,0 м (тропосфера); безшумний прогін збігається до 0,3 мм) | Внутрішня узгодженість: вимірювання синтезуються з моделей, які використовує фільтр (χ² NEES/NIS за зернами, збіжність без шуму, ін'єкція зриву). MODELLED; реальних даних приймача чи стороннього фільтра для порівняння немає | MODELLED |
| VM-f381b220 | Пакети GNSS/INS для морського, залізничного й авіаційного застосування з опцією тісного зв'язування | Три сценарії gnss-ins на бібліотеці траєкторій (судно, що маневрує на 8 м/с, з п'ятихвилинним перебоєм; потяг, що проходить крізь виїмку з двома супутниками і тунель; літак, перебій якого охоплює віраж із креном 25 градусів) і необов'язкова таблиця [tight] пакета: псевдодальності від угруповання SGP4 Walker, злиті навігатором із замкненим контуром, усі супутники вище маски в номінальному режимі та кілька найвищих у погіршеному | fusion::pack (TightCfg, [tight]), сценарії gnss-ins-maritime / gnss-ins-rail / gnss-ins-aviation | tests/gnss_ins_packs.rs (кожен пакет: об'єднання краще за вільний INS під час відключення для обох датчиків; залізниця: тісне 5,3 м проти слабкого 12,9 м для навігаційного класу та 15,6 м проти 18,8 м для тактичного під час відключення, доступність 0,97 проти 0,95; таблицю тісного зв'язування перевірено); tests/gnss_ins_legacy_trajectory_pin.rs (слабко зв'язаний типовий варіант побітово ідентичний) | Внутрішнє: показники якості кожного пакета проти власної істини та порівняння слабкого/тісного зв'язування на ідентичних вхідних даних. MODELLED; порівняння з NaveGo з аудиту не виконано | MODELLED |
| VM-583fb6a6 | Зв'язаний фільтр псевдодальностей PNT зі станом зміщення та 3D-розширенням у пакеті злиття | Один зведений фільтр Калмана за положенням, швидкістю, фазою та частотою годинника, що отримує псевдодальності, які зв'язують положення і годинник (оновлення у формі Джозефа з перехресною коваріацією); варіант 1-DOF, доповнений станом сталого зміщення акселерометра, який пакет злиття запускає за [coupled]; та 3D-версія з 8 станами з рядками лінії візування | fusion::coupled (CoupledPntFilter, CoupledPntBiasFilter, CoupledPnt3d), fusion (run_coupled_suite), hybrid (CoupledCfg) | tests/fusion_coupled_filters.rs (3D-фільтр за 60 зернами: середнє NEES другої половини 8,12 для 8 станів, сума χ² останньої епохи всередині смуги 95 %; виправлення годинника на 0,1 нс зменшує 3D-сигму позиції з 5,58 м до 3,07 м; фільтр зміщення за 60 зернами: сума χ²(5) у смузі, зміщення в межах 3 сигм у 59 із 60; fusion-pnt-coupled із зміщеними акселерометрами: p95 позиції 18,7 м / 90,0 м і цілісність 1,00 / 0,97 у зв'язаному варіанті проти 430 м / 4060 м і 0,006 / 0,000 у роз'єднаному); fusion::coupled::tests; tests/fusion_coupled_pack.rs (fusion і hybrid без [coupled] побітово ідентичні) | Внутрішня узгодженість: істину змодельовано за власними моделями фільтрів (χ² NEES за зернами Монте-Карло, роз'єднаний пакет на ідентичних датчиках). MODELLED | MODELLED |
| VM-2b31e9b2 | Слабко зв'язаний EKF GNSS/INS з важелем на наборі даних KF-GINS | 15-станний EKF у просторі помилок із замкненим контуром, що керується приростами IMU, із положеннями антени GNSS, злитими через модель важеля H = [I 0 −[(C_b^n l_b)×] 0 0], налаштований із файла YAML KF-GINS (початковий стан і сигми, ARW/VRW, зміщення Гаусса–Маркова) | fusion::kfgins (run, loaders, score), fusion::closed_loop (propagate_increments, fuse_position_lever_arm), fusion::gnss_ins_ekf (update_position_lever_arm) | tests/fusion_kfgins_dataset_oracle.rs (синтетичні завантажувачі та тести важеля на обертовій платформі завжди; залежить від наявності даних у KSHANA_KFGINS_DIR, прогін 2026-10-13 на демонстраційному наборі даних KF-GINS: горизонтальна / вертикальна RMS 0,0109 / 0,0090 м проти еталонної траєкторії порівняно з KF-GINS C++ 0,0111 / 0,0083 м, усі шість попередньо зареєстрованих порогів дотримано; важіль вимкнено 0,329 м) | Опублікована еталонна траєкторія набору даних і програма 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) | VALIDATED |
| VM-98bed4a0 | Експорт тестового стенда, прочитаний зчитувачами файлів руху симулятора (gps-sdr-sim) | Файли руху з експорту bench, подані власним зчитувачам відкритого симулятора ГНСС, повертаються як експортована траєкторія: файл NMEA GGA (-g), зріз «час/широта/довгота/висота» CSV руху (-x) і його зріз «час/x/y/z» (-u), на 6 сценаріях gnss-ins (включно з морським, залізничним і авіаційним пакетами, прочитаними до межі симулятора в 3000 відліків) і 2 нерухомих. Лише рух; жодного сигналу не записується й не генерується. | interop::testbench (write_motion_csv, write_nmea, export) | tests/testbench_gpssdrsim_oracle.rs (6 тестів: оракул і сценарії, байти експорту зафіксовано, зчитувачі NMEA та LLH, чотириколонковий зріз ECEF, висновок FINDING прогону 1 щодо CSV повної ширини, сітка рядків 10 Hz) | ЩО ПЕРЕВІРЕНО ЗОВНІ, сказано вузько: 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; зчитувача будь-якого іншого симулятора; будь-якого приймача. | VALIDATED |
| VM-a606add5 | Бібліотека траєкторій GNSS/INS та імпорт істини з CSV | Профілі руху на вибір для пакета gnss-ins (пряма, фігура-8, міський рух зі зупинками, набір висоти літаком і координований віраж, знімальний дрон), задані командами швидкостей Ейлера та прискорення вздовж треку, замкненими на істинному стані за допомогою кінематичного IMU (доцентровий, гравітаційний і коріолісів складники), і імпортована істина з CSV, перетворена на IMU, що її відтворює; історичний рух не змінюється, якщо профіль не задано | fusion::trajectory (TrajectoryCfg, Trajectory, kinematic_imu, parse_truth_csv), fusion::pack ([trajectory]) | fusion::trajectory::tests (узгоджений поворот не має бічної сили, а коефіцієнт навантаження дорівнює 1/cos φ; імпорт CSV відтворює пролетений профіль з точністю 1e-3 м/с і 1 м); tests/gnss_ins_trajectory_library.rs (кожен профіль виконується, а об'єднання краще за вільний INS під час відключення; кожен виконує свій названий рух; спостережуваність курсу: сигма рисканя після 240 с 1,27 град при прямолінійному крейсерському русі проти 0,039 град при figure-8 та 0,062 град при русі зі зупинками); tests/gnss_ins_legacy_trajectory_pin.rs (застарілий результат і хеші істини побітово ідентичні) | Внутрішнє: тотожності кінематики твердого тіла, круговорот CSV і власна коваріація фільтра. MODELLED (з реальним журналом руху не порівнювали) | MODELLED |
| VM-b2b424ef | Механізація безплатформної INS | Безплатформна інерційна механізація WGS-84 NED з кватерніонною орієнтацією (з компенсацією конінгу/скалінгу), що поширює навігаційний стан за приростами (Δθ, Δv) | inertial::mechanization, inertial::attitude, inertial::imu_errors | tests/classical_strapdown_ins_reference.rs (статичний профіль/розворот/конічний рух, по 30 епох, проти NaveGo: орієнтація бітово ідентична 0 рад; швидкість/положення в межах названих аналітичних меж) | NaveGo v1.4 (R. Gonzalez et al., LGPL-3), запущений під Octave — незалежний опублікований інструментарій INS, що керується тим самим потоком приростів (Δθ,Δv). Орієнтація збігається побітово (ті самі умовності NED / кватерніон зі скаляром першим / кутова швидкість Землі / транспортна швидкість); швидкість/положення збігаються з двома задокументованими відмінностями — членом північної гравітації від відхилення прямовисної лінії, який NaveGo включає, а kshana за задумом пропускає (гравітація прямовисної лінії; збігається із замкненою формулою Грувса до кожної цифри, із застереженням-перевіркою розумного порогу), та відмінностями інтегратора порядку O(dt²) — а не помилками механізації | VALIDATED |
| VM-52d2b490 | Синтез функціоналів гравітаційного поля (карта навігації з гравітаційною допомогою / без ГНСС) | Модуль сферично-гармонічної гравітації + збурення (мГал) за будь-якою моделлю ICGEM .gfc; нормальна гравітація GRS80 | gravity_sh | tests/icgem_gravity_reference.rs (синтез GRS80 відтворює Соміліану з точністю 3.5e-12; реальна карта збурень ICGEM EGM2008 фізично правдоподібна) | Нормальна гравітація Сом'ільяни за GRS80 (Moritz 1980, IAG) + опубліковані γ_e/γ_p; реальне поле ICGEM EGM2008 | VALIDATED |
| VM-cbbbaf73 | NRHO Земля–Місяць CR3BP 9:2 проти орбіти, якою літав CAPSTONE | Обмежена кругова південна майже прямолінійна гало-орбіта L2 9:2, яку коригує cr3bp::differential_correct_halo (родина орбіт Gateway і CAPSTONE), порівняна за середньою геометрією (період, радіус периселенія, радіус апоселенія) з орбітою, якою CAPSTONE фактично літав. Вимірювання того, наскільки добре член CR3BP описує реальну орбіту; орбіта CR3BP не є орбітою за моделлю ефемерид і не порівнюється епоха за епохою | cr3bp (differential_correct_halo, PeriodicOrbit) | tests/capstone_nrho_horizons.rs::cr3bp_nrho_matches_capstone_mean_geometry (CAPSTONE, березень 2023, 4 перилуни та 5 аполунів: період 6,5004 доби проти 6,5699 доби (1,07 %, поріг 3 %), аполуній 71 182 проти 71 215 км (0,05 %, поріг 5 %), перилуній 3 385 проти 3 245 км (4,1 %, поріг 20 %)); cr3bp::tests::reproduces_l2_southern_nrho_92_regime | Виміряно проти реконструйованих ефемерид CAPSTONE з JPL Horizons (NAIF -1176, CAPSTONE_merged, ICRF з центром у Місяці, 2023-03-01..31 з кроком 10 хв), закомічено байт у байт (tests/fixtures/capstone_horizons/, NOTICE.md), попередньо зареєстровано 4e868170 до завантаження, як вимірювання з порогами за середньою геометрією. Це не перевірка (not a validation): CR3BP не враховує Сонце, ексцентриситет Місяця та утримання на орбіті, яке виконував CAPSTONE, тож пороги описують, наскільки репрезентативна модельна орбіта, а не точність. Результати: docs/design/evidence/cap29d-capstone-nrho/RESULTS.md | MODELLED |
| VM-7a53988a | Обертові стани CR3BP, відображені в ICRF з центром у Місяці на лінії Земля–Місяць за DE440 | cr3bp::to_moon_centred_icrf відображає безрозмірний обертовий стан CR3BP Земля–Місяць у положення та швидкість в ICRF з центром у Місяці на миттєвій лінії Земля–Місяць (одиниця довжини — відстань Земля–Місяць, одиниця часу — обернена орбітальна швидкість, повна кутова швидкість системи, включно з позаплощинною складовою від прискорення Місяця), із оберненою from_moon_centred_icrf, а cr3bp::to_moon_centred_icrf_de440 читає геоцентричний стан Місяця з DE440 SPK. Воно відображає стани; воно не робить орбіту CR3BP орбітою за моделлю ефемерид | cr3bp (to_moon_centred_icrf, from_moon_centred_icrf, to_moon_centred_icrf_de440) | tests/cr3bp_to_mci_spice_oracle.rs::cr3bp_to_mci_matches_a_spice_two_vector_frame (72 випадки: 12 епох у січні 2025 × точки L1 і L2, два південні гало-стани L2 та один початковий стан DRO з JPL Three-Body Periodic Orbits API і загальний стан; найгірше положення 1.8e-7 м проти 1 мм, швидкість 1.2e-9 м/с проти 1e-6 м/с; обернене 2.7e-15); cr3bp::tests::moon_centred_map_round_trips_and_sends_the_moon_to_the_origin | 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 check). Результати: docs/design/evidence/rm34-cr3bp-to-mci/RESULTS.md | VALIDATED |
| VM-cadb7067 | Тип «Сонячна система» на ядрі JPL (planetary_kernel_path) | Тип solar-system з planetary_kernel_path: кожне вказане тіло, власний код NAIF якого міститься в SPK, бере геліоцентричні положення та швидкість у J2000 із ядра через власний зчитувач рушія (мітка KERNEL), ланка, обидва кінці якої є в ядрі, обчислюється на ньому, барицентри ніколи не підставляються замість планети, а кожне інше тіло лишається аналітичним зі своєю міткою; звіт отримує блок ядра (шлях, SHA-256, тіла й ланки, взяті з нього) лише коли параметр задано. З de440s.bsp це Меркурій, Венера, Земля та Місяць |
solar_system (SolarSystemScenario::planetary_kernel_path, KernelOut); ephem_provider (KernelEphemeris) | tests/solar_system_kernel_oracle.rs::kernel_backed_solar_system_matches_spice (Меркурій, Венера, Земля та Місяць на 2026-01-01, 2030-06-15 і 2040-12-31: найгірше 3.3e-5 м і 1.0e-11 м/с проти 1 мм і 1e-6 м/с; блок ядра та мітки точно); tests/solar_system_kernel_oracle.rs::without_a_kernel_the_report_has_no_kernel_block | NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.3.0) spkezr, геліоцентричні стани на повному de440s.bsp, окрема програма, що не викликає жодного коду Kshana (tests/fixtures/solar_system_kernel/, NOTICE.md); рушій читає побітово точні зрізи de440s. Попередньо зареєстровано f8e946ea. Лише перевірка підключення бібліотекою (Library check): сам DE440 і аналітичні тіла тут не перевіряються. Результати: docs/design/evidence/cap31-solar-system-kernel/RESULTS.md | VALIDATED |
| VM-c8b4f777 | Porkchop на ефемеридах DE440 | maneuver::porkchop_kernel: перебір «дата запуску × дата прибуття» для C3 відльоту (км²/с²) та V-нескінченності прибуття (км/с) з однообертовим прямим розв'язувачем Ламберта та захистом колінеарності 0,5 град на геліоцентричних станах у J2000 будь-яких двох тіл NAIF, прочитаних із SPK JPL DE440 власним зчитувачем крейта. Один оберт, прямий напрямок, без обмежень ракети-носія чи прибуття: це перебір, а не проєкт місії | maneuver (porkchop_kernel, PorkchopGrid); ephem_provider (KernelEphemeris) | tests/porkchop_de440_oracle.rs::de440_porkchop_matches_spice_and_pykep (від Землі до барицентра Марса, 16 відправлень 2026-09-01..2027-01-29 × 19 прибуттів 2027-06-01..2028-02-26: 304 клітинок скінченні з обох боків, найгірші C3 2.5e-14 і V-нескінченність 2.6e-14 відносно проти 1e-8, та сама клітинка з мінімальним C3, 9,1997 км²/с²) | NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.3.0) геліоцентричні стани на de440s.bsp і pykep 3.0.1 lambert_problem (ESA, ядро C++ kep3, MPL-2.0), незалежний розв'язувач Ламберта, запущений як окрема програма, що не викликає жодного коду Kshana (tests/fixtures/porkchop_de440/, NOTICE.md); рушій читає побітово точний зріз de440s. Попередньо зареєстровано 2d857fb1. Лише перевірка перебору бібліотекою (Library check). Результати: docs/design/evidence/cap20b-porkchop-de440/RESULTS.md | VALIDATED |
| VM-c80a768c | Оптимізатор імпульсної траєкторії переходу на ефемеридах DE440 | maneuver::optimise_transfer_kernel: дати відльоту й прибуття однооборотного балістичного двоімпульсного переходу, що мінімізують C3 відльоту або V-нескінченність прибуття в межах типу I або типу II, як неперервний оптимум (2-добова сітка за обома вікнами, потім 2D Нелдер–Мід), на геліоцентричних станах із SPK DE440. Оптимізатор дат для одного етапу, а не проєкт місії: без варіантів ракети-носія, орбіти очікування, маневрів у далекому космосі чи багатьох обертів | maneuver (optimise_transfer_kernel, TransferObjective, TransferType, TransferOptimum); ephem_provider (KernelEphemeris) | tests/transfer_optimiser_oracle.rs::transfer_optimiser_matches_spice_pykep_scipy (від Землі до барицентра Марса, відправлення 2026-09-15..2027-01-15 × прибуття 2027-05-01..2028-03-01, тип I/II × мінімальний C3 / мінімальна V-нескінченність: найгірша цільова функція 8.7e-13 відносно, дати в межах 1e-5 доби, інша величина в межах 2.5e-7 відносно, проти попередньо зареєстрованих порогів 1e-7, 0,01 доби та 1e-4; docs/design/evidence/cap20cd-transfer-optimiser/); tests/transfer_optimiser_oracle.rs::transfer_optimiser_against_the_published_2026_handbook (вторинний опублікований еталон NASA/TM-2010-216764, таблиця 2: тип II мінімальний C3 9,182 проти 9,144 і тип II мінімальна V-нескінченність 2,564 проти 2,565 MET; тип I мінімальний C3 10,535 проти 11,11, -5.18 %, NOT MET і стверджується як промах, бібліотечний оракул збігається з Kshana) | Незалежний оптимізатор: NAIF SPICE Toolkit (CSPICE N0067 через spiceypy 8.3.0), геліоцентричні стани на тому самому зрізі de440s, pykep 3.0.1 lambert_problem (ESA, MPL-2.0) і SciPy 1.18.1 Nelder-Mead, без виклику коду Kshana. Довідник NASA «Земля—Марс» (MIDAS, ефемериди не вказано, 2-добова сітка дат) є вторинним опублікованим еталоном і не визначає статусу | VALIDATED |
| VM-710b7e9b | Розв'язувач багатооборотного переходу Ламберта | Усі розв'язки задачі Ламберта з не більш ніж трьома повними обертами (maneuver::lambert_multirev: однооборотний розв'язок, потім ліва й права гілки для кожної кількості обертів, Izzo 2015), з граничними швидкостями v1 і v2, для прямих і зворотних переходів, у канонічних і геліоцентричних одиницях SI, включно з переходами в межах 1 % мінімального часу польоту для певної кількості обертів і геометріями поблизу 180 град. Лише двотільний розв'язувач (без збурень) | maneuver (lambert_multirev, LambertSolution, LambertBranch) | tests/lambert_multirev_oracle.rs::multirev_lambert_matches_pykep_on_the_preregistered_cases (382 випадки: 300 випадкових 3-D, 18 поблизу 180 град, 24 поблизу мінімального часу для M = 1..3, 40 геліоцентричних; 1058 розв'язків; кількості та порядок гілок рівні; швидкості в межах 1e-8 відносно, найгірше 1.6e-13; у межах 1 % від мінімального часу в межах 1e-6, найгірше 7.5e-15; внутрішня перевірка посадки Кеплера: кожен розв'язок потрапляє в межах 4.2e-12 від |r2|, крім однієї зафіксованої знахідки на дузі з e = 0,994, обмеження kepler_universal, а не розв'язувача) | pykep 3.0.1 lambert_problem (ESA, ядро C++ kep3, MPL-2.0), незалежна бібліотека, запущена як окрема програма скриптом scripts/gen_lambert_multirev_ref.py; закомічено лише її чисельний вихід. Попередньо зареєстровано a75de851 (набір випадків, пороги, правило результату) до будь-якого порівняння; еталон було згенеровано знову незалежно, і він побайтно ідентичний. Результати: docs/design/evidence/lambert-multirev/RESULTS.md | VALIDATED |
| VM-a5e13882 | Двотільний розв'язувач переходу Ламберта | Однооборотний розв'язувач Ламберта Izzo-2015 (r1, r2, час польоту → граничні швидкості) на переходах LEO→GEO→геліоцентричних, прямих і зворотних | maneuver (lambert) | tests/lambert_reference.rs (13 перельотів проти lamberthub izzo2015; найгірше |Δv| 7e-12 м/с) | lamberthub 1.0.0 izzo2015 (J. Martínez Garrido, MIT) — незалежний сторонній розв'язувач Ламберта. Однооборотна (M=0) задача Ламберта має єдиний розв'язок, тож збіг між бібліотеками є справжньою зовнішньою перевіркою; збіг у межах <1e-4 м/с (спостерігалося ~1e-11), той самий вид перевірки, що й для DOP проти gnss_lib_py | VALIDATED |
| VM-91baec5d | Системи відліку та шкали часу | Прецесія-нутація IAU 2006/2000A, CIO GCRS↔ITRS, шкали часу з високосними секундами | frames, precession, nutation, cio, timescales | tests/frame_reference_vectors.rs (наскрізно за Валладо; вектори SOFA/ERFA) | Еталонні вектори IAU SOFA / ERFA; Vallado AIAA 2006-6753 (0,1–4 мм) | VALIDATED |
| VM-ba0279e6 | Двочастинні юліанські дати та високосні секунди на шляху часу навколоземної орбіти | Календарна дата й час 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 із двочастинним кутом обертання Землі) | 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) | tests/jd2_sofa_time_oracle.rs (224 моментів UTC: по шість навколо кожної з 27 високосних секунд 1972-2016, два фіксованих, 60 із заданим зерном упродовж 1972-2026; dtf2d, utctai і taiutc кожне в межах 1e-6 с, найгірше 1.9e-11 с); jd2::tests (a_leap_second_day_is_86401_seconds_long_and_tai_steps_once; tai_to_utc_inverts_utc_to_tai_to_the_microsecond_across_a_leap_second; ut1_runs_through_tai_across_a_leap_second_day; the_two_part_earth_rotation_angle_matches_the_single_f64_one); sgp4::tests::propagate_at_measures_time_from_the_two_part_epoch | 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 зі змінною швидкістю не змодельовано | VALIDATED |
| VM-349495a3 | Двочастинні юліанські дати через обертання Землі на шляху орбіти | Обертання Землі за двочастинною юліанською датою 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 рад або набагато менше за похибку аналітичних ефемерид Сонця/Місяця | 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) | tests/jd2_earth_rotation_erfa_oracle.rs::two_part_earth_rotation_agrees_with_erfa (40 двочастинних дат UT1/TT 1980-2050, включно зі ступенями +1, +10, +50 мкс на двох датах: gmst82 у межах 1e-12 рад, найгірше 0; елементи GCRS→ITRS у межах 5e-12, найгірше 2.7e-14; обертання на +1/+10/+50 мкс у межах 1e-13 рад від ERFA, найгірше 1.1e-14 рад, тоді як шлях з одним f64 повністю пропускає ступені +1 і +10 мкс); ephemeris::tests::two_part_jd_agrees_with_the_default_and_resolves_microsecond_steps; frames::tests::the_two_part_teme_to_itrf_round_trips_and_resolves_a_microsecond; jd2::tests::gmst82_matches_the_single_f64_gstime_away_from_the_floor; jd2::tests::two_part_types_convert_without_moving_the_instant | pyerfa 2.0.1.5 (liberfa 2.0.1, BSD-3-Clause; алгоритми SOFA у випуску проєкту ERFA), незалежна бібліотека: gmst82 і c2t06a на закомічених двочастинних датах, полярний рух 0,1 і 0,3 кутових секунди. Попередньо зареєстровано b10475ee (дати, пороги) до написання функцій і до запуску оракула. Внутрішні тести (параметр сценарію, круговорот TEME/ITRF, перетворення типів) є допоміжною самоузгодженістю | VALIDATED |
| VM-a676a683 | Матриці систем координат проти векторів 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 cookbook; нове). Самі модельні вибори (нутація 2000B на шляху TEME, двочленний доповнювальний ряд) не перевіряються, лише їхня реалізація | precession (precession_matrix); nutation (teme_to_gcrs_matrix); cio (gcrs_to_cirs_matrix_with_offsets) | tests/frames_erfa_vector_oracle.rs::frame_matrices_agree_with_erfa_vectors (40 епох TT 1950-2100, dX і dY до 0,5 мкс дуги: елементи прецесії в межах 1e-13, найгірше 0; TEME→GCRS у межах 5e-10 рад, найгірше 1.10e-10 рад; CIO зі зсувами в межах 1e-13, найгірше 0; нульові зсуви бітово ідентичні cio::gcrs_to_cirs_matrix) | 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 мм на орбіті ГНСС) | VALIDATED |
| VM-604f1e8f | 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 до секунд SI (jd2::utc_to_tai), і TAI назад в UTC (jd2::tai_to_utc), за SOFA dtf2d, utctai і taiutc. До 1960 року TAI - UTC береться як 0 (значення SOFA; UTC не визначений) і лежить поза межами твердження. Одинарний f64 timescales::tai_minus_utc досі обмежує до 10 с до 1972 року й не охоплений | timescales (tai_minus_utc_on_date); jd2 (Jd2::from_utc_calendar, utc_to_tai, tai_to_utc) | tests/jd2_pre1972_sofa_oracle.rs::pre_1972_utc_conversions_agree_with_erfa (117 моментів UTC: по чотири навколо кожного з 15 початків виразу TAI-UTC 1960-1972 і 60 із заданим зерном упродовж 1960-1971; dtf2d, utctai і taiutc кожне в межах 1e-6 с, найгірше 2.9e-11 с); tests/jd2_pre1972_sofa_oracle.rs::post_1972_results_are_bit_identical (224 моментів рядка 1972+ не змінилися біт у біт) | 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 у SI, ітерацію), а не саму історичну таблицю | VALIDATED |
| VM-3123f2d9 | Бортовий годинник супутника ГЛОНАСС і поширення бортової орбіти | Зміщення бортового годинника супутника ГЛОНАСС -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 також його не застосовує). Не підключено до виходу сценарію: бібліотечна функція | glonass (GlonassEphemeris::sv_clock_bias_s, position_ecef, parse_glonass_nav) | tests/glonass_broadcast_rtklib_oracle.rs::glonass_broadcast_clock_and_orbit_match_rtklib (292 випадки: 4 записи GLONASS із реального широкомовного файла IGS MGEX за 2013-01-01 × 73 зсувів у межах +/-900 с; годинник у межах 1e-14 с, найгірше 0 с; положення в межах 0,01 м, найгірше 1.12e-3 м) | 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 — PZ-90.11 3.986004418e14); найгірший випадок у 1,1 мм є саме цією різницею, як і передбачалося до прогону. Межі: бортові ефемериди в межах їхнього інтервалу чинності, а не справжня орбіта чи годинник (порівняння з прецизійними продуктами немає) | VALIDATED |
| VM-b4e008a0 | Єдиний шлях навколоземної орбіти: набори елементів 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 і рівняння рівнодення | 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) | tests/earth_orbit_path_sgp4_erfa_oracle.rs (етап 1: 4432 положень TEME із 232 закомічених наборів елементів проти python-sgp4 2,24, найгірше 6.1e-8 м, поріг 1 см; етап 2: 108 моментів, з яких 23 з параметрами орієнтації Землі та один в останню секунду доби з високосною секундою, проти ERFA: GCRS → ITRS найгірше 2.9e-6 мкс дуги, поріг 0,1 мкс дуги; TEME → ITRS найгірше 0,41 мкс дуги, поріг 2 мкс дуги); sgp4::tests (the_itrs_path_matches_the_orbit_module_iau_chain; an_earth_fixed_node_stays_at_its_longitude_at_the_epoch); tests/no_private_models.rs | Ланка 1: python-sgp4 2,24 (ліцензія MIT; еталонний C++ SGP4 за 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) | VALIDATED |
| VM-faf6c34f | Компроміс при проєктуванні дальнометричних кодів | Межі бічних пелюсток і взаємної кореляції m-послідовностей/кодів Голда, довжина↔неоднозначність | navsignal (CodeFamily) | navsignal::code_tests (GPS C/A Gold ≈ −23,9 dB; φ(1023)/10 = 60) | Опублікована взаємна кореляція Голда для GPS C/A (−23,9 дБ); межа Голда 1967 | VALIDATED |
| VM-bb79da35 | Геометрія ГНСС / геометричний чинник DOP (погіршення точності) | GDOP/PDOP/HDOP/VDOP/TDOP з геометрії ліній візування за Q=(HᵀH)⁻¹ з локальним розділенням ENU | orbit (dop) | tests/dop_reference.rs (8 геометрій, від добре обумовлених → до майже виродженої) | gnss_lib_py 1.0.4 (Stanford NAV Lab) DOP — незалежна бібліотека, збіг до 1e-6 відносно | VALIDATED |
| VM-a0ea0d9f | Похибка положення з геометрії: похибка RMS = sigma_UERE x DOP для розв'язку найменших квадратів рушія | dop_error_mc::run_geometry і check: Монте-Карло із зерном (N = 20 000 епох на геометрію, sigma = 1,5 м, зерно ChaCha8 36 + i) власного ітераційного розв'язку найменших квадратів рушія (pvt::solve_spp, одиничні ваги, розв'язок від істинного положення) на 8 геометріях з tests/fixtures/dop/dop_reference.csv, що порівнює дисперсії похибок на схід, північ, угору та годинника, RMS H/V/P, кореляцію схід–північ, середні похибки та частку всередині 95 % горизонтального еліпса з sigma^2 Q, де Q — фактор коваріації ядра orbit::dop (orbit::dop_cofactor, та сама арифметика) для тієї самої геометрії | dop_error_mc (run_geometry, check, TOLERANCES); dop_error_ci (run, GEOMETRIES); pvt (solve_spp); orbit (dop, dop_cofactor) | tests/uere_dop_monte_carlo.rs (position_error_is_sigma_times_dop_on_the_gnss_lib_py_geometries: усі 104 перевірки проходять з першого прогону після попередньої реєстрації e50c88d2, найгірша дисперсія 3,2 %, RMS 1,6 %, кореляція 0,012, середнє 2,2 стандартної похибки, частка еліпса 0,0039; negative_control_a_doubled_pdop_fails_every_geometry; negative_control_elevation_dependent_errors_fail_the_low_elevation_geometries: обидва контролі не проходять, як і потрібно; position_error_is_sigma_times_dop_on_masked_skies: дві геометрії маскованої лінії горизонту з нотатки про проєктування, небо 10sat-mixed під пресетами міської вулиці (4 супутники, PDOP 16,6) і контейнерного терміналу (9 супутників, PDOP 2,5), усі 26 перевірок проходять з першого прогону після попередньої реєстрації 03999c11, tests/fixtures/dop/PREREGISTRATION-MASKED.md); tests/position_error_dop_ci.rs (перша окрема перевірка на чотирьох вручну вибраних небесах (відкрите, скупчене, каньйон, півнеба; сигма 1 м, зерно 0x0D0B5EED) з довірчими інтервалами хі-квадрат на 1e-6 загалом за 20 перевірок: відношення від 0,987 до 1,009, власні PDOP/GDOP розв'язувача дорівнюють ядровим з точністю 2.5e-12, і негативні контролі для похибки DOP 10 % та похибок 1/sin(висота); виконано до попередньої реєстрації, тож про це повідомлено, але це не попередня реєстрація); dop_error_mc::tests; dop_error_ci::tests | Внутрішня узгодженість із замкненим виразом: за лінійною гауссовою моделлю коваріація найменших квадратів дорівнює sigma^2 (H^T H)^-1 (Kaplan і Hegarty (ред.), Understanding GPS: Principles and Applications, 2-ге вид., Artech House, 2006, розд. 7). Метод і допуски з нотатки про проєктування геометрії 0,36, розділ 5,2, зафіксовано в коміті попередньої реєстрації до першого прогону: кожна дисперсія в межах 5 % (5 стандартних похибок вибіркової дисперсії за N = 20 000), кожен RMS у межах 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 (рядок «Геометрія ГНСС / геометричний чинник DOP»); цей рядок додає крок від цих факторів до метрів через розв'язувач рушія і не позичає статусу того рядка. ЧОМУ MODELLED: жодного зовнішнього набору даних не залучено; збіг показує, що оцінювач і шум відтворюють sigma x DOP за підручниковою моделлю, а не що похибка будь-якого приймача дорівнює UERE x DOP, а sigma_UERE є вхідним параметром | MODELLED |
| VM-f7f6e62d | Класифікація довіри з урахуванням геометрії: геометрія супутників поруч з оцінкою довіри до приймача та клас для кожного зниження | 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 відрізняється від виведеного HDOP більше ніж на max(1,0, 25 %) від заявленого неба, — до inconsistency | receiver_trust (geometry: GeometryTracker, geometry_ratio, sky_ratio, geometry_points, GeometryLabel; score: DeductionClass, score_with; monitors; live); telemetry (sample, prometheus, syslog, otlp) | tests/natural_degradation_trust.rs (a_stated_skyline_reads_the_fjord_as_geometry: на синтетичному проході фіордом зі scenarios/training/fjord-natural-degradation.toml ті самі 624 епохи знижуються з указаним [skyline] і без нього; з ним sky-blocked повідомляється в 680 епохах (0 без нього: резервний варіант за азимутальною прогалиною нічого не бачить у двосторонньому фіорді), open_fraction становить 0,758, а епохи класу середовища зменшуються з 78 до 33, решта - це втрати супутників, які вказана лінія горизонту залишає на відкритому місці; поза подією лінія горизонту не змінює жодної оцінки); receiver_trust::geometry::tests (відношення, виведені вручну на порогах, межі порогів, наростання та обмеження, нижня межа, межі міток, перевизначення [geometry], DOP на перевіреному ядрі, утримувані та прострочені небеса, невідоме не вгадується, втрата сигналу, допуск поганої геометрії, сторожові значення відсутності розв'язку); tests/geometry_trust.rs (справедливе маскове небо позначене та не оцінене, погане маскове небо, втрата низької висоти, падіння потужності, підроблений HDOP, повна втрата сигналу, відведення під час поганої геометрії, невідома геометрія, перевизначення сеансу, схема live); tests/geometry_trust_no_change.rs (обидва приклади сеансів побайтово ідентичні 0.35.0 після видалення доданих ключів); tests/geometry_corpus_identity.rs (кожен закомічений корпус NMEA судна, також як GPS-лише відкрите небо, і сценарії навчання екіпажу: побайтово ідентичні 0.35.0, окрім поганих епох, які відрізняються лише відніманням за геометрію) | Внутрішня узгодженість: класифікацію перевіряють за правилами, які вона заявляє, і за вручну виведеними відношеннями на синтетичних правках закоміченого демонстраційного журналу, а закріплення «без змін» утримують виходи 0.35.0: жодна оцінка не змінюється, якщо геометрія не погана; мітка завжди повідомляється. ЧОМУ MODELLED: пороги вибрано, а не підігнано (походження в geometry_model кожного прогону; показники IEC 61108-1 і GPS SPS, як цитовано, слід звірити з текстом стандартів), і немає зовнішнього розміченого набору даних про природне погіршення геометрії проти атак, за яким можна було б перевірити класифікацію. Виведений DOP повторно використовує ядро orbit::dop, VALIDATED за gnss_lib_py, статусу якого цей рядок не позичає. Клас geometry є твердженням про небо, а не висновком, що атаки не було | MODELLED |
| VM-b59d517d | Широкомовна модель іоносфери (Klobuchar, IS-GPS-200) | Похила іоносферна групова затримка L1 для одночастотного приймача за Klobuchar із восьми широкомовних коефіцієнтів α/β | gnss_sim (klobuchar_delay_m) | tests/klobuchar_reference.rs (10 випадків за висотою/азимутом/місцевим часом, два набори коефіцієнтів) | RTKLIB ionmodel (tomojitakasu/RTKLIB, src/rtkcmn.c) — незалежна еталонна реалізація, скомпільована з вихідного коду; збіг до < 1e-4 м | VALIDATED |
| VM-1e6c81a8 | Статистичне ядро цілісності RAIM/ARAIM (закони χ² / нецентрального χ² / нормальний) | Розподільне ядро, на якому тримається кожен рівень захисту: поріг виявлення збою знімка χ²₁₋ₚfₐ(dof), нецентральність пропущеного виявлення pbias=√λ і множники розділення розв'язків K_fa/K_md/K_V | raim (chi2_cdf, chi2_quantile, noncentral_chi2_cdf, normal_cdf, normal_quantile, pbias) | tests/raim_reference.rs (171 випадок: CDF/квантиль χ², CDF/квантиль нормального розподілу, CDF нецентрального χ², pbias у діапазонах P_fa/P_md/надлишковості) | 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) | VALIDATED |
| VM-b9fd9dfe | Рівень захисту SBAS (HPL/VPL за DO-229E зваженими найменшими квадратами) | Рівні захисту за зваженими найменшими квадратами DO-229E, додаток J: D=(GᵀWG)⁻¹ з кута місця/азимута кожного супутника та бюджету похибки, велика піввісь горизонтального еліпса похибки та вертикальна σ, масштабовані за опублікованими K-факторами | sbas (sbas_protection_level) | tests/sbas_reference.rs (6 реальних епох EGNOS: HPL зіставлено безпосередньо, вертикальний d_U перевірено без K-коефіцієнта) | Форк 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 проти точного Φ⁻¹(1−5e-8)=5,3267 у Kshana (~0,06 %), тож вертикаль перевіряється як d_U без K-фактора | VALIDATED |
| VM-216727c9 | Метрики оцінювання ML-детекторів (ROC/AUC/confusion/Pfa-Pmd) | AUC (Манн–Вітні, зв'язки ½), матриця помилок на порозі, P_d/P_md/P_fa/precision/accuracy/F1 | impairment_eval (auc, confusion_at, roc_curve) | tests/eval_metrics_reference.rs (5 наборів даних, 24 порогів; точні підрахунки + <1e-9) | scikit-learn 1.9.0 (Pedregosa et al., JMLR 2011) — незалежна бібліотека, точний збіг | VALIDATED |
| VM-24e0303a | Оцінювання виявлення аномалій на реальній телеметрії космічного апарата | ROC AUC + бутстреп-CI розділення реальних розмічених аномалій; прозорий детектор (відтворює мітки) | impairment_eval, eval_stats | tests/opssat_ad_reference.rs (реальні дані ESA OPS-SAT, AUC відтворює scikit-learn з точністю 1e-9); tests/ai_ml_rf_impairment_detection_evaluation_reference.rs (122 випадків на реальному тестовому розбитті OPSSAT-AD: повна матриця помилок у робочій точці + Pd/Pfa/precision/F1 проти scikit-learn, цілочисельно точно) | scikit-learn roc_auc_score на тестовому розбитті OPSSAT-AD (Ruszczak et al. 2025, CC BY 4,0) — реальна телеметрія OPS-SAT | VALIDATED |
| VM-4fd47e51 | Чисельні ядра квантового компромісу (NNLS / смуги χ² / Q за ван Лоаном) | Підгонка NNLS за виміряною ADEV, смуги узгодженості χ² NEES/NIS і коваріація дискретного шуму процесу годинника за ван Лоаном (проліт holdover) — обчислювальний хребет рушія компромісів | quantum_trade (qparams_from_adev_curve), detection (chi2_inv_cdf), clock_state (ClockState3) | tests/scipy_reference.rs (NNLS; χ² при робочих dof ≥ 48; Q за ван Лоаном) | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm; NNLS+Q точно, χ² <5e-4 за робочих ступенів свободи. Лише ядра — показники продуктивності пристроїв лишаються Modelled (наступний рядок) | VALIDATED |
| VM-611e3164 | Геомагнітне еталонне поле (синтез IGRF-14) | Сферично-гармонічний синтез головного поля IGRF-14 — компоненти X/Y/Z/F, схилення й нахил — що живить шар альтернативного PNT за магнітними аномаліями | igrf, igrf_data | tests/alternative_complementary_pnt_reference.rs (2520 глобальних точок × висот проти ppigrf на епоху 2025,0; найгірше |ΔXYZF| 3.9e-4 нТл, |ΔD| 2.8e-6°, |ΔI| 3.6e-7°) | ppigrf 2.1.0 (K. M. Laundal, MIT) — еталонна реалізація IGRF на чистому Python від IAGA-VMOD, що постачається з офіційними коефіцієнтами IGRF14.shc (IAGA, 14-те покоління, Zenodo 10.5281/zenodo.14012302); незалежна стороння кодова база, що обчислює однозначно визначене поле IGRF-14, збіг на глобальній сітці | VALIDATED |
| VM-b4802fbd | Статистики виявлення — гауссова AUC і мінімальний виявний збій | Аналітична бінормальна ROC AUC = Φ(μ/(σ√2)) і мінімальний виявний збій σ·(Φ⁻¹(1−P_fa)+Φ⁻¹(P_d)), що лежать в основі квантових детекторів збоїв і аномалій | quantum_faults, eval_stats, detection | tests/quantum_faults_reference.rs (109 випадків проти scipy 1,17 norm.cdf/ppf + scikit-learn roc_auc_score; найгірше |Δ| AUC 6.9e-8, мінімальна виявна несправність 1.3e-8, емпірична AUC 1.1e-16) | scipy 1,17 (Cephes ndtr/ndtri) + scikit-learn roc_auc_score (Pedregosa et al., JMLR 2011), обидві BSD-3-Clause — незалежні бібліотеки, що обчислюють ті самі однозначно визначені величини гауссового хвоста / AUC, збіг до рівня похибки erf за A&S (~7e-8). Квантова перевага над класичним підходом, побудована зверху, лишається MODELLED | VALIDATED |
| VM-9219a1de | Ядро рангових статистик (Кендалл-τ / Діріхле / перцентиль) | Ядра рангової кореляції та перевибірки під дослідженням нестабільності рішень щодо стійкості: τ-b Кендалла, середнє Діріхле, змагальне ранжування та перцентильні довірчі інтервали | resilience::stats | tests/resilience_score_decision_instability_reference.rs (124 випадки проти scipy 1,18 / numpy 2,4: 61 τ-b Кендалла з точністю 2e-16, ранжування точно, середнє Діріхле + процентильний ДІ з точністю 1e-12) | scipy 1,18 (stats.kendalltau variant='b', rankdata) + numpy.percentile (BSD-3-Clause) — незалежні реалізації (τ за сортуванням злиттям) однозначно визначених рангових статистик, збіг до 1e-12. Дослідження нестабільності рішень, побудоване на цих ядрах, лишається MODELLED | VALIDATED |
| VM-00275839 | Ядро виведення пріоритетів MCDA (власний вектор AHP / коефіцієнт узгодженості) | Ваги пріоритетів за методом аналізу ієрархій = нормований головний (Перрона) власний вектор оберненосиметричної матриці парних порівнянь за степеневим методом, з індексом узгодженості / коефіцієнтом узгодженості Сааті та порогом прийнятності CR<0,10 | mcda::ahp | tests/mcda_ahp_reference.rs (таблиця випадкового індексу Сааті 1980 n=1..10 ТОЧНО; вектор пріоритетів + λ_max + CR проти SciPy/LAPACK eig на узгодженій 3×3 та неузгоджених 3×3 / 4×4, збіг з точністю <1e-9) | Канонічна таблиця випадкового індексу Сааті (1980) (RI(5)=1,12) відтворена точно + SciPy/LAPACK scipy.linalg.eig (BSD-3-Clause) як незалежний розв'язувач власних значень, що обчислює той самий однозначно визначений власний вектор/значення Перрона, збіг до <1e-9. Шар рішень Парето / чутливості / MAUT, побудований на цьому ядрі, лишається MODELLED (агрегатори WSM/WPM/TOPSIS/VIKOR/PROMETHEE/ELECTRE окремо перевірено зовні — див. рядки нижче) | VALIDATED |
| VM-684c550a | Ядра зваженого агрегування MCDA (WSM / WPM) | Модель зваженої суми (адитивний агрегат із мін–макс-нормуванням + ранжування) і модель зваженого добутку (мультиплікативний агрегат із нормуванням за сумою, зворотним для витрат) — два оцінювачі агрегування цінності в компромісних дослідженнях | mcda::wsm, mcda::wpm | tests/mcda_wsm_reference.rs (оцінки WSM + ранжування) і tests/mcda_wpm_reference.rs (оцінки WPM + ранжування), кожен проти pymcdm з точністю <1e-9 на фіксованій матриці рішень 4×3 «вигода/витрати» | pymcdm (methods.WSM + normalizations.minmax_normalization; methods.WPM + normalizations.sum_normalization) — незалежна, широко вживана стороння бібліотека MCDA на Python, що обчислює ті самі однозначно визначені зважені агрегати; збіг до <1e-9. Відтворюється офлайн за допомогою tests/fixtures/mcda_wsm/ і tests/fixtures/mcda_wpm/. Сміття на вході — сміття на виході; шар чутливості/стійкості лишається MODELLED | VALIDATED |
| VM-cbf34b8e | Ранжування MCDA за відстанню до ідеалу (TOPSIS) | Technique for Order of Preference by Similarity to Ideal Solution — мін–макс-нормування, зважені позитивне/негативне ідеальні розв'язки, відносна близькість Cᵢ = d⁻/(d⁺+d⁻) та ранжування | mcda::topsis | tests/mcda_topsis_reference.rs (коефіцієнти близькості + ранжування проти pymcdm з точністю <1e-9 на фіксованій матриці 4×3 «вигода/витрати») | pymcdm methods.TOPSIS + normalizations.minmax_normalization — незалежна стороння бібліотека MCDA, що обчислює ті самі однозначно визначені коефіцієнти близькості; збіг до <1e-9. Відтворюється офлайн за допомогою tests/fixtures/mcda_topsis/generate_topsis_reference.py | VALIDATED |
| VM-8b3572d6 | Компромісне ранжування MCDA (VIKOR) | VlseKriterijumska Optimizacija — групова корисність Sᵢ, індивідуальне шкодування Rᵢ та компромісний індекс Qᵢ за ваги стратегії v=0,5, з ранжуванням «менше — краще» | mcda::vikor | tests/mcda_vikor_reference.rs (індекс Q + ранжування проти pymcdm з точністю <1e-9 на фіксованій матриці 4×3 «вигода/витрати») | pymcdm methods.VIKOR(v=0,5) — незалежна стороння бібліотека MCDA, що обчислює ту саму однозначно визначену агрегацію S/R/Q із нормуванням за діапазоном; збіг до <1e-9. Відтворюється офлайн через tests/fixtures/mcda_vikor/generate_vikor_reference.py | VALIDATED |
| VM-2fe3fe0b | Ранжування MCDA за чистим потоком переваги (PROMETHEE II) | Preference Ranking Organization METHod — парний індекс переваги із шістьма стандартними формами узагальненого критерію, додатними й від'ємними потоками переваги та повним ранжуванням за чистим потоком (звичайний критерій перевірено) | mcda::promethee | tests/mcda_promethee_reference.rs (чистий потік переваги + ранжування, звичайний критерій, проти pymcdm з точністю <1e-9 на фіксованій матриці 4×3 «вигода/витрати») | pymcdm methods.PROMETHEE_II('usual') — незалежна стороння бібліотека MCDA, що обчислює той самий однозначно визначений чистий потік переваги; збіг до <1e-9. Відтворюється офлайн через tests/fixtures/mcda_promethee/generate_promethee_reference.py. Форми переваги з порогами (q/p/σ) зводяться до тієї самої алгебри узагальненого критерію і залишаються перевіреними на властивості | VALIDATED |
| VM-ce013b59 | Ядро вибору за перевагою в MCDA (ELECTRE I) | ELimination Et Choix Traduisant la REalité — матриці узгодженості та неузгодженості, відношення домінування за узгодженістю й відсутністю вето та ядро вибору за перевагою (угода: усі критерії на користь, ваги нормовано за сумою, єдина глобальна шкала) | mcda::electre | tests/mcda_electre_reference.rs (матриці узгодженості, неузгодженості та домінування поелементно + ядро/домінована множина проти pyDecision з точністю <1e-9 на фіксованому наборі даних 4×3 лише з вигодами) | pyDecision algorithm.electre_i (Valdecy Pereira) — незалежна стороння бібліотека багатокритеріальних рішень, що обчислює ті самі однозначно визначені узгодженість, неузгодженість, домінування та ядро; збіг поелементно до <1e-9. Відтворюється офлайн через tests/fixtures/mcda_electre/generate_electre_reference.py. Вибір порогів ĉ/d̂ — вхідні дані аналітика (чутливість залишається MODELLED) | VALIDATED |
| VM-9adfd44f | Ядра агрегації MCDA (WASPAS / MOORA) | Weighted Aggregated Sum Product ASSessment (лінійно нормована опукла суміш λ·WSM+(1−λ)·WPM при λ=0,5) і система відношень MOORA (векторно нормована зважена сума переваг мінус зважена сума витрат) — стабілізована суміш значень і знакова оцінка за системою відношень | mcda::waspas, mcda::moora | tests/mcda_waspas_reference.rs (переваги WASPAS + ранжування) і tests/mcda_moora_reference.rs (оцінки MOORA + ранжування), кожен проти pymcdm з точністю <1e-9 на фіксованій матриці рішень 4×3 «вигода/витрати» | pymcdm (methods.WASPAS + normalizations.linear_normalization, l=0,5; методи MOORA, система відношень, векторне нормування) — незалежна, широко вживана сторонння бібліотека MCDA на Python, що обчислює ті самі однозначно визначені агрегати; збіг до <1e-9. Відтворюється офлайн через tests/fixtures/mcda_waspas/ і tests/fixtures/mcda_moora/. Сміття на вході дає сміття на виході; шар чутливості та робастності залишається MODELLED | VALIDATED |
| VM-c106eee9 | Пропорційне ранжування MCDA (COPRAS) | COmplex PRoportional ASsessment — нормована за сумою стовпця значущість переваг S⁺ плюс член зворотної значущості витрат, відносна значущість Q і ступінь корисності U = Q/max Q (найкраща альтернатива = 1) | mcda::copras | tests/mcda_copras_reference.rs (ступені корисності + ранжування проти pyDecision з точністю <1e-9 на фіксованій матриці 4×3 «вигода/витрати») | 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 | VALIDATED |
| VM-d952e366 | Затримка виявлення змін CUSUM і ARL | Найгірша затримка виявлення табличного детектора CUSUM (⌊h/(z−k)⌋+1) і середня довжина серії поза контролем; використовуються монітором рівня захисту синхронізації часу та монітором спуфінгу | tpl (Cusum), security | tests/timing_protection_level_under_spoofing_reference.rs (16 випадків детермінованої затримки ТОЧНО проти оракула першого проходження; 8 випадків ARL₁, Монте-Карло @60k випробувань проти наближення Зігмунда + опублікованих таблиць Монтгомері) | Опублікований ARL табличного CUSUM: наближення броунівського руху за Зігмундом (1985) (Hawkins & Olwell 1998, рівн. 3,7), перехресно прив'язане до таблиць ARL у Montgomery, Introduction to Statistical Quality Control (Wiley) для k=½, h∈{4 5}; детермінована затримка точно збігається з оракулом першого проходження. Складена межа TPL залишається MODELLED | VALIDATED |
| VM-3376197e | Дисперсія вибігу годинника та інверсія порога holdover | Зростання дисперсії фазової похибки на вибігу q_wf·t + q_rw·t³/3 + q_drift·t⁵/20 та її монотонна інверсія до порога holdover за похибкою часу | holdover (coast_phase_variance, holdover_seconds) | tests/gnss_denied_clock_holdover_reference.rs (27 випадків проти scipy 1,18: 12 дисперсій інерційного ходу проти linalg.expm Q₀₀ за ван Лоаном, найгірша відн. 1.1e-15; 7 інверсій holdover проти optimize.brentq, найгірша відн. 1.5e-16) | scipy 1,18 (BSD-3-Clause): linalg.expm обчислює дискретний шум процесу за Ван-Лоуном (1978) Q₀₀ = ∫₀ᵗ ΦQcΦᵀds через масштабування та піднесення до квадрата за Паде на розширеній матриці 6×6 — незалежний шлях, що ніколи не бачить поліноміальних коефіцієнтів kshana; плюс optimize.brentq, що інвертує ту саму монотонну криву, на відміну від бісекції kshana. Показники рівня червоного шуму для кожного класу (ClockClass) залишаються MODELLED | VALIDATED |
| VM-ea398366 | Ядро різноманітності за оберненим індексом Сімпсона | Ефективна архітектурна різноманітність = обернений індекс Сімпсона / число Гілла порядку 2, тобто 1/Σpᵢ², за якостями джерел у групах незалежності (складник різноманітності в оцінці стійкості) | resilience::diversity (effective_diversity) | tests/resilience_diversity_reference.rs (17 випадків: 14 проти scikit-bio inv_simpson + 3 закріплених нульових граничних; найгірше |Δ| 0,0) | scikit-bio 0.7.3 skbio.diversity.alpha.inv_simpson (McDonald et al., BSD-3-Clause) — незалежна стороння бібліотека, що обчислює однозначно визначений обернений індекс Сімпсона; відтворено побайтово. Побудована поверх нього система оцінювання DHS-RPCF (ваги та рівні) залишається MODELLED | VALIDATED |
| VM-73e30b65 | Азимутально залежна маска горизонту: видима множина, азимут і висота та 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 | skyline (Skyline::cut_deg, Skyline::visible); frames (look_angles, is_visible_skyline); orbit (UserPath, sky_view, cofactor_from_los); geometry (sky_geometry) | tests/skyline_orekit_oracle.rs (skyline_masks_agree_with_orekit_and_gnss_lib_py_as_pre_registered: 1173 кутів спостереження на шести майданчиках і чотирьох епохах, шість таблиць масок, 142 множин видимих супутників; найгірші |d el| 1.3e-13 град і |d az| 2.3e-13 град проти 1e-9, найгірше |d mask| 1.1e-12 град проти 1e-9, множини видимих ідентичні, жодної в смузі межі 1e-6 град, найгірший DOP 3.3e-13 відносно та кофактор 6.6e-13 від масштабу матриці проти 1e-9; попередньо зареєстровано e4b9d912); skyline::tests (table_interpolates_linearly_between_rows; table_wraps_through_north_without_a_seam); tests/skyline_scenarios.rs (every_wired_scenario_is_byte_identical_to_the_0_35_0_release) | Orekit 12,2 (Apache-2.0): TopocentricFrame на WGS-84 OneAxisEllipsoid для кутів огляду та ElevationMask для кожної таблиці, запуск через xval/orekit-skyline/OrekitSkyline.java на зафіксованих земно-фіксованих станах (розповсюдження не порівнюється), з gnss_lib_py 1.0.4 (метадані wheel: MIT) get_dop для DOP та матриці DOP ENU-та-годинник для множин, які Orekit визнає видимими. Попередньо зареєстровано (xval/orekit-skyline/PREREGISTRATION.md, коміт e4b9d912) до того, як будь-який із оракулів запустили на вхідних даних порівняння; лінійну інтерполяцію Orekit із замиканням заздалегідь підтверджено на синтетичному зонді. Обсяг: табличні маски, геодезичні кути огляду, видима множина під маскою, її DOP зі спільним годинником і кофактор. НЕ перевіряється тут: зведення каньйону, секторів і рельєфу та пресети (їхні таблиці з 360 точок подано як вхідні дані; рядки «Street-canyon, sector and terrain reductions to a table» і «Skyline presets»), стани годинників окремих систем і еліпс похибки (рядок «Horizontal error ellipse and per-system cofactor from the geometry covariance»), обертання GMST наземного пункту user_site в orbit/integrity і прив'язка кожного пропагатора до одного моменту (Orekit отримує земно-фіксовані стани), а також будь-які реальні перешкоди (лише пряма видимість) | VALIDATED |
| VM-9d83f008 | Зведення міського каньйону, секторів і рельєфу до таблиці | skyline: міський каньйон у замкненому вигляді (зріз atan((h - a) / d) при d = (w/2) / abs(sin(az - s)), відкриті кінці для скінченної довжини), секторі з різкими краями за годинниковою стрілкою із замиканням, а точки рельєфу зведено до таблиці зі спадом кривини d^2/(2 * 4/3 R); горизонт — це їхній поточковий максимум з будь-якою таблицею | skyline (Canyon::cut_deg, Sector::contains, TerrainPoint::elevation_deg, reduce_terrain, SkylineCfg::build) | skyline::tests (canyon_matches_hand_computed_wall_elevations; terrain_takes_the_curvature_drop; sectors_have_sharp_edges_and_wrap; a_preset_is_overridden_or_added_to_field_by_field; malformed_sections_are_refused) | Внутрішньо: замкнені форми перевірено за значеннями, обчисленими вручну (висоти верхів стін заданої вулиці, умова відкритого кінця, спад кривини заданої точки). Зовнішнього оракула немає: проєктна записка відносить ці зведення до MODELLED, а ElevationMask в Orekit приймає таблицю, тож порівняння в рядку «Azimuth-dependent skyline mask: visible set, azimuth and elevation, and DOP under the mask» сприймає їхні таблиці з 360 точок як вхідні дані і не перевіряє їх | MODELLED |
| VM-f409aed2 | Пресети горизонту (міська вулиця, підхід до гавані, фіорд, контейнерний термінал) | 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 град над двома вузькими секторами); перевизначаються поле за полем | skyline (PRESETS, preset, preset_list) | skyline::tests (presets_carry_the_note_dimensions_and_provenance) | Немає: вибрані й зазначені розміри, а не знімок будь-якої вулиці, порту, фіорду чи терміналу (співвідношення сторін вулиці лежить у діапазоні 0.5-2 за Oke (1988); фіорд має порядок західнонорвезьких фіордів; штабелі мають висоту контейнера high-cube за ISO 668). Тест перевіряє пресети за їхніми власними зазначеними розмірами; це перевірка переписування, яку правило валідації не враховує | MODELLED |
| VM-ea2e883b | Горизонтальний еліпс похибки та кофактор для кожної системи з коваріації геометрії | geometry::sky_geometry: кофактор ENU-та-годинник (H^T H)^-1 з одним годинником приймача, спільним або окремим для кожної системи (ядро orbit::cofactor_from_los), і горизонтальний еліпс похибки з його блока схід-північ (піввісі k sigma sqrt(lambda), k = sqrt(-2 ln(1 - p)), азимут великої осі від півночі) | geometry (sky_geometry, ellipse); orbit (cofactor_from_los) | tests/ellipse_numpy_oracle.rs (ellipse_and_cofactor_agree_with_numpy_as_pre_registered: 270 випадків, 142 закомічені множини видимих супутників із порівняння скайлайну за одного спільного годинника та за одного годинника на систему; найгірша вісь 5.1e-13 відносно та орієнтація 5.3e-12 град, жодної майже круглої, кофактор 1.0e-12 від масштабу матриці, проти 1e-9 і 1e-6 град; попередньо зареєстровано 0bbeeaee); geometry::tests (ellipse_of_an_analytic_two_by_two_case) | 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 — задані вхідні дані, а не виміряна точність чи межа цілісності | VALIDATED |
| VM-2d7d6035 | Функції геометрії неба: видимість, DOP, коваріація, еліпс похибки, хмара Монте-Карло | геометрія (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 похибок методу найменших квадратів із зерном (seed) за незалежних гауссових похибок дальності з їхньою емпіричною коваріацією, RMS і 95 % вмістом. Кофактор — це orbit::cofactor_from_los, єдине ядро за orbit::dop і orbit::dop_cov (dop — це зведення dop_cov): другої реалізації DOP немає |
geometry; orbit (cofactor_from_los, dop_cov, dop); surface (sky_geometry, sky_monte_carlo, skyline_presets, skyline_profile, skyplot_svg) | geometry::tests (ellipse_of_an_analytic_two_by_two_case; sky_geometry_equals_orbit_dop_on_the_same_visible_set; ecef_input_matches_azimuth_elevation_input; one_clock_per_system_adds_a_state_and_costs_geometry; monte_carlo_is_seeded_and_agrees_with_the_geometry; presets_propagate_and_are_seen_from_a_site); tests/dop_reference.rs (ядро для одного годинника проти gnss_lib_py) | Фактори DOP з одним годинником спираються на ядро, перевірене за gnss_lib_py 1.0.4 (рядок «GNSS geometry / dilution of precision (DOP)»); власні перевірки цього рядка внутрішні: sky_geometry відтворює orbit::dop і dop_cov на тій самій геометрії, еліпс відтворює аналітичний власний розклад 2x2, вхідні дані ECEF і азимут/висота узгоджуються, а RMS і 95 % вміст хмари із зерном узгоджуються з геометрією. Коваріація ENU з одним годинником на систему та еліпс мають статус VALIDATED у рядку «Horizontal error ellipse and per-system cofactor from the geometry covariance» (numpy, P2); MODELLED тут залишається композиція: розповсюдження пресетів до репрезентативного неба, хмара Монте-Карло (перевірена за геометрією, з якої вона вибирає, — перевірка самоузгодженості) і поверхні. Пресети орбітальних угруповань дають репрезентативне небо, а не датоване; гауссова модель похибок і UERE — задані вхідні дані, а не виміряна точність чи межа цілісності | MODELLED |
| VM-7a590be8 | Holdover годинника за відсутності GNSS | Зростання похибки вибігу в замкненому вигляді + holdover до порога; класи квантових годинників | holdover | holdover::tests (проти багатокрокової рекурсії коваріації Калмана; точний білий FM; круговий прохід); ядро дисперсії вибігу зовні перевірене в tests/gnss_denied_clock_holdover_reference.rs (проти scipy Van-Loan/brentq) | Багатокрокова рекурсія коваріації clock_state (перехресна перевірка в тій самій кодовій базі); лежаче в основі ядро дисперсії вибігу та інверсії holdover зовнішньо перевірене за scipy (див. «Clock-holdover coast-variance & threshold inversion»). Показники holdover для кожного класу за рівнем червоного шуму залишаються MODELLED | MODELLED |
| VM-4a6894e7 | Картки виміряних пристроїв-годинників (передбачення на відкладених даних) | clock_library: картка пристрою (білий шум фази, білий, фліккерний і випадкового блукання FM плюс лінійний дрейф частоти), підігнана за однією третиною іменованого виміряного запису годинника після журналованого кондиціювання (вилучено пропуски, викиди фази, стрибки фази, сплески; стрибки частоти записано в журнал), зважена за ступенями свободи типів шуму, ідентифікованими за лагом 1, а її передбачена девіація Аллана оцінюється на відкладених двох третинах; зчитувачі файлів годинників RINEX та IGS, файлів окремих лабораторій BIPM і Circular T розділу 1; перетворення картки на модель шуму слотової синхронізації, розширену калманівську модель годинника та рівні шуму монітора спуфінгу | clock_library (card, condition, series), realdata::clk, allan (lag1_noise_id) | tests/clock_library_device_cards_oracle.rs (gps_iif_cards_reproduce_the_recorded_finding; receiver_training_is_blocked_by_the_epoch_minimum; non_blind_cards_are_reported; попередньо зареєстровано 2ec76864); clock_library::card::tests; clock_library::condition::tests; clock_library::series::tests; realdata::clk::tests; tests/clock_library_f9p_cards_oracle.rs (f9p_first_pipeline_reproduces_the_recorded_finding; f9p_corrected_pipeline_reproduces_the_recorded_finding; залежить від наявності даних) | Виміряні записи, відкладені: комбіновані фінальні годинники 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 с не є чистим записом генератора | MODELLED |
| VM-d6948fbc | Картки виміряних годинників 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 у передбаченій девіації Аллана | clock_library (card) | tests/clock_library_periodic_cards_oracle.rs (periodic_cards_reproduce_the_recorded_finding; попередньо зареєстровано fb475550); clock_library::card::tests (a_periodic_card_carries_the_sinusoid_a_power_law_card_cannot) | Виміряні записи, відкладені: комбіновані фінальні годинники 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), тож саме ці члени несуть передбачення | MODELLED |
| VM-4ca6b7c4 | Оцінювання стану бортового годинника | 3-станний (фаза/частота/дрейф) калманівський годинник за Ван-Лоуном зі стабілізацією за Джозефом | clock_state | clock_state::tests (аналітична Q за Van-Loan; NEES; додатність PSD); tests/clock_state_reference.rs (повна траєкторія передбачення та оновлення - стан x і коваріація P 3×3 за 1925 кроками / 4 наборами параметрів проти filterpy 1.4.5; найгірше |relΔ| 2.8e-14); tests/clock_state_igs_holdout_oracle.rs::three_state_filter_on_held_out_igs_clocks_finding (закріплює знахідку); tests/clock_state_ext_igs_fresh_oracle.rs::extended_filter_on_fresh_igs_clocks_finding; tests/clock_state_ext_igs_conditioned_oracle.rs::conditioned_extended_filter_finding (раунд D9 3) | 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. Підігнаний білий шум фази дорівнює нулю на кожному супутнику, а похибки годинного масштабу (періодичні члени, фліккерний FM) у 3-станній моделі немає. 0,30, раунд 2, розширений фільтр (фліккерний FM і стани раз і двічі на оберт) на нових відкладених годинниках 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 | MODELLED |
| VM-dcb22bd1 | Бюджетування похибки передавання часу | Двосторонній TWSTFT (Саньяк), спільний вид GNSS, PPP; джитер лінії → дальність | timetransfer, timetransfer_adv | timetransfer::tests (взаємне скасування; дві форми тотожності Саньяка); tests/time_transfer_error_budgeting_reference.rs (екваторіальний обліт, Саньяк = 207,386 нс проти опублікованого Ashby 207,4 нс з точністю <0,05 нс; а також геометрія Саньяка/geodist, перехресно перевірена за RTKLIB 2.4.3 geodist(), зібраною з вихідного коду C) | Величину Саньяка перевірено за авторитетним ОПУБЛІКОВАНИМ ЗНАЧЕННЯМ — 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 | MODELLED |
| VM-7b9ba72f | Аналіз модуляції навігаційного сигналу та стеження за кодом | PSD BPSK-R/BOC, спектральне розділення κ, смуга Габора, джитер DLL, багатопроменевість | navsignal | navsignal::tests (власний SSC BPSK = 2/3R_c; PSD одиничної площі; DLL); tests/nav_signal_modulation_code_tracking_reference.rs (взаємна/автокореляція Голда GPS C/A: точний цілочисельний збіг із незалежним формуванням кодів за IS-GPS-200; PSD BPSK-R(1)/sine-BOC(1 1) проти незалежної періодограми scipy); tests/nav_signal_betz_hein_published_oracle.rs (betz_text_correlation_values_over_1_ghz; hein_mboc_interference_improvements; finding_betz_side_lobes_and_multipath, закріплено) | Взаємна та автокореляція кодів Голда GPS C/A точно збігається (цілі ±65/−1/63) із незалежним породженням кодів за IS-GPS-200; форма PSD BPSK-R(1)/BOC(1 1) проти незалежної периодограми scipy. Замкнені форми модуляції/SSC/DLL (Betz 2001 / Kaplan & Hegarty) лишаються аналітичними, тож рядок залишається MODELLED, але підтвердження кореляції кодів зовнішньо збігається. 0,30, раунд 2, проти надрукованих значень 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 за попередньо зареєстрованим прочитанням збігаються, тож розрив лежить у цьому прочитанні або в невказаній деталі статті; причину не з'ясовано | MODELLED |
| VM-1a97a57b | Породження розширювального коду GPS L1 C/A | Генератор коду C/A на LFSR G1/G2, що відтворює опубліковані вісімкові перевірочні вектори перших 10 чипів з IS-GPS-200 для PRN 1–9 (плюс довжина 1023 чипи, баланс 512 одиниць, трьохзначна періодична автокореляція) | sdr | sdr::code_tests (ca_first_ten_chips_match_is_gps_200_octal — перші 10 чипів PRN 1–9 точно відтворюють вісімкові значення IS-GPS-200 таблиця 3-Ia 1440/1620/1710/1744/1133/1455/1131/1454/1626; ca_code_has_1023_chips_and_is_balanced; ca_periodic_autocorrelation_is_three_valued) | IS-GPS-200 Table 3-Ia 'Code Phase Assignments' — авторитетні публічні (суспільне надбання уряду США) опубліковані ВІСІМКОВІ перевірочні вектори перших 10 чипів (GPS Directorate, navcen.uscg.gov); власний LFSR G1/G2 kshana точно відтворює кожен вектор PRN 1–9. Подальші замкнені форми модуляції/SSC/DLL залишаються Modelled (окремий рядок) | VALIDATED |
| VM-3d1e2932 | Характеристики квантового інерціального датчика | Холодноатомний інтерферометричний акселерометр із перших принципів (k_eff·T², QPN) | inertial::quantum_imu | quantum_imu::tests (k_eff; T² Маха-Цендера; вилка межі Freier-2016); tests/quantum_inertial_sensor_reference.rs (передавальна функція |H(ω)|, k_eff·T² і АСД дробового шуму проти опублікованих числових векторів Cheinet 2008 / Peters / Freier); tests/quantum_inertial_measured_qpn.rs (gauguet_finding_qpn_floor_sits_below_the_measured_noise, закріплено; gradiometer_qpn_line_matches_janvier_model) | Опубліковані числові вектори першоджерел щодо CAI (передавальна функція Cheinet 2008; чутливість Peters/Freier): k_eff·T² збігається точно, ASD дробового шуму — односторонній мінімум у межах ~2× від кожного опублікованого приладу (реальні пристрої несуть технічний шум вище квантового мінімуму). Оцінка в обидва боки, а не рівність. 0,30, раунд 2 (попередньо зареєстровано 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 з нерівними контрастами | MODELLED |
| VM-615e17f8 | Неоднозначність смуг / динамічний діапазон квантового інерціального датчика | Динамічний діапазон неоднозначності смуг Маха–Цендера: 2π-періодичне зчитування смуг задає максимальне однозначне питоме зусилля a_max=π/(k_eff·T²), а однозначний діапазон у клітинках роздільності a_max/σ_a=π/σ_Φ не залежить від оптичного масштабного коефіцієнта — виграш чутливості T² коштує однозначного діапазону в точній пропорції (час опитування обмінює роздільність на діапазон, а кількість клітинок лишається заданою фазовим шумом зчитування) | inertial::quantum_imu | quantum_imu::tests (a_max лежить на краю напівсмуги ±π з масштабуванням діапазону 1/T²; відновлення згорнутої фази точне всередині [−a_max,a_max] і накладається рівно на 2·a_max поза ним; однозначний динамічний діапазон a_max/σ_a=π/σ_Φ однаковий для двох дуже різних масштабних коефіцієнтів довжина хвилі/T; методи CaiAccelerometer збігаються з вільними функціями) | Самоузгодженість моделі смуг інтерферометра: край піввузла смуги, 2π-періодична структура накладання та скорочення масштабного коефіцієнта у відношенні діапазон/роздільність — це замкнені алгебраїчні тотожності, перевірені за власними функціями фази та чутливості Маха–Цендера рушія, тобто перевірки внутрішньої узгодженості, а НЕ зовнішній набір даних, тому рядок залишається InternalConsistency. MODELLED ідеальна триімпульсна неоднозначність смуг; без меж на однозначний діапазон за аберацій хвильового фронту чи втрати контрасту | MODELLED |
| VM-098c5e7f | Стійкість квантового інерціального навігаційного рахунку | Складений бюджет позиції зі зміщення, масштабного коефіцієнта, VRW та спаду стабільності протягом holdover | inertial::quantum_imu (QuantumNavBudget) | budget_tests (зміщення проти інтегратора AccelModel; VRW проти аналітичного інтеграла); tests/quantum_inertial_dead_reckoning_reference.rs (VRW проти незалежного подвійного інтегрування шуму білого прискорення методом Монте-Карло в numpy, найгірше відхилення 0,42% у межах ±3% за 6 часами вибігу; зміщення/масштабний коефіцієнт проти замкненого значення Groves 2013; круговий прохід holdover) | Незалежне числове інтегрування SDE методом Монте-Карло на numpy для двічі інтегрованого шуму білого прискорення (перевіряє аналітичну дисперсію VRW справді незалежним алгоритмом) + прив'язка до опублікованого значення Groves 2013 для членів зміщення та масштабного коефіцієнта; числа пристрою CAI кількісно характеризують апаратне забезпечення партнера і залишаються MODELLED | MODELLED |
| VM-1e713796 | Злиття сенсорів GNSS/INS | 15-станний EKF станів похибки, слабко зв'язаний (перевірено на реальному русі IMU/GNSS за NaveGo); тісно зв'язаний UKF за псевдодальністю та Доплером і зв'язаний фільтр годинника та позиції (лише узгодженість, поза перевіреним твердженням) | fusion (gnss_ins_ekf, tightly_coupled, ukf, coupled) | fusion::tests (тотожність UKF==лінійний KF; інерційний хід під час відмови; NEES); tests/gnss_ins_sensor_fusion_reference.rs (50 випадків проти filterpy 1.4.5: лінійний EKF слабко/тісно + апостеріорні зв'язаного PNT з точністю ≤2.4e-12; прогін UKF на 40 епох, найгірше |Δx| 1.9e-7 / |ΔP| 9.5e-6); tests/gnss_ins_navego_dataset_oracle.rs::loosely_coupled_rms_within_1p2x_of_navego (слабко зв'язаний розв'язок NaveGo v1.4 на реальному їздовому наборі даних IMU/GNSS Ekinox від NaveGo: горизонтальна RMS 0.912x, вертикальна 0.940x, RMS інновації положення 0.861x від NaveGo, середня нормалізована інновація 0,395; пороги 1.2x, 1.2x, 1.2x і 1,5 зафіксовано до прогону) | NaveGo v1.4 (R. Gonzalez, LGPL-3.0, запускається як інструмент під GNU Octave, ніколи не лінкується): його слабко зв'язаний ins_gnss на власному реальному русі наземного транспорту Ekinox IMU/GNSS, обидва розв'язки оцінено за еталонною траєкторією Ekinox. Обидва фільтри читають ті самі вхідні дані float32 з частотою 20 Гц, а конфігурацію Kshana відображено механічно з опублікованих параметрів набору даних. RMS горизонтальної та вертикальної позиції Kshana і RMS інновації позиції в межах 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) і залишаються поза перевіреним твердженням | VALIDATED |
| VM-4c656dcb | Стійкість до глушіння за відсутності GNSS | Геометричний J/S, бюджет лінії протидії глушінню C/N₀, втрата захоплення для кожного супутника | jamming | jamming::tests (broadband_q_equals_the_spectral_separation_closed_form і cw_q_equals_the_spectral_separation_closed_form: таблиця Q, CW і вузькосмуговий 1, широкосмуговий і ковзний 2, закріплені за замкненими формами navsignal; a_cw_jammer_is_more_damaging_than_broadband_noise_at_equal_js); tests/gnss_denied_jamming_resilience_reference.rs (FSPL/J-S/ефективне C-N₀ проти незалежного виведення бюджету лінії Kaplan & Hegarty §9,4 у numpy; реальне C/N₀ JammerTest монотонно падає крізь поріг 25 дБ-Гц); tests/jamming_jammertest_cn0_oracle.rs (попередньо зареєстровано, заблоковано, не запускалося) | Рівняння бюджету лінії протидії глушінню C/N₀ перехресно перевірено незалежним перевиведенням у numpy (ділить ту саму замкнену форму → InternalConsistency) плюс характеристика деградації C/N₀ у реальному JammerTest-2024. 0,30, раунд 2, заблоковано (залишається MODELLED): виміряне зниження C/N0 у JammerTest 2024 проти передбачення бюджету лінії (попередньо зареєстровано 6a66994b, у межах 3 дБ) не запускалося, бо положення та спрямування антени F8.1 у Bleik і частка L1 у потужності багатодіапазонної рампи 1.6.4 не задокументовані в каталозі тестів чи офіційному журналі | MODELLED |
| VM-ab66f655 | Виявлення спуфінгу | Злитий для кожної епохи показник якості безпеки з χ² за допомогою годинника, RAIM, AGC, SQM | spoof, spoof_detect, spoof_monitors | tests/spoof_texbat_validation.rs (характеристика параметрів TEXBAT); tests/spoof_detection_jammertest_oracle.rs::monitors_against_the_published_onsets_reproduce_the_recorded_disagreement (закріплює знахідку); tests/spoof_detection_jammertest_log_oracle.rs::engine_monitors_against_the_logged_onsets_reproduce_the_recorded_disagreement; tests/clock_library_tcxo_card_jammertest_oracle.rs (round_3_is_blocked_by_the_training_minimum; round_4_reproduces_the_recorded_finding; round_4b_reproduces_the_recorded_finding; D9) | Параметри сценаріїв TEXBAT (Humphreys 2012) — характеристика, а не зафіксовані вектори. Зовнішнє порівняння 0,30, висновок (залишається MODELLED): на JammerTest 2024 (Bleik; дані GPL-3.0) монітори рівня спостережень (хі-квадрат за допомогою годинника, RAIM, збій розв'язку) не подали тривоги протягом 10 с після жодного з 8 придатних до оцінювання опублікованих початків спуфінгу (де вікно перед початком було чистим, перша тривога настала через 10,2 до 39 с після опублікованого початку слоту), а три вікна перед початком містили хибні тривоги монітора годинника (81, 64 і 173 епох). Першим спостережуваним наслідком була втрата дводіапазонного стеження GPS, а не неузгодженість RAIM. Опубліковані початки — це початки слотів розкладу з роздільністю в хвилину; що вони передують захопленню RF, є інтерпретацією, а не вимірюванням. 0,30, раунд 2, проти офіційного журналу організаторів 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 с), незмінним від рівня шуму годинника | MODELLED |
| VM-3c597524 | Рівень захисту синхронізації часу за спуфінгу | Межа в замкненому вигляді для найгіршої невиявленої похибки часу = поріг монітора + σ вибігу генератора за затримки виявлення CUSUM, подана як смуга рівня червоного шуму | tpl | tpl::tests (замкнені оракули + CUSUM); examples/tpl_jammertest.rs (калібрування за реальним спуфінгом JammerTest 2024); tests/tpl_jammertest_coverage_oracle.rs::tpl_against_measured_time_error_reproduces_the_recorded_disagreement (закріплює знахідку); tests/tpl_jammertest_log_oracle.rs::drift_state_tpl_against_the_logged_onsets_reproduces_the_recorded_disagreement | Складає Validated примітиви (allan/holdover за Ван-Лоуном, поріг безпеки); відкалібровано на сценарії JammerTest 2024 2.1.1 (~1,01 мс реального відхилення поданого часу проти заявлених ≤51 нс). Міст над Validated частинами — не сам по собі зовнішня валідація. Зовнішнє порівняння 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 проти прямої, підігнаної до власних оцінок перед початком, тож навіть збіг не був би цілком незалежним. 0,30, раунд 2, проти початків з офіційного журналу 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) | MODELLED |
| VM-2e84fba6 | Аналіз цисмісячної місії | STM CR3BP + диференціальний коректор одинарної стрільби; південна NRHO біля L2 | cr3bp | cr3bp::tests (STM проти скінченних різниць); tests/cislunar_mission_analysis_reference.rs (5 членів JPL L2-S NRHO: 9:2 + 4 сусідів; найгірші |ΔC| 1.5e-5, |ΔT|/T 9.6e-5, периселена 0,7 км в одиницях довжини JPL) | NASA/JPL Three-Body Periodic Orbit Database (SSD, periodic_orbits.api; південне гало-сімейство Земля–Місяць L2, методика Howell/Davis) — зовнішньо опубліковані період T, константа Якобі C та початкові умови перпендикулярного перетину; коректор STM одинарної стрільби kshana, засіяний початковими умовами каталогу та збурений, збігається назад до членів каталогу | VALIDATED |
| VM-6a54cfeb | Альтернативний / додатковий PNT | Зіставлення гравітаційних карт, прив'язка до рельєфу (TERCOM/SITAN), магнітна аномалія | altpnt, mapmatch, gravimeter, igrf | tests/alternative_complementary_pnt_reference.rs (CRLB зіставлення з картою; поле IGRF-14); mapmatch::tests; gravimeter::tests; igrf::tests; tests/gravity_map_real_field.rs (60-хвилинний еталонний тест без GPS на реальному полі EGM2008 ступеня 70, попередньо зареєстрований у xval/icgem-egm2008/: зіставлено 3106 м, тож поріг < 500 м NOT MET і закріплено як не досягнутий, а десятикратне зменшення дрейфу 70,6 км MET; а також Монте-Карло за похибкою карти із зерном); altpnt::terrain::tests::emag2_format_grid_reproduces_the_synthetic_magnetic_channel і tests/emag2_real_grid.rs (читач EMAG2v3 на реальному фрагменті, залежний від наявності даних; жодного навігаційного результату на ньому не заявлено); tests/terrain_slam_rbpf.rs (спільна оцінка карти, RBPF у стилі FastSLAM, проти SITAN з відомою картою при 15 м корельованої похибки карти за 20 зернами, попередньо зареєстровано в xval/terrain-slam-rbpf/: середній виграш 1,5% і краще в 10 із 20, тож пороги 10% і 12 із 20 NOT MET і закріплені як не досягнуті; без шкоди на ідеальній карті, MET) | Коефіцієнти IGRF-14; CRLB узгодженого фільтра з перших принципів. Поле еталонного тесту реальної гравітації перевірено зовнішньо (рядок «Gravity-anomaly synthesis from a spherical-harmonic model»), але його навігаційний результат не має зовнішнього оракула | MODELLED |
| VM-93082325 | Синтез гравітаційної аномалії зі сферично-гармонічної моделі | Гравітаційна аномалія в сферичному наближенні (Barthelmes STR09/02 рівн. 126, ICGEM gravity_anomaly_sa) за повністю нормованими коефіцієнтами проти замкненого рівневого еліпсоїда (WGS84/GRS80) з нульовим степенем, розкладена на сітку для зіставника гравітаційних карт | gravity_sh, altpnt::maps, gravimeter | tests/icgem_gravity_anomaly_oracle.rs (egm2008_n70_matches_cited_icgem_values у CI на десяти цитованих вузлах ICGEM; egm2008_n70_gravity_anomaly_sa_matches_icgem на повних отриманих сітках 0.25 град для Чаду 9-15N 19-25E і Долини Смерті 35-38N 242-245E, 794 вузлів: RMS 1.3e-8 і 2.6e-8 мГал, максимум 2.9e-8 мГал проти попередньо зареєстрованих порогів 0,005 / 0,02 мГал, xval/icgem-egm2008/); gravity_sh::tests | ICGEM Calculation Service (GFZ Potsdam), незалежна реалізація: EGM2008, усічена на степені 70, gravity_anomaly_sa, WGS84, без припливів, член нульового степеня, h = 0. Вихід сервісу не має явної ліцензії, тому сітки отримуються під час тесту із зафіксованим SHA-256 (tools/fetch_icgem_grid.sh), а лише десять значень наводяться із зазначенням авторства | VALIDATED |
| VM-522a5c79 | Зчитувач цифрової моделі висот SRTM на реальному рельєфі | Самописний парсер SRTM .hgt (16 біт, big-endian, північний рядок першим, із урахуванням порожнеч) + білінійний семплер, що читає реальну плитку DEM суспільного надбання та розв'язує задокументований зйомковий еталон | altpnt::terrain | tests/terrain_nav_validation.rs (real_srtm_committed_badwater_tile_reads_real_relief — закомічена децимація 6 кутових секунд плитки SRTM v3 N36W117 із суспільного надбання розміщує Badwater Basin, найнижчу точку Північної Америки, на −78 м у межах оглядової смуги [−95,−70] м і зчитує справжній рельєф східного хребта плитки ~2,2 км; а також на двох закомічених дослівних вирізках 361x361 з кроком 1 кутова секунда N36W119 і N36W117: real_srtm_tile_whitney_in_survey_band (4412,1 м у смузі [4380 4430] м навколо оглядового значення 4421 м), real_srtm_tile_badwater_in_survey_band (−78,0 м у [−95,−70] м) і gdal_cross_check (найближчий вузол точно дорівнює gdallocationinfo з GDAL 3.8.4 на повних плитках в усіх 8 попередньо зареєстрованих точках, xval/srtm-ungate/; а також оракули розбірника: вручну побудований білінійний середник і синтетична фікстура) | Плитка 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, що споживає DEM, залишається Modelled (окремий рядок Alternative/complementary PNT) | VALIDATED |
| VM-cf3cdcd3 | Відтворюваність і гарантування якості програмного забезпечення | Детерміновані, хешовані за сценарієм, SBOM + міжплатформні еталонні (golden) бар'єри | report, scenario; CI (golden/determinism/SBOM) | tests/golden.rs, tests/determinism.rs, tests/cross_platform_golden.rs; tests/reproducibility_software_assurance_reference.rs (згенерований SBOM проходить перевірку з нулем помилок за офіційною схемою CycloneDX 1,5 JSON Schema на всьому постачуваному графі з 66 компонентів: типові + python + wasm можливості, без залежностей розробки) | Відповідність SBOM офіційній JSON-схемі CycloneDX 1,5 (+ чинні ідентифікатори SPDX) — зовнішній опублікований стандарт, нуль помилок валідації на всьому графі залежностей; частина детермінованості FoM / побайтової відтворюваності залишається зафіксованою перевіркою самоузгодженості, тому рядок залишається MODELLED | MODELLED |
| VM-77f12e71 | Оцінювання виявлення RF-порушень за допомогою AI/ML (13494) | Розмічений синтетичний корпус порушень + незалежний від детектора каркас ROC/AUC/матриці помилок/Pfa-Pmd; захист від витоку, стратифікований розподіл, звіт про оптимізм за зсуву розподілу (у режимі й поза режимом). Запускається з CLI/прив'язок як вид сценарію impairment-eval (scenarios/impairment-eval.toml) |
impairment_eval | impairment_eval::tests (AUC ідеальний=1/ідентичний=0.5/нічия=0,125, ROC монотонна, зведений>0,8, розділення шарів для кожного класу, захист від витоку, відтворюваний корпус, прапорці зсуву розподілу вказують на оптимізм); dominance_demonstrators (досяжний + відтворюваний + MODELLED-not-VALIDATED + прогалина оптимізму самоузгоджена) | Межі AUC у замкненому вигляді (Манн–Вітні) + детектор-ідеальний оракул; корпус СИНТЕТИЧНИЙ (обґрунтований параметрами, не польовий/IQ) | MODELLED |
| VM-d6a9346b | Дослідження розриву оптимізму RF-порушень за допомогою AI/ML та предиктор розриву лише за ID | Контрольоване синтетичне дослідження розриву оптимізму AUC між розподілом навчання та поза ним для опублікованих і навчених (логістична регресія / MLP з одним прихованим шаром) детекторів: тренди законів масштабування для кожного класу (Спірмен ρ + нахил за 1−тяжкістю) і гребеневий предиктор лише за ID, що оцінює розрив тільки за діагностикою всередині розподілу, оцінений за схемами leave-one-detector-out і leave-one-class-out. Відтворюється через cargo run --release --example optimism_study |
impairment_study, impairment_ml, eval_stats | impairment_study::tests (AUC оракула для кожного класу≈1, вивчена прогалина оптимізму>0, форма сітки + довірчий інтервал бутстрепу охоплює середнє + додатний тренд масштабування, ознаки ідентифікатора скінченні, предиктор прогалини перемагає «передбачити середнє» за ОБОХ перехресних перевірок з виключенням одного детектора та одного класу + детермінований); impairment_ml::tests (logreg розділяє + детермінований + втрата↓, MLP розв'язує XOR, чого лінійна модель не може + із зерном); eval_stats::tests (бутстреп/DeLong/Спірмен/гребінь проти замкнених форм) | Статистики, виведені вручну, проти замкнених форм (бінормальна AUC Φ(d'/√2), дисперсія DeLong, Спірмен із зв'язаними рангами, точне відновлення OLS) + перехресна перевірка leave-one-out проти базового рівня «передбачити середнє». Корпус СИНТЕТИЧНИЙ (обґрунтований параметрами, ніколи не польовий/IQ), а розрив оптимізму — це синтетичний→синтетичний зсув тяжкості, НЕ результат «симуляція → поле» | MODELLED |
| VM-4565dcd3 | Квантовий проти класичного компроміс PNT та стійкість за відсутності GNSS (13503) | Уведення виміряного ADEV (NNLS), таблиця компромісів (holdover синхронізації/інерціальний + вигода), обгортка стійкості за часом; застереження про мінімум передано з артефактом. Запускається з CLI/прив'язок як вид сценарію quantum-trade (scenarios/quantum-trade.toml) |
quantum_trade | quantum_trade::tests (відновлення за круговим проходом ADEV, невід'ємність NNLS, застереження про межу присутнє/відсутнє, виграш>1, монотонна огинаюча + межа alt-PNT); dominance_demonstrators (виміряна ADEV керується даними, а не припущеною межею, припущений клас позначає межу + застереження, неправильна крива відхиляється, MODELLED-not-VALIDATED) | Ядро підгонки виміряного ADEV→PSD (NNLS) збігається з scipy.optimize.nnls (tests/scipy_reference.rs / tests/quantum_vs_classical_pnt_trade_reference.rs) — незалежне зовнішнє ядро; але ЧИСЛА компромісу кількісно характеризують (ніколи не перевіряють) годинник партнера / CAI, тож сам компроміс залишається MODELLED, без ореолу валідації | MODELLED |
| VM-dd6c7403 | Середовище космічної погоди та термосферна густина, зумовлена активністю | Сонячні/геомагнітні індекси (визначальна таблиця Kp↔ap), екзосферна температура Jacchia-1971 і термосферна густина Jacchia 1971 (SAO Special Report 332: статичні дифузійні профілі, що відтворюють її Таблицю 7, із добовими, геомагнітними, піврічними, сезонно-широтними та гелієвими варіаціями) проти статичної атмосфери USSA76. Запускається з CLI/прив'язок як вид сценарію space-weather (scenarios/space-weather.toml) |
space_weather | space_weather::tests (Kp↔ap точно в точках сітки + круговий прохід + монотонність, середнє добового Ap, екзосферна T проти опублікованих опорних значень сонячного мінімуму/середнього/максимуму + приросту під час бурі, густина одиниця в опорній точці, розмах сонячного циклу в спостережуваній смузі 5–10×, сценарій відтворюваний + MODELLED-not-VALIDATED + відхилення поза діапазоном); dominance_demonstrators (досяжний + відтворюваний + фізична T + MODELLED-not-VALIDATED); tests/space_weather_density_accelerometer_oracle.rs::jacchia71_finding_is_pinned | Визначальна таблиця Kp↔ap + замкнена форма екзосферної температури Jacchia-1971 (збіг до <1 K з опублікованими опорами, 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 додано). 0,30, раунд 2, виміряні густини акселерометрів 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), тож густину не перевірено | MODELLED |
| VM-81fb8429 | Сумісність CCSDS OEM (імпорт ефемерид GMAT/Orekit/STK) | Імпортер CCSDS 502,0 OEM (parse_oem), що толерує рядки COMMENT / додаткові ключові слова метаданих / блоки коваріації та є точною оберненою до записувача; круговий обхід + уведення зовнішнього файла з перевіркою узгодженості швидкості. Запускається з CLI/прив'язок як вид сценарію oem-interop (scenarios/oem-interop.toml) |
oem | tests/ccsds_oem_interop_reference.rs (24 станів / 2 фікстури декодовано байт у байт незалежним розбірником oem, pos/vel Δ = 0); oem::tests (розбір OEM із зовнішнього інструмента з додатковими ключовими словами/коментарями/коваріацією, круговий цикл запис→читання повного стану, допускається pos+vel+accel, відхиляється лише положення + відсутні обов'язкові метадані, круговий цикл сценарію з високою точністю + зовнішнє прийняття); dominance_demonstrators (досяжно + відтворювано + круговий цикл точно + MODELLED-not-VALIDATED) |
Незалежний сторонній розбірник CCSDS-502 oem 0.4.5 (MIT, https://pypi.org/project/oem/) — окрема кодова база, що декодує емітований kshana OEM у EME2000/UTC байт у байт (24 станів у 2 фікстурах, pos/vel Δ = 0) і чий суворий зчитувач підтверджує токени метаданих; розбірник kshana так само узгоджується з ним на вбудованому зовнішньому OEM. Дві чесні знахідки щодо сумісності (бібліотека oem відхиляє конвенцію kshana з кількома сегментами на супутник і її багатозаписні рядки коваріації) задокументовано в тесті — тож це перевіряє відповідне одиничне об'єктне обмінювання, а не повну відповідність CCSDS-502 кожного варіанта kshana |
VALIDATED |
| VM-c55b030d | Вікно запуску та геометрія виведення (аналіз місії) | Азимут(и) запуску за двох тіл (sin Az = cos i / cos lat), мінімальне досяжне нахилення, колова швидкість, східний бонус обертання Землі, Δv зміни площини за доглегом і добові можливості, а за заданих епохи та рядків IERS finals2000A — швидкість пункту відносно істинного полюса (launch::site_rotation_speed_at). Запускається з CLI/прив'язок як вид сценарію launch-window (scenarios/launch-window.toml) |
launch | launch::tests (запуск суворо на схід досягає i=широта, KSC→ISS = підручникові 45°, полярний = N/S, i<широти недосяжний, 465 м/с екваторіальний бонус, зміна площини 10° ≈ 1,34 км/с + 180° = 2v, кількість щоденних можливостей, сценарій відтворюваний/MODELLED + шлях dogleg); dominance_demonstrators (досяжний + відтворюваний + KSC→ISS 45° + MODELLED-not-VALIDATED); tests/launch_geometry_orekit_oracle.rs::burnout_azimuth_reproduces_the_target_inclination_in_orekit; tests/launch_geometry_orekit_oracle.rs::earth_rotation_speed_gap_is_recorded_as_a_finding; tests/launch_geometry_orekit_oracle.rs::true_pole_site_speed_matches_orekit_at_a_fresh_epoch_and_longitudes | Сферично-тригонометрична геометрія запуску в замкненому вигляді проти опублікованих опор розв'язаних прикладів (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 рад; мінімальне нахилення, колова швидкість і дельта-v за доглегом до 3e-16), але швидкість пункту за обертання Землі не досягає попередньо зареєстрованого відносного 1e-6 на широті 62,9 град (1.12e-6). Розрив зростає як tan(lat), що узгоджується зі зсувом полюса через рух полюса приблизно на 5.8e-7 рад у земній системі Orekit, який сферичне ω·R·cos(lat) не враховує. Твердження не звузили до запуску, тому рядок не може підвищитися за цим порівнянням. 0,30, раунд 2 (попередньо зареєстровано 71bebf63): із епохою та рядками IERS швидкість пункту відносно істинного полюса (поле сценарію site_rotation_speed_true_pole_m_s) збігається з Orekit у межах 1e-6 на 24 пунктах за чотирма довготами (найгірше 4.9e-8), але номінальна швидкість без епохи, яку сценарій за замовчуванням видає як бонус обертання Землі, все ще розходиться на 1.12e-6, тож рядок залишається MODELLED до рішення щодо типового виводу | MODELLED |
| VM-72711b98 | Балістичний коридор входу в атмосферу (Аллен–Еггерс) | Пікове сповільнення (незалежне від балістичного коефіцієнта), швидкість і висота на піку перевантаження та швидкість піку нагрівання для балістичного входу в експоненціальну атмосферу. Запускається з CLI/прив'язок як вид сценарію reentry (scenarios/reentry.toml) |
reentry | reentry::tests (пік g не залежить від балістичного коефіцієнта + фізична смуга g, зростає з крутішим γ / швидшим входом, швидкість піку g = V_e·e^(−1/2) і пікового нагрівання = V_e·e^(−1/6) швидша, висота піку g фізична + глибша для більшого B, сценарій відтворюваний/MODELLED + вироджена геометрія відхиляється); dominance_demonstrators (досяжний + відтворюваний + частка V_e·e^(−1/2) + MODELLED-not-VALIDATED); tests/reentry_reconstruction_oracle.rs::reentry_overprediction_is_recorded_as_a_finding; tests/reentry_point_mass_reconstruction_oracle.rs::point_mass_peak_deceleration_matches_reconstructed_entries (лише перехресна перевірка); tests/reentry_point_mass_accelerometer_oracle.rs (заблоковано, не запускалося) | Аналітичний вхід за Алленом–Еггерсом у замкненому вигляді, додатково перехресно перевірений проти числового інтегрування 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): проти реконструкції входу Stardust SRC (Desai і Qualls, NASA NTRS 20080008567) пікове сповільнення за Алленом–Еггерсом для надрукованого інерціального стану входу (12,9 км/с, -8.2 град, H 7200 м) становить 61,8 g проти найкраще оціненої траєкторії 32,89 g, +88 % проти допуску 15 %: розв'язок зі сталим кутом траєкторії та без гравітації приблизно подвоює пік пологого входу зі швидкістю вище параболічної. Stardust не мав акселерометра, тож реконструкція є оцінкою траєкторії. 0,30, раунд 2, заблоковано (залишається MODELLED): інтегрований плоский розв'язок матеріальної точки (reentry::simulate_planar_entry, US76, гравітація за оберненим квадратом, кривина) збігається з найкраще оціненими траєкторіями Stardust і Genesis у межах 15 % (+11,3 %, +5,6 %), але ці максимуми — результати симуляцій агентств, а не вимірювання, тож це лише перехресна перевірка. Порівняння з акселерометром (попередньо зареєстровано a94a283d) заблоковано через відсутність читабельної копії аналізу Hayabusa2 REMM (doi 10.57350/jesa.16) | MODELLED |
| VM-8f68cf22 | Охоплення та геометрія смуги корисного навантаження EO | 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, зручне типове значення, що не входить до перевіреного твердження |
eo_payload (j2_node_rate, j2_nodal_period, ground_track_spacing_equator_j2, sun_synchronous_inclination) | eo_payload::tests (кутовий радіус 64° на 700 км + зменшується з висотою, надир→зеніт/нульова дальність, горизонт→ε=0/максимальний центральний кут, помилки за горизонтом, смуга зростає з FOV / GSD з висотою, інтервал між вузлами ~2750 км, сценарій відтворюваний/MODELLED + відхилення хибних вхідних даних); dominance_demonstrators (досяжно + відтворювано + кутовий радіус 64° + MODELLED-not-VALIDATED); tests/eo_payload_coverage_orekit_oracle.rs::eo_coverage_matches_orekit_and_geographiclib (висоти 400-1500 км, нахили 1-98 град, півполе зору 7.5-50 град, IFOV 10-50 мкрад, нахил 30 і 89 град: кожна величина в межах свого попередньо зареєстрованого порога, прапорець неперервності 168/168); tests/eo_payload_coverage_orekit_oracle.rs::exempt_flag_points_are_the_engines; регресійний tests/eo_payload_coverage_reference.rs | 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 км) | VALIDATED |
| VM-22d526a3 | Кадрування TM/TC космічних пакетів CCSDS (133,0) | Кодування/декодування первинного заголовка космічного пакета CCSDS 133.0-B (версія/тип/вторинний заголовок/APID/прапорці послідовності/лічильник/довжина даних) + сценарій кадрування. Запускається з CLI/прив'язок як вид сценарію space-packet (scenarios/space-packet.toml) |
space_packet | space_packet::tests (біти заголовка відповідають розкладці CCSDS-133, цикл кодування→декодування відтворює всі поля, значення поза діапазоном/усічені відхиляються); tests/ccsds_space_packet_reference.rs (33 випадки проти spacepackets 0.32.0, включно з 12 порівняннями повних пакетів; жодного розбіжного октета) | 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) | VALIDATED |
| VM-870899be | Вторинний заголовок космічного пакета CCSDS, контроль помилок пакета та сегментація | Розширення космічного пакета CCSDS 133.0-B-2 поряд із первинним заголовком: вторинний заголовок, що несе часовий код CCSDS 301.0-B (CUC або CDS, явне або неявне P-поле) і допоміжні дані, поле контролю помилок пакета CRC-16, сегментація великої одиниці даних користувача та її повторне складання, декодування потоку з перевіркою розривів послідовності та порядку і пакети PUS-TM. Вихід первинного заголовка побайтово ідентичний попередньому | space_packet (TimeCode, SecondaryHeader, packet error control, segmentation and reassembly, stream decoding) | tests/space_packet_ext_oracle.rs (п'ять попередньо зареєстрованих порогів: CRC, коди часу, потоки, пропуск і порядок, PUS TM; жодних розбіжностей); space_packet::tests | Попередньо зареєстровано (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 і будь-який канальний рівень нижче пакета | VALIDATED |
| VM-893b479b | Експорт SPICE SPK (типи 9 і 13) | Записувач і зчитувач ядер NAIF SPICE SPK типів 9 (Лагранж, нерівні кроки часу) і 13 (Ерміт, нерівні кроки часу), із розміткою DAF, дескрипторами сегментів і каталогами епох, та експорт CCSDS OEM у ядро SPK (епохи UTC або TDB в ефемеридний час) | spk_writer (SpkSegment, to_bytes, from_bytes, eval, et_from_label, oem_to_spk_segments) | tests/spk_writer_spice_oracle.rs (інвентар, обчислення, збіг на рівні бітів і байтів, перетворення епох OEM; чотири заплановані мутаційні перевірки роблять тест червоним) | CSPICE N0067 через spiceypy 8.3.0, ядро високосних секунд naif0012.tls, попередньо зареєстровано (5059fd2a) до того, як SPICE прочитав будь-яке ядро Kshana: опис SPICE чотирьох ядер Kshana точний; 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 не записуються | VALIDATED |
| VM-1970e41c | Типи SPICE SPK 3 і 21 (Чебишов, розширені рядки різниць) | Записувач і зчитувач сегментів NAIF SPICE SPK типу 3 (поліноми Чебишова для позиції та швидкості на фіксованих інтервалах, степінь від 0 до 27) і типу 21 (розширені модифіковані масиви різниць, рядки різниць інтеграторів JPL, MAXDIM від 15 до 25) за заданими записами, у файлах, що містять також сегменти типів 9 і 13; вибір запису та обчислення в порядку зчитувачів SPICE. Kshana не підганяє коефіцієнти Чебишова і не створює рядків різниць | spk_writer (SpkType::Chebyshev3, SpkType::DiffLines21, SpkSegment, InterpolatedSpk) | tests/spk_3_21_spice_oracle.rs (інвентар, обчислення в обидва боки, байтовий збіг); spk_writer::tests | 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 в одному файлі з коментарями) опис SPICE ядер Kshana точний, ядра Kshana побайтово ідентичні тим, що SPICE записує з тих самих записів, а spkpvn і spkgeo дорівнюють зчитувачу Kshana біт у біт на файлах Kshana і на файлах SPICE (48 876 компонентів в кожен бік, поріг 1e-12 відносно). Синтетичні записи: нічого про фізичну точність; реальних ядер типу 21, створених JPL, у наборі випадків немає | VALIDATED |
| VM-c005fb99 | Повідомлення CCSDS Attitude Data Messages (AEM, APM) | Записувач і зчитувач повідомлень CCSDS 504.0-B-2 Attitude Data Messages у KVN і NDM/XML: AEM версії 2,0 (і 1,0 у KVN, з його ATTITUDE_DIR, QUATERNION_TYPE і числовими послідовностями обертань) з типами орієнтації кватерніон, кути Ейлера та спін і їхніми похідними варіантами, варіантами кутової швидкості та нутації, кількома сегментами; APM версії 2,0 з блоками кватерніона, Ейлера, кутової швидкості, спіну, інерції та маневру; кватерніон A-до-B запису (504.0-B-2, Додаток F) | adm (AemMessage, ApmMessage, quaternion_a_to_b), ndm_xml | tests/adm_orekit_oracle.rs (L1 Orekit читає 33 файлів Kshana, L2 Kshana читає 31 файлів Orekit, L3 135 обертань записів; висновки зафіксовано); adm::tests; ndm_xml::tests | Парсери та записувачі 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 XML-повідомлень Kshana проходять валідацію за схемою NDM/XML 4.0.0 (за наявності даних, отримується із зафіксованим SHA-256). Висновок: записувач APM в Orekit відмовляється від маневру без MAN_DELTA_MASS (необов'язкового за стандартом), тож маневри APM охоплено лише в напрямі «Kshana записує». Поза набором випадків: типи AEM 1,0 */RATE і XML, повторювані блоки APM | VALIDATED |
| VM-0d74a24d | Повідомлення CCSDS Orbit Data Messages (OPM, OMM, OCM) | Записувач і зчитувач повідомлень CCSDS 502.0-B-3 Orbit Data Messages у 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 | odm (OpmMessage, OmmMessage, OcmMessage, Section, OcmBlock), ndm_xml | tests/odm_orekit_oracle.rs (L1 Orekit читає 30 файлів Kshana, L2 Kshana читає 25 файлів Orekit; висновки зафіксовано та стверджено, що вони повторюються); odm::tests | Парсери та записувачі 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 XML-повідомлень Kshana проходять валідацію за схемою NDM/XML 4.0.0 (за наявності даних). Висновки, зафіксовані, що звужують твердження: Orekit вимагає ELEMENT_SET_NO (необов'язкове в 502.0-B-3), відмовляється від COMMENT у визначених користувачем параметрах XML (схема це дозволяє), не записує BTERM без BSTAR (тож BTERM і AGOM охоплено лише в напрямі «Kshana записує») і додає відносні епохи OCM як секунди SI, тож за TDB вони розходяться з календарним прочитанням TDB приблизно на 1.9e-10 с/с (UTC, TAI і TT збігаються). Застарілий вихід OmmFile::to_omm_kvn, що обгортає метадані OMM у META_START/META_STOP, Orekit відхиляє (записано). Поза обсягом: блоки OCM PERT і OD, некартезові набори елементів, інші порядки коваріації | VALIDATED |
| VM-5949d2d2 | Бюджет похибки орієнтації та наведення за 3-DOF (AOCS) | Найгірший збурювальний момент гравітаційного градієнта ((3/2)(μ/R³)ΔI) як пік за орієнтацією (перевірене твердження), плюс бюджет похибки наведення RSS за іменованими внесками 1σ із домінантним членом (квадратична сума чисел, наданих викликачем, поза перевіреним твердженням). Запускається з CLI/прив'язок як вид сценарію attitude-budget (scenarios/attitude-budget.toml) |
attitude_budget | attitude_budget::tests (момент гравітаційного градієнта зникає для симетричного тіла, зменшується з висотою, лінійний за ΔI, квадратурна сума RSS, частки дисперсій у сумі дають 1); tests/attitude_gg_torque_reference.rs (20 випадків проти незалежного повнотензорного моменту ГГ T=(3μ/R³)(n̂×(I·n̂)), чисельно максимізованого за орієнтацією за допомогою Hipparchus 3,1 linalg; найгірша відн. 6e-15, + опублікована смуга O(1e-6) с⁻² за Wertz/Sidi); tests/attitude_gg_torque_basilisk_oracle.rs::gravity_gradient_torque_matches_basilisk (40 випадків проти GravityGradientEffector з Basilisk 2.9.1: пік при орієнтації 45 град у межах 1e-12 відносно, найгірше 2.1e-15; жодного моменту вище піку за 2000 випадкових орієнтацій на випадок, 3 діагональних і 5 загальних тензорів інерції, 5 висот) | 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 / гнучких мод | VALIDATED |
| VM-a9b472c1 | Прогноз проходжень над наземною станцією (наземний сегмент) | Проходження видимості в часовій області (AOS/TCA/LOS, максимальна висота, тривалість) пропагатора рушія над станцією вище маски висоти, з інтерпольованими перетинами сходу/заходу та загальним доступом: passes::predict_passes, геометричний планувальник (без рефракції та часу світла). Вид сценарію passes запускає видимий прогнозувач із рядка «Apparent ground-station pass prediction with refraction and light time» |
passes | passes::tests (інтерполяція перетину лінійна + безпечна для виродження, проходи від полярних до середніх широт, вища маска ⇒ менше або однаково); tests/ground_station_pass_prediction_reference.rs (22 сценаріїв / 129 проходів проти ElevationDetector з Orekit 12,2; найгірше |Δ| AOS/LOS 0,0000 с, максимальна висота 0,0014°, загальний доступ 0,0001 с, ідентична кількість проходів) | Orekit 12,2 (CS GROUP, Apache-2.0) + Hipparchus 3,1 — незалежна бібліотека польотної динаміки: ElevationDetector (кореневий розв'язувач Брента) + EventsLogger над ефемеридою ITRF, станція як TopocentricFrame WGS-84. AOS/LOS/максимальна висота/кількість проходжень/загальний доступ збіглися на ідентичних орбіті + станції + масці + вікні (зафіксований фікстур; драйвер xval/orekit-passes) | VALIDATED |
| VM-81de805c | Видимий прогноз проходжень над наземною станцією з рефракцією та часом світла | Проходження видимості (AOS, TCA, LOS, максимальна видима висота, тривалість) набору елементів SGP4 над станцією WGS-84 на перевіреному шляху навколоземної орбіти (IAU 2006/2000A, необов'язкові параметри орієнтації Землі), з тропосферною рефракцією ITU-R P.834-9 (рівняння 9 до 14, надруковані в Рекомендації коефіцієнти) і часом світла низхідної лінії, кожне з яких вмикається окремо; перетини розв'язуються бісекцією до 1e-7 с, а кульмінація — пошуком золотого перерізу. Запускається з CLI/прив'язок як вид сценарію passes (scenarios/passes.toml), обидві поправки ввімкнені за замовчуванням |
passes (predict_passes_apparent, apparent_look_angles, ApparentOptions, p834_tau_s_deg, p834_tau_deg, p834_theta_m_deg, p834_apparent_elevation_deg, PassesScenario) | tests/pass_predictor_on_path_orekit_oracle.rs (60 випадків, 1210 проходів: AOS/LOS у межах 3.4e-6 с, поріг 5 мс; максимальна висота в межах 5.5e-7 град, поріг 1e-3 град; 8979 видимих напрямків у межах 8.8e-7 град, поріг 1e-4 град); tests/earth_orbit_path_sgp4_erfa_oracle.rs (шлях); passes::tests (p834_equations_9_and_14_are_consistent_and_vanish_toward_the_zenith; refraction_lengthens_passes_and_light_time_delays_them); tests/pass_predictor_apparent_orekit_oracle.rs (висновок раунду 1, зафіксовано; orekit_p834_coefficient_differs_from_the_recommendation_above_sea_level) | 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 збоїв), тест червоніє. Обсяг: станції на рівні моря; коефіцієнт h*theta0^2 P.834 в Orekit становить 0,011380, тоді як Рекомендація друкує 0,01380 (зафіксовано), тож висоти над рівнем моря не порівнюються. Раунд 1, проти типової IERS 1996 TEME в Orekit, дотримав кожен поріг проходжень, але не досяг порога напрямку через розрив конвенції TEME у 72 мс дуги (зафіксовано) | VALIDATED |
| VM-ac9e18de | Адаптивне кодування та модуляція DVB-S2 уздовж проходження низхідної лінії LEO | Es/N0 низхідної лінії уздовж кожного проходження одного супутника над однією станцією (EIRP, втрати у вільному просторі, атмосферні втрати за законом косеканса, інші втрати, G/T, стала Больцмана, символьна швидкість), найефективніший MODCOD DVB-S2, що перевищує свій квазібезпомилковий поріг за ETSI EN 302 307-1 V1.4.1, Таблиця 13, плюс запас реалізації на кожному кроці, обсяг даних ACM проходження та базовий рівень зі сталим кодуванням, що замикається на масці та за найбільшої дальності. Запускається як вид сценарію acm-link. Ілюстративні вхідні дані; MODELLED. |
contact_schedule (es_n0_db, select_modcod, fspl_db, atmospheric_loss_db, ccm_modcod, pass_capacity, AcmLinkScenario); passes::predict_passes_apparent | contact_schedule::tests::modcod_efficiency_closed_form_matches_the_printed_table; contact_schedule::tests::modcod_selection_is_monotone_and_honours_the_margin; contact_schedule::tests::link_budget_pieces_have_closed_forms; contact_schedule::tests::acm_link_defaults_run_and_acm_beats_ccm | Внутрішня узгодженість: спектральна ефективність, обчислена в замкненому вигляді з K_bch Таблиці 5a і довжин кадрів, збігається з ефективностями, які друкує Таблиця 13 (перевірка переписування таблиці порогів); складові бюджету лінії збігаються з їхніми замкненими формами; вибір монотонний за Es/N0 і дотримується запасу; ACM переносить щонайменше обсяг зі сталим кодуванням. Геометрія проходження походить від окремо VALIDATED видимого прогнозувача проходжень. ЩО НЕ ПЕРЕВІРЕНО: жоден зовнішній інструмент чи виміряна лінія не порівнювалися; пороги — ідеальні значення AWGN зі стандарту, а не модема; завмирання від дощу, втрати наведення уздовж проходження та пілоти не моделюються. | MODELLED |
| VM-41760091 | Планування наземних контактів для кількох супутників і станцій з розв'язанням конфліктів | Кандидатні контакти з кожного проходження супутник–станція з їхнім обсягом даних ACM; конфлікти, де одна антена обслуговувала б два супутники в межах свого часу переналаштування або один супутник передавав би на дві станції одночасно; зважена за пріоритетом ціль доставки, обмежена накопиченим обсягом кожного супутника; ліниве жадібне планування за граничним значенням, базовий рівень «хто перший» та точний метод гілок і меж на до 26 кандидатах, із зазначенням розриву оптимальності жадібного методу. Запускається як вид сценарію contact-schedule. Ілюстративні вхідні дані; MODELLED. |
contact_schedule (conflicts, objective, delivered, schedule_chronological, schedule_greedy, schedule_optimal, ContactScheduleScenario) | contact_schedule::tests::conflicts_cover_turnaround_and_one_station_per_satellite; contact_schedule::tests::greedy_is_feasible_and_the_exact_solver_beats_or_ties_it; contact_schedule::tests::exact_solver_matches_brute_force_and_plans_are_feasible; contact_schedule::tests::exact_solver_declines_above_the_limit; contact_schedule::tests::contact_schedule_defaults_run_reproducibly; contact_schedule::tests::scenarios_reject_bad_inputs | Внутрішня узгодженість: точний метод гілок і меж збігається з повним перебором на малих випадкових наборах, кожен план перевірено на допустимість за правилами конфліктів, а жадібний метод ніколи не перевершує точний оптимум. ЩО НЕ ПЕРЕВІРЕНО: жоден зовнішній планувальник чи оперативний план не порівнювався; контакти беруться цілими (без поділу), накопичений обсяг зафіксовано на початку вікна, час повороту понад фіксований час переналаштування та бортове сховище не моделюються. | MODELLED |
| VM-082eb065 | Односторонній бюджет лінії (зв'язок / проєктування лінії) | Втрати на трасі у вільному просторі, C/N₀, Eb/N₀, запас і замикання за рівнянням лінії CCSDS 401 / DSN 810-005 для EIRP/G·T/дальності/швидкості/діапазону проти потрібного Eb/N₀. Запускається з CLI/прив'язок як вид сценарію link-budget (scenarios/link-budget.toml) |
linkbudget | linkbudget::tests (форма втрат у вільному просторі, замкнення рівняння лінії); tests/one_way_link_budget_reference.rs (DCT Galileo X-діапазону з DESCANSO/JPL відтворено наскрізно + 6 випадків FSL за ITU-R P.525 для центрів діапазонів DSN S/X/Ka; найгірші |ΔFSL| 4.6e-3 дБ, |Δносна| 2.5e-2 дБ) | Опублікована таблиця контролю проєкту телекомунікацій далекого космосу як зафіксовані числові вектори: DESCANSO / J. H. Yuen (ред.), 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 | VALIDATED |
| VM-0f818901 | Ощадливе подання вартості на покриття / ROI | Вартість на відсоток покриття + ROI «покриття на євро» над рушієм розрахунку розміру угруповання; вартість супутника — це вилка низька/номінальна/висока, надана викликачем (без вигаданих цін) | frugal (over walker) | frugal::tests (виведена вручну вартість на покриття 48/96=0,5, відношення ROI 2,667, упорядкування вилки + захист від нульового покриття) | Арифметика вартості в замкненому вигляді проти значень, виведених вручну; економічне ПОДАННЯ змодельованого показника покриття, а не пропозиція ціни чи перевірена модель вартості | MODELLED |
| VM-a32735f9 | Вплив пропущеного виявлення на цілісність (HPL/VPL з урахуванням контексту проти межі тривоги) | Відображає невиявлене зміщення спуфінгу/глушіння на ефективну похибку → область Стенфорда (доступно/недоступно/MI/HMI) проти HAL/VAL для конкретного контексту (відкрите небо проти міста) | integrity_impact (over raim) | integrity_impact::tests (той самий пропуск перемикає Available→MI→HMI із посиленням контексту; консервативний PL→Unavailable; HMI для кожної осі; захист входів) | Складає зовнішньо перевірену класифікацію Стенфорда RAIM (raim::classify_stanford); саме відображення «пропущене виявлення → AL» змодельоване, а не є сертифікованим розподілом цілісності | MODELLED |
| VM-ba0eda3b | Цитований лист параметрів моделі похибок CAI (13503) | Вилка (найкраще/номінально/консервативно) продуктивності холодноатомного інтерферометра — нестабільність зміщення, випадкове блукання швидкості/кута, стабільність масштабного коефіцієнта, частота вибірки, обмежена опитуванням, динамічний діапазон неоднозначності смуг — кожна з простежуваним цитуванням; живить QuantumNavBudget без моделювання апаратури | inertial::cai_params (over inertial::quantum_imu) | inertial::cai_params::tests (фізичний VRW потрапляє всередину цитованої вилки VRW на всіх 3 рівнях; сирий діапазон неоднозначності смуг обчислено з k_eff·T²; консервативний бюджет дрейфує більше за найкращий; кожну вилку підкріплено джерелом і позначено прапорцем підтвердження; захист упорядкування вилки) | Внутрішня узгодженість: цитована вилка VRW перехресно перевірена за фізикою CaiAccelerometer::accel_asd + сирий динамічний діапазон, обчислений із межі неоднозначності смуг; числа — MODELLED вилки з огляду літератури (needs_source_confirmation), жоден пристрій не перевірено, без ореолу валідації | MODELLED |
| VM-cea9b5d7 | Еталонний тест відповідності цілісності часу — класифікатор епох за діаграмою цілісності Стенфорда | Класифікація епох TIB за діаграмою цілісності Стенфорда (номінально / недоступно / MI / HMI) | src/benchmark/stanford.rs | src/benchmark/stanford.rs::tests (чотири регіони + включні межі + |похибка| + недоступність PL>AL); tests/tib_scorer_reference.rs (лічильники класифікації проти незалежного numpy на фіксованому синтетичному наборі) | Незалежна повторна реалізація чотирьохобластного правила на numpy (scripts/gen_tib_scorer_reference.py) на ідентичному наборі зразків; метод Cited із діаграми цілісності Стенфорд–ESA (Tossaint et al., ION GNSS 2007) і RTCA DO-229 WAAS MOPS. НЕ оракул точності ExternalDataset — еталонний тест має імунітет до чесності. | MODELLED |
| VM-00ec4aa5 | Еталонний тест відповідності цілісності часу — оцінювач покриття цілісності | Оцінювання покриття цілісності TIB (частоти HMI/MI/доступності + вердикт покриття верхньою межею (overbound)) | src/benchmark/coverage.rs | src/benchmark/coverage.rs::tests (чисте/занижені межі/усе недоступне/порожнє); tests/tib_scorer_reference.rs (лічильники + частки + coverage_ok проти numpy з точністю 1e-12) | Незалежний перерахунок областей на numpy у tests/fixtures/tib/reference.json; лише перехресна перевірка механіки оцінювача, без твердження про точність. | MODELLED |
| VM-28757f0d | Еталонний тест відповідності цілісності часу — каталог збоїв (параметричні генератори) | Меню збоїв TIB (розходження доменів, удар годинника, вибіг holdover, статична/покрокова/симетрична/асиметрична затримка, повтор у межах свіжості, вибірковий шлях, кворум k із N) | src/benchmark/faults.rs | src/benchmark/faults.rs::tests (профілі зсувів, монотонний вибіг, позначення набору невиявних, узгодженість max_offset, рівно два невиявні класи) | Репрезентативні параметричні генератори збоїв (Modelled); невиявний набір (симетрична затримка, повтор у межах свіжості) Cited з Mizrahi RFC 7384 і Narula & Humphreys (IEEE JSTSP 2018). Зовнішнього оракула немає — каталог збоїв не робить виміряного твердження. | MODELLED |
| VM-06ca2957 | Еталонний тест відповідності цілісності часу — вердикт поглинання невиявного | Вердикт TIB щодо поглинання невиявного (симетричне/повтор мають поглинатися PL, ніколи не повідомлятися як виявлені) | src/benchmark/scorecard.rs | src/benchmark/scorecard.rs::tests (еталонний PL поглинає; зламаний PL непоглинений, ніколи не виявлений; вердикт покриття для виявних; властивість чесності: жоден вердикт покриття/виявлення недосяжний для невиявного сценарію) | Перевірка властивості, що enum Verdict структурно не може повідомити невиявний збій як виявлений (Mizrahi RFC 7384); поглинено ⟺ PL ≥ зсув. Оракула точності немає. | MODELLED |
| VM-58d5ea17 | Інженерія платформи космічного апарата (AOCS/тепловий режим/конструкції/двигуни/живлення) | Не надається — Kshana є симулятором навігаційних характеристик, а не виробником платформ | — | — | — | PARTNER |
| VM-4189e731 | Проєктування навігаційного RF-корисного навантаження та антенної апаратури | Не надається — Kshana моделює характеристики сигналу, а не апаратуру корисного навантаження чи антен | — | — | — | PARTNER |
| VM-8b51babd | Проєктування та доведення апаратури квантового корисного навантаження | Не надається — лише моделі характеристик; апаратура холодних атомів/годинників належить партнерові | — | — | — | PARTNER |
| VM-3cd10418 | Забезпечення продуктової якості льотної апаратури (радіація/EEE/MAIT) | Не надається — Kshana стосується лише PA програмного забезпечення; льотне PA належить партнерові | — | — | — | PARTNER |
| VM-b691fa8a | Місячний координатний час | Релятивістська швидкість годинника Земля–Місяць (LTC/TCL) + ланцюжок TT/TAI/UTC + ансамбль | lunar_time | lunar_time::tests (швидкість у замкненій формі; круговий цикл); tests/lunar_coordinate_time_reference.rs (власний потенціал LTC і світські доданки швидкості проти опублікованих значень Ashby & Patla 2024 + геоцентрична швидкість Місяця проти JPL DE440) | Ashby & Patla 2024, 'A Relativistic Framework to Estimate Clock Rates on the Moon', Astronomical Journal 167:149 (NIST; основа для IAU/IAG LunaNet LTC): власний потенціал поверхні Місяця L_m = 3.13881e-11 і вікова сума 56,02 мкс/добу збігаються як опубліковані числові значення; геоцентричну швидкість Місяця перехресно перевірено за JPL DE440 (de440s.bsp через SPICE) | VALIDATED |
| VM-77f54b2d | Самоопис гібридного оптичного/RF звіту | Звіт hybrid-optical-rf зазначає конфігурацію лінії, з якою він справді виконувався (довжина хвилі несівної, передавальна та приймальна апертура, дальність, ширина імпульсу, час інтегрування, ефективності та втрати, розв'язані типові значення) і несе блок одиниць із одиницею та класом походження кожної величини, яку стаття ймовірно цитуватиме, зокрема сліди коваріації передавання в квадратних метрах | hybrid_integrity | hybrid_integrity::tests (розв'язану конфігурацію повертають для типових значень і для перевизначень, без кругового проходу довжини хвилі через метри; кожен запис одиниць містить і одиницю, і клас походження; кожне поле, назване блоком одиниць, справді видається, тож він не може документувати привида) | Зовнішнього оракула немає, і його неможливо мати: це самоопис, а не вимірювання. Його записано, бо відсутність його була дефектом -- P5 довелося брати довжину хвилі несівної та передавальну апертуру з типових значень у коді і виводити, що голе variance було в квадратних метрах, із перевірки внутрішньої узгодженості. Виведення було правильним, і саме тому це мало значення: ніщо не виявило б, якби воно було хибним |
MODELLED |
| VM-7a793449 | Доступність гібридної оптичної/RF лінії з боку RF | Звіт hybrid-optical-rf зазначає доступність 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, який повернув ТОЙ САМИЙ бюджет. Кожен множник передає клас походження свого входу на вихід, а множники, свідомо НЕ включені до добутку -- геометрична видимість, відмова через завади та кліматологія RF-відмов -- названі з причиною, а не мовчки встановлені в 1. Розв'язану RF-ногу повторено як окремий блок rf_link_configuration, а неперервні показники поряд з індикатором (запас лінії, запас C/N0, замкнені дальності замикання та стеження і використання дальності) — це обернення за дальністю того самого бюджету. Звіт повністю зазначає, на блоці та в записі одиниць, на який потрапляє читач, що цей показник ОБМЕЖЕНИЙ ЗАПАСОМ/ГЕОМЕТРІЄЮ і ДЕТЕРМІНОВАНИЙ, тоді як оптична доступність ОБМЕЖЕНА ПОГОДОЮ/КЛІМАТОЛОГІЄЮ і ймовірнісна, тож їх ніколи не можна наводити як порівнянну пару відсотків | hybrid_integrity, linkbudget, jamming | hybrid_integrity::tests (доступність дорівнює добутку двох індикаторів, перерахованих з власних запасів звіту, а ці запаси самі зібрано з власних EIRP, втрат у вільному просторі, зосередженої втрати, показника якості, члена Больцмана, швидкості даних і вимоги звіту з точністю 1e-9 дБ; значення виміряно як 0 або 1, тоді як оптичну доступність у тому самому прогоні виміряно строго між ними; кожен рядок чинника несе клас походження із закритого словника field_schema; повідомлену дальність замикання, повторно пропущену через бюджет лінії, повертає запас від 0 до 1e-9 дБ і виміряно, що вона не залежить від дальності, на якій стояв прогін, на чотирьох декадах, тоді як використання дальності зсувається рівно на відношення дальностей; лінія -40 дБВт повідомляє доступність 0, LOST, і використання вище 1, а не частку; застаріле зауваження 'цей рушій не обчислює РЧ-аналога доступності' стверджено зниклим, а заміну стверджено як таку, що називає нове поле; неправильний РЧ-вхід відхиляється, а не обмежується) | Зовнішнього оракула немає, а ExternalDataset відхилено. Два входи — це запас Eb/N0 і перетин порога C/N0, обидва є функціями MODELLED EIRP, показника якості та зосередженого розподілу втрат; немає виміряного запису доступності для гібридної оптичної/RF служби Земля–Місяць, з яким можна було б перевірити складений показник. Наявні перевірки внутрішні й названі як такі: композицію перераховано з власних опублікованих запасів звіту, а не з нутрощів видавця, а дальність замикання перевірено повторним запуском рівняння лінії НА ній із вимогою, щоб запас зник -- круговий обхід обернення, а не незалежна реалізація. Чесну межу показника записано на самому звіті: це детермінований індикатор 0/1, а не ймовірність, бо ніщо в цьому рушії не вимірює розподіл RF-відмов лінії в цьому діапазоні та геометрії. Цей відсутній вхід названо в rf_availability.factors_not_included, а не вигадано, і саме його надання знадобилося б для ймовірнісної RF-доступності | MODELLED |
| VM-0a8f4175 | Порівняння оптичного та RF вимірювання дальності на рівних умовах | Звіт hybrid-optical-rf видає відношення оптичного та RF вимірювання дальності з ОДНІЄЮ конфігурацією, за якої оцінено обидві ноги, у тому самому об'єкті: той самий односторонній шлях, та сама дальність і той самий час накопичення. Оптична нога — це фотонно-обмежена CRLB ToA рушія за односторонньою кількістю фотонів; RF-нога — це теплове тремтіння кодового стеження DLL early-late рушія за C/N0, який повертає власний бюджет лінії рушія для тієї самої односторонньої дальності. Шумову смугу контуру виведено, а не вибрано: B_L = 1/(2*integration_s) ставить RF-ногу рівно на оптичний час накопичення, а якщо викликач перевизначає її так, що два часи усереднення розходяться, відношення ВІДХИЛЯЄТЬСЯ (REFUSED) -- null, з названими розбіжністю та обома часами -- замість того, щоб наводитися у двох робочих точках. Жодного відношення не формується проти ВИБРАНОГО параметричного rf_position_sigma_m сценарію, і відмова пояснює чому: цей вхід не несе жодної конфігурації. Випущений двосторонній оптичний заголовок і точний множник, що з'єднує його з односторонньою порівняльною ногою, подано поряд із відношенням, тож звіт не можна прочитати як такий, що несе дві розбіжні оптичні сигми | hybrid_integrity, optical_linkbudget, linkbudget, navsignal | hybrid_integrity::tests (відношення дорівнює двом виданим гілкам, поділеним, з відносною точністю 1e-15, а його обернена та децибельна форми збігаються; дальність і часова сигма кожної гілки пов'язані рівно через c; виданий спільний конфіг стверджено рівним власним дальності та часу інтегрування сценарію, а дальність РЧ-гілки стверджено рівною дальності оптичної гілки; C/N0 РЧ-гілки побітово збігається з тим, що в блоці доступності, з одного бюджету лінії, а не з повторного виведення; властивість ПОРІВНЯННЯ ОДНОГО З ОДНИМ MEASURED, а не стверджено -- учетверіння спільного часу накопичення зменшує оптичну гілку вдвічі до 1e-12 і РЧ-гілку до 1e-7 і лишає відношення незрушеним з відносною точністю 3.19e-9, чого гілка, що потай усереднює щось інше, не змогла б; перевизначення rf_dll_bandwidth_hz, що порушує спільний час усереднення, робить відношення нульовим з причиною, що називає обидва часи, тоді як обидві гілки все ж видаються; односторонній прогін робить порівняльну гілку побітово рівною випущеному головному показнику зі штрафним чинником рівно 1, а двосторонній прогін відтворює штраф 0.5/sqrt(геометрична втрата зворотного шляху), перерахований з власного geometric_loss_db звіту з точністю 1e-12) | Зовнішнього оракула для ВІДНОШЕННЯ немає, а ExternalDataset відхилено свідомо. Підлеглий RF-ланцюг його має -- 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 дБ-Гц) -- а оптична CRLB має власний рядок у замкненому вигляді. Претендувати на будь-яку з цих опор для цього рядка було б запозиченою валідацією, чому й існують інваріанти матриці: тут величина — це ВІДНОШЕННЯ у конфігурації з MODELLED EIRP, показником якості, потужністю передавача та апертурою, і виміряного порівняння оптичного та RF вимірювання дальності в спільній робочій точці, з яким можна було б її перевірити, не існує. Внутрішньо перевіряється те, у чому відношення справді може помилитися: що обидві ноги стоять в одній робочій точці. Це вимірюється масштабуванням спільного часу накопичення з вимогою, щоб обидві ноги змінилися за тим самим законом квадратного кореня, а відношення лишилося на місці, і забезпечується повною відмовою від відношення, коли часи усереднення розходяться. Обидві ноги є межами теплового/дробового шуму, і обидві виключають затримку в середовищі, похибку годинника та неоднозначність, тож виключення однакове з кожного боку; звіт каже про це, а не залишає це на виведення | MODELLED |
| VM-0117d857 | Самоопис звіту про бюджет лінії | Звіт про бюджет лінії зазначає кожну абсолютну константу, з якої обчислено його власний запас -- частоту несівної, яку використали втрати у вільному просторі, EIRP, показник якості, зосереджені втрати та член Больцмана -- плюс потрібне G/T, за якого запас нульовий, сталу лінії (EIRP - втрати - потрібне Eb/N0), що є єдиною комбінацією, яку опублікована таблиця швидкості/підсилення може будь-коли зафіксувати, і, коли викликач задає шумову температуру системи, підсилення приймальної антени, яке цей показник якості передбачає | linkbudget | linkbudget::tests (у трьох діапазонах, на чотирьох декадах дальності та за обома вердиктами замикання запас і втрата у вільному просторі під ним перераховуються лише зі звіту з точністю краще ніж 1e-9 дБ; потрібне G/T, зібране з членів рівняння, збігається з тією самою величиною, отриманою як G/T мінус запас, а повторний прогін на ньому обнуляє запас; три бюджети з дуже різними EIRP, втратою та порогом, але з рівною сталою лінії дають однакову вимогу, тоді як 1 дБ на сталій зсуває її рівно на 1 дБ; розподіл підсилення відсутній, якщо не задано шумову температуру, а недодатну відхилено; кожне поле, назване блоком одиниць, справді видається) | Зовнішнього оракула немає: це самоопис рівняння, уже перевіреного за опублікованою таблицею контролю проєкту (див. рядок одностороннього бюджету лінії). Його записано, бо відсутність його була виміряним дефектом -- відтворення випущеного d1_rate_gain_beamwidth.csv вимагало зворотного розв'язання однієї ефективної константи з точністю до 0,0034 дБ за всіма тридцятьма рядками, і тепер рушій і називає цю комбінацію, і доводить тестом, що жодна випущена таблиця ніколи не могла розділити її три складові | MODELLED |
| VM-70c4fb1a | Таблиця місячного часового перетину за класами годинників | Один прогін бюджету місячного часу видає рядок перетину «годинник проти системи відліку» для кожного класу годинників проти єдиного спільного члена системи відліку, тож годинник — єдина змінна порівняння; кожен рядок несе перетин, досягнутий двома шляхами -- знайдений бісекцією із загальної степеневої кривої похибки часу та виведений алгебраїчно з домінантного типу шуму рядка -- з відносною різницею між ними | lunar_time_budget | lunar_time_budget::tests і lunar_time_budget_scenario::tests (усі чотири класи присутні в одному прогоні та в порядку запитаної підмножини; кожен рядок збігається зі своєю замкненою формою з відносною точністю краще ніж 1e-12; масштабування похибки системи відліку на k масштабує перетин на k для годинника з фліккер-FM і на k^2 для годинника з білим FM, перевірено при k=2 і k=3, що розділяє два класи шуму; кожен рядок відтворює перетин одного годинника, який бюджет уже повідомляв; кожен рядок відновлює один спільний член системи відліку; невідому назву годинника відхилено) | Два різні обчислення тієї самої величини в тій самій кодовій базі, а не одне, переформульоване: бісекція за степеневою кривою IEEE-1139 нічого не знає про тип шуму, тоді як замкнена форма інвертує домінантний тип алгебраїчно, тож хибно класифікований тип шуму або поганий інтервал виявляється як не дрібна відносна різниця. Чотири значення також відтворюють опубліковану таблицю статті до половини її останньої надрукованої цифри -- але ця таблиця сама була реконструйована з тієї ж замкненої форми, тож це перевірка відтворюваності, а не зовнішній оракул, а член системи відліку, проти якого вимірюється, є змодельованим (Modelled) розподілом | MODELLED |
| VM-2ed75c91 | Спільна похибка UT1 і руху полюса на спільному наборі рядків | Одна таблиця подає похибку прогнозу UT1, похибку полюса через рух полюса та їхню квадратурну комбінацію на Місяці на ІДЕНТИЧНОМУ наборі епох на горизонт, видаючи епохи, на яких вимірювано кожен складник. Окремо сценарій називає, який саме вхід EOP діє, і розкладає перепис його рядків, а також завжди видає таблицю горизонтів «прогноз проти остаточного» з явним поясненням, чому вона порожня, коли це так | frame_eop, realtime_frame_eop | frame_eop::tests і realtime_frame_eop::tests (усі три складові мають рівні, поелементно ідентичні, строго зростаючі набори епох в обох реальних вибірках IERS; спільний набір згортається до перетину, коли два блоки Bulletin B справді розходяться, а горизонт без спільних рядків пропускається, а не заповнюється нулями; порожнечу таблиці «прогноз проти фінального» зазначено в документі, а не припущено через відсутнє поле; реальна друга версія заповнює її з перевіркою рядок за рядком; відсутня пізніша версія є помилкою, а не мовчазною порожньою таблицею); tests/joint_eop_table_astropy_erfa_oracle.rs::joint_table_and_predicted_vs_final_tables_match_astropy_and_erfa (таблиці 3, 4 і 6 сценарію наскрізно: набори епох точно, статистика UT1 і полюса в межах 1e-9, комбінація на Місяці в межах 1e-5 від повного обертання ERFA, заявлений стан кожного випадку «прогноз проти фінального»); tests/joint_eop_error_iers_ar2019_oracle.rs::bulletin_a_2019_prediction_error_matches_the_iers_realised_statistics (Kshana/IERS від 1,001 до 1,100 для 1 до 90 діб); перепис рядків: tests/embedded_eop_vintage_astropy_preregistered.rs (рядок автономного входу); регресія раунду 1: tests/joint_eop_error_bulletin_a_oracle.rs::measured_error_against_the_iers_accuracy_formula_pole_agrees_ut1_does_not | astropy 8.0.1 utils.iers (BSD-3), що читає продукт IERS finals2000A за власним правилом Bulletin-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 Annual Report 2019, Kshana/IERS від 1,001 до 1,100 на 1 до 90 діб (поріг [0,8, 1,25], Measured). Перепис рядків: astropy (рядок офлайн-входу). Раунд 1 (збережено як регресійний): проти формули точності, надрукованої в 178 випусках Bulletin A, полюс збігається в межах 1.5x, а UT1 — ні, що перевіряє формулу IERS проти її реалізованої похибки | VALIDATED |
| VM-05ed14c3 | Типовий офлайн-вхід параметрів орієнтації Землі — це реальний продукт 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 остаточних Bulletin B, 54 швидких виміряних рядків (прапорець I без блока Bulletin B) і 90 прогнозів Bulletin 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, що є властивістю вхідного файла, а не результатом парсера |
realtime_frame_eop, eop | tests/embedded_eop_vintage_astropy_preregistered.rs::vintage_of_every_row_matches_astropy_and_predictions_match_bulletin_a (шість точних критеріїв: байти вибірки; 174 рядків; кількості за версіями та повні списки MJD 30/54/90; прапорець P і для полярного руху, і для UT1 кожного прогнозного рядка; перепис типового прогону; кожен прогнозний рядок дорівнює IERS Bulletin A Vol. XXXIX No. 039 у межах останньої надрукованої цифри, найгірше 5.0e-5 кутових секунд і 4.9e-6 с); tests/embedded_eop_census_astropy_oracle.rs::vintage_census_matches_astropy (регресійне закріплення старої вибірки з 32 рядків за класифікатором прапорців: 20 фінальних, 12 швидких, 0 прогнозних); tests/embedded_eop_census_astropy_oracle.rs::rows_called_prediction_only_are_flagged_measured_by_astropy (висновок раунду 1, збережено); realtime_frame_eop::tests; tests/operational_eop_predictor_reference.rs | astropy 8.0.1 astropy.utils.iers.IERS_A (BSD-3-Clause), що читає ті самі байти власним зчитувачем, і таблиця IERS Bulletin A Vol. XXXIX No. 039, скопійована число в число; попередньо зареєстровано (6fdae01b) із шістьма точними критеріями до запуску astropy. Усі шість виконуються: 30 остаточних, 54 швидких і 90 прогнозних рядків з рівними списками MJD, кожен прогнозний рядок має прапорець P, перепис типового запуску рівний, а прогнози збігаються з Bulletin A у межах останньої надрукованої цифри. Розкрито: зріз вибрано простим зрізом стовпців прапорців і блока Bulletin B, який показав 30/54/90, до коміту; витяг є дослівним зрізом, який цей репозиторій вирізав з продукту IERS (SHA-256 у NOTICE фікстура). Перевірене твердження — це класифікація вінтажів і перепис постачуваного типового входу та його прогнозних рядків; довільні користувацькі входи класифікуються за тим самим правилом прапорців, але не входять до порівняння. 0,30, раунд 1 (замінено): попередній типовий вхід називав 12 рядків з прапорцем I прогнозами Bulletin 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 | VALIDATED |
| VM-ee245f89 | Площа захоплення залежно від висоти та ширини променя | Двоосьовий перебір площі поверхневого захоплення, зваженої за діаграмою та обмеженої висотою, за висотою передавача та діаметром антени, що видається одним рядком на робочу точку з шириною променя за половинної потужності, яку передбачає кожен діаметр, а захоплення лімба подано як ПОРІГ -- для кожного рядка J/S лімба, його запас і потужність передавача, яка його замкнула б; для кожної сітки знайдені перетини або явне твердження, що лімб ніде на сітці не досягається, із дефіцитом | antenna | antenna::tests і attack_surface::tests (сітка повна, і кожна захоплена частка лежить у [0 1]; захоплена частка не спадає за потужністю передавача в кожному вузлі; вона НЕ монотонна за шириною променя чи висотою, що закріплено власним тестом, тому розгортку не можна згодом згладити; базовий вузол відтворює наявну захоплену частку побітово; оцінювання лише на лімбі побітово ідентичне останній точці повної розгортки; знайдений перетин лежить на порозі з точністю 1e-9 дБ і оточений) | Включення множин: відношення завади до сигналу входить як рівномірний зсув у децибелах, тож захоплена множина за вищої потужності передавача містить множину за нижчої, і частка може лише зростати -- властивість, якої діаграма Ері НЕ дає за шириною променя чи висотою, де захоплена область розпадається на кільця, а частка справді немонотонна. Жодна опублікована таблиця не дає частки захопленого диска місячного орбітального передавача залежно від висоти та ширини променя, тож немає нічого зовнішнього, з чим можна було б перевірити ці клітинки; діаграма під ними окремо Validated за опублікованими значеннями Бесселя і зберігає власний рядок | MODELLED |
| VM-b53e2911 | Відтворюваність бюджету похибки місячного часу | Сценарій lunar-time-budget публікує свої масивні виходи як довгу таблицю (індекс сітки, час усереднення, член) поряд зі звітом, тож сім кривих x(tau) для кожного члена та загальна корінь-з-суми-квадратів є виходом рушія, а не тим, що читач відтворює з розділу про метод | lunar_time_budget_scenario | lunar_time_budget_scenario::tests (усі 57 часів усереднення x 8 членів присутні, індекс сітки пробігає 0..=56 і несе по 8 рядків; рядок total дорівнює кореневій сумі квадратів семи членів поруч з ним на кожному tau; таблиця слідує запитаній сітці, а не жорстко закодованій; її видання лишає JSON звіту побайтово ідентичним) |
Лише самоузгодженість: опубліковану суму перевірено проти кореня з суми квадратів членів у тому самому файлі, а видана крива відтворює випущений p3_time_budget_curve.csv у всіх 57 точках. Обидві перевірки спільно використовують власні визначення членів цього рушія, тож жодна не є незалежною. Член годинника спирається на опубліковані специфікації годинників, але ВЕЛИЧИНИ порогів лінії, системи відліку, релятивістських і ефемеридних членів — це задокументовані розподіли бюджету без зовнішнього оракула | MODELLED |
| VM-bc822667 | Лабораторія часу місячної станції: holdover miniRAFS проти LTC | Необов'язковий блок [time_lab] сценарію lunar-time-budget моделює годинник місячної опорної станції (типово клас miniRAFS, або будь-який названий клас, або картка пристрою, підігнана за заданими точками стабільності), скерований на Координований місячний час, а потім вільно хідний або повторно скерований кожні N секунд: крива похибки часу x(t) як корінь із суми квадратів степеневого члена годинника, сталого залишку скерування (ILLUSTRATIVE), сталого залишку реалізації LTC і вмикного члена швидкості від висоти станції; час після скерування до 1, 10 і 100 нс (або заданих порогів) бісекцією поряд із замкненим оберненням для домінантного типу шуму, і домінантний член на кожному заданому горизонті, усе з одиницями | lunar_time_lab (over clock_specs, lunar_time_budget, lunar_time) | lunar_time_lab::tests (free_run_clock_term_is_the_budget_clock_term: з вимкненим керуванням член годинника дорівнює члену годинника бюджету до біта для всіх чотирьох класів; bisection_matches_the_closed_form у межах 1e-9 відносно для обох класів шуму; threshold_below_the_floor_is_flagged; steering_holds_and_resets; height_term_is_opt_in_and_linear; device_card_reproduces_a_named_class; bad_inputs_are_refused); tests/lunar_station_time_lab.rs (the_block_is_additive: типовий документ, таблиця та підсумок не змінюються, а блок додає лише власний об'єкт та одиниці; time_to_threshold_matches_the_closed_form_through_the_scenario; clocks_are_ordered_over_the_span_where_the_model_orders_them: optical < PHM < RAFS < miniRAFS від 1 с до 7e5 с, причому криві PHM і RAFS перетинаються між 7e5 і 8e5 с, закріплено як розкриту властивість моделей годинників з одним типом шуму; every_time_lab_field_has_a_unit; unknown_time_lab_fields_and_clocks_are_refused) | Лише внутрішня узгодженість: час до порога, знайдений бісекцією, перевірено проти замкненого обернення домінантного типу шуму годинника, а вільно хідний член годинника — проти власного члена годинника бюджету. Класи годинників спираються на опубліковані одноденні специфікації (їхні власні рядки); швидкість LTC тут не виводиться заново і зберігає власний VALIDATED рядок (Місячний координатний час); залишок скерування — ILLUSTRATIVE, залишок реалізації — розподіл бюджету, і жодної теплової моделі не включено. Наносекундну ціль, описану в матеріалі ICG WG-B Lunar PNT за червень 2024, наведено як твердження джерела, а не прийнято як твердження; ніщо тут не є твердженням про будь-який реальний годинник станції | MODELLED |
| VM-f7dcc8ff | Місячна геодезична VLBI | Затримка VLBI ближнього поля для земної бази, що спостерігає місячний маяк + частинні похідні | lunar_vlbi | lunar_vlbi::tests (межа далекого поля збігається з delta_dor; поправка ближнього поля; частинні похідні скінченних різниць); tests/lunar_vlbi_anise_oracle.rs::near_field_delay_disagrees_with_the_anise_light_time_difference | Затримка 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 у власному рядку, Місячна геодезична VLBI, шлях ядер; порівняння цього шляху з ANISE (75/75 у межах 1 пс, найгірше 0,12 пс, tests/lunar_vlbi_anise_oracle.rs::kernel_delay_matches_the_anise_light_time_difference) є лише перехресною перевіркою обчислення ядер, бо розв'язок часу світла в цьому каркасі — власний для проєкту. Цей рядок (аналітичний типовий шлях) залишається MODELLED із висновком вище | MODELLED |
| VM-825d8922 | Місячна геодезична VLBI, шлях ядер | Затримка 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 не порівнюються |
lunar_vlbi (KernelGeometry, delay_partials_beacon_body, delay_partials_stations, LunarVlbiScenario); naif_kernel | tests/lunar_vlbi_spice_oracle.rs::kernel_delay_and_partials_match_spice_light_times_near_j2000 (75 затримок на 25 епохах поблизу J2000 для DSS-14, DSS-43 і DSS-63: затримки в межах 1 пс, найгірше 0,06 пс; частинні похідні маяка в системі тіла в межах 1e-6, найгірше 7.4e-9; частинні похідні станцій ITRF93 у межах 1e-6, найгірше 3.8e-11); tests/lunar_vlbi_spice_oracle.rs::spice_2024_epochs_finding_is_unchanged; tests/lunar_vlbi_anise_oracle.rs::kernel_delay_matches_the_anise_light_time_difference (перехресна перевірка обчислення ядра); tests/naif_kernel_reader_check.rs; lunar_vlbi::tests | 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, рядок Місячна геодезична VLBI), диференційований член Шапіро, який сценарій додає аналітично, середовище та перехід від барицентричного до геоцентричного масштабу | VALIDATED |
| VM-3479c010 | Зчитувач ядер NAIF: контейнер DAF, SPK тип 2 і двійковий PCK тип 2 | Власний зчитувач двійкових ядер NAIF на чистому Rust (naif_kernel): контейнер DAF (обидва порядки байтів, зв'язані записи підсумків), сегменти позиції SPK типу 2 за Чебишовим, з'єднані через їхні центри до найнижчого спільного предка, і сегменти кутів Ейлера двійкового PCK типу 2, перетворені на обертання від J2000 до тіла, з епохами у вигляді двочастинного ET, щоб зміщення менше мікросекунди зберігало точність. Саме через нього KernelEphemeris (ephem_provider) і шляхи ядер lunar_vlbi, lunar_llr та lunar_vlbi_fim читають DE440. Твердження полягає в тому, що він правильно читає ядра JPL; це не твердження, що DE440 або аналітичні ряди Сонця та Місяця рушія точні | naif_kernel (DafFile, SpkKernel, PckKernel); ephem_provider (KernelEphemeris) | tests/naif_reader_spice_oracle.rs::reader_matches_spice_and_anise_on_the_post_registration_grid (600 станів de440s.bsp і 200 обертань MOON_PA_DE440 на 200 епохах 1849-2150 і випадкових парах тіл, узятих із власного хеша коміту попередньої реєстрації, проти SPICE та ANISE на обрізаних ядрах, бітово ідентичних ядрам NAIF: найгірша різниця 0,6 % свого порога, 1.95e-3 м абсолютно); tests/naif_reader_spice_oracle.rs::reader_matches_spice_and_anise_on_the_full_naif_kernels_when_present (те саме на повних файлах NAIF, перевірено за SHA-256; залежить від наявності даних); tests/naif_kernel_reader_check.rs (інженерна перевірка, а не докази); naif_kernel::tests; ephem_provider::tests | Два незалежні зчитувачі ядер на тих самих файлах 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) до появи будь-якого фікстура чи значення оракула: зерно (seed) сітки — перші 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, тож збіг перевіряє зчитувач, а не ефемериду | VALIDATED |
| VM-e8fff17a | Earth-GNSS на місячній відстані | Приймання Earth-GNSS на місячній відстані: шар слабкого сигналу, який називає Таблиця 1 P7 і для якого в рушія не було моделі. Для кожного супутника та кожної епохи він обчислює кут поза віссю відносно надира передавача, чи Земля затуляє пряму трасу, похилу дальність і її втрати у вільному просторі, підсилення передавача за цим кутом, прийняту потужність і спектральну густину відношення несівної до шуму; потім агрегує лише лінії, що перевищують поріг стеження, і перебирає повний оберт угруповання, тож відповіддю є РОЗПОДІЛ, а не один знімок. Результат визначають три факти, і звіт зазначає кожен: Земля видна під кутом 13,90 град з радіуса угруповання, тож ПІК променя геометрично недоступний для будь-якого променя, спрямованого до Місяця; лишається край головної пелюстки та бічні пелюстки, режим, у якому LuGRE працював біля Місяця в 2025; а втрати L1 на трасі становлять близько 208 дБ, приблизно на 25 дБ більше, ніж платить наземний користувач. MEASURED на вбудованій геометрії класу GPS із 24 супутників за 64 епох одного орбітального періоду: доступність СИГНАЛУ 0,375 з найкращою лінією 30,93 дБ-Гц і доступність ФІКСАЦІЇ 0,000 — щонайбільше дві одночасні лінії, придатні до стеження, ніколи не чотири, потрібні для позиції. Розділення цих двох доступностей і є суттю, і звіт не дозволяє їх сплутати: Earth-GNSS на місячній відстані — це шар рівня ЧАСУ, а не позиції, і попереднє значення шаруватої стійкості має брати доступність фіксації. Обумовленість видається з тієї самої причини: кожен видимий супутник лежить усередині конуса шириною в пару градусів, якщо дивитися з Місяця, тож лінії візування майже паралельні за побудовою. Запускається як вид earth-gnss-lunar. Переформульовано за D7: твердження на місячній відстані — це ВІДНОСНА спектральна густина відношення несівної до шуму між супутниками в одну епоху за виміряними двовимірними діаграмами передавання (NAVCEN Block IIR/IIR-M) плюс геометрична видимість; абсолютне C/N0 не стверджується (Parker et al. повідомляють про спільні втрати від 7 до 12 дБ). |
earth_gnss_lunar | earth_gnss_lunar::tests (11 тестів бібліотеки: напівкут земного лімба проти його замкненої форми asin(R/r) з додатковим твердженням, що КОЖНА незаслонена лінія лежить поза цим конусом, тож тест заслонення та кут лімба не можуть розходитися; предикат заслонення перевірено на ближньому боці, дальньому боці та у випадку, коли тіло лежить ПОЗАДУ передавача; втрату на трасі обмежено правдоподібною смугою місячної дальності на кожній лінії; множину відстежуваних показано підмножиною геометрично видимих і неперетинною із заслоненою; монотонність в обох напрямках - більше приймального підсилення ніколи не зменшує кількість, суворіший поріг ніколи її не збільшує; жодній лінії не зараховано більше підсилення вздовж осі; приймач усередині Землі відхилено; розгортку стверджено такою, що справді ЗМІНЮЄТЬСЯ за епохою; а доступність сигналу та розв'язку стверджено різними, правильно впорядкованими та узгодженими з рядками для кожної епохи); tests/earth_gnss_measured_montenbruck_oracle.rs::finding_genesis_nadir_counts_exceed_the_paper (закріплено); tests/lugre_relative_cn0_visibility.rs::too_few_iir_records_at_lunar_distance_for_the_relative_cn0_bar (закріплена знахідка) | Тотожності в замкненому вигляді та внутрішня узгодженість; зовнішній оракул НЕ заявляється. Половинний кут лімба перевірено проти 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 % видимі, RMS пари <= 3,0 дБ, медіана <= 2,0 дБ, щонайменше 50 записів і 30 пар) має замало даних: 26 придатних епох транзиту та місячної орбіти містять 15 стежених записів IIR/IIR-M (здебільшого стежаться IIF і III) і одну пару. Усі 15 передбачено видимими, а залишок єдиної пари дорівнює -0.06 дБ; нічого не стверджується | MODELLED |
| VM-b2d2f296 | Визначення місячної орбіти: Earth-GNSS проти наземних радіометричних вимірювань | Визначення орбіти на майже прямолінійній гало-орбіті (або еліптичній замороженій орбіті) за двома незалежними типами даних: псевдодальності Earth-GNSS, прийняті на борту (правило лінії з рядка Earth-GNSS на місячній відстані плюс затулення Місяцем), і наземні двосторонні дальність і швидкість зміни дальності від трьох станцій Deep Space Network. Кожне є одним кроком пакетних найменших квадратів навколо опорної орбіти з його формальною коваріацією; Монте-Карло із зерном (seed) різниці двох оцінок перевіряє, чи пояснюють її дві коваріації (q = d' (P_G + P_R)^-1 d, хі-квадрат із шістьма ступенями свободи, коли моделі збігаються) і що немоделюване прискорення робить зі статистикою. | lunar_infra::{orbit, gnss, od} | tests/lunar_infra_od_consistency.rs (поріг O1: матриця переходу станів, прив'язана за три доби та за один період, дорівнює scipy DOP853 з відносною точністю 1e-6; поріг C1: середнє q і частка всередині 95 %; поріг C2: вибірка над формальним слідом кожного оцінювача; поріг C3, NOT MET і закріплено: з 3e-10 м/с2 немодельованого прискорення перевищення в межах 95 % становить 0,0525, а не щонайменше 0,5 - бортову оцінку відомо лише з точністю до сотень метрів, тож близько десяти метрів зсуву ховається всередині її коваріації); lunar_infra::orbit::tests, lunar_infra::gnss::tests, lunar_infra::od::tests, lunar_infra::la::tests | Незалежна програма scipy/numpy інтегрує ті самі варіаційні рівняння (поріг O1). Нічого не порівнюється з вимірюванням місячної орбіти. Оракул перевіряє числові методи заданих формул, а не фізику, тож рядок залишається MODELLED. Обмежена модель трьох тіл: без Сонця, без місячних гармонік, вісь обертання Землі вздовж нормалі до орбіти, ILLUSTRATIVE вхідні дані приймача та станцій. | MODELLED |
| VM-d2d0cc81 | Місячне розв'язання неоднозначностей фази несівної: поверхня та орбітальний апарат | Фаза несівної та код Earth-GNSS з одинарними різницями між приймачами на місячній поверхневій станції та орбітальному апараті, із профільованою різницею годинників на кожну епоху, однією неоднозначністю на безперервне проходження та найдовшим проходженням як калібром. Коваріація плаваючої неоднозначності — доповнення за Шуром; LAMBDA розв'язує цілі числа, частота початкового завантаження (bootstrapped) повідомляється поряд із частотою успіху цілочисельних найменших квадратів Монте-Карло із зерном (seed) та сигмами плаваючої та фіксованої позиції. Повідомлено як знайдено: за зареєстрованих 12 дБі задача подвійних різниць не формується (поправка 1 перенесла типове значення на 25 дБі після того, як побачили лише лічильники доступності), а за 25 дБі цілочисельну фіксацію НЕ досягнуто — вона поза досяжністю (щонайбільше кілька відсотків), хоча плаваючий розв'язок покращується з дугою. | lunar_infra::phase; lambda | tests/lunar_infra_carrier_phase.rs (поріг Q1: успіх Монте-Карло щонайменше межа бутстрепу мінус три стандартні похибки; Q2: жодного падіння з довжиною дуги понад три стандартні похибки; Q4: LAMBDA дорівнює повному перебору для 200 вибірок розмірності до п'яти; Q3: плаваючий план дорівнює незалежному розв'язку numpy з точністю 1e-9 для коваріацій неоднозначності та позиції, а бутстрепована частка NOT MET при 1e-9, закріплено: вона відрізняється на відносні 1.7e-6, бо нормальна ФР у LAMBDA є наближенням Абрамовіца й Стігана) | Незалежний розв'язок numpy тих самих нормальних рівнянь з експортованих рядків (Q3) і повний перебір цілих чисел (Q4). Жодне вимірювання фази несівної GNSS чи місячної не порівнюється. MODELLED. | MODELLED |
| VM-0c52dc3e | Спільне оцінювання місячної системи відліку: поверхневі станції та орбітальні апарати | Інформація Фішера семипараметричного датума місячної системи відліку від лазерної далекометрії земних станцій до п'яти рефлекторів окремо та із доданими дальностями «орбітальний апарат — поверхнева станція»: інформаційна матриця, ранг, сигми Крамера–Рао, метрика виродженості модуля місячної ідентифікованості та випадкові набори станцій із зерном (seed). Орбіта вважається відомою в місячних осях (її похибка передається сигмою дальності орбітального апарата). | lunar_infra::frame; lunar_datum; lunar_identifiability; lunar_llr_geometry | tests/lunar_infra_studies_3_5.rs (поріг F1: слід CRLB не зростає, а найменше власне значення не спадає зі зв'язками орбітального апарата, у прикладі та у 20 випадкових наборів із зерном (seed); поріг F2: частинні похідні дальності дорівнюють незалежній скінченній різниці numpy longdouble прямої моделі Родрига на 50 геометріях; поріг F3: найменше власне значення зростає щонайменше у 2,0 раза, знайдено близько 111 разів) | Незалежна скінченна різниця numpy прямої моделі (F2). Нічого не порівнюється з реальними розв'язками місячної системи відліку. Множник умовний щодо припущеної відомої орбіти та сигми дальності 1 м. MODELLED. | MODELLED |
| VM-d415284a | Точність прив'язки систем відліку в космосі: суміщені GNSS, VLBI і лазерна далекометрія | Точність за Крамером–Рао міжтехнологічних зсувів перенесення, масштабу та обертання між системами GNSS, VLBI і лазерної далекометрії, коли один космічний апарат несе всі три, з вилученою на кожній епосі позицією апарата та дев'ятьма завадними параметрами локальної прив'язки з апріорною інформацією, перебраними за точністю локальної прив'язки. Коваріації шляхом квадратного кореня (нормальні рівняння втрачають цифри, коли технології майже досконалі). | lunar_infra::tie; fim::crlb_srif | tests/lunar_infra_studies_3_5.rs (поріг T1: сигми зсуву не спадають, коли локальний зв'язок послаблюється; T2: за масштабування сигм технік на 1e-6 сигма зсуву кожної пари лежить у межах 1 % від sqrt(2), помноженого на сигму локального зв'язку, знайдено в межах 3e-7; T3: інформаційна матриця збігається з незалежним складанням numpy до 1e-9). Перший прогін T2 з обертанням нормальних рівнянь не досяг порогу (1,3 % на зв'язку 0,1 м, значення нижче підлоги на 1 м); причина була числовою, і коваріацію перенесено на квадратнокореневий маршрут до повторної оцінки порогу. | Незалежна складена система numpy із позиційними невідомими, вилученими явними доповненнями за Шуром (T3). Жодні дані GRASP, Genesis чи інших місій не порівнюються. MODELLED. | MODELLED |
| VM-adb8542c | Чутливість місячних чисел Лява та лібрації | Інформація Фішера h2, k2, l2 і фізичних амплітуд лібрації від лазерної далекометрії (радіальне та горизонтальне припливне зміщення, обертання рефлектора), стеження за орбітальним апаратом (прискорення k2 степеня 2, проінтегроване вздовж лінії візування, із вилученим трендом), поверхневого гравіметра (гравіметричний множник 1 + h2 - 1,5 k2) і поверхневого годинника (відносна швидкість (1 + k2 - h2) W2/c2, прив'язана до констант місячного часу). Номінальні значення h2 і l2 — точки лінеаризації; дослідження каже, що до чого чутливе, а не які ці числа. | lunar_infra::geodesy; lunar_od::degree2_tide_accel; lunar_time | tests/lunar_infra_studies_3_5.rs (поріг G1: аналітичні частинні похідні збігаються з центральною скінченною різницею кожної прямої моделі до 1e-8; G2: інформація 5x5 збігається з незалежним складанням numpy до 1e-6; G4: амплітуда припливу годинника та її чутливості до k2 і h2 збігаються з незалежним обчисленням до 1e-9; поріг G3 NOT MET у частині сліду, зафіксовано: додавання родини ніколи не знижує найменшого власного значення (28 із 28), але слід псевдообернення зріс у 12 із 28 додавань, бо додана родина підвищила ранг) | Незалежне складання numpy зі скінченними різницями (G2) і обчислення в замкненому вигляді (G4). Чутливість k2 для сімейства орбітальних апаратів — верхня оцінка (стан орбіти тут поглинає лише сталу та тренд). Жодне вимірювання місячного припливу чи лібрації не порівнюється; k2 цитується з Lemoine et al. 2014 як номінальне. MODELLED. | MODELLED |
| VM-555a5784 | Доповнення DOP поверхневими маяками Місяця | Погіршення точності з доповненням маяками для місячного поверхневого користувача: рядки ліній візування видимих супутників і рядки далекометрії видимих поверхневих маяків об'єднано в одну матрицю плану та оцінено через спільне ядро DOP, а отриманий DOP відображається на реалізовану точність 1-сигма У МЕТРАХ через еквівалентну користувацьку похибку дальності кожного маяка, складену як корінь із суми квадратів членів синхронізації годинників, багатопроменевості та зйомки. Видимість маяка — це двовисотний геометричний горизонт Місяця без атмосфери, який не має рефракційного розширення і тому точний, а не наближений. Запускається як вид сценарію lunar-beacon, що повідомляє лише супутники, супутники плюс маяки та більше угруповання як конкурентний шлях до тієї самої геометрії. MEASURED на вбудованій еталонній (golden) геометрії (користувач на -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 м, тож читачеві ніколи не доводиться припускати, що внесли всі три |
lunar_beacon | lunar_beacon::tests (видимість горизонту за замкненою формулою L01; DOP із доповненням маяками проти базового; корінь суми квадратів бюджету похибок; співвідношення DOP-метри); tests/validate_p2_beacon_before_after_table.rs (уся таблиця до/після зафіксована за закоміченим еталонним результатом (golden) із відносною точністю 1e-9); tests/validate_p2_beacon_before_after_independent_dop.rs (та сама геометрія через НЕЗАЛЕЖНИЙ шлях DOP, тож доповнення не перевіряється за ядром, яке його створило); tests/validate_lunar_beacon_anise_visibility_dop.rs::beacon_visibility_and_augmented_dop_match_anise_and_numpy | Арифметика 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 у репозиторії та закріплено на зафіксованому еталонному (golden). ЧОМУ MODELLED: проєкт угруповання, розташування маяків, висоти антен і всі три величини бюджету похибок є ілюстративними вхідними даними, а не розгорнутою зйомкою чи виміряною лінією, тож повідомлені метри — властивість обраного сценарію, а не будь-якої розгорнутої служби. ПРИМІТКА ПРО ПОХОДЖЕННЯ: цю можливість рекламували в README і перевіряли двома тестами валідації, але вона НЕ мала рядка матриці й виду сценарію, тож до неї взагалі не можна було дістатися з прогону. Її заявляли в прозі, вона була відсутня в реєстрі та водночас недосяжна в рушії. Рядок і вид додано разом. 0,30, раунд 2 (попередньо зареєстровано db0eb9ec), заблоковано (залишається MODELLED): видимість ANISE 0.10.6 і DOP numpy на геометрії рядка збігаються (видимі набори точні, включно з 72 випадками поблизу горизонту і 48 поблизу маски; DOP у межах 7.2e-13), але повідомлені метри — це DOP, помножений на ілюстративну похибку дальності 1,158 м як корінь із суми квадратів без оракула; обмеження, яке їх виключило б, чекає рішення власника | MODELLED |
| VM-d5118eb1 | Сліпота цілісності до спільної моди | Точне розбиття паритетного підпростору похибки вимірювання на частину, яку 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 м | lunar_common_mode | lunar_common_mode::tests (8 тестів бібліотеки: розкладання адитивне й відновлює dy; коваріація синфазної складової дає додатний рівень захисту синфазної складової, тоді як коваріація лише парності дає майже нульовий; проєктор анулює range(G)); tests/lunar_common_mode_integrity_reference.rs (розкладання рушія проти незалежного обчислення numpy на байтово ідентичних вхідних даних за закоміченою вибіркою з 366 епох, відносна І абсолютна похибка < 1e-3); tests/lunar_common_mode_parity_numpy_oracle.rs::common_mode_split_matches_numpy_lstsq_on_parity_bearing_inputs (1464 випадки з парністю на геометрії з 8 супутників і підмножині з 6 супутників для обох реальних пар між ефемеридами: blind_dx, залишок і норми в межах 1e-12 від |dy|, найгірше 1.06e-14) | 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), а не поріг згоди. Перевірене (Validated) твердження, як дозволяє 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) | VALIDATED |
| VM-2e12093e | Рівень захисту від спільної моди та загальна огортка цілісності | cmpl_horizontal обмежує k-сигма горизонтальну похибку положення, яку вносить сліпий синфазний клас, формуючи blind_position_covariance = SCovS^T і проєктуючи її в ENU; integrity_envelope повідомляє hpl_total = hpl_araim + cmpl. Різниця, заради якої існує ця пара: тест ЗАЛИШКІВ RAIM/ARAIM доведено сліпий до похибок із range(G), а РІВЕНЬ ЗАХИСТУ ARAIM — ні: його безвідмовний доданок уже обмежує їх до URA постачальника плюс номінального зміщення. Тому CMPL — це лише міжпостачальницький НАДЛИШОК, який URA/ISM окремого постачальника не перекриває, а сума — консервативна межа за нерівністю трикутника, а не RSS, чинна лише там, де цей надлишок ще не міститься в URA. | lunar_common_mode | lunar_common_mode::tests (common_mode_covariance_gives_positive_cmpl, parity_only_covariance_gives_near_zero_cmpl, envelope_sums_the_two_classes, state_map_matches_split) | Аналітична алгебра проєктора, перевірена сама проти себе: коваріація, обмежена в range(G), має давати додатний CMPL, коваріація, обмежена в просторі паритету, — приблизно нуль, а огортка має додавати два ортогональні у просторі вимірювань внески. Коваріація спільної моди, геометрія угруповання та k — репрезентативні вхідні дані Modelled, НЕ сертифікований бюджет, і не стверджується, що межа за трикутником щільна. ПРИМІТКА ПРО ПОХОДЖЕННЯ: cmpl_horizontal, blind_position_covariance та integrity_envelope є публічними й постачаються, і їхні модульні тести вже цитував рядок про сліпоту спільної моди, але саме ТВЕРДЖЕННЯ ПРО ОГОРТКУ не мало рядка — тож єдине застереження, що тримає його чесним, а саме що сума є межею за трикутником, а не RSS, не було викладене ніде в реєстрі. Рядок реєструє твердження та застереження разом. | MODELLED |
| VM-6fe5eca9 | Спільне місячне багатотехнологічне визначення орбіти + годинник | Пакетне злиття VLBI + місячно-локальної дальності + дальності між супутниками для відновлення позицій станцій і угруповання та годинників | lunar_combination (problem, model, estimate, formal_covariance); batch_ls (gauss_newton_qr) | lunar_combination::tests (відновлює змодельовану істину; РСДБ відновлює 3-D спостережуваність станції; детерміновано); tests/lunar_joint_multi_technique_od_reference.rs (6 геометрій × 16 параметрів, по 31 спостережень, проти Левенберга–Марквардта з Orekit 12,2 / Hipparchus на ідентичних спостереженнях; відновлений стан найгірше |Δ| 1.4e-8 м); tests/lunar_joint_od_numpy_oracle.rs::joint_solve_linear_algebra_matches_numpy (шість мереж, включно з однією без РСДБ: кроки Гаусса–Ньютона в межах 4.3e-11, формальні сигми в межах 1.9e-11, похибки станцій рівні; на вхідних даних портативної математики 0,36 — 2.4e-11 і 1.3e-11 на вхідних даних 0,30) | P2: numpy 2.4.6 (numpy.linalg.lstsq з LAPACK gelsd, numpy.linalg.inv; BSD-3) перераховує кожен крок Гауса–Ньютона, збіжний розв'язок зважених найменших квадратів, формальні сигми та похибку станції на зафіксованих якобіанах і спостереженнях шести змодельованих мереж, попередньо зареєстровано (5094bc31) за max(1e-8, 100 kappa eps) відносно. Перший запуск не пройшов мережу без VLBI (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. Перевірене твердження — лінійна алгебра розв'язку злиття на цих вхідних даних, а не фізичні величини змодельованої мережі чи її моделей спостережень: рядок затримки місячної геодезичної VLBI залишається 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 м з VLBI і 2183,119 -> 2183,558 м без (розв'язок QR). Перегляд 0,36 (STUDIO-15, переносна математика; docs/revisions/STUDIO15-portable-math-rebaseline.md): 3,541350 -> 3,536885 м з VLBI і 2183,558 -> 2184,021 м без, а розв'язок без VLBI зупиняється після 5 ітерацій, а не 2 (зупинка, обмежена округленням, на погано обумовленій мережі); попередньо зареєстроване порівняння перезапущено на повторно експортованих вхідних даних за незмінного порога (numpy 2.4.6, усі шість мереж проходять) | VALIDATED |
| VM-f0e89ca3 | Інформація Фішера та спостережуваність за Крамером–Рао | Інформація Фішера M=HᵀWH, нижня межа Крамера–Рао, ранг спостережуваності / нуль-простір дефекту датуму (псевдообернена матриця Мура–Пенроуза) та скаляри D/A/E/T-оптимального планування експерименту, отримані симетричним розв'язувачем власних значень Якобі | fim | tests/fim_observability_reference.rs (власні значення проти numpy.linalg.eigh; коваріація CRLB проти σ²(XᵀX)⁻¹ через numpy.linalg.inv; GNSS GDOP/PDOP/HDOP/VDOP/TDOP з інформаційної матриці проти numpy — усе збігається з точністю 1e-9); fim::tests (власний розв'язувач Якобі проти спектрів у замкненій формі; CRLB проти замкнених форм Kay 1993 — DC у WGN σ²/N і лінійна підгонка σ²(XᵀX)⁻¹; досягнення CRLB методом Монте-Карло; тотожність Мура–Пенроуза MM⁺M=M; нульовий простір дефекту датума) | NumPy 2.4.1 (numpy.linalg.eigh / .inv; BSD-3-Clause, на основі LAPACK) — незалежний сторонній еталон, що обчислює ті самі однозначно визначені власні значення, коваріацію Крамера–Рао σ²(XᵀX)⁻¹ і чинники геометричного погіршення точності GNSS іншим алгоритмом («розділяй і володарюй» LAPACK + LU-розклад), ніж циклічні розгортки Якобі та спектральна псевдообернена матриця Kshana; збіг до 1e-9. Той самий клас зовнішніх бібліотек уже перевіряє рушій DOP (за gnss_lib_py) і ядра χ²/erf (за SciPy). Додатково звірено із замкненими формулами CRLB за Кеєм (1993) та з досягненням CRLB у Монте-Карло (внутрішньо) | VALIDATED |
| VM-e192c5ac | Спостережуваність абсолютної місячної станції (дефект датуму) | Спостережуваність за інформацією Фішера для спільного місячного розв'язку: без земних базових ліній абсолютний датум системи відліку лежить у нуль-просторі HᵀWH (положення станції не спостерігається); ≥3 базових ліній відновлюють повний ранг і обмежують похибку станції за Крамером–Рао, яку оцінювач досягає | lunar_combination (lunar_observability) + fim | lunar_combination::tests (дефіцит рангу без земних базових ліній; три базові лінії відновлюють повний ранг — поріг 3 станцій за рангом інформації, а не за похибкою розв'язку; CRLB станції досягається оцінювачем з ефективністю 0,98; CRLB монотонно звужується зі збільшенням базових ліній); tests/lunar_observability_numpy_oracle.rs::lunar_observability_matches_numpy_on_the_committed_jacobians | Аналітична структура дефекту датуму — неспостережувана мода абсолютної системи відліку лежить у нуль-просторі інформації Фішера (замкнена форма), поріг рангу збігається з опублікованим обґрунтуванням схеми з 3 станцій, а оцінювач досягає отриманої CRLB у Монте-Карло. Сама місячна геометрія є репрезентативною мережею (не льотними ефемеридами), тому рядок залишається MODELLED; базовий рушій FIM/CRLB окремо перевіряється за замкненими формулами Кея (1993). 0,30 раунд 2 (попередньо зареєстровано fab02df9), заблоковано (залишається MODELLED): NumPy/SciPy заново обчислюють ранг і дефект за вказаного порогу 1e-9, частку осей станції в нуль-просторі (в межах 8.4e-10) і CRLB станції (в межах 1.2e-10) на 17 збережених конфігураціях, згенерованих Kshana (P2). Не підвищено: твердження, що оцінювач досягає межі (ефективність Монте-Карло близько 0,98), не має оракула, а визначення обсягу, яке залишило б його MODELLED, чекає на рішення власника | MODELLED |
| VM-0829ad8b | Реалізація місячної системи відліку | 7-параметрична підгонка датуму Гельмерта + прив'язка орієнтації ICRF за мережею точок | lunar_frame_realise | lunar_frame_realise::tests (відновлює введене перетворення Гельмерта); tests/lunar_reference_frame_realisation_reference.rs (14 випадків проти незалежного розв'язувача Умеями-SVD у замкненій формі; найгірше |Δ| зсув 2.0e-5 м, обертання 5.3e-12 рад, масштаб 9.3e-2 ppb, післяпідгоночна RMS 6.1e-9 м) | Незалежний замкнений зважений розв'язувач перетворення подібності Умеями (Горна) (на основі SVD у numpy/scipy; Umeyama 1991 IEEE TPAMI, Horn 1987 JOSA A) — інший алгоритм, ніж ітеративна підгонка Гауса–Ньютона в kshana, що досягає того самого однозначно визначеного зваженого оптимуму методу найменших квадратів на побайтово ідентичних мережах точок | VALIDATED |
| VM-b8cf831d | Об'єм навігаційного обслуговування на Місяці | Місячні DOP / покриття / доступність класу Moonlight та узагальнені місячні рівні захисту ARAIM в об'ємі обслуговування | lunar_service | lunar_service::tests (DOP повторно використовує перевірене ядро; PL зводиться до випадку південного полюса); tests/lunar_navigation_service_volume_reference.rs (положення MCI кожного супутника з точністю <1e-3 м + ТОЧНА множина видимих супутників на всьому прогоні за сіткою×епохами проти ANISE 0.10.2) | Незалежний сторонній еталон: кеплерівський пропагатор ANISE 0.10.2 astro::Orbit (Nyx Space, MPL-2.0) — екіноктиальний двотільний кодовий шлях, відмінний від Кеплера Ньютона–Рафсона в kshana; положення кожного супутника в MCI збігається з точністю до <1e-3 м, а похідна кількість/набір видимих супутників збігається точно в кожній точці сітки. Ядро DOP перевірене за gnss_lib_py; цілісність використовує опубліковані параметри LunaNet/LCNS | VALIDATED |
| VM-82bb02b3 | Генерація розширювальних кодів 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 і заповненого з PDF на сервері NASA, і ніколи не розповсюджується | lunar_afs::codes, lunar_afs::lsis, lunar_afs::params (індекси IS-GPS-800J) | lunar_afs::codes::tests (регістри максимальної довжини, баланс Лежандра, круговий обхід затримки G2, композиція рівнів); tests/lunar_afs_codes_lsis_reference.rs::afs_codes_finding_one_misprinted_table_cell (без кешу LSIS: чотири цитовані числа фіксують знахідку; з ним: 2 937 232 чипів і бітів проти файлів додатка 3 LSIS, надруковані перші/останні 24 чипів, таблиці Лежандра D-1 і E-1 та ініціалізації G2 дають рівно один відмінний елемент — комірку «останні 24 чипів» PRN 147 у таблиці E-5, яка дублює комірку PRN 151, тоді як файл додатка 3 збігається з генератором); суворий попередньо зареєстрований тест afs_codes_match_lsis_v1_tables_and_annex3_bit_exact ігнорується разом із цією прогалиною | Еталон: значення, які LSIS V1.0 друкує для перевірки (таблиці C-1–C-5, D-1–D-6, E-1–E-6), та його електронні файли кодів додатка 3 за критерієм нульових розбіжностей, зафіксованим до порівняння. Критерій не виконано через одну надруковану комірку, внутрішньо суперечливу з власним файлом додатка 3 до стандарту, тому рядок залишається MODELLED; підготовлено чернетку примітки про помилку. Ті самі чипи також збігаються з чипами LANS-AFS-SIM (рядок «Відтворення базової смуги LunaNet AFS проти незалежного генератора за його станом каналу») | MODELLED |
| VM-036ec4a7 | Відтворення базової смуги 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-бітових відліків | lunar_afs::waveform::render, lunar_afs::codes, lunar_afs::frame | tests/lunar_afs_waveform_lans_afs_sim_oracle.rs::afs_chips_match_lans_afs_sim (первинні коди AFS-Q (210) завжди; із KSHANA_LANS_RUN і кешем LSIS усі 630 кодів, жодної розбіжності чипів); tests/lunar_afs_waveform_lans_afs_sim_oracle.rs::afs_frames_and_baseband_match_lans_afs_sim (з кешем LSIS: 3 кадри, жодної розбіжності символів; 24 закомічених вікон по 2 мс, |rho| = 0,999990); tests/lunar_afs_waveform_lans_afs_sim_oracle.rs::afs_full_run_matches_lans_afs_sim (залежить від наявності даних: увесь прогін 23,9 с, |rho| = 0,999990, найгірший блок 2 мс 0,999948, фаза 8e-9 рад) | Бібліотека: 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) і без нього пропускається з повідомленням | VALIDATED |
| VM-f847c909 | Канальне кодування кадру LunaNet AFS, FID 0 (LSIS V1.0) | Кадр FID 0 з 12 с і 6000 символів за LSIS V1.0: 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]] | lunar_afs::frame, lunar_afs::ldpc, lunar_afs::lsis | tests/lunar_afs_waveform_lans_afs_sim_oracle.rs::afs_frames_and_baseband_match_lans_afs_sim (з кешем LSIS: 3 кадри, які передає LANS-AFS-SIM, побудовані з тих самих FID, TOI і бітів даних: розбіжностей нуль із 18 000 символів); tests/lunar_afs_frame_coding_oracle.rs::bch_worked_example_and_crc24_check_value_are_bit_exact (LSIS, рисунок 8: 0x045 -> 0x229f61dbb84a0; контрольне значення CRC-24/LTE-A 0xCDE703; виконується завжди); tests/lunar_afs_frame_coding_oracle.rs::ldpc_codewords_satisfy_the_printed_parity_check_matrices (100 кодових слів, жодної невиконаної перевірки надрукованої H); tests/lunar_afs_frame_coding_oracle.rs::decoder_from_parity_check_matrices_recovers_every_frame (декодер лише з H, без шуму та за 3 dB Es/N0, і 10 повних кадрів); lunar_afs::ldpc::tests::printed_b_inverse_inverts_printed_b; lunar_afs::frame::tests | Бібліотека: 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) і без нього пропускається з повідомленням | VALIDATED |
| VM-8d800158 | Замкнена декодованість LunaNet AFS незалежним приймачем (LSIS V1.0) | Запис AFS від Kshana, захоплений, відстежений і декодований незалежним програмним приймачем та порівняний із власними істинними мітками запису. Це доводить лише відповідність стандарту та узгодженість міток; це не твердження про фізику каналу, поширення, прийняту потужність чи бюджети лінії, значення яких у записі є обраними вхідними даними | lunar_afs::waveform (запис і мітки істини), xval/lunar-afs/run_pocketsdr.sh | tests/lunar_afs_decodability_pocketsdr_v3_oracle.rs::third_run_finding_c1_c2_hold_g0_is_receiver_nondeterminism (третя попередня реєстрація: 2 вузли, супроводжувано 4 канали, найгірша похибка Доплера 0,57 Гц, найгірша похибка зсуву коду 0,008 чипа, усі 6 кадрів декодовано з правильним TOI через перехід 99 -> 0 і з відповідним підкадром 2; G0 не досягнуто у письмовому вигляді через власну міжпрогонову мінливість приймача в його записах захоплення); tests/lunar_afs_decodability_pocketsdr_4bit_oracle.rs::decodability_finding_five_violations (друге: 5 порушень); tests/lunar_afs_decodability_pocketsdr_oracle.rs::first_run_finding_no_acquisition_outside_the_receivers_4_bit_range (перше: недійсне); суворі тести трьох файлів ігноруються разом із їхніми прогалинами | Бібліотека: PocketSDR-AFS (T. Ebinuma за PocketSDR T. Такасу 0,13, BSD-2-Clause, коміт 5b23809f30d68518b7fad7a564fd0fac57cc497d, збірка для S-діапазону, копія лише з друком рівня журналу), за критеріями, зафіксованими до кожного прогону. Третє попередньо зареєстроване порівняння повністю виконує пороги декодування та відстеження C1 і C2, але не свою перевірку G0 у вказаному вигляді (два прогони немодифікованого приймача відрізняються в тих самих чотирьох записах захоплення), а друге не дотягнуло на 5 порушень, тому рядок залишається MODELLED. LANS-AFS-SIM і PocketSDR-AFS мають спільного автора і рахуються як одна незалежна реалізація; перевірки надрукованих векторів у рядку кадрового кодування застерігають від спільного хибного прочитання | MODELLED |
| VM-2d449120 | Міжгенераторна відповідність GPS L1 C/A | Розширювальні коди GPS L1 C/A (sdr::CaCode) і підкадри LNAV 1–3 (gps_lnav: квантування полів за IS-GPS-200 зі значенням pi зі специфікації, упаковка в додатковому коді, слова TLM і HOW, парність за таблицею 20-XIV з інверсією D29*/D30*, біти розв'язання парності слів 2 і 10), порівняні побітово з gps-sdr-sim на його вбудованому brdc0010.22n (32 супутники) | gps_lnav, sdr | tests/gps_l1ca_gpssdrsim_cross_generator.rs::gps_sdr_sim_truncates_where_the_broadcast_integer_needs_rounding (зафіксована знахідка); tests/gps_l1ca_gpssdrsim_cross_generator.rs::ca_codes_lnav_fields_and_parity_match_gps_sdr_sim_bit_exactly (суворий, ігнорується разом із прогалиною); gps_lnav::tests | gps-sdr-sim (MIT, коміт 28ca29a6, запущений як окрема програма через збережений harness), попередньо зареєстровано 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: зареєстрованим порогом була кон'юнкція | MODELLED |
| VM-a0dce0aa | Геометрія сигналу сцени GNSS IQ проти незалежного генератора базової смуги | Істина для кожного супутника від генератора сцен IQ для сцени GPS L1 C/A з ефемеридами трансляції (iq::scene: SatGeometry з ефемеридами трансляції, згенерована в записи істини TruthRecord): які супутники над горизонтом, псевдодальність, фаза коду на першому відліку, доплерівська частота несівної та кути огляду для нерухомого приймача, порівняні зі станом каналу, з якого gps-sdr-sim будує перший блок власного виходу I/Q, для тих самих ефемерид, приймача й часу початку (іоносфера вимкнена з обох боків) | iq::scene (Scene, SatGeometry, TruthRecord) | tests/iq_gpssdrsim_cross_generator.rs::scene_geometry_matches_gps_sdr_sim_channels (11 каналів: найгірша псевдодальність 1.6e-3 м проти 0,05 м, фаза коду 5.5e-6 чипа проти 2e-4, Доплер 7.4e-5 Гц проти 0,02 Гц, кути спостереження 4e-9 градуса проти 1e-4, множина видимих ідентична); tests/iq_gpssdrsim_cross_generator.rs::harness_reproduces_the_gps_sdr_sim_program_channel_listing (оракульний каркас точно відтворює власний надрукований перелік каналів програми) | gps-sdr-sim (T. Ebinuma, MIT, коміт 28ca29a6), незалежний генератор базової смуги GPS L1 C/A, зібраний власним Makefile і запущений як окрема програма на своєму вбудованому brdc0010.22n у прикладі розташування з тексту його використання (scripts/gen_iq_gpssdrsim_ref.sh); збережений harness, зв'язаний з тією самою збіркою, друкує стан каналу (computeRange, computeCodePhase) за першим блоком програми. Пороги зафіксовано до запуску генератора (попередньо зареєстровано 7777da53). Обсяг: геометрія GPS L1 C/A для нерухомого приймача без іоносфери, тропосфери чи годинника приймача; моделі каналу, шум і навігаційні дані сцени не входять до цього рядка | VALIDATED |
| VM-3ed8a076 | Захоплення GNSS IQ на незалежно згенерованих відліках I/Q | iq::acq::acquire (паралельний FFT-пошук фази коду з порогом квадратичного закону Marcum-Q) з реплікою GpsL1Ca на 20 мс власного 8-бітового виходу I/Q gps-sdr-sim, декодованого декодером відліків iq::io (ci8, 2,6 МГц, 11 супутників, без шуму): кожен PRN від 1 до 32 шукається у двох вікнах по 10 мс, результат порівняно з фазою коду та Доплером, які модулював gps-sdr-sim | iq::acq (acquire, AcqConfig); iq::io (decode_samples); iq::scene (GpsL1Ca) | tests/iq_gpssdrsim_cross_generator.rs::acquisition_threshold_is_crossed_on_gps_sdr_sim_noise_free_samples (зафіксована знахідка); tests/iq_gpssdrsim_cross_generator.rs::acquisition_finds_gps_sdr_sim_satellites_in_its_samples (суворий, ігнорується разом із прогалиною) | Відліки 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: зареєстрованим порогом була кон'юнкція | MODELLED |
| VM-59bb0091 | Монітори IQ, оцінені в кампаніях лабораторного відтворення: виявлення, пропуски, хибні тривоги та замкнені оцінки хибних тривог | iq::campaign::detect і виконавець кампаній: необов'язкова таблиця [monitors] запускає монітори IQ на кожній комірці за єдиний прохід виконавця. Монітори потужності та спектра бачать відліки після кожного ланцюга входу; монітори C/N0, SQM і захоплення бачать оновлення петель кожного відстежуваного каналу. Кожну тривогу оцінюють за вказаними подіями: виявлено чи пропущено для кожної (подія, вид тривоги, канал), час до виявлення та хибні тривоги поза подіями за їхню експозицію. Для кожного тесту вказано замкнену оцінку хибної тривоги: потужність на блок (точний гамма-хвіст), спектральний надлишок на блок (наближення), ексцес (односторонній гауссівський), імпульси (біноміальна межа), SQM на усереднене оновлення (2Q(k) = Q(1/2, k^2/2), нове) та ARL0 CUSUM для C/N0 (Зігмунд). Без таблиці комірки, ключі та дайджести не змінюються. Жодна форма хвилі завад не синтезується | iq::campaign (detect, runner, spec); iq::monitor (stats::gaussian_two_sided_pfa, sqm) | tests/iq_campaign_monitors.rs: m1_power_test_false_alarm_rate_matches_the_closed_form (73 із 5900 блоків проти 99 % біноміального інтервалу [40, 80] для P_fa 0,01), m2_sqm_false_alarm_fraction_is_within_a_factor_of_2_of_2q_k (delta 0,0160, відношення 0,0131 проти 0,01), m4_cn0_false_alarms_stay_within_the_poisson_bound_of_arl0 (0 проти 0), the_monitors_table_parses_and_validates; m3_every_attenuation_is_detected_within_twice_the_arl1 (суворий, ігнорується разом із прогалиною); тести iq::campaign::detect; тести iq::monitor::stats (gaussian_two_sided_tail_matches_known_values); tests/iq_campaign.rs (закріплені дайджести без таблиці не змінюються) | Власні замкнені форми моніторів на власних сценах GPS L1 C/A від Kshana (шум і легітимні сигнали; події послаблення власних сигналів супутників), за порогами, попередньо зареєстрованими в 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 с, тому межа за кількістю відліків менша за один відлік. Лише внутрішня узгодженість: жоден реальний приймач чи записані завади не перевіряються | MODELLED |
| VM-6254a75d | ROC виявлення моніторів IQ за оціненою кампанією лабораторного відтворення | iq::campaign::detect (windows, roc) та iq::campaign::report::rocs: кожна комірка кампанії з моніторами зберігає для кожного виду тривоги та каналу максимум власної тестової статистики монітора за кожне вказане вікно події (позитивне) і за розбитими на плитки вікнами roc_window_s поза подіями (негативне). Статистики — це відхилення потужності блока, надлишок PSD, ексцес z, SQM |z| усередненої метрики та CUSUM для C/N0. Звіт об'єднує їх за видом в емпіричну ROC на рівні вікон з її AUC і робочою точкою за налаштованого порогу, записану як roc.json (kshana.campaign-roc/1) і розділ «ROC виявлення» в report.html. Кампанія без моніторів не записує жодного з них | iq::campaign (detect, report, runner); iq::monitor::spectral (kurtosis_reference) | tests/iq_campaign_roc.rs: r2_with_nothing_to_detect_the_roc_sits_at_chance (AUC cn0_drop 0,500, sqm_delta 0,566, power_drop 0,639 на заявлених подіях, що нічого не ослаблюють); r1_the_cn0_drop_roc_separates_6_db_attenuations (суворий, ігнорується разом із прогалиною); тести iq::campaign::detect (the_roc_of_separated_and_of_identical_samples, windows_tile_the_time_outside_the_events) | Синтетичні кампанії на власних сценах GPS L1 C/A від Kshana (послаблення власних сигналів супутників), за порогами, попередньо зареєстрованими в docs/design/DETECTION-ROC.md (b47e358d). РЕЗУЛЬТАТ: R2 виконано (рівень випадковості, коли виявляти нічого). R1 NOT MET: AUC для cn0_drop 0,7855 проти 0,95, оскільки кожне негативне вікно після події успадковує спад CUSUM від виявлення (усі 18 післяподійних негативних сягають 81 або більше; усі 18 передподійних залишаються на 0). Лише внутрішня узгодженість: жоден реальний приймач чи записані завади не перевіряються | MODELLED |
| VM-c9318c63 | Калібрування моделей C/N0 і захоплення відкритого приймача за результатами кампаній IQ із вказаною похибкою прогнозу | iq::labfit (campaign, cn0, iqfit, iqreport) і [input] campaign у kshana iq labfit, Python kshana.iq_labfit та інструмент MCP labfit (папки кампаній лише всередині його робочого каталогу): зчитує вихідну папку kshana iq campaign за її DIGEST і групує оцінені комірки в одиниці підгонки (сигнал 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, із часами втрати та повторного захоплення. Зерновий кластерний бутстреп за записами (1000 реплік) дає процентильні інтервали; 90 % інтервали прогнозу походять із вибірок залишків; відкладені набори з виключенням одного запису розділяються на інтерполяцію та екстраполяцію; попередньо зареєстрована таблиця [validation] хешується, і кожен поріг оцінюється як PASS/FAIL. Звіт kshana.labfit-iq/1 у JSON, CSV і згенерованому Markdown з блоком одиниць. Лише синтетичні дані (без стороннього запису, без форми хвилі джамера). Шлях labfit за журналом приймача не змінюється |
iq::labfit (campaign, cn0, iqfit, iqreport, schema, mod); iq::cli::labfit | tests/iq_labfit_campaign.rs: bar_c_holdout_prediction_intervals_cover_between_80_and_98_percent (покриття PI90 0,891 на 558 бінах, 0,900 на 10 подіях часу до втрати за кожної моделі захоплення), the_report_carries_its_inputs_censoring_validation_and_labels (входи, цензурування, хеш і вердикти [validation], аудит блоку одиниць), the_cluster_bootstrap_reproduces_from_the_campaign_and_seed, a_validation_mode_fit_refuses_to_start_without_its_table; bar_a_prime_delta_eff_is_recovered_and_q_is_stated_not_fitted, bar_d_closed_form_threshold_matches_the_direct_estimate_within_1_db і bar_b_prime_ci_subset (суворі, ігноруються разом із прогалиною); bar_b_prime_full_set_of_50_campaigns (ігнорується, запускається перед випуском); тести iq::labfit::cn0 (точна виродженість Q-delta, відновлення delta за заявленого Q, обернення замкненого порогу); тести iq::labfit::iqfit (умови моделі захоплення точно відтворюють модель C/N0); tests/iq_labfit_followup.rs (продовження, зареєстроване в 1e532f84: s1_delta_eff_on_the_stepped_campaign MET, s2_d_as_written_on_the_stepped_campaign із підтвердженням записаного NOT MET, r1_dwell_corrected_d_on_the_fresh_ramp_campaign MET, у release) | Синтетичне відновлення параметрів на власних сценах GPS L1 C/A від Kshana з відомим профілем 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 дБ); початкові застереження щодо Q у (a) і (b) 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 за синтетичними даними | MODELLED |
| VM-b6918acf | Кодування GPS LNAV, декодоване незалежною бібліотекою приймача | Підкадри LNAV 1–3 від Kshana (gps_lnav::encode_subframes) для 32 ефемерид brdc0010.22n, подані в decode_word і decode_frame з RTKLIB: парність кожного слова, декодування підкадрів із узгодженим випуском даних і кожен декодований параметр проти цілого числа Kshana та проти вхідного значення | gps_lnav | tests/gps_lnav_rtklib_decode_oracle.rs::rtklib_recovers_every_integer_and_differs_only_by_its_decimal_two_to_the_minus_43 (зафіксована знахідка); tests/gps_lnav_rtklib_decode_oracle.rs::kshana_lnav_subframes_decode_in_rtklib_to_the_broadcast_parameters (суворий, ігнорується разом із прогалиною) | 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 був надто жорстким для власної сталої оракула | MODELLED |
| VM-6649987c | Кодування навігаційного повідомлення GPS LNAV | Підкадри LNAV 1–3 за IS-GPS-200 (gps_lnav::encode_subframes: квантування до найближчого кожного параметра годинника й орбіти за масштабними множниками специфікації та значенням pi, упаковка в додатковому коді, слова TLM і HOW, парність за таблицею 20-XIV з інверсією D29*/D30*, біти розв'язання парності слів 2 і 10), повідомлення, яке передає генератор сигналу GPS L1 C/A | gps_lnav | tests/gps_lnav_rtklib_integer_oracle.rs::kshana_lnav_integers_decode_in_rtklib_from_an_unseen_broadcast_file (32 супутники широкомовного файлу IGS від 2 березня 2025: 960 із 960 слів проходять парність RTKLIB, 96 із 96 підкадрів декодуються, 608 із 608 декодованих широкомовних цілих дорівнюють цілим Kshana, кожен вхід у межах половини кванта, тиждень і часи точні); gps_lnav::tests | 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 для файлу, тож порядок «зареєстровано до отримання файлу» показати неможливо; свіжа реєстрація, надіслана до отримання небаченого файлу трансляції, це б вирішила | MODELLED |
| VM-7151fa5e | Захоплення та оцінка C/N0 на реальних місячних IQ | Паралельний пошук фази коду (acquisition::pcps_acquire: портативний FFT, когерентне згортання, некогерентне накопичення, поріг хі-квадрат для ймовірності хибної тривоги в усьому пошуку), уточнення, відкритопетльова миттєва кореляція з кодовим Доплером та оцінювач C/N0 M2M4, запущені на 4-бітових пакетах IQ LuGRE L1, прочитаних через realdata::ion_sdr | acquisition, portable_math, realdata::ion_sdr, realdata::lugre | tests/lugre_acquisition_gnss_sdr_oracle.rs::finding_dc_artefacts_and_no_contemporaneous_flight_cn0 (зафіксована знахідка, залежить від даних); tests/lugre_acquisition_gnss_sdr_oracle.rs::acquisition_and_relative_cn0_on_lugre_iq_match_gnss_sdr_and_the_flight_receiver (суворий, ігнорується разом із прогалиною); acquisition::tests; realdata::ion_sdr::tests; realdata::lugre::tests | GNSS-SDR 0.0.19 (GPL-3.0, окрема програма, закріплена конфігурація) на дев'яти пакетах L1 не на поверхні та RAW 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 | MODELLED |
| VM-0823eb57 | Захоплення на реальних місячних IQ проти прогнозованого за орбітою Доплера (рішення за потужністю відліків) | acquisition::pcps_acquire з рішенням за потужністю відліків на дев'яти пакетах LuGRE L1 не на поверхні з рівнями mid-rise; різниці Доплера між захопленими супутниками порівняно з різницями, прогнозованими за остаточними орбітами ESA та реконструйованою Firefly траєкторією Blue Ghost | acquisition, realdata::ion_sdr | tests/lugre_acquisition_predicted_doppler_oracle.rs::noise_alone_crosses_the_sample_power_threshold_on_lugre_iq (зафіксована знахідка, залежить від даних); tests/lugre_acquisition_predicted_doppler_oracle.rs::acquired_doppler_differences_on_lugre_iq_match_the_orbit_prediction (суворий, ігнорується разом із прогалиною) | Прогнозований Доплер за остаточними орбітами 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 | MODELLED |
| VM-547ca1d6 | Захоплення на реальних місячних IQ, оцінене за прогнозованим за орбітою Доплером | acquisition::pcps_acquire з рішенням за усередненням комірок (пік над середньою коміркою сітки, стійке до смуго-обмеженого шуму) на дев'яти пакетах LuGRE L1 не на поверхні з рівнями mid-rise; різниці Доплера між захопленими супутниками порівняно з різницями, прогнозованими за остаточними орбітами ESA та реконструйованою Firefly траєкторією Blue Ghost | acquisition, realdata::ion_sdr | tests/lugre_acquisition_cell_average_doppler_oracle.rs::strong_pairs_match_the_prediction_only_with_the_doppler_sign_reversed (зафіксована знахідка, залежить від даних); tests/lugre_acquisition_cell_average_doppler_oracle.rs::cell_average_acquisitions_on_lugre_iq_match_the_orbit_predicted_doppler (суворий, ігнорується разом із прогалиною) | Прогнозований Доплер за остаточними орбітами 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 | MODELLED |
| VM-2a6bb218 | Захоплення на відкладених реальних місячних IQ проти прогнозованого за орбітою Доплера | acquisition::pcps_acquire (рішення за усередненням комірок, ймовірність хибної тривоги 1e-7) з refine_doppler_coherent на пакетах LuGRE L1, записаних на місячній поверхні (I у старшому півбайті, рівні mid-rise); різниці Доплера між захопленими супутниками порівняно з різницями, прогнозованими за остаточними орбітами ESA та ядром місця посадки Firefly | acquisition, realdata::ion_sdr, realdata::lugre | tests/lugre_surface_acquisition_doppler_oracle.rs::each_surface_acquisition_is_a_single_predicted_visible_satellite (зафіксована знахідка, залежить від даних); tests/lugre_surface_acquisition_doppler_oracle.rs::surface_acquisitions_match_the_orbit_predicted_doppler (суворий, ігнорується разом із прогалиною) | Прогнозований Доплер за остаточними орбітами ESA/ESOC та ядром місця посадки Firefly NAIF CLPS (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 виключено до прогону, бо його метадані називають файл відліків, якого набір даних не постачає | MODELLED |
| VM-c771c187 | Спільна геометрія місячного зв'язку та навігації | Топоцентричні кути огляду кожного супутника (азимут за годинниковою стрілкою від півночі, висота) і похила дальність на названому селенографічному місці за заданого положення супутника в зв'язаній з Місяцем системі відліку цього місця (перевірене твердження). Точність віддалеміровання сигналу в космосі подано як параметр сценарію, щоб розгортка об'єму обслуговування давала ВИМОГУ до віддалеміровання, а не результат «пройдено/не пройдено» за одним фіксованим сигма; цей параметр є проєктним вхідним значенням поза перевіреним твердженням | lunar_service | lunar_service::tests (топоцентричні величини проти вручну обчисленої геометрії: над головою, точно на північ/схід/захід, антиподи та виродкований полярний напрямок на схід; експортований прапорець видимості узгоджується з незалежним фільтром видимості на повному прогоні 6 год; експорт типово вимкнений і доведено нічого іншого не змінює; рівні захисту точно лінійні за відкритою сигмою, тоді як геометрія під ними не зачіпається); tests/lunar_service_geometry_oracle.rs::look_angles_match_anise_at_selenographic_sites (768 вибірок на 8 майданчиках, 12 епохах і 8 супутниках проти ANISE 0.10.2: азимут і висота в межах 1e-6 град, дальність і положення майданчика в межах 1 мм; найгірше 2.2e-12 град, 2.1e-13 град, 5.6e-9 м) | 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 системи відліку, зв'язаної з Місяцем, за середнім обертанням, та параметр точності віддалеміровання виходять за його межі; модульні тести замкненої геометрії залишаються допоміжними перевірками | VALIDATED |
| VM-2120aea3 | Місячний диференційний PNT | Диференціальна опорна станція класу NovaMoon: скасування синфазної складової + залишок, що зростає з базовою лінією + рівні захисту DGNSS | lunar_dpnt | lunar_dpnt::tests (синфазна складова годинника скасовується точно; залишок зростає з базовою лінією; повторно використовує SBAS PL; кількість супутників дотримується до межі конструктора 24, тож більше орбітальне угруповання не може непомітно повернути менше); tests/lunar_differential_pnt_reference.rs (залишок одинарної різниці + розв'язок положення WLS проти lsq() з RTKLIB, скомпільованого з вихідного коду C) | Тотожність диференціального скасування похибки + повторне використання механізму PL SBAS за DO-229E; розв'язок одинарних різниць + WLS додатково звірено з lsq()/matinv() із RTKLIB (Takasu, BSD-2-Clause, скомпільований C) — незалежний код розв'язувача, але та сама алгебра різниць напрямків на супутник першого порядку, тож усе ще InternalConsistency | MODELLED |
| VM-a157b399 | Експорт для місячної взаємодії | Експорт місячної системи відліку + часу + ефемерид, узгоджений із LunaNet/IOAG (CCSDS OEM + KIF), із відповідністю при круговому проході | lunar_interop | lunar_interop::tests (OEM містить місячні REF_FRAME/TIME_SYSTEM; метадані часу проходять круговий обхід; оболонка KIF); tests/lunar_interoperability_export_reference.rs (місячний OEM, випущений kshana, повторно розібраний незалежною бібліотекою Python oem: токени REF_FRAME/TIME_SYSTEM/CENTER + стан на кожну епоху з точністю формату; пошкоджений експорт відхиляється); tests/lunar_interop_oem_oracle.rs::recorded_two_reader_outcome_is_for_todays_export |
Місячний експорт 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 не встановлено |
MODELLED |
| VM-ce44f2a8 | Оцінювання за рамками стійкості PNT | Субоцінки за вимірами за власними сімома категоріями стійкості Kshana (не термінами DHS), функціями RDRR RethinkPNT і критеріями Янга, кожна позначена Modelled із її рушієм; орієнтовний рівень RPCF із бар'єром обмеженої деградації. Самооцінка на основі симуляції, ніколи не сертифікація. | resilience::arch, resilience::score, resilience::diversity, resilience::timeline | resilience::score::tests (монотонність, межі складової оцінки, обмеження рівня, модельне походження); resilience::diversity::tests (обернений Сімпсон, синфазність, SPOF) | Виведені вручну формули для кожної метрики: різноманітність за оберненим Сімпсоном, зважений середній складений показник, обмежені/необмежені тривалості часової шкали, драбина рівнів за найслабшою ланкою | MODELLED |
| VM-2605d9ce | Дослідження нестійкості рішень за оцінкою стійкості | Кількісно оцінює, як одна складена оцінка / рівень RPCF переупорядковує архітектури за виправданого симплекса ваг і ансамблю загроз (частота зміни top-1, дисперсія тау Кендалла, частота зміни рівня, діапазони рангів); аналіз заявленого проти виміряного та колапсу різноманітності. | resilience::stats, resilience::study, resilience::panel | resilience::stats::tests (ручний приклад tau Кендала, симплекс Діріхле, частота перевертань); resilience::study::tests (контроль стабільності, свідок нестабільності, заявлене проти виміряного, колапс різноманіття) | Замкнені тотожності рангової статистики (тау в [-1,1] із обчисленими вручну значеннями; детермінований зерновий Діріхле) і побудовані стабільні/нестабільні свідки | MODELLED |
| VM-54e60db6 | Репрезентативність демонстрації та прогалини до польоту | Реєстр чесності для кожного результату, що кваліфікує вихід демонстрації: його зовнішні опори, змодельовані припущення, прогалини до польоту та репрезентативний діапазон TRL, із примусовими інваріантами (Validated вимагає зовнішньої опори; Modelled вимагає прогалини і не може претендувати на TRL вище 4). | representativeness | representativeness::tests (validated-needs-external-anchor, modelled-needs-gap, modelled-TRL-ceiling, malformed-band, поля JSON) | Замкнені інваріанти, що відповідають дисципліні compliance «репрезентативність обґрунтована + прогалини до польоту визначені»; пов'язані з межею статусу верифікації / виду оракула | MODELLED |
| VM-029c96cc | Докази компромісу квантове проти класичного (спільна форма) | Один відтворюваний об'єкт TradeEvidence (фіксована рамка: сценарій+зерно+рушій; спільні значення квантове-проти-класичного для кожного показника якості з коректною за полярністю перевагою, необов'язковий 95% ДІ, мітка validated/modelled), що несе запис репрезентативності, щоб кожна квантова вертикаль PNT повідомляла про компроміс однаково чесно. | qtrade | qtrade::tests (полярність вигоди вища/нижча-краща, вірно обгортає реальний TradeResult, нечесні докази відхиляються, validated-FoM потребує зовнішнього якоря, детермінований JSON) | Замкнені тотожності переваги/переможця + вірна обгортка наявного quantum_trade::TradeResult; чесність пов'язана з реєстром репрезентативності та мітками верифікації | MODELLED |
| VM-868d3124 | Бібліотека моделей похибок квантових пристроїв | Картки пристроїв (оптичні/на захоплених іонах/на іонах ртуті + класичні годинники, повторно використані з holdover/clock_state; інтерферометр на холодних атомах; класичні + заплутані/однофотонні лінії передавання часу), кожна з записом репрезентативності; заплутана лінія додає модель точності часу, обмежену дробовим шумом (~джитер/sqrt(R*tau), штраф за темнові лічби, систематична межа). | quantum_devices | quantum_devices::tests (картки годинників чесні й упорядковані; точність заплутаності ~1/sqrt(tau); виявлена частота -10x/10 дБ; темнові лічби погіршують; системні нижні межі обмежують; картка модельна + дійсна) | Повторно використані коефіцієнти годинника/CAI (holdover/clock_state, опубліковані значення) + замкнені тотожності дробового шуму/втрат для заплутаної лінії | MODELLED |
| VM-6c2f0424 | Довірений квантовий час (передавання часу + безпечне поширення + аномалії) | Наскрізний ланцюг передавання часу квантовий проти класичного (інерційний дрейф годинника + точність лінії в квадратурі), повторно використаний рівень захисту часу, показник безпеки проти атак із затримкою/повтором (1-P_md) та ймовірність виявлення аномалії годинника + затримка CUSUM, подані як чесний TradeEvidence із записом репрезентативності. | timetransfer_chain | timetransfer_chain::tests (точність поліпшується з інтеграцією; квантовий варіант може виграти І програти; PL скінченний-додатний; FoM безпеки в [0 1] і зростає із затримкою атаки; Pd аномалії монотонна; торгівельне порівняння is_honest) | Замкнений квадратурний бюджет над повторно використаними перевіреними ядрами (ADEV проти Stable32/NIST; межа TPL; виявлення analytic_pd/pmd); чесність пов'язана з реєстром репрезентативності | MODELLED |
| VM-ad83abe1 | Квантова навігація без GNSS | Квантова (інтерферометр на холодних атомах) проти класичної інерціальної навігації навігаційного класу з рахуванням шляху під час відмови GNSS: зростання похибки положення, holdover до порогу положення та компроміс квантове-проти-класичного як чесний TradeEvidence; чесна примітка про спостережуваність (зсув не спостерігається без виправлення, тому похибка зростає). | quantum_nav_od | quantum_nav_od::tests (квантовий варіант перевершує класичний за тривалої перерви; перевага залежить від перерви; торгівельне порівняння is_honest); tests/gnss_free_quantum_navigation_reference.rs (зростання положення за лічильником шляху проти незалежного подвійного інтегрування в Octave + опублікований якір шуму Freier-2016) | Повторно використані інерційні бюджети, звірені з незалежним подвійним інтегруванням в Octave того самого звичайного диференціального рівняння рахування шляху (інше середовище виконання, спільна модель → ReferenceImpl), плюс опублікований короткостроковий шум Freier-2016 як односторонній якір; складений показник квантове-проти-класичного залишається MODELLED | MODELLED |
| VM-67830b35 | Виявлення збоїв/аномалій для квантових систем PNT | Каталог позначених квантових збоїв (стрибок частоти/дрейф/втрата захоплення годинника; стрибок зсуву/випадіння датчика), ROC AUC статистики виявлення з бутстреп-ДІ та мінімальний виявний збій за фіксованої частоти хибних тривог; монітор за допомогою квантового годинника виявляє менші збої, ніж класичний, поданий як чесний TradeEvidence. | quantum_faults | quantum_faults::tests (відомі значення аналітичної AUC; емпірична бутстреп-AUC охоплює замкнену форму; квантовий варіант виявляє менші несправності / вищу AUC; перевага зникає для величезних несправностей; каталог із 5 класів; торгівельне порівняння is_honest) | Замкнений гауссів AUC = Phi(mu/(sigma*sqrt2)), звірений із зовнішньо перевіреною eval_stats::bootstrap_auc_ci (проти scikit-learn) + аналітичні пороги виявлення | MODELLED |
| VM-5a7431e2 | Динаміка орієнтації твердого тіла без моменту | Рівняння обертального руху Ейлера (I ω̇ = τ − ω × Iω, головні осі й загальний тензор інерції), зв'язані з кінематикою орієнтації кватерніонами (q̇ = ½ q ⊗ ω) і пропаговані інтегратором RK4 із фіксованим кроком, що на кожному кроці перенормовує кватерніон | attitude_dynamics | attitude_dynamics::tests (зворотність apply/solve, нульовий момент сферичного дзиґи, нерухома точка головної осі, збереження енергії та моменту імпульсу на короткому прогоні, q̇=½q⊗ω, знак швидкості симетричного дзиґи + прецесія тілесного конуса); tests/attitude_dynamics_reference.rs (200 000-крокових прогонів без моменту: |q|=1 з точністю 1e-10, кінетична енергія T=½ωᵀIω збережена з відн. точністю 1e-9, |Iω| і вектор інерційного моменту імпульсу збережені з відн. точністю 1e-9/1e-8, обидва на тривісному та загальному недіагональному тензорі інерції; прецесія тілесного конуса симетричного дзиґи (сплюснутого й витягнутого) відтворена з точністю 1e-6 проти аналітичного λ=ω₃(I_a−I_t)/I_t); tests/attitude_dynamics_basilisk_oracle.rs::torque_free_motion_matches_basilisk (два загальні недіагональні тензори інерції, 1e4 с без моменту проти хаба космічного апарата Basilisk 2.9.1 з RKF78: кватерніон у межах 1e-9, найгірше 3.3e-11; кутові швидкості тіла в межах 1e-9 рад/с, найгірше 3.4e-12) | Пропагація твердого тіла хаба космічного апарата Basilisk 2.9.1 (AVSLab, ISC; орієнтація MRP через власні зв'язані рівняння хаба, svIntegratorRKF78 за відносного допуску 1e-12), незалежна реалізація рівнянь твердого тіла без моменту: кватерніон RK4 Kshana (dt 0,01 с) і кутові швидкості тіла збігаються в межах 1e-9 на 1e4 с для двох загальних недіагональних інерцій (найгірше 3.3e-11 і 3.4e-12 рад/с); допуск зафіксовано до порівняння. Перевірене твердження: рух без моменту; член зовнішнього моменту не порівнювався. Перевірки законів збереження та симетричного дзиґа залишаються допоміжною самоузгодженістю. Немає середовища гнучкого тіла / контуру керування / зовнішнього моменту | VALIDATED |
| VM-c1723806 | Динаміка відносного руху Клессі–Вілтшира / Гілла | Відносний рух переслідувача навколо цілі на круговій опорній орбіті в системі LVLH: лінеаризовані рівняння Клессі–Вілтшира (ẍ−2nẏ−3n²x=0, ÿ+2nẋ=0, z̈+n²z=0), розв'язані замкненою матрицею переходу стану 6×6 Φ(n,t) (Clohessy–Wiltshire 1960; Vallado Alg. 48) з умовою обмеженої відносної орбіти ẏ₀=−2n·x₀ і замкненою поправкою другого порядку (cw_dynamics::second_order_correction, відповідь CW на квадратичні члени точних рівнянь для кругового провідного; Karlgaard and Lutze 2003, Newman, Lovell and Pratt 2015), складеною як cw_dynamics::propagate_second_order. Перевіреним виходом є propagate_second_order; лінійна Φ окремо схарактеризована щодо нелінійної істини, але не перевірена | cw_dynamics (propagate, second_order_correction, propagate_second_order) | cw_dynamics::tests (Φ(0)=I, розв'язана поперечна простим гармонічним коливанням складова); tests/cw_dynamics_reference.rs (Φ у замкненій формі проти незалежного інтегрування RK4 із фіксованим кроком тих самих рівнянь Хілла з точністю <1e-6 на третині орбіти; Φ(t)Φ(−t)=I з точністю 1e-9; обмежена умова ẏ₀=−2n·x₀ замикає повний стан через один період з точністю 1e-9 без вікового дрейфу вздовж траєкторії впродовж 10 орбіт; суто радіальний зсув дрейфує на аналітичні −12π·x₀ за орбіту); tests/cw_dynamics_orekit_oracle.rs::cw_second_order_matches_nonlinear_orekit_within_1mm (чотири випадки на 100 м упродовж третини орбіти 500 км: найгірше 1.15e-7 м проти 1e-3 м); tests/cw_dynamics_orekit_oracle.rs::cw_disagreement_with_orekit_is_recorded_as_a_finding (лише лінійна Φ: від 1,2 до 6,3 мм, зафіксовано) | 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 чи членів диференціального опору; припущення малої відстані | VALIDATED |
| VM-40e51f3e | Пасивна геолокація випромінювача за TDOA/FDOA | Визначення місця випромінювача (джамера/спуфера або оказійного джерела для зворотного PNT) за різницею часу прибуття в мережі приймачів — перетин гіперболоїдів τᵢ=(Rᵢ−R₀)/c, розв'язаний методом найменших квадратів Гауса–Ньютона — і, додаючи різницю частот прибуття (різниці швидкості зміни дальності) з рухомими приймачами, спільне відновлення положення та швидкості; з нижньою межею Крамера–Рао для коваріації положення з геометрії вимірювань | geolocation | geolocation::tests (безшумна TDOA пряма→обернена до 1e-6 м; J·CRLB=I із симетричною додатно визначеною коваріацією; слід дисперсії положення CRLB не зростає, коли додається приймач; спільна TDOA+FDOA відновлює положення+швидкість рухомого випромінювача; <4 приймачів відхиляються); tests/geolocation_reference.rs (круговий обхід на чотирьох геометріях із мережею, різноманітною в 3-D; оцінювач Гаусса–Ньютона досягає своєї межі Крамера–Рао — емпірична коваріація похибки відстежує аналітичну межу за 4000 випробувань Монте-Карло); tests/geolocation_crlb_published_oracle.rs (ho_chan_1993_maximum_tdoa; ho_xu_2004_fig7_with_the_authors_corrected_source; ho_xu_2004_bound_matches_the_authors_code; finding_ho_chan_ottawa_printed_values_are_not_the_bound і finding_ho_xu_fig7_printed_source_is_not_the_plotted_one, зафіксовано) | Самоузгодженість оцінювача та геометрії: прямі→зворотні круги, тотожність Фішера/CRLB J·CRLB=I, монотонність GDOP і досягнення оцінювачем власної межі Крамера–Рао за шуму Монте-Карло — перевірки внутрішньої узгодженості, а НЕ зовнішній набір даних, тому рядок залишається InternalConsistency. MODELLED пасивна геолокація — модель лінії прямої видимості точкового джерела; без багатопроменевості / NLOS, зсуву годинника приймача чи членів атмосферної рефракції. 0,30 раунд 2, проти Ho and Chan 1993 і Ho and Xu 2004 (попередньо зареєстровано f89018b8, 1 % від кожного надрукованого значення), результат (залишається MODELLED): обмежена поверхнею межа TDOA відтворює геометричні чинники 40 N (-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 % | MODELLED |
| VM-e29a09f4 | Пікове гальмування при балістичному вході в 3 ступенях свободи проти опублікованого номіналу Stardust | Вхід матеріальної точки в 3 ступенях свободи над обертовою сферичною Землею крізь стандартну атмосферу США 1976, проінтегрований RK4 від інерційного стану входу, із звітом про пікове гальмування та його висоту; планетарно-відносний стан входу з інерційного. Може запускатися як вид сценарію entry-heating. |
entry_eo_ascent::entry_heating (simulate_entry, inertial_to_relative, EntryHeatingScenario) | tests/entry_stardust_published.rs (пік 35,44 g проти опублікованих 33,4 g, +6,1 %, поріг 10 %; швидкість входу відносно планети 12,551 км/с проти 12,6, поріг 0,1 км/с); entry_eo_ascent::entry_heating::tests (енергія в обертовій системі падає рівно на роботу опору; інерційний вакуумний рух зберігає енергію Якобі; необертовий балістичний випадок збігається з плоскою матеріальною точкою модуля reentry; замкнена форма Аллена–Егґерса у своєму режимі) | Номінал Stardust за Desai, Mitcheltree and Cheatwood (1999, NASA NTRS 20050042027): максимальне гальмування 33,4 g за 12,6 км/с відносно планети з стартовою масою 45,8 кг, траєкторія POST у 6 ступенях свободи з повною аеродинамічною базою даних; інтерфейс входу за Desai, Lyons, Tooley and Kangas (NTRS 20090004445): радіус 6503,14 км, інерційна 12,9 км/с за -8.2 град. Пороги попередньо зареєстровано в xval/entry-stardust/PREREGISTRATION.md до будь-якого прогону на цих вхідних даних; обидва виконано з першого прогону. ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: один опублікований випадок і одна величина (пікове гальмування, яке в балістичному наближенні не залежить від балістичного коефіцієнта); широта та курс входу припущені; нагрівання, тепловий заряд і точка посадки з ним не перевірені; матеріальна точка зі сталим C_D, не 6 ступенів свободи. | VALIDATED |
| VM-953d1c01 | Конвективне нагрівання в точці гальмування при вході (Саттон–Грейвс) для входу в 3 ступенях свободи | Конвективний тепловий потік у точці гальмування q = k sqrt(rho/R_n) V^3 зі сталими Саттона–Грейвса для повітря Землі та атмосфери Марса (NASA TR R-376, 1971), його пік і інтегрований тепловий заряд уздовж входу в 3 ступенях свободи, балістичного або з підйомною силою за сталого крену, на Землі чи Марсі. | entry_eo_ascent::entry_heating (stagnation_heat_flux, simulate_entry) | entry_eo_ascent::entry_heating::tests::heat_flux_relation_has_the_published_form_and_constants; entry_eo_ascent::entry_heating::tests::lift_lowers_peak_deceleration_and_heat_flux_of_a_shallow_entry; entry_eo_ascent::entry_heating::tests::mars_entry_runs_with_the_mars_constants; tests/entry_stardust_published.rs (записує 746 Вт/см2 для Stardust без порогу) | Внутрішня узгодженість: співвідношення та сталі, як надруковано в NASA TR R-376, перевірка збіжності за половинним кроком і очікуваний порядок піків нагрівання та гальмування. ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: жодне опубліковане значення нагрівання не порівнювалося (статті про Stardust дають проєктну межу та оцінку конвективного плюс променевого нагрівання близько 1200 Вт/см2, якої співвідношення лише для конвекції досягти не може); без променевого нагрівання, поправки на температуру стінки чи каталітичність або відгуку теплозахисту. | MODELLED |
| VM-f981b758 | Радіометрія електрооптичного формувача зображень, MTF, відносний відгук краю та NIIRS за GIQE 4 | Бюджет відношення сигнал/шум надирного формувача зображень (ламбертівська яскравість сцени, рівняння камери, дробовий, темновий, зчитувальний шум і шум квантування), системна MTF на Найквісті як добуток дифракції необструктованої апертури, апертури детектора, лінійного змазування та гауссового джитера, відгук краю та відносний відгук краю, проінтегровані з цієї MTF, Q = lambda F / p, і NIIRS за GIQE версії 4 без компенсації MTF. Може запускатися як вид сценарію eo-radiometry. |
entry_eo_ascent::eo_radiometry (Imager, snr_budget, giqe4_niirs, EoRadiometryScenario) | entry_eo_ascent::eo_radiometry::tests::diffraction_mtf_has_its_closed_form_values; entry_eo_ascent::eo_radiometry::tests::a_pure_pixel_aperture_has_a_ramp_edge_and_rer_one; entry_eo_ascent::eo_radiometry::tests::a_gaussian_blur_has_the_normal_cdf_edge; entry_eo_ascent::eo_radiometry::tests::snr_budget_scales_as_shot_noise_when_signal_dominates; entry_eo_ascent::eo_radiometry::tests::giqe4_switches_coefficients_at_rer_0_9_and_falls_with_gsd | Замкнені форми: дифракційна MTF на половині частоти зрізу, одно-піксельний лінійний край чистої апертури детектора (RER 1), край у вигляді нормальної ФР для гауссового розмиття (RER = erf(0.5/(sigma sqrt 2))), масштабування дробового шуму та коефіцієнти GIQE 4 як опубліковано (Leachtenauer et al., Applied Optics 36(32), 1997). ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: жоден зовнішній формувач зображень, виміряна MTF чи оцінене зображення не порівнювалися; GIQE є емпіричною регресією з власною похибкою; без розсіяного світла, атмосферної MTF, компенсації MTF чи накладання спектрів. | MODELLED |
| VM-a47a618a | Втрати запуску на гравітацію, опір, керування та протитиск на виведенні | Плоский гравітаційний поворот виведення багатоступеневого апарата над необертовою сферичною Землею крізь стандартну атмосферу США 1976 (густина й тиск), із поштовхом тангажа, тягою, зменшеною протитиском сопла, вигоряннями ступенів на точних межах кроків і втратами на гравітацію, опір, керування та протитиск, проінтегрованими поряд зі станом. Може запускатися як вид сценарію ascent-losses. |
entry_eo_ascent::ascent (simulate_ascent, AscentScenario); reentry::us76_pressure | entry_eo_ascent::ascent::tests::the_loss_identity_holds_to_integration_error; entry_eo_ascent::ascent::tests::vertical_vacuum_burn_has_only_gravity_loss_and_stays_vertical; entry_eo_ascent::ascent::tests::us76_pressure_has_the_standard_values; entry_eo_ascent::ascent::tests::a_larger_kick_lowers_burnout_flight_path_angle | Внутрішня узгодженість: точна тотожність швидкість вигоряння = сума Isp g0 ln(m0/mf) мінус чотири проінтегровані втрати (залишок нижче 1e-6 м/с), рівняння Ціолковського на вертикальному вигорянні у вакуумі, де гравітація — єдина втрата, та тиски US76 на рівні моря й тропопаузі. ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: втрати жодного опублікованого апарата не порівнювалися; без обертання Землі, інерційного руху, дроселювання чи наведення поза поштовхом; стале C_D; не оптимізатор траєкторій. | MODELLED |
| VM-8e1d443b | Двостороннє рівняння TWSTFT, бюджет невизначеності та стабільність лінії з фліккером і добовою невзаємністю | Двостороннє рівняння TWSTFT, розв'язане для T_A - T_B із затримками передавання та приймання станцій, Ku-діапазонною іоносферною асиметрією вгору/вниз, різницею затримок транспондера та членами Саньяка, проти його точної прямої моделі; квадратурний бюджет невизначеності з TDEV лінії як складником типу A; двосторонній ряд із білим і фліккерним фазовим шумом (Kasdin-Walter), добовою невзаємністю та сталим залишком взаємності; а також швидкість, залишкове СКВ, TDEV і ADEV наданих рядів годинників станцій Circular T, MJD-CSV або IGS RINEX. Може запускатися як вид сценарію time-transfer-budget. |
twstft_budget (counter_readings, solve_offset, combined_uncertainty, flicker_phase, two_way_series, series_stability); time_transfer_budget (TimeTransferBudgetScenario, read_series) | twstft_budget::tests (двостороннє рівняння відновлює зсув точно; член Саньяка дорівнює замкненій петльовій формі BIPM; іоносферний член відстежує розщеплення частот, а тропосфера скасовується; фліккерна фаза має плоску TDEV; добовий залишок піднімає TDEV поблизу півдоби; зсув взаємності зсуває offset, а не TDEV; стабільність ряду усуває швидкість); time_transfer_budget::tests | Внутрішня узгодженість: пряма модель і розв'язане рівняння збігаються до 1e-15 с, член Саньяка дорівнює незалежній формі циклу BIPM 2A omega/c^2 модуля, іоносферний член дорівнює 40,3 TEC (1/f_up^2 - 1/f_down^2)/c, а процеси шуму показують очікувані форми TDEV. ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: жодне реальне вимірювання TWSTFT чи звіт про калібрування не порівнювалися; вказані затримки та невизначеності є вхідними даними, не виміряними; стабільності наданих рядів повідомляються, а не перевіряються. | MODELLED |
| VM-c6005488 | Числові методи оптичної атмосфери на похилому шляху: дисперсія Рітова, сцинтиляція, ймовірність завмирання гамма-гамма, усереднення за апертурою, оптична товща хмар і ясного повітря | Cn2 Хуфнагеля–Веллі, проінтегрована вздовж похилого шляху для дисперсії Рітова плоскої та сферичної хвилі (вгору і вниз), індексу сцинтиляції Ендрюса–Філіпса та параметрів гамма-гамма, ймовірності завмирання гамма-гамма й запасу на завмирання, коефіцієнта усереднення за апертурою за слабкої турбулентності, оптичної товщі хмар для стовпа рідкої води та оптичної товщі ясного повітря за видимістю Кіма плюс Релея, що замінює зосереджені атмосферні втрати бюджету оптичної лінії, коли надано атмосферу. Може запускатися всередині виду сценарію optical-atmosphere. |
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) | tests/optical_atmosphere_reference.rs (попередньо зареєстровані пороги A1-A3 проти незалежного оракула mpmath: 216 вузлів сітки Рытова, найгірша відносна похибка 3.4e-7 проти порогу 1e-6, сцинтиляція найгірше 4.5e-16, коефіцієнт апертури найгірше 5.7e-16, 96 ймовірностей завмирання гамма-гамма найгірше 1.3e-12 у log10, оптична глибина хмар і чистого повітря найгірше 6.6e-16); tests/optical_atmosphere_no_moved_output.rs (поріг A5: бюджет лінії із зосередженими втратами та наявні виходи доступності майданчиків побітово ідентичні базовому коміту за 1 000 наборів параметрів) | Числові методи порівняно з незалежною програмою (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, де Ендрюс і Філіпс дають 5/6; реалізовано форму 5/6 | MODELLED |
| VM-9fc2c823 | Залежна від погоди доступність оптичної наземної станції та рознесення станцій, корельоване за відстанню | Доступність оптичної лінії проти вказаного запасу лінії за логнормального клімату рідкої води в хмарах (кількість за ITU-R P.840, екстинкція в геометричній оптиці) і незалежного завмирання від турбулентності гамма-гамма, запас лінії, потрібний для цільових доступностей, і стеля, яку жоден запас не піднімає, логнормальні тривалості відмов, питання «що якби» щодо технік покращення та однофакторна гауссова мережева доступність із копулою, парна кореляція якої дорівнює exp(-відстань/довжина декореляції). Може запускатися як вид сценарію optical-atmosphere. |
optical_weather; optical_sitediv; optical_techniques; optical_atmosphere_scenario | tests/optical_atmosphere_identities.rs (поріг A4: rho = 0 дорівнює незалежному об'єднанню, а rho = 1 — найкращому одиночному майданчику до 1e-12, і нуль порушень монотонності за кількістю майданчиків і за кореляцією; перший прогін цього порогу не досяг його на 3e-9, бо нормальна ФР, що використовувалася, була формою Абрамовіца-Стегуна з 1.5e-7, і цей дефект реалізації замінено ФР неповної гамма-функції без зміни порогу); optical_weather::tests і optical_sitediv::tests (монотонний запас, хмарна стеля як замкнена форма, тотожності тривалості відмов, обернення пошуку запасу) | Внутрішня узгодженість: замкнені межі та монотонність моделі рознесення, замкнена форма стелі хмар і логнормальні тотожності відмов. ЖОДНОГО зовнішнього оракула не заявлено, і жоден не порівнювався: не використовується жоден виміряний запис доступності оптичної наземної станції чи безхмарної прямої видимості. ЧОМУ MODELLED: клімат хмар (ймовірність хмар, медіана та розкид стовпа рідкої води, тривалості відмов), незалежність хмар і турбулентності, форма гауссової копули, довжина декореляції та кожен виграш техніки є припущеннями; вбудовані сценарії вказують ILLUSTRATIVE клімати, а не набір даних. Підвищення цього рядка потребує цитованого виміряного запису доступності та порогу, зареєстрованого до порівняння | MODELLED |
| VM-fe158525 | Безперервність часу та віддалеміровання крізь оптичні відмови | Розподіл тривалостей відмов оптичної станції, зв'язаний із замкненою дисперсією інерційного дрейфу моделі holdover годинника: похибка часу та віддалеміровання за вказаними квантилями відмов, holdover до порогу часу, частка відмов і часу відмов у його межах та доступність часу A + U E[min(D, T_h)]/E[D] для класичних і квантових класів годинників. Може запускатися всередині виду сценарію optical-atmosphere. |
optical_outage_holdover (couple, clock_psds); holdover (coast_phase_sigma, holdover_seconds, phase_to_range_m) | tests/optical_atmosphere_identities.rs (поріг A6: похибка часу на кожну відмову дорівнює holdover::coast_phase_sigma, а похибка дальності — phase_to_range_m біт у біт за 9 годинників, 3 середніх тривалостей, 3 розкидів і 4 квантилів); optical_outage_holdover::tests | Внутрішня узгодженість із модулем holdover, біт у біт; жодного зовнішнього оракула НЕ заявлено. Класові PSD є синтезованими довготривалими межами при великих tau, які модуль holdover уже несе, тож показники успадковують його вказане застереження, що holdover до жорсткого порогу визначається припущеною межею червоного шуму, а не цитованою девіацією Аллана. Тривалості відмов — це логнормальна модель із вказаними параметрами, а не виміряний запис перебування хмар | MODELLED |
| VM-48b43298 | Запас оптичної лінії в часі: одна зернова реалізація погоди станції | Необов'язкова таблиця [timeseries] (тривалість, крок, зерно) змушує вид optical-atmosphere також записувати для кожної станції одну зернову реалізацію вказаної моделі станції в часі: епізоди хмар (ясні проміжки експоненційні, хмарні відмови логнормальні із вказаним середнім і розкидом, частка часу в хмарах задана вказаною ймовірністю хмар), один логнормальний стовп рідкої води на епізод хмар, один відлік сцинтиляції гамма-гамма на крок, а з них — запас лінії, завмирання від хмар і сцинтиляції та прапорець роботи лінії, з реалізованою доступністю, часткою хмар, кількістю відмов і найдовшою відмовою. Без таблиці результатом є документ 0,37. Вибірки проходять переносними шляхами розподілів і математики, тому native і wasm32 дають ті самі байти. |
optical_timeseries (site_series, SiteModel, SeriesSpec, Series); optical_atmosphere_scenario (TimeseriesSpec) | tests/optical_atmosphere_timeseries.rs (пороги T1-T6 з xval/optical-atmosphere/PREREGISTRATION-timeseries.md, зафіксовані до першого прогону: те саме зерно ті самі байти, а інше зерно інші байти; немає ключа без таблиці; за 8760 год із кроком 600 с, зерна 37 і 38, реалізована доступність кожного з трьох типових майданчиків у межах 6 пунктів від заявленої (найгірше 3,3), а реалізована частка хмар у межах 5 пунктів від заявленої ймовірності (найгірше 2,1); запас дорівнює бюджету мінус два завмирання, а up дорівнює «запас невід'ємний» на кожному кроці; жодного непереносного математичного виклику в модулі; надто довгі прогони й погані кроки відхиляються) | Лише внутрішня узгодженість; жодного зовнішнього оракула НЕ заявлено, і його не існує для реалізації погоди. Перевірки порівнюють одну вибірку зі статистичним виходом тієї самої моделі, тож успіх означає, що генератор вибирає з вказаних розподілів (доступність вибірки та частка хмар лежать у попередньо зареєстрованих допусках від вказаних показників), а не що будь-яка реальна станція поводиться так. Ряд є однією реалізацією, а не кліматом: його доступність відрізняється від вказаної на похибку вибірки, а відліки сцинтиляції на різних кроках незалежні, що є вказаним спрощенням процесу, який декорелюється за мілісекунди. Погодні вхідні дані залишаються припущеннями сценарію. | MODELLED |
| VM-d599af85 | Зчитувач файлів даних орбіти TRK-2-18 та модель рампового Доплера 2-way для Марса | Зчитувач файлів даних орбіти DSN (TRK-2-18): 36-байтові групи записів (мітка файлу, ідентифікатор, дані орбіти, рампи для кожної станції, зсуви годинників, підсумок, кінець файлу), а в кожному записі даних орбіти — часова мітка від 1950, затримки низхідної та висхідної ліній, спостережувана, станції, тип даних, діапазони, чинність, канал, космічний апарат, 46-бітова опорна частота та час стиснення; початкові й кінцеві часи рамп, швидкості та початкові частоти. Поверх цього — рампова модель Доплера 2-way X-діапазону (проінтегровані висхідні рампи, кругове світлове запізнення з Шапіро та тропосферою, станції DSN через ланцюг IAU 2006/2000A CIO та IERS EOP, час станції) і пакетне визначення орбіти орбітального апарата Марса (поле GMM-3, треті тіла, SRP, опір). | 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) | tests/mro_odf_reader_label_oracle.rs (реальний ODF MRO, 2007-304/305, проти його мітки PDS: кількість записів, позиції груп, станції, часи початку й кінця та типи даних збігаються; кількість рядків таблиці в кінці файлу розходиться на одиницю, суперечність мітки, зафіксовано як знахідку); odf::tests (круговий обхід вручну складеного запису, епоха 1950); tests/mro_odf_short_arc_od_oracle.rs (залежить від даних, входи закріплено SHA-256, потрібен щомісячний CI з реальними даними: Доплер, передбачений за навігаційною реконструкцією MRO mro_psp5 на оцінюваних проходах DSS 63 і DSS 14, 12,5 мГц СКВ, поріг 30 мГц, виконано; зареєстроване визначення орбіти не дало орбіти, зафіксовано як знахідку; прогін 2 із демпфованим оцінювачем, зареєстрований окремо: орбіта 0,36 км СКВ і 0,53 км максимум проти mro_psp5, виконано, післяпідгонний Доплер 48,6 мГц проти 30 мГц, не виконано, зафіксовано як знахідку; зчитувач SPK type 1 проти CSPICE, 5e-7 м); mars_od::tests | Мітка 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-way до 12,5 мГц на проходах, не використаних у розробці, поріг виконано; зареєстроване визначення орбіти не вдалося на оціненій дузі (нормальна матриця не додатно визначена) і не дало орбіти, тож пороги орбіти не виконано. Прогін 2 (xval/mro-od/PREREGISTRATION-RUN2.md, демпфований оцінювач, та сама дуга й пороги, поправка оцінювання R2-A1, розкрита в docs/revisions) зійшовся: оцінена орбіта в межах 0,36 км СКВ (0,53 км максимум) від реконструкції, пороги виконано, але післяпідгоночне СКВ Доплера становить 48,6 мГц проти порогу 30 мГц, не виконано, тож рядок залишається MODELLED. ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: жодна оцінена орбіта не виконала всіх зареєстрованих порогів; іоносфера, сонячна плазма та більша частина зміщення антени (радіальне зміщення 1,5 м підганяється на проході розробки) не моделюються. | MODELLED |
| VM-7aee30d8 | Замкнене керування орієнтацією зі зворотним зв'язком MRP на реакційних маховиках | Інерційне наведення орієнтації твердого хаба з трьома або більше збалансованими реакційними маховиками: закон зворотного зв'язку MRP L_r = -K sigma_BR - P omega_BR (Schaub and Junkins), моменти двигунів маховиків мінімальної норми G_s u = -L_r, обмежені межею кожного маховика, зв'язана динаміка хаба й маховиків з інерцією хаба, що несе інерцію обертання маховиків, кінематика кватерніонів, RK4 з утриманням нульового порядку. Може запускатися як вид сценарію aocs (цикл за істинним станом). |
aocs (AocsConfig, required_torque, motor_torques, rates, rk4_step, simulate, mrp_from_quaternion); aocs_kind (AocsScenario) | tests/aocs_basilisk_oracle.rs (3 випадки, по 601 вибірці: MRP найгірше 2.4e-14, поріг 1e-9; кутова швидкість тіла 1.6e-15 рад/с, поріг 1e-9; швидкість маховика 2.9e-11 рад/с, поріг 1e-6; прикладений момент двигуна 1.2e-13 Н·м, поріг 1e-9; моменти при t = 0 у межах 1e-12 Н·м; насичення досягнуто в обох інструментах); aocs::tests (кутовий момент імпульсу збережено, відображення мінімальної норми, гілка MRP, збіжність за насичення); aocs_kind::tests | Basilisk 2.9.1 (AVSLab, ISC; запуск маховика bsk як окремого інструмента, ніколи не зв'язаного і не вбудованого): хаб космічного апарата, reactionWheelStateEffector (BalancedWheels, обмеження моменту ввімкнено), simpleNav, inertial3D, attTrackingError, mrpFeedback (без інтегрального члена) і rwMotorTorque за dt = 0,1 с із його RK4, проти власної реалізації Kshana на трьох випадках (три ортогональні маховики; чотириколісна піраміда; чотириколісний випадок із насиченням), пороги попередньо зареєстровано в xval/aocs-basilisk/PREREGISTRATION.md до коду й прогону. Усі пороги виконано з першого прогону. ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: шум датчиків у циклі, інтегральний зворотний зв'язок, наведення відстеження, тертя маховиків, джитер, обмеження швидкості та живлення, коефіцієнти будь-якого реального космічного апарата; порівняння перевіряє реалізацію закону та динаміки проти незалежної, а не льотний контролер. | VALIDATED |
| VM-4f433858 | Мультиплікативна оцінка орієнтації EKF за гіроскопом і зоряним датчиком | Мультиплікативний EKF Лефферта–Маркі–Шустера: стани похибки орієнтації в системі тіла та зсуву гіроскопа, пропагація зі швидкістю гіроскопа за вирахуванням оцінки зсуву та дискретним шумом процесу Фаренкопфа (випадкове блукання кута й швидкості), оновлення зоряного датчика із залишком 2 vec(q^-1 q_st) у формі Жозефа та мультиплікативне скидання; дискретний симулятор гіроскопа й зоряного датчика Фаренкопфа. Вид aocs може замкнути цикл керування на свою оцінку. |
aocs_mekf (Mekf, GyroSim, attitude_error, spd_solve6); aocs_kind (estimator) | aocs_mekf::tests::mekf_is_consistent_over_monte_carlo_seeds (40 зерен, середній NEES із шістьма ступенями свободи за другу половину в межах від 4,5 до 7,5); aocs_mekf::tests::star_tracker_updates_bound_the_attitude_error; aocs_mekf::tests::attitude_error_is_the_body_frame_small_angle; aocs_kind::tests::estimator_loop_runs_and_reports_consistency | Внутрішня узгодженість: нормований квадрат похибки оцінювання фільтра проти істини, змодельованої з тих самих моделей датчиків за зернами Монте-Карло, і збіжність оцінок орієнтації та зсуву. ЧОГО ЦЕ НЕ СТОСУЄТЬСЯ: жоден зовнішній оцінювач чи льотні дані не порівнювалися (у Basilisk 2.9.1 немає модуля MEKF); моделі датчиків є підручниковими, без неспіввісності, масштабного коефіцієнта чи ефектів поля зору зоряного датчика. | MODELLED |
| VM-7a50fbac | Визначення орієнтації за Вабою/TRIAD/QUEST | Оптимальна триосьова орієнтація за зваженими векторними спостереженнями (напрями на зорі/Сонце/магнітометр): детермінований двовекторний TRIAD, q-метод Девенпорта (точний мінімізатор втрат Вабби — оптимальний кватерніон є власним вектором найбільшого власного значення матриці Девенпорта K розміру 4×4, розв'язаним симетричним власним розв'язком Якобі) і QUEST (корінь Ньютона/січної характеристичного рівняння K, що стартує із Σ ваг, потім відновлення кватерніона за вектором Гіббса) | wahba | wahba::tests (A(одиничний кватерніон)=I; розв'язувач власних значень Якобі задовольняє Kv=λv і зберігає слід на відомій симетричній матриці; K симетрична); tests/wahba_reference.rs (TRIAD, q-метод Давенпорта та QUEST відтворюють оптимальну DCM з scipy.spatial.transform.Rotation.align_vectors на безшумних зважених наборах векторів з точністю <1e-9 рад через незалежний від системи відліку кут похибки орієнтації; а також q-метод відновлює відоме обертання з λ_max=Σ ваг і нульовою втратою Вахби, розв'язок q-методу мінімізує втрату Вахби за збурення, QUEST узгоджується з оптимальним q-методом з точністю <1e-7 рад, а оптимальний оцінювач перевершує двовекторний TRIAD за RMS похибки орієнтації на 2000 зашумлених випробуваннях методом Монте-Карло) | scipy.spatial.transform.Rotation.align_vectors (SciPy 1,13; Virtanen et al., Nature Methods 2020) — розв'язок Кабша/Маркеля через SVD задачі Вабби, справді незалежний алгоритм (SVD матриці профілю орієнтації) і кодова база від власного розв'язку Девенпорта-K / методу характеристичного кореня QUEST у kshana, що обчислює ТУ САМУ однозначно визначену оптимальну орієнтацію за Вабою. На безшумових наборах зважених векторних спостережень TRIAD, q-метод і QUEST відтворюють оптимальне обертання scipy з точністю до <1e-9 рад (порівняння через інваріантний до знака кут похибки орієнтації). Шумове статистичне твердження Монте-Карло «оптимальний перемагає TRIAD» залишається MODELLED (без зовнішнього оракула); лише спостереження одиничних векторів точкових напрямів — без моделювання поля зору/зсуву/часової кореляції датчика, а QUEST сингулярний за 180° (q-метод охоплює цей випадок) | VALIDATED |
| VM-0430afb5 | Статистики виявлення захоплення GNSS за квадратичним законом | Детектор захоплення за квадратичним законом (некогерентний) над пошуком фаза коду × Доплер: ймовірність хибної тривоги (центральний χ² із 2M ступенями свободи), поріг, що досягає цільової P_fa (ФР χ², обернена бісекцією), і ймовірність виявлення (нецентральний χ² із нецентральністю 2M·ρ для післякореляційного SNR ρ на комірку), з узагальненою Q-функцією Маркума Q_M(a,b)=1−F_{χ'²(2M,a²)}(b²) | acquisition | acquisition::tests (центральний випадок Marcum-Q Q_1(0,b)=exp(−b²/2); тотожність P_d=Q_M(√(2Mρ),√γ); круговий цикл P_fa↔поріг за M і P_fa; монотонність ROC — P_d зростає зі SNR, спадає з порогом, P_d→P_fa при SNR→0; виграш некогерентного накопичення підвищує P_d за фіксованого P_fa; Marcum-Q монотонна за a і b та обмежена в [0 1]); tests/acquisition_reference.rs (узагальнена Marcum Q_M(a,b), P_d, P_fa та інверсія P_fa→поріг проти scipy.stats.ncx2/chi2 на сітці (M,a,b)/(M,P_fa)/(M,SNR) з точністю ~1e-6) | 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 | VALIDATED |
| VM-83b35149 | Розв'язання цілочисельної неоднозначності фази несівної GNSS (LAMBDA) | Цілочисельна фіксація неоднозначностей за методом найменших квадратів у стилі LAMBDA: цілочисельне (Z) декорелювальне перетворення зі збереженням об'єму (цілочисельне зменшення розміру за Гаусом множника L D Lᵀ) + точний пошук цілочисельних найменших квадратів «гілок і меж» углиб за Шнорром–Ейхнером з тестом відношення на двох найкращих кандидатах (перевірене твердження); плюс замкнена завантажувальна частка успіху P_s=∏(2Φ(1/(2σ_{i|I}))−1), яка перевіряється лише внутрішньо й поза перевіреним твердженням | lambda | lambda::tests (L D Lᵀ відновлює Q); tests/lambda_reference.rs (Z-перетворення унімодулярне |det Z|=1 із Q_z=ZᵀQZ SPD, зберігає детермінант і має нижчу сумарну позадіагональну кореляцію; ILS Шнорра–Ойклера збігається з повним перебором на 300 випадкових коваріаціях; повний конвеєр декореляція→пошук→зворотне перетворення дорівнює прямому ILS, а Z⁻ᵀZᵀ відтворює цілі числа в обох напрямках; замкнена форма завантаженої частоти успіху збігається з Монте-Карло на 200k випробувань послідовного умовного округлення з точністю <0,01); tests/lambda_rtklib_oracle.rs::ils_solution_matches_rtklib_lambda_on_300_covariances (фіксовані цілі числа дорівнюють lambda() з RTKLIB v2.4.2-p13 на 300 випадкових коваріаціях, n від 2 до 10, 226 з яких не розв'язуються округленням; два найкращі квадрати норм збігаються з відн. точністю 1e-9, виміряно 5.6e-13) | RTKLIB v2.4.2-p13 lambda() (його вихідний файл lambda.c, T. Takasu, BSD-2-Clause), незалежне зведення LAMBDA і пошук MLAMBDA, скомпільовані з C і запущені як інструмент, на 300 випадкових коваріаціях (n від 2 до 10): цілочисельні найменші квадрати мають унікальний мінімізатор, тож фіксовані цілі мають бути ідентичними (0 розбіжностей), а дві найкращі квадратні норми, що живлять тест відношення, мають збігатися до 1e-9 відносно (виміряно 5.6e-13); допуск зафіксовано до порівняння. Перевірене твердження: розв'язок ILS і його дві найкращі норми. RTKLIB не обчислює завантажувальну частку успіху, яка залишається перевіреною внутрішньо проти Монте-Карло процесу округлення; інваріанти Z-перетворення та повний перебір залишаються допоміжними перевірками. Лише цілочисельна декореляція за Гаусом (перестановки зведення повного LAMBDA пришвидшують пошук, але не змінюють ні точної відповіді ILS, ні завантажувальної частки) | VALIDATED |
| VM-7db8a5ce | Наведення в 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 | bplane | bplane::tests (скаляри прольоту задовольняють замкнені форми з двома узгодженими тотожностями |B| і |B|>r_p; кут повороту зменшується з радіусом периапсиду та досягає меж δ→0 / δ→π; відхилення зберігає швидкість v∞ і обертає рівно на δ; величина Δv допомоги дорівнює 2·v∞·sin(δ/2) і обмежена 2·v∞; осі B-площини ортонормовані та ⊥ Ŝ з |B|²=(B·T̂)²+(B·R̂)²; параметр Тіссерана інваріантний при відхиленні зі збереженням v∞, що таки змінює a,e,i, і дорівнює 3−(v∞/v_circ)²); tests/bplane_gmat_oracle.rs::bplane_matches_gmat_over_a_hyperbolic_grid; tests/bplane_heliocentric_oracle.rs::assist_delta_v_matches_gmat_asymptotes_and_c3; tests/bplane_heliocentric_oracle.rs::heliocentric_elements_and_tisserand_match_gmat_and_sbpy; tests/bplane_heliocentric_oracle.rs::tisserand_matches_kasuga_jewitt_2019_table_8_1 | 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); геліоцентричні SMA, ECC та INC на 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 Kasuga and Jewitt (2019) для 12 об'єктів у межах границі надрукованого округлення (найгірше 0,39 від неї; опубліковане робоче значення P1). Попередньо зареєстровано (436293bf; геліоцентричне виправлення 6fd9f5e6); поправка 374c806b, написана після генерації файлів оракула й до будь-якого значення Kshana, розширила фільтр вхідного нахилу з 1e-2 до 1e-3 рад, зберігши більше й гірше обумовлених станів. Обсяг MODELLED: проліт у двотільному наближенні зшитих конічних перерізів на круговій планетній орбіті, без переходу через сферу впливу, збурень зустрічі чи ефемерид | VALIDATED |
| VM-e01b501b | Формування променя антенної решітки CRPA проти глушіння | Занулення антени з контрольованою діаграмою приймання: комплексні вектори наведення решітки a(û)=exp(j·k·pₙ·û), детерміноване наведення нулів (одиничне посилення до SV, точні нулі до N−1 джамерів через норму мінімальної довжини w=Aᴴ(AAᴴ)⁻¹b) і адаптивні ваги MVDR w=R⁻¹a_sv/(a_svᴴR⁻¹a_sv), що самонаводять глибокі нулі на сильні завади (із комплексним ядром лінійної алгебри, написаним з нуля) | crpa | crpa::tests (тотожності комплексної арифметики, зокрема z/z=1, |exp(jθ)|=1, zᴴz=|z|²; детероване нуль-наведення дає точний одиничний коефіцієнт підсилення SV і нулі джамерів <1e-9 на 4-елементній ULA із 3 джамерами; решітка з N елементів пригнічує >N−1 джамерів і менше — нулями мінімальної норми; MVDR залишається без спотворень у напрямку SV, тоді як нуль джамера поглиблюється монотонно зі збільшенням потужності джамера до <1e-3 на 60 dB); tests/crpa_reference.rs (вектори ваг MVDR і нуль-наведення мінімальної норми та отримані коефіцієнти відгуку решітки проти незалежного обчислення numpy/scipy LAPACK з точністю ~1e-9) | 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) чи похибки оцінки вектора наведення | VALIDATED |
| VM-9715be87 | Степеневий шум годинника за IEEE-1139 + межа фліккерного FM | П'ятикоефіцієнтне перетворення PSD↔дисперсія Аллана за IEEE-1139 S_y(f)=Σh_α f^α → σ_y²(τ) (білий/фліккерний PM, білий/фліккерний/випадкове блукання FM), межа фліккерного FM σ_y=√(2 ln2·h_{-1}) як повноцінний підганяний член і невід'ємна підгонка сім'ї FM у базисі {(2π²/3)τ, 2 ln2, 1/(2τ)}, що відновлює межу, яку базис дрейфу {1/τ,τ,τ³} подати не може | powerlaw | powerlaw::tests (кожен чистий тип шуму показує свій характерний логарифмічний нахил ADEV — білий FM −½, фліккер FM 0, випадкове блукання FM +½, білий PM −1; складова фліккер-FM є плоским порогом, що дорівнює √(2 ln2·h_{-1}) на п'яти декадах τ; підгонка сімейства FM відновлює відомі h_{-2},h_{-1},h_0 із синтетичної кривої з точністю <1e-6; а поріг кривої, де домінує фліккер, тут відновлюється, тоді як підгонка за базисом дрейфу (quantum_trade::qparams_from_adev_curve) хибна більш ніж на 10% при довгих τ — закриття задокументованої прогалини); tests/powerlaw_oadev_reference.rs (σ_y(τ) збігається з замкненими формами Noise.adev з allantools 2024,06 по драбині τ для всіх п'яти типів шуму, плюс підтвердження рівня h_a ланцюжком від генератора Kasdin з allantools до оцінювача oadev) | allantools 2024,06 (A. Wallin; коефіцієнти Kasdin & Walter 1992 / Vernotte 2015) — незалежна стороння кодова база та лінія цитування, що обчислює ТЕ САМЕ однозначно визначене перетворення IEEE-1139 PSD→Аллан σ_y(τ) для кожного з п'яти типів степеневого шуму. powerlaw::allan_deviation у kshana збігається із замкненими формами allantools (білий/фліккерний FM, RW-FM і білий PM до <5e-9 відносно; фліккерний PM до ~1e-5 — справжній сигнал незалежності, бо kshana використовує табульовану сталу NIST-SP-1065 1,038, а allantools — повне 3γ−ln2), а межа фліккерного FM √(2 ln2·h_{-1}) збігається з allantools на всій драбині — той самий поріг, який долають рядки Validated MDEV/TDEV/Theo1/MTIE. MODELLED стаціонарна степенева модель — без члена детермінованого дрейфу (τ²); коефіцієнти окремих пристроїв / виміряні межі залишаються Modelled | VALIDATED |
| VM-a09fe6fd | Обмін блоком коваріації CCSDS OEM | Серіалізація та розбір блока CCSDS 502,0 OEM COVARIANCE_START…COVARIANCE_STOP — коваріація положення/швидкості 6×6, записана як її 21-елементний нижній трикутник (канонічний порядок CX_X … CZ_DOT_Z_DOT) з необов'язковим COV_REF_FRAME, що доповнює наявні записувач/розбирач векторів стану OEM, щоб коваріації визначення орбіти та фільтрів проходили круговий обмін у стандартному форматі | oem (covariance_block_kvn, parse_covariance_block) | oem::tests (симетрична PD-коваріація проходить цикл KVN→розбір з точністю до заокруглення f64 і лишається симетричною; блок видає рівно 21 елемент нижнього трикутника — i+1 на рядок матриці — з COV_REF_FRAME і без нього; блок з хибною кількістю значень і відсутній блок обидва відхиляються); tests/ccsds_oem_covariance_reference.rs (незалежна бібліотека oem 0.4.5 розбирає сегмент OEM, випущений kshana, і відновлює симетричну 6×6, збігаючись із вхідною коваріацією kshana з точністю до заокруглення f64; з обуреним негативним контролем і перевіркою, що oem відхиляє мічений варіант CX_X) | oem 0.4.5 (MIT, https://pypi.org/project/oem/) — ТОЙ САМИЙ незалежний розбірник CCSDS-502, якому довіряє перевірений рядок «CCSDS OEM interoperability», зовсім окрема кодова база (власний токенізатор KVN, скінченний автомат секції коваріації та складання матриці в numpy). kshana випускає повний сегмент OEM із немаркованим блоком COVARIANCE нижнього трикутника з голих чисел; oem розбирає його та відновлює симетричну 6×6, збігаючись із вхідною коваріацією kshana поелементно з точністю до заокруглення f64 — справжній обмін «бібліотека проти бібліотеки» з круговим циклом (порівняно з відновленням oem, а не з повторним розбором kshana), що закриває попередню прогалину рядка «немає стороннього фікстури» | VALIDATED |
| VM-2c655ce6 | Зростання похибки інерційного дрейфу INS/TRN і перетини порогів | Бюджет «похибка положення проти тривалості інерційного дрейфу», побудований за коефіцієнтами IMU, де кожне джерело похибки (зсув акселерометра, зсув гіроскопа, випадкове блукання швидкості, випадкове блукання кута, масштабний коефіцієнт у крейсерському польоті та під тривалою питомою силою) пропагується через дев'ятистанову модель похибок INS місцевого рівня зі зворотним зв'язком Шулера (inertial::coast::ErrorDynamics за Groves, 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 |
inertial::coast (ErrorDynamics, ErrorSource, source_error_m, CoastModel, Contribution, Combination, TrnFixMode, first_crossing_s, InsTrnCoastScenario); вид сценарію ins-trn-coast |
tests/ins_coast_schuler_navego_oracle.rs::coast_error_model_matches_the_corrected_navego_runs (48 точок, шість членів похибки на 30 с до 3600 с, тактичний клас, 45 град пн. ш., горизонтально й з орієнтацією на північ: кожна точка в межах 5 %, найгірше +3,70 % випадкове блукання швидкості на 1200 с); inertial::coast::tests (the_error_model_follows_the_leading_order_law_on_a_short_coast; a_bias_error_is_schuler_bounded; doubling_the_coast_scales_each_contribution_by_two_to_its_own_power; every_contributions_closed_form_crossing_agrees_with_the_engines_bisection; the_located_crossing_puts_the_model_on_the_threshold_it_searched_for; the_bias_law_matches_the_engines_stochastic_dead_reckoner_stepped_forward; the_velocity_random_walk_law_matches_a_monte_carlo_of_the_engines_dead_reckoner; the_scale_factor_law_matches_a_double_integration_of_the_engines_imu_error_model; a_full_reset_fix_makes_every_inter_fix_excursion_identical; the_largest_fix_interval_holding_a_threshold_puts_the_peak_on_that_threshold; an_error_free_imu_never_reaches_a_threshold_and_says_so_instead_of_reporting_zero; every_published_field_carries_a_unit_and_a_provenance_class; the_scenario_runs_through_the_engines_public_dispatch_and_is_reproducible); tests/ins_coast_navego_montecarlo_oracle.rs::finding_laws_hold_to_600_s_and_overstate_beyond (висновок раунду 1 щодо законів провідного порядку для плоскої Землі, збережено як регресію) | 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 були відомі; модель не має підганяного параметра. Обсяг: криві похибок кожного члена за тактичного класу, 45 град. пн. ш., горизонтальна й орієнтована на північ, до 3600 с; перетини, правило об'єднання та режим TRN є детермінованими функціями цих кривих. Коефіцієнти класу IMU (дані смуг Groves 2013 таблиці 4,1) і залишок рельєфного виправлення TRN залишаються вхідними даними MODELLED. Раунд 1 (замінено): одночлени плоскої Землі, тепер leading_order_m, завищують за межами 600 с (від 2.2x до 8x за годину). Редакція 0,30: змінюється кожен вихід ins-trn-coast (піковий TRN поставленого сценарію 52,932679 -> 44,711834 м) | VALIDATED |
| VM-c58f1105 | Робочий цикл апертури: навігація проти зв'язку | Один прогін бере план контактів (список вікон aos_s/los_s, кожне з яких просить апертуру для навігації чи зв'язку — той самий словник вікон, який видає passes::predict_passes, перетворений aperture_duty::windows_from_passes), кількість апертур і явну політику арбітражу, і повертає навігаційний робочий цикл, цикл зв'язку, простійний цикл і простій на сеанс. Політика є вхідним параметром зі задокументованим типовим значенням (navigation-priority; також communications-priority і невитісняльна first-come-first-served), а звіт несе визначену політику, її повне визначення та визначення робочого циклу й простою, бо показник робочого циклу, наведений без правила арбітражу, не відтворюється. Розклад є точним інтервальним проходом по межах вікон, тож вікно, що закінчується точно там, де починається наступне, ніколи не конкурує, а секунди апертури навігації, зв'язку та простою накопичуються незалежно за цей один прохід. Може запускатися як вид сценарію aperture-duty-cycle |
aperture_duty | aperture_duty::tests (вікно, що закінчується точно тоді, коли починається наступне, не конкурує, а зсув його на секунду раніше коштує рівно однієї секунди — запобіжник похибки на одиницю; вікна, що перекриваються понад кількість апертур, переводять сеанс нижчого рангу у відмову, із зафіксованим інтервалом конкуренції; політика арбітражу вирішує, яка послуга утримує апертуру, а числа всіх трьох політик зафіксовано на одному плані; «першим прийшов, першим обслужено» не витісняє сеанс, що вже утримує апертуру; сеанс, який програє арбітраж на старті, отримує апертуру, коли вона звільняється; три робочі цикли враховують кожну доступну апертурну секунду для 3 політик × 4 кількостей апертур; додавання апертури ніколи не збільшує відмови жодного сеансу, виміряно на 200 псевдовипадкових планах × 3 політиках × кожній кількості апертур; достатньо апертур для кожного сеансу не залишає жодної відмови; горизонт звіту обрізає план і задає знаменник робочого циклу; передбачений перелік проходів стає планом контактів без другого типу вікна; числа робочого циклу вбудованого плану є виходами рушія для однієї та двох апертур; звіт називає політику, що дала ці числа; кожна повідомлена величина має одиницю й клас походження; сценарій відтворюваний і заявляє себе як MODELLED; сценарій відхиляє план, який не може розкласти); api::tests::aperture_duty_cycle_kind_round_trips_through_the_dispatch | Внутрішня узгодженість за трьома величинами, обчисленими різними виразами в тому самому проході, а потім зобов'язаними зійтися. Секунди апертури навігації, зв'язку та простою накопичуються окремо — простій із (apertures − |served|) на елементарний інтервал, ніколи як залишок — і їх сума перевіряється проти apertures × horizon_s, що негайно ламається при хибно розставленій межі, подвійно врахованому чи пропущеному інтервалі; окремо вимагається, щоб обслужені часи за сеансами складалися назад у два підсумки послуг. Структурні властивості планувальника вимірюються, а не припускаються: обслужений час перевіряється як неспадний за кількістю апертур на 200 псевдовипадкових планах для всіх трьох політик (не очевидно для невитісняльної політики, де додаткова апертура змінює, хто що утримує на кожній подальшій межі), а арифметика меж закріплена на парі дотику/перекриття на одну секунду, де інакше ховалася б помилка на одиницю. Міст пропагатора проходів перевірено проти виходу passes::predict_passes: з однією апертурою та без конкурентної служби секунди апертури навігації дорівнюють власній сумі тривалостей проходів пропагатора. Жодного зовнішнього оракула не заявлено, і його не існує: ця можливість замінює ручну арифметику, а не перевіряється проти неї, вбудований план контактів є ілюстративним, а не льотним, і жоден оперативний планувальник не публікує пару план-плюс-відповідь із вказаним правилом арбітражу — робочий цикл, обчислений за невказаної політики, не порівнюваний із обчисленим за вказаної, а залежність від політики виміряно (навігаційні робочі цикли 100/150 проти 50/150 на тому самому плані). Час повороту й перемикання, обсяг даних, стан буфера, енергія та замикання лінії виключено в мітці звіту, а не змодельовано мовчки |
MODELLED |
| VM-054931b7 | Радіоглушіння навігації на поверхні Місяця (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 |
lunar_jamming (композиція jamming, lunar_service, lunar) | lunar_jamming::tests (17 тестів бібліотеки: j_over_s_equals_the_difference_of_two_independent_link_budget_runs; the_report_prints_both_link_budget_legs_so_the_difference_is_checkable_from_it; the_scenario_reports_one_j_over_s_row_per_visible_satellite_and_never_a_median; a_single_median_j_over_s_would_misreport_the_outcome_that_the_table_reports; a_closer_jammer_raises_j_over_s_by_exactly_the_free_space_loss_difference; a_more_distant_satellite_is_the_weaker_signal_so_it_carries_the_higher_j_over_s; j_over_s_is_invariant_to_the_user_antenna_boresight_gain; a_narrowband_jammer_leaves_no_higher_effective_cn0_than_broadband_at_equal_js; a_selenographic_jammer_gets_its_range_from_the_shared_lunar_geometry; a_strong_enough_jammer_takes_every_lunar_link_below_the_tracking_threshold; no_jammer_is_a_clean_sky_lunar_baseline_with_an_undefined_j_over_s; raising_the_elevation_mask_can_only_remove_rows_never_change_the_ones_that_remain; every_emitted_numeric_field_has_a_unit_and_a_provenance_class; the_csv_table_carries_every_row_of_the_json_table; the_run_is_deterministic_and_the_dispatch_surface_is_populated; bad_inputs_are_rejected_rather_than_producing_a_number); api::tests::lunar_jamming_kind_round_trips_through_the_dispatch_with_a_per_satellite_table | Перехресна перевірка композиції проти незалежного шляху коду в самому репозиторії: кожне 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 з публічних джерел, а не льотними ефемеридами | MODELLED |
| VM-296d9afc | Контур відмови на Місяці зі смугою невизначеності від виміряного розкиду 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 із лічильною причиною, а не як нескінченність чи обмежений радіус |
lunar_jamming (denial_js_db, range_for_free_space_path_loss_m, Cn0Distribution, DenialContourPoint, ContourBand, DenialContour; обернення jamming::effective_cn0_dbhz, jamming::j_over_s_db і jamming::free_space_path_loss_db) | lunar_jamming::tests (10 тестів бібліотеки: the_contour_is_the_exact_inverse_of_the_functions_the_rows_were_scored_with; the_band_is_the_measured_quantiles_pushed_through_the_contour_not_a_sigma; the_asymmetry_the_band_carries_is_the_samples_own_shape_bent_by_the_criterion; the_contour_is_monotone_in_cn0_measured_over_a_dense_sweep_not_assumed; the_band_recovers_the_split_verdict_the_single_scalar_contour_lost; the_distribution_is_the_tables_own_order_statistics_and_keeps_the_rows; a_link_already_below_the_threshold_gets_a_null_contour_point_not_a_number; a_clean_sky_run_has_no_contour_at_all_rather_than_an_empty_one; the_denial_threshold_is_the_same_thirty_decibels_the_rest_of_the_engine_uses; the_units_block_describes_the_contour_and_names_nothing_the_report_omits) | Внутрішня узгодженість із власними прямими функціями рушія, і це все, що ця можливість може чесно заявити. Кожна точка контуру є замкненою інверсією, і кожну інверсію перевірено проштовхуванням її відповіді назад крізь ПРЯМУ функцію, якою оцінено власні рядки звіту: стовпець 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 у межах 1e-4 дБ J/S по обидва боки контуру, чого контур із похибкою на епсилон не пройшов би. Найсильніша перевірка є покінцевою, а не поквантильною: застосування тієї самої функції до власного 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 км — тому друкуються обидва | MODELLED |
| VM-ef715cd6 | Потужність виявлення монітора цілісності між модальностями | Звіт hybrid-optical-rf вказує, що монітор хі-квадрат між модальностями справді може ВИЯВИТИ, а не лише те, що він проходить безвідмовний випадок: мінімальний виявний зсув на кожну контрольовану вісь (схід, північ, вгору, годинник) за вказаних у сценарії ймовірностей хибної тривоги та пропущеного виявлення, криву потужності виявлення по обидва боки від нього, безшумове кратне зсуву, за якого реалізована статистика вперше перетинає поріг, і час до виявлення для рампи зсуву із вказаною швидкістю. Збої також вносяться крізь справжній монітор, а статистика, яку він повертає, подається поряд з аналітичним прогнозом | hybrid_integrity | hybrid_integrity::tests (крива потужності виявлення йде від частоти хибних тривог за нульової несправності до 1 − P_md за мінімального виявного зміщення; мінімальне виявне зміщення, подане назад через noncentral_chi2_cdf за порогу, який застосував сам монітор, повертає P_md до 1e-9 на кожній осі та через публічний допоміжний засіб; зміщення, фактично ін'єктоване в оцінку RF, зсуває власну статистику монітора рівно на обчислене вручну b²/(σ_rf² + σ_opt²); безшумне зміщення виявляється вище √(T/λ*)×MDB і пропускається нижче, а драбина ін'єкцій охоплює цей перетин; потужність виявлення монотонна за величиною несправності й однакова на всіх чотирьох осях у кратних MDB; Монте-Карло статистики монітора з 200,000 відліків із зерном відтворює аналітичну потужність у межах 4σ у чотирьох точках кривої; MDB часу закріплено вище за межу попередження про час, що є виміряною слабкістю, а не властивістю; виміряно, що квантиль Вілсона-Хілферті розходиться з точним порогом монітора приблизно на 4%, що фіксує, чому його не використано; величина наростання дорівнює точно MDB/швидкість і масштабується обернено до швидкості, а недодатна швидкість дає null, а не нуль); tests/hybrid_fault_power_scipy_oracle.rs (report_detection_power_matches_scipy_chi2_and_ncx2; report_detection_power_matches_scipy_with_comparable_sigmas) | Два внутрішні оракули, без зовнішнього набору даних. (1) Замкнений круговий прохід: мінімальний виявний зсув утворюється оберненням нецентрального хвоста хі-квадрат за нецентральністю (raim::pbias) і перевіряється подаванням отриманої нецентральності назад через raim::noncentral_chi2_cdf за власного порогу монітора, що має повернути P_md. (2) Ін'єкція проти аналізу: зсув записується в оцінку RF однієї осі, і cross_raim::run_cross_raim запускається знову, тож статистика, порівнювана з аналітичною нецентральністю, є тією, яку обчислив монітор, а не повторним виведенням. Зерновий Монте-Карло самої статистики міститься в тестах як третя перевірка; його свідомо НЕ включено до звіту, бо вибіркова оцінка була б повільнішою й не відтворюваною побітово. ExternalDataset відхилено: величина є потужністю виявлення ЦЬОГО монітора за розподілу сигма ЦЬОГО сценарію, а величини сигма, на які масштабується MDB, є репрезентативними вхідними даними Modelled, а не вимірюваннями. ReferenceImpl також розглянуто й відхилено — Монте-Карло вибирає ту саму статистику, яку описує аналіз, тож ловить помилки переписування та коефіцієнтів, але не є незалежною реалізацією монітора. 0,30 раунд 2 (попередньо зареєстровано 0135a9e4), заблоковано (залишається MODELLED): SciPy 1.18.1 chi2/ncx2/brentq відтворюють поріг звіту (в межах 5.4e-12), MDB на вісь, криву потужності, кратне перетину та час до виявлення рампи (в межах 5.3e-10) на п'яти конфігураціях; статистики внесених збоїв не мають незалежного оракула, а величини сигма є вхідними даними Modelled, тож визначення обсягу чекає на рішення власника | MODELLED |
| VM-b67b5596 | Повторне зростання коваріації після передавання щодо порогу тривоги | Звіт hybrid-optical-rf розкриває модель шуму процесу фільтра й вказує, як довго розв'язок після передавання лишається в межах порогу тривоги: для обох напрямків передавання він несе коваріацію на кожну вісь, залишену передаванням, пропагує її вперед за вказаного шуму процесу випадкового блукання та повідомляє час, коли масштабований за покриттям 1σ досягає горизонтального, вертикального порогів тривоги та порогу тривоги за часом, який поріг спрацьовує першим, сталу часу подвоєння дисперсії та вибірковий профіль інерційного дрейфу, що охоплює перетин. PSD шуму процесу, коефіцієнт покриття та пороги тривоги є вхідними даними з задокументованими типовими значеннями | hybrid_integrity | hybrid_integrity::tests (інерційний хід починається рівно зі сліду коваріації, який повідомляє блок передавання, в обох напрямках, тож програна діагональ не може відхилитися від повідомленого передавання; повідомлений час перетину перераховується з власної сигми передавання звіту, спектральної густини шуму процесу та коефіцієнта покриття, а межа лежить усередині попередження безпосередньо до нього і поза ним безпосередньо після; час інерційного ходу масштабується точно обернено до спектральної густини шуму процесу та скорочується, коли межа попередження звужується; інерційний хід із нульовою спектральною густиною повідомляє null, а не нульовий час, бо ніколи — це не негайно; випущений профіль перетинає рівно один раз і охоплює повідомлений перетин; час подвоєння дисперсії та час перетину межі попередження закріплено окремо, будучи різними на вісім порядків після жорсткого оптичного етапу й у межах одного порядку після м'якого етапу RF; відмова від оптичної модальності дає більше часу інерційного ходу, ніж відмова від RF, рівно на різницю коваріацій, поділену на горизонтальну швидкість зростання; а random_walk_time_to_limit розрізняє вже-поза, перетинає-в-t і ніколи-не-перетинає) | Без зовнішнього оракула. Перетин є замкненим розв'язком зростання дисперсії випадкового блукання, а тести переобчислюють його незалежно зі значень, які сам звіт публікує, а не з нутрощів випромінювача. Початкова коваріація закріплена побітово до сліду, який уже повідомляв наявний блок передавання, тож дрейф не може пропагувати коваріацію, якої ніхто більше не бачив. PSD шуму процесу є репрезентативними вхідними даними MODELLED, і часи перетину масштабуються з ними безпосередньо, що тест масштабування називає виміряною властивістю, а не твердженням. ExternalDataset свідомо відхилено: час дрейфу є прямою функцією двох PSD Modelled і порогів тривоги, які самі репрезентативні, а виміряного місячного оптичного/RF дрейфу після передавання, з яким можна було б порівняти, немає. Зовнішній оракул тут потребував би опублікованої кривої зростання коваріації після передавання або точності holdover для порівнянного приймача із вказаною моделлю шуму процесу, перевіреної до допуску | MODELLED |
| VM-73e5efd2 | Діаграма антени поза бісектрисою в експорті місячної геометрії | Експорт геометрії для кожного супутника несе для кожної (епоха, супутник) кут поза бісектрисою НА СУПУТНИКУ та посилення передавання в бік місця від справжньої діаграми круглої апертури з рівномірним освітленням (Ейрі) і повідомляє кількість у промені за цією діаграмою ПОРЯД із кількістю у промені за симетричним наближенням «посилення-ширина променя» (θ_3dB[град.] = √(31000/G_lin)), з різницею, поданою як явна поправка в лініях, у супутниках на епоху та як найгірша окрема епоха. Обидві неявні ефективності апертури наближення подано (0,641 проти правила 70·λ/D градусів, із яким воно цитується, 0,920 проти рівномірної круглої апертури), щоб ефективність, яку воно мовчки припускає, була вказана, а не виведена. Типово вимкнено: блок з'являється лише коли задано і місце експорту, і апертуру | lunar_service, antenna | antenna::tests і lunar_service::tests (перетин половинної потужності, знайдений бісекцією за діаграмою, збігається з опублікованим Ейрі x = 1,61634 і дає точну ширину 1,02899·λ/D, фіксуючи, що загальноприйнятий коефіцієнт 1,02 припадає на −2,955 дБ, а не −3,010 дБ; діаграма строго спадає на 400 точках від осі до першого нуля; алгебра передбаченої ефективності проходить круговий обхід до 1e-12 і відтворює 0,641 / 0,920; кут відносно осі збігається з tan θ = R·sin γ/(r − R·cos γ) у 20 точках і в обох межах до 1e-12; наближений конус містить реальний промінь рядок за рядком; підсумкові лічби дорівнюють прапорцям на рядок, які вони підсумовують, а поправка дорівнює їхній різниці; кожен вердикт рядка можна перерахувати лише зі звіту, що випускається; кожне числове й булеве поле, що випускається, має одиницю та клас походження; неможлива апертура не випускає блоку; без налаштованої антени експорт зберігає рівно свої шість наявних ключів, 0 листків змінено і 0 видалено); tests/validate_lunar_export_offboresight_spice.rs (flown_orbiter_export_matches_spice_geometry_and_scipy_pattern; documented_working_point_matches_anise_propagation_and_scipy_pattern) | Змішано, і розділено, а не об'єднано. ДІАГРАМА під ним зовнішньо перевірена і має власний рядок (фікстура 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 на підставі власної зовнішньої опори діаграми було б запозиченою перевіркою, чому інваріанти матриці й мають запобігати. 0,30 раунд 2 (попередньо зареєстровано d9755d28), заблоковано (залишається MODELLED): геометрія SPICE і функції Бесселя SciPy відтворюють кут поза бісектрисою (найгірше 3.0e-5 град.), посилення Ейрі та прапорці в промені на 6 336 рядках станів льотних орбітальних апаратів і задокументованої робочої точки; але на льотній геометрії прапорці розщеплюються за ідентичністю супутника (найближча лінія за 1,66 град. від краю променя), видимість 5 град. перевіряється як прапорець, а не числова висота, прапорець симетричного наближення застосовує емпіричне правило 31000/G до перевіреного кута без перевірки самого правила, а неявні ефективності не мають оракула; визначення обсягу чекає на рішення власника | MODELLED |
| VM-ddc4cb42 | Втрата захоплення петлею відстеження та затягування спуфінгу під завадами | Втрата захоплення, обчислена з динаміки петель замість відношення потужностей: тепловий джитер 1σ несівної (Костас) і коду (некогерентний рано/пізно) проти C/N₀ із втратою на квадратування, проти вказаних правил 3σ_PLL + θ_e ≤ 45° і 3σ_DLL + відставання рампи ≤ d/2 чипа; пороги C/N₀ втрати та повторного захоплення з названою визначальною петлею та гістерезисом, ВИВЕДЕНИМ із ширшої смуги затягування, а не заявленим; заявлений час до втрати захоплення від детектора захоплення з двома порогами та підтверджувальними витримками, поданий окремо від фізичного часу виходу фази (середній час Вітербі між прослизаннями циклів, у log₁₀ с, бо охоплює сотні декад); найбільше зрушення коду та швидкість Доплера несівної, які можуть відстежувати петлі жертви; і РАДІУС ВІДМОВИ, що випливає з динаміки петель, поданий поряд з наявним радіусом відношення потужностей з їхньою знаковою різницею як власним названим полем. Може запускатися як вид сценарію tracking-loop |
tracking_loop (композиція sdr, jamming) | tracking_loop::tests (джитер дискримінатора Costas у розімкненому контурі проти sdr::correlate, прокрученого на синтетичній ПЧ із зерном, 3 об'єднані реалізації шуму × 900 епох, збіжність до 0,63% у 35-45 дБ-Гц, причому член втрат на піднесення до квадрата має підходити щонайменше у 3× краще, ніж форма без втрат на піднесення до квадрата, де це можна розрізнити; насичення атан-дискримінатора поблизу 32 дБ-Гц стверджується, а не лише заявляється, тож межу чинності закріплено; замкнена σ проти прокрученого контуру Costas sdr за 4000 епох до 3,7%; відставання розгортки DLL першого порядку проти прокрученого DLL sdr до 0,17%; bessel_i0 проти табличних I₀ до 7.4e-8; ширина гістерезису має потрапляти в [5·log₁₀ r, 10·log₁₀ r] для 4 відношень × 2 часів інтегрування × 3 смуг); api::tests::tracking_loop_kind_round_trips_through_the_dispatch; tests/tracking_loop_gnss_sdr_oracle.rs::finding_is_pinned | Власний корелятор sdr рушія (sdr::correlate / synth_if / CaCode), покроково пропущений над зерновим синтетичним IF за калібрувального C/N₀ — окремий шлях коду, що досягає тих самих чисел числовою кореляцією дискретизованих IQ, а не алгебраїчним виразом джитера, тож це інший маршрут, а не переказ — плюс стандартні табульовані значення модифікованої Бесселя I₀ для члена прослизання циклу. Теорія петель за Kaplan & Hegarty розд. 8 і Viterbi/Gardner для часу прослизання. Рядок залишається ReferenceImpl/MODELLED: перехресна перевірка живе в тій самій кодовій базі, а перевірка bessel_i0 перевіряє одну спеціальну функцію, а не модель відстеження, тож підвищення рядка на цій основі було б самообслуговуючим маркуванням. ExternalDataset потребував би записаного набору даних сирого IF з істинним C/N₀ та позначеним моментом втрати захоплення (клас TEXBAT/OAKBAT); жоден не постачається в цьому дереві, і навіть із IQ ці набори даних не публікують істини стану петель для кожної епохи, тож заявлений час втрати захоплення можна було б перевірити лише проти детектора захоплення якогось іншого приймача, що є змодельованим вибором, а не оракулом. Смуги петель, час інтегрування, інтервал корелятора, відношення затягування, витримки, потужність джамера та посилення антен є репрезентативними показниками діапазону, а не специфікацією. 0,30 раунд 2, GNSS-SDR 0.0.19 (GPL-3.0, запущений як програма) на незалежно згенерованому IF (попередньо зареєстровано 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 (півциклові прослизання); типове log10_mean_time_to_cycle_slip_s у jitter_table спадає з 11,58 до 2,10 на порозі 25,47 дБ-Гц | MODELLED |
| VM-3ee0ae6e | Коваріація координат станцій місячного VLBI за розкладом відстеження | Часткові похідні затримки, накопичені за розкладом базових ліній × епох у матрицю інформації Фішера, обернену до коваріації координат станцій і сигма станції на кожну координату, що замінює припущений ізотропний зв'язок рівнорозподілу зі скалярної точності затримки. Стан несе земні (ITRS) координати станцій, тож якобіан є інерційною частковою похідною, повернутою матрицею GCRS→ITRS кожної епохи, а саме обертання Землі робить ці координати спостережуваними — звіт ВИМІРЮЄ розгортку земної лінії візування та схилення маяка, а не припускає їх. Ранг, дефект датуму, число обумовленості, спектр інформації та нуль-простір вільної мережі видаються на кожному прогоні, а за дефіциту рангу головна сигма публікується як NULL зі статусом, а не зчитується з майже сингулярного оберненого. Значення рівнорозподілу c·σ_τ·√(g/N) для ТОГО САМОГО розкладу друкується поряд з обчисленим з їхнім відношенням, разом з ізотропною межею сліду √(p/trace(M)), яку AM-HM робить жорсткою нижньою межею. Може запускатися як вид сценарію lunar-vlbi-fim |
lunar_vlbi_fim (композиція lunar_vlbi, fim, cio, lunar_frame, frames) | lunar_vlbi_fim::tests (24 тестів бібліотеки: аналітичний якобіан проти центральної скінченної різниці lunar_vlbi::vlbi_delay_s, взятої через маршрут, що обертає власні координати стану вперед і ніколи не торкається частинної похідної, збіг у межах < 1e-6 від 1/c на стовпець, причому дві інформаційні матриці збігаються в межах < 1e-6 від найбільшої діагоналі, а коваріації — з відн. точністю < 1e-5; ортогональна одинична геометрія, коваріація якої дорівнює c·σ_τ на вісь у замкненій формі з точністю 1e-12, що також є єдиним випадком, де зв'язок рівнорозподілу точний; спектр коваріації та 3-D сигма кожної станції інваріантні при жорсткому обертанні всієї мережі з точністю 1e-9, з поблоково закріпленою C_rot = R·C·Rᵀ І явним твердженням, що сигми по осях справді змінилися, тож тест не може пройти порожньо; коваріація масштабується точно як σ² і як 1/N; межа сліду AM-HM ніколи не перевершена; замикання затримки τ_ik = τ_ij + τ_jk закріплено з точністю до однієї ULP на затримках і рядках якобіана, причому надлишкова база додає інформацію, але ніколи ранг; одна епоха визнана рангово-дефіцитною з нульовим основним показником; довша дуга виміряно краще обумовлена за однакової кількості спостережень; блок маяка показано неспостережуваним у цьому розкладі; знехтувану диференційовану частинну похідну Шапіро виміряно скінченною різницею під час виконання та видано, а не відкинуто); tests/lunar_vlbi_campaign_spice_oracle.rs::lunar_vlbi_fim_matches_spice_geometry_and_numpy (типова закріплена мережа та вільна мережа: якобіан, побудований SPICE, розклад із 16 спостережень ідентичний, сигми станцій у межах 2.2e-3, власні значення 2.3e-3, обумовленість 2.4e-3, основний показник 1.0e-3, лінія візування 0,018 град, схилення 0,007 град, проти порогів 1 % і 0,1 град; вільна мережа з рангом 8/9 і нульовим основним показником, нульовий простір розходиться на 0,006 град; NumPy на закоміченому якобіані з точністю 2e-13) | Незалежний маршрут у самому репозиторії. Кожен рядок якобіана виводиться заново центральною скінченною різницею 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 як межа Крамера–Рао для вказаного скороченого набору параметрів на вказаних ілюстративних вхідних даних: ефемерида центра Місяця, годинники, тропосфера та параметри орієнтації Землі зафіксовані в обох гілках, тож це не точність справжньої кампанії | VALIDATED |
| VM-7e8c3aaf | Коваріація координат точки місячної поверхні за розкладом затримок VLBI, окремо від коваріації земної станції | Третій вибір датуму, all-stations-fixed, що тримає кожну земну станцію й оцінює лише зв'язані з Місяцем координати МАЯКА — конфігурація, для якої насправді наводиться невизначеність точки місячної поверхні, бо координати земних станцій є входом моделі затримки, а не її невідомою. Вона існує тому, що коваріація рівня станції та коваріація точки поверхні є РІЗНИМИ ВЕЛИЧИНАМИ, розділеними плечем важеля ρ/B, і досі ніщо не заважало цитувати одну проти іншої. Видаваний блок beacon_link несе ρ, найдовшу базову лінію, плече важеля, форму рівнорозподілу для точки поверхні c·σ_τ·(ρ/B)·√(g/N), обчислену сигму маяка на координату та їхнє відношення — відношення null, а не оманливе, коли маяк не оцінюється або матриця дефіцитна за рангом. B береться як НАЙДОВША наявна базова лінія, найсприятливіша, тож відношення може лише занижувати. Може запускатися як datum = "all-stations-fixed" з estimate_beacon = true, що відхиляється з повідомленням, яке називає відсутній вхід, коли маяк не оцінюється |
lunar_vlbi_fim (композиція lunar_vlbi, fim, cio, lunar_frame, frames) | lunar_vlbi_fim::tests (7 тестів бібліотеки: кожне написання датума проходить круговий обхід через parse/as_str, а невідоме відхиляється; утримання кожної станції без маяка відхиляється з помилкою, що називає estimate_beacon; важіль стверджується РІВНИМ ρ/B, а рівнорозподіл маяка РІВНИМ рівнорозподілу станції, помноженому на нього, обидва до 1e-15, з додатковим твердженням, що важіль перевищує 10, тож два бюджети не можна сплутати на цій геометрії; опубліковану базову лінію фікстури закріплено на 10726,748 км, а її розклад із 49 відліків має давати строго менше за 49 взаємно видимих спостережень; виміряно, що спектр маяка на одній базовій лінії охоплює щонайменше п'ять декад, а отримане відношення стверджується вищим за 1 за AM-HM і вищим за 100 фактично; розкладка станції плюс маяка стверджується дефіцитною за рангом з ОБОМА обчисленими полями null, тоді як модельний компаранд усе ще повідомляється. Плюс запобіжник на самій фікстурі: ключ верхнього рівня, вставлений після масиву таблиць, натомість стає даними станції, тож точку вставки стверджено, а розібраний сценарій перевірено на наявність ключа — режим відмови — це прогін, що мовчки використовує іншу конфігурацію, ніж названа в тесті) |
Замкнені тотожності, без зовнішнього оракула, заявленого чи доступного. Плече важеля перевіряється проти ρ/B, а дві форми рівнорозподілу одна проти одної до 1e-15 — алгебраїчні тотожності, тож вони ловлять помилку проводки й нічого більше, і позначені як такі. Суттєвий результат MEASURED, а не заявлено: затримка від фіксованої базової лінії обмежує НАПРЯМ маяка, тож складник лінії візування потрапляє в матрицю інформації лише через член дальності ближнього поля, і тест зчитує отриману анізотропію з видаваного спектра, а не виводить її. AM-HM робить √(p/trace(M)) жорсткою нижньою межею, тож зв'язок ізотропного рівнорозподілу може лише ЗАНИЖУВАТИ, а відношення обчисленого до рівнорозподілу є саме тією анізотропією, яку він відкинув. MEASURED на парі Goldstone-подібна/Canberra-подібна, чия хорда становить 10726,748 км: за 112 вибраних днів 36 не допускають жодної взаємно видимої епохи за маски 10°, найбільше колись взаємно видимих — 17 із розкладу з 49 відліків, а в 73 придатні дні трикомпонентне відношення сягає від 113,9× до чотирьох порядків більше, медіана 1513×, тоді як обмеження двома поперечними напрямками, яких лінія візування не позбавляє, дає від 3,94× до 25,8×, медіана 7,8×. ЧОГО ЦЕЙ РЯДОК НЕ ЗАЯВЛЯЄ: жодного з цих показників як властивості справжньої кампанії. Він встановлює, що величина для точки поверхні тепер ОБЧИСЛЮЄТЬСЯ, а не припускається, і що її не можна мовчки міняти місцями з величиною рівня станції. Залишається ReferenceImpl/MODELLED: не існує опублікованої коваріації точки поверхні місячного VLBI, з якою можна було б перевірити, станції та місце маяка є ілюстративними, а не знятими, а ефемерида, годинники, тропосфера та параметри орієнтації Землі ЗАФІКСОВАНІ, тож це межа Крамера–Рао для скороченого набору параметрів і сама по собі оптимістична. Та сама величина на шляху ядра (маяк на Місяці DE440) перевірена у власному рядку «…, шлях ядра»; на цьому аналітичному шляху найменша сигма маяка на 3,9 % нижча за оракул SPICE того рядка, тому цей рядок залишається MODELLED | MODELLED |
| VM-b762f53b | Коваріація координат точки місячної поверхні за розкладом затримок VLBI, шлях ядра | Коваріація маяка за всіх фіксованих станцій у сценарії lunar-vlbi-fim (кожну земну станцію утримано, зв'язані з Місяцем координати маяка оцінюються самі) з маяком, розміщеним на Місяці JPL DE440, прочитаному власним зчитувачем ядер рушія (planetary_kernel_path; lunar_vlbi_fim::epoch_geometry_with, ephem_provider::KernelEphemeris). Від аналітичного шляху відрізняється лише центр Місяця; обертання тіла за IAU 2015, станції, обертання Землі та лінійна алгебра ті самі. Перевіреними виходами є набір спостережень, спектр інформації 3 x 3, ранг і число обумовленості, три зв'язані з тілом сигми маяка та їхнє СКВ, плече важеля та відношення обчисленого до рівнорозподілу на типовому розкладі. Може запускатися як сценарій lunar-vlbi-fim із datum = "all-stations-fixed", estimate_beacon = true і заданим planetary_kernel_path |
lunar_vlbi_fim (epoch_geometry_with, schedule, schedule_jacobian); ephem_provider (KernelEphemeris); naif_kernel | tests/lunar_vlbi_surface_point_spice_oracle.rs::surface_point_covariance_kernel_path_matches_spice_geometry_and_numpy (16 спостережень ідентичні; ранг 3/3; власні значення в межах 5.9e-5; обумовленість 5.9e-5; сигми маяка в межах 1.7e-3 проти 1e-2; RMS 2.9e-5; важіль 1.4e-8; сигми P2 3.9e-14 проти 1e-9); lunar_vlbi_fim::tests | Зобов'язальна гілка бібліотеки: NAIF SPICE Toolkit N0067 (spiceypy 8.2.0, MIT) на de440s, earth_latest_high_prec (ITRF93 з UT1 і рухом полюса) і місячних системах відліку DE440, маяк зафіксовано в MOON_ME; кожен рядок якобіана є центральною різницею 3 км збіжної ньютонівської різниці світлових запізнень (власний код світлового запізнення оракула M069, імпортований), ніколи не часткова Kshana; видимість перебудована за висотами WGS-84; NumPy 2.3.5 / SciPy 1.18.1 (BSD-3-Clause, LAPACK) eigh і inv. Гілка P2: NumPy на збереженому якобіані рушія. Попередньо зареєстровано (4a51256) до появи фікстури чи оракула, з порогами 1 % на власних значеннях, обумовленості, сигмах, СКВ і відношенні, 1e-4 на плечі важеля, точним набором спостережень і рангом; P2 1e-9. Розкрито: порівняння лише рушія аналітичного та ядерного Місяця (3,9 % на сигмі y) було виконано до попередньої реєстрації, щоб вибрати шлях ядра, і зазначено там. Результат: обидві гілки збігаються, найгірше 1.7e-3 (сигма y маяка 0,081211 м проти 0,081351 м). Мутація: транспонування обертання тіла в частковій похідній маяка провалює обидві гілки. Обидві сторони читають DE440, тож збіг перевіряє геометрію та лінійну алгебру на DE440, а не сам DE440. Поза твердженням: точність точки поверхні справжньої кампанії (годинники, тропосфера й орієнтація Землі зафіксовані; ілюстративні станції та місце маяка) і типовий аналітичний шлях (рядок вище, що залишається MODELLED: на аналітичному Місяці сигма y на 3,9 % нижча за цей оракул) | VALIDATED |
| VM-337e1bd0 | Місячний диференціальний PNT — бюджет залишку лінії корекції | Три члени, які диференціальна корекція набирає між епохою, в яку її обчислено, та епохою, в яку її використано, кожен раніше залишений як немоделюваний запас: похибка зйомки опорної станції (корельована між супутниками, незалежна від базової лінії, перенесення положення ~1:1 і доведено не підсилюється DOP), старіння корекції (заморожений вектор похибки орбіти, повторно спроєктований на лінію візування, на яку власний пропагатор рушія ставить супутник на одну затримку пізніше, плюс дрейф годинника c·σ_y(τ)·τ за калібрувальним степеневим законом) і рівномірне квантування лінії за точної повної шкали ±(orbit_err + clock_err) з дисперсією step²/12. Подано і в областях дальності, і положення, поряд із наявними залишком і рівнем захисту — ніколи замість них — із кривою затримки поряд з одиничним показником | lunar_dpnt | lunar_dpnt::tests (суто адитивний запобіжник, чия різниця набору ключів — рівно {correction_link, units}, а кожне наявне значення ідентичне біт у біт літералам, знятим до зміни; похибка обстеження НЕ декорелюється з базовою лінією, тоді як орбітальний член декорелюється, і переживає нульову базову лінію, де орбітальний член точно нульовий — структурна перевірка, що ловить підключення члена не туди; похибка станції 1 м переноситься 1:1 і доведено, що не підсилюється DOP; нульова затримка відтворює незістарений залишок біт у біт, а залишок монотонний за затримкою, причому крива, що випускається, дорівнює прямим прогонам; крок квантування зменшується вдвічі точно на біт і σ² = step²/12, а повна шкала відстежує ін'єктовані величини; кожен член, вимкнений по черзі, відновлює два інших у квадратурі; рівна σ на супутник поширюється точно в σ·PDOP, і цей PDOP збігається з orbit::dop; кожне поле, що випускається, має одиницю й клас походження, перевірено в обох напрямках) | Замкнені тотожності та самоузгодженість: дисперсія рівномірного квантувача step²/12, точне поширення коваріації (GᵀG)⁻¹GᵀRG(GᵀG)⁻¹, що згортається до σ·PDOP для рівних σ, перенесення 1:1 члена зйомки як наслідок û_user ≈ û_ref і замикання квадратури при вимкненні. Перехресна перевірка PDOP з orbit::dop ділить нормальну матрицю [−û, 1], тож це перевірка узгодженості і позначена як така, а не незалежний оракул. ExternalDataset не доступний і не заявлений: жодна місячна поверхнева станція не має опублікованої точності зйомки, жодна місячна диференціальна лінія корекції не має опублікованої затримки чи формату повідомлення, а результат квантування є замкненою формою, а не вимірюванням. RTKLIB — уже зовнішній оракул коду для ядра одинарних різниць і зважених найменших квадратів — можна було б запустити зі свідомо хибно знятою базою, щоб підтвердити перенесення зйомки 1:1, але це незалежний код над тією самою алгеброю лінії візування першого порядку. ВЕЛИЧИНИ — MODELLED: типове значення зйомки є власним розподілом реалізації місячної системи відліку цього крейта, а не виміряною станцією, затримка й кількість бітів є ILLUSTRATIVE вхідними даними, а зростання самого ВЕКТОРА похибки ефемерид трансляції не моделюється взагалі — про що сказано у видаваному рядку закону старіння, бо це член, який найімовірніше домінуватиме на справжній лінії | MODELLED |
| VM-367e840f | Карта покриття та точності місячної опорної станції | Свіп Монте-Карло моделі місячного диференціального PNT над південнополярною сіткою користувачів і добою епох (вид lunar-station-coverage): для диференціальної опорної станції на відомому південнополярному місці, для кожної точки та по області, процентильна виправлена й невиправлена похибка положення (3-D, горизонтальна, вертикальна), доступність із причиною для кожної недоступної епохи (user_lt4, station_missing_sat), покриття проти порогу, вказаного до прогону, рівні захисту DO-229E, радіус покриття на азимутальний сектор і бюджет лінії корекції на станції та в найгіршій точці. Не є твердженням про характеристики жодної реальної системи; не афілійовано з жодним агентством і не схвалено ним |
lunar_station (над lunar_dpnt, lunar_service) | tests/lunar_station_coverage_reference.rs (one_point_one_epoch_one_trial_reduces_to_lunar_differential_pnt: до 1e-12 м із шумом приймача та без нього; zero_baseline_floor_is_zero_in_every_trial: 0 до 1e-9 м; survey_floor_matches_the_survey_transfer_prediction: p95 у смузі 5 %, заявленій до прогону; coverage_is_non_decreasing_in_the_threshold; corrected_error_grows_with_distance_along_an_azimuth; three_satellites_are_unavailable_with_a_reason_and_no_error; a_satellite_the_station_does_not_see_is_reported; deterministic_for_a_seed_and_moved_by_another; the_work_guard_refuses_an_oversized_grid; the_bundled_scenario_states_a_source_for_every_input; the_result_is_labelled_modelled_with_the_honesty_statement); tests/lunar_station_numpy_oracle.rs (попередньо зареєстроване перерахування numpy, записане разом із його промахом); lunar_service::tests::south_polar_ring_grid_is_the_published_comparison_grid; tests/lunar_differential_pnt_reference.rs, а також реєстр і міжплатформні еталонні результати (golden) без змін (адитивність); tests/field_units_global.rs (кожне випущене поле описано, без винятків) | Арифметика, переобчислена незалежним скриптом 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; ніщо тут не є твердженням про жодну реальну систему | MODELLED |
| VM-2ecad2c1 | Місячні маски горизонту рельєфу за вказаним профілем або полярною DEM | Азимутально залежні маски горизонту для кожного місця для виду lunar-station-coverage (опорна станція та кожна точка користувача) і сітки moonlight-service-volume та її місця експорту для кожного супутника (кожен рядок експорту отримує clears_terrain), у форматі таблиці обрію 0,36 (skyline::Skyline, лінійна за азимутом із замиканням за 360 град.; вказаний профіль і горизонт DEM на одному місці поєднуються як їхній поточковий максимум): вказаний [terrain] station_horizon або user_horizon із міткою джерела та/або горизонт, прорахований променями над південнополярною стереографічною DEM (гратчастий полярний формат LRO LOLA, прочитаний з дескриптора, що фіксує його розмір і SHA-256, або тайл широта/довгота realdata::lola_dem із [terrain] dem_tile_path, відлунений із його SHA-256) уздовж великих кіл місячної сфери з точною кривиною, від вказаної висоти щогли, за вказаного азимутального кроку та дальності. Супутник зараховується на місці, коли він долає пласку mask_deg і горизонт на своєму азимуті (lunar_service::topocentric); епоха, на якій горизонт залишає менше чотирьох супутників у точці, де пласка маска дає чотири, зараховується як причина недоступності terrain_masked. Вбудована DEM є вирізкою з продукту LOLA LDEM_75S_240M у суспільному надбанні, ресемпльованого блоковим середнім 5 x 5 до 1200 м (data/lunar-dem/NOTICE.md). За відсутності кожне місце зберігає пласку маску, а кожен документ побайтово ідентичний | lunar_terrain (над skyline, lunar_service::topocentric_basis); lunar_station; lunar_service (coverage_masked, masked_visible) | lunar_terrain::tests (bare_sphere_horizon_is_the_dip: простежування променя відтворює -acos(R / (R + a)) до 1e-3 град на кожному азимуті; a_cone_on_a_lat_lon_tile_matches_the_analytic_cone: той самий конус, вибраний на плитку широти/довготи 0,005 град, збігається з аналітичним конусом до 0,25 град; a_lat_lon_tile_is_none_outside_and_wraps_longitude; crater_in_plateau_matches_the_closed_form: кратер із плоским дном на сфері, спостерігач у центрі та на 4 км і 7 км від нього, проти замкненої висоти краю atan2((R + H) cos s - (R + a), (R + H) sin s), де s — зі сферичного рівняння перетину краю, до 0,01 град на кожному азимуті; rasterised_cone_matches_the_analytic_cone: конус, растеризований на полярну стереографічну сітку 200 м і прочитаний через вибірник сітки, збігається з аналітичним конусом до 0,25 град; projection_round_trips_through_the_rasteriser_layout; bilinear_reproduces_a_plane_exactly; stated_horizon_goes_through_the_skyline_rules; an_empty_skyline_is_exactly_the_flat_test); tests/lunar_station_terrain.rs (without_terrain_the_document_has_no_terrain_keys; a_zero_horizon_under_a_positive_mask_is_the_flat_run, для обох видів; a_horizon_only_removes_satellites_and_a_wall_removes_everything: user_lt4 зберігає свою плоску кількість, а епохи, яких коштує горизонт, є terrain_masked (сама доступність може зрости, бо горизонт може приховати супутник, якого станція не бачить), а горизонт 89 град на станції не лишає нічого доступного; bad_terrain_sections_are_refused; the_vendored_crop_loads_and_is_oriented_as_the_source: дна кратерів Шеклтон і Гаворт низькі, масив Малаперт високий, дзеркальне зображення — ні; the_station_site_horizon_from_the_crop; service_volume_dem_points_outside_the_crop_keep_the_flat_mask; a_lat_lon_dem_tile_gives_the_station_the_crop_horizon: плитка, передискретизована з вбудованої вирізки, дає станції горизонт вирізки до 0,22 град (межа 0,5 град, зафіксована до прогону), з відлунням плитки та одиницями, а dem_path разом із dem_tile_path відхиляється; the_export_site_is_masked_by_the_terrain: кожен рядок експорту проходить над рельєфом рівно тоді, коли він видимий і не нижче за горизонт місця на його азимуті, геометрія не зсувається, CSV отримує стовпець лише з рельєфом; the_horizon_matches_the_preregistered_numpy_ray_cast); tests/prediction_frozen.rs, а також реєстр і міжплатформні еталонні результати (golden) без змін (адитивність) | Замкнені поверхні (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 м згладжує субкілометровий рельєф, який розв'язують опубліковані дослідження освітлення, тож горизонти DEM є MODELLED лінією візування над ресемпльованою справжньою DEM, а не перевіреним горизонтом. Місце станції та орбітальне угруповання залишаються ILLUSTRATIVE; ніщо тут не є твердженням про жодну реальну систему | MODELLED |
| VM-aa6de9e6 | Багатопроменевість місячної опорної станції та члени апаратури приймача | Необов'язкова секція [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))); міжканальні зсуви для кожного каналу, сталі за випробування, на користувачі та на станції. Члени станції входять у її корекції, члени користувача — у сирі та виправлені вимірювання, кожен на власному зерновому потоці. За відсутності кожен документ не змінюється | lunar_receiver; lunar_station | lunar_receiver::tests (multipath_is_the_do229_form; dll_noise_matches_a_hand_computation: 0,825279 м за 45 дБ-Гц, 0,5 Гц, d = 1, 20 мс; bad_sections_are_refused); tests/lunar_station_ext.rs (receiver_absent_or_silent_is_the_plain_run; zero_baseline_multipath_is_the_difference_of_two_receivers: вибіркова сигма sqrt(2) a у межах 6 %; station_multipath_is_gauss_markov: кореляція за лагом 1 exp(-dt / tau) у межах 0,01, одинична дисперсія у межах 2 %; inter_channel_biases_are_constant_over_a_trial); tests/prediction_frozen.rs і еталонні результати (golden) без змін (адитивність) | Замкнені форми та статистики власних вибірок моделі (InternalConsistency): формула DLL проти ручного обчислення, форма DO-229, різниця двох приймачів з нульовою базою, кореляція Гауса–Маркова з лагом 1. Не існує місячного вимірювання багатопроменевості чи приймача для порівняння; значення ILLUSTRATIVE, і ніщо тут не є твердженням про жоден реальний приймач | MODELLED |
| VM-2c796f73 | Зростання похибки ефемерид місячної опорної станції за затримку корекції | Необов'язковий вхід 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) | lunar_station (orbit_growth_range_sigma_m) | tests/lunar_station_ext.rs (growth_absent_or_zero_is_the_frozen_error_run; the_growth_term_has_the_closed_form_sigma: різниця похибки лінії із зростанням і без нього має вибіркову сигму rate tau / sqrt(3) у межах 6 % за 1600 вибірок; linear_growth_is_the_first_order_propagated_error: похибка швидкості dv, поширена вбудованим інтегратором двох тіл від орбіти сценарію, зсуває положення на dv tau у межах 1 % за 60 с і 600 с); tests/lunar_station_published_oracle.rs::k5_growth_addendum_run (ігнорується, записане доповнення) | Замкнена сигма члена зростання та перевірка поширення першого порядку (InternalConsistency). Доповнення K5 (tests/fixtures/lunar_station_published/ADDENDUM-LRS03.md, попередньо зареєстровано окремо в 59d88248): K5 не виконується за кожної швидкості, виправлений p95 3-D 369,8 м, 2315 м і 22797 м проти порогу 1,5 м (292,96 м записано без зростання), як зазначено до прогону. Жодне публічне джерело не дає швидкості місячного зростання: ILLUSTRATIVE | MODELLED |
| VM-bc66e5ef | Режими розв'язку місячної опорної станції: обмеження за висотою, три супутники, вікно для нерухомого користувача | Необов'язковий розділ [solution] у lunar-station-coverage (LRS-06): рядок псевдовимірювання висоти up . dx = e_h із заданою 1-сигмою, що зважується разом із рядками дальностей; мінімум у три супутники дозволено лише з ним; зважений розв'язок методом найменших квадратів за останні window_epochs епох зі спільним нерухомим положенням і одним годинником на епоху (відповідь фільтра для нерухомого положення без шуму процесу на тих самих даних; похибки епох вважаються незалежними). Якщо розділ відсутній, розв'язок за знімком і кожен документ лишаються без змін. Доповнення до порівняння з опублікованими твердженнями за стилем розв'язку джерел, попередньо зареєстроване окремо | lunar_solution; lunar_station (solution_figures) | lunar_solution::tests (one_epoch_without_height_is_the_snapshot_solve: дорівнює lunar_dpnt::position_error_vector_from_range_errors до 1e-8 м, нещільний рядок висоти нічого не змінює, щільний фіксує похибку висоти; three_satellites_need_the_height_row; a_window_shares_the_position; bad_sections_are_refused); tests/lunar_station_ext.rs (the_default_solution_mode_is_the_snapshot_solve: кожна величина до 1e-6 відносно; height_aiding_and_a_window_do_what_they_say); tests/lunar_station_published_oracle.rs::solution_style_addendum_run (ігнорується, записане доповнення) | Зведення знімка та замкнені випадки розв'язувача (InternalConsistency). Доповнення (tests/fixtures/lunar_station_published/ADDENDUM-LRS06.md, попередньо зареєстроване окремо в 001ca100) з обмеженням за висотою 1 м, трьома супутниками та вікном із 6 епох (ILLUSTRATIVE налаштування; джерела називають фільтр, обмеження за висотою та три супутники, але не їхні налаштування): K1–K5 не проходять, а K6 проходить, 1 із 6, як у записаному прогоні; скоригована похибка p95 у 3D для R300 зменшується з 280,6 м до 2,11 м (горизонтальна 0,90 м, не оцінювалася), а покриття лишається 0. Припущення про незалежність вікна працює на його користь. Це не твердження про жодну реальну систему | MODELLED |
| VM-315f29f2 | Точність і покриття місячної опорної станції порівняно з опублікованими твердженнями | Сценарій lunar-station-coverage, виконаний за публічними припущеннями з опублікованих матеріалів про місячну диференціальну опорну станцію (чотири навігаційні супутники на 24-годинних заморожених еліптичних орбітах, SISE 10 м при 95 %, шум коду 0,30 м, затримка поправок 1 с і 600 с, субдециметрова зйомка станції, опублікована ділянка-приклад станції, кола навколо південного полюса радіусом 300 км і 600 км), і оцінений за числовими твердженнями джерел за шістьма односторонніми порогами, попередньо зареєстрованими до прогону: покриття всього південного полюса з субметровим p95 (K1, K2), субметровий і дециметровий скоригований p95 (K3, K4), субметровий рівень при затримці 600 с (K5) і збереження точності від бази 10 км до 500 км (K6) | lunar_station (над lunar_dpnt, lunar_service) | tests/lunar_station_published_oracle.rs::recorded_finding_one_of_six_bars_passes (записані величини проти зареєстрованих порогів); tests/lunar_station_published_oracle.rs::published_claims_comparison_run (ігнорується, близько 7 с у release: перезапускає шість зареєстрованих випадків і стверджує записані величини) | Еталон: числові твердження п'яти публічних джерел, зареєстровані з 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, а скоригована похибка p95 у 3D дорівнює 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 м у джерелах). Симуляції джерел використовували фільтр, обмеження за висотою та три супутники у спільній видимості, чого сценарій за знімком не моделює. Тому порівняння не підтверджує й не спростовує опубліковане твердження «субметрова точність на всьому південному полюсі». Воно показує, що результат цієї моделі залежить від орбіт, які не опубліковані. Це не твердження про жодну реальну систему; жодного зв'язку з будь-яким агентством чи його схвалення немає | MODELLED |
| VM-dc6ee511 | Ядро розрахунку рівня захисту місячного ARAIM | Крок переходу від геометрії до коваріації для місячного рівня захисту — (GᵀG)⁻¹ для геометрії «усі в зоні видимості» та кожної підгеометрії з однією несправністю, спроєктоване на місцеву вертикаль і слід горизонтального блока, — та його статистичне ядро: множник детектора за Бонферроні, гауссів верхній хвіст кожної гіпотези несправності та розв'язання кореня, що відображає бюджет ризику цілісності на рівень захисту, для місячного обсягу обслуговування з 7 точок | lunar_service (lunar_protection_level, lunar_protection_level_with_sigma), lunar (lunar_araim_with_sigma), raim (araim_raim) | tests/lunar_protection_level_reference.rs (7 випадків об'єму служби — південнополярний, середніх широт, екваторіальний, піднесене нагір'я — від 6 до 19 супутників, σ_URE 10/30/60 м, P_HMI від 1e-3 до 1e-7, рівні захисту в діапазоні від 1.7e2 до 6.9e3 м: HPL/VPL проти складеного оракула RTKLIB + SciPy, найгірше |Δ| 1.061e-8 м і 1.044e-8 м проти допуску 1e-6 м; DOP проти власної (GᵀG)⁻¹ RTKLIB з відн. точністю 1.790e-14; K_fa проти scipy.stats.norm.isf з відн. точністю 2.716e-11; три негативні контролі — зсув супутника на 5 км, відносна зміна σ_URE на 1e-6 і на 0,1 % жорсткіший P_HMI — кожен, як виміряно, зсуває рівень захисту щонайменше в 171× допуску; і захист від застарілої фікстури, що закріплює закомічену геометрію біт у біт до того, що дають власні код орбітального угруповання та видимості рушія, тож зелений результат не може вціліти, якщо орбітальне угруповання під ним зміниться) | Дві усталені сторонні реалізації в поєднанні, обидві виконані офлайн, з повною регенерацією фікстури та перевіркою на побайтову ідентичність. RTKLIB 2.4.2-p13 (T. Takasu, 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: спільна замкнена форма — це спільне припущення, тож цей рядок охоплює помилкове обчислення цього рівняння, а не помилковий вибір самого рівняння. Жодна стороння реалізація MHSS ARAIM недоступна (RTKLIB не має точки входу для рівня захисту, такого дистрибутива PyPI не існує, Stanford MAAST є на MATLAB), що й є невиконаним покращенням | VALIDATED |
| VM-b4123360 | Рівні захисту ARAIM MHSS порівняно з опублікованими еталонними векторами | Саме рівняння рівня захисту з розділенням розв'язків за множинними гіпотезами: зважений метод найменших квадратів для всіх у зоні видимості та для кожного режиму несправності на геометрії схід/північ/вгору з одним станом годинника на орбітальне угруповання, сигми підрозв'язків, сигми розділення розв'язків і односторонні проєкції номінального зміщення, пороги K_fa за Бонферроні, розподіл ризику неконтрольованої несправності та VPL/HPL, що розв'язують рівняння ризику цілісності. Можна запустити як тип сценарію araim-reference-check |
araim_reference (araim_reference_protection_levels, published_vectors), raim (araim_protection_level, araim_integrity_risk, normal_quantile) | tests/araim_reference_vectors.rs (2 опублікованих вектори + 6 негативних контролів, фікстура tests/fixtures/araim_reference/wgc_araim_reference_vectors.txt: відкидання номінального зміщення пропускає опублікований VPL на 2,6457 м, помилка ISM у 10 % — на 0,2798 м, K_fa на 57 режимах замість 12 — на 0,4015 м, помилка дисперсії цілісності +2 %/+5 % — на 0.0750/0.1971 м — а помилка +1 % зсуває його лише на 0,0339 м, що повідомлено як межу роздільної здатності перевірки, а не приховано; відповіді двох документів кожна розходиться з відповіддю іншого більше ніж на допуск, тож вектори не взаємозамінні; закомічена фікстура та скомпільовані константи є двома незалежними транскрипціями, щодо яких стверджується збіг, тож опубліковане число не можна змінити з одного боку, щоб перевірка пройшла; і C_int − C_acc = σ²_URA − σ²_URE = 0,3125 м² виконується для всіх 40 транскрибованих дисперсій, арифметична тотожність, яку порушила б помилка транскрипції) | EU-U.S. Working Group C ARAIM Technical Subgroup, 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 | VALIDATED |
| VM-23634551 | 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, відхиляються, а не обрізаються | araim_reference (add_v42_subset_plan, add_v42_protection_levels_to_order); raim (araim_subset_raim, SubsetRule) | tests/raim_multi_sv_subsets.rs (deeper_orders_change_nothing_when_pairs_suffice; triples_are_refused_at_order_two_and_planned_deeper: N_fault,max >= 3, немоніторений ризик у межах P_THRES, підмножина, що вилучає три або більше супутників, моніторується, а понад десять моніторених апріорних ймовірностей перевиведено незалежно як P_no fault q^k до 1e-12; a_two_satellite_fault_is_found_as_a_pair: без тривоги за відсутності несправності, а зміщення 30 м на двох супутниках виявляється з парою як підмножиною найбільшого нормалізованого розділення); tests/araim_reference_vectors.rs і tests/integrity_araim_stanford_oracle.rs без змін (шлях порядку 2 — той, що перевірено за MAAST) | Внутрішня узгодженість (InternalConsistency): зведення порядку 2 до перевіреного MAAST шляху ADD v4.2, незалежне повторне виведення апріорних ймовірностей і сконструйована несправність двох супутників. Запусків MAAST чи RTKLIB за межами пар не проводилося, тож глибші множини гіпотез і рівні захисту RAIM за підмножинами зовнішньо не перевірені. araim_subset_raim поділяє спрощення araim_dual_raim (одна сигма для цілісності й точності, один годинник, звичайний нормальний хвіст): він не відповідає ADD | MODELLED |
| VM-f6b7e282 | RAIM поряд із показниками якості holdover годинника | Необов'язковий розділ [integrity] сценарію clock (clock_integrity::run): із заданої ділянки та пресетів орбітальних угруповань (geometry::sky_geometry), на кожній епосі цілісності, поки часова шкала GNSS не заперечена, знімковий RAIM (raim::snapshot_raim: тест хі-квадрат за парністю, нахилові рівні захисту) на супутниках над маскою із заданими гауссовими залишками з заданою сигмою та необов'язковим заданим зміщенням; окремий блок integrity_fom із вердиктами за епохами, рівнями захисту та доступністю. Заперечені епохи повідомляються як недоступні, ніколи не екстраполюються; показники якості holdover не змінюються, а без розділу вивід побайтово ідентичний | clock_integrity (run, sky_at, IntegrityCfg); scenario (Scenario::integrity); report (RunResult::integrity_fom); api (диспетчеризація годинника) | tests/clock_integrity.rs (the_block_is_separate_and_absent_by_default: величини holdover без змін, 111 епох відмови недоступні без рівня захисту, відхилено за runs > 1; protection_levels_are_the_snapshot_raims_on_the_same_sky: HPL і VPL кожної вибраної епохи точно дорівнюють snapshot_raim із нульовим залишком на тому самому пресетному небі, а прогін без несправності не піднімає тривоги; a_stated_bias_is_detected_while_it_lasts: зміщення 60 м викликає тривогу рівно на 10 епохах, які воно охоплює; every_integrity_field_has_a_unit); clock_integrity::tests; еталонні результати (golden) годинника без змін | Внутрішня узгодженість (InternalConsistency): рівні захисту — це рівні snapshot_raim, який перевірено за RTKLIB у власному рядку, перераховані на тій самій геометрії; поведінка без несправностей і з уведеною несправністю. Небо — це репрезентативна пресетна геометрія (не датований альманах), залишки синтетичні, а сигма, порогові значення тривоги та ймовірності — задані вхідні дані; ніщо тут не є твердженням про доступність реального приймача | MODELLED |
| VM-313f2545 | Просторова, зашумлена, багатосімейна спостережуваність цисмісячної дуги за довжиною | Поріг спостережуваності за довжиною цисмісячної дуги в ПРОСТОРОВІЙ шестистановій CR3BP, а не в плоскій чотиристановій, для сімей DRO, гало L2 та майже прямолінійного гало L2, із шумом вимірювань у граміані та ДВОМА критеріями, що повідомляються, бо єдиного чесного немає: опублікований критерій рангу, який доведено інваріантним до гомоскедастичної сигми вимірювань (відбілювання множить матрицю спостережуваності на скаляр, не змінюючи відносного спектра сингулярних значень, а отже ранг, дефект і число обумовленості), і критерій оцінюваності — перша дуга, на якій формальна 1σ невизначеність положення початкового стану головного апарата падає нижче заданої межі, — який якраз і рухається з шумом. Кожен поріг несе брекет сітки епох, у якому він лежить; недосяжний критерій має значення null із причиною. Плоский режим лишається типовим, а сім'ї поза площиною там відхиляються, а не сплющуються до стану, що не може їх подати | cislunar_observability, observability_gramian, intersat_range, cislunar_srif | cislunar_observability::tests і observability_gramian::tests (типовий документ зафіксовано біт у біт за FNV-1a його JSON, підсумку та SVG, причому явні типові значення стверджуються як нульова дія, а вісім ключів розширення стверджуються ВІДСУТНІМИ, щоб захоплення не можна було перегенерувати в самопорівняння; адитивний блок units виключено із заморожування тим, що його вилучають і повторно хешують проти сталої, зафіксованої до його появи, що доводить, а не припускає, що ніщо випущене не зрушило; інваріантність рангу за гомоскедастичної сигми стверджується за σ = 0, 0,1, 1, 10, 100 м; σ_pos, як стверджується, масштабується точно лінійно з σ до 1e-6 відносно; нуль-простір DRO стверджується точно як осі координат z і ż із розділенням двох причин — рядок дальності між компланарними апаратами має û_z = 0, а позаплощинний блок CR3BP точно розв'язується за z = 0; просторові якобіани проти центральних скінченних різниць і проти незалежної 3-D спостережуваної швидкості зміни дальності крейта; позаплощинні сімейства відхиляються в планарному режимі) |
Незалежний ранг за рядково-східчастою формою методом Гауса з частковим вибором головного елемента підтверджує кожен вердикт про ранг для шести станів: інший алгоритм, що не має спільного коду з перевіреним шляхом власних значень/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 і двома точно нульовими власними значеннями, структурний дефект, який не усуває жодна довжина дуги | MODELLED |
| VM-9ab85050 | Похибка прогнозу орієнтації Землі в операційному стилі, виміряна як прогноз проти остаточних значень | Підгонка методом найменших квадратів зміщення плюс швидкості на замикальному вікні плюс основні періодичні члени — річний, піврічний і два головні зональні припливи для UT1; Чандлера, річний і піврічний для полюса — екстрапольована з перенесенням останнього залишку у вікні вперед: клас, який використовує IERS Bulletin A, замість предиктора персистентності, на якому трималися опубліковані горизонти. Оцінено єдиним чесним способом: прогноз на T+h, побудований за швидкими рядками Bulletin A на момент T або раніше, виміряний проти ПІЗНІШЕ опублікованого остаточного значення Bulletin B на T+h, з персистентністю, оціненою на тому самому наборі епох проти тих самих остаточних значень поряд. Цільова епоха без опублікованого остаточного значення відкидається, а не переоцінюється проти швидкого стовпця; періодичний член, який вікно не може обмежити, повідомляється як відхилений із циклами, які воно насправді охоплює; неповне вікно відхиляється, а не тихо скорочується | frame_eop, realtime_frame_eop | frame_eop::tests, realtime_frame_eop::tests і tests/operational_eop_predictor_reference.rs (відновлення коефіцієнтів аналітичного сигналу до 1e-9 за 365-добового вікна; підгонка зміщення плюс швидкість дорівнює замкненому нахилу та перетину звичайних найменших квадратів до 1e-12 на реальних рядках; ДВА детектори заглядання вперед, що руйнують швидкі стовпці UT1 і полюса кожного рядка після епохи випуску — залишаючи фінальні дані Bulletin B неушкодженими — і вимагають побітово ідентичного виходу, підтверджено мутацією, що перетворює 10 тестів на червоні, коли бар'єр підгонки послаблюється рівно на одну добу; незалежно перебудований перелік епох; блок Bulletin B цілі викреслено, і показано, що епоха залишає таблицю; допуск членів перевірено за 6, 15, 150 і 365-добових вікон; монотонні кількості рядків; а заморожене захоплення типового звіту до зміни стверджується поле за полем без допуску, що додатково стверджує, що захоплення не містить нових ключів, тож його не можна непомітно перегенерувати в самопорівняння); tests/operational_eop_predictor_bulletin_a_oracle.rs::predictor_mae_against_bulletin_a_and_the_pcc_range_finding; tests/operational_eop_ls_ar_bulletin_a_oracle.rs::ls_ar_predictor_against_bulletin_a_finding; tests/eop_prediction_beyond_table.rs (розширення EopSeries::with_ls_ar_prediction за останнім рядком: відповіді в таблиці побітово ідентичні, прогнозні рядки дорівнюють ls_ar_predict, аргументи системи відліку за таблицею йдуть за прогнозом замість обрізання; внутрішня узгодженість) | Три незалежні маршрути, жоден з яких не є опублікованим показником точності прогнозу. (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-добовим вікном крейта MAE UT1 предиктора становить від 2.4x до 12.6x від Bulletin A на 1–10 діб (поріг 1.5x) і 5,32 мс на 10 діб, поза діапазоном 0,36–3,13 мс 2nd EOP PCC; полюс становить від 1.5x до 1.85x від Bulletin A (у межах 1.5x лише на 6 і 7 діб); не виконуються 19 із 21 попередньо зареєстрованих умов. Виправлення до маршруту (3): рядки продукту 2026, з якими порівнювали, мають позначку IERS I (виміряно), а не P, тож ці показники узгодженості стосуються виміряних швидких значень, а не прогнозів Bulletin A. 0,30 раунд 2, предиктор на основі найменших квадратів плюс авторегресії з аналітично вилученими зональними припливами, проти 178 архівних випусків Bulletin A за порогом раунду 1 (попередньо зареєстровано c93605b4), висновок (лишається MODELLED): виконуються 12 із 21 умов; MAE UT1 становить від 1,73 до 2.11x від Bulletin A на 2–10 діб (поріг 1.5x), тоді як полюс у межах 1.27x на кожному випередженні. 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 мс) | MODELLED |
| VM-55f1a043 | Місячний датум системи відліку з кампанії спостережень | Семипараметровий датум Гельмерта, поширений із СИМУЛЬОВАНОЇ КАМПАНІЇ СПОСТЕРЕЖЕНЬ, а не відновлений із введеного перетворення. Земні станції спостерігають за джерельним каталогом місячних поверхневих маяків за явним розкладом; частинні похідні затримки місячного VLBI накопичуються в інформаційну матрицю Фішера координат маяків і проводяться крізь дизайн Гельмерта A = [I₃ | [p]ₓ | p] у H = AᵀM_bA, тож повідомлена точність датума є функцією програми спостережень — точно лінійною за сигмою затримки та монотонною за дугою через лібрацію, яку звіт ВИМІРЮЄ. Дефект датума є предметом, а не виноскою: ранг, дефект, число обумовленості, спектр, ненаглядні напрямки в семипараметровому базисі, найслабший напрямок навіть за повного рангу та частка кожного параметра в ньому випускаються за кожного прогону, а будь-який параметр, який кампанія не обмежує, публікується як NULL зі статусом. Кореляція похибок маяків MEASURED, а не припускається — точно нуль за нерухомих станцій і виводиться з її ціною, коли станції оцінюються. Можна запустити як тип сценарію lunar-frame-campaign |
lunar_frame_campaign (composing lunar_vlbi, lunar_vlbi_fim, fim, lunar, lunar_frame_realise, frames, cio, lunar_frame) | lunar_frame_campaign::tests (21 бібліотечний тест: проєкт Гельмерта порівняно із центральною скінченною різницею lunar_frame_realise::apply_helmert — модуля, для якого призначено датум, який не обчислює жодної похідної й тому фіксує угоду про знак [p]ₓ — усі 84 записи проєкту збігаються з точністю до < 1e-6; чисте зміщення мережі зчитується як чисте зміщення з витоком < 1e-6 в інші шість параметрів; сигма датума точно лінійна щодо сигми затримки з точністю 1e-8 за 3-кратної зміни для всіх семи параметрів; дуга 16 год виміряна гіршою, а дуга 48 год виміряна кращою за 24 год, причому виведений перебір лібрації впорядковано так само; найгіршу вісь зміщення стверджено як ДОМІНАНТНУ вісь окремо виміряного тілозакріпленого напрямку на Землю, і гіршу за інші більш ніж у 5 раза, — фізичний оракул, про який у розв'язувачі нічого не відомо; три колінеарні маяки дають дефект із усіма сигмами датума NULL, а нульові напрямки виведено в семипараметровому базисі; offblock_fraction і міжмаякова кореляція точно 0,0 за фіксованих станцій і обидві > 0 за оцінюваних; цифри ін'єктованого перетворення в блоці порівняння показано рівними незалежному прогону цього сценарію з точністю 1e-14 відносно, а не переписаними; захист від появи в документі будь-якого ін'єктованого чи відновленого датума; емісію lunar-frame-realisation зафіксовано побайтово за FNV-1a-64 над json‖summary‖svg для трьох форм входу, відбиток знято до початку роботи); tests/lunar_vlbi_campaign_spice_oracle.rs::lunar_frame_campaign_finding_stations_estimated_p2_precision (з обмеженням; суворий lunar_frame_campaign_matches_spice_geometry_and_numpy залишається проігнорованим); tests/lunar_frame_campaign_mpmath_oracle.rs::lunar_frame_campaign_datum_matches_mpmath_extended_precision (висновок; рішення засновника 2026-10-02, варіант A: цей рядок залишається MODELLED і не запозичує статусу окремого рядка; відносно 50-значного оракула mpmath, попередньо зареєстрованого як 804662d5, сигми датума рушія з оцінюваними станціями лежать у межах своєї апріорної межі зворотної похибки, відхиляючись на 9.7e-6 на 2024-01-01, а поріг 1e-9 був нижчим за те, чого досягає будь-який шлях у подвійній точності, найкращий, проєкція QR у NumPy, відхиляється на 5.5e-9; докази підтримують окремий рядок «Коваріація датума місячної системи відліку з оцінюваними станціями, відносно розширеної 50-значної точності»); tests/lunar_frame_campaign_pinv_fallback.rs::finding_step0_fresh_beacon_information_falls_back (зафіксовано); tests/lunar_frame_campaign_cond_bar_oracle.rs::finding_p2_condition_scaled_bar_not_met_on_the_estimated_scenarios (зафіксовано) | Замкнені тотожності та незалежний внутрішньорепозиторний маршрут без заявленого зовнішнього оракула. Дизайн Гельмерта — єдина нова похідна в модулі — виведено заново центральною скінченною різницею 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: опублікованої пари місячної кампанії VLBI і коваріації датума не існує, мережа станцій і сигма затримки є 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 | MODELLED |
| VM-ca139c50 | Незалежне підтвердження порогу довжини цисмісячної дуги іншим оцінювачем | Пакетний оцінювач методом найменших квадратів, що ВІДНОВЛЮЄ початковий стан головного апарата за симульованими міжсупутниковими вимірюваннями на зростаючих префіксах тієї самої сітки епох, яку використовує таблиця «ранг проти дуги», із частинними похідними вимірювань, узятими як центральні скінченні різниці складеної прямої моделі. Він не споживає нічого з механізму, яким вимірювали поріг, — ні аналітичного рядка якобіана, ні варіаційної матриці переходу стану, ні сингулярного чи власного розкладу, ні допуску рангу, ні фільтра квадратного кореня інформації — і поділяє лише динаміку, початкові умови, скалярну спостережувану та сітку епох, кожну з яких названо у випущеному документі. Два критерії, обидва перебираються: безшумне відновлення (аналог рангу) і оцінюваність за Монте-Карло (аналог оцінюваності, виміряний проти відомої істини, а не передбачений за коваріацією). Можна запустити як тип сценарію cislunar-arc-recovery |
cislunar_arc_recovery, batch_ls | cislunar_arc_recovery::tests і tests/cislunar_arc_recovery_reference.rs (обидві межі та їхні відношення зафіксовано на опублікованій сітці; виміряну криву похибки порівняно з формальною коваріацією рядок за рядком із побічною межею в коефіцієнт два на рядок і межею за середнім геометричним; НЕГАТИВНИЙ КОНТРОЛЬ — шестистанова планарна DRO — стверджує, що критерій МОЖЕ не виконатися і що нерегуляризований оцінювач розбігається понад 1e6 км, а не повертає правдоподібну малу похибку; інваріантність параметризації стверджено на кожному префіксі з точністю 1e-3 відносно; захист на рівні тексту джерела, який видаляє коментарі, рядкові літерали та тестовий модуль, а потім завершується помилкою за будь-якої згадки якобіана, STM, рангу SVD чи механізму SRIF, перевірений мутацією через ін'єкцію забороненого виклику; перевірка лише для тестів, що скінченні різниці дорівнюють аналітичним рядкам, тож лінеаризація відома як правильна, тоді як аналітичний шлях в оцінювачі лишається відсутнім; детермінованість стверджено побайтово; випущений документ cislunar-observability зафіксовано за набором ключів, канонічним відбитком і підсумковим рядком) | Окремий оцінювач у цій кодовій базі з іншим алгоритмом і непересічним шляхом коду: нелінійний зважений метод Гауса–Ньютона зі скінченно-різницевими частинними похідними, чий вердикт читається як виміряна похибка відновлення стану в км і мм/с. Він не має спільного виразу з маршрутом граміана за рангом і коваріацією, а розділення ПРИМУСОВО забезпечено охоронцем за вихідним текстом, а не просто заявлено. 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 відхилено | MODELLED |
| VM-69906ae2 | Місячний обсяг обслуговування за реальною отриманою геометрією орбітального угруповання | Приймає табличну селеноцентричну ефемериду станів (обчислення ядра SPK/BSP) або опубліковане визначення орбітального угруповання за ephemeris_path, виконує щодо неї ту саму розгортку покриття / DOP / рівня захисту та випускає вимогу до дальномірної точності σ_URE, яку з цього випливає, ПОРЯД зі змінними ілюстративними кеплеровими та збуреними результатами, а різницю подає як окрему іменовану величину. Кожен показник несе клас походження, що розрізняє виведене з ядра, виведене з опублікованих елементів і змодельоване, тож їх ніколи не можна сплутати в подальшому цитуванні |
lunar_ephemeris, lunar_service | lunar_ephemeris::tests (розбір формату та системи відліку; інтерполяція Лагранжа точна у вузлах і на лінійній траєкторії поза вузлом; елементи ICRF проходять редукцію IAU 2015 і побайтово дорівнюють явному застосуванню icrf_to_iau_moon; перетворення справжньої та середньої аномалії туди й назад проти прямого розв'язку Кеплера; пошкоджені файли відхиляються з указанням причини). lunar_service::tests (за незаданого ephemeris_path набір ключів звіту та його SHA-256 зафіксовано; кеплерівський рядок дорівнює окремому кеплерівському прогону поле за полем; тотожність σ_required · HPL_max / σ_URE = AL, потім ЗКВОЗНИЙ повторний прогін за обчисленою вимогою, що досягає 100 % доступності рівня захисту, і повторний прогін на 1 % вище, що її не досягає; кожне виведене числове поле обох нових блоків пройдено з отриманого JSON для одиниці та класу походження; зафіксовані еталонні набори зіставлено з їхніми вихідними таблицями супутник за супутником; горизонт за кінцем таблиці відхиляється); tests/lunar_service_requirement_orekit_oracle.rs::lncss_b_dense_finding_is_unchanged; tests/lunar_service_volume_orekit_oracle.rs::service_volume_matches_orekit_on_identical_ephemeris_and_grid |
ГЕОМЕТРІЯ зовнішня і хешована: три фікстури, чиї числа походять лише з документів, отриманих із 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 не друкує числової статистики); порівняльний тест зафіксовано проігнорованим. 0,30 раунд 2, висновок (лишається 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 п.п. (зафіксовано) | MODELLED |
| VM-30a97898 | Одиниця й походження оголошені для кожної величини у звіті | Машиночитна схема, що задає одиницю, клас походження та визначення для кожного числового поля кожного звіту сценарію, плюс єдина глобальна перевірка, яка запускає кожен зареєстрований тип сценарію й завершується помилкою, якщо випущене числове поле не має чогось із цього. Словник походження закритий, і кожен клас несе рівень доказів, причому два класи навмисно зіставлено з inherits-scenario-label і depends-on-input, а не наділено рівнем, якого клас не визначає |
field_schema | tests/field_units_global.rs (усі 61 зареєстровані види запускаються, по одній формі документа на кожен: кожен числовий листок має зіставлятися із записом у власному блоці units цього документа; пошкоджений запис вважається відсутнім для КОЖНОГО виду, звільненого чи ні, тож заповнювач не купує покриття; список винятків не може перевищувати зафіксованої стелі, перелічений вид, що виявляється повністю покритим, ПРОВАЛЮЄ перевірку, щоб список не можна було нарощувати, а зареєстрований вид, відсутній у таблиці виконавця, провалює її, щоб новий пакет не прослизнув неперевіреним — що й сталося, спіймавши обидва види, додані після початку цієї роботи; односторонній храповик на відставанні описаного, але не визначеного; і перевірка актуальності зафіксованого документа схеми); field_schema::tests | Сам випущений документ: кожен числовий листок має зіставлятися із записом у власному блоці 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 |
MODELLED |
| VM-93ef37db | Місячний датум системи відліку з РЕАЛЬНОЇ кампанії спостережень | Коваріація семипараметрового датума Гельмерта, у якій два симульовані входи замінено виміряними: розклад — це епохи наземної передачі 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 і не доказ того, що аналітичний Місяць точний |
lunar_llr, realdata::llr_crd (composing fim, cio, frames, ephem, lunar_frame, lunar_frame_campaign) | tests/lunar_llr_real_data.rs (11 тестів: усі 15 закомічених файлів CRD байтово ідентичні своїм записаним дайджестам; усі 349 записів враховано, 337 використано і 12 пропущено з названої причини; кожна архівна дальність у межах реальної оболонки перигею/апогею; ваги показано такими, що Є bin_rms/√n_raw; координата вздовж лінії візування найкраще визначена для кожної решітки, а лібраційний перебір, що це забезпечує, виміряно окремо; залишок і його незалежне підтвердження за JPL Horizons; чутливість до нахилу геометрії на 0.1 градуса; порівняння змодельованої кампанії показано рівним незалежному прогону того сценарію; закріплення R1 біт у біт для трьох наявних місячних пакетів систем відліку); lunar_llr::tests (12: частинна похідна дальності проти центральної скінченної різниці змодельованого часу польоту з відн. точністю < 1e-6; світловий час збіжного місячного кругового рейсу; сигма датума точно лінійна за масштабом ваги з точністю 1e-9; блокова діагональність точна; відсутній каталог даних відхиляється, а не підміняється; відредагований рядок каталогу виявляється власним стовпцем радіуса); realdata::llr_crd::tests (7: семантика полів, перехід через північ, відмова для нечасової шкали UTC і непідтримуваної версії формату, і жодної підміненої сигми для порожнього біна); tests/validate_llr_datum_spice_oracle.rs (llr_datum_finding_tz_sigma_one_percent_gap, зафіксовано; reported_residual_is_the_engine_to_spice_light_time_gap); tests/validate_llr_datum_analytic_fresh_2025.rs::llr_datum_analytic_moon_matches_spice_and_numpy_on_fresh_2025_normal_points (151 небачених нормальних точок 2025-Q2; сигми та норми найгірше 1.11e-3 з 1e-2, обумовленість 8.95e-4 з 2e-2, відношення 1.79e-3 з 2e-2, облік, ранги та зв'язок точні) | Замкнені тотожності, незалежний внутрішньорепозиторний маршрут і, починаючи з 0,36, незалежний бібліотечний оракул SPICE та NumPy на свіжих виміряних даних (нижче); опублікованої пари коваріації датума місячної LLR, з якою можна було б звіряти, не існує, тож жодна точність не заявляється. Єдина нова похідна — частинна похідна дальності за положенням рефлектора в системі, жорстко пов'язаній із тілом, — виведена заново центральною скінченною різницею двостороннього світлового часу, який вона диференціює, шляхом, що не має спільного виразу з аналітичною формою. Фізичний оракул структурний: частинна похідна дальності Є подвоєним променем зору, тож координата в системі тіла вздовж середнього напрямку до Землі має визначатися значно краще за дві координати в площині неба, яких досягає лише лібрація, — виміряно від 50,7× до 71,7× для п'яти масивів проти розгортки лібрації, яку звіт вимірює незалежно, з друком і ізотропного прогнозу для малих кутів, і поперечної анізотропії, що пояснює розрив. ЩО ЗМІНИЛОСЯ: розклад, кількість спостережень і вага кожного спостереження тепер виміряні; використано 337 із 349 архівних точок, а 12, що не використані, пропущено і підраховано, бо ITRF2020 не містить положення для Apache Point. MEASURED: сигма переміщення датума 1.851746e-2 м проти 6,3975 м у СИМУЛЬОВАНОЇ кампанії (345×), обертання 36×, масштаб 24× — відношення між мережею лазерної локації й мережею затримок VLBI, тож це висновок, а не перевірка. Ранг інформації рефлектора 15/15 зі зв'язком між масивами точно 0; ранг Гельмерта 7/7, обумовленість 2.4e4. ЧОГО ЦЕЙ РЯДОК НЕ СТВЕРДЖУЄ: що показник правильний в абсолютному вираженні. Реальний розв'язок LLR одночасно оцінює місячну орбіту, фізичні лібрації, орієнтацію Землі, координати станцій, а також приливні та релятивістські параметри й повідомляє дециметри (власні 0.12–0.27 м таблиці 7 DE430), тоді як ця межа набагато менша; це межа Крамера–Рао для заданого зменшеного набору параметрів, а не точність. Поза підтвердженим твердженням (змодельовано, не підтверджено): ефемерида центра Місяця та орієнтація тіла IAU 2015 змодельовані, а тропосфера, припливи, ексцентриситет станції, рух полюса, UT1-UTC, релятивістська затримка та годинники станцій відсутні. Їхній сукупний розмір ОПУБЛІКОВАНО, а не обґрунтовано — різниця «спостережене мінус обчислене» однонаправленої дальності 156 494 м RMS на 337 точках, — а їхній вплив на коваріацію ОБМЕЖЕНО, а не обґрунтовано: повторне розв'язання всього датума з нахилом кожної частинної похідної на 0,1° (удвічі більше за виміряний нахил ефемериди в найгіршу епоху, зі знаком, що чергується) зсуває результат на 0,288 %. ЗОВНІШНЯ ПЕРЕВІРКА (0,30 раунд 2, попередньо зареєстровано 6b27964a), висновок (лишається MODELLED): двосторонній світловий час SPICE (DE440, ITRF93, місячна орієнтація DE440) зі скінченно-різницевими частинними похідними та обернення в numpy на тих самих 337 виміряних нормальних точках і вагах збігаються за обліком, обома рангами, нульовим зв'язком, залишковим RMS (2.1e-5) і 15 із 16 показників коваріації. Сигма переміщення за z на 1,03 % вища за попередньо зареєстрований поріг 1 %. З центром Місяця з DE440 вона падає до 0,049 % (c51f8b2, бачені дані), а на свіжих нормальних точках 2019 датум із Місяцем за ядром тримає кожен поріг (рядок «…, kernel Moon centre»), де аналітичний Місяць теж лишається в межах порогів (найгірше 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 за цим доказом лише як перевірка бібліотеки (Library) обчислення коваріації; аналітичний залишковий RMS на цьому зрізі становить 222 км, тож пороги не розрізняють моделі Місяця (як і в рядку про ядро). Результати: docs/design/evidence/mr06-llr-analytic-fresh/RESULTS.md | VALIDATED |
| VM-945ce00a | Геодезія місячної опорної станції: доданий ретрорефлектор і маяк VLBI проти датума з п'яти масивів | Необов'язкові входи extra_reflectors і extra_beacons сценарію lunar-llr-datum додають блок station_geodesy: інформація Гельмерта п'яти масивів із архівного зрізу місячної лазерної локації плюс інформація, яку додають до семипараметрового датума доданий ретрорефлектор (локований на архівних епохах нормальних точок, коли станція локації над своїм горизонтом, кожна з архівною вагою тієї нормальної точки) і доданий маяк VLBI (спостережуваний мережею та розкладом lunar-frame-campaign з нерухомими земними станціями через частинні похідні затримки lunar-vlbi-fim) у заданих місцях; після повторного розв'язання повідомляються 1-сигма кожного параметра Гельмерта до і після, їхнє відношення, норми до і після та крайні власні значення різниці Фішера. Якщо вхід відсутній або порожній, звіт не змінюється | lunar_llr (over lunar_frame_campaign::beacon_information, schedule_for and solve_datum_information, lunar_vlbi_fim) | tests/lunar_station_geodesy.rs (empty_or_absent_extra_lists_are_bit_identical: порожні списки та базовий приклад дають типові звіт і підсумок побайтово; an_added_site_never_increases_any_variance: найменше власне значення H_after - H_before невід'ємне з точністю 1e-9 від найбільшого, кожне відношення сигм після/до не перевищує одиниці, і обидва додані пункти спостерігаються; the_rest_of_the_report_is_the_five_array_result; every_station_geodesy_field_has_a_unit; a_beacon_list_inside_the_campaign_block_is_refused); scenarios/lunar-station-geodesy-baseline.toml і scenarios/lunar-station-geodesy-with-station.toml (той самий архівований розклад і той самий блок кампанії VLBI) | Лише внутрішня узгодженість: кожне додане місце — окрема точка, а лазерна дальність чи затримка VLBI із нерухомою станцією торкається однієї точки, тож її інформація A_p^T M_p A_p невід'ємно визначена й додається; тест перевіряє різницю Фішера та кожну дисперсію за цим. Результат для п'яти масивів — це наявний рядок на реальних даних, і він не змінюється. Доданий рефлектор повторно використовує епохи, заплановані для п'яти наявних масивів, — ILLUSTRATIVE розклад, а мережа, розклад і сигма затримки доданого маяка — це ILLUSTRATIVE вхідні дані lunar-frame-campaign; місце — ILLUSTRATIVE південнополярне положення. Південнополярне місце бачить Землю низько над горизонтом або не бачить зовсім, що виражають наявні тести кутів огляду; жодне з місць не локується безперервно. Показники — це межі Крамера–Рао для зменшеного набору параметрів, а не розв'язаний датум і не твердження про жодну реальну станцію | MODELLED |
| VM-97d8ec7c | Місячний датум системи відліку з РЕАЛЬНОЇ кампанії спостережень, центр Місяця за ядром | Коваріація семипараметрового датума Гельмерта 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 для іншого зрізу) |
lunar_llr (llr_geometry_with, LunarLlrDatumScenario); ephem_provider (KernelEphemeris); naif_kernel | tests/validate_llr_datum_kernel_moon_fresh.rs::llr_datum_kernel_moon_matches_spice_and_numpy_on_fresh_normal_points (447 небачених нормальних точок 2019-Q2; сигми та норми в межах 4.0e-5 з 1e-2, обумовленість 1.6e-5 з 2e-2, відношення 7.6e-5 з 2e-2, облік і ранги точні); tests/validate_llr_datum_kernel_moon.rs (діагностика на вже баченіх даних 2015, 0,049 % за tz; не є доказом для цього рядка); lunar_llr::tests | 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 (межа Крамера–Рао для зменшеного набору параметрів) | VALIDATED |
| VM-e3875438 | Вбудована аналітична ефемерида Місяця — її ЗАЯВЛЕНУ МЕЖУ ТОЧНОСТІ перевірено за реальними даними | ephem::moon_position, низькоточний геоцентричний місячний ряд, на який крейт переходить, коли ядра DE/SPK немає, виміряний проти реальної місячної лазерної локації та проти опублікованої планетарної ефемериди на тому самому проміжку. Цей рядок підтверджує межу, яку модуль заявляє про себе, а НЕ точність: підтверджено, що ряд не гірший, ніж він каже, а не що він хороший | ephem (moon_position), lunar_llr, realdata::llr_crd | tests/lunar_llr_real_data.rs::the_analytic_moon_series_disagrees_with_jpl_by_the_same_amount (12 щотижневих геоцентричних станів, кут найгіршої епохи стверджено < 0,3° і RMS < 5e5 м проти власного задокументованого твердження модуля, плюс стверджено, що залишок LLR узгоджується з радіальною розбіжністю з точністю < 5×); ::the_measured_residual_is_the_ephemeris_error (337 реальних нормальних точок) | ДВА незалежні зовнішні набори даних, що не мають нічого спільного. (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 м, і це обмеження є змістом рядка не менше, ніж збіг. Відтворюється офлайн зафіксованими скриптами отримання й перевірки | VALIDATED |
| VM-f553cc1c | Цілісність перевірки — зелений результат, що означає те, що каже | Три структурні запобіжники над самим процесом верифікації, кожен закриває клас дефектів, який потрапляв до канонічної перевірки як нестабільний або хибний червоний результат. (1) Кожен сконструйований тимчасовий шлях у вихідному коді Rust має містити унікальну для виклику складову; ідентифікатор процесу відхиляється, бо cargo запускає тести бібліотеки як паралельні потоки ОДНОГО процесу, і pid спільний для всіх. (2) Кожне побайтове закріплення чи закріплення за хешем має заявляти поруч із собою або в заголовку свого модуля, що воно охоплює і що навмисно виключає, — щоб наскрізна зміна могла з першого погляду визначити, які закріплення в межах області, а які непомітно стали детекторами змін на весь репозиторій. (3) Зелений результат можна заявляти лише за ПОВНИМ набором: scripts/gate.sh запускає cargo test --all, фіксує справжній код завершення без жодного конвеєра на шляху й записує квитанцію з комітом, кількістю інтеграційних бінарників, кількістю тестів і тривалістю; перевірка перед надсиланням відмовляє в надсиланні, якщо коміт не названо жодною чинною квитанцією, на чистому дереві. Відтворюваність вибірково перевіряє окремо scripts/check-repeatability.sh, який запускає набір бібліотеки N разів і завершується помилкою, якщо множина пройдених тестів відрізняється. |
scripts/gate.sh, scripts/check-gate-receipt.sh, scripts/check-repeatability.sh, scripts/install-gate-hook.sh | tests/source_guards.rs (9 тестів: обидва захисти над усім деревом джерел, плюс мутаційні еталонні набори, що оцінюють кожен захист в обидва боки — шаблон F22, повідомлений на обох колізійних шляхах, прийнято поставлене атомарне послідовне виправлення, півисправлення повідомлено рівно на шляху, що втратив свій унікальний компонент, прийнято дескриптор тимчасового файлу та успадковану унікальну теку, відхилено настінний годинник; повідомлено про незадекларовану фіксацію, прийнято задекларовану, відхилено область без виключення, прийнято декларацію в докоментарі охоплювального тесту й показано, що вона не просочується в наступний тест; і кожне написання фіксації — hex, десяткове, рядок дайджесту, довжина в байтах, іменована кількість байтів, еталонний файл — розпізнається, тоді як сталі алгоритмів, зерна ГВЧ і малі перевірки кардинальності — ні) | Замкнена форма: кожен запобіжник запускається на фіксованому відомо хибному фрагменті, що має спрацювати, і фіксованому відомо правильному, що має мовчати, — обидва є літеральними константами, на які детектор не може впливати. Два відомо хибні фрагменти — це дефекти F22 і F25 у їхній первісній формі. Це ВНУТРІШНІЙ оракул, і рядок відповідно MODELLED: він доводить, що запобіжники відрізняють дефект від його виправлення, а не що описані ними класи вичерпні. Їхні заявлені сліпі зони — спільний стан, що не є шляхом, закріплення в короткій іменованій константі, рідкісна гонка, яку три запуски не вибирають, і квитанція, яку може підробити будь-хто, хто може записати файл, — виписано в документації модуля tests/source_guards.rs і в заголовку кожного скрипта, а не залишено на відкриття. | MODELLED |
| VM-22bf3eed | Складений PL часу — скалярна спеціалізація MHSS (H=1_N) | Скалярний TPL розділення розв'язків для різнорідних джерел; PL визначається шумом підмножини з найгіршим виключенням + зміщенням UTC(k) | src/integrity/tpl_scalar.rs | integrity::tpl_scalar::tests (ранг-1, злиття/виключення, домінування зміщення, перехресна перевірка IR); tests/tpl_scalar_numpy_oracle.rs::scalar_mhss_pl_matches_numpy (300 закомічених випадків: оцінювачі підмножин numpy lstsq, загальна коваріація розділення, scipy brentq PL; PL у межах 1e-9 відносно, найгірше 1.2e-10; визначальна підмножина точна) | 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 | VALIDATED |
| VM-802ee366 | Складений PL часу — проходження holdover із початком від P0 | PL(τ)=max(TPL_handover,HPL(τ)); нижньонапівнеперервний PL(0+)≥PL(0−); K(IR/2) рухомий максимум; показники фази τ/τ³/τ⁵ | src/integrity/composed_pl.rs | integrity::composed_pl::tests (monotone, P0-floor, K(IR/2), exponents, lower-semicontinuity) | Тести властивостей (монотонність, відсутність падіння при передаванні) + лінт показників проти holdover::coast_phase_variance | MODELLED |
| VM-ff51b519 | Складений PL часу — покриття обвідної holdover, багаторічний режим (tau>=90d) | Рухома максимальна обвідна завищує-покриває (без проколювання нуля) реальний метрологічний ряд на кожному перевіреному лагу tau>=90d на непересічному сегменті; короткий tau (<=30d) — розкрита межа Modelled | src/integrity/composed_pl.rs | tests/cti_holdover_coverage_reference.rs | Ряд BIPM Circular-T [UTC-UTC(USNO)] з кроком 5 діб, MJD 56074-60429 (872 точки, API webtai); непересічні підгонка/тест, багаторічне покриття без проколювання нуля | VALIDATED |
| VM-47843371 | Складений PL часу — обвідна LIL м.н. (неможливість + узгодженість) | Скінченного найгіршого holdover немає (броунівський супремум розходиться); HPL із розподілом за IR узгоджений з обвідною Гартмана–Вінтнера при IR→0 | src/integrity/lil_envelope.rs | integrity::lil_envelope::tests (divergence, threshold, IR-tightening dominance) | Замкнена тотожність обвідної м.н. √(2Dt·lnln t) + перевірка домінування HPL; шов неможливості Baweja arXiv:2606,24210 | MODELLED |
| VM-cce187eb | Завищення межі зміщення простежуваності різнорідних UTC(k) для цілісності | Завищення межі зміщення для кожного джерела b = (U/k_cov)·Phi^-1(1-tail/2) + старіння, що роздуває опубліковану розширену невизначеність типу B до виділеного хвоста цілісності; пов'язується з tpl_scalar як bias_s | src/integrity/hetero_budget.rs | integrity::hetero_budget::tests + tests/hetero_budget_reference.rs; tests/hetero_budget_utc_k_oracle.rs::overbound_exceedance_on_real_utc_k_finding (з обмеженням даними: пропускається з повідомленням, коли ряд BIPM відсутній); tests/hetero_budget_utc_k_realised_overbound_oracle.rs::realised_offset_overbound_finding; tests/utck_bound_prospective_oracle.rs (D9 раунд 3, проспективний, ще не запущений: Circular T 465 з'явився 2026-10-12, а попередньо зареєстроване правило 1000 значень потребує випусків до приблизно 468) | Незалежне відтворення замкненої форми завищення межі за допомогою 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). 0,30 раунд 2, завищення реалізованих зміщень UTC-UTC(k), навчене на даних Circular T BIPM за 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) | MODELLED |
| VM-15e05692 | Корельована перехресна коваріація зміщення простежуваності (розподіл, небезпечний за спільного режиму) | Перехресна коваріація зміщень N×N з позадіагональними rho·b_i·b_j для джерел, що ділять реалізатор UTC(k); ДОВЕДЕНО correlated_fused_bias >= independent_fused_bias (наївний незалежний розподіл занижує межу злитого зміщення -> оптимістично -> небезпечно) | src/integrity/hetero_budget.rs | integrity::hetero_budget::tests (correlated_fused_bias_dominates_independent_when_correlated, rho_one_single_realizer_recovers_linear_sum) + tests/hetero_budget_reference.rs | Незалежне відтворення в numpy перехресної коваріації та нерівності між корельованим і незалежним злитим зміщенням (InternalConsistency). Репрезентативний набір джерел; сценарій Modelled. | MODELLED |
| VM-56cdbf21 | Відбілювання GLS за спільного режиму (Ейткен) + тотожність Махаланобіса | Рукописний Холецький Omega=LL^T і відбілювання прямою підстановкою z=L^-1 r (Cov(z)=I, коли Cov(r)=Omega); квадрат Махаланобіса z^T z = r^T Omega^-1 r | src/integrity/gls_commonmode.rs | integrity::gls_commonmode::tests + tests/gls_reference.rs + tests/gls_whitening_numpy_oracle.rs::whitening_and_mahalanobis_match_numpy_lapack (201 закомічений випадок SPD: множник, вибілений залишок, оператор вибілювання та квадрат Махаланобіса проти numpy LAPACK у межах 1e-12 відносно, найгірше 7.9e-16) | 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. | VALIDATED |
| VM-caf931b4 | Статистика узгодженості за спільного режиму (несправність спільного еталона, сліпа для розділення) | Статистика рахунку (1^T Omega^-1 r)^2/(1^T Omega^-1 1) ~ chi^2_1 для зсуву за спільного режиму, якого розділення розв'язків (контрасти, ортогональні до 1) не бачить; зсув за спільного режиму її збільшує, тоді як попарні розділення лишаються плоскими | src/integrity/gls_commonmode.rs | integrity::gls_commonmode::tests (common_mode_shift_inflates_statistic_but_not_contrasts, post_fit_common_mode_statistic_is_zero) + tests/gls_reference.rs; tests/gls_common_mode_statistic_numpy_oracle.rs::common_mode_statistic_matches_numpy_lapack | Незалежне відтворення статистики в numpy + тест властивості, що введення за спільного режиму її збільшує (InternalConsistency). Сценарій Modelled. 0,30 раунд 2 (попередньо зареєстровано f9aa360d), заблоковано (лишається MODELLED): numpy 2.3.5 LAPACK gesv відтворює значення статистики на 261 зафіксованих випадках (у межах 3.5e-15 для добре обумовлених, 1.2e-9 за обумовленості до 6.1e7); нульовий закон chi-square(1) — цитована теорема, а плоскі попарні розділення — тотожність без виходу рушія для порівняння, тож визначення області очікує рішення власника | MODELLED |
| VM-cdc08a73 | Межа необоротного спільного режиму для залишку поза 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. Напрямок поза змодельованою спільною віссю сліпий лише для статистики спільного режиму й обмежений розділенням | src/integrity/gls_commonmode.rs | integrity::gls_commonmode::tests (separation_alone_is_blind_to_common_mode, degenerate_direction_or_non_pd_gives_no_finite_ceiling, every_nonzero_direction_under_pd_omega_has_a_finite_ceiling); tests/gls_outside_omega_bound_numpy_oracle.rs::undetectable_common_mode_ceiling_matches_numpy_lapack (256 закомічених випадків: alpha_ss, alpha_cm і мінімум у межах 1e-12 відносно на 210 добре обумовлених і граничних випадках, найгірше 3.3e-15; 40 погано обумовлених до обумовленості 1.3e8 у межах заявленої межі, масштабованої обумовленістю, найгірше 1.1e-9; шість точних нескінченностей) | 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 | VALIDATED |
| VM-af0a23f0 | Ідентифікованість місячного датума — лінійна алгебра декомпозиції | Маргінал за доповненням Шура блока {лунацентр-X, масштаб} у Фішері датума Гельмерта з 7 параметрів: скалярна метрика виродженості lambda_min(S), CRLB початку за X і кореляція початку з масштабом | lunar_identifiability | tests/lunar_datum_identifiability_reference.rs::decompose_matches_scipy_reference (16 синтетичних матриць SPD 7x7 від добре обумовлених до майже вироджених {0 3}; lambda_min за Шуром / CRLB початку / |corr| проти SciPy/NumPy з відн. точністю <1e-9) | Незалежний еталон SciPy/NumPy (scripts/gen_datum_identifiability_ref.py -> tests/fixtures/datum_identifiability/scipy_ref.csv): доповнення Шура, його власні значення та обернена матриця 2x2, обчислені незалежною бібліотекою. Обмежено ЛІНІЙНОЮ АЛГЕБРОЮ декомпозиції; ВЕЛИЧИНИ місячної кореляції/CRLB з реальної геометрії лишаються MODELLED. | VALIDATED |
| VM-bed29386 | Класифікація нуль-простору місячного датума (адитивність рангу LLR + підняття дефекту лібрацією) | Класифікація задачі датума внутрішньої локації: одне спостереження дальності дає ранг 1 (6-вимірний нуль-простір); пара початок за X і масштаб майже нульова, а фізична лібрація DE440 піднімає дефект до нуля, тоді як пара лишається майже виродженою | lunar_identifiability, lunar_datum | tests/lunar_datum_identifiability_reference.rs (single_internal_range_row_has_six_dim_datum_null_space; extending_the_librating_arc_lifts_the_origin_scale_degeneracy); tests/lunar_datum_sosnica_oracle.rs::origin_scale_correlation_and_crlb_disagree_with_the_published_geometry | Відтворена рушієм геометрична структура плюс замкнена тотожність Шура 2x2; узгоджується за СТРУКТУРОЮ з Sosnica et al. 2025 (arXiv:2510,15484), чиї повідомлені величини тут НЕ відтворені. Класифікація структурна; величини кореляції/CRLB за реальної геометрії MODELLED (координати та орієнтація рефлекторів зафіксовані). 0,30 зовнішнє порівняння, висновок (лишається MODELLED): проти Sosnica et al. 2025 кореляція початку з масштабом у Фішері за дальністю (-0.993 / -0.988) у межах 0,05 від опублікованої -0.97, але на власній геометрії статті з п'яти рефлекторів кореляція Гельмерта з 7 параметрів за рівних ваг дорівнює -0.78 (опубліковане значення спирається на похибки окремих рефлекторів, яких стаття не друкує), а CRLB початку (від 0,6 до 1,2 мм за шуму дальності 3 мм) на 96–98 % нижчий за 3,07 см статті за допуску 20 %. Величини не відтворено | MODELLED |
| VM-4c9a19f6 | Мультитехнічна інформація про місячний датум (LLR + місячний VLBI + дальність орбітального апарата) | Рядки якобіана датума для дальності LLR Земля–рефлектор, диференціальної затримки місячного VLBI на дві станції та дальності орбітальний апарат–маяк за 7-параметровим датумом, зведені в один узгоджено передобумовлений Фішер; демонструє, що позарадіальне (орбітальне / з різноманітністю за глибиною) стеження розриває виродженість початок за X – масштаб, тоді як поперечний VLBI допомагає лише опосередковано | lunar_datum, lunar_identifiability | lunar_datum::tests (LLR/VLBI/orbiter analytic partials vs finite difference); lunar_identifiability::tests (adding_an_offradial_technique_collapses_the_origin_scale_degeneracy; transverse-vs-radial via crlb_diag) | Перехресні перевірки аналітичних частинних похідних кожної техніки проти скінченних різниць (внутрішні); НАПРЯМОК поліпшення є геометричним фактом. Розташування маяків, розклади та шум MODELLED/репрезентативні (див. tests/fixtures/llr_geometry/NOTICE.md). | MODELLED |
| VM-dff22468 | Провайдер орієнтації місячних головних осей DE440 | Обертання MOON_PA_DE440 у J2000 на довільних епохах у межах 2014-01-01 – 2030-12-31 TDB геодезичною інтерполяцією R0·Exp(f·Log(R0ᵀR1)) між вузлами зафіксованого добового ряду з 6 209 рядків (функції try_ повертають OrientationSpanError поза ним, безпомилкові панікують; він ніколи не обрізає); вбудовано під час компіляції, тож немає жодного вводу/виводу файлової системи під час виконання, і збірка WASM його несе | lunar_orientation | lunar_orientation::tests (de440_moon_pa_reproduces_fixture_rows, de440_moon_pa_shows_real_libration); tests/lunar_pa_frame_realisation_guard.rs::the_orientation_series_interpolation_error_is_tens_of_metres_not_sub_metre; tests/lunar_pa_orientation_spice_oracle.rs::interpolated_rotation_matches_direct_kernel_evaluation_off_node (2 000 випадкових епох поза вузлами проти SPICE pxform на двійковому PCK: кут обертання в межах 1.7e-5 рад, найгірше 1.7e-6 рад, 3 м на середньому радіусі) | 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 рад і найгірше 1.75e-6 рад на 6 000 додаткових епохах, узятих верифікатором. Добові вузли самі витягнуто з того самого ядра (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, що є підтвердженим вікном; розширені вузли походять з того самого ядра та скрипта, але позавузлово не порівнювалися. Геометричний субстрат для аналізу ідентифікованості, а не продукт орієнтації із субметровою точністю | VALIDATED |
| VM-338ed616 | Геометричний субстрат датума місячної LLR (рефлектори в головних осях, наземні станції, аналітичні частинні похідні дальності) | П'ять ретрорефлекторних масивів на привернутому боці в метрах системи тіла PA та наземні станції LLR у геодезичних координатах; розміщення рефлекторів від системи тіла до інерційної через орієнтацію PA DE440; аналітичні частинні похідні дальності Земля–рефлектор за 4-параметровим датумом; і матриця Фішера лише за LLR, що виявляє виродженість лунацентр-X – масштаб, яка спонукає до 7-параметрового аналізу | lunar_llr_geometry | lunar_llr_geometry::tests (reflector_and_station_catalogs_are_well_formed, analytic_partials_match_finite_difference, llr_one_way_range_is_earth_moon_scale, zero_datum_reproduces_nominal_range, llr_only_fisher_shows_strong_com_x_scale_degeneracy); tests/lunar_pa_frame_realisation_guard.rs; tests/llr_datum_degeneracy_reference.rs; tests/lunar_llr_geometry_range_oracle.rs::reflector_ranges_against_ilrs_normal_points | Обчислення перевіряється внутрішньо: кожна аналітична частинна похідна проти скінченної різниці, а нульовий датум проти номінальної дальності. КАТАЛОГ перевіряється зовнішньо й незалежно: координати головних осей 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) і без світлового часу | MODELLED |
| VM-055df2b8 | Модель виміряної дальності 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), IERS UT1-UTC і рух полюса, а виміряний круговий обхід, перетворений із TT у TDB. З БОКУ СТЕНДА, не частина твердження: зенітна затримка Мендеса–Павліса з відображенням FCULa у тесті, з висотою з геодезичного каталогу stations(). Не змодельовано: припливи, ексцентриситети станцій, теплові члени рефлекторів | 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) | tests/lunar_llr_geometry_range_oracle.rs::reflector_ranges_bcrs_iers2010_relativistic (192 нормальних точок ILRS: RMS 2,81 м; лише дві станції ITRF2020 2,96 м; обидві щонайбільше 10 м); tests/lunar_llr_geometry_range_oracle.rs::round2_finding_is_a_common_offset_of_about_eleven_metres (замінена геоцентрична модель світлового часу, 10,94 м, зафіксовано) | Виміряно: 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 м; обидва все одно б пройшли. Швидкості станцій і члени Шапіро від Землі та Місяця ще менші. Порівняння підтверджує зібрану однонаправлену дальність на рівні 10 м RMS і сонячний член Шапіро, а не кожну з перелічених складових | VALIDATED |
| VM-105d48cb | Спряжена калібрувальна неоднозначність місячної системи відліку та шкали часу: спільний нуль-простір просторового датума, зміщення годинника та його швидкості | 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}. | lunar_gauge | tests/lunar_coupled_gauge_reference.rs::coupled_gauge_matches_numpy_on_real_de440_rows (9 власних значень, defect/dim_spatial/dim_temporal/coupled_dim/p_st_norm і маргінал за Шуром {scale,offset} для мереж well_posed зі 120 рядків і single_epoch з 30 рядків, з відн. точністю <1e-3 і абс. <1e-3); lunar_gauge::tests (coupled_marginal_fisher_is_symmetric_and_psd, oneway_spatial_equals_orbiter_range_row_datum7, twoway_spatial_equals_oneway_spatial_at_same_geometry) | ЩО ПЕРЕВІРЕНО ЗОВНІ, заявлено вузько: 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, а єдина різниця, що лишається, — це розв'язувач. | VALIDATED |
| VM-b3782756 | Виродженість між дальністю та зміщенням годинника в однонаправленій місячній локації та закон дизайну за геометричної різноманітності | Виродженість радіальної дальності вузла та зміщення годинника приймача точна: 1 м відповідає 3,336 нс (одна c-а). Маргінал за доповненням Шура {масштаб, зміщення} (coupled_marginal_fisher) показує, що в геометрично різноманітній мережі двостороння локація піднімає маргінал приблизно в стільки ж разів, як і рівна кількість додаткових однонаправлених даних, тоді як в ідеалізованому режимі єдиного вузла двосторонній підйом більший на порядки. Закон дизайну, що з цього випливає: саме геометрична різноманітність, а не двостороння локація як така, відокремлює масштаб місячної системи відліку від зміщення шкали часу в однонаправленій локації; двосторонній або зовнішній часовий зв'язок потрібен лише в режимі низької різноманітності чи єдиного користувача. | lunar_gauge | lunar_gauge::tests (coupled_marginal_well_posed_network_is_psd, coupled_marginal_twoway_equals_more_oneway_in_diverse_network, coupled_marginal_twoway_lift_three_orders, oneway_range_row_has_correct_temporal_entries, twoway_range_row_has_zero_at_offset_and_rate, time_tie_row_equals_pure_offset_vector, rate_tie_row_has_correct_structure) | Маргінальний Фішер за доповненням Шура спряженої інформаційної матриці, замкненою лінійною алгеброю, перевірений за двома граничними режимами, які він передбачає. Еквівалентність 1 м до 3,336 нс є визначенням метра через c, а не емпіричним результатом. Мережі спостережень — репрезентативна геометрія Modelled, тож закон дизайну є твердженням про подану йому геометрію і не несе жодного твердження про жодну діючу місячну мережу. | MODELLED |
| VM-a3971a9a | Зв'язок релятивістської швидкості ходу годинника із системою відліку для місячної шкали часу | 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 | lunar_gauge, lunar_time | tests/lunar_rate_frame_coupling_preregistered.rs (entry1_d_alpha_d_scale_matches_the_published_l_m_for_both_cited_fields: L_m у межах 2.8e-6 від Ashby і Patla 2024 з J2 з AIUB-GRL350A/B; entry2_d_alpha_d_radial_matches_the_degree_350_equatorial_gravity_for_both_fields: радіальний елемент у межах 8.3e-5 від екваторіальної гравітації pyshtools ступеня 350; entry3_d_alpha_d_velocity_matches_the_de441_lunar_speed: елемент швидкості в межах 2.5e-3 від місячної швидкості DE441 на 2000 епохах); lunar_gauge::tests; регресійний tests/lunar_rate_frame_coupling_oracle.rs | Попередньо зареєстровано (5590ab21): L_m проти Ashby і 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 | VALIDATED |
| VM-3da07d8a | Інваріантна щодо базису класифікація спряженого нуль-простору системи відліку та шкали часу | classify_null_space розкладає нуль-простір датума на суто просторову (вимір d мінус ранг U_T), суто часову (d мінус ранг U_S) і справді спряжену (ранг U_S плюс ранг U_T мінус d) частини, плюс норму зв'язку проєктора від просторового до часового p_st_norm, норму Фробеніуса позадіагонального блока проєктора нуль-простору. Кожна з цих величин є функцією ПРОЄКТОРА, а не вибраного базису, тож вони інваріантні щодо будь-якого ортонормованого вибору нульових векторів — і саме тому класифікацію взагалі можна повідомляти. | lunar_gauge | lunar_gauge::tests (classify_is_invariant_under_null_basis_rotation - вісно-вирівняний нульовий базис і його обертання на 0,6 rad дають однакові defect, dim_spatial, dim_temporal, coupled_dim і p_st_norm; classify_direct_sum_null і classify_coupled_null - побудовані випадки прямої суми та справді зв'язані випадки підтверджують розкладання розмірності; classify_basis_invariant; index_consts_are_correct); tests/lunar_gauge_classification_scipy_oracle.rs::classify_null_space_matches_scipy_subspace_intersection (72 побудовані матриці Фішера 9x9 над 18 нульовими підпросторами, кожен у чотирьох випадкових ортонормованих перебазуваннях: defect, dim_spatial, dim_temporal і coupled_dim збігаються точно; p_st_norm у межах 6.0e-15, поріг 1e-9) | 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 охоплює його повністю. Сконструйовані випадки включають прямі суми, спряжені й змішані нуль-простори та випадкові перебазування; реальні виміри мереж рядка про спряжену калібрувальну неоднозначність тут не перераховуються. Внутрішньокрейтовий тест інваріантності (повернутий нульовий базис дає ідентичні результати) збережено | VALIDATED |
| VM-90ae0e7c | Репрезентативне меню мультитехнічних вимірювань і адитивне правило комбінування Фішера | MeasurementBlock містить одну кандидатну вимірювальну кампанію як внесок інформації Фішера 7x7 плюс скалярну відносну вартість; block_from_rows будує її з сирих рядків якобіана датума, тож кожен блок передобумовлюється однаково через lunar_identifiability::assemble_multi_info; combine підсумовує інформацію обраної підмножини, що є правильним правилом, бо інформація Фішера адитивна для незалежних вимірювань; representative_lunar_menu надає детерміноване меню з чотирьох блоків (LLR, поперечний маяк VLBI на лімбі, орбітальний апарат на привернутому боці та орбітальний апарат на зворотному боці). Оптимізатор дизайну з обмеженням бюджету, що споживає це меню, не є частиною цього крейта. | lunar_techniques | lunar_techniques::tests (combine_is_additive_order_independent_and_empty_is_zero - порожній вибір дає нульову матрицю, одиничний вибір є тотожністю, пара дорівнює незалежно написаній поелементній сумі, а результат інваріантний щодо порядку вибору; adding_a_block_never_reduces_the_degeneracy_metric - монотонність за доданої інформації; radial_diversity_beats_transverse_for_breaking_the_degeneracy - блок орбітального апарата на зворотному боці підвищує метрику виродженості більше, ніж поперечний блок VLBI) | Адитивність інформації Фішера для незалежних вимірювань є властивістю замкненої форми, яку тут перевірено проти незалежно написаної поелементної суми та проти інваріантності щодо порядку й монотонності, що з неї випливають. ПРИМІТКА ЩОДО ДОКАЗІВ: комбінатор раніше не мав жодного тесту, а єдиний тест у модулі підсумовував дві інформаційні матриці прямо в тілі, а не викликав його, тож зламаний комбінатор залишив би модуль зеленим; тепер тест іде через combine і не проходить, коли його мутувати. Усі розташування маяків, геометрія орбітальних апаратів, точності окремих технік і відносні вартості — репрезентативні вибори, а не значення місій (див. tests/fixtures/llr_geometry/NOTICE.md), тож кожна метрика виродженості та показник CRLB, досягнуті через це меню, успадковують статус Modelled від lunar_identifiability::decompose. | MODELLED |
| VM-7faeee00 | Міждоставникова узгодженість місячної системи відліку/динаміки (реальна міжефемеридна) | декомпозиція лише за обертанням (6 параметрів: зсув+обертання) розбіжності геоцентричного Місяця за DE440/INPOP21a/EPM2021 на зведену спільну ICRF-прив'язку системи відліку та незведений надлишок орієнтації місячної орбіти (повне 7-параметрове підганяння Гельмерта — окрема публічна функція, яку ця зовнішня перевірка НЕ охоплює: її доказ — внутрішній модульний тест аналітичного відновлення плюс tests/lunar_helmert_fit_cross_check.rs, що погоджує її з Validated точним підганянням Гауса–Ньютона в lunar_frame_realise і фіксує конвенцію протилежного знака обертання між ними) | lunar_interop_budget | tests/lunar_interop_budget_reference.rs (raw / rotation-residual / theta_moon / theta_frametie / theta_excess / reducible / irreducible для 3 пар провайдерів проти незалежної апроксимації SciPy SVD lstsq у tests/fixtures/inter_ephemeris/reference.json, відн.<1e-3 абс.<1e-3 m; фікстури та оракул побайтово узгоджені через scripts/gen_interop_ref.py на публічних ядрах DE440/INPOP21a/EPM2021 за допомогою IMCCE calceph) | Три незалежні авторитетні ефемериди — DE440 (JPL), INPOP21a (IMCCE), EPM2021 (IAA RAS) — вибрані через IMCCE calceph, перехресно перевірені незалежним підганянням найменших квадратів за SVD у numpy. ЧОМУ ЦЕ Validated, А lunar_common_mode — НІ, на тих самих трьох ефемеридах: тут повідомлювана величина Є властивістю опублікованих даних — їхньою взаємною розбіжністю, — тож ефемериди є оракулом, а не входом. У lunar_common_mode та сама розбіжність живить MODELLED геометрію орбітального угруповання, а відповідь є властивістю цієї моделі, тому той рядок слушно Modelled/ReferenceImpl. | VALIDATED |
| VM-660ef3e9 | Допуск міждоставникової узгодженості для користувача зі змішаними доставниками | consistency_tolerance: обертає бюджет положення користувача до вимоги міждоставникової узгодженості Гельмерта за параметрами (початок/масштаб/обертання) на опорному плечі важеля, за потреби роздутої CRLB реалізації одного доставника P1 | lunar_interop_budget | lunar_interop_budget::tests (монотонність за бюджетом; зменшення бюджету RSS за CRLB для кожного постачальника; опрацьований допуск обертання на місячному плечі важеля; визначальний член = обертання) | Межа найгіршого випадку за трикутником для дії точкового якобіана Гельмерта (замкнена форма) | MODELLED |
| VM-24491422 | Бюджет похибок міждоставникової місячної сумісності та закон дизайну «система відліку проти ефемериди» | interop_budget: розподіл на зведену (спільна прив'язка системи відліку) та незведену (динаміка) частини за конвенціями PerProvider / CommonFrameTie / CommonEphemeris, з метрикою закону дизайну частки незведеного (~0,69 на реальних DE440/INPOP/EPM: спільна позначка системи відліку сама лишає домінантну підлогу) | lunar_interop_budget | lunar_interop_budget::tests (CommonEphemeris обнуляє бюджет; CommonFrameTie < PerProvider; irreducible_fraction > 0,5 на реальних розбиттях; порядок конвенцій) | RMS-агрегація Validated розподілів за парами за кожною конвенцією (замкнена форма) | MODELLED |
| VM-3d1c5457 | Конвеєр лінійної алгебри спостережуваності несправностей автономної вільної мережі (проєктор парності, виявлюваність, нецентральність MDB, візантійська блок-іскра) | На реальній мережі вузлів місячної системи DE440 (кожен рядок — диференціальна міжвузлова однонаправлена дальність, побудована через pernode_range_row із реальним променем зору в системі PA Місяця DE440) рушій обчислює зважений проєктор парності P⊥ = I − G(GᵀWG)⁺GᵀW (форма з дефіцитним за рангом псевдооберненим, що переживає 8-вимірну калібрувальну неоднозначність датум⊕шкала часу), залишок виявлюваності T1 ‖P⊥·b‖ (несправності в діапазоні знищуються, загальні — виявлювані), квадратичну форму нецентральності MDB за Баардою cᵀWP⊥c (правильна зважена форма з одним P⊥, а НЕ форма з двома P⊥ cᵀP⊥WP⊥c) з MDB = √(λ₀/cᵀWP⊥c) і кількості виявлення/ідентифікації візантійської блок-іскри стекованих ефективних сигнатур пірів P⊥·B_T (за рангом стовпців, а не просто ненульові) | lunar_faultobs | tests/lunar_faultobs_reference.rs (faultobs_matches_numpy_scipy_on_real_de440_rows: поелементно 84×84 P⊥, trace(P⊥) = parity_dim = 52 і rank(G) = 32, норми виявності та прапорці, квадратична форма MDB cᵀWP⊥c і значення MDB, а також кількості виявлень та ідентифікацій block-spark для кожної коаліції рівноправних вузлів, відтворені проти незалежного оракула numpy/scipy з точністю відн.<1e-3 абс.<1e-3 і точним збігом цілих кількостей; вхідні дані побайтово узгоджені через examples/gen_faultobs_rows.rs + scripts/gen_faultobs_ref.py) | Незалежне відтворення лінійною алгеброю в numpy/scipy на реальних рядках променя зору в системі PA Місяця DE440 (P⊥ з SVD відбіленого дизайну W^{1/2}G; нецентральність MDB із квадрата норми підпростору парності за класичним Баардою (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) і доведена інстанціація в коді | VALIDATED |
| VM-bff0cee3 | Межа виявлення/ідентифікації візантійської блок-іскри в автономній міжвузловій місячній мережі (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 | lunar_faultobs | lunar_faultobs::tests — byzantine_c3_rank_deficient_but_nonzero_is_undetectable (ненульовий, але з дефіцитом рангу блок ⇒ block_spark 1, f_detect 0; незалежні стовпці ⇒ block_spark 2, f_detect 1), byzantine_real_network_uniform_bias_is_clock_offset (пір, що володіє всіма вимірюваннями вузла = похибка зміщення годинника ∈ range(G), невиявлювана, із чіткою спектральною щілиною Грама), byzantine_redundant_net_identifies_at_least_one (шість незалежних одновимірних пірів ⇒ block_spark 7, f_identify 3), byzantine_analytic_spark_identity_projector + byzantine_detect_identify_relations (ручні випадки P⊥ = I фіксують f_detect = block_spark − 1, f_identify = ⌊(block_spark − 1)/2⌋) | Геометрична інстанціація межі блокової іскри / безпечного оцінювання стану (Fawzi–Tabuada–Diggavi 2014; Shoukry–Tabuada 2016; блокова іскра Donoho–Elad 2003; Candès–Tao 2005) — НЕ консенсусний поріг Lamport–Shostak–Pease 3f+1 («візантійський» називає лише МОДЕЛЬ довільних/змовних несправностей). Конкретне число допустимих несправностей є властивістю Modelled репрезентативної геометрії мережі, перевіреною на самоузгодженість вручну сконструйованими аналітичними випадками та формулами підрахунку | MODELLED |
| VM-ea17589a | Часова калібрувальна підлога автономного 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), що доводить: підлога є справжньою калібрувальною неоднозначністю, а не артефактом моделі генератора | lunar_faultobs | lunar_faultobs::tests — holdover_floor_self_ref_and_anchored (самопосилальна мережа: спільна швидкість лежить у N(GᵀWG), temporal_gauge_dim 2; після одного зовнішнього рядка прив'язки швидкості: швидкість вилучено з калібрувальної свободи, temporal_gauge_dim 1, спільне зміщення зберігається) | Аргумент вільного параметра ансамблевого часу (Percival 1978; Lewandowski & Thomas 1991), інстанційований на репрезентативній реальній мережі окремих вузлів DE440: нульовий тест відносного залишку аналітичного генератора спільної швидкості проти GᵀWG, де контраст зі знятою неоднозначністю розрізняє справжню калібрувальну неоднозначність і артефакт моделі генератора. Репрезентативна геометрія Modelled, а не сертифікований часовий бюджет | MODELLED |
| VM-7cf3772f | Спільний/диференціальний розподіл за доставниками, уніфікація одного дефіциту рангу та нахил розриву захисту (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 повертає нахил розриву захисту Брауна ‖Π_obs Δx̂‖ / ‖P⊥b‖_W → ∞ для несправності b ∈ range(G) (оцінювач псується за нульової парності) і скінченний для виявлюваної несправності | lunar_faultobs | lunar_faultobs::tests — provider_mismatch_split_common_undetectable_differential_detectable (спільне зміщення невиявлюване, диференціальне виявлюване), slope_infinity_in_range_finite_detectable (g7: нахил ∞ для b ∈ range(G), скінченний для b ∉ range(G)), pernode_rank_is_state_dim_minus_eight (§0: rank(GᵀWG) = state_dim − 8, 8-вимірна калібрувальна свобода є всім нульовим простором зі спектральною щілиною >1e6) | Замкнена алгебра проєктора парності / псевдооберненого на репрезентативній реальній мережі окремих вузлів DE440: спільний/диференціальний розподіл, уніфікація N(G) ⊕ range(G) і нахил розриву захисту Брауна (1992) випливають із знищення діапазону P⊥·G = 0. Репрезентативна геометрія Modelled, а не сертифікований рівень захисту | MODELLED |
| VM-fab6cff7 | MTIE і TDEV телекомунікаційної синхронізації на ряді похибки часу holdover | Максимальна похибка часового інтервалу та девіація часу, які повідомляє тип сценарію telecom-timing, на записі holdover телекомунікаційного масштабу: MTIE ковзного вікна з монотонною чергою O(n) (telecom_timing::mtie_sliding, потрібна, щоб доба односекундних відліків лишалася швидкою) і TDEV рушія (allan::time_deviation), обчислені на сітці, яку повідомляє тип, і зчитані з повного прогону, що поглинає ряд |
telecom_timing (mtie_sliding, mtie_curve_ns, tdev_curve_ns); allan (mtie, time_deviation) | tests/telecom_timing_reference.rs (17 коефіцієнтів усереднення MTIE і 12 TDEV на зафіксованому ряді holdover чипового атомного годинника з 2 048 відліків зі старінням, фліккером і температурою, проти allantools 2024,06 з точністю <1e-12 / <1e-9 відносно, спостережено точний збіг / 1.1e-15; ті самі криві, зчитані з повного прогону синхронізації телекомунікаційних мереж, що приймає CSV); telecom_timing::tests (ковзний MTIE дорівнює allan::mtie на кожному вікні; MTIE і TDEV, виведені вручну; монотонний MTIE) | 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, який його породив | VALIDATED |
| VM-b5a1c2e5 | Телекомунікаційні маски синхронізації 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, кожен інтервал відкритий чи закритий, як його подає таблиця, з пропуском кожного запису «for further study»; вердикт і запас у граничній точці для кожної перевірки та час до перевищення кожного бюджету. Можна запустити як тип сценарію telecom-timing |
telecom_timing (MASKS, eprtc_a_holdover_limit_ns, check_curve, check_mask) | telecom_timing::tests (mask_boundaries_follow_the_tables_exactly — відкриті та закриті кінці, щілина τ = 400 с у G.8271.1 таблиця 7-3, неперервність у кожній точці зламу, яку мають забезпечувати таблиці; a_curve_exactly_on_the_limit_passes_and_just_above_fails; eprtc_a_holdover_envelope_follows_table_3; a_coarse_record_is_not_evaluated_against_a_filtered_mask); tests/telecom_timing_reference.rs (telecom_timing_kind_round_trips_through_the_dispatch); tests/telecom_masks_itu_printed_values.rs (mask_values_match_the_numbers_the_recommendations_print; figure_7_2_label_at_1_3_s_is_not_its_own_table_value) | Транскрипція названих Рекомендацій (вільно завантажуваних з 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 (на суцільних допоміжних лініях) виключено попередньо зареєстрованим правилом відбору, тож вони лишаються транскрипціями | MODELLED |
| VM-df4578d8 | Маски генерації блукання для синхронізації частоти 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 |
telecom_timing (MASKS, Segment::tau_exponent, MeasurementFilter::LowPass10HzAtSource, MaskCondition::Autonomous) | telecom_timing::tests (g811_prc_masks_follow_clause_6_1; g812_masks_follow_tables_3_4_6_and_7; g8262_masks_follow_tables_1_3_4_and_5; g8262_1_eeec_masks_follow_tables_1_and_3; a_linear_piece_is_evaluated_without_powf; wander_masks_pass_a_quiet_white_fm_flicker_series; wander_masks_fail_the_same_series_scaled_up) | Транскрипція названих Рекомендацій (завантажено з 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 завищує внесок генератора на інтервалах спостереження, довгих порівняно з сталою часу контуру; він нічого не каже про жоден годинник обладнання | MODELLED |
| VM-002dc3ac | Формати журналів годинника (RINEX clock, TimeLab ASCII, TAPR TICC), прочитані до нормалізованого фазового ряду | clock_log::read_input: єдиний шар розбору, що перетворює файл годинника RINEX (записи AS/AR одного названого годинника, версії 2 і від 3,00 до 3,04), журнал фази чи частоти ASCII у стилі TimeLab або журнал часових міток чи інтервалів TAPR TICC на однорідну фазову сітку з tau0, заданим, узятим із заголовка або як медіанний крок, із підрахунком кожної прогалини, позасіткового відліку та дубліката та політикою прогалин refuse, longest-run або linear; підключено за вибором до ряду telecom-timing ([series.clock_log], додаючи блок clock_log) і до типу clock ([clock_log], додаючи блок measured з ADEV, TDEV і MTIE, SHA-256 таблиці та SHA-256 фази; runs = 1). Без таблиці обидва типи побайтово ідентичні |
clock_log (read_input, MeasuredPhaseReport, MEASURED_UNITS, TELECOM_LOG_UNITS); telecom_timing (SeriesInput::clock_log); api (clock kind [clock_log]) | clock_log::tests (рукописні журнали по форматах: заголовки, роздільники, одиниці, інтегрування частоти, канали й режими TICC, прогалини та політики, відмови); tests/clock_log_allantools.rs (попередньо зареєстроване порівняння: b1_each_log_reads_to_the_reference_phase; b2_adev_tdev_and_mtie_agree_with_allantools; b3_a_telecom_series_read_from_a_log_equals_the_same_samples; b3_the_clock_kind_measured_block_is_opt_in) | Попередньо зареєстровано в tests/fixtures/clock_log/PREREGISTRATION.md (зафіксовано окремо, 159334f2, до появи фікстури); записано в RESULTS.md. Три засіяні синтетичні журнали, по одному на формат (прогалина TICC у три епохи, другий годинник RINEX, який слід ігнорувати), прочитані назад незалежним читачем, написаним за docs/CLOCK-LOG-FORMATS.md тим самим автором: лічильники сітки, прогалин і заповнень рівні, а найбільша різниця фази 0 с (поріг 1e-13 с). oadev, tdev і mtie allantools 2024,6 на цій фазі збігаються в межах відносних 2.5e-14 (поріг 1e-10) на кожному коефіцієнті усереднення, який вона обчислює; вона не обчислює MTIE за весь запис, який повідомляє рушій, тож ця одна точка на журнал не має значення оракула, і поріг у його формулюванні там не виконано. MODELLED: синтетичні журнали, а оракул-читач ділить автора; реальні файли годинника TimeLab, TICC і RINEX з приладів не порівнювалися | MODELLED |
| VM-800c73e1 | Формати журналів годинника 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 |
clock_log (parse_linuxptp, parse_chrony, grid_timed_offsets) | clock_log::tests (ptp4l_reads_the_locked_offsets_in_ns; linuxptp_reads_only_the_named_program; ts2phc_gap_is_refused_or_filled; linuxptp_reads_syslog_prefixed_lines_and_picks_an_interface; linuxptp_refuses_a_servo_that_never_locks_and_backwards_stamps; chrony_tracking_reads_the_local_offset_in_seconds; chrony_statistics_needs_a_source_when_there_are_two; chrony_columns_of_the_other_log_are_not_read; clock_selector_is_refused_for_timelab_and_ticc_only) на еталонних наборах у tests/fixtures/clock_log/linuxptp_chrony/ | Фікстури, написані для Kshana за публічними макетами рядків демонів, із вигаданими значеннями (NOTICE.md у теці фікстур); жодного журналу з реальної установки не читали, і жоден оракул не порівнює розбір з іншим читачем, тож макет, що відрізняється між версіями демонів, усе ще може бути відхилений або прочитаний хибно. Оцінювачі, що живляться фазовим рядом, — це ті, які підтверджено проти allantools у рядках вище | MODELLED |
| VM-3c0cedf1 | Тест 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; два моменти — це заява оператора й не перевіряються |
holdover_test (HoldoverTestScenario, recovery, linear_fit); telecom_timing (check_mask, check_envelope, budget_results) | holdover_test::tests (the_record_is_split_at_the_stated_times; holdover_figures_match_a_hand_computation; recovery_is_timed_from_the_restoration; masks_are_measured_on_the_step_their_condition_names; a_record_with_no_baseline_says_so; bad_inputs_are_refused_with_the_reason; the_report_carries_the_label_the_units_and_no_conformance_word; a_ptp4l_log_is_scored_end_to_end) | Ручне обчислення на записах, побудованих за формулами, чиї нахил, крок, екстремум і час відновлення відомі до прогону (тести їх заявляють), і маски, обвідна та бюджети рядків telecom-timing вище. Жодного лабораторного вимірювання реального holdover не оцінювали й жодного зовнішнього оракула не порівнювали, тож тип не робить жодного твердження про жоден годинник чи систему; потрібен партнер із лабораторії часу, перш ніж якийсь показник для класу годинників можна буде підвищити | MODELLED |
| VM-fb122222 | Доступність сигналів GNSS у просторовому обсязі обслуговування (SSV) і за його межами, порівняно з буклетом ICG SSV | Розгортки доступності типу gnss-ssv: за орбітальними угрупованнями (GPS, GLONASS, Galileo, BDS, QZSS, NavIC) і сукупно — частка пар (користувач, епоха) принаймні з одним і принаймні з чотирма сигналами та найдовша перерва, для користувача на сфері (глобальна оболонка буклета з 2,562 точок, 14 діб з кроком 1 хвилина) або на траєкторії (GEO, HEO, місячний перехід), за кеплеровими орбітами з додатка C буклета, сталою мінімальною випромінюваною потужністю всередині опорного позаосьового кута, затіненням Землею сферою плюс 50 км і порогом C/N0; антени користувачів із таблиці B10 буклета |
ssv (constellations, geom, sweep, pattern, check) | ssv::geom::tests (the_grid_has_the_booklets_2562_points_on_the_unit_sphere; the_interval_form_equals_the_general_predicate; a_user_behind_the_earth_is_blocked_and_one_beside_the_limb_is_not); ssv::sweep::tests (a_small_shell_run_is_internally_consistent; pdop_of_a_regular_tetrahedron_like_set_is_finite_and_a_flat_set_is_not); ssv::pattern::tests (table_b10_antenna_reads_as_gain_against_angle_from_the_boresight) | Буклет ICG про просторовий обсяг обслуговування (UN OOSA ST/SPACE/75, 2018), сам будучи симуляцією, порівняно за попередньою реєстрацією, зафіксованою до прогону (xval/gnss-ssv/PREREGISTRATION.md; результати в xval/gnss-ssv/RESULTS.md, закріплені tests/ssv_booklet_results.rs, з промахами). Прогін 1 за попередньо зареєстрованим читанням: константи мінімальної випромінюваної потужності та місячний поріг збігаються (S0, S6 met); пороги верхнього та нижнього SSV, порогу RF, 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 поводяться так | MODELLED |
| VM-114a4144 | Ефекти іоносфери, плазмосфери та атмосфери для променя на лімбі на дотичних сигналах GNSS і дизайн приймача слабких сигналів у типі gnss-ssv |
Іоносфера Чепмена, плазмосфера типу Галлагера та нейтральна атмосфера (згин через рефрактивність, поглинання киснем, дефокусування), проінтегровані вздовж прямого променя між передавачем і користувачем: похилий повний електронний вміст, його плазмосферна частина, надлишкова затримка, висота дотичної та втрати на дотичних лініях зв'язку; і дизайн приймача слабких сигналів (когерентне й некогерентне інтегрування, межа бітів даних, допомога, доплерівський пошук), що задає поріг C/N0 з моделей захоплення та контурів стеження | ssv (limb, weak) | ssv::limb::tests (the_chapman_layer_peaks_at_its_height_with_its_density; the_surface_limb_bends_about_one_and_a_third_degrees; plasmaspheric_tec_is_a_few_tecu_for_an_equatorial_gps_to_geo_ray); ssv::weak::tests (longer_integration_lowers_the_acquisition_threshold; aiding_narrows_the_search_and_the_loop; a_conventional_receiver_is_far_above_the_ssv_signal_levels); ssv::scenario::tests (the_limb_medium_adds_statistics_and_can_cost_signals; a_weak_signal_receiver_replaces_the_fixed_threshold) | Замкнені форми та опубліковані величини в тестах (пік шару Чепмена та згин поверхневого лімба, кілька TECU плазмосфери на промені GPS–GEO); дизайн приймача повторно використовує моделі захоплення та контурів стеження та їхні тести. Жодні виміряні дані лімбового зондування чи прийому слабких сигналів з ним не порівнюються | MODELLED |
| VM-a5755cc1 | Бортовий навігаційний фільтр GNSS для апаратів на високих орбітах і на траєкторіях переходу до Місяця | Режим [navigation] типу gnss-ssv: дев'ятистановий розширений фільтр Калмана (положення, швидкість, зміщення й дрейф годинника приймача, масштаб тиску сонячного випромінювання) на псевдодальностях, чия доступність, шум і C/N0 походять з тієї самої геометрії ліній зв'язку, що й розгортки; істину інтегровано з J2, третіми тілами Сонця й Місяця та тиском випромінювання з тінню, фільтр моделює J2 і треті тіла та оцінює тиск випромінювання; повідомляє похибки положення й швидкості всередині орбіт GNSS і над ними, найдовшу прогалину вимірювань і середнє NEES |
ssv::nav (run_nav, Ekf) | ssv::nav::tests (the_filter_converges_where_signals_are_plentiful_and_is_deterministic; the_covariance_is_consistent_with_the_error; without_signals_the_filter_coasts_and_the_gap_is_reported); ssv::scenario::tests (navigation_and_formation_run_and_report) | Симульована істина проти власної оцінки фільтра (середня нормалізована квадратична похибка оцінки узгодженого фільтра становить близько 3 для положення) і детермінізм за фіксованого зерна (seed). Жодних польотних чи записаних даних GNSS на високій орбіті не порівнюється; Сонце й Місяць — низькоточні кругові замінники | MODELLED |
| VM-0ad9c42e | Відносна навігація формації з кількох космічних апаратів на сильно еліптичній орбіті за GNSS | Режим [formation] типу gnss-ssv: головний апарат і ведені апарати кожен запускає абсолютний фільтр; положення веденого відносно головного оцінюється відніманням абсолютних оцінок і відносним фільтром на однократно диференційованих псевдодальностях сигналів, які відстежують обидва апарати, з відносною динамікою як різницею двох нелінійних траєкторій |
ssv::formation (run_formation, RelEkf) | ssv::formation::tests (differencing_beats_subtracting_absolute_estimates_and_is_deterministic); ssv::scenario::tests (navigation_and_formation_run_and_report; formation_needs_navigation_and_one_mode_only) | Та сама симульована істина, що й для абсолютного фільтра: похибка відносного фільтра проти істинного відносного стану та перевірка, що він працює щонайменше не гірше за віднімання двох незалежних абсолютних визначень. Жодні польотні дані формацій не порівнюються | MODELLED |
| VM-dd872eab | Бюджет похибок навігації та часу ланцюга фаз місії від запуску до входу в атмосферу (mission-thread) |
Тип mission-thread: документ із фаз, кожна з яких є одним із восьми зареєстрованих типів, що виконуються по черзі, а 6x6 коваріація, годинник і система відліку передаються далі за заданим правилом (carry; inflate, білий шум прискорення на заданому проміжку за прямолінійною моделлю; reacquire, інерційне зчислення шляху, а потім поріг джерела, ніколи не нижче нього, ніколи не скидання); перетворення систем відліку GCRF, MCI і MCMF та перетворення шкал часу через TT, кожне окремим рядком бюджету, з положенням Місяця з необов'язкового зрізу ядра DE440 і аналітичним рядом як заявленим запасним варіантом; запас відносно заданої вимоги, найслабша ланка, події та рисунок часової шкали. Кожне число є заданим входом або моделлю такого |
mission_thread (scenario, handover, conversions, budget, phase) | mission_thread::scenario::tests::a_thread_runs_hands_over_converts_and_names_the_weakest_link; mission_thread::scenario::tests::bad_documents_fail_with_the_reason; mission_thread::handover::tests::inflate_never_shrinks_a_sigma_and_matches_the_hand_calculation; mission_thread::handover::tests::reacquire_sets_an_axis_to_the_floor_only_where_the_floor_is_smaller; mission_thread::conversions::tests::mci_mcmf_round_trip_returns_the_state_and_the_covariance; mission_thread::conversions::tests::tt_to_ltc_shifts_bias_and_drift_by_the_secular_rate_and_back; mission_thread::conversions::tests::the_committed_kernel_cuts_agree_with_pinned_horizons_values; tests/field_units_global.rs (блок одиниць звіту) | Ручні розрахунки в тестах (зростання прямолінійної коваріації, середнє сидеричне обертання, вікова швидкість місячного годинника) і, лише для положення Місяця, зафіксовані зрізи ядра DE440 проти закріплених значень JPL Horizons (найгірше 2,6 м і 7e-6 м/с). Жодні дані місій з цим ланцюгом не порівнюються; його фази є окремими рядками. Документ є заданим ланцюгом із ILLUSTRATIVE вхідними даними, лише публічними джерелами та без схвалення жодним агентством | MODELLED |
| VM-141c6467 | Запуск і виведення на опорну орбіту із захопленням ГНСС і завмиранням (launch-ascent) |
Фаза launch-ascent: коваріація положення та швидкості для сталої швидкості з білим шумом прискорення (клас інерційного зчислення шляху), фікс ГНСС заданої точності, застосований після часу захоплення і поза заданими завмираннями, годинник зі зміщенням і дрейфом, що дисциплінується тими самими фіксами, та стан входу на опорну орбіту |
mission_thread::earth::launch (LaunchAscent) | mission_thread::earth::launch::tests::with_gnss_the_sigma_settles_near_the_fix_and_an_outage_lets_it_grow; mission_thread::earth::launch::tests::before_acquisition_the_sigma_only_grows_and_a_longer_acquisition_is_worse; mission_thread::earth::launch::tests::a_phase_that_does_not_list_gnss_never_uses_it; mission_thread::earth::launch::tests::bad_models_and_entries_are_refused; mission_thread::earth::filter::tests::repeated_updates_reach_the_riccati_steady_state | Усталений стан Ріккаті та ручний розрахунок передбачення в тестах. Тут ніщо не моделює ракету-носій чи приймач; кожне число є заданим входом | MODELLED |
| VM-3285c018 | Відносна навігація до оболонки стикування на низькій навколоземній орбіті за ділянками датчиків (leo-rendezvous) |
Фаза leo-rendezvous: відносний стан у осях LVLH цілі із замкненим переходом Clohessy-Wiltshire, коваріація Калмана 6x6 з білим шумом прискорення та оновленнями положення, дисперсія яких дорівнює дисперсії датчика на поточній дальності, за ділянками заданого датчика (ILLUSTRATIVE оптична камера, лідар і форми радіодальнометрії); вікно стикування — це час від моменту, відколи відносна сигма лишається в оболонці захоплення, до кінця фази. Абсолютна коваріація переслідувача передається далі без змін, і рядок про це каже |
mission_thread::earth::rendezvous (LeoRendezvous); cw_dynamics; mission_thread::sensors | mission_thread::earth::rendezvous::tests::the_relative_sigma_falls_through_the_legs_and_opens_a_docking_window; mission_thread::earth::rendezvous::tests::without_relative_sensing_the_sigma_only_grows_and_no_window_opens; mission_thread::earth::rendezvous::tests::the_covariance_recursion_matches_a_one_axis_hand_calculation; mission_thread::earth::rendezvous::tests::bad_models_and_a_duration_mismatch_are_refused; mission_thread::sensors::tests::the_cross_range_error_grows_with_range_and_the_floor_dominates_up_close | Одноосьовий ручний розрахунок передбачення й оновлення в тесті; перехід Clohessy-Wiltshire — той, який cw_dynamics перевіряє за незалежним числовим інтегруванням. Датчики є ILLUSTRATIVE, і жодна справжня зустріч не порівнюється | MODELLED |
| VM-09d31ea9 | Трансмісячна інжекція та цисмісячний політ: пропагований середній стан і коваріація з оновленнями відстеження (tli-and-cruise) |
Фаза tli-and-cruise: середній стан за пропагатором Ковелла рушія (точкова маса Землі та J2, Сонце й Місяць як треті тіла, Місяць із ядра DE440 ланцюга там, де воно охоплює сегмент, а Сонце з аналітичного ряду); коваріація за матрицею переходу стану, взятою прямою різницею з тієї пропагації (номінальний прогін і шість збурених прогонів на сегмент) з білим шумом прискорення; розмір і похибка напрямку імпульсу TLI; фікси gnss-ssv, чия доступність і PDOP походять зі зміщення за космічним обсягом обслуговування вздовж оскулюючої орбіти, що заступає дугу; відстеження дальності та швидкості зміни дальності вздовж геоцентричного напрямку, масштабоване шкалою роботи наземної мережі, з оновленням у формі Джозефа |
mission_thread::earth::tli_cruise (TliCruise); propagator; ssv::sweep | mission_thread::earth::tli_cruise::tests::the_stm_is_symplectic_for_the_conservative_part_and_matches_a_finer_difference; mission_thread::earth::tli_cruise::tests::with_no_tracking_the_covariance_is_the_stm_propagation_of_the_entry_and_the_burn; mission_thread::earth::tli_cruise::tests::range_tracking_shrinks_the_line_of_sight_and_leaves_the_plane_of_the_sky; mission_thread::earth::tli_cruise::tests::the_thread_kernel_serves_the_moon_inside_its_window_and_the_series_outside; mission_thread::earth::tli_cruise::tests::gnss_ssv_fixes_are_applied_where_the_sweep_finds_four_signals; mission_thread::earth::tli_cruise::tests::a_phase_that_lists_a_source_the_model_lacks_is_refused_and_unknown_keys_too | Теорема Ліувілля (визначник матриці переходу стану консервативної частини дорівнює одиниці) і точніша різниця в тестах; середній стан порівнюється з публічною траєкторією в рядку нижче, якого він не досягає. Похибка імпульсу, оновлення та коваріація ні з чим не порівнюються | MODELLED |
| VM-fe6d68d3 | Коваріація на інтерфейсі входу, ймовірність коридору, пікове уповільнення та область посадки (entry) |
Фаза entry: повернення вибігом із tli-and-cruise без імпульсу, що закінчується на інтерфейсі входу; кут нахилу траєкторії та його сигма з повної коваріації за градієнтом скінченних різниць; ймовірність, що кут лежить у заданому коридорі; пікове уповільнення при номінальному куті й на обох краях коридору за планарним балістичним входом рушія як точкової маси (виявляється відскок) поряд із замкненою формою Аллена–Еггерса; область посадки із заданої чутливості за дальністю та коваріації на інтерфейсі впоперек площини орбіти. Підйомна сила, наведення чи нагрівання не моделюються |
mission_thread::earth::entry (Entry); reentry | mission_thread::earth::entry::tests::the_flight_path_angle_and_its_sigma_follow_the_velocity_error_over_the_speed; mission_thread::earth::entry::tests::the_corridor_probability_is_the_gaussian_mass_inside; mission_thread::earth::entry::tests::the_phase_reports_the_interface_the_corridor_the_peaks_and_the_footprint; mission_thread::earth::entry::tests::the_steep_edge_peaks_higher_and_a_limit_below_it_is_flagged; mission_thread::earth::entry::tests::bad_corridors_unknown_keys_and_burn_keys_are_refused | Ручні розрахунки в тестах (сигма кута — це перпендикулярна сигма швидкості, поділена на швидкість; гауссова маса в коридорі). Планарний вхід — власний вхід рушія, а форма Аллена–Еггерса — порівняння із замкненою формою; жоден здійснений політний вхід не порівнюється | MODELLED |
| VM-36619fa3 | Покриття наземної мережі та шкала відстеження для фази ланцюга ([ground_network] із mission-thread) |
Накладка наземної мережі: станції з мінімальним кутом місця, видимість апарата за заданою геометрією (стан входу, пролетений у двотільній задачі з J2, положення Місяця для польоту або задана шкала), передавання між станціями, кожне з яких втрачає заданий час, і результатна шкала, передана на частоту оновлень наземного відстеження фази; найдовший інтервал без станції у видимості є рядком бюджету | mission_thread::earth::ground_network | mission_thread::earth::ground_network::tests::a_vehicle_over_a_station_is_seen_and_one_on_the_other_side_of_the_earth_is_not; mission_thread::earth::ground_network::tests::the_moon_is_in_view_of_three_well_spread_stations_most_of_the_time; mission_thread::earth::ground_network::tests::handover_losses_reduce_the_duty_and_never_below_zero; mission_thread::earth::ground_network::tests::a_stated_duty_is_passed_through_and_bad_documents_are_refused; mission_thread::scenario::tests::the_overlay_sets_the_tracking_duty_of_a_phase_that_lists_ground_tracking | Перевірки геометрії зеніту та антипода й очікувана видимість далекої цілі в тестах. Жодна справжня мережа, антена чи розклад не моделюються | MODELLED |
| VM-5c095f48 | Відносна навігація до стикування на місячній орбіті (lunar-orbit-rendezvous) |
Тип і фаза lunar-orbit-rendezvous: спільна пакетна оцінка Гаусса–Ньютона двох апаратів на дузі (двадцять один параметр: обидва стани та стійкі зміщення положення сигналу в просторі, спільні й незалежні), що нарощується на чверть, половину та цілу дугу із поділом кроку навпіл, з абсолютного фікса на апарат (межа відстеження пілот-коду AFS, ILLUSTRATIVE набір ретрансляторів) і дальності міжлінії, за місячною силовою моделлю крейта; середня нормалізована квадратична похибка оцінки, перевірка Clohessy-Wiltshire на круговій орбіті та передана далі коваріація 6x6 |
lunar_rendezvous (LunarRendezvousScenario); lunar_phase; mission_thread::lunar | lunar_rendezvous::tests::b1_mean_nees_is_inside_the_registered_band_in_all_four_configurations; lunar_rendezvous::tests::circular_cw_check_is_within_the_pre_registered_bar; lunar_rendezvous::tests::same_seed_gives_identical_documents; lunar_rendezvous::tests::b6_handover_without_a_measurement_only_propagates; mission_thread::lunar::tests::every_phase_runs_and_returns_a_modelled_outcome; tests/mission_thread_lunar_oracles.rs | Самоузгодженість за попередньою реєстрацією (xval/mission-thread-lunar/PREREGISTRATION.md, результати та історія оцінювача в RESULTS.md): середня NEES відносного стану становить від 5,85 до 5,93 проти смуги від 5,2 до 6,8 у чотирьох конфігураціях, MET для четвертого проєкту оцінювача після того, як три проєкти послідовного фільтра його не досягли; істина й оцінювач мають одну силову модель, тож це нічого не каже про похибку моделі. Пропагатор, який вони ділять, порівнюється з LRO і CAPSTONE у рядку нижче | MODELLED |
| VM-0002d522 | Бюджет розсіювання посадки в місячному полярному місці (lunar-descent) |
Тип і фаза lunar-descent: п'ятистанова інерційна модель похибок за віссю (положення, швидкість, зміщення акселерометра, нахил, зміщення гіроскопа) під час активного спуску, підтримувана фіксами AFS (автономними або диференціальними, із випадком трьох ретрансляторів з підтримкою годинника), фіксом за рельєфом (зіставлювач terrain-nav рушія на синтетичному рельєфі або межа Крамера–Рао на цифровій моделі LOLA з правилом проблеми апертури) і місячним часом, з еліпсом приземлення за Монте-Карло |
lunar_landing (LunarLandingScenario); lunar_phase; terrain_nav | lunar_landing::tests::b4_with_no_aid_the_landing_error_is_the_closed_form_inertial_drift; lunar_landing::tests::b4_each_aid_reports_exactly_what_the_reused_kind_gives; lunar_landing::tests::b3_ellipse_calibration; lunar_landing::tests::a_plane_gives_no_fix_the_aperture_problem; lunar_landing::tests::a_bowl_matches_the_closed_form_bound; lunar_landing::tests::three_relays_make_the_fix_depend_on_the_clock | Замкнений інерційний дрейф, власні результати повторно використаних типів і калібрування 3-сигмового еліпса (частка всередині збігається з очікуваною) у тестах. Жодна здійснена чи випробувана посадка не порівнюється | MODELLED |
| VM-bb8b8191 | Доступність позиціонування та часу на поверхні за місцем і порою року на місячних полюсах (lunar-surface) |
Тип і фаза lunar-surface: доступність ретрансляторів і PDOP, видимість Землі й Сонця та дисциплінований поверхневий годинник для кожного місця й пори року, з обрієм рельєфу з moonlight-service-volume; прогін для одного місця дорівнює доступності й PDOP цього типу до біта |
lunar_surface_map (LunarSurfaceMapScenario); lunar_phase | lunar_surface_map::tests::b5_equals_the_service_volume_for_a_single_site; lunar_surface_map::tests::b5_equals_the_service_volume_with_the_real_terrain; lunar_surface_map::tests::terrain_never_adds_availability; lunar_surface_map::tests::timing_is_at_least_either_source_and_the_season_moves_the_earth_and_sun; lunar_surface_map::tests::same_inputs_give_identical_documents | Точна рівність з наявним типом для одного місця та перевірки монотонності в тестах. Набір ретрансляторів є ILLUSTRATIVE, і жодне вимірювання на поверхні не порівнюється | MODELLED |
| VM-5bd5efbe | Активне виведення з місячного полярного місця на орбіту входу (lunar-ascent) |
Тип і фаза lunar-ascent: п'ятистанова інерційна модель похибок за віссю, виконана на активному виведенні з питомою силою вздовж траєкторії, підтримувана фіксами AFS і місячним часом, що звітує коваріацію положення та швидкості на вході, перенесену на орбіту, і розсіювання при відсічці двигуна (повідомлене, не перенесене) |
lunar_ascent (LunarAscentScenario); lunar_phase | lunar_ascent::tests::with_no_aid_the_insertion_error_is_the_closed_form_inertial_drift; lunar_ascent::tests::the_aid_never_hurts_and_the_velocity_is_carried_with_its_correlation; lunar_ascent::tests::a_stale_tt_clock_costs_a_three_relay_fix; lunar_ascent::tests::the_same_inputs_give_identical_documents | Замкнений інерційний дрейф і перевірки монотонності в тестах. Жодне здійснене виведення не порівнюється | MODELLED |
| VM-576667f2 | Пропагація місячної силової моделі проти публічних відновлених траєкторій місячних орбітальних апаратів і цисмісячного простору | Пропагатор, спільний для місячних типів (GRAIL GL0660B, ступінь і порядок 150, Земля та Сонце як треті тіла, релятивізм, місячна орієнтація DE440), порівняний з публічними траєкторіями JPL Horizons для LRO (24 год, відліки по 10 хвилин) і CAPSTONE (один оберт за 6,5 доби, годинні відліки) за порогами, зафіксованими у зафіксованому файлі до прогону | lunar_od (LunarForceModel); precise_od; mission_thread_lunar_oracles (example) | tests/mission_thread_lunar_oracles.rs::the_stored_numbers_meet_or_miss_the_registered_bars_as_recorded; tests/mission_thread_lunar_oracles.rs::the_fixtures_match_their_recorded_hashes | Ефемериди космічних апаратів JPL Horizons для LRO і CAPSTONE проти порогів, попередньо зареєстрованих у xval/mission-thread-lunar/PREREGISTRATION.md (поправки від 1 до 6). LRO: MET, 33 м найбільша 3-D різниця та 2,4 м RMS радіально проти 500 м і 60 м. CAPSTONE: NOT MET, різниця кінцевого положення 136,8 км проти 25 км і різниця періапсиду 28,4 км проти 10 км, причини не відокремлено. Рядок є змодельованим, бо поріг CAPSTONE не досягнуто, а порівняння перевіряє спільний пропагатор, а не жоден фільтр, сигнал чи бюджет | MODELLED |
| VM-85ad15fc | Пропагація середнього стану цисмісячного простору проти публічної траєкторії Artemis I (tli-and-cruise) |
Пропагація середнього стану фази tli-and-cruise (Ковелл, точкова маса Землі та J2, Сонце й Місяць як треті тіла, Місяць зі зрізу DE440) порівняна з публічною траєкторією JPL Horizons для Artemis I на дузі вибігу 72 год від 2022-11-16 18:00 TDB, в епохи через 12 годин, за порогами, зафіксованими у зафіксованому файлі до прогону |
mission_thread::earth::tli_cruise; propagator; mission_thread_oracle (example) | tests/mission_thread_oracle.rs::the_stored_numbers_miss_the_registered_bars_as_recorded; tests/mission_thread_oracle.rs::the_diagnostic_places_the_miss_in_five_impulsive_events_not_in_the_force_model; tests/mission_thread_oracle.rs::the_kernel_cut_and_the_recorded_inputs_match_their_hashes | 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 м. Перевіряє лише середній стан однієї дуги вибігу: ні коваріацію, ні фільтр, ні оновлення, ні іншу фазу | MODELLED |
| VM-8112313d | Члени похибки холодноатомного інтерферометра: фазовий шум лазера Рамана, зміщення від кривини хвильового фронту та розв'язання неоднозначності смуг | 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)) для допомоги класичного акселерометра та для двох часів опитування, і її обернена | inertial::cai_error_terms | inertial::cai_error_terms::tests (raman_transfer_short_pulse_limit_matches_the_acceleration_transfer_function; white_raman_phase_closed_form_matches_quadrature; short_pulse_band_limited_closed_form_matches_quadrature; cheinet_2008_white_phase_noise_requirement_is_reproduced; delay_term_closed_form_matches_exact_filter_quadrature; defocus_phase_is_position_independent_and_tilt_cancels; curvature_bias_monte_carlo_matches_closed_form; curvature_bias_limiting_cases; classical_aided_resolution_monte_carlo_matches_closed_form; multi_t_resolution_monte_carlo_matches_closed_form; ambiguity_limits_and_inverse) | Кожна замкнена форма проти незалежного числового шляху в тестах (частотна квадратура точної передавальної функції та фільтра затримки, Монте-Карло за атомами для зміщення хвильового фронту, Монте-Карло за пострілами для індексу смуги) і її граничні випадки. Одне опубліковане робоче значення: Cheinet et al. 2008 (arXiv:physics/0510197, розд. IV) стверджують, що за tau_R = 20 мкс для 1 мрад на постріл потрібен білий фазовий шум Рамана нижче -111 дБ рад^2/Гц; один лише білий член дає 0,99 мрад (стаття виводить рівень за своїм рівнянням 17, фліккер плюс білий). Внутрішня узгодженість і одне робоче значення, а не зовнішня перевірка; аберації вищих порядків і шум будь-якого конкретного лазера не змодельовано | MODELLED |
| VM-a9a886b5 | Точні еквівалентні ступені свободи за 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, де не застосовується, включно з немодифікованим випадком білого PM із ceil(M/S) <= d, чия замкнена форма не реалізована. assurance::uncertainty::edf тепер ділить код і зберігає свої виходи біт у біт | allan (edf_greenhall, greenhall_edf_core); assurance::uncertainty (edf) | tests/greenhall_edf_allantools.rs (bars_1_to_3_against_allantools; bar_4_wrappers_equal_the_core); tests/greenhall_edf_no_moved_output.rs (uncertainty_edf_is_bit_identical_to_the_0_36_portable_baseline); tests/uncertainty_edf_reference.rs | 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 відносно, від бази на математиці хоста) | VALIDATED |
| VM-23a15a45 | Пресети holdover генераторів за публічними специфікаціями | Чотири пресети — OCXO (Microchip OX-208), рубідієвий (Microchip 8040C), цезієвий (Microchip 5071A, високопродуктивна трубка) і CSAC (Microchip SA.45s) — кожен із максимумами девіації Аллана, старінням і межею температури зі своєї специфікації; невід'ємне підгонювання найменшими квадратами шуму частоти білого + фліккерного + випадкового блукання, масштабоване так, щоб обгорнути кожну точку специфікації, фліккерна підлога ніколи не нижча за показник найдовшого τ, лінійне старіння та синусоїдний температурний член, синтезовані як засіяний (seeded) holdover після втрати GNSS | telecom_timing (PRESETS, fit_noise, with_flicker_floor, synthesize_holdover); models (ClockModel) | telecom_timing::tests (every_preset_carries_a_named_datasheet_and_figures; the_noise_fit_envelopes_every_datasheet_point; pure_aging_matches_its_closed_form — дискретний дрейф старіння в межах 0,1 % від (1/2)·D·t² за добу; same_seed_same_series_and_hash_different_seed_different_series); tests/oscillator_presets_measured.rs (caesium_finding_pinned; rubidium_finding_pinned; csac_finding_pinned; ocxo_preset_has_no_measured_record) | Чотири названі специфікації 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 не має виміряного запису (заблоковано) | MODELLED |
| VM-56200471 | Прогноз holdover за виміряним записом годинника, перевірений на відкладених даних | Шлях виміряного запису типу slot-timing: девіація Аллана з перекриттям запису фази, підігнана невід'ємним методом найменших квадратів із вагами edf у базисі білої фази та частотної модуляції за IEEE Std 1139 (slot_timing::fit_weighted), потім обернена для часу вибігу, коли похибка часу досягає порога (slot_timing::slot_budget). Підлога червоного шуму вимірюється із запису, а не припускається |
slot_timing (ClockNoise::from_phase_record, fit_weighted, slot_budget, breach_after_sync_s) | tests/slot_timing_cs5071a_holdout.rs (holdover_inversion_predicts_the_held_out_caesium_record: підгонка на першій третині запису, передбачення виходу за один сигма на 0,5, 0,75, 1, 1,5, 2 і 2,5 ns, вимірювання на двох інших третинах від точки синхронізації кожні 997 s; поріг, зафіксований до першого прогону, у 1,5 раза в будь-який бік; спостережені відношення від 0,84 до 1,03; контроль, односекундна девіація Аллана, прочитана як білий FM, помиляється приблизно в 1 000 разів і мусить не виконати поріг; мутація, що вдвічі зменшує рівень білого FM, провалює тест); slot_timing::tests (a_measured_white_fm_record_recovers_its_level; reduces_to_the_holdover_inversion; ieee1139_conversion_matches_the_powerlaw_module) | Реальний вільний атомний годинник: 556 990 односекундних фазових відліків цезієвого стандарту 5071A, виміряних проти водневого мазера (A. Wallin, поширюється з allantools; закріплений коміт і SHA-256 у scripts/fetch_cs5071a.sh), той самий запис, який використовує tests/cs5071a_reference.rs для оцінювачів. Відкладені дві третини — зовнішнє вимірювання, якого прогноз ніколи не бачив. Залежить від даних: робочий процес realdata-clock отримує запис і запускає тест з KSHANA_REQUIRE_REALDATA=1. Підтверджує шлях «підігнати, потім обернути» на атомному стандарті, де домінує білий FM, на вибігах до приблизно 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, фінальні годинники IGS 30 с, 14 діб, протокол написано до завантаження) 8 потрапляють у поріг, а 2 (G25, G30) оптимістичні до приблизно 2x, тож за протоколом орбітальний випадок лишається MODELLED | VALIDATED |
| VM-3842550f | Секунди, поки вільний годинник залишає охоронну зону часового слоту, та частота визначень, що тримає його всередині | Тип slot-timing: передбачена похибка E(t) = k·√(σ₀² + σ_x²(t)) + (|y₀| + |c_T·ΔT|)·t + ½|D|t² обернена для порушення, часу, що лишився, інтервалу повторної синхронізації за вирахуванням затримки визначення та кількості визначень на добу, кожен член розписано з названням домінантного; годинники із шести типових значень ClockClass (додано TCXO, OCXO і RAFS, кожен із посиланням на одну специфікацію), пресетів telecom-timing, вбудованої специфікації чи виміряного запису; порушення за межами найдовшого часу усереднення джерела позначається як екстрапольоване |
slot_timing (predicted_error_s, breach_after_sync_s, terms_at, slot_budget, ClockNoise::from_datasheet, SlotTimingScenario); clock_state (ClockClass::Tcxo, Ocxo, Rafs, source) | tests/slot_timing_igs_holdout.rs (10 годинників супутників GPS Block IIF, 14 діб фінальних годинників IGS: 8 у межах порогу 1,5, G25 і G30 оптимістичні до приблизно 2x, зафіксовано); tests/slot_timing_ocxo_holdout.rs (виміряний OCXO: прогноз на відкладених даних ніколи не оптимістичний, від 0,59 до 0,70 виміряного порушення; у вибірці в межах від 0,98 до 1,17; без члена частоти фіксації прогноз у вибірці оптимістичний за кожного порогу); slot_timing::tests (fix_frequency_uncertainty_alone_is_linear_in_time; reduces_to_the_holdover_inversion — кожен клас проти holdover::holdover_seconds з точністю 1e-9; white_fm_with_fix_error_has_its_closed_form; flicker_floor_alone_is_linear_in_time; ageing_alone_is_quadratic_in_time; frequency_offsets_add_in_magnitude; the_error_at_the_breach_is_the_guard; datasheet_fit_envelopes_every_point; datasheet_classes_match_their_presets_at_one_second; a_breach_beyond_the_datasheet_is_flagged_as_extrapolated; the_report_carries_the_result_and_a_unit_for_each_field) | Замкнені форми для кожного члена окремо та незалежний пошук кореня holdover::holdover_seconds; показники специфікацій — названі документи (docs/SLOT-TIMING.md). Типове значення класу спирається на припущену підлогу червоного шуму, а джерело-специфікація є обвідною максимумів, тож жодне не є вимірюванням будь-якого примірника | MODELLED |
| VM-830ecf94 | Рівень захисту часу для приймача на орбіті в умовах спуфінгу GNSS | orbital_timing::orbital_timing, доступний як розділ про спуфінг у виді slot-timing: швидкість і період кругової орбіти, найдовший час, протягом якого наземний спуфер може діяти на супутник за один прохід, нижня межа монітора з підтримкою годинника та затримка виявлення CUSUM, умовний рівень захисту (нижня межа плюс інерційний дрейф за час затримки), відхилення, яке накопичує спуфер із заданою максимальною швидкістю наростання, доки супутник не залишить свою зону покриття або не буде виконано незалежну перевірку, а також те, чи кожна перевірка під час наземного контакту або через міжсупутникову лінію незалежна від одного наземного спуфера |
orbital_timing (orbital_timing, visibility_half_angle_rad, max_pass_s, crosslink_neighbour_is_outside_footprint) | orbital_timing::tests (reduces_to_the_terrestrial_tpl — точно tpl::timing_protection_level_ns, коли годинник не має фліккерного, білого фазового чи випадкового блукального члена; leo_geometry_matches_its_closed_forms; crosslink_independence_follows_the_footprint; an_independent_check_caps_the_ramp_before_the_pass_ends; a_crosslink_inside_the_footprint_does_not_count; a_ramp_below_the_reference_is_never_detected) | Зведення до наявного рівня захисту часу та до замкнених формул для кругової орбіти й сферичної Землі, що описують видимість. Умовно щодо виявлення: один наземний спуфер із заданою швидкістю наростання, прохід над головою на нерухомій Землі; не validated на приймачі під спуфінгом на орбіті | MODELLED |
| VM-e1de9d23 | Замкнені вирази для спектральної густини потужності сигналів 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) | 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) | spectrum::tests (bpsk_main_lobe_null_to_null_is_two_n_times_1_023_mhz — BPSK(1) 2,046 MHz і BPSK(10) 20,46 MHz, знайдені чисельно на замкненій формі; boc11_lobes_are_centred_at_plus_minus_1_023_mhz — нуль на несівній, перший нуль на 2,046 MHz, центр пелюстки 1,023 MHz, а точний максимум на 0,7590 MHz проти незалежного розв'язку Ньютона для tan y = 2y; ssc_matches_parseval_closed_forms — C/A x C/A 2/(3R_c) = -61.86 dB/Hz, BOC(1 1) x BOC(1 1) 1/(3R_c) = -64.87 dB/Hz, C/A x BOC(1 1) 1/(6R_c) = -67.88 dB/Hz, кожне в межах 0,02 dB; q_values_match_kaplan_hegarty — CW на несівній Q = 1, шум із відповідним спектром Q = 1,5, плоский шум від нуля до нуля Q = 2,215; mboc_is_a_unit_area_one_eleventh_mix) | Опубліковані підручникові значення: головна пелюстка BPSK(n) від нуля до нуля шириною 2n x 1,023 МГц і коефіцієнти антиглушіння Q = 1 для вузькосмугового (CW) глушника та Q = 1,5 для глушника з розширеним спектром, узгодженого з C/A (Kaplan & Hegarty, Understanding GPS/GNSS, 3rd ed., розділ 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 і перевірена лише на одиничну площу та лінійність | VALIDATED |
| VM-ec2500ac | Водоспад спектра 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 на тих самих вхідних даних лінії |
spectrum (SpectrumScenario, SpectrumModel::bin_psd_w_per_hz, SpectrumModel::band_state, effective_cn0_multi_dbhz, system_temp_k, Jammer::power_fraction_in, Jammer::duty) | spectrum::tests (agrees_with_the_jamming_kind_chain — J/S дорівнює jamming::j_over_s_db, а ефективне C/N0 дорівнює jamming::effective_cn0_dbhz з Q = 1/(R_c kappa) з точністю 1e-9 дБ, і якір 32,105 дБ власного тесту виду глушіння; noise_floor_is_kt0f; chirp_window_splits_whole_and_partial_sweeps; duty_weights_partial_rows; demo_scenario_runs_and_denies_l1_while_l5_survives; defaults_run_with_no_jammer; bad_inputs_are_refused) | Зведення до рівняння антиглушіння та бюджету лінії наявного виду jamming (той самий код, викликаний на тих самих вхідних даних) і до замкненої формули порога шуму k T0 F. Спектри сигналів під цим є у валідованому рядку вище; потужності глушників, часовий графік і смуги входу приймача задаються сценарієм, спектри безперервні (без ліній розширювального коду), а автоматичне регулювання підсилення, бланкування чи діаграма спрямованості антени на глушник не впливають. У репозиторії немає виміряного спектра із глушінням, із яким можна було б перевірити складену модель. Таблиця Q виду jamming (CW і вузькосмуговий 1, широкосмуговий і з перестроюванням 2 з версії 0,36: підручникові значення, зафіксовані за замкненими формулами navsignal) збігається зі значенням цієї моделі для CW і відрізняється від того, що вона виводить для шуму, узгодженого з C/A (1,5), та для плоского шуму від нуля до нуля без нормування в смузі (2,2); звіт друкує обидва |
MODELLED |
| VM-2d5c1f5c | Введення та виведення записів 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). Ці дві частини і становлять validated-твердження. spectrum::synthesise_iq породжує модель як IQ, а розділ [iq] виду spectrum проводить модель через IQ і SigMF до Велча та порівнює з моделлю; його розділ [recording] оцінює реальний запис (у нативних збірках); синтез і ці порівняння з моделлю лежать поза межами validated-твердження |
sigmf (read, write, encode, decode, parse_meta, meta_to_json); spectrum (welch_psd, fft_in_place, synthesise_iq) | sigmf::tests (cf32_round_trip_is_exact_to_single_precision; ci16_round_trip_is_within_half_a_code; ci16_is_little_endian_i_then_q; integer_encoding_counts_saturation; metadata_uses_the_core_namespace; unsupported_types_and_channels_are_refused; sample_start_offsets_into_the_data); spectrum::tests (fft_matches_a_direct_dft; welch_reads_white_noise_as_variance_over_fs_and_keeps_a_tone_s_power — рівень шуму в межах 2 % від дисперсії, поділеної на частоту дискретизації, повна потужність за Парсевалем у межах 2 %, еквівалентна шумова смуга Ганна 1,5 бін; noise_like_synthesis_is_unbiased_through_welch — медіана різниці Welch мінус модель у межах 0,1 dB через круговий обхід ci16_le; synthesised_iq_through_sigmf_reproduces_the_model_spectrum); tests/sigmf_welch_oracle.rs::welch_and_sigmf_io_match_scipy_and_sigmf_python (Welch PSD проти scipy 1.18.1 signal.welch по кожному біну з точністю 1e-12 відносно на 27 випадках, спостережено 6.0e-14; п'ять записів sigmf-python 1.13.0 декодовано побітово ідентично з ідентичними метаданими; записи, створені крейтом, прочитано назад побітово ідентично через sigmf-python і валідні за схемою SigMF v1.2.6) | 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, що специфікація залишає відкритим; порівняння використовує сирі коди), багатоканальні записи та типи даних, які читач відхиляє | VALIDATED |
| VM-5d9fc243 | Положення планет у Сонячній системі за кеплерівськими елементами JPL Standish | Геліоцентричні положення Меркурія, Венери, барицентра Земля–Місяць, Землі, Марса, Юпітера та Сатурна за таблицею Standish 1 (1800 рік н. е. – 2050 рік н. е.) і всіх восьми планет за таблицями 2a/2b (3000 рік до н. е. – 3000 рік н. е., з членами середньої аномалії b, c, s, f), які крок за кроком дотримуються алгоритму зі сторінки JPL і повернуті до ICRF (International Celestial Reference Frame) за нахилом екліптики зі сторінки; Земля відокремлюється від барицентра за лунним рядом Монтенбрука й Гілла та відношенням мас. Скомпоновано як ephem_provider::AnalyticSolarSystem, тож будь-яке тіло доступне відносно будь-якого іншого, і може запускатися як вид solar-system |
ephem (standish_state, standish_elements, standish_nominal_error, ecliptic_to_icrf); ephem_provider (AnalyticSolarSystem); solar_system (SolarSystemScenario) | tests/solar_system_standish_preregistered.rs::standish_rms_errors_are_within_explanatory_supplement_table_8_10_1 (барицентри 1800-2050 з таблиці 1 і від 3000 до н. е. до 3000 н. е. з таблиці 2, 8908 і 21857 епох, найгірше RMS 0,778 від значення таблиці 8.10.1); tests/solar_system_standish_earth_icrf_preregistered.rs (earth_from_the_split_barycentre_is_within_the_emb_table_8_10_1_rms: Земля через AnalyticSolarSystem та icrf_to_ecliptic, RMS 0,483 від значення EMB; icrf_positions_are_within_the_table_8_10_1_rms: положення тіл таблиці 1 і Землі в ICRF, найгірше 0,778; earth_minus_barycentre_offset_matches_de441_1950_to_2050: розділення за місячним рядом, найгірше 0,088 deg і 6,1 km); ephem::tests (standish_periods_obey_keplers_third_law; a_planet_track_is_one_closed_ellipse). Регресія без впливу на прийняття: tests/solar_system_horizons_reference.rs | Геліоцентричні геометричні вектори JPL Horizons DE441 (екліптичні та ICRF), отримані після комітів попередньої реєстрації 80451866, 8d38a28b і 558cc807. Поріг: для кожної планети й складової RMS не більше ніж 1.0x від наближених похибок з Explanatory Supplement 3rd ed. Table 8.10.1 (рядок EMB для Землі); поділ Земля–EMB перевіряється безпосередньо за DE441 399 мінус 3, не більше 0,3 град і 8,1 км на кожній епосі 1950–2050 (поріг довжини 8,1 км походить із точності лунного ряду, заявленої у власній документації ефемерид Kshana з посиланням на Монтенбрука й Гілла, і не перевірявся за книгою; виміряне значення 6,09 км лежить близько до нього). Статистику RMS обрано, знаючи, що попереднє порівняння на 27 епохах досягало 1.87x від номіналу в максимумі; похибки в окремих епохах сягають 3.83x (3.87x у випадку ICRF). Supplement не визначає свої значення як RMS. Випадок B повертає обидві сторони за нахилом екліптики IAU 1976, введеним у тесті, тож поворот не перевіряється сам за собою. Вибір таблиці за замовчуванням в AnalyticSolarSystem не перевіряється (тести примусово задають таблицю 1). Уран і Нептун за таблицею 1 — окремий рядок MODELLED | VALIDATED |
| VM-bd135aad | Положення Сонця, Місяця, Меркурія та Венери з ядра DE440 на епохи UTC (KernelEphemeris) | Геометричні положення Сонця, Меркурія, Венери, Землі та Місяця одне відносно одного (осі J2000/ICRF, метри) з ядра JPL DE440 через ephem_provider::KernelEphemeris на епохи UTC: імена тіл відображаються на коди NAIF, UTC проходить через таблицю високосних секунд, а TT до TDB — через дочленний ряд TDB-TT із двома членами, ядро читається власним читачем рушія. Тіло, яке ядро містить лише як барицентр системи (від Марса до Нептуна, Плутон у de440s), відхиляється і ніколи не підміняється. Рядок Standish без ядра залишається шляхом для браузера та резервним шляхом | ephem_provider (KernelEphemeris::relative_position_utc, utc_to_tdb_jd2); naif_kernel; timescales | tests/kernel_ephemeris_skyfield_oracle.rs::kernel_ephemeris_matches_skyfield_at_utc_epochs (600 положень на 200 епохах UTC 1973-2026, обраних із геш-суми попередньої реєстрації; найгірше 0,66 порога, 2,96 m); tests/kernel_ephemeris_skyfield_oracle.rs::kernel_ephemeris_matches_skyfield_on_the_full_kernel_when_present (залежить від наявності даних); tests/kernel_ephemeris_skyfield_oracle.rs::barycentre_only_bodies_are_refused_not_substituted; ephem_provider::tests | 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 (кілька метрів для найшвидших пар) | VALIDATED |
| VM-fde7ce48 | Світловий час між тілами Сонячної системи | Ньютонівський односторонній світловий час від будь-якого тіла до будь-якого іншого, прийнятий на епоху, розв'язаний радіометричним розв'язувачем світлового часу з нерухомою точкою (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 |
radiometric (light_time_solution, two_way_range, shapiro_delay); solar_system (link, link_on); ephem_provider (AnalyticSolarSystem) | tests/solar_system_light_time_solver_preregistered.rs::light_time_solver_on_de441_positions_matches_horizons_lt_within_1e_6_s (барицентри Меркурія, Венери, Марса, Юпітера та Сатурна, Сонце і Місяць до центра Землі, по 1576 епох на інтерпольованих положеннях DE441, найгірше 6.7e-9 s проти 1e-6 s); заява про точність без впливу на прийняття для аналітичного шляху: tests/solar_system_light_time_preregistered.rs (RMS c dLT від 0,17 до 0,30 порога положення з таблиці 8.10.1); solar_system::tests | Односторонній ньютонівський світловий час низхідної гілки JPL Horizons DE441 LT (VEC_CORR=LT, спостерігач у центрі Землі), попередньо зареєстровано (480037d3, поправка 54d5c86f, що змінила лише крок вузлів інтерполяції після того, як перше отримання не пройшло передумову точності інтерполяції 10 м, до порівняння будь-якого світлового часу) з порогом 1e-6 с на світловий час; розв'язувачу подано барицентричні положення DE441, щоб ітерація із запізнілим передавачем була помітною (розв'язувач першої ітерації помиляється до 0,1 с). На аналітичних положеннях Standish світловий час настільки добрий, наскільки добрі ці положення (див. рядок положень планет); реалізована лінія трактує Сонце як інерційний центр, що лишається в межах цієї похибки положення, але окремо не validated. two_way_range і shapiro_delay зовнішньо не порівнюються | VALIDATED |
| VM-2233778f | Уран і Нептун за таблицею Standish 1, Плутон і швидкості планет | Положення Урана й Нептуна за таблицею Standish 1 (типова в межах 1800 рік н. е. – 2050 рік н. е.), Плутона за рядком таблиці 1 від 1992 року, якого вже немає на поточній сторінці JPL, і геліоцентрична швидкість кожної планети: двотільна похідна із середнім рухом, що випливає з елементів, плюс поворот еліпса через швидкості перигелію, нахилу й вузла | ephem (standish_state, StandishElements::state_at_mean_anomaly, Planet::Pluto); solar_system (position_label) | tests/solar_system_horizons_reference.rs (standish_table1_uranus_and_neptune_exceed_the_nominal_error: зафіксовано на 2,04 і 5,16 номінальної похибки довготи, менше ніж у шість разів; pluto_from_the_1992_row_is_measured_not_validated: у межах 39 кутових секунд і 1.14e9 м; standish_velocities_track_horizons_to_one_percent: найгірше 3.7e-3 швидкості); ephem::tests (standish_velocity_is_the_derivative_of_the_position; pluto_has_no_table2_row_and_no_stated_error) | Виміряно за JPL Horizons DE441 (ті самі закомічені фікстури), але не validated: заявлені значення таблиці 1 для Урана й Нептуна перевищено до 2,0 і 5,2 разів відносно геліоцентричних положень DE441 (Нептун вкладається в них відносно барицентричних положень, що наводить на думку, що підгонка була не геліоцентричною), сторінка не заявляє жодної похибки для Плутона, а для швидкостей опублікованої межі не існує. Таблиці 2a/2b вкладаються у свої значення для Урана й Нептуна і покриті валідованим рядком | MODELLED |
| VM-404abc2a | Положення Місяця та семи великих супутників (Фобос, Деймос, галілеєві супутники, Титан) | Геоцентричний Місяць за рядом Монтенбрука й Гілла (чий член -1.3972 град на століття вже відносить його до рівнодення J2000) та планетоцентричні положення й швидкості Фобоса, Деймоса, Іо, Європи, Ганімеда й Калісто за середніми елементами JPL Solar System Dynamics у площині Лапласа кожного супутника, зі швидкістю середньої довготи, взятою зі швидкості синхронного обертання IAU (таблиця друкує період із замало цифр, щоб утримати фазу), та Титана за моделлю обертання IAU (супутник на мінус тілозв'язаній осі x на середній відстані), оскільки надрукований рядок площини Лапласа для Титана не відтворює Horizons навіть на власній епосі | ephem (satellite_state, Satellite, SatelliteMethod, moon_icrf, moon_icrf_velocity); ephem_provider (AnalyticSolarSystem) | tests/solar_system_horizons_reference.rs (moons_track_horizons_to_the_measured_angles: найгірша кутова похибка з погляду планети за 2000 до 2040, Фобос 5,65 град, Деймос 0,38, Іо 0,40, Європа 1,63, Ганімед 0,22, Каллісто 0,27, Титан 3,31; geocentric_moon_tracks_horizons: 0,046 град); ephem::tests (moons_sit_at_their_mean_distance_and_move_at_their_mean_speed); ephem_provider::tests (earth_and_moon_balance_about_their_barycentre) | Виміряно за ефемеридами супутників JPL Horizons (DE441, MAR099, JUP365, SAT441), закомічено в tests/fixtures/solar_system/horizons_satellites_icrf.csv із запитом і датою отримання; для середніх елементів чи для розміщення за моделлю обертання опублікованої точності не існує, тож зафіксовані пороги ловлять регресії, а не validate. Середні елементи не враховують резонансних і сонячних збурень, а вікове прискорення Фобоса не моделюється | MODELLED |
| VM-136e5aec | Фізичні сталі кожного тіла Сонячної системи та звіт про всю систему | Body отримує Меркурій, Венеру, Юпітер, Сатурн, Уран, Нептун, Плутон, Фобос, Деймос, Іо, Європу, Ганімед, Калісто й Титан (гравітаційний параметр, опорний радіус, J2 там, де опублікований, із радіусом, до якого він віднесений, полюс і нульовий меридіан IAU), пошук за іменем і запис BodyFacts (код NAIF, клас, батьківське тіло, екваторіальний і середній радіус); вид solar-system повідомляє їх для всіх вісімнадцяти тіл разом із положеннями, світловими часами та треком орбіти за один оберт, а кожне тіло позначене VALIDATED або MODELLED |
body (Body::by_name, Body::facts, Body::prime_meridian, SOLAR_SYSTEM, BodyFacts); solar_system (SolarSystemScenario, position_label) | body::tests (every_catalogue_body_resolves_by_name_and_carries_its_record; a_zonal_field_is_referenced_to_its_sources_radius; retrograde_rotators_have_negative_rates_and_periods_match_the_iau_rate); solar_system::tests (defaults_report_all_eighteen_bodies_with_tracks; earth_heliocentric_distance_is_one_au_and_period_one_year; a_planet_track_closes_on_its_orbit_and_starts_at_the_epoch_position; moons_orbit_their_planets_at_their_mean_distance; pluto_outside_its_table_is_an_error_not_a_guess; every_emitted_number_has_a_unit); tests/body_constants_naif_oracle.rs::only_the_conventional_constants_of_other_rows_differ | Переписування опублікованих сталих, кожна з посиланням там, де визначена: гравітаційні параметри з записів тіл JPL Horizons і таблиці фізичних параметрів супутників JPL, радіуси з таблиць фізичних параметрів JPL (IAU WGCCRE 2015), полюси та нульові меридіани від Робочої групи IAU з картографічних координат і елементів обертання (середні значення, без швидкості T і періодичних членів), J2 з Smith et al. 2012, Iess et al. 2018 і 2019 та Jacobson 2009 і 2014. Перевірено на внутрішню узгодженість (період обертання Юпітера за швидкістю System III, кожне J2 за своїм опорним радіусом), а не за зовнішнім оракулом. 0,30 раунд 2: значення GM прийнято з gm_de440, а елементи Фобоса й Деймоса з pck00011, тож 0 з 84 сталих чотирнадцяти доданих тіл тепер відрізняються від NAIF (було 12), що є перевіркою переписування і не враховується. 0,36: орієнтацію IAU в системі, пов'язаній із тілом, і GM чотирнадцяти доданих тіл виділено у власний рядок VALIDATED («IAU body orientation and gravitational parameter of the fourteen added solar-system bodies»); цей рядок зберігає решту. J2 і середній радіус цитуються, а не validated; положення у звіті спираються на власні рядки; а prime_meridian_deg у звіті для Землі, Місяця та Марса лишається на умовних сталих (до 6.6e-3, 2.8e-2 і 9.6e-4 рад від IAU_<BODY>). Ревізії 0,30: Phobos GM 7.087e5 -> 7.087546066894452e5, Deimos 9.62e4 -> 9.615569648120313e4, Uranus 5.7939506103e15 -> 5.793951256527211e15, Neptune 6.83509997e15 -> 6.835103145462294e15, Pluto 8.69326e11 -> 8.696138177608748e11 м³/с²; екваторіальний радіус Фобоса 13,1 -> 13,0 км; prime_meridian_deg тепер включає квадратичні та періодичні члени | MODELLED |
| VM-ee5cc5e3 | Орієнтація IAU і гравітаційний параметр чотирнадцяти доданих тіл Сонячної системи | Body::iau_rotation_et, поворот від J2000 до тілозв'язаної системи IAU для Меркурія, Венери, Юпітера, Сатурна, Урана, Нептуна, Плутона, Фобоса, Деймоса, Іо, Європи, Ганімеда, Калісто й Титана з кожною швидкістю на століття, квадратичним і періодичним членом, які тіло має в pck00011, та поле гравітаційного параметра mu тих самих чотирнадцяти тіл. Сонце, Земля, Місяць і Марс мають умовні сталі, що належать іншим рядкам, і не охоплені | body (Body::iau_rotation_et, Body::iau_angles_et, Body) | tests/body_orientation_spice_oracle.rs::orientation_matches_spice_pxform_for_the_fourteen_added_bodies (41 епоха від 1955 до 2044, 574 матриці в межах 1e-9 rad, найгірше Фобос 1.43e-10 rad); tests/body_orientation_spice_oracle.rs::orientation_matches_spice_pxform_at_fresh_epochs (41 епоха від 1961 до 2038, що ніколи раніше не порівнювалися, 574 матриці в межах 1e-9 rad, найгірше Фобос 1.38e-10 rad); tests/body_constants_naif_oracle.rs::constants_match_naif_pck00011_and_gm_de440 (0 з 84 констант чотирнадцяти тіл відрізняються від NAIF) | 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 | VALIDATED |
| VM-136e83d4 | Позиціонування навколо будь-якого тіла Сонячної системи з локальним угрупованням і лінією далекого космосу із Землею | Вид body-pnt: орбітальний апарат або поверхневий посадковий модуль навколо тіла, обраного за іменем, навігує за односторонніми псевдодальностями від навігаційного угруповання Уокера навколо тіла (двотільні орбіти з віковим дрейфом за J2 тіла, невідомий годинник користувача) і необов'язковою безгодинниковою двосторонньою дальністю від Землі, причому напрям і відстань до Землі беруться з аналітичних ефемерид на кожній епосі; лінії візування, перекриті сферою тіла, та маска висоти над поверхнею; на кожну епоху — GDOP і PDOP лише за угрупованням (orbit::dop), формальна невизначеність положення з рядком Землі та без нього і засіяні фікси за Гауссом–Ньютоном (batch_ls::gauss_newton) обома способами, зі світловим часом і круговим проходом від тіла до Землі |
body_pnt (BodyPntScenario, formal_sigma, fix_error); orbit (dop); batch_ls (gauss_newton); mars_pnt (chord_clears_sphere); mars_frame (bodyfixed_to_inertial) | body_pnt::tests (relay_period_is_keplers_third_law_for_the_body; an_orbiter_keeps_its_radius_and_a_lander_sits_on_the_surface; the_earth_range_never_worsens_the_formal_uncertainty; seeded_fix_errors_are_consistent_with_the_formal_sigma: середньоквадратичне значення кожної похибки визначення, поділене на її власну формальну сигму, у [0,6, 1,5]; earth_light_time_is_minutes_at_mars_and_the_run_is_deterministic; defaults_run_around_mars_and_every_number_has_a_unit) | Замкнені форми та самоузгодженість: третій закон Кеплера для періоду ретранслятора, радіус орбіти й радіус поверхні, що зберігаються протягом прогону, додавання вимірювання, яке ніколи не збільшує формальну невизначеність, і засіяні похибки, що узгоджуються з коваріацією. Орбіти ретрансляторів ігнорують треті тіла (збурення Юпітера на ретранслятори навколо Європи не моделюється), шум гауссів на заданих рівнях, а модель вимірювання миттєва, тож це не validated за навігаційними даними жодної місії | MODELLED |
| VM-ead7033f | Геометрія угруповань Уокера та опубліковані номінальні слоти GPS, Galileo і ГЛОНАСС | Генератори виду constellation-design: схеми Walker delta і star у конвенції T/P/F (крок вузлів 360/P або 180/P, крок у площині 360·P/T, зсув фази між площинами 360·F/T), а також базове та розширюване 24-слотове угруповання GPS, пресети Galileo і ГЛОНАСС, побудовані за їхніми опублікованими номінальними елементами та розміщені в земній фіксованій системі за грінвіцьким годинним кутом, який наводять їхні документи |
constellation (WalkerSpec::elements, gps_slots, galileo_walker, glonass_slots, GPS_BASELINE_SLOTS, GPS_EXPANDABLE_SLOTS) | constellation::tests::walker_24_3_1_reproduces_galileo_os_sdd_table_23 (усі 24 рядки RAAN і середньої аномалії з точністю 1e-9 deg); constellation::tests::glonass_icd_slot_formula_is_a_walker_24_3_1 (формула слотів з ICD і Walker 24/3/1 дають ті самі 24 пари вузла та аргументу широти); constellation::tests::gps_presets_reproduce_the_published_equatorial_crossings (перетин екватора трасою підсупутникових точок усіх 36 положень GPS за RAAN, аргументом широти та годинним кутом 100,765 deg: 35 у межах 0,0108 deg проти порога заокруглення 0,015 deg, а E3F у межах 0,06 deg, бо власний рядок E3F у таблиці суперечить своїм RAAN та аргументу широти приблизно на 0,06 deg; вікова регресія вузла в межах 5 % від -0.0402 deg/добу з таблиці); constellation::tests::walker_geometry_identities_are_exact (три тотожності інтервалів для дельта- та зіркових схем до 1 584 супутників, з точністю 1e-9 deg) | Опубліковані документи агентств: Galileo Open Service Service Definition Document issue 1,1 (European GNSS Service Centre) Tables 1 і 23, опорне угруповання на 2016-11-21 00:00 UTC; GLONASS Interface Control Document edition 5,1 (2008) розділ 5,2, формула слотів для довготи вузла й аргумента широти; GPS Standard Positioning Service Performance Standard 5th edition (April 2020) Tables 3.2-1, 3.2-2 і 3.2-3, включно зі стовпцем перетину екватора слідом на землі, що є незалежним викладом земної фіксованої геометрії, яку пресет має відтворювати. Це підтверджує генератори та переписування; фаза середньої орбіти та вузли нахиленої геосинхронної орбіти BeiDou не опубліковані і не охоплені | VALIDATED |
| VM-a33da228 | Глобальне геометричне погіршення точності базового угруповання GPS | Рушій покриття constellation-design на базовому 24-слотовому пресеті GPS за умов додатка B до GPS Standard Positioning Service Performance Standard (SPS PS) (одна зоряна доба, 287 п'ятихвилинних кроків, глобальна сітка 4 x 4 град, зважена за косинусом широти, усе у видимості, маска 5 град, один годинник приймача): глобальний розподіл HDOP, медіана PDOP і доступність PDOP не більше 6, глобально та в найгіршій точці |
constellation (coverage, dop_at, NormalAccum) | constellation::tests::gps_baseline_global_dop_matches_the_sps_performance_standard (HDOP: медіана 0,940, 90 % 1,165, 95 % 1,255, 98 % 1,370, середнє 0,965 проти 0,94, 1,16, 1,25, 1,37 і 0,96, поріг 0,03 для кожного, зафіксований до першого прогону; PDOP: медіана 1,795 не перевищує 1,815 з таблиці B.3-1 для погіршеної суміші з 20-24 супутників; доступність 100 % глобально та в найгіршому пункті проти 98 % і 88 % з таблиці 3.8-1); constellation::tests::single_epoch_dop_matches_the_hand_computation (зеніт плюс три супутники на висоті 30 deg: HDOP 4/3, VDOP 2,3094, PDOP 8/3, TDOP 1,5275, GDOP 3,0732 з точністю 1e-9 і дорівнює orbit::dop зі спільним годинником) | GPS SPS PS 5th edition (April 2020) Appendix B sections B.3.2.2 і B.3.2.3, опублікований глобально усереднений розподіл HDOP повністю заповненого базового 24-слотового угруповання (медіана 0,94, 90 % 1,16, 95 % 1,25, 98 % 1,37, середнє 0,96), Table 3.8-1 (доступність PDOP) і Table B.3-1 (ансамблевий PDOP деградованого угруповання, використаний лише як верхня межа), плюс виведена вручну замкнена формула для однієї епохи. Розподіли VDOP і PDOP повного угруповання опубліковані лише як рисунок, тож PDOP зафіксовано односторонньо; найгірша просторово-часова точка (HDOP 2,40 і VDOP 5,22 тут, 2,49 і 5,43 опубліковано) залежить від сітки і повідомляється, а не фіксується | VALIDATED |
| VM-79dd3ee7 | Карти покриття та геометричного погіршення точності для довільних багатогрупових проєктів у масштабі навколо будь-якого центрального тіла | Вид constellation-design поза двома зафіксованими випадками: явні та багатошарові проєкти, кілька угруповань за прогон з одним годинником приймача на угруповання, Земля, Місяць і Марс зі сталих тіл, пресет BeiDou (змодельовано фазу середньої орбіти та перетин нахиленої геосинхронної орбіти на 118 град E), кількість супутників у видимості для кожної комірки, GDOP, PDOP, HDOP, VDOP і доступність, проріджені треки на землі та префільтр видимості за широтою підсупутникової точки, що запускає проєкт на 5 000 супутників на сітці 10 град за частку секунди |
constellation (coverage, ConstellationDesignScenario, beidou_slots, body_by_name) | constellation::tests (prefilter_matches_brute_force_exactly — кожна карта й лічильник дорівнюють скануванню з прямою перевіркою висоти; five_thousand_satellites_on_a_coarse_grid — 5 000 супутників, друкує час прогону та збережені парні перевірки; a_clock_per_constellation_needs_one_more_satellite; beidou_geo_and_igso_geometry; lunar_shell_runs_around_the_moon; presets_are_earth_only_and_errors_are_clear; preset_counts); tests/constellation_availability_published_spec_oracle.rs::presets_meet_the_published_dop_availability (лише перевірка регресій); tests/coverage_dop_full_oracle.rs::finding_is_pinned; tests/coverage_dop_gnss_lib_py_oracle.rs (регресія) | Внутрішня узгодженість: повний перебір висот, зведення, пораховані вручну та через orbit::dop, і замкнена геометрія Уокера та геосинхронна геометрія. Двотільні орбіти з необов'язковим віковим 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), тож рядок не validated. Ревізії 0,30: опорним годинником TDOP/GDOP тепер є угруповання з найменшим номером у видимості (constellation-multi-gnss-coverage глобальний GDOP max 2,2236 -> 2,1205, середнє 1,122 -> 1,131), а кількості видимих за угрупованнями підсумовуються як цілі | MODELLED |
| VM-f9c068a3 | Ланцюгова місія за різними видами сценаріїв на одному спільному часовому графіку | Фази виду campaign: кожна фаза запускає один або кілька сценаріїв наявних видів через run_toml, зчитує їхні виходи в іменовані канали (похибка часу годинника та охоронний поріг, середнє ефективне відношення несівної до густини шуму та поріг відстеження, вертикальний рівень захисту та межа тривоги, похибка положення, супутники у відстеженні, прапорці тривог) за пресетами для кожного виду або явними шляхами результатів, розміщує їх на початку фази й утримує до спільної сітки, з межами фаз і подіями; стан передається далі через carry (канал продовжується від кінцевого значення попередньої фази), handoff (номер попередньої фази, записаний у наступний сценарій) та end_at (фаза закінчується в момент, який обчислив прогін, наприклад час виявлення монітором спуфінгу); хеш кампанії та дайджест за кожним результатом учасників |
campaign (run_campaign_detailed, run_chain, presets, extract, to_svg) | tests/campaign_composition_reference.rs (a_one_phase_clock_campaign_reproduces_the_standalone_run_bit_for_bit, a_one_phase_integrity_campaign_reproduces_the_standalone_run_bit_for_bit, a_one_phase_jamming_campaign_reproduces_the_standalone_run_bit_for_bit — результат члена побайтово ідентичний окремому прогону, а кожне вирівняне значення дорівнює окремому ряду; the_chained_mission_hands_state_on_and_ends_the_spoofing_phase_on_detection; a_handoff_writes_the_previous_phase_number_into_the_next_scenario; malformed_campaigns_fail_loudly) | Тотожності композиції щодо автономних прогонів тих самих видів: однофазна кампанія відтворює автономний вихід біт у біт, перенесений зсув дорівнює власному останньому відліку попереднього прогону, а фаза, завершена за end_at, має довжину, точно рівну часу виявлення прогону. Адитивне перенесення через межу фаз і утримання нульового порядку є вибором моделювання, і кожна фаза настільки добра, наскільки добрий вид, що її запускав; жодну ланцюгову місію не звірено з виміряною | MODELLED |
| VM-badb561f | Перебори параметрів і засіяні ансамблі Монте-Карло за будь-яким видом сценарію | Розділи sweep (від одного до трьох ключів із крапками будь-якого виду, за значеннями осей загального перебору, за потреби з ансамблем у кожному вузлі) і monte_carlo виду campaign: реалізація k запускається з base_seed + k; кожна метрика повідомляє середнє, стандартне відхилення, перцентилі 5/50/95 за найближчим рангом і перцентильний бутстреп-довірчий інтервал 95% для середнього із фіксованим зерном (inertial::metric_stat); одиниці метрик беруться з власного блоку units виду, що перебирається |
campaign (run_sweep, run_monte_carlo, ensemble); sweep (GenericAxis, coords_of, set_dotted_value); inertial (metric_stat) | tests/campaign_composition_reference.rs (a_fixed_seed_ensemble_is_byte_stable_and_each_realisation_is_the_standalone_run; the_ensemble_mean_and_spread_match_the_white_fm_closed_form — 200 зерен годинника з білим частотним шумом, що біжить за інерцією tau = 3010 с: справжнє середнє 0 всередині повідомленого інтервалу, піввисота інтервалу в межах 25% від 1,96 sigma/sqrt(n), а вибіркова дисперсія всередині двостороннього 99% інтервалу хі-квадрат для sigma = sqrt(q_wf tau) = 16,459 нс; калібрувальний ансамбль (CAP-10, попередньо зареєстровано ea451cb5, docs/CALIBRATION-ENSEMBLES.md, tests/calibration_ensembles.rs): на 200 незалежних ансамблях інтервал покриває справжнє середнє в 192 (всередині 99 % області біноміального розподілу Binomial(200, 0,95) [181, 197]) і перевірка хі-квадрат проходить у 196, тоді як допуск персентилів для одного зерна (p05 і p95 у межах 0,3 sigma) проходить лише у 183 із 200, NOT MET проти попередньо зареєстрованих 190, нестійка до зерна перевірка, записана, а не послаблена; a_one_node_sweep_and_a_one_member_composition_read_the_standalone_number) | Замкнена форма випадкового блукання фази за білого частотного шуму, дисперсія q_wf tau (NIST Technical Note 1337), для статистичного апарату та побайтова рівність з автономними прогонами для засівання. Це перевіряє арифметику ансамблю на власній моделі годинника рушія, а не на зовнішньому наборі даних | MODELLED |
| VM-d55cb714 | Кілька сценаріїв за спільних умов із зведеним підсумком | Розділ compose виду campaign: іменовані спільні значення (наприклад, потужність і положення одного глушника), записані в кожен складник за ключами, до яких їх прив'язано, запуск кожного складника та для кожної метрики найменше, найбільше й середнє значення серед складників із зазначенням складника; одиниці метрик мають збігатися в усіх складниках |
campaign (run_compose) | tests/campaign_composition_reference.rs (a_one_node_sweep_and_a_one_member_composition_read_the_standalone_number — композиція з одного члена зчитує окреме число та дайджест результату) | Тотожність композиції щодо автономного прогону. Арифметика спільних умов — це облік; фізика належить видам-складникам, кожен з яких має власний рядок | MODELLED |
| VM-5664a533 | Обмежена оптимізація однієї метрики за параметрами кампанії | Розділ optimize виду campaign (CAP-32): від одного до трьох ключів сценарію з крапками, обмежених [lo, hi] у лінійній або логарифмічній шкалі, одна метрика, прочитана за шляхом результату, мета minimize, maximize або target; метод grid (значення осей перебору) або детермінований симплекс Нелдера–Міда в нормованих координатах із проєкцією на коробку та стандартними коефіцієнтами; відсутня або нескінченна метрика оцінюється як найгірша і лишається в trace; за runs > 1 метрика є середнім за спільними зернами; кожне обчислення є справжнім прогоном названого виду, перелічене в trace і враховане в дайджесті відтворюваності |
campaign::optimize (run_optimize, nelder_mead) | tests/campaign_optimize_reference.rs (попередньо зареєстровано fbe6c8b3 і, після пропуску протоколу в раунді 1, 441f31bc: p2_prime_interior_target_range_matches_the_closed_form — 1-D розв'язок цілі в межах 6.1e-15 від r* = r0 10^((m(r0) - 3)/20) за 96 обчислень; p3_prime_contour_target_grid_and_nelder_mead і p3_grid_matches_brute_force_and_nelder_mead_does_at_least_as_well — найкращий результат методу сітки побітово дорівнює незалежному циклу повного перебору 41 x 41 над run_toml, Нелдер–Мід щонайменше такий самий за 177 і 161 обчислень; p4_nelder_mead_reaches_the_corner_maximum; p5_the_document_is_byte_stable_and_counts_agree; p2_round1_not_met_the_box_excludes_the_closed_form, який фіксує записаний пропуск раунду 1); campaign::optimize::tests (nelder_mead_meets_the_preregistered_rosenbrock_bar: f* = 1.7e-20 за 234 обчислень; a_non_finite_score_is_never_the_best; the_grid_mapping_is_the_sweeps) | Лише внутрішньо: точна замкнена форма -20 log10(range) рівняння лінії, незалежна повна сітка перебору того самого виду та функція Розенброка. 1-D поріг раунду 1: NOT MET (попередньо зареєстрована коробка виключила розв'язок 3 дБ; оптимізатор зупинився на межі), зафіксовано в docs/design/evidence/cap32-optimize/RESULTS.md і повторно не оцінювалося. Оптимум є локальним для коробки та початкової точки; твердження про глобальний оптимум немає | MODELLED |
| VM-25c2d93d | Замкнені форми для обмеженої смуги для будь-якого далекомірного сигналу: потужність у смузі та джитер стеження за кодом ранній–пізній порівняно з опублікованими значеннями, з перехресною перевіркою смуги Габора та спектрального розділення зі зсувом | 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 для кожного проєкту сигналу |
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) | navsignal::band_limited_tests (sine_integral_matches_tables_and_its_limit — Si(1), Si(pi), Si(2 pi) з точністю 1e-12; bpsk_power_in_band_closed_form_matches_textbook_and_numeric — 0,9028 потужності в головній пелюстці для BPSK(1/3), BPSK(1), BPSK(5), BPSK(10), а замкнена форма дорівнює квадратурі з точністю 1e-7 у смугах 10, 15, 20 і 51,15 MHz; bpsk_gabor_closed_form_matches_numeric_and_asymptote — з точністю 1e-4 та асимптота sqrt(B R_c / (2 pi^2)); bandlimited_dll_reduces_to_the_textbook_forms — когерентний early-late BPSK(1) при 45 dB-Hz, B_L 1 Hz, d 1 чіп, T 20 ms: 0,0039564 чіпа (1,159 m) у межах 1 %, некогерентна форма дорівнює navsignal::dll_code_jitter_chips у межах 1 %, границя зникаючого інтервалу дорівнює своїй замкненій формі з точністю 1e-5; offset_bpsk_ssc_matches_parseval_closed_form — зсуви від 0 до 3,2 R_c у межах 0,01 dB і -71.86 dB/Hz при нульовому зсуві для BPSK(10); altboc_psd_is_unit_area_with_lobes_at_e5a_and_e5b; modulation_labels_round_trip) | Зовнішньо зафіксовано: 90,3 відсотка потужності головної пелюстки, когерентний ранньо-пізній джитер у заданій робочій точці, табличні значення інтеграла синуса та власний коефіцієнт спектрального розділення BPSK 2/(3 R_c) за нульового зсуву. Лише внутрішні перехресні перевірки, а не зовнішня валідація: замкнена форма габорівської ширини смуги обмеженого BPSK та її асимптота, а також коефіцієнт спектрального розділення BPSK зі зсувом за ненульових зсувів, обидва виведені тут і перевірені квадратурою. Опубліковані замкнені форми: спектр BPSK-R у вигляді квадрата sinc і його 90 відсотків потужності головної пелюстки (Kaplan & Hegarty, Understanding GPS/GNSS, 3rd ed.); когерентний ранньо-пізній джитер стеження за кодом 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 (Table 5,1); коефіцієнт спектрального розділення як перетворення Фур'є квадрата автокореляції (Betz 2001). Спектр AltBOC перевірено лише на одиничну площу та положення пелюсток (вираз з Galileo Open Service Signal-in-Space Interface Control Document інтегрується до 8 і ділиться на це значення). | VALIDATED |
| VM-46b52315 | Максимальний доплерівський зсув навігаційного супутника на низькій навколоземній орбіті, що визначає розмір пошуку захоплення | leo_signal::max_doppler_hz: найбільший доплерівський зсув супутника під час проходу над головою на масці висоти для кругової орбіти, v R_E cos(el) / (R_E + h) помножене на f / c, за власною несівною та висотою орбіти кожного пресету; вид leo-signal додає складники генератора та користувача і перетворює це на доплерівські біни |
leo_signal (max_doppler_hz) | leo_signal::tests::max_doppler_matches_published_xona_and_iridium_figures — Xona Pulsar X1 (1593,3225 MHz, 1080 km) 33,2 kHz усередині опублікованого діапазону від 32 до 34 kHz; Iridium (1621 MHz, 780 km) у межах 0,5 kHz від опублікованих 36 kHz | Опубліковані значення: максимальний Доплер Xona Pulsar X1 від 32 до 34 kHz (Leclère, Marathe & Reid, ION GNSS+ 2025, https://arxiv.org/abs/2509.19551); Доплер Iridium до +/-36 kHz (Resilient Navigation and Timing Foundation, Recent PNT Improvements and Test Results Based on Low Earth Orbit Satellites). Обертання Землі не враховано, що зміщує значення щонайбільше приблизно на 2,3 kHz; обидва опубліковані значення виконуються й без нього. | VALIDATED |
| VM-3fce7cff | Проєкти сигналів позиціонування, навігації та часу на низькій навколоземній орбіті: стеження за кодом, захоплення, сумісність з 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 та стійкістю до глушників; і якісні перевірки форми проєкту порівняно з описаним вимірюванням |
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) | leo_signal::tests (every_public_preset_parses_and_cites_a_url; detector_reduces_to_pfa_and_grows_with_snr; detection_probability_with_several_looks_matches_the_noncentral_chi_square; mean_time_of_a_perfect_detector_is_half_the_cells; compatibility_ssc_magnitudes_match_independent_quadrature; to_spectrum_band_is_consistent_with_the_design; jammer_tolerance_orders_cw_matched_wideband; e5_centred_signal_hits_e5a_and_e5b_equally; defaults_run_on_the_generic_band_preset; inline_signal_and_bad_inputs); tests/leo_signal_reference.rs (кожен вбудований сценарій, не залежний від системи, запускається без даних семінару, іоносферні відношення в торгівельному порівнянні смуг дорівнюють (f_ref/f)^2, а його різниці у вільному просторі 20 log10(f/f_ref), джитер на опорному C/N0 лежить між своєю межею Габора та формою необмеженої смуги, перевірки форми E5 сценарію з параметрами семінару узгоджені, коли цей файл присутній, і жоден вихідний файл не компілює цей файл) | Валідовані замкнені форми двох рядків вище, тотожність хибної тривоги квадратичного детектора P_d(snr = 0) = P_fa і середній час захоплення за Холмсом, а також зведення до власного ланцюга SSC виду spectrum (той самий код Jammer::ssc). Самі проєкти є вхідними даними: пресети з позначкою REPRESENTATIVE або WORKSHOP не є опублікованими специфікаціями, покращені спектри Feher QPSK, маніпуляції зсувом коду та OFDM наближені, а перевірки форми порівнюють форми, а не відкалібровані рівні. | MODELLED |
| VM-42081bd2 | Багатодіапазонний водоспад спектра (UHF, L, S, C) із проєктними сигналами та глушниками для кожного діапазону | Вид spectrum, розширений за межі L-діапазону: діапазони, задані як пресет проєкту сигналу (змальований з усіма компонентами, обмежений смугою передавання, C/N0 і J/S віднесені до компонента, що відстежується) або як власна несівна й модуляція; додаткові панелі водоспаду за будь-яким діапазоном частот на тому самому часовому графіку та колірній шкалі; широкосмуговий (загороджувальний) глушник поруч із CW, вузькосмуговим, чирпом і узгодженим шумом; J/S і ефективне C/N0 для кожного діапазону за незмінним ланцюгом коефіцієнтів спектрального розділення |
spectrum (Band::unit_psd, Band::tracked_power_dbw, BandDesign, BandCfg, PanelCfg, SpectrumScenario, Waveform, multi_band_svg); leo_signal (SignalDesign::to_spectrum_band) | tests/leo_signal_reference.rs (багатосмуговий водоспад запускається із чотирма панелями, джамери UHF, смуги L5, S і C заглушують лише власну смугу, а запуск звичайної смуги розширенням не змінюється); leo_signal::tests::to_spectrum_band_is_consistent_with_the_design; spectrum::tests (agrees_with_the_jamming_kind_chain) | Зведення до наявного ланцюга spectrum і рівняння антиглушіння виду jamming (односкладниковий діапазон дає ті самі числа, що й до розширення) та спектрів сигналів із валідованих рядків. Потужності глушників, часовий графік, смуги входу приймача та проєктні сигнали є вхідними даними, а проєктний сигнал обрізається на своїй смузі передавання (без позасмугового випромінювання). | MODELLED |
| VM-9ddaa2d5 | Коефіцієнти питомого згасання в дощі для будь-якого діапазону, який використовує лінія 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 |
leo_link::itu (p838_coefficients, p838_k_alpha, rain_specific_attenuation_db_km) | tests/leo_link_reference.rs (p838_coefficients_reproduce_table5_to_its_printed_digits: усі 115 рядків таблиці 5, від 1 GHz до 1000 GHz, кожен коефіцієнт у межах 0,6 від останньої надрукованої цифри; найгірше спостережене 0,51) | ITU-R P.838-3 (03/2005) Table 5, власні табульовані k_H, alpha_H, k_V, alpha_V Рекомендації, закомічені в tests/fixtures/leo_link/p838_3_table5.csv з URL PDF і датою отримання. Таблицю округлено до надрукованих цифр, тож порогом є це округлення | VALIDATED |
| VM-86ab5cbc | Довгострокове згасання в дощі на похилій трасі лінії Земля–космос | ITU-R P.618-14 розділ 2.2.1.1 кроки від 2 до 10 (похила та горизонтальна траса нижче висоти дощу, коефіцієнти горизонтального скорочення та вертикального коригування, A0.01 і його масштабування до 0,001 % – 5 % середнього року), причому висота дощу (P.839) і R0.01 (P.837) є вхідними даними, бо рушій не містить жодної цифрової карти; застосовується для кожного діапазону та епохи видом leo-pass |
leo_link::itu (p618_rain_attenuation_db, RainPath) | tests/leo_link_reference.rs (p618_rain_attenuation_matches_the_itu_validation_examples: 56 випадків у п'яти пунктах, 14,25 і 29 GHz, від 0,001 % до 1 %, у межах 1e-4 dB; спостережено 5e-6 dB) | Файл прикладів валідації 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, а не карти | VALIDATED |
| VM-987a822b | Тропосферна амплітудна сцинтиляція на лінії Земля–космос | ITU-R P.618-14 розділ 2.4.1 кроки від 3 до 9 (опорна сигма з N_wet, ефективна довжина траси, коефіцієнт усереднення антеною, глибина завмирання для 0,01 % – 50 % часу), де N_wet є вхідним значенням або обчислюється з температури, вологості й тиску за виразами ITU-R P.453-14; нижче 4 ГГц вид leo-pass позначає значення як екстраполяцію |
leo_link::itu (p618_scintillation_db, wet_refractivity, ScintillationPath) | tests/leo_link_reference.rs (p618_scintillation_matches_the_itu_validation_examples: 42 випадки в семи пунктах, 14,25 і 20 GHz, у межах 1e-5 dB; спостережено 5e-7 dB) | Приклади валідації 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 і датою отримання. Вираз вологої рефракції з температури та вологості цим рядком не охоплений | VALIDATED |
| VM-47ae8b0f | Втрати на проникнення в будівлю для користувача LEO-PNT у приміщенні | ITU-R P.2109-2 Annex 1 рівняння від (1) до (10) з Table 1: втрати, що не перевищуються з імовірністю P, для традиційних і термічно ефективних будівель на висоті траси біля фасаду, від 80 МГц до 100 ГГц; застосовується для кожного діапазону та епохи до користувача в приміщенні видом leo-pass (випадок UHF у приміщенні) |
leo_link::itu (p2109_building_entry_loss_db, BuildingClass); detection (normal_inv_cdf) | tests/leo_link_reference.rs (p2109_building_entry_loss_matches_the_itu_workbook: 568 значень, 28 GHz при 0 deg і 2 GHz при 45 deg, обидва класи, P від 1e-7 до 0,998, у межах 0,001 dB) | Значення робочої книги валідації ITU-R Study Group 3 Clutter and BEL, як їх переписано в скрипті валідації еталонної реалізації MATLAB (github.com/eeveetza/p2109), закомічено в tests/fixtures/leo_link/p2109_bel.csv з URL і датою отримання. Робоча книга друкує три десяткові знаки | VALIDATED |
| VM-8fce41a4 | Іоносферна затримка першого порядку для кожного діапазону, безіоносферна комбінація та втрати у вільному просторі | Групова затримка 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 у формі «кілометри–мегагерци» | leo_link::iono (group_delay_m, iono_free_coefficients, iono_free_noise_amplification); leo_link (fspl_db); linkbudget (free_space_loss_db) | tests/leo_link_reference.rs (first_order_iono_reproduces_the_is_gps_200_group_delay_ratio: gamma = (77/60)^2 з точністю 1e-12, підсилення L1/L2 і L1/L5 2,978 та 2,588; free_space_loss_is_the_friis_kilometre_megahertz_form: 32,4478 + 20 log d + 20 log f з точністю 1e-4 dB); leo_link::iono::tests (delay_scales_as_one_over_f_squared; iono_free_combination_removes_the_first_order_delay) | IS-GPS-200 розділ 20.3.3.3.3.2, який наводить відношення групових затримок L1/L2 gamma = (77/60)^2, що випливає з масштабування першого порядку за 1/f^2, і формула передавання Фріса (Proc. IRE, 1946). Підтверджує закони масштабування, а не похилий TEC | VALIDATED |
| VM-6a111b40 | Максимальний доплерівський зсув, який бачить нерухомий користувач від орбіти LEO або MEO | leo_link::geometry::max_static_user_range_rate: пошук за кожним положенням на орбіті й кожним користувачем на горизонті супутника на круговій орбіті, з обертанням Землі, найбільшої швидкості зміни дальності, плюс орбітальна та найбільша земна фіксована швидкості супутника; повідомляється для кожного діапазону як доплерівська обвідна видом leo-pass і використовується як вікно пошуку холодного старту його енергоощадної моделі |
leo_link::geometry (max_static_user_range_rate, DopplerEnvelope, doppler_hz) | tests/leo_link_reference.rs (doppler_envelope_reproduces_the_pulsar_paper_table_1: Pulsar IOV 520 km 97 deg, Pulsar FOC полярний 1080 km 97 deg, Pulsar FOC похилий 1080 km 53 deg і GPS 20180 km 55 deg; орбітальна швидкість, максимальна швидкість в ECEF, максимальна відносна швидкість і максимальний Доплер несівної в діапазонах L1 та L5, 20 значень, кожне в межах 0,05 %) | Leclere, Marathe and Reid, Insights into Xona Pulsar LEO PNT: Constellation, Signals, and Receiver Design, ION GNSS+ 2025, arXiv 2509,19551, Table 1 (нерухомий приймач на сфері 6371 км, обертання Землі як єдиний інший ефект): 37751,7 / 33628,5 / 31813,4 / 4018,4 Гц на L1. Охоплює кругові двотільні орбіти | VALIDATED |
| VM-95b055dc | Прохід LEO-PNT і бюджет його лінії для кожного діапазону порівняно із супутниками MEO GNSS у видимості | Вид leo-pass: супутники із проєктного проходу, елементів, TLE через SGP4 або угруповання Уокера з constellation-design; для кожного діапазону та епохи кути візування, дальність, замкнені форми швидкості зміни дальності та прискорення дальності (перевіряються кожного прогону за центральними різницями та повідомляються), втрати у вільному просторі, EIRP з ізофлюксною, гаусовою або плоскою діаграмою, патч-антена, напівсферична або ізотропна антена користувача, газове згасання за ITU-R P.676-10 Annex 2, дощ і сцинтиляція за P.618, втрати на проникнення в будівлю за P.2109, поляризаційна розузгодженість, шумова температура системи, C/N0, доплерівський зсув і його швидкість та затримка першого порядку з косого TEC за Klobuchar або вертикальним TEC, масштабованого часткою Чепмена нижче супутника; безіоносферні пари із кодовим шумом на піку проходу; несівні Galileo або GPS із прийнятих потужностей з їхніх інтерфейсних документів через той самий приймач |
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_pass::tests (the_leo_pass_is_a_bell_above_flat_gnss; closed_form_doppler_agrees_with_the_numerical_derivative: менше 0,01 Гц і 0,01 Гц/с; indoor_uhf_suffers_less_building_loss_than_c_band; rain_attenuates_c_band_more_than_s_band; iono_delay_scales_as_one_over_f_squared_across_bands; a_fully_custom_band_needs_no_preset; a_walker_constellation_and_a_tle_satellite_both_run; defaults_run_with_no_preset_named_and_every_number_has_a_unit); leo_link::geometry::tests (kepler_velocity_is_the_derivative_of_the_position; a_designed_pass_reaches_the_requested_elevation; closed_form_range_rate_and_accel_match_central_differences_for_two_body_motion); leo_link::antenna::tests | Замкнені форми та самоузгодженість: тотожності швидкості зміни дальності та прискорення дальності порівняно з числовими похідними, ізофлюксне посилення, що компенсує зростання дальності, підручникові межі поляризаційних втрат, якісне спостереження LEO порівняно з GNSS (дзвоноподібний прохід на кілька хвилин із піком на кілька дБ вище за плоскі несівні GNSS 44–51 дБ-Гц). EIRP і діаграми є опублікованими прийнятими потужностями, перетвореними на EIRP, або репрезентативним вибором, газовий складник є застарілим спрощеним методом P.676-10, і ніщо не порівняно з виміряним C/N0 для LEO | MODELLED |
| VM-0723b0b7 | Іменовані пресети систем LEO-PNT із заявленими джерелами та рушій, незалежний від системи | leo_link::presets: загальний багатодіапазонний (UHF, L, S, C), загальний C-діапазон, Xona Pulsar X1/X5, Iridium STL, Starlink як сигнал нагоди лише з доплерівським зсувом, CentiSpace і необов'язковий пресет Celeste IOD, кожен із джерелом, позначеним PUBLIC (з URL), REPRESENTATIVE або WORKSHOP, причому workshop-джерело міститься в необов'язковому файлі пресету Celeste IOD, що компілюється лише тоді, коли цей файл існує; кожен діапазон і орбіту можна перевизначити в сценарії, а сценарій може взагалі не називати пресету | leo_link::presets (SystemPreset, BandPreset, all, by_id, gnss_meo); leo_pass (resolve_bands) | leo_link::presets::tests (every_preset_is_sourced_and_self_consistent; only_the_celeste_preset_is_sourced_from_the_workshop); leo_link::presets::xona_pulsar::tests (the_eirps_reproduce_the_published_minimum_power_at_ten_degrees; a_flat_pattern_lands_the_zenith_power_near_the_published_maximum: у межах 0,5 дБ від -139.1 і -136.2 дБВт); leo_link::presets::iridium::tests; leo_pass::tests (a_fully_custom_band_needs_no_preset) | Переписування наведених публічних значень і перевірка узгодженості: EIRP, заданий з опублікованої мінімальної прийнятої потужності, передбачає опубліковане максимальне значення в межах 0,5 дБ із плоскою діаграмою. Це перевірка розкиду дальності, а не валідація антени жодного супутника; репрезентативні пресети не роблять жодних тверджень про реальну систему | MODELLED |
| VM-f20670eb | Енергоощадне позиціонування: час до першого фікса та енергія на фікс залежно від робочого циклу | leo_link::energy і розділ [iot] виду leo-pass: когерентне інтегрування, обмежене швидкістю зміни доплерівського зсуву, квадратичні некогерентні суми до порога виявлення, пошук за доплерівськими бінами в обвідній статичного користувача орбіти (холодний) або в допоміжному вікні (гарячий), паралельний або послідовний пошук коду, час навігаційного повідомлення за холодного старту, енергія на фікс і час роботи батареї за різних інтервалів фіксів, для кожного діапазону LEO та сигналу GNSS |
leo_link::energy (fix_budget, duty_curve, IotReceiver, IotSignal); leo_pass (iot_section) | leo_link::energy::tests (stronger_signals_and_smaller_doppler_windows_fix_faster; the_doppler_rate_caps_the_coherent_time; battery_life_grows_with_the_fix_interval_toward_the_sleep_floor); leo_pass::tests (the_run_is_deterministic_and_bad_inputs_are_rejected) | Внутрішня узгодженість заявленої проєктної моделі: кожен вибір потужності, порога й пошуку є вхідним даним, а модель ігнорує неоднозначність меж бітів, пропущене виявлення та повторне захоплення. Не порівнювалося з виміряним приймачем | MODELLED |
| VM-0beb4fb3 | Глобально усереднені ваги похибки дальності сигналу в просторі для будь-якої висоти орбіти | 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) | leo_navmsg::sisre (sisre_weights, StatsAcc) | leo_navmsg::sisre::tests (weights_reproduce_the_published_meo_and_geo_table — GPS 0,979 і 1/48.9, GLONASS 1/45.0, Galileo 0,984 і 1/61.1, BeiDou MEO 1/54.2, геостаціонарні 0,992 і 1/126.2 при масці 0 deg, кожне в межах 0,005 від w_R і 0,5 від 1/w_AC^2; leo_weights_shift_toward_the_transverse_axes — кут надира до горизонту 67,8 deg на 510 km) | Опублікована таблиця вагових коефіцієнтів SISRE Монтенбрука, Штайгенбергера та Гаушільда (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 є застосуванням валідованого методу, а не окремо валідованими | VALIDATED |
| VM-71b6ea3d | Користувацький алгоритм широкомовних ефемерид Galileo ICD як основа навігаційного повідомлення LEO | leo_navmsg::elements::kepler_point: кеплерівське обчислення за Galileo OS SIS ICD (рівняння Кеплера, поправки другої гармоніки, земний фіксований вузол), написане окремо від обчислювача RINEX рушія, що повертає положення з аргументом широти, нахилом і вузлом, на яких будується система поправок вздовж/впоперек/радіально, і додаткові члени Liu et al. 2025 | leo_navmsg::elements (kepler_point, kepler_frame, ephemeris_at, sat_state) | tests/leo_navmsg_reference.rs (the_galileo_user_algorithm_reproduces_rtklib_to_a_millimetre — чотири справжні широкомовні ефемериди Galileo E10, E19, E24, E25 при tk = 0, +/-600, +/-1800, +/-3600 s, кожна вісь у межах 1 mm від RTKLIB; real_galileo_records_survive_the_binary_frame_and_the_text_block — у межах 5 mm після двійкового кадру Kshana і 1 mm після блока у стилі RINEX) | Положення 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 — рядком 22-параметрової моделі Liu et al. 2025 | VALIDATED |
| VM-50db12ad | Перевірка кадру CRC-24Q для навігаційного повідомлення LEO | leo_navmsg::codec::crc24q: породжувальний поліном 0x1864CFB, початкове значення 0, без відображення, без фінального XOR, перевірка, яку кадр LEO Kshana несе над кожним попереднім байтом | leo_navmsg::codec (crc24q, encode, decode) | leo_navmsg::codec::tests (crc24q_matches_the_catalogue_check_value — 0xCDE703 для рядка ASCII 123456789; crc24q_matches_the_rtcm_1005_example_frame — три контрольні байти 0x360B98 прикладу кадру RTCM 10403 типу повідомлення 1005 і нуль над усім кадром) | Контрольне значення каталогу CRC для цих параметрів (каталог CRC reveng.sourceforge.io, CRC-24/LTE-A: ширина 24, поліном 0x864CFB, init 0, check 0xCDE703), які є параметрами CRC-24Q з RTCM 10403 і Galileo OS SIS ICD, та приклад кадру повідомлення типу 1005, надрукований у RTCM 10403 | VALIDATED |
| VM-d977634a | Фітер широкомовних ефемерид LEO та похибка дальності сигналу в просторі залежно від інтервалу апроксимації та періоду оновлення | Фітер і компроміс виду leo-navmsg: еталонна орбіта, проінтегрована із зональною гравітацією J2–J6 або EGM2008 до обраного ступеня та опором, і засіяний вільний або кермований годинник; апроксимація Левенберга–Марквардта кеплерівського набору Galileo на неособливих елементах зі слабкими апріорними, потім поліноми поправок вздовж, впоперек і радіально лінійним методом найменших квадратів; поліном годинника, апроксимований за вирахуванням релятивістського складника користувача; SISRE (лише орбіта та з годинником) за періодами використання, центрованими у своїх вікнах апроксимації, залежно від інтервалу апроксимації та періоду оновлення. Validated-частина: 16-параметрова кеплерівська апроксимація та її SISRE лише для орбіти залежно від інтервалу апроксимації на справжніх прецизійних орбітах, а також проінтегрована еталонна орбіта J2–J6/EGM2008(20, 70)/опір порівняно з Orekit 12,2 у межах 4,6 мм за 6 год (поріг 2 см, той самий вхід густини); поліноми поправок, апроксимація годинника (засіяний вільний або кермований годинник) і компроміс за періодом оновлення лишаються modelled |
leo_navmsg::fit (fit_message, lstsq, polyfit); leo_navmsg::truth (TruthOrbit, TruthClock); leo_navmsg (sequence_stats, LeoNavmsgScenario) | leo_navmsg::tests::a_two_body_truth_is_recovered_by_the_keplerian_fit_to_a_millimetre; leo_navmsg::tests::the_user_algorithm_reproduces_the_fitted_truth_to_a_millimetre_with_corrections; leo_navmsg::tests::the_clock_fit_returns_the_truth_clock_through_the_user_relativistic_term; leo_navmsg::tests::keplerian_sisre_grows_with_the_fit_interval_and_the_corrections_fix_it (монотонне зростання від 1 до 15 хвилин і щонайменше трикратне покращення на 15 хвилинах); leo_navmsg::tests::defaults_run_encode_decode_without_any_preset_and_are_deterministic; tests/leo_navmsg_fit_real_orbit_oracle.rs::fitted_sisre_matches_liu_2025_on_real_orbits (редуковано-динамічні орбіти TU Graz ITSG для GRACE-A, GRACE-C, Sentinel-2A і Sentinel-6A, підігнані на дугах 20 і 30 min: RMS уздовж, впоперек і по радіусу від 0,804 до 1,087 та SISRE від 0,716 до 0,809 від Liu et al. 2025, у межах 1,5 раза; ваги SISRE в межах 0,0007 від його таблиці 2); tests/leo_navmsg_full_claim_oracle.rs::integrated_truth_orbit_matches_orekit_within_2_cm_over_6_h (Orekit 12,2 + Hipparchus 3,1, той самий початковий стан і вхідні дані щільності: найгірше 3,95 mm для двох тіл, 3,92 mm для J2-J6 та EGM2008 до степеня 20 і 70, 4,55 mm для EGM2008 степеня 20 з опором на 400 km, поріг 0,02 m упродовж 6 h); внутрішня перехресна перевірка, не оракул: tests/leo_navmsg_full_claim_oracle.rs::corrections_clock_fit_and_update_period_trade_agree_with_an_internal_cross_check_on_grace_fo | Справжні прецизійні наукові орбіти як еталон (операційні редуковано-динамічні орбіти TU Graz IfG/ITSG, вільні для будь-якого використання з подякою; значення SHA-256 у NOTICE фікстури), апроксимовані 16-параметровим набором на дугах 20 і 30 хв, порівняно зі статистикою, яку Liu et al. 2025 (Remote Sensing 17(16):2894, CC BY 4,0) публікують для тих самих супутників і днів: RMS уздовж, впоперек і радіально кожен у межах 1.5x (виміряно від 0,804 до 1,087), SISRE у межах 1.5x (виміряно від 0,716 до 0,809) і ваги SISRE в межах 0,005 від його Table 2 (виміряно 0,0007); допуски зафіксовано до порівняння. Покомпонентний критерій надає тесту зубів: обнулення швидкості нахилу залишає кожне відношення SISRE в межах 1.5x, але не проходить критерій поперечної складової. Рівномірне відношення SISRE від 0,72 до 0,81 — це відношення статті: її надруковані значення SISRE використовують ваги Table 2 без піднесення до квадрата замість власного Eq. 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, написана й запущена цим проєктом і не є незалежним оракулом) | VALIDATED |
| VM-a64cd2c4 | Оновлення навігаційного повідомлення LEO посеред проходу з перевіркою неперервності в момент перемикання | Аналіз midpass-update виду leo-navmsg: найвищий прохід над користувачем у межах інтервалу пошуку, повідомлення за глобальним розкладом із періодами використання, центрованими у своїх вікнах апроксимації, і в кожен момент перемикання стрибок положення 3D, стрибок годинника, стрибок псевдодальності користувача, найбільший стрибок за будь-якою видимою лінією візування (замкнена форма за надирним конусом), похибка дальності до і після та PASS/FAIL щодо порога |
leo_navmsg (LeoNavmsgScenario::midpass, worst_case_jump, elevation, geodetic_to_ecef) | leo_navmsg::tests::a_mid_pass_update_is_continuous (стрибок дальності кожного перемикання дорівнює зміні похибки дальності, а виправлена апроксимація 300 с, оновлювана кожні 150 с, проходить поріг 5 см); leo_navmsg::tests::a_keplerian_only_update_over_a_long_interval_is_flagged; leo_navmsg::tests::worst_case_jump_bounds_every_line_of_sight (замкнена форма обмежує щільну вибірку конуса) | Внутрішня узгодженість (тотожність стрибка та межа конуса порівняно з вибіркою повним перебором). Поріг є вхідним даним; жодної опублікованої вимоги до неперервності LEO не зафіксовано | MODELLED |
| VM-2ed420b3 | Задокументоване двійкове кодування навігаційного повідомлення LEO з бюджетом похибки квантування | leo_navmsg::codec: власний кадр Kshana (преамбула, версія, модель, довжина, корисне навантаження, CRC-24Q) для чотирьох моделей ефемерид, поліном годинника, SVID, видання даних, діапазон, справність, набір Klobuchar, коефіцієнти NeQuick-G і параметри UTC, кожне поле із заявленою шириною та кроком (field_table), квантування з відмовою за виходу за діапазон і бюджет найбільшої зміни положення та годинника, яку спричиняє зміна на півкроку кожного поля протягом вікна чинності | leo_navmsg::codec (encode, decode, write_payload, read_payload, field_table, quantisation_budget) | leo_navmsg::codec::tests (signed_fields_round_trip_through_the_bit_packer; week8_resolves_near_the_reference); leo_navmsg::tests::every_model_round_trips_through_the_binary_frame (кожна модель у межах 2 мм від точного повідомлення після декодування, повторне кодування побітово ідентичне, перевернутий біт відхилено за CRC); leo_navmsg::tests::every_field_of_the_budget_stays_under_a_millimetre | Тотожності туди-назад і сам бюджет. Формат є власним форматом Kshana, змодельованим за опублікованими складниками повідомлень і набором полів Galileo ICD; це не бітова розкладка Celeste чи будь-якої іншої системи (жодна не є публічною), тож зовнішньої розкладки для валідації немає | MODELLED |
| VM-75b6f696 | Експорт навігаційних повідомлень LEO у стилі RINEX-4 і CSV | leo_navmsg::text: блок у стилі RINEX-4 (заголовок запису > EPH, рядок супутника та епохи з трьома складниками годинника, рядки широкомовної орбіти D19.12) з літерою системи L і типами записів KP16, KRAC, LU22 та APOL, позначений у кожному заголовку як розширення Kshana, що не є частиною RINEX 4,02, і таблиця CSV зі схемою стовпців за замовчуванням і схемами пресетів, кожна з імпортером | leo_navmsg::text (rinex_export, rinex_import, csv_export, csv_import, calendar, from_calendar) | leo_navmsg::text::tests (calendar_round_trips_and_knows_the_gps_origin; d19_is_rinex_shaped); leo_navmsg::tests::rinex_and_csv_round_trips (кожна модель у межах 0,1 мм після текстового блока, CSV точний) | Туди-назад і календарна арифметика. RINEX 4,02 не визначає записів навігації LEO (IGS RINEX 4,02), тож розкладка є задокументованим розширенням з arXiv 2401,17767 як попереднім рівнем; зовнішнього читача для неї, щоб звірити, не існує | MODELLED |
| VM-357232ee | 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, переписана зі статті Eq. 1 (порівняння апроксимації не залежить від цієї умовності масштабу, тож зміст переданого значення nDot тут не validated), та одно- й триоберотні гармоніки радіуса Crs1, Crc1, Crs3, Crc3 за нескоригованим аргументом широти. Її апроксимація через leo_navmsg::fit::fit_message бере початок і оцінювач з розділу 2,3 статті (кожна поправка починається з нуля; звичайний метод найменших квадратів без апріорних; обмеження статті у 100 ітерацій), але зупиняється за правилом збіжності параметрів Kshana (кожен крок менший за 1e-3 від його формальної сигми) замість правила статті про зміну RMS нижче 0,1 мм. Апроксимовано на дугах 20 і 30 хвилин табульованої прецизійної орбіти | leo_navmsg::elements (kepler_point, Liu22Extra); leo_navmsg::fit (fit_message, fit_kepler, initial_params, formal_sigma); leo_navmsg::truth (TruthOrbit) | tests/leo_navmsg_fit_real_orbit_oracle.rs::liu22_model_matches_the_published_sisre (чотири дні зі статті: відношення уздовж, впоперек, по радіусу та SISRE від 0,755 до 1,138 від Liu et al. 2025, у межах 1,5 раза); tests/leo_navmsg_fit_real_orbit_oracle.rs::liu22_holds_on_held_out_days (вісім відкладених днів, по дві дуги: від 0,683 до 1,186) | Виміряно: операційні редуковано-динамічні орбіти 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; числа цитуються, а не вбудовуються). Пороги зафіксовано до першого порівняння: RMS уздовж, впоперек і радіально кожен у межах 1.5x двобічно та SISRE у межах 1.5x для кожного супутника та обох довжин дуги. Повторний прогін раунду 2 було попередньо зареєстровано (aa559785) до зміни рушія та до отримання відкладених орбіт: апроксимація за Eq. 1 і розділом 2,3 статті плюс дві нові відкладені доби на супутник щодо тих самих надрукованих значень. Виміряно: кожне відношення для днів зі статті від 0,755 до 1,138, а кожне відношення для відкладених діб від 0,683 до 1,186. Розкрито: відношення вздовж траси першого прогону 1,71 (Sentinel-2A) і 1,86 (Sentinel-6A) для 20 хв були відомі до повторного прогону. Найнижчі відношення SISRE для відкладених діб лежать поблизу нижньої межі 0,667, бо надруковане у статті SISRE використовує ваги Table 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 | VALIDATED |
| VM-b4f93233 | Поліном ECEF ATOMIC з нульовим годинником і синтетичне порівняння моделей LEO для п'яти висот | варіант EcefPoly моделі leo_navmsg::elements::EphemerisModel: поліном ECEF для кожної осі без складників годинника, релятивістський складник із -2 r.v/c^2, оцінений щодо кермованого годинника. Також аналіз порівняння моделей (liu_comparison над LIU2025_TABLE), який апроксимує 22-параметричну модель на п'яти висотах зі статті на 20-хвилинних дугах орбіти, проінтегрованої в Kshana, і друкує результат поряд з опублікованим SISRE | leo_navmsg::elements (EcefPoly, ephemeris_at); leo_navmsg (liu_comparison, LIU2025_TABLE) | leo_navmsg::tests::liu22_beats_the_16_parameter_set_over_a_20_minute_arc; leo_navmsg::tests::the_ecef_polynomial_fits_a_minute_to_millimetres; leo_navmsg::tests::every_preset_resolves_and_the_atomic_preset_selects_the_zero_clock_polynomial | Факти про модель 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-параметрова модель і сама апроксимація валідовані на справжніх орбітах у рядку «22-параметрова ефемеридна модель LEO Liu et al. 2025 та її апроксимація на справжніх прецизійних орбітах». Ревізія 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) | MODELLED |
| VM-d4776382 | Одночастотні іоносферні служби та служби 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 | leo_navmsg::services (klobuchar_delay_m, effective_ionisation_level, system_to_utc) | leo_navmsg::services::tests (klobuchar_scales_with_inverse_frequency_squared — значення L1 дорівнює 6,1278 m з RTKLIB; nequick_az_rules; utc_without_an_event_is_tow_minus_leap_seconds_folded_to_a_day; utc_drift_terms_follow_the_icd_formula; an_inserted_leap_second_reads_86400_at_the_end_of_the_day); tests/leo_navmsg_services_gnsstk_oracle.rs::services_match_gnsstk_and_erfa (Klobuchar на L1, L2 і L5 на 4 320 випадках, найгірше 7.0e-13 m; Az на 222 наборах коефіцієнтів, зокрема з усіма нулями та правилами 400 sfu, найгірше 5.7e-14 sfu; дрейф UTC на 50 випадках, найгірше 3.6e-15 s; три випадки з високосною секундою на 21 602 моментах навколо справжніх високосних секунд 2015 і 2016 років, 0 s) | 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, що летить усередині іоносфери, поправка не робиться | VALIDATED |
| VM-39824338 | Доплерівський зсув, який має обробляти наземний приймач від навігаційного супутника LEO | Точна швидкість зміни дальності супутника, чиї земні фіксовані положення й швидкість походять із двотільної орбіти з віковим дрейфом J2 та обертанням Землі (leo_fusion::geom::EarthOrbit::state, швидкість є точною похідною положення за часом), перетворена на доплерівський зсув на несівній; найбільший абсолютний доплерівський зсув, швидкість його зміни та ривок вище маски висоти за вікно (leo_fusion::doppler::doppler_envelope), що повідомляється для кожної системи LEO видом leo-pvt у режимі doppler |
leo_fusion::geom (EarthOrbit); leo_fusion::doppler (range_rate, doppler_envelope) | tests/leo_doppler_reference.rs (iridium_doppler_reaches_the_published_36_khz: один супутник на 780 km і 86,4 deg, політ протягом доби на 1621 MHz над чотирма широтами, максимум у межах 5% від 36 kHz; xona_pulsar_x1_doppler_lies_in_the_published_32_to_34_khz: один супутник кожної опублікованої оболонки, 1080 km на 53 і 97 deg, 1593,3225 MHz, максимум угруповання в межах від 32 до 34 kHz без розширення (33,6 kHz, задано оболонкою 97 deg; оболонка 53 deg окремо досягає піка 31,8 kHz)); leo_fusion::geom::tests (velocity_is_the_time_derivative_of_the_position) | Опубліковані значення, відтворені із заявленої орбіти та несівної: доплерівський зсув 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 | VALIDATED |
| VM-c4520dfd | Позиціонування за доплерівським зсувом 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) |
leo_fusion::doppler (solve, formal_covariance, single_pass_geometry, offset_site, closest_approach); leo_fusion::pvt_kind (run_doppler) | leo_fusion::doppler::tests (range_acceleration_obeys_the_kinematic_identity_and_vanishes_doppler_at_closest_approach; noise_free_multi_satellite_doppler_recovers_the_user: до 1 мм і дрейф до 1e-6 м/с; a_single_pass_has_a_mirror_solution_across_the_ground_track; the_cross_track_error_grows_as_the_pass_goes_overhead; velocity_states_are_recovered_for_a_moving_user); leo_fusion::pvt_kind::tests (doppler_positioning_improves_with_the_window_and_is_deterministic: зважене СКВ нев'язки в [0,8, 1,2] і похибка менша за чотири формальні сигми); tests/leo_fusion_scenarios.rs (leo_doppler_positioning_forms_a_fix_and_the_cross_track_error_explodes_overhead; starlink_doppler_only_mode_runs_without_ranging); tests/starlink_doppler_published_proxy.rs (попередньо зареєстрований проксі проти опублікованих персентилів набору даних 3 «Unveiling Starlink for PNT», doi:10.33012/navi.685: із 3 супутниками (маска 47 град), без допомоги за висотою та 30 Гц p90 3-D похибки становить 92,2 м за 20 с і 870 м за 8 с проти опублікованих 2 м і 10 м, тож обидва пороги в коефіцієнт два — NOT MET, у бік завищення, і стверджено як не досягнуті; docs/design/evidence/cap11-starlink-doppler-proxy/) | Внутрішня узгодженість: відновлення без шуму, кінематична тотожність rho_ddot = (|v|^2 - rho_dot^2 + d.a)/rho, продиференційована чисельно, нульовий доплерівський зсув у момент найбільшого зближення, дзеркальний розв'язок одного проходу та засіяні похибки порівняно з формальною коваріацією. Значення Starlink з Kozhaya, Saroufim and Kassas (NAVIGATION 72(1), 2025: близько 2 м за 20 с з трьома супутниками) є лише порівнянням: змодельований приймач із досконалими ефемеридами та всіма похибками в сигмі доплерівського зсуву 30 Гц у кілька разів менш точний на тому самому вікні, а приймач і частота вимірювань зі статті не відтворені | MODELLED |
| VM-06d2559e | Спільне псевдодальномірне позиціонування за GNSS і LEO з міжсистемними зсувами та моделями похибок для кожного сигналу | Фікси за зваженим методом найменших квадратів Гаусса–Ньютона за будь-якого поєднання систем, один годинник приймача на систему (міжсистемний зсув оцінюється разом із положенням) або відомий широкомовний зсув на опорній шкалі часу; сигми окремих вимірювань задає викликач, за замовчуванням це тепловий шум системи фазового автопідлаштування за затримкою рушія (navsignal::dll_code_jitter_chips) за C/N0 на висоті, поєднаний із похибкою дальності сигналу в просторі; незважений DOP (GDOP, PDOP, HDOP, VDOP, TDOP) у локальній геодезичній системі, формальні сигми схід–північ–зеніт і сигми зсувів; спільний режим joint виду leo-pvt порівнює фікси лише GNSS, лише LEO та злиті й перебирає DOP залежно від кількості доданих супутників LEO |
leo_fusion::joint_pvt (solve, dop, code_sigma_dll_m, SystemClock); leo_fusion::system (SystemCfg, System); leo_fusion::pvt_kind (run_joint) | leo_fusion::joint_pvt::tests (dop_matches_the_hand_derived_zenith_plus_three_horizon_case: HDOP = VDOP = sqrt(4/3), TDOP = sqrt(1/3), PDOP = sqrt(8/3), GDOP = sqrt(3) з точністю 1e-9; a_lone_satellite_with_its_own_clock_adds_nothing_and_a_known_offset_does; a_noise_free_fix_recovers_position_clock_and_inter_system_bias; seeded_fixes_agree_with_their_formal_covariance; dll_noise_is_the_textbook_figure_for_gps_l1_ca); leo_fusion::pvt_kind::tests (fusing_leo_never_worsens_the_median_pdop_and_the_isb_is_recovered); tests/leo_fusion_scenarios.rs (meo_leo_fusion_beats_gnss_alone_and_recovers_the_leo_bias); tests/joint_pvt_dual_freq_itrf_rtklib_oracle.rs::dual_frequency_finding_is_pinned; tests/joint_pvt_precise_itrf_rtklib_oracle.rs::precise_product_finding_is_pinned | Виведений вручну DOP для чотирьох супутників (один супутник у зеніті та три на горизонті з рознесенням 120 град, чия нормальна матриця обертається вручну), структурна тотожність, за якою система з власним годинником і одним супутником не додає геометрії, відновлення положення, годинника та зсуву без шуму і засіяні похибки порівняно з коваріацією. Лише внутрішні перевірки; не порівнювалося з виходом приймача. Зовнішнє порівняння 0,30, знахідка (лишається MODELLED): на добі багатосистемних даних 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 % на тих самих даних, тож поріг лежить за межами можливостей одночастотного широкомовного позиціонування на цій станції та в цю добу, а не є розбіжністю розв'язувача; тест порівняння закомічено ігнорованим. 0,30 раунд 2, суворіші вхідні дані за незмінного порога 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 нс, коли обидва їх опускають) | MODELLED |
| VM-df6c3fb1 | Збіжність прецизійного точкового позиціонування лише за GNSS і з доповненням LEO | Розширений фільтр Калмана для PPP із плаваючими неоднозначностями за безіоносферними кодом і фазою: статичні координати, білий годинник приймача, один міжсистемний зсув на кожну додаткову систему, вологу зенітну затримку у вигляді випадкового блукання, спроєктовану на 1/sin(висота), плаваючу неоднозначність на кожну дугу супутника, що додається за сходу й скидається за заходу, та похибку прецизійних орбіти й годинника, спільну для коду та фази супутника, яка обробляється як одне корельоване дворядкове оновлення у формі, стабілізованій за Джозефом; вимірювання змодельовано з тієї самої моделі; час збіжності (похибки нижче порогів до кінця прогону), криві похибок і усереднений за прогоном NEES положення лише для GNSS і для кожного випадку LEO, запуск як вид leo-ppp |
leo_fusion::ppp (run, PppScenario, LI_2019) | leo_fusion::ppp::tests (the_filter_is_consistent_over_monte_carlo_seeds: 24 зерна, усереднене за прогонами середнє NEES у [2,4, 3,6] і щонайменше 75% епох усередині двосторонньої 95% смуги хі-квадрат; виміряно зі 150 зернами, середнє 2,84 лише для GNSS і 2,87 з LEO; leo_augmentation_shortens_convergence; same_seed_same_answer_and_every_number_has_a_unit); tests/leo_fusion_scenarios.rs (ppp_convergence_of_the_bundled_scenario_shortens_monotonically) | Тест хі-квадрат за 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: multi-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), а не валідація | MODELLED |
| VM-038b22af | Точність позиціонування 5G у нетерестріальних мережах залежно від ширини смуги сигналу | Границя Крамера–Рао для часу приходу за середньоквадратичною (габорівською) шириною смуги, 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 |
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) | leo_fusion::ntn::tests (the_numerical_rms_bandwidth_matches_the_closed_forms; the_range_bound_scales_as_one_over_bandwidth_and_root_cn0: 0,4157 m вручну при 5 MHz, 45 dB-Hz, 0,1 s; the_frequency_bound_is_the_complex_tone_crlb; defaults_run_wider_is_better_and_every_number_has_a_unit); tests/leo_fusion_scenarios.rs (ntn_wide_channel_bounds_far_tighter_than_the_narrow_one); tests/ntn_crlb_published_value_oracle.rs (ssb_bounds_reproduce_the_published_values; ntn_fix_covariances_match_numpy; bpsk_rms_bandwidth_reproduces_betz_table_1) | Опубліковані опрацьовані значення (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 Table 1 (1.128/3.477 проти 1.1/3.5 МГц, додатково); коваріації фіксів за часом приходу та доплерівським зсувом узгоджуються з numpy 2.4.6 numpy.linalg.inv на експортованій геометрії (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 кГц) | VALIDATED |
| VM-e033f926 | Передавання часу до UTC за допомогою LEO залежно від C/N0 і генератора приймача | Вимірювання годинника від кожного супутника LEO у видимості в відомому положенні, об'єднані за оберненою дисперсією з моделі шуму псевдодальності, відфільтровані двостановим (фаза, частота) фільтром Калмана, чий шум процесу є білим і випадковоблукальним частотним шумом класу генератора (slot_timing::ClockNoise, clock_state::ClockClass; дисперсія інерційного дрейфу з holdover::coast_phase_variance), засіяний еталонний годинник з тих самих рівнів і вираз системного часу до UTC з IS-GPS-200 розділ 20.3.3.5.2.4 з невизначеністю широкомовного зсуву, доданою як зсув для кожного прогону; режим timing виду leo-pvt перебирає генератори й зсуви C/N0 |
leo_fusion::timing (simulate, utc_offset_s, system_to_utc_s); leo_fusion::pvt_kind (run_timing) | leo_fusion::timing::tests (the_utc_offset_follows_the_is_gps_200_expression; continuous_tracking_approaches_the_measurement_floor_and_gaps_cost_time; the_filter_is_consistent_over_seeds; the_utc_offset_uncertainty_sets_a_floor); tests/leo_fusion_scenarios.rs (leo_timing_error_grows_as_the_c_n0_falls) | Внутрішня узгодженість: опублікований вираз зсуву, обчислений вручну, нормована похибка на 40 зернах і нижня межа, задана невизначеністю зсуву. Значення NIST для приймачів часу Iridium з мініатюрним атомним годинником (менше 40 нс від UTC(NIST) за 40 діб) є лише порівнянням; вбудований сценарій Iridium дає від 10 до 11 нс RMS за номінальної потужності з його репрезентативною похибкою дальності 5 м. Флікерний частотний шум та іоносферна затримка не симулюються | MODELLED |
| VM-eddcdf79 | Покриття LEO та геометричне погіршення точності для полярних і арктичних користувачів порівняно із MEO GNSS | Супутники у видимості та медіанні PDOP, HDOP і VDOP із доступністю залежно від широти, за вибіркових довгот і епох, для систем MEO GNSS окремо, систем LEO окремо та всіх разом, кожна система з власною маскою та моделлю годинника, запуск як полярний режим виду leo-pvt; орбіти є наборами елементів SGP4/SDP4 на епоху перебору (2026-01-01T00:00:00 UTC у полярному режимі), переведеними в земну фіксовану систему на валідованому шляху навколоземних орбіт (IAU 2006/2000A, UT1 = UTC, без руху полюса) |
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) | tests/leo_polar_coverage_on_path_orekit_oracle.rs (конфігурації A і B, 4040 відліків: положення в системі, зв'язаній із Землею, у межах 6.8e-5 m, поріг 0,2 m; кількості супутників у видимості ідентичні на 4040/4040; медіанний DOP у межах 2.3e-11 відносно, поріг 1e-3; доступність і середня кількість у видимості ідентичні); tests/earth_orbit_path_sgp4_erfa_oracle.rs (шлях); leo_fusion::polar::tests (gps_vertical_geometry_weakens_at_the_pole_and_a_polar_leo_shell_restores_it); tests/leo_fusion_scenarios.rs (a_polar_leo_constellation_fills_the_sky_where_gnss_vertical_geometry_weakens); tests/leo_polar_coverage_orekit_oracle.rs (раунд 2, геометрія на заданих станах); tests/leo_polar_coverage_full_claim_orekit_oracle.rs (висновок повного раунду 1, зафіксований) | 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, зафіксовано | VALIDATED |
| VM-5a90d275 | Іменовані системи LEO PNT як необов'язкові пресети даних, кожна із джерелом | Вхідні дані, незалежні від системи: кожна система є оболонками Уокера, явними елементами або пресетом GNSS, сигналом (несівна, швидкість чипів, ширина смуги, прийнята потужність або діапазон C/N0), SISRE, сигмою доплерівського зсуву та моделлю годинника; пресети заповнюють лише те, що сценарій залишає, по одному файлу на пресет з джерелами, позначеними PUBLIC (з URL), WORKSHOP або ВИВЕДЕНИМИ, а неопубліковані значення перелічено як репрезентативні: Xona Pulsar X1/X5, Iridium STL, сигнали нагоди Starlink, CentiSpace, репрезентативна система C-діапазону, ефемеридна модель ATOMIC з нульовим годинником і один пресет, виведений із workshop, в необов'язковому файлі пресету Celeste IOD, який вилучається видаленням цього файлу та його сценаріїв | leo_fusion::presets (all, by_id, cn0_range_dbhz, noise_density_dbw_hz); leo_fusion::system (SystemCfg::build) | leo_fusion::presets::tests (every_preset_has_a_source_and_every_public_source_a_url; only_one_preset_uses_workshop_material; noise_density_at_290_k_is_minus_204_dbw_per_hz); tests/workshop_preset_isolation.rs (only_the_listed_files_name_the_workshop_preset; workshop_numbers_live_only_in_the_preset_file_and_its_scenarios: скани тексту джерел src, scenarios і tests); leo_fusion::system::tests (a_preset_fills_what_the_scenario_leaves_out; a_system_needs_no_preset; pseudorange_sigma_falls_with_elevation_and_never_below_the_sisre) | Переписування наведених публічних значень, перевірене на структуру (кожне публічне джерело має URL, шаблони Уокера діляться рівно, C/N0 з прийнятої потужності над kT за 290 K), а не за зовнішнім оракулом. Репрезентативні значення названо в кожному пресеті, і вони ілюстративні | MODELLED |
| VM-05d0e975 | Одна система LEO-PNT наскрізно: проєкт сигналу, бюджет лінії проходу, навігаційне повідомлення та злите позиціонування, вихід кожної стадії передається наступній | Вид leo-pnt-chain: проєкт leo-signal (публічний пресет або вбудований) задає центр, ширину смуги, швидкість чипів і розподіл EIRP діапазону leo-pass; прохід дає C/N0 компонента, що відстежується, і джитер коду в обмеженій смузі для кожної епохи; лінія C/N0 за найменшими квадратами за sin(висота), SISRE повідомлення leo-navmsg (апроксимований на орбіті супутника проходу, плюс заявлений складник визначення орбіти як корінь із суми квадратів) та несівна й швидкість чипів проєкту передаються кожній системі LEO спільного фікса leo-pvt і, за потреби, випадкам LEO в leo-ppp; кожну передачу повідомлено зі значенням і одиницею |
leo_pnt_chain (LeoPntChainScenario); leo_pass (BandCfg::signal, design_tracking); leo_navmsg (LeoNavmsgScenario::broadcast_sisre); leo_fusion::pvt_kind; leo_fusion::ppp | leo_pnt_chain::tests (a_sine_line_fit_recovers_its_line); tests/leo_pnt_chain.rs (every_upstream_change_moves_the_downstream_figures: сильніший EIRP, довший інтервал апроксимації та більший член визначення орбіти кожен зсуває передане значення й злите визначення; the_handed_on_values_are_the_stage_outputs; a_band_design_splits_the_eirp_and_reports_the_design_jitter; the_pass_export_reproduces_the_engine_range) | Самоузгодженість передач: кожне передане значення дорівнює власному виходу попередньої стадії, а зміна вхідного значення попередньої стадії зсуває кожне залежне від нього значення нижче за ланцюгом. Стадії зберігають власні мітки; ланцюг не додає ні фізики, ні зовнішнього оракула | MODELLED |
| VM-79558230 | Виявлення спуфінгу за узгодженістю доплерівського зсуву LEO та геометрії проходу | Розділ [spoofer] виду leo-pass: спуфер підробляє, узгоджено за дальністю та швидкістю її зміни, сигнали, які видно в заявленому положенні, що стрибає та/або відсувається від істинного після початку (для кожного діапазону LEO та сигналу MEO GNSS); приймач передбачає кожну швидкість зміни дальності за широкомовною орбітою та незалежним апріорним положенням і швидкістю та перевіряє виміряні швидкості зміни дальності узагальненою статистикою хі-квадрат за найменшими квадратами на вікні епох (дрейф годинника є завадним параметром або з апріорним), на каналах GNSS, каналах LEO та всіх каналах, з тепловим шумом системи фазового автопідлаштування за частотою з C/N0 (Kaplan & Hegarty 2006, розділ 5.6.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_link::spoof::tests (the_gradient_is_the_derivative_of_the_range_rate; fll_jitter_matches_the_formula_by_hand; a_common_mode_residual_is_a_clock_drift_and_is_not_detected; with_no_prior_and_equal_noise_the_statistic_is_the_scatter_about_the_mean; a_push_the_prior_explains_is_not_detected; a_velocity_push_is_hidden_by_a_loose_velocity_prior_only; the_information_form_equals_the_covariance_form); tests/leo_resilience_verticals.rs (the_monitors_are_silent_before_the_onset; the_doppler_statistic_is_quadratic_in_the_jump; leo_range_rates_see_a_jump_that_gnss_range_rates_do_not) | Замкнені форми та тотожності, а не зовнішнє вимірювання: градієнт швидкості зміни дальності порівняно з центральною різницею, статистика інформаційної форми порівняно з щільною коваріаційною формою, чистий дрейф годинника, що дає нуль, відсув, пояснений апріорним, що дає не більше |dx|^2/sigma_p^2, статистика квадратична за стрибком. Жодне значення виявлення не порівнювалося з виміряною атакою; спуфер ідеалізований (без підпису за потужністю, кутом приходу чи піком кореляції) | MODELLED |
| VM-9aea2967 | Виявлення спуфінгу за міждіапазонною узгодженістю багатодіапазонного сигналу LEO | Для кожного супутника LEO та пари далекомірних діапазонів розділ [spoofer] формує безгеометричну комбінацію псевдодальності, вилучає модель іоносфери приймача та перевіряє її крок від епохи до епохи щодо кодового шуму двох діапазонів і заявленої допустимої немодельованої швидкості іоносфери (двобічна гаусова, точна ймовірність виявлення); спуфер, що підробляє одні діапазони й не підробляє інші, або кожен діапазон без іоносфери, помітний у момент початку; спуфер, що підробляє кожен діапазон і симулює іоносферу, непомітний, про що результат прямо зазначає |
leo_link::spoof (cross_band_step); leo_pass (spoof_section: pairs, cross_band) | leo_link::spoof::tests (the_cross_band_threshold_and_power); tests/leo_resilience_verticals.rs (a_ground_spoofer_leaves_the_ionospheric_step_and_an_ionosphere_aware_one_does_not; a_one_band_spoofer_is_seen_by_the_cross_band_monitor_at_the_onset; the_monitors_are_silent_before_the_onset) | Тотожності: крок початку безіоносферного спуфера дорівнює різниці змодельованих іоносферних затримок пари, поріг дорівнює двобічному нормальному квантилю, помноженому на стандартне відхилення кроку, плюс межа швидкості. Модель іоносфери приймача є моделлю рушія, тож справжній залишок нульовий у середньому за побудовою; зовнішнього оракула немає | MODELLED |
| VM-cf7623f8 | Зондування іоносфери: похилий TEC із дводіапазонної затримки проходу LEO | Для кожної пари діапазонів супутника leo-pass звіт дає похилий повний електронний вміст, який безгеометрична кодова комбінація відновлює на піку проходу, (P2 - P1) f1^2 f2^2 / (40,3 (f1^2 - f2^2)), та його 1-сигму з теплового кодового шуму двох діапазонів, тож будь-який багатодіапазонний проєкт LEO-PNT можна оцінювати як іоносферний зонд |
leo_pass (IonoFreePair::geometry_free_stec_tecu, geometry_free_stec_sigma_tecu); leo_link::iono::geometry_free_stec_tecu | tests/leo_resilience_verticals.rs (the_geometry_free_tec_is_the_pass_slant_tec: дорівнює похилому TEC проходу в піку з точністю 1e-9, а його сигма дорівнює RSS кодового шуму над 40,3 (1/f1^2 - 1/f2^2)); tests/geometry_free_tec_gim_oracle.rs::geometry_free_finding_is_pinned | Тотожність дисперсії першого порядку, точна за побудовою щодо власної затримки першого порядку рушія (чиє масштабування 1/f^2 VALIDATED щодо IS-GPS-200 у власному рядку); точність обмежена лише тепловим кодовим шумом, без багатопроменевості чи міжчастотних зсувів. 0,30 раунд 2, виміряно (попередня реєстрація 5e795f93), знахідка (лишається MODELLED): глобальна іоносферна карта CODE CODG1330.18I щодо коду ABMF C1C/C2W із зсувами CODE дає 33 із 36 середніх за дугами в межах 3 TECU (найгірше +6,84 TECU на вечірній дузі; RMS на епоху 3,95 TECU) проти порога на кожну дугу; не валідовано | MODELLED |
| VM-7205faad | Коваріація датума місячної системи відліку з оціненими станціями порівняно з 50-цифровою розширеною точністю | Коваріація семипараметричного датума Гельмерта сценарію lunar-frame-campaign з оціненими земними станціями (станцію 1 закріплено), як її обчислює lunar_frame_campaign у binary64: спільна інформація Фішера станцій і маяків, накопичена з якобіана затримки, блок станцій маргіналізовано доповненням Шура через якобієвий спектральний обернений, H = AᵀSA, сформована з проєктом Гельмерта та обернена спектрально. Задача погано обумовлена за побудовою (число обумовленості Гельмерта від 2.1e8 до 2.3e8, число обумовленості спільної інформації від 1.6e12 до 3.0e13): відносна зміна 1e-9 у поправці Шура зсуває сигми датума до 28 %. Повідомлено: сім сигм датума, число обумовленості Гельмерта та найслабший напрямок. ТВЕРДЖЕННЯ, ЗВУЖЕНЕ: сигми датума та число обумовленості рушія лежать у межах апріорної межі похибки найгіршого випадку зворотно стійкого конвеєра подвійної точності на цій задачі; це не стверджує, що вони настільки точні, наскільки дозволяє подвійна точність (шлях факторизації приблизно в тисячу разів точніший на тих самих вхідних даних, а опційний розв'язувач квадратного кореня приблизно в десять мільйонів разів), а найслабший напрямок валідовано лише там, де його поріг нижче прямого кута (контроль із закріпленими станціями) | lunar_frame_campaign, fim | tests/lunar_frame_campaign_mpmath_oracle.rs (lunar_frame_campaign_datum_matches_mpmath_extended_precision: три сценарії — станції оцінюються на нову дату кампанії 2026-03-18 (визначальний), станції зафіксовані на цю дату (контроль), станції оцінюються на 2024-01-01 (сценарій попереднього промаху в подвійній точності); кожна сигма даних, число обумовленості та найслабший напрямок проти порога з поправкою на обумовленість, перерахованого в тесті за точними чутливостями оракула; engine_inputs_match_the_committed_fixture: зафіксований якобіан, ваги та план Гельмерта є тими, що рушій будує тепер; record_engine_accuracy_against_a_factorisation_route: смуга похибки рушія та діагностика NumPy Cholesky зафіксовані) | 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, Theorem 10,4, форма Tier 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 рядка кампанії) і не фізичну точність ілюстративної кампанії | VALIDATED |
| VM-02b72c4d | Розв'язувач датума інформації квадратного кореня порівняно з 50-цифровою розширеною точністю | Опційний розв'язувач інформації квадратного кореня (lunar-frame-campaign solver = "srif"; значення за замовчуванням не змінено), який ніколи не формує й не обертає інформаційну матрицю для датума: QR Хаусхолдера (ортогонально-трикутне розкладання) відбіленого якобіана затримки як оновлення вимірювання фільтра інформації квадратного кореня, земні станції маргіналізуються через хвостовий трикутний блок (чий добуток Грама є доповненням Шура), другий QR від R_bb A для семипараметричного датума Гельмерта, сигми як норми рядків оберненої трикутної та спектр (число обумовленості, найслабший напрямок) з односторонньої якобієвої сингулярної декомпозиції. Скалярні добутки компенсуються безпомилковим добутком із розщепленням Деккера, тож кожна операція є правильно округленою базовою операцією IEEE-754 або квадратним коренем; ідентичність результатів на кожній платформі обґрунтовується з цього, а не перевіряється між платформами | linalg_sr, lunar_frame_campaign | tests/lunar_frame_campaign_srif_mpmath_oracle.rs (srif_datum_matches_mpmath_extended_precision: чотири сценарії — станції оцінюються на нову дату кампанії 2026-06-09 (визначальний), станції зафіксовані на цю дату (контроль), а також вхідні дані з оцінюваними станціями на 2026-03-18 і 2024-01-01; кожна сигма даних, число обумовленості та найслабший напрямок проти порога квадратно-кореневої форми, перерахованого в тесті за точними складовими оракула; engine_inputs_match_the_committed_fixture); linalg_sr::tests (9 тестів бібліотеки: добуток Деккера дорівнює залишку fused multiply-add на 20 000 парах, компенсоване підсумовування суми, що скорочується, R^T R дорівнює A^T A, послідовні оновлення фільтра дорівнюють одному пакетному оновленню, кінцевий блок дорівнює квадратному кореню доповнення Шура, обернена трикутна матриця, SVD Якобі, збіг зі спектральними даними на добре обумовленому випадку, побітово ідентичні повторні прогони); lunar_frame_campaign::tests::the_default_solver_is_unchanged_and_an_unknown_solver_is_rejected і the_srif_solver_agrees_with_the_spectral_one_where_both_are_accurate_and_says_so | mpmath 1.3.0 (BSD-3-Clause) на 50 значущих цифрах, самоперевірений на 80 (узгодження 1.4e-43 або краще), на закомічених якобіані, вагах і проєкті Гельмерта рушія (P2, незалежна числова бібліотека: власні LU-розв'язок, обернена, розкладання Холецького та якобієве власне розкладання mpmath). Попередньо зареєстровано b41908c9 до написання розв'язувача, з порогами із межі зворотної похибки першого порядку у формі квадратного кореня: стала QR Хаусхолдера mn плюс (3n+1)n, помножена на одиничне округлення (Higham, Accuracy and Stability of Numerical Algorithms, Theorem 19,4 і Chapter 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), усе проходять, тож перевірка не показує, що кожен крок квадратного кореня потрібен. Підтверджує лінійну алгебру опційного розв'язувача на закомічених вхідних даних, а не якобіан і не типовий розв'язувач; побітова відтворюваність між платформами обґрунтовується з використаних операцій і перевірена лише як ідентичність повторного прогону на одній платформі | VALIDATED |
| VM-f220938a | Морські монітори довіри: арифметика, на якій вони ґрунтуються (декодування NMEA, геодезичні зсуви, статистики кінематики та залишків датчиків) | Для судна receiver_trust декодує речення NMEA 0183, які випромінюють приймач і його прилади (GGA, RMC, VTG, HDT, VHW, VBW, ZDA, GSV), формує зсув схід–північ між фіксами (maritime::en_offset_m) і з них — статистики, за якими рішення ухвалюють монітори: неявну швидкість, залишок за лічильником шляху, неявне прискорення та неявну швидкість повороту на вікнах 30 с, залишки «курс проти шляхового кута», «лаг проти шляхової швидкості» та висоти антени (медіани за 10 с), а також розкид і зростання відношення сигнал/шум супутників. |
receiver_trust (ingest, maritime) | tests/maritime_trust_reference.rs (t1_nmea_decoding_matches_pynmea2, t2_east_north_offsets_match_the_wgs84_geodesic, t3_t4_monitor_input_statistics_match_the_oracle) проти tests/fixtures/maritime_trust/reference.json, відтвореного scripts/gen_maritime_trust_ref.py із синтетичного NMEA, записаного examples/gen_maritime_trust_ref_inputs.rs; допуски попередньо зареєстровані в tests/fixtures/maritime_trust/PREREGISTRATION.md | ЩО ПЕРЕВІРЕНО ЗОВНІШНЬО, сформульовано вузько: (1) декодування кожного поля, яке читають монітори, порівняно з pynmea2 1.19.0 (MIT) на 8 синтетичних журналах (1 086 епох), до 1e-9 в одиниці поля (широта й довгота, висота, відокремлення геоїда, HDOP, швидкості, шляховий кут, курс, відношення сигнал/шум; цілі числа й дати точно; час доби до 1e-6 с), найбільші відмінності на рівні останньої цифри double; (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 не проходить порівняння геодезії. | VALIDATED |
| VM-834a5b4f | Морська оцінка довіри: агрегування доказів моніторів у оцінку 0–100 і її три смуги | Кожен монітор зводить свої докази до відношення статистики до порога; оцінка дорівнює 100 мінус сума за моніторами ваги, помноженої на обмежену лінійну рампу відношення (0 до 0,5, 1 на 1,5), обмежена до 0–100 і округлена до 0,1, зі смугами на 90 і 55; кожна епоха перелічує монітори, що зняли бали, та їхні бали. | receiver_trust (score, monitors, live) | tests/maritime_trust_reference.rs::t5_score_matches_the_clean_room_reading_of_the_documented_rule; receiver_trust::score::tests (монотонна за кожною статистикою, додавання монітора ніколи не підвищує оцінку, здорові статистики залишаються на 100) | Реалізація щодо специфікації, NOT зовнішній оракул: чиста за походженням (clean-room) реалізація на Python (scripts/maritime_score_cleanroom.py), написана читачем, якому дали лише docs/RECEIVER-TRUST.md і docs/MARITIME-TRUST.md, а не вихідний код на Rust, узгоджується зі score_from_ratios на 600 векторах відношень (оцінка, смуга, бали та порядок відрахувань, різниця 0), після того як документацію було доповнено там, де перший читач знайшов її мовчазною або суперечливою (порядок за рівності, округлення, відношення монітора типу «пройшов або ні», два приклади, чиї числа не збігалися з формулою). Це показує, що документації достатньо, а код робить те, що в ній сказано. ЩО НЕ ПЕРЕВІРЕНО, і чому рядок лишається MODELLED: саме правило (ваги, рампа, межі смуг, утримання доказів) є власним правилом цього проєкту, попередньо зареєстрованим, але без зовнішнього джерела, і ніщо тут не показує, що оцінка 80 або 40 означає те, що хотів би штурман, на справжніх завадах; жодного значення такого роду не наведено. Пороги моніторів так само є власними порогами цього проєкту (Row A перевіряє лише їхню арифметику). | MODELLED |
| VM-51f0c17d | Відповідність потоку навчання NMEA 0183 і декодовані значення | Синтетичні потоки NMEA 0183 містка для навчання екіпажу (kshana nmea-scenario): GGA, RMC, VTG, ZDA, GNS, GSA, GSV, HDT, VBW і маркер PKSHT, згенеровані з еталонного треку зі змодельованими ефектами приймача, неба, глушіння та спуфінгу. Лише текстовий вихід; нічого не передається. | nmea_synth (track, sentences, scenarios); cli nmea-scenario | tests/nmea_training_reference.rs (порівняння з оракулом pynmea2); tests/nmea_training_scenarios.rs::every_sentence_is_checksum_valid_and_the_reader_accepts_it, ::every_sentence_type_is_present_each_epoch, ::deterministic_per_seed_and_sensitive_to_it | ЩО ПЕРЕВІРЕНО ЗОВНІШНЬО, сформульовано вузько: усі 225 227 речень восьми синтетичних навчальних потоків (чотири сценарії бібліотеки, зерна 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 без фікса); числові допуски без змін від коміту попередньої реєстрації. ЩО НЕ ПЕРЕВІРЕНО: що будь-який приймач, картплотер чи система містка приймає ці потоки; реалістичність моделей приймача, неба, глушіння чи спуфінгу (номінальне небо, змодельований шум, профілі дрейфу та відтворення, усі MODELLED); HDOP, висота та вміст DOP і GSA/GSV поза синтаксисом і кількостями; журнал інструктора. Нічого не передається, і жодної стійкості до глушіння чи спуфінгу не заявляється. | VALIDATED |
| VM-c7e45641 | Карта завад: значення кодів точності, значення «недоступно» в AIS, прив'язка до комірки сітки, довжина маршруту за станом комірки та маскування внутрішньої суші | Прочитання кодів навігаційної точності та цілісності ADS-B, які використовує карта (межа EPU, яку означає код NACp, межа радіуса стримування, яку означає код NIC, і низький та добрий класи, які метод із них виводить); значення «недоступно» для положення та швидкості AIS, які читач AIS відкидає; фіксована комірка сітки широти/довготи, в яку потрапляє положення; довжина маршруту та її розподіл за станом комірки (деградована, недеградована, неоцінена, не спостерігалася), які повідомляє експозиція маршруту; і те, чи лежить положення вглиб суші від полігона суші більш ніж на буфер. Комірка, позначена як деградована чи аномальна, є твердженням про повідомлені поля точності або неправдоподібні положення, а не висновком про завади, і нічого тут цього не перевіряє. | 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) | tests/interference_map_reference.rs::adsb_accuracy_and_integrity_codes_agree_with_pymodes (12 кодів NACp, 59 рядків NIC); tests/interference_map_reference.rs::ais_field_rules_agree_with_pyais_decoding (94 кадри); tests/interference_map_reference.rs::grid_cell_assignment_agrees_with_shapely (1770 точок, чотири розміри комірок); tests/interference_map_reference.rs::route_exposure_geometry_agrees_with_shapely_and_geographiclib (8 маршрутів, 420 відрізків, 11634 km); tests/interference_map_reference.rs::land_masking_agrees_with_shapely_and_pyproj (996 точок); модульні тести interference_map | ЩО ПЕРЕВІРЕНО ЗОВНІШНЬО, сформульовано вузько: п'ять незалежних реалізацій читають ті самі синтетичні вхідні дані. (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) shapely 2.2.0 covers() на полігонах комірок узгоджується з 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). | VALIDATED |
| VM-bc70cb57 | Область джерела завад: допустима область випромінювача за повідомленнями про положення літаків і суден | Допустима область, де може перебувати джерело спотворених навігаційних повідомлень, за повідомленнями про положення ADS-B (NIC/NACp) або AIS: радіолінія прямої видимості за радіусом Землі 4/3 з висоти повідомлення та діапазону висот антени випромінювача, обмежена ефективна дальність для невідомої потужності, уражені одиниці тягнуть апостеріорний розподіл до свого охоплення, а неуражені одиниці з прямою видимістю штовхають проти нього, згруповані в сесії за часом і простором. Результат — області найвищої щільності на заданих рівнях довіри, апостеріорний центроїд з моментним еліпсом, початок, кінець, тривалість сесії, уражена площа та кількість різних літаків вище мінімуму для публікації, добовий профіль і години на добу. Без рельєфу; одне джерело на сесію; достовірність обумовлена моделлю. Необов'язкове злиття з фіксом TDOA з geolocation. | interference_map::emitter (estimate, sessions, build_units, profile, GaussianFix::from_tdoa), interference_map::emitter_out (locate), kshana interference-map locate |
модульні тести interference_map::emitter (круговий цикл проєкції, показник горизонту, синтетичні прямо-зворотні цикли: відомий випромінювач лежить усередині заданого регіону приблизно із заданою частотою, граничні випадки, кластеризація сесій, профіль, приватність і формулювання); випадки locate у tests/interference_map_cli.rs | Поки жодної зовнішньої. Лише синтетичні кола пряме-обернене, від генератора, що ділить модель оцінювача, тож вони перевіряють код і калібрування заданих рівнів за цією моделлю й нічого про справжні випромінювачі. Зовнішню перевірку за опублікованими місцями передавачів Jammertest 2025 було попередньо зареєстровано (docs/emitter-region/PREREGISTRATION.md, затверджено власником до будь-якого оціненого прогону) і виконано один раз (docs/emitter-region/RESULTS.md): ADS-B NOT ASSESSABLE (2 заплановані сесії, менше за зареєстрований мінімум 4) і AIS NOT ASSESSABLE (жодної опублікованої сесії), тож жоден поріг не перевірено, а рядок лишається MODELLED | MODELLED |
| VM-af2c0f76 | Дротові формати телеметрії довіри: текстова експозиція Prometheus та OpenTelemetry OTLP/HTTP JSON | Довіра до GNSS (оцінка, смуга, причини, шлюз і, на запит, положення) як текстова експозиція Prometheus, що віддається на /metrics, і як метрики OTLP/HTTP JSON, з обмеженням кардинальності міток причин. | telemetry (prometheus: Registry, render; otlp: build_payload, Exporter (feature otlp); sample) | tests/telemetry_formats_reference.rs (prometheus_client_reads_our_exposition_as_the_registry_implies, the_official_otlp_proto_reads_our_json_as_the_registry_implies, awkward_reason_text_survives_the_parser, the_committed_outputs_are_what_this_crate_produces; схема 1,3: prometheus_client_reads_the_schema_13_exposition_as_the_registry_implies, the_official_otlp_proto_reads_the_schema_13_json_as_the_registry_implies, promtool_accepts_the_schema_13_exposition, the_collector_receives_and_exports_the_schema_13_payload_unchanged); tests/telemetry_cli.rs; telemetry::prometheus::tests (еталонний вивід) | ЩО ПЕРЕВІРЕНО ЗОВНІШНЬО, сформульовано вузько: наша текстова експозиція 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 не охоплені (див. наступний рядок). | VALIDATED |
| VM-8dd9b64e | Події SIEM телеметрії довіри: Common Event Format (CEF) через syslog | Події зміни смуги (або за епохою) як корисні навантаження Common Event Format в оболонці RFC 5424 через UDP або TCP, із задокументованим відображенням полів і екрануванням CEF. | telemetry (syslog: cef, rfc5424, SyslogSink; time) | tests/cef_reference.rs (pycef_reads_every_tier_1_event_as_the_sample_implies, the_logstash_cef_codec_reads_every_event_including_escaped_headers_as_the_sample_implies, the_committed_corpus_is_what_this_crate_produces_and_covers_what_was_registered); telemetry::syslog::tests (точні рядки CEF, екранування, рівень серйозності, оболонка RFC 5424); tests/telemetry_cli.rs | ЩО ПЕРЕВІРЕНО ЗОВНІШНЬО, сформульовано вузько: щодо двох незалежних розбирачів з відкритим кодом (оракули: pycef 1,11 (PyPI, MIT); кодек Logstash CEF (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 є вагомішим оракулом. | VALIDATED |
| VM-3b341a07 | Події SIEM телеметрії довіри: Log Event Extended Format (LEEF) через syslog | Події зміни смуги (або за епохою) як корисні навантаження Log Event Extended Format 2,0 в оболонці RFC 5424 через UDP або TCP, із задокументованим відображенням полів. | telemetry (syslog: leef, rfc5424, SyslogSink; time) | telemetry::syslog::tests (точні рядки LEEF, екранування, серйозність, оболонка RFC 5424, тайм-аути доставки та повторне з'єднання); tests/telemetry_cli.rs | ЩО ПЕРЕВІРЕНО: власні тести точних рядків цього крейта щодо задокументованого відображення полів LEEF і полів оболонки RFC 5424; підтримуваного розбирача LEEF з відкритим кодом не існує (пошук за індексом пакетів Python не знайшов жодного), тож формат перевіряється за власною специфікацією, прочитаною тим самим автором, а не за зовнішнім оракулом. ЩО НЕ ПЕРЕВІРЕНО: чи приймаються корисні навантаження LEEF розбирачем або SIEM будь-якого постачальника; правила екранування поза задокументованими; поведінка справжнього колектора syslog. | MODELLED |
| VM-a66b5cd1 | Цілісність пакета доказів: підпис, ланцюг хешів і процедура верифікації | Підписаний, зв'язаний ланцюгом хешів пакет доказів події довіри до GNSS: SHA-256 для кожного файлу та ланцюг над маніфестом, підпис Ed25519 над точними байтами маніфесту та верифікатор, що називає кожну помилку (змінений, вилучений, перейменований, підмінений або доданий файл, переупорядкований чи відредагований маніфест, маніфест, хешований заново без ключа, повторно підписаний пакет, неправильний закріплений ключ і токен позначки часу, який вилучено, замінено, сміттєвий або над іншим документом). | evidence (bundle: create_bundle, sign_detached, chain_link, sha256_hex; verify: verify_bundle, verify_detached; tsr; assemble; cli) | tests/evidence_crypto_reference.rs (вектори RFC 8032 розділу 7,1 1, 2, 3 і 1024; приклади FIPS 180-4 SHA-256; точний збіг); tests/evidence_pack_reference.rs::kshana_and_the_clean_room_verifier_agree_on_every_case (71 випадок); tests/evidence_pack.rs (тести на втручання) | ЩО ПЕРЕВІРЕНО ЗОВНІШНЬО, сформульовано вузько: (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). ЩО НЕ ПЕРЕВІРЕНО: верифікатор clean-room є незалежною реалізацією іншого автора, а не стороннім авторитетом, і він поділяє вибори специфікації, тож підтверджує цю реалізацію правил, а не самі правила; вектори валідують примітиви, а не задум формату пакета. У цьому рядку токен RFC 3161 читається лише заради відбитка повідомлення, а тестові токени синтетичні й непідписані; підпис і ланцюг органу перевіряються, за вибором (kshana evidence verify --tsa-ca), окремим рядком «RFC 3161 timestamp-token signature and chain verification». Випадки підробки синтетичні. Ніщо тут не є юридичним висновком чи засвідченням будь-якого пакета. |
VALIDATED |
| VM-e86afcaa | Перевірка підпису та ланцюга токена позначки часу RFC 3161 | evidence::tsa::verify_token і опційна kshana evidence verify --tsa-ca <anchors.pem> для timestamp.tsr пакета: RFC 3161 TimeStampResp або голий TimeStampToken (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 підписувача; ланцюг до довіреного самовидного якоря з підписом кожного сертифіката, станом CA та використанням ключа, і кожним сертифікатом, чинним на genTime токена; і відбиток повідомлення щодо даних. Не перевіряється: відкликання (CRL, OCSP), обмеження імен і політик, nonce |
evidence::tsa (verify_token, pem_certificates); evidence::verify (VerifyOptions::tsa_anchors, Failure::TimestampAuthorityInvalid); evidence::cli (--tsa-ca) | tests/evidence_tsa_openssl.rs::every_case_agrees_with_openssl (попередньо зареєстроване порівняння); evidence::tsa::tests (календарні дати й час, base64, відкрита операція RSA); evidence::verify::tests::anchors_make_the_authority_checked (непідписаний токен не проходить перевірку з якорями; без них звіт не змінюється) | 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 не заявляє ліцензії). Ніщо тут не засвідчує жодної справжньої позначки часу |
VALIDATED |
| VM-35257d18 | Пороги завад приймача-довіри, відкалібровані на наборі даних JammerTest 2024 | receiver_trust::calibration::run_dataset: попередньо зареєстроване калібрування моніторів падіння C/N0, AGC та індикатора глушіння на публічному наборі даних JammerTest 2024 (Zenodo 15911589, GPL-3.0-or-later, завантажується під час виконання, ніколи не вбудовується): для кожної теки часова шкала в 1 с з mon_rf.csv і rinex.csv, монітори запускаються один раз, кожна епоха після калібрування позначається чистою або глушінням за attack_log теки (зсунутим із CEST до UTC, охоронний інтервал 60 с), кожен поріг перебирається за фіксованою сіткою, обирається найменший поріг із сукупною ймовірністю хибної тривоги на чистих даних не більше 0,01, і підрахунки з відкладеною текою (leave-one-folder-out); перехресна перевірка читача UBX. Вибір постачається лише як опційний профіль [monitors] profile = "jammertest-2024-calibrated" (cn0_drop_db 1,5, agc_k_sigma 3,5, jam_ind_threshold 29); типове правило та кожен вихід без нього не змінюються | receiver_trust::calibration (run_dataset); receiver_trust::monitors (MonitorConfig::profile, JAMMERTEST_2024_CALIBRATED); realdata::jammertest; examples/jammertest_trust_calibration.rs | tests/receiver_trust_jammertest_calibration.rs::the_recorded_calibration_reproduces (проігнороване, з обмеженням даними за KSHANA_JAMMERTEST_DIR: записаний відбір, кількості на відкладених даних, вердикти порогів і вердикт); receiver_trust::calibration::tests (мітки часу, парування вікон і зсув часового поясу, мітки, захисні смуги, виключення, відбір); receiver_trust::monitors::tests::threshold_profile_is_opt_in | Опубліковані журнали подій набору даних (вікна 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, пройдено; jam_ind_threshold 0,0094, пройдено; об'єднання трьох: хибні тривоги 0,0328, виявлення 0,807 проти 0,05 і 0,50, пройдено. За зареєстрованим правилом рядок MODELLED (один поріг не виконано). Вузько: один тип приймача (u-blox ZED-F9P), одна подія, заплановані одно-хвилинні слоти як еталон (виявлення є нижньою межею; чисте означає поза записаними вікнами); відкалібровано на журналах CSV, а читач UBX дає більше хибних тривог на двох теках. Смуги морської оцінки довіри не калібровано | MODELLED |
| VM-47968885 | Оцінювання Jammertest: журнал приймача, оцінений за кожним запланованим випробуванням (затримка виявлення, пропущені тривоги, хибні тривоги, час відновлення) відповідно до опублікованого плану випробувань | jammertest::{plan, score, dataset} (kshana jammertest import|score): каталог випробувань NPRA і план передавання (MIT, завантажені із закріпленим SHA-256, ніколи не включені до репозиторію) читаються як запланована істина зі збереженням ідентифікаторів каталогу; прогін receiver-trust оцінюється за кожним випробуванням (перша тривога мінус плановий початок, виявлено/із запізненням/пропущено відносно допуску, час до першого відрізка без тривог, тривоги поза всіма слотами та їхнім охоронним інтервалом) із підписаним пакетом доказів, що містить підсумкову картку оцінок. Розклад — це заплановані слоти, а не записані часи фактичного випромінювання | 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 | tests/jammertest_plan_roundtrip.rs (з обмеженням даними за KSHANA_JAMMERTEST_PLAN_DIR: кількості слотів за областями тестування плану 2025, ідентифікатори каталогу, кругове перетворення TOML); tests/jammertest_score.rs (синтетичний журнал із відомим спадом: виявлено, пропущено, не придатне до оцінки, прогін хибної тривоги, підписаний пакет із таблицею результатів); jammertest::plan::tests; tests/jammertest_score_2024.rs (з обмеженням даними за KSHANA_JAMMERTEST_DIR: записаний прогін) | Кількість слотів плану для кожної області випробувань (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 не використовується (ліцензію не вказано, доступ за підпискою) | MODELLED |
| VM-ae7811e7 | Експорт для випробувального стенда (kshana bench-export): стовпці в геоцентричній, геодезичній та локальній швидкості, стовпці орієнтації та вихід NMEA 0183 | Геоцентричне положення, геодезичне положення, геоцентрична швидкість, стовпці курсу/тангажу/крену та UTC із руху в CSV, а також речення NMEA GGA/RMC, записані із синтетичних сценаріїв (gnss-ins, зокрема automotive-urban-canyon, jamming, gnss-sim). Лише рух і події; сигнал не записується, жодних тверджень про продуктивність симулятора чи приймача немає. | interop::testbench (write_motion_csv, write_nmea, trajectory_of, export); fusion::pack::truth_trajectory | tests/testbench_reference.rs (7 тестів: фіксація за оракулом, байти експорту, найгірший випадок за кожним рядком, стовпці положення, локальна швидкість проти істинної швидкості NED, кути Ейлера проти scipy, NMEA проти pynmea2); tests/interop_testbench.rs (власні круги запису й читання записувача) | ЩО ПЕРЕВІРЕНО ЗОВНІШНЬО, сформульовано вузько: порівняно з 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); курс, тангаж і крен дорівнюють yaw-pitch-roll зі 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 немає стовпця локального положення). | VALIDATED |
| VM-25755faa | Зіставлення з публічними рамковими документами щодо compliance | compliance (kshana compliance-report): відображення результатів Kshana на пункти публічних рамок лише за номерами, заповнене з наданих прогонів; результат зараховується для можливості лише тоді, коли містить докази, які називає відображення, порожній набір нічого не засвідчує, а формулювання — «підтримує докази для» (supports evidence for); звіт не є висновком, що будь-яку рамку виконано, і не є оцінкою чи схваленням будь-кого. | compliance | tests/compliance_report.rs::mapping_is_well_formed; tests/compliance_report.rs::wording_rule_holds_in_mapping_report_and_docs; tests/compliance_report.rs::empty_set_evidences_nothing; tests/compliance_report.rs::statuses_follow_the_runs_present; tests/compliance_references.rs | Посилання перевірено за індексом заголовків цитованих публічних документів, видобутим скриптом, зчитаним 2026-10-10 (tests/compliance_references.rs). ЩО ПЕРЕВІРЕНО: 49 цитованих посилань на пункти, розділи, абзаци чи заголовки існують у цитованому документі, а 7 цитованих URL відкрилися в записану дату (2 — іншим маршрутом); негативні контролі не проходять. ЩО НЕ ПЕРЕВІРЕНО: чи є правильним будь-який переказ, відображення чи прогалина; пункти EN 16803 (платні, лише текст каталогу); пізніші редакції; індекс не є незалежною реалізацією. | MODELLED |
| VM-89123cc2 | Морські інтеграції: плагін 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): відповідальність за навігацію судна залишається на операторі. | receiver_trust (live: the gate, its TCP listener, PKSHT); outside the crate: integrations/signalk (JavaScript), integrations/opencpn (JavaScript relay, C++ native plugin), deploy/reference-build (systemd units, container) | tests/receiver_trust_live_cli.rs (шлюз і його TCP-слухач, сторона Rust); integrations/signalk/test/adapter.test.js, integrations/signalk/test/model.test.js і integrations/signalk/test/plugin.test.js (24 тести Node на записаному синтетичному виході); integrations/opencpn/test/relay.test.mjs (5 тестів Node); integrations/opencpn/test/e2e-live.mjs (справжній двійковий файл до споживача TCP, запускається вручну та в CI); integrations/opencpn/plugin/test/pksht_test.cpp і integrations/opencpn/plugin/test/trust_state_test.cpp (перевірки C++ розбирача PKSHT і стану панелі); deploy/reference-build/check-units.sh і deploy/reference-build/test-entrypoint.sh | ЩО ПЕРЕВІРЕНО, сформульовано вузько: що ці інтеграції працюють із реальним програмним забезпеченням, для якого їх написано. ДОКАЗИ зафіксовано в integrations/signalk/evidence/README.md (з його файлами JSON) та integrations/opencpn/evidence/README.md (з його знімками екрана та журналами), кожен зі скриптом, що їх відтворює. (1) Signal K: плагін, завантажений у закріплений npm-пакет signalk-server 2.33.0, у приватному просторі імен мережі лише з loopback, на синтетичних даних. Власні інтерфейси 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): відповідальність за навігацію судна залишається на операторі. | MODELLED |
| VM-35b27a4f | Стеження за BOC(1 1): масштабування DLL і розв'язання неоднозначностей bump-jump (за вибором) | Поле boc в iq::track::LoopConfig (за вибором, за замовчуванням None): три дискримінатори DLL, масштабовані так, що вони показують похибку коду в чипах з одиничним нахилом на головному піку синусного BOC(1 1), і монітор bump-jump на дуже ранньому та дуже пізньому корелятора за піврізницею піднесучої (0,5 чипа), який перестрибує NCO коду до головного піку, коли лічильник вгору/вниз досягає N (8 за замовчуванням). Без цього параметра всі вихідні дані не змінюються. | iq::track::boc (BocKind, BocTracking, BumpJump, boc11_dll_scale); iq::track::channel (the bump-jump taps and Channel::bump_jumps) | tests/iq_boc_bump_jump.rs (b1_b2_b3_side_peak_and_false_jumps_on_the_iq_chain, b4_scaling_on_the_sampled_signal, b5_false_jump_rate_and_detection_at_correlator_level); модульні тести iq::track::boc (b4_unit_grid_misses_are_the_recorded_ones: попередньо зареєстрований поріг модульного тесту B4 збережено як написано, його записані промахи стверджено як висновок F1) | Внутрішня узгодженість щодо введеної істини та замкнених формул, за порогами, попередньо зареєстрованими в 6b68f6cc (docs/design/evidence/boc-bump-jump/). Інформаційний сигнал BeiDou B1C (PRN 19, 5 MS/s), згенерований 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 і будь-який зовнішній приймач. | MODELLED |
| VM-56e6f4f4 | Канал іоносферних мерехтінь IQ (модель Cornell) порівняно з виміряними мерехтіннями GPS L1 на 50 Гц | iq::channel::scint, модель мерехтінь Cornell (інтенсивність за Райсом, спектр Баттерворта другого порядку, фаза arg z), що працює із виміряними для вікна S4 і часом декореляції інтенсивності та порівнюється за тим, що вона породжує понад ці два входи; realdata::scint50 читає виміряний журнал, прибирає тренд і виконує порівняння. | iq::channel::scint (Scintillation, ScintParams); realdata::scint50 (parse_log, segments, measured_windows, model_windows, compare) | tests/iq_scint_malindi_measured.rs (cornell_model_verdict_is_the_recorded_one, зареєстрований вердикт перевіряється як записаний, знахідка F1; finding_model_fades_are_deeper_and_longer_than_measured; posthoc_b3_with_the_model_phase_unwrapped, лише повідомляється; залежить від даних, завантажуються скриптом scripts/fetch_scint_malindi.sh); модульні тести realdata::scint50 (model_data_through_the_harness_shows_the_wrapped_phase_finding, знахідка F2) | Виміряні дані за порогами, попередньо зареєстрованими в 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. | MODELLED |
| VM-f5e2ce4e | Варіант CFAR з усередненням за комірками в IQ-захопленні | iq::acq::ca_cfar і ca_cfar_cells (за вибором): комірка сітки захоплення порівнюється із середнім опорних комірок її рядка Доплера (охоронні лаги та крок лагів, із циклічним переходом по періоду) з коефіцієнтом alpha, заданим із замкненої формули ймовірності хибної тривоги CA-CFAR для M некогерентних блоків (ca_cfar_pfa, ca_cfar_alpha). Детектор за потужністю відліку залишається типовим, і всі наявні вихідні дані не змінюються. | iq::acq (CfarConfig, ca_cfar, ca_cfar_cells, ca_cfar_pfa, ca_cfar_alpha) | tests/iq_acq_cfar.rs (c1_closed_form_matches_monte_carlo_of_the_exact_model, c2_false_alarm_rate_on_gaussian_noise, c3_false_alarm_rate_on_two_bit_noise, c5_decisions_do_not_depend_on_the_input_scale; c4_noise_free_two_bit_signal_verdict_is_the_recorded_one, зареєстрований вердикт перевіряється як записаний, знахідка F1, зафіксована тестом finding_noise_free_sidelobes_exceed_the_cfar_rate); модульний тест iq::acq ca_cfar_closed_form_reduces_to_the_textbook_case_and_inverts | Замкнена формула, за порогами, попередньо зареєстрованими в 3724aefa (docs/design/evidence/acq-cfar/). Імовірність хибної тривоги CA-CFAR для комірок Gamma(M) порівняно з Монте-Карло точної моделі: 18 із 18 випадків у межах 3 біноміальних сигм. На кожній комірці пошуків iq::acq (GPS L1 C/A, 2,5 MS/s, по 210 000 комірок) за проєктного значення 1 %: 0,977 % і 0,969 % на гаусівському шумі та 1,006 % і 0,999 % на шумі, квантованому до 2 біт (M = 1 і 4; поріг плюс-мінус 20 %); рішення не змінюються при масштабуванні входу. NOT MET (висновок F1): на безшумовому 2-бітовому сигналі виявлення та його комірка правильні, але 1,28 % позапікових комірок рядка піку (поріг 1 %) перевищують поріг на детермінованих бічних пелюстках кореляції коду. ЩО НЕ ПЕРЕВІРЕНО: інші варіанти CFAR, двовимірні вікна, фронтенди з обмеженою смугою, польові дані. | MODELLED |
| VM-23e52907 | Модель спектра: смуги ГЛОНАСС, BeiDou і Galileo E6 (за вибором) | spectrum::default_band визначає, лише за назвою (MORE_BAND_NAMES), ГЛОНАСС 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)), із несівними та мінімальними потужностями прийому з їхніх документів керування інтерфейсом; типовий набір смуг і всі наявні вихідні дані не змінюються. | spectrum (default_band, MORE_BAND_NAMES, GLONASS_CHANNELS) | tests/spectrum_more_bands.rs (s1_new_bands_carry_their_icd_values, s2_nulls_and_b1c_parts, s4_cn0_paths_agree_on_the_new_bands; s2_closed_form_densities_verdict_is_the_recorded_one, знахідка F1, зафіксована тестом finding_s2_areas_are_the_closed_form_in_band_fraction; s3_iq_layer_verdict_is_the_recorded_one, знахідка F2, зафіксована тестом finding_s3_per_bin_errors_follow_the_code_line_spectrum; posthoc_s3_band_averaged_shape, лише повідомляється) | Опубліковані документи керування інтерфейсом і замкнені формули, за порогами, попередньо зареєстрованими в 5806f28b (docs/design/evidence/spectrum-bands/): ГЛОНАСС 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 каналів ГЛОНАСС), перші нулі BPSK на чипової швидкості, складена B1C, що дорівнює MBOC(6,1,1/11), як дає таблиця потужності її ICD, тотожність шляху C/N0 та побайтово ідентичні сценарії спектра. NOT MET: поріг одиничної площі, який виявився недосяжним у записаному вигляді (висновок F1; площі дорівнюють замкненій формулі частки в смузі), і порозрядна згода хвильових форм B1I і B1C шару IQ з обвідною моделі (1,26 і 1,56 дБ проти 0,5 дБ, висновок F2; ГЛОНАСС 0,07 дБ), оскільки коди Голда і Вейля мають нерівномірні лінійчаті спектри; усереднено по смузі головні пелюстки збігаються в межах 0,25 дБ. ЩО НЕ ПЕРЕВІРЕНО: записані IQ, інші сигнали, внутрішньосистемні завади. | MODELLED |
| VM-d8f4e06f | Первинні далекомірні коди BeiDou B1I порівняно з незалежним генератором | iq::signals::beidou::b1i_bits і b1i: коди Голда BDS-SIS-ICD-B1I-3.0, усічені до 2046 чипів, PRN від 1 до 63, у такому вигляді, як їх генерує, захоплює та відстежує шар IQ. | iq::signals::beidou (b1i_bits, b1i) | tests/iq_signals.rs::beidou_b1i_matches_gnss_sdr_generator_for_all_63_prns | 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, несівна та чипова швидкість. | VALIDATED |
| VM-fa382f0c | Далекомірні та накладні коди 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. | iq::signals::gps (l1c_weil, l1c_ranging_bits, l1c_p_bits, l1c_d_bits, l1co_s1_run, l1c_o_bits); iq::signals::tables | tests/iq_signals_gps_l1c.rs (c1_l1cp_and_l1cd_initial_and_final_24_chips_match_is_gps_800j_table_3_2_2, c2_l1co_initial_and_final_11_bits_match_is_gps_800j_table_3_2_3, c3_legendre_sequence_matches_is_gps_800j_table_6_2_1, the_column_check_rejects_relabelled_inverted_and_shifted_codes) | 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. | VALIDATED |
| VM-c906216c | Первинні коди 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. | iq::signals::lunanet (afs_i_bits, afs_q_primary_bits, legendre_bits); iq::signals::lunanet_tables; iq::lunanet_afs::check_spec | tests/lunanet_afs_codes.rs (b1_afs_i_gold_codes_match_the_printed_first_and_last_24_chips_for_all_210_prns, b2_the_legendre_sequence_of_length_10223_is_the_printed_table_d1, b3_afs_q_primary_codes_match_the_printed_first_and_last_24_chips_for_all_210_prns, b1b_not_met_the_printed_g2_state_is_not_the_state_after_the_printed_delay, b1c_post_hoc_the_printed_g2_state_is_the_state_after_2047_minus_the_delay); tests/iq_signal_matrix.rs (lunanet_afs_i, lunanet_afs_q) | Порівняно з надрукованими таблицями 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. | VALIDATED |
| VM-e9a107df | Третинні коди 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 не реалізовано (його матриці наведено в окремому додатку). | 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) | tests/lunanet_afs_codes.rs (b4_legendre_1499_matches_and_tertiary_codes_match_except_one_printed_column, the_spec_check_reports_every_bar_and_pins_the_b4_miss); iq::lunanet_afs::tests (sb1_round_trips_every_field_and_corrects_flipped_symbols, generated_streams_pass_and_damage_is_found); tests/lunanet_afs_cli.rs | 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, а промах зафіксовано); робочий приклад коду SB1 на рисунку 8 (один приклад: 0x045 кодується в 0x229F61DBB84A0); CRC-24Q порівняно з контрольним значенням каталогу 0xCDE703 для ASCII 123456789; власна арифметика кадру документа. Пороги попередньо зареєстровано в b3ba5d5. Один зафіксований промах і один робочий приклад для шару повідомлень, тому рядок залишається MODELLED. ЩО НЕ ПЕРЕВІРЕНО: LDPC і слова CRC всередині підкадрів від 2 до 4, зміст повідомлень і будь-який записаний потік | MODELLED |
| VM-7fc9b51d | Пакети стандартів: сценарії, оцінені за порогами, заявленими до прогону | standards_pack (kshana standards-pack): тестові профілі рамки DHS Resilient PNT для рівнів від 1 до 4, рівні точності IMO MSC.1/Circ.1575 та оцінювання цілісності, а також пакети ICAO Doc 9849, додаток F, — моніторинг, оцінювання та пом'якшення: кожен тест запускає вбудований вид сценарію і порівнює поля результату з порогами, заявленими в пакеті, а тести, яким потрібен журнал приймача, перелічено як NEEDS INPUT і не оцінюються. | standards_pack; compliance (standards-pack facts in compliance-report) | tests/standards_packs.rs (pinned_outcomes: статус кожного тесту, зокрема промахи L4-T1 і чотири тести точності IMO); standards_pack::tests | Жодного зовнішнього для результатів сценаріїв: кожен тест пакета запускає вид сценарію рівня MODELLED. Пороги — це заявлений профіль автора пакета (рамка DHS не заявляє значень; межі точності IMO — це таблиця C-1 MSC.1/Circ.1575, прочитана повністю; пакет ICAO відповідає власній презентації ICAO щодо Плану пом'якшення RFI, бо Doc 9849 є платною публікацією і її не читали), зафіксовані до будь-якого оціненого прогону у файлах PREREGISTRATION.md у стилі xval у standards/. Виконаний поріг (MET) означає, що змодельований сценарій виконав заявлений поріг, і нічого не говорить про продукт | MODELLED |
| VM-1a79c093 | Пакет доказів лабораторного кругового випробування (сценарій, умови випробування, журнал приймача, оцінка) | evidence::roundtrip (kshana evidence round-trip) і експорт журналу приймача kshana.test-conditions/1 з kshana bench-export: підписаний пакет, що записує хеш сценарію, хеш заявлених умов, хеш журналу та оцінку щодо заявлених подій, і відмовляє в умовах, які не збігаються з подіями оцінювання, чи в журналі, хеш якого не є заявленим. Сигнал не записується, не відтворюється і не планується. | evidence::roundtrip, evidence::assemble, interop::testbench (write_conditions_json), iq::campaign::conditions | tests/round_trip_pack.rs (pack_links_scenario_conditions_log_and_score_and_verifies, conditions_that_disagree_with_the_scoring_events_are_refused, a_stated_log_hash_that_does_not_match_is_refused, published_schema_names_every_field_the_engine_writes) | Жодного зовнішнього: пакет пов'язує хеші та оцінку журналу приймача рівня MODELLED, перевірені на синтетичних даних (експортований NMEA вбудованого сценарію, розглянутий як журнал приймача). Лабораторного прогону не заявляється | MODELLED |
| VM-77d4bf93 | Рушій стеження IQ порівняно з GNSS-SDR 0.0.19 на незалежних записах | Повний рушій стеження шару IQ (iq::track через kshana iq track: передавання від захоплення, корелятори, NCO, ФАПЧ Костаса другого порядку на 15 Гц, ССЗ DLL першого порядку з допомогою несівної на 2 Гц на огинаючій EML, індикатор захоплення та оцінювачі C/N0) на GPS L1 C/A при 30–45 дБ-Гц. | iq::track (Channel, LoopCore, design); iq::cli::track | tests/iq_track_gnss_sdr_oracle.rs (calibration_passes_for_both_receivers, registered_bars_give_the_recorded_verdict, recorded_numbers_are_pinned), на числах, отриманих за допомогою tests/fixtures/iq_track_gnss_sdr_oracle/make_fixture.py | 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. | MODELLED |
| VM-46dd95e7 | Коефіцієнти підсилення антени 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 в умовах протидії глушінню. | jamming (CrpaCfg, crpa_weights, run_jamming); crpa (null_steering_weights, mvdr_weights, covariance) | tests/jamming_crpa.rs (a1_crpa_units_only_with_the_section, a2_one_element_is_no_array, a3_verdict_is_the_recorded_one, a4_mvdr_tends_to_the_null_at_high_jnr), проти xval/crpa-jamming/expected.json із xval/crpa-jamming/oracle.py | Незалежний перерахунок у 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. | MODELLED |
| VM-40a50c34 | Затінення глушника рельєфом у виді jamming порівняно з незалежним перерахунком у numpy на реальному тайлі SRTM | Необов'язковий розділ [terrain] виду jamming: профіль рельєфу вздовж великого кола між глушником і приймачем на тайлі SRTM .hgt із випуклістю Землі за k-фактором, домінантне лезо ножа (найбільше значення Френеля–Кірхгофа nu) і втрати на одному лезі ножа за ITU-R P.526-15, розділ 4,1, що віднімаються від потужності глушника на вході приймача. | jamming_terrain (TerrainCfg, jammer_terrain, knife_edge_loss_db); jamming (run_jamming_sky) | tests/jamming_terrain.rs (b1_terrain_units_only_with_the_section, b2_every_placement_matches_the_independent_numpy_recomputation, b3_the_loss_never_rises_as_the_jammer_rises, b4_the_loss_reaches_every_js_and_nothing_else, b5_the_knife_edge_function_matches_the_reference_expression), проти xval/jamming-terrain/expected.json із xval/jamming-terrain/oracle.py | Незалежний перерахунок у 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. | MODELLED |
| VM-e6a6348d | Гістерезис захоплення та квантувач фронтенда у виді jamming порівняно з незалежними перерахунками | Необов'язкові розділи виду jamming [acquisition] (супутник захоплюється на порозі захоплення або вище після затримки повторного захоплення й утримується, поки значення на порозі стеження або вище) та [front_end] (показання AGC 10 log10(1 + J/N) і втрати квантувача АЦП на гаусівському вході, що віднімаються від кожного каналу та позначаються як недійсні для негаусівських глушників). | jamming_rx (AcquisitionCfg, AcqState, FrontEndCfg, front_end); jamming (run_jamming_sky); iq::frontend::quant (optimum_step_sigma) | tests/jamming_acq_agc.rs (h1_g1_units_only_with_their_section, h2_no_hysteresis_is_no_hysteresis, h2s_no_hysteresis_is_no_hysteresis_on_the_supplementary_runs, h3_flags_match_the_independent_recomputation, h3s_flags_match_the_independent_recomputation_on_the_supplementary_runs, h4_monotone_in_the_acquisition_threshold, h4s_monotone_in_the_acquisition_threshold_on_the_supplementary_runs, g2_quantiser_loss_matches_the_independent_monte_carlo, g3_agc_reading_matches_the_iq_layer_agc_loop), проти xval/jamming-acq-agc/expected_hysteresis.json, expected_hysteresis_s1.json і expected_quantiser.json | Незалежний перерахунок на Python кожного прапорця захоплення (xval/jamming-acq-agc/hysteresis.py) за ефективним C/N0 рушія для кожної епохи, незалежний Монте-Карло на numpy для втрат квантувача (xval/jamming-acq-agc/quantiser_mc.py, власний пошук оптимального кроку, 2^22 відліків) та цикл AGC шару IQ. Пороги попередньо зареєстровано в 70c72fcc, із додатковим набором прогонів у 37793290. MET: адитивність (усі 150 результатів сценаріїв побайтово ідентичні без цих розділів); кожен прапорець збігається на додаткових прогонах (1824 каналів, 732 із них демонструють гістерезис); монотонність за порогом; втрати квантувача в межах 0,0007 дБ від Монте-Карло при 1–4 бітах (поріг 0,02 дБ); показання AGC у межах 0,012 дБ від циклу AGC (поріг 0,05 дБ). NOT MET: зареєстровані прогони гістерезису (jamming-demo при 10–30 дБВт) були неінформативними, адже всі канали було втрачено, а їхні H2 і H4 виконано лише тривіально. Висновок: із CW-глушником 1-бітовий АЦП втрачає приблизно на 5 дБ більше, ніж гаусівське значення, яке застосовує рушій, і позначає це як недійсне. ЩО НЕ ПЕРЕВІРЕНО: сам пошук захоплення, динаміка AGC в часі, будь-яке апаратне забезпечення приймача. Перерахунки тієї самої моделі, а не зовнішній оракул; рядок залишається MODELLED. | MODELLED |
| VM-bdfec2e4 | Обмежене входження FLL нижче порога передавання від FLL до ФАПЧ типового проєкту (за вибором) | Необов'язкове carrier.fll_pull_in_max_s в iq::track (поле fll_pull_in_max_s в iq::track::LoopConfig): за fll_assist = pull-in FLL передає керування ФАПЧ після фіксованого часу входження незалежно від PLI, із відповідним часом утримання повернення, доки PLI вперше не досягне fll_off_pli. | iq::track (LoopConfig, FllGate, design); iq::track::channel (the FLL gate) | tests/iq_fll_handover_floor.rs (registered_bars_give_the_recorded_verdict, d1_the_key_is_part_of_the_hash_only_when_set, d4_the_capped_design_pulls_in_a_100_hz_handoff_error), на tests/fixtures/fll_handover_floor/results.csv | Внутрішня узгодженість щодо введеної істини: синтетичне джерело 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 % від самої ФАПЧ (10,8 проти 6,1 градуса при 33 дБ-Гц). ЩО НЕ ПЕРЕВІРЕНО: біти даних, інші сигнали та частоти дискретизації, польові записи. Типовий режим не змінюється; рядок залишається MODELLED. | MODELLED |
| VM-ad0fc95e | Зчитувач розв'язку RTKLIB .pos для receiver-trust | Читає файл розв'язку RTKLIB (календарний час або тиждень GPS/секунди тижня, положення за широтою/довготою або ECEF, кількість використаних супутників) у часову шкалу receiver-trust (receiver_trust::machines::rtklib). | receiver_trust::machines::rtklib (read_rtklib_pos); receiver_trust::LogFormat::RtklibPos | receiver_trust::machines::rtklib::tests (епохи широти/довготи, тиждень/TOW та ECEF, dms відхиляється, ворожий вхід); tests/receiver_trust_machines.rs::rtklib_pos_runs_as_a_receiver_log; integrations/gnss_lib_py/test_bridge.py | Жодного зовнішнього: жодного файлу, створеного RTKLIB, не читали, а розкладка стовпців узята з посібника RTKLIB. Перевірено лише на самостійно написаних файлах; перетворення ECEF повторно використовує frames::ecef_to_geodetic, яке має власні рядки | MODELLED |
| VM-df5ac582 | Журнали NovAtel OEM7 у форматах ASCII та двійковому (BESTPOS, RANGE, RXSTATUS) для receiver-trust | Читає BESTPOS (положення), RANGE (C/No для кожного сигналу) і RXSTATUS (прапорець глушника приймача як самозвіт епохи) із журналів OEM7 в ASCII та двійковому форматі, з перевіркою CRC, лише для читання (receiver_trust::machines::novatel). | receiver_trust::machines::novatel (read_novatel, novatel_crc32); receiver_trust::LogFormat::Novatel | receiver_trust::machines::novatel::tests (зафіксований CRC, записи ASCII і двійкові, хибний CRC пропускається, ворожий вхід); tests/receiver_trust_machines.rs::novatel_jammer_flag_reaches_the_receiver_self_report | Жодного зовнішнього як порогу відповідності. Розкладки полів і CRC відповідають публічній документації OEM7 (docs.novatel.com); процедуру CRC один раз перевірено за CRC, який документація наводить для власного прикладу BESTPOSA (процитовано, а не відтворено дослівно). Фікстури написано самостійно; жодного журналу від реального приймача не читали | MODELLED |
| VM-50b52977 | Зчитувач відношення несівна/шум 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. | receiver_trust::machines::rtcm3 (read_rtcm3, crc24q); receiver_trust::LogFormat::Rtcm3 | receiver_trust::machines::rtcm3::tests (каталожне контрольне значення CRC-24Q, C/N0 MSM4/MSM7 і об'єднання епох, відображення часу GLONASS та ідентифікаторів SBAS, хибний CRC та інші повідомлення) | ReferenceImpl в одноразовій перевірці, а не тест у наборі: декодер pyrtcm 1.2.0 читає ті самі самостійно написані кадри й отримує те саме C/N0 і час епохи. Він має те саме джерело таблиць, що й цей зчитувач, тому перевіряє обробку бітів, а не розкладку. Жодного запису від реального приймача чи базової станції не читали | MODELLED |
| VM-f1f9f73e | Адаптер монітора GNSS-SDR для receiver-trust | Читає повідомлення GNSS-SDR Monitor (Gnss_Synchro) і PVT-монітора, ретрансльовані у рядки JSON з іменами полів proto, у C/N0 для кожного каналу, фікс, кількість використаних супутників, HDOP і небо (receiver_trust::machines::gnss_sdr; integrations/gnss-sdr/relay.py). | receiver_trust::machines::gnss_sdr (read_gnss_sdr_monitor); receiver_trust::LogFormat::GnssSdr | receiver_trust::machines::gnss_sdr::tests; integrations/gnss-sdr/example.jsonl | Жодного зовнішнього: імена полів узято з документації GNSS-SDR; ні зчитувач, ні relay.py не запускали проти живого GNSS-SDR чи реального запису | MODELLED |
| VM-e757b2ba | Прийом журналів IMU, вхід курсу за гіроскопом і підгонка за Алланом параметрів гібридних датчиків | Читає CSV IMU (задокументовані стовпці або розкладка EuRoC); інтегрує швидкість рискання в курс, який читає монітор heading-course ([log.imu]); і підганяє параметри шуму акселерометра та гіроскопа гібридних сценаріїв і сценаріїв злиття за нерухомим журналом через девіацію Аллана з перекриттям (imu-fit). | receiver_trust::machines::imu, imu_fit; surface::imu_fit; scenario [log.imu] | receiver_trust::machines::imu::tests; receiver_trust::machines::imu_fit::tests (відомі коефіцієнти білого шуму відновлено в межах 10 %, відмови, TOML розбирається як AccelCfg); tests/receiver_trust_machines.rs (збіг і розбіжність курсу, вбудована несівна, imu_fit) | Жодного зовнішнього: підгонку перевірено на синтетичних журналах білого шуму з відомими коефіцієнтами, а курс — на журналах зі сталою швидкістю рискання. Жодного реального журналу IMU не підганяли, а q_aa не підганяється | MODELLED |
| VM-64d822df | Експортер виявлення та стану Home Assistant MQTT для телеметрії довіри | Документ стану JSON і повідомлення виявлення Home Assistant MQTT для потоку довіри, що виводяться як текст на кожній поверхні та публікуються через MQTT 3.1.1 QoS 0 командним рядком (telemetry::mqtt; trust-telemetry --mqtt-tcp, --print-mqtt, format mqtt). | telemetry::mqtt (discovery, state_json, connect_packet, publish_packet, MqttSink); surface::TelemetryFormat::Mqtt | telemetry::mqtt::tests (байти пакетів, петльовий брокер, мертвий брокер враховано); tests/receiver_trust_machines.rs::trust_telemetry_mqtt_text_has_discovery_then_state | Жодного зовнішнього: пакети читав слухач loopback, написаний для тесту, а не справжній брокер, і Home Assistant не запускали | MODELLED |
| VM-c9180fdd | Пакет receiver-trust для ROS 2 і міст gnss_lib_py | Міст без ROS, що записує повідомлення про фікс і супутники як NMEA та оцінює їх через прив'язку Python (integrations/ros2/kshana_trust), і міст gnss_lib_py від NavData до receiver-trust через формат rtklib-pos (integrations/gnss_lib_py). | integrations/ros2/kshana_trust (bridge.py, trust_node.py); integrations/gnss_lib_py/kshana_gnss_lib_py.py | tests/receiver_trust_machines.rs (rtklib_pos_runs_as_a_receiver_log: формат, який записує міст gnss_lib_py, прогнаний через receiver-trust); тести мостів на Python — це integrations/ros2/kshana_trust/test/test_bridge.py (міст із імітованим рушієм), integrations/ros2/kshana_trust/test/test_engine_integration.py (справжнє колесо оцінює стабільне визначення як номінальне, а стрибок на 1,1 км — як недовірене) та integrations/gnss_lib_py/test_bridge.py (справжній gnss_lib_py 1.1.0 і колесо), запускаються за допомогою pytest, а не cargo | Жодного зовнішнього: вузол ROS не запускали на живому графі ROS 2, а імена полів ublox_ubx_msgs не звіряли з працюючим драйвером. gnss_lib_py (MIT) запускали для тесту мосту | MODELLED |
401 рядків: 176 перевірено зовні, 221 змодельовано, 4 належать партнерам.