Modellerade förmågor — motivering
De här förmågorna är implementerade utifrån publicerad fysik eller fysik från första principer med tester, men är ärligt märkta MODELLED — inte kontrollerade mot en oberoende extern referens inom en angiven tolerans. Invarianttesterna för matrisen säkerställer att bara rader som backas av ExternalDataset får vara VALIDATED, så ingenting här kan i det tysta befordras. Varje rad anger varför den förblir modellerad.
| Krav | Förmåga | Typ av oberoende referens | Varför den förblir modellerad | Modul | Tester |
|---|---|---|---|---|---|
| Solens limbmörkade SRP-skugga (valfri) | Belyst andel för SRP som den icke-skymda delen av det limbmörkade solflödet (lag enligt Eddington-approximationen I(mu)/I(1) = 2/5 + 3/5 mu, Gauss-Legendre-kvadratur) över en sfärisk jord eller WGS-84 (srp_shadow::limb_darkened_shadow, ShadowModel-varianten OblateEarthLimbDarkened) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Ingen extern: Orekit 12,2 har ingen belysningskvot med kantmörkning. Kontrollerad bara mot slutna former av samma lag | srp_shadow | srp_shadow::tests (den ringformade slutna formen, den enhetliga lagen som återger den koniska skuggan, gränserna full sol och umbra) |
| Sol och Måne enligt DE440 i Cowell-kraftmodellen (valfri) | Valfri efemeridnivå för termerna för tredje kropp och SRP i den numeriska Cowell-modellen ForceModel: geocentrisk Sol och Måne från valfri EphemerisProvider (en DE440 SPK-kernel via KernelEphemeris) vid TDB = TT + (TDB - TT), som vägrar en leverantör som inte kan betjäna epoken och räknar varje återgång till den analytiska serien; avstängd som standard | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Orekit 12,2 (Apache-2.0) NumericalPropagator/DormandPrince853 med ThirdBodyAttraction och SolarRadiationPressure på Orekits egen DE440-läsare (orekit-data lnxp1990.440), körd som ett separat program; kshana läser ett bit för bit identiskt, med SPICE kontrollerat utsnitt av NAIF de440s.bsp. Trösklar fastställda i förväg i xval/propagator-de440-orekit/PREREGISTRATION.md (22a5a01d). Banans tröskel (0,5 m) och känslighetskontrollen nåddes, men tröskeln för Sol/Måne-positionen (3 m / 0,2 m) nåddes inte: 6,39 m / 0,244 m. SPICE som läser samma kärna vid dess exakta TDB avviker från Orekit med samma belopp (6,25 m / 0,240 m), så skillnaden ligger mellan NAIF:s de440s-väg och Orekits DE440-läsare eller tidsskala; orsaken är inte isolerad. Registrerad och fastnålad, så raden förblir MODELLED | propagator (ForceModel::with_ephemeris, ForceEphemeris), ephem_provider | tests/propagator_de440_orekit_oracle.rs (5 fall x 25 timtillstånd över 24 h, LEO, GEO och HEO, tredje kropp och tredje kropp + SRP: sämsta |dr| 0,0170 m, |dv| 1.84e-5 m/s; den analytiska seriekontrollen avviker med 9,96 m; Sol 6,39 m och Måne 0,244 m från Orekits DE440-positioner, en registrerad miss); enhetstester för propagator (avslag från leverantör, räkning av reservlösning delad mellan kloner) |
| Atmosfärstid S1 (valfri) | Den dygnsvisa lufttrycksvågen S1 som en störning av geopotentialen: Biancale och Bode (2006) modell N1, grad 2 till 6, genom belastningsformeln i IERS 2010 ekv. 6,21 (tides::atmospheric_tide_s1, s1_air_tide_acceleration), valfri i Cowell- och precisionskraftmodellerna (air_tide_s1, avstängd som standard) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Ingen extern för geopotentialeffekten. De 24 koefficienterna är avskrivna från GFZ STR06/01 tabell 1 modell N1 och kontrollerades om rad för rad mot rapporten (SHA-256 890865ae); graderna 0, 1, 7 och 8 används inte. Ray och Ponte (2003) trycker ingen sfärisk-harmonisk tabell, så ingen andra källa jämfördes | tides, propagator, precise_od | tides::tests (S1-termen är dygnsvis, vrider 90 grader på ett kvarts dygn och har lastfaktoramplituden för varje rad; fysikalisk storlek vid LEO); propagator::tests::the_s1_air_tide_flag_adds_exactly_the_s1_acceleration |
| Sfäriskt harmoniskt gravitationsfält av hög grad (EGM2008 till 2190) | Underflödessäker och polsäker utvärdering av ett fullt normaliserat fält till grad 2190 (SphericalHarmonicField::acceleration_hf / potential_hf, Holmes-Featherstone 2002 modifierad framåtkolumn med gradienten fri från 1/cos phi), en strömmande inläsare för ICGEM .gfc (from_gfc_file / from_gfc_reader; hela EGM2008 hämtas vid körning, ingår inte), och Holmes-Featherstone-utvärderaren som kan väljas i den valfria Cowell Geopotential | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Orekit 12,2 (Apache-2.0) HolmesFeatherstoneAttractionModel och pyshtools 4.14.1 (BSD-3-Clause) MakeGravGridPoint, körda som separata program; trösklar fastställda i förväg i xval/high-degree-gravity/PREREGISTRATION.md (276c869f) och xval/cowell-tesseral-200-orekit/PREREGISTRATION.md (0aa312a6). Orekit stämmer överallt där det är definierat, men pyshtools missar sin tröskel som fastställts i förväg vid de två punkterna nära polen (upp till 7.3e-10 m/s^2; en 50-siffrig mpmath-kontroll lägger felet hos pyshtools), det finns inget oberoende värde exakt på polaxeln, och den känslighetskontroll på grad 70 som fastställts i förväg för banan på 24 h nåddes inte (0,726 m mot > 1 m). Varje miss är registrerad, inte bortjusterad, så raden förblir MODELLED | gravity_sh, propagator (FieldEvaluator) | tests/gravity_sh_high_degree.rs (Orekit vid 8 punkter utanför axeln: max |da| 2.2e-17 m/s^2 vid N = 70, körs alltid; 3.5e-17, 3.9e-17 och 7.3e-17 m/s^2 vid N = 200, 360, 2190, datastyrd på KSHANA_EGM2008_GFC); tests/cowell_tesseral_200_orekit_oracle.rs (bana på 24 h med 200x200, datastyrd: sämsta |dr| 0,1317 m, |dv| 1.45e-4 m/s; kontroll på grad 70 0,726 m); enhetstester för gravity_sh (samstämmighet med den klassiska utvärderaren till 1e-13 vid grad 70, finit differens och polkontinuitet på ett fält av grad 2190, en underflödande term av grad 2190 mot en beräkning med utökad exponent) |
| Batch-banbestämning med avståndshastighet och az/el med stationsmaskering | Återskapa ett epoktillstånd ur blandad spårning av avstånd, avståndshastighet och azimut/elevation över en elevationsmask med Gauss-Newton på H = (dh/dx(t)) Phi(t, t0): analytiska mätpartialer och en variationell tillståndsövergångsmatris med analytiska partialer för två kroppar + J2 (integrerad med RK4, inte en STM i sluten form) | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Orekit 12,2 (Apache-2.0) BatchLSEstimator med egna ögonblickliga geometriska mätningar RangeRate och AzEl (korskontrollerade mot Orekits TopocentricFrame), körd som ett separat program på identiska maskerade observationer med frö. Trösklar fastställda i förväg i xval/od-measurements-orekit/PREREGISTRATION.md (0cf9076). Varje tröskel nåddes utom B4, den brusfria tillståndssamstämmigheten på 1 cm, som missades i 2 av 4 scenarier (1,46, 1,74 cm): Orekits egen brusfria skattning ligger så långt från dess simulerade referens (orsaken på Orekits sida är inte isolerad). Registrerad och fastnålad, så raden förblir MODELLED. Inte modellerat: ljustid, aberration, refraktion, jordrotation, ett sekventiellt filter för de här mätningstyperna | orbit_determination (determine_orbit_batch_tracking, propagate_with_stm, is_visible), batch_ls (gauss_newton_analytic) | tests/od_tracking_measurements_reference.rs (8 scenarier: range-rate, az/el och blandat, LEO och MEO, brusfritt och med frö sigma 5 m / 5 mm/s / 1e-4 rad, masker på 5 och 10 grader, mot Orekit 12,2: synliga mängder identiska; mätvärden inom 5.84e-8 m, 6.30e-10 m/s, 1.44e-13 rad; STM inom 1.2e-14 relativt; brusiga tillstånd inom 1,74 cm och 1.14e-5 m/s; RMS efter anpassning per typ inom 2.7e-4 relativt; brusfri kshana mot referens 1.06e-8 m; brusfri kshana mot Orekit 1,464 och 1,740 cm på två scenarier, en registrerad miss av tröskeln på 1 cm); enhetstester för orbit_determination och batch_ls |
| Viktning av observationer efter noggrannhetskod i SP3 | Avbilda noggrannhetskoder i SP3 (huvudets ++-exponenter i 2^n mm, basen %f, standardavvikelser base^n mm per post) på positionssigma per observation för motorn för precis banbestämning (sp3::parse_sp3_accuracy, Sp3Accuracy::position_sigma_m) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Ingen extern: vikterna är ett modelleringsval (SP3-formatet definierar koden bara som producentens noggrannhetsindikator; den läses här som en envägs standardavvikelse per axel). De befintliga registrerade körningarna från organisationer är oförändrade | sp3, precise_od | src/sp3.rs enhetstester; tests/agency_galileo.rs::galileo_e11_sp3_accuracy_weighted_fit (incheckad ESOC-fixtur på 8 h, sigma 0,032 m från headerexponent 5: Tier-1 3D RMS 0,132 m oförändrad, Tier-2 0,035 m mot 0,070 m vid sigma 1 m, där ändringen kommer från den ombalanserade empiriska a priori-begränsningen); tests/agency_swarm.rs (Swarm-produkten bär inga noggrannhetskoder och faller tillbaka, fastnålad) |
| Koppla ett publicerat gravitationsfält till en kropp | with_gravity_field (på Body, i src/gravity_pds.rs): koppla valfritt inläst sfäriskt harmoniskt fält (till exempel GMM-3 eller GL0660B) till en Body så att propagatorn utvärderar det kroppsfast; valfritt, standardkroppar oförändrade | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Endast intern konsistens. Varje publicerat fält definieras i producentens kroppsfasta system (GMM-3 i Mars-systemet enligt Konopliv m.fl. 2006, GL0660B i månens huvudaxelsystem DE421), medan fältet utvärderas i IAU-systemet; förskjutningen är inte modellerad | 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 |
| Kodare för navigeringsmeddelanden utöver GPS LNAV (GPS CNAV, Galileo I/NAV och F/NAV) | GPS CNAV-meddelandetyperna 10/11/30, Galileo I/NAV-ordtyperna 1-5 i nominella jämna/udda sidor och Galileo F/NAV-sidtyperna 1-4: ICD-fältpackning och kvantisering, CRC-24Q, faltningskodning med hastighet 1/2 och K=7 (G2 inverterad för Galileo), blockinterfoliering och synkmönster, med matchande testavkodare | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern tur-och-retur och kända svar enligt ICD; ingen tredjepartsavkodare har körts (testramen med RTKLIB/GNSS-SDR som läser KSHANA_NAVMSG_ORACLE_JSON är datastyrd). MODELLED | gnss_navmsg (gps_cnav, gal_inav, gal_fnav, fec) | gnss_navmsg::tests (CRC-24Q-kontrollvärde 0xCDE703; faltningskodens impulssvar; Viterbi rättar inmatade fel; layoutbredder); tests/gnss_navmsg_roundtrip.rs (fältens startbitar är lika med ICD:ns bitnummer; kodning -> FEC -> interfoliering -> Viterbi -> avkodning ger tur-och-retur inom en halv LSB); tests/gnss_navmsg_galileo_brdc_grid.rs (IGS BRDC 2018-133 Galileo-poster på LSB-rutnätet, sämsta 3.6e-3 LSB; tröskeln för antal satelliter som fastställts i förväg nåddes inte, 15 av 20, FINDING) |
| Hatch-bärvågsutjämning av kod på verkliga RINEX-observationer | Divergensfritt Hatch-filter (jonosfärsfri kod buren av den jonosfärsfria bärvågen, fönster på N epoker, omstart vid förlorad låsning, geometrifritt hopp eller lucka) i sammanställningen för precis enpunktspositionering | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — FINDING mot den publicerade koordinaten ITRF2020 WTZR: trösklarna som fastställts i förväg (släta median och p95 högst 0,6 x rå; tests/fixtures/gnss_wettzell_2025055/PREREGISTRATION_HATCH.md) nåddes inte, kvoterna 0,718 och 0,923; det kvarstående felet på meternivå är biasliknande (C1C-kodbias, antenn, tidvatten, långperiodisk flervägsutbredning), inte det vita brus som utjämningen tar bort. MODELLED: filtrets statistik kontrolleras internt | hatch (HatchFilter), pvt (assemble_epoch_precise_smoothed, CarrierSmoother) | hatch::tests (brusfri genomströmning; vitbrusvarians 1/(2N-1); omstarter); tests/hatch_wettzell_oracle.rs::hatch_finding_is_pinned (WTZR 2025-02-24 01-06 h, 600 epoker, N = 100: median av 3D-fel 1,553 -> 1,116 m, p95 3,473 -> 3,207 m) |
| Läsning av observationsfiler i RINEX 4 | Observationshuvuden i RINEX 4.0x (DOI, LICENSE OF USE, STATION INFORMATION, MERGED FILE; etiketter matchade i kolumnerna 61-80 för version 4 och senare) och epokposter | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Formatkontroll på en verklig publicerad RINEX 4,00-fil (värden som läses tillbaka är lika med filens tryckta litteraler) och en specifikationsdriven header; ingen oberoende läsare har körts, så MODELLED | rinex_obs (parse_obs) | tests/rinex4_obs_mao0.rs (de första 4 epokerna i IGS MGEX RINEX 4,00-filen MAO000USA_R_20231980000_01D_30S_MO, 58 satelliter, 7 system: headerposter och värden för första epoken är lika med de publicerade litteralerna); rinex_obs::tests::parses_a_rinex_4_header_with_its_new_records (syntetisk 4,02-header enligt specifikationen) |
| Satellitposition ur sändning för BeiDou GEO | BDS-SIS-ICD-B1I v3.0 §5.2.4.12 position för geostationär satellit ur en sändningsefemerid (tröghetsliknande system, därefter Rz(Ω̇e·tk)·Rx(−5°)), valfri via fältet include_beidou_geo i NavParseOptions, så standardläsaren hoppar fortfarande över GEO | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Förhandsregistrerad (7aa264b, 110fef9) mot en IGS MGEX-precisionsbana med GEO; ingen sådan produkt gick att nå från sessionen som byggde den, så jämförelsen är under väntan och raden är MODELLED (kontrollerad bara mot de publicerade nominella GEO-platserna) | rinex (RinexEphemeris::sv_position_ecef_bds_geo, NavParseOptions) | tests/bds_geo_broadcast_oracle.rs (verkliga poster C01-C04: geostationär radie, longituder 140.02/80.04/110.55/159.99 grader vid de publicerade platserna, |latitud| 2,13 grader med lutningen mot 6,65 utan; den förhandsregistrerade jämförelsen sändning mot precision i SP3 är datastyrd på KSHANA_BDS_GEO_SP3 och har inte körts); rinex::tests |
| Tätt kopplad GNSS/INS med bärvågsfas och osäkerheter med flyttal | Feltillståndsbaserat EKF över 15 INS-tillstånd, en mottagarklocka med två tillstånd och en osäkerhet med flyttal i bärvågen per spårad satellit; pseudoavstånd, bärvågsfas och valfri avståndshastighet från en SGP4 Walker-konstellation (ljustid och Sagnac), korrektioner med Klobuchar och Saastamoinen/Niell tillämpade i slingan vid filtrets egen position; detektering av slip med tidsdifferentierad bärvåg och en tröskel per satellit vidgad av hastighetsosäkerheten; omstart av osäkerheten vid slip och återinfångning | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens: mätningarna syntetiseras ur de modeller filtret använder (χ² NEES/NIS över frön, en brusfri konvergens, injicerade slip). MODELLED; ingen verklig mottagardata eller tredjepartsfilter jämförs | fusion::carrier_tc (run_carrier_tc, CarrierTcCfg), fusion::trajectory (truth_epochs) | tests/fusion_carrier_tc.rs (figur-8-körning: stationärt 3D-RMS 0,025 m bärvåg mot 0,470 m kod på identiska mätningar; 12 frön med medel för NIS/dof 1,00 och stationärt NEES/dof 0,92; ett slip på 1 cykel upptäckt vid sin epok utan falsklarm och med lösningen intakt; att stänga av sändningskorrektionerna höjer kodfelet från 0,51 m till 19,6 m (jonosfär) och 8,0 m (troposfär); brusfri körning konvergerar till 0,3 mm) |
| GNSS/INS-paket för sjö, järnväg och flyg med ett alternativ för tät koppling | Tre scenarier för gnss-ins på banbiblioteket (ett fartyg som slingrar sig med 8 m/s med ett avbrott på fem minuter; ett tåg genom en skärning med två satelliter och en tunnel; ett flygplan vars avbrott täcker en 25-graders krängd sväng) och paketets valfria tabell [tight]: pseudoavstånd från en SGP4 Walker-konstellation sammanförda av navigatorn med sluten slinga, varje satellit över masken vid nominell drift och de högsta få vid försämrad drift | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern: varje pakets kvalitetsmått mot dess egen referens och en jämförelse lös/tät på identiska indata. MODELLED; granskningens jämförelse med NaveGo har inte körts | fusion::pack (TightCfg, [tight]), scenarier gnss-ins-maritime / gnss-ins-rail / gnss-ins-aviation | tests/gnss_ins_packs.rs (varje paket: fusionerat under fri INS över avbrottet för båda sensorerna; tåg: tät 5,3 m mot lös 12,9 m navigeringsklass och 15,6 m mot 18,8 m taktisk över avbrottet, tillgänglighet 0,97 mot 0,95; tät tabell validerad); tests/gnss_ins_legacy_trajectory_pin.rs (den löst kopplade standarden bit för bit identisk) |
| Kopplat PNT-filter för pseudoavstånd med biastillstånd och 3D-utvidgning i fusionspaketet | Ett staplat Kalman-filter över position, hastighet, klockfas och frekvens matat med pseudoavstånd som kopplar position och klocka (uppdateringar i Joseph-form som bär korskovariansen); en variant med 1 frihetsgrad utökad med ett konstant tillstånd för accelerometerbias som fusionspaketet kör under [coupled]; och 3D-versionen med 8 tillstånd med rader för siktlinjen | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens: referens simulerad ur filtrens egna modeller (χ² NEES över Monte Carlo-frön, det frikopplade paketet på identiska sensorer). MODELLED | fusion::coupled (CoupledPntFilter, CoupledPntBiasFilter, CoupledPnt3d), fusion (run_coupled_suite), hybrid (CoupledCfg) | tests/fusion_coupled_filters.rs (3D-filter över 60 frön: medel för NEES i andra halvan 8,12 för 8 tillstånd, χ²-summa för sista epoken inom sitt 95 %-band; en klockkorrektion på 0,1 ns minskar 3D-positionens sigma från 5,58 m till 3,07 m; biasfilter över 60 frön: χ²(5)-summa i bandet, bias inom 3 sigma i 59 av 60; fusion-pnt-coupled med biasade accelerometrar: position p95 18,7 m / 90,0 m och integritet 1,00 / 0,97 kopplad mot 430 m / 4060 m och 0,006 / 0,000 frikopplad); fusion::coupled::tests; tests/fusion_coupled_pack.rs (fusion och hybrid utan [coupled] bit för bit identiska) |
| Bibliotek med GNSS/INS-banor och import av CSV-referens | Valbara rörelseprofiler för paketet gnss-ins (rakt, figur-8, urban stanna-och-kör, flygplans stigning och koordinerad sväng, kartläggningsdrönare), definierade av kommandon för Euler-hastighet och acceleration längs spåret slutna på referenstillståndet med den kinematiska IMU:n (termer för centripetal, gravitation och Coriolis), och importerad CSV-referens omvandlad till den IMU som återger den; den historiska körningen oförändrad när ingen profil anges | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern: identiteter för stelkroppskinematik, CSV-tur-och-retur och filtrets egen kovarians. MODELLED (ingen verklig körlogg jämförs) | fusion::trajectory (TrajectoryCfg, Trajectory, kinematic_imu, parse_truth_csv), fusion::pack ([trajectory]) | fusion::trajectory::tests (samordnad sväng har ingen sidokraft och lastfaktor 1/cos φ; CSV-import återger en flugen profil till 1e-3 m/s och 1 m); tests/gnss_ins_trajectory_library.rs (varje profil körs och fusion slår fri INS över avbrottet; var och en flyger sin namngivna rörelse; observerbarhet för kurs: girens sigma efter 240 s 1,27 grader vid rak gång mot 0,039 grader för figur-8 och 0,062 grader för stanna-och-kör); tests/gnss_ins_legacy_trajectory_pin.rs (äldre resultat- och referenshashar bit för bit identiska) |
| CR3BP för jord–måne 9:2 NRHO mot den bana CAPSTONE flög | Den cirkulära begränsade södra 9:2 nära-rätlinjiga haloomloppsbanan kring L2 som cr3bp::differential_correct_halo korrigerar (banfamiljen för Gateway och CAPSTONE), jämförd för sin medelgeometri (period, perilunradie, apolunradie) med den bana CAPSTONE faktiskt flög. Ett mått på hur väl CR3BP-medlemmen beskriver den verkliga banan; en CR3BP-bana är inte en bana i en efemerimodell och jämförs inte epok för epok | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Uppmätt mot den rekonstruerade CAPSTONE-efemeriden från JPL Horizons (NAIF -1176, CAPSTONE_merged, månencentrerad ICRF, 2023-03-01..31 med 10 min), incheckad byte för byte (tests/fixtures/capstone_horizons/, NOTICE.md), förhandsregistrerad 4e868170 innan den hämtades, som en mätning med trösklar för medelgeometrin. Ingen validering: CR3BP utelämnar Solen, månens excentricitet och den banhållning som CAPSTONE utförde, så trösklarna beskriver hur representativ modellbanan är, inte en noggrannhet. Resultat: 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 mars 2023, 4 perilunier och 5 apolunier: period 6,5004 d mot 6,5699 d (1,07 %, tröskel 3 %), apolun 71 182 mot 71 215 km (0,05 %, tröskel 5 %), perilun 3 385 mot 3 245 km (4,1 %, tröskel 20 %)); cr3bp::tests::reproduces_l2_southern_nrho_92_regime |
| Positionsfel ur geometri: RMS-fel = sigma_UERE x DOP för motorns positionsbestämning med minsta kvadrat | dop_error_mc::run_geometry och check: en seedad Monte Carlo (N = 20 000 epoker per geometri, sigma = 1,5 m, ChaCha8-seed 36 + i) av motorns egen iterativa positionsbestämning med minsta kvadrat (pvt::solve_spp, enhetsvikter, löst från den sanna positionen) på de 8 geometrierna i tests/fixtures/dop/dop_reference.csv, som jämför felvarianserna i öst, nord, upp och klocka, RMS för H/V/P, korrelationen öst–nord, medelfelen och andelen inom den horisontella ellipsen på 95 % med sigma^2 Q, där Q är kovariansfaktorn i kärnan orbit::dop (orbit::dop_cofactor, samma aritmetik) på samma geometri | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens mot en sluten form: under den linjära gaussiska modellen är minstakvadratkovariansen sigma^2 (H^T H)^-1 (Kaplan och Hegarty (red.), Understanding GPS: Principles and Applications, 2:a uppl., Artech House, 2006, kap. 7). Metod och toleranser i designanteckningen för geometri 0,36, avsnitt 5,2, fastställda i en förhandsregistreringscommit före första körningen: varje varians inom 5 % (5 standardfel för en stickprovsvarians vid N = 20 000), varje RMS inom 2,5 %, öst-nord-korrelationen inom 0,035 (5/sqrt(N)), varje medelvärde inom 5 standardfel, ellipsandelen på 95 % inom 0,95 +/- 0,0077 (5 binomiala standardfel); negativa kontroller (PDOP fördubblad; fel som växer som 1/sin(elevation) mot den oviktade Q) måste misslyckas. SÅ HÄNGER DET IHOP: Q är kovariansfaktorn i kärnan orbit::dop, VALIDATED mot gnss_lib_py 1.0.4 på just dessa 8 geometrier i tests/dop_reference.rs (raden 'GNSS geometry / dilution of precision'); den här raden lägger till steget från de faktorerna till meter genom motorns lösare och lånar inte den radens status. VARFÖR MODELLED: ingen extern datamängd är inblandad; samstämmighet visar att skattaren och bruset realiserar sigma x DOP under läroboksmodellen, inte att någon mottagares fel är lika med UERE x DOP, och sigma_UERE är en indata | 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: alla 104 kontroller klarar sig vid första körningen efter förhandsregistreringen e50c88d2, sämsta varians 3,2 %, RMS 1,6 %, korrelation 0,012, medelvärde 2,2 standardfel, ellipsandel 0,0039; negative_control_a_doubled_pdop_fails_every_geometry; negative_control_elevation_dependent_errors_fail_the_low_elevation_geometries: båda kontrollerna misslyckas som krävs; position_error_is_sigma_times_dop_on_masked_skies: designanteckningens två maskerade horisontgeometrier, himlen 10sat-mixed under förinställningarna stadsgata (4 satelliter, PDOP 16,6) och containerterminal (9 satelliter, PDOP 2,5), alla 26 kontroller klarar sig vid första körningen efter förhandsregistreringen 03999c11, tests/fixtures/dop/PREREGISTRATION-MASKED.md); tests/position_error_dop_ci.rs (en första, separat kontroll på fyra handvalda himlar (öppen, klustrad, kanjon, halvhimmel; sigma 1 m, frö 0x0D0B5EED) med chi-två-konfidensintervall vid 1e-6 totalt över 20 kontroller: kvoter 0,987 till 1,009, lösarens egna PDOP/GDOP lika med kärnans till 2.5e-12, och negativa kontroller för ett DOP-fel på 10 % och fel som 1/sin(elevation); körd före förhandsregistreringen, så den redovisas, är inte förhandsregistrerad); dop_error_mc::tests; dop_error_ci::tests |
| Geometrimedveten förtroendeklassificering: satellitgeometri bredvid mottagarens förtroendepoäng och en klass på varje avdrag | receiver_trust::geometry: satellitgeometri per epok (good, degraded med orsakerna few-satellites/high-pdop/high-hdop/sky-blocked, eller unknown när loggen saknar GSV, NAV-SAT eller GSA) härledd ur redovisade elevationer och azimut genom orbit::dop eller hämtad från GSA, med en etikett som alltid redovisas och aldrig poängsätts (good, fair, poor, unknown) och HDOP, PDOP, VDOP, antal satelliter och signalförlust i ord; en geometriövervakare i fartygspoängen som inte drar något om inte geometrin är poor (kvoten max(hdop/4, pdop/6, 5/n_used) över 1), därefter trappar upp till ett tak på 15 poäng vid 1,5 som enbart geometri inte kan ta under det försämrade bandet (tak, slut på trappan och golv i [geometry]; inget larm); en klass på varje avdrag (geometry, environment, inconsistency) där förlorad låsning mot satelliter under 15 grader klassas som geometry, satelliter i sikte men inte spårade klassas som environment, och ett avdrag för poor-geometri vars angivna HDOP ligger bortom max(1,0, 25 % av det härledda HDOP) från den angivna himlen klassas som inconsistency | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens: klassificeringen kontrolleras mot de regler den anger och mot handhärledda kvoter på syntetiska redigeringar av den incheckade demologgen, och pinnarna för oförändrat håller utdata från 0.35.0: ingen poäng ändras om inte geometrin är dålig; etiketten rapporteras alltid. VARFÖR MODELLED: trösklarna är valda, inte anpassade (ursprung i varje körnings geometry_model; siffrorna ur IEC 61108-1 och GPS SPS som citerade, att kontrolleras mot standardernas text), och det finns ingen extern märkt datamängd med naturlig geometriförsämring mot attacker att validera klassificeringen mot. Den härledda DOP återanvänder kärnan orbit::dop, VALIDATED mot gnss_lib_py, vars status den här raden inte lånar. En geometriklass är ett påstående om himlen, inte ett fynd att ingen attack förekom | 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: på den syntetiska fjordpassagen i scenarios/training/fjord-natural-degradation.toml dras samma 624 epoker av med och utan den angivna [skyline]; med den rapporteras sky-blocked på 680 epoker (0 utan: reservlösningen med azimutglapp ser ingenting i en tvåsidig fjord), open_fraction är 0,758, och epokerna i miljöklassen faller från 78 till 33, resten är förluster av satelliter som den angivna horisontlinjen lämnar i det fria; utanför händelsen ändrar horisontlinjen ingen poäng); receiver_trust::geometry::tests (handhärledda kvoter vid trösklarna, tröskelkanterna, rampen och taket, golvet, etikettkanterna, överstyrningar av [geometry], DOP på den validerade kärnan, hållna och utgångna himlar, okänd gissas inte, signalförlust, toleransen för dålig geometri, sentineller för ingen positionsbestämning); tests/geometry_trust.rs (en rimlig maskerad himmel etiketterad och inte poängsatt, en dålig maskerad himmel, en förlust vid låg elevation, ett effektfall, en förfalskad HDOP, total signalförlust, en bortdragning under dålig geometri, okänd geometri, sessionsöverstyrningar, live-schemat); tests/geometry_trust_no_change.rs (båda exempelsessionerna byte för byte identiska med 0.35.0 när de tillagda nycklarna tagits bort); tests/geometry_corpus_identity.rs (varje incheckat NMEA-korpus för fartyg, även som öppen himmel med enbart GPS, och besättningsträningsscenarierna: byte för byte identiska med 0.35.0 utom dåliga epoker, som skiljer sig enbart genom geometriavdraget) |
| Reduktioner av gatukanjon, sektor och terräng till en tabell | skyline: gatukanjonen i sluten form (skär atan((h - a) / d) med d = (w/2) / abs(sin(az - s)), öppna ändar för en ändlig längd), skarpkantade sektorer medsols med omslag, samt terrängpunkter reducerade till en tabell med krökningssänkningen d^2/(2 * 4/3 R); skylinen är deras punktvisa maximum med en eventuell tabell | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern: de slutna formerna kontrolleras mot handberäknade värden (elevationer för väggtoppar på en angiven gata, villkoret för öppen ände, krökningsfallet för en angiven punkt). Ingen extern oberoende referens: designanteckningen avgränsar de här reduktionerna som MODELLED, och Orekits ElevationMask tar en tabell, så jämförelsen för raden 'Azimuth-dependent skyline mask: visible set, azimuth and elevation, and DOP under the mask' läser deras tabeller med 360 punkter som indata och kontrollerar dem inte | 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) |
| Skylineförinställningar (stadsgata, hamninlopp, fjord, containerterminal) | skyline::PRESETS: fyra REPRESENTATIVE geometrier med utformningsnotens angivna mått och en proveniensrad var: city-street (en kanjon, gata 0 deg, 20 m mellan 30 m höga väggar, antenn 1,5 m), harbour-approach (sektorer: öppet mot havet över 180 deg, kajbyggnader 8 deg över 90 deg, vågbrytaren 3 deg), fjord (terräng: väggar 600 m över antennen på 1,5 km avstånd på vardera sidan om en nord-sydlig kanal, krökningssänkning tillämpad), container-terminal (sektorer: staplar 12 deg över den landvända hälften, kranbommar 35 deg och 25 deg över två smala sektorer); kan åsidosättas fält för fält | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Ingen: valda och angivna dimensioner, inte en kartläggning av någon gata, hamn, fjord eller terminal (gatans proportioner ligger inom bandet 0.5-2 enligt Oke (1988); fjorden är av storleksordningen västnorska fjordar; stackarna använder ISO 668 high-cube-höjd). Testet kontrollerar förinställningarna mot deras egna angivna dimensioner, en transkriptionskontroll, som valideringsregeln inte räknar | skyline (PRESETS, preset, preset_list) | skyline::tests (presets_carry_the_note_dimensions_and_provenance) |
| Himlageometrifunktioner: synlighet, DOP, kovarians, felellips, Monte Carlo-moln | geometry (sky_geometry, sky_monte_carlo, skyline_presets, skyline_profile, skyplot_svg; CLI kshana sky och kshana skyline, Python- och WASM-funktioner med samma namn, MCP sky_geometry): utifrån en plats, en tid och konstellationsförinställningar (eller satelliter som azimut/elevation eller ECEF) de satelliter som är synliga och maskade under en skyline, GDOP/PDOP/HDOP/VDOP/TDOP, kofaktorn med enhetsvarians (H^T H)^-1 och kovariansen i öst-nord-upp med en mottagarklocka per system eller en gemensam, den horisontella felellipsen (halvaxlar k sigma sqrt(lambda), k = sqrt(-2 ln(1 - p)), orientering 0,5 atan2(2 Q_EN, Q_NN - Q_EE) från norr), samt n slumpade minstakvadratfel med frö under oberoende gaussiska avståndsfel med deras empiriska kovarians, RMS och 95 % inneslutning. Kofaktorn är orbit::cofactor_from_los, den enda kärnan bakom orbit::dop och orbit::dop_cov (dop är en reduktion av dop_cov): ingen andra DOP-implementation |
ReferenceImpl | kontrollerad mot en separat implementation i just den här kodbasen — oberoende av enheten som testas, men inte externt auktoritativ — Faktorerna för DOP med en klocka vilar på kärnan som validerats mot gnss_lib_py 1.0.4 (raden 'GNSS geometry / dilution of precision (DOP)'); den här radens egna kontroller är interna: sky_geometry återger orbit::dop och dop_cov på samma geometri, ellipsen återger en analytisk egenvärdesuppdelning av 2x2, ECEF- och azimut/elevation-indata stämmer, och det slumpade molnets RMS och 95 %-inneslutning stämmer med geometrin. ENU-kovariansen med en klocka per system och ellipsen är VALIDATED i raden 'Horizontal error ellipse and per-system cofactor from the geometry covariance' (numpy, P2); det som förblir MODELLED här är sammansättningen: förinställningens propagering till en representativ himmel, Monte Carlo-molnet (kontrollerat mot geometrin det samplar, en självkonsistenskontroll) och ytorna. Konstellationsförinställningarna ger en representativ himmel, inte en daterad; den gaussiska felmodellen och UERE är angivna indata, inte en uppmätt noggrannhet eller en integritetsgräns | 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 (kärnan med en klocka mot gnss_lib_py) |
| Klock-holdover utan GNSS | Tillväxt av utrullningsfel i sluten form + holdover till tröskel; kvantklockklasser | ReferenceImpl | kontrollerad mot en separat implementation i just den här kodbasen — oberoende av enheten som testas, men inte externt auktoritativ — Rekursion över flera steg för kovariansen i clock_state (korskontroll inom samma kodbas); kärnan för coast-variance och tröskelinvertering för holdover är externt validerad mot scipy (se 'Clock-holdover coast-variance & threshold inversion'). Siffrorna för holdover med rött brusgolv per klass förblir MODELLED | holdover | holdover::tests (mot kovariansrekursion för Kalman över flera steg; vitt FM exakt; tur-och-retur); coast-variance-kärnan externt validerad i tests/gnss_denied_clock_holdover_reference.rs (mot scipy Van-Loan/brentq) |
| Uppmätta klockenhetskort (förutsägelse på undanhållen datamängd) | clock_library: ett enhetskort (vitt fasbrus, vitt, flicker och slumpvandrings-FM plus ett linjärt frekvensdrift) anpassat till en tredjedel av en namngiven uppmätt klockpost efter en loggad konditioneringsomgång (luckor, fasavvikare, fassteg och skurar borttagna; frekvenssteg loggade), viktat med de frihetsgrader för brustyp som identifierats med lag-1, och dess förutsagda Allan-avvikelse poängsatt på de undanhållna två tredjedelarna; läsare för RINEX- och IGS-klockfiler, BIPM-filer per laboratorium och Circular T avsnitt 1; omvandling av ett kort till brusmodellen för slottiming, den utökade Kalman-klockmodellen och brusnivåerna för spoofing-övervakaren | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Uppmätta register, undanhållna: IGS slutliga kombinerade klockor på 30 s för de 11 GPS Block IIF-satelliterna under 2026-03-01 till 14 (ett fönster som inget test hade öppnat; IGS, öppet med angivande av källa) och JammerTest 2024 u-blox ZED-F9P-mottagaren i dess ej poängsatta stationära sessioner (GPL-3.0-or-later). Extern jämförelse D9 (förhandsregistrerad 2ec76864, varje korts förutsagda / uppmätta Allan-deviation inom [1/1.5, 1,5] vid dess anpassade medlingstider), ett fynd (förblir MODELLED): 10 av 11 GPS IIF-kort ligger inom tröskeln; G27 är optimistisk på tvåtimmarsskalan (0,662 vid 7680 s, sämsta faktor 1,510), det periodiska felet på timskala som ett kort med potenslag inte bär. Mottagarens TCXO-kort är blockerat: utanför de loggade sändningarna lämnar datamängdens övriga sessioner 167 epoker mot de 3600 som krävs. Redovisat, inte blint (register som öppnats av tidigare rader): cesiumkortet 5071A ligger inom tröskeln (sämsta 1,070 upp till 4096 s), OCXO-kortet är konservativt och utanför den (2,348 vid 128 s; dess brusgolv ändras under registret), och strontiumkortet från Norcia, anpassat på de tre kortaste publicerade punkterna, ligger inom den vid de två poängsatta punkterna (1,291, 1,405). Galileos passiva vätemasrar (ingen inloggningsfri källa till slutliga Galileo-klockor gick att nå) och Deep Space Atomic Clock (ett öppet värde från rymden) är blockerade. D9 omgång 2, mottagarens TCXO ZED-F9P som modellklass på 14 dagar för 12 statiska stationer i Wroclaw (Zenodo 6488497, CC BY 4,0; förhandsregistrerad fb475550), ett fynd: med den registrerade pipelinen gick 11 av 12 stationer inte att utvärdera (RAIM förkastade de flesta jonosfärsfria epoker) och BX14 misslyckades; en redovisad omkörning med en korrigerad pipeline (förhandsregistrerad c9cc0d49) klarar 1 av 11 blinda stationer (BX12, 1,412; BX07 1,532 och BX13 1,542 strax utanför), eftersom klockor hos enkelpunktsmottagare från ojämna filer på 30 s inte är ett rent oscillatorregister | 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; förhandsregistrerad 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; datastyrd) |
| Uppmätta klockkort för GPS Block IIF med termer per varv (förutsägelse på undanhållen datamängd) | clock_library::card::DeviceCard::fit_phase_periodic: ett enhetskort som bär fastermerna med en till fyra perioder per varv (period T/k, T = 43 082,05 s), anpassade gemensamt med den kvadratiska termen med minsta kvadrat på en tredjedel av en uppmätt satellitklockpost, där varje terms Allan-bidrag i sluten form 4 A^2 sin^4(pi tau / P) / tau^2 ingår i den förutsagda Allan-avvikelsen | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Uppmätta register, undanhållna: IGS slutliga kombinerade klockor på 30 s för de 11 GPS Block IIF-satelliterna under 2026-04-01 till 14 (ett fönster som inget test hade öppnat; IGS, öppet med angivande av källa). Extern jämförelse D9 (förhandsregistrerad fb475550, förutsagd / uppmätt Allan-deviation inom [1/1.5, 1,5] vid varje anpassad medlingstid på varje satellit), ett fynd (förblir MODELLED): 9 av 11 kort ligger inom tröskeln; G03 (1,947) och G25 (1,581) är optimistiska mellan 60 s och 2000 s eftersom deras undanhållna register är brusigare än deras anpassningstredjedelar (G25:s undanhållna del bär 16 luckor och 29 fasavvikare), en förändring av klockan snarare än en saknad periodisk term. Att ta bort de periodiska termerna ur prediktionen underkänner alla 11 kort (1,77 till 4,96), så termerna bär prediktionen | clock_library (card) | tests/clock_library_periodic_cards_oracle.rs (periodic_cards_reproduce_the_recorded_finding; förhandsregistrerad fb475550); clock_library::card::tests (a_periodic_card_carries_the_sinusoid_a_power_law_card_cannot) |
| Tillståndsskattning av klockan ombord | Kalmanklocka med 3 tillstånd (fas/frekvens/drift) enligt van-Loan, Joseph-stabiliserad | ReferenceImpl | kontrollerad mot en separat implementation i just den här kodbasen — oberoende av enheten som testas, men inte externt auktoritativ — filterpy 1.4.5 KalmanFilter (R. Labbe, MIT), med F via scipy.linalg.expm och Q via blockmatrisen av Van-Loan 1978 — en oberoende referensimplementation som återger kshanas hela filterbana. Konsistens mellan implementationer: klockfysiken / Allan-kalibreringen är inte externt validerade, så den här förblir MODELLED. Extern jämförelse 0,30, ett fynd (förblir MODELLED): på IGS slutliga klockor på 30 s för 11 GPS Block IIF-satelliter (2025-08-17 till 30), med Q anpassad till ADEV för första halvan och filtret poängsatt på den undanhållna andra halvan, är filtret konsistent ett steg framåt (0,906 till 0,971 av epokerna inom sitt 95 %-band, tröskel 90 %) men övermodigt vid en timme på 9 av 11 klockor (0,486 till 0,829) och dess innovationssummor faller utanför [2,4, 3,6] på 5. Det anpassade vita fasbruset är noll på varje satellit, och felet på timskala (periodiska termer, flicker-FM) finns inte i modellen med 3 tillstånd. 0,30 omgång 2, ett utökat filter (flicker-FM och tillstånd en och två gånger per varv) på nya undanhållna IGS-klockor från 2025-09-01 till 14 (förhandsregistrerad 4b1a841e), ett fynd (förblir MODELLED): kriterierna för konsistens ett steg och en timme håller på alla 11 satelliter (0,948 till 0,988 och 0,907 till 0,996), men kriteriet för innovationssumman underkänns på G24 (0,964) och G30 (1,929) mot [2,4, 3,6]. D9 omgång 3, det utökade filtret från omgång 2, avstämning och kriterier oförändrade efter den frysta detektorn för konditionering i clock_library, på nya IGS-klockor från 2026-04-01 till 14 (förhandsregistrerad fb475550), ett fynd (förblir MODELLED): (a) ett steg 0,941 till 0,968 och (c) medel för trippel-NIS 2,641 till 3,549 håller på alla 11 satelliter; (b) en timme underkänns på G09 (0,894) och G26 (0,876) mot 0,90 | clock_state | clock_state::tests (analytisk van-Loan Q; NEES; PSD-positivitet); tests/clock_state_reference.rs (full bana för predict+update — tillstånd x och kovarians P 3×3 över 1925 steg / 4 parameteruppsättningar mot filterpy 1.4.5; sämsta |relΔ| 2.8e-14); tests/clock_state_igs_holdout_oracle.rs::three_state_filter_on_held_out_igs_clocks_finding (fäster fyndet); 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 omgång 3) |
| Felbudget för tidsöverföring | Tvåvägs/TWSTFT (Sagnac), GNSS common-view, PPP; länkjitter till avstånd | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Sagnac-storleken kontrollerad mot ett auktoritativt PUBLICERAT VÄRDE — N. Ashby, 'Relativity in the GPS', Living Reviews in Relativity 6:1 (2003), ekv. 1,29: ett österut gående varv runt ekvatorn ger 207,4 ns (2ωA_E/c²); kshana återger 207,386 ns. Oberoende styrkt av RTKLIB 2.4.3 geodist() (Takasu, BSD-2-Clause), som bär samma geometri 2Aω/c². Den sammansatta budgeten för BIPM TWSTFT-transponder/common-view/PPP har ingen extern oberoende referens, så förmågan förblir modellerad | timetransfer, timetransfer_adv | timetransfer::tests (ömsesidig utsläckning; Sagnac-identitet i två former); tests/time_transfer_error_budgeting_reference.rs (Sagnac för ett varv runt ekvatorn = 207,386 ns mot det publicerade Ashby 207,4 ns till <0,05 ns; plus geometrin för Sagnac/geodist korskontrollerad mot RTKLIB 2.4.3 geodist() kompilerad från C-källkod) |
| Navigationssignalers modulering och kodföljningsanalys | BPSK-R/BOC PSD, spektral separation κ, Gabor-bandbredd, DLL-jitter, flervägsutbredning | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Kors-/autokorrelation för GPS C/A Gold stämde EXAKT (heltal ±65/−1/63) mot oberoende kodgenerering enligt IS-GPS-200; PSD-form för BPSK-R(1)/BOC(1 1) mot ett oberoende periodogram i scipy. De slutna formerna för modulation/SSC/DLL (Betz 2001 / Kaplan & Hegarty) förblir analytiska, så raden förblir MODELLED — men delpåståendet om kodkorrelation är externt matchat. 0,30 omgång 2, mot de tryckta värdena hos Betz 2001 och Hein m.fl. 2006 (förhandsregistrerad 9f4f2ce8, en halv tryckt enhet), ett fynd (förblir MODELLED): alla 45 spektralcellerna i tabell 1, korrelationsvärdena vid 1 GHz, MBOC-störningssiffrorna och 2 av 3 förskjutningar i fig. 17 stämmer; de första sidolobsmaxima vid 24 MHz, förskjutningen för BOC(8 4) i fig. 17 och varje värsta fall av flervägsbias i fig. 18-21 (11 till 15 % för lågt) stämmer inte. Kshana och en oberoende NumPy-utvärdering av läsningen som fastställdes i förväg stämmer överens, så skillnaden ligger i den läsningen eller i en ospecificerad detalj i artikeln; orsaken är olöst | navsignal | navsignal::tests (BPSK självSSC = 2/3R_c; PSD med enhetsarea; DLL); tests/nav_signal_modulation_code_tracking_reference.rs (GPS C/A Gold kors-/autokorrelation exakt heltalsmatchning mot oberoende kodgenerering enligt IS-GPS-200; PSD för BPSK-R(1)/sin-BOC(1 1) mot ett oberoende periodogram i 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, fastnålad) |
| Prestanda för kvantinertialsensor | Accelerometer med kallatominterferometer från första principer (k_eff·T², QPN) | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts ihop av modellerade delar, så förmågan förblir modellerad — Publicerade numeriska vektorer ur primärartiklar om CAI (Cheinet 2008 överföringsfunktion; Peters/Freier-känslighet): k_eff·T² stämde exakt, ASD för skottbrus ett ensidigt golv inom ~2× av varje publicerat instrument (verkliga enheter bär tekniskt brus över kvantgolvet). En inramning, inte likhet. 0,30 omgång 2 (förhandsregistrerad fcb9ac64), ett fynd (förblir MODELLED): rotationsbruset med enbart QPN mot de uppmätta punkterna i Gauguet m.fl. 2009 fig. 14 ger kvoter 0,695 till 0,788 vid de tre godtagna punkterna (0,751 vid arbetspunkten), och missar tröskeln på 30 % som fastställdes i förväg med 0,5 punkter; QPN-golvet ligger 21 till 31 % under det uppmätta bruset, som väntat för en modell utan laser- och detektionsbrus. Gradiometersammansättningen stämmer med QPN-modellinjen hos Janvier m.fl. 2022 (kvot 1,013 till 1,017, Reference). Det uppmätta testet kan inte skilja ett sammansättningsfel på sqrt(2); bara Janvier-linjen med olika kontrast kan det | inertial::quantum_imu | quantum_imu::tests (k_eff; Mach-Zehnder T²; Freier-2016 floor bracket); tests/quantum_inertial_sensor_reference.rs (transfer function |H(ω)|, k_eff·T² and shot-noise ASD vs published Cheinet 2008 / Peters / Freier numeric vectors); tests/quantum_inertial_measured_qpn.rs (gauguet_finding_qpn_floor_sits_below_the_measured_noise, pinned; gradiometer_qpn_line_matches_janvier_model) |
| Fringe-tvetydighet / dynamiskt område för kvantinertialsensor | Dynamiskt område för fringe-tvetydighet i Mach–Zehnder: den 2π-periodiska fringe-avläsningen sätter en största entydiga specifika kraft a_max=π/(k_eff·T²), och det entydiga området i upplösningsceller a_max/σ_a=π/σ_Φ är oberoende av den optiska skalfaktorn — förstärkningen i känslighet med T² kostar entydigt område i exakt samma takt (avfrågningstiden växlar upplösning mot område, och antalet celler fastläggs av avläsningens fasbrus) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Självkonsistens hos interferometerns fransmodell: halvfransgränsen, den 2π-periodiska aliasstrukturen och skalfaktorns bortfall i kvoten mellan område och upplösning är slutna algebraiska identiteter som kontrolleras mot motorns egna Mach–Zehnder-fas- och känslighetsfunktioner — interna konsistenskontroller, INTE en extern datamängd, så raden förblir InternalConsistency. MODELLED idealisk tre-puls-fransosäkerhet; inga gränser för vågfrontsaberration eller kontrastförlust för det entydiga området | inertial::quantum_imu | quantum_imu::tests (a_max ligger vid halvfransgränsen ±π med områdesskalningen 1/T²; återvunnen lindad fas är exakt inom [−a_max,a_max] och aliasar med exakt 2·a_max utanför det; det entydiga dynamiska området a_max/σ_a=π/σ_Φ är identiskt för två mycket olika skalfaktorer för våglängd/T; CaiAccelerometer-metoderna stämmer med de fria funktionerna) |
| Motståndskraft för kvantinertial dödräkning | Sammansatt positionsbudget för bias + skalfaktor + VRW + stabilitetsavtagande under holdover | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Oberoende numpy-Monte Carlo-SDE-integration av dubbelintegrerat vitt accelerationsbrus (validerar den analytiska VRW-variansen med en verkligt oberoende algoritm) + ett publicerat värde som ankare från Groves 2013 för bias- och skalfaktortermerna; CAI-enhetens siffror kvantifierar partnerhårdvara och förblir MODELLED | inertial::quantum_imu (QuantumNavBudget) | budget_tests (bias vs AccelModel integrator; VRW vs analytic integral); tests/quantum_inertial_dead_reckoning_reference.rs (VRW vs an independent numpy Monte-Carlo double-integration of white-acceleration noise, worst dev 0,42% within ±3% over 6 coast times; bias/scale-factor vs a Groves 2013 closed-form value; holdover round-trips) |
| Motståndskraft mot jamming utan GNSS | Geometrisk J/S-länkbudget, C/N₀ med jamming-skydd, signalförlust per satellit | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Länkbudgetekvationen för C/N₀ vid anti-jam korskontrollerad mot en oberoende numpy-omräkning (delar samma slutna form → InternalConsistency) samt en karakterisering av verklig C/N₀-försämring i JammerTest-2024. 0,30 omgång 2, blockerad (förblir MODELLED): den uppmätta C/N0-minskningen i JammerTest 2024 mot en länkbudgetprediktion (förhandsregistrerad 6a66994b, inom 3 dB) kördes inte eftersom F8.1-antennens position och riktning vid Bleik och L1-andelen av den flerbandiga rampeffekten 1.6.4 inte är dokumenterade i testkatalogen eller i den officiella loggen | jamming | jamming::tests (broadband_q_equals_the_spectral_separation_closed_form and cw_q_equals_the_spectral_separation_closed_form: the Q table, CW and narrowband 1, broadband and swept 2, pinned to the navsignal closed forms; a_cw_jammer_is_more_damaging_than_broadband_noise_at_equal_js); tests/gnss_denied_jamming_resilience_reference.rs (FSPL/J-S/effective-C-N₀ vs an independent numpy re-derivation of the Kaplan & Hegarty §9,4 link budget; real JammerTest C/N₀ falls monotonically through the 25 dB-Hz threshold); tests/jamming_jammertest_cn0_oracle.rs (pre-registered, blocked, not run) |
| Detektering av spoofing | Klockstödd χ², RAIM, AGC, SQM sammanvägda till ett säkerhetskvalitetsmått per epok | ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — TEXBAT-scenarioparametrar (Humphreys 2012) — karakterisering, inte fastlåsta vektorer. 0,30 extern jämförelse, ett fynd (förblir MODELLED): på JammerTest 2024 (Bleik; GPL-3.0-data) gav monitorerna på observationsnivå (klockstödd chi-två, RAIM, lösningsfel) inget larm inom 10 s från något av de 8 utvärderingsbara publicerade spoofing-startögonblicken (där fönstret före starten var rent kom det första larmet 10,2 till 39 s efter den publicerade luckans början), och tre fönster före start innehöll falsklarm från klockmonitorn (81, 64 och 173 epoker). Den första observerbara effekten var en förlust av tvåfrekvent GPS-spårning, inte en RAIM-inkonsistens. De publicerade startögonblicken är starttider för schemalagda luckor med minutupplösning; att de föregår RF-inspelningen är en tolkning, inte en mätning. 0,30 omgång 2, mot arrangörernas officiella JammerTest 2024-logg (sekundupplösning; förhandsregistrerad 6a66994b med en Hadamard-kalibrerad treståndsklockmonitor utan låsning), ett fynd (förblir MODELLED): monitorn larmar inom 10 s vid 4 av 10 loggade startögonblick; vid de övriga sex är den 18 till 211 s sen eller ger klockfalsklarm före start (1 vid 2.1.4, 85 vid 2.3.15). D9 omgång 3 (ett mottagarkort från JammerTest-enhetens övriga sessioner, förhandsregistrerad 2ec76864) blockerad: 167 träningsepoker mot 3600. D9 omgångarna 4 och 4b (brusnivåer från ett u-blox ZED-F9P-kort av modellklass, Wroclaw 2021, förhandsregistrerade fb475550; 4b en redovisad omkörning med korrigerad extraktion, c9cc0d49), ett fynd (förblir MODELLED): inga falsklarm före start vid alla 10 loggade startögonblick och 6 av 10 inom 10 s; 2.1.1, 2.3.5, 2.3.10 och 2.6.1 förblir sena (+211, +23, +18, +51 s), oförändrade av klockbrusnivån | spoof, spoof_detect, spoof_monitors | tests/spoof_texbat_validation.rs (TEXBAT parameter characterisation); tests/spoof_detection_jammertest_oracle.rs::monitors_against_the_published_onsets_reproduce_the_recorded_disagreement (pins the finding); 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) |
| Skyddsnivå för tidssynkronisering (Timing Protection Level) vid spoofing | Gräns i sluten form för värsta fallets oupptäckta tidsfel = övervakarens golv + oscillatorns utrullnings-σ över CUSUM-detekteringsfördröjningen, redovisad som ett band för det röda brusgolvet | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Sätter samman validerade primitiver (allan/holdover van-Loan, säkerhetsgolv); kalibrerad på JammerTest 2024 scenario 2.1.1 (~1,01 ms verklig dragning av levererad tid mot ≤51 ns angivet). Brygga över validerade delar — i sig inte en extern validering. 0,30 extern jämförelse, ett fynd (förblir MODELLED): i JammerTest 2024-scenarierna med spoofing överskrider det uppmätta oupptäckta felet i levererad tid den nominella TPL vid 3 av 8 upptäckta startögonblick: 184,3 mot 34,6 ns (2.1.4), 295,7 mot 159,3 ns (2.3.5) och 143,0 mot 69,0 ns (2.3.11); tre av de fem som ligger inom är triviala (ett låst falsklarm före start). Trolig orsak: glidflygstermen från en kalibrering på 60 s med noll driftbrus täcker inte mottagarens TCXO:s frekvensvandring över 15 till 39 s. Det uppmätta felet är Kshanas egen enpunktsskattning av klockan mot en linje anpassad till dess egna skattningar före start, så även överensstämmelse hade inte varit helt oberoende. 0,30 omgång 2, mot den officiella JammerTest 2024-loggens startögonblick och det uppmätta tidsfelet i mottagaren (förhandsregistrerad 6a66994b), ett fynd (förblir MODELLED): vid 4 av 10 loggade startögonblick överskrider det oupptäckta felet TPL för driftläget (634,7 mot 458,5 ns vid 2.1.1, 232,6 mot 16,2 ns vid 2.3.5, 41,3 mot 6,0 ns vid 2.3.10, 218,6 mot 47,4 ns vid 2.6.3) | tpl | tpl::tests (closed-form oracles + CUSUM); examples/tpl_jammertest.rs (JammerTest 2024 real-spoof calibration); tests/tpl_jammertest_coverage_oracle.rs::tpl_against_measured_time_error_reproduces_the_recorded_disagreement (pins the finding); tests/tpl_jammertest_log_oracle.rs::drift_state_tpl_against_the_logged_onsets_reproduces_the_recorded_disagreement |
| Alternativ / kompletterande PNT | Matchning mot gravitationskartor, terrängreferens (TERCOM/SITAN), magnetisk anomali | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — IGRF-14-koefficienter; matchat filter-CRLB från första principer. Fältet i riktig-fält-gravitationsbenchmarken är externt kontrollerat (raden 'Gravity-anomaly synthesis from a spherical-harmonic model'), men dess navigeringsutfall saknar extern oberoende referens | altpnt, mapmatch, gravimeter, igrf | tests/alternative_complementary_pnt_reference.rs (map-matching CRLB; IGRF-14 field); mapmatch::tests; gravimeter::tests; igrf::tests; tests/gravity_map_real_field.rs (the 60-min GPS-denied benchmark on the real EGM2008 degree-70 field, pre-registered in xval/icgem-egm2008/: matched 3106 m, so the < 500 m bar is NOT MET and asserted as missed, and the tenfold cut on the 70,6 km drift is MET; plus the seeded map-error Monte Carlo); altpnt::terrain::tests::emag2_format_grid_reproduces_the_synthetic_magnetic_channel and tests/emag2_real_grid.rs (data-gated EMAG2v3 reader on a real crop; no navigation outcome claimed on it); tests/terrain_slam_rbpf.rs (joint map estimation, a FastSLAM-style RBPF, against known-map SITAN on a 15 m correlated map error over 20 seeds, pre-registered in xval/terrain-slam-rbpf/: 1,5% mean gain and better in 10 of 20, so the 10% and 12-of-20 bars are NOT MET and asserted as missed; no harm on a perfect map, MET) |
| Reproducerbarhet och programvaruförsäkran | Deterministiska grindar med scenariohash, SBOM och golden-filer över plattformar | ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — SBOM kontrollerad mot det officiella CycloneDX 1,5 JSON Schema (+ giltiga SPDX-identifierare) — en extern publicerad standard, noll valideringsfel över hela beroendegrafen; delen om FoM-determinism och byte-reproducerbarhet förblir en fastlåst självkonsistenskontroll, så raden förblir MODELLED | report, scenario; CI (golden/determinism/SBOM) | tests/golden.rs, tests/determinism.rs, tests/cross_platform_golden.rs; tests/reproducibility_software_assurance_reference.rs (the generated SBOM validates with zero errors against the official CycloneDX 1,5 JSON Schema over the full 66-component shipped graph: default + python + wasm features, dev-dependencies excluded) |
| Utvärdering av maskininlärningsbaserad detektering av RF-försämringar (13494) | Märkt syntetiskt störningskorpus + detektoroberoende sele för ROC/AUC/förväxlingsmatris/Pfa-Pmd; läckageskydd, stratifierad uppdelning, rapport om optimism vid fördelningsskifte (inom mot utanför regimen). Kan köras från CLI/bindningarna som scenariotypen impairment-eval (scenarios/impairment-eval.toml) |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Slutna AUC-gränser (Mann–Whitney) + en detektor med perfekt oberoende referens; korpusen är SYNTHETIC (parametergrundad, inte fält/IQ) | impairment_eval | impairment_eval::tests (AUC perfect=1/identical=0.5/tie=0,125, ROC monotone, fused>0,8, per-class layer separation, leakage guard, reproducible corpus, distribution-shift flags optimism); dominance_demonstrators (reachable + reproducible + MODELLED-not-VALIDATED + optimism-gap self-consistent) |
| Studie av optimismgapet vid maskininlärningsbaserad detektering av RF-försämringar och en gapprediktor enbart på ID | Kontrollerad syntetisk studie av optimismgapet i AUC mellan inom och utanför fördelningen över detektorer med publicerade metoder och inlärda detektorer (logistisk regression / MLP med ett dolt lager): trender enligt skalningslag per klass (Spearman ρ + lutning på 1−svårighetsgrad) och en ridge-prediktor enbart med ID som skattar gapet endast utifrån diagnostik inom fördelningen, poängsatt med lämna-en-detektor-utanför och lämna-en-klass-utanför. Reproducerbart via cargo run --release --example optimism_study |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Handhärledd statistik mot slutna former (binormal AUC Φ(d'/√2), DeLong-varians, Spearman med rangtal vid lika, exakt OLS-återvinning) + leave-one-out-korsvalidering mot baslinjen predict-the-mean. Korpusen är SYNTHETIC (parametergrundad, aldrig fält/IQ) och optimismgapet är ett syntetiskt→syntetiskt svårighetsskifte, INTE ett resultat från simulering till fält | impairment_study, impairment_ml, eval_stats | impairment_study::tests (per-class oracle AUC≈1, learned optimism gap>0, grid shape + bootstrap CI brackets the mean + positive scaling trend, ID features finite, gap predictor beats predict-the-mean under BOTH leave-one-detector-out and leave-one-class-out CV + deterministic); impairment_ml::tests (logreg separates + deterministic + loss↓, MLP solves XOR a linear model cannot + seeded); eval_stats::tests (bootstrap/DeLong/Spearman/ridge vs closed forms) |
| Kvant mot klassisk PNT-avvägning och motståndskraft utan GNSS (13503) | Inläsning av uppmätt ADEV (NNLS), avvägningstabell (holdover för tid/inertial + nytta), kuvert för motståndskraft mot tid; golvförbehållet följer med i artefakten. Kan köras från CLI/bindningarna som scenariotypen quantum-trade (scenarios/quantum-trade.toml) |
ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — Kärnan för anpassningen från uppmätt ADEV till PSD (NNLS) stämmer med scipy.optimize.nnls (tests/scipy_reference.rs / tests/quantum_vs_classical_pnt_trade_reference.rs) — en oberoende extern kärna; men avvägningens SIFFROR kvantifierar (validerar aldrig) en partnerklocka/CAI, så själva avvägningen förblir MODELLED, utan validerings-gloria | quantum_trade | quantum_trade::tests (ADEV round-trip recovery, NNLS non-negativity, floor-caveat present/absent, benefit>1, monotone envelope + alt-PNT bound); dominance_demonstrators (measured-ADEV is data-driven not floor-assumed, assumed-class flags floor + caveat, malformed curve rejected, MODELLED-not-VALIDATED) |
| Rymdväder och aktivitetsdriven termosfärisk densitet | Sol- och geomagnetiska index (definitionstabell Kp↔ap), exosfärstemperaturen enligt Jacchia-1971 och den termosfäriska densiteten enligt Jacchia 1971 (SAO Special Report 332: statiska diffusionsprofiler som återskapar dess tabell 7, med dygnsvariation samt geomagnetiska, halvårs-, säsongs-latitud- och heliumvariationer) mot den statiska atmosfären USSA76. Kan köras från CLI/bindningarna som scenariotypen space-weather (scenarios/space-weather.toml) |
ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — Definitionell Kp↔ap-tabell + sluten form för exosfärstemperatur enligt Jacchia-1971 (stämmer inom <1 K mot de publicerade ankarvärdena, tests/space_weather_reference.rs); densiteten karakteriseras mot pymsis NRLMSISE-00 (en oberoende NRL-modell): solcykelsvängningen vid 800 km är 10.4x mot 13.6x i NRLMSISE-00. 0,30 revidering: den kalibrerade aktivitetsfaktorn av första ordningen ersattes av Jacchia 1971 (standardscenariots densitet vid 400 km 4.176e-12 -> 6.929e-12 kg/m3; reference_exospheric_temperature_k borttagen, mean_exospheric_temperature_k tillagd). 0,30 omgång 2, uppmätta TOLEOS CHAMP/GRACE/GRACE-FO-accelerometerdensiteter (ESA Swarm DISC; förhandsregistrerad 20eed695), ett fynd (förblir MODELLED): banmedelvärden vid 400 till 500 km ligger inom en faktor 2 vid solmaximum utanför stormar (CHAMP 2001 521/521, GRACE-A 2002 120/120, GRACE-FO 2024 526/547), men Jacchia 1971 är ungefär 1.7x för tät under solminimet 2008 (GRACE-A 412/544 inom en faktor 2), så densiteten är inte validerad | space_weather | space_weather::tests (Kp↔ap exact at grid points + round-trip + monotone, daily-Ap mean, exospheric-T vs published solar-min/mean/max + storm increment anchors, density unity-at-reference, solar-cycle swing in the observed 5–10× band, scenario reproducible + MODELLED-not-VALIDATED + out-of-range rejection); dominance_demonstrators (reachable + reproducible + physical T + MODELLED-not-VALIDATED); tests/space_weather_density_accelerometer_oracle.rs::jacchia71_finding_is_pinned |
| Uppskjutningsfönster och uppstigningsgeometri (missionsanalys) | Tvåkropps-uppskjutningsazimut (sin Az = cos i / cos lat), lägsta nåbara inklination, cirkulär hastighet, jordrotationens bonus österut, Δv för plansbyte med dogleg och dagliga tillfällen, och, givet en epok och rader från IERS finals2000A, platshastigheten kring den sanna polen (launch::site_rotation_speed_at). Kan köras från CLI/bindningarna som scenariotypen launch-window (scenarios/launch-window.toml) |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Sluten sfärisk-trigonometrisk uppskjutningsgeometri mot publicerade ankarvärden från genomgångna exempel (Vallado, Fundamentals of Astrodynamics 4th ed., Algorithm 37 launch-azimuth + Ch.6 plane-change; tests/launch_window_ascent_geometry_reference.rs). Dessa återanvänder samma slutna form som kshana implementerar (en paritets- eller avskrivningskontroll mot publicerade värden, InternalConsistency); MODELLED tvåkroppsmodell, ingen hastighetstriangelmodell för roterande jord, ingen uppstignings- eller dragförlustmodell. 0,30 extern jämförelse mot Orekit 12,2 (Apache-2.0), ett fynd (förblir MODELLED): geometrin stämmer inom avrundning (lutningen avläst från burnout-azimuten över 158 fall, sämst 2.6e-15 rad; minimilutning, cirkulär hastighet och dogleg-delta-v till 3e-16), men platshastigheten från jordrotationen missar den förhandsregistrerade 1e-6 relativt vid 62,9 graders latitud (1.12e-6). Gapet växer som tan(lat), i linje med en polrörelseförskjutning av polen på omkring 5.8e-7 rad i Orekits jordsystem som den sfäriska ω·R·cos(lat) utelämnar. Påståendet avgränsades inte före körningen, så raden kan inte uppgraderas på grundval av den här jämförelsen. 0,30 omgång 2 (förhandsregistrerad 71bebf63): med en epok och IERS-rader stämmer platshastigheten för den sanna polen (scenariofältet site_rotation_speed_true_pole_m_s) med Orekit inom 1e-6 vid 24 platser över fyra longituder (sämst 4.9e-8), men den nominella hastigheten utan epok som scenariot som standard ger som jordrotationsbonus missar fortfarande med 1.12e-6, så raden förblir MODELLED i väntan på ett beslut om standardutdata | launch | launch::tests (due-east launch reaches i=latitude, KSC→ISS = textbook 45°, polar = N/S, i<lat unreachable, 465 m/s equatorial bonus, plane-change 10° ≈ 1,34 km/s + 180° = 2v, daily-opportunity counts, scenario reproducible/MODELLED + dogleg path); dominance_demonstrators (reachable + reproducible + 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 |
| Ballistisk återinträdeskorridor (Allen–Eggers) | Maximal retardation (oberoende av ballistisk koefficient), hastighet och höjd vid maximal g-kraft samt hastighet vid maximal uppvärmning för ett ballistiskt inträde i en exponentiell atmosfär. Kan köras från CLI/bindningarna som scenariotypen reentry (scenarios/reentry.toml) |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Sluten analytisk Allen–Eggers-ingång, dessutom korskontrollerad mot en numerisk integration med scipy 1,18 solve_ivp (DOP853) av SAMMA ODE för ingång med enbart drag (tests/ballistic_re_entry_corridor_reference.rs, 36 fall, sämst a_max rel 2.9e-9) — en kontroll av numerisk integral mot den egna analytiska formen, alltså fortfarande InternalConsistency, INTE en extern validering. MODELLED ballistisk (ingen lyftkraft), ingen aerotermisk modell eller TPS — värmeutdata är en hastighet, inte ett värmeflöde. 0,30 extern jämförelse, ett fynd (förblir MODELLED): mot rekonstruktionen av Stardust SRC:s ingång (Desai och Qualls, NASA NTRS 20080008567) är Allen–Eggers maximala retardation för det angivna tröghetsingångstillståndet (12,9 km/s, -8.2 deg, H 7200 m) 61,8 g mot den bästa skattade banans 32,89 g, +88 % mot en tolerans på 15 %: lösningen med konstant banvinkel och utan gravitation fördubblar ungefär toppen för en flack ingång som är snabbare än flykthastigheten. Stardust bar ingen accelerometer, så rekonstruktionen är en banskattning. 0,30 omgång 2, blockerad (förblir MODELLED): en integrerad plan punktmassalösning (reentry::simulate_planar_entry, US76, inverskvadratgravitation, krökning) stämmer med de bäst skattade banorna för Stardust och Genesis inom 15 % (+11,3 %, +5,6 %), men dessa maxvärden är utdata från myndighetssimuleringar, inte mätningar, så detta är enbart en korskontroll. Accelerometerjämförelsen (förhandsregistrerad a94a283d) är blockerad i väntan på en läsbar kopia av Hayabusa2 REMM-analysen (doi 10.57350/jesa.16) | reentry | reentry::tests (peak-g independent of ballistic coefficient + physical g-band, grows with steeper γ / faster entry, peak-g velocity = V_e·e^(−1/2) and peak-heating = V_e·e^(−1/6) faster, peak-g altitude physical + deeper for higher B, scenario reproducible/MODELLED + degenerate-geometry rejected); dominance_demonstrators (reachable + reproducible + V_e·e^(−1/2) fraction + 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 (cross-check only); tests/reentry_point_mass_accelerometer_oracle.rs (blocked, not run) |
| Adaptiv kodning och modulering enligt DVB-S2 längs ett LEO-nedlänkspass | Es/N0 i nedlänken längs varje pass för en satellit över en station (EIRP, fritt rumsdämpning, atmosfärsdämpning enligt cosekantlagen, övriga förluster, G/T, Boltzmanns konstant, symbolhastighet), den mest effektiva MODCOD i DVB-S2 som klarar sin kvasifelfria tröskel i ETSI EN 302 307-1 V1.4.1 tabell 13 plus en implementationsmarginal vid varje steg, passets ACM-datavolym samt baslinjen med konstant kodning som sluter vid masken och längsta avståndet. Kan köras som scenariotypen acm-link. Illustrativa indata; MODELLED. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Intern konsistens: den spektrala effektiviteten som beräknas i sluten form ur Table 5a K_bch och ramlängderna stämmer med de effektiviteter som Table 13 anger (en avskrivningskontroll av tröskeltabellen); länkbudgetens delar stämmer med sina slutna former; valet är monotont i Es/N0 och respekterar marginalen; ACM flyttar minst lika stor volym som konstant kodning. Passagegeometrin kommer från den separat VALIDATED skenbara passageprediktorn. VAD SOM INTE GÄLLER: inget externt verktyg eller uppmätt länk har jämförts; trösklarna är standardens ideala AWGN-värden, inte en modems; regnfädning, pekförlust längs passagen och piloter är inte modellerade. | 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 |
| Schemaläggning av markkontakter för flera satelliter och flera stationer med konfliktlösning | Kandidatkontakter från varje pass mellan satellit och station med dess ACM-datavolym; konflikter där en antenn skulle betjäna två satelliter inom sin omställningstid eller en satellit skulle sända ned till två stationer samtidigt; ett prioritetsviktat leveransmål begränsat av varje satellits kö; en lat plan med girig marginalnytta, en baslinje med först-till-kvarn och en exakt branch and bound på upp till 26 kandidater, med den giriga planens optimalitetsgap redovisat. Kan köras som scenariotypen contact-schedule. Illustrativa indata; MODELLED. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Intern konsistens: den exakta branch-and-bound-lösningen stämmer med uttömmande uppräkning på små slumpmässiga mängder, varje plan kontrolleras som genomförbar mot konfliktreglerna, och den giriga lösningen slår aldrig det exakta optimum. VAD SOM INTE GÄLLER: ingen extern schemaläggare eller operativ plan har jämförts; kontakter tas hela (ingen delning), eftersom eftersläpningen är fast vid fönstrets början, och svängtid utöver den fasta omställningstiden samt lagring ombord är inte modellerade. | 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 |
| Sparsam inramning av kostnad per täckning / ROI | Kostnad per procent täckning + täckning per euro som ROI över motorn för konstellationsdimensionering; kostnaden per satellit är ett låg/nominellt/högt intervall som anroparen anger källan till (inga påhittade priser) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Sluten kostnadsaritmetik mot handhärledda värden; en ekonomisk RAMNING av en modellerad täckningssiffra, inte en offert eller en validerad kostnadsmodell | frugal (over walker) | frugal::tests (hand-derived cost-per-coverage 48/96=0,5, ROI ratio 2,667, bracket-ordering + zero-coverage guards) |
| Integritetspåverkan av missad detektering (kontextmedveten HPL/VPL mot larmgräns) | Avbildar en oupptäckt spoofing- eller jamming-bias på effektivt fel → Stanford-region (tillgänglig/otillgänglig/MI/HMI) mot kontextspecifika HAL/VAL (öppen himmel mot urban) | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Sätter samman den externt validerade RAIM Stanford-klassificeringen (raim::classify_stanford); själva avbildningen från missad detektering till AL är modellerad, inte en certifierad integritetsallokering | integrity_impact (over raim) | integrity_impact::tests (same miss flips Available→MI→HMI as the context tightens; conservative-PL→Unavailable; per-axis HMI; input guards) |
| Parameterblad med citerade felmodeller för CAI (13503) | Intervall (bäst/nominellt/konservativt) för prestanda hos kallatominterferometer — biasinstabilitet, slumpvandring i hastighet/vinkel, skalfaktorstabilitet, avfrågningsbegränsad samplingstakt, dynamiskt område för fringe-tvetydighet — var och en spårbar till en referens; matar QuantumNavBudget utan att modellera hårdvara | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Intern konsistens: det angivna VRW-intervallet korskontrollerat mot fysiken i CaiAccelerometer::accel_asd samt ett rått dynamiskt område beräknat ur fransosäkerhetsgränsen; siffrorna är MODELLED litteraturöversiktsintervall (needs_source_confirmation), ingen enhet är validerad, ingen validerings-gloria | inertial::cai_params (over inertial::quantum_imu) | inertial::cai_params::tests (physics VRW lands inside the cited VRW bracket at all 3 levels; raw fringe-ambiguity range computed from k_eff·T²; conservative budget drifts more than best; every bracket sourced + confirmation-flagged; bracket-ordering guards) |
| Benchmark för tidsintegritet — epokklassificerare med Stanford-integritetsdiagram | Epokklassificering med TIB Stanford-integritetsdiagram (nominell / otillgänglig / MI / HMI) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Oberoende omimplementation i numpy av fyraregionsregeln (scripts/gen_tib_scorer_reference.py) på samma urval; metoden Cited från Stanford–ESA-integritetsdiagrammet (Tossaint et al., ION GNSS 2007) och RTCA DO-229 WAAS MOPS. INTE en ExternalDataset-noggrannhetsreferens — benchmarken är immun mot ärlighet. | src/benchmark/stanford.rs | src/benchmark/stanford.rs::tests (four regions + inclusive boundaries + |error| + PL>AL unavailability); tests/tib_scorer_reference.rs (classification counts vs independent numpy on a fixed synthetic set) |
| Benchmark för tidsintegritet — poängsättare för integritetstäckning | Poängsättning av TIB-integritetstäckning (andel HMI/MI/tillgänglighet + utlåtande om överskridande täckning) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Oberoende omräkning av regionerna i numpy i tests/fixtures/tib/reference.json; enbart korskontroll av bedömningsmaskineriet, inget noggrannhetspåstående. | src/benchmark/coverage.rs | src/benchmark/coverage.rs::tests (clean/under-bounded/all-unavailable/empty); tests/tib_scorer_reference.rs (counts + rates + coverage_ok vs numpy to 1e-12) |
| Benchmark för tidsintegritet — felkatalog (parametriska generatorer) | TIB-felmeny (domändivergens, klockslam, holdover-utrullning, statisk/inkrementell/symmetrisk/asymmetrisk fördröjning, replay inom färskhet, vägselektiv, k-av-N-kvorum) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Representativa parametriska felgeneratorer (Modelled); den icke detekterbara mängden (symmetrisk fördröjning, uppspelning inom färskhetsfönstret) är Cited från Mizrahi RFC 7384 och Narula & Humphreys (IEEE JSTSP 2018). Ingen extern oberoende referens — en felkatalog gör inget uppmätt påstående. | src/benchmark/faults.rs | src/benchmark/faults.rs::tests (offset profiles, monotone coast, undetectable-set flagging, max_offset consistency, exactly two undetectable classes) |
| Benchmark för tidsintegritet — utlåtande om absorption av icke detekterbara fel | TIB-utlåtande om absorption av icke detekterbara fel (symmetriska/replay måste absorberas av PL, aldrig rapporteras som detekterade) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Egenskapskontroll av att uppräkningen Verdict strukturellt inte kan rapportera ett icke detekterbart fel som detekterat (Mizrahi RFC 7384); absorbed ⟺ PL ≥ offset. Ingen noggrannhetsreferens. | src/benchmark/scorecard.rs | src/benchmark/scorecard.rs::tests (referens-PL absorberar; trasig PL oabsorberad-aldrig-detekterad; verdikt för detekterbar täckning; den ärlighetsegenskap att inget täcknings- eller detekteringsverdikt kan nås för ett icke detekterbart scenario) |
| Självbeskrivning i rapporten för hybrid optisk/RF | Rapporten hybrid-optical-rf anger den länkkonfiguration den faktiskt kördes med (bärvågens våglängd, sändar- och mottagarapertur, avstånd, pulsbredd, integrationstid, verkningsgrader och förluster, standardvärden uppslagna) och bär ett enhetsblock som anger enhet och proveniensklass för varje storhet som en artikel sannolikt citerar, inklusive spåren av överlämningskovariansen i kvadratmeter | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Ingen extern oberoende referens, och ingen är möjlig: det här är självbeskrivning, inte en mätning. Den registreras eftersom avsaknaden av den var en brist -- P5 tvingades hämta bärvågens våglängd och sändaröppningen från källkodens standardvärden, och sluta sig till att en naken variance var i kvadratmeter utifrån en intern konsistenskontroll. Slutsatsen var riktig, vilket är precis varför det spelade roll: ingenting hade fångat att den var fel |
hybrid_integrity | hybrid_integrity::tests (den lösta konfigurationen ekas för standardvärden och för åsidosättanden, utan att våglängden rundas via meter; varje units-post bär både en enhet och en proveniensklass; varje fält som units-blocket nämner skickas faktiskt ut, så det kan inte dokumentera ett spökfält) |
| Tillgänglighet för hybridlänk optisk/RF på RF-sidan | Rapporten hybrid-optical-rf anger en RF-länktillgänglighet, sammansatt av storheter som motorn redan beräknar snarare än av en importerad klimatologi, och anger sammansättningen som en namngiven regel: A_rf = I_closure * I_track, där I_closure är utlåtandet om sluten länk för den enkelriktade länkbudgeten enligt CCSDS-401 / DSN-810-005 (linkbudget::link_budget, Eb/N0-marginal >= 0) vid scenariots eget avstånd och I_track är utlåtandet för följningsloopen (jamming::lock_status) på det C/N0 som SAMMA budget gav. Varje faktor för sin indatas proveniensklass vidare till utdata, och de faktorer som avsiktligt INTE ingår i produkten -- geometrisk synlighet, störningsblockering och en klimatologi för RF-avbrott -- namnges med skälet i stället för att tyst sättas till 1. Det uppslagna RF-ledet återges som ett eget block rf_link_configuration, och de kontinuerliga talen bredvid indikatorn (länkmarginal, C/N0-marginal, de slutna formerna för sluten länk och följningsavstånd samt avståndsutnyttjandet) är avståndsinversioner av samma budget. Rapporten anger fullt ut, på blocket och i den enhetspost som en läsare hamnar på, att detta tal är MARGINAL-/GEOMETRIBEGRÄNSAT och DETERMINISTISKT medan optisk tillgänglighet är VÄDER-/KLIMATOLOGIBEGRÄNSAD och probabilistisk, så att de två aldrig kan citeras som ett jämförbart par av procenttal | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Ingen extern oberoende referens, och ExternalDataset avstås från. De två indata är en Eb/N0-marginal och en C/N0-tröskelpassage, båda funktioner av en MODELLED EIRP, ett kvalitetstal och en samlad förlustallokering; det finns ingen uppmätt tillgänglighetsjournal för en optisk/RF-hybridtjänst mellan jorden och månen att kontrollera den sammansatta siffran mot. De kontroller som finns är interna och anges som sådana: sammansättningen räknas om utifrån rapportens egna publicerade marginaler i stället för från sändarens interna värden, och slutningsavståndet verifieras genom att länkekvationen körs om VID det och marginalen måste försvinna -- en inversionsrundtur, inte en oberoende implementation. Siffrans ärliga begränsning anges på själva rapporten: den är en deterministisk 0/1-indikator, inte en sannolikhet, eftersom ingenting i den här motorn mäter en fördelning av RF-länkavbrott vid detta band och denna geometri. Den saknade indatan namnges i rf_availability.factors_not_included i stället för att hittas på, och att tillhandahålla den är vad en probabilistisk RF-tillgänglighet skulle behöva | hybrid_integrity, linkbudget, jamming | hybrid_integrity::tests (tillgängligheten är lika med produkten av de två indikatorerna omräknade från rapportens egna marginaler, och dessa marginaler sätts i sin tur ihop på nytt från rapportens egna EIRP, fritt-rum-förlust, samlade förlust, kvalitetstal, Boltzmann-term, datahastighet och krav till 1e-9 dB; värdet mäts vara 0 eller 1 medan den optiska tillgängligheten i samma körning mäts ligga strikt mellan dem; varje faktorrad bär en proveniensklass från det slutna vokabuläret i field_schema; det rapporterade slutningsavståndet som körs om genom länkbudgeten ger en marginal på 0 till 1e-9 dB och mäts vara oberoende av det avstånd körningen låg på över fyra dekader, medan avståndsutnyttjandet flyttas med exakt avståndskvoten; en -40 dBW-länk rapporterar tillgängligheten 0, LOST, och ett utnyttjande över 1 i stället för en bråkdel; den ersatta anteckningen 'no RF-availability counterpart is computed by this engine' är försäkrad borta och ersättaren är försäkrad nämna det nya fältet; en felaktig RF-indata avvisas i stället för att klampas) |
| Jämförelse mellan optisk och RF-avståndsmätning på lika villkor | Rapporten hybrid-optical-rf ger kvoten mellan optisk och RF-avståndsmätning med den ENA konfiguration som båda leden utvärderades vid i samma objekt: samma enkelriktade väg, samma avstånd och samma ackumuleringstid. Det optiska ledet är motorns fotonbegränsade ToA-CRLB på det enkelriktade fotonantalet; RF-ledet är motorns termiska kodföljningsjitter för DLL med tidig-sen-korrelator vid det C/N0 som motorns egen länkbudget ger för samma enkelriktade avstånd. Loopens brusbandbredd är härledd, inte vald: B_L = 1/(2*integration_s) lägger RF-ledet på exakt den optiska ackumuleringstiden, och om en anropare åsidosätter den så att de två medelvärdestiderna skiljer sig åt blir kvoten REFUSED -- null, med avvikelsen och båda tiderna namngivna -- i stället för att anges vid två arbetspunkter. Ingen kvot bildas mot scenariots VALDA parametriska rf_position_sigma_m, och avvisningen anger varför: den indatan bär ingen konfiguration alls. Den publicerade tvåvägs optiska huvudsiffran och den exakta faktorn som överbryggar den till jämförelseledet för enkelriktad väg ges bredvid kvoten, så rapporten inte kan läsas som om den bär två oense optiska sigma | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Ingen extern oberoende referens för KVOTEN, och ExternalDataset avstås från medvetet. Den underliggande RF-kedjan har en -- tests/validate_p5_rf_ranging_precision.rs kontrollerar linkbudget::link_budget och navsignal::dll_code_jitter_chips mot en oberoende Python/NumPy-fixtur och mot det hårdkodade genomgångna värdet från Kaplan & Hegarty (2.814e-3 chip / 0,825 m vid 45 dB-Hz) -- och den optiska CRLB har sin egen rad i sluten form. Att göra anspråk på något av ankarna för den här raden vore lånad validering, vilket matrisens invarianter finns till för att förhindra: storheten här är en KVOT vid en konfiguration med en MODELLED EIRP, ett kvalitetstal, en sändareffekt och en apertur, och det finns ingen uppmätt jämförelse mellan optisk och RF-avståndsmätning vid en gemensam driftpunkt att kontrollera den mot. Det som kontrolleras internt är det kvoten faktiskt kan få fel: att de två benen ligger vid en och samma driftpunkt. Det mäts genom att skala den gemensamma ackumuleringstiden och kräva att båda benen rör sig enligt samma kvadratrotslag och att kvoten ligger kvar, och det upprätthålls genom att kvoten helt enkelt avvisas när medelvärdestiderna inte stämmer. Båda benen är termiska gränser eller gränser för skottbrus och båda utesluter mediafördröjning, klockfel och osäkerhet, så uteslutningen är identisk på båda sidor; rapporten säger det i stället för att låta det härledas | hybrid_integrity, optical_linkbudget, linkbudget, navsignal | hybrid_integrity::tests (kvoten är lika med de två utsända benen dividerade, till 1e-15 relativt, och dess reciproka och decibelform stämmer; varje bens avstånds- och tidssigma förhåller sig till varandra med exakt c; den utsända gemensamma konfigurationen är försäkrad lika med scenariots eget avstånd och integrationstid och RF-benets avstånd är försäkrat lika med det optiska benets; RF-benets C/N0 är bit för bit tillgänglighetsblockets, från en länkbudget, inte en omräkning; egenskapen LIKE-FOR-LIKE MEASURED i stället för att försäkras -- en fyrdubbling av den gemensamma ackumuleringstiden halverar det optiska benet till 1e-12 och RF-benet till 1e-7 och lämnar kvoten orörd till 3.19e-9 relativt, vilket ett ben som i hemlighet medelvärdesbildar över något annat inte kunde klara; ett åsidosättande av rf_dll_bandwidth_hz som bryter den gemensamma medelvärdestiden gör kvoten null med en orsak som nämner båda tiderna, medan båda benen ändå skickas ut; en enkelvägskörning gör jämförelsebenet bit för bit lika med den släppta rubriksiffran med en straffaktor på exakt 1, och en tvåvägskörning återger straffet 0.5/sqrt(returvägens geometriska förlust) omräknat från rapportens egen geometric_loss_db till 1e-12) |
| Självbeskrivning i länkbudgetrapporten | Länkbudgetrapporten anger varje absolut konstant som dess egen marginal beräknades från -- den bärfrekvens som den fria rumsdämpningen använde, EIRP, kvalitetsmåttet, den sammanlagda förlusten och Boltzmann-termen -- plus det G/T som krävs där marginalen är noll, länkkonstanten (EIRP - förluster - krävt Eb/N0) som är den enda kombination som en publicerad tabell över hastighet och förstärkning någonsin kan fastlåsa, och, när en anropare anger en systembrustemperatur, den mottagarantennförstärkning som det kvalitetsmåttet innebär | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Ingen extern oberoende referens: det här är självbeskrivning av en ekvation som redan är validerad mot en publicerad designkontrolltabell (se raden för enkelvägslänkbudgeten). Den registreras eftersom avsaknaden av den var en uppmätt brist -- att återskapa den släppta d1_rate_gain_beamwidth.csv krävde att en effektiv konstant löstes baklänges till 0,0034 dB ur alla trettio rader, och motorn både namnger nu den kombinationen och bevisar med test att ingen släppt tabell någonsin kunde ha skilt dess tre komponenter åt | linkbudget | linkbudget::tests (över tre band, fyra dekader av avstånd och båda slutningsverdikten räknas marginalen och fritt-rum-förlusten under den om från enbart rapporten till bättre än 1e-9 dB; det nödvändiga G/T som sätts ihop av ekvationens termer stämmer med samma storhet nådd som G/T minus marginal, och en omkörning vid det nollar marginalen; tre budgetar med vitt skilda EIRP, förlust och tröskel men lika länkkonstant ger ett identiskt krav, medan 1 dB på konstanten flyttar det exakt 1 dB; förstärkningsuppdelningen saknas om inte en brustemperatur anges och en icke-positiv avvisas; varje fält som units-blocket nämner skickas faktiskt ut) |
| Tabell över skärningspunkter för lunar tid per klockklass | En körning av lunar tidsbudget ger en rad för skärningspunkten mellan klocka och referenssystem per klockklass mot en enda delad systemterm, så att klockan är den enda variabeln i jämförelsen; varje rad bär skärningspunkten nådd på två sätt -- bisekterad ur den allmänna potenslagskurvan för tidsfel och inverterad algebraiskt ur radens dominerande brustyp -- med den relativa skillnaden mellan dem | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Två olika beräkningar i kodbasen av samma storhet, inte en och samma omskriven: bisektion på IEEE-1139-potenslagskurvan vet ingenting om brustyp, medan den slutna formen inverterar den dominerande typen algebraiskt, så en felklassificerad brustyp eller ett dåligt intervall syns som en inte obetydlig relativ skillnad. De fyra värdena återger också artikelns publicerade tabell till hälften av dess sista tryckta siffra -- men den tabellen rekonstruerades själv ur samma slutna form, så detta är en reproducerbarhetskontroll och inte en extern oberoende referens, och ramtermen den mäts mot är en Modelled allokering | lunar_time_budget | lunar_time_budget::tests and lunar_time_budget_scenario::tests (alla fyra klasser finns i en körning och i en begärd delmängdsordning; varje rad stämmer med sin egen slutna form till bättre än 1e-12 relativt; skalning av ramfelet med k skalar korsningspunkten med k för en flicker-FM-klocka och med k^2 för en white-FM-klocka, kontrollerat vid k=2 och k=3, vilket skiljer de två brusklasserna åt; varje rad återger den enklockskorsning som budgeten redan rapporterat; varje rad återvinner den delade ramtermen; ett okänt klocknamn avvisas) |
| Fångstfotavtryck mot höjd och strålbredd | Svep i två axlar av det mönstervägda, höjdbegränsade fångstfotavtrycket vid ytan över sändarens höjd och parabolens diameter, utsänt som en rad per arbetspunkt med den halveffektsstrålbredd som varje diameter innebär, och limbfångst redovisad som en TRÖSKEL -- per rad limbens J/S, dess marginal och den sändareffekt som skulle sluta den; per raster de lokaliserade korsningarna, eller ett uttryckligt påstående att limben inte nås någonstans på rastret, med underskottet | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Mängdinklusion: kvoten mellan störsändare och signal ingår som en enhetlig decibelförskjutning, så den fångade mängden vid högre sändareffekt innehåller mängden vid en lägre och andelen kan bara stiga -- en egenskap som Airy-mönstret INTE ger i strålbredd eller höjd, där det fångade området bryts upp i ringar och andelen verkligen är icke-monoton. Ingen publicerad tabell anger den fångade skivandelen för en månbanesändare mot höjd och strålbredd, så det finns inget externt att kontrollera dessa celler mot; mönstret under dem är separat validerat mot publicerade Bessel-värden och har sin egen rad | antenna | antenna::tests and attack_surface::tests (rutnätet är fullständigt och varje fångad andel ligger i [0 1]; den fångade andelen är icke-avtagande i sändareffekt vid varje nod; den är INTE monoton i strålbredd eller höjd, vilket är fastlåst av ett eget test så att svepet inte senare kan jämnas ut; baslinjenoden återger den befintliga fångade andelen bit för bit; utvärderingen med enbart limb är bitidentisk med hela svepets sista punkt; en lokaliserad korsning ligger på tröskeln till 1e-9 dB och är omsluten) |
| Reproducerbarhet för lunar tidsfelsbudget | Scenariot lunar-time-budget publicerar sina matrisvärderade utdata som en tabell i långt format (rasterindex, medelvärdestid, term) vid sidan av rapporten, så att de sju kurvorna x(tau) per term och kvadratsumman av totalen är motorutdata snarare än något en läsare återbygger ur metodavsnittet | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Enbart självkonsistens: den publicerade totalen kontrolleras mot kvadratsumman av termerna i samma fil, och den utsända kurvan återger den släppta p3_time_budget_curve.csv över alla 57 punkter. Båda kontrollerna delar den här motorns egna termdefinitioner, så ingen av dem är oberoende. Klocktermen vilar på publicerade klockspecifikationer, men STORLEKARNA på länk-, ram-, relativistiska och efemeridgolven är dokumenterade budgetallokeringar utan extern oberoende referens | lunar_time_budget_scenario | lunar_time_budget_scenario::tests (alla 57 medelvärdestider x 8 termer finns, rutnätsindexet går 0..=56 och bär 8 rader vardera; raden total är lika med kvadratsumman av de sju termerna bredvid den vid varje tau; tabellen följer ett begärt rutnät i stället för ett hårdkodat; att sända ut den lämnar rapportens JSON byte-identisk) |
| Lunar stationstidslaboratorium: holdover för miniRAFS mot LTC | Det valfria blocket [time_lab] i scenariot lunar-time-budget modellerar en lunar referensstationsklocka (som standard klassen miniRAFS, eller någon namngiven klass, eller ett enhetskort anpassat till angivna stabilitetspunkter) styrd mot Coordinated Lunar Time och sedan fritt löpande eller omstyrd var N:e sekund: tidsfelskurvan x(t) som kvadratsumman av klockans potenslagsterm, en konstant styrrest (ILLUSTRATIVE), en konstant realiseringsrest för LTC och en frivillig term för stationshöjdens gång; tiden efter en styrning till 1, 10 och 100 ns (eller angivna trösklar) med bisektion bredvid den slutna inversen för den dominerande brustypen, och den dominerande termen vid varje angiven horisont, alla med enheter | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Enbart intern konsistens: den bisekterade tiden till tröskeln kontrolleras mot den slutna inversen för klockans dominerande brustyp, och den fritt löpande klocktermen mot budgetens egen klockterm. Klockklasserna vilar på publicerade endagsspecifikationer (deras egna rader); LTC-takten härleds inte på nytt här och behåller sin egen VALIDATED rad (Lunar coordinate time); styrresten är ILLUSTRATIVE, realiseringsresten är en budgetallokering och ingen termisk modell ingår. Målet på nanosekundnivå som beskrivs i ICG WG-B:s Lunar PNT-material från juni 2024 citeras som ett källpåstående, inte som ett antaget påstående; ingenting här är ett påstående om någon verklig stationsklocka | lunar_time_lab (over clock_specs, lunar_time_budget, lunar_time) | lunar_time_lab::tests (free_run_clock_term_is_the_budget_clock_term: med styrningen av är klocktermen lika med budgetens klockterm till biten för alla fyra klasser; bisection_matches_the_closed_form inom 1e-9 relativt för båda brusklasserna; 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: standarddokumentet, tabellen och sammanfattningen är oförändrade och blocket lägger bara till sitt eget objekt och sina units; 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 från 1 s till 7e5 s, där PHM- och RAFS-kurvorna korsas mellan 7e5 och 8e5 s, fastlåst som en redovisad egenskap hos klockmodellerna med en enda brustyp; every_time_lab_field_has_a_unit; unknown_time_lab_fields_and_clocks_are_refused) |
| Lunar geodetisk VLBI | Närfälts-VLBI-fördröjning för en jordbaslinje som observerar en lunar beacon + partialer | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Planvågs-delta_dor (samma kodbas) i fjärrfältsgränsen; finita differenser som partialer. 0,30 extern jämförelse, ett fynd (förblir MODELLED): mot ANISE 0,10 konvergerade ljustider genom DE440 (75 fördröjningar den 2024-01-01 över tre DSN-baslinjer, genererade av xval/anise-lunar-od utan Kshana-kod) ligger ingen fördröjning inom toleransen 1 ps. Det största gapet är 24 µs, från det analytiska månmedelpunktsläget (omkring 200 km från DE440), den enda ögonblicksgeometrin utan ljustidsiteration (3,6 µs) och den utelämnade polrörelsen; beaconpartialerna skiljer sig med upp till 2.9e-3 relativt mot 1e-6. Påståendet i modulens dokumentation att ramapproximationerna ligger under modellens exakthet håller inte på den här nivån. 0,30 omgång 2: kärnvägen (lunar_vlbi::KernelGeometry) är validerad mot NAIF SPICE-ljustider i sin egen rad, Lunar geodetic VLBI, kernel path; ANISE-jämförelsen av den vägen (75/75 inom 1 ps, sämst 0,12 ps, tests/lunar_vlbi_anise_oracle.rs::kernel_delay_matches_the_anise_light_time_difference) är enbart en korskontroll av kärnutvärderingen, eftersom ljustidslösningen i den testbänken är projektets egen. Den här raden (den analytiska standardvägen) förblir MODELLED med fyndet ovan | lunar_vlbi | lunar_vlbi::tests (far-field limit matches delta_dor; near-field correction; FD partials); tests/lunar_vlbi_anise_oracle.rs::near_field_delay_disagrees_with_the_anise_light_time_difference |
| Earth-GNSS på lunart avstånd | Mottagning av Earth-GNSS på lunart avstånd: det svagsignalslager som P7 tabell 1 nämner och som motorn saknade modell för. Per satellit och per epok beräknar den vinkeln från siktlinjens axel mot sändarens nadir, om Jorden skymmer den raka vägen, det sneda avståndet och dess fria rumsdämpning, sändarförstärkningen vid den vinkeln, den mottagna effekten och bärvåg-till-brus-densiteten; därefter aggregerar den bara länkarna som klarar en följningströskel, och sveper ett helt konstellationsvarv så att svaret blir en FÖRDELNING snarare än en ögonblicksbild. Tre fakta driver resultatet och rapporten anger var och en: Jorden spänner 13,90 deg från konstellationsradien så att strålens TOPP är geometriskt otillgänglig för varje stråle på väg mot Månen; det som återstår är huvudlobens kant och sidolober, det regim som LuGRE arbetade i vid Månen 2025; och L1-vägförlusten är omkring 208 dB, ungefär 25 dB mer än en markbunden användare betalar. MEASURED på den medföljande GPS-klassgeometrin med 24 satelliter över 64 epoker under en omloppsperiod: SIGNALtillgänglighet 0,375 med en bästa länk på 30,93 dB-Hz, och tillgänglighet för positionsbestämning 0,000 - högst två samtidigt följbara länkar, aldrig de fyra som en position behöver. Skillnaden mellan de två tillgänglighetstalen är poängen, och rapporten tillåter inte att de förväxlas: Earth-GNSS på lunart avstånd är ett lager av TIDSKVALITET, inte positionskvalitet, och ett prior för skiktad motståndskraft måste ta tillgängligheten för positionsbestämning. Konditioneringen ges av samma skäl - varje synlig satellit ligger inom en kon några grader bred sedd från Månen, så siktlinjerna är nästan parallella av konstruktion. Kan köras som typen earth-gnss-lunar Omformulerat enligt D7: påståendet på lunart avstånd är den RELATIVA bärvåg-till-brus-densiteten mellan satelliter vid en epok, från uppmätta tvådimensionella sändarmönster (NAVCEN Block IIR/IIR-M), plus geometrisk synlighet; absolut C/N0 påstås inte (Parker et al. redovisar en gemensam förlust på 7 till 12 dB). |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Slutna identiteter och intern konsistens; INGEN extern oberoende referens görs gällande. Limbens halvvinkel kontrolleras mot asin(R_earth/r_orbit) och geometrin mot den; fritt-rum-förlusten, DOP-kärnan och SGP4-propageringen som den här sätter samman är var och en externt validerade i sina egna rader och den här raden lånar inte deras status. VARFÖR MODELLED, och det är sändarmönstret: förstärkningen vid en vinkel är en likformigt belyst cirkulär apertur, Airy-mönstret, medan en verklig GPS L1-antenn är en helixgrupp med tolv element och en formad huvudlob med topp utanför bäringen för att jämna ut effekten över jordskivan, samt sidolober som inte är Airy. Publicerade uppmätta mönster finns och är inte medföljande här, så ordningsföljder och storleksordningar håller, medan dB för en enskild satellit inte gör det. EN FÖRSTA IMPLEMENTATION AV DEN HÄR RADEN VAR FEL PÅ ETT SÄTT SOM ÄR VÄRT ATT REGISTRERA: Airy-uttrycket gäller bara i den främre halvsfären, dess argument går som sin(theta), och vid theta nära 180 deg slår det runt och ger FULL BÄRINGSFÖRSTÄRKNING bakom aperturen - så de två starkaste länkarna i den första rapporten var satelliter som riktade sina antenner bort från månen, och de var de enda två som klarade tröskeln. Bakom aperturen tillämpar modellen nu ett platt golv för baklob, angivet som en gräns och inte som en påhittad mönsterform. Medvetet utelämnat, vilket gör budgeten OPTIMISTIC: ingen jonosfärs- eller troposfärsförlust på de limbstrykande strålarna, ingen polarisations-, pekfels- eller implementationsförlust, och en sfärisk jord utan refraktiv förlängning. Månens position är en INDATA, inte ett efemeridsök, eftersom storheten som testas är länken och strålgeometrin. Att uppgradera den här raden till validerad kräver ett uppmätt sändarmönster och LuGRE-normalpunkter att kontrollera mot; inget av dem finns i arkivet och inget av dem är påhittat här. 0,30 omgång 2, ett fynd (förblir MODELLED): en länkväg med uppmätta indata (verkliga SP3-positioner, sändeffekt per block, tabellerade sänd- och mottagningsmönster, hysteres för inhämtning och spårning) kontrollerades mot Montenbruck et al. 2023 Table 3 för GENESIS vid 6000 km (förhandsregistrerad 5b414f0a): medelvärdena för zenitantennen stämmer vid 5 av 6 inom en dB från artikelns känslighet; medelvärdena för nadirantennen är 1,0 till 2,4 satelliter högre än tryckta, troligen eftersom artikeln använde azimutberoende GPS-sidolobsmönster som inte är publicerade. Siffrorna för månavstånd i den här raden använder fortfarande Airy som stand-in. 0,30+ D7, ett fynd (förblir MODELLED): den omformulerade storheten, C/N0-SKILLNADEN mellan Block IIR/IIR-M-satelliter spårade vid en epok, predicerad med NAVCEN:s uppmätta L1-mönster per SVN (tvådimensionella, i girstyrningsramen) mot LuGRE:s flyg-C/N0 (förhandsregistrerad 768cb62b: 99 % synliga, parets RMS <= 3,0 dB, median <= 2,0 dB, minst 50 poster och 30 par) har för lite data: de 26 kvalificerande transit- och månbaneepokerna innehåller 15 spårade IIR/IIR-M-poster (mestadels IIF och III spåras) och ett par. Alla 15 är predicerade synliga och det enda parets residual är -0.06 dB; ingenting görs gällande | earth_gnss_lunar | earth_gnss_lunar::tests (11 lib tests: the Earth-limb half angle against its closed form asin(R/r) with a further assertion that EVERY un-occulted link lies outside that cone, so the occultation test and the limb angle cannot disagree; the occultation predicate checked on the near side, the far side and the case where the body lies BEHIND the transmitter; path loss bounded to the plausible lunar-range band on every link; the trackable set shown to be a subset of the geometrically visible set and disjoint from the occulted one; monotonicity in both directions - more receiving gain never reduces the count, a stricter threshold never raises it; no link credited with more than boresight gain; a receiver inside the Earth refused; the sweep asserted to actually VARY with epoch; and signal-vs-fix availability asserted distinct, correctly ordered, and consistent with the per-epoch rows); tests/earth_gnss_measured_montenbruck_oracle.rs::finding_genesis_nadir_counts_exceed_the_paper (pinned); tests/lugre_relative_cn0_visibility.rs::too_few_iir_records_at_lunar_distance_for_the_relative_cn0_bar (pinned finding) |
| Lunar banbestämning: Earth-GNSS mot radiometri från marken | Banbestämning i en nästan rätlinjig halobana (eller en elliptisk fryst bana) från två oberoende datatyper: pseudoavstånd från Earth-GNSS mottagna ombord (länkregeln i raden Earth-GNSS på lunart avstånd, plus månockultation) och tvåvägs avstånd och avståndshastighet från marken från tre stationer i Deep Space Network. Var och en är en minstakvadratlösning i ett batchsteg kring referensbanan med sin formella kovarians; en Monte Carlo med frö av skillnaden mellan de två skattningarna prövar om de två kovarianserna förklarar den (q = d' (P_G + P_R)^-1 d, chi-två med sex frihetsgrader när modellerna stämmer) och vad en omodellerad acceleration gör med statistikan. | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Ett oberoende scipy/numpy-program integrerar samma variationsekvationer (tröskel O1). Ingenting jämförs med en mätning av en månbana. Den oberoende referensen kontrollerar numeriken i angivna formler, inte fysiken, så raden förblir MODELLED. Begränsad trekroppsmodell: ingen sol, inga månharmoniska, jordens rotationsaxel längs banans normal, ILLUSTRATIVE mottagar- och stationsindata. | lunar_infra::{orbit, gnss, od} | tests/lunar_infra_od_consistency.rs (bar O1: the state-transition matrix chained over three days and over one period equals scipy DOP853 to a relative 1e-6; bar C1: mean q and the in-95 % fraction; bar C2: sample over formal trace of each estimator; bar C3, NOT MET and pinned: with 3e-10 m/s2 of unmodelled acceleration the in-95 % exceedance is 0,0525, not at least 0,5 - the on-board estimate is known only to hundreds of metres, so about ten metres of displacement hides inside its covariance); lunar_infra::orbit::tests, lunar_infra::gnss::tests, lunar_infra::od::tests, lunar_infra::la::tests |
| Lunar bärvågsfaslösning av heltalsosäkerhet: yta och omloppsfarkost | Enkeldifferentierad bärvågsfas och kod från Earth-GNSS mellan mottagare vid en lunar ytstation och en omloppsfarkost, med klockdifferensen per epok profilerad bort, en heltalsosäkerhet per sammanhängande pass och det längsta passet som gauge. Kovariansen för float-heltalsosäkerheten är ett Schur-komplement; LAMBDA löser heltalen, den bootstrappade andelen redovisas bredvid en Monte Carlo-andel med frö för lyckad heltalsminstakvadratlösning och positionssigma för float- och fixerad lösning. Redovisat som funnet: vid de registrerade 12 dBi går dubbeldifferensproblemet inte att bilda (ändring 1 flyttade standardvärdet till 25 dBi efter att endast tillgänglighetsräkningar setts), och vid 25 dBi uppnås heltalsfixering INTE - utom räckhåll (några procent som mest) även om float-lösningen förbättras med bågen. | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — En oberoende numpy-lösning av samma normalekvationer ur de exporterade raderna (Q3) och en uttömmande heltalsuppräkning (Q4). Inga GNSS- eller bärvågsfasmätningar från månen jämförs med. MODELLED. | lunar_infra::phase; lambda | tests/lunar_infra_carrier_phase.rs (bar Q1: Monte Carlo success at least the bootstrap bound minus three standard errors; Q2: no fall with arc length beyond three standard errors; Q4: LAMBDA equals brute-force enumeration for 200 draws of dimension up to five; Q3: the float design equals an independent numpy solve to 1e-9 for the ambiguity and position covariances, and the bootstrapped rate is NOT MET at 1e-9, pinned: it differs by a relative 1.7e-6 because LAMBDA's normal CDF is an Abramowitz and Stegun approximation) |
| Lunar samestimering av referenssystem: ytstationer och omloppsfarkoster | Fisher-information för det lunara referenssystemets datum med sju parametrar från laseravståndsmätning från jordstationer till de fem reflektorerna enbart och med avståndsmätningar från omloppsfarkost till ytstation tillagda: informationsmatrisen, rang, Cramér-Rao-sigman, degenerationsmåttet i den lunara identifierbarhetsmodulen och slumpade stationsmängder med frö. Banan hålls känd i de lunara axlarna (dess fel bärs av omloppsfarkostens avståndssigma). | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — En oberoende numpy-finit differens av framåtmodellen (F2). Ingenting jämförs med verkliga lösningar av månens referenssystem. Faktorn är villkorad av den antagna kända banan och 1 m avståndssigma. MODELLED. | lunar_infra::frame; lunar_datum; lunar_identifiability; lunar_llr_geometry | tests/lunar_infra_studies_3_5.rs (bar F1: the CRLB trace does not rise and the smallest eigenvalue does not fall with orbiter links, in the example and in 20 seeded random sets; bar F2: the range partials equal an independent numpy longdouble finite difference of the Rodrigues forward model on 50 geometries; bar F3: the smallest eigenvalue rises by at least 2.0x, found about 111x) |
| Precision för referenssystemsbindning i rymden: samlokaliserad GNSS, VLBI och laseravståndsmätning | Cramér-Rao-precision för förskjutningarna i translation, skala och rotation mellan teknikerna GNSS, VLBI och laseravståndsmätning när en rymdfarkost bär alla tre, med rymdfarkostens position eliminerad vid varje epok och nio störparametrar för lokala bindningar med ett prior, svept över noggrannheten i den lokala bindningen. Kovarianser med kvadratrotsmetoden (normalekvationerna förlorar siffrorna när teknikerna är nästan perfekta). | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Ett oberoende numpy-staplat system där positionsobekanta eliminerats med explicita Schur-komplement (T3). Inga data från GRASP, Genesis eller andra uppdrag jämförs med. MODELLED. | lunar_infra::tie; fim::crlb_srif | tests/lunar_infra_studies_3_5.rs (bar T1: translation sigmas do not fall as the local tie loosens; T2: with technique sigmas scaled by 1e-6 each pair's translation sigma is within 1 % of sqrt(2) times the local-tie sigma, found within 3e-7; T3: the information matrix equals an independent numpy stacked assembly to 1e-9). Den första T2-körningen med inversion av normalekvationerna missade (1,3 % vid en 0,1 m koppling, värden under golvet vid 1 m); orsaken var numerisk och kovariansen flyttades till kvadratrotsvägen innan tröskeln poängsattes på nytt. |
| Känslighet för lunara Love-tal och libration | Fisher-information för h2, k2, l2 och de fysikaliska libration-amplituderna från laseravståndsmätning (radiell och horisontell tidvattenförskjutning, reflektorrotation), omloppsfarkostföljning (graden-2-accelerationen k2 integrerad längs siktlinjen, trend borttagen), en ytgravimeter (gravimetrisk faktor 1 + h2 - 1,5 k2) och en ytklocka (fraktionell gång (1 + k2 - h2) W2/c2, knuten till de lunara tidskonstanterna). Nominella värden för h2 och l2 är linjäriseringspunkter; studien säger vad som är känsligt för vad, inte vad talen är. | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — En oberoende numpy-finit differens-sammansättning (G2) och utvärdering i sluten form (G4). k2-känsligheten för orbiterfamiljen är en siffra i den övre delen (banans tillstånd absorberar här bara en konstant och en trend). Ingen mätning av månens tidvatten eller libration jämförs med; k2 citeras från Lemoine et al. 2014 som ett nominellt värde. MODELLED. | lunar_infra::geodesy; lunar_od::degree2_tide_accel; lunar_time | tests/lunar_infra_studies_3_5.rs (bar G1: analytic partials equal a central finite difference of each forward model to 1e-8; G2: the 5x5 information equals an independent numpy assembly to 1e-6; G4: the clock tide amplitude and its k2 and h2 sensitivities equal an independent evaluation to 1e-9; bar G3 NOT MET in its trace half, pinned: adding a family never lowers the smallest eigenvalue (28 of 28) but the pseudo-inverse trace rose in 12 of 28 additions because the added family raised the rank) |
| Lunar förstärkning av DOP med ytbeacons | Beaconförstärkt DOP för en lunar ytanvändare: raderna med siktlinjer till synliga satelliter och raderna med avståndsmätning mot synliga ytbeacons sätts ihop till en enda designmatris och utvärderas genom den delade DOP-kärnan, och den resulterande DOP avbildas på en realiserad 1-sigma-noggrannhet I METER genom ett användarekvivalent avståndsfel per beacon som sätts ihop som kvadratsumman av termer för klocksynkronisering, flervägsutbredning och inmätning. Beaconsynlighet är den geometriska horisonten med två höjder för en luftlös Måne, som saknar refraktiv utvidgning och därför är exakt snarare än approximativ. Kan köras som scenariot lunar-beacon, som redovisar enbart satelliter, satelliter plus beacons och en större konstellation som den konkurrerande vägen till samma geometri. MEASURED på den medföljande golden-geometrin (användare vid -80 deg, tre inmätta beacons, en illustrativ LCNS med sex satelliter vid t=0, mask 5 deg): 5 synliga satelliter ger PDOP 9,6941 och en 3D-1-sigma på 11,222 m; att lägga till de beacons som faktiskt klarar horisonten ger PDOP 4,1160 och 4,765 m, en faktor 2,355; tjänsten med 24 satelliter ger i stället PDOP 2,4226 och 2,804 m, en faktor 4,002. Rapporten skriver ut antalet SYNLIGA beacons snarare än det konfigurerade, och på den här geometrin klarar bara EN av de tre beaconsen horisonten: de två flankerande platserna ligger omkring 333 km från användaren mot en horisont på 86 km för en antenn på 2 m, så en läsare lämnas aldrig åt att anta att alla tre bidrog |
ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — DOP-aritmetiken är kärnan crate::orbit::dop, separat externt validerad mot gnss_lib_py i tests/dop_reference.rs; den här raden lånar inte på nytt den radens status. Beaconernas synlighetshorisont är den slutna formen L01, och sigma = DOP x sigma_URE är den vanliga GNSS-relationen (Kaplan och Hegarty, Understanding GPS/GNSS, section 7). Inom den här raden kontrolleras själva förstärkningen mot en oberoende DOP-väg i arkivet och fastlåses mot en incheckad golden-fil. VARFÖR MODELLED: konstellationens utformning, beaconernas placering, antennhöjderna och alla tre felbudgetstorlekarna är illustrativa indata och inte en driftsatt kartläggning eller en uppmätt länk, så de rapporterade metrarna är en egenskap hos ett valt scenario och inte hos någon utbyggd tjänst. NOTERA OM PROVENIENS: den här förmågan annonserades i README och övades av två valideringstester, men hade INGEN matrisrad och ingen scenariotyp, så den kunde inte nås från en körning alls. Den hävdades i prosa, saknades i registret och var onåbar i motorn på samma gång. Raden och typen lades till tillsammans. 0,30 omgång 2 (förhandsregistrerad db0eb9ec), blockerad (förblir MODELLED): ANISE 0.10.6-synlighet och en numpy-DOP på radens geometri stämmer (synliga mängder exakta inklusive 72 fall nära horisonten och 48 nära masken; DOP inom 7.2e-13), men de rapporterade metrarna är DOP gånger ett illustrativt 1,158 m kvadratsummerat avståndsfel utan oberoende referens; den avgränsning som skulle utesluta dem väntar på ett beslut av ägaren | lunar_beacon | lunar_beacon::tests (horizon visibility against the L01 closed form; the beacon-augmented DOP against the bare one; the error-budget root-sum-square; the DOP-to-metres relation); tests/validate_p2_beacon_before_after_table.rs (the whole before/after table pinned to a committed golden at 1e-9 relative); tests/validate_p2_beacon_before_after_independent_dop.rs (the same geometry through an INDEPENDENT DOP path, so the augmentation is not checked against the kernel that produced it); tests/validate_lunar_beacon_anise_visibility_dop.rs::beacon_visibility_and_augmented_dop_match_anise_and_numpy |
| Skyddsnivå för gemensamt läge och totalt integritetskuvert | cmpl_horizontal begränsar det horisontella positionsfelet på k sigma som bidras av den blinda gemensamma klassen, genom att bilda blind_position_covariance = SCovS^T och projicera den till ENU; integrity_envelope rapporterar hpl_total = hpl_araim + cmpl. Skillnaden som paret finns till för att göra: RESIDUALTESTET i RAIM/ARAIM är bevisligen blint för fel i range(G), men ARAIM:s SKYDDSNIVÅ är det inte - dess felfria term begränsar dem redan upp till en leverantörs URA plus nominell bias. CMPL är därför bara det UTÖKADE felet mellan leverantörer som en enskild leverantörs URA/ISM per leverantör inte överbegränsar, och summan är en konservativ gräns enligt triangelolikheten och inte en RSS, giltig bara där det överskottet inte redan ligger inom URA. | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Analytisk projektoralgebra kontrollerad mot sig själv: en kovarians begränsad till range(G) måste ge en positiv CMPL, en kovarians begränsad till paritetsrummet måste ge ungefär noll, och höljet måste summera två bidrag som är ortogonala i mätrummet. Den gemensamma kovariansen, konstellationsgeometrin och k är representativa Modelled indata, INTE en certifierad budget, och inget påstående görs att triangelgränsen är snäv. NOTERA OM PROVENIENS: cmpl_horizontal, blind_position_covariance och integrity_envelope är publika och levereras, och deras enhetstester citerades redan av raden om gemensam blindhet, men SJÄLVA HÖLJEPÅSTÅENDET hade ingen rad - så den enda reservation som håller det ärligt, att summan är en triangelgräns och inte en RSS, angavs ingenstans i registret. Raden registrerar påståendet och reservationen tillsammans. | 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) |
| Observerbarhet för absolut stationsposition på månen (datumdefekt) | Observerbarhet via Fisher-information för den gemensamma månlösningen: utan baslinjer till jorden ligger det absoluta referenssystemets datum i nollrummet till HᵀWH (stationens position är inte observerbar); ≥3 baslinjer återställer full rang och begränsar stationens Cramér–Rao-fel, som estimatorn uppnår | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Analytisk datumdefektstruktur — det inobserverbara absoluta ramläget ligger i nollrummet till Fisher-informationen (sluten form), rangtröskeln stämmer med den publicerade designmotiveringen för 3 stationer, och estimatorn når den resulterande CRLB i Monte Carlo. Själva månens geometri är ett representativt nät (inte en flugen efemerid), så raden förblir MODELLED; den underliggande FIM/CRLB-motorn kontrolleras separat mot de slutna formerna hos Kay (1993). 0,30 omgång 2 (förhandsregistrerad fab02df9), blockerad (förblir MODELLED): NumPy/SciPy räknar om rangen och defekten vid den angivna tröskeln 1e-9, stationsaxlarnas andel av nollrummet (inom 8.4e-10) och stationens CRLB (inom 1.2e-10) på 17 incheckade Kshana-genererade konfigurationer (P2). Inte uppgraderad: påståendet att estimatorn når gränsen (Monte Carlo-effektivitet omkring 0,98) saknar oberoende referens, och den avgränsning som skulle lämna det MODELLED väntar på ett beslut av ägaren | lunar_combination (lunar_observability) + fim | lunar_combination::tests (rangbristande utan jordbaslinjer; tre baslinjer återställer full rang — tröskeln på 3 stationer från informationsrangen, inte lösningsfelet; stationens CRLB nås av estimatorn med effektiviteten 0,98; CRLB skärps monotont med baslinjer); tests/lunar_observability_numpy_oracle.rs::lunar_observability_matches_numpy_on_the_committed_jacobians |
| Generering av spridningskoder för LunaNet AFS (LSIS V1.0) | Augmented Forward Signal-koderna i LSIS V1.0 (29 januari 2025): AFS-Q:s primärkod på 10230 chip genererad enligt pilotkonstruktionen för L1C i IS-GPS-800 med indexen i IS-GPS-800J (samma 210 tilldelningar som LSIS bilaga D skriver ut), AFS-I:s Gold-koder på 2046 chip genererade från g1 = x^11 + x^2 + 1 och g2 = x^11 + x^8 + x^5 + x^2 + 1 där varje PRN:s G2-fördröjning hämtas från standardens Annex 3-fil, de fyra sekundärkoderna, tertiärkoderna på 1500 chip, den preliminära nodtilldelningen enligt tabell 11 och den skiktade pilotkoden. LSIS-innehållet läses vid körning från ett lokalt cacheminne som verifierats med SHA-256 och fyllts från den NASA-hostade PDF-filen, och distribueras aldrig vidare | ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — Referens: de värden som LSIS V1.0 skriver ut för validering (Tables C-1 till C-5, D-1 till D-6, E-1 till E-6) och dess elektroniska kodfiler i Annex 3, under ett kriterium om noll avvikelser fastställt före jämförelsen. Kriteriet missas av en tryckt cell som är internt inkonsekvent med standardens egen Annex 3-fil, så raden förblir MODELLED; en erratumnotering är utkastad. Samma chips är också lika med LANS-AFS-SIM:s (raden 'LunaNet AFS baseband rendering against an independent generator, given its channel state') | lunar_afs::codes, lunar_afs::lsis, lunar_afs::params (IS-GPS-800J indices) | lunar_afs::codes::tests (maximal-length registers, Legendre balance, G2 delay round trip, tier composition); tests/lunar_afs_codes_lsis_reference.rs::afs_codes_finding_one_misprinted_table_cell (utan LSIS-cachen: fyra citerade tal fastlåser fyndet; med den: 2 937 232 chips och bitar mot LSIS Annex 3-filerna, tryckta första/sista 24 chips, Legendre Tables D-1 och E-1 och G2-initialiseringar ger exakt en avvikande post, cellen 'last 24 chips' för PRN 147 i Table E-5, som dubblerar PRN 151:s medan Annex 3-filen stämmer med generatorn); det strikta förhandsregistrerade testet afs_codes_match_lsis_v1_tables_and_annex3_bit_exact är ignorerat med det gapet |
| Avkodbarhet med sluten slinga för LunaNet AFS med en oberoende mottagare (LSIS V1.0) | En Kshana AFS-inspelning som en oberoende programvarumottagare tagit in, följt och avkodat och som jämförts med inspelningens egna referensetiketter. Detta visar enbart att standarden följs och att etiketterna är konsekventa; det är inget påstående om kanalfysik, utbredning, mottagen effekt eller länkbudgetar, vars värden i inspelningen är valda indata | ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — Bibliotek: PocketSDR-AFS (T. Ebinuma efter T. Takasus PocketSDR 0,13, BSD-2-Clause, commit 5b23809f30d68518b7fad7a564fd0fac57cc497d, S-bandsbygge, loggnivåkopia med enbart utskrift), under kriterier fastställda före varje körning. Den tredje förhandsregistrerade jämförelsen uppfyller sina trösklar för avkodning och spårning C1 och C2 fullt ut men inte sin spärr G0 som den är skriven (två körningar av den oförändrade mottagaren skiljer sig i samma fyra inhämtningsposter), och den andra missade med 5 överträdelser, så raden förblir MODELLED. LANS-AFS-SIM och PocketSDR-AFS delar upphovsperson och räknas som en oberoende implementation; kontrollerna av tryckta vektorer i raden för ramkodning skyddar mot en delad feltolkning | lunar_afs::waveform (recording and truth labels), xval/lunar-afs/run_pocketsdr.sh | tests/lunar_afs_decodability_pocketsdr_v3_oracle.rs::third_run_finding_c1_c2_hold_g0_is_receiver_nondeterminism (third pre-registration: 2 nodes, 4 channels tracked, worst Doppler error 0,57 Hz, worst code offset error 0,008 chip, all 6 frames decoded with the right TOI across the 99 -> 0 wrap and matching subframe 2; G0 not met as written, the receiver's own run-to-run variation in its acquisition records); tests/lunar_afs_decodability_pocketsdr_4bit_oracle.rs::decodability_finding_five_violations (second: 5 violations); tests/lunar_afs_decodability_pocketsdr_oracle.rs::first_run_finding_no_acquisition_outside_the_receivers_4_bit_range (first: void); the strict tests of the three files are ignored with their gaps |
| GPS L1 C/A: formatkontroll mellan generatorer | GPS L1 C/A-spridningskoder (sdr::CaCode) och LNAV-delramar 1–3 (gps_lnav: fältkvantisering enligt IS-GPS-200 med specifikationens pi, tvåkomplementspackning, TLM- och HOW-ord, paritet enligt tabell 20-XIV med D29*/D30*-inversion, de paritetslösande bitarna i orden 2 och 10) jämförda bit för bit med gps-sdr-sim på dess medföljande brdc0010.22n (32 satelliter) | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — gps-sdr-sim (MIT, commit 28ca29a6, körd som ett separat program genom en incheckad testbänk), förhandsregistrerad f88f2969 med en bitexakt tröskel på (A) C/A-chips, (B) varje beräknat LNAV-fält, (C) varje paritetsbit. FYND: (A) 0 av 32 736 chips skiljer sig, (C) pariteten för 0 av 1 920 ord skiljer sig, (B) 230 av 1 152 beräknade fält skiljer sig med en enhet: gps-sdr-sims eph2sbf trunkerar mot noll med C-casts där det utsända heltalet behöver avrundning (varje avvikande värde ligger inom 0,01 av en enhet från Kshanas avrundade heltal). Förblir MODELLED: den registrerade tröskeln var konjunktionen | gps_lnav, sdr | tests/gps_l1ca_gpssdrsim_cross_generator.rs::gps_sdr_sim_truncates_where_the_broadcast_integer_needs_rounding (pinned finding); tests/gps_l1ca_gpssdrsim_cross_generator.rs::ca_codes_lnav_fields_and_parity_match_gps_sdr_sim_bit_exactly (strict, ignored with the gap); gps_lnav::tests |
| GNSS IQ-införvärvning på oberoende genererade I/Q-samplingar | iq::acq::acquire (FFT-parallell kodfassökning med Marcum-Q-tröskel för kvadratisk detektor) med GpsL1Ca-repliken, på 20 ms av gps-sdr-sims egen 8-bitars I/Q-utdata avkodad av samplingsavkodaren iq::io (ci8, 2,6 MHz, 11 satelliter, inget brus): varje PRN 1 till 32 söks i två fönster om 10 ms, och resultatet jämförs med den kodfas och den Doppler som gps-sdr-sim modulerade | ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — gps-sdr-sim (MIT, commit 28ca29a6) I/Q-sampel och dess eget kanaltillstånd, förhandsregistrerad 7777da53: (B1) varje simulerad PRN inhämtad, (B2) ingen annan PRN inhämtad, (B3) kodfas inom 0,5 chip, (B4) Doppler inom 125 Hz. FYND: B1, B3 och B4 håller i båda fönstren (sämst 0,195 chip, 72 Hz), men B2 faller: alla 21 PRN som gps-sdr-sim inte simulerade korsar också tröskeln (statistik 151 till 206 mot 79,5; simulerade PRN 1 300 och uppåt). Tröskeln är satt för gaussiskt brus av den uppmätta samplingseffekten; gps-sdr-sim lägger inte till något brus, så cellerna för en frånvarande PRN innehåller de andra satelliternas korskorrelation. Förblir MODELLED: den registrerade tröskeln var konjunktionen | 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 (pinned finding); tests/iq_gpssdrsim_cross_generator.rs::acquisition_finds_gps_sdr_sim_satellites_in_its_samples (strict, ignored with the gap) |
| IQ-övervakare bedömda i labbuppspelningskampanjer: detektion, missar, falsklarm och slutna uttryck för falsklarmstal | iq::campaign::detect och kampanjkörningen: en valfri tabell [monitors] kör IQ-övervakarna på varje cell i körningens enda pass. Effekt- och spektralövervakarna ser samplingarna efter varje frontändskedja; övervakarna för C/N0, SQM och låsning ser varje följd kanals slingutjämningar. Varje larm bedöms mot de angivna händelserna: detekterat eller missat per (händelse, larmtyp, kanal), tid till detektion och falsklarm utanför händelserna över deras exponering. För varje tests slutna uttryck anges falsklarmstalet: effekt per block (exakt gammasvans), spektralt överskott per block (approximation), kurtosis (ensidig gaussisk), pulser (binomialtak), SQM per medelvärdesbildad uppdatering (2Q(k) = Q(1/2, k^2/2), nytt) och ARL0 för C/N0-CUSUM (Siegmund). Utan tabellen är celler, nycklar och sammandrag oförändrade. Ingen störningsvågform syntetiseras | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Monitorernas egna slutna former på Kshanas egna GPS L1 C/A-scener (brus och legitima signaler; dämpningshändelser i satelliternas egna signaler), mot trösklar förhandsregistrerade i docs/design/MONITORS-IN-CAMPAIGN.md (382ab2f4). FYND: M1, M2 och M4 uppfyllda. M3 uppfylld på detektering (18 av 18 dämpningar, P_md 0) och NOT MET på sin tidsklausul: mediantiden till detektering är 1,001 s mot 2 x ARL1-sampel = 0,433 s. CUSUM ser en skattning per fönster på 1 s, så gränsen i antal sampel ligger under ett sampel. Enbart intern konsistens: ingen verklig mottagare eller inspelad störning kontrolleras | 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 av 5900 block mot det binomiala intervallet på 99 % [40, 80] för P_fa 0,01), m2_sqm_false_alarm_fraction_is_within_a_factor_of_2_of_2q_k (delta 0,0160, kvot 0,0131 mot 0,01), m4_cn0_false_alarms_stay_within_the_poisson_bound_of_arl0 (0 mot 0), the_monitors_table_parses_and_validates; m3_every_attenuation_is_detected_within_twice_the_arl1 (strikt, ignorerat med gapet); iq::campaign::detect tests; iq::monitor::stats tests (gaussian_two_sided_tail_matches_known_values); tests/iq_campaign.rs (de fastlåsta sammandragen är oförändrade utan tabellen) |
| Detektions-ROC för IQ-övervakarna från en bedömd labbuppspelningskampanj | iq::campaign::detect (windows, roc) och iq::campaign::report::rocs: varje cell i en kampanj med övervakare behåller, per larmtyp och kanal, maxvärdet av övervakarens egen teststatistika över varje angivet händelsefönster (positiva) och över sammanhängande roc_window_s-fönster utanför händelserna (negativa). Statistikorna är blockeffektens avvikelse, PSD-överskottet, kurtosis z, SQM |z| för det medelvärdesbildade måttet och C/N0-CUSUM. Rapporten slår ihop dem per typ till en empirisk ROC på fönsternivå med dess AUC och arbetspunkten vid den konfigurerade tröskeln, skriven som roc.json (kshana.campaign-roc/1) och som ett avsnitt Detection ROC i report.html. En kampanj utan övervakare skriver ingetdera | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Syntetiska kampanjer från Kshanas egna GPS L1 C/A-scener (dämpningar av satelliternas egna signaler), mot trösklar förhandsregistrerade i docs/design/DETECTION-ROC.md (b47e358d). FYND: R2 uppfylld (slumpnivå när det inte finns något att detektera). R1 NOT MET: cn0_drop AUC 0,7855 mot 0,95, eftersom varje negativt fönster efter en händelse ärver CUSUM:ens avklingning från detekteringen (alla 18 negativa efter händelsen når 81 eller mer; alla 18 före händelsen stannar vid 0). Enbart intern konsistens: ingen verklig mottagare eller inspelad störning kontrolleras | 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 på angivna händelser som inte dämpar något); r1_the_cn0_drop_roc_separates_6_db_attenuations (strikt, ignorerat med gapet); iq::campaign::detect tests (the_roc_of_separated_and_of_identical_samples, windows_tile_the_time_outside_the_events) |
| Kalibrering av den öppna mottagarens modeller för C/N0 och låsning mot resultat från IQ-kampanjer, med angivet prediktionsfel | iq::labfit (campaign, cn0, iqfit, iqreport) och [input] campaign på kshana iq labfit, Python kshana.iq_labfit och MCP-verktyget labfit (kampanjmappar enbart inom dess arbetskatalog): läser en utdatamapp från kshana iq campaign via dess DIGEST och grupperar de bedömda cellerna i anpassningsenheter (signal x slingutformning x frontändskedja x störsändartyp, aldrig sammanslagna). Per enhet anpassas uppmätt C/N0 mot angivet J/S med den spektrala separationsformen. Q_eff är inte identifierbar ur C/N0-data utan en oberoende mätning av störsändarens och signalens effekt, så Q anges, anpassas aldrig (typtabellen, händelsens q eller, för en okänd typ, det mest skadliga angivna värdet, cw Q = 1). Den anpassade parametern är den identifierbara förskjutningen delta_eff = delta - 10 log10 Q, där korrelationsvakten rapporterar degenerationen. C/N0-fack som är låsta under 90 % är censurerade och listas. Tröskel-J/S anges direkt och med det slutna uttrycket; spårningsslingans modell och den empiriska låsningsmodellen kopplas genom C/N0-modellen, med dröjsmål för tappad och återvunnen låsning. En seedad klusterbootstrap över inspelningar (1000 replikat) ger percentilintervall; 90 % prediktionsintervall kommer från residualdragningar; hold-outs där en inspelning utelämnas delas upp i interpolation och extrapolation; en förhandsregistrerad tabell [validation] hashas och varje tröskel bedöms som PASS/FAIL. Rapport kshana.labfit-iq/1 som JSON, CSV och genererad Markdown, med ett units-block. Endast syntetiskt (ingen tredjepartsinspelning, ingen störsändarvågform). Sökvägen labfit för mottagarloggar är oförändrad |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Syntetisk parameteråtervinning på Kshanas egna GPS L1 C/A-scener med en känd C/N0-profil påtvingad från formeln i section 3,1, spårad och poängsatt av kshana iq campaign, mot trösklar förhandsregistrerade i docs/design/LABFIT-FROM-IQ.md (section 5,1, ändrad 2026-10-12 i b7117bf, section 13). Kampanjernas C/N0-estimator (M2M4) fastställdes i 5b13e3c2, pushad före den första utvärderingen av en tröskel (incheckad tillsammans med anpassningskoden, inte ensam), efter en redovisad diagnostisk spårningskörning. FYND på kampanjen med 18 händelser: (c) PASS; (a') NOT MET, delta_eff-fel -1.097 dB mot 0,5 dB (fortfarande -0.89 dB på bins vid 38 dB-Hz och högre); (b') NOT MET, 0 av 50 kampanjer täcker referensen (fel -1.189 +/- 0,093 dB, intervall omkring 0,3 dB); (d) NOT MET, sluten form 2,20 dB under direkt J/S vid förlust, ungefär den anpassade nedgångens uppehållstider gånger rampens hastighet (2,09 dB); de ursprungliga Q-klausulerna i (a) och (b) är NOT MET eftersom Q inte är identifierbart. UPPFÖLJNING (trösklar förhandsregistrerade i 1e532f84, docs/design/evidence/labfit-followup/RESULTS.md): på en kampanj med stegad J/S återvinns delta_eff inom +0,185 dB (S1 MET: rampfelet är estimatorns eftersläpning); (d) som den är skriven på den uppfylls av spårningsslingans modell (0,45 dB) men inte av den empiriska (6,42 dB), så S2 är NOT MET; på en ny rampkampanj är (d) med de anpassade nedgångarnas uppehållstider plus varje händelses rampstakt inom 1 dB för båda modellerna (R1 MET), och (a') och (d) som de är skrivna missar igen (-1.25 dB; 2,32 och 9,47 dB). Metoden är kontrollerad, inte någon mottagare: den kan inte vara VALIDATED utifrån syntetiska data | iq::labfit (campaign, cn0, iqfit, iqreport, schema, mod); iq::cli::labfit | tests/iq_labfit_campaign.rs: bar_c_holdout_prediction_intervals_cover_between_80_and_98_percent (PI90-täckning 0,891 över 558 bins, 0,900 över 10 händelser av tid till förlust under varje låsmodell), the_report_carries_its_inputs_censoring_validation_and_labels (indata, censurering, [validation]-hash och verdikt, units-blockets revision), 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 och bar_b_prime_ci_subset (strikta, ignorerade med gapet); bar_b_prime_full_set_of_50_campaigns (ignorerat, körs före release); iq::labfit::cn0 tests (exact Q-delta degeneracy, delta recovery at the stated Q, closed-form threshold inverse); iq::labfit::iqfit tests (the lock-model conditions reproduce the C/N0 model exactly); tests/iq_labfit_followup.rs (uppföljningen registrerad i 1e532f84: s1_delta_eff_on_the_stepped_campaign MET, s2_d_as_written_on_the_stepped_campaign som försäkrar det registrerade NOT MET, r1_dwell_corrected_d_on_the_fresh_ramp_campaign MET, i release) |
| GPS LNAV-kodning avkodad av ett oberoende mottagarbibliotek | Kshanas LNAV-delramar 1–3 (gps_lnav::encode_subframes) för de 32 efemeriderna i brdc0010.22n, matade till RTKLIB:s decode_word och decode_frame: paritet för varje ord, avkodning av delramar med konsekvent datautgåva och varje avkodad parameter mot Kshanas heltal och mot indatavärdet | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — RTKLIB v2.4.2-p13 (BSD-2-Clause, commit 71db0ffa) decode_word/decode_frame som ett separat program, förhandsregistrerad ca5f0142: R1 paritet och avkodning, R2 avkodat värde lika med Kshanas heltal gånger IS-GPS-200-skalan inom 2^-52 relativt, R3 inom ett halvt kvantum från indata. FYND: R1 960 av 960 ord och 96 av 96 delramar; R3 varje parameter, vecka och referenstid exakta; R2 faller på 41 värden (af1, delta-n, IDOT) med 1 till 4 enheter i sista decimalen eftersom RTKLIB:s P2_43 är decimalen 1.136868377216160E-13, 2.6e-16 relativt från 2^-43; division med RTKLIB:s konstant ger Kshanas heltal i varje fall. Förblir MODELLED: den registrerade R2-tröskeln var för snäv för referensens egen konstant | gps_lnav | tests/gps_lnav_rtklib_decode_oracle.rs::rtklib_recovers_every_integer_and_differs_only_by_its_decimal_two_to_the_minus_43 (pinned finding); tests/gps_lnav_rtklib_decode_oracle.rs::kshana_lnav_subframes_decode_in_rtklib_to_the_broadcast_parameters (strict, ignored with the gap) |
| Kodning av GPS LNAV-navigeringsmeddelandet | IS-GPS-200 LNAV-delramar 1–3 (gps_lnav::encode_subframes: kvantisering till närmaste av varje klock- och banparameter vid specifikationens skalfaktorer och värde på pi, tvåkomplementspackning, TLM- och HOW-ord, paritet enligt tabell 20-XIV med D29*/D30*-inversion, de paritetslösande bitarna i orden 2 och 10), det meddelande som en GPS L1 C/A-signalgenerator sänder | ExternalDataset | ett delpåstående är externt kontrollerat, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — RTKLIB v2.4.2-p13 (BSD-2-Clause, commit 71db0ffa) readrnx som tolkar IGS dagliga sändningsfil BRDC00IGS_R_20250610000_01D_MN.rnx och decode_word/decode_frame som avkodar Kshanas ord, körda som ett separat program; förhandsregistrerad d4d9eb9d innan filen hämtades, tröskel med exakta heltal. Mutation: trunkering i stället för avrundning ger 235 fel. Tidigare jämförelser av samma kodare är registrerade som fynd: mot gps-sdr-sim, som trunkerar (230 fält), och mot RTKLIB:s skalade värden, vars decimala konstant 2^-43 missade en tröskel på en ulp (41 värden). Integratörens efterverifiering (förblir MODELLED): jämförelsen stämmer och en mutation av paritetsmängden gör den också röd, men förhandsregistreringen d4d9eb9d nådde den publika grenen kl. 20:02:29 UTC, två sekunder efter resultatcommiten 1783f904 (20:02:27 UTC) som redan innehåller RTKLIB:s utdata för filen, så ordningen 'registrerad innan filen hämtades' kan inte visas; en ny registrering pushad innan en osedd sändningsfil hämtas skulle avgöra saken | gps_lnav | tests/gps_lnav_rtklib_integer_oracle.rs::kshana_lnav_integers_decode_in_rtklib_from_an_unseen_broadcast_file (32 satelliter i IGS sändningsfil från 2 mars 2025: 960 av 960 ord passerar RTKLIB:s paritet, 96 av 96 delramar avkodas, 608 av 608 avkodade sända heltal är lika med Kshanas, varje indata inom ett halvt kvantum, vecka och tider exakta); gps_lnav::tests |
| Införvärvning och C/N0-skattning på verklig IQ-data från månen | Parallell kodfassökning (acquisition::pcps_acquire: portabel FFT, koherent vikning, icke-koherent ackumulering, chi-tvåtröskel för en falsklarmssannolikhet över hela sökningen), förfining, öppen-slinga-korrelation av prompt-kanalen med kod-Doppler och C/N0-estimatorn M2M4, körd på LuGRE L1 4-bitars IQ-satser inlästa via realdata::ion_sdr | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — GNSS-SDR 0.0.19 (GPL-3.0, separat program, låst konfiguration) på de nio L1-batcherna som inte är markbatcher och flygmottagarens RÅ C/N0 (LuGRE Mission Data, Zenodo 16411687, CC BY 4,0), förhandsregistrerad 768cb62b. FYND: Kshanas läsare avkodar alla 288 jämförda spann identiskt med en oberoende omvandlare; GNSS-SDR förklarar 266 av 288 sökningar positiva och Kshana instämmer i alla 266 beslut, men bara 250 lokaliseras på GNSS-SDR:s cell (A2 faller); C/N0-benet är tomt, eftersom ingen RÅ flygepok ligger inom 30 s från någon batch (närmast 141 s). De flesta positiva är artefakter: de nakna tvåkomplementsnivåerna bär ett medelvärde på -0.5 på I och Q, en nollfrekvenslinje 32 dB över bruset i en bin på 1 kHz, som båda mottagarna inhämtar. Två batcher (OP5, OP12) uteslöts av misstag: en läsning av deras metadata med siffrorna borttagna togs för en motsägelse mot deras headers; den verkliga orsaken var att läsaren inte kunde läsa ett sampel bredare än ett ord (sedan åtgärdat). Förblir MODELLED | acquisition, portable_math, realdata::ion_sdr, realdata::lugre | tests/lugre_acquisition_gnss_sdr_oracle.rs::finding_dc_artefacts_and_no_contemporaneous_flight_cn0 (pinned finding, data-gated); tests/lugre_acquisition_gnss_sdr_oracle.rs::acquisition_and_relative_cn0_on_lugre_iq_match_gnss_sdr_and_the_flight_receiver (strict, ignored with the gap); acquisition::tests; realdata::ion_sdr::tests; realdata::lugre::tests |
| Införvärvning på verklig IQ-data från månen mot banprediktion av Doppler (beslut på samplingseffekt) | acquisition::pcps_acquire med sitt beslut på samplingseffekt på de nio LuGRE L1-satserna som inte kommer från ytan med mid-rise-nivåer; Dopplerskillnader mellan införskaffade satelliter jämförda med skillnader predikterade från ESA:s slutgiltiga banor och den av Firefly rekonstruerade banan för Blue Ghost | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Predicerad Doppler från ESA/ESOC:s slutgiltiga banor och NAIF CLPS rekonstruerade bana (xval/lugre-predicted-doppler/predict.py, oberoende av Kshana), förhandsregistrerad 0d1839d2. FYND: alla 288 sökningar korsar tröskeln på brus (samplingseffektstatistik omkring 430 till 520 mot 346,3), så P1 håller trivialt och P3 håller (274 av 288 predicerade synliga) medan P2 faller på 4033 av 4036 par. Det bandbegränsade frontändstegen höjer varje cells brus ungefär 1,46 gånger (fastlåst: brusgolv 292 mot vitt brus 200 på OP2 PRN 1), vilket samplingseffektstatistiken inte ser. Förblir MODELLED | acquisition, realdata::ion_sdr | tests/lugre_acquisition_predicted_doppler_oracle.rs::noise_alone_crosses_the_sample_power_threshold_on_lugre_iq (pinned finding, data-gated); tests/lugre_acquisition_predicted_doppler_oracle.rs::acquired_doppler_differences_on_lugre_iq_match_the_orbit_prediction (strict, ignored with the gap) |
| Införvärvning på verklig IQ-data från månen bedömd mot banpredikterad Doppler | acquisition::pcps_acquire med beslutet med cellmedelvärdesbildning (topp över rutnätets medelcell, robust mot bandbegränsat brus) på de nio LuGRE L1-satserna som inte kommer från ytan med mid-rise-nivåer; Dopplerskillnader mellan införskaffade satelliter jämförda med skillnader predikterade från ESA:s slutgiltiga banor och den av Firefly rekonstruerade banan för Blue Ghost | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Predicerad Doppler från ESA/ESOC:s slutgiltiga banor och NAIF CLPS rekonstruerade bana (xval/lugre-predicted-doppler/predict.py, oberoende av Kshana), förhandsregistrerad a81a9a4e. FYND: P1 och P3 håller (4 batcher, 12 av 12 inhämtningar predicerade synliga) men P2 faller på 8 av 8 par. De två starkaste paren stämmer med prediktionen i storlek men med omvänt tecken (OP2 PRN 18/24: +7670,0 Hz uppmätt, -7693.9 predicerad; OP17 PRN 11/30: +11155,0, -11114.4), så den registrerade ordningen med I i den låga nibblen är konjugatet av batcherna; de sex detekteringarna strax över tröskeln stämmer med inget av tecknen. Spridningen i förfiningens Doppler (30 till 50 Hz mellan två körningar) underskattades också av registreringen. Förblir MODELLED | acquisition, realdata::ion_sdr | tests/lugre_acquisition_cell_average_doppler_oracle.rs::strong_pairs_match_the_prediction_only_with_the_doppler_sign_reversed (pinned finding, data-gated); tests/lugre_acquisition_cell_average_doppler_oracle.rs::cell_average_acquisitions_on_lugre_iq_match_the_orbit_predicted_doppler (strict, ignored with the gap) |
| Införvärvning på undanhållen verklig IQ-data från månen mot banpredikterad Doppler | acquisition::pcps_acquire (beslut med cellmedelvärdesbildning, falsklarmssannolikhet 1e-7) med refine_doppler_coherent på de LuGRE L1-satser som spelats in på månens yta (I i den höga nibblen, mid-rise-nivåer); Dopplerskillnader mellan införskaffade satelliter mot skillnader predikterade från ESA:s slutgiltiga banor och Fireflys kärna för landningsplatsen | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Predicerad Doppler från ESA/ESOC:s slutgiltiga banor och NAIF CLPS Firefly-landningsplatskärna (xval/lugre-predicted-doppler/predict_surface.py, oberoende av Kshana), förhandsregistrerad 2108e6ff på batcher som aldrig öppnats tidigare. FYND: icke-tomhet faller; ingen batch innehåller två inhämtningar. OP40 utesluten (metadata nämner en saknad fil); OP38, OP73, OP77_0, OP77_1 inhämtar ingenting och visar inget falsklarm vid 1e-7 (högsta statistik 325 till 356 mot 385,9); OP74 och OP76 inhämtar PRN 31 och OP78_0 och OP78_1 PRN 12, var och en ensam, alla predicerade synliga. Förblir MODELLED. Redovisade avvikelser: den registrerade Doppler-tröskeln på 10 Hz vilar på en syntetisk Monte Carlo av den koherenta förfiningen, inte på spridningen i de redan sedda batcherna som integratören bad om; OP40 uteslöts före körningen eftersom dess metadata nämner en samplingsfil som datamängden inte levererar | acquisition, realdata::ion_sdr, realdata::lugre | tests/lugre_surface_acquisition_doppler_oracle.rs::each_surface_acquisition_is_a_single_predicted_visible_satellite (pinned finding, data-gated); tests/lugre_surface_acquisition_doppler_oracle.rs::surface_acquisitions_match_the_orbit_predicted_doppler (strict, ignored with the gap) |
| Differentiell PNT på månen | Differentiell referensstation av NovaMoon-klass: upphävande av gemensamt läge + baslinjeväxande residual + DGNSS-skyddsnivåer | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Differentiell identitet för felutjämning + återanvändning av maskineriet för DO-229E SBAS PL; enkeldifferens + WLS-lösningen korskontrolleras dessutom mot RTKLIB:s lsq()/matinv() (Takasu, BSD-2-Clause, kompilerad C) — oberoende lösarkod, men samma LOS-differensalgebra av första ordningen, så fortfarande InternalConsistency | lunar_dpnt | lunar_dpnt::tests (clock common-mode cancels exactly; residual grows with baseline; reuses SBAS PL; the satellite count is honoured to the builder's limit of 24, so a larger constellation cannot silently return a smaller one); tests/lunar_differential_pnt_reference.rs (single-difference residual + WLS position solve vs RTKLIB's lsq() compiled from C source) |
| Export för interoperabilitet på månen | Export av LunaNet/IOAG-anpassat månreferenssystem + tid + efemerid (CCSDS OEM + KIF) med rundturskontroll | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — kshanas månexport i OEM omtolkad av det oberoende tredjepartsbiblioteket oem (R. J. Anderson): ram- och tidstoken samt tillstånd per epok stämmer inom skrivprecisionen (1 mm / 1e-9 km/s) och en export utan TIME_SYSTEM avvisas — en strukturell rundtur för utbyte; den fysikaliska semantiken för månens ram och tid är validerad i sina egna rader, så detta förblir MODELLED. 0,30 extern jämförelse, ett fynd (förblir MODELLED): en andra oberoende läsare, Orekit 12,2:s CCSDS OEM-tolk (Apache-2.0, strikta standardvärden), avvisar båda månfilerna eftersom den inte implementerar tidssystemen LTC och TCL (den läser cratens EME2000/UTC-OEM, och läser månfilerna när TIME_SYSTEM ersätts med TDB); oem 0.4.5 läser dem inom den skrivna precisionen endast genom att falla tillbaka från det tidssystem som inte stöds. Utbyte av dessa månfiler med etablerade CCSDS-läsare är inte fastställt |
lunar_interop | lunar_interop::tests (OEM carries lunar REF_FRAME/TIME_SYSTEM; time metadata round-trips; KIF envelope); tests/lunar_interoperability_export_reference.rs (kshana's emitted lunar OEM re-parsed by the independent oem Python library: REF_FRAME/TIME_SYSTEM/CENTER tokens + per-epoch state to format precision; a corrupted export is rejected); tests/lunar_interop_oem_oracle.rs::recorded_two_reader_outcome_is_for_todays_export |
| Poängsättning anpassad till ramverk för PNT-resiliens | Delpoäng per dimension över Kshanas egna sju resilienskategorier (inte DHS-termer), RethinkPNT:s RDRR-funktioner och Yang-kriterier, var och en märkt Modelled med sin drivkraft; preliminär RPCF-nivå med en grind för begränsad försämring. Självbedömning härledd ur simulering, aldrig certifiering. | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar avskrivnings- och koefficientfel, men är inte en extern oberoende referens — Handhärledda formler per mått: invers Simpson-diversitet, viktat medelvärde som sammansatt mått, begränsade/obegränsade tidslinjevaraktigheter, nivåstege efter svagaste länk | resilience::arch, resilience::score, resilience::diversity, resilience::timeline | resilience::score::tests (monotonicity, composite bounds, level cap, modelled-provenance); resilience::diversity::tests (inverse-Simpson, common-mode, SPOF) |
| Studie av beslutsinstabilitet i resiliensindex | Kvantifierar hur ett enda sammansatt index / en RPCF-nivå ordnar om arkitekturer under en försvarbar viktsimplex och en hotensemble (andel byten av top-1, spridning i Kendall-tau, andel nivåbyten, rangintervall); analyser av deklarerat mot uppmätt och av diversitetskollaps. | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Slutna identiteter för rangstatistik (tau i [-1,1] med handräknade värden; deterministisk Dirichlet med fast frö) och konstruerade stabila/instabila vittnen | resilience::stats, resilience::study, resilience::panel | resilience::stats::tests (handräknat Kendall-tau-exempel, Dirichlet-simplex, flip-rate); resilience::study::tests (stabilitetskontroll, instabilitetsvittne, deklarerat mot uppmätt, diversitetskollaps) |
| Representativitet för demonstrationen och luckor mot flygning | Ärlighetsregister per resultat som kvalificerar en demonstrationsutdata: dess externa förankringar, modellerade antaganden, luckor mot flygning och representativt TRL-intervall, med invarianter som upprätthålls (Validated kräver en extern förankring; Modelled kräver en lucka och kan inte hävda mer än TRL 4). | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Slutna invarianter som motsvarar disciplinen i compliance om att 'representativitet är motiverad + luckor till flygning är identifierade'; knutna till gränsen mellan verifieringsstatus och typ av oberoende referens | representativeness | representativeness::tests (validated-needs-external-anchor, modelled-needs-gap, modelled-TRL-ceiling, malformed-band, JSON-fält) |
| Underlag för avvägning kvant mot klassiskt (gemensam form) | Ett reproducerbart TradeEvidence-objekt (fast ram: scenario+seed+motor; gemensamma värden per kvalitetsmått för kvant mot klassiskt med fördel i rätt riktning, valfritt 95-% konfidensintervall, etikett validerad/modellerad) som bär en representativitetspost, så att varje vertikal inom kvant-PNT redovisar avvägningen på samma ärliga sätt. | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Slutna identiteter för nytta/vinnare och en trogen inpackning av det befintliga quantum_trade::TradeResult; ärligheten är knuten till registret över representativitet och verifieringsetiketterna | qtrade | qtrade::tests (nyttans polaritet högre/lägre-är-bättre, packar in ett verkligt TradeResult troget, oärligt belägg avvisas, validerat kvalitetsmått kräver extern förankring, deterministisk JSON) |
| Bibliotek med felmodeller för kvantenheter | Enhetskort (optiska/jonfälle-/kvicksilverjonklockor + klassiska klockor återanvända från holdover/clock_state; kallatominterferometer; klassiska länkar + länkar med intrassling/enstaka fotoner för tidsöverföring) som var och en bär en representativitetspost; länken med intrassling lägger till en skotbegränsad modell för tidsprecision (~jitter/sqrt(R*tau), straff för mörkertal, systematiskt golv). | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Återanvända klock-/CAI-koefficienter (holdover/clock_state, publicerade värden) + slutna identiteter för skottbrus/förlust för sammanflätningslänken | quantum_devices | quantum_devices::tests (klockkort ärliga+ordnade; sammanflätningens precision ~1/sqrt(tau); detekterad frekvens -10x/10dB; mörkerräkningar försämrar; systematiska golv begränsar; kort modelled+valid) |
| Betrodd kvanttidssynkronisering (tidsöverföring + säker distribution + anomali) | Kedja för tidsöverföring kvant mot klassiskt från början till slut (klockans fritt löpande drift + länkprecision i kvadratur), en återanvänd skyddsnivå för tidssynkronisering, ett säkerhetsmått mot fördröjnings-/återuppspelningsattacker (1-P_md) samt en detektionssannolikhet för klockanomalier + CUSUM-latens, redovisade som ärligt TradeEvidence med en representativitetspost. | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Sluten kvadraturbudget över återanvända validerade kärnor (ADEV mot Stable32/NIST; TPL-gräns; detektion analytic_pd/pmd); ärligheten är knuten till registret över representativitet | timetransfer_chain | timetransfer_chain::tests (precisionen förbättras med integrationen; kvant kan vinna OCH förlora; PL ändlig-positiv; säkerhetsmåttet i [0 1] och växer med attackfördröjningen; avvikelsens Pd monoton; trade is_honest) |
| GNSS-fri kvantnavigering | Kvant (kallatominterferometer) mot klassisk navigeringsklassad INS med koppelnavigering under ett GNSS-avbrott: positionsfelets tillväxt, holdover till en positionströskel och avvägningen kvant mot klassiskt som ärligt TradeEvidence; ärlig anmärkning om observerbarhet (biasen är oobserverbar utan en positionsbestämning, så felet växer). | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Återanvända tröghetsbudgetar korskontrollerade mot en oberoende dubbelintegration i Octave av samma dödräkningsekvation (annan körmiljö, delad modell → ReferenceImpl) plus det publicerade kortsiktiga bruset från Freier-2016 som ensidigt ankare; den sammansatta kvant-mot-klassisk-bedömningen förblir MODELLED | quantum_nav_od | quantum_nav_od::tests (kvant slår klassisk över ett långt bortfall; fördelen beror på bortfallets längd; trade is_honest); tests/gnss_free_quantum_navigation_reference.rs (tillväxt av positionsfel vid dödräkning mot en oberoende dubbelintegration i Octave + det publicerade bruset från Freier-2016 som ankare) |
| Fel- och anomalidetektion för kvant-PNT-system | Märkt katalog över kvantfel (klockans frekvenshopp/drift/låsförlust; sensorns biassteg/bortfall), en ROC AUC för detektionsstatistikan med bootstrap-konfidensintervall och ett minsta detekterbart fel vid ett fast falsklarmstal; en kvantklockstödd övervakare detekterar mindre fel än en klassisk, redovisat som ärligt TradeEvidence. | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Sluten gaussisk AUC = Phi(mu/(sigma*sqrt2)) korskontrollerad mot den externt validerade eval_stats::bootstrap_auc_ci (mot scikit-learn) + analytiska detektionströsklar | quantum_faults | quantum_faults::tests (analytiska kända AUC-värden; empirisk bootstrap-AUC omsluter den slutna formen; kvant detekterar mindre fel / högre AUC; fördelen försvinner för enorma fel; katalog med 5 klasser; trade is_honest) |
| Passiv geolokalisering av sändare med TDOA/FDOA | Lokalisera en sändare (störsändare/spoofer eller en opportunistisk källa för omvänd PNT) utifrån tidsskillnad vid ankomst över ett mottagarnätverk — skärningen mellan hyperboloider τᵢ=(Rᵢ−R₀)/c löst med minsta kvadrater enligt Gauss–Newton — och, genom att lägga till frekvensskillnad vid ankomst (skillnader i avståndshastighet) med rörliga mottagare, gemensamt återhämta position och hastighet; med Cramér–Rao-gränsen (nedre gräns) för positionskovariansen utifrån mätgeometrin | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Självkonsistens hos skattaren och geometrin: rundturer framåt→invers, identiteten för Fisher/CRLB J·CRLB=I, monotonicitet hos GDOP och att skattaren når sin egen Cramér–Rao-gräns under Monte Carlo-brus — kontroller av intern konsistens, INTE en extern datamängd, så raden förblir InternalConsistency. MODELLED passiv geolokalisering — punktkällmodell med siktlinje; inga termer för flervägsutbredning / NLOS, mottagarklockbias eller atmosfärisk refraktion. 0,30 omgång 2, mot Ho och Chan 1993 och Ho och Xu 2004 (förhandsregistrerad f89018b8, 1 % av varje tryckt värde), ett fynd (förblir MODELLED): den ytbegränsade TDOA-gränsen återger de geometriska faktorerna vid 40 N (-0.11 %, -0.02 %) och den största TDOA; den gemensamma TDOA+FDOA-gränsen återger fig. 6 (+0,06 %, -0.17 %) och, vid den källa som författarnas egen kod anger för fig. 7 (ändring skriven efter att resultatet setts, redovisad), fig. 7 (+0,11 %, -0.02 %); den är lika med författarnas publicerade gränskod (BSD-liknande, körd under GNU Octave) till 3e-12; den kovariansviktade maximum likelihood-lösaren når den tryckta gränsen (+0,3 till +0,4 %). Ottawa-faktorerna som artikeln trycker från en Monte Carlo (251, 7,1) avviker med +1,3 % och +4,4 %, utanför tröskeln på 1 % | geolocation | geolocation::tests (brusfri TDOA framåt→invers till 1e-6 m; J·CRLB=I med en symmetrisk PD-kovarians; spåret av CRLB:s positionsvarians är icke-växande när en mottagare läggs till; gemensam TDOA+FDOA återskapar en rörlig sändares position+hastighet; <4 mottagare avvisas); tests/geolocation_reference.rs (rundturer över fyra geometrier med ett 3D-diversifierat nätverk; Gauss–Newton-skattaren når sin Cramér–Rao-gräns — den empiriska felkovariansen följer den analytiska gränsen över 4000 Monte Carlo-försök); 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 och finding_ho_xu_fig7_printed_source_is_not_the_plotted_one, fastlåsta) |
| Konvektiv inträdesuppvärmning i stagnationspunkten (Sutton-Graves) vid ett 3-DoF-inträde | Konvektivt värmeflöde i stagnationspunkten q = k sqrt(rho/R_n) V^3 med Sutton-Graves-konstanterna för jordluft och Mars atmosfär (NASA TR R-376, 1971), dess topp och den integrerade värmebelastningen längs ett 3-DoF-inträde, ballistiskt eller lyftande med konstant bankning, på jorden eller Mars. | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Intern konsistens: sambandet och konstanterna som de är tryckta i NASA TR R-376, en konvergenskontroll med halvt steg och den förväntade ordningen mellan värme- och retardationstopparna. VAD DET INTE ÄR: inget publicerat värmevärde har jämförts (Stardust-artiklarna anger en konstruktionsgräns och en uppskattning av konvektiv plus strålningsvärme på ungefär 1200 W/cm2, vilket ett samband med enbart konvektion inte kan matcha); ingen strålningsvärme, ingen korrektion för väggtemperatur eller katalycitet och inget svar hos värmeskyddet. | 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 (registrerar 746 W/cm2 för Stardust utan tröskel) |
| Radiometri, MTF, relativt kantsvar och GIQE 4 NIIRS för elektrooptisk avbildare | Signal-brusbudget för en nadiravbildare (lambertisk scenradians, kameraekvationen, skott-, mörker-, avläsnings- och kvantiseringsbrus), systemets MTF vid Nyquist som produkten av diffraktion för en oskymd apertur, detektorapertur, linjär utsmetning och gaussisk jitter, kantsvaret och det relativa kantsvaret integrerade från den MTF:en, Q = lambda F / p, och GIQE version 4 NIIRS utan MTF-kompensation. Kan köras som scenariotypen eo-radiometry. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Slutna former: diffraktions-MTF vid halv gränsfrekvens, den enpixliga rampkanten för en ren detektorapertur (RER 1), normalfördelningens CDF-kant för en gaussisk oskärpa (RER = erf(0.5/(sigma sqrt 2))), skalning av skottbrus och GIQE 4-koefficienterna som de är publicerade (Leachtenauer et al., Applied Optics 36(32), 1997). VAD DET INTE ÄR: ingen extern avbildare, uppmätt MTF eller klassad bild har jämförts; GIQE är en empirisk regression med ett eget fel; inget stray light, ingen atmosfärisk MTF, ingen MTF-kompensation eller aliasing. | 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 |
| Förluster vid uppskjutning på grund av gravitation, luftmotstånd, styrning och mottryck | Plan uppstigning med gravitationssväng för ett flerstegsfordon över en icke-roterande sfärisk jord genom US Standard Atmosphere 1976 (densitet och tryck), med en nickspark, dragkraft som minskas av munstyckets mottryck, utbrända steg vid exakta stegbundna gränser och förlusterna från gravitation, luftmotstånd, styrning och mottryck integrerade vid sidan av tillståndet. Kan köras som scenariotypen ascent-losses. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Intern konsistens: den exakta identiteten utbrinningshastighet = summa Isp g0 ln(m0/mf) minus de fyra integrerade förlusterna (residual under 1e-6 m/s), Tsiolkovskijs ekvation för en vertikal vakuumbränning där gravitationen är den enda förlusten, samt US76:s tryck vid havsnivå och tropopaus. VAD DET INTE ÄR: ingen publicerad farkosts förluster har jämförts; ingen jordrotation, glidfas, strypning eller styrning utöver kicken; konstant C_D; inte en banoptimerare. | 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 |
| TWSTFT-tvåvägsekvation, osäkerhetsbudget och länkstabilitet med flicker och dygnsbunden icke-reciprocitet | TWSTFT-tvåvägsekvationen löst för T_A - T_B med stationernas sänd- och mottagningsfördröjningar, jonosfärens asymmetri uppåt/nedåt i Ku-bandet, skillnaden i transponderfördröjning och Sagnac-termerna, mot dess exakta framåtmodell; en osäkerhetsbudget i kvadratur med länkens TDEV som typ A-term; en tvåvägsserie med vitt och flicker-fasbrus (Kasdin-Walter), en dygnsbunden icke-reciprocitet och en konstant reciprocitetsresidual; samt hastighet, residual-RMS, TDEV och ADEV för tillhandahållna stationsklockserier i Circular T, MJD-CSV eller IGS RINEX. Kan köras som scenariotypen time-transfer-budget. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Intern konsistens: framåtmodellen och den lösta ekvationen stämmer till 1e-15 s, Sagnac-termen är lika med modulens oberoende slutna form för BIPM 2A omega/c^2, den jonosfäriska termen är 40,3 TEC (1/f_up^2 - 1/f_down^2)/c, och brusprocesserna visar sina förväntade TDEV-former. VAD DET INTE ÄR: ingen verklig TWSTFT-mätning eller kalibreringsrapport har jämförts; de angivna fördröjningarna och osäkerheterna är indata, inte uppmätta; stabiliteten hos tillhandahållna serier redovisas, inte valideras. | twstft_budget (counter_readings, solve_offset, combined_uncertainty, flicker_phase, two_way_series, series_stability); time_transfer_budget (TimeTransferBudgetScenario, read_series) | twstft_budget::tests (tvåvägsekvationen återskapar offseten exakt; Sagnac-termen är lika med BIPM:s slutna loopform; den jonosfäriska termen följer frekvensuppdelningen och troposfären upphävs; flickerfas har en platt TDEV; en dygnsrest lyfter TDEV nära ett halvt dygn; en reciprocitetsbias förskjuter offseten och inte TDEV; serien stability tar bort en drift); time_transfer_budget::tests |
| Numerik för optisk atmosfär längs snedlinjer: Rytov-varians, scintillation, fadningssannolikhet för gamma-gamma, aperturmedelvärdesbildning, optiskt djup för moln och klar luft | Hufnagel-Valley Cn2 integrerad längs en snedlinje för Rytov-variansen för plan och sfärisk våg (upplänk och nedlänk), scintillationsindex enligt Andrews-Phillips och gamma-gamma-parametrar, fadningssannolikheten för gamma-gamma och fadningsmarginalen, aperturmedelvärdesfaktorn vid svag turbulens, det optiska djupet för moln hos en vätskevattenkolonn samt det optiska djupet för klar luft enligt Kim-sikt plus Rayleigh, som ersätter den sammanslagna atmosfärsförlusten i den optiska länkbudgeten när en atmosfär tillhandahålls. Kan köras inom scenariotypen optical-atmosphere. |
ExternalDataset | ett delpåstående är kontrollerat externt, men hela förmågan sammansätts av modellerade delar, så förmågan förblir modellerad — Numeriken jämförs med ett oberoende program (xval/optical-atmosphere/oracle.py, mpmath 1.4.1 med 30 siffror, tanh-sinh-kvadratur på den ursprungliga höjdvariabeln och Bessel-K gamma-gamma-täthetsfunktioner) som inte delar någon kod med Kshana, under trösklar fastställda innan någon implementation fanns (xval/optical-atmosphere/PREREGISTRATION.md). VARFÖR MODELLED: den oberoende referensen utvärderar samma publicerade formler, så den kontrollerar implementationen av de angivna formlerna och inte atmosfären; inget valideringsexempel från ITU-R och ingen uppmätt scintillations- eller snedstråleextinktionsserie används (ITU-värdena är ett öppet licensbeslut och hålls utanför förrådet). Nivån på Cn2-profilen, sikten, skalhöjderna för aerosol och molekyler, aperturmedelvärdets väglängd och momentanpassningen som används för att tillämpa aperturmedelvärdesbildning på gamma-gamma-parametrarna är angivna indata eller konventioner. En källrad i modulen registrerar att en vitt kopierad översikt trycker den andra scintillationsexponenten som 7/6 där Andrews och Phillips anger 5/6; formen med 5/6 är den som implementeras | 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 (förhandsregistrerade trösklar A1-A3 mot den oberoende mpmath-referensen: 216 Rytov-rutnätspunkter, sämsta relativa fel 3.4e-7 mot en tröskel på 1e-6, scintillation sämst 4.5e-16, aperturfaktor sämst 5.7e-16, 96 gamma-gamma-fadingsannolikheter sämst 1.3e-12 i log10, moln och optiskt djup i klarluft sämst 6.6e-16); tests/optical_atmosphere_no_moved_output.rs (tröskel A5: länkbudgeten med sammanslagen förlust och de befintliga utdata för platstillgänglighet är bitidentiska med basens commit över 1 000 parameteruppsättningar) |
| Väderstyrd tillgänglighet för optiska markplatser och avståndskorrelerad platsdiversitet | Tillgänglighet för en optisk länk mot en angiven länkmarginal utifrån ett lognormalt klimat för molnens vätskevatten (mängd enligt ITU-R P.840, extinktion enligt geometrisk optik) och den oberoende turbulensfadningen för gamma-gamma, den länkmarginal som behövs för önskade tillgängligheter och det tak som ingen marginal kan lyfta, lognormala avbrottslängder, vad-händer-om för förbättringstekniker och en enfaktors gaussisk copula för nätverkstillgänglighet vars parkorrelation är exp(-avstånd/dekorrelationslängd). Kan köras som scenariotypen optical-atmosphere. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Intern konsistens: slutna gränsfall och monotonicitet hos diversitetsmodellen, den slutna formen för molntaket och de lognormala identiteterna för bortfall. INGEN extern oberoende referens görs gällande och ingen har jämförts: ingen uppmätt tillgänglighet för optiska markstationer eller serie över fri sikt utan moln används. VARFÖR MODELLED: molnklimatet (sannolikhet för moln, median och spridning för vätskevattenkolumnen, bortfallens varaktighet), oberoendet mellan moln och turbulens, den gaussiska copula-formen, dekorrelationslängden och varje teknikvinst är antaganden; de medföljande scenarierna anger ILLUSTRATIVE klimat, inte en datamängd. För att uppgradera den här raden krävs en citerad uppmätt tillgänglighetsserie och en tröskel registrerad före jämförelsen | optical_weather; optical_sitediv; optical_techniques; optical_atmosphere_scenario | tests/optical_atmosphere_identities.rs (tröskel A4: rho = 0 är lika med den oberoende unionen och rho = 1 den bästa enskilda platsen till 1e-12, och noll monotonicitetsbrott i antalet platser och i korrelationen; den första körningen av tröskeln missade med 3e-9 eftersom den normala CDF som användes var Abramowitz-Stegun-formen på 1.5e-7, ett implementationsfel som ersattes av den ofullständiga gamma-CDF med tröskeln oförändrad); optical_weather::tests och optical_sitediv::tests (monoton marginal, molntaket som sluten form, identiteterna för bortfallens varaktighet, inversion av marginalsökningen) |
| Kontinuitet i tidssynkronisering och avståndsmätning genom optiska avbrott | Avbrottslängdsfördelningen för en optisk plats kopplad till klockans fritt löpande varians med slutet uttryck i holdover-modellen: fel i tidssynkronisering och avståndsmätning vid angivna kvantiler av avbrottslängden, holdover till en tröskel för tidssynkronisering, andelen avbrott och avbrottstid som ligger inom den och tillgängligheten för tidssynkronisering A + U E[min(D, T_h)]/E[D], för de klassiska och de kvantbaserade klockklasserna. Kan köras inom scenariotypen optical-atmosphere. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Intern konsistens med holdover-modulen, bit för bit; INGEN extern oberoende referens görs gällande. Klassernas PSD:er är de syntetiserade långa tau-golv som holdover-modulen redan bär, så siffrorna ärver dess angivna förbehåll att holdover till en snäv tröskel styrs av det antagna röda brusgolvet och inte av den citerade Allan-deviationen. Bortfallens varaktigheter är en lognormal modell med angivna parametrar, inte en uppmätt serie över molnuppehåll | optical_outage_holdover (couple, clock_psds); holdover (coast_phase_sigma, holdover_seconds, phase_to_range_m) | tests/optical_atmosphere_identities.rs (tröskel A6: tidsfelet per bortfall är lika med holdover::coast_phase_sigma och avståndsfelet är lika med phase_to_range_m bit för bit över 9 klockor, 3 medelvaraktigheter, 3 spridningar och 4 kvantiler); optical_outage_holdover::tests |
| Optisk länkmarginal över tid: en seedad realisering av en plats väder | En frivillig tabell [timeseries] (duration, step, seed) gör att typen optical-atmosphere också skriver, per plats, en seedad realisering av den angivna platsmodellen genom tiden: molnepisoder (klara perioder exponentiella, molnavbrott lognormala med angivet medelvärde och angiven spridning, andelen tid i moln satt till den angivna molnsannolikheten), en lognormal vätskevattenkolonn per molnepisod, ett gamma-gamma-scintillationssampling per steg, och utifrån dem länkmarginalen, moln- och scintillationsfadningarna och flaggan för länk uppe, med den realiserade tillgängligheten, molnandelen, antalet avbrott och det längsta avbrottet. Utan tabellen är resultatet dokumentet 0,37. Dragningarna går via de portabla vägarna för fördelningar och matematik, så native och wasm32 ger samma byte. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Endast intern konsistens; INGEN extern oberoende referens görs gällande och ingen finns för en väderrealisering. Kontrollerna jämför ett utfall med den statistiska utdatan från samma modell, så ett lyckat resultat säger att generatorn drar ur de angivna fördelningarna (utfallets tillgänglighet och molnandel ligger inom förhandsregistrerade toleranser kring de angivna siffrorna), inte att någon verklig plats beter sig så. Serien är en realisering, inte klimatet: dess tillgänglighet skiljer sig från den angivna med utfallets samplingsfel, och scintillationssampel vid olika steg är oberoende, en angiven förenkling av en process som dekorrelerar på millisekunder. Väderindata förblir scenariots antaganden. | optical_timeseries (site_series, SiteModel, SeriesSpec, Series); optical_atmosphere_scenario (TimeseriesSpec) | tests/optical_atmosphere_timeseries.rs (trösklarna T1-T6 i xval/optical-atmosphere/PREREGISTRATION-timeseries.md, fastställda före första körningen: samma frö ger samma byte och ett annat frö ger andra byte; ingen nyckel utan tabellen; över 8760 h vid 600 s, frön 37 och 38, den realiserade tillgängligheten för var och en av de tre standardplatserna inom 6 punkter från den angivna (sämst 3,3) och den realiserade molnandelen inom 5 punkter från den angivna sannolikheten (sämst 2,1); marginalen är lika med budgeten minus de två fadingarna och up är lika med marginal ej negativ vid varje steg; inget icke-portabelt matematikanrop i modulen; för långa körningar och felaktiga steg vägras) |
| Läsare för TRK-2-18 Orbit Data File och modell för rampad 2-vägs-Doppler vid Mars | En läsare för DSN Orbit Data Files (TRK-2-18): postgrupperna om 36 byte (filetikett, identifierare, bandata, ramper per station, klockförskjutningar, sammanfattning, filslut), och i varje bandatapost tidsmärket sedan 1950, nedlänks- och upplänksfördröjningar, observerbar, stationer, datatyp, band, giltighet, kanal, rymdfarkost, referensfrekvensen på 46 bitar och komprimeringstiden; rampernas start- och sluttider, hastigheter och startfrekvenser. Ovanpå den en modell för rampad 2-vägs-Doppler i X-band (integrerade upplänksramper, ljustid för rundturen med Shapiro och troposfär, DSN-stationer via IAU 2006/2000A CIO-kedjan och IERS EOP, stationstid) och en batchbanbestämning för en Mars-omloppsfarkost (GMM-3-fält, tredje kroppar, SRP, luftmotstånd). | ExternalDataset | ett delpåstående är kontrollerat externt, men hela förmågan sammansätts av modellerade delar, så förmågan förblir modellerad — PDS3-etiketten som DSN:s process för navigationsdatans konditionering skapade tillsammans med filen (NASA PDS Geosciences Node, MRO-M-RSS-1-MAGR-V1.0), kontrollerad mot trösklar som förhandsregistrerats i xval/mro-odf/PREREGISTRATION.md innan läsaren fanns. MODELLED eftersom en registrerad tröskel (radantalet i filslutstabellen, 121 i filen mot 120 i etiketten) missades; etiketten är internt inkonsistent där. Steg 2 (xval/mro-od/PREREGISTRATION.md, ändringarna A1 och A2 före det poängsatta resultatet): den Doppler som förutsägs från MRO-navigationsgruppens rekonstruktion (mro_psp5, NAIF) stämmer med den observerade rampade 2-vägs-Dopplern till 12,5 mHz på pass som inte använts i utvecklingen, tröskeln uppnådd; den registrerade banbestämningen misslyckades på den poängsatta bågen (normalmatrisen inte positivt definit) och gav ingen bana, så banans trösklar uppnåddes inte. Körning 2 (xval/mro-od/PREREGISTRATION-RUN2.md, en dämpad skattare, samma båge och trösklar, en poängändring R2-A1 redovisad i docs/revisions) konvergerade: den skattade banan ligger inom 0,36 km RMS (0,53 km som mest) från rekonstruktionen, trösklarna uppnådda, men Doppler-RMS efter anpassning är 48,6 mHz mot tröskeln på 30 mHz, inte uppnådd, så raden förblir MODELLED. VAD DET INTE ÄR: ingen skattad bana har uppnått alla registrerade trösklar; jonosfär, solplasma och större delen av antennoffseten (en radiell offset på 1,5 m anpassas på utvecklingspasset) är inte modellerade. | 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 (en verklig MRO ODF, 2007-304/305, mot sin PDS-etikett: antal poster, gruppernas positioner, stationer, start- och stopptider och datatyper stämmer; filslutstabellens radantal missar med en, en inkonsistens i etiketten, fastlåst som ett fynd); odf::tests (handbyggd rundtur för en post, epok 1950); tests/mro_odf_short_arc_od_oracle.rs (datastyrd, indata fastlåsta med SHA-256, månatlig CI med verkliga data krävs: Doppler förutsagd från MRO-navigationsrekonstruktionen mro_psp5 på de poängsatta passen DSS 63 och DSS 14, 12,5 mHz RMS, tröskel 30 mHz, uppnådd; den registrerade banbestämningen gav ingen bana, fastlåst som ett fynd; körning 2 med en dämpad skattare, registrerad för sig: bana 0,36 km RMS och 0,53 km som mest mot mro_psp5, uppnådd, Doppler efter anpassning 48,6 mHz mot 30 mHz, inte uppnådd, fastlåst som ett fynd; SPK type 1-läsare mot CSPICE, 5e-7 m); mars_od::tests |
| Attitydskattning med multiplikativt EKF från ett gyro och en stjärnkamera | Det multiplikativa EKF:et enligt Lefferts-Markley-Shuster: attitydfel i kroppssystemet och gyrobiastillstånd, propagering med gyrots vinkelhastighet minus biasskattningen och Farrenkopfs diskreta processbrus (vinkel- och hastighetsslumpvandring), uppdateringar från stjärnkameran med residualen 2 vec(q^-1 q_st) i Joseph-form och den multiplikativa återställningen; en diskret Farrenkopf-simulator för gyro och stjärnkamera. Typen aocs kan sluta regleringsslingan på sin skattning. |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Intern konsistens: filtrets normaliserade skattningsfel i kvadrat mot sanning simulerad från samma sensormodeller över Monte Carlo-frön, och konvergens hos skattningarna av attityd och bias. VAD DET INTE ÄR: ingen extern skattare eller flygdata har jämförts (Basilisk 2.9.1 har ingen MEKF-modul); sensormodellerna är läroboksmodellerna, utan felinriktning, skalfaktor eller effekter av stjärnsensorns synfält. | aocs_mekf (Mekf, GyroSim, attitude_error, spd_solve6); aocs_kind (estimator) | aocs_mekf::tests::mekf_is_consistent_over_monte_carlo_seeds (40 frön, medelvärde av NEES med sex frihetsgrader över andra halvan inom 4,5 till 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 |
| Arbetscykel för apertur: navigering mot kommunikation | En körning tar en kontaktplan (en lista med fönster aos_s/los_s som vart och ett ber aperturen om navigering eller kommunikation — samma fönstervokabulär som passes::predict_passes avger, omvandlad av aperture_duty::windows_from_passes), ett antal aperturer och en uttrycklig arbitreringspolicy, och returnerar navigeringsarbetscykeln, kommunikationsarbetscykeln, tomgångsarbetscykeln och avbrottet per session. Policyn är en indata med ett dokumenterat standardvärde (navigation-priority; även communications-priority och icke-förebyggande first-come-first-served), och rapporten bär den lösta policyn, dess fullständiga definition samt definitionerna av arbetscykel och avbrott, eftersom en arbetscykelsiffra som anges utan sin arbitreringsregel inte är reproducerbar. Schemat är ett exakt intervallsvep över fönstergränserna, så ett fönster som slutar exakt där nästa börjar konkurrerar aldrig, och aperturssekunder för navigering, kommunikation och tomgång ackumuleras oberoende av varandra i det enda svepet. Kan köras som scenariotypen aperture-duty-cycle |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Intern konsistens, från tre storheter som beräknas med olika uttryck i samma svep och sedan måste sluta sig. Aperturssekunder för navigation, aperturssekunder för kommunikation och lediga aperturssekunder ackumuleras separat — lediga från (apertures − |served|) per elementärt intervall, aldrig som en rest — och deras summa kontrolleras mot apertures × horizon_s, vilket en felaktigt placerad gräns, ett dubbelräknat intervall eller ett utelämnat intervall omedelbart bryter; de betjänade tiderna per session måste dessutom summera tillbaka till de två tjänstetotalerna. Schemaläggarens strukturella egenskaper mäts i stället för att antas: betjänad tid kontrolleras vara icke-avtagande i antalet aperturer över 200 pseudoslumpmässiga planer för alla tre policyerna (inte självklart för den icke-preemptiva policyn, där en extra apertur ändrar vem som håller vad vid varje senare gräns), och gränsaritmetiken är fastlåst vid paret som tangerar/överlappar med en sekund, där ett fel på ett annars skulle döljas. Bryggan till passprediktorn kontrolleras mot utdata från passes::predict_passes: med en apertur och ingen konkurrerande tjänst är aperturssekunderna för navigation lika med prediktorns egen summerade passlängd. Ingen extern oberoende referens görs gällande och ingen finns: förmågan ersätter handräkning i stället för att kontrolleras mot den, den medföljande kontaktplanen är illustrativ och inte flugen, och ingen operativ schemaläggare publicerar ett par av plan och svar med sin arbitreringsregel angiven — en belastning beräknad under en oangiven policy är inte jämförbar med en beräknad under en angiven, och policyberoendet mäts (navigationsbelastningar på 100/150 mot 50/150 på identisk plan). Tid för svängning och växling, datavolym, bufferttillstånd, energi och länkslutning är undantagna i rapportens etikett i stället för att modelleras tyst |
aperture_duty | aperture_duty::tests (ett fönster som slutar exakt när nästa börjar konkurrerar inte, och att flytta det en sekund tidigare kostar exakt en sekund — skyddet mot fel på ett; överlappande fönster utöver antalet aperturer försätter sessionen med lägre rang i bortfall, med konkurrensintervallet fastlåst; arbitreringspolicyn avgör vilken tjänst som håller aperturen, med alla tre policyernas siffror fastlåsta på en plan; först-till-kvarn avbryter inte en session som redan håller en apertur; en session som förlorar arbitreringen vid sin start får en apertur när en blir ledig; de tre belastningarna redovisar varje tillgänglig aperturssekund över 3 policyer × 4 antal aperturer; att lägga till en apertur ökar aldrig någon sessions bortfall, uppmätt över 200 pseudoslumpmässiga planer × 3 policyer × varje antal aperturer; tillräckligt många aperturer för varje session lämnar inget bortfall alls; rapporteringshorisonten klipper planen och sätter nämnaren för belastningen; en prediktad passlista blir en kontaktplan utan en andra fönstertyp; den medföljande planens belastningstal är motorutdata för en och två aperturer; rapporten anger den policy som gav talen; varje redovisad siffra bär en enhet och en proveniensklass; scenariot är reproducerbart och deklarerar sig självt som MODELLED; scenariot avvisar en plan det inte kan schemalägga); api::tests::aperture_duty_cycle_kind_round_trips_through_the_dispatch |
| RF-jamming mot navigering på månytan (J/S per satellit) | Månnativt förhållande mellan störsändare och signal, effektivt C/N₀ och låsförlust för en selenografisk användare på ytan under en störsändare på månytan (eller upphöjd), över den illustrativa konstellationen av Moonlight/LCNS-klass från offentliga källor. Sammansätter den öppna jamming-kedjan (j_over_s_db, effective_cn0_dbhz, rx_antenna_gain_db, lock_status, q_factor, nominal_cn0_dbhz, free_space_path_loss_db) med den öppna geometrin för månhimlen (lunar_service::LunarConstellation + topocentric, lunar::selenographic_to_mcmf); ingen geometri eller radiometri härleds på nytt. Till skillnad från jordtypen jamming är signalledet inte en fast mottagen effekt: varje satellits isotropa mottagna effekt är dess egen länkbudget EIRP − FSPL(snedavstånd), så J/S varierar satellit för satellit med avstånd och elevation på månen. Avger EN RAD PER SYNLIG LÄNK (epok, satellit) som JSON och som en artefakt *.table.csv, med båda mottagna effekterna som J/S är differensen av utskrivna bredvid sig; sammanfattande kvalitetsmått ligger bredvid den tabellen, aldrig i stället för den. Kan köras som scenariotypen lunar-jamming |
ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten under test, men inte externt auktoritativ — Korskontroll av sammansättningen mot en oberoende kodväg i förrådet: varje J/S per länk härleds på nytt som skillnaden mellan två länkbudgetar beräknade med linkbudget::received_signal_power_dbw, vars friutrymmesförlust är det enda uttrycket 20·log10(4πRf/c) i stället för den tretermssumma som jamming::free_space_path_loss_db använder — de två stämmer till < 1e-9 dB på varje rad (uppmätt sämsta fall 7.11e-14 dB, det vill säga flyttalsavrundning). Den underliggande störningskedjan som den sätter ihop är separat externt förankrad i tests/gnss_denied_jamming_resilience_reference.rs (oberoende omräkning i numpy/scipy av J/S och effektivt C/N₀ fastlåst mot Kaplan & Hegarty §9,4, plus uppmätt C/N₀ från JammerTest 2024, Zenodo 10.5281/zenodo.15910563); månens geometri som den sätter ihop är geometrin i lunar_service/lunar med sina egna oberoende referenser. Slutna identiteter som kontrolleras här: ett halverat jammeravstånd lägger till exakt 20·log10(2) dB på varje rad; J/S är exakt invariant mot användarantennens boresight-förstärkning medan C/N₀ rör sig med exakt den förstärkningen; en elevationsmask ändrar ingen kvarvarande rad bit för bit. Själva raden förblir ReferenceImpl/Modelled: ingen uppmätt jammingkampanj på månen finns att validera mot, och konstellationen är en illustrativ geometri av klassen Moonlight/LCNS från offentliga källor, inte en flugen efemerid | lunar_jamming (composing jamming, lunar_service, lunar) | lunar_jamming::tests (17 bibliotekstester: 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 |
| Denial-kontur för månen med ett osäkerhetsband från den uppmätta spridningen i C/N₀ | Rapporten lunar-jamming vilar inte längre sin denial-kontur på en enda skalär. Den avger hela den uppmätta fördelningen av önskat signal-C/N₀ över tabellen per satellit — n, min, p05, p25, median, p75, p95, max, medelvärde, stickprovets standardavvikelse och stickprovets egen asymmetri (p95 − median) − (median − p05) — bredvid raderna per länk, som är oförändrade. Konturen redovisas sedan vid var och en av dessa ordningsstatistikor under BÅDA denial-kriterierna som motorn känner igen, aldrig det ena i stället för det andra: det etablerade effektkvotskriteriet (J/S = 30 dB, samma tröskel som attack_surface och tracking_loop använder och kriteriet bakom kolumnen denial i den publicerade tabellen för länk-jamming på månen), och kriteriet låsförlust (det effektiva C/N₀ som faller till tracking_threshold_dbhz), som är kriteriet som rapportens egen kolumn links[].status bedöms med. Varje konturpunkt anges på båda axlarna i denial-planet — den störsändar-EIRP som krävs vid scenariots avstånd, och det denial-avstånd som gäller vid scenariots EIRP — så att bandet är ett intervall på samma axlar som ett konturdiagram ritas på. Bandkanterna ÄR contour(p05) och contour(p95): samma avbildning med slutet uttryck tillämpad på stickprovets egna kvantiler, inte ett sigma anpassat till stickprovet och inte median ± k·stdev, och rapporten säger det i en sträng band_definition bredvid siffrorna. stdev avges för kontinuitet och används av ingenting. En kvantil vars C/N₀ redan ligger vid eller under spårningströskeln har inget ändligt J/S som medför denial; de kolumnerna avges som null med en räknad orsak i stället för som ett oändligt värde eller en inklämd radie |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Intern konsistens mot motorns egna framåtfunktioner, vilket är allt den här förmågan ärligt kan göra anspråk på. Varje konturpunkt är en inversion i sluten form, och varje inversion kontrolleras genom att dess svar skickas tillbaka genom den FRAMÅTFUNKTION som rapportens egna rader poängsattes med: J/S-kolumnen genom jamming::effective_cn0_dbhz (som måste returnera tracking_threshold_dbhz med < 1e-9 dB-Hz), standoff-kolumnen genom jamming::free_space_path_loss_db och jamming::j_over_s_db (samma J/S med < 1e-9 dB), EIRP-kolumnen genom jamming::j_over_s_db vid scenariots egen standoff. Konturen kontrolleras dessutom vara GRÄNSEN för nekandemängden och inte en punkt inuti den — lock_status förlorar låsning vid en strikt olikhet, så utfallet mäts växla från DEGRADED till LOST över 1e-4 dB J/S på ömse sidor om konturen, vilket en kontur som är en epsilon fel skulle misslyckas med. Den starkaste kontrollen görs per länk i stället för per kvantil: att tillämpa samma avbildning på varje rads eget C/N₀ återskapar rapportens statuskolumn exakt — 0 avvikelser på 38 av 38 rader vid den dokumenterade arbetspunkten (kind = lunar-jamming, varje indata på standardvärde utom jammer.range_m = 25 000 m), där 26 rader är LOST och 12 inte är det. Monotonicitet mäts, den antas inte: 20 001 sampel över [tracking_threshold + 1e-3, 80] dB-Hz, 0 överträdelser av en strikt avtagande standoff och en strikt växande erforderlig effekt, så att bandets kvantilordning visas och inte bara påstås. ExternalDataset avvisas, och därmed även validerad: det finns ingen uppmätt lunär jamming-kampanj att jämföra en nekanderadie med, konstellationen är en illustrativ geometri av Moonlight/LCNS-typ från offentliga källor och inte en flugen efemerid, och konturens indata (EIRP, jammereffekt, antennförstärkningar, brustemperatur) är representativa storleksordningar. ReferenceImpl övervägdes också och avvisades — inversen och framåtuttrycket är SAMMA algebra läst i två riktningar, så tur-och-retur-kontrollen fångar transkriptions- och teckenfel men är ingen oberoende implementation; att kalla den en korskontroll vore det lånade oberoende som matrisens invarianter finns till för att förhindra. Vad bandet ger mäts och anges i stället för att påstås: vid den arbetspunkten är den skalära konturen 27,402916 km och placerar 25 km på den nekade sidan för alla 38 rader, medan bandet 21,256108 .. 29,921360 km innehåller arbetspunkten och därför redovisar den uppdelning som tabellen faktiskt visar. De två kriterierna mäts också skilja sig åt — effektkvotsbandet (38,186527 .. 53,691675 km) innehåller inte 25 km alls — vilket är anledningen till att båda skrivs ut | 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) |
| Detektionsstyrka hos övervakare av integritet över flera modaliteter | Rapporten hybrid-optical-rf anger vad chi-tvåövervakaren över flera modaliteter faktiskt kan DETEKTERA, inte bara att den klarar ett felfritt fall: den minsta detekterbara biasen per övervakad axel (öst, nord, upp, klocka) vid scenariots angivna sannolikheter för falsklarm och missad detektion, detektionsstyrkekurvan på båda sidor om den, den brusfria biasmultipel där den realiserade statistikan först passerar tröskeln och tiden till detektion för en biasramp med angiven hastighet. Fel injiceras också genom den verkliga övervakaren och den statistika den returnerar redovisas bredvid den analytiska prediktionen | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Två interna oberoende referenser, ingen extern datamängd. (1) Tur-och-retur i sluten form: den minsta detekterbara biasen tas fram genom att invertera den icke-centrala chi-två-svansen på icke-centraliteten (raim::pbias) och verifieras genom att den resulterande icke-centraliteten matas tillbaka genom raim::noncentral_chi2_cdf vid monitorns egen tröskel, vilket måste ge P_md. (2) Injektion mot analys: en bias skrivs in i RF-skattningen för en axel och cross_raim::run_cross_raim körs om, så att den statistika som jämförs med den analytiska icke-centraliteten är den som monitorn beräknade och inte en omhärledning. En seedad Monte Carlo av själva statistikan finns med i testerna som en tredje kontroll; den ingår medvetet INTE i rapporten, eftersom en samplad skattning vore långsammare och inte reproducerbar bit för bit. ExternalDataset avvisas: storheten är detektionseffekten hos DEN HÄR monitorn vid DET HÄR scenariots sigmafördelning, och de sigmastorlekar som MDB skalas med är modellerade representativa indata, inte mätningar. ReferenceImpl övervägdes också och avvisades — Monte Carlo samplar samma statistika som analysen beskriver, så den fångar transkriptions- och koefficientfel men är inte en oberoende implementation av monitorn. 0,30 omgång 2 (förhandsregistrerad 0135a9e4), blockerad (förblir MODELLED): SciPy 1.18.1 chi2/ncx2/brentq återskapar rapportens tröskel (inom 5.4e-12), MDB per axel, effektkurvan, korsningsmultipeln och tiden till detektion för ramp (inom 5.3e-10) för fem konfigurationer; statistikan för de injicerade felen har ingen oberoende referens och sigmastorlekarna är modellerade indata, så avgränsningen väntar på ett beslut från ägaren | 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) |
| Kovariansens återväxt efter överlämning mot varningsgränsen | Rapporten hybrid-optical-rf redovisar filtrets processbrusmodell och anger hur länge lösningen efter överlämningen håller sig inom varningsgränsen: för båda överlämningsriktningarna tar den kovariansen per axel som överlämningen lämnade efter sig, propagerar den framåt under ett angivet slumpvandringsbrus och redovisar tidpunkten då det täckningsskalade 1σ når gränserna för varning i horisontal led, vertikal led och tid, vilken gräns som träffas först, tidskonstanten för variansens fördubbling samt en samplad utrullningsprofil som omsluter gränspassagen. Processbrusets PSD:er, täckningsfaktorn och varningsgränserna är alla indata med dokumenterade standardvärden | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Ingen extern oberoende referens. Korsningen är en lösning i sluten form av variansväxten för en slumpvandring, och testerna räknar om den oberoende utifrån de värden som rapporten själv publicerar och inte utifrån emitterns interna delar. Startkovariansen är fastlåst bit för bit mot det spår som det befintliga överlämningsblocket redan redovisade, så att färden i fri bana inte kan propagera en kovarians som ingen annan sett. Processbrusets effekttätheter (PSD) är MODELLED representativa indata och korsningstiderna skalar direkt med dem, vilket skalningstestet anger som en uppmätt egenskap och inte som ett påstående. ExternalDataset avvisas medvetet: tiden i fri bana är en direkt funktion av två modellerade PSD:er och av varningsgränser som själva är representativa, och det finns ingen uppmätt lunär optisk/RF-överlämning i fri bana att jämföra med. En extern oberoende referens skulle här kräva en publicerad kurva för kovariansväxt efter överlämning eller holdover-noggrannhet för en jämförbar mottagare med angiven processbrusmodell, kontrollerad mot en tolerans | 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) |
| Antennmönster utanför huvudriktningen i exporten av lunar geometri | Exporten av geometri per satellit anger, per (epok, satellit), vinkeln utanför huvudriktningen VID SATELLITEN och sändningsförstärkningen mot platsen utifrån det verkliga mönstret för en likformigt belyst cirkulär apertur (Airy), och redovisar antalet länkar i strålen enligt det mönstret BREDVID antalet länkar i strålen enligt den symmetriska approximationen mellan förstärkning och strålbredd (θ_3dB[deg] = √(31000/G_lin)), med skillnaden utsänd som en uttrycklig korrektion i länkar, i satelliter per epok och som den sämsta enskilda epoken. Båda de implicita aperturverkningsgraderna för approximationen redovisas (0,641 mot regeln med 70·λ/D grader som den anges med, 0,920 mot en likformig cirkulär apertur) så att den verkningsgrad som den tyst förutsätter anges i stället för att härledas. Av som standard: blocket visas bara när både en exportplats och en apertur är angivna | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Blandat, och särskilt redovisat i stället för poolat. MÖNSTRET under ytan är externt validerat och behåller sin egen rad (en scipy.special.j1-fixtur till < 0,05 dB i tests/validate_p1_orbital_footprint.rs, plus här den publicerade Airy-halveffektsabskissan x = 1,61634 lokaliserad genom bisektion i stället för antagen). GEOMETRIN kontrolleras mot trigonometri för trianglar i sluten form, skriven som ett annat uttryck än den skalärprodukt som testas. INNESLUTNINGEN av den verkliga lobens approximerande kon är härledd algebra (28.019/√η mot 29,479 grader per λ/D), så korrektionen kan bara vara icke-positiv för η ≤ 0,9035. Men själva ANTALEN i loben har ingen extern oberoende referens: ingen publicerad tabell anger hur många satelliter i ett skal av Moonlight/LCNS-typ som har en sydpolär plats inom halveffektsloben för en given parabol, och konstellationen är en illustrativ approximation från offentliga källor, inte en flugen efemerid. Den uppmätta avvikelsen vid den dokumenterade arbetspunkten — 0 länkar i loben under det verkliga mönstret mot 28 under approximationen, −2,33 satelliter per epok, sämsta epok 3, på 76 utvärderade länkar — är därför ett MODELLED fynd om approximationen, fastlåst som en regressionsliteral (den närmaste raden ligger 0,069° från någon av lobkanterna, fyra tiopotenser över varje avvikelse i sista siffran), inte ett externt validerat täckningstal. Att märka raden ExternalDataset med stöd av mönstrets egen externa förankring vore lånad validering, vilket är just det som matrisens invarianter finns till för att förhindra. 0,30 omgång 2 (förhandsregistrerad d9755d28), blockerad (förblir MODELLED): SPICE-geometri och SciPy-Besselfunktioner återskapar vinkeln utanför siktlinjen (sämst 3.0e-5 grader), Airy-förstärkningen och flaggorna för i-loben på 6 336 rader med tillstånd från flugna omloppsfarkoster och den dokumenterade arbetspunkten; men på flugen geometri delas flaggorna upp efter satellitidentitet (den närmaste länken ligger 1,66 grader från lobkanten), synlighetsgränsen 5 grader kontrolleras som en flagga och inte som en numerisk elevation, flaggan för den symmetriska approximationen tillämpar tumregeln 31000/G på en validerad vinkel utan att validera regeln, och de implicerade verkningsgraderna saknar oberoende referens; avgränsningen väntar på ett beslut från ägaren | 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) |
| Spårningsslingans låsförlust och spoof-intrång under störning | Låsförlust beräknad utifrån slingdynamik i stället för ett effektförhållande: termiskt 1σ-jitter för bärvåg (Costas) och kod (icke-koherent early/late) mot C/N₀ med kvadreringsförlusten, mot de angivna reglerna 3σ_PLL + θ_e ≤ 45° och 3σ_DLL + ramplagg ≤ d/2 chips; C/N₀-trösklar för bortfall och återlåsning där den styrande slingan namnges och hysteresen HÄRLEDD ur den bredare inlåsningsbandbredden i stället för att påstås; den deklarerade tiden till låsförlust från en låsdetektor med två trösklar och bekräftande dröjtider, redovisad separat från den fysikaliska tiden till fasflykt (Viterbis medeltid mellan cykelslipp, i log₁₀ s eftersom den spänner över hundratals dekader); den största kodsvepningen och bärvågsdopplertakten som offrets slingor kan följa; samt den AVVISNINGSRADIE som slingdynamiken ger, redovisad vid sidan av den befintliga effektförhållanderadien med deras tecknade skillnad som ett eget namngivet fält. Kan köras som scenariotypen tracking-loop |
ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Motorns egen sdr-korrelator (sdr::correlate / synth_if / CaCode) stegad framåt på seedad syntetisk IF vid ett kalibrerat C/N₀ — en separat kodväg som når samma tal genom numerisk korrelation av samplad IQ i stället för genom ett algebraiskt jitteruttryck, alltså en annan väg och inte en omformulering — plus vanliga tabellerade värden för den modifierade Besselfunktionen I₀ för termen för cykelslip. Slingteori enligt Kaplan & Hegarty kap. 8 och Viterbi/Gardner för slip-tiden. Raden förblir ReferenceImpl/MODELLED: korskontrollen finns i samma kodbas, och bessel_i0-kontrollen validerar en specialfunktion och inte spårningsmodellen, så att befordra raden på den grunden vore självgynnsam märkning. ExternalDataset skulle kräva en inspelad rå IF-datamängd med C/N₀ som facit och en annoterad tidpunkt för förlorad låsning (klass TEXBAT/OAKBAT); ingen sådan följer med i det här trädet, och även med IQ-data publicerar de datamängderna inget facit för slingtillstånd per epok, så en angiven tid för förlorad låsning kunde bara valideras mot en annan mottagares låsdetektor, vilket är ett modellerat val och inte en oberoende referens. Slingbandbredder, integrationstid, korrelatoravstånd, pull-in-kvot, uppehållstider, jammereffekt och antennförstärkningar är representativa bandvärden, inte ett datablad. 0,30 omgång 2, GNSS-SDR 0.0.19 (GPL-3.0, körd som program) på oberoende genererad IF (förhandsregistrerad 6ef7698c, ändringar av mätmetoden redovisade), ett fynd (förblir MODELLED): slutna PLL- och DLL-jitter stämmer inom 8 % vid 35 till 45 dB-Hz, dynamisk belastning på 10 Hz/s inom 1 % och förstaordningens kodrampfördröjning inom 2 %; vid 30 dB-Hz är PLL-jittret 21 % högre och DLL-jittret 32 % lägre, de uppmätta tröskelvärdena enligt 15-gradersregeln ligger 1,5 dB över motorns, och andra ordningens slinga slipper 0,5 till 2 tiopotenser oftare än gränsen för slip-tid av första ordningen. 0,30 revidering: Costas slip-tid använder nu slingans SNR rho/4 (halvcykelslip); standardvärdet för jitter_table log10_mean_time_to_cycle_slip_s sjunker från 11,58 till 2,10 vid tröskeln 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 |
| Kovarians för koordinater för lunara ytpunkter utifrån ett VLBI-fördröjningsschema, hållen skild från jordstationens | Ett tredje datumval, all-stations-fixed, som håller varje jordstation fast och skattar enbart BEACONENS månfasta koordinater — den konfiguration som en osäkerhet för en lunar ytpunkt faktiskt anges för, eftersom jordstationernas koordinater är en indata till fördröjningsmodellen och inte en okänd i den. Det finns eftersom stationsnivåns kovarians och ytpunktens kovarians är OLIKA STORHETER åtskilda av hävarmen ρ/B, och inget tidigare hindrade att den ena angavs mot den andra. Det utsända blocket beacon_link bär ρ, den längsta baslinjen, hävarmen, ytpunktsformen av ekvipartitionslänken c·σ_τ·(ρ/B)·√(g/N), det beräknade beaconsigmat per koordinat och deras kvot — kvoten är null i stället för vilseledande när beaconen inte skattas eller matrisen har rangbrist. B tas som den LÄNGSTA förekommande baslinjen, den mest gynnsamma, så kvoten kan bara underskatta. Kan köras som datum = "all-stations-fixed" med estimate_beacon = true, vilket vägras med ett meddelande som namnger den saknade indatan när beaconen inte skattas |
ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Identiteter i sluten form, utan att någon extern oberoende referens görs gällande eller finns. Hävarmen kontrolleras mot ρ/B och de två ekvipartitionsformerna mot varandra till 1e-15 — algebraiska identiteter, så de fångar ett kopplingsfel och inget annat, och är märkta så. Det substantiella resultatet MEASURED i stället för att påstås: en fördröjning från en fast baslinje begränsar fyrens RIKTNING, så siktlinjekomponenten når informationsmatrisen bara genom närfältets avståndsterm, och testet läser av den resulterande anisotropin ur det emitterade spektrumet i stället för att härleda den. AM-HM gör √(p/trace(M)) till ett hårt golv, så en länk med isotrop ekvipartition kan bara UNDERSKATTA, och kvoten beräknat-över-ekvipartition är exakt den anisotropi som kastades bort. MEASURED på paret Goldstone-likt/Canberra-likt vars korda är 10726,748 km: över 112 samplade dagar tillåter 36 ingen ömsesidigt synlig epok alls vid en 10°-mask, det högsta antalet ömsesidigt synliga är 17 av ett schema med 49 sampel, och på de 73 användbara dagarna löper trekomponentskvoten från 113,9× till fyra tiopotenser mer, median 1513×, medan en begränsning till de två tvärgående riktningarna, där siktlinjen inte svälter ut, ger 3,94× till 25,8×, median 7,8×. VAD DEN HÄR RADEN INTE PÅSTÅR: något av de talen som en egenskap hos en verklig kampanj. Den visar att storheten för ytpunkten nu BERÄKNAS i stället för att antas, och att den inte i det tysta kan bytas ut mot storheten på stationsnivå. Förblir ReferenceImpl/MODELLED: det finns ingen publicerad lunär VLBI-kovarians för ytpunkter att validera mot, stationerna och fyrplatsen är illustrativa och inte inmätta, och efemerid, klockor, troposfär och jordorienteringsparametrar hålls FASTA, så det här är en Cramér–Rao-gräns för en reducerad parametermängd och optimistisk i sig. Samma storhet på kärnvägen (fyr på DE440-månen) är validerad på sin egen rad, "…, kernel path"; på den här analytiska vägen är den minsta fyrsigman 3,9 % under den radens SPICE-referens, vilket är anledningen till att den här raden förblir 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) |
| Lunär differentiell PNT — budget för restfel i korrektionslänken | De tre termer som en differentiell korrektion får mellan den epok den beräknas för och den epok den används i, var och en tidigare lämnad som omodellerat utrymme: undersökningsfel hos referensstationen (korrelerat över satelliter, oberoende av baslinjen, ~1:1 positionsöverföring och bevisligen inte DOP-förstärkt), korrektionens åldrande (den frusna omloppsfelsvektorn återprojicerad på den siktlinje som motorns egen propagator placerar satelliten på en latens senare, plus klockdrift c·σ_y(τ)·τ från den kalibrerade potenslagen) och likformig länkkvantisering över en exakt full skala på ±(orbit_err + clock_err) med variansen step²/12. Redovisas i både avstånds- och positionsdomänen, bredvid — aldrig i stället för — det befintliga restfelet och skyddsnivån, med en latenskurva bredvid det enskilda talet | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Identiteter i sluten form och självkonsistens: variansen step²/12 för den likformiga kvantiseraren, den exakta kovariansfortplantningen (GᵀG)⁻¹GᵀRG(GᵀG)⁻¹ som kollapsar till σ·PDOP för lika σ, mätningstermens överföring 1:1 som en följd av û_user ≈ û_ref, och kvadraturslutning vid avstängning. PDOP-kontrollen mot orbit::dop delar normalmatrisen [−û, 1], så den är en konsistenskontroll och är märkt som en sådan och inte som en oberoende referens. Ingen ExternalDataset finns eller görs gällande: ingen lunär ytstation har en publicerad inmätt noggrannhet, ingen lunär differentialkorrektionslänk har en publicerad latens eller ett publicerat meddelandeformat, och kvantiseringsresultatet är en sluten form och inte en mätning. RTKLIB — redan den externa kodreferensen för enkeldifferensen och kärnan med viktade minsta kvadrater — skulle kunna köras med en medvetet felinmätt bas för att bekräfta överföringen 1:1 av inmätningsfelet, men det är oberoende kod över samma första ordningens siktlinjealgebra. STORLEKARNA ÄR MODELLED: standardvärdet för inmätningen är den här cratens egen tilldelning för lunär realisering av referenssystemet och inte en uppmätt station, latensen och antalet bitar är ILLUSTRATIVE indata, och tillväxten av själva VEKTORN för sändningsefemeridens fel modelleras inte alls — vilket anges i den emitterade strängen för åldringslagen, eftersom det är den term som mest sannolikt dominerar en verklig länk | 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) |
| Täcknings- och noggrannhetskarta för lunära referensstationer | Monte Carlo-svep av den lunära differentiella PNT-modellen över ett sydpolärt användarrutnät och ett dygn av epoker (typen lunar-station-coverage): för en differentiell referensstation på en känd sydpolsplats, per punkt och över regionen, percentilen för korrigerat och okorrigerat positionsfel (3-D, horisontellt, vertikalt), tillgänglighet med en orsak för varje otillgänglig epok (user_lt4, station_missing_sat), täckning mot en tröskel som angivits före körningen, skyddsnivåer enligt DO-229E, täckningsradien per azimutsektor och korrektionslänkens budget vid stationen och vid den sämsta punkten. Inget påstående om prestandan hos något verkligt system; inte knutet till eller stött av någon myndighet |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Aritmetik omräknad av ett oberoende numpy-skript på exporterade fall (scripts/gen_lunar_station_ref.py, numpy 2.5.4; förhandsregistrerad i tests/fixtures/lunar_station/PREREGISTRATION.md, incheckad ensam i 9caedf97 före den första körningen): på 20 fall med alla feltermer påslagna är de synliga mängderna och statusen identiska, de råa avståndsfelen stämmer till 1.4e-14 m, positionsfelsvektorerna och deras storlekar till 1.4e-9 m mot en tröskel på 1e-6 m, och varje punkts p95 är lika med numpy.percentile bit för bit; stationskorrektionerna MISSADE sin tröskel på 1e-9 m (sämst 3.73e-9 m, 15 av 20 fall), och därmed även de korrigerade avståndsfelen: kontrollerat med aritmetik på 60 siffror ligger båda sidor inom dubbelprecisionsavrundning från det exakta värdet, eftersom inmätningstermen är en differens mellan två avstånd på 1e7 m vars enhet i sista siffran är 1.86e-9 m; redovisat, inte justerat. Slaget reduceras exakt till kind lunar-differential-pnt vid en punkt, en epok och ett försök. Felmodellen, dekorrelationsmodellen och varje tröskelvärde är projektets egna eller ILLUSTRATIVE; inget här är ett påstående om något verkligt system | 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) |
| Lunära terränghorisontmasker från en angiven profil eller en polär DEM | Azimutberoende horisontmasker per plats för typen lunar-station-coverage (referensstationen och varje användarpunkt) och rutnätet moonlight-service-volume och dess exportplats per satellit (varje exportrad får clears_terrain), i skylinetabellformatet 0,36 (skyline::Skyline, linjärt i azimut med slutning vid 360 grader; en angiven profil och en DEM-horisont vid en plats kombineras som sitt punktvisa maximum): en angiven [terrain] station_horizon eller user_horizon märkt med sin källa, och/eller en horisont strålföljd över en sydpolär stereografisk DEM (den gridade polära layouten för LRO LOLA, läst från en deskriptor som fastställer dess storlek och SHA-256, eller en latitud/longitud-ruta realdata::lola_dem med [terrain] dem_tile_path, återgiven med sin SHA-256) längs storcirklar på månsfären med exakt krökning, från en angiven masthöjd, med ett angivet azimutsteg och räckvidd. En satellit räknas vid en plats när den klarar den platta mask_deg och horisonten vid sin azimut (lunar_service::topocentric); en epok som horisonten lämnar med färre än fyra satelliter vid en punkt, där den platta masken ger fyra, räknas som den otillgängliga orsaken terrain_masked. Den medföljande DEM:en är ett utsnitt av den allmängods-produkten LOLA LDEM_75S_240M, omsamplad med blockmedelvärde 5 x 5 till 1200 m (data/lunar-dem/NOTICE.md). Saknas den behåller varje plats den platta masken och varje dokument är byte för byte identiskt | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Ytor i sluten form (InternalConsistency): den nakna sfärens horisontdepression, en krater i en platå på sfären med en observatör i och utanför dess centrum, och en analytisk kon mot sin egen rastrering. På det verkliga utsnittet stämmer en oberoende numpy-strålföljning (scripts/gen_lunar_terrain_ref.py, numpy 2.5.3; förhandsregistrerad i tests/fixtures/lunar_terrain/PREREGISTRATION.md, incheckad ensam i edbb9b02 innan skriptet fanns) på fem platser: platshöjder till 1.0e-11 m och alla 1800 horisontelevationer till 5.5e-10 grader mot trösklar på 1e-6, antalet avkortade strålar exakt; detta kontrollerar aritmetiken, inte terrängen. Inget publicerat polärt horisont- eller belysningstal har återskapats: det medföljande utsnittet på 1200 m jämnar ut det relief under en kilometer som publicerade belysningsstudier upplöser, så DEM-horisonterna är en MODELLED siktlinje över en omsamplad verklig DEM, inte en validerad horisont. Stationsplatsen och konstellationen förblir ILLUSTRATIVE; inget här är ett påstående om något verkligt system | 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) |
| Flervägs- och mottagarhårdvaruermer för lunära referensstationer | Den valfria sektionen [receiver] i lunar-station-coverage (LRS-02): elevationsberoende flervägssigma(el) = a + b exp(-el / el0) vid användaren och vid stationen (den funktionella formen enligt RTCA DO-229 för luftburen utrustning, med a = 0,13 m, b = 0,53 m, el0 = 10 grader som standardvärden; på månen är varje värde ILLUSTRATIVE), vitt vid användaren och Gauss-Markov av första ordningen över epoker vid stationen (rho = exp(-dt / tau)); termiskt kodbrus för early-minus-late DLL sigma = L_c sqrt(B_L d / (2 C/N0) (1 + 2 / ((2 - d) T C/N0))); biaser mellan kanaler per kanal, konstanta under ett försök, vid användaren och vid stationen. Stationstermerna går in i dess korrektioner, användartermerna i de råa och korrigerade mätningarna, var och en på sin egen seedade ström. Saknas sektionen är varje dokument oförändrat | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Slutna former och statistik över modellens egna dragningar (InternalConsistency): DLL-formeln mot en handräkning, DO-229-formen, nolldifferensen mellan två mottagare, Gauss–Markov-korrelationen vid lag 1. Det finns ingen lunär flervägs- eller mottagarmätning att jämföra med; värdena är ILLUSTRATIVE och inget här är ett påstående om någon verklig mottagare | 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) |
| Tillväxt av efemidefel hos lunära referensstationer över korrektionens latens | Den valfria indata orbit_err_growth_m_per_s i lunar-station-coverage (LRS-03): en korrektion som tillämpas latency_s efter att den beräknades missar tillväxten g latency_s av det utsända omloppsfelet, g isotropt med 3-D RMS-takt, dragen per satellit och försök på sin egen seedade ström (avstånd 1-sigma-takt tau / sqrt(3)), ovanpå återprojiceringen av det frusna felet på siktlinjen. Saknas den är varje dokument oförändrat. Ett K5-tillägg till jämförelsen med publicerade påståenden, förhandsregistrerat ensamt, kör K5 vid 0,001, 0,01 och 0,1 m/s (ILLUSTRATIVE) | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Tillväxttermens sigma i sluten form och kontrollen av förstaordningens fortplantning (InternalConsistency). Tillägget K5 (tests/fixtures/lunar_station_published/ADDENDUM-LRS03.md, förhandsregistrerat ensamt i 59d88248): K5 misslyckas vid varje takt, korrigerad p95 i 3D 369,8 m, 2315 m och 22797 m mot en tröskel på 1,5 m (292,96 m registrerat utan tillväxt), som det angavs före körningen. Ingen offentlig källa anger en lunär tillväxttakt: 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) |
| Lösningslägen för en lunar referensstation: höjdbegränsning, tre satelliter, fönster med statisk användare | Den valfria sektionen [solution] i lunar-station-coverage (LRS-06): en pseudomätningsrad för höjd up . dx = e_h med angiven 1-sigma, viktad mot avståndsraderna, ett minimum på tre satelliter som endast tillåts tillsammans med den, samt en viktad minsta kvadrat-lösning över de senaste window_epochs epokerna med en gemensam statisk position och en klocka per epok (ett filters svar för en statisk position utan processbrus över samma data; epokernas fel behandlas som oberoende). Om sektionen saknas är snapshot-lösningen och alla dokument oförändrade. Ett tillägg till jämförelsen med publicerade påståenden, med källornas lösningssätt, förhandsregistrerat för sig | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Ögonblicksreduktionen och lösarens fall i sluten form (InternalConsistency). Tillägget (tests/fixtures/lunar_station_published/ADDENDUM-LRS06.md, förhandsregistrerat ensamt i 001ca100) med en höjdbegränsning på 1 m, tre satelliter och ett fönster på 6 epoker (ILLUSTRATIVE inställningar; källorna anger ett filter, en höjdbegränsning och tre satelliter men inte deras inställningar): K1 till K5 misslyckas och K6 klarar sig, 1 av 6 som i den registrerade körningen; R300 korrigerat p95-fel i 3D faller från 280,6 m till 2,11 m (horisontellt 0,90 m, inte poängsatt) och täckningen förblir 0. Fönstrets oberoendeantagande gynnar det. Inte ett påstående om något verkligt system | 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) |
| Noggrannhet och täckning hos en lunar referensstation jämfört med publicerade påståenden | Slaget lunar-station-coverage körd under de offentliga antagandena i det publicerade materialet om en lunar differentiell referensstation (fyra navigationssatelliter i frysta elliptiska banor på 24 h, 10 m 95 % SISE, 0,30 m kodbrus, 1 s och 600 s korrektionsfördröjning, en stationsutmätning under decimeter, den publicerade exempelplatsen för stationen, de sydpolära cirklarna på 300 km och 600 km) och poängsatt mot källornas numeriska påståenden under sex ensidiga trösklar som fastställdes i förväg, före körningen: täckning av hela sydpolen vid p95 under en meter (K1, K2), korrigerat p95 under en meter och på decimeternivå (K3, K4), under en meter bibehållet vid 600 s fördröjning (K5) samt noggrannhet bibehållen från 10 km till 500 km baslinje (K6) | ExternalDataset | en delpåstående är externt kontrollerad, men hela förmågan sätter ihop modellerade delar, så förmågan förblir modellerad — Referens: de numeriska påståendena i fem offentliga källor registrerade med URL, hämtningsdatum, SHA-256 och licens i tests/fixtures/lunar_station/SOURCES.md (arXiv:2602.08432v3; IOAG Cislunar PNT Workshop 2025 och 2026 presentationer; UNOOSA ICG WG-B Lunar PNT, juni 2024), transkriberade med sidhänvisningar i tests/fixtures/lunar_station_published/CLAIMS.md. Trösklar, fall och indata förhandsregistrerades i tests/fixtures/lunar_station_published/PREREGISTRATION.md (revision 2, 05bf9a19, incheckad ensam före körningen). 0,36 första körningen, ett fynd (förblir MODELLED): 1 av 6 trösklar klaras. Täckningen är 0,00 på båda cirklarna mot >= 0,95, och det korrigerade p95-felet i 3D är 280,6 m (300 km), och 293,0 m vid 600 s latens, mot <= 1,5 m. Decimetertröskeln (K4) kunde inte klaras vid källornas kodbrus på 0,30 m, vilket speglar en konflikt mellan källorna och inte ett modellresultat. K6 klaras (kvot 1,39 mot <= 1,5), men som en kvot mellan två geometridominerade tal är den ett belägg om dekorrelation i ingendera riktningen. Orsak: satelliternas banelement är inte offentliga, och med de ILLUSTRATIVE banelementen i trädet delar en användare och stationen fyra satelliter över 5 grader endast under 8,2 % (300 km) och 6,3 % (600 km) av epokerna, vid nästan singulär geometri (okorrigerat p95 3,8 km mot källornas < 10 m). Källornas simuleringar använde ett filter, en höjdbegränsning och tre satelliter i gemensam sikt, vilket ögonblicksvarianten inte modellerar. Jämförelsen varken bekräftar eller vederlägger därför det publicerade 'submeter över hela sydpolen'. Den visar att den här modellens resultat beror på banor som inte är publicerade. Inte ett påstående om något verkligt system; inte knuten till och inte rekommenderad av någon myndighet | 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 med samtidiga felhypoteser för flera satelliter | araim_reference::add_v42_subset_plan: regeln i ADD v4.2 för bestämning av delmängder (P_THRES, FC_THRES, övervakade delmängder med minst borttagna först) generaliserad från par till samtidiga kombinationer av upp till max_order satellit- och konstellationshändelser, med den exakta förhandsfördelningen P_no fault prod q_e; add_v42_protection_levels_to_order kör skyddsnivåvägen i ADD v4.2 på den (ordning 2 är exakt den befintliga vägen). raim::araim_subset_raim (tillval): avancerad RAIM över den hypotesmängden, där varje övervakad delmängd är ett läge (p_fault, T, b, sigma) i integritetsrisksumman, delmängder som inte går att observera flyttas till den ej övervakade risken, budgeten skalas med ADD:s fördelning av den ej övervakade risken, och delmängden med störst normaliserad separation rapporteras när ett fel upptäcks. Förhandsfördelningar som kräver djupare delmängder än max_order avvisas, trunkeras aldrig | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Intern konsistens (InternalConsistency): ordning-2-reduktionen till den MAAST-kontrollerade ADD v4.2-vägen, oberoende omhärledning av a priori-sannolikheterna och ett konstruerat tvåsatellitsfel. Ingen MAAST- eller RTKLIB-körning utöver par har gjorts, så de djupare hypotesmängderna och skyddsnivåerna för delmängds-RAIM är inte externt kontrollerade. araim_subset_raim delar araim_dual_raims förenklingar (en sigma för integritet och noggrannhet, en klocka, den enkla normalsvansen): den är inte ADD-konform | 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 vid sidan av kvalitetsmåtten för klock-holdover | Den valfria sektionen [integrity] i klockslaget (clock_integrity::run): från en angiven plats och förinställningar för konstellationer (geometry::sky_geometry), vid varje integritetsepok medan GNSS-tidslinjen inte är nekad, snapshot-RAIM (raim::snapshot_raim: paritets-chi-två-test, skyddsnivåer med lutning) på satelliterna över masken med slumpmässigt dragna gaussiska residualer med angivet sigma och en valfri angiven bias; ett separat integrity_fom-block med utlåtanden per epok, skyddsnivåer och tillgänglighet. Nekade epoker rapporteras som otillgängliga, extrapoleras aldrig; kvalitetsmåtten för holdover är oförändrade och utan sektionen är utdata identiska byte för byte | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Intern konsistens (InternalConsistency): skyddsnivåerna är de från snapshot_raim, som är validerad mot RTKLIB på sin egen rad, omräknade på samma geometri; beteende utan fel och med injicerat fel. Himlen är en representativ förinställd geometri (inte en daterad almanacka), residualerna är syntetiska och sigma, varningsgränserna och sannolikheterna är angivna indata; inget här är ett påstående om en verklig mottagares tillgänglighet | 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 |
| Rumslig, brusig observerbarhet av bågsträcka för flera familjer av cislunara banor | Tröskeln för observerbarhet av bågsträcka i cislunar rymd i den RUMSLIGA CR3BP med sex tillstånd i stället för den plana med fyra tillstånd, över familjerna DRO, L2-halo och L2 nära-rätlinjig halo, med mätbrus som går in i Gramianen och TVÅ kriterier rapporterade eftersom det inte finns något enskilt ärligt: det publicerade rangkriteriet, som bevisligen är invariant mot ett homoskedastiskt mätsigma (blekning multiplicerar observerbarhetsmatrisen med en skalär, vilket lämnar det relativa singulärvärdesspektrumet och därmed rang, defekt och konditionstal oförändrade), och ett skattbarhetskriterium — den första båge där den formella 1σ-osäkerheten i positionen för chief-satellitens begynnelsetillstånd understiger en angiven gräns — vilket är det som faktiskt rör sig med bruset. Varje tröskel bär det epokrutnätsintervall den ligger i; ett kriterium som inte nås är null med en orsak. Plant läge förblir standard och familjer utanför planet avvisas där i stället för att plattas ut till ett tillstånd som inte kan representera dem | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Ett oberoende radtrappstegsrang genom Gausselimination med partiell pivotering bekräftar varje utfall för sextillståndsrang — en annan algoritm som inte delar någon kod med eigen-/SVD-vägen som testas. Tillståndsövergångsmatrisen 6×6 för CR3BP som den här sätter ihop har sin egen ReferenceImpl-kontroll mot SciPys variationsintegration, och begynnelsevillkoren för halo/NRHO kommer från en korrektor som återskapar den publicerade södra L2-banan 9:2 för Gateway. Det befintliga filtret för kvadratrotsinformation (SRIF) räknas uttryckligen INTE som stöd: det använder samma Jacobianer och reduceras till samma normalmatris, så det är en konsistenskontroll mellan två numeriska maskiner, och den emitterade tilläggsetiketten säger det. INTE externt förankrad, och ExternalDataset avvisas därför i stället för att lånas från STM:ens rad: tröskelbåglängderna beror själva på den MODELLED konstellationsutformningen, epokrastret och — mätbart, med upp till 40× — på toleransen för singulärvärden. Det publicerade plana värdet 2,09 h återskapas exakt vid rel_tol = 1e-6 och är självt toleransberoende (10,25 h vid 1e-4, 0,42 h vid 1e-8), vilket är en egenskap hos kriteriet och inte hos banan. Ingen offentlig datamängd publicerar en tröskel för observerbarhet i båglängd för en vald cislunar konstellation. MEASURED-RESULTAT: den rumsliga sextillståndströskeln är 22,17 h för L2 NRHO och 40,42 h för L2 halo, och FINNS INTE för den plana DRO-familjen som det publicerade påståendet härleddes på — rang 4 av 6 med datumdefekt 2 och två exakt nollställda egenvärden, en strukturell defekt som ingen båglängd botar | 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) |
| Fel i prediktion av jordorientering i operativ stil, uppmätt förutsagt mot slutligt | En anpassning med minsta kvadrat av bias plus ändringstakt över ett släpande fönster plus de huvudsakliga periodiska termerna — årlig, halvårlig och de två huvudsakliga zonala tidvattnen för UT1; Chandler, årlig och halvårlig för polen — extrapolerad med den sista residualen i fönstret förd framåt: den klass som IERS Bulletin A använder, i stället för den persistensprediktor som den publicerade horisonten vilade på. Poängsatt på det enda ärliga sättet: en prognos för T+h byggd av snabba Bulletin A-rader vid eller före T, mätt mot den SENARE publicerade slutliga Bulletin B vid T+h, med persistens poängsatt över samma epokmängd mot samma slutliga värden bredvid. En målepok utan publicerat slutligt värde utelämnas i stället för att poängsättas om mot den snabba kolumnen; en periodisk term som fönstret inte kan begränsa rapporteras som förkastad med de cykler den faktiskt spänner över; ett ofullständigt fönster avvisas i stället för att tyst förkortas | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Tre oberoende vägar, ingen av dem ett publicerat tal för prediktionsnoggrannhet. (1) En analytisk signal med kända koefficienter — det enda sättet att öva den periodiska maskineriet, eftersom ingen incheckad serie är tillräckligt lång för att rymma en årsterm. (2) Lärobokens minsta kvadrater-lösning i sluten form, annan algebra än den matrislösning som testas, på verkliga rader. (3) De äkta arkiverade prediktionsraderna ur Bulletin A som den verkliga produkten för 2026 publicerar, jämförda per ledtid som en ÖVERENSSTÄMMELSESTATISTIK och uttryckligen inte som ett fel: 0,256 ms vid 1 dygn, 0,695 ms vid 2 dygn, 1,252 ms vid 3 dygn, och driver till 3,885 ms vid 9 dygn. Det här är alltså Bulletin A:s KLASS, nära vid kort ledtid, inte Bulletin A. De predikterade-mot-slutliga residualerna är verkliga uppmätta storheter över verkliga IERS-rader, men deras storlek kontrolleras bara mot jämförelsens RIKTNING, aldrig mot ett av IERS publicerat noggrannhetstal — att läsa en verklig produkt är proveniens, inte en oberoende referens. MEASURED: dag 1 ger den operativa prediktorn 3,78 m fel i månsystemet mot persistensens 11,39 m (3,01×), dag 2 10,23 m mot 21,72 m (2,12×), dag 3 20,33 m mot 30,57 m (1,50×) — och den är SÄMRE bortom tre dygn (0,87× vid 5 dygn, 0,43× vid 10), vilket rapporten emitterar i stället för att bara visa de horisonter som smickrar den. INTE återskapat: det autoregressiva residualfiltret och den tabellerade reduktionen av zonala tidvatten, det operativa fönstret på 365 dygn kan inte nås med de incheckade data, och INGEN arkiverad tidigare utgåva av serien finns i det här förrådet — så tabellen över arkiverade utgåvor redovisar inga rader i stället för att poängsätta en syntetiserad. 0,30 extern jämförelse, ett fynd (förblir MODELLED): poängsatt mot samma slutliga serier över 178 arkiverade Bulletin A-utgåvor med cratens standardfönster på 15 dygn är prediktorns UT1 MAE 2.4x till 12.6x Bulletin A:s vid 1 till 10 dygn (tröskel 1.5x) och 5,32 ms vid 10 dygn, utanför intervallet 0,36 till 3,13 ms för den 2:a EOP PCC; polen är 1.5x till 1.85x Bulletin A:s (inom 1.5x endast vid 6 och 7 dygn); 19 av 21 förhandsregistrerade villkor misslyckas. Rättelse till väg (3): raderna för produkten 2026 som den jämfördes med bär IERS-flaggan I (uppmätt), inte P, så de överensstämmelsetalen gäller mot uppmätta snabba värden och inte mot Bulletin A-prediktioner. 0,30 omgång 2, en prediktor med minsta kvadrater plus autoregression med de zonala tidvattnen borttagna analytiskt, mot 178 arkiverade Bulletin A-utgåvor vid tröskeln från omgång 1 (förhandsregistrerad c93605b4), ett fynd (förblir MODELLED): 12 av 21 villkor håller; UT1 MAE är 1,73 till 2.11x Bulletin A:s vid 2 till 10 dygn (tröskel 1.5x) medan polen ligger inom 1.27x vid varje ledtid. 0,30 revidering: med den fristående indatan nu klassificerad efter IERS-flagga gäller överensstämmelsetalen för väg (3) mot verkliga Bulletin A-prediktioner (0.256/0.695/1.252/3.885 ms vid 1/2/3/9 dygn mot snabba rader -> 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) |
| Lunart datum för referenssystem från en observationskampanj | Det sjuparametriga Helmert-datumet propagerat från en SIMULERAD OBSERVATIONSKAMPANJ i stället för återskapat från en injicerad transform. Jordstationer observerar en källbelagd katalog över beacons på månytan enligt ett uttryckligt schema; de lunara VLBI-fördröjningspartialerna ackumuleras till en Fisher-informationsmatris för beacon-koordinater och förs genom Helmert-utformningen A = [I₃ | [p]ₓ | p] till H = AᵀM_bA, så att den rapporterade datumnoggrannheten är en funktion av observationsprogrammet — exakt linjär i fördröjningssigma och monoton i bågen genom den libration som rapporten MÄTER. Datumdefekten är själva ämnet och inte en fotnot: rang, defekt, konditionstal, spektrum, ej observerbara riktningar i basen med sju parametrar, den svagaste riktningen även vid full rang och varje parameters andel av den redovisas vid varje körning, och varje parameter som kampanjen inte begränsar publiceras som NULL med en status. Korrelationen mellan beaconfel är MEASURED, inte antagen — exakt noll med stationerna fixerade, och redovisad med sin kostnad när de skattas. Kan köras som scenariotypen lunar-frame-campaign |
ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Identiteter i sluten form och en oberoende väg i förrådet, utan att någon extern oberoende referens görs gällande. Helmert-utformningen — den enda nya derivatan i modulen — härleds på nytt genom central finit differens av lunar_frame_realise::apply_helmert, en väg som inte delar något uttryck med den analytiska formen. Ackumuleringen den sätter ihop är lunar-vlbi-fims, vars Jacobian differensieras finit mot lunar_vlbi::vlbi_delay_s där, och vars linjäralgebrakärna är separat externt förankrad mot numpy i tests/fim_observability_reference.rs — den här raden lånar ingendera statusen. Fysikens oberoende referens är strukturell snarare än numerisk: en partialderivata av fyrfördröjningen är närfältets DIFFERENS mellan två nästan parallella enhetsvektorer, så den sämst bestämda translationsriktningen MÅSTE vara den kroppsfasta riktningen mot jorden, och testet hävdar det beräknade svaret mot den separat uppmätta riktningen. MEASURED: kampanjhärledd translationssigma 6,3975 m mot scenariots med injicerad transform återställningsfel 0,3125 m (20,5× snävare), medan rotation och skala går ÅT ANDRA HÅLLET med 2,32× och 13,5× lösare — den injicerade vägen antar en isotrop sigma och sprider därför sitt fel jämnt över sju parametrar, vilket fördröjningsobservabeln inte gör. Rang 7/7 men konditionstal 3.8e5, med en riktning som är 99,57 % ren translation mot jorden och fyrtio gånger sämre än någon annan. VAD DEN HÄR RADEN INTE PÅSTÅR: att kampanjtalet är rätt i absoluta termer. Den visar att talet nu HÄRLEDS ur ett schema, en geometri och en felmodell och inte ur ett planterat svar. Förblir ReferenceImpl/MODELLED: det finns inget publicerat par av lunär VLBI-kampanj och datumkovarians, stationsnätverket och fördröjningssigman är ILLUSTRATIVE indata (fyrkatalogen har källa, kampanjen inte), observationerna behandlas som oberoende medan en verklig sessions troposfär och klocka är korrelerade mellan närliggande skanningar, och efemerid, klockor, troposfär och jordorienteringsparametrar hålls FASTA. 0,30 extern jämförelse, ett fynd (förblir MODELLED): med varje Jacobianrad för fyrar återbyggd ur ljustider från NAIF SPICE (DE440, ITRF93, MOON_ME; förhandsregistrerad 50863551) stämmer schemat, Helmert-rangen, datumsigmorna (inom 4.7e-3), konditionstalet, den svagaste riktningen (0,07 grader), libration-svepet och bågordningen på sex scenarier inom de förhandsregistrerade 1 % / 0,2 / 0,05 graderna. NumPy på den incheckade motorns Jacobian stämmer till 3e-14 där stationerna är fasta. Med skattade stationer avviker det med 6.8e-6 mot förhandsregistrerade 1e-9, vars premiss om konditionstal var fel (Helmert-konditionstal 2.1e8; oberoende NumPy-vägar avviker med 3e-6; ett bidrag från motorns reservväg med pseudoinvers på 1e-9 är inte uteslutet), så raden befordras inte på den förhandsregistreringen. 0,36 omregistrering vid en konditionsskalad tröskel (förhandsregistrerad b887eb05; t = max(1e-12, 10 kappa 2^-53) ur konditionen för den gemensamma informationen och dess Helmert-reduktion), ett fynd (förblir MODELLED, NOT MET): steg 0 utesluter reservvägen med pseudoinvers för gapet på 6.8e-6 (ingen matris uppströms Helmert-matrisen faller tillbaka i de sex ursprungliga scenarierna, snävaste marginalen en faktor 2,6), SPICE-benet håller fortfarande på alla sex, och NumPy stämmer inom tröskeln på sex av åtta scenarier (standard, de två bågarna, 3x fördröjningssigma, den kollinjära defekten och den nya körningen med fasta stationer den 2026-12-01; sämst 0,13 av sin tröskel). Det misslyckas på stations_estimated (datumsigmor upp till 6.8e-6, konditionstal 9.1e-6, norm med bortkastat oberoende 3.5e-6, mot t = 5.9e-7), och på det nya datumet har sydpolsfyren ingen observation, så fyrinformationen är rangdefekt (reservväg med pseudoinvers uppströms Helmert-matrisen i båda de nya scenarierna) och den oförändrade NumPy-referensen kan inte utvärdera stations_estimated_fresh (singulär matris). Resultat: 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) |
| Bekräftelse från oberoende skattare av tröskeln för bågsträcka i cislunar rymd | En skattare med batch-minsta kvadrat som ÅTERSKAPAR chief-satellitens begynnelsetillstånd från simulerade mätningar mellan satelliter över växande prefix av samma epokrutnät som tabellen rang mot båge använder, med mätpartialerna tagna som centrala finita differenser av den sammansatta framåtmodellen. Den använder ingenting av det maskineri som tröskeln mättes med — ingen analytisk jakobianrad, ingen variationell tillståndsövergångsmatris, ingen singulärvärdes- eller egenvärdesuppdelning, ingen rangtolerans, inget filter med kvadratrot av informationen — och delar bara dynamiken, begynnelsevillkoren, den skalära observabeln och epokrutnätet, vart och ett namngivet i det utsända dokumentet. Två kriterier, båda svepta: återställning utan brus (rangens motsvarighet) och skattbarhet med Monte Carlo (skattbarhetens motsvarighet, mätt mot en känd referens i stället för förutsagd ur en kovarians). Kan köras som scenariotypen cislunar-arc-recovery |
ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — En separat estimator i den här kodbasen med en annan algoritm och en disjunkt kodväg: icke-linjär viktad Gauss–Newton med finita differenser som partialderivator, vars utfall läses som ett uppmätt tillståndsåterställningsfel i km och mm/s. Den har inget uttryck gemensamt med Gramianens väg via rang och kovarians, och separationen TVINGAS FRAM av en källtextvakt i stället för att påstås. MEASURED på det publicerade plana DRO-rastret: ESTIMERBARHETSkriteriet är CORROBORATED — den uppmätta Monte Carlo-gränsen är 5,739130 h mot den formella 5,739130 h (kvot 1,0000), och det uppmätta RMS återskapar den formella 1σ över 21 båglängder till en geometrisk medelkvot på 0,9804. RANGkriteriet är NOT corroborated som gräns för återställbarhet: estimatorn återställer från 0,782609 h mot Gramianens 2,086957 h, kvot 0,375, och vid 1,826087 h — det sista prefixet som rangavläsningen poängsätter till 3 av 4 — återställer till 1.96e-5 av den a priori-förskjutningen. Återställningsgränsen är oflyttad över tre tiopotenser av sin egen gräns medan rangtröskeln spänner från 'aldrig' till 0,782609 h över fyra tiopotenser av rel_tol, och de två sammanfaller exakt vid rel_tol = 1e-8. Det spannet registrerades först som att det nådde 0,260870 h; det talet var en ARTEFAKT, framställd av en rangavläsning som räknade 4 riktningar från 2 mätrader under f64-brusgolvet, och det rättas här i stället för att få stå kvar. Rangavläsningen begränsas nu av Sylvesters olikhet med skälet emitterat, och det rättade spannet mättas vid exakt den båge där den oberoende estimatorn återställer, vilket stärker den här radens korsvalidering i stället för att försvaga den: det publicerade 1e-6 är en konservativ KONVENTION för singulärvärden och inte ett påstående om återställbarhet. Samma mönster rumsligt: NRHO 9,290323 h mot 21,677419 h, halo 22,978723 h mot 39,829787 h, med estimerbarhet som stämmer exakt i båda. Sextillståndsfallet för plan DRO återställs vid ingen båge, och återskapar oberoende den familjens strukturella datumdefekt ur en estimator som inte fått veta något om den. INTE externt förankrad — dynamiken och begynnelsevillkoren delas med analysen som testas och ingen offentlig datamängd publicerar en sådan tröskel — så ExternalDataset avvisas | 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) |
| Lunar servicevolym från verklig, hämtad konstellationsgeometri | Tar emot en tabellerad månscentrerad tillståndsefemerid (utvärderingen av en SPK/BSP-kärna) eller en publicerad konstellationsdefinition bakom ephemeris_path, kör samma svep över täckning / DOP / skyddsnivå mot den och sänder ut det krav på σ_URE som den innebär BREDVID de oförändrade illustrativa keplerska och perturberade resultaten, med skillnaden som en egen namngiven storhet. Varje siffra bär en proveniensklass som skiljer kärnhärledd från härledd ur publicerade element och från modellerad, så att de aldrig kan förväxlas i ett citat längre fram |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — GEOMETRIN är extern och hashad: tre fixturer vars tal kommer enbart från dokument hämtade med URL, hämtningsdatum och SHA-256, som kan genereras om av incheckade generatorer vilka verifierar uppströmshashen och AVBRYTER i stället för att emittera ett tal — referenskonstellationen för LANS-interoperabilitetsdemonstrationen (NASA NTRS 20250009447, SHA-256 d1b916be…), fallstudierna för LNCSS (NAVIGATION 70(4) navi.613, CC BY, SHA-256 4e294687…), och en äkta flugen farkostefemerid för LRO, Danuri, Chandrayaan-2 och CAPSTONE utvärderad ur JPL:s egna rekonstruerade kärnor via Horizons. INGEN kärna för en lunär navigationskonstellation finns offentligt — Moonlight/LCNS, LCRNS och LNSS flyger inte och NAIF publicerar inget för dem — och ingen har hittats på. Det HÄRLEDDA kravet på σ_URE har INGEN extern oberoende referens (ingen publicerar den räckviddsnoggrannhet som en lunär HPL på 50 m kräver över den här servicevolymen), så det kontrolleras mot sin egen algebraiska identitet och, oberoende, genom att hela svepet körs om vid det beräknade kravet och bekräftar att tillgängligheten växlar där. MEASURED: den publicerade utformningen med 8 satelliter behöver σ_URE 2,9044 m vid 100 % täckning mot den illustrativa konstellationens 0,3591 m vid 37,85 % — en 8,09× revidering av ett publicerat tal enligt programregel R4. Den kvalitativa slutsatsen består (LNIS-klassens 30 m sluter fortfarande inte en sydpolär HPL på 50 m) men underskottet var överdrivet åttafaldigt. LANS-demon med 5 satelliter ger NOLL sampel av skyddsnivå — fem satelliter kan inte ge de sex i sikt som en hypotesmängd för enkelfel behöver — och kravfältet är FRÅNVARANDE och inte fabricerat; likaså för de fyra verkliga farkosterna vid 0 % täckning. InternalConsistency är den ärliga sorten: INDATA är extern och hashad, men storheten som den här raden handlar om är bara validerad mot sig själv. 0,30 extern jämförelse, ett fynd (förblir MODELLED): mot LNCSS fallstudiestatistik i navi.613 på 346 rasterpunkter hamnar 4 av 12 tillgänglighetsstatistiker utanför de förhandsregistrerade 2 procentenheterna (fall A: -4.0, +22,5 och -3.6 pp; fall B: -12.1 pp). Troliga orsaker: element lästa i fel system, tvåkropps-Kepler över 15 dygn mot artikelns ospecificerade kraftmodell, och ett raster som inte går att reproducera ur texten. PDOP-delen kunde inte utvärderas (LANS skriver inte ut någon numerisk statistik); jämförelsetestet är incheckat som ignorerat. 0,30 omgång 2, ett fynd (förblir MODELLED): mot en Orekit 12,2 / Hipparchus 3,1-referens som beräknar hela rapporten (Orekit-propagering, DOPComputer för synlighet och DOP, Hipparchus-sammansatta MHSS-skyddsnivåer, kravet löst per sampel; förhandsregistrerad d3ce97b2) på alla fem hämtade geometrier och två raster stämmer 155 av 160 värden inom de förhandsregistrerade trösklarna (2 pp, 5 %, 1 %), inklusive kravet på sigma_URE för LNCSS A och C (3,879072208 m på båda sidor för fall A) och det frånvarande kravet för LANS och omloppsfarkosterna. LNCSS B på det täta rastret misslyckas på sin värstasampelstatistik (sigma_required 0,000923 mot 0,001511 m, hpl_max 1.63e6 mot 0.99e6 m) där nästan singulära geometrier (PDOP omkring 1e6) förstärker överensstämmelsen på meternivå i position; dess p95-krav stämmer (1,6343 mot 1,6357 m). Kravet för sämsta sampel är illa ställt på degenererad geometri. Mot navi.613: 4 av 12 fortfarande utanför 2 pp (fastlåst) | 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 |
| Enhet och proveniens deklarerade för varje rapporterad storhet | Ett maskinläsbart schema som anger enhet, proveniensklass och definition för varje numeriskt fält i varje scenariorapport, plus en enda global spärr som kör varje registrerad scenariotyp och underkänner om ett utsänt numeriskt fält saknar någotdera. Proveniensvokabulären är sluten och varje klass bär en evidensnivå, med två klasser som avsiktligt avbildas på inherits-scenario-label och depends-on-input i stället för att tilldelas en nivå som klassen inte bestämmer |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Det emitterade dokumentet självt: varje numeriskt löv måste motsvara en post i det dokumentets eget enhetsblock. Det finns inget externt enhetsregister att kontrollera en DEKLARERAD enhet mot, så en deklarerad enhet är ett granskat påstående och inte ett verifierat — grinden verifierar FULLSTÄNDIGHET och KORREKT FORM, inte sanning, och validerad vore fel eftersom ingenting externt bekräftar att m är rätt enhet för ett fält som heter _m. En oberoende namnsuffixkorskontroll kördes över de 1 434 fält som var beskrivna VID DEN TIDPUNKTEN: av de 691 som bär ett enhetsbärande suffix avviker 40 från den deklarerade enheten och alla 40 är förklarade (suffix för per sekund, minima, aperturssekunder, newtonmeter mot ett nanometerliknande suffix), så ingen felaktig enhet kom fram. Den korskontrollen har inte körts om sedan dess, och täckningen har vuxit förbi den — talet lämnas som det som faktiskt mättes i stället för att anges om vid den nuvarande totalen. Vid den ändringen (0.27.0) gick täckningen från 7 av 56 slag till 60 av 61, och från 389 av 1354 fält till 1 742 av 1 744 (docs/field-units-schema.json, som en kontroll av inaktualitet håller aktuell). INGET slag återstår utan täckning (tak 0, FUT-28, 0,36): det sista var sweep-nd, där två av kolumnerna anges av anroparen så att deras enheter är data; de beskrivs nu som mixed - see note och enheten för varje position läses ur det SVEPTA paketets egen enhetstabell in i key_units och metric_units (eller tas från axelns deklarerade unit, som måste stämma med paketets när båda finns; null när ingen finns, angivet och inte gissat). cislunar-observability var det näst sista, och kom bort från listan när dess släppta dokument fick ett enhetsblock: additivitetsfästet som hade namngett units som en förbjuden nyckel BEVISAR nu i stället att tillägget är additivt — ta bort blocket igen och dokumentet hashar fortfarande till de två konstanter som frystes innan det fanns, så ett släppt värde som rört sig under tillägget misslyckas fortfarande. Arbetet fann också tolv enhets- eller dokumentationsdefekter i befintlig kod, som rapporterades och inte åtgärdades under 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 |
| Geodesi för lunar referensstation: tillagd retroreflektor och VLBI-beacon mot datumet med fem grupper | Valfria indata extra_reflectors och extra_beacons i scenariot lunar-llr-datum lägger till ett block station_geodesy: Helmert-informationen för de fem grupperna från det arkiverade urvalet av lunar laser ranging plus den information som en tillagd retroreflektor (avståndsmätt vid de arkiverade normalpunktsepoker då mätstationen är över sin horisont, var och en med den normalpunktens arkiverade vikt) och en tillagd VLBI-beacon (observerad av nätverket och schemat i lunar-frame-campaign med jordstationerna fixerade, genom fördröjningspartialerna i lunar-vlbi-fim) på angivna platser lägger på det sjuparametriska datumet, omlöst, med varje Helmert-parameters 1-sigma före och efter, deras kvot, normerna före och efter samt de yttersta egenvärdena för Fisher-differensen. Om de saknas eller är tomma är rapporten oförändrad | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Endast intern konsistens: varje tillagd plats är en distinkt punkt och en laseravståndsmätning eller en VLBI-fördröjning från en fast station berör en punkt, så dess information A_p^T M_p A_p är positivt semidefinit och adderas; testet kontrollerar Fisher-differensen och varje varians mot det. Resultatet för fem nätverk är den befintliga raden med verkliga data och är oförändrat. Den tillagda reflektorn återanvänder epoker som schemalagts för de fem befintliga nätverken, ett ILLUSTRATIVE schema, och den tillagda fyrens nätverk, schema och fördröjningssigma är de ILLUSTRATIVE indata från lunar-frame-campaign; platsen är en ILLUSTRATIVE sydpolär position. En sydpolär plats ser jorden lågt vid horisonten eller inte alls, vilket de befintliga testerna av siktvinklar uttrycker; ingen av platserna avståndsmäts kontinuerligt. Talen är Cramér–Rao-gränser för en reducerad parametermängd, inte ett löst datum och inte ett påstående om någon verklig station | 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) |
| Spärrens integritet — ett grönt som betyder vad det säger | Tre strukturella vakter över själva verifieringsprocessen, var och en stänger en klass av defekter som nått den kanoniska spärren som en intermittent eller falsk röd. (1) Varje konstruerad temporär sökväg i Rust-källorna måste bära en komponent som är unik per anrop; ett process-id avvisas, eftersom cargo kör bibliotekstesterna som parallella trådar i EN process och pid delas av alla. (2) Varje fästpunkt byte för byte eller via hash måste deklarera, intill sig själv eller i modulhuvudet, vad den täcker och vad den avsiktligt utesluter — så att en ändring som skär över flera delar med en blick visar vilka fästpunkter som berörs och vilka som i tysthet blivit detektorer för ändringar i hela förrådet. (3) Ett grönt kan bara göras gällande från HELA sviten: scripts/gate.sh kör cargo test --all, fångar den sanna slutkoden utan någon pipe i vägen och skriver ett kvitto som namnger committen, antalet integrationsbinärer, antalet tester och varaktigheten; kontrollen före push avvisar en push vars commit inget giltigt kvitto namnger, på ett rent träd. Upprepbarhet provtas separat av scripts/check-repeatability.sh, som kör biblioteksviten N gånger och underkänner om mängden tester som klaras skiljer sig. |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Sluten form: varje vakt körs över ett fast känt dåligt utdrag som måste slå larm och ett fast känt bra utdrag som måste förbli tyst, båda litterala konstanter som detektorn inte kan påverka. De två kända dåliga utdragen är defekterna F22 och F25 i sin ursprungliga form. Det här är en INTERN oberoende referens och raden är MODELLED i enlighet med det: den visar att vakterna skiljer defekten från dess åtgärd, inte att klasserna de beskriver är uttömmande. Deras angivna blinda fläckar — delat tillstånd som inte är en sökväg, ett fastlåst värde som hålls i en kort namngiven konstant, ett sällsynt kapplöpningstillstånd som tre körningar inte samplar, och ett kvitto som vem som helst som kan skriva filen kan förfalska — är utskrivna i modulens dokumentation i tests/source_guards.rs och i varje skripts huvud i stället för att lämnas att upptäckas | 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) |
| Sammansatt PL för tidssynkronisering — P0-sådd holdover-genomfart | PL(τ)=max(TPL_handover,HPL(τ)); nedåt halvkontinuerlig PL(0+)≥PL(0−); K(IR/2) löpande maximum; fasexponenter τ/τ³/τ⁵ | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Egenskapstester (monotonicitet, ingen nedgång vid överlämning) + exponentlint mot holdover::coast_phase_variance | src/integrity/composed_pl.rs | integrity::composed_pl::tests (monotone, P0-floor, K(IR/2), exponents, lower-semicontinuity) |
| Sammansatt PL för tidssynkronisering — LIL a.s.-hölje (omöjlighet + konsistens) | Ingen ändlig värsta-fall-holdover (Brownsk sup divergerar); IR-fördelad HPL förenlig med Hartman-Wintner-höljet när IR→0 | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Identitet i sluten form för det nästan säkra höljet √(2Dt·lnln t) + kontroll av HPL-dominans; Baweja arXiv:2606,24210 omöjlighetsskarv | src/integrity/lil_envelope.rs | integrity::lil_envelope::tests (divergence, threshold, IR-tightening dominance) |
| Överbegränsning av integritet för spårbarhetsbias hos heterogena UTC(k) | Överbegränsning av bias per källa b = (U/k_cov)·Phi^-1(1-tail/2) + åldrande, som blåser upp en publicerad utvidgad osäkerhet av Typ B till en fördelad integritetssvans; kopplar till tpl_scalar som bias_s | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Oberoende numpy- och stdlib-statistics-återskapande av överbundna i sluten form (InternalConsistency). Serien BIPM Circular-T [UTC-UTC(USNO)] är enbart en CITERAD indata — det är SAMMA serie som redan är validerad för raden om holdover-täckning R4 och den valideras INTE på nytt här; att återskapa dess värden bevisar ingenting om R2. Den djupa integritetssvansen är modellerad. 0,30 extern jämförelse, ett fynd (förblir MODELLED): på BIPM:s filer per laboratorium för UTC-UTC(k) (102 laboratorier, 105 024 rader med publicerade osäkerheter) överskrids överbundet b = 2,576 u vid 1e-2-svansen av 50,8 % av raderna (Clopper–Pearson 95 %: 50,4 till 51,1 %) och med mer än 1 % vid 101 av 102 laboratorier. Den publicerade u är osäkerheten i BIPM:s bestämning av UTC-UTC(k), inte en gräns för avvikelsen, som rutinmässigt uppgår till många gånger u; överbundet som specificerat begränsar inte verklig UTC(k)-spårbarhetsbias. 0,30 omgång 2, ett överbundet för de realiserade UTC-UTC(k)-avvikelserna tränat på 2015-2022 och testat på BIPM Circular T-data 2023-2026 (förhandsregistrerad ca0921a4, poolad överskridning högst 1e-2), ett fynd (förblir MODELLED): den poolade överskridningen är 0,0333 (694 av 20 826 rader över 82 laboratorier; 0,0127 utan de 430 rader som per regel saknar gräns). D9 omgång 3, en poolad hierarkisk åldersgräns (utck_bound), förhandsregistrerad fb475550 och poängsatt prospektivt på Circular T-utgåvor från 465: ännu inte körd (utgåva 465 publicerades 2026-10-12 med omkring 285 testvärden; den förhandsregistrerade regeln om 1000 värden behöver utgåvor till omkring 468, och körningen behöver de arkiverade filerna per laboratorium från 2026-09-30, eftersom BIPM sedan dess har skrivit om 87 av de 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) |
| Korrelerad korskovarians för spårbarhetsbias (fördelning som är osäker vid gemensamt läge) | Korskovarians för bias av storlek N×N med rho·b_i·b_j utanför diagonalen för källor som delar en realiserare av UTC(k); BEVISAT correlated_fused_bias >= independent_fused_bias (naiv oberoende fördelning underbegränsar den sammanvägda biasen -> optimistisk -> osäker) | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Oberoende numpy-återskapande av korskovariansen och olikheten mellan korrelerad och oberoende fuserad bias (InternalConsistency). Representativ källmängd; modellerat scenario. | 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 |
| Konsistensstatistik för gemensamt läge (fel i delad referens som separationen är blind för) | Poängstatistik (1^T Omega^-1 r)^2/(1^T Omega^-1 1) ~ chi^2_1 för en förskjutning i gemensamt läge som solution separation (kontraster ortogonala mot 1) inte kan se; en förskjutning i gemensamt läge blåser upp den medan parvisa separationer förblir platta | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Oberoende numpy-återskapande av statistikan + egenskapstest att en gemensam injektion blåser upp den (InternalConsistency). Modellerat scenario. 0,30 omgång 2 (förhandsregistrerad f9aa360d), blockerad (förblir MODELLED): numpy 2.3.5 LAPACK gesv återskapar statistikans värde på 261 incheckade fall (inom 3.5e-15 välkonditionerat, 1.2e-9 vid konditionstal upp till 6.1e7); nollagen chi-två(1) är en citerad sats och de platta parvisa separationerna en identitet utan motorutdata att jämföra med, så avgränsningen väntar på ett beslut från ägaren | 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 |
| Klassificering av nollrum för lunart datum (rangadditivitet för LLR + lyft av defekt genom libration) | Klassificering av det interna avståndsmätningsproblemet för datum: en enda avståndsobservation bidrar med rang 1 (nollrum med 6 dimensioner); paret origo-X och skala är nästan noll och fysisk DE440-libration lyfter defekten till noll medan paret förblir nästan degenererat | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Av motorn återskapad geometrisk struktur plus Schur-identiteten 2x2 i sluten form; konsistent i STRUKTUR med Sosnica et al. 2025 (arXiv:2510,15484), vars redovisade storlekar INTE återskapas här. Klassificeringen är strukturell; korrelations- och CRLB-storlekarna under verklig geometri är MODELLED (reflektorkoordinater och orientering hålls fasta). 0,30 extern jämförelse, ett fynd (förblir MODELLED): mot Sosnica et al. 2025 ligger Fisher-korrelationen mellan origo och skala för avstånd (-0.993 / -0.988) inom 0,05 från den publicerade -0.97, men på artikelns egen geometri med fem reflektorer är Helmert-korrelationen med lika vikt och 7 parametrar -0.78 (det publicerade värdet vilar på fel per reflektor som artikeln inte skriver ut), och CRLB för origo (0,6 till 1,2 mm vid 3 mm avståndsbrus) är 96 till 98 % under artikelns 3,07 cm mot en tolerans på 20 %. Storlekarna återskapas inte | 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 |
| Information om lunart datum från flera tekniker (LLR + lunar VLBI + avstånd till omloppsfarkost) | Datum-jakobianrader för avstånd jord–reflektor med LLR, differentiell fördröjning med lunar VLBI mellan två stationer och avstånd från omloppsfarkost till beacon över det 7-parametriska datumet, kombinerade till en enda konsekvent förkonditionerad Fisher-matris; visar att spårning utanför radialen (omloppsfarkost / djupvarierad) bryter degenerationen mellan origo-X och skala där tvärgående VLBI hjälper endast indirekt | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Korskontroller mellan analytiska och finita differenser av varje tekniks partialderivator (interna); förbättringens RIKTNING är ett geometriskt faktum. Fyrars placeringar, scheman och brus är MODELLED/representativa (se 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) |
| Underlag för geometri av lunart LLR-datum (reflektorer i huvudaxelsystem, markstationer, analytiska avståndspartialer) | De fem retroreflektorgrupperna på närsidan i meter i kroppssystemet PA och markstationerna för LLR i geodetiska koordinater; placering av reflektorerna från kropp till tröghetssystem genom DE440 PA-orienteringen; analytiska partialer av avståndet jord–reflektor med avseende på det 4-parametriska datumet; och den Fisher-matris som bara bygger på LLR och uppvisar degenerationen mellan lunocentre-X och skala som motiverar analysen med 7 parametrar | ExternalDataset | en delpåstående är externt kontrollerad, men hela förmågan sätter ihop modellerade delar, så förmågan förblir modellerad — Beräkningen kontrolleras internt: varje analytisk partialderivata mot en finit differens, och nolldatumfallet mot det nominella avståndet. KATALOGEN kontrolleras externt och oberoende - koordinaterna för huvudaxlar i DE440 (Park et al. 2021, tests/fixtures/llr_geometry/de440_retroreflectors_pa.csv) korskontrolleras mot tabell 6 i memorandumet om ytkoordinater för DE430 (tests/fixtures/lunar_llr/de430_retroreflectors_pa.csv, maskinellt utvunnen ur en SHA-256-verifierad PDF av tests/fixtures/lunar_llr/generate_de430_retroreflectors_pa.py) och stämmer till 1,12 m, medan medeljordsrealiseringen av samma fem nätverk avviker med 672 till 871 m. DEGENERATIONSSTRUKTUREN kontrolleras mot ett publicerat resultat: Sosnica et al. 2025, 'Definition and Realization of the International Lunar Reference Frame', arXiv:2510,15484, som för månens huvudaxelsystem redovisar en korrelationskoefficient mellan lunocentrum-X och skala på r = -0.97, och att LLR inte når månens verkliga masscentrum med bättre noggrannhet än 12 cm på grund av den korrelationen. Den här modulen återskapar samma struktur (|corr(t_x, scale)| mellan 0,9 och 0,9999, datumdefekt <= 1) ur en Fisher-utformning med enbart LLR. Styrkandet sker över efemerider, inte som en tur-och-retur: artikeln kombinerar INPOP21a, DE430 och EPM2021, medan den här modulen drivs av DE440-libration. Det som INTE återskapas är storleken - korrelationen här är ungefär -0.988 mot deras -0.97, och CRLB för 4 parametrar är under en millimeter mot deras uppnådda golv på 12 cm, eftersom orientering och reflektorkoordinater hålls fasta här och löses där. Endast geometri och degenerationsstruktur; inget noggrannhetspåstående om ett löst datum. 0,30 extern jämförelse: de delar av den här modulen som gäller uppmätta avstånd (reflectors(), stations_itrf(), DE440 PA-placeringen och den barycentriska ljustiden llr_bcrs_one_way_m) är validerade på sin egen rad, LLR measured-range model, mot 192 ILRS-normalpunkter (RMS 2,81 m mot 10 m). Den här raden förblir MODELLED eftersom den uppmätta jämförelsen inte prövar resten av dess påstående. Den geodetiska stationskatalogen stations() avrundar APOLLO till 0,001 grader; med en geocentrisk ljustid ger den 22,7 m på samma punkter (testet reflector_ranges_against_ilrs_normal_points; 96 m med den tidigare elementvisa orienteringsinterpolationen). De analytiska avståndspartialderivatorna och den Fisher-matris som bara bygger på LLR beräknas genom llr_range_m och reflector_inertial med den analytiska månserien (ephem::moon_position, omkring 0,3 grader från GCRS) och utan ljustid | 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 |
| Degeneration mellan avstånd och klockoffset i lunar envägsavståndsmätning, och lagen om geometrisk mångfald för utformning | Degenerationen mellan radiellt avstånd per nod och mottagarens klockoffset är exakt vid 1 m till 3,336 ns (ett genom c). Marginalen för Schur-komplementet {scale, offset} (coupled_marginal_fisher) visar att i ett geometriskt varierat nätverk lyfter tvåvägsavståndsmätning marginalen ungefär med samma faktor som ett lika stort antal ytterligare envägsdata, medan lyftet med tvåväg i det idealiserade regimet med en enda nod är flera storleksordningar större. Den lag som följer: geometrisk mångfald, inte tvåvägsavståndsmätning som sådan, är det som skiljer lunar skala från tidsskalans offset vid envägsavståndsmätning; en tvåvägs eller extern tidskoppling krävs endast i regimet med låg mångfald eller en enda användare. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Marginell Fisher-matris via Schur-komplement för den kopplade informationsmatrisen, i linjär algebra i sluten form, kontrollerad mot de två gränsregimer den förutsäger. Ekvivalensen mellan 1 m och 3,336 ns är definitionen av metern via c och inte ett empiriskt resultat. Observationsnätverken är representativ modellerad geometri, så utformningslagen är ett påstående om den geometri som presenteras för den och gör inget anspråk på något fältat lunärt nätverk. | 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) |
| Representativ meny av multitekniska mätningar och den additiva Fisher-kombinationsregeln | MeasurementBlock håller en kandidatmätkampanj som ett informationsbidrag av Fisher-typ på 7x7 plus en skalär relativ kostnad; block_from_rows bygger ett ur råa datum-jakobianrader så att varje block förkonditioneras identiskt genom lunar_identifiability::assemble_multi_info; combine summerar informationen för en vald delmängd, vilket är rätt regel eftersom Fisher-information är additiv över oberoende mätningar; representative_lunar_menu levererar en deterministisk meny med fyra block (LLR, en tvärgående VLBI-limbbeacon, en omloppsfarkost på närsidan och en på bortre sidan). Den budgetbegränsade utformningsoptimeraren som använder den här menyn ingår inte i den här craten. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Additivitet hos Fisher-information över oberoende mätningar är en egenskap i sluten form, kontrollerad här mot en oberoende skriven elementvis summa och mot den ordningsinvarians och monotonicitet som följer av den. NOTERA OM BELÄGG: kombineraren hade tidigare inget test alls, och det enda testet i modulen summerade de två informationsmatriserna direkt i stället för att anropa den, så en trasig kombinerare hade lämnat modulen grön; testet går nu genom combine och misslyckas när den muteras. Alla fyrars placeringar, omloppsfarkostens geometri, precisioner per teknik och relativa kostnader är representativa val och inte uppdragsvärden (se tests/fixtures/llr_geometry/NOTICE.md), så varje degenerationsmått och CRLB-tal som nås genom den här menyn ärver den modellerade statusen hos lunar_identifiability::decompose. | lunar_techniques | lunar_techniques::tests (combine_is_additive_order_independent_and_empty_is_zero - empty selection gives the zero matrix, a single selection is the identity, a pair equals an independently written element-wise sum, and the result is invariant under selection order; adding_a_block_never_reduces_the_degeneracy_metric - monotonicity under added information; radial_diversity_beats_transverse_for_breaking_the_degeneracy - the far-side orbiter block raises the degeneracy metric more than the transverse VLBI block) |
| Tolerans för konsistens mellan leverantörer för en användare med blandade leverantörer | consistency_tolerance: inverterar en positionsbudget för användaren till ett krav per parameter på Helmert-samstämmighet mellan leverantörer (origo/skala/rotation) vid en referenshävarm, valfritt uppblåst med realiserings-CRLB för en enskild leverantör enligt P1 | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — Värstafallsgräns via triangelolikheten för verkan av Helmert-punktens Jacobian (sluten form) | lunar_interop_budget | lunar_interop_budget::tests (monotonicity in budget; RSS budget reduction under a per-provider CRLB; worked rotation tolerance at the lunar lever arm; binding-term = rotation) |
| Felbudget för lunar interoperabilitet mellan flera leverantörer och designlag för referenssystem mot efemerid | interop_budget: reducerbar (gemensam ramkoppling) mot oreducerbar (dynamik) uppdelning under konventionerna PerProvider / CommonFrameTie / CommonEphemeris, med måttet för designlagen om oreducerbar andel (~0,69 på verkliga DE440/INPOP/EPM: enbart en gemensam ramtagg lämnar kvar det dominerande golvet) | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är inte en oberoende referens — RMS-aggregering av de validerade uppdelningarna per par under varje konvention (sluten form) | lunar_interop_budget | lunar_interop_budget::tests (CommonEphemeris zeroes the budget; CommonFrameTie < PerProvider; irreducible_fraction > 0,5 on the real splits; convention ordering) |
| Bysantinsk gräns för detektering och identifiering via blockvis spark i det autonoma månnätverket med en nod per enhet (T3) | byzantine_bound instansierar kodnings- och glesobserverbarhetsgränsen för säker tillståndsskattning på nätverksgeometrin per nod: en bysantinsk peer injicerar en godtycklig linjärkombination av de mätningar den deltar i, och nätverket DETEKTERAR varje koalition av ≤ f = block_spark − 1 peers och IDENTIFIERAR entydigt varje koalition av ≤ ⌊(block_spark − 1)/2⌋, där block_spark är den minsta peerkoalition vars staplade effektiva signaturer P⊥·B_T är kolumnrangbristfälliga. Peerdetekterbarhet är FULL KOLUMNRANG hos P⊥·B_j (ett block som inte är noll men rangbristfälligt är ett attackblock skilt från noll som hamnar i range(G) och inte lämnar någon residual), inte enbart P⊥·B_j ≠ 0 | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Geometrisk instansiering av den blockvisa gränsen för spark / säker tillståndsskattning (Fawzi–Tabuada–Diggavi 2014; Shoukry–Tabuada 2016; blockvis spark enligt Donoho–Elad 2003; Candès–Tao 2005) — INTE tröskeln för konsensus 3f+1 enligt Lamport–Shostak–Pease ('Byzantine' namnger bara den godtyckliga/samverkande felmodellen). Det specifika antalet tolererade fel är en modellerad egenskap hos den representativa nätverksgeometrin, kontrollerad för självkonsistens med handkonstruerade analytiska fall och antalsformlerna | lunar_faultobs | lunar_faultobs::tests — byzantine_c3_rank_deficient_but_nonzero_is_undetectable (nollskilt men rangdefekt block ⇒ block_spark 1, f_detect 0; oberoende kolumner ⇒ block_spark 2, f_detect 1), byzantine_real_network_uniform_bias_is_clock_offset (en kamrat som äger alla mätningar för en nod = ett klockoffsetfel ∈ range(G), oupptäckbart, med ett tydligt spektralt gap i Gram-matrisen), byzantine_redundant_net_identifies_at_least_one (sex oberoende kamrater med en mätning vardera ⇒ block_spark 7, f_identify 3), byzantine_analytic_spark_identity_projector + byzantine_detect_identify_relations (handfallen P⊥ = I fastlåser f_detect = block_spark − 1, f_identify = ⌊(block_spark − 1)/2⌋) |
| Golv för temporal gauge vid autonomt holdover i den självrefererande månkonstellationen (T4) | holdover_floor fastställer att i ett ensemble av autonoma noder som endast är sammanbundna av mätningar mellan noderna är den gemensamma klockfrekvensen (δα_j += 1 ∀j) en fri parameter i ensembletiden som ligger i N(GᵀWG): ingen mängd ytterligare avståndsmätning mellan noder kan observera den (rate_in_gauge = true, temporal_gauge_dim = 2 tillsammans med den gemensamma offseten). Detta är det genuina holdover-golvet — den temporala motsvarigheten till positionsgaugen för det stela systemet. Att lägga till en extern absolut frekvenskoppling (en direkt länk till en referens utanför nätverket) driver ut den gemensamma frekvensen ur nollrummet (rate_in_gauge = false, temporal_gauge_dim = 1), vilket visar att golvet är en verklig gauge och inte en artefakt av oscillatormodellen | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Argumentet om fria parametrar för ensembletid (Percival 1978; Lewandowski & Thomas 1991) instansierat på det representativa nätverket per nod med verkliga DE440: ett nolltest av relativ residual för den analytiska generatorn för gemensam takt mot GᵀWG, där den tie-brutna kontrasten skiljer den verkliga gaugen från en artefakt i oscillatormodellen. Representativ modellerad geometri, inte en certifierad tidsbudget | lunar_faultobs | lunar_faultobs::tests — holdover_floor_self_ref_and_anchored (självrefererande nät: den gemensamma takten ligger i N(GᵀWG), temporal_gauge_dim 2; efter en extern rad som binder takten: takten utdriven ur gaugen, temporal_gauge_dim 1 med den gemensamma offseten kvar) |
| Gemensam/differentiell uppdelning per leverantör, enhetlig förklaring via en rangbrist och lutning på skyddsgapet (T5 / §0 / g7) | Tre aspekter av den enda uppdelningen ℝ^{state_dim} = N(GᵀWG) ⊕ range(GᵀWG), med den 8-dimensionella gaugen för datum⊕tidsskala som N(G) och de state_dim − 8 = 32 observerbara riktningarna som range(G): (T5) provider_mismatch_split klassar en gemensam bias hos flera leverantörer (∈ range(G)) som OUPPTÄCKBAR — den kräver en extern koppling — och en differentiell bias (∉ range(G)) som självövervakad / UPPTÄCKBAR; (§0) enandet består i att SAMMA blinda underrum range(G) styr den oupptäckbara felklassen, så att datumgaugen N(G) och det feldöva underrummet range(G) är en och samma geometri, inte två; (g7) slope ger Browns lutning på skyddsgapet ‖Π_obs Δx̂‖ / ‖P⊥b‖_W → ∞ för ett fel b ∈ range(G) (skattaren fördärvas utan någon paritet) och ändlig för ett upptäckbart fel | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Sluten algebra för paritetsprojektor / pseudoinvers på det representativa nätverket per nod med verkliga DE440: uppdelningen i gemensam/differentiell del, föreningen N(G) ⊕ range(G) och lutningen för Browns (1992) skyddsgap följer alla av att området annihileras, P⊥·G = 0. Representativ modellerad geometri, inte en certifierad skyddsnivå | lunar_faultobs | lunar_faultobs::tests — provider_mismatch_split_common_undetectable_differential_detectable (gemensam bias oupptäckbar, differentiell upptäckbar), slope_infinity_in_range_finite_detectable (g7: lutning ∞ för b ∈ range(G), ändlig för b ∉ range(G)), pernode_rank_is_state_dim_minus_eight (§0: rank(GᵀWG) = state_dim − 8, den 8-dimensionella gaugen är hela nollrummet med ett spektralt gap på >1e6) |
| ITU-T-masker för telekomsynkronisering med PASS/FAIL och marginal | Avskrivna gränser ur ITU-T G.8272 (07/2025) PRTC-A/B, G.8272.1 (2024) Amd. 1 (07/2025) ePRTC låst och ePRTC-A holdover (inklusive tidsfelskurvan i Table 3), G.8273.2 (2023) Amd. 2 (11/2025) T-BC/T-TSC klass A-D och G.8271.1 (2022) Amd. 3 (05/2025) referenspunkt C, vart och ett med öppet eller slutet intervall så som tabellen anger det och med varje post 'for further study' utelämnad; ett utfall och en marginal vid den bindande punkten för varje kontroll, samt tiden till dess varje budget överskrids. Kan köras som scenariotypen telecom-timing |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Transkription av de namngivna rekommendationerna (fritt nedladdningsbara från itu.int), där varje gräns bär sin tabell eller klausul, listade med varje obekräftat eller oimplementerat objekt i docs/TELECOM-TIMING.md; identiteterna för kontinuitet i brytpunkterna som tabellerna implicerar kontrolleras i testerna. En standardtranskription med kontroller av intern konsistens, inte ett överensstämmelsetest och inte en extern validering. 0,30 omgång 2 (förhandsregistrerad 970003ee), blockerad (förblir MODELLED): de tio maskvärden och tretton holdover-värden för ePRTC-A som rekommendationerna trycker som genomräknade tal (G.8272 fig. 1-2, G.8272.1 Amd.1 kl. 8.2.1 och fig. V.1-V.3, G.8271.1 Amd.3 fig. 7-2 till 7-4) återskapas inom en halv tryckt enhet, de flesta av dem tabellkonstanter eller brytpunkter; G.8271.1 fig. 7-2 märker 200 ns vid 1,3 s mot sin egen tabell 7-1 (197,5 ns). Gränserna för klass A-D i G.8273.2 har inget tryckt genomräknat värde, och brytpunktsetiketterna för ePRTC låst i G.8272.1 (på heldragna konstruktionslinjer) uteslöts av den förhandsregistrerade urvalsregeln, så dessa förblir transkriptioner | telecom_timing (MASKS, eprtc_a_holdover_limit_ns, check_curve, check_mask) | telecom_timing::tests (mask_boundaries_follow_the_tables_exactly — öppna och slutna ändar, gapet τ = 400 s i tabell 7-3 i G.8271.1, kontinuitet vid varje brytpunkt som tabellerna implicerar; a_curve_exactly_on_the_limit_passes_and_just_above_fails; eprtc_a_holdover_envelope_follows_table_3; a_coarse_record_is_not_evaluated_against_a_filtered_mask); tests/telecom_timing_reference.rs (telecom_timing_kind_round_trips_through_the_dispatch); tests/telecom_masks_itu_printed_values.rs (mask_values_match_the_numbers_the_recommendations_print; figure_7_2_label_at_1_3_s_is_not_its_own_table_value) |
| ITU-T-masker för wander-generering vid frekvenssynkronisering (G.811, G.812, G.8262, G.8262.1) | Sju MTIE- och TDEV-masker för wander-generering vid konstant temperatur för typen telecom-timing: G.811 (09/1997) PRC (autonom), G.812 (06/2004) typ I, II och III, G.8262 (10/2024) EEC Options 1 och 2 samt G.8262.1 (11/2025) eEEC (låst läge), inklusive de potenslagsdelar som tabellerna skriver (8 τ^0.5 och liknande), varje intervall öppet eller slutet så som det är tryckt, mätta genom det 10 Hz-filter som klausulerna anger (antaget tillämpat före samplingen); referensscenariot scenarios/telecom-synce-eec.toml ställer en fritt gående OCXO mot de tre EEC-maskerna. Inte implementerat: tillåtna avvikelser vid varierande temperatur, holdover, transienter, jitter och frekvensnoggrannheten i G.811 |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Transkription av de namngivna rekommendationerna (nedladdade från itu.int den 2026-10-13), varje rad omläst mot texten, med brytpunktskontinuiteten som de tryckta koefficienterna implicerar avgränsad i testerna (till exempel 40 · 10^0,4 = 100,48 ns mot platån på 100 ns i G.812 tabell 4). En standardtranskription med kontroller av intern konsistens, inte ett överensstämmelsetest och inte en extern validering. G.812 (06/2004) anges som ersatt av en förpublicerad utgåva 08/2026 och G.811 har en Amd. 1 (04/2016); ingen av dem kunde läsas, så ingen av dem är kontrollerad. Scenariot med fritt löpande OCXO överskattar oscillatorns bidrag vid observationsintervall som är långa mot en slingas tidskonstant; det säger ingenting om någon utrustnings klocka | 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) |
| Klockloggformat (RINEX clock, TimeLab ASCII, TAPR TICC) inlästa till en normaliserad fasserie | clock_log::read_input: ett parserlager som gör om en RINEX-klockfil (AS/AR-poster för en namngiven klocka, versionerna 2 och 3,00 till 3,04), en ASCII-fas- eller frekvenslogg i TimeLab-stil eller en tidsstämpel- eller intervalllogg från TAPR TICC till ett enhetligt fasrutnät, med tau0 angivet, hämtat från ett huvud eller som medianavståndet, med varje lucka, avvikande avläsning utanför rutnätet och dubblett räknad, samt en luckpolicy som antingen vägrar, tar längsta sammanhängande körning eller interpolerar linjärt; kopplad som tillval till telecom-timing-serien ([series.clock_log], som lägger till ett block clock_log) och klocktypen ([clock_log], som lägger till ett block measured med ADEV, TDEV och MTIE, tabellens SHA-256 och fasens SHA-256; runs = 1). Utan tabellen är båda typerna byte för byte identiska |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Förhandsregistrerad i tests/fixtures/clock_log/PREREGISTRATION.md (incheckad för sig, 159334f2, innan testdatat fanns); registrerad i RESULTS.md. Tre syntetiska loggar med fast frö, en per format (ett TICC-gap på tre epoker, en andra RINEX-klocka att ignorera), återlästa av en oberoende läsare skriven utifrån docs/CLOCK-LOG-FORMATS.md av samma författare: antal rutnätspunkter, gap och fyllningar lika och största fasskillnaden 0 s (tröskel 1e-13 s). allantools 2024,6 oadev, tdev och mtie på den fasen stämmer inom relativt 2.5e-14 (tröskel 1e-10) vid varje medelvärdesfaktor den utvärderar; den utvärderar inte MTIE över hela registret, vilket motorn redovisar, så den punkten per logg har inget referensvärde och tröskeln som den är formulerad uppnås inte där. MODELLED: syntetiska loggar, och läsarens referens delar författare; verkliga klockfiler från TimeLab, TICC och RINEX från instrument jämfördes inte | clock_log (read_input, MeasuredPhaseReport, MEASURED_UNITS, TELECOM_LOG_UNITS); telecom_timing (SeriesInput::clock_log); api (clock kind [clock_log]) | clock_log::tests (handskrivna loggar per format: huvuden, avgränsare, enheter, frekvensintegration, TICC-kanaler och lägen, gap och policyer, vägranden); tests/clock_log_allantools.rs (den förhandsregistrerade jämförelsen: 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) |
| Klockloggformat från linuxptp (ptp4l, phc2sys, ts2phc) och chrony (tracking, statistics) inlästa till en normaliserad fasserie | clock_log::read_input med formaten ptp4l, phc2sys, ts2phc, chrony-tracking och chrony-statistics: den loggade offseten från en servorad i linuxptp (ns, radens egen tidsstämpel inom hakparentes, avläsningar innan servot först rapporterar s2 utelämnas och räknas) eller från en chrony-tracking- eller statistics-logg (s, enligt kolumnposition, UTC-datum och tid) blir ett enhetligt fasrutnät genom samma luckpolicyer som de andra formaten; en källväljare (clock) namnger ett av flera gränssnitt, klockor eller adresser; loggarna matar telecom-timing-serien, klocktypen och typen för holdover-test |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Testdata skrivna för Kshana utifrån demonernas offentliga radlayouter, med påhittade värden (NOTICE.md i testdatamappen); ingen logg från en verklig installation har lästs och ingen oberoende referens jämför tolkningen med en annan läsare, så en layout som skiljer sig mellan demonversioner kan fortfarande vägras eller feltolkas. Skattarna som matas av fasserien är de som validerats mot allantools i raderna ovan | 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) på testdatat i tests/fixtures/clock_log/linuxptp_chrony/ |
| Holdover-test poängsatt utifrån en tidsfelsregistrering från operatören | Typen holdover-test: en tidsfelsregistrering (en klocklogg från linuxptp, chrony, TICC, TimeLab eller RINEX, eller par av time_s,time_error_ns) delas vid de två tidpunkter som operatören anger för bortfall och återkomst av GNSS i ett baslinjesteg, ett holdover-steg och ett återhämtningssteg; baslinjen mäts mot de ITU-T-masker som är skrivna för en låst klocka, och holdover mot dem som är skrivna för holdover eller en autonom klocka, ePRTC-A-holdovermasken och tidsfelsbudgetarna; holdover rapporterar den frekvensoffset enligt minsta kvadrat som systemet höll, och återhämtningen om och när |TE| kom inom ett angivet band och höll sig där under en angiven uppehållstid, med toppvärdet och det största steget. Varje gräns är den som typen telecom-timing skriver av; de två tidpunkterna är operatörens uppgift och kontrolleras inte |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Handräkning på poster byggda från formler vars lutning, steg, extremvärde och återhämtningstid är kända före körningen (testerna anger dem), samt maskerna, höljet och budgetarna i raderna för telekomtidssynkronisering ovan. Ingen laboratoriemätning av en verklig holdover har poängsatts och ingen extern oberoende referens har jämförts, så typen gör inga påståenden om någon klocka eller något system; en partner med tidslaboratorium behövs innan någon siffra per klockklass skulle kunna lyftas | 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) |
| Tillgänglighet för GNSS-signaler i Space Service Volume och bortom den, jämförd med ICG:s SSV-häfte | Tillgänglighetssvepen för typen gnss-ssv: per konstellation (GPS, GLONASS, Galileo, BDS, QZSS, NavIC) och sammanlagt, andelen (användare, epok)-par med minst en och minst fyra signaler och det längsta avbrottet, för en användare på en sfär (häftets globala skal med 2 562 punkter, 14 dygn med 1 minuts steg) eller på en bana (GEO, HEO, månöverföring), utifrån de keplerska banorna i häftets bilaga C, en konstant lägsta utstrålad effekt inom referensvinkeln utanför riktningsaxeln, jordens skymning genom sfären plus 50 km och ett tröskelvärde för C/N0; användarantenner ur häftets tabell B10 |
ExternalDataset | ett delpåstående är kontrollerat externt, men hela förmågan sammansätts av modellerade delar, så förmågan förblir modellerad — ICG:s Space Service Volume-häfte (UN OOSA ST/SPACE/75, 2018), självt en simulering, jämfört under en förhandsregistrering incheckad före körningen (xval/gnss-ssv/PREREGISTRATION.md; resultat i xval/gnss-ssv/RESULTS.md, fastlåsta av tests/ssv_booklet_results.rs, med missar inkluderade). Körning 1 på den förhandsregistrerade läsningen: konstanterna för minsta utstrålade effekt och månens tröskel stämmer (S0, S6 uppnådda); trösklarna för övre och nedre SSV, RF-tröskel, GEO och HEO är NOT MET, nästan alla genom GLONASS, för vilken häftet anger 20 och 28 grader i tabellerna B2 och B6 och 26 och 34 grader i tabell 4,2. En diagnostisk variant med vinklarna från tabell 4,2 stämmer i varje cell för övre SSV, nedre SSV och de sex GEO-uppdragen (den ersätter inte körning 1; cellerna för RF, HEO och månen missar fortfarande). De uppmätta mönstren för GPS L1-panelen återskapas inte av den parametriska ersättaren (RMS 6 till 9 dB mot en tröskel på 3 dB). Överensstämmelse visar att häftets angivna metod återskapas, inte att GNSS-signaler beter sig så | 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) |
Effekter av jonosfär, plasmasfär och atmosfär på GNSS-signaler som tangerar jorden längs limbstrålen, samt utformningen av mottagare för svaga signaler, i typen gnss-ssv |
En Chapman-jonosfär, en plasmasfär av Gallagher-typ och en neutral atmosfär (brytning av refraktivitet, syreabsorption, defokusering) integrerade längs den raka strålen mellan sändare och användare: sned total elektroninnehåll, dess plasmasfäriska del, extra fördröjning, tangenthöjd och förlusten på länkar som tangerar jorden; samt en mottagare för svaga signaler (koherent och icke-koherent integrering, databitgräns, stöd, Doppler-sökning) som sätter tröskeln för C/N0 utifrån modellerna för inhämtning och följeslingor | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Slutna former och publicerade storleksordningar i testerna (en Chapman-skikts topp och böjningen vid ytans limb, några TECU av plasmasfär på en stråle från GPS till GEO); mottagarutformningen återanvänder modellerna för inhämtning och spårningsslinga och deras tester. Ingen uppmätt data från limb-sondering eller mottagning av svaga signaler jämförs med den | 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) |
| Navigationsfilter ombord med GNSS för rymdfarkoster i hög bana och månöverföring | Läget [navigation] i typen gnss-ssv: ett utvidgat Kalmanfilter med nio tillstånd (position, hastighet, mottagarklockans bias och drift, en skala för solstrålningstryck) på pseudoavstånd vars tillgänglighet, brus och C/N0 kommer från samma länkgeometri som svepen; referensen integreras med J2, tredjekroppsverkan från solen och månen samt strålningstryck med skugga, filtret modellerar J2 och tredje kropparna och skattar strålningstrycket; rapporterar position och hastighetsfel inom och ovanför GNSS-banorna, det längsta mätningsgapet och det genomsnittliga NEES |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Simulerad sanning mot filtrets egen skattning (ett konsistent filters medelvärde för normaliserat skattningsfel i kvadrat är ungefär 3 för positionen) och determinism för ett fast frö. Ingen flygdata eller inspelad GNSS-data från hög bana jämförs; solen och månen är lågprecisa cirkulära ersättare | 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) |
| Relativ navigering för en formation av flera rymdfarkoster i en mycket elliptisk bana med GNSS | Läget [formation] i typen gnss-ssv: en chief och deputies kör var och en det absoluta filtret; deputyns position relativt chiefen skattas dels genom att de absoluta skattningarna subtraheras, dels med ett relativt filter på enkeldifferentierade pseudoavstånd för de signaler som båda farkosterna följer, med den relativa dynamiken som skillnaden mellan två olinjära banor |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Samma simulerade sanning som det absoluta filtret: det relativa filtrets fel mot det sanna relativa tillståndet, och kontrollen att det gör minst lika bra ifrån sig som att subtrahera två oberoende absoluta positionsbestämningar. Ingen flygdata för formationsflygning jämförs | 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) |
Felbudget för navigering och tidssynkronisering för en kedja av uppdragsfaser från uppskjutning till återinträde (mission-thread) |
Typen mission-thread: ett dokument med faser, var och en av åtta registrerade typer, körda i ordning med 6x6-kovariansen, klockan och referenssystemet överlämnade enligt en angiven regel (carry; inflate, vitt accelerationsbrus över ett angivet glapp på en rätlinjig modell; reacquire, dödräkning och därefter källans golv, aldrig under det, aldrig en återställning); omvandlingar av referenssystem mellan GCRF, MCI och MCMF samt av tidsskalor via TT, var och en en egen budgetrad, med månens tillstånd från ett valfritt utsnitt av en DE440-kärna och den analytiska serien som angiven reserv; marginalen mot ett angivet krav, den svagaste länken, händelserna och en tidslinjefigur. Varje tal är en angiven indata eller en modell av en sådan |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Handberäkningar i testerna (den rätlinjiga tillväxten av kovariansen, den genomsnittliga sideriska rotationen, den sekulära hastigheten hos månklockan) och, enbart för månens tillstånd, de incheckade DE440-utsnitten mot fastlåsta värden från JPL Horizons (sämst 2,6 m och 7e-6 m/s). Inga uppdragsdata jämförs med kedjan; dess faser är rader för sig. Dokumentet är en angiven kedja med ILLUSTRATIVE indata, enbart offentliga källor och inget stöd från någon rymdorganisation | 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 (the report's units block) |
Uppskjutning och stigning till en parkeringsbana med GNSS-inhämtning och bortfall (launch-ascent) |
Fasen launch-ascent: en kovarians för position och hastighet med konstant hastighet och vitt accelerationsbrus (dödräkningsklassen), en GNSS-positionsbestämning med angiven noggrannhet som tillämpas efter inhämtningstiden och utanför angivna bortfall, en klocka med bias och drift som styrs av samma positionsbestämningar, samt insättningstillståndet i parkeringsbanan |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Riccati-jämviktstillståndet och handberäkningen av prediktionen i testerna. Ingenting här modellerar en bärraket eller en mottagare; varje tal är en angiven indata | 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 |
Relativ navigering till dockningsenveloppen i låg omloppsbana runt jorden över sensorsträckor (leo-rendezvous) |
Fasen leo-rendezvous: det relativa tillståndet i målets LVLH-axlar med Clohessy-Wiltshire-övergången i sluten form, en 6x6-Kalmankovarians med vitt accelerationsbrus och positionsuppdateringar vars varians är sensorns vid aktuellt avstånd, över sträckor med en angiven sensor (ILLUSTRATIVE optisk kamera, lidar och radioavståndsmätning); dockningsfönstret är tiden från den punkt där den relativa sigman håller sig inom infångningsenveloppen till slutet av fasen. Jagarens absoluta kovarians överlämnas oförändrad och en rad anger det |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — En endimensionell handberäkning av prediktion och uppdatering i testet; Clohessy-Wiltshire-övergången är den som cw_dynamics kontrollerar mot en oberoende numerisk integration. Sensorerna är ILLUSTRATIVE och ingen verklig rendezvous jämförs | 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 |
Trans-lunar injektion och färd i cislunart rum: propagerat medeltillstånd och kovarians med spårningsuppdateringar (tli-and-cruise) |
Fasen tli-and-cruise: medeltillståndet med motorns Cowell-propagator (jordens punktmassa och J2, solen och månen som tredje kroppar, månen från trådens DE440-kärna där den täcker segmentet och solen från den analytiska serien); kovariansen med en tillståndsövergångsmatris framåtdifferens av den propagationen (den nominella körningen och sex störda körningar per segment) med vitt accelerationsbrus; TLI-brännarens storlek och riktningsfel; gnss-ssv-positionsbestämningar vars tillgänglighet och PDOP kommer från svepet över rymdtjänstvolymen längs en oskulerande bana som står i för bågen; avstånds- och avståndshastighetsspårning längs den geocentriska riktningen skalad med markstationsnätets driftcykel, med uppdatering i Joseph-form |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Liouvilles sats (determinanten för tillståndsövergångsmatrisen för den konservativa delen är ett) och en finare differens i testerna; medeltillståndet jämförs med en offentlig bana i raden nedan, som det missar. Brännfelet, uppdateringarna och kovariansen jämförs inte med någonting | 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 |
Kovarians vid återinträdesgränssnittet, korridorsannolikhet, maximal retardation och landningsområde (entry) |
Fasen entry: returfärden för tli-and-cruise utan brännare, som slutar vid återinträdesgränssnittet; banvinkeln och dess sigma ur hela kovariansen med en gradient av finita differenser; sannolikheten att vinkeln ligger inom en angiven korridor; den maximala retardationen vid den nominella vinkeln och vid båda korridorkanterna från motorns plana ballistiska punktmassa-återinträde (utstudsning detekteras) bredvid Allen-Eggers slutna form; landningsområdet från en angiven känslighet i sträckriktningen och gränssnittskovariansen tvärs banplanet. Ingen lyftkraft, styrning eller uppvärmning modelleras |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Handberäkningar i testerna (vinkelns sigma är den vinkelräta hastighetens sigma delat med farten; Gauss-massan i en korridor). Det plana återinträdet är motorns eget och Allen-Eggers-formen är en jämförelse i sluten form; inget genomfört återinträde jämförs | 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 |
Täckning och spårningsdrift för markstationsnätet för en trådfas ([ground_network] i mission-thread) |
Överlägget för markstationsnätet: stationer med en lägsta elevation, fordonets synlighet på en angiven geometri (återinträdestillståndet flugen tvåkropps med J2, månens position för färden, eller en angiven driftcykel), stationsöverlämningar som förlorar en angiven tid vardera, och den resulterande driftcykeln som förs över till uppdateringsfrekvensen för fasens markspårning; det längsta intervallet utan någon station i sikte är en budgetrad | InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Kontroller av zenit- och antipodgeometri samt den förväntade synligheten för ett avlägset mål i testerna. Inget verkligt nät, ingen antenn och inget schema modelleras | 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 |
Relativ navigering till dockning i en månbana (lunar-orbit-rendezvous) |
Typen och fasen lunar-orbit-rendezvous: en gemensam Gauss-Newton-skattning i satser för två fordon över bågen (tjugoett parametrar: båda tillstånden och bestående positionsbias i signal i rymden, gemensamma och oberoende), uppbyggd över en kvarts, en halv och hela bågen med stegfyrdelning, från en absolut positionsbestämning per fordon (AFS-pilotkodens spårningsgräns, ILLUSTRATIVE reläuppsättning) och ett avstånd över länken mellan fordonen, under cratens månkraftmodell; det genomsnittliga normaliserade kvadratiska skattningsfelet, Clohessy-Wiltshire-kontrollen på en cirkulär bana och den överlämnade 6x6-kovariansen |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Självkonsistens under en förhandsregistrering (xval/mission-thread-lunar/PREREGISTRATION.md, resultat och skattarens historik i RESULTS.md): den genomsnittliga NEES för det relativa tillståndet är 5,85 till 5,93 mot bandet 5,2 till 6,8 i fyra konfigurationer, MET på den fjärde skattarutformningen efter att tre utformningar med sekventiella filter missat; referensen och skattaren delar en kraftmodell, så detta säger ingenting om modellfel. Propagatorn den delar jämförs med LRO och CAPSTONE i en rad nedan | 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 |
Budget för landningsspridning vid en polarplats på månen (lunar-descent) |
Typen och fasen lunar-descent: en inertiell felmodell med fem tillstånd per axel (position, hastighet, accelerometerbias, lutning, gyrobias) över en driven nedstigning, stödd av AFS-positionsbestämningar (fristående eller differentiella, med fallet med tre reläer och klockstöd), en terrängrelativ positionsbestämning (motorns terrängmatchare på syntetiskt relief, eller en Cramer-Rao-gräns på en LOLA-DEM med en regel för bländarproblemet) och månens tid, med en Monte Carlo-ellips för beröringspunkten |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Den inertiella driften i sluten form, de återanvända typernas egna resultat och kalibreringen av 3-sigma-ellipsen (andelen innanför stämmer med sin förväntan) i testerna. Ingen genomförd eller testad landning jämförs | 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 |
Tillgänglighet för positionering och tidssynkronisering på ytan per plats och årstid vid månens poler (lunar-surface) |
Typen och fasen lunar-surface: reläers tillgänglighet och PDOP, synlighet för jorden och solen samt en styrd ytklocka för varje plats och årstid, med terrängsiluetten från moonlight-service-volume; en körning för en enda plats ger exakt samma tillgänglighet och PDOP som den typen, bit för bit |
ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av enheten som testas, men inte externt auktoritativ — Exakt likhet med den befintliga typen för en plats, samt monotonicitetskontroller, i testerna. Reläuppsättningen är ILLUSTRATIVE och ingen ytmätning jämförs | 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 |
Driven stigning från en polarplats på månen till en insättningsbana (lunar-ascent) |
Typen och fasen lunar-ascent: den inertiella felmodellen med fem tillstånd per axel körd över en driven stigning med specifik kraft längs banan, stödd av AFS-positionsbestämningar och månens tid, som redovisar kovariansen för position och hastighet vid insättningen som förs vidare till banan och spridningen vid motoravstängning (redovisad, inte förd vidare) |
InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Den inertiella driften i sluten form och monotonicitetskontroller i testerna. Ingen genomförd stigning jämförs | 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 |
| Propageringen med månens kraftmodell mot offentliga rekonstruerade banor för månsatelliter och cislunara banor | Propagatorn som månens typer delar (GRAIL GL0660B grad och ordning 150, jorden och solen som tredje kroppar, relativitet, DE440-månorientering) jämförd med de offentliga JPL Horizons-banorna för LRO (24 h, prov var 10:e minut) och CAPSTONE (ett varv på 6,5 dygn, prov varje timme), under trösklar som fastställdes i en incheckad fil före körningen | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätter ihop modellerade delar, så förmågan förblir modellerad — JPL Horizons rymdfarkostefemerider för LRO och CAPSTONE, mot trösklar som fastställts i förväg i xval/mission-thread-lunar/PREREGISTRATION.md (tillägg 1 till 6). LRO: MET, 33 m största 3D-skillnad och 2,4 m radiellt RMS mot 500 m och 60 m. CAPSTONE: NOT MET, en skillnad i slutposition på 136,8 km mot 25 km och en skillnad i periapsis på 28,4 km mot 10 km, orsakerna är inte isolerade. Raden är modellerad eftersom CAPSTONE-tröskeln inte nås och jämförelsen testar den delade propagatorn, inte något filter, någon signal eller budget | 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 |
Propageringen av medeltillståndet i cislunart rum mot den offentliga banan för Artemis I (tli-and-cruise) |
Propageringen av medeltillståndet i fasen tli-and-cruise (Cowell, jordens punktmassa och J2, solen och månen som tredje kroppar, månen från ett DE440-utsnitt) jämförd med den offentliga JPL Horizons-banan för Artemis I över en frirörelsebåge på 72 h från 2022-11-16 18:00 TDB, vid epoker var 12:e timme, under trösklar som fastställdes i en incheckad fil före körningen |
ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätter ihop modellerade delar, så förmågan förblir modellerad — JPL Horizons mål -1023 (NASA:s navigationsbana som flugits efter TLI), mot trösklar som fastställts i förväg i xval/mission-thread/PREREGISTRATION.md (tillägg 1 ändrar bara den begärda tidsspannet). NOT MET och fastslaget som missat: 45,3 km största positionsskillnad mot 5 km, och 0,249 m/s hastighetsskillnad vid 72 h mot 0,05 m/s. En diagnostik som skrevs efter utfallet placerar missen i fem impulsiva hastighetssteg på 0,09 till 0,22 m/s i referensen (den förhandsregistrerade bedömningen att fönstret inte innehöll någon brännare var fel); under de övriga 67 timmarna återger modellen nästa timtillstånd med en median på 0,38 m. Testar bara medeltillståndet för en enda frirörelsebåge: ingen kovarians, inget filter, ingen uppdatering och ingen annan fas | 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 |
| Feltermer för kallatominterferometer: fasbrus i Raman-laser, vågfrontskrökningsbias och upplösning av fransosäkerhet | inertial::cai_error_terms (biblioteksfunktioner som ännu inte kan nås från någon scenariotyp): viktningsfunktionen för Raman-fasen hos en interferometer med tre kvadratpulser (Cheinet et al. 2008, Eq. 8) med det slutna uttrycket för vit fas (pi/2)^2 S_phi0/tau_R och en numerisk väg för valfritt spektrum; det laserfrekvensbrus som fördröjningen vid retroreflektionen inte tar ut (Le Gouet et al. 2007, Eqs. 9 till 11); den rena defokusbiasen sigma_v^2/R hos ett termiskt moln och dess minskning med en detektionsradie; sannolikheten för fel fransindex erfc(pi/(sqrt(2) s)) för ett stöd från en klassisk accelerometer och för två avfrågningstider, och dess invers | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Varje sluten form mot en oberoende numerisk väg i testerna (kvadratur i frekvensdomänen av den exakta överföringsfunktionen och fördröjningsfiltret, en Monte Carlo över atomer för vågfrontsbiasen, en Monte Carlo över skott för fringe-indexet) och dess gränsfall. Ett publicerat genomräknat värde: Cheinet et al. 2008 (arXiv:physics/0510197, avsnitt IV) anger att vid tau_R = 20 us krävs ett vitt Raman-fasbrus under -111 dB rad^2/Hz för 1 mrad per skott; enbart den vita termen ger 0,99 mrad (artikeln härleder nivån med sin ekv. 17, flicker plus vitt). Intern konsistens och ett genomräknat värde, inte en extern validering; högre ordningens aberrationer och en specifik lasers brus är inte modellerade | 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) |
| Förinställningar för oscillatorernas holdover ur öppna datablad | Fyra förinställningar — OCXO (Microchip OX-208), rubidium (Microchip 8040C), cesium (Microchip 5071A högpresterande rör) och CSAC (Microchip SA.45s) — var och en med sitt datablads maxvärden för Allan-deviation, åldring och temperaturgräns; en icke-negativ anpassning enligt minsta kvadrat av frekvensbrus av typen vitt + flicker + slumpvandring, skalad så att den omsluter varje datablads punkt, ett flickergolv som aldrig ligger under värdet för längsta τ, linjär åldring och en sinusformad temperaturterm, syntetiserad som en holdover med slumpfrö efter ett GNSS-bortfall | InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — De fyra namngivna databladen från Microchip (dokumentnummer och URL:er i varje förinställning och i docs/TELECOM-TIMING.md) för indatasiffrorna; den slutna formen för åldringsrampen och passformens hölje-egenskap som interna kontroller. Hur siffrorna blir en brusmodell — anpassningen, golvregeln, månaden på 30 dagar, den linjära temperaturavläsningen — är ett modelleringsval; ingen förinställning är en mätning av en enhet. 0,30 omgång 2, ensidiga trösklar mot uppmätta enheter (förhandsregistrerade a01c491c), ett fynd (förblir MODELLED): IGS-stationen THU2 Symmetricom 8040C i ESA MGEX slutliga klockor har en Allan-deviation på 0,35 till 0,87 av rubidiumförinställningen men ett holdover-fel på 1,07 till 1,60 av den; registret för 5071A ligger utanför cesiumförinställningen upp till 1000 s (vitt fasbrus i mätningen, 30x vid 1 s) och i holdover (1,15 till 8,74); den sämsta SA.45s från 2011 års produktion är 1.26x CSAC-förinställningen vid 1 s; OX-208 har inget uppmätt register (blockerad) | 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 — den diskreta åldringsrampen inom 0,1 % av (1/2)·D·t² över ett dygn; 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) |
| Sekunder tills en fritt gående klocka lämnar skyddsmarginalen för ett tidsindexerat slot, och den takt för positionsbestämning som håller den inom marginalen | Typen slot-timing: det predikterade felet E(t) = k·√(σ₀² + σ_x²(t)) + (|y₀| + |c_T·ΔT|)·t + ½|D|t² inverterat för överträdelsen, den återstående tiden, återsynkroniseringsintervallet efter avdrag för latensen vid positionsbestämning och antal positionsbestämningar per dygn, varje term specificerad med den dominerande namngiven; klockor från de sex standardvärdena i ClockClass (TCXO, OCXO och RAFS tillagda, var och en med hänvisning till ett datablad), förinställningarna för telecom-timing, ett datablad angivet direkt i scenariot eller en uppmätt registrering; en överträdelse bortom källans längsta medelvärdestid markeras som extrapolerad |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Slutna former för varje term för sig och den oberoende rotsökningen holdover::holdover_seconds; databladssiffrorna är de namngivna dokumenten (docs/SLOT-TIMING.md). Ett klassstandardvärde vilar på ett antaget rött brusgolv och en databladskälla är ett hölje av maxvärden, så ingen av dem är en mätning av någon enhet | 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 satellitklockor i GPS Block IIF, 14 dygn av slutliga IGS-klockor: 8 inom tröskeln på 1,5, G25 och G30 optimistiska med upp till ungefär 2x, fastlåsta); tests/slot_timing_ocxo_holdout.rs (en uppmätt OCXO: förutsägelsen på undanhållna data aldrig optimistisk, 0,59 till 0,70 av det uppmätta brottet; i urvalet inom 0,98 till 1,17; utan termen för frekvensen vid positionsbestämningen är förutsägelsen i urvalet optimistisk vid varje tröskel); slot_timing::tests (fix_frequency_uncertainty_alone_is_linear_in_time; reduces_to_the_holdover_inversion — varje klass mot holdover::holdover_seconds till 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) |
| Skyddsnivå för tidssynkronisering hos en mottagare i omloppsbana under GNSS-spoofing | orbital_timing::orbital_timing, nåbar som spoofing-avsnittet i typen slot-timing: hastighet och period i cirkulär bana, den längsta tid en markbaserad spoofer kan nå satelliten per passage, golvet för den klockstödda övervakaren och detekteringslatensen för CUSUM, den villkorliga skyddsnivån (golvet plus glidtiden över latensen), det drag som en spoofer med en angiven högsta rampfrekvens hinner ackumulera innan satelliten lämnar sin fotavtryckszon eller en oberoende kontroll körs, samt huruvida varje kontakt med marken eller varje kontroll via tvärlänk är oberoende av en markbaserad spoofer |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Reduktion till den befintliga skyddsnivån för tidssynkronisering och de slutna formerna för sikt med cirkulär bana och sfärisk jord. Villkorat på detektion, en markbunden spoofer med angiven rampstakt, ett överflygningspass över en icke-roterande jord; inte validerat på en spoofad mottagare i omloppsbana | orbital_timing (orbital_timing, visibility_half_angle_rad, max_pass_s, crosslink_neighbour_is_outside_footprint) | orbital_timing::tests (reduces_to_the_terrestrial_tpl — exakt tpl::timing_protection_level_ns när klockan saknar flicker-, vitfas- eller slumpvandringsterm; 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) |
| Spektrumvattenfall för L-bandet med J/S per band och effektiv C/N0 under en skriptad tidslinje för jammers | Typen spectrum: ett rutnät över frekvens och tid för effektspektraltätheten i L-bandet (termiskt golv k T_sys med T_sys = T_ant + 290 K (F - 1), signalerna vid sina lägsta mottagna effekter enligt gränssnittsspecifikationen, samt jammers med kontinuerlig våg, smalband, chirp och matchat brus med på/av-tider), där varje cell medelvärdesbildas över sitt fack och sin rad (chirpar exakt över hela och partiella svep, jammers efter arbetscykel), effektiv C/N0 per band = [1/(C/N0) + sum (J/S) kappa]^-1 per rad, J/S per band, J/S i bandet, och ett SVG-vattenfall med staplar för C/N0. Rapporten innehåller en korskontroll mot kedjan i typen jamming på samma länkindata |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Reduktion till anti-jam-ekvationen och länkbudgeten i den befintliga typen jamming (samma kod, anropad med samma indata), och den slutna formen för brusgolvet k T0 F. Signalspektra under den är den validerade raden ovan; jammereffekterna, tidslinjen och frontändens bandbredder är scenarioindata, spektra är kontinuerliga (inga spridningskodlinjer), och ingen automatisk förstärkningsreglering, blankning eller antennmönster verkar på jammern. Inget uppmätt jammat spektrum finns i förrådet att kontrollera sammansättningen mot. Tabellen Q för typen jamming (CW och smalband 1, bredband och svept 2 sedan 0,36: läroboksvärdena, fastlåsta mot de slutna formerna i navsignal) stämmer med den här modellens värde för CW och skiljer sig från vad den härleder för brus anpassat till C/A (1,5) och för plant brus från nollställe till nollställe utan normalisering i bandet (2,2); rapporten skriver ut båda |
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 lika med jamming::j_over_s_db och effektivt C/N0 lika med jamming::effective_cn0_dbhz med Q = 1/(R_c kappa) till 1e-9 dB, och ankaret på 32,105 dB i jamming-typens eget test; 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) |
| Uranus och Neptunus ur Standish Table 1, Pluto och planeternas hastigheter | Positioner för Uranus och Neptunus ur Standish Table 1 (standard inom 1800 e.Kr. till 2050 e.Kr.), Pluto ur raden i Table 1 från 1992 som JPL:s nuvarande sida inte längre anger, och den heliocentriska hastigheten för varje planet: tvåkroppsderivatan med den medelrörelse som elementen ger plus ellipsens vridning genom ändringstakterna för perihel, inklination och nod | ExternalDataset | ett delpåstående är kontrollerat externt, men hela förmågan sammansätts av modellerade delar, så förmågan förblir modellerad — Mätt mot JPL Horizons DE441 (samma incheckade testdata), men inte validerat: de angivna siffrorna i tabell 1 för Uranus och Neptunus överskrids med upp till 2,0 och 5,2 gånger mot heliocentriska positioner i DE441 (Neptunus uppfyller dem mot barycentriska positioner, vilket tyder på att anpassningen inte var heliocentrisk), sidan anger inget fel för Pluto, och ingen publicerad gräns finns för hastigheterna. Tabellerna 2a/2b når sina egna siffror för Uranus och Neptunus och täcks av den validerade raden | 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: fastlåst vid 2,04 och 5,16 gånger det nominella longitudfelet, under sex gånger; pluto_from_the_1992_row_is_measured_not_validated: inom 39 bågsekunder och 1.14e9 m; standish_velocities_track_horizons_to_one_percent: sämst 3.7e-3 av farten); ephem::tests (standish_velocity_is_the_derivative_of_the_position; pluto_has_no_table2_row_and_no_stated_error) |
| Positioner för månen och sju stora månar (Phobos, Deimos, de galileiska månarna, Titan) | Den geocentriska månen ur serien av Montenbruck & Gill (vars term på -1.3972 deg per sekel redan hänför den till J2000-ekvinoktiet), och planetocentriska positioner och hastigheter för Phobos, Deimos, Io, Europa, Ganymedes och Callisto ur de medelelement som JPL Solar System Dynamics anger i varje månes Laplaceplan, med medellongitudens hastighet hämtad ur IAU:s synkrona rotationshastighet (tabellen skriver ut perioden med för få siffror för att hålla fasen), och för Titan ur IAU:s rotationsmodell (månen på minus kroppsfasta x-axeln vid medelavståndet), eftersom Titans tryckta rad för Laplaceplanet inte återger Horizons ens vid sin egen epok | ExternalDataset | ett delpåstående är kontrollerat externt, men hela förmågan sammansätts av modellerade delar, så förmågan förblir modellerad — Mätt mot JPL Horizons satellitefemerider (DE441, MAR099, JUP365, SAT441) incheckade i tests/fixtures/solar_system/horizons_satellites_icrf.csv med frågan och hämtdatumet; ingen publicerad noggrannhet finns för medelelement eller för placeringen med rotationsmodell, så de fastlåsta trösklarna fångar regressioner och validerar inte. Medelelement utelämnar resonanta och solära störningar, och Phobos sekulära acceleration är inte modellerad | 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: sämsta vinkelfel sett från planeten över 2000 till 2040, Phobos 5,65 grader, Deimos 0,38, Io 0,40, Europa 1,63, Ganymedes 0,22, Callisto 0,27, Titan 3,31; geocentric_moon_tracks_horizons: 0,046 grader); ephem::tests (moons_sit_at_their_mean_distance_and_move_at_their_mean_speed); ephem_provider::tests (earth_and_moon_balance_about_their_barycentre) |
| Fysikaliska konstanter för varje kropp i solsystemet och rapporten för hela systemet | Body tillför Merkurius, Venus, Jupiter, Saturnus, Uranus, Neptunus, Pluto, Phobos, Deimos, Io, Europa, Ganymedes, Callisto och Titan (gravitationsparameter, referensradie, J2 där det publicerats med den radie det är hänfört till, IAU:s pol och nollmeridian), en namnuppslagning och en BodyFacts-post (NAIF-kod, klass, moderkropp, ekvatorial- och medelradie); typen solar-system rapporterar dem för alla arton kroppar med positionerna, ljustiderna och ett banspår över ett varv, varje kropp märkt VALIDATED eller MODELLED |
InternalConsistency | kontrollerad mot sin egen slutna/analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen oberoende extern referens — Transkription av publicerade konstanter, var och en citerad där den definieras: gravitationsparametrar från JPL Horizons kroppsposter och JPL:s tabell över fysikaliska satellitparametrar, radier från JPL:s tabeller över fysikaliska parametrar (IAU WGCCRE 2015), poler och nollmeridianer från IAU:s arbetsgrupp för kartografiska koordinater och rotationselement (medelvärden, utan T-takten och de periodiska termerna), J2 från Smith et al. 2012, Iess et al. 2018 och 2019, samt Jacobson 2009 och 2014. Kontrollerad för intern konsistens (Jupiters rotationsperiod mot System III-takten, varje J2 mot sin referensradie), inte mot en oberoende extern referens. 0,30 omgång 2: GM-värdena övertogs från gm_de440 och elementen för Phobos och Deimos från pck00011, så 0 av 84 konstanter för de fjorton tillagda kropparna skiljer sig nu från NAIF (var 12), vilket är en transkriptionskontroll och inte räknas. 0,36: IAU:s kroppsfasta orientering och GM för de fjorton tillagda kropparna är utbrutna till en egen VALIDATED rad ("IAU body orientation and gravitational parameter of the fourteen added solar-system bodies"); den här raden behåller det som är kvar. J2 och medelradien är citerade, inte validerade; positionerna i rapporten vilar på sina egna rader; och rapportens prime_meridian_deg för jorden, månen och Mars ligger kvar på konventionella konstanter (upp till 6.6e-3, 2.8e-2 och 9.6e-4 rad från IAU_<BODY>). Revisioner i 0,30: Phobos GM 7.087e5 -> 7.087546066894452e5, Deimos 9.62e4 -> 9.615569648120313e4, Uranus 5.7939506103e15 -> 5.793951256527211e15, Neptunus 6.83509997e15 -> 6.835103145462294e15, Pluto 8.69326e11 -> 8.696138177608748e11 m³/s²; Phobos ekvatorialradie 13,1 -> 13,0 km; prime_meridian_deg innehåller nu de kvadratiska och periodiska termerna | 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 |
| Positionsbestämning kring valfri kropp i solsystemet med en lokal konstellation och en djuprymdlänk från jorden | Typen body-pnt: en orbiter eller en lander på ytan kring en kropp vald med namn navigerar med pseudoavstånd i en riktning från en Walker-navigationskonstellation kring kroppen (tvåkroppsbanor med kroppens sekulära J2-drift, en okänd användarklocka) och ett valfritt klockfritt tvåvägsavstånd från jorden, där jordens riktning och avstånd hämtas ur den analytiska efemeriden vid varje epok; siktlinjer som blockeras av kroppens sfär och en elevationsmask vid ytan; per epok enbart konstellationens GDOP och PDOP (orbit::dop), den formella positionsosäkerheten med och utan jordraden, och positionsbestämningar med Gauss-Newton och slumpfrö (batch_ls::gauss_newton) i båda fallen, med ljustiden och rundturstiden från kroppen till jorden |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Slutna former och självkonsistens: Keplers tredje lag för reläets omloppstid, banradien och ytradien som hålls konstanta under körningen, att en ytterligare mätning aldrig ökar den formella osäkerheten, och att de utsådda felen stämmer med kovariansen. Reläbanorna bortser från tredjekroppar (Jupiters dragningskraft på reläer runt Europa är inte modellerad), bruset är gaussiskt på angivna nivåer och mätmodellen är momentan, så detta är inte validerat mot någon rymdfärds navigeringsdata | 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: kvadratmedelvärdet av varje positionsfel i förhållande till dess egen formella sigma ligger i [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) |
| Täcknings- och DOP-kartor för godtyckliga konstellationsutformningar med flera konstellationer i stor skala, kring valfri centralkropp | Typen constellation-design bortom de två fastlåsta fallen: explicita utformningar och utformningar med flera skal, flera konstellationer per körning med en mottagarklocka per konstellation, jorden, månen och Mars ur kroppskonstanterna, BeiDou-förinställningen (fas för medelbanan och ekvatorskorsning vid 118 deg E för den lutande geosynkrona banan modellerade), satelliter i sikte per cell, GDOP, PDOP, HDOP, VDOP och tillgänglighet, nedsamplade markspår, och ett förfilter för synlighet efter latitud under satelliten som kör en utformning med 5 000 satelliter på ett rutnät om 10 deg på en bråkdel av en sekund |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens: den brute-force-baserade elevationsavsökningen, de handräknade reduktionerna och orbit::dop-reduktionerna samt den slutna geometrin för Walker och geosynkrona banor. Tvåkroppsbanor med en valfri sekulär J2, en sfärisk kropp med den lokala vertikalen längs radien, endast geometrisk sikt (ingen signaleffekt, ingen satellithälsa, ingen terräng och ingen tredjekroppsstörning), och relativ fas mellan system som tas från olika referensepoker, så detta är inte en ögonblicksbild av något datum. 0,30 granskning, ett fynd (förblir MODELLED): förinställningarna uppfyller de publicerade ensidiga golven för DOP-tillgänglighet (BeiDou OS Performance Standard 3,0, Galileo OS SDD) vid 100 %, men med motorns PDOP fördubblad i en tillfällig kopia uppfyller de dem fortfarande (sämsta punkten 99,36 %), så golven kan inte upptäcka ens ett fel på 100 % i den storhet som den här raden beräknar; att skärpa dem efter körningen vore en toleransjustering i efterhand. För att höja nivån krävs en tvåsidig jämförelse av DOP-värden på identisk geometri med en tolerans som fastställts i förväg. 0,30 omgång 2 (tests/coverage_dop_full_oracle.rs, förhandsregistrerad add671d6), ett fynd (förblir MODELLED): Orekit 12,2-positioner, elevation, azimut och markspår med gnss_lib_py 1.0.4 GDOP/PDOP/HDOP/VDOP (gemensam klocka) och en numpy-invers (en klocka per konstellation) stämmer överens på varje tröskel för Galileo, GPS, BeiDou, Galileo+GPS (en klocka vardera) och en utformning med 1584 satelliter för jorden (DOP inom 2e-14 relativt, identisk positionsbestämning, identisk tillgänglighet och identiskt antal synliga satelliter). På utformningarna för månen och Mars stämmer elementen, positionerna, sikten och spåren överens, men DOP överskrider den relativa tröskeln 1e-9 som fastställdes i förväg i celler vars största PDOP är 1434 eller mer (upp till 8e-6), och 4 celler skiljer sig med en positionsbestämningsepok på numeriskt singulär geometri (motorns pivot 1e-10 mot numpys rang), så raden är inte validerad. 0,30 revideringar: referensklockan för TDOP/GDOP är nu den lägst numrerade konstellationen i sikte (constellation-multi-gnss-coverage globalt GDOP-max 2,2236 -> 2,1205, medel 1,122 -> 1,131), och antalet synliga satelliter per konstellation summeras som heltal | constellation (coverage, ConstellationDesignScenario, beidou_slots, body_by_name) | constellation::tests (prefilter_matches_brute_force_exactly — varje karta och räknare är lika med en avsökning med det direkta elevationstestet; five_thousand_satellites_on_a_coarse_grid — 5 000 satelliter, skriver ut körtiden och de bevarade partesterna; 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 (endast regressionskontroll); tests/coverage_dop_full_oracle.rs::finding_is_pinned; tests/coverage_dop_gnss_lib_py_oracle.rs (regression) |
| Ett kedjat uppdrag över scenariotyper på en gemensam tidslinje | Faserna i typen campaign: varje fas kör ett eller flera scenarier av befintliga typer genom run_toml, läser deras utdata in i namngivna kanaler (klockans tidsfel och skyddsmarginal, genomsnittligt effektivt förhållande mellan bärvågseffekt och brustäthet och följegolv, vertikal skyddsnivå och larmgräns, positionsfel, följda satelliter, larmflaggor) med förinställningar per typ eller explicita resultatsökvägar, placerar dem vid fasens början och håller dem på ett gemensamt rutnät, med fasgränser och händelser; tillstånd förs vidare genom carry (en kanal fortsätter från föregående fas slutvärde), handoff (en föregående fas nummer skrivs in i nästa scenario) och end_at (en fas slutar vid en tid som en körning har räknat fram, till exempel en spoofingövervakares detekteringstid); en kampanjhash och en sammanfattning över varje medlemsresultat |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Sammansättningsidentiteter mot de fristående körningarna av samma slag: en kampanj med en fas återger den fristående utdatan bit för bit, den överförda förskjutningen är lika med föregående körnings egen sista sampling, och fasen som avslutas av end_at har exakt körningens detektionstid som längd. Den additiva överföringen över en fasgräns och nollte ordningens hållning är modelleringsval, och varje fas är lika bra som det slag som körde den; ingen kedjad mission har kontrollerats mot en uppmätt | 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 — medlemsresultatet är byte-identiskt med den fristående körningen och varje justerat värde är lika med den fristående serien; 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) |
| Parametersvep och Monte Carlo-ensembler med slumpfrö över valfri scenariotyp | Avsnitten sweep (en till tre punktade nycklar av valfri typ, på det generiska svepets axelvärden, eventuellt med ett ensemble i varje nod) och monte_carlo i typen campaign: realisering k körs vid base_seed + k; varje mått rapporterar medelvärde, standardavvikelse, percentiler enligt närmaste rang för 5:e/50:e/95:e och ett percentil-bootstrap-konfidensintervall på 95 % med fast frö för medelvärdet (inertial::metric_stat); måttens enheter läses ur den svepta typens eget enhetsblock |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Den slutna formen för fasens slumpvandring under vitt frekvensbrus, varians q_wf tau (NIST Technical Note 1337), för statistikmaskineriet, och byteslikhet med de fristående körningarna för sådd. Den kontrollerar ensemblens aritmetik på motorns egen klockmodell, inte en extern datamängd | 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 frön för en klocka med vitt frekvensbrus som löper fritt tau = 3010 s: det sanna medelvärdet 0 inom det rapporterade intervallet, intervallets halva bredd inom 25% av 1,96 sigma/sqrt(n), och stickprovsvariansen inom det tvåsidiga 99%-iga chitvå-intervallet för sigma = sqrt(q_wf tau) = 16,459 ns; kalibreringsensemble (CAP-10, förhandsregistrerad ea451cb5, docs/CALIBRATION-ENSEMBLES.md, tests/calibration_ensembles.rs): över 200 oberoende ensembler täcker intervallet det sanna medelvärdet i 192 (inom Binomial(200, 0,95)-regionen på 99 % [181, 197]) och chitvå-kontrollen klaras i 196, medan toleransen för percentiler med ett enda frö (p05 och p95 inom 0,3 sigma) klaras i endast 183 av 200, NOT MET mot den förhandsregistrerade 190, en kontroll som är bräcklig med avseende på frö och som registrerades i stället för att lättas; a_one_node_sweep_and_a_one_member_composition_read_the_standalone_number) |
| Flera scenarier under gemensamma villkor, med en samlad sammanfattning | Avsnittet compose i typen campaign: namngivna gemensamma värden (till exempel en jammers effekt och position) skrivs in i varje medlem vid de nycklar som de binds till, varje medlem körs, och per mått det minsta, största och genomsnittliga värdet över medlemmarna med medlemmen namngiven; måttens enheter måste stämma överens mellan medlemmarna |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Sammansättningsidentitet mot den fristående körningen. Aritmetiken för delade villkor är bokföring; fysiken är medlemsslagens, var och en med sin egen rad | campaign (run_compose) | tests/campaign_composition_reference.rs (a_one_node_sweep_and_a_one_member_composition_read_the_standalone_number — en sammansättning med en medlem läser det fristående talet och resultatets digest) |
| Begränsad optimering av ett mått över kampanjparametrar | Avsnittet optimize i typen campaign (CAP-32): en till tre punktade scenarionycklar begränsade till [lo, hi] på en lin- eller log-skala, ett mått avläst via resultatsökväg, mål minimize, maximize eller target; metod grid (svepets axelvärden) eller en deterministisk Nelder-Mead-simplex i normaliserade koordinater med boxprojektion och standardkoefficienterna; ett saknat eller icke-ändligt mått får sämsta poäng och stannar kvar i spåret; med runs > 1 är måttet medelvärdet över gemensamma frön; varje utvärdering är en verklig körning av den namngivna typen, förtecknad i trace och räknad i reproducerbarhetssammanfattningen |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Endast internt: den exakta slutna formen -20 log10(range) för länkekvationen, ett oberoende brute-force-rutnät över samma slag och Rosenbrock-funktionen. Omgång 1s 1D-tröskel är NOT MET (rutan som fastställdes i förväg uteslöt lösningen på 3 dB; optimeraren stannade vid gränsen), registrerad i docs/design/evidence/cap32-optimize/RESULTS.md och inte omvärderad. Optimum är lokalt för rutan och startpunkten; inget påstående om globalt optimum | campaign::optimize (run_optimize, nelder_mead) | tests/campaign_optimize_reference.rs (förhandsregistrerad fbe6c8b3 och, efter ett protokollmiss i omgång 1, 441f31bc: p2_prime_interior_target_range_matches_the_closed_form — 1D-målslösning inom 6.1e-15 från r* = r0 10^((m(r0) - 3)/20) på 96 utvärderingar; p3_prime_contour_target_grid_and_nelder_mead och p3_grid_matches_brute_force_and_nelder_mead_does_at_least_as_well — rutnätsmetodens bästa värde är bitlikt ett oberoende brute-force-varv på 41 x 41 över run_toml, Nelder-Mead minst lika bra på 177 respektive 161 utvärderingar; 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, som fastlåser det registrerade missen i omgång 1); campaign::optimize::tests (nelder_mead_meets_the_preregistered_rosenbrock_bar: f* = 1.7e-20 på 234 utvärderingar; a_non_finite_score_is_never_the_best; the_grid_mapping_is_the_sweeps) |
| Signalutformningar för positionering, navigering och tidssynkronisering i låg jordbana: kodföljning, inhämtning, GNSS-kompatibilitet och en bandavvägning för valfritt system | Typen leo-signal: parametriserade signalutformningar (band, sändningsbandbredd, ITU-tilldelning; komponenter för inhämtning, data och pilot med BPSK(n), BOC(m,n), MBOC eller platta spektra, effektandelar, FDMA-underbärvågor, kodlängder och datatakter) ur inkompilerade publika förinställningsfiler (Xona Pulsar, Iridium STL, Starlink som opportunistisk signal, CentiSpace, en generisk C-bandsutformning och generiska utformningar för UHF/L/S/C/brett C, var och en med sin käll-URL och opublicerade värden märkta REPRESENTATIVE) eller skrivna direkt i scenariot; per signal den bandbegränsade effektspektraltätheten, effektandelar i bandet, Gabor-bandbredd, kodjitter mot C/N0 och avstånd samt avståndsnoggrannheten, inhämtningens sökrymd, detektionssannolikhet med kvadratisk lag och genomsnittlig seriell och kodparallell inhämtningstid, den spektrala separationskoefficienten in i och från GPS L1 C/A, Galileo E1, GPS L5, Galileo E5a, E5b och AltBOC med försämringen av C/N0, samt toleransen för J/S mot CW, bredband och matchat brus ur SSC-kedjan i spektrumtypen; en bandavvägning mellan jonosfärsfördröjning, fritt rumsdämpning, avståndsnoggrannhet vid lika C/N0 och lika EIRP samt jammertolerans; och kvalitativa formkontroller av en utformning mot en beskriven mätning |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — De validerade slutna formerna i de två raderna ovan, falsklarmsidentiteten för kvadratlag P_d(snr = 0) = P_fa och Holmes medelförvärvstid, samt reduktion till spektrumslagets egen SSC-kedja (samma Jammer::ssc-kod). Utformningarna själva är indata: förinställningar märkta REPRESENTATIVE eller WORKSHOP är inte publicerade specifikationer, förbättrad Feher-QPSK, kodskiftsnyckling och OFDM-spektra är approximerade, och formkontrollerna jämför former, inte kalibrerade nivåer. | 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 (varje medföljande systemoberoende scenario körs utan workshopdata, bandavvägningens jonosfärkvoter är lika med (f_ref/f)^2 och dess skillnader i fri rymd 20 log10(f/f_ref), jittern vid referens-C/N0 ligger mellan sin Gabor-gräns och sin form för obegränsat band, workshopparameterscenariots E5-formkontroller är konsistenta när den filen finns, och ingen källfil kompilerar den filen) |
| Vattenfall över spektrum med flera band (UHF, L, S, C) med utformade signaler och jammers per band | Typen spectrum utvidgad bortom L-bandet: band angivna som en förinställd signalutformning (ritad med varje komponent, bandbegränsad till sändningsbandbredden, C/N0 och J/S hänförda till den följda komponenten) eller som en egen bärvåg och modulation; extra vattenfallspaneler över valfritt frekvensområde på samma tidslinje och färgskala; en bredbandig (spärr)jammer vid sidan av CW, smalband, chirp och matchat brus; J/S och effektiv C/N0 per band ur den oförändrade kedjan för spektral separationskoefficient |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Reduktion till den befintliga spektrumkedjan och jamming-slagets antijam-ekvation (ett band med en enda komponent ger samma tal som före utökningen) samt signalspektra för de validerade raderna. Störsändarnas effekter, tidslinjen, frontändarnas bandbredder och de utformade signalerna är indata, och en utformad signal trunkeras vid sitt sändningsband (ingen emission utanför bandet). | 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 (vattenfallet med flera band körs med fyra paneler, UHF-, L5-band-, S- och C-störsändarna nekar var och en endast sitt eget band, och en körning med ett vanligt band påverkas inte av utökningen); leo_signal::tests::to_spectrum_band_is_consistent_with_the_design; spectrum::tests (agrees_with_the_jamming_kind_chain) |
| En LEO-PNT-passage och dess länkbudget per band mot de MEO-GNSS-satelliter som är i sikte | Typen leo-pass: satelliter ur en utformad passage, element, en TLE via SGP4 eller en Walker-konstellation från constellation-design; per band och epok blickvinklarna, avståndet, avståndshastigheten och avståndsaccelerationen på sluten form (kontrollerade vid varje körning mot centrala differenser och rapporterade), fritt rumsdämpning, EIRP med ett isoflux-, gaussiskt eller platt mönster, en patch-, halvsfärisk eller isotrop användarantenn, gasdämpning enligt ITU-R P.676-10 Annex 2, regn och scintillation enligt P.618, byggnadsinträngningsförlust enligt P.2109, polarisationsfel, systembrustemperatur, C/N0, Doppler och Dopplers ändringstakt, och förstaordningens fördröjning ur en sned TEC enligt Klobuchar eller vertikal TEC skalad med Chapman-andelen under satelliten; jonosfärsfria par med kodbrus vid passagens topp; Galileo- eller GPS-bärvågor ur sina mottagna effekter enligt gränssnittsdokumenten genom samma mottagare |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Slutna former och självkonsistens: identiteterna för avståndshastighet och avståndsacceleration mot numeriska derivator, isoflux-förstärkningen som tar ut ökningen av avståndet, lärobokens gränsvärden för polarisationsförlust, den kvalitativa iakttagelsen LEO jämfört med GNSS (ett klockformat pass på några minuter som toppar flera dB över platta GNSS-bärvågor på 44-51 dB-Hz). EIRP-värdena och diagrammen är publicerade mottagna effekter omräknade till en EIRP eller representativa val, den gasformiga termen är den ersatta förenklade metoden P.676-10, och ingenting jämförs med en uppmätt LEO-C/N0 | 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: under 0,01 Hz och 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 |
| Namngivna förinställningar för LEO-PNT-system med angivna källor, och en systemoberoende motor | leo_link::presets: generiskt flerbandssystem (UHF, L, S, C), generiskt C-band, Xona Pulsar X1/X5, Iridium STL, Starlink som en opportunistisk signal med enbart Doppler, CentiSpace och en valfri förinställning Celeste IOD, var och en med sin källa märkt PUBLIC (med URL), REPRESENTATIVE eller WORKSHOP, där workshopförinställningen ligger i den valfria förinställningsfilen för Celeste IOD och endast kompileras in om den filen finns; varje band och varje bana kan åsidosättas i ett scenario, och ett scenario får inte namnge någon förinställning alls | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Transkription av de citerade offentliga värdena och en konsistenskontroll: en EIRP som ställts in utifrån en publicerad lägsta mottagen effekt förutsäger det publicerade maximumet inom 0,5 dB med ett platt diagram. Det är en kontroll av avståndsspridningen, inte en validering av någon satellits antenn; representativa förinställningar gör inga påståenden om ett verkligt system | 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: inom 0,5 dB från -139.1 och -136.2 dBW); leo_link::presets::iridium::tests; leo_pass::tests (a_fully_custom_band_needs_no_preset) |
| Positionsbestämning med låg energi: tid till första positionsbestämning och energi per positionsbestämning mot arbetscykel | leo_link::energy och avsnittet [iot] i typen leo-pass: koherent integrering begränsad av Dopplers ändringstakt, icke-koherenta summor med kvadratisk lag till ett detektionströskelvärde, en Doppler-binsökning över banans omslutning för stillastående användare (kall) eller ett stött fönster (varm), parallell eller seriell kodsökning, navigationsmeddelandets tid vid kallstart, energi per positionsbestämning och batteritid över intervall mellan positionsbestämningar, för varje LEO-band och GNSS-signalen |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens hos en angiven utformningsmodell: varje effekt, tröskel och sökval är indata, och modellen bortser från bitkantsosäkerhet, missad detektion och återförvärv. Inte jämförd med en uppmätt mottagare | 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) |
| Uppdatering av LEO-navigationsmeddelandet mitt under passagen med en kontinuitetskontroll vid bytet | Analysen midpass-update i leo-navmsg: den högsta passagen över en användare inom ett sökspann, meddelanden enligt ett globalt schema med användningsperioder centrerade i sina anpassningsfönster, och vid varje byte hoppet i 3D-position, klockhoppet, hoppet i användarens pseudoavstånd, det största hoppet över varje synlig siktlinje (sluten form över nadirkonen), avståndsfelet före och efter, och PASS/FAIL mot ett tröskelvärde |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens (hoppidentiteten och konbegränsningen mot brute-force-sampling). Tröskeln är indata; inget publicerat LEO-kontinuitetskrav är fastlagt | leo_navmsg (LeoNavmsgScenario::midpass, worst_case_jump, elevation, geodetic_to_ecef) | leo_navmsg::tests::a_mid_pass_update_is_continuous (varje omkopplings avståndshopp är lika med ändringen i avståndsfel, och en korrigerad passning på 300 s som uppdateras var 150 s klarar en tröskel på 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 (den slutna formen begränsar en tät sampling av konen) |
| Dokumenterad binär kodning av LEO-navigationsmeddelandet med en budget för kvantiseringsfel | leo_navmsg::codec: Kshanas egen ram (preamble, version, modell, längd, nyttolast, CRC-24Q) för de fyra efemeridmodellerna, klockpolynomet, SVID, issue of data, band, hälsa, en Klobuchar-uppsättning, NeQuick-G-koefficienter och UTC-parametrar, varje fält med angiven bredd och steg (field_table), kvantisering med vägran utanför intervallet, och en budget för den största förändringen i position och klocka som en förändring med ett halvt steg i varje fält ger över giltighetsfönstret | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Rundturs-identiteter och själva budgeten. Formatet är Kshanas eget, modellerat efter de publicerade meddelandekomponenterna och Galileo ICD:s fältuppsättning; det är inte bitlayouten för Celeste eller något annat system (inget är offentligt), så det finns ingen extern layout att validera mot | 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 (varje modell inom 2 mm från det exakta meddelandet efter avkodning, omkodning bitidentisk, en vänd bit avvisad av CRC); leo_navmsg::tests::every_field_of_the_budget_stays_under_a_millimetre |
| Exporter av LEO-navigationsmeddelanden i RINEX-4-stil och som CSV | leo_navmsg::text: ett block i RINEX-4-stil (> EPH-posthuvud, rad för satellit och epok med tre klocktermer, D19.12-rader för sänd bana) med systembokstaven L och posttyperna KP16, KRAC, LU22 och APOL, märkt i varje huvud som ett Kshana-tillägg som inte är en del av RINEX 4,02, och en CSV-tabell med ett standardkolumnschema och förinställda scheman, var och en med en importerare | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Rundturer och kalenderaritmetiken. RINEX 4,02 definierar inga navigeringsposter för LEO (IGS RINEX 4,02), så layouten är en dokumenterad utvidgning med arXiv 2401,17767 citerad som tidigare arbete; ingen extern läsare av den finns att kontrollera mot | 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 (varje modell inom 0,1 mm efter textblocket, CSV exakt) |
| ATOMIC:s ECEF-polynom utan klocka och den syntetiska modelljämförelsen för LEO på fem höjder | varianten EcefPoly av leo_navmsg::elements::EphemerisModel: ett ECEF-polynom per axel utan klocktermer, den relativistiska termen ur -2 r.v/c^2, poängsatt mot en styrd klocka. Även modelljämförelseanalysen (liu_comparison över LIU2025_TABLE), som anpassar modellen med 22 parametrar vid artikelns fem höjder över bågar om 20 minuter av en bana integrerad av Kshana och skriver ut resultatet bredvid den publicerade SISRE | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — ATOMIC-modellfakta från InsideGNSS (polynom av 6:e ordningen, ungefär en minuts giltighet, 30 s uppdatering, styrd klocka, 24 cm klockfel). Det här är beskrivande fakta utan publicerade tal att jämföra med. Tabellen med fem höjder skriver ut SISRE från Liu et al. 2025 (8,88, 6,21, 2,87, 2,11 och 0,75 cm på 320, 475, 786, 966 och 1336 km över en båge på 20 minuter) bredvid Kshanas anpassning på sin egen integrerade bana (4,25, 2,87, 2,20, 1,25 och 0,51 cm; kvoter 0,46 till 0,77), inte fastlåst, eftersom artikeln anpassade verkliga precisa banor och referenserna skiljer sig. Modellen med 22 parametrar och dess anpassning är själva validerade mot verkliga banor i raden Liu et al. 2025 22-parameters efemeridmodell för LEO och dess anpassning på verkliga precisa banor. 0,30 revidering: tabellens värden ändrades med anpassningen enligt artikelns konvention (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 |
| Positionsbestämning ur LEO-Doppler, med en och flera satelliter, med tillstånd för klockdrift och hastighet | Gauss-Newton-positionsbestämning i batch ur avståndshastighet med analytiska partialer (d rho_dot / d r = -(I - u u^T)(v_s - v_u)/rho, d/dv = -u, d/d drift = 1), en konstant användarhastighet som tillval, en höjdspseudomätning för en användare på ytan, dämpade steg; den formella kovariansen vid referensen; projektioner längs banan, tvärs banan och vertikalt; noggrannheten för en enskild passage mot användarens förskjutning tvärs banan; tiden för närmaste passage. Läget doppler i typen leo-pvt lägger till felet mot fönsterlängd och ett läge med enbart Doppler för opportunistiska signaler (förinställningen starlink-sop) |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens: brusfri återvinning, den kinematiska identiteten rho_ddot = (|v|^2 - rho_dot^2 + d.a)/rho numeriskt deriverad, noll Doppler vid närmaste närmande, spegellösningen för ett enda pass och utsådda fel mot den formella kovariansen. Starlink-siffran från Kozhaya, Saroufim och Kassas (NAVIGATION 72(1), 2025: ungefär 2 m på 20 s med tre satelliter) är endast en jämförelse: den modellerade mottagaren, med en perfekt efemerid och varje fel i en Doppler-sigma på 30 Hz, är flera gånger mindre exakt över samma fönster, och artikelns mottagare och mätfrekvens återges inte | 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: till 1 mm och driften till 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: den viktade residualens RMS i [0,8, 1,2] och felet under fyra formella sigma); 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 (en förhandsregistrerad proxy mot de publicerade percentilerna för datamängd 3 i "Unveiling Starlink for PNT", doi:10.33012/navi.685: med 3 satelliter (mask på 47 grader), inget höjdstöd och 30 Hz är p90 för 3D-felet 92,2 m vid 20 s och 870 m vid 8 s mot de publicerade 2 m och 10 m, så båda trösklarna på en faktor två är NOT MET, på den höga sidan, och intygade som missade; docs/design/evidence/cap11-starlink-doppler-proxy/) |
| Gemensam positionsbestämning med pseudoavstånd från GNSS och LEO med biaser mellan system och felmodeller per signal | Viktade Gauss-Newton-positionsbestämningar med minsta kvadrat över valfri blandning av system, en mottagarklocka per system (biasen mellan systemen skattas tillsammans med positionen) eller en känd sänd offset på referenstidsskalan; sigma per mätning levereras av anroparen, som standard motorns termiska brus för kodföljningsslingan (navsignal::dll_code_jitter_chips) vid C/N0 för elevationen, kombinerat med avståndsfelet i signalen i rymden; ovägd DOP (GDOP, PDOP, HDOP, VDOP, TDOP) i det lokala geodetiska systemet, formella sigma för öst-nord-upp och sigma för biaserna; det gemensamma läget i leo-pvt jämför positionsbestämningar med enbart GNSS, enbart LEO och fusionerade, och sveper DOP mot antalet LEO-satelliter som läggs till |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — En handhärledd DOP för fyra satelliter (en satellit i zenit och tre på horisonten med 120 graders mellanrum, vars normalmatris inverteras för hand), den strukturella identiteten att ett system med egen klocka och en satellit inte tillför någon geometri, brusfri återvinning av position, klocka och bias, samt utsådda fel mot kovariansen. Endast interna kontroller; inte jämförd med en mottagares utdata. 0,30 extern jämförelse, ett fynd (förblir MODELLED): på en IGS-dag med flera GNSS (ABMF 2018-05-13, GPS och Galileo C1C, sänd efemerid, Klobuchar) stämmer intersystemsbiasen överens med RTKLIB v2.4.2-p13 rnx2rtkp (medianskillnad -0.11 ns efter korrigeringen av sänd gruppfördröjning i 0,30, -0.35 ns före; tröskel 1 ns), men endast 93,6 % av 280 epoker (93,2 % före korrigeringen) ligger inom 3 m från ITRF2020-koordinaten mot de 95 % som fastställdes i förväg. RTKLIB själv når 88,2 % på samma data, så tröskeln ligger bortom vad positionsbestämning med sänd enfrekvensdata klarar på den här stationen och dagen snarare än en avvikelse hos lösaren; jämförelsetestet är incheckat som ignorerat. 0,30 omgång 2, strängare indata vid den oförändrade tröskeln 3 m / 95 % / 1 ns, ett fynd (förblir MODELLED): med det jonosfärsfria paret Galileo E1/E5a (förhandsregistrerad 6927e039) ligger 79,9 % av epokerna inom 3 m (RTKLIB 67,9 %); med precisa CODE MGEX-banor, -klockor, satelliters antennförskjutningar och kodbiaser (förhandsregistrerad 7d8c3597) 94,2 % (RTKLIB 94,1 %), och intersystemsbiasen skiljer sig från RTKLIB med -1.03 ns eftersom enkelläget i RTKLIB bortser från satelliters antennförskjutningar (+0,04 ns när båda utelämnar dem) | 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) till 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 |
| Konvergens vid precis punktpositionering med enbart GNSS och med LEO-förstärkning | Ett utvidgat Kalmanfilter för PPP med flyttalsosäkerhet på jonosfärsfri kod och fas: statiska koordinater, en vit mottagarklocka, en bias mellan system per extra system, en slumpvandrande zenitfördröjning från våt atmosfär avbildad med 1/sin(elevation), en flyttalsosäkerhet per satellitbåge som läggs till vid uppgång och tas bort vid nedgång, och det precisa fel i bana och klocka som är gemensamt för en satellits kod och fas, behandlat som en korrelerad uppdatering med två rader i en Joseph-stabiliserad form; mätningar simulerade ur samma modell; konvergenstid (fel under trösklarna till körningens slut), felkurvor och positionens NEES medelvärdesbildat över körningen för enbart GNSS och varje LEO-fall, körd som typen leo-ppp |
ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — NEES-chitvåtestet är en intern konsistenskontroll (referens och filter delar modell). Trenden jämförs med Li et al., LEO constellation-augmented multi-GNSS for rapid PPP convergence, J. Geod. 93:749-764 (2019), doi 10.1007/s00190-018-1195-2: multi-GNSS 9,6 min förkortades till 7,0, 3,2, 2,1 och 1,3 min med 60, 96, 192 och 288 LEO-satelliter. Det medföljande scenariot ger 7,4, 4,8, 3,2, 2,7 och 2,3 min med sina egna representativa skal på 1000 km och 60 grader, sitt eget brus och sina egna stationer; artikelns konstellationer, brus och konvergensdefinition återges inte, så detta är en MODELLED konsistens i trenden (monoton förkortning, den största konstellationen under en tredjedel av tiden med enbart GNSS), inte en validering | leo_fusion::ppp (run, PppScenario, LI_2019) | leo_fusion::ppp::tests (the_filter_is_consistent_over_monte_carlo_seeds: 24 frön, körningsmedelvärdet av NEES i [2,4, 3,6] och minst 75% av epokerna inom det tvåsidiga chitvå-bandet på 95%; uppmätt med 150 frön, medelvärde 2,84 med enbart GNSS och 2,87 med 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) |
| LEO-assisterad tidsöverföring till UTC mot C/N0 och mottagarens oscillator | Klockmätningar från varje LEO-satellit i sikte vid en känd position, kombinerade med inversvarians ur pseudoavståndets brusmodell, filtrerade av ett Kalmanfilter med två tillstånd (fas, frekvens) vars processbrus är oscillatorklassens vita frekvensbrus och frekvensbrus med slumpvandring (slot_timing::ClockNoise, clock_state::ClockClass; glidvariansen för holdover::coast_phase_variance), en klockreferens med slumpfrö ur samma nivåer, och uttrycket i IS-GPS-200 section 20.3.3.5.2.4 för systemtid till UTC med en osäkerhet i sänd offset tillagd som en bias per körning; läget timing i leo-pvt sveper oscillatorer och förskjutningar i C/N0 |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens: det publicerade förskjutningsuttrycket utvärderat för hand, det normaliserade felet över 40 frön och golvet som sätts av förskjutningens osäkerhet. NIST:s siffra för Iridium-tidsmottagare med en miniatyratomklocka (under 40 ns från UTC(NIST) över 40 dagar) är endast en jämförelse; det medföljande Iridium-scenariot ger 10 till 11 ns RMS vid nominell effekt med sitt representativa avståndsfel på 5 m. Flickerfrekvensbrus och jonosfärsfördröjning simuleras inte | 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) |
| Namngivna LEO-PNT-system som valfria datainställningar, var och en med sin källa | Systemoberoende indata: varje system är Walker-skal, explicita element eller en GNSS-förinställning, en signal (bärvåg, chipptakt, bandbredd, mottagen effekt eller intervall för C/N0), en SISRE, en Doppler-sigma och en klockmodell; förinställningar fyller endast i det som ett scenario lämnar ute, en fil vardera med källor märkta PUBLIC (med URL), WORKSHOP eller HÄRLEDD och de opublicerade värdena förtecknade som representativa: Xona Pulsar X1/X5, Iridium STL, Starlink som opportunistiska signaler, CentiSpace, ett representativt system i C-bandet, efemeridmodellen ATOMIC utan klocka, och en förinställning härledd ur en workshop i den valfria förinställningsfilen för Celeste IOD, som hålls tillbaka genom att filen och dess scenarier raderas | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Transkription av de citerade offentliga värdena, kontrollerad för struktur (varje offentlig källa har en URL, Walker-mönster delas jämnt, C/N0 från mottagen effekt över kT vid 290 K), inte mot en extern oberoende referens. Representativa värden anges i varje förinställning och är illustrativa | 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: genomsökningar av källtext i src, scenarios och tests); leo_fusion::system::tests (a_preset_fills_what_the_scenario_leaves_out; a_system_needs_no_preset; pseudorange_sigma_falls_with_elevation_and_never_below_the_sisre) |
| Ett LEO-PNT-system från början till slut: signalutformning, länkbudget för passagen, navigationsmeddelande och fusionerad positionsbestämning, där varje stegs utdata lämnas vidare till nästa | Typen leo-pnt-chain: en utformning i leo-signal (publik förinställning eller direkt i scenariot) sätter centrum, bandbredd, chipptakt och EIRP-fördelning för ett band i leo-pass; passagen ger C/N0 för den följda komponenten och bandbegränsat kodjitter per epok; en linje enligt minsta kvadrat för C/N0 i sin(elevation), SISRE för meddelandet i leo-navmsg (anpassad vid passagesatellitens bana, plus en angiven term för banbestämning i kvadratisk summering) och utformningens bärvåg och chipptakt går till varje LEO-system i en gemensam positionsbestämning i leo-pvt och, som tillval, till LEO-fallen i leo-ppp; varje överlämning rapporteras med sitt värde och sin enhet |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Självkonsistens hos överlämningarna: varje överlämnat värde är lika med det uppströms stegets eget utdata, och om man ändrar en uppströms indata flyttas varje nedströms siffra som beror på den. Stegen behåller sina egna etiketter; kedjan tillför ingen fysik och ingen extern oberoende referens | 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: en starkare EIRP, ett längre anpassningsintervall och en större banbestämningsterm flyttar var och en det överlämnade värdet och den fusionerade positionsbestämningen; 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) |
| Detektering av spoofing med LEO-Doppler och konsistens i passagegeometrin | Avsnittet [spoofer] i typen leo-pass: en spoofer förfalskar, självkonsistent i avstånd och avståndshastighet, de signaler som syns vid en påstådd position som hoppar och/eller skjuts bort från den sanna efter en start (per LEO-band och för MEO-GNSS-signalen); mottagaren förutsäger varje avståndshastighet ur den sända banan och en oberoende apriori position och hastighet, och testar de uppmätta avståndshastigheterna med en generaliserad chi-kvadratstatistik enligt minsta kvadrat över ett fönster av epoker (klockdriften antingen en störparameter eller med en apriori), på GNSS-kanalerna, LEO-kanalerna och alla kanaler, med termiskt brus i frekvenslåsningsslingan (FLL) ur C/N0 (Kaplan & Hegarty 2006, section 5.6.2); detektionssannolikhet ur den icke-centrala chi-kvadratfördelningen vid en angiven falsklarmssannolikhet, detektion förklarad vid en angiven sannolikhet för missad detektion |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Slutna former och identiteter, inte en extern mätning: gradienten av avståndshastigheten mot en central differens, statistikan i informationsform mot den täta kovariansformen, en ren klockdrift som ger noll, en knuff som förklaras av priorn och som ger högst |dx|^2/sigma_p^2, statistikan som är kvadratisk i ett hopp. Ingen detektionssiffra jämförs med en uppmätt attack; spoofern är idealiserad (ingen effekt-, ankomstvinkel- eller korrelationstoppssignatur) | 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) |
| Detektering av spoofing genom konsistens mellan band i en LEO-signal med flera band | För varje LEO-satellit och par av avståndsmätande band bildar avsnittet [spoofer] den geometrifria pseudoavståndskombinationen, tar bort mottagarens jonosfärsmodell och testar dess steg från epok till epok mot de två bandens kodbrus och en angiven tolererad omodellerad jonosfärstakt (tvåsidigt gaussiskt, exakt detektionssannolikhet); en spoofer som förfalskar vissa band och inte andra, eller varje band utan jonosfären, syns vid sin start; en som förfalskar varje band och simulerar jonosfären syns inte, vilket resultatet anger |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Identiteter: insättningssteget för en jonosfärsfri spoofer är lika med parets modellerade skillnad i jonosfärsfördröjning, tröskeln är den tvåsidiga normalkvantilen gånger stegets standardavvikelse plus hastighetsgränsen. Mottagarens jonosfärsmodell är motorns, så den autentiska residualen är noll i medel genom konstruktion; ingen extern oberoende referens | 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) |
| Jonosfärssondering: sned TEC ur dubbelbandsfördröjningen i en LEO-passage | För varje bandpar hos en leo-pass-satellit anger rapporten det sneda totala elektroninnehåll som den geometrifria kodkombinationen återvinner vid passagens topp, (P2 - P1) f1^2 f2^2 / (40,3 (f1^2 - f2^2)), och dess 1-sigma ur de två bandens termiska kodbrus, så att varje LEO-PNT-utformning med flera band kan vägas som en jonosfärssond |
InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Första ordningens dispersionsidentitet, exakt genom konstruktion mot motorns egen första ordningens fördröjning (vars 1/f^2-skalning är VALIDATED mot IS-GPS-200 i sin egen rad); precisionen är endast termiskt kodbrus, utan flervägs- eller interfrekvensbiaser. 0,30 omgång 2, uppmätt (förhandsregistrerad 5e795f93), ett fynd (förblir MODELLED): CODE:s globala jonosfärskarta CODG1330.18I mot ABMF C1C/C2W-kod med CODE-biaserna ger 33 av 36 bågmedelvärden inom 3 TECU (sämst +6,84 TECU på en kvällsbåge; RMS per epok 3,95 TECU), mot en tröskel på varje båge; inte validerad | 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 lika med passets sneda TEC vid toppen till 1e-9 och dess sigma är lika med RSS av kodbruset över 40,3 (1/f1^2 - 1/f2^2)); tests/geometry_free_tec_gim_oracle.rs::geometry_free_finding_is_pinned |
| Förtroendepoäng för sjöfart: sammanvägningen av övervakarnas evidens till en poäng på 0-100 och dess tre band | Varje övervakare reducerar sin evidens till ett förhållande mellan statistik och tröskel; poängen är 100 minus summan över övervakarna av vikt gånger en begränsad linjär ramp av förhållandet (0 upp till 0,5, 1 vid 1,5), begränsad till 0 till 100 och avrundad till 0,1, med band vid 90 och 55; varje epok anger de övervakare som gjorde avdrag och deras poäng. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Implementation mot specifikation, INTE en extern oberoende referens: en clean-room-omimplementation i Python (scripts/maritime_score_cleanroom.py), skriven av en läsare som endast fått docs/RECEIVER-TRUST.md och docs/MARITIME-TRUST.md och inte Rust-källan, stämmer överens med score_from_ratios på 600 kvotvektorer (poäng, band, poäng och ordningen på avdragen, skillnad 0), efter att dokumentationen kompletterats där den första läsaren fann den tyst eller inkonsekvent (ordning vid lika, avrundning, kvoten för en monitor av typen godkänd-eller-underkänd, två exempel vars tal inte stämde med formeln). Det visar att dokumentationen räcker och att koden gör vad den säger. VAD SOM INTE KONTROLLERAS, och varför raden förblir MODELLED: själva regeln (vikterna, rampen, bandgränserna, bevishållningen) är projektets egen, förhandsregistrerad men utan extern källa, och ingenting här visar att en poäng på 80 eller 40 betyder vad en navigatör skulle vilja att den betyder vid verklig störning; ingen siffra av det slaget anges. Monitorernas trösklar är likaså projektets egna (rad A kontrollerar endast deras aritmetik). | 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 (monoton i varje statistika, att lägga till en monitor höjer aldrig poängen, friska statistikor stannar på 100) |
| Område för störkälla: ett möjligt sändarområde utifrån positionsrapporter från flygplan och fartyg | Ett möjligt område för var en källa till försämrade navigeringsrapporter kan finnas, utifrån ADS-B-rapporter (NIC/NACp) eller AIS-positionsrapporter: radiosikt på en 4/3-jordradie från rapporthöjden och ett höjdintervall för sändarantennen, en begränsad effektiv räckvidd för den okända effekten, påverkade enheter som drar posteriorn mot sin räckvidd och opåverkade enheter med sikt som trycker emot den, grupperade i sessioner i tid och rum. Utdata är områden med högst täthet vid angivna konfidensnivåer, en posteriortyngdpunkt med en momentellips, sessionens start, slut, varaktighet, påverkad yta och antal skilda flygplan över publiceringsminimum, en profil över dygnet och timmar per dag. Terrängfritt; en enda källa per session; trovärdigheten är villkorad av modellen. Valfri fusion med en TDOA-positionsbestämning från geolokalisering. | InternalConsistency | kontrollerad mot sin egen identitet i sluten form / analytisk identitet — fångar överföringsfel och koefficientfel, men är inte en extern oberoende referens — Ännu ingen extern. Endast syntetiska rundturer framåt och bakåt, från en generator som delar skattarens modell, så de kontrollerar koden och kalibreringen av de angivna nivåerna under den modellen och ingenting om verkliga sändare. En extern kontroll mot de publicerade sändarplatserna i Jammertest 2025 förhandsregistrerades (docs/emitter-region/PREREGISTRATION.md, godkänd av ägaren före varje poängsatt körning) och kördes en gång (docs/emitter-region/RESULTS.md): ADS-B NOT ASSESSABLE (2 schemalagda sessioner, färre än det registrerade minimet på 4) och AIS NOT ASSESSABLE (ingen publicerad session), så ingen tröskel testades och raden förblir MODELLED | interference_map::emitter (estimate, sessions, build_units, profile, GaussianFix::from_tdoa), interference_map::emitter_out (locate), kshana interference-map locate |
enhetstester för interference_map::emitter (rundtur för projektion, horisontsiffra, syntetiska rundturer framåt och bakåt: den kända sändaren ligger innanför det angivna området ungefär i den angivna andelen, gränsfall, sessionsklustring, profil, integritet och formulering); fall för locate i tests/interference_map_cli.rs |
| SIEM-händelser för förtroendetelemetri: Log Event Extended Format (LEEF) över syslog | Händelser vid bandbyte (eller per epok) som Log Event Extended Format 2,0-nyttolaster i ett RFC 5424-kuvert över UDP eller TCP, med en dokumenterad fältmappning. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — VAD SOM KONTROLLERAS: den här cratens egna test med exakta strängar av den dokumenterade fältmappningen för LEEF och fälten i RFC 5424-höljet; det finns ingen underhållen LEEF-parser med öppen källkod (en sökning i Python-paketindexet hittade ingen), så formatet kontrolleras mot sin egen specifikation läst av samma författare, inte mot en extern oberoende referens. VAD SOM INTE KONTROLLERAS: om LEEF-nyttolasterna accepteras av någon leverantörs parser eller SIEM; undantagsreglerna utöver de dokumenterade; beteendet hos en verklig syslog-insamlare. | telemetry (syslog: leef, rfc5424, SyslogSink; time) | telemetry::syslog::tests (exakta LEEF-strängar, undantagstecken, allvarlighetsgrad, RFC 5424-hölje, leveranstidsgränser och återanslutning); tests/telemetry_cli.rs |
| Tröskelvärden för störning hos receiver-trust, kalibrerade på datamängden JammerTest 2024 | receiver_trust::calibration::run_dataset: den förhandsregistrerade kalibreringen av övervakarna för C/N0-fall, AGC och jamming-indikator på den publika datamängden JammerTest 2024 (Zenodo 15911589, GPL-3.0-or-later, hämtad vid körning, aldrig medföljande): per mapp en tidslinje på 1 s från mon_rf.csv och rinex.csv, övervakarna körs en gång, varje epok efter kalibreringen märks ren eller jamming utifrån mappens attack_log (förskjuten från CEST till UTC, 60 s skyddsmarginal), varje tröskel svepas över ett fast rutnät, den minsta tröskeln med en poolad falsklarmssannolikhet för rena epoker på högst 0,01 väljs, samt antal undanhållna epoker med utelämnande av en mapp i taget; en korskontroll av UBX-läsaren. Urvalet levereras endast som den valfria profilen [monitors] profile = "jammertest-2024-calibrated" (cn0_drop_db 1,5, agc_k_sigma 3,5, jam_ind_threshold 29); standardregeln och varje utdata utan den är oförändrade | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — Datamängdens publicerade händelseloggar (attack_log-fönster), som händelsereferens, under förhandsregistreringen xval/jammertest-trust/PREREGISTRATION.md (incheckad ensam, 0fa012b, innan testbänken kördes). Första och enda körningen (xval/jammertest-trust/RESULTS.md): 14 av 24 mappar kunde utvärderas (7 med jamming), 3 502 rena epoker och 9 560 epoker med jamming. Falsklarmssannolikhet på ren data i den undanhållna delen: cn0_drop_db 0,0231 (81/3502) mot en tröskel på 0,02, FAIL; agc_k_sigma 0,0003, klarar; jam_ind_threshold 0,0094, klarar; unionen av de tre: falsklarm 0,0328, detektion 0,807 mot 0,05 och 0,50, klarar. Enligt den registrerade regeln är raden MODELLED (en tröskel underkändes). Snävt: en mottagartyp (u-blox ZED-F9P), en händelse, schemalagda enminutersluckor som referens (detektion är en nedre gräns; ren betyder utanför de loggade fönstren); kalibrerad på CSV-loggarna, och UBX-läsaren ger fler falsklarm i två mappar. Maritima förtroendepoängsband är inte kalibrerade | 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 (ignorerad, datastyrd av KSHANA_JAMMERTEST_DIR: det registrerade urvalet, antalen i den undanhållna delen, tröskelutfallen och utfallet); receiver_trust::calibration::tests (tidsstämplar, parning av fönster och tidszonsförskjutningen, etiketter, skyddsband, uteslutning, urval); receiver_trust::monitors::tests::threshold_profile_is_opt_in |
| Jammertest-poängsättning: en mottagarlogg poängsatt per schemalagt test (detektionsfördröjning, missade larm, falsklarm, tid till återhämtning) mot den publicerade testplanen | jammertest::{plan, score, dataset} (kshana jammertest import|score): NPRA:s testkatalog och sändningsplan (MIT, hämtad med fastlåst SHA-256, aldrig medföljande) läses som schemalagd referens med katalog-id:n bevarade; en körning av receiver-trust poängsätts per test (första larm minus planerad start, detekterat/sent/missat mot en tolerans, tid till den första larmfria sträckan, larm utanför varje lucka och dess skyddsmarginal), med ett signerat bevispaket som bär resultatkortet. Schemat är planerade luckor, inte registrerade sändningstider. | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — Planens antal luckor per testområde (76, 77 och 45 luckor, varav 61, 63 och 32 sänder) räknades oberoende med ett skript över samma JSON; datamängdens attack_log-fönster från 2024 som händelsereferens, under xval/jammertest-score/PREREGISTRATION.md (incheckad ensam, c2e6d3b, innan poängsättaren kördes). Första och enda körningen (xval/jammertest-score/RESULTS.md): den registrerade regeln om minsta datamängd UNDERKÄNDES (4 poängsättbara jamming-fönster från 4 av 12 UBX-mappar mot ett minimum på 10 fönster från 2 mappar: 5 mappar föll bort enligt baslinjeregeln, 3 UBX-loggar innehåller endast GPS-veckotid), så trösklarna B1 till B4 kan inte bedömas; ingenting lättades eller kördes om. v2 (xval/jammertest-score/PREREGISTRATION-v2.md, incheckad ensam, endast datahantering: loggar med enbart GPS-tid placerade utifrån datumet, de 12 mapparna med enbart CSV, en session med rörlig plattform för rörliga rovers; samma trösklar och samma regel om minsta datamängd): 14 av 24 mappar behölls men 7 poängsättbara jamming-fönster, regeln om minsta datamängd underkändes igen, ingen tröskel kan bedömas (RESULTS-v2.md). Schemalagd referens: en planerad lucka är inte en sändningsregistrering, ett miss kan vara ett test som aldrig kördes, en latens räknas från den planerade starten, och ren betyder utanför de planerade luckorna. Detektion med monitorer i mätdomänen säger ingenting om en spoofer med låg effekt. En mottagartyp (u-blox ZED-F9P). NMEA-datamängden från SimulaMet 2025 används inte (ingen angiven licens, kräver prenumeration) | 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 (datastyrd av KSHANA_JAMMERTEST_PLAN_DIR: antal luckor per testområde i planen för 2025, katalog-id:n, TOML-rundtur); tests/jammertest_score.rs (en syntetisk logg med ett känt fall: detekterad, missad, inte utvärderingsbar, körning med falsklarm, signerat paket med poängkortet); jammertest::plan::tests; tests/jammertest_score_2024.rs (datastyrd av KSHANA_JAMMERTEST_DIR: den registrerade körningen) |
| Compliance-mappning mot offentliga ramverk | compliance (kshana compliance-report): en mappning från Kshanas utdata till klausuler i offentliga ramverk enbart med nummer, ifylld från de angivna körningarna; ett resultat räknas för en förmåga först när det bär den evidens som mappningen anger, en tom mängd ger inget belägg, och formuleringen är "ger belägg för"; rapporten är inte ett konstaterande att något ramverk är uppfyllt och inte ett betyg eller ett godkännande av någon. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Referenser kontrollerade mot ett skriptextraherat rubrikindex över de citerade offentliga dokumenten, lästa 2026-10-10 (tests/compliance_references.rs). VAD SOM KONTROLLERAS: 49 citerade referenser till klausuler, avsnitt, stycken eller rubriker finns i det citerade dokumentet, och 7 citerade URL:er gick att öppna på det registrerade datumet (2 via en andra väg); negativa kontroller underkänns. VAD SOM INTE KONTROLLERAS: att någon omskrivning, mappning eller lucka är korrekt; klausuler i EN 16803 (betaldokument, endast katalogtext); senare revideringar; indexet är ingen oberoende implementation. | 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 |
| Marina integrationer: Signal K-insticksmodul, OpenCPN-grindström och poängpanel, referensbygge | Förtroendepoängen, bandet, orsakerna, grindtillståndet och den av mottagaren rapporterade positionen publicerade under navigation.gnss.kshana i en Signal K-server med en notifiering för varning, larm och normal (integrations/signalk); den grindade NMEA-strömmen, med positionsbestämningen markerad ogiltig medan förtroendet är kollapsat och en PKSHT-mening per cykel, serverad till OpenCPN över TCP av själva grinden eller av ett litet relä, och en inbyggd OpenCPN-poängpanel som läser PKSHT-meningen (integrations/opencpn); samt systemd-enheter och en container som kör grinden (deploy/reference-build). Där de visar utdata bär de den rådgivande försäkran: Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering. | IntegrationRun | körd mot ett verkligt värdprogram; en integrationskörning är ingen oberoende referens — VAD SOM KONTROLLERAS, snävt angivet: att de här integrationerna fungerar mot den verkliga programvara de är skrivna för. BEVISET är incheckat i integrations/signalk/evidence/README.md (med sina JSON-filer) och integrations/opencpn/evidence/README.md (med sina skärmbilder och loggar), var och en med skriptet som återger det. (1) Signal K: insticksmodulen laddad i det fastlåsta npm-paketet signalk-server 2.33.0, i en privat nätverksnamnrymd enbart med loopback, matad med syntetiska data. Serverns egna REST- och WebSocket-gränssnitt visade de publicerade sökvägarna, poängmetadata och en avisering som gick från frånvarande till warn, alarm, normal (efter hållningen) och warn igen när data upphörde. Med den verkliga kshana som kördes av insticksmodulen på den NMEA som servern själv tog emot gick aviseringen till warn och sedan alarm och den rapporterade positionen publicerades; serverns egen navigation.position skrevs av dess NMEA-leverantör, aldrig av insticksmodulen. Kördes om mot live-JSON-schema 1,2. (2) OpenCPN: insticksmodulen byggd mot OpenCPN:s API-header för insticksmoduler och wxWidgets 3.2.4, laddad i Ubuntu 24,04-paketet av OpenCPN 5.8.4 under en virtuell skärm; OpenCPN laddade den, körde dess initiering och lämnade över PKSHT-meningarna från den grindade strömmen till den, och panelen blev röd på det ej betrodda bandet. I en ren körning slutade OpenCPN:s eget fartygsläge att uppdateras och dess positionsindikator föll när grinden markerade positionsbestämningen som ogiltig. En andra körning matad direkt av grindens TCP-lyssnare visade leverans till insticksmodulen men inte ett rent före och efter. (3) Reläprovningarna spelar upp ett inspelat utdrag av den grindade strömmen genom ett verkligt TCP-uttag och kontrollerar vad en konsument tar emot (byten oförändrade, giltiga kontrollsummor på varje mening inklusive de omskrivna, GGA och RMC i samklang, en PKSHT per cykel med grindfältet där positionsbestämningen är ogiltig), och end-to-end-skriptet kontrollerar att en konsument av grindens lyssnare tar emot exakt de byte som samma grind skriver till standard output. (4) PKSHT-parserna (JavaScript och C++) körs över meningar inspelade från kshana-utdata och avvisar en felaktig kontrollsumma, version eller en poäng utanför 0 till 100. (5) systemd-enheterna kontrolleras med systemd-analyze verify (systemd 255, binärfiler ersatta med stubbar) och med skydd mot ett skal i ExecStart, omstartspolicyn och sandlådenycklarna; containerns ingångspunkts hantering av argument kontrolleras med en binärfil som stubb. VAD SOM INTE KONTROLLERAS: det finns ingen extern oberoende referens för något värde som de här integrationerna visar. Förtroendevärdena själva är raderna ovan, och en integrationskörning visar bara att rörledningen för fram dem; därför är den här raden MODELLED och inte VALIDATED (docs/VALIDATION.md). Ingen verklig farkost, mottagare, lång körning, annan version av någon värd, annat operativsystem eller skrivbord användes; alla data är syntetisk text och ingenting här är en mätning. Hur en verklig Signal K-klient hanterar aviseringens ljud och visning, OpenCPN:s verktygsfältsknapp, inställningar och inaktuellt tillstånd, samt paketering för OpenCPN:s insticksmodulshanterare prövades inte. Sandlådenycklarna i systemd kontrollerades endast för syntax, kördes inte under en levande systemd, och bygget av containerbilden och dess hälsokontroll har inget incheckat bevis här. Ingen detektions- eller falsklarmssiffra påstås. Rådgivande programvara, inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162): operatören är fortsatt ansvarig för fartygets navigering. | receiver_trust (live: the gate, its TCP listener, PKSHT); outside the crate: integrations/signalk (JavaScript), integrations/opencpn (JavaScript relay, C++ native plugin), deploy/reference-build (systemd units, container) | tests/receiver_trust_live_cli.rs (grinden och dess TCP-lyssnare, Rust-sidan); integrations/signalk/test/adapter.test.js, integrations/signalk/test/model.test.js och integrations/signalk/test/plugin.test.js (24 Node-test på inspelad syntetisk utdata); integrations/opencpn/test/relay.test.mjs (5 Node-test); integrations/opencpn/test/e2e-live.mjs (den verkliga binärfilen till en TCP-konsument, körd för hand och i CI); integrations/opencpn/plugin/test/pksht_test.cpp och integrations/opencpn/plugin/test/trust_state_test.cpp (C++-kontroller av PKSHT-parsern och panelens tillstånd); deploy/reference-build/check-units.sh och deploy/reference-build/test-entrypoint.sh |
| BOC(1 1)-spårning: DLL-skalning och upplösning av bump-jump-osäkerhet (tillval) | Fältet boc i iq::track::LoopConfig (tillval, None som standard): de tre DLL-diskriminatorerna omskalade för att läsa kodfelet i chips med enhetslutning på sinus-BOC(1 1)-huvudtoppen, och en bump-jump-övervakare på mycket tidiga och mycket sena korrelatorer vid en halv subbärvågsperiod (0,5 chip) som hoppar kod-NCO:n mot huvudtoppen när en upp/ned-räknare når N (8 som standard). Utan tillvalet är varje utdata oförändrat. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens mot injicerad referens och slutna former, under trösklar som förhandsregistrerats vid 6b68f6cc (docs/design/evidence/boc-bump-jump/). En BeiDou B1C-datasignal (PRN 19, 5 MS/s) genererad av iq::scene: med alternativet av förblir en start på sidotoppen falskt låst vid den förutsagda ±(0,5 + d/4) chip (uppmätt ±0,549); med det på ett hopp mot huvudtoppen vid 0,08 s och en RMS i det sena fönstret på 0,0008 chip vid 45 dB-Hz och 0,0048 chip vid 35 dB-Hz; inget hopp från huvudtoppen vid 35, 40 och 45 dB-Hz över 4 s; den skalade EMLP-lutningen 0,94 till 0,99 på den samplade signalen (oskalad 3,6 till 3,8). Enbart bump-jump-detektorn, på korrelatortripplar med den exakta BOC(1 1)-brukovariansen, gjorde inget falskt hopp på 100 000 uppdateringar vid 25 till 45 dB-Hz och detekterade 1000 av 1000 starter på sidotoppen vid 35 dB-Hz. NOT MET (fynd F1): enhetstestrutnätet för skalningen som förhandsregistrerats innehåller offset utanför diskriminatorernas linjära område, där de skalade avläsningarna missar offseten med upp till 48 %. VAD SOM INTE KONTROLLERAS: IQ från fält, bandbegränsade frontändar, sammansatta MBOC/QMBOC-repliker och varje extern mottagare. | 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); enhetstest för iq::track::boc (b4_unit_grid_misses_are_the_recorded_ones: den förhandsregistrerade tröskeln B4 för enhetstestet behålls som skriven, dess registrerade miss intygas som fynd F1) |
| IQ-kanal för jonosfärisk scintillation (Cornell-modellen) mot uppmätt 50 Hz GPS L1-scintillation | iq::channel::scint, Cornell-scintillationsmodellen (Rice-intensitet, andra ordningens Butterworth-spektrum, fas arg z) driven vid ett uppmätt fönsters S4 och intensitetens dekorrelationstid, jämförd på det den genererar utöver de två indata; realdata::scint50 läser den uppmätta loggen, trendrensar den och kör jämförelsen. | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — Uppmätta data under trösklar förhandsregistrerade vid b6ccb499 (xval/scint-malindi/): Zenodo-post 16941224 (INGV, Malindi, 18 mars 2023, GPS PRN 26, 50 Hz intensitet och bärvågsfas, CC BY 4,0, SHA-256 kontrollerad). 22 kvalificerande fönster på 60 s (N1 uppfyllt). MET: intensitetsfördelningen (Kolmogorov-Smirnov D 0,0415, tröskel 0,05) och fasscintillationen kopplad till S4 (median av uppmätt/modell sigma-phi 0,779, tröskel 2/3 till 3/2). NOT MET (fynd F1): modellens andel djupa fadingar är 2,38 gånger den uppmätta (tröskel 0,5 till 2) och dess genomsnittliga fading 3,51 gånger så lång (tröskel 2/3 till 3/2). Fynd F2: den registrerade bearbetningen läser modellens lindade fas, vilket en självkontroll avslöjade; B3 upprepad i efterhand med fasen avlindad ger 0,804. VAD SOM INTE KONTROLLERAS: andra nätter, stationer, breddgrader eller signaler; mottagarbrus i modellen. Raden förblir 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, det registrerade utfallet intygat som registrerat, fynd F1; finding_model_fades_are_deeper_and_longer_than_measured; posthoc_b3_with_the_model_phase_unwrapped, endast rapporterad; datastyrd, hämtas av scripts/fetch_scint_malindi.sh); enhetstest för realdata::scint50 (model_data_through_the_harness_shows_the_wrapped_phase_finding, fynd F2) |
| Alternativ med cellmedelvärdesbildande CFAR vid IQ-acquisition | iq::acq::ca_cfar och ca_cfar_cells (tillval): en cell i ett acquisition-rutnät jämförs med medelvärdet av referensceller i sin Dopplerrad (skydds- och stegfördröjningar, som sluter sig runt perioden), vid en faktor alfa satt utifrån den slutna formen för falsklarmssannolikheten i CA-CFAR för M icke-koherenta block (ca_cfar_pfa, ca_cfar_alpha). Sampeleffektdetektorn förblir standard och varje befintligt utdata är oförändrat. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Sluten form, under trösklar förhandsregistrerade vid 3724aefa (docs/design/evidence/acq-cfar/). Falsklarmssannolikheten för CA-CFAR för Gamma(M)-celler, mot Monte Carlo av den exakta modellen: 18 av 18 fall inom 3 binomial-sigma. På varje cell i iq::acq-sökningar (GPS L1 C/A, 2,5 MS/s, 210 000 celler vardera) vid ett utformningsvärde på 1 %: 0,977 % och 0,969 % på gaussiskt brus och 1,006 % och 0,999 % på 2-bitskvantiserat brus (M = 1 och 4; tröskel plus eller minus 20 %); besluten oförändrade när indata skalas. NOT MET (fynd F1): på en brusfri 2-bitssignal är detektionen och dess cell rätt, men 1,28 % av cellerna utanför toppen i toppens rad (tröskel 1 %) överskrider tröskelvärdet, vid kodens deterministiska korrelationssidolober. VAD SOM INTE KONTROLLERAS: andra CFAR-varianter, tvådimensionella fönster, bandbegränsade frontändar, fältdata. | 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, det registrerade utfallet intygat som registrerat, fynd F1, fastlåst av finding_noise_free_sidelobes_exceed_the_cfar_rate); enhetstestet iq::acq ca_cfar_closed_form_reduces_to_the_textbook_case_and_inverts |
| Spektrummodell: banden för GLONASS, BeiDou och Galileo E6 (tillval) | spectrum::default_band löser, enbart med namn (MORE_BAND_NAMES), GLONASS L1OF och L2OF på varje FDMA-kanal K = -7 till 6 (BPSK, 0,511 Mchip/s), BeiDou B1I (BPSK(2)), B1C (MBOC(6,1,1/11)), B2a och B3I (BPSK(10)) samt Galileo E6 (BPSK(5)), med bärvågor och lägsta mottagna effekter från deras gränssnittsspecifikationer; standardbanduppsättningen och varje befintligt utdata är oförändrade. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Publicerade gränssnittskontrolldokument och slutna former, under trösklar förhandsregistrerade vid 5806f28b (docs/design/evidence/spectrum-bands/): GLONASS ICD Edition 5,1, BDS-SIS-ICD B1I 3,0, B1C 1,0, B2a 1,0 och B3I 1,0, Galileo OS SIS ICD Issue 2,1. MET: varje bärvåg, chiphastighet och mottagen effekt som transkriberad (28 GLONASS-kanaler), BPSK:s första nollor vid chiphastigheten, det sammansatta B1C lika med MBOC(6,1,1/11) som ICD:ns effekttabell anger, C/N0-vägens identitet och byte-identiska spektrumscenarier. NOT MET: enhetsareatröskeln, som var ouppnåelig så som den skrevs (fynd F1; areorna är lika med den slutna formens andel inom bandet), och överensstämmelsen per bin mellan IQ-lagrets vågformer för B1I och B1C och modellens envelopp (1,26 och 1,56 dB mot 0,5 dB, fynd F2; GLONASS 0,07 dB), eftersom Gold- och Weil-koder har ojämna linjespektra; bandmedelvärdesbildat stämmer huvudloberna inom 0,25 dB. VAD SOM INTE KONTROLLERAS: inspelad IQ, andra signaler, störning inom systemet. | 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, fynd F1, fastlåst av finding_s2_areas_are_the_closed_form_in_band_fraction; s3_iq_layer_verdict_is_the_recorded_one, fynd F2, fastlåst av finding_s3_per_bin_errors_follow_the_code_line_spectrum; posthoc_s3_band_averaged_shape, endast rapporterad) |
| Tertiära koder och meddelandelager för LunaNet AFS (SB1 BCH, CRC-24Q, interfolierare) mot LSIS-AFS V1.0 | iq::signals::lunanet::afs_q_tertiary_bits, afs_q_tiered; iq::lunanet_afs: synkroniseringsmönster, SB1 BCH(51 8)-kodare och avkodare med 256 hypoteser, CRC-24Q, blockinterfolieraren 60 x 98, en symbolströmskontrollerare (kshana lunanet-afs-check) och en testströmsgenerator med platshållarunderramar. LDPC-kodningen med hastighet 1/2 för underramarna 2 till 4 är inte implementerad (dess matriser finns i en separat bilaga). | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — LSIS-AFS V1.0 (som ovan): Legendre-sekvensen med längd 1499 (Tabell E-1, identisk) och de första och sista 24 chipen i den tertiära koden (Tabellerna E-2 till E-6: 419 av 420 kolumner identiska; dokumentet skriver ut samma sista 24 chip, A14850, för PRN 147 och PRN 151 och generatorn återger de för PRN 151, så posten för PRN 147 är med största sannolikhet ett tryckfel; tröskeln 420 av 420 är NOT MET och missen är fastlåst); räkneexemplet i Figur 8 för SB1-koden (ett exempel: 0x045 kodas till 0x229F61DBB84A0); CRC-24Q mot katalogens kontrollvärde 0xCDE703 för ASCII 123456789; dokumentets egen ramaritmetik. Trösklar förhandsregistrerade vid b3ba5d5. Ett miss registrerat och ett räkneexempel för meddelandelagret, så raden förblir MODELLED. VAD SOM INTE KONTROLLERAS: LDPC och CRC-orden i delramarna 2 till 4, meddelandeinnehåll och varje inspelad ström | 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 |
| Standardpaket: scenarier poängsatta mot trösklar angivna före körningen | standards_pack (kshana standards-pack): testprofilerna för nivåerna 1 till 4 i DHS Resilient PNT-ramverket, noggrannhetsnivåerna och integritetsutvärderingen i IMO MSC.1/Circ.1575 samt övervaknings-, bedömnings- och begränsningspaketen i ICAO Doc 9849 Appendix F: varje test kör en medföljande scenariotyp och jämför resultatfält med trösklar angivna i paketet, och test som behöver en mottagarlogg listas som NEEDS INPUT och poängsätts inte. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt för scenarioresultaten: varje pakettest kör ett MODELLED scenarioslag. Trösklarna är paketförfattarens angivna profil (DHS-ramverket anger inga värden; IMO:s noggrannhetsgränser är Tabell C-1 i MSC.1/Circ.1575, läst i sin helhet; ICAO-paketet följer ICAO:s egen presentation av RFI Mitigation Plan eftersom Doc 9849 är en betalpublikation och inte lästes), incheckade innan någon poängsatt körning i PREREGISTRATION.md-filer av xval-typ under standards/. En MET tröskel säger att ett modellerat scenario nådde en angiven tröskel, ingenting om en produkt | standards_pack; compliance (standards-pack facts in compliance-report) | tests/standards_packs.rs (pinned_outcomes: statusen för varje test, inklusive missarna L4-T1 och de fyra IMO-noggrannhetstesten); standards_pack::tests |
| Bevispaket för laboratorieringlopp (scenario, testförhållanden, mottagarlogg, poäng) | evidence::roundtrip (kshana evidence round-trip) och exporten kshana.test-conditions/1 av mottagarloggar från kshana bench-export: ett signerat paket som registrerar scenariots hash, hashen för de angivna förhållandena, loggens hash och poängen mot de angivna händelserna, och som avvisar förhållanden som inte stämmer med poängsättningens händelser eller en logg vars hash inte är den angivna. Ingen signal skrivs, spelas upp eller schemaläggs. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt: paketet länkar hashar och en MODELLED poäng för mottagarloggen, kontrollerad på syntetiska data (den exporterade NMEA från ett medföljande scenario behandlad som mottagarens logg). Ingen laboratoriekörning påstås | 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) |
| IQ-spårningsmotor mot GNSS-SDR 0.0.19 på oberoende inspelningar | Hela IQ-lagrets spårningsmotor (iq::track genom kshana iq track: acquisition-överlämning, korrelatorer, NCO:er, Costas-PLL av andra ordningen på 15 Hz, DLL av första ordningen på 2 Hz med bärvågsstöd och EML-envelopp, låsindikator och C/N0-skattare) på GPS L1 C/A vid 30 till 45 dB-Hz. | ExternalDataset | ett delpåstående kontrolleras externt, men hela förmågan sätts samman av modellerade delar, så förmågan förblir modellerad — GNSS-SDR 0.0.19 (GPL-3.0-or-later, Ubuntu 24,04-paketet, körd som ett separat program; endast härledda tal incheckade) som följer samma numpy-inspelningar (oberoende av motorn), båda uppmätta mot den analytiska referensen. Trösklar förhandsregistrerade vid 48edd4a5, ändrade före någon testinspelning vid 1e4288c4 (en FLL på 10 Hz endast under inlåsning hos båda mottagarna, efter att den registrerade kalibreringen underkändes på en felaktig överlämning i GNSS-SDR, fynd F3). MET vid 30, 35, 40 och 45 dB-Hz: bärvågsjitter inom 4,3 %, kodjitter inom 4,6 % och Doppler-medelvärde och -spridning inom GNSS-SDR:s. NOT MET: motorns NWPR-C/N0 läser 2,3 till 7,1 dB under GNSS-SDR:s SNV (fynd F4, den kända NWPR-gränsen; dess M2M4 ligger inom 0,06 dB från referensen); fasinlåsningsindikatorerna skiljer sig per definition (F5); vid 30 dB-Hz slirade GNSS-SDR två gånger och motorn inte (F6). GNSS-SDR:s egen överlämning låste sig på en felaktig frekvens i 3 av 30 kalibreringskörningar. VAD SOM INTE KONTROLLERAS: andra signaler, borttagning av databitar, återförvärv, fältinspelningar. Raden förblir 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), på tal härledda av tests/fixtures/iq_track_gnss_sdr_oracle/make_fixture.py |
| CRPA-antennförstärkningar i jamming-typen mot en oberoende omräkning i numpy | Jamming-typens valfria [crpa]-sektion: en stråle per kanal mot varje satellit (nollstyrning med jammern som nollpunkt, eller MVDR på sigma^2 I + P_j a_j a_j^H), som skalar varje länks brus med ||w||^2 och jammern med |w^H a_j|^2 före den befintliga C/N0-ekvationen för anti-jam. | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av den testade enheten, men inte externt auktoritativ — En oberoende numpy-omräkning (xval/crpa-jamming/oracle.py, ingen delad kod: numpy-styrvektorer, numpy.linalg.solve och inv) av varje länk i geometrin för jamming-demon med en kvadratisk grupp om 4 element, under båda viktningarna. Trösklar förhandsregistrerade vid 08d83b4d. MET: A1 (alla 150 scenarioresultat byte-identiska utan sektionen, efter en korrigering: det första bygget lade till crpa-enheterna i enhetstabellen för varje jamming-körning), A2 (ett element är lika med ingen grupp inom 1e-12 dB), A3 för gruppens brusförstärkning och effektiva C/N0 (912 länkviktningar inom 1e-9 dB, sämst 2.1e-14 dB) och för nollan hos nollstyrande jammer (under -200 dB på båda sidor), A4 (MVDR inom 0,1 dB från nollstyrning vid ett JNR på 80 dB). NOT MET: A3 för MVDR:s jammerförstärkning, 194 av 456 länkar över 1e-9 dB på 0,36 portabel matematik (202 på värdens matematik; docs/revisions/STUDIO15-batch4-rebaseline.md) (sämst 1.7e-6 dB) på residualer på -100 till -188 dB, där float64-kancellation begränsar båda implementationerna (numpys inv och solve skiljer sig från varandra på 169 länkar, sämst 7.9e-7 dB); den effektiva C/N0 som dessa matar är opåverkad. VAD SOM INTE KONTROLLERAS: ömsesidig koppling, elementfelmatchning, bredbandsbehandling, flera jammers, all antennhårdvara. En omräkning av samma ekvationer, ingen extern oberoende referens; raden förblir 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), mot xval/crpa-jamming/expected.json från xval/crpa-jamming/oracle.py |
| Terrängskuggning av jammern i jamming-typen mot en oberoende omräkning i numpy på en verklig SRTM-ruta | Jamming-typens valfria [terrain]-sektion: den storcirkelburna terrängprofilen mellan jammer och mottagare på en SRTM .hgt-ruta med en jordbuktning med k-faktor, den dominerande knivseggen (största Fresnel-Kirchhoff nu) och förlusten för en enda knivsegg enligt ITU-R P.526-15 avsnitt 4,1, subtraherad från jammerns mottagna effekt. | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av den testade enheten, men inte externt auktoritativ — En oberoende numpy-omräkning (xval/jamming-terrain/oracle.py, ingen delad kod: egen .hgt-läsning, bilinjär interpolation, WGS 84-rundtur, profil, utbuktning, nu och J(nu)) av tio jammerplaceringar runt en mottagare i Badwater Basin på den incheckade verkliga SRTM-rutan tests/fixtures/terrain/N36W117_sub6.hgt. Trösklar och placeringar förhandsregistrerade vid 92cd2bfd. Alla MET: additivitet (alla 150 scenarioresultat byte-identiska utan sektionen); varje placerings profilpunkter och hinder lika och nu och förlust inom 1.6e-10 (tröskel 1e-9); förlusten ökar aldrig när jammern stiger från 2 till 4902 m; förlusten sänker varje J/S med exakt sig själv och ingenting annat; J(nu) inom 1e-12 dB från referensens. Fynd: placeringar bortom Black Mountains och Funeral Mountains förlorar 44 till 48 dB; två placeringar på dalbotten förlorar 8 och 15 dB enbart av jordens utbuktning vid antennhöjder på 2 m, det enkla knivseggsmodellens gränsfall. VAD SOM INTE KONTROLLERAS: all uppmätt utbredning, diffraktion över flera eggar, markreflektion, klutter, DEM:ens eget fel. En omräkning av samma modell, ingen extern oberoende referens; raden förblir 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), mot xval/jamming-terrain/expected.json från xval/jamming-terrain/oracle.py |
| Hysteres vid acquisition och frontändens kvantiserare i jamming-typen mot oberoende omräkningar | Jamming-typens valfria sektioner [acquisition] (en satellit acquireras vid eller över en acquisition-tröskel efter en fördröjning för återacquisition och hålls så länge den ligger vid eller över spårningströskeln) och [front_end] (AGC-avläsningen 10 log10(1 + J/N) och ADC:ns kvantiseringsförlust för gaussisk indata dras av från varje länk, flaggad som ogiltig för icke-gaussiska jammers). | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av den testade enheten, men inte externt auktoritativ — En oberoende omräkning i Python av varje förvärvsflagga (xval/jamming-acq-agc/hysteresis.py) utifrån motorns effektiva C/N0 per epok, en oberoende numpy-Monte Carlo av kvantiseringsförlusten (xval/jamming-acq-agc/quantiser_mc.py, egen sökning av optimalt steg, 2^22 sampel) och IQ-lagrets AGC-slinga. Trösklar förhandsregistrerade vid 70c72fcc, med en kompletterande körningsuppsättning vid 37793290. MET: additivitet (alla 150 scenarioresultat byte-identiska utan sektionerna); varje flagga lika på de kompletterande körningarna (1824 länkar, 732 av dem med hysteres); monoton i tröskeln; kvantiseringsförlusten inom 0,0007 dB från Monte Carlo vid 1 till 4 bitar (tröskel 0,02 dB); AGC-avläsningen inom 0,012 dB från AGC-slingan (tröskel 0,05 dB). NOT MET: de registrerade hysteteskörningarna (jamming-demo vid 10 till 30 dBW) var ointressanta, med varje länk förlorad, och deras H2 och H4 är endast trivialt uppfyllda. Fynd: med en CW-jammer förlorar en 1-bits ADC ungefär 5 dB mer än den gaussiska siffra som motorn tillämpar, och flaggas som inte giltig. VAD SOM INTE KONTROLLERAS: själva förvärvssökningen, AGC-dynamik i tid, all mottagarhårdvara. Omräkningar av samma modell, ingen extern oberoende referens; raden förblir 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), mot xval/jamming-acq-agc/expected_hysteresis.json, expected_hysteresis_s1.json och expected_quantiser.json |
| Begränsad FLL-inlåsning under standardutformningens golv för FLL-till-PLL-överlämning (tillval) | Tillvalet carrier.fll_pull_in_max_s i iq::track (fältet fll_pull_in_max_s i iq::track::LoopConfig): under fll_assist = pull-in lämnar FLL över till PLL efter en fast inlåsningstid oavsett PLI, med en motsvarande återgångsvilotid tills PLI först når fll_off_pli. | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Intern konsistens mot injicerad referens: en syntetisk datafri GPS L1 C/A-källa (PRN 13, 1500 Hz, 4,1 MHz, 8 s, tio brusfrön) vars bärvågsfas är känd, under trösklar förhandsregistrerade vid 58789af0 (docs/design/evidence/fll-handover-floor/). MET: kontrollen (den obegränsade standardinställningen lämnar aldrig över i 9 av 10 frön vid 33 dB-Hz); additivitet (standardhash och de befintliga spårningstesten oförändrade); inlåsning av en överlämning med 100 Hz fel vid 45 dB-Hz. NOT MET: med ett tak på 1,0 s, överlämning och hållning i varje körning (16 av 20 vid 33 dB-Hz, 8 av 20 vid 31 dB-Hz; resten cyklar mellan påtvingade överlämningar och FLL:ens återkomst) och fasjitter inom 25 % av enbart PLL (10,8 mot 6,1 grader vid 33 dB-Hz). VAD SOM INTE KONTROLLERAS: databitar, andra signaler och samplingsfrekvenser, fältinspelningar. Standardinställningen är oförändrad; raden förblir 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), på tests/fixtures/fll_handover_floor/results.csv |
| RTKLIB .pos-lösningsläsare för receiver-trust | Läser en RTKLIB-lösningsfil (kalendertid eller GPS-vecka/TOW-tid, latitud/longitud eller ECEF-position, använda satelliter) in i tidslinjen för receiver-trust (receiver_trust::machines::rtklib). | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt: ingen fil producerad av RTKLIB lästes, och kolumnlayouten kommer från RTKLIB-manualen. Kontrollerad endast på självskrivna filer; ECEF-omvandlingen återanvänder frames::ecef_to_geodetic, som har egna rader | receiver_trust::machines::rtklib (read_rtklib_pos); receiver_trust::LogFormat::RtklibPos | receiver_trust::machines::rtklib::tests (lat/lon-epoker, vecka/TOW och ECEF, dms avvisad, fientlig indata); tests/receiver_trust_machines.rs::rtklib_pos_runs_as_a_receiver_log; integrations/gnss_lib_py/test_bridge.py |
| NovAtel OEM7 ASCII- och binärloggar (BESTPOS, RANGE, RXSTATUS) för receiver-trust | Läser BESTPOS (position), RANGE (C/No per signal) och RXSTATUS (mottagarens jammer-flagga, som epokens självrapport) från ASCII- och binära OEM7-loggar, CRC-kontrollerat, skrivskyddat (receiver_trust::machines::novatel). | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt som godkännandetröskel. Fältlayouterna och CRC följer den offentliga dokumentationen för OEM7 (docs.novatel.com); CRC-rutinen kontrollerades en gång mot den CRC som dokumentationen anger för sitt eget BESTPOSA-exempel (citerad, inte återgiven). Testunderlagen är självskrivna; ingen logg från en verklig mottagare lästes | receiver_trust::machines::novatel (read_novatel, novatel_crc32); receiver_trust::LogFormat::Novatel | receiver_trust::machines::novatel::tests (fastlåst CRC, ASCII- och binärposter, felaktig CRC hoppad över, fientlig indata); tests/receiver_trust_machines.rs::novatel_jammer_flag_reaches_the_receiver_self_report |
| Läsare för bärvåg-till-brus i RTCM 3 MSM4 och MSM7 för receiver-trust | Läser C/N0 för varje signalcell i RTCM 3 MSM4- och MSM7-meddelanden (GPS, GLONASS, Galileo, SBAS, QZSS, BeiDou, NavIC) från en ramström, CRC-24Q-kontrollerat (receiver_trust::machines::rtcm3). Layouter från de BSD-licensierade pyrtcm-tabellerna, inte från RTCM-standardens text. | ReferenceImpl | kontrollerad mot en separat implementation i samma kodbas — oberoende av den testade enheten, men inte externt auktoritativ — ReferenceImpl i en engångskontroll, inte ett test i sviten: avkodaren i pyrtcm 1.2.0 läser samma självskrivna ramar till samma C/N0 och epoktid. Den delar källa för sina tabeller med den här läsaren, så den kontrollerar bithanteringen, inte layouten. Ingen inspelning från en verklig mottagare eller basstation lästes | receiver_trust::machines::rtcm3 (read_rtcm3, crc24q); receiver_trust::LogFormat::Rtcm3 | receiver_trust::machines::rtcm3::tests (CRC-24Q:s katalogkontrollvärde, MSM4/MSM7 C/N0 och sammanslagning av epoker, GLONASS-tid och mappning av SBAS-id, felaktig CRC och andra meddelanden) |
| GNSS-SDR-övervakaradapter för receiver-trust | Läser meddelanden från GNSS-SDR Monitor (Gnss_Synchro) och PVT-monitor, vidarebefordrade till JSON-rader med proto-fältnamnen, till C/N0 per kanal, positionsbestämning, använda satelliter, HDOP och himmel (receiver_trust::machines::gnss_sdr; integrations/gnss-sdr/relay.py). | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt: fältnamnen kommer från GNSS-SDR-dokumentationen; varken läsaren eller relay.py kördes mot en levande GNSS-SDR eller en verklig inspelning | receiver_trust::machines::gnss_sdr (read_gnss_sdr_monitor); receiver_trust::LogFormat::GnssSdr | receiver_trust::machines::gnss_sdr::tests; integrations/gnss-sdr/example.jsonl |
| IMU-logginläsning, gyroindata för färdriktning och Allan-anpassning av parametrar för hybridsensorer | Läser en IMU-CSV (dokumenterade kolumner, eller EuRoC-layouten); integrerar girhastigheten till den färdriktning som övervakaren för färdriktning mot kurs läser ([log.imu]); och anpassar accelerometerns och gyrots brusparametrar för scenarierna hybrid och fusion från en stillastående logg med överlappande Allan-avvikelse (imu-fit). | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt: anpassningen kontrolleras på syntetiska loggar med vitt brus och kända koefficienter, kursen på loggar med konstant girhastighet. Ingen verklig IMU-logg anpassades, och q_aa anpassas inte | receiver_trust::machines::imu, imu_fit; surface::imu_fit; scenario [log.imu] | receiver_trust::machines::imu::tests; receiver_trust::machines::imu_fit::tests (kända koefficienter för vitt brus återvunna inom 10 %, avslag, TOML tolkas som AccelCfg); tests/receiver_trust_machines.rs (kursöverensstämmelse och kursavvikelse, inbäddad bärare, imu_fit) |
| Home Assistant MQTT-discovery och tillståndsexportör för förtroendetelemetri | Ett JSON-tillståndsdokument och Home Assistant MQTT-discovery-meddelanden för förtroendeströmmen, utskrivna som text på varje yta och publicerade över MQTT 3.1.1 QoS 0 av CLI:t (telemetry::mqtt; trust-telemetry --mqtt-tcp, --print-mqtt, format mqtt). | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt: paketen lästes av en loopback-lyssnare skriven för testet, inte av en verklig broker, och Home Assistant kördes inte | telemetry::mqtt (discovery, state_json, connect_packet, publish_packet, MqttSink); surface::TelemetryFormat::Mqtt | telemetry::mqtt::tests (paketbyte, loopback-broker, död broker räknad); tests/receiver_trust_machines.rs::trust_telemetry_mqtt_text_has_discovery_then_state |
| ROS 2-paket för receiver-trust och gnss_lib_py-brygga | En ROS-fri brygga som skriver positions- och satellitmeddelanden som NMEA och poängsätter dem genom Python-bindningen (integrations/ros2/kshana_trust), och en brygga från gnss_lib_py NavData till receiver-trust genom formatet rtklib-pos (integrations/gnss_lib_py). | InternalConsistency | kontrollerad mot sin egen slutna form / analytiska identitet — fångar transkriptions- och koefficientfel, men är ingen extern oberoende referens — Inget externt: ROS-noden kördes inte på en levande ROS 2-graf, och fältnamnen i ublox_ubx_msgs kontrollerades inte mot en körande drivrutin. gnss_lib_py (MIT) kördes för bryggtestet | 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: formatet som bryggan till gnss_lib_py skriver, körd genom receiver-trust); Python-testen för bryggorna är integrations/ros2/kshana_trust/test/test_bridge.py (brygga med en låtsasmotor), integrations/ros2/kshana_trust/test/test_engine_integration.py (det verkliga hjulet poängsätter en stabil positionsbestämning som nominell och ett hopp på 1,1 km som ej betrott) och integrations/gnss_lib_py/test_bridge.py (verkliga gnss_lib_py 1.1.0 och hjulet), körda med pytest, inte av cargo |
221 förmågor märkta MODELLED.