Możliwości obliczone z modelu: uzasadnienie
Te możliwości są zaimplementowane na podstawie opublikowanej lub pierwszozasadowej fizyki i przetestowane, ale są uczciwie oznaczone MODELLED: nie zostały sprawdzone względem niezależnej wyroczni z podaną tolerancją. Testy niezmienników macierzy wymuszają, że VALIDATED mogą być tylko wiersze oparte na ExternalDataset, więc nic tu nie może zostać po cichu awansowane. Każdy wiersz podaje, dlaczego pozostaje obliczony z modelu.
| Wymaganie | Możliwość | Rodzaj wyroczni | Dlaczego pozostaje obliczone z modelu | Moduł | Testy |
|---|---|---|---|---|---|
| Cień SRP z pociemnieniem brzegowym Słońca (opcjonalny) | Oświetlona część SRP jako niezasłonięta część strumienia słonecznego z pociemnieniem brzegowym (prawo przybliżenia Eddingtona I(mu)/I(1) = 2/5 + 3/5 mu, kwadratura Gaussa-Legendre'a) nad sferyczną Ziemią lub Ziemią WGS-84 (srp_shadow::limb_darkened_shadow, wariant ShadowModel OblateEarthLimbDarkened) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — brak zewnętrznej: Orekit 12,2 nie ma współczynnika oświetlenia z uwzględnieniem ściemnienia brzegowego tarczy. Sprawdzone tylko względem postaci zamkniętych tego samego prawa | srp_shadow | srp_shadow::tests (postać zamknięta pierścieniowa, jednorodne prawo odtwarzające cień stożkowy, granice pełnego Słońca i umbry) |
| Słońce i Księżyc z DE440 w modelu sił Cowella (opcjonalne) | Opcjonalny poziom efemeryd dla członów trzeciego ciała i SRP numerycznego ForceModel Cowella: geocentryczne Słońce i Księżyc z dowolnego EphemerisProvider (jądro DE440 SPK przez KernelEphemeris) przy TDB = TT + (TDB - TT), z odmową, gdy dostawca nie może obsłużyć epoki, i zliczaniem każdego powrotu do szeregu analitycznego; domyślnie wyłączony | ExternalDataset | podrzędne twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się ze składników obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Orekit 12,2 (Apache-2.0) NumericalPropagator/DormandPrince853 z ThirdBodyAttraction i SolarRadiationPressure na własnym czytniku DE440 Orekit (orekit-data lnxp1990.440), uruchomiony jako osobny program; kshana czyta bitowo zgodny, sprawdzony SPICE wycinek NAIF de440s.bsp. Progi ustalone z góry w xval/propagator-de440-orekit/PREREGISTRATION.md (22a5a01d). Próg dla orbity (0,5 m) i kontrola czułości zostały spełnione, ale próg położenia Słońca/Księżyca (3 m / 0,2 m) został chybiony przy 6,39 m / 0,244 m. SPICE czytający to samo jądro w dokładnym TDB mija się z Orekit o tyle samo (6,25 m / 0,240 m), więc rozbieżność leży między ścieżką de440s NAIF a czytnikiem DE440 lub skalą czasu Orekit; przyczyna nie została wyizolowana. Zapisane i przypięte, więc wiersz pozostaje MODELLED | propagator (ForceModel::with_ephemeris, ForceEphemeris), ephem_provider | tests/propagator_de440_orekit_oracle.rs (5 przypadków x 25 godzinnych stanów w 24 h, LEO, GEO i HEO, trzecie ciało oraz trzecie ciało + SRP: najgorsze |dr| 0,0170 m, |dv| 1.84e-5 m/s; kontrola szeregiem analitycznym mija się o 9,96 m; Słońce 6,39 m i Księżyc 0,244 m względem pozycji DE440 z Orekit, zapisane chybienie); testy jednostkowe propagatora (odmowa dostawcy, zliczanie rezerwy współdzielone między klonami) |
| Pływ atmosferyczny S1 (opcjonalny) | Dobowy pływ ciśnienia powietrza S1 jako zaburzenie geopotencjału: model N1 Biancale i Bode (2006), stopnie od 2 do 6, przez wzór obciążenia IERS 2010 Eq. 6,21 (tides::atmospheric_tide_s1, s1_air_tide_acceleration), opcjonalny w modelach sił Cowella i precyzyjnym (air_tide_s1, domyślnie wyłączony) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — brak zewnętrznej dla efektu geopotencjału. 24 współczynniki są przepisane z GFZ STR06/01 Tabela 1 model N1 i zostały ponownie sprawdzone wiersz po wierszu względem raportu (SHA-256 890865ae); stopnie 0, 1, 7 i 8 nie są używane. Ray i Ponte (2003) nie drukują tabeli harmonik sferycznych, więc nie porównano drugiego źródła | tides, propagator, precise_od | tides::tests (człon S1 jest dobowy, obraca się o 90 stopni w ćwierć doby i ma amplitudę współczynnika obciążenia każdego wiersza; wielkość fizyczna na LEO); propagator::tests::the_s1_air_tide_flag_adds_exactly_the_s1_acceleration |
| Grawitacja w harmonikach sferycznych wysokiego stopnia (EGM2008 do 2190) | Odporna na niedomiar i na bieguny ocena w pełni znormalizowanego pola do stopnia 2190 (SphericalHarmonicField::acceleration_hf / potential_hf, zmodyfikowana kolumna w przód Holmesa-Featherstone'a z 2002 z gradientem wolnym od 1/cos phi), strumieniowy ładowacz ICGEM .gfc (from_gfc_file / from_gfc_reader; pełny EGM2008 jest pobierany w czasie działania, a nie dołączany) oraz ewaluator Holmesa-Featherstone'a wybieralny w opcjonalnym Cowell Geopotential | ExternalDataset | podrzędne twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się ze składników obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Orekit 12,2 (Apache-2.0) HolmesFeatherstoneAttractionModel i pyshtools 4.14.1 (BSD-3-Clause) MakeGravGridPoint, uruchamiane jako osobne programy; progi ustalone z góry w xval/high-degree-gravity/PREREGISTRATION.md (276c869f) i xval/cowell-tesseral-200-orekit/PREREGISTRATION.md (0aa312a6). Orekit zgadza się wszędzie, gdzie jest zdefiniowany, ale pyshtools chybia swój próg ustalony z góry w dwóch punktach blisko bieguna (do 7.3e-10 m/s^2; 50-cyfrowa kontrola mpmath przypisuje błąd pyshtools), nie ma wartości wyroczni dokładnie na osi biegunowej, a kontrola czułości stopnia 70 dla orbity 24 h, ustalona z góry, została chybiona (0,726 m wobec > 1 m). Każde chybienie jest zapisane, a nie wystrojone, więc wiersz pozostaje MODELLED | gravity_sh, propagator (FieldEvaluator) | tests/gravity_sh_high_degree.rs (Orekit w 8 punktach poza osią: maks. |da| 2.2e-17 m/s^2 przy N = 70, zawsze uruchamiany; 3.5e-17, 3.9e-17 i 7.3e-17 m/s^2 przy N = 200, 360, 2190, bramkowane danymi na KSHANA_EGM2008_GFC); tests/cowell_tesseral_200_orekit_oracle.rs (orbita 24 h 200x200, bramkowana danymi: najgorsze |dr| 0,1317 m, |dv| 1.45e-4 m/s; kontrola stopnia 70 0,726 m); testy jednostkowe gravity_sh (zgodność z klasycznym ewaluatorem do 1e-13 przy stopniu 70, różnica skończona i ciągłość na biegunie dla pola stopnia 2190, niedomiar członu stopnia 2190 względem obliczenia z rozszerzonym wykładnikiem) |
| Wsadowe wyznaczanie orbity z prędkości radialnej zasięgu i az/el z maskowaniem stacji | Odtworzenie stanu epoki z mieszanych pomiarów zasięgu, prędkości zasięgu i azymutu/elewacji powyżej maski elewacji metodą Gaussa-Newtona na H = (dh/dx(t)) Phi(t, t0): analityczne pochodne cząstkowe pomiarów i wariacyjna macierz przejścia stanu z analitycznymi pochodnymi cząstkowymi dwuciałowymi + J2 (całkowana RK4, a nie STM w postaci zamkniętej) | ExternalDataset | podrzędne twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się ze składników obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Orekit 12,2 (Apache-2.0) BatchLSEstimator z własnymi chwilowymi geometrycznymi pomiarami RangeRate i AzEl (sprawdzonymi krzyżowo względem TopocentricFrame Orekit), uruchomiony jako osobny program na identycznych, zamaskowanych obserwacjach z ziarnem. Progi ustalone z góry w xval/od-measurements-orekit/PREREGISTRATION.md (0cf9076). Każdy próg spełniony oprócz B4, zgodności stanu bez szumu do 1 cm, chybionego w 2 z 4 scenariuszy (1,46, 1,74 cm): własna estymata Orekit bez szumu leży tak daleko od jego symulowanej prawdy odniesienia (przyczyna po stronie Orekit nie została wyizolowana). Zapisane i przypięte, więc wiersz pozostaje MODELLED. Nie modelowano: czasu przelotu światła, aberracji, refrakcji, obrotu Ziemi, filtru sekwencyjnego dla tych rodzajów pomiarów | orbit_determination (determine_orbit_batch_tracking, propagate_with_stm, is_visible), batch_ls (gauss_newton_analytic) | tests/od_tracking_measurements_reference.rs (8 scenariuszy: prędkość zmiany odległości, az/el i mieszane, LEO i MEO, bez szumu i z ziarnem sigma 5 m / 5 mm/s / 1e-4 rad, maski 5 i 10 deg, względem Orekit 12,2: zbiory widoczne identyczne; wartości pomiarów w granicach 5.84e-8 m, 6.30e-10 m/s, 1.44e-13 rad; STM w granicach 1.2e-14 względnie; stany z szumem w granicach 1,74 cm i 1.14e-5 m/s; RMS po dopasowaniu dla każdego typu w granicach 2.7e-4 względnie; kshana bez szumu względem prawdy odniesienia 1.06e-8 m; kshana bez szumu względem Orekit 1,464 i 1,740 cm w dwóch scenariuszach, zapisane chybienie progu 1 cm); testy jednostkowe orbit_determination i batch_ls |
| Ważenie obserwacji kodami dokładności SP3 | Odwzorowanie kodów dokładności SP3 (nagłówek ++ wykładniki w 2^n mm, podstawa %f, odchylenia standardowe base^n mm dla każdego rekordu) na sigmy położenia dla każdej obserwacji w silniku precyzyjnego wyznaczania orbity (sp3::parse_sp3_accuracy, Sp3Accuracy::position_sigma_m) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — brak zewnętrznej: wagi są wyborem modelowania (format SP3 definiuje ten kod tylko jako wskaźnik dokładności producenta; jest tu odczytywany jako jedno odchylenie standardowe dla każdej osi). Istniejące zapisane przebiegi agencji pozostają bez zmian | sp3, precise_od | src/sp3.rs unit tests; tests/agency_galileo.rs::galileo_e11_sp3_accuracy_weighted_fit (zatwierdzone 8 h wzorcowe dane ESOC, sigma 0,032 m z wykładnika nagłówka 5: Tier-1 3D RMS 0,132 m bez zmian, Tier-2 0,035 m wobec 0,070 m przy sigma 1 m, zmiana wynika z ponownie zrównoważonego empirycznego ograniczenia a priori); tests/agency_swarm.rs (produkt Swarm nie niesie kodów dokładności i wraca do rezerwy, przypięte) |
| Dołączenie opublikowanego pola grawitacyjnego do ciała | with_gravity_field (na Body, w src/gravity_pds.rs): dołącza dowolne wczytane pole harmonik sferycznych (na przykład GMM-3 lub GL0660B) do Body, aby propagator obliczał je w układzie związanym z ciałem; opcjonalne, domyślne ciała niezmienione | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — tylko spójność wewnętrzna. Każde opublikowane pole jest zdefiniowane w układzie związanym z ciałem u jego producenta (GMM-3 w układzie Marsa Konopliv i in. 2006, GL0660B w układzie osi głównych Księżyca DE421), a pole jest obliczane w układzie IAU; przesunięcie nie jest modelowane | 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 |
| Kodery komunikatów nawigacyjnych poza GPS LNAV (GPS CNAV, Galileo I/NAV i F/NAV) | Typy komunikatów GPS CNAV 10/11/30, typy słów Galileo I/NAV 1-5 w nominalnych stronach parzystych/nieparzystych oraz typy stron Galileo F/NAV 1-4: pakowanie pól ICD i kwantyzacja, CRC-24Q, kodowanie splotowe o sprawności 1/2 K=7 (G2 odwrócone dla Galileo), przeplot blokowy i wzorce synchronizacji, z odpowiadającymi dekoderami testowymi | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — tylko wewnętrzny obieg w obie strony i znane odpowiedzi z ICD; nie uruchomiono żadnego dekodera zewnętrznego (harness RTKLIB/GNSS-SDR czytający KSHANA_NAVMSG_ORACLE_JSON jest bramkowany danymi). MODELLED | gnss_navmsg (gps_cnav, gal_inav, gal_fnav, fec) | gnss_navmsg::tests (wartość kontrolna CRC-24Q 0xCDE703; odpowiedź impulsowa splotowa; Viterbi poprawia wprowadzone błędy; szerokości układu); tests/gnss_navmsg_roundtrip.rs (bity początkowe pól równe numerom bitów w ICD; kodowanie -> FEC -> przeplot -> Viterbi -> dekodowanie obiega w obie strony w granicach pół LSB); tests/gnss_navmsg_galileo_brdc_grid.rs (rekordy Galileo z IGS BRDC 2018-133 na siatce LSB, najgorsze 3.6e-3 LSB; próg liczby satelitów ustalony z góry chybiony, 15 z 20, USTALENIE) |
| Wygładzanie kodu nośną metodą Hatcha na rzeczywistych obserwacjach RINEX | Filtr Hatcha bez rozbieżności (kod wolny od jonosfery niesiony przez nośną wolną od jonosfery, okno N epok, restart przy utracie śledzenia, skoku geometry-free lub przerwie) w zestawie precyzyjnego pozycjonowania punktowego | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — USTALENIE względem opublikowanych współrzędnych ITRF2020 WTZR: progi ustalone z góry (wygładzona mediana i p95 co najwyżej 0,6 x surowe; tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_HATCH.md) zostały chybione, stosunki 0,718 i 0,923; pozostały błąd na poziomie metrów ma charakter podobny do obciążenia (obciążenie kodu C1C, antena, pływy, wielodrogowość długookresowa), a nie szumu białego, który wygładzanie usuwa. MODELLED: statystyki filtru są sprawdzane wewnętrznie | hatch (HatchFilter), pvt (assemble_epoch_precise_smoothed, CarrierSmoother) | hatch::tests (przejście bez szumu; wariancja szumu białego 1/(2N-1); restarty); tests/hatch_wettzell_oracle.rs::hatch_finding_is_pinned (WTZR 2025-02-24 01-06 h, 600 epok, N = 100: mediana błędu 3-D 1,553 -> 1,116 m, p95 3,473 -> 3,207 m) |
| Odczyt plików obserwacji RINEX 4 | Nagłówki obserwacji RINEX 4.0x (DOI, LICENSE OF USE, STATION INFORMATION, MERGED FILE; etykiety dopasowane w kolumnach 61-80 dla wersji 4 i nowszych) oraz rekordy epok | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — zgodność formatu na rzeczywistym opublikowanym pliku RINEX 4,00 (odczytane wartości równają się literałom wydrukowanym w pliku) i nagłówek wyprowadzony ze specyfikacji; nie uruchomiono niezależnego czytnika, więc MODELLED | rinex_obs (parse_obs) | tests/rinex4_obs_mao0.rs (pierwsze 4 epoki pliku IGS MGEX RINEX 4,00 MAO000USA_R_20231980000_01D_30S_MO, 58 satelitów, 7 systemów: rekordy nagłówka i wartości pierwszej epoki równe opublikowanym literałom); rinex_obs::tests::parses_a_rinex_4_header_with_its_new_records (syntetyczny nagłówek 4,02 ze specyfikacji) |
| Położenie satelity BeiDou GEO z efemeryd nadawanych | BDS-SIS-ICD-B1I v3.0 §5.2.4.12 położenie satelity geostacjonarnego z efemeryd nadawanych (układ quasi-inercjalny, potem Rz(Ω̇e·tk)·Rx(−5°)), opcjonalne przez pole include_beidou_geo w NavParseOptions, więc domyślny czytnik nadal pomija satelity GEO | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wstępnie zarejestrowane (7aa264b, 110fef9) względem precyzyjnej orbity IGS MGEX z satelitami GEO; żaden taki produkt nie był osiągalny z sesji, która to zbudowała, więc porównanie jest w toku, a wiersz jest MODELLED (sprawdzony tylko względem opublikowanych nominalnych slotów GEO) | rinex (RinexEphemeris::sv_position_ecef_bds_geo, NavParseOptions) | tests/bds_geo_broadcast_oracle.rs (prawdziwe rekordy C01-C04: promień geostacjonarny, długości 140.02/80.04/110.55/159.99 deg w opublikowanych slotach, |szerokość| 2,13 deg z uwzględnieniem nachylenia wobec 6,65 bez niego; wstępnie zarejestrowane porównanie broadcast z precyzyjnym SP3 jest uzależnione od danych w KSHANA_BDS_GEO_SP3 i nie zostało uruchomione); rinex::tests |
| GNSS/INS ściśle sprzężony z fazą nośnej i niejednoznacznościami float | Filtr EKF stanu błędu na 15 stanach INS, dwustanowy zegar odbiornika i jedna niejednoznaczność nośnej float na każdego śledzonego satelitę; pseudoodległość, faza nośnej i opcjonalna prędkość zasięgu z konstelacji Walkera SGP4 (czas światła i Sagnac), poprawki Klobuchara i Saastamoinena/Niella stosowane w pętli w położeniu własnym filtru; detekcja poślizgów różnicowaniem czasowym nośnej z progiem dla każdego satelity poszerzanym o niepewność prędkości; ponowna inicjalizacja niejednoznaczności po poślizgach i ponownym nawiązaniu | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: pomiary są syntetyzowane z modeli, których używa filtr (χ² NEES/NIS po ziarnach, zbieżność bez szumu, wstrzyknięcie poślizgu cyklu). MODELLED; nie porównano z żadnymi danymi z prawdziwego odbiornika ani z filtrem strony trzeciej | fusion::carrier_tc (run_carrier_tc, CarrierTcCfg), fusion::trajectory (truth_epochs) | tests/fusion_carrier_tc.rs (jazda po figurze 8: ustalony błąd 3D RMS 0,025 m dla fazy nośnej wobec 0,470 m dla kodu na identycznych pomiarach; 12 ziaren średnie NIS/dof 1,00 i ustalone NEES/dof 0,92; poślizg o 1 cykl wykryty w swojej epoce bez fałszywych alarmów i z nienaruszonym rozwiązaniem; wyłączenie poprawek rozgłaszanych podnosi błąd kodu z 0,51 m do 19,6 m (jonosfera) i 8,0 m (troposfera); przebieg bez szumu zbiega do 0,3 mm) |
| Pakiety GNSS/INS morski, kolejowy i lotniczy z opcją ścisłego sprzężenia | Trzy scenariusze gnss-ins na bibliotece trajektorii (statek wężykiem z prędkością 8 m/s z pięciominutową przerwą; pociąg przez wykop z dwoma satelitami i tunel; samolot, którego przerwa obejmuje 25-stopniowy zakręt z przechyłem) oraz opcjonalna tabela [tight] pakietu: pseudoodległości z konstelacji Walkera SGP4 łączone przez nawigator w pętli zamkniętej, każdy satelita powyżej maski w stanie nominalnym i najwyższych kilka w stanie pogorszonym | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wewnętrznie: wskaźniki jakości każdego pakietu względem jego własnej prawdy oraz porównanie luźne/ścisłe na identycznych danych wejściowych. MODELLED; porównanie audytu z NaveGo nie zostało uruchomione | fusion::pack (TightCfg, [tight]), scenarios gnss-ins-maritime / gnss-ins-rail / gnss-ins-aviation | tests/gnss_ins_packs.rs (każdy pakiet: rozwiązanie fuzyjne poniżej swobodnego INS w czasie przerwy dla obu czujników; kolej: ścisłe 5,3 m wobec luźnego 12,9 m klasy nawigacyjnej i 15,6 m wobec 18,8 m klasy taktycznej w czasie przerwy, dostępność 0,97 wobec 0,95; tabela ścisła sprawdzona); tests/gnss_ins_legacy_trajectory_pin.rs (domyślne sprzężenie luźne identyczne bit po bicie) |
| Sprzężony filtr PNT z pseudoodległości ze stanem obciążenia i rozszerzeniem 3-D w pakiecie fuzji | Jeden skumulowany filtr Kalmana po położeniu, prędkości, fazie i częstotliwości zegara zasilany pseudoodległościami, które sprzęgają położenie i zegar (aktualizacje w postaci Josepha niosące kowariancję wzajemną); wariant 1-DOF rozszerzony o stały stan obciążenia akcelerometru, który pakiet fuzji uruchamia pod [coupled]; oraz wersja 3-D z 8 stanami i wierszami wzdłuż linii widzenia | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: prawda symulowana z własnych modeli filtrów (χ² NEES po ziarnach Monte Carlo, pakiet rozprzężony na identycznych czujnikach). MODELLED | fusion::coupled (CoupledPntFilter, CoupledPntBiasFilter, CoupledPnt3d), fusion (run_coupled_suite), hybrid (CoupledCfg) | tests/fusion_coupled_filters.rs (filtr 3D po 60 ziarnach: średnie NEES drugiej połowy 8,12 dla 8 stanów, suma χ² ostatniej epoki w swoim paśmie 95 %; poprawka zegara 0,1 ns obniża sigma pozycji 3D z 5,58 m do 3,07 m; filtr obciążenia po 60 ziarnach: suma χ²(5) w paśmie, obciążenie w granicach 3 sigma w 59 z 60; fusion-pnt-coupled z obciążonymi akcelerometrami: pozycja p95 18,7 m / 90,0 m i integralność 1,00 / 0,97 w wersji sprzężonej wobec 430 m / 4060 m i 0,006 / 0,000 w rozprzężonej); fusion::coupled::tests; tests/fusion_coupled_pack.rs (fusion i hybrid bez [coupled] identyczne bit po bicie) |
| Biblioteka trajektorii GNSS/INS i import prawdy z CSV | Wybieralne profile ruchu dla pakietu gnss-ins (prosty, figure-8 (ósemka), miejski z zatrzymaniami, wznoszenie samolotu i skoordynowany zakręt, dron geodezyjny), zdefiniowane przez polecenia prędkości kątów Eulera i przyspieszenia wzdłuż toru zamknięte na stanie prawdy z kinematycznym IMU (człony dośrodkowy, grawitacyjny i Coriolisa) oraz zaimportowana prawda z CSV przekształcona w IMU, które ją odtwarza; historyczny przejazd niezmieniony, gdy nie podano profilu | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wewnętrznie: tożsamości kinematyki bryły sztywnej, obieg CSV tam i z powrotem oraz własna kowariancja filtra. MODELLED (nie porównano z żadnym rzeczywistym dziennikiem jazdy) | fusion::trajectory (TrajectoryCfg, Trajectory, kinematic_imu, parse_truth_csv), fusion::pack ([trajectory]) | fusion::trajectory::tests (zakręt skoordynowany nie ma siły bocznej, a współczynnik przeciążenia wynosi 1/cos φ; import CSV odtwarza wykonany profil z dokładnością do 1e-3 m/s i 1 m); tests/gnss_ins_trajectory_library.rs (każdy profil się uruchamia, a rozwiązanie fuzyjne bije swobodny INS w czasie przerwy; każdy wykonuje swój nazwany ruch; obserwowalność kursu: sigma odchylenia kursowego po 240 s 1,27 deg przy jeździe prosto wobec 0,039 deg dla figury 8 i 0,062 deg dla jazdy z zatrzymaniami); tests/gnss_ins_legacy_trajectory_pin.rs (dawny wynik i skróty prawdy identyczne bit po bicie) |
| NRHO 9:2 w CR3BP Ziemia–Księżyc względem orbity, którą przeleciał CAPSTONE | Kołowa ograniczona południowa prawie prostoliniowa orbita halo 9:2 wokół L2, którą koryguje cr3bp::differential_correct_halo (rodzina orbit Gateway i CAPSTONE), porównana pod względem geometrii średniej (okres, promień perilune, promień apolune) z orbitą, którą CAPSTONE faktycznie przeleciał. Pomiar tego, jak dobrze człon CR3BP opisuje rzeczywistą orbitę; orbita CR3BP nie jest orbitą modelu efemeryd i nie jest porównywana epoka po epoce | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Zmierzone względem zrekonstruowanej efemerydy CAPSTONE z JPL Horizons (NAIF -1176, CAPSTONE_merged, ICRF związany z Księżycem, 2023-03-01..31 co 10 min), zatwierdzonej bajt po bajcie (tests/fixtures/capstone_horizons/, NOTICE.md), wstępnie zarejestrowane 4e868170 przed pobraniem, jako pomiar z progami na średniej geometrii. To nie walidacja: CR3BP pomija Słońce, mimośród Księżyca i utrzymywanie pozycji wykonywane przez CAPSTONE, więc progi opisują, jak reprezentatywna jest orbita modelowa, a nie dokładność. Wyniki: docs/design/evidence/cap29d-capstone-nrho/RESULTS.md | cr3bp (differential_correct_halo, PeriodicOrbit) | tests/capstone_nrho_horizons.rs::cr3bp_nrho_matches_capstone_mean_geometry (CAPSTONE marzec 2023, 4 perilunia i 5 apolunii: okres 6,5004 d wobec 6,5699 d (1,07 %, próg 3 %), apolunium 71 182 wobec 71 215 km (0,05 %, próg 5 %), perilunium 3 385 wobec 3 245 km (4,1 %, próg 20 %)); cr3bp::tests::reproduces_l2_southern_nrho_92_regime |
| Błąd położenia z geometrii: błąd RMS = sigma_UERE x DOP dla rozwiązania metodą najmniejszych kwadratów silnika | dop_error_mc::run_geometry i check: Monte Carlo z ziarnem (N = 20 000 epok na geometrię, sigma = 1,5 m, ziarno ChaCha8 36 + i) własnego iterowanego rozwiązania metodą najmniejszych kwadratów silnika (pvt::solve_spp, wagi jednostkowe, rozwiązywane od prawdziwego położenia) na 8 geometriach z tests/fixtures/dop/dop_reference.csv, porównujące wariancje błędu wschód, północ, góra i zegara, RMS H/V/P, korelację wschód–północ, błędy średnie oraz odsetek wewnątrz 95 % elipsy poziomej z sigma^2 Q, gdzie Q jest czynnikiem kowariancji jądra orbit::dop (orbit::dop_cofactor, ta sama arytmetyka) dla tej samej geometrii | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna względem postaci zamkniętej: przy liniowym modelu gaussowskim kowariancja najmniejszych kwadratów wynosi sigma^2 (H^T H)^-1 (Kaplan i Hegarty (red.), Understanding GPS: Principles and Applications, wyd. 2, Artech House, 2006, rozdz. 7). Metoda i tolerancje z notatki projektowej geometrii 0,36, sekcja 5,2, ustalone w zatwierdzeniu wstępnej rejestracji przed pierwszym przebiegiem: każda wariancja w granicach 5 % (5 błędów standardowych wariancji próby przy N = 20 000), każde RMS w granicach 2,5 %, korelacja wschód-północ w granicach 0,035 (5/sqrt(N)), każda średnia w granicach 5 błędów standardowych, ułamek elipsy 95 % w granicach 0,95 +/- 0,0077 (5 dwumianowych błędów standardowych); kontrole negatywne (PDOP podwojony; błędy rosnące jak 1/sin(elewacja) względem nieważonego Q) muszą zawieść. JAK SIĘ SKŁADA: Q jest czynnikiem kowariancji jądra orbit::dop, VALIDATED względem gnss_lib_py 1.0.4 na tych samych 8 geometriach w tests/dop_reference.rs (wiersz „GNSS geometry / dilution of precision”); ten wiersz dodaje przejście od tych czynników do metrów przez solver silnika i nie pożycza statusu tamtego wiersza. DLACZEGO MODELLED: nie użyto żadnego zewnętrznego zbioru danych; zgodność pokazuje, że estymator i szum realizują sigma x DOP w modelu podręcznikowym, a nie że błąd jakiegokolwiek odbiornika równa się UERE x DOP, a sigma_UERE jest daną wejściową | 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: wszystkie 104 sprawdzenia przechodzą w pierwszym przebiegu po wstępnej rejestracji e50c88d2, najgorsza wariancja 3,2 %, RMS 1,6 %, korelacja 0,012, średnia 2,2 błędu standardowego, ułamek elipsy 0,0039; negative_control_a_doubled_pdop_fails_every_geometry; negative_control_elevation_dependent_errors_fail_the_low_elevation_geometries: obie kontrole zawodzą, jak wymagano; position_error_is_sigma_times_dop_on_masked_skies: dwie geometrie z zamaskowanym horyzontem z notatki projektowej, niebo 10sat-mixed pod presetami city-street (4 satelity, PDOP 16,6) i container-terminal (9 satelitów, PDOP 2,5), wszystkie 26 sprawdzeń przechodzi w pierwszym przebiegu po wstępnej rejestracji 03999c11, tests/fixtures/dop/PREREGISTRATION-MASKED.md); tests/position_error_dop_ci.rs (pierwsze, osobne sprawdzenie na czterech ręcznie dobranych niebach (otwarte, skupione, kanion, pół nieba; sigma 1 m, ziarno 0x0D0B5EED) z przedziałami ufności chi-kwadrat przy łącznym 1e-6 dla 20 sprawdzeń: stosunki od 0,987 do 1,009, własne PDOP/GDOP solvera równe tym z jądra z dokładnością do 2.5e-12 oraz kontrole negatywne dla błędu DOP o 10 % i błędów 1/sin(elewacja); uruchomione przed wstępną rejestracją, więc zgłoszone, a nie wstępnie zarejestrowane); dop_error_mc::tests; dop_error_ci::tests |
| Klasyfikacja zaufania uwzględniająca geometrię: geometria satelitów obok wskaźnika zaufania do odbiornika i klasa przy każdym odjęciu | receiver_trust::geometry: geometria satelitów w każdej epoce (dobra, pogorszona z przyczynami few-satellites/high-pdop/high-hdop/sky-blocked albo nieznana, gdy log nie zawiera GSV, NAV-SAT ani GSA) wyprowadzona z zgłaszanych elewacji i azymutów przez orbit::dop lub wzięta z GSA, z etykietą zawsze podawaną i nigdy nie punktowaną (dobra, średnia, słaba, nieznana) oraz HDOP, PDOP, VDOP, liczbą satelitów i utratą sygnału podanymi słowami; monitor geometrii we wskaźniku statku, który nie odejmuje niczego, dopóki geometria nie jest słaba (stosunek max(hdop/4, pdop/6, 5/n_used) powyżej 1), a potem narasta do limitu 15 punktów przy 1,5, którego sama geometria nie może obniżyć poniżej pasma pogorszonego (limit, koniec narastania i dolna granica w [geometry]; bez alarmu); klasa przy każdym odjęciu (geometria, środowisko, niespójność), przy czym utrata śledzenia dla satelitów poniżej 15 deg jest klasyfikowana jako geometria, satelity w zasięgu, ale niezśledzone, jako środowisko, a odjęcie za słabą geometrię, którego podany HDOP wykracza poza max(1,0, 25 % wyprowadzonego HDOP) od podanego nieba, jako niespójność | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: klasyfikacja jest sprawdzana względem reguł, które podaje, oraz względem wyprowadzonych ręcznie stosunków na syntetycznych edycjach zatwierdzonego dziennika demonstracyjnego, a przypięcia braku zmian utrzymują wyjścia 0.35.0: żadna ocena się nie zmienia, chyba że geometria jest słaba; etykieta jest zawsze zgłaszana. DLACZEGO MODELLED: progi są dobrane, a nie dopasowane (pochodzenie w geometry_model każdego przebiegu; wartości IEC 61108-1 i GPS SPS tak, jak zacytowano, do sprawdzenia z tekstem norm), a nie ma zewnętrznego oznaczonego zbioru danych o naturalnej degradacji geometrii wobec ataków, względem którego można by sprawdzić klasyfikację. Wyprowadzone DOP używa jądra orbit::dop, VALIDATED względem gnss_lib_py, którego statusu ten wiersz nie pożycza. Klasa geometrii jest stwierdzeniem o niebie, a nie ustaleniem, że nie doszło do ataku | 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: na syntetycznym przejściu przez fiord ze scenarios/training/fjord-natural-degradation.toml te same 624 epoki są odejmowane z podanym [skyline] i bez niego; z nim sky-blocked jest zgłaszane w 680 epokach (0 bez niego: awaryjna luka azymutu nic nie widzi w fiordzie z dwóch stron), open_fraction wynosi 0,758, a epoki klasy środowiska spadają z 78 do 33, reszta to utraty satelitów, które podany skyline zostawia na otwartej przestrzeni; poza zdarzeniem skyline nie zmienia żadnej oceny); receiver_trust::geometry::tests (ręcznie wyprowadzone stosunki na progach, krawędzie progów, narastanie i limit, dolna granica, krawędzie etykiet, nadpisania [geometry], DOP na sprawdzonym jądrze, niebo utrzymane i wygasłe, nieznane nie jest zgadywane, utrata sygnału, tolerancja słabej geometrii, wartownicy braku rozwiązania); tests/geometry_trust.rs (średnie zamaskowane niebo oznaczone i nieocenione, słabe zamaskowane niebo, utrata przy niskiej elewacji, spadek mocy, sfałszowany HDOP, całkowita utrata sygnału, drag-off przy słabej geometrii, nieznana geometria, nadpisania sesji, schemat na żywo); tests/geometry_trust_no_change.rs (obie przykładowe sesje identyczne bajt po bajcie z 0.35.0 po usunięciu dołączonych kluczy); tests/geometry_corpus_identity.rs (każdy zatwierdzony korpus NMEA statków, także jako otwarte niebo tylko z GPS, oraz scenariusze szkolenia załóg: identyczne bajt po bajcie z 0.35.0 z wyjątkiem słabych epok, które różnią się wyłącznie odjęciem za geometrię) |
| Redukcje kanionu ulicznego, sektorów i terenu do tabeli | skyline: kanion uliczny w postaci zamkniętej (cięcie atan((h - a) / d) przy d = (w/2) / abs(sin(az - s)), otwarte końce dla skończonej długości), sektory o ostrych krawędziach zgodnie z ruchem wskazówek zegara z zawinięciem oraz punkty terenu zredukowane do tabeli ze spadkiem krzywizny d^2/(2 * 4/3 R); horyzont jest ich punktowym maksimum z dowolną tabelą | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wewnętrznie: postaci zamknięte są sprawdzane względem wartości obliczonych ręcznie (elewacje szczytów ścian podanej ulicy, warunek otwartego końca, spadek krzywizny podanego punktu). Brak zewnętrznej wyroczni: notatka projektowa określa te redukcje jako MODELLED, a ElevationMask z Orekit przyjmuje tabelę, więc porównanie wiersza „Azimuth-dependent skyline mask: visible set, azimuth and elevation, and DOP under the mask” czyta ich 360-punktowe tabele jako dane wejściowe i ich nie sprawdza | 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) |
| Ustawienia wstępne horyzontu (ulica miejska, podejście do portu, fiord, terminal kontenerowy) | skyline::PRESETS: cztery geometrie REPRESENTATIVE ze wskazanymi w nocie projektowej wymiarami i wierszem pochodzenia dla każdej: city-street (kanion, ulica 0 deg, 20 m między ścianami 30 m, antena 1,5 m), harbour-approach (sektory: otwarte w stronę morza na 180 deg, zabudowa nabrzeża 8 deg na 90 deg, falochron 3 deg), fjord (teren: ściany 600 m ponad anteną w odległości 1,5 km po obu stronach kanału północ-południe, uwzględniony spadek krzywizny), container-terminal (sektory: stosy 12 deg nad częścią lądową, wysięgniki żurawi 35 deg i 25 deg nad dwoma wąskimi sektorami); z możliwością nadpisania pole po polu | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak: wymiary dobrane i podane, a nie badanie jakiejkolwiek ulicy, portu, fiordu czy terminala (proporcje ulicy mieszczą się w przedziale 0.5-2 według Oke (1988); fiord jest rzędu fiordów zachodniej Norwegii; stosy używają wysokości kontenera high-cube według ISO 668). Test sprawdza presety względem ich własnych podanych wymiarów, jest to sprawdzenie przepisania, którego reguła walidacji nie liczy | skyline (PRESETS, preset, preset_list) | skyline::tests (presets_carry_the_note_dimensions_and_provenance) |
| Funkcje geometrii nieba: widoczność, DOP, kowariancja, elipsa błędu, chmura Monte Carlo | geometry (sky_geometry, sky_monte_carlo, skyline_presets, skyline_profile, skyplot_svg; CLI kshana sky i kshana skyline, funkcje Pythona i WASM o tych samych nazwach, MCP sky_geometry): na podstawie punktu, czasu i ustawień wstępnych konstelacji (lub satelitów podanych jako azymut/elewacja albo ECEF) wyznacza satelity widoczne i zasłonięte horyzontem, GDOP/PDOP/HDOP/VDOP/TDOP, kofaktor jednostkowej wariancji (H^T H)^-1 i kowariancję we współrzędnych wschód-północ-góra z jednym zegarem odbiornika na system lub jednym wspólnym, elipsę błędu poziomego (półosie k sigma sqrt(lambda), k = sqrt(-2 ln(1 - p)), orientacja 0,5 atan2(2 Q_EN, Q_NN - Q_EE) od północy) oraz n błędów najmniejszych kwadratów z ziarnem przy niezależnych gaussowskich błędach odległości wraz z ich empiryczną kowariancją, RMS i 95 % zawierania. Kofaktorem jest orbit::cofactor_from_los, jedno jądro stojące za orbit::dop i orbit::dop_cov (dop jest redukcją dop_cov): brak drugiej implementacji DOP |
ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie będącej zewnętrznie miarodajną — Czynniki DOP dla jednego zegara opierają się na jądrze sprawdzonym względem gnss_lib_py 1.0.4 (wiersz „GNSS geometry / dilution of precision (DOP)”); własne sprawdzenia tego wiersza są wewnętrzne: sky_geometry odtwarza orbit::dop i dop_cov na tej samej geometrii, elipsa odtwarza analityczny rozkład własny 2x2, dane wejściowe ECEF i azymut/elewacja są zgodne, a RMS i zawieranie 95 % chmury z ziarnem zgadzają się z geometrią. Kowariancja ENU z jednym zegarem na system i elipsa są VALIDATED w wierszu „Horizontal error ellipse and per-system cofactor from the geometry covariance” (numpy, P2); MODELLED pozostaje tu kompozycja: propagacja presetu do reprezentatywnego nieba, chmura Monte Carlo (sprawdzona względem geometrii, z której próbkuje, sprawdzenie samospójności) i powierzchnie. Presety konstelacji dają niebo reprezentatywne, a nie datowane; model błędu gaussowskiego i UERE są podanymi danymi wejściowymi, a nie zmierzoną dokładnością ani granicą integralności | 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 (jądro z jednym zegarem względem gnss_lib_py) |
| Holdover zegara przy braku GNSS | Wzrost błędu dryfu w postaci zamkniętej + holdover do progu; klasy zegarów kwantowych | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie będącej zewnętrznie miarodajną — Wielokrokowa rekurencja kowariancji clock_state (sprawdzenie krzyżowe w tej samej bazie kodu); leżące u podstaw jądro wariancji dryfu i odwracania progu holdover jest zewnętrznie sprawdzone względem scipy (zob. „Clock-holdover coast-variance & threshold inversion”). Wartości holdover dla poszczególnych klas z szumem czerwonym pozostają MODELLED | holdover | holdover::tests (względem wielokrokowej rekurencji kowariancji Kalmana; biały szum FM dokładnie; obieg tam i z powrotem); jądro wariancji dryfu zewnętrznie sprawdzone w tests/gnss_denied_clock_holdover_reference.rs (względem scipy Van-Loan/brentq) |
| Karty zmierzonych zegarów (predykcja na zbiorze wstrzymanym) | clock_library: karta urządzenia (szum fazy białej, FM biały, FM migotania i FM błądzenia losowego plus liniowy dryf częstotliwości) dopasowana do jednej trzeciej nazwanego zmierzonego zapisu zegara po zarejestrowanym przebiegu kondycjonowania (usunięte luki, odstające fazy, skoki fazy, serie; skoki częstotliwości zarejestrowane), ważona stopniami swobody typów szumu wyznaczonymi z lag-1, oraz jej przewidywane odchylenie Allana oceniane na wstrzymanych dwóch trzecich; czytniki plików zegarów RINEX i IGS, plików BIPM dla poszczególnych laboratoriów i sekcji 1 Circular T; konwersja karty do modelu szumu taktowania szczelin, rozszerzonego modelu zegara Kalmana i poziomów szumu monitora spoofingu | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Zapisy zmierzone, zatrzymane (held out): końcowe łączone zegary IGS 30 s 11 satelitów GPS Block IIF z okresu 2026-03-01 do 14 (okno, którego żaden test nie otwierał; IGS, otwarte z podaniem autorstwa) oraz odbiornik u-blox ZED-F9P z JammerTest 2024 w jego nieocenianych sesjach stacjonarnych (GPL-3.0-or-later). Zewnętrzne porównanie D9 (wstępnie zarejestrowane 2ec76864, przewidywane / zmierzone odchylenie Allana każdej karty w granicach [1/1.5, 1,5] przy jej dopasowanych czasach uśredniania), ustalenie (pozostaje MODELLED): 10 z 11 kart GPS IIF mieści się w progu; G27 jest optymistyczna w skali dwóch godzin (0,662 przy 7680 s, najgorszy czynnik 1,510), okresowy błąd w skali godziny, którego karta potęgowa nie niesie. Karta TCXO odbiornika jest zablokowana: poza zarejestrowanymi transmisjami pozostałe sesje zbioru zostawiają 167 epok przy wymaganych 3600. Zgłoszone, nie w ślepej próbie (zapisy otwarte przez wcześniejsze wiersze): karta cezowa 5071A mieści się w progu (najgorszy 1,070 do 4096 s), karta OCXO jest zachowawcza i poza nim (2,348 przy 128 s; jej poziom szumu zmienia się w trakcie zapisu), a karta strontowa Norcia dopasowana na trzech najkrótszych opublikowanych punktach mieści się w nim w dwóch ocenianych punktach (1,291, 1,405). Pasywne maser wodorowe Galileo (brak dostępnego bez logowania źródła końcowych zegarów Galileo) i Deep Space Atomic Clock (jedna otwarta wartość z przestrzeni kosmicznej) są zablokowane. D9 runda 2, TCXO odbiornika ZED-F9P jako klasa modelu na 14 dniach z 12 stacji statycznych Wrocławia (Zenodo 6488497, CC BY 4,0; wstępnie zarejestrowane fb475550), ustalenie: przy zarejestrowanym potoku 11 z 12 stacji nie nadawało się do oceny (RAIM odrzucił większość epok bez wpływu jonosfery) i BX14 zawiodła; ujawnione ponowne uruchomienie z poprawionym potokiem (wstępnie zarejestrowane c9cc0d49) przechodzi 1 z 11 stacji w ślepej próbie (BX12, 1,412; BX07 1,532 i BX13 1,542 tuż poza), ponieważ zegary odbiorników z pojedynczych punktów z przerywanych plików 30 s nie są czystym zapisem oscylatora | 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; wstępnie zarejestrowane 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; uzależnione od danych) |
| Karty zmierzonych zegarów GPS Block IIF z wyrazami na obrót (predykcja na zbiorze wstrzymanym) | clock_library::card::DeviceCard::fit_phase_periodic: karta urządzenia zawierająca wyrazy fazy od jednego do czterech na obrót (okres T/k, T = 43 082,05 s), dopasowane łącznie z kwadratową przez najmniejsze kwadraty na jednej trzeciej zmierzonego zapisu zegara satelity, z wkładem każdego wyrazu do przewidywanego odchylenia Allana w postaci zamkniętej 4 A^2 sin^4(pi tau / P) / tau^2 | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Zapisy zmierzone, zatrzymane (held out): końcowe łączone zegary IGS 30 s 11 satelitów GPS Block IIF z okresu 2026-04-01 do 14 (okno, którego żaden test nie otwierał; IGS, otwarte z podaniem autorstwa). Zewnętrzne porównanie D9 (wstępnie zarejestrowane fb475550, przewidywane / zmierzone odchylenie Allana w granicach [1/1.5, 1,5] przy każdym dopasowanym czasie uśredniania na każdym satelicie), ustalenie (pozostaje MODELLED): 9 z 11 kart mieści się w progu; G03 (1,947) i G25 (1,581) są optymistyczne między 60 s a 2000 s, ponieważ ich zatrzymane zapisy są bardziej zaszumione niż ich trzecie części dopasowania (zatrzymana część G25 zawiera 16 luk i 29 wartości odstających fazy), co jest zmianą zegara, a nie brakującym członem okresowym. Usunięcie członów okresowych z przewidywania powoduje porażkę wszystkich 11 kart (1,77 do 4,96), więc człony te niosą przewidywanie | clock_library (card) | tests/clock_library_periodic_cards_oracle.rs (periodic_cards_reproduce_the_recorded_finding; wstępnie zarejestrowane fb475550); clock_library::card::tests (a_periodic_card_carries_the_sinusoid_a_power_law_card_cannot) |
| Estymacja stanu zegara na pokładzie | Zegar Kalmana van-Loana o 3 stanach (faza/częstotliwość/dryf), stabilizowany metodą Josepha | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie będącej zewnętrznie miarodajną — filterpy 1.4.5 KalmanFilter (R. Labbe, MIT), z F przez scipy.linalg.expm i Q przez macierz blokową Van-Loan 1978 — niezależna implementacja odniesienia odtwarzająca pełną trajektorię filtra kshana. Spójność między implementacjami: fizyka zegara / kalibracja Allana nie są sprawdzone zewnętrznie, więc pozostaje to MODELLED. Zewnętrzne porównanie 0,30, ustalenie (pozostaje MODELLED): na końcowych zegarach IGS 30 s 11 satelitów GPS Block IIF (2025-08-17 do 30), z Q dopasowanym do ADEV pierwszej połowy i filtrem ocenianym na zatrzymanej drugiej połowie, filtr jest spójny o jeden krok naprzód (od 0,906 do 0,971 epok w swoim paśmie 95 %, próg 90 %), ale zbyt pewny siebie przy jednej godzinie na 9 z 11 zegarów (od 0,486 do 0,829), a jego sumy innowacji wypadają poza [2,4, 3,6] na 5. Dopasowany szum białej fazy jest zerowy na każdym satelicie, a błąd w skali godziny (człony okresowe, szum flicker FM) nie występuje w modelu 3-stanowym. 0,30 runda 2, filtr rozszerzony (flicker FM oraz stany raz i dwa razy na obrót) na świeżych zatrzymanych zegarach IGS z 2025-09-01 do 14 (wstępnie zarejestrowane 4b1a841e), ustalenie (pozostaje MODELLED): kryteria spójności jednokrokowej i jednogodzinnej są spełnione na wszystkich 11 satelitach (od 0,948 do 0,988 i od 0,907 do 0,996), ale kryterium sumy innowacji zawodzi dla G24 (0,964) i G30 (1,929) względem [2,4, 3,6]. D9 runda 3, filtr rozszerzony z rundy 2, strojenie i kryteria bez zmian po zamrożonym detektorze warunkowania clock_library, na świeżych zegarach IGS z 2026-04-01 do 14 (wstępnie zarejestrowane fb475550), ustalenie (pozostaje MODELLED): (a) jednokrokowe od 0,941 do 0,968 i (c) średnia potrójnego NIS od 2,641 do 3,549 są spełnione na wszystkich 11 satelitach; (b) jedna godzina zawodzi dla G09 (0,894) i G26 (0,876) względem 0,90 | clock_state | clock_state::tests (analityczne Q van-Loana; NEES; dodatniość PSD); tests/clock_state_reference.rs (pełna trajektoria predict+update — stan x i kowariancja P 3×3 po 1925 krokach / 4 zestawach parametrów względem filterpy 1.4.5; najgorsze |relΔ| 2.8e-14); tests/clock_state_igs_holdout_oracle.rs::three_state_filter_on_held_out_igs_clocks_finding (przypina ustalenie); 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 runda 3) |
| Budżet błędów transferu czasu | Dwukierunkowy/TWSTFT (Sagnac), GNSS common-view, PPP; drgania łącza→odległość | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Wielkość efektu Sagnaca sprawdzona względem autorytatywnej OPUBLIKOWANEJ WARTOŚCI — N. Ashby, „Relativity in the GPS”, Living Reviews in Relativity 6:1 (2003), równ. 1,29: obieg równikowy w kierunku wschodnim daje 207,4 ns (2ωA_E/c²); kshana odtwarza 207,386 ns. Niezależnie potwierdzone przez RTKLIB 2.4.3 geodist() (Takasu, BSD-2-Clause), który niesie tę samą geometrię 2Aω/c². Złożony budżet transpondera / wspólnego widzenia / PPP BIPM TWSTFT nie ma zewnętrznej wyroczni, więc możliwość pozostaje obliczona z modelu | timetransfer, timetransfer_adv | timetransfer::tests (wzajemne znoszenie; tożsamość Sagnaca w dwóch postaciach); tests/time_transfer_error_budgeting_reference.rs (Sagnac obiegu równikowego = 207,386 ns wobec opublikowanego Ashby 207,4 ns z dokładnością do <0,05 ns; a także geometria Sagnac/geodist sprawdzona krzyżowo względem RTKLIB 2.4.3 geodist() skompilowanego ze źródła w C) |
| Analiza modulacji sygnału nawigacyjnego i śledzenia kodu | PSD BPSK-R/BOC, separacja spektralna κ, szerokość pasma Gabora, drgania DLL, wielodrogowość | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Korelacja wzajemna/własna Golda GPS C/A zgodna DOKŁADNIE (całkowite ±65/−1/63) z niezależnym generowaniem kodu IS-GPS-200; kształt PSD BPSK-R(1)/BOC(1 1) względem niezależnego periodogramu scipy. Postaci zamknięte modulacji/SSC/DLL (Betz 2001 / Kaplan i Hegarty) pozostają analityczne, więc wiersz pozostaje MODELLED — ale twierdzenie cząstkowe o korelacji kodu jest zgodne zewnętrznie. 0,30 runda 2, względem drukowanych wartości Betza 2001 i Heina i in. 2006 (wstępnie zarejestrowane 9f4f2ce8, pół drukowanej jednostki), ustalenie (pozostaje MODELLED): wszystkie 45 komórek widmowych z tabeli 1, wartości korelacji przy 1 GHz, liczby zakłóceń MBOC i 2 z 3 przesunięć z rys. 17 są zgodne; pierwsze listki boczne 24 MHz, przesunięcie BOC(8 4) z rys. 17 i każdy najgorszy błąd wielodrogowości z rys. 18-21 (od 11 do 15 % za niski) nie są. Kshana i niezależna ocena w NumPy wstępnie zarejestrowanego odczytu zgadzają się, więc rozbieżność leży w tym odczycie lub w niepodanym szczególe artykułu; przyczyna nierozstrzygnięta | navsignal | navsignal::tests (własne SSC BPSK = 2/3R_c; PSD o jednostkowym polu; DLL); tests/nav_signal_modulation_code_tracking_reference.rs (zgodność co do całkowitych wartości korelacji wzajemnej/własnej Golda GPS C/A z niezależnym generowaniem kodu IS-GPS-200; PSD BPSK-R(1)/sine-BOC(1 1) względem niezależnego periodogramu 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, przypięte) |
| Wydajność kwantowego czujnika inercyjnego | Akcelerometr z interferometrem zimnych atomów od podstaw (k_eff·T², QPN) | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Opublikowane wektory liczbowe z prac podstawowych o CAI (funkcja przejścia Cheineta 2008; czułość Petersa/Freiera): k_eff·T² zgodne dokładnie, ASD szumu śrutowego jest jednostronną dolną granicą w granicach ~2× od każdego opublikowanego przyrządu (rzeczywiste urządzenia mają szum techniczny powyżej granicy kwantowej). Przedział, a nie parytet. 0,30 runda 2 (wstępnie zarejestrowane fcb9ac64), ustalenie (pozostaje MODELLED): szum rotacji tylko od QPN względem zmierzonych punktów z rys. 14 Gauguet i in. 2009 daje stosunki od 0,695 do 0,788 w trzech dopuszczonych punktach (0,751 w punkcie pracy), chybiając wstępnie zarejestrowanego progu 30 % o 0,5 punktu; granica QPN leży od 21 do 31 % poniżej zmierzonego szumu, czego należy oczekiwać od modelu bez szumu lasera i detekcji. Kompozycja gradiometru zgadza się z linią modelu QPN Janviera i in. 2022 (stosunek od 1,013 do 1,017, Reference). Test na danych zmierzonych nie potrafi odróżnić błędu kompozycji o sqrt(2); potrafi to tylko linia Janviera dla nierównych kontrastów | inertial::quantum_imu | quantum_imu::tests (k_eff; Mach-Zehnder T²; przedział dolnej granicy Freier-2016); tests/quantum_inertial_sensor_reference.rs (funkcja przejścia |H(ω)|, k_eff·T² i ASD szumu śrutowego względem opublikowanych wektorów liczbowych Cheinet 2008 / Peters / Freier); tests/quantum_inertial_measured_qpn.rs (gauguet_finding_qpn_floor_sits_below_the_measured_noise, przypięte; gradiometer_qpn_line_matches_janvier_model) |
| Niejednoznaczność prążków / zakres dynamiczny kwantowego czujnika inercyjnego | Zakres dynamiczny niejednoznaczności prążków Macha–Zehndera: odczyt prążków o okresie 2π wyznacza maksymalną jednoznaczną siłę właściwą a_max=π/(k_eff·T²), a jednoznaczny zakres w komórkach rozdzielczości a_max/σ_a=π/σ_Φ nie zależy od optycznego współczynnika skali — wzrost czułości T² kosztuje jednoznaczny zakres w dokładnym stosunku (czas interrogacji wymienia rozdzielczość na zakres, a liczba komórek pozostaje ustalona przez szum fazy odczytu) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Samospójność modelu prążka interferometru: krawędź półprążka, okresowa co 2π struktura aliasingu i znoszenie się współczynnika skali w stosunku zakresu do rozdzielczości są algebraicznymi tożsamościami w postaci zamkniętej, sprawdzonymi względem własnych funkcji fazy i czułości Macha–Zehndera silnika — sprawdzenia spójności wewnętrznej, NIE zewnętrzny zbiór danych, więc wiersz pozostaje InternalConsistency. MODELLED idealna trzyimpulsowa niejednoznaczność prążka; brak granic na jednoznaczny zakres od aberracji czoła fali lub utraty kontrastu | inertial::quantum_imu | quantum_imu::tests (a_max leży na krawędzi półprążka ±π ze skalowaniem zakresu 1/T²; odzyskanie fazy zawiniętej jest dokładne wewnątrz [−a_max,a_max], a poza nim aliasuje dokładnie o 2·a_max; jednoznaczny zakres dynamiczny a_max/σ_a=π/σ_Φ jest identyczny dla dwóch bardzo różnych współczynników skali długość fali/T; metody CaiAccelerometer zgadzają się z funkcjami swobodnymi) |
| Odporność kwantowej nawigacji zliczeniowej | Złożony budżet pozycji z biasu, współczynnika skali, VRW i zaniku stabilności w holdover | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie będącej zewnętrznie miarodajną — Niezależne całkowanie SDE metodą Monte Carlo w numpy szumu przyspieszenia białego całkowanego dwukrotnie (sprawdza analityczną wariancję VRW naprawdę niezależnym algorytmem) + kotwica z opublikowanej wartości Grovesa 2013 dla członów obciążenia i współczynnika skali; liczby urządzeń CAI określają ilościowo sprzęt partnera i pozostają MODELLED | inertial::quantum_imu (QuantumNavBudget) | budget_tests (obciążenie względem integratora AccelModel; VRW względem całki analitycznej); tests/quantum_inertial_dead_reckoning_reference.rs (VRW względem niezależnego dwukrotnego całkowania szumu przyspieszenia białego metodą Monte Carlo w numpy, najgorsze odchylenie 0,42% w granicach ±3% dla 6 czasów dryfu; obciążenie/współczynnik skali względem wartości w postaci zamkniętej Grovesa 2013; obiegi holdover tam i z powrotem) |
| Odporność na zagłuszanie (jamming) przy braku GNSS | Geometryczny bilans łącza J/S, C/N₀ przy anty-jamming, utrata śledzenia dla poszczególnych satelitów | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Równanie bilansu łącza C/N₀ odporności na zagłuszanie sprawdzone krzyżowo względem niezależnego ponownego wyprowadzenia w numpy (ta sama postać zamknięta → InternalConsistency) oraz charakterystyka rzeczywistej degradacji C/N₀ z JammerTest-2024. 0,30 runda 2, zablokowane (pozostaje MODELLED): zmierzony spadek C/N0 z JammerTest 2024 względem przewidywania z bilansu łącza (wstępnie zarejestrowane 6a66994b, w granicach 3 dB) nie został wykonany, ponieważ pozycja i kierunkowanie anteny F8.1 w Bleik oraz udział L1 w mocy wielopasmowej rampy 1.6.4 nie są udokumentowane w katalogu testów ani w oficjalnym dzienniku | jamming | jamming::tests (broadband_q_equals_the_spectral_separation_closed_form i cw_q_equals_the_spectral_separation_closed_form: tabela Q, CW i wąskopasmowe 1, szerokopasmowe i z przemiataniem 2, przypięte do postaci zamkniętych navsignal; a_cw_jammer_is_more_damaging_than_broadband_noise_at_equal_js); tests/gnss_denied_jamming_resilience_reference.rs (FSPL/J-S/efektywne C-N₀ względem niezależnego ponownego wyprowadzenia w numpy bilansu łącza Kaplan & Hegarty §9,4; rzeczywiste C/N₀ z JammerTest maleje monotonicznie przez próg 25 dB-Hz); tests/jamming_jammertest_cn0_oracle.rs (wstępnie zarejestrowane, zablokowane, nieuruchomione) |
| Detekcja spoofingu | Wskaźnik jakości bezpieczeństwa na epokę, łączący χ² wspomagane zegarem, RAIM, AGC i SQM | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Parametry scenariuszy TEXBAT (Humphreys 2012) — charakterystyka, a nie przypięte wektory. Zewnętrzne porównanie 0,30, ustalenie (pozostaje MODELLED): na JammerTest 2024 (Bleik; dane GPL-3.0) monitory na poziomie obserwabli (chi-kwadrat wspomagany zegarem, RAIM, niepowodzenie rozwiązania) nie podniosły alarmu w ciągu 10 s od żadnego z 8 nadających się do oceny opublikowanych początków spoofingu (tam, gdzie okno przed początkiem było czyste, pierwszy alarm przyszedł od 10,2 do 39 s po opublikowanym początku slotu), a trzy okna przed początkiem zawierały fałszywe alarmy monitora zegara (81, 64 i 173 epok). Pierwszym obserwowalnym skutkiem była utrata śledzenia GPS na dwóch częstotliwościach, a nie niespójność RAIM. Opublikowane początki to początki slotów harmonogramu z rozdzielczością minutową; to, że poprzedzają one zapis RF, jest interpretacją, a nie pomiarem. 0,30 runda 2, względem oficjalnego dziennika JammerTest 2024 organizatorów (rozdzielczość sekundowa; wstępnie zarejestrowane 6a66994b z monitorem zegara trójstanowym kalibrowanym metodą Hadamarda bez zatrzaskiwania), ustalenie (pozostaje MODELLED): monitor alarmuje w ciągu 10 s przy 4 z 10 zarejestrowanych początków; przy pozostałych sześciu spóźnia się o 18 do 211 s albo podnosi fałszywe alarmy zegara przed początkiem (1 przy 2.1.4, 85 przy 2.3.15). D9 runda 3 (karta odbiornika z pozostałych sesji jednostki JammerTest, wstępnie zarejestrowane 2ec76864) zablokowana: 167 epok uczących wobec 3600. D9 rundy 4 i 4b (poziomy szumu z karty klasy modelu u-blox ZED-F9P, Wrocław 2021, wstępnie zarejestrowane fb475550; 4b ujawnione ponowne uruchomienie z poprawioną ekstrakcją, c9cc0d49), ustalenie (pozostaje MODELLED): zero fałszywych alarmów przed początkiem przy wszystkich 10 zarejestrowanych początkach i 6 z 10 w ciągu 10 s; 2.1.1, 2.3.5, 2.3.10 i 2.6.1 pozostają spóźnione (+211, +23, +18, +51 s), bez zmian pod wpływem poziomu szumu zegara | spoof, spoof_detect, spoof_monitors | tests/spoof_texbat_validation.rs (charakterystyka parametrów TEXBAT); tests/spoof_detection_jammertest_oracle.rs::monitors_against_the_published_onsets_reproduce_the_recorded_disagreement (przypina ustalenie); 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) |
| Poziom ochrony czasu przy spoofingu | Ograniczenie w postaci zamkniętej dla najgorszego niewykrytego błędu czasu = próg monitora + σ dryfu oscylatora w czasie opóźnienia detekcji CUSUM, podawane jako pasmo progu szumu czerwonego | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Składa sprawdzone prymitywy (allan/holdover van-Loan, dolna granica bezpieczeństwa); kalibrowane na scenariuszu JammerTest 2024 2.1.1 (~1,01 ms rzeczywistego ściągnięcia czasu serwowanego wobec ≤51 ns deklarowanych). Most nad sprawdzonymi częściami — sam w sobie nie jest zewnętrzną walidacją. Zewnętrzne porównanie 0,30, ustalenie (pozostaje MODELLED): w scenariuszach spoofingu JammerTest 2024 zmierzony niewykryty błąd czasu serwowanego przekracza nominalne TPL przy 3 z 8 wykrytych początków: 184,3 wobec 34,6 ns (2.1.4), 295,7 wobec 159,3 ns (2.3.5) i 143,0 wobec 69,0 ns (2.3.11); trzy z pięciu mieszczących się są trywialne (zatrzaśnięty fałszywy alarm sprzed początku). Prawdopodobna przyczyna: człon dryfu z kalibracji 60 s przy zerowym szumie dryfu nie obejmuje wędrówki częstotliwości TCXO odbiornika w ciągu od 15 do 39 s. Zmierzony błąd to własna jednopunktowa estymata zegara Kshana względem prostej dopasowanej do własnych estymat sprzed początku, więc nawet zgodność nie byłaby w pełni niezależna. 0,30 runda 2, względem początków z oficjalnego dziennika JammerTest 2024 i zmierzonego błędu czasu odbiornika (wstępnie zarejestrowane 6a66994b), ustalenie (pozostaje MODELLED): przy 4 z 10 zarejestrowanych początków niewykryty błąd przekracza TPL stanu dryfu (634,7 wobec 458,5 ns przy 2.1.1, 232,6 wobec 16,2 ns przy 2.3.5, 41,3 wobec 6,0 ns przy 2.3.10, 218,6 wobec 47,4 ns przy 2.6.3) | tpl | tpl::tests (wyrocznie w postaci zamkniętej + CUSUM); examples/tpl_jammertest.rs (kalibracja rzeczywistego spoofingu JammerTest 2024); tests/tpl_jammertest_coverage_oracle.rs::tpl_against_measured_time_error_reproduces_the_recorded_disagreement (przypina ustalenie); tests/tpl_jammertest_log_oracle.rs::drift_state_tpl_against_the_logged_onsets_reproduces_the_recorded_disagreement |
| Alternatywne / uzupełniające PNT | Dopasowanie do mapy grawitacyjnej, nawigacja z odniesieniem do terenu (TERCOM/SITAN), anomalia magnetyczna | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Współczynniki IGRF-14; CRLB filtra dopasowanego z pierwszych zasad. Pole rzeczywistego testu grawitacyjnego jest sprawdzone zewnętrznie (wiersz „Gravity-anomaly synthesis from a spherical-harmonic model”), ale jego wynik nawigacyjny nie ma zewnętrznej wyroczni | altpnt, mapmatch, gravimeter, igrf | tests/alternative_complementary_pnt_reference.rs (CRLB dopasowania do mapy; pole IGRF-14); mapmatch::tests; gravimeter::tests; igrf::tests; tests/gravity_map_real_field.rs (60-minutowy test bez GPS na rzeczywistym polu EGM2008 stopnia 70, wstępnie zarejestrowany w xval/icgem-egm2008/: dopasowano 3106 m, więc próg < 500 m jest NOT MET i potwierdzony jako chybiony, a dziesięciokrotne zmniejszenie dryfu 70,6 km jest MET; oraz Monte Carlo błędu mapy z ziarnem); altpnt::terrain::tests::emag2_format_grid_reproduces_the_synthetic_magnetic_channel i tests/emag2_real_grid.rs (czytnik EMAG2v3 uzależniony od danych na rzeczywistym wycinku; nie ogłoszono na nim żadnego wyniku nawigacyjnego); tests/terrain_slam_rbpf.rs (wspólne estymowanie mapy, RBPF w stylu FastSLAM, względem SITAN ze znaną mapą przy skorelowanym błędzie mapy 15 m w 20 ziarnach, wstępnie zarejestrowane w xval/terrain-slam-rbpf/: średni zysk 1,5% i lepiej w 10 z 20, więc progi 10% i 12-of-20 są NOT MET i potwierdzone jako chybione; brak szkody na doskonałej mapie, MET) |
| Odtwarzalność i zapewnienie jakości oprogramowania | Deterministyczne, z haszem scenariusza, SBOM + wielosystemowe bramki wzorcowe | ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Zgodność SBOM z oficjalnym schematem JSON CycloneDX 1,5 (+ poprawne identyfikatory SPDX) — zewnętrzny opublikowany standard, zero błędów walidacji w całym grafie zależności; część dotycząca deterministyczności FoM / odtwarzalności bajt po bajcie pozostaje przypiętym sprawdzeniem samospójności, więc wiersz pozostaje MODELLED | report, scenario; CI (golden/determinism/SBOM) | tests/golden.rs, tests/determinism.rs, tests/cross_platform_golden.rs; tests/reproducibility_software_assurance_reference.rs (wygenerowany SBOM przechodzi walidację z zerem błędów względem oficjalnego schematu JSON CycloneDX 1,5 dla całego dostarczanego grafu 66 komponentów: funkcje domyślne + python + wasm, bez zależności deweloperskich) |
| Ocena wykrywania zakłóceń RF metodami uczenia maszynowego (13494) | Etykietowany syntetyczny korpus zakłóceń + niezależna od detektora uprząż ROC/AUC/macierz pomyłek/Pfa-Pmd; zabezpieczenie przed wyciekiem, podział stratyfikowany, raport optymizmu przy przesunięciu rozkładu (w obrębie a poza reżimem). Można uruchomić z CLI/wiązań jako rodzaj scenariusza impairment-eval (scenarios/impairment-eval.toml) |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Granice AUC w postaci zamkniętej (Mann–Whitney) + detektor z doskonałą wyrocznią; korpus jest SYNTETYCZNY (oparty na parametrach, nie na danych terenowych/IQ) | impairment_eval | impairment_eval::tests (AUC perfect=1/identical=0.5/tie=0,125, ROC monotoniczna, fused>0,8, rozdzielenie warstw według klas, zabezpieczenie przed wyciekiem, odtwarzalny korpus, flagi przesunięcia rozkładu sygnalizują optymizm); dominance_demonstrators (osiągalne + odtwarzalne + MODELLED-not-VALIDATED + luka optymizmu samospójna) |
| Badanie luki optymizmu w wykrywaniu zakłóceń RF metodami uczenia maszynowego i predyktor luki oparty wyłącznie na ID | Kontrolowane badanie syntetyczne luki optymizmu AUC między rozkładem uczącym a rozkładem spoza niego, dla detektorów z opublikowanych metod i uczonych (regresja logistyczna / MLP z jedną warstwą ukrytą): trendy praw skalowania dla poszczególnych klas (ρ Spearmana + nachylenie względem 1−dotkliwość) oraz predyktor grzbietowy oparty wyłącznie na rozkładzie uczącym, który szacuje lukę wyłącznie z diagnostyki rozkładu uczącego, oceniany metodą pomijania jednego detektora i jednej klasy. Odtwarzalne przez cargo run --release --example optimism_study |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Statystyki wyprowadzone ręcznie względem postaci zamkniętych (dwunormalne AUC Φ(d'/√2), wariancja DeLonga, Spearman z rangami wiązanymi, dokładne odzyskanie OLS) + walidacja krzyżowa leave-one-out względem punktu odniesienia przewidującego średnią. Korpus jest SYNTETYCZNY (oparty na parametrach, nigdy dane terenowe/IQ), a luka optymizmu jest przesunięciem dotkliwości syntetyczne→syntetyczne, NIE wynikiem symulacja→teren | impairment_study, impairment_ml, eval_stats | impairment_study::tests (wyrocznia AUC na klasę ≈1, wyuczona luka optymizmu>0, kształt siatki + przedział bootstrap obejmuje średnią + dodatni trend skalowania, cechy ID skończone, predyktor luki pokonuje przewidywanie średniej zarówno w walidacji krzyżowej z pominięciem jednego detektora, jak i jednej klasy (OBU) + deterministyczne); impairment_ml::tests (logreg rozdziela + deterministyczne + strata↓, MLP rozwiązuje XOR, czego model liniowy nie potrafi + z ziarnem); eval_stats::tests (bootstrap/DeLong/Spearman/ridge względem postaci zamkniętych) |
| Kompromis PNT kwantowe a klasyczne i odporność przy braku GNSS (13503) | Pobieranie zmierzonego ADEV (NNLS), tabela kompromisów (holdover czasu/inercyjny + korzyść), obwiednia odporności w czasie; zastrzeżenie o progu dołączone do artefaktu. Można uruchomić z CLI/wiązań jako rodzaj scenariusza quantum-trade (scenarios/quantum-trade.toml) |
ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Jądro dopasowania zmierzonego ADEV→PSD (NNLS) jest zgodne z scipy.optimize.nnls (tests/scipy_reference.rs / tests/quantum_vs_classical_pnt_trade_reference.rs) — niezależne jądro zewnętrzne; ale LICZBY zestawienia określają ilościowo (nigdy nie potwierdzają) zegar/CAI partnera, więc samo zestawienie pozostaje MODELLED, bez aureoli walidacji | quantum_trade | quantum_trade::tests (odzyskanie ADEV tam i z powrotem, nieujemność NNLS, ostrzeżenie o dolnej granicy obecne/nieobecne, korzyść>1, monotoniczna obwiednia + granica alt-PNT); dominance_demonstrators (zmierzone ADEV jest sterowane danymi, a nie zakładaną dolną granicą, klasa założona flaguje granicę + ostrzeżenie, nieprawidłowa krzywa odrzucona, MODELLED-not-VALIDATED) |
| Środowisko pogody kosmicznej i gęstość termosfery zależna od aktywności | Wskaźniki słoneczne/geomagnetyczne (definicyjna tabela Kp↔ap), temperatura egzosferyczna Jacchia-1971 oraz gęstość termosfery Jacchia 1971 (SAO Special Report 332: statyczne profile dyfuzyjne odtwarzające jego Tabelę 7, z wariacjami dobową, geomagnetyczną, półroczną, sezonowo-szerokościową i helową) względem statycznej atmosfery USSA76. Można uruchomić z CLI/wiązań jako rodzaj scenariusza space-weather (scenarios/space-weather.toml) |
ExternalDataset | jedno twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Definicyjna tabela Kp↔ap + postać zamknięta temperatury egzosferycznej Jacchii-1971 (zgodna do <1 K z opublikowanymi kotwicami, tests/space_weather_reference.rs); gęstość jest scharakteryzowana względem pymsis NRLMSISE-00 (niezależny model NRL): wahanie cyklu słonecznego na 800 km wynosi 10.4x wobec 13.6x w NRLMSISE-00. Zmiana 0,30: skalibrowany czynnik aktywności pierwszego rzędu zastąpiono Jacchią 1971 (gęstość scenariusza domyślnego na 400 km 4.176e-12 -> 6.929e-12 kg/m3; usunięto reference_exospheric_temperature_k, dodano mean_exospheric_temperature_k). 0,30 runda 2, zmierzone gęstości z akcelerometrów TOLEOS CHAMP/GRACE/GRACE-FO (ESA Swarm DISC; wstępnie zarejestrowane 20eed695), ustalenie (pozostaje MODELLED): średnie orbitalne na 400 do 500 km mieszczą się w czynniku 2 przy maksimum słonecznym poza burzami (CHAMP 2001 521/521, GRACE-A 2002 120/120, GRACE-FO 2024 526/547), ale Jacchia 1971 jest około 1.7x zbyt gęsta w minimum słonecznym 2008 (GRACE-A 412/544 w czynniku 2), więc gęstość nie jest sprawdzona względem niezależnego wzorca | space_weather | space_weather::tests (Kp↔ap dokładne w punktach siatki + obieg tam i z powrotem + monotoniczne, średnia dziennego Ap, T egzosferyczna względem opublikowanych kotwic min/średnia/max słoneczne + przyrost burzowy, gęstość równa jedności w odniesieniu, wahanie cyklu słonecznego w obserwowanym przedziale 5–10×, scenariusz odtwarzalny + MODELLED-not-VALIDATED + odrzucenie spoza zakresu); dominance_demonstrators (osiągalne + odtwarzalne + fizyczne T + MODELLED-not-VALIDATED); tests/space_weather_density_accelerometer_oracle.rs::jacchia71_finding_is_pinned |
| Okno startowe i geometria wznoszenia (analiza misji) | Azymut(y) startu w dwóch ciałach (sin Az = cos i / cos lat), minimalna osiągalna inklinacja, prędkość kołowa, wschodni bonus obrotu Ziemi, Δv zmiany płaszczyzny typu dogleg i dobowe okazje, a przy podanej epoce i wierszach IERS finals2000A prędkość punktu względem prawdziwego bieguna (launch::site_rotation_speed_at). Można uruchomić z CLI/wiązań jako rodzaj scenariusza launch-window (scenarios/launch-window.toml) |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Geometria startu w postaci zamkniętej z trygonometrii sferycznej względem opublikowanych kotwic z przykładów rozwiązanych (Vallado, Fundamentals of Astrodynamics wyd. 4, algorytm 37 azymutu startu + rozdz. 6 zmiana płaszczyzny; tests/launch_window_ascent_geometry_reference.rs). Używają one tej samej postaci zamkniętej, którą implementuje kshana (parytet z opublikowaną wartością / sprawdzenie przepisania, InternalConsistency); MODELLED dwóch ciał, bez modelu trójkąta prędkości obracającej się Ziemi / wznoszenia / strat na opór. Zewnętrzne porównanie 0,30 z Orekit 12,2 (Apache-2.0), ustalenie (pozostaje MODELLED): geometria zgadza się do zaokrąglenia (nachylenie odczytane z azymutu wypalenia w 158 przypadkach, najgorsze 2.6e-15 rad; nachylenie minimalne, prędkość kołowa i delta-v dogleg do 3e-16), ale prędkość stanowiska od obrotu Ziemi chybia wstępnie zarejestrowanej wartości względnej 1e-6 na szerokości 62,9 deg (1.12e-6). Różnica rośnie jak tan(szer.), co zgadza się z przesunięciem bieguna od ruchu bieguna o około 5.8e-7 rad w układzie Ziemi Orekit, którego sferyczne ω·R·cos(szer.) nie uwzględnia. Twierdzenia nie zawężono przed przebiegiem, więc wiersz nie może awansować na podstawie tego porównania. 0,30 runda 2 (wstępnie zarejestrowane 71bebf63): z epoką i wierszami IERS prędkość stanowiska względem prawdziwego bieguna (pole scenariusza site_rotation_speed_true_pole_m_s) zgadza się z Orekit w granicach 1e-6 w 24 stanowiskach na czterech długościach geograficznych (najgorsze 4.9e-8), ale nominalna prędkość bez epoki, którą scenariusz domyślnie podaje jako premię od obrotu Ziemi, nadal chybia o 1.12e-6, więc wiersz pozostaje MODELLED do czasu decyzji o domyślnym wyjściu | launch | launch::tests (start dokładnie na wschód osiąga i=szerokość, KSC→ISS = podręcznikowe 45°, polarny = N/S, i<szer. nieosiągalne, równikowa premia 465 m/s, zmiana płaszczyzny 10° ≈ 1,34 km/s + 180° = 2v, liczby dziennych okazji, scenariusz odtwarzalny/MODELLED + ścieżka dogleg); dominance_demonstrators (osiągalne + odtwarzalne + 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 |
| Korytarz balistycznego wejścia w atmosferę (Allen–Eggers) | Maksymalne opóźnienie (niezależne od współczynnika balistycznego), prędkość i wysokość przy maksymalnym przeciążeniu oraz prędkość maksymalnego nagrzewania dla balistycznego wejścia w atmosferę wykładniczą. Można uruchomić z CLI/wiązań jako rodzaj scenariusza reentry (scenarios/reentry.toml) |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wejście analityczne Allena–Eggersa w postaci zamkniętej, dodatkowo sprawdzone krzyżowo względem numerycznego całkowania scipy 1,18 solve_ivp (DOP853) TEGO SAMEGO równania wejścia z samym oporem (tests/ballistic_re_entry_corridor_reference.rs, 36 przypadków, najgorsze a_max rel 2.9e-9) — sprawdzenie całki numerycznej względem własnej postaci analitycznej, więc nadal InternalConsistency, NIE zewnętrzna walidacja. MODELLED balistyczne (bez siły nośnej), bez aerotermiki/TPS — wynik nagrzewania jest prędkością, a nie strumieniem ciepła. Zewnętrzne porównanie 0,30, ustalenie (pozostaje MODELLED): względem rekonstrukcji wejścia SRC Stardust (Desai i Qualls, NASA NTRS 20080008567) szczytowe opóźnienie Allena–Eggersa dla podanego inercjalnego stanu wejścia (12,9 km/s, -8.2 deg, H 7200 m) wynosi 61,8 g wobec 32,89 g z najlepiej oszacowanej trajektorii, +88 % przy tolerancji 15 %: rozwiązanie ze stałym kątem toru lotu i bez grawitacji z grubsza podwaja szczyt płytkiego wejścia szybszego niż prędkość ucieczki. Stardust nie niósł akcelerometru, więc rekonstrukcja jest estymatą trajektorii. 0,30 runda 2, zablokowane (pozostaje MODELLED): całkowane rozwiązanie płaskie dla punktu materialnego (reentry::simulate_planar_entry, US76, grawitacja odwrotnie proporcjonalna do kwadratu, krzywizna) zgadza się z najlepiej oszacowanymi trajektoriami Stardust i Genesis w granicach 15 % (+11,3 %, +5,6 %), ale te maksima są wynikami symulacji agencji, a nie pomiarami, więc jest to wyłącznie sprawdzenie krzyżowe. Porównanie z akcelerometrem (wstępnie zarejestrowane a94a283d) jest zablokowane z braku czytelnej kopii analizy Hayabusa2 REMM (doi 10.57350/jesa.16) | reentry | reentry::tests (szczytowe g niezależne od współczynnika balistycznego + fizyczne pasmo g, rośnie przy bardziej stromym γ / szybszym wejściu, prędkość szczytowego g = V_e·e^(−1/2), a szczytowego nagrzewania = V_e·e^(−1/6) szybsza, wysokość szczytowego g fizyczna + głębsza dla wyższego B, scenariusz odtwarzalny/MODELLED + odrzucenie zdegenerowanej geometrii); dominance_demonstrators (osiągalne + odtwarzalne + ułamek 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 (wyłącznie sprawdzenie krzyżowe); tests/reentry_point_mass_accelerometer_oracle.rs (zablokowane, nieuruchomione) |
| Adaptacyjne kodowanie i modulacja DVB-S2 wzdłuż przelotu łącza w dół LEO | Es/N0 łącza w dół wzdłuż każdego przelotu jednego satelity nad jedną stacją (EIRP, strata w wolnej przestrzeni, strata atmosferyczna według prawa cosecans, pozostałe straty, G/T, stała Boltzmanna, szybkość symbolowa), najefektywniejszy MODCOD DVB-S2, który przekracza swój próg quasi-bezbłędny z ETSI EN 302 307-1 V1.4.1 Tabela 13 plus margines implementacyjny w każdym kroku, wolumen danych ACM przelotu oraz punkt odniesienia ze stałym kodowaniem, który zamyka się na masce i przy najdłuższej odległości. Można uruchomić jako rodzaj scenariusza acm-link. Dane wejściowe ilustracyjne; MODELLED. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: sprawność widmowa obliczona w postaci zamkniętej z Tabeli 5a K_bch i długości ramek zgadza się ze sprawnościami drukowanymi w Tabeli 13 (sprawdzenie przepisania tabeli progów); elementy bilansu łącza zgadzają się ze swoimi postaciami zamkniętymi; wybór jest monotoniczny względem Es/N0 i respektuje margines; ACM przenosi co najmniej tyle, ile stałe kodowanie. Geometria przelotu pochodzi z osobnego predyktora przelotów pozornych, VALIDATED. CZEGO NIE MA: nie porównano z żadnym zewnętrznym narzędziem ani zmierzonym łączem; progi to idealne wartości AWGN z normy, a nie modemu; zaniki deszczowe, utrata kierunkowania w trakcie przelotu i piloty nie są modelowane. | 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 |
| Harmonogramowanie kontaktów naziemnych wielu satelitów i wielu stacji z rozstrzyganiem konfliktów | Kandydackie kontakty z każdego przelotu satelita-stacja wraz z jego wolumenem danych ACM; konflikty, w których jedna antena obsługiwałaby dwa satelity w czasie swojego przezbrojenia albo jeden satelita nadawałby w dół do dwóch stacji naraz; ważony priorytetami cel dostarczania ograniczony zaległościami każdego satelity; plan zachłanny z leniwą wartością krańcową, punkt odniesienia typu kto pierwszy i dokładne przeszukiwanie z ograniczeniami (branch and bound) na do 26 kandydatach, ze zgłoszoną luką optymalności planu zachłannego. Można uruchomić jako rodzaj scenariusza contact-schedule. Dane wejściowe ilustracyjne; MODELLED. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: dokładne rozgałęzienie i ograniczenie zgadza się z wyczerpującym wyliczeniem na małych zbiorach losowych, każdy plan jest sprawdzany pod kątem wykonalności względem reguł konfliktów, a algorytm zachłanny nigdy nie pokonuje dokładnego optimum. CZEGO NIE MA: nie porównano z żadnym zewnętrznym harmonogramem ani planem operacyjnym; kontakty są brane w całości (bez dzielenia), zaległość jest ustalona na początku okna, czas przestawienia ponad stały czas obrotu i pamięć pokładowa nie są modelowane. | 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 |
| Oszczędne ujęcie kosztu na pokrycie / ROI | Koszt na procent pokrycia + ROI pokrycie-na-euro nad silnikiem doboru wielkości konstelacji; koszt na satelitę jest przedziałem niski/nominalny/wysoki podanym przez wywołującego (bez zmyślonych cen) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Arytmetyka kosztów w postaci zamkniętej względem wartości wyprowadzonych ręcznie; UJĘCIE ekonomiczne obliczonej z modelu wartości pokrycia, a nie wycena ani sprawdzony model kosztów | frugal (over walker) | frugal::tests (ręcznie wyprowadzony koszt na pokrycie 48/96=0,5, współczynnik ROI 2,667, kolejność przedziałów + zabezpieczenia zerowego pokrycia) |
| Wpływ niewykrytego zdarzenia na integralność (HPL/VPL zależne od kontekstu względem limitu alarmu) | Odwzorowuje niewykryty bias spoofingu/zagłuszania na efektywny błąd → region Stanforda (dostępny/niedostępny/MI/HMI) względem HAL/VAL właściwych dla kontekstu (otwarte niebo a miasto) | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie będącej zewnętrznie miarodajną — Składa zewnętrznie sprawdzoną klasyfikację RAIM Stanforda (raim::classify_stanford); samo odwzorowanie niewykrytego zdarzenia na AL jest obliczone z modelu, a nie certyfikowanym przydziałem integralności | integrity_impact (over raim) | integrity_impact::tests (to samo niewykryte zdarzenie zmienia Available→MI→HMI w miarę zaostrzania kontekstu; zachowawcze PL→Unavailable; HMI na oś; zabezpieczenia danych wejściowych) |
| Arkusz parametrów modelu błędu CAI z cytowaniami (13503) | Przedziałowa (najlepszy/nominalny/zachowawczy) wydajność interferometru zimnych atomów — niestabilność biasu, błądzenie losowe prędkości/kąta, stabilność współczynnika skali, szybkość próbkowania ograniczona interrogacją, zakres dynamiczny niejednoznaczności prążków — każda z możliwością prześledzenia cytowania; zasila QuantumNavBudget bez modelowania sprzętu | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: cytowany przedział VRW sprawdzony krzyżowo względem fizyki CaiAccelerometer::accel_asd oraz surowego zakresu dynamicznego obliczonego z granicy niejednoznaczności prążka; liczby to przedziały z przeglądu literatury, MODELLED (needs_source_confirmation), żadne urządzenie nie jest sprawdzone, bez aureoli walidacji | inertial::cai_params (over inertial::quantum_imu) | inertial::cai_params::tests (fizyczne VRW mieści się w cytowanym przedziale VRW na wszystkich 3 poziomach; surowy zakres prążka obliczony z k_eff·T²; budżet zachowawczy dryfuje bardziej niż najlepszy; każdy przedział ma źródło i flagę potwierdzenia; zabezpieczenia kolejności przedziałów) |
| Benchmark integralności czasu (conformance) — klasyfikator epok diagramu integralności Stanforda | Klasyfikacja epok diagramu integralności Stanforda TIB (nominalna / niedostępna / MI / HMI) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Niezależna reimplementacja w numpy reguły czterech obszarów (scripts/gen_tib_scorer_reference.py) na identycznym zbiorze próbek; metoda cytowana z diagramu integralności Stanford–ESA (Tossaint i in., ION GNSS 2007) i RTCA DO-229 WAAS MOPS. NIE jest to wyrocznia dokładności typu ExternalDataset — test porównawczy jest odporny na nieuczciwość. | src/benchmark/stanford.rs | src/benchmark/stanford.rs::tests (cztery obszary + granice włącznie + |błąd| + niedostępność PL>AL); tests/tib_scorer_reference.rs (liczby klasyfikacji względem niezależnego numpy na ustalonym zbiorze syntetycznym) |
| Benchmark integralności czasu (conformance) — ocena pokrycia integralności | Ocena pokrycia integralności TIB (wskaźniki HMI/MI/dostępności + werdykt pokrycia nadgraniczeniem) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Niezależne ponowne zliczenie obszarów w numpy w tests/fixtures/tib/reference.json; wyłącznie sprawdzenie krzyżowe mechanizmu oceniającego, bez twierdzenia o dokładności. | src/benchmark/coverage.rs | src/benchmark/coverage.rs::tests (czyste/niedoszacowane/wszystkie niedostępne/puste); tests/tib_scorer_reference.rs (liczby + wskaźniki + coverage_ok względem numpy do 1e-12) |
| Benchmark integralności czasu (conformance) — katalog uszkodzeń (generatory parametryczne) | Menu uszkodzeń TIB (rozbieżność dziedzin, uderzenie zegara, dryf holdover, opóźnienie statyczne/narastające/symetryczne/asymetryczne, powtórzenie w obrębie świeżości, selektywne ścieżkowo, kworum k-z-N) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Reprezentatywne parametryczne generatory uszkodzeń (obliczone z modelu); zbiór niewykrywalny (opóźnienie symetryczne, odtworzenie w granicach świeżości) cytowany z Mizrahi RFC 7384 i Narula & Humphreys (IEEE JSTSP 2018). Brak zewnętrznej wyroczni — katalog uszkodzeń nie zgłasza żadnego twierdzenia o pomiarze. | src/benchmark/faults.rs | src/benchmark/faults.rs::tests (profile przesunięć, monotoniczny dryf, flagowanie zbioru niewykrywalnego, spójność max_offset, dokładnie dwie klasy niewykrywalne) |
| Benchmark integralności czasu (conformance) — werdykt pochłaniania niewykrywalnych | Werdykt pochłaniania niewykrywalnych TIB (symetryczne/powtórzenie musi pochłonąć PL, nigdy nie zgłaszać jako wykryte) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Sprawdzenie własności, że wyliczenie Verdict strukturalnie nie może zgłosić niewykrywalnego uszkodzenia jako wykrytego (Mizrahi RFC 7384); pochłonięte ⟺ PL ≥ przesunięcie. Brak wyroczni dokładności. | src/benchmark/scorecard.rs | src/benchmark/scorecard.rs::tests (referencyjny PL pochłania; uszkodzony PL niepochłonięty-nigdy-niewykryty; werdykt pokrycia wykrywalnego; właściwość rzetelności, że dla scenariusza niewykrywalnego nie da się uzyskać żadnego werdyktu pokrycia ani detekcji) |
| Samoopis raportu hybrydowego optycznego/RF | Raport hybrid-optical-rf podaje konfigurację łącza, z którą faktycznie został uruchomiony (długość fali nośnej, apertura nadawcza i odbiorcza, odległość, szerokość impulsu, czas całkowania, sprawności i straty, rozstrzygnięte wartości domyślne) i zawiera blok jednostek podający jednostkę i klasę pochodzenia każdej wielkości, którą artykuł prawdopodobnie przytoczy, w tym ślady kowariancji przekazania w metrach kwadratowych | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni i żadna nie jest możliwa: to jest samoopis, a nie pomiar. Zapisano go, ponieważ jego brak był defektem -- P5 musiało przytaczać długość fali nośnej i aperturę nadawczą z domyślnych wartości w kodzie źródłowym oraz wnioskować na podstawie wewnętrznej kontroli spójności, że goła variance jest w metrach kwadratowych. Wniosek był poprawny, i właśnie dlatego miało to znaczenie: nic nie wychwyciłoby pomyłki |
hybrid_integrity | hybrid_integrity::tests (rozwiązana konfiguracja jest zwracana echem zarówno dla wartości domyślnych, jak i dla nadpisań, bez przepuszczania długości fali tam i z powrotem przez metry; każdy wpis jednostek zawiera zarówno jednostkę, jak i klasę pochodzenia; każde pole, które wymienia blok jednostek, jest faktycznie emitowane, więc nie może dokumentować pola-widma) |
| Dostępność łącza hybrydowego optycznego/RF po stronie RF | Raport hybrid-optical-rf podaje dostępność łącza RF, złożoną z wielkości, które silnik już oblicza, a nie z zaimportowanej klimatologii, i podaje to złożenie jako nazwaną regułę: A_rf = I_closure * I_track, gdzie I_closure jest werdyktem zamknięcia jednokierunkowego bilansu łącza CCSDS-401 / DSN-810-005 (linkbudget::link_budget, margines Eb/N0 >= 0) przy własnej odległości scenariusza, a I_track jest werdyktem pętli śledzenia (jamming::lock_status) dla C/N0, które TEN SAM bilans zwrócił. Każdy czynnik przenosi klasę pochodzenia swojego wejścia do wyniku, a czynniki celowo NIE ujęte w iloczynie -- widoczność geometryczna, odmowa przez zakłócenia i klimatologia przerw RF -- są nazwane wraz z powodem, zamiast po cichu ustawiane na 1. Rozstrzygnięta noga RF jest powtórzona jako osobny blok rf_link_configuration, a wartości ciągłe obok wskaźnika (margines łącza, margines C/N0, zamknięte zasięgi zamknięcia i śledzenia w postaci zamkniętej oraz wykorzystanie zasięgu) są inwersjami zasięgu tego samego bilansu. Raport stwierdza w całości, w bloku i we wpisie jednostek, na który trafia czytelnik, że ta wartość jest OGRANICZONA MARGINESEM/GEOMETRIĄ i DETERMINISTYCZNA, podczas gdy dostępność optyczna jest OGRANICZONA POGODĄ/KLIMATOLOGIĄ i probabilistyczna, więc nigdy nie można ich przytaczać jako porównywalnej pary procentów | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni, a ExternalDataset jest odrzucony. Dwa wejścia to margines Eb/N0 oraz przekroczenie progu C/N0, oba będące funkcjami MODELLED EIRP, współczynnika jakości i zbiorczego przydziału strat; nie istnieje zmierzony zapis dostępności usługi hybrydowej optyczno-radiowej Ziemia–Księżyc, względem którego można by sprawdzić złożoną wartość. Istniejące kontrole są wewnętrzne i tak są opisane: złożenie jest przeliczane ponownie na podstawie opublikowanych w samym raporcie marginesów, a nie na podstawie wnętrza emitera, a zasięg domknięcia jest weryfikowany przez ponowne uruchomienie równania łącza W tym punkcie i wymaganie, by margines zanikł -- to jest rundka z odwróceniem, a nie niezależna implementacja. Rzetelna granica tej wartości jest zapisana w samym raporcie: jest to deterministyczny wskaźnik 0/1, a nie prawdopodobieństwo, ponieważ nic w tym silniku nie mierzy rozkładu przerw w łączu radiowym w tym paśmie i tej geometrii. Ten brakujący wejściowy element jest nazwany w rf_availability.factors_not_included, a nie wymyślony, i jego dostarczenie jest tym, czego wymagałaby probabilistyczna dostępność łącza radiowego | hybrid_integrity, linkbudget, jamming | hybrid_integrity::tests (dostępność jest równa iloczynowi dwóch wskaźników przeliczonych ponownie z marginesów z samego raportu, a te marginesy są same złożone ponownie z EIRP, straty w wolnej przestrzeni, strat zbiorczych, współczynnika jakości, składnika Boltzmanna, szybkości transmisji danych i wymagania z dokładnością do 1e-9 dB; wartość jest mierzona jako 0 lub 1, podczas gdy dostępność optyczna w tym samym przebiegu jest mierzona jako ściśle między nimi; każdy wiersz czynnika niesie klasę pochodzenia ze zamkniętego słownika field_schema; zgłoszony zasięg domknięcia ponownie przepuszczony przez bilans łącza zwraca margines od 0 do 1e-9 dB i jest mierzony jako niezależny od zasięgu, na którym stał przebieg, w czterech dekadach, podczas gdy wykorzystanie zasięgu zmienia się dokładnie o stosunek zasięgów; łącze -40 dBW zgłasza dostępność 0, LOST oraz wykorzystanie powyżej 1, a nie ułamek; wycofana uwaga „silnik nie oblicza odpowiednika dostępności łącza radiowego” jest potwierdzona jako usunięta, a zastępująca ją jest potwierdzona jako wymieniająca nowe pole; nieprawidłowe wejście radiowe jest odrzucane, a nie przycinane) |
| Porównanie dalmierzy optycznego i RF na równych warunkach | Raport hybrid-optical-rf podaje stosunek dokładności dalmierzy optycznego do RF, z JEDNĄ konfiguracją, przy której oceniono obie nogi, zawartą w tym samym obiekcie: ta sama jednokierunkowa ścieżka, ta sama odległość i ten sam czas akumulacji. Noga optyczna to ograniczenie CRLB ToA silnika, limitowane fotonami, dla jednokierunkowej liczby fotonów; noga RF to termiczne drganie śledzenia kodu DLL early-late silnika przy C/N0, które własny bilans łącza silnika zwraca dla tej samej jednokierunkowej odległości. Szerokość pasma szumowego pętli jest wyprowadzona, a nie wybrana: B_L = 1/(2*integration_s) umieszcza nogę RF dokładnie przy optycznym czasie akumulacji, a jeśli wywołujący ją nadpisze tak, że oba czasy uśredniania się rozchodzą, stosunek jest REFUSED — null, z nazwanym niedopasowaniem i oboma czasami — zamiast być podawany przy dwóch punktach pracy. Nie tworzy się żadnego stosunku względem WYBRANEGO parametrycznego rf_position_sigma_m scenariusza, a odmowa podaje powód: to wejście nie niesie w ogóle żadnej konfiguracji. Opublikowany dwukierunkowy optyczny wynik główny oraz dokładny czynnik łączący go z jednokierunkową nogą porównania są emitowane obok stosunku, więc raportu nie da się odczytać jako niosącego dwie niezgodne optyczne sigmy | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni dla STOSUNKU, a ExternalDataset jest odrzucony celowo. Leżący u podstaw tor radiowy ją ma -- tests/validate_p5_rf_ranging_precision.rs sprawdza linkbudget::link_budget i navsignal::dll_code_jitter_chips względem niezależnego wzorca w Pythonie/NumPy oraz względem zakodowanej na stałe wartości przykładowej Kaplana i Hegarty'ego (2.814e-3 chip / 0,825 m przy 45 dB-Hz) -- a optyczne CRLB ma własny wiersz w postaci zamkniętej. Powołanie się na któryś z tych punktów oparcia dla tego wiersza byłoby pożyczoną walidacją, której zapobiegają niezmienniki macierzy: wielkość tutaj jest STOSUNKIEM w konfiguracji z MODELLED EIRP, współczynnikiem jakości, mocą nadawczą i aperturą, a nie istnieje zmierzone porównanie dalmierzenia optycznego i radiowego w wspólnym punkcie pracy, względem którego można by ją sprawdzić. Wewnętrznie sprawdza się to, w czym stosunek może faktycznie się mylić: czy oba ramiona leżą w jednym punkcie pracy. Mierzy się to przez skalowanie wspólnego czasu akumulacji i wymaganie, by oba ramiona zmieniły się zgodnie z tym samym prawem pierwiastka kwadratowego, a stosunek pozostał na miejscu, i jest to wymuszone przez wprost odrzucenie stosunku, gdy czasy uśredniania się różnią. Oba ramiona są ograniczeniami szumu termicznego/śrutowego i oba wykluczają opóźnienie ośrodka, błąd zegara i niejednoznaczność, więc wykluczenie jest identyczne po obu stronach; raport tak mówi, zamiast pozostawiać to do domysłu | hybrid_integrity, optical_linkbudget, linkbudget, navsignal | hybrid_integrity::tests (stosunek jest równy dwóm wyemitowanym ramionom podzielonym przez siebie, z dokładnością do 1e-15 względnie, a jego odwrotność i postać w decybelach są zgodne; zasięg i sigma czasu każdego ramienia są związane dokładnie przez c; wyemitowana wspólna konfiguracja jest potwierdzona jako równa własnemu zasięgowi i czasowi całkowania scenariusza, a zasięg ramienia radiowego jest potwierdzony jako równy zasięgowi ramienia optycznego; C/N0 ramienia radiowego jest co do bitu takie samo jak w bloku dostępności, z jednego bilansu łącza, a nie ponowne wyprowadzenie; własność LIKE-FOR-LIKE (porównanie jednorodne) jest MEASURED, a nie zakładana -- czterokrotne zwiększenie wspólnego czasu akumulacji zmniejsza o połowę ramię optyczne do 1e-12 i ramię radiowe do 1e-7 i pozostawia stosunek niezmieniony do 3.19e-9 względnie, czego nie zrobiłoby ramię potajemnie uśredniające po czymś innym; nadpisanie rf_dll_bandwidth_hz, które łamie wspólny czas uśredniania, powoduje, że stosunek jest null z powodem wymieniającym oba czasy, podczas gdy oba ramiona są nadal emitowane; przebieg jednokierunkowy sprawia, że ramię porównawcze jest co do bitu takie samo jak opublikowana wartość nagłówkowa ze współczynnikiem kary dokładnie 1, a przebieg dwukierunkowy odtwarza karę 0.5/sqrt(geometryczna strata na drodze powrotnej), przeliczoną ponownie z geometric_loss_db z samego raportu do 1e-12) |
| Samoopis raportu bilansu łącza | Raport bilansu łącza podaje każdą stałą bezwzględną, z której obliczono jego własny margines -- częstotliwość nośnej użytą w stracie w wolnej przestrzeni, EIRP, współczynnik jakości, zbiorczą stratę i człon Boltzmanna -- plus wymagane G/T, przy którym margines wynosi zero, stałą łącza (EIRP - straty - wymagane Eb/N0), która jest jedyną kombinacją, jaką kiedykolwiek może ustalić opublikowana tabela szybkość/zysk, oraz, gdy wywołujący poda temperaturę szumową systemu, zysk anteny odbiorczej wynikający z tego współczynnika jakości | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni: to jest samoopis równania już zwalidowanego względem opublikowanej tabeli kontroli projektu (zob. wiersz bilansu łącza jednokierunkowego). Zapisano go, ponieważ jego brak był zmierzonym defektem -- odtworzenie opublikowanego d1_rate_gain_beamwidth.csv wymagało wstecznego wyznaczenia jednej stałej efektywnej do 0,0034 dB ze wszystkich trzydziestu wierszy, a silnik teraz zarówno nazywa tę kombinację, jak i dowodzi testem, że żadna opublikowana tabela nie mogłaby nigdy rozdzielić jej trzech składników | linkbudget | linkbudget::tests (w trzech pasmach, czterech dekadach zasięgu i obu werdyktach domknięcia margines oraz leżąca pod nim strata w wolnej przestrzeni są przeliczane ponownie wyłącznie z raportu z dokładnością lepszą niż 1e-9 dB; wymagane G/T złożone z wyrazów równania zgadza się z tą samą wielkością uzyskaną jako G/T minus margines, a ponowne uruchomienie przy nim zeruje margines; trzy bilanse o skrajnie różnych EIRP, stratach i progu, lecz równej stałej łącza, dają identyczne wymaganie, podczas gdy 1 dB na stałej przesuwa je dokładnie o 1 dB; podział zysku jest nieobecny, o ile nie podano temperatury szumowej, a niedodatnia jest odrzucana; każde pole, które wymienia blok jednostek, jest faktycznie emitowane) |
| Tabela skrzyżowania czasu księżycowego dla poszczególnych klas zegarów | Jeden przebieg budżetu czasu księżycowego emituje wiersz skrzyżowania zegar-kontra-układ dla każdej klasy zegara względem jednego wspólnego członu układu, tak że zegar jest jedyną zmienną w porównaniu; każdy wiersz niesie skrzyżowanie osiągnięte na dwa sposoby -- wyznaczone bisekcją z ogólnej potęgowej krzywej błędu czasu i odwrócone algebraicznie z dominującego typu szumu wiersza -- wraz z różnicą względną między nimi | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Dwa różne obliczenia tej samej wielkości w tej samej bazie kodu, a nie jedno powtórzone: bisekcja na krzywej potęgowej IEEE-1139 nic nie wie o typie szumu, podczas gdy postać zamknięta odwraca dominujący typ algebraicznie, więc błędnie sklasyfikowany typ szumu lub zły przedział ujawnia się jako nietrywialnie mała różnica względna. Cztery wartości odtwarzają też opublikowaną tabelę z artykułu z dokładnością do połowy ostatniej drukowanej cyfry -- ale ta tabela sama została zrekonstruowana z tej samej postaci zamkniętej, więc jest to kontrola odtwarzalności, a nie zewnętrzna wyrocznia, a składnik układu odniesienia, względem którego jest mierzona, jest przydziałem modelowanym | lunar_time_budget | lunar_time_budget::tests i lunar_time_budget_scenario::tests (wszystkie cztery klasy obecne w jednym przebiegu i w kolejności żądanego podzbioru; każdy wiersz zgadza się z własną postacią zamkniętą z dokładnością lepszą niż 1e-12 względnie; przeskalowanie błędu układu odniesienia o k skaluje punkt przecięcia o k dla zegara flicker-FM i o k^2 dla zegara white-FM, sprawdzone przy k=2 i k=3, co rozdziela te dwie klasy szumu; każdy wiersz odtwarza przecięcie dla pojedynczego zegara, które bilans już zgłosił; każdy wiersz odzyskuje jeden wspólny składnik układu odniesienia; nieznana nazwa zegara jest odrzucana) |
| Ślad przechwycenia względem wysokości i szerokości wiązki | Dwuosiowy przegląd ważonego wzorcem, ograniczonego wysokością śladu przechwycenia na powierzchni po wysokości nadajnika i średnicy czaszy, emitowany jako jeden wiersz na punkt pracy wraz z szerokością wiązki połowicznej mocy wynikającą z każdej średnicy, a przechwycenie limbu podawane jako PRÓG -- dla wiersza J/S limbu, jego margines i moc nadawcza, która by go zamknęła; dla siatki zlokalizowane przecięcia albo jawne stwierdzenie, że limb nie jest osiągany nigdzie na siatce, wraz z niedoborem | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Zawieranie zbiorów: stosunek zakłócenia do sygnału wchodzi jako jednolite przesunięcie w decybelach, więc zbiór przechwycony przy wyższej mocy nadawczej zawiera zbiór przy niższej, a ułamek może tylko rosnąć -- własność, której wzór Airy'ego NIE daje w szerokości wiązki ani wysokości, gdzie obszar przechwycony rozpada się na pierścienie, a ułamek jest rzeczywiście niemonotoniczny. Żadna opublikowana tabela nie podaje ułamka przechwyconego dysku dla księżycowego nadajnika orbitalnego w funkcji wysokości i szerokości wiązki, więc nie ma niczego zewnętrznego, względem czego można by sprawdzić te komórki; wzór leżący pod spodem jest osobno sprawdzony względem opublikowanych wartości Bessela i ma własny wiersz | antenna | antenna::tests i attack_surface::tests (siatka jest kompletna, a każdy przechwycony ułamek leży w [0 1]; przechwycony ułamek jest niemalejący względem mocy nadawczej w każdym węźle; NIE jest monotoniczny względem szerokości wiązki ani wysokości, co jest przypięte własnym testem, aby przegląd nie mógł być później wygładzony; węzeł bazowy odtwarza istniejący przechwycony ułamek co do bitu; ocena wyłącznie na limbie jest co do bitu identyczna z ostatnim punktem pełnego przeglądu; zlokalizowane przecięcie leży na progu z dokładnością do 1e-9 dB i jest obustronnie otoczone) |
| Odtwarzalność księżycowego budżetu błędu czasu | Scenariusz lunar-time-budget publikuje swoje wyniki tablicowe jako tabelę w formie długiej (indeks siatki, czas uśredniania, człon) obok raportu, więc siedem krzywych x(tau) dla poszczególnych członów i suma kwadratowa są wynikiem silnika, a nie czymś, co czytelnik odbudowuje z opisu metody | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wyłącznie samospójność: opublikowana suma jest sprawdzana względem pierwiastka z sumy kwadratów wyrazów w tym samym pliku, a wyemitowana krzywa odtwarza opublikowany p3_time_budget_curve.csv we wszystkich 57 punktach. Obie kontrole dzielą definicje wyrazów tego silnika, więc żadna nie jest niezależna. Składnik zegarowy opiera się na opublikowanych specyfikacjach zegarów, ale WIELKOŚCI poziomów łącza, układu odniesienia, relatywistycznego i efemerydalnego są udokumentowanymi przydziałami budżetu bez zewnętrznej wyroczni | lunar_time_budget_scenario | lunar_time_budget_scenario::tests (wszystkie 57 czasów uśredniania x 8 wyrazów obecne, indeks siatki biegnie od 0 do 56 włącznie i niesie po 8 wierszy; wiersz total jest równy pierwiastkowi z sumy kwadratów siedmiu wyrazów obok niego przy każdym tau; tabela podąża za żądaną siatką, a nie za zakodowaną na stałe; jej emisja pozostawia JSON raportu identyczny co do bajtu) |
| Księżycowe laboratorium czasu stacji: holdover miniRAFS względem LTC | Opcjonalny blok [time_lab] scenariusza lunar-time-budget modeluje zegar księżycowej stacji odniesienia (domyślnie klasa miniRAFS, dowolna nazwana klasa albo karta urządzenia dopasowana do podanych punktów stabilności), sterowany do Koordynowanego Czasu Księżycowego, a następnie swobodnie biegnący lub ponownie sterowany co N sekund: krzywa błędu czasu x(t) jako suma kwadratowa potęgowego członu zegara, stałej reszty sterowania (ILLUSTRATIVE), stałej reszty realizacji LTC i opcjonalnego członu szybkości zależnego od wysokości stacji; czas po sterowaniu do 1, 10 i 100 ns (lub podanych progów) wyznaczony bisekcją obok odwrotności w postaci zamkniętej dla dominującego typu szumu oraz człon dominujący przy każdym podanym horyzoncie, wszystko z jednostkami | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wyłącznie spójność wewnętrzna: czas do progu wyznaczony bisekcją jest sprawdzany względem postaci zamkniętej odwrotności dominującego typu szumu zegara, a składnik swobodnie biegnącego zegara względem własnego składnika zegarowego budżetu. Klasy zegarów opierają się na opublikowanych specyfikacjach jednodobowych (ich własne wiersze); tempo LTC nie jest tu wyprowadzane ponownie i zachowuje własny wiersz VALIDATED (Księżycowy czas współrzędnych); residuum sterowania jest ILLUSTRATIVE, residuum realizacji jest przydziałem budżetu i nie uwzględniono modelu termicznego. Cel na poziomie nanosekund opisany w materiałach ICG WG-B Lunar PNT z czerwca 2024 jest przytoczony jako stwierdzenie źródła, a nie przyjęty jako twierdzenie; nic tutaj nie jest stwierdzeniem o jakimkolwiek rzeczywistym zegarze stacji | lunar_time_lab (nad clock_specs, lunar_time_budget, lunar_time) | lunar_time_lab::tests (free_run_clock_term_is_the_budget_clock_term: przy wyłączonym sterowaniu składnik zegarowy jest co do bitu równy składnikowi zegarowemu budżetu dla wszystkich czterech klas; bisection_matches_the_closed_form w granicach 1e-9 względnie dla obu klas szumu; 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: domyślny dokument, tabela i podsumowanie są niezmienione, a blok dodaje tylko własny obiekt i jednostki; 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 od 1 s do 7e5 s, przy czym krzywe PHM i RAFS przecinają się między 7e5 a 8e5 s, co jest przypięte jako ujawniona własność modeli zegarów o pojedynczym typie szumu; every_time_lab_field_has_a_unit; unknown_time_lab_fields_and_clocks_are_refused) |
| Księżycowa geodezyjna VLBI | Opóźnienie VLBI w polu bliskim dla bazy ziemskiej obserwującej księżycową latarnię + pochodne cząstkowe | ReferenceImpl | sprawdzone względem odrębnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie jest autorytatywna zewnętrznie — Plane-wave delta_dor (ta sama baza kodu) w granicy dalekiego pola; pochodne cząstkowe różnicami skończonymi. 0,30 porównanie zewnętrzne, ustalenie (pozostaje MODELLED): względem ANISE 0,10 zbieżnych czasów światła przez DE440 (75 opóźnień w dniu 2024-01-01 na trzech liniach bazowych DSN, wygenerowanych przez xval/anise-lunar-od bez kodu Kshana), żadne opóźnienie nie mieści się w tolerancji 1 ps. Największa rozbieżność to 24 µs, pochodząca z analitycznego środka Księżyca (około 200 km od DE440), pojedynczej chwilowej geometrii bez iteracji czasu światła (3,6 µs) i pominiętego ruchu bieguna; pochodne cząstkowe radiolatarni różnią się do 2.9e-3 względnie wobec 1e-6. Twierdzenie z dokumentacji modułu, że przybliżenia układu odniesienia są poniżej wierności modelu, nie zachodzi na tym poziomie. 0,30 runda 2: ścieżka jądrowa (lunar_vlbi::KernelGeometry) jest sprawdzona względem czasów światła NAIF SPICE we własnym wierszu, Księżycowe geodezyjne VLBI, ścieżka jądrowa; porównanie tej ścieżki z ANISE (75/75 w granicach 1 ps, najgorszy przypadek 0,12 ps, tests/lunar_vlbi_anise_oracle.rs::kernel_delay_matches_the_anise_light_time_difference) jest wyłącznie krzyżową kontrolą ewaluacji jądra, ponieważ rozwiązanie czasu światła w tym zestawie jest własnością tego projektu. Ten wiersz (domyślna ścieżka analityczna) pozostaje MODELLED z powyższym ustaleniem | lunar_vlbi | lunar_vlbi::tests (granica dalekiego pola zgadza się z delta_dor; poprawka bliskiego pola; pochodne cząstkowe różnicami skończonymi); tests/lunar_vlbi_anise_oracle.rs::near_field_delay_disagrees_with_the_anise_light_time_difference |
| Ziemskie GNSS w odległości księżycowej | Odbiór ziemskiego GNSS w odległości księżycowej: warstwa słabego sygnału, którą nazywa Tabela 1 z P7 i dla której silnik nie miał modelu. Dla każdego satelity i każdej epoki oblicza kąt poza osią względem nadiru nadajnika, czy Ziemia zasłania prostą ścieżkę, odległość ukośną i jej stratę w wolnej przestrzeni, zysk nadawczy pod tym kątem, moc odbieraną i gęstość nośnej do szumu; następnie agreguje tylko łącza przekraczające próg śledzenia i przeszukuje pełny obrót konstelacji, tak aby odpowiedzią był ROZKŁAD, a nie jedna migawka. Wynik wyznaczają trzy fakty, a raport podaje każdy z nich: Ziemia widziana z promienia konstelacji zajmuje 13,90 deg, więc SZCZYT wiązki jest geometrycznie niedostępny dla jakiegokolwiek promienia skierowanego ku Księżycowi; pozostaje krawędź głównego listka i listki boczne, reżim, w którym LuGRE działał na Księżycu w 2025; a strata ścieżki L1 wynosi około 208 dB, o jakieś 25 dB więcej niż płaci użytkownik naziemny. MEASURED na dołączonej geometrii klasy GPS z 24 satelitami w 64 epokach jednego okresu orbitalnego: dostępność SYGNAŁU 0,375 z najlepszym łączem 30,93 dB-Hz oraz dostępność ROZWIĄZANIA POZYCJI 0,000 - co najwyżej dwa jednoczesne łącza możliwe do śledzenia, nigdy cztery potrzebne do pozycji. Rozdzielenie tych dwóch dostępności jest sednem, a raport nie pozwala ich pomylić: ziemskie GNSS w odległości księżycowej jest warstwą klasy CZASU, a nie klasy pozycji, a priorytet warstwowej odporności musi przyjmować dostępność rozwiązania pozycji. Uwarunkowanie jest emitowane z tego samego powodu - każdy widoczny satelita leży wewnątrz stożka o szerokości kilku stopni widzianego z Księżyca, więc linie widzenia są z konstrukcji niemal równoległe. Można uruchomić jako rodzaj earth-gnss-lunar Przeformułowane według D7: twierdzenie w odległości księżycowej dotyczy WZGLĘDNEJ gęstości nośnej do szumu między satelitami w jednej epoce, ze zmierzonych dwuwymiarowych wzorców nadawczych (NAVCEN Block IIR/IIR-M), plus widoczności geometrycznej; bezwzględne C/N0 nie jest twierdzone (Parker i in. podają wspólną stratę 7 do 12 dB). |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamości w postaci zamkniętej i spójność wewnętrzna; NIE twierdzi się, że istnieje zewnętrzna wyrocznia. Półkąt limbu jest sprawdzany względem asin(R_earth/r_orbit), a geometria względem niego; strata w wolnej przestrzeni, jądro DOP i propagacja SGP4, które to składa, są każde zewnętrznie sprawdzone we własnych wierszach, a ten wiersz nie pożycza ich statusu. DLACZEGO MODELLED, a to dotyczy wzorca nadawczego: zysk w funkcji kąta jest jednolicie oświetloną apertą kołową, wzorem Airy'ego, podczas gdy prawdziwa antena GPS L1 jest dwunastoelementową anteną helikalną z ukształtowanym płatem głównym o maksimum poza osią, wyrównującym moc na tarczy Ziemi, oraz listkami bocznymi, które nie są wzorem Airy'ego. Opublikowane zmierzone wzorce istnieją i nie są tu dołączone, więc niosą kolejności i rzędy wielkości, a dB pojedynczego satelity nie. PIERWSZA IMPLEMENTACJA TEGO WIERSZA BYŁA BŁĘDNA W SPOSÓB WART ZAPISANIA: wyrażenie Airy'ego jest ważne tylko w półsferze przedniej, jego argument zmienia się jak sin(theta), a przy theta bliskim 180 deg zawija się i zwraca PEŁNY ZYSK W OSI za aperturą - więc dwa najsilniejsze łącza w pierwszym raporcie były satelitami skierowanymi antenami od Księżyca i tylko one przekroczyły próg. Za apertą model stosuje teraz płaski próg listka tylnego, podany jako ograniczenie, a nie zmyślony kształt wzorca. Celowo nieobecne, każde sprawiające, że budżet jest OPTYMISTYCZNY: brak straty jonosferycznej i troposferycznej na promieniach ocierających się o limb, brak polaryzacji, strat na ustawienie i implementację oraz kulista Ziemia bez rozszerzenia refrakcyjnego. Położenie Księżyca jest WEJŚCIEM, a nie wyszukaniem w efemerydach, ponieważ badaną wielkością jest łącze i geometria wiązki. Podniesienie tego wiersza do poziomu sprawdzonego wymaga zmierzonego wzorca nadawczego i punktów normalnych LuGRE, względem których można sprawdzać; żadne z nich nie ma w repozytorium i żadne nie jest tu wymyślone. 0,30 runda 2, ustalenie (pozostaje MODELLED): ścieżka łącza ze zmierzonymi wejściami (rzeczywiste położenia SP3, moc nadawcza na blok, stabelaryzowane wzorce nadawcze i odbiorcze, histereza akwizycji i śledzenia) została sprawdzona względem Montenbruck et al. 2023 Tabela 3 dla GENESIS przy 6000 km (wstępnie zarejestrowane 5b414f0a): średnie dla anteny zenitalnej zgadzają się w 5 z 6 przypadków w granicach jednego dB od czułości z artykułu; średnie dla anteny nadirowej są o 1,0 do 2,4 satelity wyższe niż wydrukowane, prawdopodobnie dlatego, że artykuł użył zależnych od azymutu wzorców listków bocznych GPS, które nie są opublikowane. Wartości dla odległości księżycowej w tym wierszu nadal używają zastępnika Airy'ego. 0,30+ D7, ustalenie (pozostaje MODELLED): przeformułowana wielkość, RÓŻNICA C/N0 między satelitami Block IIR/IIR-M śledzonymi w jednej epoce, przewidywana za pomocą zmierzonych wzorców L1 NAVCEN dla poszczególnych SVN (dwuwymiarowych, w układzie sterowania odchyleniem) względem C/N0 z lotu LuGRE (wstępnie zarejestrowane 768cb62b: 99 % widocznych, RMS par <= 3,0 dB, mediana <= 2,0 dB, co najmniej 50 rekordów i 30 par) ma zbyt mało danych: 26 kwalifikujących się epok przelotu i orbity księżycowej zawiera 15 śledzonych rekordów IIR/IIR-M (w większości śledzone są IIF i III) oraz jedną parę. Wszystkie 15 są przewidywane jako widoczne, a residuum jedynej pary wynosi -0.06 dB; niczego nie twierdzi się | earth_gnss_lunar | earth_gnss_lunar::tests (11 testów biblioteki: półkąt limbu Ziemi względem postaci zamkniętej asin(R/r) z dodatkowym potwierdzeniem, że KAŻDE nieprzesłonięte łącze leży poza tym stożkiem, aby test przesłonięcia i kąt limbu nie mogły się rozchodzić; predykat przesłonięcia sprawdzony po stronie bliskiej, po stronie dalekiej oraz w przypadku, gdy ciało leży ZA nadajnikiem; strata na drodze ograniczona do wiarygodnego pasma zasięgu księżycowego na każdym łączu; zbiór śledzalny wykazany jako podzbiór zbioru widocznego geometrycznie i rozłączny ze zbiorem przesłoniętym; monotoniczność w obu kierunkach - większy zysk odbiorczy nigdy nie zmniejsza liczby, bardziej rygorystyczny próg nigdy jej nie zwiększa; żadnemu łączu nie przypisano więcej niż zysku w osi; odbiornik wewnątrz Ziemi odrzucony; przegląd potwierdzony jako faktycznie ZMIENNY w funkcji epoki; oraz dostępność sygnału i dostępność rozwiązania potwierdzone jako różne, poprawnie uporządkowane i spójne z wierszami dla poszczególnych epok); tests/earth_gnss_measured_montenbruck_oracle.rs::finding_genesis_nadir_counts_exceed_the_paper (przypięte); tests/lugre_relative_cn0_visibility.rs::too_few_iir_records_at_lunar_distance_for_the_relative_cn0_bar (przypięte ustalenie) |
| Wyznaczanie orbity księżycowej: ziemskie GNSS a naziemne pomiary radiometryczne | Wyznaczanie orbity w prawie prostoliniowej orbicie halo (lub eliptycznej orbicie zamrożonej) z dwóch niezależnych rodzajów danych: pseudoodległości ziemskiego GNSS odbieranych na pokładzie (reguła łącza z wiersza ziemskie GNSS w odległości księżycowej, plus okultacja przez Księżyc) oraz naziemnej dwukierunkowej odległości i prędkości zmiany odległości z trzech stacji Deep Space Network. Każde jest jednokrokową metodą najmniejszych kwadratów wsadowych wokół orbity odniesienia z jej formalną kowariancją; ziarnowe Monte Carlo różnicy między dwiema estymatami sprawdza, czy obie kowariancje ją wyjaśniają (q = d' (P_G + P_R)^-1 d, chi-kwadrat z sześcioma stopniami swobody, gdy modele się zgadzają) oraz co niemodelowane przyspieszenie robi ze statystyką. | ReferenceImpl | sprawdzone względem odrębnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie jest autorytatywna zewnętrznie — Niezależny program scipy/numpy całkuje te same równania wariacyjne (próg O1). Nic nie jest porównywane z pomiarem orbity księżycowej. Wyrocznia sprawdza numerykę podanych wzorów, a nie fizykę, więc wiersz pozostaje MODELLED. Ograniczony model trzech ciał: bez Słońca, bez harmonik księżycowych, oś obrotu Ziemi wzdłuż normalnej do orbity, wejścia odbiornika i stacji ILLUSTRATIVE. | lunar_infra::{orbit, gnss, od} | tests/lunar_infra_od_consistency.rs (próg O1: macierz przejścia stanu łańcuchowo przez trzy dni i przez jeden okres jest równa scipy DOP853 z dokładnością względną 1e-6; próg C1: średnie q i ułamek w 95 %; próg C2: próbka względem śladu formalnego każdego estymatora; próg C3, NOT MET i przypięty: przy 3e-10 m/s2 niemodelowanego przyspieszenia przekroczenie w 95 % wynosi 0,0525, a nie co najmniej 0,5 - oszacowanie pokładowe jest znane tylko z dokładnością do setek metrów, więc około dziesięciu metrów przemieszczenia ukrywa się w jego kowariancji); lunar_infra::orbit::tests, lunar_infra::gnss::tests, lunar_infra::od::tests, lunar_infra::la::tests |
| Rozwiązywanie niejednoznaczności fazy nośnej na Księżycu: powierzchnia i orbiter | Faza nośnej i kod ziemskiego GNSS z pojedynczą różnicą między odbiornikami na księżycowej stacji powierzchniowej i orbiterze, z profilowanym (wyeliminowanym) różnicowym zegarem na epokę, jedną niejednoznacznością na ciągły przelot i najdłuższym przelotem jako gauge. Zmiennoprzecinkowa kowariancja niejednoznaczności jest dopełnieniem Schura; LAMBDA rozwiązuje liczby całkowite, wskaźnik bootstrapowy jest podawany obok ziarnowego wskaźnika sukcesu całkowitoliczbowych najmniejszych kwadratów Monte Carlo oraz zmiennoprzecinkowych i ustalonych sigm pozycji. Podano tak, jak stwierdzono: przy zarejestrowanych 12 dBi problem podwójnych różnic nie daje się sformułować (poprawka 1 przeniosła wartość domyślną na 25 dBi po obejrzeniu wyłącznie liczników dostępności), a przy 25 dBi ustalenie całkowitoliczbowe NIE zostaje osiągnięte - poza zasięgiem (co najwyżej kilka procent), choć rozwiązanie zmiennoprzecinkowe poprawia się wraz z łukiem. | ReferenceImpl | sprawdzone względem odrębnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie jest autorytatywna zewnętrznie — Niezależne rozwiązanie numpy tych samych równań normalnych z wyeksportowanych wierszy (Q3) oraz wyczerpujące wyliczenie liczb całkowitych (Q4). Nie porównuje się z żadnym pomiarem fazy nośnej GNSS ani księżycowej. MODELLED. | lunar_infra::phase; lambda | tests/lunar_infra_carrier_phase.rs (próg Q1: sukces Monte Carlo co najmniej granica bootstrapowa minus trzy błędy standardowe; Q2: brak spadku z długością łuku poza trzy błędy standardowe; Q4: LAMBDA równa się wyczerpującemu wyliczeniu dla 200 losowań o wymiarze do pięciu; Q3: projekt zmiennoprzecinkowy jest równy niezależnemu rozwiązaniu numpy z dokładnością do 1e-9 dla kowariancji niejednoznaczności i położenia, a wskaźnik bootstrapowy jest NOT MET przy 1e-9, przypięty: różni się o względne 1.7e-6, ponieważ normalna dystrybuanta LAMBDA jest przybliżeniem Abramowitza i Steguna) |
| Współestymacja układu księżycowego: stacje powierzchniowe i orbitery | Informacja Fishera siedmioparametrowego datum układu księżycowego z ziemskiego dalmierzenia laserowego do pięciu reflektorów samych oraz z dodanymi odległościami orbiter-stacja powierzchniowa: macierz informacji, rząd, sigmy Craméra-Rao, miara degeneracji modułu identyfikowalności księżycowej i ziarnowe losowe zbiory stacji. Orbita jest traktowana jako znana w osiach księżycowych (jej błąd niesie sigma odległości orbitera). | ReferenceImpl | sprawdzone względem odrębnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie jest autorytatywna zewnętrznie — Niezależna różnica skończona numpy modelu prostego (F2). Nic nie jest porównywane z rzeczywistymi rozwiązaniami układu księżycowego. Czynnik jest warunkowy względem założonej znanej orbity i sigmy zasięgu 1 m. MODELLED. | lunar_infra::frame; lunar_datum; lunar_identifiability; lunar_llr_geometry | tests/lunar_infra_studies_3_5.rs (próg F1: ślad CRLB nie rośnie, a najmniejsza wartość własna nie maleje wraz z łączami orbitera, w przykładzie i w 20 losowych zbiorach z ziarnem; próg F2: pochodne zasięgu są równe niezależnej różnicy skończonej numpy longdouble modelu prostego Rodriguesa na 50 geometriach; próg F3: najmniejsza wartość własna rośnie co najmniej 2.0x, znaleziono około 111x) |
| Precyzja powiązania układów przez przestrzeń: współlokowane GNSS, VLBI i dalmierzenie laserowe | Precyzja Craméra-Rao międzytechnikowych przesunięć translacji, skali i obrotu między układami GNSS, VLBI i dalmierzenia laserowego, gdy jeden statek kosmiczny niesie wszystkie trzy, z pozycją statku wyeliminowaną w każdej epoce i dziewięcioma uciążliwymi parametrami powiązań lokalnych niosącymi a priori, przeglądane po dokładności powiązania lokalnego. Kowariancje drogą pierwiastka kwadratowego (równania normalne gubią cyfry, gdy techniki są niemal doskonałe). | ReferenceImpl | sprawdzone względem odrębnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie jest autorytatywna zewnętrznie — Niezależny układ numpy z eliminacją niewiadomych położenia za pomocą jawnych dopełnień Schura (T3). Nie porównuje się z danymi z GRASP, Genesis ani z innych misji. MODELLED. | lunar_infra::tie; fim::crlb_srif | tests/lunar_infra_studies_3_5.rs (próg T1: sigmy translacji nie maleją, gdy lokalne wiązanie się rozluźnia; T2: przy sigmach technik przeskalowanych o 1e-6 sigma translacji każdej pary mieści się w 1 % od sqrt(2) razy sigma lokalnego wiązania, znalezione w granicach 3e-7; T3: macierz informacyjna jest równa niezależnemu złożeniu numpy z dokładnością do 1e-9). Pierwszy przebieg T2 z odwracaniem równań normalnych nie spełnił progu (1,3 % przy wiązaniu 0,1 m, wartości poniżej progu dolnego przy 1 m); przyczyna była numeryczna, a kowariancję przeniesiono na drogę pierwiastka kwadratowego, zanim próg został ponownie oceniony. |
| Wrażliwość księżycowych liczb Love'a i libracji | Informacja Fishera h2, k2, l2 i fizycznych amplitud libracji z dalmierzenia laserowego (promieniowe i poziome przemieszczenie pływowe, obrót reflektora), śledzenia orbitera (przyspieszenie k2 stopnia 2 scałkowane wzdłuż linii widzenia, z usuniętym trendem), grawimetru powierzchniowego (współczynnik grawimetryczny 1 + h2 - 1,5 k2) i zegara powierzchniowego (względna szybkość (1 + k2 - h2) W2/c2, powiązana ze stałymi czasu księżycowego). Wartości nominalne h2 i l2 są punktami linearyzacji; badanie mówi, co jest wrażliwe na co, a nie jakie są te liczby. | ReferenceImpl | sprawdzone względem odrębnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie jest autorytatywna zewnętrznie — Niezależne złożenie numpy różnicami skończonymi (G2) i ewaluacja w postaci zamkniętej (G4). Czułość k2 rodziny orbitera jest wartością z górnego krańca (stan orbity pochłania tu tylko stałą i trend). Nie porównuje się z żadnym pomiarem pływu ani libracji Księżyca; k2 jest przytoczone za Lemoine et al. 2014 jako nominalne. MODELLED. | lunar_infra::geodesy; lunar_od::degree2_tide_accel; lunar_time | tests/lunar_infra_studies_3_5.rs (próg G1: pochodne analityczne są równe różnicy skończonej centralnej każdego modelu prostego z dokładnością do 1e-8; G2: informacja 5x5 jest równa niezależnemu złożeniu numpy z dokładnością do 1e-6; G4: amplituda pływu zegara oraz jej czułości na k2 i h2 są równe niezależnej ewaluacji z dokładnością do 1e-9; próg G3 NOT MET w połowie dotyczącej śladu, przypięty: dodanie rodziny nigdy nie obniża najmniejszej wartości własnej (28 z 28), ale ślad pseudoodwrotności wzrósł w 12 z 28 dodań, ponieważ dodana rodzina podniosła rząd) |
| Wzmocnienie DOP latarniami powierzchni Księżyca | Rozmycie dokładności ze wzmocnieniem latarniami dla użytkownika na powierzchni Księżyca: wiersze linii widzenia widocznych satelitów i wiersze dalmierzenia widocznych latarni powierzchniowych są łączone w jedną macierz projektu i oceniane przez wspólne jądro DOP, a uzyskane DOP jest odwzorowywane na zrealizowaną dokładność 1-sigma W METRACH przez błąd ekwiwalentu użytkownika dla odległości każdej latarni, złożony jako suma kwadratowa członów synchronizacji zegara, wielodrogowości i pomiaru. Widoczność latarni to dwuwysokościowy horyzont geometryczny Księżyca bez atmosfery, który nie ma rozszerzenia refrakcyjnego i dlatego jest dokładny, a nie przybliżony. Można uruchomić jako rodzaj scenariusza lunar-beacon, który podaje same satelity, satelity plus latarnie oraz większą konstelację jako konkurencyjną drogę do tej samej geometrii. MEASURED na dołączonej geometrii wzorcowej (użytkownik na -80 deg, trzy pomierzone latarnie, ilustracyjny LCNS z sześcioma satelitami przy t=0, maska 5 deg): 5 widocznych satelitów daje PDOP 9,6941 i 3-D 1-sigma 11,222 m; dodanie latarni, które faktycznie przekraczają horyzont, daje PDOP 4,1160 i 4,765 m, czynnik 2,355; usługa z 24 satelitami daje natomiast PDOP 2,4226 i 2,804 m, czynnik 4,002. Raport drukuje liczbę WIDOCZNYCH latarni, a nie skonfigurowaną, a na tej geometrii tylko JEDNA z trzech latarni przekracza horyzont: dwa boczne punkty leżą około 333 km od użytkownika wobec horyzontu 86 km dla anteny 2 m, więc czytelnik nigdy nie musi zakładać, że wszystkie trzy się przyczyniły |
ReferenceImpl | sprawdzone względem odrębnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie jest autorytatywna zewnętrznie — Arytmetyka DOP to jądro crate::orbit::dop, osobno zewnętrznie sprawdzone względem gnss_lib_py w tests/dop_reference.rs; ten wiersz nie pożycza ponownie statusu tamtego wiersza. Horyzont widoczności radiolatarni to postać zamknięta L01, a sigma = DOP x sigma_URE jest standardową zależnością GNSS (Kaplan i Hegarty, Understanding GPS/GNSS, sekcja 7). W obrębie tego wiersza sama augmentacja jest sprawdzana względem niezależnej ścieżki DOP w repozytorium i przypięta do zatwierdzonego wzorca złotego. DLACZEGO MODELLED: projekt konstelacji, rozmieszczenie radiolatarni, wysokości anten i wszystkie trzy wielkości budżetu błędów są wejściami ilustracyjnymi, a nie wdrożonym pomiarem terenowym ani zmierzonym łączem, więc podawane metry są własnością wybranego scenariusza, a nie jakiejkolwiek wdrożonej usługi. UWAGA O POCHODZENIU: ta możliwość była reklamowana w README i sprawdzana dwoma testami walidacyjnymi, a jednak nie miała ŻADNEGO wiersza macierzy ani rodzaju scenariusza, więc nie dało się do niej dotrzeć z przebiegu w ogóle. Była deklarowana w prozie, nieobecna w rejestrze i nieosiągalna w silniku jednocześnie. Wiersz i rodzaj dodano razem. 0,30 runda 2 (wstępnie zarejestrowane db0eb9ec), zablokowane (pozostaje MODELLED): widoczność ANISE 0.10.6 i numpy DOP na geometrii wiersza zgadzają się (zbiory widoczne dokładnie, w tym 72 przypadków blisko horyzontu i 48 blisko maski; DOP w granicach 7.2e-13), ale podawane metry to DOP razy ilustracyjny błąd dalmierzenia 1,158 m (pierwiastek z sumy kwadratów) bez wyroczni; zawężenie zakresu, które by je wykluczyło, czeka na decyzję właściciela | lunar_beacon | lunar_beacon::tests (widoczność horyzontu względem postaci zamkniętej L01; DOP z augmentacją radiolatarnią względem samego DOP; pierwiastek z sumy kwadratów budżetu błędów; zależność DOP-metry); tests/validate_p2_beacon_before_after_table.rs (cała tabela przed/po przypięta do zatwierdzonego wzorca złotego z dokładnością względną 1e-9); tests/validate_p2_beacon_before_after_independent_dop.rs (ta sama geometria przez NIEZALEŻNĄ ścieżkę DOP, więc augmentacja nie jest sprawdzana względem jądra, które ją wytworzyło); tests/validate_lunar_beacon_anise_visibility_dop.rs::beacon_visibility_and_augmented_dop_match_anise_and_numpy |
| Poziom ochrony trybu wspólnego i całkowita obwiednia integralności | cmpl_horizontal ogranicza poziomy błąd położenia k-sigma wnoszony przez ślepą klasę trybu wspólnego, tworząc blind_position_covariance = SCovS^T i rzutując ją na ENU; integrity_envelope zgłasza hpl_total = hpl_araim + cmpl. Rozróżnienie, któremu ta para służy: test RESZTKOWY RAIM/ARAIM jest dowodliwie ślepy na błędy w range(G), ale POZIOM OCHRONY ARAIM nie jest - jego składnik bezawaryjny ogranicza je już do poziomu URA dostawcy plus nominalnego obciążenia. CMPL jest zatem tylko NADWYŻKĄ między dostawcami, której URA/ISM pojedynczego dostawcy nie ogranicza z góry, a suma jest zachowawczym ograniczeniem z nierówności trójkąta, a nie RSS, ważnym tylko tam, gdzie ta nadwyżka nie mieści się już w URA. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Analityczna algebra rzutników sprawdzona względem samej siebie: kowariancja ograniczona do range(G) musi dawać dodatni CMPL, kowariancja ograniczona do przestrzeni parzystości musi dawać w przybliżeniu zero, a obwiednia musi sumować dwa wkłady ortogonalne w przestrzeni pomiarowej. Kowariancja trybu wspólnego, geometria konstelacji i k są reprezentatywnymi wejściami modelowanymi, NIE certyfikowanym budżetem, i nie twierdzi się, że ograniczenie z nierówności trójkąta jest ścisłe. UWAGA O POCHODZENIU: cmpl_horizontal, blind_position_covariance i integrity_envelope są publiczne i dostarczane, a ich testy jednostkowe były już przytaczane przez wiersz o ślepocie trybu wspólnego, ale samo TWIERDZENIE O OBWIEDNI nie miało wiersza - więc jedno zastrzeżenie, które utrzymuje je w rzetelności, że suma jest ograniczeniem z nierówności trójkąta, a nie RSS, nie było podane nigdzie w rejestrze. Wiersz rejestruje twierdzenie i zastrzeżenie razem. | 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) |
| Obserwowalność bezwzględnej pozycji stacji księżycowych (defekt układu odniesienia) | Obserwowalność wspólnego rozwiązania księżycowego na podstawie informacji Fishera: bez ziemskich linii bazowych bezwzględny układ odniesienia leży w przestrzeni zerowej HᵀWH (pozycja stacji jest nieobserwowalna); ≥3 linii bazowych przywraca pełny rząd i ogranicza błąd Cramér–Rao stacji, który estymator osiąga | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Analityczna struktura defektu datum — nieobserwowalny tryb bezwzględnego układu odniesienia leży w przestrzeni zerowej informacji Fishera (postać zamknięta), próg rzędu zgadza się z opublikowanym uzasadnieniem projektu z 3 stacjami, a estymator osiąga wynikające z tego CRLB w Monte Carlo. Sama geometria księżycowa jest reprezentatywną siecią (nie lotną efemerydą), więc wiersz pozostaje MODELLED; leżący pod spodem silnik FIM/CRLB jest osobno sprawdzany względem postaci zamkniętych Kaya (1993). 0,30 runda 2 (wstępnie zarejestrowane fab02df9), zablokowane (pozostaje MODELLED): NumPy/SciPy przeliczają rząd i defekt przy podanym progu 1e-9, udział osi stacji w przestrzeni zerowej (w granicach 8.4e-10) oraz CRLB stacji (w granicach 1.2e-10) na 17 zatwierdzonych konfiguracjach wygenerowanych przez Kshana (P2). Nie awansowano: twierdzenie, że estymator osiąga granicę (wydajność Monte Carlo około 0,98), nie ma wyroczni, a zawężenie zakresu, które pozostawiłoby je jako MODELLED, czeka na decyzję właściciela | lunar_combination (lunar_observability) + fim | lunar_combination::tests (niedobór rzędu bez linii bazowych z Ziemią; trzy linie bazowe przywracają pełny rząd — próg 3 stacji pochodzi z rzędu informacji, a nie z błędu rozwiązania; CRLB stacji osiągane przez estymator z wydajnością 0,98; CRLB zacieśnia się monotonicznie wraz z liniami bazowymi); tests/lunar_observability_numpy_oracle.rs::lunar_observability_matches_numpy_on_the_committed_jacobians |
| Generowanie kodów rozpraszających LunaNet AFS (LSIS V1.0) | Kody Augmented Forward Signal z LSIS V1.0 (29 stycznia 2025): 10230-chipowy kod podstawowy AFS-Q wygenerowany z konstrukcji pilota L1C według IS-GPS-800 z indeksami IS-GPS-800J (te same 210 przypisań, które drukuje Dodatek D do LSIS), 2046-chipowe kody Golda AFS-I wygenerowane z g1 = x^11 + x^2 + 1 i g2 = x^11 + x^8 + x^5 + x^2 + 1 z opóźnieniem G2 każdego PRN odzyskanym z pliku Załącznika 3 do normy, cztery kody wtórne, 1500-chipowe kody trzeciorzędne, tymczasowe przypisanie węzłów z Tabeli 11 oraz warstwowy kod pilota. Zawartość LSIS jest odczytywana w czasie działania z lokalnej pamięci podręcznej zweryfikowanej SHA-256, wypełnianej z pliku PDF hostowanego przez NASA, i nigdy nie jest redystrybuowana | ExternalDataset | podzastrzeżenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Wzorzec: wartości, które LSIS V1.0 drukuje do walidacji (Tabele C-1 do C-5, D-1 do D-6, E-1 do E-6) oraz jego elektroniczne pliki Aneksu 3, przy kryterium zerowej liczby niezgodności ustalonym przed porównaniem. Kryterium zostaje chybione o jedną drukowaną komórkę, która jest wewnętrznie niespójna z własnym plikiem Aneksu 3 normy, więc wiersz pozostaje MODELLED; przygotowano szkic noty o errata. Te same chipy są też równe chipom LANS-AFS-SIM (wiersz „Renderowanie pasma podstawowego LunaNet AFS względem niezależnego generatora, przy danym stanie jego kanału”) | lunar_afs::codes, lunar_afs::lsis, lunar_afs::params (indeksy IS-GPS-800J) | lunar_afs::codes::tests (rejestry o maksymalnej długości, równowaga Legendre'a, rundka opóźnienia G2, złożenie poziomów); tests/lunar_afs_codes_lsis_reference.rs::afs_codes_finding_one_misprinted_table_cell (bez pamięci podręcznej LSIS: cztery przytoczone liczby przypinają ustalenie; z nią: 2 937 232 chipów i bitów względem plików Aneksu 3 LSIS, drukowane pierwsze/ostatnie 24 chipy, Tabele Legendre'a D-1 i E-1 oraz inicjalizacje G2 dają dokładnie jedną różniącą się pozycję, komórkę „ostatnie 24 chipy” Tabeli E-5 dla PRN 147, która powiela komórkę PRN 151, podczas gdy plik Aneksu 3 zgadza się z generatorem); ścisły wstępnie zarejestrowany test afs_codes_match_lsis_v1_tables_and_annex3_bit_exact jest ignorowany z tą luką |
| Domknięta pętlą dekodowalność LunaNet AFS przez niezależny odbiornik (LSIS V1.0) | Nagranie Kshana AFS pozyskane, śledzone i zdekodowane przez niezależny programowy odbiornik i porównane z etykietami prawdy samego nagrania. Dowodzi to wyłącznie zgodności z normą (conformance) i spójności etykiet; nie jest to twierdzenie o fizyce kanału, propagacji, mocy odbieranej ani budżetach łączy, których wartości w nagraniu są wybranymi danymi wejściowymi | ExternalDataset | podzastrzeżenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Biblioteka: PocketSDR-AFS (T. Ebinuma na podstawie PocketSDR T. Takasu 0,13, BSD-2-Clause, commit 5b23809f30d68518b7fad7a564fd0fac57cc497d, wersja S-band, kopia z poziomem logowania tylko do druku), przy kryteriach ustalonych przed każdym przebiegiem. Trzecie wstępnie zarejestrowane porównanie spełnia w pełni swoje progi dekodowania i śledzenia C1 i C2, ale nie swój warunek strażniczy G0 w brzmieniu zapisanym (dwa przebiegi niezmodyfikowanego odbiornika różnią się w tych samych czterech rekordach akwizycji), a drugie chybiło o 5 naruszeń, więc wiersz pozostaje MODELLED. LANS-AFS-SIM i PocketSDR-AFS mają wspólnego autora i liczą się jako jedna niezależna implementacja; kontrole drukowanych wektorów w wierszu kodowania ramek chronią przed wspólnym błędnym odczytaniem | lunar_afs::waveform (nagranie i etykiety prawdy), xval/lunar-afs/run_pocketsdr.sh | tests/lunar_afs_decodability_pocketsdr_v3_oracle.rs::third_run_finding_c1_c2_hold_g0_is_receiver_nondeterminism (trzecia wstępna rejestracja: 2 węzły, 4 kanały śledzone, najgorszy błąd Dopplera 0,57 Hz, najgorszy błąd przesunięcia kodu 0,008 chip, wszystkie 6 ramek zdekodowanych z właściwym TOI przez przejście 99 -> 0 i zgodną podramką 2; G0 niespełnione w brzmieniu zapisanym, wynika to z własnej zmienności odbiornika między przebiegami w jego rekordach akwizycji); tests/lunar_afs_decodability_pocketsdr_4bit_oracle.rs::decodability_finding_five_violations (druga: 5 naruszeń); tests/lunar_afs_decodability_pocketsdr_oracle.rs::first_run_finding_no_acquisition_outside_the_receivers_4_bit_range (pierwsza: nieważna); ścisłe testy z tych trzech plików są ignorowane z ich lukami |
| Zgodność z normą (conformance) generatorów GPS L1 C/A względem siebie | Kody rozpraszające GPS L1 C/A (sdr::CaCode) i podramki LNAV 1-3 (gps_lnav: kwantyzacja pól według IS-GPS-200 z wartością pi z specyfikacji, upakowanie w kodzie uzupełnieniowym do dwóch, słowa TLM i HOW, parzystość z Tabeli 20-XIV z inwersją D29*/D30*, bity rozwiązujące parzystość w słowach 2 i 10) porównane bit po bicie z gps-sdr-sim na jego dołączonym brdc0010.22n (32 satelity) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — gps-sdr-sim (MIT, commit 28ca29a6, uruchamiany jako osobny program przez zatwierdzony zestaw testowy), wstępnie zarejestrowane f88f2969 z progiem zgodności co do bitu dla (A) chipów C/A, (B) każdego obliczonego pola LNAV, (C) każdego bitu parzystości. USTALENIE: (A) 0 z 32 736 chipów się różni, (C) parzystość 0 z 1 920 słów się różni, (B) 230 z 1 152 obliczonych pól różni się o jedną jednostkę: eph2sbf w gps-sdr-sim obcina w kierunku zera rzutowaniami C tam, gdzie nadawana liczba całkowita wymaga zaokrąglenia (każda różniąca się wartość leży w granicach 0,01 jednostki od zaokrąglonej liczby całkowitej Kshana). Pozostaje MODELLED: zarejestrowany próg był koniunkcją | gps_lnav, sdr | tests/gps_l1ca_gpssdrsim_cross_generator.rs::gps_sdr_sim_truncates_where_the_broadcast_integer_needs_rounding (przypięte ustalenie); tests/gps_l1ca_gpssdrsim_cross_generator.rs::ca_codes_lnav_fields_and_parity_match_gps_sdr_sim_bit_exactly (ścisły, ignorowany z tą luką); gps_lnav::tests |
| Pozyskiwanie GNSS IQ na niezależnie wygenerowanych próbkach I/Q | iq::acq::acquire (równoległe przeszukiwanie fazy kodu metodą FFT z progiem Marcum-Q dla detektora kwadratowego) z repliką GpsL1Ca, na 20 ms własnego 8-bitowego wyjścia I/Q gps-sdr-sim zdekodowanego dekoderem próbek iq::io (ci8, 2,6 MHz, 11 satelitów, bez szumu): przeszukano każdy PRN od 1 do 32 w dwóch oknach 10 ms, a wynik porównano z fazą kodu i Dopplerem zmodulowanymi przez gps-sdr-sim | ExternalDataset | podzastrzeżenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — próbki I/Q gps-sdr-sim (MIT, commit 28ca29a6) i jego własny stan kanału, wstępnie zarejestrowane 7777da53: (B1) każdy symulowany PRN pozyskany, (B2) żaden inny PRN nie pozyskany, (B3) faza kodu w granicach 0,5 chip, (B4) Doppler w granicach 125 Hz. USTALENIE: B1, B3 i B4 zachodzą w obu oknach (najgorzej 0,195 chip, 72 Hz), ale B2 zawodzi: wszystkie 21 PRN, których gps-sdr-sim nie symulował, również przekraczają próg (statystyka 151 do 206 wobec 79,5; symulowane PRN 1 300 i wyżej). Próg jest ustawiony dla szumu gaussowskiego o zmierzonej mocy próbek; gps-sdr-sim nie dodaje szumu, więc komórki nieobecnego PRN zawierają korelację wzajemną pozostałych satelitów. Pozostaje MODELLED: zarejestrowany próg był koniunkcją | 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 (przypięte ustalenie); tests/iq_gpssdrsim_cross_generator.rs::acquisition_finds_gps_sdr_sim_satellites_in_its_samples (ścisły, ignorowany z tą luką) |
| Monitory IQ oceniane w kampaniach odtwarzania laboratoryjnego: detekcja, niewykryte zdarzenia, fałszywe alarmy i zamknięte wzory na fałszywe alarmy | iq::campaign::detect i runner kampanii: opcjonalna tabela [monitors] uruchamia monitory IQ na każdej komórce w jednym przebiegu runnera. Monitory mocy i widma widzą próbki po każdym łańcuchu toru wejściowego; monitory C/N0, SQM i zaczepienia widzą aktualizacje pętli każdego śledzonego kanału. Każdy alarm jest oceniany względem podanych zdarzeń: wykryty lub niewykryty dla (zdarzenie, rodzaj alarmu, kanał), czas do detekcji oraz fałszywe alarmy poza zdarzeniami w stosunku do ich ekspozycji. Dla każdego testu podano zamknięty wzór na fałszywy alarm: moc na blok (dokładny ogon rozkładu Gamma), nadmiar widmowy na blok (przybliżenie), kurtoza (jednostronny rozkład Gaussa), impulsy (górne ograniczenie dwumianowe), SQM na uśrednioną aktualizację (2Q(k) = Q(1/2, k^2/2), nowe) oraz ARL0 CUSUM dla C/N0 (Siegmund). Bez tabeli komórki, klucze i skróty pozostają bez zmian. Nie jest syntezowany żaden przebieg zakłócenia | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Własne postacie zamknięte monitorów na własnych scenach GPS L1 C/A Kshana (szum i sygnały prawidłowe; zdarzenia tłumienia własnych sygnałów satelitów), względem progów zarejestrowanych z góry w docs/design/MONITORS-IN-CAMPAIGN.md (382ab2f4). USTALENIE: M1, M2 i M4 spełnione. M3 spełnione co do detekcji (18 z 18 tłumień, P_md 0) i NOT MET co do warunku czasowego: mediana czasu detekcji wynosi 1,001 s wobec 2 x ARL1 próbek = 0,433 s. CUSUM widzi jedną estymatę na okno 1 s, więc ograniczenie liczby próbek jest mniejsze niż jedna próbka. Wyłącznie spójność wewnętrzna: nie sprawdzono żadnego rzeczywistego odbiornika ani zarejestrowanych zakłóceń | 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 z 5900 bloków wobec 99 % przedziału dwumianowego [40, 80] dla P_fa 0,01), m2_sqm_false_alarm_fraction_is_within_a_factor_of_2_of_2q_k (delta 0,0160, stosunek 0,0131 wobec 0,01), m4_cn0_false_alarms_stay_within_the_poisson_bound_of_arl0 (0 wobec 0), the_monitors_table_parses_and_validates; m3_every_attenuation_is_detected_within_twice_the_arl1 (ścisły, ignorowany z tą luką); testy iq::campaign::detect; testy iq::monitor::stats (gaussian_two_sided_tail_matches_known_values); tests/iq_campaign.rs (przypięte skróty są niezmienione bez tabeli) |
| Krzywa ROC detekcji monitorów IQ z ocenionej kampanii odtwarzania laboratoryjnego | iq::campaign::detect (windows, roc) i iq::campaign::report::rocs: każda komórka kampanii z monitorami przechowuje, dla każdego rodzaju alarmu i kanału, maksimum własnej statystyki testowej monitora w każdym podanym oknie zdarzenia (pozytywne) oraz w kafelkowanych oknach roc_window_s poza zdarzeniami (negatywne). Statystykami są odchylenie mocy bloku, nadmiar PSD, kurtoza z, |z| uśrednionej metryki SQM oraz CUSUM dla C/N0. Raport łączy je według rodzaju w empiryczną krzywą ROC na poziomie okien z jej AUC i punktem pracy przy skonfigurowanym progu, zapisywaną jako roc.json (kshana.campaign-roc/1) oraz sekcję Detection ROC w report.html. Kampania bez monitorów nie zapisuje żadnego z nich | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Syntetyczne kampanie z własnych scen GPS L1 C/A Kshana (tłumienia własnych sygnałów satelitów), względem progów zarejestrowanych z góry w docs/design/DETECTION-ROC.md (b47e358d). USTALENIE: R2 spełnione (poziom przypadku, gdy nie ma czego wykrywać). R1 NOT MET: cn0_drop AUC 0,7855 wobec 0,95, ponieważ każde okno ujemne po zdarzeniu dziedziczy po detekcji zanik CUSUM (wszystkie 18 ujemne po zdarzeniu osiągają 81 lub więcej; wszystkie 18 sprzed zdarzenia pozostają na 0). Wyłącznie spójność wewnętrzna: nie sprawdzono żadnego rzeczywistego odbiornika ani zarejestrowanych zakłóceń | 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 dla podanych zdarzeń, które niczego nie tłumią); r1_the_cn0_drop_roc_separates_6_db_attenuations (ścisły, ignorowany z tą luką); testy iq::campaign::detect (the_roc_of_separated_and_of_identical_samples, windows_tile_the_time_outside_the_events) |
| Kalibracja modeli C/N0 i zaczepienia otwartego odbiornika do wyników kampanii IQ, z podanym błędem predykcji | iq::labfit (campaign, cn0, iqfit, iqreport) i [input] campaign na kshana iq labfit, Python kshana.iq_labfit oraz narzędzie MCP labfit (foldery kampanii wyłącznie w jego katalogu roboczym): odczytuje folder wyjściowy kshana iq campaign według jego DIGEST i grupuje ocenione komórki w jednostki dopasowania (sygnał x projekt pętli x łańcuch toru wejściowego x typ zagłuszacza, nigdy niełączone). Dla każdej jednostki dopasowuje zmierzone C/N0 do podanego J/S w postaci separacji widmowej. Q_eff nie jest identyfikowalne z danych C/N0 bez niezależnego pomiaru mocy zagłuszacza i sygnału, dlatego Q jest podawane, nigdy dopasowywane (tabela typów, q zdarzenia, a dla nieznanego typu najbardziej szkodliwa podana wartość, cw Q = 1). Dopasowywanym parametrem jest identyfikowalne przesunięcie delta_eff = delta - 10 log10 Q, a strażnik korelacji zgłasza degenerację. Przedziały C/N0 zaczepione poniżej 90 % są cenzurowane i wymienione. Próg J/S jest podany bezpośrednio i wzorem zamkniętym; model pętli śledzącej i model empiryczny zaczepienia są sprzężone przez model C/N0, z czasami zaniku i ponownego zaczepienia. Bootstrap klastrowy z ziarnem po nagraniach (1000 replikacji) daje przedziały percentylowe; 90 % przedziały predykcji pochodzą z losowań reszt; zbiory z pominięciem jednego nagrania są podzielone na interpolację i ekstrapolację; wstępnie zarejestrowana tabela [validation] jest haszowana, a każdy próg oceniany jako PASS/FAIL. Raport kshana.labfit-iq/1 jako JSON, CSV i generowany Markdown, z blokiem jednostek. Wyłącznie syntetyczne (bez nagrania podmiotu trzeciego, bez przebiegu zagłuszacza). Ścieżka labfit z logów odbiornika pozostaje bez zmian |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Syntetyczne odzyskiwanie parametrów na własnych scenach GPS L1 C/A Kshana ze znanym profilem C/N0 narzuconym według wzoru z sekcji 3,1, śledzone i oceniane przez kshana iq campaign, względem progów wstępnie zarejestrowanych w docs/design/LABFIT-FROM-IQ.md (sekcja 5,1, zmieniona 2026-10-12 w b7117bf, sekcja 13). Estymator C/N0 kampanii (M2M4) został ustalony w 5b13e3c2, wypchnięty przed pierwszą oceną progu (zatwierdzony razem z kodem dopasowania, a nie osobno), po jednym ujawnionym diagnostycznym przebiegu śledzenia. USTALENIE dla kampanii progowej z 18 zdarzeniami: (c) PASS; (a') NOT MET, błąd delta_eff -1.097 dB wobec 0,5 dB (nadal -0.89 dB w przedziałach przy 38 dB-Hz i wyżej); (b') NOT MET, 0 z 50 kampanii pokrywa prawdę (błąd -1.189 +/- 0,093 dB, przedział około 0,3 dB); (d) NOT MET, postać zamknięta 2,20 dB poniżej bezpośredniego J/S przy utracie, około dopasowanego czasu zatrzymania spadku razy tempo rampy (2,09 dB); pierwotne klauzule Q w (a) i (b) są NOT MET, ponieważ Q nie jest identyfikowalne. DALSZE KROKI (progi wstępnie zarejestrowane w 1e532f84, docs/design/evidence/labfit-followup/RESULTS.md): w kampanii z J/S stopniowym delta_eff jest odzyskiwane w granicach +0,185 dB (S1 MET: błąd rampy to opóźnienie estymatora); (d) w brzmieniu zapisanym jest na niej spełnione przez model pętli śledzenia (0,45 dB), ale nie przez empiryczny (6,42 dB), więc S2 jest NOT MET; w nowej kampanii z rampą (d) z dopasowanymi czasami zatrzymania spadku z dodanym tempem rampy każdego zdarzenia mieści się w 1 dB dla obu modeli (R1 MET), a (a') i (d) w brzmieniu zapisanym znów są chybione (-1.25 dB; 2,32 i 9,47 dB). Sprawdzana jest metoda, a nie jakikolwiek odbiornik: nie może być VALIDATED na danych syntetycznych | 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 (pokrycie PI90 0,891 na 558 przedziałach, 0,900 na 10 zdarzeniach czasu do utraty przy każdym modelu blokady), the_report_carries_its_inputs_censoring_validation_and_labels (wejścia, cenzurowanie, skrót [validation] i werdykty, audyt bloku jednostek), 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 i bar_b_prime_ci_subset (ścisłe, ignorowane z tą luką); bar_b_prime_full_set_of_50_campaigns (ignorowany, uruchamiany przed wydaniem); testy iq::labfit::cn0 (dokładna degeneracja Q-delta, odzyskanie delta przy podanym Q, odwrotność progu w postaci zamkniętej); testy iq::labfit::iqfit (warunki modelu blokady odtwarzają model C/N0 dokładnie); tests/iq_labfit_followup.rs (dalsze kroki zarejestrowane w 1e532f84: s1_delta_eff_on_the_stepped_campaign MET, s2_d_as_written_on_the_stepped_campaign potwierdzający zapisane NOT MET, r1_dwell_corrected_d_on_the_fresh_ramp_campaign MET, w wydaniu) |
| Kodowanie GPS LNAV zdekodowane przez niezależną bibliotekę odbiornika | Podramki LNAV 1-3 Kshana (gps_lnav::encode_subframes) dla 32 efemeryd brdc0010.22n podane do decode_word i decode_frame z RTKLIB: parzystość każdego słowa, dekodowanie podramek ze spójnym wydaniem danych oraz każdy zdekodowany parametr względem liczby całkowitej Kshana i względem wartości wejściowej | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — RTKLIB v2.4.2-p13 (BSD-2-Clause, commit 71db0ffa) decode_word/decode_frame jako osobny program, wstępnie zarejestrowane ca5f0142: R1 parzystość i dekodowanie, R2 zdekodowana wartość równa liczbie całkowitej Kshana razy skala IS-GPS-200 w granicach 2^-52 względnie, R3 w granicach pół kwantu wejścia. USTALENIE: R1 960 z 960 słów i 96 z 96 podramek; R3 każdy parametr, tydzień i czasy odniesienia dokładne; R2 zawodzi dla 41 wartości (af1, delta-n, IDOT) o 1 do 4 jednostek na ostatniej pozycji, ponieważ P2_43 w RTKLIB jest dziesiętne 1.136868377216160E-13, 2.6e-16 względnie od 2^-43; podzielenie przez stałą RTKLIB zwraca liczbę całkowitą Kshana w każdym przypadku. Pozostaje MODELLED: zarejestrowany próg R2 był zbyt ciasny dla własnej stałej wyroczni | gps_lnav | tests/gps_lnav_rtklib_decode_oracle.rs::rtklib_recovers_every_integer_and_differs_only_by_its_decimal_two_to_the_minus_43 (przypięte ustalenie); tests/gps_lnav_rtklib_decode_oracle.rs::kshana_lnav_subframes_decode_in_rtklib_to_the_broadcast_parameters (ścisły, ignorowany z tą luką) |
| Kodowanie komunikatu nawigacyjnego GPS LNAV | Podramki LNAV 1-3 według IS-GPS-200 (gps_lnav::encode_subframes: kwantyzacja do najbliższej wartości każdego parametru zegara i orbity przy współczynnikach skali ze specyfikacji i jej wartości pi, upakowanie w kodzie uzupełnieniowym do dwóch, słowa TLM i HOW, parzystość z Tabeli 20-XIV z inwersją D29*/D30*, bity rozwiązujące parzystość w słowach 2 i 10), czyli komunikat nadawany przez generator sygnału GPS L1 C/A | ExternalDataset | podzastrzeżenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — RTKLIB v2.4.2-p13 (BSD-2-Clause, commit 71db0ffa) readrnx parsujący dzienny plik nadawczy IGS BRDC00IGS_R_20250610000_01D_MN.rnx oraz decode_word/decode_frame dekodujące słowa Kshana, uruchamiane jako osobny program; wstępnie zarejestrowane d4d9eb9d przed pobraniem pliku, próg dokładnych liczb całkowitych. Mutacja: obcinanie zamiast zaokrąglania daje 235 niepowodzeń. Wcześniejsze porównania tego samego kodera są zapisane jako ustalenia: względem gps-sdr-sim, który obcina (230 pól), oraz względem skalowanych wartości RTKLIB, których dziesiętna stała 2^-43 chybiła próg jednego ulp (41 wartości). Weryfikacja po stronie integratora (pozostaje MODELLED): porównanie się zgadza, a mutacja zbioru parzystości także zmienia je na czerwone, ale wstępna rejestracja d4d9eb9d dotarła do gałęzi publicznej o 20:02:29 UTC, dwie sekundy po commicie wyniku 1783f904 (20:02:27 UTC), który już zawiera wynik RTKLIB dla tego pliku, więc kolejności „zarejestrowano przed pobraniem pliku” nie da się wykazać; nowa rejestracja wypchnięta przed pobraniem niewidzianego pliku nadawczego by to rozstrzygnęła | gps_lnav | tests/gps_lnav_rtklib_integer_oracle.rs::kshana_lnav_integers_decode_in_rtklib_from_an_unseen_broadcast_file (32 satelitów z pliku nadawczego IGS z 2 marca 2025: 960 z 960 słów przechodzi parzystość RTKLIB, 96 z 96 podramek dekoduje się, 608 z 608 zdekodowanych nadawanych liczb całkowitych równa się liczbom Kshana, każde wejście w granicach pół kwantu, tydzień i czasy dokładne); gps_lnav::tests |
| Pozyskiwanie i estymacja C/N0 na rzeczywistych księżycowych danych IQ | Równoległe przeszukiwanie fazy kodu (acquisition::pcps_acquire: przenośne FFT, spójne składanie, akumulacja niespójna, próg chi-kwadrat dla prawdopodobieństwa fałszywego alarmu w całym przeszukiwaniu), udoskonalanie, korelacja otwartej pętli z Dopplerem kodu oraz estymator C/N0 M2M4, uruchomione na 4-bitowych partiach IQ LuGRE L1 odczytanych przez realdata::ion_sdr | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — GNSS-SDR 0.0.19 (GPL-3.0, osobny program, przypięta konfiguracja) na dziewięciu partiach L1 spoza powierzchni i SUROWYM C/N0 odbiornika lotnego (LuGRE Mission Data, Zenodo 16411687, CC BY 4,0), wstępnie zarejestrowane 768cb62b. USTALENIE: czytnik Kshana dekoduje wszystkie 288 porównywanych odcinków identycznie jak niezależny konwerter; GNSS-SDR uznaje 266 z 288 poszukiwań za pozytywne, a Kshana zgadza się we wszystkich 266 decyzjach, ale tylko 250 jest zlokalizowanych na komórce GNSS-SDR (A2 zawodzi); ramię C/N0 jest puste, żadna surowa epoka lotna nie leży w granicach 30 s od jakiejkolwiek partii (najbliższa 141 s). Większość pozytywów to artefakty: gołe poziomy w kodzie uzupełnień do dwóch niosą średnią -0.5 na I i Q, linię o zerowej częstotliwości 32 dB ponad szumem w przedziale 1 kHz, którą oba odbiorniki pozyskują. Dwie partie (OP5, OP12) wykluczono przez pomyłkę: odczyt ich metadanych z pozbawionymi cyframi uznano za sprzeczność z ich nagłówkami; prawdziwą przyczyną było to, że czytnik nie mógł odczytać próbki szerszej niż słowo (od tego czasu naprawiono). Pozostaje MODELLED | acquisition, portable_math, realdata::ion_sdr, realdata::lugre | tests/lugre_acquisition_gnss_sdr_oracle.rs::finding_dc_artefacts_and_no_contemporaneous_flight_cn0 (przypięte ustalenie, bramkowane danymi); tests/lugre_acquisition_gnss_sdr_oracle.rs::acquisition_and_relative_cn0_on_lugre_iq_match_gnss_sdr_and_the_flight_receiver (ścisły, ignorowany z tą luką); acquisition::tests; realdata::ion_sdr::tests; realdata::lugre::tests |
| Pozyskiwanie na rzeczywistych księżycowych danych IQ względem Dopplera przewidzianego z orbity (decyzja według mocy próbek) | acquisition::pcps_acquire z decyzją według mocy próbek na dziewięciu partiach L1 LuGRE spoza powierzchni z poziomami mid-rise; różnice Dopplera między pozyskanymi satelitami porównane z różnicami przewidzianymi na podstawie końcowych orbit ESA i zrekonstruowanej przez Firefly trajektorii Blue Ghost | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Przewidywany Doppler z końcowych orbit ESA/ESOC i zrekonstruowanej trajektorii NAIF CLPS (xval/lugre-predicted-doppler/predict.py, niezależny od Kshana), wstępnie zarejestrowane 0d1839d2. USTALENIE: wszystkie 288 poszukiwań przekracza próg na szumie (statystyki mocy próbek około 430 do 520 wobec 346,3), więc P1 zachodzi trywialnie i P3 zachodzi (274 z 288 przewidzianych jako widoczne), podczas gdy P2 zawodzi dla 4033 z 4036 par. Ograniczony pasmowo tor wejściowy podnosi szum każdej komórki około 1,46 razy (przypięte: poziom szumu 292 wobec białego szumu 200 na OP2 PRN 1), czego statystyka mocy próbek nie widzi. Pozostaje MODELLED | acquisition, realdata::ion_sdr | tests/lugre_acquisition_predicted_doppler_oracle.rs::noise_alone_crosses_the_sample_power_threshold_on_lugre_iq (przypięte ustalenie, bramkowane danymi); tests/lugre_acquisition_predicted_doppler_oracle.rs::acquired_doppler_differences_on_lugre_iq_match_the_orbit_prediction (ścisły, ignorowany z tą luką) |
| Pozyskiwanie na rzeczywistych księżycowych danych IQ oceniane według Dopplera przewidzianego z orbity | acquisition::pcps_acquire z decyzją uśredniającą po komórkach (pik względem średniej komórki siatki, odporny na szum ograniczony pasmowo) na dziewięciu partiach L1 LuGRE spoza powierzchni z poziomami mid-rise; różnice Dopplera między pozyskanymi satelitami porównane z różnicami przewidzianymi na podstawie końcowych orbit ESA i zrekonstruowanej przez Firefly trajektorii Blue Ghost | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Przewidywany Doppler z końcowych orbit ESA/ESOC i zrekonstruowanej trajektorii NAIF CLPS (xval/lugre-predicted-doppler/predict.py, niezależny od Kshana), wstępnie zarejestrowane a81a9a4e. USTALENIE: P1 i P3 zachodzą (4 partie, 12 z 12 akwizycji przewidzianych jako widoczne), ale P2 zawodzi dla 8 z 8 par. Dwie najsilniejsze pary zgadzają się z przewidywaniem co do wielkości z odwróconym znakiem (OP2 PRN 18/24: +7670,0 Hz zmierzone, -7693.9 przewidziane; OP17 PRN 11/30: +11155,0, -11114.4), więc zarejestrowana kolejność I w dolnym półbajcie jest sprzężeniem partii; sześć detekcji tuż nad progiem nie zgadza się z żadnym znakiem. Rozrzut Dopplera po udoskonaleniu (30 do 50 Hz między dwoma przebiegami) został również niedoszacowany przez rejestrację. Pozostaje MODELLED | acquisition, realdata::ion_sdr | tests/lugre_acquisition_cell_average_doppler_oracle.rs::strong_pairs_match_the_prediction_only_with_the_doppler_sign_reversed (przypięte ustalenie, bramkowane danymi); tests/lugre_acquisition_cell_average_doppler_oracle.rs::cell_average_acquisitions_on_lugre_iq_match_the_orbit_predicted_doppler (ścisły, ignorowany z tą luką) |
| Pozyskiwanie na wstrzymanych rzeczywistych księżycowych danych IQ względem Dopplera przewidzianego z orbity | acquisition::pcps_acquire (decyzja uśredniająca po komórkach, prawdopodobieństwo fałszywego alarmu 1e-7) z refine_doppler_coherent na partiach L1 LuGRE zarejestrowanych na powierzchni Księżyca (I w górnym półbajcie, poziomy mid-rise); różnice Dopplera między pozyskanymi satelitami względem różnic przewidzianych na podstawie końcowych orbit ESA i jądra miejsca lądowania Firefly | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Przewidywany Doppler z końcowych orbit ESA/ESOC i jądra miejsca lądowania NAIF CLPS Firefly (xval/lugre-predicted-doppler/predict_surface.py, niezależny od Kshana), wstępnie zarejestrowane 2108e6ff na partiach nigdy wcześniej nieotwieranych. USTALENIE: niepustość zawodzi; żadna partia nie zawiera dwóch akwizycji. OP40 wykluczony (metadane wskazują brakujący plik); OP38, OP73, OP77_0, OP77_1 niczego nie pozyskują i nie wykazują fałszywego alarmu przy 1e-7 (najwyższe statystyki 325 do 356 wobec 385,9); OP74 i OP76 pozyskują PRN 31, a OP78_0 i OP78_1 PRN 12, każdy osobno, wszystkie przewidziane jako widoczne. Pozostaje MODELLED. Ujawnione odstępstwa: zarejestrowany próg Dopplera 10 Hz opiera się na syntetycznym Monte Carlo koherentnego udoskonalenia, a nie na rozrzucie już widzianych partii, o który prosił integrator; OP40 wykluczono przed przebiegiem, ponieważ jego metadane wskazują plik próbek, którego zbiór danych nie zawiera | acquisition, realdata::ion_sdr, realdata::lugre | tests/lugre_surface_acquisition_doppler_oracle.rs::each_surface_acquisition_is_a_single_predicted_visible_satellite (przypięte ustalenie, bramkowane danymi); tests/lugre_surface_acquisition_doppler_oracle.rs::surface_acquisitions_match_the_orbit_predicted_doppler (ścisły, ignorowany z tą luką) |
| Księżycowy różnicowy PNT | Różnicowa stacja referencyjna klasy NovaMoon: znoszenie składowej wspólnej + resztka rosnąca z linią bazową + poziomy ochrony DGNSS | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Różnicowa tożsamość znoszenia błędów + ponowne użycie mechanizmu SBAS PL z DO-229E; rozwiązanie z pojedynczą różnicą + WLS jest dodatkowo sprawdzane krzyżowo względem lsq()/matinv() z RTKLIB (Takasu, BSD-2-Clause, skompilowany C) — niezależny kod solwera, ale ta sama algebra różnic LOS pierwszego rzędu, więc nadal InternalConsistency | lunar_dpnt | lunar_dpnt::tests (tryb wspólny zegara znosi się dokładnie; residuum rośnie z linią bazową; ponownie używa SBAS PL; liczba satelitów jest respektowana do limitu konstruktora wynoszącego 24, więc większa konstelacja nie może po cichu zwrócić mniejszej); tests/lunar_differential_pnt_reference.rs (residuum pojedynczej różnicy + rozwiązanie położenia WLS względem lsq() z RTKLIB skompilowanego ze źródła C) |
| Eksport interoperacyjności księżycowej | Eksport księżycowego układu odniesienia, czasu i efemeryd zgodny z LunaNet/IOAG (CCSDS OEM + KIF) z kontrolą zgodności z normą (conformance) w obiegu zamkniętym | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — eksport księżycowy OEM Kshana ponownie sparsowany przez niezależną bibliotekę zewnętrzną oem (R. J. Anderson): tokeny układu/czasu i stan w poszczególnych epokach zgadzają się z dokładnością zapisu (1 mm / 1e-9 km/s), a eksport z pominiętym TIME_SYSTEM jest odrzucany — strukturalna rundka wymiany; fizyczna semantyka księżycowego układu/czasu jest sprawdzana we własnych wierszach, więc ten pozostaje MODELLED. 0,30 porównanie zewnętrzne, ustalenie (pozostaje MODELLED): drugi niezależny czytnik, parser CCSDS OEM Orekit 12,2 (Apache-2.0, ścisłe ustawienia domyślne), odrzuca oba pliki księżycowe, ponieważ nie implementuje systemów czasu LTC i TCL (dekoduje OEM EME2000/UTC tego crate'a i dekoduje pliki księżycowe, gdy TIME_SYSTEM zastąpi się przez TDB); oem 0.4.5 dekoduje je z dokładnością zapisu tylko przez wycofanie się z nieobsługiwanego systemu czasu. Wymiana tych plików księżycowych z głównymi czytnikami CCSDS nie jest ustalona |
lunar_interop | lunar_interop::tests (OEM niesie księżycowe REF_FRAME/TIME_SYSTEM; metadane czasu przechodzą rundkę; koperta KIF); tests/lunar_interoperability_export_reference.rs (wyemitowany przez kshana księżycowy OEM ponownie sparsowany przez niezależną bibliotekę Pythona oem: tokeny REF_FRAME/TIME_SYSTEM/CENTER + stan w poszczególnych epokach z dokładnością formatu; uszkodzony eksport jest odrzucany); tests/lunar_interop_oem_oracle.rs::recorded_two_reader_outcome_is_for_todays_export |
| Ocenianie zgodne z ramami odporności PNT | Podwyniki w każdym wymiarze dla własnych siedmiu kategorii odporności Kshana (nie terminów DHS), funkcji RDRR z RethinkPNT i kryteriów Yanga, każdy z etykietą Modelled i swoim czynnikiem; wstępny poziom RPCF z bramką ograniczonej degradacji. Samoocena wynikająca z symulacji, nigdy certyfikacja. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Ręcznie wyprowadzone wzory dla poszczególnych metryk: różnorodność odwrotna Simpsona, ważona średnia kompozytowa, ograniczone/nieograniczone czasy trwania osi czasu, drabina poziomów najsłabszego ogniwa | resilience::arch, resilience::score, resilience::diversity, resilience::timeline | resilience::score::tests (monotoniczność, ograniczenia kompozytu, limit poziomu, pochodzenie-modelowane); resilience::diversity::tests (odwrotna Simpsona, tryb wspólny, SPOF) |
| Badanie niestabilności decyzji dla wyniku odporności | Określa ilościowo, jak pojedynczy wynik złożony / poziom RPCF zmienia kolejność architektur przy uzasadnionym simpleksie wag i zespole zagrożeń (odsetek zmian top-1, rozrzut tau Kendalla, odsetek zmian poziomu, zakresy rang); analizy deklarowane-vs-zmierzone i załamania różnorodności. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamości statystyk rangowych w postaci zamkniętej (tau w [-1,1] z wartościami policzonymi ręcznie; deterministyczny Dirichlet z ziarnem) oraz skonstruowane świadectwa stabilności i niestabilności | resilience::stats, resilience::study, resilience::panel | resilience::stats::tests (Kendall-tau hand example, Dirichlet simplex, flip-rate); resilience::study::tests (stability control, instability witness, declared-vs-measured, diversity collapse) |
| Reprezentatywność demonstracji i luki do lotu | Rejestr rzetelności dla każdego wyniku, kwalifikujący wynik demonstracji: jego zewnętrzne kotwice, założenia modelowe, luki do lotu i reprezentatywny przedział TRL, z egzekwowanymi niezmiennikami (Validated wymaga zewnętrznej kotwicy; Modelled wymaga luki i nie może twierdzić powyżej TRL 4). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Niezmienniki w postaci zamkniętej odpowiadające dyscyplinie compliance „reprezentatywność uzasadniona + zidentyfikowane luki do lotu"; powiązane z granicą między statusem weryfikacji a rodzajem wyroczni | representativeness | representativeness::tests (validated-needs-external-anchor, modelled-needs-gap, modelled-TRL-ceiling, malformed-band, JSON fields) |
| Dowody kompromisu kwantowy kontra klasyczny (wspólna postać) | Jeden odtwarzalny obiekt TradeEvidence (stała ramka: scenariusz+ziarno+silnik; wspólne wartości kwantowe vs klasyczne dla każdego wskaźnika jakości z korzyścią o poprawnej polaryzacji, opcjonalny 95% przedział ufności, etykieta zwalidowane/modelowane) niosący zapis reprezentatywności, tak aby każda pionowa kwantowego PNT raportowała kompromis w ten sam rzetelny sposób. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamości korzyści i zwycięzcy w postaci zamkniętej oraz wierne opakowanie istniejącego quantum_trade::TradeResult; rzetelność powiązana z rejestrem reprezentatywności i etykietami weryfikacji | qtrade | qtrade::tests (benefit polarity higher/lower-is-better, wraps a real TradeResult faithfully, dishonest evidence rejected, validated-FoM needs external anchor, deterministic JSON) |
| Biblioteka modeli błędów urządzeń kwantowych | Karty urządzeń (zegary optyczne/z uwięzionymi jonami/z jonami rtęci + zegary klasyczne ponownie użyte z holdover/clock_state; interferometr zimnych atomów; łącza transferu czasu klasyczne + splątane/jednofotonowe), każda niosąca zapis reprezentatywności; łącze splątane dodaje model precyzji czasu ograniczonej szumem śrutowym (~jitter/sqrt(R*tau), kara za zliczenia ciemne, podłoga systematyczna). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Ponownie użyte współczynniki zegara/CAI (holdover/clock_state, wartości opublikowane) oraz tożsamości szumu śrutowego i strat w postaci zamkniętej dla łącza splątania | quantum_devices | quantum_devices::tests (clock cards honest+ordered; entanglement precision ~1/sqrt(tau); detected rate -10x/10dB; dark counts degrade; systematic floor bounds; card modelled+valid) |
| Zaufany czas kwantowy (transfer czasu + bezpieczne rozpowszechnianie + anomalie) | Kompletny łańcuch transferu czasu kwantowy vs klasyczny (dryf zegara + precyzja łącza w kwadraturze), ponownie użyty poziom ochrony czasu, wskaźnik jakości bezpieczeństwa wobec ataku opóźnienia/odtwarzania (1-P_md) oraz prawdopodobieństwo detekcji anomalii zegara + opóźnienie CUSUM, podane jako rzetelne TradeEvidence z zapisem reprezentatywności. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Budżet kwadraturowy w postaci zamkniętej na ponownie użytych, sprawdzonych niezależnie jądrach (ADEV względem Stable32/NIST; ograniczenie TPL; detekcja analytic_pd/pmd); rzetelność powiązana z rejestrem reprezentatywności | timetransfer_chain | timetransfer_chain::tests (precision improves with integration; quantum can win AND lose; PL finite-positive; security FoM in [0 1] and grows with attack delay; anomaly Pd monotone; trade is_honest) |
| Nawigacja kwantowa bez GNSS | Kwantowa (interferometr zimnych atomów) vs klasyczna nawigacja zliczeniowa INS klasy nawigacyjnej podczas przerwy w GNSS: narastanie błędu pozycji, holdover do progu pozycji oraz kompromis kwantowy kontra klasyczny jako rzetelne TradeEvidence; rzetelna uwaga o obserwowalności (bias jest nieobserwowalny bez poprawki, więc błąd rośnie). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Ponownie użyte budżety inercyjne skontrolowane krzyżowo niezależnym podwójnym całkowaniem w Octave tego samego ODE nawigacji zliczeniowej (inne środowisko uruchomieniowe, wspólny model → ReferenceImpl) oraz opublikowany krótkoterminowy szum z Freier-2016 jako jednostronna kotwica; złożenie kwantowo-klasyczne pozostaje MODELLED | quantum_nav_od | quantum_nav_od::tests (quantum beats classical over a long outage; advantage is outage-dependent; trade is_honest); tests/gnss_free_quantum_navigation_reference.rs (dead-reckoning position growth vs an independent Octave double-integration + the Freier-2016 published noise anchor) |
| Detekcja usterek/anomalii dla systemów kwantowego PNT | Oznaczony katalog usterek kwantowych (skok/dryf częstotliwości zegara/utrata zaczepienia; skok biasu/wypadnięcie czujnika), AUC ROC statystyki detekcji z przedziałem ufności z bootstrapu oraz minimalna wykrywalna usterka przy ustalonym wskaźniku fałszywych alarmów; monitor wspomagany zegarem kwantowym wykrywa mniejsze usterki niż klasyczny, podane jako rzetelne TradeEvidence. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Gaussowskie AUC w postaci zamkniętej = Phi(mu/(sigma*sqrt2)) skontrolowane krzyżowo z zewnętrznie sprawdzonym eval_stats::bootstrap_auc_ci (względem scikit-learn) oraz analitycznymi progami detekcji | quantum_faults | quantum_faults::tests (analytic AUC known values; empirical bootstrap AUC brackets the closed form; quantum detects smaller faults / higher AUC; advantage vanishes for huge faults; 5-class catalog; trade is_honest) |
| Pasywna geolokalizacja emitera metodą TDOA/FDOA | Lokalizacja emitera (zagłuszacza/spoofera lub źródła okazjonalnego dla odwróconego PNT) na podstawie różnicy czasów dotarcia w sieci odbiorników — przecięcie hiperboloid τᵢ=(Rᵢ−R₀)/c rozwiązane metodą najmniejszych kwadratów Gaussa–Newtona — oraz, po dodaniu różnicy częstotliwości dotarcia (różnic prędkości zmiany odległości) przy ruchomych odbiornikach, wspólne odtworzenie pozycji i prędkości; z dolnym ograniczeniem Cramér–Rao dla kowariancji pozycji wynikającym z geometrii pomiarów | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Samospójność estymatora i geometrii: obiegi w przód→wstecz, tożsamość Fishera/CRLB J·CRLB=I, monotoniczność GDOP oraz estymator osiągający własne ograniczenie Cramér–Rao przy szumie Monte Carlo — kontrole spójności wewnętrznej, NIE zewnętrzny zbiór danych, więc wiersz pozostaje InternalConsistency. MODELLED pasywna geolokalizacja — model źródła punktowego z linią widzenia; bez składników wielodrogowości / NLOS, błędu zegara odbiornika ani refrakcji atmosferycznej. 0,30 zaokrąglenie 2, względem Ho i Chan 1993 oraz Ho i Xu 2004 (zarejestrowane z góry f89018b8, 1 % każdej wydrukowanej wartości), ustalenie (pozostaje MODELLED): ograniczenie TDOA z więzem powierzchniowym odtwarza współczynniki geometryczne 40 N (-0.11 %, -0.02 %) i maksymalne TDOA; łączne ograniczenie TDOA+FDOA odtwarza Rys. 6 (+0,06 %, -0.17 %) oraz, przy źródle, które kod własny autorów wskazuje dla Rys. 7 (poprawka napisana po zobaczeniu tego wyniku, ujawniona), Rys. 7 (+0,11 %, -0.02 %); jest równe opublikowanemu kodowi ograniczenia autorów (w stylu BSD, uruchomionemu w GNU Octave) z dokładnością do 3e-12; solwer największej wiarygodności ważony kowariancją osiąga wydrukowane ograniczenie (+0,3 do +0,4 %). Współczynniki dla Ottawy, które praca drukuje na podstawie Monte Carlo (251, 7,1), różnią się o +1,3 % i +4,4 %, poza progiem 1 % | geolocation | geolocation::tests (noiseless TDOA forward→inverse to 1e-6 m; J·CRLB=I with a symmetric PD covariance; the CRLB position-variance trace is non-increasing when a receiver is added; joint TDOA+FDOA recovers a moving emitter's position+velocity; <4 receivers rejected); tests/geolocation_reference.rs (round trips over four geometries with a 3-D-diverse network; the Gauss–Newton estimator attains its Cramér–Rao bound — empirical error covariance tracks the analytic bound over 4000 Monte-Carlo trials); 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 and finding_ho_xu_fig7_printed_source_is_not_the_plotted_one, pinned) |
| Konwekcyjne nagrzewanie w punkcie stagnacji (Sutton-Graves) przy wejściu 3-DoF | Konwekcyjny strumień ciepła w punkcie stagnacji q = k sqrt(rho/R_n) V^3 ze stałymi Suttona-Gravesa dla powietrza ziemskiego i atmosfery Marsa (NASA TR R-376, 1971), jego szczyt i całkowite obciążenie cieplne wzdłuż wejścia 3-DoF, balistycznego lub nośnego przy stałym przechyleniu, na Ziemi lub Marsie. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: zależność i stałe w postaci wydrukowanej w NASA TR R-376, kontrola zbieżności półkrokowej oraz oczekiwana kolejność szczytów nagrzewania i hamowania. CZEGO NIE OBEJMUJE: nie porównano żadnej opublikowanej wartości nagrzewania (prace o Stardust podają limit projektowy oraz szacunek konwekcyjno-radiacyjny około 1200 W/cm2, którego zależność wyłącznie konwekcyjna nie może odtworzyć); brak nagrzewania radiacyjnego, korekty temperatury ściany lub katalityczności oraz odpowiedzi osłony termicznej. | 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 (records 746 W/cm2 for Stardust without a bar) |
| Radiometria obrazowania elektrooptycznego, MTF, względna odpowiedź krawędzi i GIQE 4 NIIRS | Budżet stosunku sygnału do szumu obrazowania w nadirze (luminancja sceny lambertowskiej, równanie kamery, szum śrutowy, ciemny, odczytu i kwantyzacji), systemowe MTF przy Nyquiście jako iloczyn dyfrakcji nieprzesłoniętej apertury, apertury detektora, liniowego rozmazania i gaussowskiego drgania, odpowiedź krawędzi i względna odpowiedź krawędzi całkowane z tego MTF, Q = lambda F / p oraz NIIRS według GIQE w wersji 4 bez kompensacji MTF. Uruchamialne jako rodzaj scenariusza eo-radiometry. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postacie zamknięte: MTF dyfrakcyjna przy połowie częstotliwości odcięcia, krawędź rampy o szerokości jednego piksela dla czystej apertury detektora (RER 1), krawędź w postaci normalnego CDF dla rozmycia gaussowskiego (RER = erf(0.5/(sigma sqrt 2))), skalowanie szumu śrutowego oraz współczynniki GIQE 4 w postaci opublikowanej (Leachtenauer i in., Applied Optics 36(32), 1997). CZEGO NIE OBEJMUJE: nie porównano żadnego zewnętrznego obrazującego przyrządu, zmierzonej MTF ani ocenianego obrazu; GIQE jest regresją empiryczną z własnym błędem; brak światła rozproszonego, MTF atmosferycznej, kompensacji MTF i aliasingu. | 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 |
| Straty grawitacyjne, aerodynamiczne, sterowania i przeciwciśnienia przy wznoszeniu rakiety | Płaskie wznoszenie z zakrętem grawitacyjnym wielostopniowego pojazdu nad nieobracającą się sferyczną Ziemią przez Standardową Atmosferę USA 1976 (gęstość i ciśnienie), z impulsem pochylenia, ciągiem zmniejszonym przez przeciwciśnienie dyszy, wypaleniami stopni na dokładnych granicach kroków oraz stratami grawitacyjnymi, aerodynamicznymi, sterowania i przeciwciśnienia całkowanymi obok stanu. Uruchamialne jako rodzaj scenariusza ascent-losses. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: dokładna tożsamość prędkość wypalenia = suma Isp g0 ln(m0/mf) minus cztery scałkowane straty (reszta poniżej 1e-6 m/s), równanie Ciołkowskiego dla pionowego wypalenia w próżni, w którym jedyną stratą jest grawitacja, oraz ciśnienia US76 na poziomie morza i w tropopauzie. CZEGO NIE OBEJMUJE: nie porównano strat żadnego opublikowanego pojazdu; brak obrotu Ziemi, fazy biernej, dławienia i prowadzenia poza kickiem; stałe C_D; to nie jest optymalizator trajektorii. | 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 |
| Dwukierunkowe równanie TWSTFT, budżet niepewności i stabilność łącza z szumem migotania i dobową nieodwracalnością | Dwukierunkowe równanie TWSTFT rozwiązane dla T_A - T_B z opóźnieniami nadawania i odbioru stacji, asymetrią jonosferyczną góra/dół w paśmie Ku, różnicą opóźnień transpondera i członami Sagnaca, względem jego dokładnego modelu prostego; kwadraturowy budżet niepewności z TDEV łącza jako składnikiem typu A; dwukierunkowy szereg z białym szumem fazy i szumem fazy migotania (Kasdin-Walter), dobową nieodwracalnością i stałą resztą odwracalności; oraz tempo, RMS reszt, TDEV i ADEV dostarczonych szeregów zegara stacji Circular T, MJD-CSV lub IGS RINEX. Uruchamialne jako rodzaj scenariusza time-transfer-budget. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: model w przód i rozwiązywane równanie zgadzają się do 1e-15 s, składnik Sagnaca jest równy niezależnej postaci pętli BIPM 2A omega/c^2 modułu, składnik jonosferyczny wynosi 40,3 TEC (1/f_up^2 - 1/f_down^2)/c, a procesy szumowe wykazują oczekiwane kształty TDEV. CZEGO NIE OBEJMUJE: nie porównano żadnego rzeczywistego pomiaru TWSTFT ani raportu kalibracji; podane opóźnienia i niepewności są danymi wejściowymi, a nie zmierzonymi; stabilności dostarczonych szeregów są raportowane, a nie sprawdzane niezależnie. | twstft_budget (counter_readings, solve_offset, combined_uncertainty, flicker_phase, two_way_series, series_stability); time_transfer_budget (TimeTransferBudgetScenario, read_series) | twstft_budget::tests (the two-way equation recovers the offset exactly; the Sagnac term equals the BIPM loop closed form; the ionospheric term follows the frequency split and the troposphere cancels; flicker phase has a flat TDEV; a diurnal residual lifts TDEV near half a day; a reciprocity bias shifts the offset and not the TDEV; series stability removes a rate); time_transfer_budget::tests |
| Numeryka atmosfery na skośnej ścieżce optycznej: wariancja Rytova, scyntylacja, prawdopodobieństwo zaniku gamma-gamma, uśrednianie po aperturze, głębokość optyczna chmur i czystego powietrza | Cn2 Hufnagela-Valleya całkowane wzdłuż ścieżki skośnej dla wariancji Rytova fali płaskiej i sferycznej (łącze w górę i w dół), wskaźnik scyntylacji Andrewsa-Phillipsa i parametry gamma-gamma, prawdopodobieństwo zaniku gamma-gamma i margines zaniku, współczynnik uśredniania po aperturze przy słabej turbulencji, głębokość optyczna chmur kolumny wody ciekłej oraz głębokość optyczna czystego powietrza z widzialności Kima plus Rayleigha, zastępujące zbiorczą stratę atmosferyczną budżetu łącza optycznego, gdy dostarczono atmosferę. Uruchamialne wewnątrz rodzaju scenariusza optical-atmosphere. |
ExternalDataset | twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych na podstawie modelu, więc możliwość pozostaje oparta na modelu — Obliczenia numeryczne są porównane z niezależnym programem (xval/optical-atmosphere/oracle.py, mpmath 1.4.1 przy 30 cyfrach, kwadratura tanh-sinh na pierwotnej zmiennej wysokości i gęstości gamma-gamma przez Bessel-K), który nie ma wspólnego kodu z Kshana, względem progów ustalonych przed powstaniem jakiejkolwiek implementacji (xval/optical-atmosphere/PREREGISTRATION.md). DLACZEGO MODELLED: ta wyrocznia oblicza te same opublikowane wzory, więc sprawdza implementację podanych wzorów, a nie atmosferę; nie użyto żadnego przykładu walidacyjnego ITU-R ani zmierzonego zapisu scyntylacji lub ekstynkcji na ścieżce ukośnej (wartości ITU to otwarta decyzja licencyjna i są trzymane poza repozytorium). Poziom profilu Cn2, widzialność, wysokości skali aerozolu i cząsteczek, długość ścieżki uśredniania apertury oraz dopasowanie momentów użyte do zastosowania uśredniania apertury do parametrów gamma-gamma są podanymi danymi wejściowymi lub konwencjami. Linia źródłowa w module zapisuje, że jedno szeroko kopiowane opracowanie drukuje drugi wykładnik scyntylacji jako 7/6, tam gdzie Andrews i Phillips podają 5/6; zaimplementowana jest postać 5/6 | optical_atmosphere (rytov_variance, scintillation, gamma_gamma_cdf, fade_margin_db, aperture_averaging_factor, cloud_optical_depth, clear_air_optical_depth); optical_linkbudget (optical_link_budget_atmosphere) | tests/optical_atmosphere_reference.rs (pre-registered bars A1-A3 against the independent mpmath oracle: 216 Rytov grid points worst relative error 3.4e-7 against a 1e-6 bar, scintillation worst 4.5e-16, aperture factor worst 5.7e-16, 96 gamma-gamma fade probabilities worst 1.3e-12 in log10, cloud and clear-air optical depth worst 6.6e-16); tests/optical_atmosphere_no_moved_output.rs (bar A5: the lumped-loss link budget and the existing site-availability outputs are bit-identical to the base commit over 1 000 parameter sets) |
| Dostępność optycznej stacji naziemnej zależna od pogody i różnorodność stacji skorelowana odległością | Dostępność łącza optycznego względem podanego marginesu łącza na podstawie logarytmiczno-normalnego klimatu wody ciekłej w chmurach (ilość według ITU-R P.840, ekstynkcja optyki geometrycznej) i niezależnego zaniku turbulencji gamma-gamma, margines łącza potrzebny dla docelowych dostępności oraz pułap, którego żaden margines nie podnosi, logarytmiczno-normalne czasy trwania przerw, scenariusze „co jeśli” dla technik poprawy oraz jednoczynnikowa dostępność sieci z kopułą gaussowską, której korelacja par wynosi exp(-odległość/długość dekorelacji). Uruchamialne jako rodzaj scenariusza optical-atmosphere. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: granice w postaci zamkniętej i monotoniczność modelu dywersyfikacji, postać zamknięta pułapu chmur oraz tożsamości awarii log-normalnych. ŻADNA zewnętrzna wyrocznia nie jest deklarowana i żadnej nie porównano: nie użyto żadnego zmierzonego zapisu dostępności optycznej stacji naziemnej ani bezchmurnej linii widzenia. DLACZEGO MODELLED: klimat chmur (prawdopodobieństwo chmur, mediana i rozrzut kolumny wody ciekłej, czasy trwania przerw), niezależność chmur i turbulencji, postać kopuły gaussowskiej, długość dekorelacji i każdy zysk techniki są założeniami; dołączone scenariusze podają klimaty ILLUSTRATIVE, a nie zbiór danych. Podniesienie statusu tego wiersza wymaga przywołanego, zmierzonego zapisu dostępności i progu zarejestrowanego przed porównaniem | optical_weather; optical_sitediv; optical_techniques; optical_atmosphere_scenario | tests/optical_atmosphere_identities.rs (bar A4: rho = 0 equals the independent union and rho = 1 the best single site to 1e-12, and zero monotonicity violations in the number of sites and in the correlation; the first run of this bar missed by 3e-9 because the normal CDF in use was the 1.5e-7 Abramowitz-Stegun form, an implementation defect replaced by the incomplete-gamma CDF with the bar unchanged); optical_weather::tests and optical_sitediv::tests (monotone margin, the cloud ceiling as a closed form, the outage-duration identities, inversion of the margin search) |
| Ciągłość czasu i wyznaczania odległości podczas przerw optycznych | Rozkład czasów trwania przerw stacji optycznej sprzężony z wariancją dryfu w postaci zamkniętej modelu holdover zegara: błąd czasu i wyznaczania odległości przy podanych kwantylach przerw, holdover do progu czasu, odsetek przerw i czasu przerw mieszczących się w nim oraz dostępność czasu A + U E[min(D, T_h)]/E[D], dla klasycznych i kwantowych klas zegarów. Uruchamialne wewnątrz rodzaju scenariusza optical-atmosphere. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna z modułem holdover, bit w bit; ŻADNA zewnętrzna wyrocznia nie jest deklarowana. PSD klas to zsyntetyzowane progi długiego tau, które moduł holdover już zawiera, więc wartości dziedziczą jego podane zastrzeżenie, że holdover do ciasnego progu wyznacza założony próg szumu czerwonego, a nie przywołane odchylenie Allana. Czasy trwania przerw to model log-normalny z podanymi parametrami, a nie zmierzony zapis czasu przebywania chmur | optical_outage_holdover (couple, clock_psds); holdover (coast_phase_sigma, holdover_seconds, phase_to_range_m) | tests/optical_atmosphere_identities.rs (bar A6: the per-outage timing error equals holdover::coast_phase_sigma and the range error equals phase_to_range_m bit for bit over 9 clocks, 3 mean durations, 3 spreads and 4 quantiles); optical_outage_holdover::tests |
| Margines łącza optycznego w czasie: jedna realizacja pogody stacji z ziarnem | Opcjonalna tabela [timeseries] (duration, step, seed) sprawia, że rodzaj optical-atmosphere zapisuje także, dla każdej stacji, jedną realizację z ziarnem podanego modelu stacji w czasie: epizody chmur (okresy czyste wykładnicze, przerwy chmur logarytmiczno-normalne z podaną średnią i rozrzutem, udział czasu w chmurze ustawiony na podane prawdopodobieństwo chmur), jedna logarytmiczno-normalna kolumna wody ciekłej na epizod chmur, jedna próbka scyntylacji gamma-gamma na krok, a z nich margines łącza, zaniki od chmur i scyntylacji oraz flagę łącza aktywnego, z zrealizowaną dostępnością, udziałem chmur, liczbą przerw i najdłuższą przerwą. Bez tabeli wynikiem jest dokument 0,37. Losowania przechodzą przez przenośne trasy rozkładów i matematyki, więc natywny i wasm32 dają te same bajty. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wyłącznie spójność wewnętrzna; ŻADNA zewnętrzna wyrocznia nie jest deklarowana i żadna nie istnieje dla realizacji pogody. Kontrole porównują jedno losowanie z statystycznym wynikiem tego samego modelu, więc pozytywny wynik mówi, że generator próbkuje podane rozkłady (dostępność losowania i udział chmur mieszczą się w tolerancjach zarejestrowanych z góry względem podanych wartości), a nie że jakiekolwiek rzeczywiste miejsce zachowuje się tak. Szereg jest jedną realizacją, a nie klimatem: jego dostępność różni się od podanej o błąd próbkowania losowania, a scyntylacje w różnych krokach są niezależne, co jest podanym uproszczeniem procesu, który dekoreluje się w milisekundach. Dane wejściowe pogody pozostają założeniami scenariusza. | optical_timeseries (site_series, SiteModel, SeriesSpec, Series); optical_atmosphere_scenario (TimeseriesSpec) | tests/optical_atmosphere_timeseries.rs (bars T1-T6 of xval/optical-atmosphere/PREREGISTRATION-timeseries.md, fixed before the first run: same seed same bytes and another seed other bytes; no key without the table; over 8760 h at 600 s, seeds 37 and 38, the realised availability of each of the three default sites within 6 points of the stated one (worst 3,3) and the realised cloud fraction within 5 points of the stated probability (worst 2,1); the margin equals the budget minus the two fades and up equals margin not negative at every step; no non-portable maths call in the module; over-long runs and bad steps refused) |
| Czytnik pliku danych orbity TRK-2-18 i model rampowanego Dopplera 2-way dla Marsa | Czytnik plików danych orbity DSN (TRK-2-18): 36-bajtowe grupy rekordów (etykieta pliku, identyfikator, dane orbity, rampy każdej stacji, przesunięcia zegarów, podsumowanie, koniec pliku), a w każdym rekordzie danych orbity znacznik czasu od 1950, opóźnienia w dół i w górę, obserwabla, stacje, typ danych, pasma, ważność, kanał, statek kosmiczny, 46-bitowa częstotliwość odniesienia i czas kompresji; czasy początku i końca ramp, tempa i częstotliwości początkowe. Na jego podstawie rampowany model Dopplera 2-way w paśmie X (całkowane rampy łącza w górę, czas przelotu światła tam i z powrotem z Shapiro i troposferą, stacje DSN przez łańcuch IAU 2006/2000A CIO i IERS EOP, czas stacji) oraz wsadowe wyznaczanie orbity orbitera Marsa (pole GMM-3, ciała trzecie, SRP, opór). | ExternalDataset | twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych na podstawie modelu, więc możliwość pozostaje oparta na modelu — Etykieta PDS3, którą proces kondycjonowania danych nawigacyjnych DSN wytworzył razem z plikiem (NASA PDS Geosciences Node, MRO-M-RSS-1-MAGR-V1.0), sprawdzona względem progów zarejestrowanych z góry w xval/mro-odf/PREREGISTRATION.md przed powstaniem czytnika. MODELLED, ponieważ jeden zarejestrowany próg (wiersze tabeli końca pliku, 121 w pliku wobec 120 w etykiecie) nie został osiągnięty; etykieta jest tu wewnętrznie niespójna. Etap 2 (xval/mro-od/PREREGISTRATION.md, poprawki A1 i A2 przed wynikiem ocenianym): Doppler przewidziany na podstawie rekonstrukcji zespołu nawigacyjnego MRO (mro_psp5, NAIF) zgadza się z obserwowanym rampowanym Dopplerem 2-way z dokładnością do 12,5 mHz na przejściach nieużywanych w rozwoju, próg spełniony; zarejestrowane wyznaczanie orbity zawiodło na ocenianym łuku (macierz normalna nie jest dodatnio określona) i nie dało orbity, więc progi orbity nie zostały spełnione. Przebieg 2 (xval/mro-od/PREREGISTRATION-RUN2.md, estymator tłumiony, ten sam łuk i progi, poprawka oceniania R2-A1 ujawniona w docs/revisions) zbiegł się: estymowana orbita mieści się w 0,36 km RMS (0,53 km maksimum) od rekonstrukcji, progi spełnione, lecz RMS Dopplera po dopasowaniu wynosi 48,6 mHz wobec progu 30 mHz, niespełniony, więc wiersz pozostaje MODELLED. CZEGO NIE OBEJMUJE: żadna estymowana orbita nie spełniła wszystkich zarejestrowanych progów; jonosfera, plazma słoneczna i większość przesunięcia anteny (przesunięcie promieniowe 1,5 m jest dopasowywane na przejściu rozwojowym) nie są modelowane. | 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 (a real MRO ODF, 2007-304/305, against its PDS label: record count, group positions, stations, start and stop times and data types hold; the end-of-file table's row count misses by one, a label inconsistency, pinned as a finding); odf::tests (hand-built record round trip, 1950 epoch); tests/mro_odf_short_arc_od_oracle.rs (data-gated, inputs SHA-256 pinned, monthly CI with real data required: Doppler predicted from the MRO navigation reconstruction mro_psp5 on the scored DSS 63 and DSS 14 passes, 12,5 mHz RMS, bar 30 mHz, met; the registered orbit determination produced no orbit, pinned as a finding; run 2 with a damped estimator, separately registered: orbit 0,36 km RMS and 0,53 km maximum against mro_psp5, met, post-fit Doppler 48,6 mHz against 30 mHz, not met, pinned as a finding; SPK type 1 reader against CSPICE, 5e-7 m); mars_od::tests |
| Multiplikatywna estymacja orientacji EKF z żyroskopu i czujnika gwiazd | Multiplikatywny EKF Leffertsa-Markleya-Shustera: stany błędu orientacji w układzie ciała i biasu żyroskopu, propagacja z prędkością kątową z żyroskopu pomniejszoną o oszacowanie biasu i dyskretnym szumem procesu Farrenkopfa (błądzenie losowe kąta i prędkości), aktualizacje z czujnika gwiazd z residuum 2 vec(q^-1 q_st) w postaci Josepha oraz reset multiplikatywny; dyskretny symulator żyroskopu i czujnika gwiazd Farrenkopfa. Rodzaj aocs może domknąć pętlę sterowania na swoim oszacowaniu. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: znormalizowany kwadrat błędu estymacji filtra względem prawdy symulowanej z tych samych modeli czujników po ziarnach Monte Carlo oraz zbieżność estymat orientacji i biasu. CZEGO NIE OBEJMUJE: nie porównano żadnego zewnętrznego estymatora ani danych lotnych (Basilisk 2.9.1 nie ma modułu MEKF); modele czujników są podręcznikowe, bez niewspółosiowości, współczynnika skali ani efektów pola widzenia gwiezdnego czujnika orientacji. | aocs_mekf (Mekf, GyroSim, attitude_error, spd_solve6); aocs_kind (estimator) | aocs_mekf::tests::mekf_is_consistent_over_monte_carlo_seeds (40 seeds, mean six-degree-of-freedom NEES over the second half within 4,5 to 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 |
| Cykl pracy apertury: nawigacja kontra łączność | Jeden przebieg przyjmuje plan kontaktów (listę okien aos_s/los_s, z których każde prosi aperturę o nawigację lub łączność — to samo słownictwo okien, które emituje passes::predict_passes, konwertowane przez aperture_duty::windows_from_passes), liczbę apertur i jawną politykę arbitrażu, a zwraca cykl pracy nawigacji, cykl pracy łączności, cykl bezczynności i przerwę dla każdej sesji. Polityka jest daną wejściową z udokumentowaną wartością domyślną (navigation-priority; także communications-priority i niewywłaszczająca first-come-first-served), a raport niesie rozstrzygniętą politykę, jej pełną definicję oraz definicje cykli pracy i przerw, ponieważ wartość cyklu pracy podana bez reguły arbitrażu nie jest odtwarzalna. Harmonogram jest dokładnym przeglądem przedziałów po granicach okien, więc okno, które kończy się dokładnie tam, gdzie zaczyna się następne, nigdy nie konkuruje, a sekundy apertury nawigacji, łączności i bezczynności są akumulowane niezależnie w tym jednym przeglądzie. Uruchamialne jako rodzaj scenariusza aperture-duty-cycle |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna, z trzech wielkości obliczanych różnymi wyrażeniami w tym samym przeglądzie, które następnie muszą się zamknąć. Sekundy apertur nawigacyjnych, sekundy apertur komunikacyjnych i sekundy apertur bezczynnych są akumulowane osobno — bezczynne z (apertury − |obsłużone|) na elementarny przedział, nigdy jako reszta — a ich suma jest weryfikowana względem apertury × horizon_s, co natychmiast łamie źle ograniczona granica, podwójnie policzony przedział lub pominięty; czasy obsłużone poszczególnych sesji muszą się osobno sumować z powrotem do dwóch sum usług. Strukturalne własności harmonogramu są mierzone, a nie zakładane: czas obsłużony jest weryfikowany jako niemalejący względem liczby apertur na 200 pseudolosowych planach dla wszystkich trzech polityk (nieoczywiste dla polityki niewywłaszczającej, w której dodatkowa apertura zmienia, kto co zajmuje na każdej późniejszej granicy), a arytmetyka granic jest przypięta na parze stykającej się / nakładającej o jedną sekundę, gdzie błąd o jeden w przeciwnym razie by się ukrył. Most predyktora przejść jest sprawdzony względem wyniku passes::predict_passes: przy jednej aperturze i braku konkurującej usługi sekundy apertur nawigacyjnych równają się własnej zsumowanej długości przejść predyktora. Żadna zewnętrzna wyrocznia nie jest deklarowana i żadna nie istnieje: możliwość zastępuje arytmetykę ręczną, a nie jest z nią sprawdzana, dołączony plan kontaktów jest ilustracyjny, a nie lotny, a żaden operacyjny harmonogram nie publikuje pary plan-plus-odpowiedź z podaną regułą arbitrażu — obciążenie obliczone przy niepodanej polityce nie jest porównywalne z obliczonym przy podanej, a zależność od polityki jest zmierzona (obciążenia nawigacyjne 100/150 wobec 50/150 na identycznym planie). Czas przezbrojenia i zmiany, wolumen danych, stan bufora, energia i zamknięcie łącza są wykluczone w etykiecie raportu, a nie po cichu modelowane |
aperture_duty | aperture_duty::tests (a window that ends exactly when the next begins does not contend, and moving it one second earlier costs exactly one second — the off-by-one guard; overlapping windows beyond the aperture count put the lower-ranked session in outage, with the contention interval pinned; the arbitration policy decides which service holds the aperture, with all three policies' numbers pinned on one plan; first-come-first-served does not preempt a session already holding an aperture; a session that loses arbitration at its start acquires an aperture when one frees; the three duties account for every available aperture-second across 3 policies × 4 aperture counts; adding an aperture never increases any session outage, measured over 200 pseudo-random plans × 3 policies × every aperture count; enough apertures for every session leave no outage at all; the reporting horizon clips the plan and sets the duty denominator; a predicted pass list becomes a contact plan without a second window type; the bundled plan duty numbers are engine outputs for one and two apertures; the report states the policy that produced the numbers; every reported figure carries a unit and a provenance class; the scenario is reproducible and declares itself MODELLED; the scenario rejects a plan it cannot schedule); api::tests::aperture_duty_cycle_kind_round_trips_through_the_dispatch |
| Zagłuszanie RF nawigacji powierzchniowej na Księżycu (J/S dla każdego satelity) | Natywny księżycowy stosunek zagłuszacza do sygnału, efektywne C/N₀ i utrata zaczepienia dla użytkownika selenograficznego na powierzchni pod zagłuszaczem powierzchniowym (lub podniesionym), w ilustracyjnej konstelacji klasy Moonlight/LCNS ze źródeł publicznych. Składa otwarty łańcuch zagłuszania (j_over_s_db, effective_cn0_dbhz, rx_antenna_gain_db, lock_status, q_factor, nominal_cn0_dbhz, free_space_path_loss_db) z otwartą księżycową geometrią nieba (lunar_service::LunarConstellation + topocentryczna, lunar::selenographic_to_mcmf); żadna geometria ani radiometria nie jest wyprowadzana ponownie. W odróżnieniu od ziemskiego rodzaju jamming tor sygnału nie jest ustaloną mocą odbieraną: izotropowa moc odbierana każdego satelity to jego własne EIRP budżetu łącza − FSPL(odległość skośna), więc J/S zmienia się od satelity do satelity wraz z księżycową odległością i elewacją. Emituje JEDEN WIERSZ NA KAŻDE WIDOCZNE ŁĄCZE (epoka, satelita) jako JSON i jako artefakt *.table.csv, z obiema mocami odbieranymi, których różnicą jest J/S, wydrukowanymi obok; zagregowane wskaźniki jakości leżą obok tej tabeli, nigdy zamiast niej. Uruchamialne jako rodzaj scenariusza lunar-jamming |
ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie zewnętrznie miarodajnej — Krzyżowa kontrola kompozycji względem niezależnej ścieżki kodu w repozytorium: każde J/S na łączu jest wyprowadzane ponownie jako różnica dwóch budżetów łączy obliczonych za pomocą linkbudget::received_signal_power_dbw, którego tłumienie w wolnej przestrzeni to pojedyncze wyrażenie 20·log10(4πRf/c), a nie suma trzech członów, której używa jamming::free_space_path_loss_db — oba zgadzają się z dokładnością do < 1e-9 dB w każdym wierszu (zmierzony najgorszy przypadek 7.11e-14 dB, czyli zaokrąglenie zmiennoprzecinkowe). Składany przez nią łańcuch zakłóceń jest osobno zakotwiczony zewnętrznie w tests/gnss_denied_jamming_resilience_reference.rs (niezależne wyprowadzenie w numpy/scipy J/S i efektywnego C/N₀ przypięte do Kaplan i Hegarty §9,4, plus zmierzone C/N₀ z JammerTest 2024, Zenodo 10.5281/zenodo.15910563); składana geometria księżycowa to geometria lunar_service/lunar z własnymi wyroczniami. Tożsamości w postaci zamkniętej sprawdzane tutaj: połowa odległości zagłuszacza dodaje dokładnie 20·log10(2) dB do każdego wiersza; J/S jest dokładnie niezmiennicze względem wzmocnienia osi anteny użytkownika, podczas gdy C/N₀ zmienia się dokładnie o to wzmocnienie; maska elewacji nie zmienia żadnego pozostałego wiersza bit w bit. Sam wiersz pozostaje ReferenceImpl/oparty na modelu: nie istnieje zmierzona księżycowa kampania zagłuszania, względem której można by walidować, a konstelacja to ilustracyjna geometria klasy Moonlight/LCNS z danych publicznych, a nie lotna efemeryda | lunar_jamming (composing jamming, lunar_service, lunar) | lunar_jamming::tests (17 lib tests: 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 |
| Księżycowy kontur odmowy z pasmem niepewności z zmierzonego rozrzutu C/N₀ | Raport lunar-jamming nie opiera już swojego konturu odmowy na jednym skalarze. Emituje pełny zmierzony rozkład C/N₀ sygnału pożądanego po tabeli dla każdego satelity — n, min, p05, p25, mediana, p75, p95, max, średnia, odchylenie standardowe z próby oraz własna asymetria próby (p95 − mediana) − (mediana − p05) — obok wierszy dla każdego łącza, które pozostają niezmienione. Kontur jest następnie raportowany przy każdej z tych statystyk pozycyjnych według OBU kryteriów odmowy, które rozpoznaje silnik, nigdy jednego zamiast drugiego: dotychczasowego kryterium stosunku mocy (J/S = 30 dB, ten sam próg, którego używają attack_surface i tracking_loop, oraz kryterium stojące za kolumną denial opublikowanej księżycowej tabeli zagłuszania łączy) i kryterium utraty zaczepienia (efektywne C/N₀ spadające do tracking_threshold_dbhz), które jest kryterium, według którego oceniana jest kolumna links[].status tego raportu. Każdy punkt konturu jest podany na obu osiach płaszczyzny odmowy — EIRP zagłuszacza wymagane przy odległości scenariusza oraz odległość odmowy przy EIRP scenariusza — więc pasmo jest przedziałem na tych samych osiach, na których rysowany jest wykres konturu. Krawędzie pasma TO contour(p05) i contour(p95): to samo odwzorowanie w postaci zamkniętej zastosowane do własnych kwantyli próby, a nie sigma dopasowana do próby i nie mediana ± k·stdev, a raport mówi o tym w łańcuchu band_definition obok liczb. stdev jest emitowane dla ciągłości i nie jest przez nic używane. Kwantyl, którego C/N₀ jest już na poziomie progu śledzenia lub poniżej, nie ma skończonego J/S odmawiającego; te kolumny są emitowane jako null z policzonym powodem, a nie jako nieskończoność ani obcięty promień |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna względem własnych funkcji wprost silnika, co jest wszystkim, co ta możliwość może uczciwie twierdzić. Każdy punkt konturu jest inwersją w postaci zamkniętej, a każda inwersja jest sprawdzana przez przepuszczenie jej wyniku z powrotem przez funkcję wprost (FORWARD), którą oceniono własne wiersze raportu: kolumna J/S przez jamming::effective_cn0_dbhz (która musi zwrócić tracking_threshold_dbhz z dokładnością do < 1e-9 dB-Hz), kolumna odległości zagłuszacza przez jamming::free_space_path_loss_db i jamming::j_over_s_db (to samo J/S z dokładnością do < 1e-9 dB), kolumna EIRP przez jamming::j_over_s_db przy własnej odległości zagłuszacza scenariusza. Kontur jest dodatkowo sprawdzany jako GRANICA zbioru odmowy, a nie punkt wewnątrz niego — lock_status traci synchronizację przy ostrej nierówności, więc zmierzono, że werdykt przełącza się z DEGRADED na LOST w przedziale 1e-4 dB J/S po obu stronach konturu, czego kontur przesunięty o epsilon by nie przeszedł. Najmocniejsza kontrola dotyczy pojedynczego łącza, a nie kwantyla: zastosowanie tego samego odwzorowania do własnego C/N₀ każdego wiersza odtwarza kolumnę statusu raportu dokładnie — 0 rozbieżności w 38 z 38 wierszy w udokumentowanym punkcie pracy (kind = lunar-jamming, każde dane wejściowe domyślne poza jammer.range_m = 25 000 m), gdzie 26 wierszy jest LOST, a 12 nie jest. Monotoniczność jest zmierzona, a nie założona: 20 001 próbek w [tracking_threshold + 1e-3, 80] dB-Hz, 0 naruszeń ściśle malejącej odległości zagłuszacza i ściśle rosnącej wymaganej mocy, więc uporządkowanie kwantylowe pasma jest wykazane, a nie zadeklarowane. ExternalDataset jest odrzucony, a wraz z nim sprawdzenie niezależne: nie istnieje zmierzona księżycowa kampania zagłuszania, z którą można by porównać promień odmowy, konstelacja to ilustracyjna geometria klasy Moonlight/LCNS z danych publicznych, a nie lotna efemeryda, a dane wejściowe konturu (EIRP, moc zagłuszacza, wzmocnienia anten, temperatura szumowa) są reprezentatywnymi rzędami wielkości. ReferenceImpl również rozważono i odrzucono — odwrotność i wyrażenie wprost to TA SAMA algebra czytana w dwóch kierunkach, więc obieg tam i z powrotem wychwytuje błędy przepisania i znaku, ale nie jest niezależną implementacją; nazwanie go kontrolą krzyżową byłoby zapożyczeniem niezależności, któremu mają zapobiegać niezmienniki macierzy. To, co daje pasmo, jest zmierzone i przytoczone, a nie zadeklarowane: w tym punkcie pracy kontur jednoskalarny wynosi 27,402916 km i umieszcza 25 km po stronie odmowy dla wszystkich 38 wierszy, podczas gdy pasmo 21,256108 .. 29,921360 km zawiera punkt pracy i dlatego pokazuje podział, który faktycznie widać w tabeli. Zmierzono też, że oba kryteria się rozchodzą — pasmo stosunku mocy (38,186527 .. 53,691675 km) w ogóle nie zawiera 25 km — dlatego drukowane są oba | lunar_jamming (denial_js_db, range_for_free_space_path_loss_m, Cn0Distribution, DenialContourPoint, ContourBand, DenialContour; inverting jamming::effective_cn0_dbhz, jamming::j_over_s_db and jamming::free_space_path_loss_db) | lunar_jamming::tests (10 lib tests: 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) |
| Moc detekcji międzymodalnego monitora integralności | Raport hybrid-optical-rf podaje, co monitor chi-kwadrat międzymodalny może rzeczywiście WYKRYĆ, a nie tylko że przechodzi przypadek bez uszkodzeń: minimalny wykrywalny bias dla każdej monitorowanej osi (wschód, północ, góra, zegar) przy podanych w scenariuszu prawdopodobieństwach fałszywego alarmu i niewykrytego zdarzenia, krzywą mocy detekcji po obu stronach, bezszumową krotność biasu, przy której zrealizowana statystyka po raz pierwszy przekracza próg, oraz czas do detekcji dla rampy biasu o podanym tempie. Uszkodzenia są też wstrzykiwane przez rzeczywisty monitor, a zwracana przez niego statystyka jest raportowana obok predykcji analitycznej | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Dwie wewnętrzne wyrocznie, żadnego zewnętrznego zbioru danych. (1) Obieg w postaci zamkniętej: minimalne wykrywalne obciążenie powstaje przez inwersję ogona niecentralnego chi-kwadrat względem parametru niecentralności (raim::pbias) i jest weryfikowane przez podanie otrzymanej niecentralności z powrotem do raim::noncentral_chi2_cdf przy własnym progu monitora, co musi zwrócić P_md. (2) Wstrzyknięcie a analiza: obciążenie jest wpisywane do estymaty RF jednej osi i cross_raim::run_cross_raim jest uruchamiane ponownie, więc statystyka porównywana z analityczną niecentralnością jest tą, którą obliczył monitor, a nie ponownym wyprowadzeniem. Ziarnowy Monte Carlo samej statystyki jest zawarty w testach jako trzecia kontrola; celowo NIE ma go w raporcie, ponieważ estymata próbkowana byłaby wolniejsza i nieodtwarzalna bit w bit. ExternalDataset jest odrzucony: wielkość ta to moc detekcji TEGO monitora przy alokacji sigma TEGO scenariusza, a wielkości sigma, przez które skalowane jest MDB, są reprezentatywnymi danymi wejściowymi opartymi na modelu, a nie pomiarami. ReferenceImpl również rozważono i odrzucono — Monte Carlo próbkuje tę samą statystykę, którą opisuje analiza, więc wychwytuje błędy przepisania i współczynników, ale nie jest niezależną implementacją monitora. 0,30 zaokrąglenie 2 (zarejestrowane z góry 0135a9e4), zablokowane (pozostaje MODELLED): SciPy 1.18.1 chi2/ncx2/brentq odtwarzają próg raportu (z dokładnością do 5.4e-12), MDB na oś, krzywą mocy, krotność przecięcia i czas do detekcji rampy (z dokładnością do 5.3e-10) w pięciu konfiguracjach; statystyki wstrzykniętych uszkodzeń nie mają niezależnej wyroczni, a wielkości sigma są danymi wejściowymi opartymi na modelu, więc zakres czeka na decyzję właściciela | hybrid_integrity | hybrid_integrity::tests (the detection-power curve runs from the false-alarm rate at zero fault to 1 − P_md at the minimum detectable bias; the minimum detectable bias fed back through noncentral_chi2_cdf at the threshold the monitor itself applied returns P_md to 1e-9, on every axis and through the public helper; a bias actually injected into the RF estimate shifts the monitor's own statistic by exactly the hand-computed b²/(σ_rf² + σ_opt²); a noise-free bias is caught above √(T/λ*)×MDB and missed below it, with the injected ladder straddling that crossing; detection power is monotone in fault magnitude and identical on all four axes in MDB multiples; a seeded 200,000-sample Monte-Carlo of the monitor statistic reproduces the analytic power within 4σ at four points on the curve; the timing MDB is pinned above the timing alert limit, which is a measured weakness and not a feature; the Wilson-Hilferty quantile is measured to disagree with the monitor's exact threshold by ~4%, recording why it was not used; the ramp figure is exactly MDB/rate and scales inversely with the rate, and a non-positive rate reports null rather than zero); tests/hybrid_fault_power_scipy_oracle.rs (report_detection_power_matches_scipy_chi2_and_ncx2; report_detection_power_matches_scipy_with_comparable_sigmas) |
| Ponowne narastanie kowariancji po przekazaniu względem limitu alarmu | Raport hybrid-optical-rf udostępnia model szumu procesu filtra i podaje, jak długo rozwiązanie po przekazaniu pozostaje w limicie alarmu: dla obu kierunków przekazania niesie kowariancję dla każdej osi, jaką pozostawiło przekazanie, propaguje ją naprzód przy podanym szumie procesu typu błądzenie losowe i raportuje czas, w którym 1σ przeskalowane współczynnikiem pokrycia osiąga poziome, pionowe i czasowe limity alarmu, który limit zostaje osiągnięty pierwszy, stałą czasową podwojenia wariancji oraz próbkowany profil dryfu, który obejmuje przekroczenie. PSD szumu procesu, współczynnik pokrycia i limity alarmu są wszystkie danymi wejściowymi z udokumentowanymi wartościami domyślnymi | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni. Przecięcie jest rozwiązaniem w postaci zamkniętej wzrostu wariancji błądzenia losowego, a testy obliczają je niezależnie z wartości, które publikuje sam raport, a nie z wnętrza emitera. Kowariancja początkowa jest przypięta bit w bit do śladu, który istniejący już blok przekazania raportował, więc wybieg nie może propagować kowariancji, której nikt inny nie widział. PSD szumu procesu są reprezentatywnymi danymi wejściowymi MODELLED, a czasy przecięcia skalują się z nimi wprost, co test skalowania podaje jako zmierzoną własność, a nie twierdzenie. ExternalDataset jest odrzucony celowo: czas wybiegu jest bezpośrednią funkcją dwóch PSD opartych na modelu oraz limitów alarmowych, które same są reprezentatywne, i nie ma zmierzonego księżycowego wybiegu przekazania optyczno-RF, z którym można by porównać. Zewnętrzna wyrocznia wymagałaby tu opublikowanej krzywej wzrostu kowariancji po przekazaniu lub dokładności holdover dla porównywalnego odbiornika z podanym modelem szumu procesu, sprawdzonej z tolerancją | hybrid_integrity | hybrid_integrity::tests (the coast starts from exactly the covariance trace the handoff block reports, for both directions, so the replayed diagonal cannot drift from the reported handover; the reported crossing time is recomputed from the report's own handover sigma, process-noise PSD and coverage factor, and the bound is inside the alert limit just before it and outside just after; the coast time scales exactly inversely with the process-noise PSD and shortens when the alert limit tightens; a zero-PSD coast reports null rather than a zero time, because never is not immediately; the emitted profile crosses exactly once and brackets the reported crossing; the variance doubling time and the alert-limit crossing time are pinned apart, being eight orders of magnitude different after the tight optical stage and within one order of magnitude after the loose RF stage; leaving the optical modality buys more coast time than leaving RF, by exactly the covariance difference divided by the horizontal growth rate; and random_walk_time_to_limit separates already-outside, crosses-at-t and never-crosses) |
| Wzorzec anteny poza osią główną w eksporcie geometrii księżycowej | Eksport geometrii dla każdego satelity niesie, dla każdej (epoka, satelita), kąt poza osią główną W SATELICIE oraz wzmocnienie nadawcze w stronę miejsca z rzeczywistego wzorca (Airy) równomiernie oświetlonej kołowej apertury i raportuje liczbę w wiązce według tego wzorca OBOK liczby w wiązce według symetrycznego przybliżenia wzmocnienie-do-szerokości wiązki (θ_3dB[deg] = √(31000/G_lin)), z różnicą emitowaną jako jawna korekta w łączach, w satelitach na epokę oraz jako najgorsza pojedyncza epoka. Obie domniemane sprawności apertury przybliżenia są emitowane (0,641 wobec reguły 70·λ/D stopni, z którą jest podawane, 0,920 wobec jednostajnej kołowej apertury), więc sprawność, którą po cichu zakłada, jest podana, a nie wnioskowana. Domyślnie wyłączone: blok pojawia się tylko wtedy, gdy podano zarówno miejsce eksportu, jak i aperturę | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Mieszane i rozdzielone, a nie zsumowane. WZORZEC leżący u podstaw jest sprawdzony zewnętrznie i ma własny wiersz (wzorzec scipy.special.j1 z dokładnością do < 0,05 dB w tests/validate_p1_orbital_footprint.rs, a tu dodatkowo opublikowana odcięta połowy mocy Airy'ego x = 1,61634 wyznaczona bisekcją, a nie założona). GEOMETRIA jest sprawdzana względem trygonometrii trójkąta w postaci zamkniętej, zapisanej innym wyrażeniem niż testowany iloczyn skalarny. OBJĘCIE rzeczywistej wiązki przez przybliżony stożek jest wyprowadzoną algebrą (28.019/√η wobec 29,479 stopnia na λ/D), więc poprawka może być niedodatnia tylko dla η ≤ 0,9035. Ale same LICZBY satelitów w wiązce nie mają zewnętrznej wyroczni: żadna opublikowana tabela nie podaje, ile satelitów powłoki klasy Moonlight/LCNS utrzymuje miejsce przy biegunie południowym w wiązce połowy mocy danej czaszy, a konstelacja jest ilustracyjnym przybliżeniem z danych publicznych, a nie lotną efemerydą. Zmierzona rozbieżność w udokumentowanym punkcie pracy — 0 łączy w wiązce według rzeczywistego wzorca wobec 28 według przybliżenia, −2,33 satelity na epokę, najgorsza epoka 3, na 76 ocenianych łączach — jest więc ustaleniem MODELLED o przybliżeniu, przypiętym jako literał regresyjny (najbliższy wiersz leży 0,069° od któregokolwiek brzegu wiązki, cztery rzędy wielkości powyżej jakiejkolwiek rozbieżności na ostatniej cyfrze), a nie zewnętrznie sprawdzoną liczbą pokrycia. Oznaczenie wiersza jako ExternalDataset na podstawie własnej zewnętrznej kotwicy wzorca byłoby zapożyczoną walidacją, czemu mają zapobiegać niezmienniki macierzy. 0,30 zaokrąglenie 2 (zarejestrowane z góry d9755d28), zablokowane (pozostaje MODELLED): geometria SPICE i funkcje Bessela SciPy odtwarzają kąt poza osią (najgorzej 3.0e-5 deg), zysk Airy'ego i flagi w wiązce w 6 336 wierszach stanów lotnych orbiterów i udokumentowanym punkcie pracy; ale na geometrii lotnej flagi dzielą się według tożsamości satelity (najbliższe łącze jest 1,66 deg od brzegu wiązki), widoczność 5 deg jest sprawdzana jako flaga, a nie liczbowa elewacja, flaga przybliżenia symetrycznego stosuje regułę kciuka 31000/G do sprawdzonego kąta bez sprawdzenia reguły, a implikowane sprawności nie mają wyroczni; zakres czeka na decyzję właściciela | lunar_service, antenna | antenna::tests and lunar_service::tests (the half-power crossing located by bisection on the pattern matches the published Airy x = 1,61634 and yields the exact 1,02899·λ/D width, recording that the conventional 1,02 coefficient sits at −2,955 dB not −3,010 dB; the pattern is strictly decreasing over 400 points from boresight to the first null; the implied-efficiency algebra round-trips to 1e-12 and reproduces 0,641 / 0,920; the off-boresight angle matches tan θ = R·sin γ/(r − R·cos γ) at 20 points and both limits to 1e-12; the approximate cone contains the real beam row by row; the headline counts equal the per-row flags they summarise and the correction equals their difference; every row verdict is recomputable from the emitted report alone; every emitted numeric and boolean field has a unit and a provenance class; an impossible aperture emits no block; with no antenna configured the export keeps exactly its six pre-existing keys, 0 leaves changed and 0 removed); 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) |
| Utrata zaczepienia pętli śledzącej i wciąganie spoofingu przy zakłóceniach | Utrata zaczepienia obliczona z dynamiki pętli zamiast ze stosunku mocy: jitter termiczny 1σ fazy nośnej (Costas) i kodu (niespójny wczesny/późny) względem C/N₀ ze stratą kwadratową, względem podanych reguł 3σ_PLL + θ_e ≤ 45° i 3σ_DLL + opóźnienie rampy ≤ d/2 chipa; progi C/N₀ zaniku i ponownego zaczepienia z nazwaną pętlą ograniczającą i histerezą WYPROWADZONĄ z szerszego pasma wciągania, a nie zadeklarowaną; deklarowany czas do utraty zaczepienia z dwuprogowego detektora zaczepienia z czasami potwierdzenia, raportowany osobno od fizycznego czasu ucieczki fazy (średni czas Viterbiego między poślizgami cyklu, w log₁₀ s, ponieważ obejmuje setki dekad); największe przesunięcie kodu i tempo Dopplera nośnej, za którymi pętle ofiary mogą nadążyć; oraz PROMIEŃ ODMOWY, jaki implikuje dynamika pętli, raportowany obok istniejącego promienia stosunku mocy, z ich różnicą ze znakiem jako własnym nazwanym polem. Uruchamialne jako rodzaj scenariusza tracking-loop |
ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie zewnętrznie miarodajnej — Własny korelator sdr silnika (sdr::correlate / synth_if / CaCode) krokowany na syntetycznym IF z ziarnem przy skalibrowanym C/N₀ — osobna ścieżka kodu dochodząca do tych samych liczb przez numeryczną korelację próbkowanego IQ, a nie przez algebraiczne wyrażenie na jitter, więc jest to inna droga, a nie powtórzenie — plus standardowe stablicowane wartości zmodyfikowanej funkcji Bessela I₀ dla członu poślizgu cyklu. Teoria pętli wg Kaplan i Hegarty rozdz. 8 oraz Viterbi/Gardner dla czasu poślizgu. Wiersz pozostaje ReferenceImpl/MODELLED: kontrola krzyżowa znajduje się w tej samej bazie kodu, a sprawdzenie bessel_i0 waliduje jedną funkcję specjalną, a nie model śledzenia, więc podniesienie statusu wiersza na tej podstawie byłoby etykietowaniem we własnym interesie. ExternalDataset wymagałby zarejestrowanego surowego zbioru IF z prawdą podłożową C/N₀ i opisanym momentem utraty synchronizacji (klasa TEXBAT/OAKBAT); żaden nie jest dołączony do tego drzewa, a nawet z IQ te zbiory nie publikują prawdy o stanie pętli na epokę, więc deklarowany czas utraty synchronizacji można by sprawdzić tylko względem detektora synchronizacji innego odbiornika, co jest wyborem opartym na modelu, a nie wyrocznią. Szerokości pasm pętli, czas całkowania, odstęp korelatora, współczynnik wciągania, czasy przebywania, moc zagłuszacza i wzmocnienia anten są reprezentatywnymi wartościami pasma, a nie kartą katalogową. 0,30 zaokrąglenie 2, GNSS-SDR 0.0.19 (GPL-3.0, uruchamiany jako program) na niezależnie wygenerowanym IF (zarejestrowane z góry 6ef7698c, poprawki metody pomiaru ujawnione), ustalenie (pozostaje MODELLED): jitter PLL i DLL w pętli zamkniętej zgadza się z dokładnością do 8 % przy 35 do 45 dB-Hz, obciążenie dynamiczne 10 Hz/s z dokładnością do 1 %, a opóźnienie rampy kodu pierwszego rzędu z dokładnością do 2 %; przy 30 dB-Hz jitter PLL jest o 21 % wyższy, a jitter DLL o 32 % niższy, zmierzone progi reguły 15 stopni leżą 1,5 dB powyżej silnika, a pętla drugiego rzędu ślizga się 0,5 do 2 dekad częściej niż ograniczenie czasu poślizgu pierwszego rzędu. 0,30 rewizja: czas poślizgu Costasa używa teraz SNR pętli rho/4 (poślizgi o pół cyklu); domyślne jitter_table log10_mean_time_to_cycle_slip_s spada z 11,58 do 2,10 przy progu 25,47 dB-Hz | tracking_loop (composing sdr, jamming) | tracking_loop::tests (open-loop Costas discriminator jitter against sdr::correlate stepped forward on seeded synthetic IF, 3 pooled noise realisations × 900 epochs, agreeing to 0,63% over 35-45 dB-Hz, with the squaring-loss term required to fit at least 3× better than the no-squaring-loss form wherever it is resolvable; the ~32 dB-Hz atan-discriminator saturation asserted rather than merely stated, so the validity limit is pinned; closed-loop σ against a stepped sdr Costas loop over 4000 epochs to 3,7%; first-order DLL ramp lag against a stepped sdr DLL to 0,17%; bessel_i0 against tabulated I₀ to 7.4e-8; the hysteresis width required to fall in [5·log₁₀ r, 10·log₁₀ r] across 4 ratios × 2 integration times × 3 bandwidths); api::tests::tracking_loop_kind_round_trips_through_the_dispatch; tests/tracking_loop_gnss_sdr_oracle.rs::finding_is_pinned |
| Kowariancja współrzędnych punktu na powierzchni Księżyca z harmonogramu opóźnień VLBI, odróżniona od kowariancji stacji ziemskich | Trzeci wybór układu odniesienia, all-stations-fixed, który utrzymuje każdą stację ziemską i estymuje wyłącznie związane z ciałem Księżyca współrzędne NADAJNIKA — konfiguracja, dla której faktycznie podaje się niepewność punktu na powierzchni Księżyca, ponieważ współrzędne stacji ziemskich są daną wejściową modelu opóźnienia, a nie jego niewiadomą. Istnieje, ponieważ kowariancja na poziomie stacji i kowariancja punktu na powierzchni to RÓŻNE WIELKOŚCI oddzielone ramieniem dźwigni ρ/B i nic wcześniej nie powstrzymywało podawania jednej względem drugiej. Emitowany blok beacon_link niesie ρ, najdłuższą linię bazową, ramię dźwigni, postać punktu na powierzchni łącza równopodziału c·σ_τ·(ρ/B)·√(g/N), obliczoną sigma nadajnika dla każdej współrzędnej i ich stosunek — stosunek jest null, a nie mylący, gdy nadajnik nie jest estymowany lub macierz ma deficyt rzędu. B jest brane jako NAJDŁUŻSZA obecna linia bazowa, najkorzystniejsza, więc stosunek może tylko zaniżać. Uruchamialne jako datum = "all-stations-fixed" z estimate_beacon = true, co jest odrzucane z komunikatem wskazującym brakującą daną wejściową, gdy nadajnik nie jest estymowany |
ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie zewnętrznie miarodajnej — Tożsamości w postaci zamkniętej, bez deklarowanej ani dostępnej zewnętrznej wyroczni. Ramię dźwigni jest sprawdzane względem ρ/B, a dwie postacie ekwipartycji względem siebie z dokładnością do 1e-15 — tożsamości algebraiczne, więc wychwytują błąd okablowania i nic poza tym, i tak są oznaczone. Istotny wynik jest MEASURED, a nie zadeklarowany: opóźnienie z ustalonej bazy ogranicza KIERUNEK do latarni, więc składowa wzdłuż linii widzenia dociera do macierzy informacyjnej tylko przez człon odległości bliskiego pola, a test odczytuje wynikającą z tego anizotropię z wyemitowanego widma zamiast ją wyprowadzać. AM-HM czyni √(p/trace(M)) twardym dolnym ograniczeniem, więc łącze z izotropową ekwipartycją może jedynie ZANIŻAĆ, a stosunek wartości obliczonej do ekwipartycji jest dokładnie anizotropią, którą odrzucono. MEASURED na parze podobnej do Goldstone/Canberra, której cięciwa wynosi 10726,748 km: w 112 próbkowanych dniach 36 nie dopuszcza w ogóle wspólnie widocznej epoki przy masce 10°, najwięcej wspólnie widocznych było 17 z harmonogramu 49 próbek, a w 73 dniach użytecznych stosunek trzech składowych wynosi od 113,9× do czterech rzędów wielkości więcej, mediana 1513×, podczas gdy ograniczenie do dwóch kierunków poprzecznych, których linia widzenia nie pozbawia informacji, daje 3,94× do 25,8×, mediana 7,8×. CZEGO TEN WIERSZ NIE TWIERDZI: żadnej z tych liczb jako własności rzeczywistej kampanii. Ustala, że wielkość dla punktu na powierzchni jest teraz OBLICZANA, a nie zakładana, i że nie można jej po cichu zamieniać z wielkością na poziomie stacji. Pozostaje ReferenceImpl/MODELLED: nie istnieje opublikowana kowariancja punktu powierzchniowego księżycowego VLBI, względem której można by walidować, stacje i miejsce latarni są ilustracyjne, a nie pomierzone, a efemeryda, zegary, troposfera i parametry orientacji Ziemi są USTALONE, więc jest to ograniczenie Cramér-Rao dla zredukowanego zbioru parametrów i samo w sobie optymistyczne. Ta sama wielkość na ścieżce jądrowej (latarnia na Księżycu DE440) jest sprawdzona niezależnie we własnym wierszu, „…, kernel path"; na tej ścieżce analitycznej najmniejsze sigma latarni jest o 3,9 % poniżej wyroczni SPICE tamtego wiersza, dlatego ten wiersz pozostaje MODELLED | lunar_vlbi_fim (composing lunar_vlbi, fim, cio, lunar_frame, frames) | lunar_vlbi_fim::tests (7 lib tests: every datum spelling round-trips through parse/as_str and an unknown one is refused; holding every station without the beacon is refused with an error naming estimate_beacon; the lever arm is asserted EQUAL to ρ/B and the beacon equipartition EQUAL to the station equipartition times it, both to 1e-15, with a further assertion that the lever arm exceeds 10 so the two budgets are not confusable on this geometry; the fixture's published baseline is pinned to 10726,748 km and its 49-sample schedule asserted to yield strictly fewer than 49 mutually visible observations; the beacon spectrum on a single baseline is measured to span at least five decades and the resulting ratio asserted above 1 by AM-HM and above 100 in fact; the station-plus-beacon layout is asserted rank-deficient with BOTH computed fields null while the modelled comparand still reports. Plus a guard on the fixture itself: a top-level key spliced after an array-of-tables becomes station data instead, so the splice point is asserted and the parsed scenario checked to carry the key — the failure mode is a run that silently uses a different configuration from the one the test names) |
| Księżycowe różnicowe PNT — budżet reszty łącza korekcji | Trzy człony, które korekcja różnicowa zbiera między epoką, w której jest obliczona, a epoką, w której jest używana, każdy wcześniej pozostawiony jako niemodelowany zapas: błąd pomiaru geodezyjnego stacji referencyjnej (skorelowany między satelitami, niezależny od linii bazowej, transfer pozycji ~1:1 i dowodnie niewzmacniany przez DOP), starzenie korekcji (zamrożony wektor błędu orbity przeprojektowany na linię widzenia, na którą własny propagator silnika stawia satelitę o jedno opóźnienie później, plus dryf zegara c·σ_y(τ)·τ z skalibrowanego prawa potęgowego) oraz jednostajna kwantyzacja łącza w dokładnej pełnej skali ±(orbit_err + clock_err) z wariancją step²/12. Raportowane zarówno w dziedzinie odległości, jak i pozycji, obok — nigdy zamiast — istniejącej reszty i poziomu ochrony, z krzywą opóźnienia obok pojedynczej wartości | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamości w postaci zamkniętej i samospójność: wariancja jednostajnego kwantyzatora step²/12, dokładna propagacja kowariancji (GᵀG)⁻¹GᵀRG(GᵀG)⁻¹ redukująca się do σ·PDOP dla równych σ, transfer członu pomiarowego 1:1 jako konsekwencja û_user ≈ û_ref oraz domknięcie kwadraturowe przy wyłączaniu. Kontrola krzyżowa PDOP względem orbit::dop dzieli macierz normalną [−û, 1], więc jest kontrolą spójności i jest tak oznaczona, a nie niezależną wyrocznią. Nie jest dostępny ani deklarowany żaden ExternalDataset: żadna księżycowa stacja powierzchniowa nie ma opublikowanej dokładności pomiaru, żadne księżycowe łącze korekt różnicowych nie ma opublikowanego opóźnienia ani formatu komunikatu, a wynik kwantyzacji jest postacią zamkniętą, a nie pomiarem. RTKLIB — już zewnętrzna wyrocznia kodowa dla jądra różnic pojedynczych i ważonych najmniejszych kwadratów — dałoby się uruchomić ze świadomie błędnie pomierzoną bazą, by potwierdzić transfer pomiaru 1:1, ale to jest niezależny kod nad tą samą algebrą pierwszego rzędu linii widzenia. WIELKOŚCI SĄ MODELLED: domyślny błąd pomiaru to własna alokacja realizacji układu księżycowego tego crate'a, a nie zmierzona stacja, opóźnienie i liczba bitów to dane wejściowe ILLUSTRATIVE, a wzrost samego WEKTORA błędu efemerydy rozgłaszanej nie jest w ogóle modelowany — co podaje wyemitowany łańcuch prawa starzenia, ponieważ jest to człon, który najprawdopodobniej zdominuje rzeczywiste łącze | lunar_dpnt | lunar_dpnt::tests (a purely-additive guard whose key-set delta is exactly {correction_link, units} with every pre-existing value bit-identical against literals captured before the change; survey error does NOT decorrelate with baseline while the orbit term does, and survives a zero baseline where the orbit term is exactly zero — the structural check that catches wiring the term into the wrong place; a 1 m station error transfers 1:1 and is proved not DOP-amplified; zero latency reproduces the un-aged residual bit-for-bit and the residual is monotone in latency, with the emitted curve equal to direct runs; the quantization step halves exactly per bit and σ² = step²/12, and the full scale tracks the injected magnitudes; each term switched off in turn recovers the other two in quadrature; equal per-satellite σ propagates to exactly σ·PDOP and that PDOP agrees with orbit::dop; every emitted field carries a unit and a provenance class, checked in both directions) |
| Mapa pokrycia i dokładności księżycowej stacji referencyjnej | Przegląd Monte Carlo księżycowego modelu różnicowego PNT po siatce użytkowników przy biegunie południowym i dobie epok (rodzaj lunar-station-coverage): dla różnicowej stacji referencyjnej w znanym miejscu przy biegunie południowym, dla każdego punktu i dla regionu, percentylowy skorygowany i nieskorygowany błąd pozycji (3-D, poziomy, pionowy), dostępność z powodem dla każdej niedostępnej epoki (user_lt4, station_missing_sat), pokrycie względem progu podanego przed przebiegiem, poziomy ochrony DO-229E, promień pokrycia dla każdego sektora azymutu oraz budżet łącza korekcji na stacji i w najgorszym punkcie. Nie jest to twierdzenie o działaniu żadnego rzeczywistego systemu; bez powiązania z żadną agencją ani jej poparcia |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Arytmetyka przeliczona niezależnym skryptem numpy na wyeksportowanych przypadkach (scripts/gen_lunar_station_ref.py, numpy 2.5.4; zarejestrowane z góry w tests/fixtures/lunar_station/PREREGISTRATION.md, zatwierdzone samodzielnie w 9caedf97 przed pierwszym przebiegiem): w 20 przypadkach ze wszystkimi składnikami błędu zbiory widoczne i status są identyczne, surowe błędy zasięgu zgadzają się z dokładnością do 1.4e-14 m, wektory i wielkości błędu pozycji z dokładnością do 1.4e-9 m wobec progu 1e-6 m, a p95 każdego punktu równa się numpy.percentile bit w bit; poprawki stacji NIE osiągnęły progu 1e-9 m (najgorzej 3.73e-9 m, 15 z 20 przypadków), a wraz z nimi skorygowane błędy zasięgu: sprawdzone w arytmetyce 60-cyfrowej, obie strony mieszczą się w zaokrągleniu podwójnej precyzji względem dokładnej wartości, ponieważ człon pomiarowy jest różnicą dwóch zasięgów 1e7 m, których jednostka ostatniego miejsca wynosi 1.86e-9 m; zapisane, nie dostrojone. Rodzaj redukuje się dokładnie do rodzaju lunar-differential-pnt przy jednym punkcie, jednej epoce i jednej próbie. Model błędu, model dekorelacji i każdy próg są własnością tego projektu lub ILLUSTRATIVE; nic tu nie jest twierdzeniem o jakimkolwiek rzeczywistym systemie | lunar_station (over lunar_dpnt, lunar_service) | tests/lunar_station_coverage_reference.rs (one_point_one_epoch_one_trial_reduces_to_lunar_differential_pnt: to 1e-12 m with and without receiver noise; zero_baseline_floor_is_zero_in_every_trial: 0 to 1e-9 m; survey_floor_matches_the_survey_transfer_prediction: p95 within the 5 % band stated before the run; 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 (the pre-registered numpy re-computation, recorded with its miss); lunar_service::tests::south_polar_ring_grid_is_the_published_comparison_grid; tests/lunar_differential_pnt_reference.rs and the registry and cross-platform goldens unchanged (additivity); tests/field_units_global.rs (every emitted field described, no exemption) |
| Księżycowe maski horyzontu terenu z podanego profilu lub polarnego DEM | Maski horyzontu zależne od azymutu dla każdego miejsca dla rodzaju lunar-station-coverage (stacja referencyjna i każdy punkt użytkownika) oraz siatki moonlight-service-volume i jej miejsca eksportu dla każdego satelity (każdy wiersz eksportu zyskuje clears_terrain), w formacie tabeli linii horyzontu 0,36 (skyline::Skyline, liniowa po azymucie z zawinięciem przy 360 stopniach; podany profil i horyzont DEM w jednym miejscu łączą się jako ich maksimum punktowe): podany [terrain] station_horizon lub user_horizon oznaczony swoim źródłem i/lub horyzont wyznaczony ray-marchingiem po południowo-polarnym stereograficznym DEM (układ polarny siatkowy LRO LOLA, odczytany z deskryptora ustalającego jego rozmiar i SHA-256, lub kafel realdata::lola_dem szerokość/długość z [terrain] dem_tile_path, podany z jego SHA-256) wzdłuż wielkich okręgów sfery księżycowej z dokładną krzywizną, od podanej wysokości masztu, przy podanym kroku azymutu i zasięgu. Satelita liczy się w miejscu, gdy przekracza płaską maskę mask_deg i horyzont w swoim azymucie (lunar_service::topocentric); epoka, w której horyzont zostawia mniej niż cztery satelity w punkcie, gdzie płaska maska daje cztery, jest liczona jako powód niedostępności terrain_masked. Dołączony DEM jest wycinkiem produktu LOLA LDEM_75S_240M w domenie publicznej, przepróbkowanym średnią z bloków 5 x 5 do 1200 m (data/lunar-dem/NOTICE.md). Gdy nieobecne, każde miejsce zachowuje płaską maskę, a każdy dokument jest identyczny co do bajtu | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Powierzchnie w postaci zamkniętej (InternalConsistency): zapadnięcie horyzontu nad czystą sferą, krater na płaskowyżu na sferze z obserwatorem w środku i poza nim oraz analityczny stożek względem własnej rasteryzacji. Na rzeczywistym wycinku niezależne śledzenie promieni w numpy (scripts/gen_lunar_terrain_ref.py, numpy 2.5.3; zarejestrowane z góry w tests/fixtures/lunar_terrain/PREREGISTRATION.md, zatwierdzone samodzielnie w edbb9b02 przed powstaniem skryptu) zgadza się w pięciu miejscach: wysokości miejsc z dokładnością do 1.0e-11 m i wszystkie 1800 elewacji horyzontu z dokładnością do 5.5e-10 deg wobec progów 1e-6, liczby uciętych promieni są dokładne; to sprawdza arytmetykę, a nie teren. Nie odtworzono żadnej opublikowanej wartości horyzontu polarnego ani oświetlenia: dołączony wycinek 1200 m wygładza podkilometrowe ukształtowanie, które rozdzielają opublikowane badania oświetlenia, więc horyzonty z DEM są linią widzenia MODELLED nad przepróbkowanym rzeczywistym DEM, a nie horyzontem sprawdzonym niezależnie. Miejsce stacji i konstelacja pozostają ILLUSTRATIVE; nic tu nie jest twierdzeniem o jakimkolwiek rzeczywistym systemie | lunar_terrain (over skyline, lunar_service::topocentric_basis); lunar_station; lunar_service (coverage_masked, masked_visible) | lunar_terrain::tests (bare_sphere_horizon_is_the_dip: the ray march reproduces -acos(R / (R + a)) to 1e-3 deg at every azimuth; a_cone_on_a_lat_lon_tile_matches_the_analytic_cone: the same cone sampled onto a 0,005 deg latitude/longitude tile agrees with the analytic cone to 0,25 deg; a_lat_lon_tile_is_none_outside_and_wraps_longitude; crater_in_plateau_matches_the_closed_form: a flat-floored crater on the sphere, observer at the centre and 4 km and 7 km off it, against the closed-form rim elevation atan2((R + H) cos s - (R + a), (R + H) sin s) with s from the spherical rim-crossing equation, to 0,01 deg at every azimuth; rasterised_cone_matches_the_analytic_cone: a cone rasterised onto a 200 m polar stereographic grid and read through the grid sampler agrees with the analytic cone to 0,25 deg; 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, for both kinds; a_horizon_only_removes_satellites_and_a_wall_removes_everything: user_lt4 keeps its flat count and the epochs a horizon costs are terrain_masked (availability itself can rise, because a horizon can hide a satellite the station does not see), and an 89 deg horizon at the station leaves nothing available; bad_terrain_sections_are_refused; the_vendored_crop_loads_and_is_oriented_as_the_source: Shackleton and Haworth crater floors low, the Malapert massif high, the mirror image not; 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: a tile resampled from the vendored crop gives the station the crop horizon to 0,22 deg (bound 0,5 deg, fixed before the run), with the tile echo and units, and dem_path with dem_tile_path refused; the_export_site_is_masked_by_the_terrain: every export row clears the terrain exactly when it is visible and at or above the site horizon at its azimuth, the geometry does not move, the CSV gains the column only with terrain; the_horizon_matches_the_preregistered_numpy_ray_cast); tests/prediction_frozen.rs and the registry and cross-platform goldens unchanged (additivity) |
| Księżycowe człony wielodrogowości i sprzętu odbiornika stacji referencyjnej | Opcjonalna sekcja [receiver] lunar-station-coverage (LRS-02): zależna od elewacji sigma wielodrogowości(el) = a + b exp(-el / el0) u użytkownika i na stacji (ziemska funkcjonalna postać RTCA DO-229 dla lotnictwa, jej a = 0,13 m, b = 0,53 m, el0 = 10 stopni jako wartości domyślne; na Księżycu każda wartość jest ILLUSTRATIVE), biała u użytkownika i pierwszego rzędu Gaussa-Markowa po epokach na stacji (rho = exp(-dt / tau)); szum termiczny kodu DLL typu wczesny-minus-późny sigma = L_c sqrt(B_L d / (2 C/N0) (1 + 2 / ((2 - d) T C/N0))); biasy międzykanałowe dla każdego kanału stałe w próbie, u użytkownika i na stacji. Człony stacji wchodzą w jej korekcje, człony użytkownika w pomiary surowe i skorygowane, każdy na własnym strumieniu z ziarnem. Gdy nieobecne, każdy dokument pozostaje bez zmian | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postacie zamknięte i statystyki własnych losowań modelu (InternalConsistency): wzór DLL względem obliczenia ręcznego, postać DO-229, różnica dwóch odbiorników przy zerowej bazie, korelacja Gaussa-Markowa dla opóźnienia 1. Nie istnieje żaden pomiar księżycowej wielodrogowości ani odbiornika, z którym można by porównać; wartości są ILLUSTRATIVE i nic tu nie jest twierdzeniem o jakimkolwiek rzeczywistym odbiorniku | lunar_receiver; lunar_station | lunar_receiver::tests (multipath_is_the_do229_form; dll_noise_matches_a_hand_computation: 0,825279 m at 45 dB-Hz, 0,5 Hz, d = 1, 20 ms; 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: sample sigma sqrt(2) a within 6 %; station_multipath_is_gauss_markov: lag-1 correlation exp(-dt / tau) within 0,01, unit variance within 2 %; inter_channel_biases_are_constant_over_a_trial); tests/prediction_frozen.rs and the goldens unchanged (additivity) |
| Narastanie błędu efemeryd księżycowej stacji referencyjnej w czasie opóźnienia korekcji | Opcjonalna dana wejściowa orbit_err_growth_m_per_s lunar-station-coverage (LRS-03): korekcja zastosowana latency_s po jej obliczeniu pomija wzrost g latency_s błędu orbity nadawanej, g izotropowe o tempie 3-D RMS, losowane dla każdego satelity i próby na własnym strumieniu z ziarnem (tempo 1-sigma zakresu tau / sqrt(3)), ponad przeprojektowaniem zamrożonego błędu na linię widzenia. Gdy nieobecne, każdy dokument pozostaje bez zmian. Dodatek K5 do porównania z opublikowanymi twierdzeniami, wstępnie zarejestrowany osobno, uruchamia K5 przy 0,001, 0,01 i 0,1 m/s (ILLUSTRATIVE) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Sigma członu wzrostu w postaci zamkniętej i kontrola propagacji pierwszego rzędu (InternalConsistency). Dodatek K5 (tests/fixtures/lunar_station_published/ADDENDUM-LRS03.md, zarejestrowany z góry samodzielnie w 59d88248): K5 zawodzi przy każdej szybkości, skorygowane p95 3-D 369,8 m, 2315 m i 22797 m wobec progu 1,5 m (292,96 m zapisane bez wzrostu), jak podano przed przebiegiem. Żadne publiczne źródło nie podaje księżycowej szybkości wzrostu: 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: the growth-on minus growth-off link error has sample sigma rate tau / sqrt(3) within 6 % over 1600 draws; linear_growth_is_the_first_order_propagated_error: a velocity error dv propagated with the in-tree two-body integrator from the scenario orbit moves the position by dv tau to within 1 % at 60 s and 600 s); tests/lunar_station_published_oracle.rs::k5_growth_addendum_run (ignored, the recorded addendum) |
| Tryby rozwiązania dla księżycowej stacji referencyjnej: więzy wysokości, trzy satelity, okno użytkownika statycznego | Opcjonalna sekcja [solution] w lunar-station-coverage (LRS-06): wiersz pseudopomiaru wysokości up . dx = e_h o podanym odchyleniu 1-sigma, ważony względem wierszy odległości; minimum trzech satelitów dozwolone tylko wraz z nim; oraz rozwiązanie metodą ważonych najmniejszych kwadratów na ostatnich window_epochs epokach, ze wspólną pozycją statyczną i jednym zegarem na epokę (odpowiedź filtra dla pozycji statycznej bez szumu procesu na tych samych danych; błędy epok traktuje się jako niezależne). Gdy sekcji brak, rozwiązanie migawkowe i każdy dokument pozostają bez zmian. Uzupełnienie porównania z opublikowanymi twierdzeniami, w stylu rozwiązania użytym w źródłach, wstępnie zarejestrowane osobno | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Redukcja migawkowa i przypadki solwera w postaci zamkniętej (InternalConsistency). Dodatek (tests/fixtures/lunar_station_published/ADDENDUM-LRS06.md, zarejestrowany z góry samodzielnie w 001ca100) z więzem wysokości 1 m, trzema satelitami i oknem 6 epok (ustawienia ILLUSTRATIVE; źródła podają filtr, więz wysokości i trzy satelity, ale nie ich ustawienia): K1 do K5 zawodzą, a K6 jest zaliczony, 1 z 6 jak w zapisanym przebiegu; skorygowany błąd p95 3-D dla R300 spada z 280,6 m do 2,11 m (poziomy 0,90 m, nieoceniany), a pokrycie pozostaje 0. Założenie niezależności okna mu sprzyja. To nie jest twierdzenie o jakimkolwiek rzeczywistym systemie | lunar_solution; lunar_station (solution_figures) | lunar_solution::tests (one_epoch_without_height_is_the_snapshot_solve: equals lunar_dpnt::position_error_vector_from_range_errors to 1e-8 m, a loose height row changes nothing, a tight one pins the height error; 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: every figure to 1e-6 relative; height_aiding_and_a_window_do_what_they_say); tests/lunar_station_published_oracle.rs::solution_style_addendum_run (ignored, the recorded addendum) |
| Dokładność i pokrycie księżycowej stacji referencyjnej na tle opublikowanych twierdzeń | Rodzaj lunar-station-coverage uruchomiony przy publicznych założeniach opublikowanych materiałów o księżycowej różnicowej stacji referencyjnej (cztery satelity nawigacyjne na zamrożonych orbitach eliptycznych o okresie 24 h, SISE 10 m 95 %, szum kodu 0,30 m, opóźnienie poprawek 1 s i 600 s, pomiar położenia stacji z dokładnością poniżej decymetra, opublikowane przykładowe miejsce stacji, okręgi południowo-polarne 300 km i 600 km) i oceniony względem liczbowych twierdzeń źródeł według sześciu jednostronnych progów wstępnie zarejestrowanych przed przebiegiem: pokrycie całego bieguna południowego przy p95 poniżej metra (K1, K2), skorygowane p95 poniżej metra i na poziomie decymetrów (K3, K4), wynik poniżej metra utrzymany przy opóźnieniu 600 s (K5) oraz dokładność utrzymana od 10 km do 500 km długości bazy (K6) | ExternalDataset | twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych na podstawie modelu, więc możliwość pozostaje oparta na modelu — Wzorzec: twierdzenia liczbowe pięciu publicznych źródeł zarejestrowane z adresem URL, datą pobrania, SHA-256 i licencją w tests/fixtures/lunar_station/SOURCES.md (arXiv:2602.08432v3; slajdy IOAG Cislunar PNT Workshop 2025 i 2026; UNOOSA ICG WG-B Lunar PNT, czerwiec 2024), przepisane z odniesieniami do stron w tests/fixtures/lunar_station_published/CLAIMS.md. Progi, przypadki i dane wejściowe zostały zarejestrowane z góry w tests/fixtures/lunar_station_published/PREREGISTRATION.md (rewizja 2, 05bf9a19, zatwierdzona samodzielnie przed przebiegiem). 0,36 pierwszy przebieg, ustalenie (pozostaje MODELLED): 1 z 6 progów zaliczony. Pokrycie wynosi 0,00 na obu okręgach wobec >= 0,95, a skorygowany błąd p95 3-D wynosi 280,6 m (300 km) oraz 293,0 m przy opóźnieniu 600 s, wobec <= 1,5 m. Próg decymetrowy (K4) nie mógł zostać zaliczony przy szumie kodu źródeł 0,30 m, co odzwierciedla konflikt między źródłami, a nie wynik modelu. K6 jest zaliczony (stosunek 1,39 wobec <= 1,5), ale jako stosunek dwóch wielkości zdominowanych geometrią nie jest dowodem o dekorelacji w żadnym kierunku. Przyczyna: elementy orbitalne satelitów nie są publiczne, a przy ILLUSTRATIVE elementach z drzewa użytkownik i stacja dzielą cztery satelity powyżej 5 deg tylko w 8,2 % (300 km) i 6,3 % (600 km) epok, przy geometrii bliskiej osobliwości (niekorygowane p95 3,8 km wobec < 10 m w źródłach). Symulacje źródeł używały filtra, więzu wysokości i trzech satelitów we wspólnej widoczności, czego rodzaj migawkowy nie modeluje. Porównanie zatem ani nie potwierdza, ani nie obala opublikowanego twierdzenia „poniżej metra na całym biegunie południowym". Pokazuje, że wynik tego modelu zależy od orbit, które nie są publikowane. To nie jest twierdzenie o jakimkolwiek rzeczywistym systemie; bez powiązania z żadną agencją i bez jej poparcia | lunar_station (over lunar_dpnt, lunar_service) | tests/lunar_station_published_oracle.rs::recorded_finding_one_of_six_bars_passes (the recorded figures against the registered bars); tests/lunar_station_published_oracle.rs::published_claims_comparison_run (ignored, about 7 s in release: re-runs the six registered cases and asserts the recorded figures) |
| ARAIM z jednoczesnymi hipotezami usterek wielu satelitów | araim_reference::add_v42_subset_plan: reguła wyznaczania podzbiorów z ADD v4.2 (P_THRES, FC_THRES, monitorowane podzbiory z najmniejszą liczbą usuniętych najpierw) uogólniona z par na jednoczesne kombinacje do max_order zdarzeń satelitów i konstelacji, z dokładnym prawdopodobieństwem apriorycznym P_no fault prod q_e; add_v42_protection_levels_to_order uruchamia na niej ścieżkę poziomów ochrony z ADD v4.2 (rząd 2 to dokładnie dotychczasowa ścieżka). raim::araim_subset_raim (opcjonalnie): zaawansowany RAIM na tym zbiorze hipotez, każdy monitorowany podzbiór jako jeden tryb (p_fault, T, b, sigma) w sumie ryzyka integralności, podzbiory nieobserwowalne przeniesione do ryzyka niemonitorowanego, budżet przeskalowany przydziałem ryzyka niemonitorowanego z ADD, a podzbiór o największej znormalizowanej separacji raportowany po wykryciu usterki. Prawdopodobieństwa a priori wymagające głębszych podzbiorów niż max_order są odrzucane, nigdy obcinane | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna (InternalConsistency): redukcja rzędu 2 do ścieżki ADD v4.2 sprawdzonej w MAAST, niezależne ponowne wyprowadzenie prawdopodobieństw a priori oraz skonstruowane uszkodzenie dwóch satelitów. Nie wykonano żadnego przebiegu MAAST ani RTKLIB poza parami, więc głębsze zbiory hipotez i poziomy ochrony RAIM podzbiorów nie są sprawdzone zewnętrznie. araim_subset_raim dzieli uproszczenia araim_dual_raim (jedno sigma dla integralności i dokładności, jeden zegar, zwykły ogon normalny): nie spełnia wymagań ADD | 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, the unmonitored risk within P_THRES, a subset removing three or more satellites monitored, and more than ten monitored priors re-derived independently as P_no fault q^k to 1e-12; a_two_satellite_fault_is_found_as_a_pair: no alarm fault-free, and a 30 m bias on two satellites detected with the pair as the subset of largest normalised separation); tests/araim_reference_vectors.rs and tests/integrity_araim_stanford_oracle.rs unchanged (the order-2 path is the MAAST-checked one) |
| RAIM obok wskaźników jakości holdover zegara | Opcjonalna sekcja [integrity] rodzaju clock (clock_integrity::run): dla podanego miejsca i ustawień konstelacji (geometry::sky_geometry), w każdej epoce integralności, gdy oś czasu GNSS nie jest zaprzeczona, migawkowy RAIM (raim::snapshot_raim: test chi-kwadrat parzystości, poziomy ochrony według nachylenia) na satelitach powyżej maski, z losowanymi z ziarnem gaussowskimi residuami o podanej sigmie i opcjonalnym podanym obciążeniem; osobny blok integrity_fom z werdyktami dla każdej epoki, poziomami ochrony i dostępnością. Epoki z odmową są raportowane jako niedostępne, nigdy ekstrapolowane; wskaźniki jakości holdover pozostają bez zmian, a bez tej sekcji wynik jest identyczny co do bajta | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna (InternalConsistency): poziomy ochrony są poziomami snapshot_raim, który jest sprawdzony niezależnie względem RTKLIB we własnym wierszu, przeliczonymi na tej samej geometrii; zachowanie bez uszkodzeń i ze wstrzykniętym uszkodzeniem. Niebo jest reprezentatywną geometrią zadaną presetem (nie datowanym almanachem), residua są syntetyczne, a sigma, limity alarmowe i prawdopodobieństwa są podanymi danymi wejściowymi; nic tu nie jest twierdzeniem o dostępności jakiegokolwiek rzeczywistego odbiornika | clock_integrity (run, sky_at, IntegrityCfg); scenario (Scenario::integrity); report (RunResult::integrity_fom); api (clock dispatch) | tests/clock_integrity.rs (the_block_is_separate_and_absent_by_default: holdover figures unchanged, 111 denied epochs unavailable with no protection level, refused with runs > 1; protection_levels_are_the_snapshot_raims_on_the_same_sky: every sampled epoch's HPL and VPL equal a zero-residual snapshot_raim on the same preset sky exactly, and the fault-free run raises no alarm; a_stated_bias_is_detected_while_it_lasts: a 60 m bias alarms on exactly the 10 epochs it covers; every_integrity_field_has_a_unit); clock_integrity::tests; the clock goldens unchanged |
| Przestrzenna, zaszumiona obserwowalność długości łuku cislunarnego dla wielu rodzin orbit | Próg obserwowalności długości łuku cislunarnego w PRZESTRZENNYM sześciostanowym CR3BP zamiast płaskiego czterostanowego, dla rodzin DRO, halo L2 i prawie prostoliniowego halo L2, z szumem pomiarowym wchodzącym do gramianu i DWOMA raportowanymi kryteriami, bo nie ma jednego uczciwego: opublikowane kryterium rzędu, które jest dowodnie niezmiennicze względem homoskedastycznej sigmy pomiaru (wybielanie mnoży macierz obserwowalności przez skalar, nie zmieniając względnego widma wartości osobliwych, a więc rzędu, defektu i uwarunkowania), oraz kryterium estymowalności — pierwszy łuk, przy którym formalna niepewność 1σ położenia początkowego stanu chief spada poniżej podanej granicy — które jako jedyne zmienia się z szumem. Każdy próg niesie przedział siatki epok, w którym leży; kryterium nieosiągnięte ma wartość null z podaniem powodu. Tryb płaski pozostaje domyślny, a rodziny pozapłaszczyznowe są w nim odrzucane, a nie spłaszczane do stanu, który nie potrafi ich przedstawić | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Niezależny rząd w postaci schodkowej metodą eliminacji Gaussa z częściowym wyborem elementu głównego potwierdza każdy werdykt rzędu dla sześciu stanów — inny algorytm niemający wspólnego kodu z testowaną drogą eigen/SVD. Macierz przejścia stanu CR3BP 6×6, którą to składa, ma własną wyrocznię ReferenceImpl względem całkowania wariacyjnego SciPy, a warunki początkowe halo/NRHO pochodzą z korektora odtwarzającego opublikowaną południową orbitę Gateway L2 9:2. Istniejące ramię filtra pierwiastka informacji jest wprost NIE zaliczane jako potwierdzenie: zużywa te same jakobiany i redukuje się do tej samej macierzy normalnej, więc jest kontrolą spójności między dwiema maszynami numerycznymi, co mówi wyemitowana etykieta rozszerzenia. NIE zakotwiczone zewnętrznie, więc ExternalDataset jest odrzucony, a nie zapożyczony z wiersza STM: same progowe długości łuku zależą od projektu konstelacji MODELLED, siatki epok i — mierzalnie, nawet 40× — od tolerancji wartości osobliwych. Opublikowane planarne 2,09 h jest odtwarzane dokładnie przy rel_tol = 1e-6 i samo zależy od tolerancji (10,25 h przy 1e-4, 0,42 h przy 1e-8), co jest własnością kryterium, a nie orbity. Żaden publiczny zbiór danych nie publikuje progu obserwowalności w długości łuku dla wybranej konstelacji cislunarnej. WYNIK MEASURED: przestrzenny próg sześciu stanów wynosi 22,17 h dla NRHO L2 i 40,42 h dla halo L2, a DLA rodziny planarnej DRO, na której wyprowadzono opublikowane twierdzenie, NIE ISTNIEJE — rząd 4 z 6 z defektem datum 2 i dwiema dokładnie zerowymi wartościami własnymi, defektem strukturalnym, którego żadna długość łuku nie naprawia | cislunar_observability, observability_gramian, intersat_range, cislunar_srif | cislunar_observability::tests and observability_gramian::tests (the default document pinned bit-for-bit by FNV-1a of its JSON, summary and SVG, with explicit-default values asserted to be a no-op and the eight extension keys asserted ABSENT so the capture cannot be regenerated into a self-comparison; the additive units block excluded from the freeze by being stripped and re-hashed against the constant pinned before it existed, which proves rather than assumes that nothing released moved; rank invariance under a homoscedastic sigma asserted at σ = 0, 0,1, 1, 10, 100 m; σ_pos asserted to scale exactly linearly with σ to 1e-6 relative; the DRO null space asserted to be exactly the z and ż coordinate axes with the two causes separated — a range row between coplanar spacecraft has û_z = 0, and the CR3BP out-of-plane block decouples exactly at z = 0; spatial Jacobians against central finite differences and against the crate's independent 3-D range-rate observable; out-of-plane families refused in planar mode) |
| Błąd predykcji orientacji Ziemi w stylu operacyjnym, mierzony jako przewidywanie względem wartości ostatecznych | Dopasowanie metodą najmniejszych kwadratów obciążenia i tempa w oknie wstecznym plus główne składniki okresowe — roczny, półroczny i dwa główne zonalne pływy dla UT1; Chandlera, roczny i półroczny dla bieguna — ekstrapolowane z przeniesieniem ostatniego residuum z okna: klasa używana przez IERS Bulletin A, w miejsce predyktora persystencji, na którym opierał się opublikowany horyzont. Oceniane jedynym uczciwym sposobem: prognoza na T+h zbudowana z szybkich wierszy Bulletin A z chwili T lub wcześniejszych, mierzona względem OPUBLIKOWANEJ PÓŹNIEJ wartości ostatecznej Bulletin B w T+h, a persystencja oceniana obok na identycznym zbiorze epok względem identycznych wartości ostatecznych. Epoka docelowa bez opublikowanej wartości ostatecznej jest pomijana, a nie oceniana ponownie względem kolumny szybkiej; składnik okresowy, którego okno nie może ograniczyć, jest raportowany jako odrzucony wraz z liczbą cykli, które faktycznie obejmuje; niepełne okno jest odrzucane, a nie po cichu skracane | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie zewnętrznie miarodajnej — Trzy niezależne drogi, żadna z nich nie jest opublikowaną liczbą dokładności predykcji. (1) Sygnał analityczny ze znanymi współczynnikami — jedyny sposób na sprawdzenie mechanizmu okresowego, ponieważ żaden zatwierdzony szereg nie jest dość długi, by dopuścić człon roczny. (2) Podręcznikowe rozwiązanie najmniejszych kwadratów w postaci zamkniętej, inna algebra niż testowane rozwiązanie macierzowe, na rzeczywistych wierszach. (3) Prawdziwe zarchiwizowane wiersze predykcji Bulletin A, które publikuje rzeczywisty produkt 2026, porównane dla każdego wyprzedzenia jako statystyka DOPASOWANIA, a wprost nie jako błąd: 0,256 ms przy 1 dniu, 0,695 ms przy 2 dniach, 1,252 ms przy 3 dniach, dryfując do 3,885 ms przy 9 dniach. Jest to więc KLASA Bulletin A, bliska przy krótkim wyprzedzeniu, a nie Bulletin A. Residua przewidywane względem końcowych są rzeczywistymi zmierzonymi wielkościami z rzeczywistych wierszy IERS, ale ich wielkość jest sprawdzana tylko względem KIERUNKU porównania, nigdy względem opublikowanej przez IERS liczby dokładności — odczytanie rzeczywistego produktu to proweniencja, a nie wyrocznia. MEASURED: w dniu 1 predyktor operacyjny daje 3,78 m błędu w układzie Księżyca wobec 11,39 m dla persystencji (3,01×), w dniu 2 10,23 m wobec 21,72 m (2,12×), w dniu 3 20,33 m wobec 30,57 m (1,50×) — i jest GORSZY po upływie trzech dni (0,87× przy 5 dniach, 0,43× przy 10), co raport emituje, zamiast pokazywać tylko horyzonty, które mu pochlebiają. NIE odtworzono: autoregresyjnego filtra residuów i stablicowanej redukcji pływów zonalnych, 365-dniowe okno operacyjne jest nieosiągalne przy zatwierdzonych danych, a BRAK zarchiwizowanej wcześniejszej wersji szeregu w tym repozytorium — więc tabela wersji archiwalnych nie zawiera wierszy, zamiast oceniać wiersz zsyntetyzowany. 0,30 porównanie zewnętrzne, ustalenie (pozostaje MODELLED): oceniony względem tych samych finalnych wartości w 178 zarchiwizowanych wydaniach Bulletin A przy domyślnym 15-dniowym oknie crate'a, MAE UT1 predyktora wynosi od 2.4x do 12.6x wartości Bulletin A przy 1 do 10 dniach (próg 1.5x) i 5,32 ms przy 10 dniach, poza zakresem 0,36 do 3,13 ms 2nd EOP PCC; biegun wynosi od 1.5x do 1.85x wartości Bulletin A (w granicach 1.5x tylko przy 6 i 7 dniach); 19 z 21 warunków zarejestrowanych z góry zawodzi. Poprawka do drogi (3): wiersze produktu 2026, z którymi porównywano, noszą flagę IERS I (zmierzone), a nie P, więc te liczby dopasowania dotyczą zmierzonych wartości szybkich, a nie predykcji Bulletin A. 0,30 runda 2, predyktor najmniejszych kwadratów plus autoregresyjny z analitycznie usuniętymi pływami zonalnymi, względem 178 zarchiwizowanych wydań Bulletin A przy progu rundy 1 (zarejestrowane z góry c93605b4), ustalenie (pozostaje MODELLED): 12 z 21 warunków jest spełnionych; MAE UT1 wynosi od 1,73 do 2.11x wartości Bulletin A przy 2 do 10 dniach (próg 1.5x), podczas gdy biegun mieści się w 1.27x przy każdym wyprzedzeniu. 0,30 rewizja: gdy dane wejściowe offline są teraz klasyfikowane według flagi IERS, liczby dopasowania drogi (3) dotyczą rzeczywistych predykcji Bulletin A (0.256/0.695/1.252/3.885 ms przy 1/2/3/9 dniach wobec wierszy szybkich -> 0.133/0.421/0.839/2.786 ms) | frame_eop, realtime_frame_eop | frame_eop::tests, realtime_frame_eop::tests and tests/operational_eop_predictor_reference.rs (analytic-signal coefficient recovery to 1e-9 at a 365-day window; a bias-plus-rate fit equal to the closed-form ordinary-least-squares slope and intercept to 1e-12 on real rows; TWO look-ahead detectors that wreck the rapid UT1 and pole columns of every row after the issue epoch — leaving the Bulletin B finals intact — and demand bit-identical output, mutation-verified to turn 10 tests red when the fit barrier is loosened by exactly one day; an independently rebuilt epoch list; a target's Bulletin B block blanked and the epoch shown to leave the table; term admission checked at 6, 15, 150 and 365-day windows; monotone row counts; and a frozen pre-change capture of the default report asserted field for field with no tolerance, which additionally asserts the capture does not contain the new keys so it cannot be silently regenerated into a self-comparison); 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 (the opt-in EopSeries::with_ls_ar_prediction extension beyond the last row: in-table answers bit-identical, forecast rows equal to ls_ar_predict, frame arguments past the table follow the forecast instead of clamping; internal consistency) |
| Układ datum Księżyca z kampanii obserwacyjnej | Siedmioparametrowe datum Helmerta wyprowadzone z SYMULOWANEJ KAMPANII OBSERWACYJNEJ zamiast odzyskiwane ze wstrzykniętej transformacji. Stacje ziemskie obserwują katalog radiolatarni na powierzchni Księżyca o znanym źródle według jawnego harmonogramu; pochodne opóźnienia lunar-VLBI są gromadzone w macierzy informacyjnej Fishera współrzędnych radiolatarni i przepychane przez macierz projektową Helmerta A = [I₃ | [p]ₓ | p] do H = AᵀM_bA, więc raportowana dokładność datum jest funkcją programu obserwacji — dokładnie liniową względem sigmy opóźnienia i monotoniczną względem łuku przez libracja, którą raport MIERZY. Defekt datum jest tematem, a nie przypisem: rząd, defekt, liczba uwarunkowania, widmo, nieobserwowalne kierunki w bazie siedmioparametrowej, najsłabszy kierunek nawet przy pełnym rzędzie i udział każdego parametru w nim są emitowane w każdym przebiegu, a każdy parametr, którego kampania nie ogranicza, jest publikowany jako NULL ze statusem. Korelacja błędów radiolatarni jest MEASURED, a nie zakładana — dokładnie zero przy stacjach ustalonych i podawana wraz z kosztem, gdy stacje są estymowane. Można ją uruchomić jako rodzaj scenariusza lunar-frame-campaign |
ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie zewnętrznie miarodajnej — Tożsamości w postaci zamkniętej i niezależna droga w repozytorium, bez deklarowanej zewnętrznej wyroczni. Projekt Helmerta — jedyna nowa pochodna w module — jest wyprowadzany ponownie centralną różnicą skończoną z lunar_frame_realise::apply_helmert, ścieżką niemającą wspólnego wyrażenia z postacią analityczną. Akumulacja, którą to składa, pochodzi z lunar-vlbi-fim, którego jakobian jest różniczkowany różnicami skończonymi względem lunar_vlbi::vlbi_delay_s, a którego jądro algebry liniowej jest osobno zakotwiczone zewnętrznie względem numpy w tests/fim_observability_reference.rs — ten wiersz nie zapożycza żadnego z tych statusów. Wyrocznia fizyczna jest strukturalna, a nie numeryczna: pochodna opóźnienia latarni jest bliskopolową RÓŻNICĄ dwóch prawie równoległych wektorów jednostkowych, więc najgorzej wyznaczony kierunek translacji MUSI być kierunkiem do Ziemi w układzie związanym z ciałem, a test potwierdza obliczoną odpowiedź względem osobno zmierzonego kierunku. MEASURED: sigma translacji wyprowadzona z kampanii 6,3975 m wobec błędu odzysku scenariusza z wstrzykniętą transformacją 0,3125 m (ciaśniej 20,5×), podczas gdy rotacja i skala idą w DRUGĄ stronę, luźniej 2,32× i 13,5× — ścieżka wstrzykniętej transformacji zakłada jedno izotropowe sigma i dlatego rozkłada swój błąd równomiernie na siedem parametrów, czego obserwabla opóźnienia nie robi. Rząd 7/7, ale uwarunkowanie 3.8e5, z jednym kierunkiem 99,57 % czystej translacji w stronę Ziemi i czterdzieści razy gorszym niż jakikolwiek inny. CZEGO TEN WIERSZ NIE TWIERDZI: że liczba z kampanii jest poprawna w wartościach bezwzględnych. Ustala, że liczba ta jest teraz WYPROWADZANA z harmonogramu, geometrii i modelu błędu, a nie z podłożonej odpowiedzi. Pozostaje ReferenceImpl/MODELLED: nie istnieje opublikowana para kampania-plus-kowariancja datum księżycowego VLBI, sieć stacji i sigma opóźnienia są danymi wejściowymi ILLUSTRATIVE (katalog latarni ma źródło, kampania nie), obserwacje są traktowane jako niezależne, podczas gdy troposfera i zegar rzeczywistej sesji są skorelowane między sąsiednimi skanami, a efemeryda, zegary, troposfera i parametry orientacji Ziemi są USTALONE. 0,30 porównanie zewnętrzne, ustalenie (pozostaje MODELLED): po odbudowie każdego wiersza jakobianu latarni z czasów światła NAIF SPICE (DE440, ITRF93, MOON_ME; zarejestrowane z góry 50863551) harmonogram, rząd Helmerta, sigma datum (z dokładnością do 4.7e-3), uwarunkowanie, najsłabszy kierunek (0,07 deg), przegląd libracji i uporządkowanie łuków zgadzają się w sześciu scenariuszach w granicach zarejestrowanych z góry 1 % / 0,2 / 0,05 deg. NumPy na zatwierdzonym jakobianie silnika zgadza się z dokładnością do 3e-14 tam, gdzie stacje są ustalone. Przy estymowanych stacjach różni się o 6.8e-6 wobec zarejestrowanego z góry 1e-9, którego przesłanka o liczbie uwarunkowania była błędna (uwarunkowanie Helmerta 2.1e8; niezależne drogi NumPy różnią się o 3e-6; udziału rezerwowej pseudoodwrotności silnika 1e-9 nie wykluczono), więc wiersz nie jest awansowany na podstawie tej rejestracji. 0,36 ponowna rejestracja przy progu skalowanym uwarunkowaniem (zarejestrowane z góry b887eb05; t = max(1e-12, 10 kappa 2^-53) z uwarunkowania informacji łącznej i jej redukcji Helmerta), ustalenie (pozostaje MODELLED, NOT MET): krok 0 WYKLUCZA rezerwową pseudoodwrotność jako przyczynę luki 6.8e-6 (żadna macierz przed macierzą Helmerta nie przechodzi na rezerwę w sześciu pierwotnych scenariuszach, najmniejszy zapas to współczynnik 2,6), noga SPICE nadal obowiązuje we wszystkich sześciu, a NumPy zgadza się w granicach progu w sześciu z ośmiu scenariuszy (domyślny, dwa łuki, sigma opóźnienia 3x, defekt współliniowy i świeży przebieg ze stałymi stacjami z 2026-12-01; najgorzej 0,13 progu). Zawodzi na stations_estimated (sigma datum do 6.8e-6, uwarunkowanie 9.1e-6, norma z odrzuceniem niezależności 3.5e-6, wobec t = 5.9e-7), a w świeżej dacie latarnia na biegunie południowym nie ma obserwacji, więc informacja latarni ma niepełny rząd (rezerwowa pseudoodwrotność przed macierzą Helmerta w obu świeżych scenariuszach), a niezmieniona wyrocznia NumPy nie może ocenić stations_estimated_fresh (macierz osobliwa). Wyniki: docs/design/evidence/mr05-lunar-datum-cond/RESULTS.md | lunar_frame_campaign (composing lunar_vlbi, lunar_vlbi_fim, fim, lunar, lunar_frame_realise, frames, cio, lunar_frame) | lunar_frame_campaign::tests (21 lib tests: the Helmert design against a central finite difference of lunar_frame_realise::apply_helmert — the module the datum is FOR, which computes no derivative and so pins the [p]ₓ sign convention — all 84 design entries agreeing to < 1e-6; a pure network translation read back as a pure translation with < 1e-6 leakage into the other six parameters; the datum sigma exactly linear in the delay sigma to 1e-8 over a 3× change on all seven parameters; a 16 h arc measured worse and a 48 h arc measured better than 24 h, with the emitted libration sweep ordered the same way; the worst translation axis asserted to BE the dominant axis of the separately measured body-fixed direction to Earth and worse than the others by > 5×, a physics oracle nothing in the solver was told about; three collinear beacons producing a defect with every datum sigma NULL and the null directions emitted in the seven-parameter basis; offblock_fraction and inter-beacon correlation exactly 0,0 with the stations fixed and both > 0 with them estimated; the comparison block's injected-transform figures shown equal to an independent run of that scenario to 1e-14 relative rather than transcribed; a guard that no injected/recovered datum appears anywhere in the document; the lunar-frame-realisation emission pinned byte-for-byte by FNV-1a-64 over json‖summary‖svg for three input shapes, fingerprinted before the work began); tests/lunar_vlbi_campaign_spice_oracle.rs::lunar_frame_campaign_finding_stations_estimated_p2_precision (gated; the strict lunar_frame_campaign_matches_spice_geometry_and_numpy stays ignored); tests/lunar_frame_campaign_mpmath_oracle.rs::lunar_frame_campaign_datum_matches_mpmath_extended_precision (finding; founder decision 2026-10-02, option A: this row stays MODELLED and does not borrow the separate row's status; against a 50-digit mpmath oracle, pre-registered 804662d5, the engine's stations-estimated datum sigmas are within their a-priori backward-error bound, 9.7e-6 off on 2024-01-01, and the 1e-9 bar was below what any double-precision route reaches, the best, a NumPy QR projection, being 5.5e-9 off; the evidence backs the separate row 'Lunar frame datum covariance with the stations estimated, against 50-digit extended precision'); tests/lunar_frame_campaign_pinv_fallback.rs::finding_step0_fresh_beacon_information_falls_back (pinned); tests/lunar_frame_campaign_cond_bar_oracle.rs::finding_p2_condition_scaled_bar_not_met_on_the_estimated_scenarios (pinned) |
| Potwierdzenie progu długości łuku cislunarnego niezależnym estymatorem | Estymator wsadowy najmniejszych kwadratów, który ODZYSKUJE początkowy stan chief z symulowanych pomiarów międzysatelitarnych na rosnących prefiksach tej samej siatki epok, której używa tabela rzędu względem łuku, z pochodnymi pomiaru wziętymi jako centralne różnice skończone złożonego modelu prostego. Nie korzysta z żadnego z mechanizmów, którymi mierzono próg — żadnego wiersza jakobianu analitycznego, żadnej wariacyjnej macierzy przejścia stanu, żadnego rozkładu na wartości osobliwe ani własne, żadnej tolerancji rzędu, żadnego filtra pierwiastka informacji — i dzieli tylko dynamikę, warunki początkowe, obserwabl skalarny i siatkę epok, każde wskazane w wyemitowanym dokumencie. Dwa kryteria, oba przeglądane: odzyskanie bez szumu (odpowiednik rzędu) i estymowalność Monte Carlo (odpowiednik estymowalności, mierzony względem znanej prawdy, a nie przewidywany z kowariancji). Można je uruchomić jako rodzaj scenariusza cislunar-arc-recovery |
ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie zewnętrznie miarodajnej — Osobny estymator w tej bazie kodu, oparty na innym algorytmie i rozłącznej ścieżce kodu: nieliniowy ważony Gauss-Newton z pochodnymi cząstkowymi różnicami skończonymi, którego werdykt odczytuje się jako zmierzony błąd odtworzenia stanu w km i mm/s. Nie ma on żadnego wspólnego wyrażenia z drogą rzędu i kowariancji opartą na gramianie, a rozdzielenie jest WYMUSZONE przez strażnika tekstu źródłowego, a nie zadeklarowane. MEASURED na opublikowanej siatce planarnej DRO: kryterium ESTYMOWALNOŚCI jest CORROBORATED — zmierzona granica Monte Carlo wynosi 5,739130 h wobec formalnej 5,739130 h (stosunek 1,0000), a zmierzone RMS odtwarza formalne 1σ dla 21 długości łuku ze średnią geometryczną stosunku 0,9804. Kryterium RZĘDU NIE jest potwierdzone jako granica odtwarzalności: estymator odtwarza stan od 0,782609 h wobec 2,086957 h z gramianu, stosunek 0,375, a przy 1,826087 h — ostatnim prefiksie, który odczyt rzędu ocenia na 3 z 4 — odtwarza do 1.96e-5 przemieszczenia a priori. Granica odtworzenia jest nieruszona na trzech dekadach własnego ograniczenia, podczas gdy próg rzędu obejmuje od „nigdy" do 0,782609 h na czterech dekadach rel_tol, a oba pokrywają się dokładnie przy rel_tol = 1e-8. Ten zakres został najpierw zapisany jako sięgający 0,260870 h; ta liczba była ARTEFAKTEM, wytworzonym przez odczyt rzędu, który naliczył 4 kierunki z 2 wierszy pomiarowych poniżej poziomu szumu f64, i jest tu poprawiona, a nie pozostawiona. Odczyt rzędu jest teraz ograniczony nierównością Sylvestera z wyemitowanym uzasadnieniem, a poprawiony zakres nasyca się dokładnie na łuku, na którym niezależny estymator odtwarza stan, co wzmacnia walidację krzyżową tego wiersza, a nie ją osłabia: opublikowane 1e-6 jest zachowawczą KONWENCJĄ wartości osobliwych, a nie twierdzeniem o odtwarzalności. Ten sam wzorzec przestrzennie: NRHO 9,290323 h wobec 21,677419 h, halo 22,978723 h wobec 39,829787 h, przy czym estymowalność zgadza się dokładnie w obu przypadkach. Planarne DRO o sześciu stanach nie odtwarza stanu przy żadnym łuku, niezależnie odtwarzając strukturalny defekt datum tej rodziny z estymatora, któremu nic o nim nie powiedziano. NIE zakotwiczone zewnętrznie — dynamika i warunki początkowe są wspólne z testowaną analizą i żaden publiczny zbiór danych nie publikuje takiego progu — więc ExternalDataset jest odrzucony | cislunar_arc_recovery, batch_ls | cislunar_arc_recovery::tests and tests/cislunar_arc_recovery_reference.rs (both boundaries and their ratios pinned on the published grid; the measured error curve compared to the formal covariance row by row with a per-row factor-of-two bound and a geometric-mean bound; a NEGATIVE CONTROL — the planar-DRO six-state — asserting the criterion CAN fail and that the unregularised estimator diverges past 1e6 km rather than returning a plausible small error; parameterisation invariance asserted on every prefix to 1e-3 relative; a source-text guard that strips comments, string literals and the test module and then fails on any mention of the Jacobian, STM, SVD-rank or SRIF machinery, mutation-verified by injecting a forbidden call; a test-only check that the finite differences equal the analytic rows, so the linearisation is known good while the analytic route stays absent from the estimator; determinism asserted byte-for-byte; the released cislunar-observability document pinned by key set, canonical fingerprint and summary line) |
| Księżycowa objętość usługi na podstawie rzeczywistej, pobranej geometrii konstelacji | Przyjmuje tabelaryczną efemerydę stanu względem środka Księżyca (wynik ewaluacji jądra SPK/BSP) lub opublikowaną definicję konstelacji za ephemeris_path, uruchamia na niej identyczny przegląd pokrycia / DOP / poziomów ochrony i emituje wynikające z niej wymaganie dotyczące σ_URE OBOK niezmienionych ilustracyjnych wyników keplerowskich i zaburzonych, z różnicą jako osobną nazwaną wielkością. Każda wartość niesie klasę pochodzenia, która odróżnia wartości wyprowadzone z jądra od wyprowadzonych z opublikowanych elementów i od modelowanych, więc nigdy nie da się ich pomylić w dalszym cytowaniu |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — GEOMETRIA jest zewnętrzna i zahaszowana: trzy zestawy testowe, których liczby pochodzą wyłącznie z dokumentów pobranych z adresem URL, datą pobrania i SHA-256, odtwarzalne przez zatwierdzone generatory, które weryfikują skrót źródła i PRZERYWAJĄ działanie, zamiast wyemitować liczbę — referencyjna konstelacja demonstracji interoperacyjności LANS (NASA NTRS 20250009447, SHA-256 d1b916be…), studia przypadków LNCSS (NAVIGATION 70(4) navi.613, CC BY, SHA-256 4e294687…) oraz prawdziwa efemeryda lotnych statków LRO, Danuri, Chandrayaan-2 i CAPSTONE wyznaczona z własnych zrekonstruowanych jąder JPL przez Horizons. BRAK publicznie dostępnego jądra konstelacji nawigacji księżycowej — Moonlight/LCNS, LCRNS i LNSS nie latają, a NAIF nie publikuje dla nich niczego — i żadnego nie wymyślono. WYPROWADZONE wymaganie σ_URE nie ma ŻADNEJ zewnętrznej wyroczni (nikt nie publikuje dokładności pomiaru odległości, jakiej wymaga księżycowy HPL 50 m w tej objętości usługi), więc jest sprawdzone względem własnej tożsamości algebraicznej oraz, niezależnie, przez ponowne uruchomienie całego przeglądu przy obliczonym wymaganiu i potwierdzenie, że dostępność się tam przełącza. MEASURED: opublikowany projekt z 8 satelitami potrzebuje σ_URE 2,9044 m przy pokryciu 100 % wobec 0,3591 m przy 37,85 % dla konstelacji ilustracyjnej — 8,09× rewizja opublikowanej liczby na mocy reguły programu R4. Wniosek jakościowy się utrzymuje (klasa LNIS 30 m nadal nie domyka HPL 50 m dla bieguna południowego), ale niedobór został zawyżony ośmiokrotnie. Demonstracja LANS z 5 satelitami daje ZERO próbek poziomu ochrony — pięć satelitów nie może dać sześciu w widoku, których potrzebuje zbiór hipotez pojedynczego uszkodzenia — a pole wymagania jest NIEOBECNE, a nie sfabrykowane; tak samo dla czterech rzeczywistych statków przy pokryciu 0 %. InternalConsistency jest rodzajem uczciwym: DANE WEJŚCIOWE są zewnętrzne i zahaszowane, ale wielkość, której dotyczy ten wiersz, jest sprawdzona niezależnie wyłącznie względem siebie. 0,30 porównanie zewnętrzne, ustalenie (pozostaje MODELLED): względem statystyk studium przypadku LNCSS z navi.613 w 346 punktach siatki 4 z 12 statystyk dostępności wypada poza zarejestrowanymi z góry 2 punktami procentowymi (przypadek A: -4.0, +22,5 i -3.6 pp; przypadek B: -12.1 pp). Prawdopodobne przyczyny: elementy odczytane w złym układzie, dwuciałowy Kepler na 15 dni wobec niepodanego modelu sił w pracy oraz siatka niedająca się odtworzyć z tekstu. Połowa PDOP nie mogła być oceniona (LANS nie drukuje liczbowej statystyki); test porównania jest zatwierdzony jako ignorowany. 0,30 runda 2, ustalenie (pozostaje MODELLED): względem wyroczni Orekit 12,2 / Hipparchus 3,1 obliczającej cały raport (propagacja Orekit, widoczność i DOP z DOPComputer, poziomy ochrony MHSS złożone w Hipparchus, wymaganie rozwiązywane na próbkę; zarejestrowane z góry d3ce97b2) na wszystkich pięciu pobranych geometriach i dwóch siatkach 155 z 160 wartości zgadza się w zarejestrowanych z góry progach (2 pp, 5 %, 1 %), w tym wymaganie sigma_URE dla LNCSS A i C (3,879072208 m po obu stronach dla przypadku A) oraz nieobecne wymaganie dla LANS i orbiterów. LNCSS B na gęstej siatce zawodzi na statystykach najgorszej próbki (sigma_required 0,000923 wobec 0,001511 m, hpl_max 1.63e6 wobec 0.99e6 m), gdzie geometrie bliskie osobliwości (PDOP około 1e6) wzmacniają zgodność pozycji na poziomie metra; jego wymaganie p95 się zgadza (1,6343 wobec 1,6357 m). Wymaganie dla najgorszej próbki jest źle postawione na zdegenerowanej geometrii. Względem navi.613: 4 z 12 nadal poza 2 pp (przypięte) | lunar_ephemeris, lunar_service | lunar_ephemeris::tests (format and frame parsing; Lagrange interpolation exact at nodes and on a linear track off-node; ICRF elements take the IAU 2015 reduction and are byte-equal to an explicit icrf_to_iau_moon application; true↔mean anomaly round-trips against a forward Kepler solve; malformed files refused with the reason named). lunar_service::tests (with ephemeris_path unset the report's key set and SHA-256 are pinned; the Keplerian row equals the standalone Keplerian run field for field; the identity σ_required · HPL_max / σ_URE = AL, then an END-TO-END re-run at the computed requirement reaching 100 % protection-level availability and a re-run 1 % above it not reaching it; every emitted numeric field of both new blocks walked from the produced JSON for a unit and a provenance class; the committed fixtures matched to their source tables satellite for satellite; a horizon past the end of a table refused); 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 |
| Jednostka i pochodzenie zadeklarowane dla każdej raportowanej wielkości | Czytelny maszynowo schemat podający jednostkę, klasę pochodzenia i definicję dla każdego pola liczbowego każdego raportu scenariusza oraz jedna globalna bramka, która uruchamia każdy zarejestrowany rodzaj scenariusza i kończy się niepowodzeniem, jeśli wyemitowanemu polu liczbowemu brakuje któregokolwiek z nich. Słownik pochodzenia jest zamknięty, a każda klasa niesie poziom dowodowy, przy czym dwie klasy są celowo odwzorowane na inherits-scenario-label i depends-on-input, zamiast otrzymywać poziom, którego klasa nie determinuje |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Sam wyemitowany dokument: każdy liść liczbowy musi rozwiązywać się do wpisu we własnym bloku jednostek tego dokumentu. Nie ma zewnętrznego rejestru jednostek, względem którego można by sprawdzić jednostkę DEKLAROWANĄ, więc deklarowana jednostka jest przejrzanym twierdzeniem, a nie zweryfikowanym — bramka weryfikuje KOMPLETNOŚĆ i POPRAWNOŚĆ FORMY, a nie prawdę, a określenie „sprawdzone niezależnie" byłoby błędne, ponieważ nic zewnętrznego nie potwierdza, że m jest właściwą jednostką dla pola o nazwie _m. Niezależną kontrolę krzyżową po przyrostkach nazw przeprowadzono na 1 434 polach opisanych W TYM CZASIE: z 691 niosących przyrostek z jednostką 40 nie zgadza się z deklarowaną jednostką i wszystkie 40 są wyjaśnione (przyrostki na sekundę, minima, sekundy apertur, niutonometry wobec przyrostka wyglądającego na nanometr), więc nie ujawniła się żadna błędna jednostka. Tej kontroli krzyżowej od tamtej pory nie powtórzono, a pokrycie urosło ponad nią — liczba pozostaje taka, jaka faktycznie została zmierzona, a nie przepisana na obecną sumę. W czasie tej zmiany (0.27.0) pokrycie wzrosło z 7 z 56 rodzajów do 60 z 61 i z 389 z 1354 pól do 1 742 z 1 744 (docs/field-units-schema.json, który kontrola nieaktualności utrzymuje na bieżąco). ŻADEN rodzaj nie pozostaje nieobjęty (pułap 0, FUT-28, 0,36): ostatnim był sweep-nd, w którym dwie kolumny są kluczowane przez wywołującego, więc ich jednostki są danymi; są teraz opisane jako mixed - see note, a jednostka każdej pozycji jest odczytywana z własnej tabeli jednostek PRZEMIATANEGO pakietu do key_units i metric_units (albo brana z deklarowanego unit osi, który musi się zgadzać z jednostką pakietu, gdy istnieją oba; null, gdy nie istnieje żaden, podane wprost, a nie zgadywane). cislunar-observability był przedostatnim i zszedł z listy, gdy jego wydany dokument zyskał blok jednostek: przypięcie addytywności, które nazywało units kluczem zabronionym, teraz DOWODZI, że dodanie jest addytywne — po zdjęciu bloku dokument nadal haszuje się do dwóch stałych zamrożonych przed jego powstaniem, więc wydana wartość, która poruszyła się pod dodaniem, nadal zawodzi. Praca ujawniła też dwanaście defektów jednostek lub dokumentacji w istniejącym kodzie, zgłoszonych, a nie naprawionych na mocy R1 |
field_schema | tests/field_units_global.rs (all 61 registered kinds run, one document shape each: every numeric leaf must resolve to an entry in that document's own units block; a malformed entry counts as missing for EVERY kind, exempt or not, so a placeholder buys no coverage; the exemption list may not exceed its pinned ceiling, a listed kind that turns out to be fully covered FAILS the gate so the list cannot be padded, and a registered kind absent from the runner table fails so a new pack cannot slip in unexamined — which it did, catching both kinds added after this work began; a one-way ratchet on the described-but-undefined backlog; and a staleness check on the committed schema document); field_schema::tests |
| Geodezja księżycowej stacji referencyjnej: dodany retroreflektor i radiolatarnia VLBI względem datum pięciu układów | Opcjonalne dane wejściowe extra_reflectors i extra_beacons w scenariuszu lunar-llr-datum dodają blok station_geodesy: informację Helmerta pięciu układów z zarchiwizowanego wycinka księżycowego laserowego pomiaru odległości oraz informację, jaką na siedmioparametrowe datum nakładają dodany retroreflektor (mierzony w zarchiwizowanych epokach punktów normalnych, w których stacja mierząca znajduje się nad horyzontem, każdy z zarchiwizowaną wagą tego punktu normalnego) i dodana radiolatarnia VLBI (obserwowana przez sieć i harmonogram lunar-frame-campaign przy stałych stacjach ziemskich, przez pochodne opóźnienia lunar-vlbi-fim) w podanych miejscach, rozwiązane ponownie, z 1-sigma każdego parametru Helmerta przed i po, ich stosunkiem, normami przed i po oraz skrajnymi wartościami własnymi różnicy Fishera. Gdy brak lub puste, raport pozostaje bez zmian | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wyłącznie spójność wewnętrzna: każde dodane miejsce jest odrębnym punktem, a pomiar odległości laserowej lub opóźnienie VLBI ze stacji stałej dotyka jednego punktu, więc jego informacja A_p^T M_p A_p jest dodatnio półokreślona i się dodaje; test sprawdza względem tego różnicę Fishera i każdą wariancję. Wynik dla pięciu układów jest istniejącym wierszem z rzeczywistymi danymi i pozostaje niezmieniony. Dodany reflektor ponownie wykorzystuje epoki zaplanowane dla pięciu istniejących układów, harmonogram ILLUSTRATIVE, a sieć, harmonogram i sigma opóźnienia dodanej latarni są danymi wejściowymi ILLUSTRATIVE kampanii układu księżycowego; miejsce jest ILLUSTRATIVE pozycją przy biegunie południowym. Miejsce przy biegunie południowym widzi Ziemię nisko nad horyzontem lub wcale, co wyrażają istniejące testy kątów widzenia; żadne z miejsc nie jest mierzone w sposób ciągły. Liczby są ograniczeniami Cramera-Rao dla zredukowanego zbioru parametrów, a nie rozwiązanym datum i nie twierdzeniem o jakiejkolwiek rzeczywistej stacji | 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: empty lists and the baseline example give the default report and summary byte for byte; an_added_site_never_increases_any_variance: the smallest eigenvalue of H_after - H_before is non-negative to 1e-9 of the largest, every after/before sigma ratio is at most one, and both added sites are observed; 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 and scenarios/lunar-station-geodesy-with-station.toml (same archived schedule and the same VLBI campaign block) |
| Integralność bramki — zielony, który znaczy to, co mówi | Trzy strukturalne strażniki nad samym procesem weryfikacji, z których każdy zamyka klasę defektu, która dotarła do kanonicznej bramki jako sporadyczna lub fałszywa czerwień. (1) Każda skonstruowana ścieżka tymczasowa w źródłach Rusta musi zawierać składnik unikalny dla każdego wywołania; identyfikator procesu jest odrzucany, bo cargo uruchamia testy biblioteki jako równoległe wątki JEDNEGO procesu, a pid jest wspólny dla wszystkich. (2) Każdy pin bajt po bajcie lub skrótu musi zadeklarować, obok siebie lub w nagłówku swojego modułu, co obejmuje, a co celowo wyłącza — dzięki czemu zmiana przekrojowa od razu pokazuje, które piny są w zakresie, a które po cichu stały się wykrywaczami zmian w całym repozytorium. (3) Zieleń można deklarować tylko z PEŁNEGO zestawu: scripts/gate.sh uruchamia cargo test --all, przechwytuje prawdziwy kod wyjścia bez potoku na drodze i zapisuje kwit nazywający commit, liczbę binariów integracyjnych, liczbę testów i czas trwania; kontrola przed wypchnięciem odrzuca wypchnięcie, którego commit nie jest nazwany przez żaden ważny kwit, na czystym drzewie. Powtarzalność jest próbkowana osobno przez scripts/check-repeatability.sh, który uruchamia zestaw biblioteki N razy i kończy się niepowodzeniem, jeśli zbiór zaliczonych testów się różni. |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postać zamknięta: każdy strażnik jest uruchamiany na stałym znanym złym fragmencie, który musi zadziałać, i stałym znanym dobrym fragmencie, który musi milczeć, oba będące literalnymi stałymi, na które detektor nie może wpływać. Dwa znane złe fragmenty to defekty F22 i F25 w ich pierwotnym kształcie. To jest wyrocznia WEWNĘTRZNA i wiersz jest odpowiednio MODELLED: dowodzi, że strażnicy odróżniają defekt od jego naprawy, a nie że opisywane przez nich klasy są wyczerpujące. Ich podane martwe punkty — stan współdzielony niebędący ścieżką, przypięcie trzymane w krótkiej nazwanej stałej, rzadki wyścig, którego trzy przebiegi nie próbkują, oraz pokwitowanie, które może sfałszować każdy, kto może zapisać plik — są wypisane w dokumentacji modułu tests/source_guards.rs i w nagłówku każdego skryptu, a nie pozostawione do odkrycia. | scripts/gate.sh, scripts/check-gate-receipt.sh, scripts/check-repeatability.sh, scripts/install-gate-hook.sh | tests/source_guards.rs (9 tests: both guards over the whole source tree, plus mutation fixtures that grade each guard in both directions — the F22 pattern reported on both colliding paths, the shipped atomic-sequence fix accepted, a half-fix reported on exactly the path that lost its unique component, a tempfile handle and an inherited unique directory accepted, a wall clock rejected; an undeclared pin reported, a declared one accepted, a scope without an exclusion rejected, a declaration in the enclosing test's doc comment accepted and shown not to leak to the next test; and each pin spelling — hex, decimal, digest string, byte length, named byte count, golden file — seen while algorithm constants, RNG seeds and small cardinality checks are not) |
| Złożony PL czasu — przejście holdover zasiane P0 | PL(τ)=max(TPL_handover,HPL(τ)); dolnie półciągły PL(0+)≥PL(0−); K(IR/2) maksimum bieżące; wykładniki fazy τ/τ³/τ⁵ | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Testy własności (monotoniczność, brak spadku przy przekazaniu) oraz lint wykładników względem holdover::coast_phase_variance | src/integrity/composed_pl.rs | integrity::composed_pl::tests (monotone, P0-floor, K(IR/2), exponents, lower-semicontinuity) |
| Złożony PL czasu — obwiednia LIL prawie na pewno (niemożliwość + spójność) | Brak skończonego holdover w najgorszym przypadku (supremum ruchu Browna jest rozbieżne); HPL z przydziałem IR spójny z obwiednią Hartmana-Wintnera, gdy IR→0 | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamość obwiedni prawie na pewno w postaci zamkniętej √(2Dt·lnln t) oraz kontrola dominacji HPL; szew niemożliwości Baweja arXiv:2606,24210 | src/integrity/lil_envelope.rs | integrity::lil_envelope::tests (divergence, threshold, IR-tightening dominance) |
| Górne ograniczenie integralności obciążenia identyfikowalności niejednorodnego UTC(k) | Górne ograniczenie obciążenia dla każdego źródła b = (U/k_cov)·Phi^-1(1-tail/2) + starzenie, rozdymające opublikowaną rozszerzoną niepewność typu B do przydzielonego ogona integralności; łączy się z tpl_scalar jako bias_s | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Niezależne odtworzenie w numpy i stdlib-statistics postaci zamkniętej nadgranicy (InternalConsistency). Szereg BIPM Circular-T [UTC-UTC(USNO)] jest wyłącznie PRZYWOŁANYM wejściem — to TEN SAM szereg, który jest już sprawdzony niezależnie dla wiersza pokrycia holdover R4 i NIE jest tu sprawdzany ponownie; odtworzenie jego wartości nie dowodzi niczego o R2. Głęboki ogon integralności jest oparty na modelu. 0,30 porównanie zewnętrzne, ustalenie (pozostaje MODELLED): w plikach BIPM UTC-UTC(k) dla poszczególnych laboratoriów (102 laboratoriów, 105 024 wierszy z opublikowanymi niepewnościami) nadgranica b = 2,576 u przy ogonie 1e-2 jest przekroczona w 50,8 % wierszy (Clopper-Pearson 95 %: od 50,4 do 51,1 %) i o więcej niż 1 % w 101 z 102 laboratoriów. Opublikowane u jest niepewnością wyznaczenia UTC-UTC(k) przez BIPM, a nie ograniczeniem przesunięcia, które rutynowo sięga wielokrotności u; nadgranica w podanej postaci nie ogranicza błędu systematycznego identyfikowalności rzeczywistego UTC(k). 0,30 runda 2, nadgranica zrealizowanych przesunięć UTC-UTC(k) trenowana na danych BIPM Circular T z lat 2015-2022 i testowana na latach 2023-2026 (zarejestrowane z góry ca0921a4, łączne przekroczenie co najwyżej 1e-2), ustalenie (pozostaje MODELLED): łączne przekroczenie wynosi 0,0333 (694 z 20 826 wierszy w 82 laboratoriach; 0,0127 bez 430 wierszy, które z reguły nie mają ograniczenia). D9 runda 3, łączne hierarchiczne ograniczenie starzenia (utck_bound), zarejestrowane z góry fb475550 i oceniane prospektywnie na wydaniach Circular T od 465: jeszcze nie uruchomione (wydanie 465 opublikowano 2026-10-12 z około 285 wartościami testowymi; zarejestrowana z góry reguła 1000 wartości wymaga wydań do około 468, a uruchomienie wymaga zarchiwizowanych plików laboratoryjnych z 2026-09-30, ponieważ BIPM od tego czasu przepisał 87 z 113) | 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 (data-gated: skips with a message when the BIPM series is absent); tests/hetero_budget_utc_k_realised_overbound_oracle.rs::realised_offset_overbound_finding; tests/utck_bound_prospective_oracle.rs (D9 round 3, prospective, not yet run: Circular T 465 appeared on 2026-10-12, and the pre-registered 1000-value rule needs issues to about 468) |
| Skorelowana kowariancja krzyżowa obciążenia identyfikowalności (przydział niebezpieczny przy wspólnym trybie) | Kowariancja krzyżowa obciążeń N×N z wyrazami pozadiagonalnymi rho·b_i·b_j dla źródeł dzielących realizatora UTC(k); UDOWODNIONE correlated_fused_bias >= independent_fused_bias (naiwny niezależny przydział zaniża obciążenie połączone -> optymistyczny -> niebezpieczny) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Niezależne odtworzenie w numpy kowariancji wzajemnej oraz nierówności skorelowanego i niezależnego obciążenia fuzji (InternalConsistency). Reprezentatywny zbiór źródeł; scenariusz oparty na modelu. | 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 |
| Statystyka spójności trybu wspólnego (usterka wspólnego wzorca niewidoczna dla separacji) | Statystyka wyniku (1^T Omega^-1 r)^2/(1^T Omega^-1 1) ~ chi^2_1 dla przesunięcia trybu wspólnego, którego separacja rozwiązań (kontrasty ortogonalne do 1) nie widzi; przesunięcie trybu wspólnego ją zawyża, podczas gdy separacje parami pozostają płaskie | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Niezależne odtworzenie w numpy statystyki oraz test własności, że wstrzyknięcie wspólnego trybu ją zawyża (InternalConsistency). Scenariusz oparty na modelu. 0,30 runda 2 (zarejestrowane z góry f9aa360d), zablokowane (pozostaje MODELLED): numpy 2.3.5 LAPACK gesv odtwarza wartość statystyki w 261 zatwierdzonych przypadkach (z dokładnością do 3.5e-15 przy dobrym uwarunkowaniu, 1.2e-9 przy uwarunkowaniu do 6.1e7); prawo zerowe chi-kwadrat(1) jest przywołanym twierdzeniem, a płaskie separacje parami tożsamością bez wyniku silnika do porównania, więc zakres czeka na decyzję właściciela | 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 |
| Klasyfikacja przestrzeni zerowej datum Księżyca (addytywność rzędu LLR + podniesienie defektu przez libracje) | Klasyfikacja wewnętrznego problemu datum z pomiarów odległości: pojedyncza obserwacja odległości wnosi rząd 1 (6-wymiarowa przestrzeń zerowa); para początek-X i skala jest bliska zerowej, a fizyczna libracja DE440 podnosi defekt do zera, podczas gdy para pozostaje bliska zdegenerowanej | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Struktura geometryczna odtworzona przez silnik oraz tożsamość dopełnienia Schura 2x2 w postaci zamkniętej; spójna co do STRUKTURY z Sosnica i in. 2025 (arXiv:2510,15484), których podanych wielkości tu NIE odtworzono. Klasyfikacja jest strukturalna; wielkości korelacji/CRLB przy rzeczywistej geometrii są MODELLED (współrzędne i orientacja reflektorów ustalone). 0,30 porównanie zewnętrzne, ustalenie (pozostaje MODELLED): względem Sosnica i in. 2025 korelacja pochodzenia i skali z Fishera odległości (-0.993 / -0.988) mieści się w 0,05 od opublikowanej -0.97, ale na własnej geometrii pięciu reflektorów z pracy korelacja Helmerta o 7 parametrach z równymi wagami wynosi -0.78 (wartość opublikowana opiera się na błędach na reflektor, których praca nie drukuje), a CRLB pochodzenia (od 0,6 do 1,2 mm przy szumie odległości 3 mm) jest o 96 do 98 % poniżej 3,07 cm z pracy przy tolerancji 20 %. Wielkości nie odtworzono | 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 |
| Informacja o datum Księżyca z wielu technik (LLR + księżycowe VLBI + odległość orbitera) | Wiersze jakobianu datum dla odległości LLR do reflektora na Ziemi, różnicowego opóźnienia księżycowego VLBI z dwóch stacji i odległości orbiter-radiolatarnia dla 7-parametrowego datum, połączone w jedną spójnie uwarunkowaną wstępnie informację Fishera; pokazują, że śledzenie poza kierunkiem radialnym (orbiter / zróżnicowane głębokością) łamie degenerację początek-X do skali, gdzie poprzeczne VLBI pomaga tylko pośrednio | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Kontrole krzyżowe pochodnych cząstkowych każdej techniki, analitycznych względem różnic skończonych (wewnętrzne); KIERUNEK poprawy jest faktem geometrycznym. Położenia latarni, harmonogramy i szum są MODELLED/reprezentatywne (zob. tests/fixtures/llr_geometry/NOTICE.md). | 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) |
| Podłoże geometryczne datum LLR Księżyca (reflektory osi głównych, stacje naziemne, analityczne pochodne odległości) | Pięć układów retroreflektorów po bliższej stronie w metrach układu ciała PA i stacje naziemne LLR we współrzędnych geodezyjnych; umiejscowienie reflektorów z układu ciała do inercjalnego przez orientację PA DE440; analityczne pochodne odległości Ziemia-reflektor względem 4-parametrowego datum; oraz macierz Fishera tylko z LLR, wykazująca degenerację lunocentrum-X do skali, która motywuje analizę 7-parametrową | ExternalDataset | twierdzenie cząstkowe jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych na podstawie modelu, więc możliwość pozostaje oparta na modelu — Obliczenia są sprawdzane wewnętrznie: każda pochodna analityczna względem różnicy skończonej oraz przypadek zerowego datum względem nominalnej odległości. KATALOG jest sprawdzany zewnętrznie i niezależnie - współrzędne osi głównych DE440 (Park i in. 2021, tests/fixtures/llr_geometry/de440_retroreflectors_pa.csv) są skontrolowane krzyżowo z Tabelą 6 memorandum o współrzędnych powierzchniowych DE430 (tests/fixtures/lunar_llr/de430_retroreflectors_pa.csv, wyodrębnione maszynowo z PDF zweryfikowanego przez SHA-256 przez tests/fixtures/lunar_llr/generate_de430_retroreflectors_pa.py) i zgadzają się do 1,12 m, podczas gdy realizacja średniego układu Ziemia-Księżyc tych samych pięciu układów odbłyśników różni się o 672 do 871 m. STRUKTURA DEGENERACJI jest sprawdzona względem opublikowanego wyniku: Sosnica i in. 2025, „Definition and Realization of the International Lunar Reference Frame", arXiv:2510,15484, które podają dla księżycowego układu osi głównych współczynnik korelacji lunocentrum-X ze skalą r = -0.97 oraz że LLR nie sięga rzeczywistego środka masy Księżyca z dokładnością lepszą niż 12 cm z powodu tej korelacji. Ten moduł odtwarza tę samą strukturę (|corr(t_x, scale)| między 0,9 a 0,9999, defekt datum <= 1) z projektu Fishera wyłącznie LLR. Potwierdzenie dotyczy różnych efemeryd, a nie obiegu tam i z powrotem: praca łączy INPOP21a, DE430 i EPM2021, podczas gdy ten moduł jest napędzany libracją DE440. Wielkości NIE odtworzono - korelacja wynosi tu około -0.988 wobec ich -0.97, a 4-parametrowe CRLB jest submilimetrowe wobec osiągniętego tam progu 12 cm, ponieważ orientacja i współrzędne reflektorów są tu ustalone, a tam rozwiązywane. Wyłącznie geometria i struktura degeneracji; bez twierdzenia o dokładności rozwiązanego datum. 0,30 porównanie zewnętrzne: części tego modułu dotyczące zmierzonej odległości (reflectors(), stations_itrf(), umiejscowienie PA DE440 i barycentryczny czas światła llr_bcrs_one_way_m) są sprawdzone niezależnie we własnym wierszu, model zmierzonej odległości LLR, względem 192 punktów normalnych ILRS (RMS 2,81 m wobec 10 m). Ten wiersz pozostaje MODELLED, ponieważ zmierzone porównanie nie sprawdza reszty jego twierdzenia. Geodezyjny katalog stacji stations() zaokrągla APOLLO do 0,001 deg; przy geocentrycznym czasie światła daje to 22,7 m na tych samych punktach (test reflector_ranges_against_ilrs_normal_points; 96 m przy wcześniejszej interpolacji orientacji element po elemencie). Analityczne pochodne odległości i Fisher wyłącznie LLR są liczone przez llr_range_m i reflector_inertial z analitycznym szeregiem Księżyca (ephem::moon_position, około 0,3 deg od GCRS) i bez czasu światła | 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 |
| Degeneracja odległość-przesunięcie zegara w jednokierunkowym pomiarze odległości na Księżycu oraz prawo projektowe różnorodności geometrycznej | Degeneracja promieniowej odległości do przesunięcia zegara odbiornika dla każdego węzła jest dokładna: 1 m do 3,336 ns (jeden przez c). Brzegowa dopełnienia Schura {skala, przesunięcie} (coupled_marginal_fisher) pokazuje, że w geometrycznie zróżnicowanej sieci pomiar dwukierunkowy podnosi brzegową mniej więcej o ten sam czynnik co równa liczba dodatkowych danych jednokierunkowych, podczas gdy w wyidealizowanym reżimie pojedynczego węzła podniesienie dla pomiaru dwukierunkowego jest o rzędy wielkości większe. Z tego wynika prawo projektowe: to różnorodność geometryczna, a nie pomiar dwukierunkowy jako taki, oddziela skalę układu Księżyca od przesunięcia skali czasu w pomiarze jednokierunkowym; dwukierunkowe lub zewnętrzne powiązanie czasu jest wymagane tylko w reżimie niskiej różnorodności lub pojedynczego użytkownika. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej: wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brzegowy Fisher z dopełnienia Schura sprzężonej macierzy informacyjnej, w algebrze liniowej w postaci zamkniętej, sprawdzony względem dwóch granicznych reżimów, które przewiduje. Równoważność 1 m do 3,336 ns jest definicją metra przez c i nie jest wynikiem empirycznym. Sieci obserwacyjne są reprezentatywną geometrią opartą na modelu, więc prawo projektowe jest twierdzeniem o geometrii, którą mu przedstawiono, i nie niesie żadnego twierdzenia o jakiejkolwiek wdrożonej sieci księżycowej. | 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) |
| Reprezentatywne menu pomiarów z wielu technik i addytywna reguła łączenia Fishera | MeasurementBlock przechowuje jedną kandydującą kampanię pomiarową jako wkład informacji Fishera 7x7 plus skalarny koszt względny; block_from_rows buduje go z surowych wierszy jakobianu datum, więc każdy blok jest wstępnie uwarunkowany identycznie przez lunar_identifiability::assemble_multi_info; combine sumuje informację wybranego podzbioru, co jest regułą poprawną, ponieważ informacja Fishera jest addytywna dla niezależnych pomiarów; representative_lunar_menu dostarcza deterministyczne menu czterech bloków (LLR, poprzeczna radiolatarnia VLBI na brzegu tarczy, orbiter po bliższej stronie i orbiter po dalszej stronie). Optymalizator projektu z ograniczonym budżetem, który korzysta z tego menu, nie jest częścią tego crate. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Addytywność informacji Fishera dla niezależnych pomiarów jest własnością w postaci zamkniętej; sprawdzono ją tu względem niezależnie napisanej sumy element po elemencie oraz względem niezmienniczości względem kolejności i monotoniczności, które z niej wynikają. UWAGA DOTYCZĄCA DOWODÓW: łącznik wcześniej nie miał żadnego testu, a jedyny test w module sumował obie macierze informacji bezpośrednio w kodzie zamiast go wywoływać, więc uszkodzony łącznik pozostawiłby moduł zielonym; test przechodzi teraz przez combine i zawodzi, gdy łącznik zostanie zmutowany. Wszystkie położenia radiolatarni, geometria orbitera, precyzje poszczególnych technik i koszty względne są wyborami reprezentatywnymi, a nie wartościami misji (zob. tests/fixtures/llr_geometry/NOTICE.md), więc każda miara zdegenerowania i każda wartość CRLB uzyskana przez to menu dziedziczy status modelowany z lunar_identifiability::decompose. | lunar_techniques | lunar_techniques::tests (combine_is_additive_order_independent_and_empty_is_zero - pusty wybór daje macierz zerową, pojedynczy wybór jest tożsamością, para równa się niezależnie napisanej sumie element po elemencie, a wynik nie zależy od kolejności wyboru; adding_a_block_never_reduces_the_degeneracy_metric - monotoniczność względem dodawanej informacji; radial_diversity_beats_transverse_for_breaking_the_degeneracy - blok orbitera po niewidocznej stronie podnosi miarę zdegenerowania bardziej niż poprzeczny blok VLBI) |
| Tolerancja spójności między dostawcami dla użytkownika z mieszanymi dostawcami | consistency_tolerance: odwraca budżet położenia użytkownika do wymagania zgodności Helmerta między dostawcami dla każdego parametru (początek/skala/rotacja) przy referencyjnym ramieniu dźwigni, opcjonalnie powiększonego o CRLB realizacji pojedynczego dostawcy P1 | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Oszacowanie trójkątne najgorszego przypadku dla działania jakobianu punktowego Helmerta (postać zamknięta) | lunar_interop_budget | lunar_interop_budget::tests (monotoniczność względem budżetu; redukcja budżetu RSS przy CRLB na dostawcę; obliczona tolerancja obrotu przy lunarnym ramieniu dźwigni; człon wiążący = obrót) |
| Budżet błędów interoperacyjności księżycowej dla wielu dostawców i prawo projektowe układ-kontra-efemeryda | interop_budget: podział na redukowalny (wspólne powiązanie układu) i nieredukowalny (dynamika) przy konwencjach PerProvider / CommonFrameTie / CommonEphemeris, z miarą prawa projektowego ułamka nieredukowalnego (~0,69 dla rzeczywistych DE440/INPOP/EPM: samo wspólne oznaczenie układu zostawia dominującą podłogę) | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Agregacja RMS sprawdzonych podziałów na pary przy każdej konwencji (postać zamknięta) | lunar_interop_budget | lunar_interop_budget::tests (CommonEphemeris zeruje budżet; CommonFrameTie < PerProvider; irreducible_fraction > 0,5 na rzeczywistych podziałach; kolejność konwencji) |
| Granica wykrywania/identyfikacji blokowej iskry bizantyjskiej dla autonomicznej sieci księżycowej z węzłami (T3) | byzantine_bound konkretyzuje granicę kodowania / rzadkiej obserwowalności bezpiecznego estymowania stanu na geometrii sieci dla każdego węzła: bizantyjski rówieśnik wstrzykuje dowolną kombinację liniową pomiarów, w których uczestniczy, a sieć WYKRYWA każdą koalicję ≤ f = block_spark − 1 rówieśników i jednoznacznie IDENTYFIKUJE każdą koalicję ≤ ⌊(block_spark − 1)/2⌋, gdzie block_spark jest najmniejszą koalicją rówieśników, której ułożone w stos efektywne sygnatury P⊥·B_T mają niepełny rząd kolumnowy. Wykrywalność rówieśnika to PEŁNY RZĄD KOLUMNOWY P⊥·B_j (niezerowy, ale o niepełnym rzędzie blok to niezerowy atak, który ląduje w range(G) i nie zostawia residuum), a nie tylko P⊥·B_j ≠ 0 | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Geometryczne zastosowanie blokowej granicy spark / bezpiecznego estymowania stanu (Fawzi–Tabuada–Diggavi 2014; Shoukry–Tabuada 2016; blokowy spark Donoho–Elad 2003; Candès–Tao 2005) — NIE jest to próg konsensusu Lamport–Shostak–Pease 3f+1 („Byzantine” nazywa wyłącznie MODEL błędu dowolnego/zmawiającego się). Konkretna liczba tolerowanych błędów jest własnością modelowaną reprezentatywnej geometrii sieci, sprawdzoną pod kątem spójności wewnętrznej na ręcznie skonstruowanych przypadkach analitycznych i wzorach na liczności | lunar_faultobs | lunar_faultobs::tests — byzantine_c3_rank_deficient_but_nonzero_is_undetectable (blok niezerowy, lecz o niepełnym rzędzie ⇒ block_spark 1, f_detect 0; kolumny niezależne ⇒ block_spark 2, f_detect 1), byzantine_real_network_uniform_bias_is_clock_offset (peer posiadający wszystkie pomiary węzła = błąd przesunięcia zegara ∈ range(G), niewykrywalny, z wyraźną luką widmową Grama), byzantine_redundant_net_identifies_at_least_one (sześć niezależnych peerów z pojedynczym pomiarem ⇒ block_spark 7, f_identify 3), byzantine_analytic_spark_identity_projector + byzantine_detect_identify_relations (ręczne przypadki P⊥ = I wyznaczają f_detect = block_spark − 1, f_identify = ⌊(block_spark − 1)/2⌋) |
| Podłoga czasowej miary autonomicznego holdover dla samoodniesionej konstelacji księżycowej (T4) | holdover_floor ustala, że w zespole autonomicznych węzłów połączonych tylko pomiarami międzywęzłowymi wspólne tempo zegara (δα_j += 1 ∀j) jest swobodnym parametrem czasu zespołu leżącym w N(GᵀWG): żadna ilość dodatkowych pomiarów odległości między węzłami nie może go zaobserwować (rate_in_gauge = true, temporal_gauge_dim = 2 ze wspólnym przesunięciem). To jest prawdziwa podłoga holdover — czasowy odpowiednik położeniowej miary sztywnego układu. Dodanie jednego zewnętrznego bezwzględnego powiązania tempa (bezpośredniego łącza do wzorca poza siecią) usuwa wspólne tempo z przestrzeni zerowej (rate_in_gauge = false, temporal_gauge_dim = 1), co dowodzi, że podłoga jest rzeczywistą miarą, a nie artefaktem modelu oscylatora | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Argument o wolnym parametrze czasu zespołu (Percival 1978; Lewandowski & Thomas 1991) zastosowany do reprezentatywnej, rzeczywistej sieci DE440 z podziałem na węzły: test zerowy względnej reszty analitycznego generatora wspólnej częstotliwości względem GᵀWG, z kontrastem po rozstrzygnięciu remisu odróżniającym rzeczywistą cechowanie (gauge) od artefaktu modelu oscylatora. Reprezentatywna geometria modelowana, a nie certyfikowany budżet czasu | lunar_faultobs | lunar_faultobs::tests (holdover_floor_self_ref_and_anchored (sieć samoodniesiona: wspólna częstotliwość leży w N(GᵀWG), temporal_gauge_dim 2; po jednym zewnętrznym wierszu wiążącym częstotliwość: częstotliwość wypchnięta z cechowania, temporal_gauge_dim 1, a wspólne przesunięcie pozostaje) |
| Wspólny/różnicowy podział dostawców, unifikacja jednego defektu rzędu i nachylenie luki ochrony (T5 / §0 / g7) | Trzy aspekty jednej dekompozycji ℝ^{state_dim} = N(GᵀWG) ⊕ range(GᵀWG) z 8-wymiarową miarą datum⊕skala czasu jako N(G) oraz state_dim − 8 = 32 obserwowalnymi kierunkami jako range(G): (T5) provider_mismatch_split klasyfikuje wspólne obciążenie wielu dostawców (∈ range(G)) jako NIEWYKRYWALNE — wymagające zewnętrznego powiązania — a obciążenie różnicowe (∉ range(G)) jako samomonitorowane / WYKRYWALNE; (§0) unifikacja polega na tym, że TA SAMA ślepa podprzestrzeń range(G) rządzi klasą usterek niewykrywalnych, więc miara datum N(G) i podprzestrzeń ślepa na usterki range(G) to jedna geometria, a nie dwie; (g7) slope zwraca nachylenie luki ochrony Browna ‖Π_obs Δx̂‖ / ‖P⊥b‖_W → ∞ dla usterki b ∈ range(G) (estymator zepsuty przy zerowej parzystości) i skończone dla usterki wykrywalnej | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Algebra w postaci zamkniętej dla projektora parzystości / pseudoodwrotności na reprezentatywnej, rzeczywistej sieci DE440 z podziałem na węzły: podział na część wspólną i różnicową, ujednolicenie N(G) ⊕ range(G) oraz nachylenie luki ochrony Browna (1992) wynikają wszystkie z anihilacji zakresu P⊥·G = 0. Reprezentatywna geometria modelowana, a nie certyfikowany poziom ochrony | lunar_faultobs | lunar_faultobs::tests — provider_mismatch_split_common_undetectable_differential_detectable (błąd wspólny niewykrywalny, różnicowy wykrywalny), slope_infinity_in_range_finite_detectable (g7: nachylenie ∞ dla b ∈ range(G), skończone dla b ∉ range(G)), pernode_rank_is_state_dim_minus_eight (§0: rank(GᵀWG) = state_dim − 8, 8-wymiarowe cechowanie jest całą przestrzenią zerową z luką widmową >1e6) |
| Maski synchronizacji telekomunikacyjnej ITU-T z PASS/FAIL i marginesem | Przepisane limity ITU-T G.8272 (07/2025) PRTC-A/B, G.8272.1 (2024) Amd. 1 (07/2025) ePRTC w stanie zsynchronizowanym i ePRTC-A w holdover (w tym obwiednia błędu czasu z tabeli 3), G.8273.2 (2023) Amd. 2 (11/2025) klasy T-BC/T-TSC A-D oraz G.8271.1 (2022) Amd. 3 (05/2025) punkt odniesienia C, każdy przedział otwarty lub zamknięty tak, jak podaje tabela, z pominięciem każdego wpisu „do dalszych badań”; werdykt i margines w punkcie wiążącym dla każdej kontroli oraz czas przekroczenia każdego budżetu. Można je uruchomić jako rodzaj scenariusza telecom-timing |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Transkrypcja wskazanych Zaleceń (do swobodnego pobrania z itu.int), przy czym każdy limit podaje swoją tabelę lub klauzulę; zestawienie obejmuje każdą niepotwierdzoną lub niezaimplementowaną pozycję w docs/TELECOM-TIMING.md; tożsamości ciągłości w punktach załamania, które wynikają z tabel, są sprawdzane w testach. Transkrypcja norm ze sprawdzeniami spójności wewnętrznej, a nie test zgodności ani walidacja zewnętrzna. 0,30 runda 2 (wstępnie zarejestrowana 970003ee), zablokowana (pozostaje MODELLED): dziesięć wartości masek i trzynaście wartości holdover ePRTC-A, które Zalecenia drukują jako przykłady liczbowe (G.8272 Rys. 1-2, G.8272.1 Amd.1 cl. 8.2.1 i Rys. V.1-V.3, G.8271.1 Amd.3 Rys. 7-2 do 7-4), są odtworzone w granicach połowy drukowanej jednostki, w większości są to stałe tabelaryczne lub punkty załamania; G.8271.1 Rys. 7-2 opisuje 200 ns przy 1,3 s, wbrew własnej Tabeli 7-1 (197,5 ns). Limity klas A-D G.8273.2 nie mają drukowanej wartości przykładowej, a etykiety punktów załamania ePRTC w stanie zablokowanym z G.8272.1 (na ciągłych liniach konstrukcyjnych) zostały wyłączone przez wstępnie zarejestrowaną regułę doboru, więc pozostają one transkrypcjami | telecom_timing (MASKS, eprtc_a_holdover_limit_ns, check_curve, check_mask) | telecom_timing::tests (mask_boundaries_follow_the_tables_exactly — końce otwarte i zamknięte, luka τ = 400 s w G.8271.1 Tabela 7-3, ciągłość w każdym punkcie załamania wynikającym z tabel; 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) |
| Maski generacji dryfu dla synchronizacji częstotliwości ITU-T (G.811, G.812, G.8262, G.8262.1) | Siedem masek generacji dryfu MTIE i TDEV w stałej temperaturze dla rodzaju telecom-timing: G.811 (09/1997) PRC (autonomiczny), G.812 (06/2004) typy I, II i III, G.8262 (10/2024) EEC opcje 1 i 2 oraz G.8262.1 (11/2025) eEEC (tryb zsynchronizowany), w tym odcinki potęgowe, które zapisują tabele (8 τ^0.5 i podobne), każdy przedział otwarty lub zamknięty tak, jak wydrukowano, mierzone przez filtr 10 Hz, który podają punkty norm (przyjęty jako zastosowany przed próbkowaniem); scenariusz referencyjny scenarios/telecom-synce-eec.toml zestawia swobodnie pracujący OCXO z trzema maskami EEC. Niezaimplementowane: tolerancje przy zmiennej temperaturze, holdover, stany przejściowe, jitter i dokładność częstotliwości G.811 |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Transkrypcja wskazanych Zaleceń (pobranych z itu.int dnia 2026-10-13), każdy wiersz ponownie sprawdzony z tekstem, z ciągłością w punktach załamania wynikającą z drukowanych współczynników ograniczoną w testach (na przykład 40 · 10^0,4 = 100,48 ns wobec plateau 100 ns w G.812 Tabela 4). Transkrypcja norm ze sprawdzeniami spójności wewnętrznej, a nie test zgodności ani walidacja zewnętrzna. G.812 (06/2004) jest wymieniona jako zastąpiona wstępnie opublikowaną edycją 08/2026, a G.811 ma Amd. 1 (04/2016); żadnej z nich nie można było przeczytać, więc żadna nie jest sprawdzona. Scenariusz swobodnie pracującego OCXO zawyża udział oscylatora przy przedziałach obserwacji długich wobec stałej czasowej pętli; nie mówi nic o żadnym zegarze urządzenia | 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) |
| Formaty dzienników zegara (zegar RINEX, ASCII TimeLab, TAPR TICC) odczytywane do znormalizowanego szeregu fazy | clock_log::read_input: jedna warstwa parsera, która zamienia plik zegara RINEX (rekordy AS/AR jednego nazwanego zegara, wersje 2 i 3,00 do 3,04), dziennik ASCII fazy lub częstotliwości w stylu TimeLab albo dziennik znaczników czasu lub przedziałów TAPR TICC w jednolitą siatkę fazy, z tau0 podanym, z nagłówka lub jako medianą odstępów, z policzoną każdą luką, odczytem poza siatką i duplikatem, oraz polityką luk: odrzuć, najdłuższy odcinek lub liniowa; podpięty opcjonalnie do szeregu telecom-timing ([series.clock_log], dodając blok clock_log) i do rodzaju clock ([clock_log], dodając blok measured z ADEV, TDEV i MTIE, SHA-256 tabeli i SHA-256 fazy; runs = 1). Bez tabeli oba rodzaje są identyczne co do bajta |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wstępnie zarejestrowane w tests/fixtures/clock_log/PREREGISTRATION.md (zatwierdzone osobno, 159334f2, zanim powstał zestaw testowy); zapisane w RESULTS.md. Trzy syntetyczne dzienniki z ustalonym ziarnem, po jednym na format (luka TICC trzech epok, drugi zegar RINEX do pominięcia), odczytane z powrotem przez niezależny czytnik napisany na podstawie docs/CLOCK-LOG-FORMATS.md przez tego samego autora: siatka, luka i liczby wypełnień są równe, a największa różnica fazy wynosi 0 s (próg 1e-13 s). oadev, tdev i mtie z allantools 2024,6 na tej fazie zgadzają się z dokładnością względną 2.5e-14 (próg 1e-10) przy każdym współczynniku uśredniania, który ocenia; nie ocenia MTIE na całym zapisie, co silnik raportuje, więc ten jeden punkt na dziennik nie ma wartości wyroczni, a próg w sformułowanym brzmieniu nie jest tam spełniony. MODELLED: dzienniki syntetyczne, a wyrocznia czytnika dzieli autora; rzeczywistych plików zegara TimeLab, TICC i RINEX z przyrządów nie porównywano | clock_log (read_input, MeasuredPhaseReport, MEASURED_UNITS, TELECOM_LOG_UNITS); telecom_timing (SeriesInput::clock_log); api (clock kind [clock_log]) | clock_log::tests (ręcznie pisane dzienniki dla każdego formatu: nagłówki, separatory, jednostki, całkowanie częstotliwości, kanały i tryby TICC, luki i polityki, odmowy); tests/clock_log_allantools.rs (porównanie wstępnie zarejestrowane: 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) |
| Formaty dzienników zegara linuxptp (ptp4l, phc2sys, ts2phc) i chrony (tracking, statistics) odczytywane do znormalizowanego szeregu fazy | clock_log::read_input z formatami ptp4l, phc2sys, ts2phc, chrony-tracking i chrony-statistics: zapisane przesunięcie wiersza serwa linuxptp (ns, własny znacznik czasu wiersza w nawiasach, odczyty przed pierwszym zgłoszeniem s2 przez serwo pominięte i policzone) lub dziennika chrony tracking albo statistics (s, według pozycji kolumny, data i czas UTC) staje się jednolitą siatką fazy przez te same polityki luk co w innych formatach; selektor źródła (clock) nazywa jeden z kilku interfejsów, zegarów lub adresów; dzienniki zasilają szereg telecom-timing, rodzaj clock i rodzaj holdover-test |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Zestawy testowe napisane dla Kshana na podstawie publicznych układów wierszy demonów, z wymyślonymi wartościami (NOTICE.md w katalogu zestawu); nie odczytano żadnego dziennika z rzeczywistej instalacji i żadna wyrocznia nie porównuje analizy z innym czytnikiem, więc układ różniący się między wersjami demona może nadal zostać odrzucony lub błędnie odczytany. Estymatory zasilane szeregiem fazy to te, które sprawdzono względem allantools w wierszach powyżej | 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) na zestawach testowych w tests/fixtures/clock_log/linuxptp_chrony/ |
| Test holdover oceniany z zapisu błędu czasu dostarczonego przez operatora | Rodzaj holdover-test: zapis błędu czasu (dziennik zegara linuxptp, chrony, TICC, TimeLab lub RINEX albo pary time_s,time_error_ns) jest dzielony w dwóch momentach, które operator podaje dla usunięcia i przywrócenia GNSS, na krok bazowy, holdover i odzyskiwania; baza jest mierzona względem masek ITU-T napisanych dla zegara zsynchronizowanego, a holdover względem napisanych dla holdover lub zegara autonomicznego, obwiedni holdover ePRTC-A i budżetów błędu czasu; holdover raportuje przesunięcie częstotliwości z najmniejszych kwadratów, które system utrzymał, a odzyskiwanie — czy i kiedy |TE| weszło w podane pasmo i pozostało w nim przez podany czas przebywania, z wartością szczytową i największym krokiem. Każdy limit jest tym, który przepisuje rodzaj telecom-timing; oba momenty to oświadczenie operatora i nie są weryfikowane |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Obliczenie ręczne na zapisach zbudowanych ze wzorów, których nachylenie, skok, ekstremum i czas powrotu są znane przed przebiegiem (testy je podają), oraz maski, obwiednia i budżety z wierszy o synchronizacji telekomunikacyjnej powyżej. Nie oceniono żadnego laboratoryjnego pomiaru rzeczywistego holdover i nie porównano żadnej zewnętrznej wyroczni, więc ten rodzaj nie rości sobie twierdzeń o żadnym zegarze ani systemie; potrzebny jest partner z laboratorium czasu, zanim jakakolwiek wartość dla klasy zegara mogłaby zostać awansowana | 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) |
| Dostępność sygnałów GNSS w Space Service Volume i poza nią, porównana z broszurą ICG SSV | Przeglądy dostępności rodzaju gnss-ssv: dla każdej konstelacji (GPS, GLONASS, Galileo, BDS, QZSS, NavIC) i łącznie udział par (użytkownik, epoka) z co najmniej jednym i co najmniej czterema sygnałami oraz najdłuższa przerwa, dla użytkownika na sferze (globalna powłoka broszury z 2,562 punktami, 14 dni co 1 minutę) lub na trajektorii (GEO, HEO, transfer księżycowy), z orbit keplerowskich z załącznika C broszury, stałą minimalną mocą promieniowaną w obrębie referencyjnego kąta poza osią, zasłonięciem przez Ziemię jako sferę plus 50 km oraz progiem C/N0; anteny użytkownika z tabeli B10 broszury |
ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Broszura ICG Space Service Volume (UN OOSA ST/SPACE/75, 2018), sama będąca symulacją, porównana na podstawie wstępnej rejestracji zatwierdzonej przed przebiegiem (xval/gnss-ssv/PREREGISTRATION.md; wyniki w xval/gnss-ssv/RESULTS.md, przypięte przez tests/ssv_booklet_results.rs, łącznie z chybieniami). Przebieg 1 na wstępnie zarejestrowanym odczytaniu: stałe minimalnej mocy promieniowanej i próg lunarny zgadzają się (S0, S6 spełnione); progi górnego i dolnego SSV, progu RF, GEO i HEO są NOT MET, niemal wszystkie przez GLONASS, dla którego broszura podaje 20 i 28 stopni w tabelach B2 i B6 oraz 26 i 34 stopni w tabeli 4,2. Wariant diagnostyczny z kątami z tabeli 4,2 zgadza się w każdej komórce górnego SSV, dolnego SSV i sześciu misji GEO (nie zastępuje przebiegu 1; komórki RF, HEO i lunarne nadal chybiają). Zmierzone wzorce paneli GPS L1 nie są odtworzone przez parametryczny zamiennik (RMS 6 do 9 dB wobec progu 3 dB). Zgodność pokazuje, że zadeklarowana metoda broszury została odtworzona, a nie że sygnały GNSS zachowują się w ten sposób | 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) |
Efekty jonosfery, plazmosfery i atmosfery dla promieni brzegowych na przechodzących stycznie sygnałach GNSS oraz projekt odbiornika słabych sygnałów w rodzaju gnss-ssv |
Jonosfera Chapmana, plazmosfera typu Gallagera i atmosfera obojętna (załamanie refrakcyjne, absorpcja tlenu, defokusacja) całkowane wzdłuż prostego promienia między nadajnikiem a użytkownikiem: ukośna całkowita zawartość elektronów, jej część plazmosferyczna, opóźnienie nadmiarowe, wysokość styczna i strata na łączach stycznych; oraz projekt odbiornika słabych sygnałów (całkowanie koherentne i niekoherentne, limit bitu danych, wspomaganie, przeszukiwanie Dopplera), który ustala próg C/N0 z modeli akwizycji i pętli śledzenia | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postacie zamknięte i opublikowane wielkości w testach (szczyt warstwy Chapmana i ugięcie limbu powierzchni, kilka TECU plazmosfery na promieniu GPS–GEO); projekt odbiornika wykorzystuje ponownie modele akwizycji i pętli śledzenia oraz ich testy. Nie porównano z nim żadnych zmierzonych danych sondowania limbu ani odbioru słabych sygnałów | 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) |
| Pokładowy filtr nawigacyjny GNSS dla statków kosmicznych na wysokich orbitach i w transferze księżycowym | Tryb [navigation] rodzaju gnss-ssv: dziewięciostanowy rozszerzony filtr Kalmana (położenie, prędkość, odchylenie i dryf zegara odbiornika, skala ciśnienia promieniowania słonecznego) na pseudoodległościach, których dostępność, szum i C/N0 pochodzą z tej samej geometrii łączy co w przeglądach; prawda jest całkowana z J2, trzecim ciałem Słońca i Księżyca oraz ciśnieniem promieniowania z cieniem, filtr modeluje J2 i trzecie ciała i estymuje ciśnienie promieniowania; raportuje błędy położenia i prędkości wewnątrz orbit GNSS i powyżej nich, najdłuższą lukę pomiarową i średnie NEES |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Symulowana prawda względem własnej estymaty filtru (spójny filtr ma średni znormalizowany kwadrat błędu estymacji około 3 dla położenia) oraz determinizm przy ustalonym ziarnie. Nie porównano żadnych danych lotnych ani zarejestrowanych danych GNSS z wysokich orbit; Słońce i Księżyc to niskoprecyzyjne kołowe zamienniki | 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) |
| Nawigacja względna formacji wielu statków kosmicznych na silnie eliptycznej orbicie z GNSS | Tryb [formation] rodzaju gnss-ssv: statek główny i statki zastępcze uruchamiają każdy filtr bezwzględny; położenie statku zastępczego względem głównego jest estymowane przez odjęcie estymat bezwzględnych oraz przez filtr względny na pseudoodległościach pojedynczo różnicowanych dla sygnałów śledzonych przez oba statki, z dynamiką względną jako różnicą dwóch nieliniowych trajektorii |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Ta sama symulowana prawda co dla filtru bezwzględnego: błąd filtru względnego względem prawdziwego stanu względnego oraz sprawdzenie, że działa on co najmniej tak dobrze jak odjęcie dwóch niezależnych rozwiązań bezwzględnych. Nie porównano żadnych danych z lotu w szyku | 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) |
Budżet błędu nawigacji i czasu łańcucha faz misji od startu do wejścia w atmosferę (mission-thread) |
Rodzaj mission-thread: dokument faz, z których każda jest jednym z ośmiu zarejestrowanych rodzajów, uruchamianych po kolei z kowariancją 6x6, zegarem i układem odniesienia przekazywanymi według podanej zasady (carry; inflate, szum białego przyspieszenia na podanym odstępie w modelu prostoliniowym; reacquire, nawigacja zliczeniowa, a potem dolna granica źródła, nigdy poniżej niej, nigdy zerowanie); konwersje układów GCRF, MCI i MCMF oraz konwersje skal czasu przez TT, każda jako osobny wiersz budżetu, ze stanem Księżyca z opcjonalnego wycinka jądra DE440 i z serii analitycznej jako podanym zapasowym wariantem; margines względem podanego wymagania, najsłabsze ogniwo, zdarzenia i wykres osi czasu. Każda liczba jest podanym wejściem albo modelem takiego wejścia |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Obliczenia ręczne w testach (wzrost kowariancji po linii prostej, średnia rotacja gwiazdowa, wiekowe tempo zegara księżycowego) oraz, tylko dla stanu Księżyca, zatwierdzone wycinki jądra DE440 względem przypiętych wartości JPL Horizons (najgorzej 2,6 m i 7e-6 m/s). Z łańcuchem nie porównuje się żadnych danych misji; jego fazy są osobnymi wierszami. Dokument jest podanym łańcuchem z wejściami ILLUSTRATIVE, wyłącznie ze źródeł publicznych i bez poparcia żadnej agencji | 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 (blok jednostek raportu) |
Start i wznoszenie na orbitę parkingową z akwizycją GNSS i zanikiem (launch-ascent) |
Faza launch-ascent: kowariancja pozycji i prędkości o stałej prędkości z szumem białego przyspieszenia (klasa nawigacji zliczeniowej), pozycja GNSS o podanej dokładności stosowana po czasie akwizycji i poza podanymi zanikami, zegar z biasem i dryfem dyscyplinowany tymi samymi pozycjami oraz stan wprowadzenia na orbitę parkingową |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Stan ustalony Riccatiego i ręczne obliczenie predykcji w testach. Nic tu nie modeluje rakiety nośnej ani odbiornika; każda liczba jest podanym wejściem | 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 |
Nawigacja względna do obwiedni połączenia na niskiej orbicie okołoziemskiej na odcinkach czujników (leo-rendezvous) |
Faza leo-rendezvous: stan względny w osiach LVLH celu z zamkniętą postacią przejścia Clohessy'ego-Wiltshire'a, kowariancja Kalmana 6x6 z szumem białego przyspieszenia i aktualizacje pozycji, których wariancja jest wariancją czujnika przy bieżącej odległości, na odcinkach podanego czujnika (ILLUSTRATIVE: kamera optyczna, lidar i formy z pomiarem odległości radiem); okno połączenia to czas od chwili, od której sigma względna pozostaje wewnątrz obwiedni zdolności chwytu, do końca fazy. Bezwzględna kowariancja statku gonionego jest przekazywana bez zmian i mówi o tym wiersz |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Jednoosiowe obliczenie ręczne predykcji i aktualizacji w teście; przejście Clohessy'ego-Wiltshire'a to to, które cw_dynamics sprawdza względem niezależnego całkowania numerycznego. Czujniki są ILLUSTRATIVE i nie porównuje się żadnego rzeczywistego spotkania | 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 |
Wtrysk translunarny i lot cislunarny: propagowany stan średni i kowariancja z aktualizacjami śledzenia (tli-and-cruise) |
Faza tli-and-cruise: stan średni z propagatora Cowella silnika (masa punktowa Ziemi i J2, Słońce i Księżyc jako ciała trzecie, Księżyc z jądra DE440 wątku tam, gdzie obejmuje on segment, a Słońce z serii analitycznej); kowariancja z macierzy przejścia stanu liczonej różnicą w przód z tej propagacji (przebieg nominalny i sześć przebiegów zaburzonych na segment) z szumem białego przyspieszenia; wielkość i błąd kierunku impulsu TLI; pozycje gnss-ssv, których dostępność i PDOP pochodzą z przeglądu objętości usługi kosmicznej wzdłuż orbity oskulacyjnej zastępującej łuk; śledzenie odległości i prędkości radialnej wzdłuż kierunku geocentrycznego, skalowane cyklem pracy sieci naziemnej, z aktualizacją w postaci Josepha |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Twierdzenie Liouville'a (wyznacznik macierzy przejścia stanu części zachowawczej wynosi jeden) i drobniejsza różnica w testach; stan średni jest porównywany z publiczną trajektorią w wierszu poniżej, którego nie osiąga. Błąd impulsu, aktualizacje i kowariancja nie są z niczym porównywane | 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 |
Kowariancja na granicy wejścia w atmosferę, prawdopodobieństwo korytarza, szczytowe opóźnienie i obszar lądowania (entry) |
Faza entry: lot powrotny tli-and-cruise bez impulsu, kończący się na granicy wejścia; kąt toru lotu i jego sigma z pełnej kowariancji przez gradient różnic skończonych; prawdopodobieństwo, że kąt mieści się w podanym korytarzu; szczytowe opóźnienie przy kącie nominalnym i na obu brzegach korytarza z płaskiego balistycznego wejścia masy punktowej silnika (z wykrywaniem odbicia) obok zamkniętej postaci Allena-Eggersa; obszar lądowania z podanej czułości na odległość wzdłuż toru i kowariancji na granicy wejścia w poprzek płaszczyzny orbity. Nie modeluje się siły nośnej, prowadzenia ani nagrzewania |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Obliczenia ręczne w testach (sigma kąta to sigma prędkości prostopadłej podzielona przez prędkość; masa gaussowska w korytarzu). Wejście płaskie jest własnym wejściem silnika, a postać Allena-Eggersa jest porównaniem w postaci zamkniętej; nie porównuje się żadnego odbytego wejścia | 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 |
Pokrycie sieci naziemnej i cykl śledzenia dla fazy wątku ([ground_network] z mission-thread) |
Nakładka sieci naziemnej: stacje z minimalną elewacją, widoczność pojazdu na podanej geometrii (stan wejścia lecący jako dwuciałowy z J2, pozycja Księżyca dla lotu albo podany cykl pracy), przekazania między stacjami, z których każde traci podany czas, oraz wynikowy cykl pracy przekazywany do częstości aktualizacji śledzenia naziemnego fazy; najdłuższy odstęp bez stacji w zasięgu jest wierszem budżetu | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Kontrole geometrii zenitu i antypodu oraz oczekiwana widoczność odległego celu w testach. Nie modeluje się żadnej rzeczywistej sieci, anteny ani harmonogramu | 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 |
Nawigacja względna do połączenia na orbicie księżycowej (lunar-orbit-rendezvous) |
Rodzaj i faza lunar-orbit-rendezvous: wspólne wsadowe oszacowanie Gaussa-Newtona dwóch pojazdów na łuku (dwadzieścia jeden parametrów: oba stany oraz trwałe odchylenia pozycji sygnału w przestrzeni, wspólne i niezależne), rozbudowywane na ćwierć, połowę i cały łuk z połowieniem kroku, z pozycji bezwzględnej każdego pojazdu (granica śledzenia kodu pilotowego AFS, zestaw przekaźników ILLUSTRATIVE) i odległości międzypojazdowej, w modelu sił księżycowych biblioteki; średni znormalizowany kwadrat błędu oszacowania, kontrola Clohessy'ego-Wiltshire'a na orbicie kołowej i przekazywana kowariancja 6x6 |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Samozgodność w ramach wstępnej rejestracji (xval/mission-thread-lunar/PREREGISTRATION.md, wyniki i historia estymatora w RESULTS.md): średnie NEES stanu względnego wynosi od 5,85 do 5,93 wobec pasma od 5,2 do 6,8 w czterech konfiguracjach, MET przy czwartym projekcie estymatora po tym, jak trzy projekty filtra sekwencyjnego nie osiągnęły progu; prawda i estymator współdzielą jeden model sił, więc nic to nie mówi o błędzie modelu. Propagator, który współdzielą, jest porównany z LRO i CAPSTONE w wierszu poniżej | 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 |
Budżet rozrzutu lądowania w miejscu przy biegunie Księżyca (lunar-descent) |
Rodzaj i faza lunar-descent: pięciostanowy model błędu inercjalnego na oś (pozycja, prędkość, bias akcelerometru, przechył, bias żyroskopu) w trakcie lądowania z napędem, wspomagany pozycjami AFS (samodzielnymi lub różnicowymi, z przypadkiem trzech przekaźników wspomaganych zegarem), pozycją względem terenu (dopasowanie terrain-nav silnika na syntetycznej rzeźbie albo ograniczenie Craméra-Rao na DEM LOLA z regułą problemu apertury) i czasem księżycowym, z elipsą lądowania Monte Carlo |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Zamknięty dryf inercjalny, własne wyniki użytych ponownie rodzajów i kalibracja elipsy 3-sigma (część wewnątrz zgadza się z oczekiwaniem) w testach. Nie porównuje się żadnego odbytego ani przetestowanego lądowania | 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 |
Dostępność pozycjonowania i czasu na powierzchni według miejsca i pory roku na biegunach Księżyca (lunar-surface) |
Rodzaj i faza lunar-surface: dostępność przekaźników i PDOP, widoczność Ziemi i Słońca oraz zdyscyplinowany zegar powierzchniowy dla każdego miejsca i pory roku, z horyzontem terenu z moonlight-service-volume; przebieg dla jednego miejsca równa się dostępności i PDOP tego rodzaju co do bitu |
ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale nie zewnętrznie miarodajnej — Dokładna równość z istniejącym rodzajem dla jednego miejsca oraz kontrole monotoniczności w testach. Zestaw przekaźników jest ILLUSTRATIVE i nie porównuje się żadnego pomiaru z powierzchni | 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 |
Wznoszenie z napędem z miejsca przy biegunie Księżyca na orbitę wprowadzenia (lunar-ascent) |
Rodzaj i faza lunar-ascent: pięciostanowy model błędu inercjalnego na oś uruchomiony dla wznoszenia z napędem z siłą właściwą wzdłuż toru, wspomagany pozycjami AFS i czasem księżycowym, podający kowariancję pozycji i prędkości wprowadzenia przenoszoną na orbitę oraz rozrzut przy wyłączeniu silnika (podany, nieprzenoszony) |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Zamknięty dryf inercjalny i kontrole monotoniczności w testach. Nie porównuje się żadnego odbytego wznoszenia | 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 |
| Propagacja księżycowego modelu sił względem publicznych odtworzonych trajektorii orbiterów księżycowych i cislunarnych | Propagator wspólny dla rodzajów księżycowych (GRAIL GL0660B stopnia i rzędu 150, Ziemia i Słońce jako ciała trzecie, relatywistyka, orientacja Księżyca z DE440) porównany z publicznymi trajektoriami JPL Horizons LRO (24 h, próbki co 10 minut) i CAPSTONE (jeden obieg 6,5 doby, próbki co godzinę), względem progów ustalonych w zatwierdzonym pliku przed przebiegiem | ExternalDataset | podtwierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — Efemerydy statków kosmicznych JPL Horizons dla LRO i CAPSTONE, względem progów zarejestrowanych wstępnie w xval/mission-thread-lunar/PREREGISTRATION.md (poprawki 1 do 6). LRO: MET, największa różnica 3-D 33 m i 2,4 m RMS promieniowo wobec 500 m i 60 m. CAPSTONE: NOT MET, różnica pozycji końcowej 136,8 km wobec 25 km i różnica perycentrum 28,4 km wobec 10 km, przyczyny nie zostały wyizolowane. Wiersz jest obliczony z modelu, ponieważ próg CAPSTONE nie został osiągnięty, a porównanie sprawdza wspólny propagator, a nie żaden filtr, sygnał ani budżet | 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 |
Propagacja stanu średniego cislunarnego względem publicznej trajektorii Artemis I (tli-and-cruise) |
Propagacja stanu średniego fazy tli-and-cruise (Cowell, masa punktowa Ziemi i J2, Słońce i Księżyc jako ciała trzecie, Księżyc z wycinka DE440) porównana z publiczną trajektorią JPL Horizons Artemis I na łuku lotu bezwładnego trwającym 72 h od 2022-11-16 18:00 TDB, w epokach co 12 godzin, względem progów ustalonych w zatwierdzonym pliku przed przebiegiem |
ExternalDataset | podtwierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów obliczonych z modelu, więc możliwość pozostaje obliczona z modelu — JPL Horizons, cel -1023 (trajektoria po TLI z nawigacji NASA, zgodna z lotem), względem progów zarejestrowanych wstępnie w xval/mission-thread/PREREGISTRATION.md (poprawka 1 zmienia tylko zakres zapytania). NOT MET i stwierdzone jako niespełnione: największa różnica pozycji 45,3 km wobec 5 km oraz różnica prędkości 0,249 m/s po 72 h wobec 0,05 m/s. Diagnostyka napisana po werdykcie lokalizuje chybienie w pięciu impulsowych krokach prędkości po 0,09 do 0,22 m/s we wzorcu (odczyt zarejestrowany wstępnie, że okno nie zawierało impulsu, był błędny); w pozostałych 67 godzinach model odtwarza następny godzinowy stan z medianą 0,38 m. Sprawdza tylko stan średni jednego łuku lotu bezwładnego: bez kowariancji, filtra, aktualizacji ani innych faz | 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 |
| Człony błędu interferometru z zimnych atomów: szum fazy lasera Ramana, obciążenie krzywizną czoła fali i rozwiązywanie niejednoznaczności prążków | inertial::cai_error_terms (funkcje biblioteczne, jeszcze nieosiągalne z rodzaju scenariusza): funkcja ważąca fazy Ramana dla interferometru trójimpulsowego z impulsami prostokątnymi (Cheinet i in. 2008, równ. 8) z postacią zamkniętą dla szumu białej fazy (pi/2)^2 S_phi0/tau_R i drogą numeryczną dla dowolnego widma; szum częstotliwości lasera, którego opóźnienie przy retroodbiciu nie znosi (Le Gouet i in. 2007, równ. 9 do 11); obciążenie czoła fali czystą defokusacją sigma_v^2/R chmury termicznej i jego redukcja promieniem detekcji; prawdopodobieństwo błędnego indeksu prążka erfc(pi/(sqrt(2) s)) dla wspomagania klasycznym akcelerometrem i dla dwóch czasów interrogacji oraz jego odwrotność | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Każda postać zamknięta względem niezależnej drogi numerycznej w testach (kwadratura w dziedzinie częstotliwości dokładnej funkcji przejścia i filtru opóźnienia, Monte Carlo po atomach dla błędu systematycznego czoła fali, Monte Carlo po strzałach dla indeksu prążków) oraz jej przypadki graniczne. Jedna opublikowana wartość przykładowa: Cheinet i in. 2008 (arXiv:physics/0510197, Sec. IV) podają, że przy tau_R = 20 us potrzebny jest biały szum fazy Ramana poniżej -111 dB rad^2/Hz dla 1 mrad na strzał; sam składnik biały daje 0,99 mrad (praca wyprowadza ten poziom wzorem 17, szum migotania plus biały). Spójność wewnętrzna i jedna wartość przykładowa, a nie walidacja zewnętrzna; aberracje wyższych rzędów i szum konkretnego lasera nie są modelowane | 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) |
| Wzorce holdover oscylatorów z publicznych kart katalogowych | Cztery wzorce — OCXO (Microchip OX-208), rubidowy (Microchip 8040C), cezowy (Microchip 5071A, lampa o wysokiej wydajności) i CSAC (Microchip SA.45s) — każdy niosący maksima odchylenia Allana z karty katalogowej, starzenie i granicę temperaturową; nieujemne dopasowanie najmniejszych kwadratów szumu częstotliwości białego + migotania + błądzenia losowego, przeskalowane tak, by obejmować obwiednią każdy punkt karty katalogowej, podłoga migotania nigdy poniżej wartości dla najdłuższego τ, liniowe starzenie i sinusoidalny człon temperaturowy, zsyntetyzowane jako holdover z ziarnem po utracie GNSS | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Cztery wskazane karty katalogowe Microchip (numery dokumentów i adresy URL w każdym ustawieniu wstępnym i w docs/TELECOM-TIMING.md) dla wartości wejściowych; zamknięta rampa starzenia i własność obwiedni dopasowania jako kontrole wewnętrzne. To, jak wartości stają się modelem szumu — dopasowanie, reguła podłogi, 30-dniowy miesiąc, liniowy odczyt temperatury — jest wyborem modelowania; żadne ustawienie wstępne nie jest pomiarem egzemplarza. 0,30 runda 2, jednostronne progi względem zmierzonych egzemplarzy (wstępnie zarejestrowane a01c491c), ustalenie (pozostaje MODELLED): stacja IGS THU2 Symmetricom 8040C w ostatecznych zegarach ESA MGEX ma odchylenie Allana równe 0,35 do 0,87 ustawienia rubidowego, ale błąd holdover równy 1,07 do 1,60 jego wartości; zapis 5071A leży poza ustawieniem cezowym do 1000 s (biały szum fazy pomiaru, 30x przy 1 s) oraz w holdover (1,15 do 8,74); najgorszy produkcyjny SA.45s z 2011 jest 1.26x ustawienia CSAC przy 1 s; OX-208 nie ma zmierzonego zapisu (zablokowane) | 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 — dyskretna rampa starzenia w granicach 0,1 % od (1/2)·D·t² w ciągu doby; 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) |
| Sekundy, zanim swobodnie pracujący zegar opuści margines czasowy slotu indeksowanego czasem, oraz kadencja poprawek, która utrzymuje go wewnątrz | Rodzaj slot-timing: przewidywany błąd E(t) = k·√(σ₀² + σ_x²(t)) + (|y₀| + |c_T·ΔT|)·t + ½|D|t² odwrócony do przekroczenia, pozostałego czasu, interwału resynchronizacji pomniejszonego o opóźnienie poprawki i poprawek na dobę, z każdym członem wyszczególnionym i nazwanym dominującym; zegary z sześciu domyślnych ClockClass (TCXO, OCXO i RAFS dodane, każdy z odwołaniem do jednej karty katalogowej), wzorców telecom-timing, śródliniowej karty katalogowej lub zmierzonego zapisu; przekroczenie poza najdłuższym czasem uśredniania źródła oznaczane jako ekstrapolowane |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postacie zamknięte dla każdego członu osobno oraz niezależne wyszukiwanie pierwiastka holdover::holdover_seconds; wartości z kart katalogowych pochodzą ze wskazanych dokumentów (docs/SLOT-TIMING.md). Domyślna wartość klasy opiera się na założonej podłodze szumu czerwonego, a źródło w karcie katalogowej jest obwiednią maksimów, więc żadne z nich nie jest pomiarem żadnego egzemplarza | 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 zegarów satelitów GPS Block IIF, 14 dni ostatecznych zegarów IGS: 8 mieści się w progu 1,5, G25 i G30 optymistyczne do około 2x, przypięte); tests/slot_timing_ocxo_holdout.rs (zmierzony OCXO: predykcja na zbiorze wstrzymanym nigdy nie jest optymistyczna, 0,59 do 0,70 zmierzonego przekroczenia; w próbie w granicach 0,98 do 1,17; bez członu częstotliwości poprawki predykcja w próbie jest optymistyczna przy każdym progu); slot_timing::tests (fix_frequency_uncertainty_alone_is_linear_in_time; reduces_to_the_holdover_inversion — każda klasa względem holdover::holdover_seconds do 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) |
| Poziom ochrony czasu dla odbiornika na orbicie w warunkach spoofingu GNSS | orbital_timing::orbital_timing, dostępne jako sekcja spoofingu rodzaju slot-timing: prędkość i okres na orbicie kołowej, najdłuższy czas, w którym naziemny spoofer może dosięgnąć satelity podczas jednego przejścia, dolna granica monitora wspomaganego zegarem i opóźnienie detekcji CUSUM, warunkowy poziom ochrony (dolna granica plus dryf bez korekty w czasie opóźnienia), odchylenie, jakie narasta u spoofera o podanej maksymalnej szybkości narastania, zanim satelita opuści swój ślad lub zostanie wykonana niezależna kontrola, oraz informacja, czy każda kontrola w kontakcie z ziemią lub przez łącze międzysatelitarne jest niezależna od jednego naziemnego spoofera |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Redukcja do istniejącego poziomu ochrony czasu oraz postaci zamkniętych widoczności dla orbity kołowej i kulistej Ziemi. Warunkowo względem detekcji, jeden naziemny spoofer przy podanej szybkości narastania, przelot nad głową na nieobracającej się Ziemi; niesprawdzone na odbiorniku poddanym spoofingowi na orbicie | orbital_timing (orbital_timing, visibility_half_angle_rad, max_pass_s, crosslink_neighbour_is_outside_footprint) | orbital_timing::tests (reduces_to_the_terrestrial_tpl — dokładnie tpl::timing_protection_level_ns, gdy zegar nie ma składowej migotania, białego szumu fazy ani przypadkowego błądzenia; 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) |
| Wodospad widma w paśmie L z J/S dla każdego pasma i efektywnym C/N0 przy zaprogramowanym przebiegu czasowym zagłuszacza | Rodzaj spectrum: siatka częstotliwość-czas widmowej gęstości mocy w paśmie L (poziom szumu termicznego k T_sys, gdzie T_sys = T_ant + 290 K (F - 1), sygnały przy minimalnych mocach odbioru z specyfikacji interfejsu oraz zagłuszacze: fala ciągła, wąskopasmowy, chirp i szum dopasowany, z czasami włączenia i wyłączenia), każda komórka uśredniona po swoim przedziale i wierszu (chirpy dokładnie po pełnych i częściowych przemiataniach, zagłuszacze według współczynnika wypełnienia), efektywny C/N0 dla każdego pasma = [1/(C/N0) + suma (J/S) kappa]^-1 w każdym wierszu, J/S dla każdego pasma, J/S w paśmie oraz wodospad SVG ze słupkami C/N0. Raport zawiera kontrolę krzyżową z łańcuchem rodzaju jamming dla tych samych danych łącza |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Redukcja do równania anty-jam i bilansu łącza istniejącego rodzaju jamming (ten sam kod, wywołany na tych samych danych wejściowych) oraz postaci zamkniętej progu szumu k T0 F. Widma sygnałów pod spodem to sprawdzony wiersz powyżej; moce zagłuszarek, oś czasu i pasma układów wejściowych są danymi wejściowymi scenariusza, widma są ciągłe (bez linii kodu rozpraszającego), a na zagłuszarkę nie działa automatyczna regulacja wzmocnienia, wygaszanie ani charakterystyka anteny. W repozytorium nie ma żadnego zmierzonego widma zagłuszania, względem którego można by sprawdzić zestaw złożony. Tabela Q rodzaju jamming (CW i wąskopasmowe 1, szerokopasmowe i przeciągane 2 od 0,36: wartości podręcznikowe, przypięte do postaci zamkniętych navsignal) zgadza się z wartością CW tego modelu i różni się od tego, co model wyprowadza dla szumu dopasowanego do C/A (1,5) i dla płaskiego szumu od zera do zera bez normalizacji w paśmie (2,2); raport drukuje obie |
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 równe jamming::j_over_s_db, a efektywne C/N0 równe jamming::effective_cn0_dbhz przy Q = 1/(R_c kappa) do 1e-9 dB oraz kotwica 32,105 dB z własnego testu rodzaju zagłuszania; 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) |
| Uran i Neptun z Tabeli 1 Standisha, Pluton oraz prędkości planet | Położenia Urana i Neptuna z Tabeli 1 Standisha (domyślnej w przedziale 1800 AD do 2050 AD), Plutona z wiersza Tabeli 1 z 1992, którego obecna strona JPL już nie podaje, oraz heliocentryczna prędkość każdej planety: pochodna dwóch ciał ze średnim ruchem wynikającym z elementów plus obrót elipsy wynikający z szybkości zmian peryhelium, nachylenia i węzła | ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Zmierzone względem JPL Horizons DE441 (te same zatwierdzone zestawy testowe), ale niesprawdzone: podane w Tabeli 1 wartości dla Urana i Neptuna są przekroczone do 2,0 i 5,2 razy względem heliocentrycznych położeń DE441 (Neptun spełnia je względem położeń barycentrycznych, co sugeruje, że dopasowanie nie było heliocentryczne), strona nie podaje błędu dla Plutona, a dla prędkości nie istnieje opublikowana granica. Tabele 2a/2b spełniają własne wartości dla Urana i Neptuna i są objęte wierszem sprawdzonym | 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: przypięte na 2,04 i 5,16 razy nominalny błąd długości, poniżej sześciu razy; pluto_from_the_1992_row_is_measured_not_validated: w granicach 39 sekund łuku i 1.14e9 m; standish_velocities_track_horizons_to_one_percent: najgorsze 3.7e-3 prędkości); ephem::tests (standish_velocity_is_the_derivative_of_the_position; pluto_has_no_table2_row_and_no_stated_error) |
| Położenia Księżyca i siedmiu dużych księżyców (Fobos, Deimos, księżyce galileuszowe, Tytan) | Geocentryczny Księżyc z szeregu Montenbrucka i Gilla (którego człon -1.3972 deg na stulecie już odnosi go do równonocy J2000) oraz planetocentryczne położenia i prędkości Fobosa, Deimosa, Io, Europy, Ganimedesa i Kallisto ze średnich elementów JPL Solar System Dynamics w płaszczyźnie Laplace'a każdego księżyca, przy czym szybkość długości średniej przyjęto z szybkości rotacji synchronicznej IAU (tabela podaje okres ze zbyt małą liczbą cyfr, by utrzymać fazę), a Tytana z modelu rotacji IAU (księżyc na ujemnej osi x związanej z ciałem przy średniej odległości), ponieważ drukowany wiersz płaszczyzny Laplace'a dla Tytana nie odtwarza Horizons nawet w jego własnej epoce | ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Zmierzone względem efemeryd satelitów JPL Horizons (DE441, MAR099, JUP365, SAT441) zatwierdzonych w tests/fixtures/solar_system/horizons_satellites_icrf.csv wraz z zapytaniem i datą pobrania; nie istnieje opublikowana dokładność dla elementów średnich ani dla umiejscowienia według modelu rotacji, więc przypięte progi wychwytują regresje, a nie walidują. Elementy średnie pomijają perturbacje rezonansowe i słoneczne, a świecka akceleracja Fobosa nie jest modelowana | 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: najgorszy błąd kątowy widziany z planety w latach 2000 do 2040, Fobos 5,65 deg, Deimos 0,38, Io 0,40, Europa 1,63, Ganimedes 0,22, Kallisto 0,27, Tytan 3,31; geocentric_moon_tracks_horizons: 0,046 deg); ephem::tests (moons_sit_at_their_mean_distance_and_move_at_their_mean_speed); ephem_provider::tests (earth_and_moon_balance_about_their_barycentre) |
| Stałe fizyczne każdego ciała Układu Słonecznego i raport całego układu | Body zyskuje Merkurego, Wenus, Jowisza, Saturna, Urana, Neptuna, Plutona, Fobosa, Deimosa, Io, Europę, Ganimedesa, Kallisto i Tytana (parametr grawitacyjny, promień odniesienia, J2 tam, gdzie opublikowano go wraz z promieniem, do którego się odnosi, biegun IAU i południk zerowy), wyszukiwanie po nazwie oraz rekord BodyFacts (kod NAIF, klasa, ciało macierzyste, promień równikowy i średni); rodzaj solar-system podaje je dla wszystkich osiemnastu ciał wraz z położeniami, czasami świetlnymi i śladem orbity w ciągu jednego obiegu, a każde ciało jest oznaczone jako VALIDATED lub MODELLED |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Transkrypcja opublikowanych stałych, każda z podanym źródłem w miejscu zdefiniowania: parametry grawitacyjne z rekordów ciał JPL Horizons i z tabeli parametrów fizycznych satelitów JPL, promienie z tabel parametrów fizycznych JPL (IAU WGCCRE 2015), bieguny i południki zerowe z Grupy Roboczej IAU ds. Współrzędnych Kartograficznych i Elementów Rotacji (wartości średnie, bez członów tempa T i członów okresowych), J2 z Smith i in. 2012, Iess i in. 2018 i 2019 oraz Jacobson 2009 i 2014. Sprawdzone pod kątem spójności wewnętrznej (okres obrotu Jowisza względem tempa Systemu III, każde J2 względem jego promienia odniesienia), a nie względem zewnętrznej wyroczni. 0,30 runda 2: wartości GM przyjęto z gm_de440, a elementy Fobosa i Deimosa z pck00011, więc 0 z 84 stałych czternastu dodanych ciał różni się teraz od NAIF (było 12), co jest sprawdzeniem transkrypcji i nie jest wliczane. 0,36: orientacja IAU związana z ciałem i GM czternastu dodanych ciał zostały wydzielone do własnego wiersza VALIDATED („Orientacja IAU i parametr grawitacyjny czternastu dodanych ciał Układu Słonecznego”); ten wiersz zachowuje to, co zostało. J2 i promień średni są przytoczone, a nie sprawdzone; położenia w raporcie opierają się na własnych wierszach; a raportowany prime_meridian_deg dla Ziemi, Księżyca i Marsa pozostaje na stałych konwencjonalnych (do 6.6e-3, 2.8e-2 i 9.6e-4 rad od IAU_<BODY>). Rewizje 0,30: GM Fobosa 7.087e5 -> 7.087546066894452e5, Deimosa 9.62e4 -> 9.615569648120313e4, Urana 5.7939506103e15 -> 5.793951256527211e15, Neptuna 6.83509997e15 -> 6.835103145462294e15, Plutona 8.69326e11 -> 8.696138177608748e11 m³/s²; promień równikowy Fobosa 13,1 -> 13,0 km; prime_meridian_deg zawiera teraz człony kwadratowe i okresowe | 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 |
| Wyznaczanie położenia wokół dowolnego ciała Układu Słonecznego za pomocą lokalnej konstelacji i łącza dalekiego kosmosu z Ziemi | Rodzaj body-pnt: orbiter lub lądownik na powierzchni wokół ciała wybranego po nazwie nawiguje za pomocą jednokierunkowych pseudoodległości z konstelacji nawigacyjnej Walkera wokół tego ciała (orbity dwóch ciał z wiekowym dryfem J2 ciała, nieznany zegar użytkownika) oraz opcjonalnego bezzegarowego zakresu dwukierunkowego z Ziemi, przy czym kierunek i odległość Ziemi pochodzą z efemerydy analitycznej w każdej epoce; linie widzenia zasłonięte przez kulę ciała i maska elewacji na powierzchni; w każdej epoce GDOP i PDOP samej konstelacji (orbit::dop), formalna niepewność położenia z wierszem Ziemi i bez niego oraz fiksy Gaussa-Newtona z ziarnem (batch_ls::gauss_newton) w obu wariantach, z czasem świetlnym i czasem obiegu tam i z powrotem od ciała do Ziemi |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postacie zamknięte i spójność wewnętrzna: trzecie prawo Keplera dla okresu przekaźnika, promień orbity i promień powierzchni utrzymane w czasie przebiegu, dodanie pomiaru nigdy nie zwiększające formalnej niepewności oraz błędy z ziarna zgodne z kowariancją. Orbity przekaźników pomijają trzecie ciała (przyciąganie Jowisza na przekaźniki wokół Europy nie jest modelowane), szum jest gaussowski na podanych poziomach, a model pomiaru jest chwilowy, więc nie jest to sprawdzone względem danych nawigacyjnych żadnej misji | 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: pierwiastek ze średniej kwadratów każdego błędu rozwiązania podzielony przez jego własną formalną sigmę w przedziale [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) |
| Mapy pokrycia i rozmycia dokładności dla dowolnych konstelacji wielosystemowych w dużej skali, wokół dowolnego ciała centralnego | Rodzaj constellation-design poza dwoma przypiętymi przypadkami: konstelacje jawne i wielopowłokowe, kilka konstelacji na przebieg z jednym zegarem odbiornika na konstelację, Ziemia, Księżyc i Mars ze stałych ciał, preset BeiDou (modelowana faza orbity średniej i przecięcie 118 deg E orbity geosynchronicznej nachylonej), w każdej komórce liczba satelitów w widoku, GDOP, PDOP, HDOP, VDOP i dostępność, zredukowane ślady na powierzchni oraz wstępny filtr widoczności według szerokości podsatelitarnej, który przelicza konstelację 5 000 satelitów na siatce 10 deg w ułamku sekundy |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: skan elewacji metodą siłową, redukcje obliczone ręcznie i przez orbit::dop oraz geometria Walkera i geosynchroniczna w postaci zamkniętej. Orbity dwuciałowe z opcjonalnym wiekowym J2, ciało kuliste z lokalną pionową wzdłuż promienia, wyłącznie widoczność geometryczna (bez mocy sygnału, stanu satelity, terenu ani perturbacji od trzeciego ciała), a faza względna między systemami wzięta z różnych epok odniesienia, więc nie jest to migawka żadnej daty. Przegląd 0,30, ustalenie (pozostaje MODELLED): ustawienia wstępne spełniają opublikowane jednostronne dolne granice dostępności DOP (BeiDou OS Performance Standard 3,0, Galileo OS SDD) na poziomie 100 %, ale po podwojeniu PDOP silnika w kopii roboczej nadal je spełniają (najgorszy punkt 99,36 %), więc te granice nie wykryłyby nawet błędu 100 % wielkości, którą ten wiersz oblicza; zaostrzenie ich po przebiegu byłoby tolerancją ustaloną post hoc. Awans wymaga dwustronnego porównania wartości DOP na identycznej geometrii z tolerancją ustaloną z góry. 0,30 runda 2 (tests/coverage_dop_full_oracle.rs, wstępnie zarejestrowane add671d6), ustalenie (pozostaje MODELLED): położenia, elewacja, azymut i ślady naziemne z Orekit 12,2 oraz GDOP/PDOP/HDOP/VDOP z gnss_lib_py 1.0.4 (wspólny zegar) i odwrotność numpy (jeden zegar na konstelację) zgadzają się w każdym progu dla Galileo, GPS, BeiDou, Galileo+GPS (po jednym zegarze) oraz projektu Ziemi z 1584 satelitami (DOP w granicach 2e-14 względnie, identyczne rozwiązanie, dostępność i liczby widoczności). W projektach Księżyca i Marsa elementy, położenia, widoczność i ślady zgadzają się, ale DOP przekracza ustalony z góry próg względny 1e-9 w komórkach, w których największy PDOP wynosi 1434 lub więcej (do 8e-6), a 4 komórki różnią się o jedną epokę rozwiązania na geometrii numerycznie osobliwej (pivot silnika 1e-10 wobec rzędu numpy), więc wiersz nie jest sprawdzony. Rewizje 0,30: zegar odniesienia TDOP/GDOP jest teraz konstelacją o najniższym numerze w widoku (constellation-multi-gnss-coverage globalny max GDOP 2,2236 -> 2,1205, średnia 1,122 -> 1,131), a liczby widocznych satelitów na konstelację są sumowane jako liczby całkowite | constellation (coverage, ConstellationDesignScenario, beidou_slots, body_by_name) | constellation::tests (prefilter_matches_brute_force_exactly — każda mapa i licznik równa się skanowi z bezpośrednim testem elewacji; five_thousand_satellites_on_a_coarse_grid — 5 000 satelitów, wypisuje czas przebiegu i zachowane testy par; 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 (wyłącznie kontrola regresji); tests/coverage_dop_full_oracle.rs::finding_is_pinned; tests/coverage_dop_gnss_lib_py_oracle.rs (regresja) |
| Połączona misja obejmująca kilka rodzajów scenariuszy na jednej wspólnej osi czasu | Fazy rodzaju campaign: każda faza uruchamia jeden lub więcej scenariuszy istniejących rodzajów przez run_toml, odczytuje ich wyniki do nazwanych kanałów (błąd czasu zegara i jego granica, średni efektywny stosunek nośnej do gęstości szumu i próg śledzenia, pionowy poziom ochrony i granica alarmu, błąd położenia, liczba śledzonych satelitów, flagi alarmów) za pomocą presetów dla każdego rodzaju lub jawnych ścieżek wyników, umieszcza je na początku fazy i przytrzymuje na wspólnej siatce, z granicami faz i zdarzeniami; stan jest przekazywany dalej przez carry (kanał kontynuuje od wartości końcowej poprzedniej fazy), handoff (numer poprzedniej fazy wpisany do następnego scenariusza) i end_at (faza kończy się w czasie obliczonym przez przebieg, takim jak czas detekcji monitora spoofingu); skrót kampanii i skrót ze wszystkich wyników członkowskich |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamości składania względem samodzielnych przebiegów tych samych rodzajów: kampania jednofazowa odtwarza wynik samodzielny bit w bit, przeniesione przesunięcie równa się własnej ostatniej próbce poprzedniego przebiegu, a faza zakończona przez end_at ma za długość dokładnie czas detekcji przebiegu. Addytywne przeniesienie przez granicę fazy i podtrzymanie zerowego rzędu są wyborami modelowania, a każda faza jest tak dobra jak rodzaj, który ją uruchomił; żadna łańcuchowa misja nie została sprawdzona względem zmierzonej | 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 — wynik członka identyczny bajt w bajt z przebiegiem samodzielnym, a każda wyrównana wartość równa się samodzielnemu szeregowi; 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) |
| Przeglądy parametrów i zespoły Monte Carlo z ziarnem dla dowolnego rodzaju scenariusza | Sekcje sweep (od jednego do trzech kluczy z kropkami dowolnego rodzaju, na wartościach osi ogólnego przeglądu, opcjonalnie z zespołem w każdym węźle) i monte_carlo rodzaju campaign: realizacja k działa przy base_seed + k; każda metryka podaje średnią, odchylenie standardowe, percentyle 5/50/95 metodą najbliższej rangi oraz przedział ufności 95% dla średniej metodą percentylowego bootstrapu ze stałym ziarnem (inertial::metric_stat); jednostki metryk są odczytywane z własnego bloku jednostek przeglądanego rodzaju |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postać zamknięta błądzenia losowego fazy przy białym szumie częstotliwości, wariancja q_wf tau (NIST Technical Note 1337), dla aparatu statystycznego, oraz równość bajtowa z przebiegami samodzielnymi dla ziarnowania. Sprawdza arytmetykę zespołu na własnym modelu zegara silnika, a nie na zewnętrznym zbiorze danych | 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 ziaren zegara z białym szumem częstotliwości w wybiegu tau = 3010 s: prawdziwa średnia 0 wewnątrz raportowanego przedziału, połowa szerokości przedziału w granicach 25% od 1,96 sigma/sqrt(n), a wariancja próbkowa wewnątrz dwustronnego przedziału chi-kwadrat 99% dla sigma = sqrt(q_wf tau) = 16,459 ns; zespół kalibracyjny (CAP-10, wstępnie zarejestrowany ea451cb5, docs/CALIBRATION-ENSEMBLES.md, tests/calibration_ensembles.rs): w 200 niezależnych zespołach przedział pokrywa prawdziwą średnią w 192 (wewnątrz 99 % obszaru Binomial(200, 0,95) [181, 197]), a kontrola chi-kwadrat przechodzi w 196, podczas gdy tolerancja percentylowa dla pojedynczego ziarna (p05 i p95 w granicach 0,3 sigma) przechodzi tylko w 183 z 200, NOT MET wobec wstępnie zarejestrowanych 190, kontrola wrażliwa na ziarno, zapisana, a nie poluzowana; a_one_node_sweep_and_a_one_member_composition_read_the_standalone_number) |
| Kilka scenariuszy przy wspólnych warunkach, ze zbiorczym podsumowaniem | Sekcja compose rodzaju campaign: nazwane wspólne wartości (na przykład moc i położenie jednego zagłuszacza) wpisywane do każdego członka pod kluczami, do których są przypisane, uruchomienie każdego członka oraz dla każdej metryki najmniejsza, największa i średnia wartość wśród członków ze wskazaniem członka; jednostki metryk muszą być zgodne we wszystkich członkach |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamość składania względem przebiegu samodzielnego. Arytmetyka wspólnych warunków to księgowość; fizyka pochodzi z rodzajów członkowskich, z których każdy ma własny wiersz | campaign (run_compose) | tests/campaign_composition_reference.rs (a_one_node_sweep_and_a_one_member_composition_read_the_standalone_number — jednoczłonowa kompozycja odczytuje liczbę samodzielną i skrót wyniku) |
| Ograniczona optymalizacja jednej metryki względem parametrów kampanii | Sekcja optimize rodzaju campaign (CAP-32): od jednego do trzech kluczy scenariusza z kropkami, ograniczonych do [lo, hi] w skali lin lub log, jedna metryka odczytywana ścieżką wyniku, cel minimize, maximize lub target; metoda grid (wartości osi przeglądu) albo deterministyczny sympleks Neldera-Meada we współrzędnych znormalizowanych z rzutowaniem na pudełko i standardowymi współczynnikami; brakująca lub nieskończona metryka dostaje najgorszą ocenę i pozostaje w śladzie; przy runs > 1 metryką jest średnia po wspólnych ziarnach; każde obliczenie jest prawdziwym przebiegiem wskazanego rodzaju, wypisanym w trace i wliczonym do skrótu odtwarzalności |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Wyłącznie wewnętrzne: dokładna postać zamknięta -20 log10(range) równania łącza, niezależna siatka metodą siłową na tym samym rodzaju oraz funkcja Rosenbrocka. Próg 1-D rundy 1 jest NOT MET (wstępnie zarejestrowane pudełko wykluczało rozwiązanie 3 dB; optymalizator zatrzymał się na granicy), zapisane w docs/design/evidence/cap32-optimize/RESULTS.md i nie oceniane ponownie. Optimum jest lokalne względem pudełka i punktu startu; bez twierdzenia o optimum globalnym | campaign::optimize (run_optimize, nelder_mead) | tests/campaign_optimize_reference.rs (wstępnie zarejestrowane fbe6c8b3 i, po chybieniu protokołu w rundzie 1, 441f31bc: p2_prime_interior_target_range_matches_the_closed_form — rozwiązanie celu 1-D w granicach 6.1e-15 od r* = r0 10^((m(r0) - 3)/20) w 96 ewaluacjach; p3_prime_contour_target_grid_and_nelder_mead oraz p3_grid_matches_brute_force_and_nelder_mead_does_at_least_as_well — najlepszy wynik metody siatkowej równy bit w bit niezależnej pętli siłowej 41 x 41 po run_toml, Nelder-Mead co najmniej równie dobry w 177 i 161 ewaluacjach; 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, który przypina zapisane chybienie rundy 1); campaign::optimize::tests (nelder_mead_meets_the_preregistered_rosenbrock_bar: f* = 1.7e-20 w 234 ewaluacjach; a_non_finite_score_is_never_the_best; the_grid_mapping_is_the_sweeps) |
| Projekty sygnałów pozycjonowania, nawigacji i czasu na niskiej orbicie okołoziemskiej: śledzenie kodu, akwizycja, zgodność z GNSS i bilans pasm dla dowolnego systemu | Rodzaj leo-signal: parametryzowane projekty sygnałów (pasmo, szerokość pasma nadawania, przydział ITU; składowe akwizycyjne, danych i pilotowe z widmami BPSK(n), BOC(m,n), MBOC lub płaskimi, udziały mocy, podnośne FDMA, długości kodów i szybkości danych) z wkompilowanych publicznych plików presetów (Xona Pulsar, Iridium STL, sygnał okazjonalny Starlink, CentiSpace, ogólny projekt pasma C oraz ogólne projekty UHF/L/S/C/szerokie C, każdy z adresem URL źródła, a wartości nieopublikowane oznaczone jako REPRESENTATIVE) albo zapisanych w treści; dla każdego sygnału widmowa gęstość mocy z ograniczonym pasmem, ułamki mocy w paśmie, szerokość pasma Gabora, jitter kodu względem C/N0 i rozstawu oraz dokładność pomiaru odległości, przestrzeń przeszukiwania akwizycji, prawdopodobieństwo detekcji kwadratowej oraz średni czas akwizycji szeregowej i równoległej względem kodu, współczynnik separacji widmowej do i z GPS L1 C/A, Galileo E1, GPS L5, Galileo E5a, E5b i AltBOC wraz z degradacją C/N0, a także tolerancja J/S dla CW, szerokopasmowego i dopasowanego z łańcucha SSC rodzaju spectrum; bilans pasm opóźnienia jonosferycznego, strat w wolnej przestrzeni, dokładności pomiaru odległości przy równym C/N0 i równym EIRP oraz tolerancji na zagłuszacz; a także jakościowe kontrole kształtu projektu względem opisanego pomiaru |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Sprawdzone postacie zamknięte dwóch wierszy powyżej, tożsamość fałszywego alarmu detektora kwadratowego P_d(snr = 0) = P_fa i średni czas akwizycji Holmesa oraz redukcja do własnego łańcucha SSC rodzaju widma (ten sam kod Jammer::ssc). Same projekty są danymi wejściowymi: ustawienia wstępne oznaczone REPRESENTATIVE lub WORKSHOP nie są opublikowanymi specyfikacjami, widma rozszerzonego Feher QPSK, kluczowania przesunięciem kodu i OFDM są przybliżone, a kontrole kształtu porównują kształty, a nie skalibrowane poziomy. | 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 (każdy dołączony scenariusz niezależny od systemu działa bez danych warsztatowych, stosunki jonosferyczne w kompromisie pasm równają się (f_ref/f)^2, a jego różnice w wolnej przestrzeni 20 log10(f/f_ref), jitter przy odniesieniowym C/N0 leży między granicą Gabora a postacią o nieograniczonym paśmie, kontrole kształtu E5 scenariusza z parametrami warsztatowymi są spójne, gdy ten plik jest obecny, i żaden plik źródłowy nie kompiluje tego pliku) |
| Wielopasmowy wodospad widma (UHF, L, S, C) z zaprojektowanymi sygnałami i zagłuszaczami w każdym paśmie | Rodzaj spectrum rozszerzony poza pasmo L: pasma podane jako preset projektu sygnału (rysowany ze wszystkimi składowymi, z pasmem ograniczonym do szerokości pasma nadawania, C/N0 i J/S odniesione do śledzonej składowej) albo jako własna nośna i modulacja; dodatkowe panele wodospadu w dowolnym zakresie częstotliwości na tej samej osi czasu i skali kolorów; zagłuszacz szerokopasmowy (zaporowy) obok CW, wąskopasmowego, chirp i szumu dopasowanego; J/S i efektywny C/N0 dla każdego pasma z niezmienionego łańcucha współczynnika separacji widmowej |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Redukcja do istniejącego łańcucha widma i równania anty-jam rodzaju zagłuszania (pasmo jednoskładnikowe daje te same liczby co przed rozszerzeniem) oraz widma sygnałów z wierszy sprawdzonych. Moce zagłuszarek, oś czasu, pasma układów wejściowych i projektowane sygnały są danymi wejściowymi, a sygnał projektowany jest obcięty na swoim paśmie nadawczym (bez emisji poza pasmem). | 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 (wielopasmowy wodospad działa z czterema panelami, zagłuszarki UHF, pasma L5, S i C zagłuszają każda tylko własne pasmo, a przebieg z pojedynczym pasmem nie zmienia się przez rozszerzenie); leo_signal::tests::to_spectrum_band_is_consistent_with_the_design; spectrum::tests (agrees_with_the_jamming_kind_chain) |
| Przejście satelity LEO-PNT i jego bilans łącza w każdym paśmie na tle widocznych satelitów GNSS na orbicie MEO | Rodzaj leo-pass: satelity z zaprojektowanego przejścia, z elementów, z TLE przez SGP4 lub z konstelacji Walkera z constellation-design; dla każdego pasma i epoki kąty widzenia, odległość, zamknięta szybkość zmiany odległości i przyspieszenie odległości (sprawdzane w każdym przebiegu względem różnic centralnych i raportowane), straty w wolnej przestrzeni, EIRP z charakterystyką izostrumieniową, gaussowską lub płaską, antena użytkownika płytkowa, półkulista lub izotropowa, tłumienie gazowe ITU-R P.676-10 Załącznik 2, deszcz i scyntylacja P.618, tłumienie wnikania do budynku P.2109, niedopasowanie polaryzacji, temperatura szumowa układu, C/N0, Doppler i szybkość zmiany Dopplera oraz opóźnienie pierwszego rzędu z ukośnego TEC Klobuchara lub pionowego TEC, przeskalowanego ułamkiem Chapmana poniżej satelity; pary wolne od jonosfery z szumem kodu w szczycie przejścia; nośne Galileo lub GPS z mocy odbieranych podanych w dokumentach interfejsu, przez ten sam odbiornik |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postacie zamknięte i spójność wewnętrzna: tożsamości prędkości i przyspieszenia zasięgu względem pochodnych numerycznych, zysk izoflux znoszący wzrost zasięgu, podręcznikowe granice strat polaryzacji, jakościowa obserwacja LEO względem GNSS (dzwonowy, trwający minuty przelot ze szczytem kilka dB powyżej płaskich nośnych GNSS 44-51 dB-Hz). EIRP i charakterystyki to opublikowane moce odbierane przeliczone na EIRP lub wybory reprezentatywne, człon gazowy to zastąpiona uproszczona metoda P.676-10, a nic nie jest porównywane ze zmierzonym C/N0 LEO | leo_pass (LeoPassScenario); leo_link::geometry (design_pass, link_geometry, numerical_check, SatMotion, UserMotion); leo_link::antenna; leo_link::itu (p676_gaseous_attenuation_db); leo_link (system_noise_temperature_k, cn0_dbhz) | leo_pass::tests (the_leo_pass_is_a_bell_above_flat_gnss; closed_form_doppler_agrees_with_the_numerical_derivative: poniżej 0,01 Hz i 0,01 Hz/s; 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 |
| Nazwane presety systemów LEO-PNT z podanymi źródłami oraz silnik niezależny od systemu | leo_link::presets: ogólny wielopasmowy (UHF, L, S, C), ogólny pasmo C, Xona Pulsar X1/X5, Iridium STL, Starlink jako sygnał okazjonalny wyłącznie Dopplera, CentiSpace i opcjonalny preset Celeste IOD, każdy z źródłem oznaczonym PUBLIC (z adresem URL), REPRESENTATIVE lub WORKSHOP, przy czym preset warsztatowy znajduje się w opcjonalnym pliku presetu Celeste IOD, wkompilowanym tylko wtedy, gdy ten plik istnieje; każde pasmo i każdą orbitę można nadpisać w scenariuszu, a scenariusz może w ogóle nie wskazywać presetu | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Transkrypcja przytoczonych publicznych wartości i kontrola spójności: EIRP ustawione z opublikowanej minimalnej mocy odbieranej przewiduje opublikowane maksimum w granicach 0,5 dB przy płaskiej charakterystyce. To jest sprawdzenie rozrzutu zasięgu, a nie walidacja anteny żadnego satelity; ustawienia reprezentatywne nie zgłaszają żadnych twierdzeń o rzeczywistym systemie | 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: w granicach 0,5 dB od -139.1 i -136.2 dBW); leo_link::presets::iridium::tests; leo_pass::tests (a_fully_custom_band_needs_no_preset) |
| Pozycjonowanie niskoenergetyczne: czas do pierwszego fiksu i energia na fiks względem współczynnika wypełnienia | leo_link::energy i sekcja [iot] rodzaju leo-pass: całkowanie koherentne ograniczone szybkością zmiany Dopplera, sumy niekoherentne kwadratowe do progu detekcji, przeszukiwanie przedziałów Dopplera po obwiedni użytkownika nieruchomego na orbicie (zimne) lub w oknie wspomaganym (gorące), przeszukiwanie kodu równoległe lub szeregowe, czas komunikatu nawigacyjnego przy zimnym starcie, energia na fiks i czas życia baterii dla różnych odstępów między fiksami, dla każdego pasma LEO i sygnału GNSS |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna podanego modelu projektowego: każda moc, próg i wybór wyszukiwania jest daną wejściową, a model pomija niejednoznaczność krawędzi bitu, niewykryte zdarzenie i ponowną akwizycję. Nie porównano ze zmierzonym odbiornikiem | 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) |
| Aktualizacja komunikatu nawigacyjnego LEO w trakcie przejścia z kontrolą ciągłości w chwili przełączenia | Analiza midpass-update rodzaju leo-navmsg: najwyższe przejście nad użytkownikiem w przedziale poszukiwań, komunikaty według globalnego harmonogramu z okresami użytkowania wyśrodkowanymi w oknach dopasowania, a przy każdym przełączeniu skok położenia 3D, skok zegara, skok pseudoodległości użytkownika, największy skok na dowolnej widocznej linii widzenia (wzór zamknięty po stożku nadiru), błąd odległości przed i po oraz PASS/FAIL względem progu |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna (tożsamość skoku i granica stożka względem próbkowania siłowego). Próg jest daną wejściową; żadne opublikowane wymaganie ciągłości dla LEO nie jest przypięte | leo_navmsg (LeoNavmsgScenario::midpass, worst_case_jump, elevation, geodetic_to_ecef) | leo_navmsg::tests::a_mid_pass_update_is_continuous (skok zasięgu przy każdym przełączeniu równa się zmianie błędu zasięgu, a poprawione dopasowanie 300 s aktualizowane co 150 s przechodzi próg 5 cm); leo_navmsg::tests::a_keplerian_only_update_over_a_long_interval_is_flagged; leo_navmsg::tests::worst_case_jump_bounds_every_line_of_sight (postać zamknięta ogranicza gęste próbkowanie stożka) |
| Udokumentowane kodowanie binarne komunikatu nawigacyjnego LEO z bilansem błędu kwantyzacji | leo_navmsg::codec: własna ramka Kshana (preambuła, wersja, model, długość, ładunek, CRC-24Q) dla czterech modeli efemerydy, wielomianu zegara, SVID, numeru wydania danych, pasma, stanu, zestawu Klobuchara, współczynników NeQuick-G i parametrów UTC, każde pole z podaną szerokością i krokiem (field_table), kwantyzacja z odmową poza zakresem oraz bilans największej zmiany położenia i zegara wywołanej zmianą każdego pola o pół kroku w oknie ważności | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamości obiegu w obie strony i sam budżet. Format jest własnym formatem Kshana, wzorowanym na opublikowanych składnikach komunikatu i zestawie pól Galileo ICD; nie jest to układ bitów Celeste ani żadnego innego systemu (żaden nie jest publiczny), więc nie ma zewnętrznego układu, względem którego można by sprawdzać | 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 (każdy model w granicach 2 mm od dokładnego komunikatu po zdekodowaniu, ponowne zakodowanie identyczne bit w bit, odwrócony bit odrzucony przez CRC); leo_navmsg::tests::every_field_of_the_budget_stays_under_a_millimetre |
| Eksporty komunikatów nawigacyjnych LEO w stylu RINEX-4 i CSV | leo_navmsg::text: blok w stylu RINEX-4 (nagłówek rekordu > EPH, wiersz satelity i epoki z trzema członami zegara, wiersze orbity rozgłaszanej D19.12) z literą systemu L i typami rekordów KP16, KRAC, LU22 i APOL, oznaczony w każdym nagłówku jako rozszerzenie Kshana niebędące częścią RINEX 4,02, oraz tabela CSV z domyślnym schematem kolumn i schematami presetów, każda z importerem | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Obiegi w obie strony i arytmetyka kalendarza. RINEX 4,02 nie definiuje żadnych rekordów nawigacyjnych LEO (IGS RINEX 4,02), więc układ jest udokumentowanym rozszerzeniem, z arXiv 2401,17767 przytoczonym jako stan wcześniejszy; nie istnieje zewnętrzny czytnik tego formatu, względem którego można by sprawdzać | 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 (każdy model w granicach 0,1 mm po bloku tekstowym, CSV dokładnie) |
| Wielomian ECEF ATOMIC z zerowym zegarem i syntetyczne porównanie modeli LEO dla pięciu wysokości | wariant EcefPoly leo_navmsg::elements::EphemerisModel: wielomian ECEF dla każdej osi bez członów zegara, człon relatywistyczny z -2 r.v/c^2, oceniany względem zegara sterowanego. Także analiza porównania modeli (liu_comparison po LIU2025_TABLE), która dopasowuje model 22-parametrowy na pięciu wysokościach z artykułu na 20-minutowych łukach orbity zintegrowanej przez Kshana i wypisuje wynik obok opublikowanego SISRE | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Fakty o modelu ATOMIC z InsideGNSS (wielomian 6. rzędu, ważność około jednej minuty, odświeżanie co 30 s, zegar sterowany, błąd zegara 24 cm). Są to fakty opisowe, bez opublikowanych liczb do porównania. Tabela pięciu wysokości drukuje SISRE Liu i in. 2025 (8,88, 6,21, 2,87, 2,11 i 0,75 cm na 320, 475, 786, 966 i 1336 km na łuku 20-minutowym) obok dopasowania Kshana na jej własnej całkowanej orbicie (4,25, 2,87, 2,20, 1,25 i 0,51 cm; stosunki 0,46 do 0,77), nieprzypiętego, ponieważ praca dopasowywała rzeczywiste precyzyjne orbity, a wzorce prawdy różnią się. Sam 22-parametrowy model i dopasowanie są sprawdzone względem rzeczywistych orbit w wierszu 22-parametrowy model efemeryd LEO Liu i in. 2025 i jego dopasowanie na rzeczywistych precyzyjnych orbitach. Rewizja 0,30: wartości w tabeli zmieniły się wraz z dopasowaniem w konwencji pracy (GRACE-A 5,40 -> 4,25 cm, GRACE-C 4,12 -> 2,87, Sentinel-2A 2,95 -> 2,20, HY-2A 2,38 -> 1,25, Sentinel-6A 0,70 -> 0,51) | leo_navmsg::elements (EcefPoly, ephemeris_at); leo_navmsg (liu_comparison, LIU2025_TABLE) | 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 |
| Wyznaczanie położenia z Dopplera LEO, z jednym i wieloma satelitami, ze stanami dryfu zegara i prędkości | Wsadowe wyznaczanie położenia metodą Gaussa-Newtona z szybkości zmiany odległości z pochodnymi analitycznymi (d rho_dot / d r = -(I - u u^T)(v_s - v_u)/rho, d/dv = -u, d/d drift = 1), stała prędkość użytkownika jako opcja, pseudopomiar wysokości dla użytkownika na powierzchni, kroki tłumione; formalna kowariancja przy wartości prawdziwej; rzuty wzdłuż toru, w poprzek toru i pionowy; dokładność pojedynczego przejścia względem przesunięcia użytkownika w poprzek toru; czas największego zbliżenia. Tryb doppler rodzaju leo-pvt dodaje błąd względem długości okna oraz tryb sygnałów okazjonalnych wyłącznie z Dopplerem (preset starlink-sop) |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: odzyskanie bez szumu, tożsamość kinematyczna rho_ddot = (|v|^2 - rho_dot^2 + d.a)/rho różniczkowana numerycznie, zerowy Doppler w momencie największego zbliżenia, rozwiązanie lustrzane pojedynczego przelotu oraz błędy z ziarna względem formalnej kowariancji. Wartość dla Starlink z Kozhaya, Saroufim i Kassas (NAVIGATION 72(1), 2025: około 2 m w 20 s przy trzech satelitach) jest wyłącznie porównaniem: modelowany odbiornik, z doskonałymi efemerydami i każdym błędem zawartym w sigmie Dopplera 30 Hz, jest w tym samym oknie kilkakrotnie mniej dokładny, a odbiornik i częstość pomiarów z pracy nie są odtworzone | 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: do 1 mm, a dryf do 1e-6 m/s; 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: ważony pierwiastek ze średniej kwadratów reszt w przedziale [0,8, 1,2], a błąd poniżej czterech formalnych sigm); 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 (wstępnie zarejestrowany zamiennik względem opublikowanych percentyli zbioru danych 3 z „Unveiling Starlink for PNT”, doi:10.33012/navi.685: przy 3 satelitach (maska 47 deg), bez wspomagania wysokością i 30 Hz błąd 3-D p90 wynosi 92,2 m przy 20 s i 870 m przy 8 s wobec opublikowanych 2 m i 10 m, więc oba progi dwukrotności są NOT MET, po stronie wyższej, i zapisane w asercji jako chybione; docs/design/evidence/cap11-starlink-doppler-proxy/) |
| Łączne wyznaczanie położenia z pseudoodległości GNSS i LEO z odchyleniami międzysystemowymi i modelami błędów dla każdego sygnału | Fiksy ważoną metodą najmniejszych kwadratów Gaussa-Newtona dla dowolnej mieszanki systemów, z jednym zegarem odbiornika na system (odchylenie międzysystemowe estymowane razem z położeniem) lub ze znanym przesunięciem rozgłaszanym w skali czasu odniesienia; sigmy dla każdego pomiaru podawane przez wywołującego, domyślnie szum termiczny pętli DLL silnika (navsignal::dll_code_jitter_chips) przy C/N0 dla danej elewacji połączony z błędem zakresu sygnału w przestrzeni; nieważone DOP (GDOP, PDOP, HDOP, VDOP, TDOP) w lokalnym układzie geodezyjnym, formalne sigmy wschód-północ-góra i sigmy odchyleń; tryb joint rodzaju leo-pvt porównuje fiksy wyłącznie GNSS, wyłącznie LEO i fuzyjne oraz przegląda DOP względem liczby dodanych satelitów LEO |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Ręcznie wyprowadzony DOP czterech satelitów (jeden satelita w zenicie i trzy na horyzoncie co 120 deg, których macierz normalna odwraca się ręcznie), tożsamość strukturalna, że system z własnym zegarem i jednym satelitą nie dodaje geometrii, odzyskanie bez szumu położenia, zegara i biasu oraz błędy z ziarna względem kowariancji. Wyłącznie kontrole wewnętrzne; nie porównano z wynikiem odbiornika. Porównanie zewnętrzne 0,30, ustalenie (pozostaje MODELLED): w wielosystemowym dniu IGS (ABMF 2018-05-13, GPS i Galileo C1C, efemerydy rozgłaszane, Klobuchar) bias międzysystemowy zgadza się z RTKLIB v2.4.2-p13 rnx2rtkp (mediana różnicy -0.11 ns po poprawce rozgłaszanego opóźnienia grupowego 0,30, -0.35 ns przed; próg 1 ns), ale tylko 93,6 % z 280 epok (93,2 % przed poprawką) mieści się w 3 m od współrzędnej ITRF2020 wobec wstępnie zarejestrowanych 95 %. Sam RTKLIB osiąga 88,2 % na tych samych danych, więc próg leży poza możliwościami jednoczęstotliwościowego pozycjonowania z efemerydami rozgłaszanymi na tej stacji i w tym dniu, a nie jest rozbieżnością solvera; test porównawczy jest zatwierdzony jako ignorowany. 0,30 runda 2, ostrzejsze dane wejściowe przy niezmienionym progu 3 m / 95 % / 1 ns, ustalenie (pozostaje MODELLED): z jonosferycznie wolną parą Galileo E1/E5a (wstępnie zarejestrowane 6927e039) 79,9 % epok mieści się w 3 m (RTKLIB 67,9 %); z precyzyjnymi orbitami, zegarami, przesunięciami anten satelitów i biasami kodu CODE MGEX (wstępnie zarejestrowane 7d8c3597) 94,2 % (RTKLIB 94,1 %), a bias międzysystemowy różni się od RTKLIB o -1.03 ns, ponieważ tryb pojedynczy RTKLIB ignoruje przesunięcia anten satelitów (+0,04 ns, gdy obaj je pomijają) | 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) z dokładnością 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 |
| Zbieżność precyzyjnego wyznaczania położenia (PPP) wyłącznie z GNSS i z uzupełnieniem przez LEO | Rozszerzony filtr Kalmana PPP z niejednoznacznościami rzeczywistoliczbowymi (float) na kodzie i fazie wolnych od jonosfery: współrzędne statyczne, biały zegar odbiornika, jedno odchylenie międzysystemowe dla każdego dodatkowego systemu, opóźnienie zenitalne wilgotne jako błądzenie losowe odwzorowane przez 1/sin(elewacja), niejednoznaczność float dla każdego łuku satelity dodawana przy wschodzie i usuwana przy zachodzie oraz błąd precyzyjnej orbity i zegara wspólny dla kodu i fazy satelity, przetwarzany jako jedna skorelowana aktualizacja dwuwierszowa w postaci stabilizowanej Josepha; pomiary symulowane z tego samego modelu; czas zbieżności (błędy poniżej progów do końca przebiegu), krzywe błędów i uśrednione po przebiegu NEES położenia dla samego GNSS i każdego przypadku LEO, uruchamiane jako rodzaj leo-ppp |
ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Test chi-kwadrat NEES jest wewnętrzną kontrolą spójności (prawda i filtr dzielą model). Trend porównano z Li i in., 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 min skrócone do 7,0, 3,2, 2,1 i 1,3 min przy 60, 96, 192 i 288 satelitach LEO. Dołączony scenariusz daje 7,4, 4,8, 3,2, 2,7 i 2,3 min przy własnych reprezentatywnych powłokach 1000 km, 60 deg, szumie i stacjach; konstelacje, szum i definicja zbieżności z pracy nie są odtworzone, więc jest to spójność trendu o statusie MODELLED (monotoniczne skracanie, największa konstelacja poniżej jednej trzeciej czasu samego GNSS), a nie walidacja | leo_fusion::ppp (run, PppScenario, LI_2019) | leo_fusion::ppp::tests (the_filter_is_consistent_over_monte_carlo_seeds: 24 ziaren, uśredniona po przebiegach średnia NEES w przedziale [2,4, 3,6] i co najmniej 75% epok wewnątrz dwustronnego pasma chi-kwadrat 95%; zmierzone przy 150 ziarnach, średnia 2,84 tylko GNSS i 2,87 z 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) |
| Transfer czasu do UTC wspomagany przez LEO względem C/N0 i oscylatora odbiornika | Pomiary zegara z każdego satelity LEO w widoku w znanym położeniu, łączone odwrotnością wariancji z modelu szumu pseudoodległości, filtrowane dwustanowym (faza, częstotliwość) filtrem Kalmana, którego szum procesu to biały szum częstotliwości i szum częstotliwości typu błądzenie losowe klasy oscylatora (slot_timing::ClockNoise, clock_state::ClockClass; wariancja dryfu holdover::coast_phase_variance), zegar prawdziwy z ziarna z tych samych poziomów oraz wyrażenie IS-GPS-200 sekcja 20.3.3.5.2.4 na przejście z czasu systemowego do UTC z niepewnością rozgłaszanego przesunięcia dodaną jako odchylenie dla każdego przebiegu; tryb timing rodzaju leo-pvt przegląda oscylatory i przesunięcia C/N0 |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna: opublikowane wyrażenie na przesunięcie obliczone ręcznie, znormalizowany błąd w 40 ziarnach oraz podłoga wyznaczona przez niepewność przesunięcia. Wartość NIST dla odbiorników czasu Iridium z miniaturowym zegarem atomowym (poniżej 40 ns od UTC(NIST) w ciągu 40 dni) jest wyłącznie porównaniem; dołączony scenariusz Iridium daje 10 do 11 ns RMS przy mocy nominalnej z reprezentatywnym błędem zasięgu 5 m. Szum częstotliwości typu flicker i opóźnienie jonosferyczne nie są symulowane | 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) |
| Nazwane systemy LEO PNT jako opcjonalne presety danych, każdy z podanym źródłem | Dane wejściowe niezależne od systemu: każdy system to powłoki Walkera, jawne elementy lub preset GNSS, sygnał (nośna, szybkość chipów, szerokość pasma, moc odbierana lub zakres C/N0), SISRE, sigma Dopplera i model zegara; presety wypełniają tylko to, czego scenariusz nie podaje, po jednym pliku z źródłami oznaczonymi PUBLIC (z adresem URL), WORKSHOP lub WYPROWADZONE, a wartości nieopublikowane wymienione jako reprezentatywne: Xona Pulsar X1/X5, Iridium STL, sygnały okazjonalne Starlink, CentiSpace, reprezentatywny system pasma C, model efemerydy ATOMIC z zerowym zegarem oraz jeden preset pochodzący z warsztatów w opcjonalnym pliku presetu Celeste IOD, wycofywany przez usunięcie tego pliku i jego scenariuszy | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Transkrypcja przytoczonych publicznych wartości, sprawdzona pod kątem struktury (każde źródło publiczne ma adres URL, wzorce Walkera dzielą się równo, C/N0 z mocy odbieranej względem kT przy 290 K), a nie względem zewnętrznej wyroczni. Wartości reprezentatywne są nazwane w każdym ustawieniu wstępnym i mają charakter ilustracyjny | 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: skany tekstu źródłowego src, scenariuszy i testów); 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) |
| Jeden system LEO-PNT od początku do końca: projekt sygnału, bilans łącza przejścia, komunikat nawigacyjny i fuzyjne wyznaczanie położenia, przy czym wynik każdego etapu jest przekazywany do następnego | Rodzaj leo-pnt-chain: projekt leo-signal (preset publiczny lub zapisany w treści) ustala środek, szerokość pasma, szybkość chipów i podział EIRP pasma leo-pass; przejście daje C/N0 śledzonej składowej i jitter kodu z ograniczonym pasmem w każdej epoce; prosta C/N0 metodą najmniejszych kwadratów względem sin(elewacja), SISRE komunikatu leo-navmsg (dopasowane na orbicie satelity przejścia, plus podany człon wyznaczania orbity w pierwiastku sumy kwadratów) oraz nośna i szybkość chipów projektu trafiają do każdego systemu LEO łącznego fiksu leo-pvt i, opcjonalnie, do przypadków LEO leo-ppp; każde przekazanie jest raportowane z wartością i jednostką |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Samospójność przekazań: każda przekazana wartość równa się własnemu wynikowi etapu poprzedzającego, a zmutowanie danych wejściowych etapu poprzedzającego przesuwa każdą zależną od niego wartość w dalszych etapach. Etapy zachowują własne etykiety; łańcuch nie dodaje fizyki ani zewnętrznej wyroczni | 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: silniejsze EIRP, dłuższy przedział dopasowania i większy człon wyznaczania orbity przesuwają każdą przekazaną wartość i rozwiązanie fuzyjne; 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) |
| Detekcja spoofingu na podstawie spójności Dopplera LEO i geometrii przelotu | Sekcja [spoofer] rodzaju leo-pass: spoofer podrabia, spójnie w odległości i szybkości zmiany odległości, sygnały widziane w deklarowanym położeniu, które skacze i/lub jest odsuwane od prawdziwego po chwili rozpoczęcia (dla każdego pasma LEO i dla sygnału GNSS na orbicie MEO); odbiornik przewiduje każdą szybkość zmiany odległości z rozgłaszanej orbity oraz niezależnego położenia i prędkości a priori i testuje zmierzone szybkości zmiany odległości uogólnioną statystyką chi-kwadrat metodą najmniejszych kwadratów w oknie epok (dryf zegara jako zakłócenie lub z priorem), dla kanałów GNSS, kanałów LEO i wszystkich kanałów, z szumem termicznym pętli FLL z C/N0 (Kaplan & Hegarty 2006, sekcja 5.6.2); prawdopodobieństwo detekcji z niecentralnego rozkładu chi-kwadrat przy podanym prawdopodobieństwie fałszywego alarmu, detekcja ogłaszana przy podanym prawdopodobieństwie niewykrytego zdarzenia |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postacie zamknięte i tożsamości, a nie pomiar zewnętrzny: gradient prędkości zasięgu względem różnicy centralnej, statystyka w postaci informacyjnej względem gęstej postaci kowariancyjnej, czysty dryf zegara dający zero, przesunięcie wyjaśnione przez prior dające co najwyżej |dx|^2/sigma_p^2, statystyka kwadratowa względem skoku. Żadna wartość detekcji nie jest porównywana ze zmierzonym atakiem; spoofer jest wyidealizowany (bez sygnatury mocy, kąta przybycia ani piku korelacji) | 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) |
| Detekcja spoofingu przez spójność międzypasmową wielopasmowego sygnału LEO | Dla każdego satelity LEO i pary pasm pomiaru odległości sekcja [spoofer] tworzy kombinację pseudoodległości wolną od geometrii, usuwa model jonosferyczny odbiornika i testuje jej krok z epoki na epokę względem szumu kodu obu pasm i podanej tolerowanej niemodelowanej szybkości zmian jonosfery (dwustronnie gaussowsko, dokładne prawdopodobieństwo detekcji); spoofer, który podrabia niektóre pasma, a inne nie, lub każde pasmo bez jonosfery, jest widoczny w chwili rozpoczęcia; taki, który podrabia każde pasmo i symuluje jonosferę, nie jest, co wynik stwierdza |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamości: skok początkowy spoofera wolnego od jonosfery równa się modelowanej różnicy opóźnień jonosferycznych pary, próg jest dwustronnym kwantylem normalnym razy odchylenie standardowe skoku plus granica tempa. Model jonosfery odbiornika jest modelem silnika, więc autentyczna reszta ma z konstrukcji średnią zero; brak zewnętrznej wyroczni | 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) |
| Sondowanie jonosfery: skośny TEC z dwupasmowego opóźnienia przejścia LEO | Dla każdej pary pasm satelity rodzaju leo-pass raport podaje skośną całkowitą zawartość elektronów, którą kombinacja kodowa wolna od geometrii odtwarza w szczycie przejścia, (P2 - P1) f1^2 f2^2 / (40,3 (f1^2 - f2^2)), oraz jej 1-sigma z szumu termicznego kodu obu pasm, dzięki czemu każdy wielopasmowy projekt LEO-PNT można rozważać jako sondę jonosfery |
InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Tożsamość dyspersji pierwszego rzędu, dokładna z konstrukcji względem własnego opóźnienia pierwszego rzędu silnika (którego skalowanie 1/f^2 jest VALIDATED względem IS-GPS-200 we własnym wierszu); precyzja to wyłącznie termiczny szum kodu, bez wielodrogowości i biasów międzyczęstotliwościowych. 0,30 runda 2, zmierzone (wstępnie zarejestrowane 5e795f93), ustalenie (pozostaje MODELLED): globalna mapa jonosfery CODE CODG1330.18I względem kodu ABMF C1C/C2W z biasami CODE daje 33 z 36 średnich łuków w granicach 3 TECU (najgorszy +6,84 TECU na łuku wieczornym; RMS na epokę 3,95 TECU), przy progu każdego łuku; niesprawdzone | 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: równa się skośnemu TEC przelotu w szczycie z dokładnością 1e-9, a jego sigma równa się RSS szumu kodu podzielonemu przez 40,3 (1/f1^2 - 1/f2^2)); tests/geometry_free_tec_gim_oracle.rs::geometry_free_finding_is_pinned |
| Wskaźnik zaufania na statkach: agregacja dowodów z monitorów w wynik 0-100 i jego trzy pasma | Każdy monitor sprowadza swoje dowody do stosunku statystyki do progu; wynik to 100 minus suma po monitorach z wagi razy ograniczona liniowa rampa stosunku (0 do 0,5, 1 przy 1,5), ograniczona do 0 do 100 i zaokrąglona do 0,1, z pasmami przy 90 i 55; każda epoka wylicza monitory, które odjęły punkty, wraz z ich punktami. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Implementacja względem specyfikacji, NIE jest to zewnętrzna wyrocznia: niezależna reimplementacja w Pythonie (scripts/maritime_score_cleanroom.py), napisana przez czytelnika, który dostał wyłącznie docs/RECEIVER-TRUST.md i docs/MARITIME-TRUST.md, a nie kod źródłowy w Rust, zgadza się z score_from_ratios na 600 wektorach stosunków (wynik, pasmo, punkty i kolejność odliczeń, różnica 0), po uzupełnieniu dokumentacji tam, gdzie pierwszy czytelnik znalazł w niej milczenie lub niespójność (kolejność remisów, zaokrąglanie, stosunek monitora typu zalicz-lub-nie, dwa przykłady, których liczby nie zgadzały się ze wzorem). To pokazuje, że dokumentacja jest wystarczająca, a kod robi to, co mówi. CZEGO NIE SPRAWDZONO, i dlaczego wiersz pozostaje MODELLED: sama reguła (wagi, rampa, krawędzie pasm, podtrzymanie dowodu) jest własną regułą tego projektu, wstępnie zarejestrowaną, ale bez zewnętrznego źródła, i nic tu nie pokazuje, że wynik 80 lub 40 znaczy to, co chciałby, aby znaczył nawigator, przy rzeczywistych zakłóceniach; żadna wartość tego rodzaju nie jest podana. Progi monitorów są również własnymi progami tego projektu (Wiersz A sprawdza tylko ich arytmetykę). | 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 (monotoniczny względem każdej statystyki, dodanie monitora nigdy nie podnosi wyniku, zdrowe statystyki pozostają na 100) |
| Obszar źródła zakłóceń: dopuszczalny obszar emitera na podstawie raportów pozycji statków powietrznych i okrętów | Dopuszczalny obszar tego, gdzie może znajdować się źródło pogorszonych raportów nawigacyjnych, na podstawie raportów pozycji ADS-B (NIC/NACp) lub AIS: łączność radiowa w linii wzroku na promieniu 4/3 Ziemi z wysokości raportu i zakresu wysokości anteny emitera, ograniczony efektywny zasięg dla nieznanej mocy, dotknięte jednostki przyciągające rozkład a posteriori ku swojemu zasięgowi oraz niedotknięte jednostki z linią wzroku odpychające go, pogrupowane w sesje w czasie i przestrzeni. Wynik to obszary o najwyższej gęstości na podanych poziomach ufności, centroid a posteriori z elipsą momentów, początek, koniec i czas trwania sesji, obszar dotknięty oraz liczba odrębnych statków powietrznych powyżej minimum publikacji, profil pory dnia i godziny na dobę. Bez terenu; jedno źródło na sesję; wiarygodność jest zależna od modelu. Opcjonalne połączenie z pozycją TDOA z geolokalizacji. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy transkrypcji i współczynników, ale nie jest zewnętrzną wyrocznią — Na razie żadnego zewnętrznego. Tylko syntetyczne pełne cykle prosty-odwrotny z generatora, który współdzieli model estymatora, więc sprawdzają kod i kalibrację podanych poziomów w tym modelu i nic o rzeczywistych emiterach. Zewnętrzne sprawdzenie względem opublikowanych lokalizacji nadajników Jammertest 2025 zostało zarejestrowane wstępnie (docs/emitter-region/PREREGISTRATION.md, zatwierdzone przez właściciela przed jakimkolwiek ocenianym przebiegiem) i uruchomione raz (docs/emitter-region/RESULTS.md): ADS-B NOT ASSESSABLE (2 zaplanowane sesje, mniej niż zarejestrowane minimum 4) i AIS NOT ASSESSABLE (brak opublikowanej sesji), więc żaden próg nie został przetestowany, a wiersz pozostaje MODELLED | interference_map::emitter (estimate, sessions, build_units, profile, GaussianFix::from_tdoa), interference_map::emitter_out (locate), kshana interference-map locate |
testy jednostkowe interference_map::emitter (cykl projekcji, wartość horyzontu, syntetyczne pełne cykle prosty i odwrotny: znany emiter leży wewnątrz podanego obszaru z mniej więcej podaną częstością, przypadki brzegowe, grupowanie sesji, profil, prywatność i sformułowania); przypadki locate w tests/interference_map_cli.rs |
| Zdarzenia SIEM telemetrii zaufania: Log Event Extended Format (LEEF) przez syslog | Zdarzenia zmiany pasma (lub dla każdej epoki) jako ładunki Log Event Extended Format 2,0 w kopercie RFC 5424 przez UDP lub TCP, z udokumentowanym odwzorowaniem pól. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — CO JEST SPRAWDZANE: własne testy tego crate na dokładne ciągi znaków dla udokumentowanego odwzorowania pól LEEF oraz pola koperty RFC 5424; nie istnieje utrzymywany otwartoźródłowy parser LEEF (przeszukanie indeksu pakietów Pythona nie znalazło żadnego), więc format jest sprawdzany względem własnej specyfikacji odczytanej przez tego samego autora, a nie względem zewnętrznej wyroczni. CZEGO NIE: czy ładunki LEEF są akceptowane przez parser dowolnego dostawcy lub SIEM; reguły ucieczki poza udokumentowanymi; zachowania rzeczywistego kolektora syslog. | telemetry (syslog: leef, rfc5424, SyslogSink; time) | telemetry::syslog::tests (dokładne ciągi LEEF, ucieczka znaków, poziom ważności, koperta RFC 5424, limity czasu dostarczania i ponowne łączenie); tests/telemetry_cli.rs |
| Progi zakłóceń odbiornika kalibrowane na zbiorze danych JammerTest 2024 | receiver_trust::calibration::run_dataset: zarejestrowana wstępnie kalibracja monitorów spadku C/N0, AGC i wskaźnika zagłuszania na publicznym zbiorze danych JammerTest 2024 (Zenodo 15911589, GPL-3.0-or-later, pobierany w czasie działania, nigdy nie kopiowany do repozytorium): dla każdego folderu oś czasu 1 s z mon_rf.csv i rinex.csv, monitory uruchamiane raz, każda epoka po kalibracji oznaczona jako czysta lub zagłuszana na podstawie attack_log folderu (przesuniętego z CEST na UTC, margines 60 s), każdy próg przeglądany po stałej siatce, wybierany najmniejszy próg ze zbiorczym prawdopodobieństwem fałszywego alarmu na czystych danych co najwyżej 0,01 oraz liczby wstrzymane z pominięciem jednego folderu; kontrola krzyżowa czytnika UBX. Wybór dostarczany jest tylko jako opcjonalny profil [monitors] profile = "jammertest-2024-calibrated" (cn0_drop_db 1,5, agc_k_sigma 3,5, jam_ind_threshold 29); reguła domyślna i każde wyjście bez niego pozostają bez zmian | ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Opublikowane dzienniki zdarzeń zbioru danych (okna attack_log) jako prawda o zdarzeniach, wedle wstępnej rejestracji xval/jammertest-trust/PREREGISTRATION.md (zatwierdzonej osobno, 0fa012b, zanim uruchomiono uprząż). Pierwszy i jedyny przebieg (xval/jammertest-trust/RESULTS.md): 14 z 24 katalogów nadających się do oceny (7 z zagłuszaniem), 3 502 epok czystych i 9 560 epok zagłuszania. Prawdopodobieństwo fałszywego alarmu na zbiorze wstrzymanym czystym: cn0_drop_db 0,0231 (81/3502) wobec progu 0,02, FAIL; agc_k_sigma 0,0003, zaliczone; jam_ind_threshold 0,0094, zaliczone; suma trzech: fałszywe alarmy 0,0328, detekcja 0,807 wobec 0,05 i 0,50, zaliczone. Według zarejestrowanej reguły wiersz jest MODELLED (jeden próg niezaliczony). Wąsko: jeden typ odbiornika (u-blox ZED-F9P), jedno zdarzenie, zaplanowane jednominutowe sloty jako prawda (detekcja jest dolną granicą; czyste oznacza poza zapisanymi oknami); skalibrowane na dziennikach CSV, a czytnik UBX daje więcej fałszywych alarmów w dwóch katalogach. Pasma wskaźnika zaufania dla żeglugi nie są skalibrowane | 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 (ignorowany, bramkowany danymi przez KSHANA_JAMMERTEST_DIR: zapisany wybór, liczby na zbiorze wstrzymanym, werdykty progów i werdykt); receiver_trust::calibration::tests (znaczniki czasu, parowanie okien i przesunięcie strefy czasowej, etykiety, pasma ochronne, wykluczenie, wybór); receiver_trust::monitors::tests::threshold_profile_is_opt_in |
| Ocena Jammertest: log odbiornika oceniany dla każdego zaplanowanego testu (opóźnienie detekcji, niewykryte alarmy, fałszywe alarmy, czas do powrotu do normy) względem opublikowanego planu testów | jammertest::{plan, score, dataset} (kshana jammertest import|score): katalog testów i plan transmisji NPRA (MIT, pobierany z przypiętym SHA-256, nigdy nie dołączany do repozytorium) odczytane jako zaplanowana prawda odniesienia z zachowanymi identyfikatorami katalogowymi; przebieg receiver-trust oceniony dla każdego testu (pierwszy alarm minus planowany początek, wykryto/spóźniono/niewykryto względem tolerancji, czas do pierwszego odcinka bez alarmów, alarmy poza każdym slotem i jego marginesem ochronnym), z podpisanym pakietem dowodowym zawierającym kartę wyników. Harmonogram to planowane sloty, a nie zarejestrowane czasy emisji | ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Liczby slotów planu na obszar testowy (76, 77 i 45 slotów, z czego 61, 63 i 32 nadaje) policzono niezależnie skryptem na tym samym JSON; okna attack_log zbioru z 2024 jako prawda o zdarzeniach, wedle xval/jammertest-score/PREREGISTRATION.md (zatwierdzonej osobno, c2e6d3b, zanim uruchomiono punktator). Pierwszy i jedyny przebieg (xval/jammertest-score/RESULTS.md): zarejestrowana reguła minimum danych NIESPEŁNIONA (4 punktowalne okna zagłuszania z 4 z 12 katalogów UBX wobec minimum 10 okien z 2 katalogów: 5 katalogów odrzuconych przez regułę punktu odniesienia, 3 dzienniki UBX niosą tylko tydzień czasu GPS), więc progi B1 do B4 nie podlegają ocenie; niczego nie poluzowano ani nie uruchomiono ponownie. v2 (xval/jammertest-score/PREREGISTRATION-v2.md, zatwierdzone osobno, wyłącznie obsługa danych: dzienniki tylko z czasem GPS umieszczone według daty, 12 katalogów tylko z CSV, sesja z platformą ruchomą dla ruchomych łazików; te same progi i reguła minimum danych): zachowano 14 z 24 katalogów, ale tylko 7 punktowalnych okien zagłuszania, reguła minimum danych znów niespełniona, żaden próg nie podlega ocenie (RESULTS-v2.md). Prawda zaplanowana: zaplanowany slot nie jest zapisem emisji, chybienie może być testem, który nigdy się nie odbył, opóźnienie liczy się od planowanego startu, a czyste oznacza poza zaplanowanymi slotami. Detekcja przez monitory w dziedzinie pomiaru nie mówi nic o spooferze małej mocy. Jeden typ odbiornika (u-blox ZED-F9P). Zbiór NMEA SimulaMet z 2025 nie jest używany (brak podanej licencji, dostęp po subskrypcji) | 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 (bramkowany danymi przez KSHANA_JAMMERTEST_PLAN_DIR: liczby slotów na obszar testowy planu z 2025, identyfikatory katalogu, obieg TOML w obie strony); tests/jammertest_score.rs (dziennik syntetyczny ze znanym spadkiem: wykryty, chybiony, nieoceniany, przebieg z fałszywym alarmem, podpisany pakiet niosący kartę wyników); jammertest::plan::tests; tests/jammertest_score_2024.rs (bramkowany danymi przez KSHANA_JAMMERTEST_DIR: zapisany przebieg) |
| Odwzorowanie compliance na publiczne ramy | compliance (kshana compliance-report): odwzorowanie wyników Kshana na punkty publicznych ram odniesienia wyłącznie według numeru, wypełniane z podanych przebiegów; wynik liczy się na rzecz możliwości tylko wtedy, gdy niesie dowód, który odwzorowanie wskazuje, pusty zbiór niczego nie dowodzi, a sformułowanie brzmi „dostarcza dowodów na (supports evidence for)”; raport nie jest ustaleniem, że jakiekolwiek ramy odniesienia są spełnione, ani oceną czy zatwierdzeniem przez kogokolwiek. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Odwołania sprawdzone względem wyodrębnionego skryptem indeksu nagłówków przytoczonych dokumentów publicznych odczytanych 2026-10-10 (tests/compliance_references.rs). CO JEST SPRAWDZANE: 49 przytoczonych odwołań do klauzul, sekcji, akapitów lub nagłówków istnieje w przytoczonym dokumencie, a 7 przytoczonych adresów URL zostało rozwiązanych w zapisanym dniu (2 drugą drogą); kontrole negatywne zawodzą. CZEGO NIE: czy jakakolwiek parafraza, odwzorowanie lub luka jest poprawna; klauzul EN 16803 (płatnych, tylko tekst katalogowy); późniejszych rewizji; indeks nie jest niezależną implementacją. | 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 |
| Integracje morskie: wtyczka Signal K, strumień bramki i panel oceny OpenCPN, build referencyjny | Wskaźnik zaufania, pasmo, przyczyny, stan bramki i położenie zgłaszane przez odbiornik, publikowane pod navigation.gnss.kshana na serwerze Signal K z powiadomieniem warn, alarm i normal (integrations/signalk); bramkowany strumień NMEA, z fixem oznaczonym jako nieważny, gdy zaufanie załamane, i jednym zdaniem PKSHT na cykl, udostępniany OpenCPN przez TCP przez samą bramkę lub przez mały przekaźnik, oraz natywny panel oceny OpenCPN odczytujący zdanie PKSHT (integrations/opencpn); a także jednostki systemd i kontener uruchamiające bramkę (deploy/reference-build). Tam, gdzie pokazują one wyniki, towarzyszy im oświadczenie doradcze: Oprogramowanie wyłącznie doradcze, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu (IEC 61108, IEC 61162): za nawigację statku odpowiada nadal operator. | IntegrationRun | sprawdzone na prawdziwej aplikacji hosta; przebieg integracji nie jest niezależną wyrocznią — CO JEST SPRAWDZANE, ujęte wąsko: że te integracje działają z rzeczywistym oprogramowaniem, dla którego je napisano. DOWODY są zatwierdzone w integrations/signalk/evidence/README.md (wraz z plikami JSON) i integrations/opencpn/evidence/README.md (wraz ze zrzutami ekranu i dziennikami), każde ze skryptem, który je odtwarza. (1) Signal K: wtyczka załadowana do przypiętego pakietu npm signalk-server 2.33.0, w prywatnej przestrzeni nazw sieci tylko z pętlą zwrotną, zasilana danymi syntetycznymi. Własne interfejsy REST i WebSocket serwera pokazały opublikowane ścieżki, metadane wyniku oraz powiadomienie, które przechodziło przez stany: brak, warn, alarm, normal (po podtrzymaniu) i znów warn, gdy dane ustały. Przy prawdziwym kshana uruchamianym przez wtyczkę na NMEA, które odebrał sam serwer, powiadomienie przeszło w warn, a potem w alarm, a raportowana pozycja została opublikowana; własne navigation.position serwera było zapisywane przez jego dostawcę NMEA, nigdy przez wtyczkę. Ponowny przebieg względem żywego schematu JSON 1,2. (2) OpenCPN: wtyczka zbudowana względem nagłówka API wtyczek OpenCPN i wxWidgets 3.2.4, załadowana do pakietu Ubuntu 24,04 OpenCPN 5.8.4 pod wirtualnym wyświetlaczem; OpenCPN ją załadował, uruchomił jej inicjalizację i przekazał jej zdania PKSHT strumienia z bramki, a panel zmienił kolor na czerwony w paśmie bez zaufania. W jednym czystym przebiegu własna pozycja statku w OpenCPN przestała się aktualizować, a jego wskaźnik rozwiązania spadł, gdy bramka oznaczyła rozwiązanie jako nieważne. Drugi przebieg, zasilany bezpośrednio przez nasłuch TCP bramki, pokazał dostarczanie do wtyczki, ale nie czyste porównanie przed i po. (3) Testy przekaźnika odtwarzają zapisany fragment strumienia z bramki przez rzeczywiste gniazdo TCP i sprawdzają, co otrzymuje odbiorca (bajty bez zmian, poprawne sumy kontrolne w każdym zdaniu, także w przepisanych, zgodność GGA i RMC, jedno PKSHT na cykl z polem bramki tam, gdzie rozwiązanie jest nieważne), a skrypt end-to-end sprawdza, że odbiorca nasłuchu bramki otrzymuje dokładnie te bajty, które ta sama bramka zapisuje na standardowe wyjście. (4) Parsery PKSHT (JavaScript i C++) są uruchamiane na zdaniach zapisanych z wyjścia kshana i odrzucają błędną sumę kontrolną, wersję lub wynik spoza zakresu 0 do 100. (5) Jednostki systemd są sprawdzane przez systemd-analyze verify (systemd 255, binaria zastąpione zaślepkami) oraz przez strażniki na powłokę w ExecStart, politykę restartu i klucze piaskownicy; obsługa argumentów w punkcie wejścia kontenera jest sprawdzana z binarium-zaślepką. CZEGO NIE: nie ma zewnętrznej wyroczni dla żadnej wartości, którą te integracje pokazują. Same wartości zaufania to wiersze powyżej, a przebieg integracji pokazuje tylko, że instalacja je przenosi; dlatego ten wiersz jest MODELLED, a nie VALIDATED (docs/VALIDATION.md). Nie użyto żadnego rzeczywistego statku, odbiornika, długiego przebiegu, innej wersji żadnego z hostów, innego systemu operacyjnego ani pulpitu; wszystkie dane są tekstem syntetycznym i nic tu nie jest pomiarem. Obsługa dźwięku i wizualna powiadomienia przez prawdziwego klienta Signal K, przycisk paska narzędzi OpenCPN, preferencje i stan nieaktualny oraz pakowanie dla menedżera wtyczek OpenCPN nie były sprawdzane. Klucze piaskownicy systemd sprawdzono wyłącznie pod względem składni, nie uruchamiając ich pod żywym systemd, a budowa obrazu kontenera i jego kontrola stanu nie mają tu zatwierdzonych dowodów. Nie zgłasza się żadnej wartości detekcji ani fałszywego alarmu. Oprogramowanie wyłącznie doradcze, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu (IEC 61108, IEC 61162): za nawigację statku odpowiada nadal operator. | receiver_trust (live: the gate, its TCP listener, PKSHT); poza crate: integrations/signalk (JavaScript), integrations/opencpn (przekaźnik JavaScript, natywna wtyczka C++), deploy/reference-build (jednostki systemd, kontener) | tests/receiver_trust_live_cli.rs (bramka i jej nasłuch TCP, strona Rust); integrations/signalk/test/adapter.test.js, integrations/signalk/test/model.test.js i integrations/signalk/test/plugin.test.js (24 testy Node na zapisanym wyjściu syntetycznym); integrations/opencpn/test/relay.test.mjs (5 testów Node); integrations/opencpn/test/e2e-live.mjs (prawdziwe binarium do odbiorcy TCP, uruchamiane ręcznie i w CI); integrations/opencpn/plugin/test/pksht_test.cpp i integrations/opencpn/plugin/test/trust_state_test.cpp (kontrole C++ parsera PKSHT i stanu panelu); deploy/reference-build/check-units.sh i deploy/reference-build/test-entrypoint.sh |
| Śledzenie BOC(1 1): skalowanie DLL i rozwiązywanie niejednoznaczności bump-jump (opcjonalne) | Pole boc w iq::track::LoopConfig (opcjonalne, domyślnie None): trzy dyskryminatory DLL przeskalowane tak, by odczytywały błąd kodu w chipach ze zboczem jednostkowym na głównym szczycie sinusoidalnego BOC(1 1), oraz monitor bump-jump na korelatorach bardzo wczesnym i bardzo późnym przy połowie okresu poddziałania nośnej (0,5 chipa), który przeskakuje NCO kodu w stronę głównego szczytu, gdy licznik w górę/w dół osiągnie N (8 domyślnie). Bez tej opcji każde wyjście pozostaje bez zmian. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna względem wstrzykniętej prawdy i postaci zamkniętych, przy progach wstępnie zarejestrowanych w 6b68f6cc (docs/design/evidence/boc-bump-jump/). Sygnał danych BeiDou B1C (PRN 19, 5 MS/s) wygenerowany przez iq::scene: przy wyłączonej opcji start z piku bocznego pozostaje fałszywie zaczepiony na przewidywanym ±(0,5 + d/4) chipa (zmierzone ±0,549); przy włączonej jeden skok w stronę piku głównego przy 0,08 s i RMS w późnym oknie 0,0008 chipa przy 45 dB-Hz oraz 0,0048 chipa przy 35 dB-Hz; brak skoku z piku głównego przy 35, 40 i 45 dB-Hz w ciągu 4 s; nachylenie skalowanego EMLP od 0,94 do 0,99 na próbkowanym sygnale (nieskalowane od 3,6 do 3,8). Sam detektor bump-jump, na trójkach korelatorów z dokładną kowariancją szumu BOC(1 1), nie dał fałszywego skoku w 100 000 aktualizacjach przy 25 do 45 dB-Hz i wykrył 1000 z 1000 startów z piku bocznego przy 35 dB-Hz. NOT MET (ustalenie F1): wstępnie zarejestrowana siatka testów jednostkowych dla skalowania obejmuje przesunięcia poza liniowym zakresem dyskryminatorów, gdzie odczyty skalowane mijają się z przesunięciem do 48 %. CZEGO NIE SPRAWDZONO: IQ z terenu, ograniczone pasmowo układy wejściowe, złożone repliki MBOC/QMBOC i jakikolwiek zewnętrzny odbiornik. | 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); testy jednostkowe iq::track::boc (b4_unit_grid_misses_are_the_recorded_ones: wstępnie zarejestrowany próg testu jednostkowego B4 zachowany w brzmieniu pierwotnym, jego zapisane chybienia sformułowane w asercji jako ustalenie F1) |
| Kanał scyntylacji jonosferycznej IQ (model Cornell) względem zmierzonej scyntylacji GPS L1 50 Hz | iq::channel::scint, model scyntylacji Cornell (intensywność Rice'a, widmo Butterwortha drugiego rzędu, faza arg z) sterowany S4 i czasem dekorelacji intensywności zmierzonego okna, porównywany pod kątem tego, co generuje ponad te dwa wejścia; realdata::scint50 odczytuje zmierzony log, usuwa trend i wykonuje porównanie. | ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — Dane zmierzone przy progach wstępnie zarejestrowanych w b6ccb499 (xval/scint-malindi/): rekord Zenodo 16941224 (INGV, Malindi, 18 marca 2023, GPS PRN 26, intensywność i faza nośnej 50 Hz, CC BY 4,0, sprawdzone SHA-256). 22 kwalifikujących się okien 60 s (N1 spełnione). MET: rozkład intensywności (Kołmogorow-Smirnow D 0,0415, próg 0,05) oraz scyntylacja fazy powiązana z S4 (mediana zmierzone/model sigma-phi 0,779, próg 2/3 do 3/2). NOT MET (ustalenie F1): udział głębokich zaników w modelu jest 2,38 razy większy niż zmierzony (próg 0,5 do 2), a jego średni zanik 3,51 razy dłuższy (próg 2/3 do 3/2). Ustalenie F2: zarejestrowane przetwarzanie odczytuje zawiniętą fazę modelu, co ujawniła autokontrola; B3 powtórzone post hoc z fazą rozwiniętą daje 0,804. CZEGO NIE SPRAWDZONO: inne noce, stacje, szerokości geograficzne lub sygnały; szum odbiornika w modelu. Wiersz pozostaje MODELLED. | 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, zarejestrowany werdykt sformułowany w asercji jako zapisany, ustalenie F1; finding_model_fades_are_deeper_and_longer_than_measured; posthoc_b3_with_the_model_phase_unwrapped, tylko raportowane; bramkowany danymi, pobierany przez scripts/fetch_scint_malindi.sh); testy jednostkowe realdata::scint50 (model_data_through_the_harness_shows_the_wrapped_phase_finding, ustalenie F2) |
| Opcja CFAR z uśrednianiem komórek w akwizycji IQ | iq::acq::ca_cfar i ca_cfar_cells (opcjonalne): komórka siatki akwizycji jest porównywana ze średnią komórek odniesienia swojego wiersza Dopplera (opóźnienia ochronne i krokowe, zawijane wokół okresu), ze współczynnikiem alpha ustalonym ze wzoru zamkniętego na prawdopodobieństwo fałszywego alarmu CA-CFAR dla M blokowań niekoherentnych (ca_cfar_pfa, ca_cfar_alpha). Detektor mocy próbki pozostaje domyślny, a każde istniejące wyjście jest bez zmian. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Postać zamknięta, przy progach wstępnie zarejestrowanych w 3724aefa (docs/design/evidence/acq-cfar/). Prawdopodobieństwo fałszywego alarmu CA-CFAR dla komórek Gamma(M), względem Monte Carlo dokładnego modelu: 18 z 18 przypadków w granicach 3 sigm dwumianowych. Na każdej komórce przeszukań iq::acq (GPS L1 C/A, 2,5 MS/s, po 210 000 komórek) przy projektowym 1 %: 0,977 % i 0,969 % na szumie gaussowskim oraz 1,006 % i 0,999 % na szumie kwantowanym 2-bitowo (M = 1 i 4; próg plus minus 20 %); decyzje bez zmian po przeskalowaniu wejścia. NOT MET (ustalenie F1): na bezszumowym sygnale 2-bitowym detekcja i jej komórka są właściwe, ale 1,28 % komórek poza pikiem w wierszu piku (próg 1 %) przekracza próg, na deterministycznych listkach bocznych korelacji kodu. CZEGO NIE SPRAWDZONO: inne warianty CFAR, okna dwuwymiarowe, ograniczone pasmowo układy wejściowe, dane z terenu. | 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, zarejestrowany werdykt sformułowany w asercji jako zapisany, ustalenie F1, przypięty przez finding_noise_free_sidelobes_exceed_the_cfar_rate); test jednostkowy iq::acq ca_cfar_closed_form_reduces_to_the_textbook_case_and_inverts |
| Model widma: pasma GLONASS, BeiDou i Galileo E6 (opcjonalne) | spectrum::default_band rozpoznaje, wyłącznie po nazwie (MORE_BAND_NAMES), GLONASS L1OF i L2OF na każdym kanale FDMA K = -7 do 6 (BPSK, 0,511 Mchip/s), BeiDou B1I (BPSK(2)), B1C (MBOC(6,1,1/11)), B2a i B3I (BPSK(10)) oraz Galileo E6 (BPSK(5)), z nośnymi i minimalnymi mocami odbieranymi z ich dokumentów kontroli interfejsu; domyślny zestaw pasm i każde istniejące wyjście pozostają bez zmian. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Opublikowane dokumenty kontroli interfejsu i postacie zamknięte, przy progach wstępnie zarejestrowanych w 5806f28b (docs/design/evidence/spectrum-bands/): GLONASS ICD wydanie 5,1, BDS-SIS-ICD B1I 3,0, B1C 1,0, B2a 1,0 i B3I 1,0, Galileo OS SIS ICD wydanie 2,1. MET: każda nośna, szybkość chipów i moc odbierana tak jak w transkrypcji (28 kanałów GLONASS), pierwsze zera BPSK przy szybkości chipów, złożony B1C równy MBOC(6,1,1/11) tak, jak podaje tabela mocy jego ICD, tożsamość ścieżki C/N0 oraz scenariusze widma identyczne bajt w bajt. NOT MET: próg jednostkowego pola, który okazał się nieosiągalny w brzmieniu zapisanym (ustalenie F1; pola równają się postaci zamkniętej ułamka w paśmie), oraz zgodność dla każdego przedziału warstwy IQ w przebiegach B1I i B1C z obwiednią modelu (1,26 i 1,56 dB wobec 0,5 dB, ustalenie F2; GLONASS 0,07 dB), ponieważ kody Golda i Weila mają nierówne widma liniowe; uśrednione po paśmie główne listki zgadzają się w granicach 0,25 dB. CZEGO NIE SPRAWDZONO: zapisane IQ, inne sygnały, zakłócenia wewnątrzsystemowe. | 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, ustalenie F1, przypięte przez finding_s2_areas_are_the_closed_form_in_band_fraction; s3_iq_layer_verdict_is_the_recorded_one, ustalenie F2, przypięte przez finding_s3_per_bin_errors_follow_the_code_line_spectrum; posthoc_s3_band_averaged_shape, tylko raportowane) |
| Kody trzeciorzędowe LunaNet AFS i warstwa komunikatów (SB1 BCH, CRC-24Q, przeplatacz) względem LSIS-AFS V1.0 | iq::signals::lunanet::afs_q_tertiary_bits, afs_q_tiered; iq::lunanet_afs: wzorzec synchronizacji, koder SB1 BCH(51 8) i dekoder 256 hipotez, CRC-24Q, przeplatacz blokowy 60 x 98, sprawdzacz strumienia symboli (kshana lunanet-afs-check) oraz generator strumienia testowego z podramkami zastępczymi. Kodowanie LDPC o szybkości 1/2 podramek od 2 do 4 nie jest zaimplementowane (jego macierze są w osobnym załączniku). | ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — LSIS-AFS V1.0 (jak wyżej): sekwencja Legendre'a o długości 1499 (Tabela E-1, identyczna) oraz pierwsze i ostatnie 24 chipów kodu trzeciorzędowego (Tabele E-2 do E-6: 419 z 420 kolumn identycznych; dokument drukuje te same ostatnie 24 chipów, A14850, dla PRN 147 i PRN 151, a generator odtwarza chipy PRN 151, więc wpis PRN 147 jest najpewniej błędem druku; próg 420 z 420 jest NOT MET, a chybienie jest przypięte); przykład z Rysunku 8 dla kodu SB1 (jeden przykład: 0x045 koduje się do 0x229F61DBB84A0); CRC-24Q względem katalogowej wartości kontrolnej 0xCDE703 dla ASCII 123456789; własna arytmetyka ramek dokumentu. Progi wstępnie zarejestrowane w b3ba5d5. Jedno chybienie w zapisie i jeden przykład obliczeniowy dla warstwy komunikatów, więc wiersz pozostaje MODELLED. CZEGO NIE SPRAWDZONO: LDPC i słów CRC wewnątrz podramek 2 do 4, treści komunikatów i jakiegokolwiek zapisanego strumienia | 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 |
| Pakiety norm: scenariusze oceniane względem progów ustalonych przed przebiegiem | standards_pack (kshana standards-pack): profile testów ram DHS Resilient PNT dla poziomów od 1 do 4, poziomy dokładności i ocena integralności IMO MSC.1/Circ.1575 oraz pakiety ICAO Doc 9849 Appendix F monitorowania, oceny i łagodzenia: każdy test uruchamia dołączony rodzaj scenariusza i porównuje pola wyniku z progami podanymi w pakiecie, a testy wymagające logu odbiornika są wymienione jako NEEDS INPUT i nie są oceniane. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni dla wyników scenariuszy: każdy test pakietu uruchamia rodzaj scenariusza MODELLED. Progi są podanym profilem autora pakietu (ramy DHS nie podają wartości; granice dokładności IMO to Tabela C-1 z MSC.1/Circ.1575, przeczytana w całości; pakiet ICAO podąża za własną prezentacją Planu ograniczania RFI ICAO, ponieważ Doc 9849 jest publikacją płatną i nie został przeczytany), zatwierdzone przed jakimkolwiek punktowanym przebiegiem w plikach PREREGISTRATION.md w stylu xval w standards/. Próg MET mówi, że modelowany scenariusz spełnił podany próg, i nic o żadnym produkcie | standards_pack; compliance (standards-pack facts in compliance-report) | tests/standards_packs.rs (pinned_outcomes: stan każdego testu, w tym chybienia L4-T1 i cztery testy dokładności IMO); standards_pack::tests |
| Laboratoryjny pakiet dowodowy round-trip (scenariusz, warunki testu, log odbiornika, ocena) | evidence::roundtrip (kshana evidence round-trip) oraz eksport logu odbiornika kshana.test-conditions/1 z kshana bench-export: podpisany pakiet zapisujący skrót scenariusza, skrót podanych warunków, skrót logu i ocenę względem podanych zdarzeń, który odmawia przyjęcia warunków niezgodnych ze zdarzeniami oceny lub logu, którego skrót nie jest podanym. Żaden sygnał nie jest zapisywany, odtwarzany ani planowany. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni: pakiet wiąże skróty i wynik z dziennika odbiornika o statusie MODELLED, sprawdzone na danych syntetycznych (wyeksportowane NMEA dołączonego scenariusza potraktowane jako dziennik odbiornika). Nie twierdzi się, że przeprowadzono jakikolwiek przebieg laboratoryjny | 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) |
| Silnik śledzenia IQ względem GNSS-SDR 0.0.19 na niezależnych nagraniach | Pełny silnik śledzenia warstwy IQ (iq::track przez kshana iq track: przekazanie z akwizycji, korelatory, NCO, PLL Costasa drugiego rzędu 15 Hz, DLL EML-envelope pierwszego rzędu 2 Hz wspomagany nośną, wskaźnik blokady i estymatory C/N0) na GPS L1 C/A przy 30 do 45 dB-Hz. | ExternalDataset | częściowe twierdzenie jest sprawdzone zewnętrznie, ale cała możliwość składa się z elementów modelowanych, więc możliwość pozostaje modelowana — GNSS-SDR 0.0.19 (GPL-3.0-or-later, pakiet Ubuntu 24,04, uruchamiany jako osobny program; zatwierdzono tylko liczby pochodne) śledzący te same nagrania numpy (niezależne od silnika), oba zmierzone względem prawdy analitycznej. Progi wstępnie zarejestrowane w 48edd4a5, zmienione przed jakimkolwiek nagraniem testowym w 1e4288c4 (FLL 10 Hz tylko podczas wciągania w obu odbiornikach, po tym jak zarejestrowana kalibracja zawiodła na błędnym przekazaniu GNSS-SDR, ustalenie F3). MET przy 30, 35, 40 i 45 dB-Hz: jitter nośnej w granicach 4,3 %, jitter kodu w granicach 4,6 % oraz średnia i rozrzut Dopplera względem GNSS-SDR. NOT MET: C/N0 NWPR silnika wypada o 2,3 do 7,1 dB poniżej SNV GNSS-SDR (ustalenie F4, znane ograniczenie NWPR; jego M2M4 jest w granicach 0,06 dB od prawdy); wskaźniki zaczepienia fazy różnią się z definicji (F5); przy 30 dB-Hz GNSS-SDR dwukrotnie wypadł z zaczepienia, a silnik nie (F6). Własne przekazanie GNSS-SDR zaczepiło się na błędnej częstotliwości w 3 z 30 przebiegów kalibracji. CZEGO NIE SPRAWDZONO: inne sygnały, usuwanie bitów danych, ponowna akwizycja, nagrania z terenu. Wiersz pozostaje MODELLED. | 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), na liczbach wyprowadzonych przez tests/fixtures/iq_track_gnss_sdr_oracle/make_fixture.py |
| Wzmocnienia anten CRPA w rodzaju jamming względem niezależnego przeliczenia w numpy | Opcjonalna sekcja [crpa] rodzaju jamming: wiązka dla każdego kanału w stronę każdego satelity (sterowanie zerem z zagłuszaczem jako zerem lub MVDR na sigma^2 I + P_j a_j a_j^H), skalująca szum każdego łącza przez ||w||^2 i zagłuszacz przez |w^H a_j|^2 przed istniejącym równaniem C/N0 odpornego na zagłuszanie. | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale bez zewnętrznego autorytetu — Niezależne przeliczenie w numpy (xval/crpa-jamming/oracle.py, bez wspólnego kodu: wektory sterujące numpy, numpy.linalg.solve i inv) każdego ogniwa geometrii demonstracji zagłuszania z 4-elementową tablicą kwadratową, przy obu ważeniach. Progi wstępnie zarejestrowane w 08d83b4d. MET: A1 (wszystkie 150 wyników scenariuszy identyczne bajt w bajt bez tej sekcji, po poprawce: pierwsza wersja dodawała jednostki crpa do tabeli jednostek każdego przebiegu zagłuszania), A2 (jeden element równa się braku tablicy z dokładnością 1e-12 dB), A3 dla wzmocnienia szumu tablicy i efektywnego C/N0 (912 ważeń łączy w granicach 1e-9 dB, najgorsze 2.1e-14 dB) oraz dla zera zagłuszarki przy sterowaniu zerem (poniżej -200 dB po obu stronach), A4 (MVDR w granicach 0,1 dB od sterowania zerem przy JNR 80 dB). NOT MET: A3 dla wzmocnienia zagłuszarki MVDR, 194 z 456 łączy powyżej 1e-9 dB przy matematyce przenośnej 0,36 (202 przy matematyce hosta; docs/revisions/STUDIO15-batch4-rebaseline.md) (najgorsze 1.7e-6 dB) na resztach od -100 do -188 dB, gdzie kasowanie float64 ogranicza obie implementacje (inv i solve z numpy rozbiegają się ze sobą na 169 łączach, najgorsze 7.9e-7 dB); efektywne C/N0, które je zasilają, nie jest dotknięte. CZEGO NIE SPRAWDZONO: sprzężenie wzajemne, niedopasowanie elementów, przetwarzanie szerokopasmowe, wiele zagłuszarek, jakikolwiek sprzęt antenowy. Przeliczenie tych samych równań, a nie zewnętrzna wyrocznia; wiersz pozostaje MODELLED. | 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), względem xval/crpa-jamming/expected.json z xval/crpa-jamming/oracle.py |
| Zacienianie terenu zagłuszacza w rodzaju jamming względem niezależnego przeliczenia w numpy na prawdziwym kafelku SRTM | Opcjonalna sekcja [terrain] rodzaju jamming: profil terenu po ortodromie między zagłuszaczem a odbiornikiem na kafelku SRTM .hgt z wybrzuszeniem Ziemi o współczynniku k, dominująca krawędź nożowa (największe nu Fresnela-Kirchhoffa) i strata pojedynczej krawędzi nożowej według ITU-R P.526-15, sekcja 4,1, odjęta od mocy odbieranej zagłuszacza. | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale bez zewnętrznego autorytetu — Niezależne przeliczenie w numpy (xval/jamming-terrain/oracle.py, bez wspólnego kodu: własny odczyt .hgt, interpolacja dwuliniowa, obieg WGS 84, profil, wybrzuszenie, nu i J(nu)) dziesięciu rozmieszczeń zagłuszarki wokół odbiornika w Badwater Basin na zatwierdzonym rzeczywistym kafelku SRTM tests/fixtures/terrain/N36W117_sub6.hgt. Progi i rozmieszczenia wstępnie zarejestrowane w 92cd2bfd. Wszystkie MET: addytywność (wszystkie 150 wyników scenariuszy identyczne bajt w bajt bez tej sekcji); punkty profilu i przeszkoda każdego rozmieszczenia równe, a nu i strata w granicach 1.6e-10 (próg 1e-9); strata nigdy nie rośnie, gdy zagłuszarka wznosi się od 2 do 4902 m; strata obniża każde J/S dokładnie o siebie i o nic więcej; J(nu) w granicach 1e-12 dB od wyroczni. Ustalenia: rozmieszczenia za górami Black i Funeral tracą od 44 do 48 dB; dwa rozmieszczenia na dnie doliny tracą 8 i 15 dB z samego wybrzuszenia Ziemi przy wysokościach anten 2 m, co jest przypadkiem ślizgowym pojedynczego modelu krawędzi noża. CZEGO NIE SPRAWDZONO: jakiekolwiek zmierzone propagacje, dyfrakcja na wielu krawędziach, odbicie od ziemi, zabudowa, własny błąd DEM. Przeliczenie tego samego modelu, a nie zewnętrzna wyrocznia; wiersz pozostaje MODELLED. | 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), względem xval/jamming-terrain/expected.json z xval/jamming-terrain/oracle.py |
| Histereza akwizycji i kwantyzator front-endu w rodzaju jamming względem niezależnych przeliczeń | Opcjonalna sekcja [acquisition] rodzaju jamming (satelita jest akwizycjonowany przy progu akwizycji lub powyżej po opóźnieniu ponownej akwizycji i utrzymywany, dopóki jest na progu śledzenia lub powyżej) oraz sekcja [front_end] (odczyt AGC 10 log10(1 + J/N) i strata kwantyzatora ADC dla wejścia gaussowskiego, odejmowane od każdego łącza i oznaczone jako nieważne dla zagłuszaczy niegaussowskich). | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale bez zewnętrznego autorytetu — Niezależne przeliczenie w Pythonie każdej flagi akwizycji (xval/jamming-acq-agc/hysteresis.py) z efektywnego C/N0 silnika na epokę, niezależny Monte Carlo w numpy straty kwantyzatora (xval/jamming-acq-agc/quantiser_mc.py, własne wyszukiwanie optymalnego kroku, 2^22 próbek) oraz pętla AGC warstwy IQ. Progi wstępnie zarejestrowane w 70c72fcc, z uzupełniającym zestawem przebiegów przy 37793290. MET: addytywność (wszystkie 150 wyników scenariuszy identyczne bajt w bajt bez tych sekcji); każda flaga równa w przebiegach uzupełniających (1824 łączy, 732 z nich pokazuje histerezę); monotoniczność względem progu; strata kwantyzatora w granicach 0,0007 dB od Monte Carlo przy 1 do 4 bitach (próg 0,02 dB); odczyt AGC w granicach 0,012 dB od pętli AGC (próg 0,05 dB). NOT MET: zarejestrowane przebiegi histerezy (jamming-demo przy 10 do 30 dBW) były nieinformatywne, ponieważ każde łącze zostało utracone, a ich H2 i H4 są spełnione tylko trywialnie. Ustalenie: przy zagłuszarce CW 1-bitowy ADC traci o około 5 dB więcej niż wartość gaussowska stosowana przez silnik i flaguje jako nieważny. CZEGO NIE SPRAWDZONO: samo przeszukiwanie akwizycji, dynamika AGC w czasie, jakikolwiek sprzęt odbiornika. Przeliczenia tego samego modelu, a nie zewnętrzna wyrocznia; wiersz pozostaje MODELLED. | 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), względem xval/jamming-acq-agc/expected_hysteresis.json, expected_hysteresis_s1.json i expected_quantiser.json |
| Ograniczone wciąganie FLL poniżej progu przejścia z FLL na PLL w projekcie domyślnym (opcjonalne) | Opcjonalne carrier.fll_pull_in_max_s w iq::track (pole fll_pull_in_max_s w iq::track::LoopConfig): przy fll_assist = pull-in FLL przekazuje sterowanie do PLL po stałym czasie wciągania niezależnie od PLI, z odpowiadającym mu czasem powrotu, aż PLI po raz pierwszy osiągnie fll_off_pli. | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Spójność wewnętrzna względem wstrzykniętej prawdy: syntetyczne, wolne od danych źródło GPS L1 C/A (PRN 13, 1500 Hz, 4,1 MHz, 8 s, dziesięć ziaren szumu), którego faza nośnej jest znana, przy progach wstępnie zarejestrowanych w 58789af0 (docs/design/evidence/fll-handover-floor/). MET: kontrola (domyślne ustawienie bez limitu nigdy nie przekazuje w 9 z 10 ziaren przy 33 dB-Hz); addytywność (domyślny skrót i istniejące testy śledzenia bez zmian); wciągnięcie przekazania odbiegającego o 100 Hz przy 45 dB-Hz. NOT MET: przy limicie 1,0 s przekazanie i utrzymanie w każdym przebiegu (16 z 20 przy 33 dB-Hz, 8 z 20 przy 31 dB-Hz; reszta cyklicznie przechodzi między wymuszonymi przekazaniami a powrotem FLL) oraz jitter fazy w granicach 25 % samego PLL (10,8 wobec 6,1 stopnia przy 33 dB-Hz). CZEGO NIE SPRAWDZONO: bity danych, inne sygnały i częstotliwości próbkowania, nagrania z terenu. Ustawienie domyślne jest niezmienione; wiersz pozostaje MODELLED. | 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), na tests/fixtures/fll_handover_floor/results.csv |
| Czytnik rozwiązań RTKLIB .pos dla receiver-trust | Odczytuje plik rozwiązania RTKLIB (czas kalendarzowy lub tydzień GPS/TOW, szerokość/długość geograficzna lub położenie ECEF, użyte satelity) do osi czasu receiver-trust (receiver_trust::machines::rtklib). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni: nie odczytano żadnego pliku wytworzonego przez RTKLIB, a układ kolumn pochodzi z podręcznika RTKLIB. Sprawdzone wyłącznie na plikach napisanych samodzielnie; konwersja ECEF wykorzystuje ponownie frames::ecef_to_geodetic, które ma własne wiersze | receiver_trust::machines::rtklib (read_rtklib_pos); receiver_trust::LogFormat::RtklibPos | receiver_trust::machines::rtklib::tests (epoki lat/lon, tydzień/TOW i ECEF, dms odrzucone, wrogie dane wejściowe); tests/receiver_trust_machines.rs::rtklib_pos_runs_as_a_receiver_log; integrations/gnss_lib_py/test_bridge.py |
| Logi ASCII i binarne NovAtel OEM7 (BESTPOS, RANGE, RXSTATUS) dla receiver-trust | Odczytuje BESTPOS (położenie), RANGE (C/No dla każdego sygnału) i RXSTATUS (flaga zagłuszacza odbiornika, jako samozgłoszenie epoki) z logów OEM7 ASCII i binarnych, ze sprawdzaniem CRC, wyłącznie do odczytu (receiver_trust::machines::novatel). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni jako progu zaliczenia. Układy pól i CRC podążają za publiczną dokumentacją OEM7 (docs.novatel.com); procedurę CRC sprawdzono jednorazowo względem CRC, które dokumentacja podaje dla własnego przykładu BESTPOSA (przytoczone, nie zacytowane). Zestawy testowe są napisane samodzielnie; nie odczytano żadnego dziennika z rzeczywistego odbiornika | receiver_trust::machines::novatel (read_novatel, novatel_crc32); receiver_trust::LogFormat::Novatel | receiver_trust::machines::novatel::tests (przypięte CRC, rekordy ASCII i binarne, błędne CRC pominięte, wrogie dane wejściowe); tests/receiver_trust_machines.rs::novatel_jammer_flag_reaches_the_receiver_self_report |
| Czytnik stosunku nośnej do szumu RTCM 3 MSM4 i MSM7 dla receiver-trust | Odczytuje C/N0 każdej komórki sygnału komunikatów RTCM 3 MSM4 i MSM7 (GPS, GLONASS, Galileo, SBAS, QZSS, BeiDou, NavIC) ze strumienia ramek, ze sprawdzaniem CRC-24Q (receiver_trust::machines::rtcm3). Układy pochodzą z tabel pyrtcm na licencji BSD, a nie z tekstu normy RTCM. | ReferenceImpl | sprawdzone względem osobnej implementacji w tej samej bazie kodu — niezależnej od testowanej jednostki, ale bez zewnętrznego autorytetu — ReferenceImpl w jednorazowej kontroli, a nie w teście zestawu: dekoder pyrtcm 1.2.0 odczytuje te same samodzielnie napisane ramki do tego samego C/N0 i czasu epoki. Dzieli źródło swoich tabel z tym czytnikiem, więc sprawdza obsługę bitów, a nie układ. Nie odczytano żadnego zapisu z rzeczywistego odbiornika ani stacji bazowej | receiver_trust::machines::rtcm3 (read_rtcm3, crc24q); receiver_trust::LogFormat::Rtcm3 | receiver_trust::machines::rtcm3::tests (katalogowa wartość kontrolna CRC-24Q, C/N0 MSM4/MSM7 i scalanie epok, czas GLONASS i odwzorowanie identyfikatora SBAS, błędne CRC i inne komunikaty) |
| Adapter monitora GNSS-SDR dla receiver-trust | Odczytuje komunikaty GNSS-SDR Monitor (Gnss_Synchro) i monitora PVT, przekazane do linii JSON z nazwami pól proto, do C/N0 dla każdego kanału, fixa, użytych satelitów, HDOP i nieba (receiver_trust::machines::gnss_sdr; integrations/gnss-sdr/relay.py). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni: nazwy pól pochodzą z dokumentacji GNSS-SDR; ani czytnik, ani relay.py nie były uruchamiane względem żywego GNSS-SDR ani rzeczywistego zapisu | receiver_trust::machines::gnss_sdr (read_gnss_sdr_monitor); receiver_trust::LogFormat::GnssSdr | receiver_trust::machines::gnss_sdr::tests; integrations/gnss-sdr/example.jsonl |
| Wczytywanie logów IMU, wejście kursu z żyroskopu i dopasowanie Allana parametrów czujników hybrydowych | Odczytuje CSV z IMU (udokumentowane kolumny lub układ EuRoC); całkuje prędkość kątową odchylenia do kursu, który odczytuje monitor heading-course ([log.imu]); i dopasowuje parametry szumu akcelerometru i żyroskopu scenariuszy hybrydowych i fuzji na podstawie logu w spoczynku metodą nakładającego się odchylenia Allana (imu-fit). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni: dopasowanie sprawdzono na syntetycznych dziennikach szumu białego o znanych współczynnikach, a kurs na dziennikach o stałej prędkości kątowej odchylenia. Nie dopasowano żadnego rzeczywistego dziennika IMU, a q_aa nie jest dopasowywane | receiver_trust::machines::imu, imu_fit; surface::imu_fit; scenario [log.imu] | receiver_trust::machines::imu::tests; receiver_trust::machines::imu_fit::tests (znane współczynniki szumu białego odzyskane w granicach 10 %, odmowy, TOML parsuje się jako AccelCfg); tests/receiver_trust_machines.rs (zgodność i niezgodność kursu, nośna w treści, imu_fit) |
| Wykrywanie MQTT Home Assistant i eksporter stanu telemetrii zaufania | Dokument stanu JSON i komunikaty wykrywania MQTT Home Assistant dla strumienia zaufania, drukowane jako tekst na każdej powierzchni i publikowane przez MQTT 3.1.1 QoS 0 z wiersza poleceń (telemetry::mqtt; trust-telemetry --mqtt-tcp, --print-mqtt, format mqtt). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni: pakiety odczytał nasłuch pętli zwrotnej napisany na potrzeby testu, a nie prawdziwy broker, i nie uruchamiano Home Assistant | telemetry::mqtt (discovery, state_json, connect_packet, publish_packet, MqttSink); surface::TelemetryFormat::Mqtt | telemetry::mqtt::tests (bajty pakietów, broker w pętli zwrotnej, martwy broker policzony); tests/receiver_trust_machines.rs::trust_telemetry_mqtt_text_has_discovery_then_state |
| Pakiet ROS 2 receiver-trust i most gnss_lib_py | Most niezależny od ROS, który zapisuje komunikaty fixa i satelitów jako NMEA i ocenia je przez wiązanie Pythona (integrations/ros2/kshana_trust), oraz most gnss_lib_py NavData do receiver-trust przez format rtklib-pos (integrations/gnss_lib_py). | InternalConsistency | sprawdzone względem własnej tożsamości w postaci zamkniętej / analitycznej — wychwytuje błędy przepisania i współczynników, ale nie jest zewnętrzną wyrocznią — Brak zewnętrznej wyroczni: węzeł ROS nie był uruchamiany na żywym grafie ROS 2, a nazw pól ublox_ubx_msgs nie sprawdzono względem działającego sterownika. gnss_lib_py (MIT) uruchomiono dla testu mostu | 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: format zapisywany przez most gnss_lib_py, przepuszczony przez receiver-trust); testy w Pythonie mostów to integrations/ros2/kshana_trust/test/test_bridge.py (most z atrapą silnika), integrations/ros2/kshana_trust/test/test_engine_integration.py (prawdziwy pakiet wheel ocenia stałe rozwiązanie jako nominalne, a skok o 1,1 km jako niegodny zaufania) i integrations/gnss_lib_py/test_bridge.py (prawdziwy gnss_lib_py 1.1.0 i pakiet wheel), uruchamiane przez pytest, a nie przez cargo |
221 możliwości oznaczonych MODELLED.