Seznam změn
Všechny významné změny v Kshana jsou zdokumentovány zde.
Formát vychází z Keep a Changelog a tento projekt dodržuje Semantic Versioning. Dokud je projekt před verzí 1.0, může se veřejné schéma scénářů a výsledků ještě měnit; zásadní změny jsou výslovně uvedeny.
Nevydáno#
[0.40.0] - 2026-10-29#
0,40 přidává vlákno mise ve stylu Artemis a jeho lunární část, štítek důkazů u každého čísla a každé tabulky, které běh zapíše, načítání a fitování změřených hodin, kontrolu podání od datových partnerů, odhadovanou oblast zdroje rušení z hlášení ADS-B nebo AIS, rekampaň benchmarku 0,40 a příkazový řádek, zprávy a Studio v sedmnácti jazycích vedle angličtiny (strojové dokumenty zůstávají anglicky). Verifikační matice roste ze 388 na 401 řádků: 176 VALIDATED (beze změny), 221 MODELLED (bylo 208) a 4 PARTNER. Žádný řádek nebyl povýšen na VALIDATED. Druhy scénářů rostou z 87 na 92. Každý práh, který předregistrované srovnání nesplnilo, je uveden níže a zůstává zafixován; žádný nebyl zmírněn. Poradní prohlášení se nemění: Kshana je software pouze poradního charakteru, nikoli typově schválené navigační zařízení a nikoli certifikace; za navigaci zůstává odpovědný provozovatel.
Známá omezení#
- Běhy v jiném jazyce než angličtina trvají zhruba dvakrát déle, protože se scénář spouští dvakrát (jednou v angličtině pro strojové soubory, jednou ve zvoleném jazyce pro člověka).
- Některé věty Studia jsou složeny z fragmentů a v jazycích s gramatickým rodem v nich mohou chybět členy.
- Překlady jsou strojové překlady, které žádný rodilý mluvčí nezkontroloval; referenční je angličtina.
Přidáno#
- Sedmnáct jazyků vedle angličtiny pro text enginu určený lidem a pro web a Studio: nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja, zh-Hans (
--lang,KSHANA_LANG, proměnné prostředí pro locale;langu volání knihovny, Pythonu, WebAssembly a MCP). Zprávy a chyby příkazového řádku, souhrny běhů, text grafů,report.html, popisy druhů a poradní prohlášení jsou přeloženy; strojové dokumenty (JSON, CSV, kódy chyb, verifikační matice) zůstávají anglicky a běh v jiném jazyce než angličtina spouští scénář jednou v angličtině pro strojové soubory a jednou ve zvoleném jazyce pro člověka (docs/i18n.md). Překlady jsou strojové překlady, které nezkontroloval žádný rodilý mluvčí; referenční je angličtina;REVIEW.mdkaždého jazyka uvádí, co má recenzent zkontrolovat nejdřív, a stránky webu nesou upozornění, které to říká. Slova verdiktů, úrovně důkazů a rozsah poradního prohlášení („nejde o typově schválené“, „nejde o certifikaci“, „za navigaci zůstává odpovědný provozovatel“) zůstávají zachovány v každém jazyce. kshana interference-map locate: odhadovaná oblast zdroje rušení z hlášení ADS-B nebo AIS. Posterior nad tím, kde se může nacházet zdroj zhoršených hlášení polohy (rádiová přímá viditelnost na poloměru 4/3 Země, výška antény zdroje a výkon marginalizovány, dotčená letadla přitahují a nedotčená letadla s přímou viditelností působí proti), zapsaný jako oblasti na úrovni 50, 90 a 95 %, těžiště s elipsou nejistoty (nikdy holý bod), relace v čase (začátek, konec, trvání, dotčená plocha, odlišná letadla nad minimem pro zveřejnění), denní profil a hodiny za den, s volitelnou fúzí určení polohy TDOA zgeolocation. Výstupy: GeoJSON, souhrn JSON, CSV relací a obrázek SVG, každý nese licenci, uvedení autorství, id metody, předpoklady, omezení a svůj štítek důkazů. Knihovnainterference_map::api::emitter_regions_from_*, Python a WebAssemblyinterference_emitter_regions. MODELLED (řádek registruVM-bc70cb57; matice má nyní 401 řádků, 176 VALIDATED, 221 MODELLED, 4 PARTNER); kalibrováno jen na syntetických datech, přičemž srovnání s místy vysílačů Jammertest 2025 bylo předregistrováno a provedeno jednou: ADS-B i AIS NOT ASSESSABLE (příliš málo plánovaných relací v otevřených datech), takže řádek zůstává MODELLED (docs/emitter-region/RESULTS.md). Neutrální formulace, pouze agregovaně; zveřejňování oblastí zdrojů rušení ve veřejné observatoři zůstává vypnuto. Syntetický příklad je vexamples/emitter-region/(docs/INTERFERENCE-MAP.md).- Změřené záznamy hodin.
src/clock_log.rsnačítá změřený záznam hodin do jedné fázové řady: osm formátů (RINEX clock, TimeLab, TICC, linuxptpptp4l,phc2sysats2phc, sledování a statistiky chrony), každý jako zdokumentovaná podmnožina; vše mimo ni je odmítnuto s chybou, která uvádí, co bylo nalezeno. Používá jetelecom-timing([series.clock_log]) a druh clock ([clock_log], který přidává blokmeasureds SHA-256 záznamu a překrývajícími se ADEV, TDEV a MTIE), spolu s přibaleným scénářemclock-measured-log(docs/CLOCK-LOG-FORMATS.md). Srovnáno s allantools na skutečných veřejných datech proti předregistrovaným prahům: první běh nesplnil B1 (5 z 11 případů, všechna časová razítka TICC držená jakof64), B2, B3 (7 z 24 případů) a B4 (verze hlavičky nebyla kontrolována); po opravách jsou B1, B3 a B4 splněny a B2 je splněn kromě jednoho páru MTIE, který je zafixován a není vadou enginu (allantools 2024,6 odstraňuje střední frekvenci před integrací; proti jeho fázovému MTIE se engine shoduje do 1e-10). Řádek zůstává MODELLED (tests/fixtures/clock_log_real/RESULTS.md). - Holdover řízený nafitovanou změřenou řadou:
[clock_fit]druhu clock fituje šum změřené řady a řídí z něj holdover (src/clock_fit.rs, přibalený scénářclock-fitted-log). Předregistrované srovnání: F1(b), F3 a F4 splněny; F1(a) (obnova registrovaného random-walk FM) NOT MET na záznamech C3 (z podstaty neidentifikovatelné) a na dvou ze tří záznamů C4 (random-walk FM pohlcen flicker FM a driftem); F2 (identifikace šumu proti allantools) splněno na jedenácti z dvanácti záznamů a D3 a NOT MET na D2, jak bylo registrováno (při srovnání na stejném základě splněno). Všechna nesplnění jsou zafixována (tests/clock_fit_known_noise.rs); blokfitteda holdover jím řízený zůstávají MODELLED (tests/fixtures/clock_fit/RESULTS.md). - Rekampaň benchmarku 0,40, předregistrovaná se schválením vlastníka před jakýmkoli během: A3 (EXPLORATORY, bootstrapové AUC
agc_k_sigmashlukované po složkách, kvantil 2,5 % 0,8502 proti 0,80), D3 (EXPLORATORY, tři z pěti detektorů překračují rozdíl optimismu 0,05 při měřítku 0,25), R3 (AUC 1,0) a R4 (P_fa 0,0, P_d 1,0): všechny MET, všechny MODELLED. A2, D1 a R1 zůstávají nedotčeny a NOT MET; nic zde je neuzavírá (xval/bench/RESULTS-0.40.md, Bench). kshana partner check <submission.toml>: kontroluje formát a metadata podání datového partnera (kshana.partner-submission/1: zařízení, datový soubor a SHA-256, jak byl pořízen, řádky MODELLED, proti nimž je nabízen, licence, prohlášení) a načítá data čtečkami clock-log nebo IMU z enginu. Nic nehodnotí a nic neověřuje. Syntetický příklad je vexamples/partner-submission/.docs/PARTNER-DATA.md: které řádky MODELLED v registru by mohla povýšit změřená data, jaké formáty se přijímají, jak se podání kontroluje, hodnotí proti předregistrovanému prahu a připisuje a co znamenají PARTNER a VALIDATED; návrh oslovovacího textu pro vlastníka vdocs/drafts/PARTNER-OUTREACH.md(nic se neodesílá).- Druhé kampaně pro nesplněné prahy
gnss-ssvalunar-infrastructure, provedené podle předregistrace (xval/gnss-ssv/PREREGISTRATION-v2.md,xval/lunar-infra/PREREGISTRATION-v2.md; schváleno před jakýmkoli během). Každé původní nesplnění zůstává NOT MET a zafixováno.gnss-ssv: kontrola reprodukuje běh 1 buňku po buňce; pět ablací s jedním čtením přivede 2 ze 78 nesplněných buněk do tolerance (EXPLORATORY, bez prahu); nový práh S7b (tvar vysílání s poklesem a podlahou nafitovaný na panelech Classic IIR) je NOT MET na panelech IIR-M při 3,83 až 3,95 dB proti 3 dB; kampaň s odloženým zveřejněným příjmem neproběhla (nebyl zafixován žádný zdroj) (xval/gnss-ssv/RESULTS-v2.md).lunar-infrastructure: nové prahy C3a, C3b (mez detekce asi 3e-9 m/s2), Q3a, Q3b (přesná normální CDF odstraňuje rozdíl 1.7e-6) a G3'' jsou splněny jako vlastní prahy a G3' s ilustračními apriorními rozděleními je splněn a označen EXPLORATORY (xval/lunar-infra/RESULTS-v2.md). Vše zůstává MODELLED. Nové veřejné položky:kshana::lambda::{erfc_accurate, normal_cdf_accurate, bootstrap_success_rate_accurate}. - Štítek důkazů u každého čísla a každé tabulky, které běh zapíše. Výsledný JSON má klíč
evidence, graf SVG prvek metadat a řádek pod grafem a tabulka CSV řádky komentářů# evidence:: úroveň (VALIDATED,MODELLEDneboPARTNER, podle nejslabšího z řádků) a id řádků verifikační matice, na nichž běh stojí. Řádky a stavy se čtou z matice, nepíší se ručně; id jsou stabilní (VM-a osm hexadecimálních číslic, nový sloupecIDvdocs/VERIFICATION-MATRIX.md, zmrazený seznam vtests/fixtures/evidence_ids.txt). Také u receiver-trust,jammertest score,iq acquire/sweep/track/monitor, zprávy o expozici trasy a, uvnitř podepsanéhoconfig.json, u každého balíčku důkazů (config_version1,1;kshana evidence verifyuvádí úroveň; balíčky vytvořené před 0,40 se ověřují beze změny).tests/evidence_labels_doc_sync.rsselže, pokud číslo nemá štítek, štítek nesouhlasí s maticí nebo nový zapisovač souborů není ani označen, ani uveden s důvodem. Výstupy, které žádný nenesou, jsou uvedeny vdocs/SURFACES.md. Tři demonstrační grafy v README byly znovu vykresleny se štítkem (odstraněním štítku se vrátí původní bajty;docs/revisions/STUDIO15-evidence-label-0.40.md). Žádné tvrzení se nezměnilo. - Druh scénáře
mission-thread(scenarios/mission-thread-artemis-class.toml,docs/MISSION-THREAD.md): rozpočet chyb navigace a času řetězce fází od startu po vstup do atmosféry, každé číslo MODELLED a každý vstup stanovený. Osm druhů fází:launch-ascent,leo-rendezvous(relativní kovariance Clohessy-Wiltshire po úsecích senzorů, dokovací okno),tli-and-cruise(propagace Cowell s konečnědiferenční maticí přechodu stavu, chyba manévru, určení polohygnss-ssva aktualizace ze sledování ze Země, Měsíc z volitelného výřezu jádra DE440),entry(sigma úhlu dráhy letu, pravděpodobnost koridoru, maximální zpomalení na okrajích koridoru, stopa přistání) a čtyři lunární druhy. Pravidla předání (carry,inflate,reacquire), převody soustav a časových stupnic jako samostatné řádky rozpočtu, volitelný překryv pozemní sítě, který stanoví vytížení sledování každé fáze, rezerva vůči stanoveným požadavkům a nejslabší článek. Příklad sleduje posloupnost veřejné prezentace NASA o koncepci provozu s ILLUSTRATIVE čísly: ucelený příklad ve stylu Artemis přes 11 fází, pozemní a lunární část. Cislunární propagace byla porovnána s veřejnou trajektorií Artemis I přes 72 h oblouk proti prahu zafixovanému vxval/mission-thread/PREREGISTRATION.mdpřed během: NOT MET (45,3 km a 0,25 m/s proti 5 km a 0,05 m/s). Diagnostika umisťuje nesplnění do pěti malých impulzních událostí v referenci; mezi nimi silový model reprodukuje hodinové stavy s mediánem 0,4 m. Řádek zůstává MODELLED (xval/mission-thread/RESULTS.md). - Lunární část vlákna mise ve stylu Artemis: čtyři druhy scénářů, z nichž každý je zároveň druhem fáze rozhraní
mission-thread(src/mission_thread/lunar/), každý MODELLED.lunar-orbit-rendezvous: relativní navigace k dokování na kruhové polární dráze ve výšce 100 km nebo na eliptické polární dráze 100 km krát 3000 km (scenarios/lunar-orbit-rendezvous.toml,...-elfo.toml). Dávkový odhad Gauss-Newton přes oblouk slučuje absolutní určení polohy na vozidlo z ilustrační sady relé třídy LCNS, trvalou chybu signálu ve vesmíru (společnou oběma vozidlům i nezávislou) a vzdálenost křížového spoje, v lunárním silovém modelu cratu. Uvádí relativní polohu a rychlost v lokálních osách cíle, dostupnost určení polohy, střední normalizovanou kvadratickou chybu odhadu proti její očekávané hodnotě, cenu zanedbání gravitačních harmonických, koncové modely relativních senzorů vedle údaje jen ze signálů a předávanou kovarianci 6x6.lunar-descent: rozpočet rozptylu přistání na jihopolárním místě (scenarios/lunar-descent.toml;lunar-descent-lola.tomlčte DEM z LOLA z checkoutu): pětistavový inerciální model chyb po osách, určení polohy AFS (samostatné nebo diferenční, s využitím rezidua korekčního spoje zlunar-differential-pnt), určení polohy vůči terénu (porovnávačterrain-navna svém syntetickém reliéfu, nebo mez Cramér-Rao porovnání s DEM z LOLA) a lunární čas přes hodiny vozidla (lunar-time-offset). Uvádí elipsu přistání 3 sigma, každou kombinaci podpor a kalibraci elipsy metodou Monte Carlo.lunar-surface: dostupnost určování polohy a času podle místa a roční doby (scenarios/lunar-surface.toml;lunar-surface-terrain.tomlpřidává horizont z LOLA sledovaný paprskem): údaj o určení polohy pro jedno místo se rovná údajimoonlight-service-volumeaž na bit; s roční dobou se mění viditelnost Země a Slunce z analytických efemerid.lunar-ascent: výstup na oběžnou dráhu setkání a kovariance polohy a rychlosti přenesená zpět na dráhu (scenarios/lunar-ascent.toml), vedle ní uvedený rozptyl vypnutí motoru.docs/MISSION-THREAD-LUNAR.md; předregistrace, její dodatky a každý výsledek, včetně nesplnění, vxval/mission-thread-lunar/.
Důkazy#
- Předregistrováno v
xval/mission-thread-lunar/PREREGISTRATION.mdpřed jakýmkoli během, se šesti datovanými dodatky (každý učiněn před stažením dat, kromě dodatku 6, který po stažení a před jakýmkoli výsledkem A2 opravuje aritmetickou chybu v počtu stavů; každý dodatek je v souboru zveřejněn). Žádný práh nebyl zmírněn. - A1 (propagátor proti rekonstruované trajektorii LRO z JPL Horizons, 24 h): MET, maximální rozdíl ve 3D 33 m proti prahu 500 m a radiální rozdíl RMS 2,4 m proti 60 m.
- A2 (týž propagátor proti NRHO CAPSTONE přes jeden oběh o délce 6.5 dne): NOT MET, rozdíl koncové polohy 136,8 km proti prahu 25 km a rozdíl poloměru oskulační periapsidy 28,4 km proti 10 km. Řádek zůstává MODELLED a nesplnění je zafixováno v
tests/mission_thread_lunar_oracles.rs. - B1 (konzistence odhadu setkání s vlastním modelem) je MET u čtvrtého návrhu odhadovače, střední NEES 5,85 až 5,93 proti pásmu [5,2, 6,8]; tři dřívější návrhy, rozšířený Kalmanův filtr ve třech variantách, pásmo nesplnily. Pátá změna, provedená poté, co se zjistilo, že dodávaný scénář o 2 h posílá 4 z 50 pokusů do lokálního minima (střední NEES 1e9), spouští fit Gauss-Newton na rostoucím oblouku s půlením kroku; B1 se jí nemění a dodávané scénáře dávají 6,51 a 6,33. Historie je v
xval/mission-thread-lunar/RESULTS.md. - Nic zde není VALIDATED: řádky s orákuly testují sdílený propagátor, nikoli navigační filtr, signál ani rozpočet.
[0.39.0] - 2026-10-22#
Žádné nové funkce: jedna oprava příkazového řádku, aktualizace závislostí v nástrojích křížové validace a dokumentace. Výsledky enginu se oproti 0.38.0 nemění.
Opraveno#
- Příkazový řádek se tiše ukončí se stavem 141, když se jeho standardní výstup uzavře (
kshana kinds | head), místo aby spadl s hlášením „failed printing to stdout: Broken pipe“. 141 je 128 plus SIGPIPE, tedy stav, který shell hlásí proyes | head. Ošetřena je jen uzavřená roura: plný disk či jakákoli jiná chyba zápisu se dál ohlásí a živý přenos zapisující do uzavřeného socketu stále dostane svou chybu zápisu.tests/cli_closed_pipe.rsuzavře čtenáře před spuštěním programu, takže první zápis selže při každém běhu.
Zabezpečení#
Jedna aktualizace závislosti v dodávané knihovně (první položka), zbytek v nástrojích křížové validace (xval/).
p256,p384ap521z verze 0,13 na 0,14 (spolu selliptic-curve0.14.3,ecdsa0.17.0 acrypto-bigintz verze 0.5.5 na 0.7.10; také přímá závislostcrypto-bigint, nyní 0,7) odstraňují upozornění RUSTSEC-2026-0387, kolísání časování vcrypto-bigint0.5.5. Kshana tyto knihovny používá jen k ověřování veřejných podpisů (kořenový klíč Galileo OSNMA a časová razítka RFC 3161) a podepisuje jen v testech jednorázovými klíči, takže praktická expozice byla nulová; aktualizace odstraňuje upozornění bez položky ignorování. Zámkové soubory knihovny i MCP se mění oba; žádný výsledek ověření se nemění (testy vektorů OSNMA a časových razítek procházejí beze změny).- Minimální podporovaná verze Rustu je nyní 1,88 (vyžaduje ji oprava RUSTSEC-2026-0387).
memmap20.9.10 na 0.9.11 (RUSTSEC-2026-0186) v zámcích křížové kontroly ANISE (xval/anise-lunar-od,xval/anise-mars-od); zámky také znovu synchronizují závislost na cestěkshanav repozitáři.pillow12.3.0 na 13.0.0 acertifi2026.7.22 na 2026.10.19 v připnutých verzích prostředí orákul (xval/oracles/requirements.lock,requirements.frozen.txt): opravená vydání pro osm bezpečnostních oznámení k pillow a jedno k certifi.
Dokumentace#
docs/BENCH.md, README a tento soubor uvádějí každý práh kshana-bench, který je NOT MET, tak jak je zaznamenán vxval/bench/RESULTS-v2.md: A2 (agc_k_sigmaAUC 0,766 oproti požadovaným alespoň 0,80 na testovací části), D1 (největší rozdíl 0,0301) a úloha (b) R1 (převzato, znovu nespuštěno). Žádný práh není uvolněn.- Průchod kompletností README: seznam obsahu; druhy scénářů zařazené do rodin, každý se stránkou pod
docs/kinds/by-kind/(popis a pole enginu, vstupy a výsledky ukázkového běhu, řádky registru a orákula, omezení, která uvádí zpráva běhu, a graf, který engine zapisuje), kontaktní list pro každou rodinu, vše indexováno vdocs/KINDS.md; každý příkaz vdocs/COMMANDS.md; každé rozhraní, příkaz zásuvného modulu, dovednost a stránka Studia vdocs/ALL-SURFACES.md; každá oblast schopností vdocs/CAPABILITY-DOMAINS.md; vložené diagramy Mermaid (přehled systému, rozhraní, vnitřní smyčka, důvěra v přijímač, laboratorní okruh tam a zpět, Studio, tok testování a vydání, mapa modulů, distribuce). Zapsánotools/gen_kinds_index.py,tools/gen_readme_blocks.pyatools/gen_figures_038.py; auditovánotools/readme_audit.py; hlídánotests/readme_completeness_doc_sync.rs, které také připíná popis a pole každé položky k enginu. tools/render-diagram-chromium.sh: vykreslí diagram Mermaid do SVG a PNG v Linuxu a aktualizuje záznam o vykreslení.- README: obrázky pro uživatele z vesmíru a Měsíce používaly cesty relativní k
docs/, takže se z README nenačetly; jeden odkaz mířil na../../docs/JAMMERTEST.md. - Odstraněny dva zastaralé ručně zkopírované soubory grafů (
docs/assets/clock-ensemble-band.svg,sweep-clock-stability.svg), které žádná stránka nepoužívala a které už neodpovídaly enginu; aktuální grafy obsahujedocs/KINDS.md.
[0.38.0] - 2026-10-19#
Přidáno#
- GNSS za konstelací (
gnss-ssv). Nový druh scénáře pro kosmické prostředky nad drahami GNSS, kolem nich i za nimi (docs/SSV.md): dostupnost jednoho a čtyř signálů, délky výpadků, C/N0, DOP a spoje hlavního laloku oproti postranním lalokům pro GPS, GLONASS, Galileo, BDS, QZSS a NavIC na slupce nebo podél trajektorií LEO, MEO, GEO, HEO a přechodových drah k Měsíci; vysílací diagramy z brožury, parametrické nebo dodané uživatelem; model ionosféry, plazmasféry a atmosféry s paprskem u limbu; návrh přijímače pro slabé signály; palubní rozšířený Kalmanův filtr GNSS pro HEO a přechod k Měsíci; a relativní navigace ve formaci. Porovnáno s brožurou ICG Space Service Volume podle předregistrace zafixované před během: konstanty minimálního vyzářeného výkonu a lunární práh se shodují, ostatní prahy při předregistrovaném čtení splněny nejsou (téměř všechny kvůli nekonzistentnímu úhlu svazku GLONASS v brožuře) a parametrická náhrada postranních laloků nereprodukuje naměřené diagramy panelů GPS. Vše zůstává MODELLED (xval/gnss-ssv/RESULTS.md). - Oběžná dráha Měsíce a jeho povrch jako navigační a geodetická infrastruktura (
lunar-infrastructure). Nový druh scénáře s pěti studiemi vybíranými pomocístudy(docs/LUNAR-INFRASTRUCTURE.md): konzistence palubního určování oběžné dráhy podle GNSS Země na téměř přímočaré halo dráze oproti nezávislému pozemnímu určení vzdálenosti a rychlosti změny vzdálenosti; společná dvojitě diferencovaná fáze nosné povrchové stanice a orbiteru s celočíselným fixováním LAMBDA; Fisherova informace sedmiparametrového lunárního datumu s měřením vzdálenosti mezi orbiterem a povrchem i bez něj; odchylky mezi technikami GNSS, VLBI a laserového měření vzdálenosti oproti místnímu spojení; a citlivost na h2, k2, l2 a fyzickou libraci. MODELLED, s vstupy ILLUSTRATIVE: numerika je ověřena nezávislými programy v numpy a scipy a nic se neporovnává s měřením lunární veličiny. Prahy byly stanoveny vxval/lunar-infra/PREREGISTRATION.mda dvou zveřejněných změnách. Tři jsou NOT MET a každý je zafixován testem, který tvrdí, že k nesplnění došlo: C3 (vložená chyba síly není zjištěna předregistrovanou mírou), Q3 (bootstrapovaná míra úspěchu se liší od orákula v numpy o 1.7e-6 oproti prahu 1e-9, kvůli aproximaci normálního rozdělení v LAMBDA) a polovina stopy u G3 (přidání rodiny měření vzdálenosti nesníží stopu pseudoinverze vždy). Ostatní jsou splněny (xval/lunar-infra/RESULTS.md). - Šestý článek v tabulce Výzkum. „Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever“ (arXiv:2610,23871, eess.SP) ukazuje, že faktor DOP (zhoršení přesnosti) je pro cislunární sledování pouze podle vzdálenosti nedefinován, a místo něj používá Gramián pozorovatelnosti na čtyřech rovinných vzdálených retrográdních drahách: samotná vzdálenost má v jednom okamžiku hodnost 2 ze 4 a vyžaduje oblouk dlouhý asi 2,09 h, rychlost změny vzdálenosti (Doppler) dává hodnost 4 okamžitě a společný odhad stanice se stavy družic a hodinami zůstává o jedničku hodnostně deficitní, pokud chybí vnější interferometrické pozorování. Jeho čísla znovu generuje druh
cislunar-observability(kshana scenarios/cislunar-observability.toml);cislunar-arc-recoverytestuje práh nezávislým odhadovačem. Obsahuje je karta výzkumu v README, README crates, npm a PyPI i generátor. - Neutrální rozhodčí, učiněný měřitelným.
kshana jammertest importčte zveřejněný katalog NPRA Jammertest a plán vysílání jako plánovanou pravdu (id katalogu zachovány) akshana jammertest scorehodnotí záznam přijímače proti němu po jednotlivých testech (latence detekce, nezachycené poplachy, falešné poplachy, doba do zotavení), volitelně jako podepsaný balíček důkazů (docs/JAMMERTEST.md). Hodnoticí prahy byly předregistrovány před jakýmkoli hodnoceným během (xval/jammertest-score/). Na datové sadě JammerTest 2024 (stahované, nikdy nepřibalené) předregistrované pravidlo minima dat selhalo v prvním běhu i v revizi zpracování dat, takže žádný práh nelze posoudit a nic se netvrdí; oba běhy jsou zaznamenány a zafixovány. MODELLED: plán tvoří zaprotokolovaná okna datové sady, nikoli zaznamenané časy vysílání. Sada NMEA SimulaMet 2025 není adaptována (na její stránce není uvedena licence). - Vlastní příznaky přijímače vedle příznaků Kshana. UBX-NAV-STATUS
spoofDetStatea UBX-SEC-SIG se v každé epoše čtou doself_reporta porovnáníreceiver_self_reportve výsledku je staví proti monitorům Kshana (oba, jen přijímač, jen Kshana, žádný); nevyvolává žádný poplach a nemění žádné skóre. Připojují se k nim čtečka Septentrio SBF (PVTGeodetic, MeasEpoch, RFStatus, jen pro čtení, na cratesbf-toolss licencí MIT) areceiver-trust live --serial(kanál NMEA přes sériový port nebo USB, jen pro čtení; do přijímače nikdy nezapisuje). - Časování a bezpečnost hardwaru (
docs/TIMING-HIL.md,docs/HARDWARE-SAFETY.md). Druh scénářeholdover-testhodnotí test holdoveru časovacího systému (GNSS odebráno operátorem, holdover, zotavení) z naměřeného záznamu časové chyby, měřeno proti maskám ITU-T z veřejných tabulek.clock_logčte logy linuxptp (ptp4l,phc2sys,ts2phc) a chrony (tracking,statistics).iq scene --format sdrxzapisuje metadata ION GNSS SDR aiq monitor --followmonitoruje záznam SigMF, zatímco roste (pouze příjem).compliance-reportzískává profil NIST IR 8323r1 Foundational PNT Profile (15 parafrázovaných řádků, podporuje důkazy pro (supports evidence for)). Balíček důkazů může ve svém podepsaném manifestu zaznamenatlab-attestationoperátora, nikdy neověřené; hardwarové stupně 0 až 4 a právní poznámky jsou vHARDWARE-SAFETY.md(čeká na právní posouzení). Žádná vysílací cesta jakéhokoli druhu neexistuje. - kshana-bench v1 (
kshana bench,bench/SPEC.md,docs/BENCH.md): pevné úlohy, rozdělení a metriky pro detekci interference GNSS na záznamech přijímačů (JammerTest 2024) a v IQ, predikci holdoveru času (hodiny IGS) a mezeru optimismu mimo rozdělení trénovacích dat; manifesty rozdělení s připnutými hashi a skripty pro stažení (žádná přibalená data), zapečetěný holdout pomocí commitu a odhalení, schéma souboru výsledků a statická stránka žebříčku. Základy s prahy předregistrovanými vxval/bench/PREREGISTRATION.md: prahy hodnotitele splněny, C1 až C3 splněny, D2 splněno; A2 NOT MET (agc_k_sigmaAUC 0,766 oproti požadovaným alespoň 0,80 na testovací části), D1 NOT MET (největší rozdíl 0,0301) a úloha (b) R1 NOT MET (převzato, znovu nespuštěno), každý zafixován (xval/bench/RESULTS-v2.md). Každé skóre je MODELLED. Pythonbench_score,bench_leaderboard; WebAssembly totéž; MCPscore_benchmark,render_leaderboard. - Observatoř interference (
kshana interference-map daily,sensitivity,docs/observatory/METHOD.md): reprodukovatelný denní GeoJSON, PNG a JSON hlášení incidentů se třemi stavy (degraded, not degraded, not observed), minimálním zpožděním 24 h, buňkami o velikosti 0,5 stupně nebo hrubšími, bez přisuzování příčiny a s odmítnutím dat OpenSky; studie citlivosti předregistrovaných parametrů; 30denní baltský zpětný katalog z adsb.lol. - Strojové a senzorové vstupy pro
receiver-trust(docs/MACHINE-INPUTS.md). Nové hodnoty[log] format, všechny jen pro čtení, MODELLED, s ručně napsanými fixtures a bez přibalených dat:rtklib-pos(soubory řešení RTKLIB.pos),novatel(OEM7 ASCII a binárníBESTPOS,RANGEC/No aRXSTATUS; příznak rušení přijímače se stáváself_reportepochy, proti poplachům Kshana ho staví porovnáníreceiver-self-report),rtcm3(C/N0 z MSM4 a MSM7 pro GPS, GLONASS, Galileo, SBAS, QZSS, BeiDou a NavIC; rozložení z tabulek pyrtcm s licencí BSD, jejichž oznámení je vNOTICE, nikoli z normy RTCM) agnss-sdr(zprávy GNSS-SDR Monitor a PVT-monitor jako řádky JSON, předávané pomocíintegrations/gnss-sdr/relay.py). - Logy IMU jako druhý senzor.
[log.imu](csvneboeuroc) integruje rychlost stáčení z gyra do směru, který čte monitorheading-course; vložené na každém rozhraní a přenášené balíčky důkazů.kshana imu-fit(Pythonimu_fit, WebAssemblyimu_fit, MCPfit_imu_log, zásuvný modul/kshana-fit-imu, akce JetBrains) fituje parametry akcelerometru a gyra scénářůhybridafusionz klidového logu pomocí Allanovy odchylky a vypisuje tabulku[accel_classical]s SHA-256 logu v jejím původu. - Integrace: balíček ROS 2 (
integrations/ros2/kshana_trust: NavSatFix aublox_ubx_msgsna vstupu, témata důvěry na výstupu; jeho most bez ROS je testován proti skutečnému enginu, samotný uzel nebyl spuštěn na živém grafu ROS), mostgnss_lib_py(integrations/gnss_lib_py, závislost s licencí MIT, volitelná) a relé GNSS-SDR. - Exportér MQTT pro Home Assistant pro telemetrii důvěry:
kshana trust-telemetry --print-mqtta--mqtt-tcp <host:port>(zprávy objevování a stavový dokument JSON; jen publikování, bez přihlašovacích údajů a TLS) aformat = "mqtt"jako text v Pythonu, WebAssembly a MCP. - Sedm řádků registru MODELLED k výše uvedenému. Nic z toho není VALIDATED: nebyl přečten žádný záznam ze skutečného přijímače, základnové stanice, IMU, běhu GNSS-SDR, grafu ROS ani brokeru MQTT.
- Rezerva optického spoje v čase. Druh
optical-atmospherepřijímá volitelnou tabulku[timeseries](duration_h,step_s,seed) a poté také zapisuje pro každé místo jednu realizaci uvedeného modelu místa v čase se seedem: epizody oblačnosti, sloupec kapalné vody pro každou epizodu, jeden vzorek scintilace gamma-gamma na krok a z nich rezervu spoje, útlumy oblačností a scintilací a příznak spojení v provozu, s dosaženou dostupností, podílem oblačnosti, počtem výpadků a nejdelším výpadkem. MODELLED (jeden tah z modelu, nikoli klima; žádné vnější orákulum). Bez tabulky je výsledkem dokument 0,37. Dva přibalené optické scénáře tabulku obsahují (336 h, 600 s, seed 37). Prahy předregistrované vxval/optical-atmosphere/PREREGISTRATION-timeseries.mdpřed prvním během. - Specifikace zkušebních podmínek a laboratorní okruh tam a zpět.
kshana.test-conditions/1je zveřejněno jakodocs/spec/TEST-CONDITIONS.mdse schématem JSON Schema a získávárecording.kind = "receiver-log".kshana bench-exportnově zapisuje také<base>.conditions.json.kshana evidence round-tripsestaví podepsaný balíček propojující hash scénáře, hash uvedených podmínek, hash záznamu přijímače a skóre vůči uvedeným událostem a odmítne podmínky, které se neshodují s hodnoticími událostmi. Ukázkový příklad s gps-sdr-sim zapisujícím pouze soubor; přehrání je odpovědností operátora a nikdy se neautomatizuje. Pythonevidence_round_trip, MCPcreate_round_trip_pack, zásuvný modul/kshana-evidence-pack. - Balíčky norem (
kshana standards-pack,standards/): testovací profily rámce DHS Resilient PNT pro úrovně 1 až 4, úrovně přesnosti a vyhodnocení integrity podle IMO MSC.1/Circ.1575 a ICAO Doc 9849 Appendix F monitorovat, posoudit a zmírnit, každý jako sada scénářů hodnocených podle prahů stanovených před během, s řádky compliance-report, pro které podporují důkazy pro (supports evidence for). Nesplnění jsou v záznamu a zafixována: DHS L4-T1 a čtyři testy přesnosti IMO. Samotný Doc 9849 nebyl čten (placený); balíček ICAO se řídí vlastní prezentací ICAO RFI Mitigation Plan.compliance-reportzískává sekci balíčků norem. Vše MODELLED. - LunaNet Augmented Forward Signal (
docs/LUNANET-AFS.md): kódy AFS-I Gold a AFS-Q Weil pro PRN 1 až 210, signálylunanet-afs-ialunanet-afs-qvkshana iq, kód SB1 BCH, CRC-24Q a prokládač akshana lunanet-afs-check(spec,symbols,generate), připnuté k LNIS V5 Applicable Document 1 Volume A (LSIS-AFS V1.0, 29 January 2025). Kódy VALIDATED oproti vytištěným tabulkám dokumentu (které označuje TBC); jeden vytištěný terciární sloupec (PRN 147) je pravděpodobně tisková chyba a nesoulad je zafixován. Kódování LDPC podrámců 2 až 4 není implementováno. - Poznámkové bloky ke kurzu (
notebooks/course/): jamming, spoofing, holdover, integrita, OSNMA a mapa interference, každý s cvičeními. - Studie maximálního URA pro ARAIM Milestone 3 skupiny EU-US WG-C (
xval/araim-m3/,src/bin/gen_araim_m3_study.rs), nahrazující staženou „Table A-3“ plán; MODELLED při uvedených odchylkách. - Návrhy ke schválení vlastníkem pod
docs/drafts/: článek JOSS, dodatek ke stanovám TSC, proces registru orákul a návrh rozděleníLICENSES/. Nic z toho není přijato. - Pohledy Studia pro funkce 0,38 (kshana.dev/studio/). Přehrání mostu (dva syntetické běhy na jedněch hodinách: dráha, skóre důvěryhodnosti, družice, které log slyší, a verdikt, s vlastními příznaky přijímače vedle poplachů Kshana); Optical PNT (dva scénáře
optical-atmosphere, s volitelnou realizací[timeseries]se seedem, MODELLED); Holdover test (výsledekholdover-testměřený proti maskám ITU-T, vykreslený z vlastníhorecord.seriesvýsledku); prohlížeč observatoře interference, který otevírá soubory, které jste vytvořili, a žádné nedodává; na stránce Nástroje hodnotitel Jammertest, fit IMU a MQTT jako formát telemetrie; a v Důvěře volba formátu logu (RTKLIB.pos, NovAtel OEM7, RTCM 3, GNSS-SDR, Septentrio SBF) s volitelným souborem IMU. Každý pohled čte soubory v prohlížeči a nic nenahrává; každá hodnota si ponechává štítek, který pro ni drží registr, a každý nese poradní prohlášení. Stránka webu/benchmarkzobrazuje fragmentkshana bench leaderboard.
Opraveno#
- Issue #36: bajtově přesné vrstvy pinů. Bajtově přesné vrstvy pinů běží jen na hostiteli prohlášeném za základní (
KSHANA_EXACT_PINS=1, nastavujescripts/gate.sh), nikoli na každém Macu s procesorem Apple, protože matematická knihovna Apple se mezi vydáními macOS liší; přenosná vrstva běží všude atests/exact_pin_gate_guard.rsbrání tomu, aby byla bajtově přesná vrstva opět podmíněna pouze platformou. Samotná porovnání s orákuly na macOS procházejí. Žádný literál nebyl znovu převzat a žádná tolerance nebyla změněna.scripts/oracle-triage.shadocs/LOCAL-ORACLE-TESTS.mdpopisují, jak rozdíl vyšetřit;.github/workflows/oracle-macos.ymlje ruční a týdenní diagnostika, nikoli brána. - CodeQL: neukotvený vzor v pomocné funkci Studia pro otevření důvěry nyní odpovídá celé hlavičce (
web/studio/lib/trust-open.mjs). - CI: disk běhového prostředí. Úloha
checksestavuje profily dev a test bez ladicích informací, takže linkování už nezaplňuje disk. - Hlídače zdrojů. Každý zdrojový soubor, který obsahuje testovací fixtures s piny, deklaruje svůj rozsah pinů a testy, které zapisují dočasné soubory, používají pro každé volání jedinečnou cestu, takže paralelní běhy nemohou kolidovat.
docs/SCENARIOS.mdje znovu vygenerováno pro volitelné poletimeseriesdruhu optical-atmosphere.- Zásuvný modul JetBrains: žádné použití zastaralého API platformy ani API plánovaného k odstranění. Nástroj IntelliJ Plugin Verifier (
verifyPlugin) proti sestavení IntelliJ IDEA 263 (2026,3: 263.6800.24 a 263.7031.23) našel jedno zastaralé volání,FileEditorManager.openFile, ve Vložit příklad; nový soubor nyní otevírá pomocíOpenFileDescriptor. Zásuvný modul je kompatibilní s 2024,3 (since-build, beze změny) i s oběma sestaveními 263 a je na nich čistý. CI nyní spouštíverifyPlugina selže při problémech s kompatibilitou i při jakémkoli použití API plánovaného k odstranění.
[0.37.0] - 2026-10-17#
Přidáno#
- Optické PNT atmosférou (druh scénáře
optical-atmosphere,docs/OPTICAL-ATMOSPHERE.md, návrhová poznámkadocs/design/optical-atmosphere-0.37.md). Pro optický spoj a sadu pozemních míst uvádí útlum čistého vzduchu závislý na vlnové délce a elevaci, stav turbulence Hufnagel-Valley (Rytovův rozptyl, index scintilace, útlumy gamma-gamma, průměrování apertury), dostupnost vůči rezervě spoje z uvedeného klimatu oblačnosti, rezervu potřebnou pro cílové dostupnosti a strop, který žádná rezerva nezvedne, rozdělení délek výpadků, chybu času a měření vzdálenosti na výpadek podle modelu holdoveru hodin, prostorovou diverzitu míst korelovanou se vzdáleností a varianty „co kdyby“ pro změnu vlnové délky, větší aperturu, snížení scintilace adaptivní optikou a dodatečnou rezervu.optical_linkbudgetzískává rozpočet zohledňující atmosféru; bez něj je výstup bitově shodný s 0,36 (práh A5). Dva přibalené scénáře obsahují ILLUSTRATIVE klimata oblačnosti. MODELLED: tři řádky registru. Numerika splňuje prahy A1 až A6 předregistrované vxval/optical-atmosphere/PREREGISTRATION.mdoproti nezávislému programu v mpmath; to ověřuje implementaci uvedených vzorců, nikoli atmosféru, a nebyl porovnán žádný naměřený záznam dostupnosti, takže žádný řádek není VALIDATED. Práh A4 byl poprvé nesplněn o 3e-9, protože použitá normální distribuční funkce byla aproximací 1.5e-7; distribuční funkce byla nahrazena a práh ponechán tak, jak byl registrován. Nativní sestavení a sestavení WebAssembly vracejí bajtově shodné dokumenty pro oba přibalené scénáře (A7, spuštěno na integračním commitu 0.37.0).
[0.36.0] - 2026-10-16#
Přidáno#
Detekční ROC monitorů IQ (PRO-32,
docs/design/DETECTION-ROC.md). Kampaň s monitory uchovává maximum každé testové statistiky přes okna uvedených událostí (pozitivní) a dlaždicovitá okna mimo události (negativní,roc_window_s). Zpráva je sdružuje podle druhu poplachu do ROC s jeho AUC a provozním bodem při nastaveném prahu, jakoroc.jsona sekci zprávy. Na syntetických kampaních je kontrola úrovně náhody splněna. Práh AUC pro C/N0 (0,95) splněn není (0,79), protože negativní okna těsně po události dědí z detekce doznívání CUSUM; je to zaznamenáno. MODELLED.Monitory IQ v kampani laboratorního přehrávání (PRO-31,
docs/design/MONITORS-IN-CAMPAIGN.md). Volitelná tabulka[monitors]v souboru kampaně spouští monitory IQ v jediném průchodu běhounu: výkonový a spektrální po každém řetězci předního stupně a C/N0, SQM a zachycení pro každý sledovaný kanál. Jejich poplachy se hodnotí vůči uvedeným událostem: zjištěno nebo nezachyceno, doba do detekce a falešné poplachy na hodinu expozice. U každého testu je uvedena hodnota falešného poplachu v uzavřeném tvaru, včetně nové oboustranné gaussovské hodnoty pro testy SQM (2Q(k)). Bez tabulky se nic nemění. Na syntetických kampaních jsou prahy falešných poplachů pro výkon a SQM i práh falešných poplachů pro C/N0 splněny; 18 z 18 útlumů je zjištěno, ale mez doby do detekce, která je z konstrukce pod jedním vzorkem detektoru, splněna není a je zaznamenána. MODELLED; řádek registru „IQ monitors scored in lab-replay campaigns“.Laboratorní fit z kampaní IQ, navazující práce (
tests/iq_labfit_followup.rs, úloha CIlabfit-iq-followup). Testuje dvě hypotézy, které §13,6 vdocs/design/LABFIT-FROM-IQ.mdnechal otevřené, oproti prahům předregistrovaným v 1e532f84. Přidává dvě syntetické kampaně: S se stupňovitým J/S (seed 2026_1014) a R, novou rampu (seed 2026_1015). Výsledky jsou vdocs/design/evidence/labfit-followup/RESULTS.md.- S1 splněno: při udržení každé úrovně J/S se
δ_effobnoví v rozmezí +0,185 dB. Chyba −1,1 dB u kampaní s rampou je zpoždění odhadovače. - S2 nesplněno, zafixováno testem, který tvrdí nesplnění: (d) tak, jak je napsáno, na kampani se stupňovitým průběhem platí pro model sledovací smyčky (0,45 dB), ale ne pro empirický (6,42 dB).
- R1 splněno: na nové kampani s rampou je (d) s fitovanou dobou setrvání při poklesu vynásobenou rychlostí rampy každé události v rozmezí 1 dB u obou modelů.
- Nesplnění (a′) a (d) se na R opakují.
- Kampaň může nyní v testovací sestavě uvést svůj J/S jako profil
step. - Žádný verdikt v §13 se nemění a řádek registru zůstává MODELLED.
- S1 splněno: při udržení každé úrovně J/S se
Omezené navázání FLL, volitelně (DS-LOOP-05): nový klíč návrhu smyčky
[design.carrier] fll_pull_in_max_s(s), v RustuLoopConfig::fll_pull_in_max_s. Přifll_assist = "pull-in"vynutí předání z FLL do PLL po této době, bez ohledu na PLI. Ve výchozím stavu nenastaveno, a pak mimo hash návrhu; výchozí návrh a jeho hash se nemění.- Ověřeno proti prahům předregistrovaným v 58789af0, na vložené pravdě. Kontrola je splněna: výchozí nastavení nikdy nepředá řízení v 9 z 10 seedů při 33 dB-Hz.
- Nesplněno: s omezením 1,0 s drží zachycení 16 z 20 běhů při 33 dB-Hz a 8 z 20 při 31 dB-Hz; ostatní cyklují mezi vynucenými předáními a návratem FLL. Fázový jitter je 1,8násobkem samotné PLL při 33 dB-Hz.
- Podlaha navázání ~35 dB-Hz zůstává zdokumentovaným omezením výchozího nastavení.
- MODELLED; řádek registru „Capped FLL pull-in below the default design's FLL-to-PLL hand-over floor (opt-in)“.
Hystereze akvizice a kvantizér předního stupně v druhu jamming (CAP-06c): dvě volitelné sekce pro scénář
jamming.[acquisition]:acquisition_threshold_dbhz(dB-Hz, na sledovacím prahu nebo nad ním) areacquisition_delay_s(s, výchozí 0). Družice je získána na akvizičním prahu nebo nad ním, jakmile byla po dobu prodlevy nezískaná. Drží se, dokud je na sledovacím prahu nebo nad ním. Výstupy:epochs[].sats[].acquired(true/false),epochs[].acquired(počet) afom.availability_acquired(1).[front_end]:adc_bits(1 až 16) abandwidth_mhz(MHz, výchozí dvojnásobek čipové rychlosti). Výstupem je blokfront_end:agc_gain_reduction_db(dB,10·log10(1 + J/N)),quantiser_loss_db(dB, odečtené od efektivního C/N0 každého spoje) aloss_model. Ztráta je ztráta pro gaussovský vstup, označená jako neplatná pro rušiče CW, úzkopásmové a s rozmítáním.- Bez těchto sekcí je každý výstup bajtově shodný.
- Ověřeno proti prahům předregistrovaným v 70c72fcc. Ztráta kvantizéru je do 0,0007 dB od nezávislého Monte Carlo a údaj AGC do 0,012 dB od smyčky AGC vrstvy IQ.
- Registrované běhy hystereze byly neinformativní (každý spoj ztracen), takže tento práh je NOT MET. Doplňková sada běhů registrovaná v 37793290 jej splňuje: každý příznak se rovná nezávislému přepočtu a 732 z 1824 spojů vykazuje hysterezi.
- Zjištění: s rušičem CW ztrácí 1bitový ADC asi o 5 dB více než gaussovská hodnota.
- MODELLED; řádek registru „Acquisition hysteresis and the front-end quantiser in the jamming kind against independent recomputations“.
Terénní zastínění rušiče v druhu jamming (CAP-06b): volitelná sekce
[terrain]ve scénářijammings rušičem. Pole:dem_hgt: dlaždice SRTM.hgt, relativně k pracovnímu adresáři;samples_per_side,ll_lat_degall_lon_deg(deg): velikost a roh dlaždice;geoid_undulation_m(m, výchozí 0),k_factor(výchozí 4/3) aprofile_step_m(m, výchozí 30).
Engine vzorkuje profil terénu po ortodromě mezi rušičem a přijímačem a najde dominantní ostrou hranu. Výkon rušiče na vstupu přijímače, a tedy každé J/S, se snižuje o ztrátu jednou ostrou hranou podle ITU-R P.526-15 §4,1.
- Výsledek získává blok
jammer_terrain:nu_max(1),diffraction_loss_db(dB),obstacle_distance_m(m),obstacle_terrain_m(m),path_length_m(m) aprofile_points(počet). - Bez této sekce je každý výstup bajtově shodný.
- Ověřeno proti prahům a deseti umístěním předregistrovaným v 92cd2bfd, na commitnuté skutečné dlaždici SRTM Death Valley, oproti nezávislému přepočtu v numpy. Vše splněno: nejhorší rozdíl 1.6e-10 u
νi u ztráty (práh 1e-9), ztráta je monotónní ve výšce rušiče a ztráta snižuje J/S přesně o sebe samu. - MODELLED; řádek registru „Terrain shadowing of the jammer in the jamming kind against an independent numpy recomputation on a real SRTM tile“.
Zisky antény CRPA v druhu jamming (CAP-06a): volitelná sekce
[crpa]ve scénářijamming. Pole:elements_enu_m(polohy prvků v lokálním systému východ-sever-nahoru, m),weighting("null-steering"nebo"mvdr") abandwidth_mhz(šumová šířka pásma MVDR, MHz, výchozí dvojnásobek čipové rychlosti).- Každý kanál vytvoří nezkreslující paprsek směrem ke své družici. Šum spoje se škáluje hodnotou
‖w‖²a rušič hodnotou|wᴴa_j|²před stávající rovnicí C/N0 pro ochranu proti rušení. - Každý spoj získává blok
crpa:array_noise_gain_db(dB) ajammer_gain_db(dB). - Bez této sekce je každý výstup bajtově shodný.
- Neplatná sekce (prázdný seznam prvků, neznámé váhování, nekladná šířka pásma) je chyba, a to přes
kshanaaapi::run_tomli přesjamming::run_jamming. - Ověřeno proti prahům předregistrovaným v 08d83b4d. Splněno: aditivita (po opravě: první sestavení přidalo nové jednotky do tabulky jednotek každého běhu jamming); jeden prvek není pole; šumový zisk a efektivní C/N0 oproti nezávislému přepočtu v numpy do 1e-9 dB; MVDR se při vysokém JNR blíží nule.
- Nesplněno: zisk rušiče MVDR u 194 z 456 spojů při 0,36 přenosné matematice (202 při matematice hostitele;
docs/revisions/STUDIO15-batch4-rebaseline.md) (nejhorší 1.7e-6 dB). Rezidua od −100 do −188 dB jsou při tomto prahu pod rozlišením float64 a numpy nesouhlasí sám se sebou ve stejném řádu. - MODELLED; řádek registru „CRPA antenna gains in the jamming kind against an independent numpy recomputation“.
- Každý kanál vytvoří nezkreslující paprsek směrem ke své družici. Šum spoje se škáluje hodnotou
Sledovací engine IQ oproti GNSS-SDR 0.0.19 (PRO-33):
kshana iq tracka GNSS-SDR sledují tytéž nezávislé záznamy GPS L1 C/A v numpy při 30 až 45 dB-Hz.- Prahy předregistrované v 48edd4a5. Registrovaná kalibrace selhala na chybném předání GNSS-SDR (F3), takže Amendment 1 (1e4288c4) přidává FLL jen pro navázání k oběma přijímačům, commitnuto před jakýmkoli testovacím záznamem.
- Splněno: jitter nosné a kódu a Doppler se shodují v rozmezí 5 % při každém C/N0.
- Nesplněno: C/N0 NWPR enginu je o 2,3–7,1 dB pod SNV GNSS-SDR (F4, známé omezení odhadovače; M2M4 je do 0,06 dB od pravdy); indikátory zachycení se liší podle definice (F5); jedna nesrovnalost v proklouznutí při 30 dB-Hz (F6).
- MODELLED; řádek registru „IQ tracking engine against GNSS-SDR 0.0.19 on independent recordings“.
Dva řádky VALIDATED pro kódy vrstvy IQ (DS-GIQ-06b, PRO-39).
- BeiDou B1I. Všech 63 primárních kódů B1I se shoduje s nezávislým generátorem GNSS-SDR v0.0.19 čip po čipu (práh předregistrovaný v 911106d1). Commitnut je pouze výstup tohoto programu: kódy PRN B1I, které definuje veřejné ICD, jako prefix a hash.
- GPS L1C. Všech 126 kódů L1CP/L1CD a 63 překryvů L1CO se shoduje s kontrolními sloupci, které tiskne IS-GPS-800J, a vypočtená Legendreova posloupnost se shoduje s jeho Table 6.2-1 (prahy předregistrované v fe372e26).
- Řádky: „BeiDou B1I primary ranging codes against an independent generator“ a „GPS L1C ranging and overlay codes against the IS-GPS-800J printed check columns“.
Pásma GLONASS, BeiDou a Galileo E6 v modelu spektra (CAP-12, signály): nové názvy pásem
glonass-l1ofaglonass-l2of(libovolný kanál FDMA jakoglonass-l1of-k<K>, K = −7 až 6),beidou-b1i,beidou-b1c,beidou-b2a,beidou-b3iagalileo-e6. Každé nese nosnou, modulaci a minimální přijímaný výkon podle svého ICD. Jsou volitelná podle názvu: výchozí sada pásem a všechny stávající výstupy se nemění.- Ověřeno proti prahům předregistrovaným v 5806f28b: hodnoty ICD, nuly, složený signál B1C a cesta C/N0 jsou splněny.
- Dva prahy splněny nebyly. Práh jednotkové plochy byl tak, jak byl napsán, nedosažitelný (F1). Průběhy B1I a B1C vrstvy IQ se modelu shodují jen po zprůměrování v pásmu kvůli nerovnoměrným čárovým spektrům jejich kódů (F2).
- MODELLED; řádek registru „Spectrum model: GLONASS, BeiDou and Galileo E6 bands (opt-in)“.
Volba CFAR s průměrováním buněk v akvizici IQ (PRO-37):
iq::acq::ca_cfaraca_cfar_cellsrozhodují na akviziční mřížce porovnáním každé buňky s průměrem referenčních buněk v jejím dopplerovském řádku. Prahová hodnota vychází z pravděpodobnosti falešného poplachu CA-CFAR v uzavřeném tvaru proMnekoherentních bloků (ca_cfar_pfa,ca_cfar_alpha), takže rozhodnutí nezávisí na normalizaci výkonu vzorků. Je volitelná; výchozí detektor a všechny stávající výstupy se nemění.- Ověřeno proti prahům předregistrovaným v 3724aefa: uzavřený tvar oproti Monte Carlo (18 z 18 případů) a návrhová míra 1 % naměřená na 0,97–1,01 % na gaussovském a 2bitově kvantovaném šumu.
- Jeden práh splněn nebyl: u 2bitového signálu bez šumu 1,28 % buněk mimo vrchol překračuje prahovou hodnotu, a to na korelačních postranních lalocích kódu (zjištění F1).
- MODELLED; řádek registru „Cell-averaging CFAR option in IQ acquisition“.
Model scintilace oproti naměřeným datům (PRO-34): Cornellův model scintilace kanálu IQ byl porovnán s naměřenou intenzitou a fází GPS L1 při 50 Hz z noci rovníkové scintilace (záznam Zenodo 16941224, INGV, Malindi, CC BY 4,0), s prahy předregistrovanými v b6ccb499. Splněno: rozdělení intenzity a fázová scintilace svázaná s S4. Nesplněno: model je 2,4krát častěji v útlumu pod −10 dB a 3,5krát déle (zjištění F1). Registrované zpracování čte zabalenou fázi modelu (zjištění F2); výsledek pro fázi platí i s rozbalenou.
scripts/fetch_scint_malindi.shstahuje data. Řádek zůstává MODELLED: „IQ ionospheric scintillation channel (Cornell model) against measured 50 Hz GPS L1 scintillation“.Opravená čtečka vzorků LuGRE (MR-09):
realdata::lugre::parse_iqs_sdrxčte dávku IQ LuGRE s I ve vysokém půlbajtu a úrovněmi mid-rise2v + 1(SdrLayout::mid_rise), které odstraňují střední hodnotu −½, kterou nesou holá celá čísla ve dvojkovém doplňku u I a Q.run_acq.py --correcteddává GNSS-SDR stejné čtení. Obecná čtečka ION a všechny stávající výstupy se nemění: 149 výsledků scénářů a jedna studie jsou před a po bajtově shodné a zafixovaná zjištění LuGRE se čtou, jak byla registrována (xval/lugre-reader/RESULTS.md). Žádný řádek registru se nemění.Volitelné sledování BOC(1 1) (CAP-07 (a)):
LoopConfig::bocpřeškáluje diskriminátory DLL pro hlavní vrchol sinusového BOC(1 1) a přidává monitor skoků na vedlejší vrchol (velmi předbíhající a velmi zpožděné korelátory při ±0,5 čipu, čítače nahoru/dolů,N = 8), který přesouvá NCO kódu z vedlejšího vrcholu;Channel::bump_jumpsvypisuje skoky. Ve výchozím stavu vypnuto a všechny stávající výstupy se nemění. Ověřeno proti prahům předregistrovaným v 6b68f6cc na syntetickém signálu BeiDou B1C: start na vedlejším vrcholu, který bez volby zůstává 0,55 čipu mimo, je s ní jediným skokem v 0,08 s přitažen na hlavní vrchol a z hlavního vrcholu nebyl pozorován žádný falešný skok. Jeden práh splněn nebyl: mřížka jednotkového testu pro škálování zasahuje mimo lineární rozsah diskriminátorů (zjištění F1 vdocs/design/evidence/boc-bump-jump/RESULTS.md). MODELLED; řádek registru „BOC(1 1) tracking: DLL scaling and bump-jump ambiguity resolution (opt-in)“.Laboratorní fit z kampaní IQ (B7.1,
docs/design/LABFIT-FROM-IQ.md).[input] campaign = "<out-dir>"scénáře labfit fituje výstupní složkukshana iq campaignv CLI (kshana iq labfit), v Pythonu (kshana.iq_labfit) a v nástroji labfit MCP (jen složky uvnitř jeho pracovního adresáře). Fituje jednu jednotku pro každý signál, návrh smyčky, řetězec předního stupně a typ rušiče:- model C/N0 oproti uvedenému J/S, s cenzurováním;
- sledovací práh, přímo i v uzavřeném tvaru;
- modely zachycení sledovací smyčky a empirický, provázané přes model C/N0, s jejich dobami setrvání;
- bootstrap shluků se seedem přes záznamy, 90% predikční intervaly a hold-outy s vynecháním jednoho záznamu;
- předregistrovaná tabulka
[validation], s hashem, s PASS/FAIL pro každý práh.
Zpráva je
kshana.labfit-iq/1jako JSON, CSV a Markdown, s blokem jednotek.Q_effnelze z dat C/N0 identifikovat bez nezávislého měření výkonu. Uvádí se, nikdy nefituje, a fitovaným parametrem jedelta_eff = delta - 10 log10 Q(změna návrhu 2026-10-12). Neznámý typ rušiče bere nejškodlivější uvedenéQ(cw, 1). Na syntetických kampaních z vlastních scén Kshana prahová hodnota pokrytí hold-outu (c) projde. Prahydelta_eff(a') a (b') (0 z 50 pokrytých kampaní) a práh uzavřeného tvaru prahové hodnoty (d) splněny nejsou: jsou zaznamenány se svými hodnotami. MODELLED; řádek registru „Calibration of the open receiver's C/N0 and lock models to IQ campaign results, with stated prediction error“. Cesta labfit ze záznamu přijímače a její výstupy se nemění.solar-systemna jádru JPL (CAP-31):planetary_kernel_pathbere každé těleso, které SPK obsahuje (s de440s: Merkur, Venuše, Zemi, Měsíc), z jádra, štítekKERNEL, a blokkernelpřidává jen tehdy, je-li nastaveno. Nový řádek, VALIDATED proti SPICE (předregistrováno f8e946ea; nejhorší 3.3e-5 m, 1.0e-11 m/s). Výchozí zpráva se nemění.Porkchop na efemeridách DE440 (CAP-20b):
maneuver::porkchop_kernelprochází C3 a příletové V∞ na heliocentrických stavech z DE440 SPK. Nový řádek, VALIDATED proti stavům SPICE- pykep 3.0.1 (předregistrováno 2d857fb1; Země–Mars 2026-2028, 304 buněk, nejhorší 2.6e-14, táž buňka s minimálním C3).
Negravitační makromodel LRO: NOT MET (DS-LRO-10, předregistrováno e82047e2).
lunar_od::LunarMacroModel(volitelné přesLunarForceModel::macro_model): přímé sluneční záření na ploché desky se stínem Měsíce, panel sledující Slunce a lunární albedo a tepelné IR;LunarMacroModel::lro_genericje označená obecná aproximace LRO z publikovaných údajů (bez desek sběrnice: tabulku desek se nepodařilo získat). Na 4 h oblouku LRO ponechává RMS redukovaně dynamického řešení na 6,668 m a dynamického na 11,94 m, s nevěrohodným faktorem záření (asi +21 / −22), takže všechny tři prahy jsou nesplněny. Zjištění je zafixováno testem a žádný výchozí výstup se nemění (docs/design/evidence/ds-lro-10-macro-model/RESULTS.md). Volitelné lunární SRP typu dělová koule nyní používá kuželový stín Měsíce místo stínu Země (forces::conical_shadow_body).Lunární OD: volitelný pevninový příliv k2 a selenocentrická relativita (DS-LRO-11), ve výchozím stavu vypnuto (
LunarForceModel::lunar_tide,::relativity); přepínačKSHANA_LRO_DEGREEpro křížovou validaci ANISE (DS-LRO-04); fixture 24 h oblouku LRO a pouze informativní fit dlouhého oblouku (DS-LRO-09). Informativní běhy jsou zaznamenány vdocs/design/evidence/ds-lro-09-11-longer-arc/RESULTS.md; žádné zveřejněné číslo se nemění.NRHO CR3BP 9:2 oproti CAPSTONE (CAP-29d): nový řádek MODELLED měřící kruhovou omezenou NRHO enginu oproti skutečně prolétané dráze CAPSTONE (JPL Horizons, March 2023; předregistrováno 4e868170): perioda 1,07 %, apolunium 0,05 %, perilunium 4,1 % od středních hodnot CAPSTONE, v rámci registrovaných prahů 3 / 5 / 20 %. Měření, nikoli validace.
Rotující stavy CR3BP do ICRF se středem v Měsíci (RM-34, FUT-06):
cr3bp::to_moon_centred_icrf/from_moon_centred_icrf/to_moon_centred_icrf_de440mapují bezrozměrný rotující stav soustavy Země–Měsíc na okamžitou přímku Země–Měsíc podle DE440, včetně rychlosti soustavy mimo rovinu. Nový řádek, VALIDATED proti dvouvektorové soustavě SPICE (předregistrováno 2313eb1b, změněno před jakýmkoli během d5ef79b3; 72 případů, nejhorší 1.8e-7 m a 1.2e-9 m/s).Členové rodin CR3BP oproti JPL Three-Body Periodic Orbits API: NOT MET (RM-35, předregistrováno a9074f65).
cr3bp_family(korekce halo, NRHO a DRO, index stability monodromie, pseudo-obloukové pokračování) se shoduje u 54 z 58 členů API v každém prahu (stav, perioda a Jacobiho konstanta do 1e-10 všude). Jeden index stability halo L1 (9.5e-2) a tři uzavření malých DRO (1.5e-8 až 3.3e-8 oproti 1e-8) práh nesplňují, takže modul je#[doc(hidden)]a žádný řádek jej netvrdí. Výsledky:docs/design/evidence/cr3bp-families/RESULTS.md.Volitelná lunární orientace a prostředí podle DE440 (FUT-05, DS-LRO-08; výchozí nastavení beze změny):
lunar_frame::try_icrf_to_moon_pa_de440,lunar::try_mci_to_mcmf_de440/try_mcmf_to_mci_de440(ukotveno k epoše, hlavní osy DE440) alunar_od::De440LunarEnvironment(vložená orientace DE440 PA plus geocentrické Slunce a Měsíc z uživatelem dodaného DE440 SPK). Oproti ANISE (předregistrováno ea537710): orientace do 3.5e-7 rad a fity LRO do 1 mm, ale větev efemerid svůj práh nesplnila (Slunce 30,7 m, Měsíc 1,1 m, časový posun ~1 ms na straně ANISE), takže to není ověřený řádek. Výsledky:docs/design/evidence/fut05-de440-lunar-env/RESULTS.md.Datum kampaně lunární soustavy, práh NumPy škálovaný podle podmíněnosti: NOT MET (předregistrováno b887eb05; zůstává MODELLED). Krok 0 vylučuje záložní pseudoinverzi jako příčinu mezery 0,30 při odhadu stanic; NumPy se v rámci prahu shoduje u šesti z osmi scénářů, ale stations_estimated jej nesplňuje (6.8e-6 oproti 5.9e-7) a na nové datum 2026-12-01 nepozorovaný maják na jižním pólu činí informační hodnost majáku deficitní, což nezměněné orákulum nedokáže vyhodnotit. Výsledky:
docs/design/evidence/mr05-lunar-datum-cond/RESULTS.md.Datum lunární soustavy ze skutečné pozorovací kampaně (analytický Měsíc) VALIDATED na nových normálních bodech EDC z 2025 (předregistrováno 31f5283 před stažením kteréhokoli): nezměněné orákulum SPICE a NumPy se shoduje v účetnictví, hodnostech a nulové vazbě a do 1.11e-3 na sigmách (práh 1e-2), 8.95e-4 na podmíněnosti a 1.79e-3 na poměrech napříč/podél (práh 2e-2). Pouze kontrola (Library) výpočtu kovariance; prahy modely Měsíce nerozlišují. Výsledky:
docs/design/evidence/mr06-llr-analytic-fresh/RESULTS.md.Orientace podle IAU a GM čtrnácti přidaných těles Sluneční soustavy vyčleněné z řádku „Physical constants of every solar-system body“ do řádku VALIDATED (předregistrováno 154bc54):
Body::iau_rotation_etse shoduje se SPICEpxformna pck00011 do 1e-9 rad na 574 maticích v původních epochách a na 574 v 41 nových epochách, které nebyly dříve porovnány (nejhorší Phobos 1.38e-10 rad), aBody::muse rovná gm_de440 u všech čtrnácti těles. Zbytek původního řádku (J2, střední poloměr, zpráva) zůstává MODELLED. Výsledky:docs/design/evidence/mr08-body-orientation/RESULTS.md.Lambert s více oběhy (
maneuver::lambert_multirev): každé řešení až s třemi oběhy, obě větve. Nový řádek registru, VALIDATED proti pykep 3.0.1 (předregistrováno a75de851; 382 případů, 1058 řešení, nejhorší rozdíl rychlosti 1.6e-13 oproti 1e-8). Vnitřní hlídač přistání Keplerovy rovnice našel jedno omezenímaneuver::kepler_universalna oblouku s e = 0,994; je zaznamenáno vdocs/design/evidence/lambert-multirev/RESULTS.md.Tlak slunečního záření pro box-wing a ECOM2 (DS-PA-14), volitelně.
srp_boxwing: model box-wing z plochých desek s tabulkami Galileo FOC/IOV z metadat družic GSC, v nominálním řízení stáčení GNSS, s faktorem záření a parciálními derivacemi po panelech, a empirický model ECOM2 s jeho parciálními derivacemi. Volí se pomocíForceModel::box_wing_srp/PreciseForceModel::box_wing_srp(polesrp_boxwing, výchozíNone: cesta dělové koule a všechny golden soubory se nemění); je-li nastavena sada box-wing,crje její faktor záření. Porovnáno s Orekit 12,2 podle předregistrace (xval/srp-boxwing-orekit/): každý práh splněn, relativně asi 1e-15; VALIDATED jako vyhodnocení modelu, predikce SRP Galileo zůstává MODELLED.Stín SRP zploštělé Země a okrajové ztemnění Slunce (FUT-09, RM-11). Nový modul
srp_shadow:oblate_conical_shadow(okultující elipsoid WGS-84),limb_darkened_shadow(Eddingtonův zákon) aShadowModel, volitelné pomocíForceModel::srp_shadow(výchozí: stávající sférický kuželový stín, beze změny);forces::srp_accel_with_lit_fraction. Stín zploštělé Země se shoduje s poměrem osvětlení Orekit 12,2 do 7.4e-9 na 2400 geometriích (VALIDATED,xval/srp-oblate-shadow-orekit/); okrajové ztemnění nemá vnější orákulum (MODELLED).Termosféra NRLMSISE-00 (FUT-08, RM-10, DS-PA-13).
nrlmsise00: portgtd7agtd7d(přepínače, režimy denního Ap a 3hodinového pole ap) z C verze NRL Fortranu ve veřejné doméně. Je bitově shodný s tímto portem v C a do 1.9e-6 relativně od pymsis 0.13.0 (NRL Fortran, jednoduchá přesnost) na mřížce 720 bodů a reprodukuje 17 zveřejněných testovacích případů (VALIDATED;xval/nrlmsise00-pymsis/). Tím se ověřuje port, nikoli přesnost modelu oproti naměřené hustotě.Volitelná úroveň hustoty odporu NRLMSISE-00.
forces::DensityModel::{Exponential, Nrlmsise00 { f107a, f107, ap }},forces::drag_accel_with_density,density_atapropagator::ForceModel::drag_density. Statický exponenciální model zůstává výchozím, bit po bitu. Kosmické počasí je konstantní pro každý model. VALIDATED na úrovni oběžné dráhy oproti vlastnímu odporu NRLMSISE-00 v Orekit 12,2 po 24 h (nejhorší 0,03 m oproti posunu odporem až 142 km;xval/drag-tier-orekit/).Volitelné Slunce a Měsíc z DE440 v propagátoru Cowell (RM-33, FUT-10).
propagator::ForceModel::with_ephemerisbere libovolnýEphemerisProvider(např. DE440KernelEphemeris) pro členy třetího tělesa a SRP; odmítne poskytovatele, který nemůže obsloužit epochu, počítá návraty k analytické řadě a je ve výchozím stavu vypnuto.EphemerisProvider::relative_position_jd2zachovává dvoudílnou přesnost. Oproti Orekit 12,2 na jeho vlastní čtečce DE440 se oběžné dráhy 24 h shodují do 0,017 m; předregistrovaný práh polohy Slunce/Měsíce splněn nebyl (6,4 m / 0,24 m; SPICE ukazuje stejnou mezeru), takže MODELLED (xval/propagator-de440-orekit/).Volitelný atmosférický příliv S1 (DS-PA-03).
tides::atmospheric_tide_s1as1_air_tide_acceleration(Biancale & Bode 2006, GFZ STR06/01 Table 1 model N1, stupně 2–6), zapínané pomocíair_tide_s1()napropagator::ForceModelaprecise_od::PreciseForceModel; ve výchozím stavu vypnuto. MODELLED (koeficienty znovu zkontrolovány proti zveřejněné tabulce; žádné vnější orákulum pro účinek síly).Dávkové určování oběžné dráhy z rychlosti změny vzdálenosti a azimutu/elevace s elevační maskou (RM-36, FUT-13).
orbit_determination::determine_orbit_batch_tracking,simulate_tracking,predict_tracking,propagate_with_stm(variační STM s analytickými parciálními derivacemi dvou těles + J2),is_visible,measurement_with_partials;batch_ls::gauss_newton_analytic. Cesta jen podle vzdálenosti se nemění. Porovnáno s dávkovými nejmenšími čtverci Orekit 12,2 na 8 předregistrovaných scénářích: každý práh splněn kromě shody stavu bez šumu (≤ 1 cm), nesplněné u 2 ze 4 scénářů při 1,46 a 1,74 cm, přičemž kshana je do 1e-8 m od pravdy; zaznamenáno, MODELLED.Vážení podle přesnosti SP3 (DS-PA-06).
sp3::parse_sp3_accuracyaSp3Accuracy::position_sigma_mmapují kódy přesnosti z hlavičky a z jednotlivých záznamů na sigmy pozorování; vedle nezměněných zaznamenaných běhů je přidána varianta fitu Galileo vážená podle SP3 (3D RMS Tier-2 0,035 m oproti 0,070 m bez vážení). MODELLED.Úloha pro spuštění celého oblouku Swarm-A (DS-PA-08) v
.github/workflows/agency-od-validation.yml.Planetární gravitace z tabulek PDS SHADR (CAP-30, část CAP-31).
SphericalHarmonicField::from_shadr(src/gravity_pds.rs) čte Mars GMM-3 (d/o 120) a GRAIL GL0660B (d/o 660);Body::with_gravity_fieldpřipojí libovolné načtené pole (výchozí nastavení beze změny). Výřezy stupně 20 jsou přibaleny (NASA PDS, veřejná doména;tests/fixtures/planetary_gravity/NOTICE.md); úplné soubory stahujexval/planetary-gravity-pyshtools/fetch_data.sh. VALIDATED proti pyshtools 4.14.1 (do 4e-15 celkové gravitace při d/o 120 přes celou sféru, 5e-14 při d/o 660 pro |lat| ≤ 60°); napojení na soustavu tělesa zůstává MODELLED (nativní soustava každého pole není použitá soustava IAU).Gravitace vysokého stupně až do stupně 2190 (RM-14, FUT-07).
SphericalHarmonicField::acceleration_hf/potential_hf(Holmesův–Featherstoneův upravený dopředný sloupec, bez podtečení, bez polární singularity),prepare_high_degree, streamovací zavaděč ICGEMfrom_gfc_file/from_gfc_reader(kontroly normy a maximálního stupně, zaznamenaný systém slapů, časově proměnné členy odmítnuty) ascripts/fetch_egm2008.sh(úplný EGM2008, připnutý SHA-256, nepřibalený; testy podmíněnéKSHANA_EGM2008_GFC).propagator::FieldEvaluatorjej volí u volitelnéhoGeopotential. Shoduje se s Orekit 12,2 do 7.3e-17 m/s² až do stupně 2190 a oběžná dráha 24 h 200×200 se shoduje do 0,13 m. MODELLED: pyshtools nesplnil předregistrovaný práh poblíž pólu (vystopováno k pyshtools) a kontrola citlivosti dráhy na stupeň 70 nebyla splněna (0,73 m < 1 m); obojí je zaznamenáno vxval/.Integrátor DOP853 (FUT-11).
integrator::integrate_dop853,integrate_dop853_checked,integrate_dop853_dense(hustý výstup 7. řádu),dop853_step,dop853_initial_step, s ochranou kroku, která při selhání uzavírá;propagator::Integrator::Dop853,propagate_dop853,propagate_dop853_checked. Výchozí ovladač se nemění. VALIDATED proti SciPy 1.18.1solve_ivp(method="DOP853"): jednotlivé kroky do 5.6e-15, shodné posloupnosti kroků, koncové stavy do 1.6e-12 (xval/dop853-scipy/).Robustní řešič Keplerovy rovnice (FUT-12). Nový modul
kepler:solve_kepler_markley(startér Markley 1995, rezidua bez zrušení) pro všechna 0 ≤ e < 1, obalenýpropagator::solve_kepler_robust. VALIDATED proti kořenům mpmath s 50 číslicemi na 0,9 ε·|E| až do e = 0,999999 (xval/kepler-mpmath/).Volitelná tesserální gravitace Země v propagátoru Cowell (RM-09).
propagator::ForceModelzískávágeopotential: Option<Geopotential>(with_geopotential,with_egm2008(nmax)). VyhodnocujeSphericalHarmonicField(přibalený EGM2008 do stupně/řádu 70 nebo libovolný ICGEM.gfc) v soustavě pevné vůči Zemi, k níž se dojde úhlem rotace Země (EarthFixedFrame::Era) nebo řetězcem CIO GCRS–ITRS (EarthFixedFrame::Cio). VýchozíNone: žádný stávající výstup se nemění. VALIDATED proti Orekit 12,2 Holmes–Featherstone po 24 h (6 případů, nejhorší 0,036 m), s prahy předregistrovanými vxval/cowell-tesseral-orekit/PREREGISTRATION.md.Dvoudílná juliánská data při rotaci Země na dráze oběžné dráhy:
jd2::gmst82,cio::gcrs_to_itrs_matrix_jd2,frames::teme_to_itrf_jd2/itrf_to_teme_jd2,orbit::Propagator::position_in_frame_jd2aown_jd2_utc, převodyFrommezijd2::Jd2atimescales::TwoPartJda volitelnétwo_part_jd = truepro scénářephemeris(ECEF, pozemní stopa a pohled ze stanice; ve výchozím stavu vypnuto a beze změny, a klíč je při vypnutí z hashe scénáře vynechán). Nový řádek registru, VALIDATED proti pyerfagmst82/c2t06a(předregistrováno b10475ee; 40 dat: GMST bitově shodné, matice do 2.7e-14, rotace po krocích 1 µs do 1.1e-14 rad, kde cesta s jedinýmf64tyto meze nesplňuje). Epocha silového modelu Cowell zůstává s jedinýmf64; důvod je v její dokumentaci.Predikce EOP za hranicí tabulky (
EopSeries::with_ls_ar_prediction,EopSeries::last_mjd): volitelné rozšíření řady orientace Země IERS prediktorem LS+AR vydaným na jejím posledním řádku, takže argumenty soustavy pozdější epochy sledují předpověď místo ořezání na poslední řádek. Odpovědi uvnitř tabulky jsou bitově shodné (testováno); řada se nadále ořezává, pokud se toto nezavolá. Přesnost předpovědi zůstává stávajícím zjištěním LS+AR oproti Bulletinu A (MODELLED).Posuny nebeského pólu dX, dY na řetězci CIO (
cio::gcrs_to_cirs_matrix_with_offsets) a přímé kontroly vektorů ERFA proprecession_matrix,teme_to_gcrs_matrixa novou funkci. Nový řádek registru, VALIDATED proti pyerfa (předregistrováno 979c1e39; 40 epoch 1950–2100: precese a CIO bitově shodné, TEME→GCRS do 1.1e-10 rad, což je předpovězený účinek dvoučlenné řady rovnice ekvinokcií). Stávající funkce se nemění.UTC před rokem 1972 na dvoudílné časové cestě (
timescales::tai_minus_utc_on_dateaJd2::from_utc_calendar,jd2::utc_to_taiajd2::tai_to_utcod 1960-01-01): éra s měnící se rychlostí („gumová sekunda“), s tabulkou driftu SOFA, zlomkovými skoky na konci dne a přeškálováním zlomku dne z UTC na SI. Nový řádek registru, VALIDATED proti pyerfadtf2d/utctai/taiutc(předregistrováno 23c40661; 117 okamžiků 1960–1971, nejhorší 2.9e-11 s oproti prahu 1 µs). Každý výsledek od 1972 je bitově shodný (kontrolní součet připnut před změnou). Před 1960 je TAI − UTC 0, jako v SOFA. Cestatimescales::tai_minus_utcs jedinýmf64se nemění.Vysílané hodiny družice GLONASS (
GlonassEphemeris::sv_clock_bias_s):−τn + γn·(t − tb)ze záznamu RINEX, v čase čteném na hodinách družice (dvě iterace s pevnou řádovou čárkou, konvence RTKLIB). Dříve nepoužívané parsované−τnaγn. Nový řádek registru „GLONASS broadcast satellite clock and broadcast-orbit propagation“, VALIDATED proti RTKLIB 2.4.2-p13geph2clk/geph2pos(předregistrováno e099c42a; 292 případů na skutečném vysílaném souboru z 2013: rozdíl hodin 0 s, nejhorší poloha 1,1 mm oproti prahu 1 cm). Knihovní funkce; žádný výstup scénáře se nemění. Neprovádí se žádná transformace PZ-90.11 → ITRF a modul to uvádí.Časové řešení PPP oproti hodinám stanice IGS (0,36, FUT-19): hodiny přijímače float filtru PPP na WTZR se shodují s finálními kombinovanými hodinami IGS pro stanici na 0,075 ns (směrodatná odchylka) s konstantním posunem −0,66 ns za konvergované dvě hodiny. Prahy byly předregistrovány v
xval/ppp-time/. VALIDATED (nový řádek registru). Nová fixtureigs_2025055_WTZR_05m_0006.clk, záznamy hodin stanice z finálního souboru hodin IGS, který se již používal pro hodiny družic.Shoda PPP s gLAB (0,36, WP-07, RM-31): gLAB 6.0.0 byl spuštěn na týchž vstupech WTZR jako samostatný nástroj (jádro Apache-2.0; kontrolní součet stažení ověřen proti zveřejněnému seznamu), s příkazovým řádkem procedurální změny commitnutým před během. Při prvním registrovaném běhu se float PPP Kshana a gLAB shodují do 0,05 m v 240 z 240 epoch a na 5,0 mm v poslední. Práh SPP nebyl splněn (medián 1,187 m oproti 0,50 m) a je zaznamenán jako zjištění: vlastní řešení SPP gLAB a RTKLIB se od sebe liší o 0,852 m. Registrované pravidlo proto ponechává obě větve nástrojů jako celek nesplněné, zatímco shoda PPP platí.
Čtení navigačních dat RINEX 4 (0,36, WP-07, PRO-41):
rinex::parse_navčte navigační soubory RINEX 4.00-4.02 (> EPHGPS LNAV, Galileo I/NAV a F/NAV, BeiDou D1/D2, QZSS LNAV; ostatní záznamy se přeskakují až k hlavičce dalšího záznamu) aparse_nav_withpřijímá volby. VALIDATED proti sloučenému souboru IGS RINEX 3 téhož dne: každé dekódované pole shodné a 0 m v poloze. Čtení RINEX 2/3 se nemění.Vysílané polohy BeiDou GEO (volitelně):
NavParseOptions::include_beidou_geoaRinexEphemeris::sv_position_ecef_bds_geo(BDS ICD, sklon −5 stupňů).parse_navGEO stále přeskakuje. MODELLED: předregistrované porovnání s přesnou oběžnou dráhou je podmíněno daty a dosud nebylo spuštěno.Pozorovací soubory RINEX 4: skutečný pozorovací soubor RINEX 4,00 MGEX se v testech čte (MODELLED, shoda s formátem).
RTK s LAMBDA na skutečném RINEX (0,36, WP-07 ★):
rtk_real::run_rtk, dvojité diference krátké základny dvoufrekvenčního kódu a fáze GPS s float Kalmanovým filtrem a celočíselným fixováním LAMBDA (test poměru). VALIDATED na stanicích IGS WTZR a WTZZ (1,4 m od sebe) oproti jejich základně ITRF2020 s předregistrovanými prahy: fixováno v každé epoše po prvních deseti minutách, medián chyby základny 4,5 mm a 95. percentil 5,5 mm.Shoda PPP na skutečných datech s RTKLIB (RM-31):
xval/ppp-parity/run.shatests/ppp_parity_glab_rtklib.rss předregistrovanými prahy. PPP RTKLIB v2.4.2-p13 na týchž vstupech WTZR se s Kshana shoduje do 5 cm v každé epoše posledních dvou hodin (9,7 mm na konci) při třetí registraci; první dva běhy, zaznamenané jako zjištění, měly vypnutý pevninový příliv a anténu přijímače v základním slotu RTKLIB. Práh shody jednobodového řešení nebyl splněn (medián 1,09 m oproti 0,5 m). Větev gLAB dosud nebyla spuštěna (podmíněno daty).Kodéry navigačních zpráv nad rámec LNAV (0,36, WP-07, PRO-40):
gnss_navmsgkóduje GPS CNAV (typy zpráv 10, 11, 30; CRC-24Q; kontinuální kódování s rychlostí 1/2 a K=7), Galileo I/NAV (typy slov 1-5 v sudých/lichých nominálních stránkách; prokládač 30x8; synchronizace0101100000) a Galileo F/NAV (typy stránek 1-4; prokládač 61x8; synchronizace101101110000), s testovacími dekodéry. MODELLED: zpáteční cesty a známé odpovědi ICD; předregistrovaná kontrola, že vysílané efemeridy Galileo leží na mřížce LSB kodéru, platila (nejhorší 3.6e-3 LSB), ale nesplnila práh počtu družic (15 z 20), zaznamenáno. Kodéry jsou knihovní funkce; zapojení do scény není součástí této změny.Čtečka souborů IONEX (0,36, WP-07):
ionex::parse_ionex_filesIonexFile,IonexHeader,IonexEpoch,IonexFileMapaIonexTimeInterp: přísná čtečka IONEX 1,0 s pevnými sloupci, s epochami počítanými ode dne první mapy,9999čtené jako chybějící, mapy RMS a časové interpolace formátu nejbližší, po sobě jdoucí a s rotovanou mapou; šikmé TEC ve výšce vrstvy z hlavičky. Ověřeno na commitnuté syntetické mapě a, podmíněně daty (stahováno za běhu testu s připnutým SHA-256, nepřibaleno), na výřezu skutečného CODE GIM: každý uzel přesný; interpolace se shoduje se vzorcovou referencí do 4e-13 TECU.iontecv RTKLIB se shoduje do 3.6e-13 TECU v 6885 bodech (předregistrováno B6). VALIDATED na důkazech podmíněných daty (rozhodnutí vlastníka, 2026-10-13): test selže na jakékoli jiné mapě než té s připnutým SHA.Vyhlazování nosné podle Hatche (0,36, WP-07):
hatch::HatchFilterapvt::assemble_epoch_precise_smoothed, tvar bez divergence (bez ionosféry) v sestavení přesného jednobodového řešení. MODELLED se zaznamenaným zjištěním: na stanici IGS WTZR snižuje medián chyby jednobodového řešení z 1,55 m na 1,12 m a 95. percentil z 3,47 m na 3,21 m, což nedosahuje předregistrovaného snížení o 40 % (zbývající chyba je typu zkreslení, nikoli šum).Float PPP na skutečném RINEX (0,36, WP-07):
ppp_real::run_ppp, statický float filtr přesného určování polohy bodu na skutečném dvoufrekvenčním kódu a fázi GPS s finálními produkty IGS (posuny a variace antén, pevninový příliv, phase wind-up, Shapirovo zpoždění, odhadované vlhké zpoždění, detekce proklouznutí cyklu), sparse_antex_receiver. VALIDATED na zadržené stanici IGS WTZR oproti její souřadnici ITRF2020 s předregistrovanými prahy: po 6 h je chyba 1,5 mm horizontálně a 2,9 cm vertikálně a každá epocha posledních dvou hodin je do 10 cm.Interpolace přesných hodin SP3 (0,36, WP-07):
Sp3File::clock_saclock_nodeslineárně interpolují tabelované hodiny družic SP3 mezi dvěma sousedními platnými uzly (hlídací hodnota chybných hodin se přeskakuje) aClockRinex::from_sp3je předává doPreciseProducts, takže přesný řetězec běží ze samotného SP3. VALIDATED proti finálním hodinám IGS po 30 s z 2025-02-24 s předregistrovanými prahy: 32 družic GPS, RMS v polovině intervalu 0,121 ns (práh 0,15 ns), 95. percentil 0,265 ns (práh 0,30 ns).RAIM vedle ukazatelů kvality holdoveru hodin (CAP-05b): volitelná sekce
[integrity]u druhu clock uvádí samostatný blokintegrity_fom(okamžikové RAIM na přednastavené obloze z uvedeného místa: verdikt a ochranné úrovně pro každou epochu, dostupnost; nedostupné, dokud je GNSS odepřeno, nikdy se neextrapoluje). Ukazatele holdoveru se nemění; bez sekce je výstup bajtově shodný. MODELLED.Prahy důvěry v přijímač kalibrované na JammerTest 2024 (CAP-13): předregistrovaná kalibrace monitorů poklesu C/N0, AGC a indikátoru rušení na veřejné datové sadě JammerTest 2024 (stahované za běhu, nikdy nepřibalené;
examples/jammertest_trust_calibration.rs), dodávaná jen jako volitelné[monitors] profile = "jammertest-2024-calibrated"(1,5 dB, 3,5 sigma, 29). Zadržená data: prahy AGC, indikátoru rušení a sjednocení projdou; práh falešných poplachů C/N0 neprojde (0,023 oproti 0,02), takže řádek je MODELLED (xval/jammertest-trust/RESULTS.md). Výchozí nastavení a výstupy bez profilu se nemění.Hypotézy poruch ARAIM s více družicemi (CAP-05a): pravidlo podmnožin ADD v4.2 zobecněné nad rámec dvojic (
add_v42_subset_plan,add_v42_protection_levels_to_order; řád 2 je přesně stávající cesta kontrolovaná MAAST) a volitelný pokročilý RAIM nad těmito hypotézami (araim_subset_raim), který při zjištění poruchy uvádí podmnožinu s největším oddělením. Apriorní hodnoty vyžadující hlubší podmnožiny se odmítají, nikdy neořezávají. MODELLED.Skyline v důvěře v přijímač (FUT-01): relace receiver-trust může uvést
[skyline]; družice za ním jsou ztraceny pro oblohu (sky-blocked,behind_skyline,open_fraction) a jejich ztráty se zařazují jakogeometry, nikdy jakoenvironment; bez něj jsou záložní postup podle mezer v azimutu a všechny výstupy jako dříve. Generátor tréninku posádek získává událostnatural-degradation(zablokovaná obloha, nikoli interference) a scénářscenarios/training/fjord-natural-degradation.toml. Monte Carlo UERE x DOP získává dvě geometrie s maskovaným skylinem z návrhové poznámky, předregistrované samostatně: všech 26 kontrol projde.Ověřování časových razítek RFC 3161 (CAP-14):
kshana::evidence::tsa::verify_tokenoffline kontroluje podpis tokenu časového razítka (RSA PKCS#1 v1.5, RSA-PSS, ECDSA P-256 a P-384), vazbu jeho podpisového certifikátu ESS, použití podepisovatele pro timeStamping a jeho řetěz k důvěryhodné kotvě v genTime tokenu;kshana evidence verify --tsa-ca <anchors.pem>to aplikuje natimestamp.tsrbalíčku (volitelné; bez toho se zpráva nemění). VALIDATED, úzce: všech 27 vlastních vygenerovaných případů se shoduje s OpenSSL 3.0.13 ve verdiktu a genTime, podle porovnání předregistrovaného před napsáním ověřovače. Odvolání se nekontroluje.Úrovně ověření podle hodnot pro každý druh (RM-04): výsledek každého druhu scénáře nyní končí blokem
figure_tiers, který jmenuje jeho hlavní hodnoty, řádek verifikační matice, který každou z nich vlastní, a úroveň přečtenou z tohoto řádku (hodnoty, které žádný řádek nevlastní, jsou uvedeny jako bez úrovně). Blok se připojuje po běhu a lze jej odebrat zpět na předchozí dokument bajt po bajtu (api::without_figure_tiers).lunar-station-coveragenemáfigure_tiers, dokud novou datovanou předpovědí nenahradí svou zmrazenou;leo-ppp,solar-system,sweepasweep-ndnemají skalární hlavní hodnotu alunar-attack-surfacezapisuje kompaktní JSON. Členové kampaní si ponechávají své dokumenty bez úrovní.Kvantová předvolba
quantum-cai-coast(CAP-08c): přibalený inerciální scénář, v němž akcelerometr s interferometrem studených atomů, specifikovaný fyzikou interferometru ([accel_quantum.cai]s uvedenou úrovní vibrací platformy), dobíhá proti křemennému akcelerometru navigační třídy při výpadku GNSS dlouhém 110 minut. MODELLED.Přesné ekvivalentní stupně volnosti podle Greenhalla (CAP-03):
allan::edf_greenhall, úplný algoritmus Greenhalla a Rileyho (2003) (řády diferencí 1 až 3, exponenty šumu +2 až -4, překrývající se i nepřekrývající se, modifikované i nemodifikované, s tabulkami pro velké J), s obaly ADEV, MDEV a HDEV. VALIDATED při předregistrovaném porovnání s allantools 2024,6: 4 876 bodů mřížky do 6.0e-13 relativně; allantools selhává v 32 dalších bodech, které jsou zaznamenány bez hodnoty orákula. Intervaly spolehlivostiassurance::uncertaintyse nemění ani o bit.Chybové členy interferometru studených atomů (RM-26/27/28): fázový šum laseru Raman (se členem zpoždění zpětného odrazu), zkreslení zakřivením vlnoplochy tepelného oblaku (čistý defokus, s poloměrem detekce) a řešení nejednoznačnosti proužků (podporované klasicky a se dvěma dobami dotazování), jako knihovní funkce v
src/inertial/cai_error_terms.rs, každý uzavřený tvar ověřen kvadraturou nebo Monte Carlo. MODELLED; zatím nedosažitelné z druhu scénáře (docs/QUANTUM-MODELS.md).Formáty logů hodin (RM-03):
src/clock_log.rsčte soubory hodin RINEX, ASCII logy fáze nebo frekvence ve stylu TimeLab a logy čítače TAPR TICC do jedné normalizované řady fáze (tau0 uvedeno nebo nalezeno, mezery spočítány, politika mezer). Volitelné: řada telekomunikačního časování může uvést log ([series.clock_log]) a tabulka[clock_log]scénáře clock přidává blokmeasured(ADEV, TDEV, MTIE). Bez tabulky jsou oba druhy bajtově shodné (docs/CLOCK-LOG-FORMATS.md). Předregistrované porovnání na třech syntetických lozích splnilo své prahy fáze a zapojení; odhadovače se shodují s allantools do 2.5e-14 všude, kde je vyhodnocuje, a bod MTIE přes celý záznam nevyhodnocuje (zaznamenáno). MODELLED.Masky vandru pro synchronizaci frekvence (RM-01): druh
telecom-timingzískává sedm masek generování vandru MTIE a TDEV při konstantní teplotě, ITU-T G.811 PRC, G.812 Types I až III, G.8262 EEC Options 1 a 2 a G.8262.1 eEEC, s mocninnými částmi, jak je tabulky zapisují, a referenční scénářscenarios/telecom-synce-eec.toml(volně běžící OCXO proti maskám EEC: selže při 1 000 s, kde musí práci odvést smyčka). Každý řádek byl znovu přečten proti textu na itu.int; G.812 (06/2004) je nahrazeno předpublikovaným vydáním 08/2026, které nebylo možné přečíst. MODELLED (přepis); stávající masky a výstupy se nemění.Pokyny k apriornímu filtru pro druh
gnss-ins(0,36, WP-09, zjištění RM-21): výchozí apriorní filtr balíčku je vhodný pro IMU taktické třídy. S IMU navigační třídy může výchozí nastavení způsobit, že fúzovaný dobeh bude horší než volné INS: 52 m oproti 11 m na profilu letadla 70 m/s. Nastavte[imu_*.filter_prior]podle třídy senzoru, jako to dělají nové námořní, železniční a letecké balíčky. Žádný přibalený scénář nespojuje IMU navigační třídy s výchozím apriorním filtrem: každý, který používá výchozí, má rezidua zkreslení akcelerometru alespoň 0,015 m/s². Pouze dokumentace; žádný výstup se nemění.Export testovacího stendu ověřený vlastními čtečkami simulátoru (0,36, WP-09, CAP-16): soubory pohybu
kshana bench-exportz 8 přibalených scénářů byly zpětně přečteny čtečkami gps-sdr-sim pro NMEA, zeměpisnou šířku/délku/výšku a pohyb vůči Zemi (MIT, commit 28ca29a6, použito jako samostatný nástroj přesxval/testbench-gpssdrsim/; nevolá se žádná signálová funkce). Vracejí exportovanou trajektorii na 1,2 mm, 0,15 mm a přesně. ZJIŠTĚNÍ: čtečka pohybu vůči Zemi tohoto simulátoru nemůže přijmout CSV plné šířky, protože jeho 100znakový řádkový buffer každý řádek rozdělí.docs/TEST-BENCH.mdnyní uvádí řezy sloupců, které použít, a strop simulátoru 300 s. VALIDATED (nový řádek registru); bajty exportu se nemění.GNSS/INS na datové sadě KF-GINS (0,36, WP-09, FUT-17): zavaděče a běhoun
fusion::kfginsa model měření páky v uzavřené smyčce EKF. Na ukázkové datové sadě KF-GINS (stahované za běhu testu, nepřibalené) je horizontální RMS Kshana oproti referenční trajektorii 1,09 cm oproti vlastním 1,11 cm KF-GINS a každý předregistrovaný práh platil. VALIDATED na důkazech podmíněných daty (rozhodnutí vlastníka, 2026-10-13): datová sada se stahuje s piny SHA-256 a postup reprodukce je vxval/kfgins/PREREGISTRATION.md.Spřažený filtr PNT v balíčku fusion (0,36, WP-09, FUT-16): druh
fusionpřijímá volitelnou tabulku[coupled], která spouští jeden skládaný filtr na pseudovzdálenostech se stavem zkreslení akcelerometru (fusion::coupled::CoupledPntBiasFilter), afusion::coupled::CoupledPnt3dje 3D verze s 8 stavy. Nový přibalený scénářfusion-pnt-coupled: se zkreslenými akcelerometry drží spřažený režim polohu sady kvantových scénářů na 18,7 m (95. percentil) s plnou integritou, kde rozpojené filtry dosahují 430 m. Bez tabulky jsoufusionihybridbeze změny (připnuto);hybridtabulku odmítá. MODELLED.Námořní, železniční a letecké balíčky GNSS/INS (0,36, WP-09, RM-21): přibalené scénáře
gnss-ins-maritime,gnss-ins-railagnss-ins-aviationna knihovně trajektorií a volitelná tabulka[tight]pro druhgnss-ins, která fúzuje pseudovzdálenosti z konstelace SGP4 Walker (všechny družice při nominálním stavu, několik nejvyšších při zhoršeném). U železničního balíčku těsná vazba drží řešení navigační třídy na 5,3 m průjezdem zářezem a tunelem, oproti 12,9 m při volné vazbě. Bez[tight]se balíček nemění (připnuto). MODELLED.Těsná vazba s fází nosné (0,36, WP-09, RM-25 / FUT-17):
fusion::carrier_tc, EKF chybových stavů s explicitními dvoustavovými hodinami přijímače a float nejednoznačnostmi nosné, řízený konstelací SGP4 Walker s korekcemi Klobuchar a Saastamoinen ve smyčce měření, detekcí proklouznutí z časově diferencované nosné a reinicializací nejednoznačností, a během jen s kódem na týchž měřeních pro porovnání. MODELLED: na jízdě po osmičce (figure-8) je řešení z nosné 2,5 cm oproti 47 cm jen s kódem a NIS/NEES jsou konzistentní přes seedy.Knihovna trajektorií GNSS/INS (0,36, WP-09, RM-24): druh
gnss-inspřijímá volitelnou tabulku[trajectory]sprofile = "straight" | "figure8" | "stop_go" | "aircraft" | "uas" | "csv". Profily zadávají Eulerovy rychlosti a zrychlení ve směru dráhy z pravdivého stavu a odvozují pravdivé IMU z kinematiky tuhého tělesa (koordinované zatáčky, stoupání, Coriolis);csvimportuje pravdivou trajektorii (t, lat, lon, alt, vn, ve, vd, roll, pitch, yaw) a řeší IMU, které ji reprodukuje. Bez tabulky balíček letí svou historickou jízdu, bit po bitu (připnuto). MODELLED.Dlaždice DEM v zeměpisné šířce/délce pro lunární horizont:
[terrain] dem_tile_pathčte textovou dlaždicirealdata::lola_dem(výšky nad střední sférou na mřížce zeměpisné šířky/délky) namísto polární stereografickédem_path, prolunar-station-coverageimoonlight-service-volume; zpráva dlaždici opakuje (terrain.dem_tile, s jejím SHA-256).realdata::lola_demje nyní zapojeno do sledování paprsku horizontu. Dlaždice převzorkovaná z dodávaného výřezu dává stanici horizont výřezu na 0,22 stupně. MODELLED.Terén v exportní lokalitě objemu služby: se sekcí
terrainnese každý řádek geometrického exportu po družicíchmoonlight-service-volumehodnotuclears_terrain(družice překonává plochou masku i horizont exportní lokality v jejím azimutu), zpráva nese horizont lokality (export_site_terrain) a běhový CSV získává sloupec. Bez terénu se export nemění. MODELLED.Hlavní pole z enginu (0,36, STUDIO-06):
kshana::api::HEADLINE_FIELDS,field_importance_json()afield_importance()ve WebAssembly uvádějí pro dvanáct druhů, která pole scénáře odpovídají na jeho otázku, nejlepší první, jako tečkované cesty (jammers[].eirp_dbw). Studio je čte před vlastním řazením. Pouze metadata pro zobrazení: engine je nikdy nečte, žádný soubor scénáře je nepotřebuje, žádný výsledek na nich nezávisí.tests/field_importance.rsselže, pokud druh nelze odeslat nebo cesta není nalezena v žádném z přibalených scénářů druhu (zachytilo dvě cesty, které Studio ve zploštělých id napsalo bez hranatých závorek pole).Tabulka druh–modul z enginu (0,36, STUDIO-05):
kshana::api::KIND_MODULES,kind_modules_json()akind_modules()ve WebAssembly uvádějí pro každý druh scénáře, jehož řádky verifikační matice jmenují jiný modul než jeho vlastní, názvy modulů. Mapa schopností Studia používala vlastní ručně psanou kopii;tests/kind_modules.rsselže, pokud druh v tabulce nelze odeslat nebo se modul neobjevuje v žádném řádku matice. Žádný výstup se nezměnil.Krátký běh IQ v sestavení pro prohlížeč (0,36):
iq_signals()aiq_run_short(fs_hz, duration_s, signal, ids, dopplers_hz, cn0_dbhz, seed)v modulu WebAssembly sestaví syntetickou scénu, získají každou družici a sledují získané, vše v paměti, omezeno na 0,25 s, 1 000 000 vzorků a 8 družic. Stavitel scény a vyhledání signálu podle názvu se přesunuly z nativníhoiq::cli(doiq::scene::syntheticaiq::signals::by_name), aby je obě sestavení sdílela; výstup příkazového řádku se nemění. Nativní test aweb/smoke.mjsporovnávají stejný požadavek s jedním golden souborem (tests/fixtures/iq_short_golden.json), bajt po bajtu: od změny přenosné matematiky (STUDIO-15, níže) dávají sestavení pro prohlížeč a nativní sestavení stejné bity.Typová API pro Python a TypeScript (CAP-34):
kshana.pyitypuje uzavřené slovníky (ScenarioKind, každý název druhu;ErrorKind;ProvenanceClass) a slovníkyKindMetaaFieldUnit;scenario_kinds()aerror_kind()je vracejí. Balíček WebAssembly přidávárun_typed(jeden běh jako typovaný objektRunOutputs parsovaným dokumentem jakodata) ascenario_kinds(parsovanéKindMeta[]) a jehokshana.d.tsnese tentýž slovník;error_kindmá typErrorKind | "".tests/typed_api_sync.rsudržuje oba seznamy shodné s enginem.Jednotky pro každý sloupec
sweep-nd(FUT-28): výsledeksweep-ndnyní nesekey_unitsametric_units, jednotku každého procházeného klíče a každé zaznamenané metriky, čtenou z vlastní tabulky jednotek procházeného balíčku. Osa může pro klíč, který balíček nezrcadlí, uvéstunit; deklarovaná jednotka, která odporuje jednotce balíčku, se odmítne, a jednotka, kterou neuvádí ani jeden, jenull, nikdy se neodhaduje.points[].coords[]apoints[].metrics[]jsou popsány, takže každý ze 76 druhů je nyní plně pokryt branou jednotek polí (strop nepokrytých druhů 1 -> 0).Pole NumPy z
RunOutput(FUT-26): PythonRunOutputzískáváarray(path),columns(path)aseries(), které vracejínumpy.ndarraypro číselný seznam, číselné sloupce seznamu záznamů nebo každou řadu záznamů v dokumentu. Každé pole je rovnonumpy.asarraytýchž hodnot zdata()(dtype i bity). NumPy se importuje, až když je některá z těchto funkcí zavolána, a mezi požadavky na běhové prostředí není. Typováno vkshana.pyia kontrolováno nástrojem stubtest.Optimalizátor kampaní (CAP-32): nová, nepovinná sekce
[optimize]druhucampaignhledá jeden až tři klíče scénáře v zadaných mezích tak, aby byla nejlepší hodnota jedné metriky: minimalizace, maximalizace, nebo dosažení cílové hodnoty. Prohledává buď vyčerpávajícím způsobem na mřížce, nebo deterministickým omezeným simplexem Nelder–Mead. Každé vyhodnocení je skutečným během pojmenovaného druhu a je uvedeno vtracevýsledku. Příklad:scenarios/campaign-optimize-link-budget.toml. Prahy byly předregistrovány (docs/design/evidence/cap32-optimize/):- Rosenbrockova funkce je splněna (f* = 1.7e-20);
- řešení 1-D cíle v uzavřeném tvaru je splněno (6e-15 relativně);
- mřížka je bitově shodná s nezávislým úplným prohledáním;
- simplex si vede alespoň tak dobře jako mřížka 41 × 41 na 177 bězích.
Práh 1-D z kola 1 je zaznamenán jako NOT MET, protože předregistrovaný rámec řešení vylučoval. MODELLED; řádek registru „Bounded optimisation of one metric over campaign parameters“. Doplňující: kampaně bez této sekce zůstávají beze změny.
Kalibrační soubory běhů (CAP-10): tři kontroly s jedním seedem, znovu spuštěné přes 200 nezávislých seedů proti předregistrovaným prahům, v
docs/CALIBRATION-ENSEMBLES.md(generováno nástrojemgen_calibration_ensembles; hodnoty pro jednotlivé seedy vdocs/data/calibration-ensembles.csv).- Bootstrapový 95 % interval Monte Carlo kampaně pokrývá skutečný průměr u 192 z 200 souborů a jeho kontrola chí-kvadrát vychází u 196.
- Tolerance percentilu při jednom seedu vychází jen u 183 z 200: NOT MET, jak bylo předpovězeno. Je to práh zhruba 2 sigma, zaznamenaný a nezmírněný.
- Kalibrace ADEV bílého FM vycházejí na každém seedu, přičemž jejich nejhorší chyba je hluboko uvnitř tolerance.
MODELLED.
Vestavěné druhy přes rozhraní
Scenario(FUT-27, rozpracováno): rozhraníBuiltinKind(api::BuiltinKind, s hákem pro úroveň důkazů jednotlivých hodnot aappend_figure_tiers) a první druhy na ně převedené (inertial,spoof,passes,link-budget,jamming). Výstup je nezměněn: manifest celého katalogu se SHA-256 každého výstupu je před změnou i po ní totožný (tests/scenario_output_manifest.rs).Kontrola hřiště bez stahování (RM-07):
tests/playground_no_fetch.rskontroluje tři věci:- každý scénář knihovny Studia je v balíčku pro prohlížeč;
- balíček je bajt po bajtu shodný s
scenarios/; - každý scénář v prohlížeči běží z prázdného pracovního adresáře.
Mapy Alt-PNT: skutečné gravitační pole, Monte Carlo chyb mapy, SRTM v plném rozlišení (0,36, WP-10). Druh
gravity-mappřijímá nepovinnou sekci[reference]: gravitační anomálii syntetizovanou z přibalených koeficientů EGM2008 (nebo ze souboru ICGEM.gfcpřesgfc_path, jen v nativních sestaveních). Tato syntéza se shoduje s ICGEM Calculation Service na zhruba 1e-8 mGal v 794 uzlech ve dvou oblastech, proti předregistrovaným prahům 0,005 mGal RMS a 0,02 mGal maximum (VALIDATED; řádek registru „Gravity-anomaly synthesis from a spherical-harmonic model“). Nový přibalený scénářgps-denied-gravity-nav-egm2008spouští 60minutový benchmark na tomto skutečném poli stupně 70. Předregistrovaný výsledek: shodná chyba 3106 m, takže práh < 500 m je NOT MET, jak bylo předpovězeno (stupeň 70 je příliš hladký), a desetinásobné snížení driftu je MET (MODELLED). Nepovinná sekce[map_error_mc]spouští benchmark znovu přes chyby mapy se seedem a gaussovskou korelací a uvádí rozdělení shodné chyby (přibalený scénářgravity-map-error-mc). Průzkumné a nepředregistrované: s chybou mapy 2 mGal korelovanou na 0,2 stupně (velikost, kterou rozpočtuje vlastní sigma srovnávače) zůstává v mezích 500 m 1 z 20 realizací (medián 2,9 km, p95 14,7 km), oproti 144 m s dokonalou mapou. Syntetický benchmark s určením polohy pod 500 m předpokládá, že mapa je přesná. Bez kterékoli z těchto voleb je dokument bajt po bajtu shodný s dřívějšími vydáními.combined-altpntpřijímá nepovinnou sekci[magnetic_grid](csv_path,column), která čte magnetický kanál z CSV ve formátu EMAG2v3. EMAG2 není přibalen, protože jeho podmínky nejsou výslovné:tools/fetch_emag2_tile.pyjej stáhne s připnutým SHA-256 a ořízne výřez. Na skutečné mřížce EMAG2 se netvrdí žádný navigační výsledek. Společný odhad mapy (terénní SLAM, RM-18):altpnt::sequential::run_sequential_trn_on_mapprovede sekvenční terénní navigátor nad uloženou mapou, která se od skutečnosti liší, a to buď s důvěrou v ni, nebo s odhadem opravy mapy po buňkách pomocí Rao-Blackwellizovaného filtru ve stylu FastSLAM. Předregistrováno proti SITAN se známou mapou při korelované chybě mapy 15 m na 20 seedech: průměrný zisk 1,5 %, lepší v 10 z 20, takže oba prahy zlepšení jsou NOT MET (10 % a 12 z 20), bez újmy na dokonalé mapě (MET). Jediný průlet bez opakovaných přeletů neumožní mapu naučit (xval/terrain-slam-rbpf/, MODELLED). Dokumentyterrain-slamjsou bajt po bajtu shodné. Testy se skutečnými daty SRTM nyní běží v CI na dvou commitnutých ořezech v plném rozlišení; všechny předregistrované prahy jsou splněny, přičemž nejbližší uzel se shoduje s GDAL 3.8.4 v 8 z 8 bodů (xval/srtm-ungate/).Interoperabilita, WP-08 (0,36; každá položka předregistrována a commitnuta samostatně před během svého orákula, každá je novým řádkem registru VALIDATED, kromě položky telemetrie, která rozšiřuje existující řádek):
- CCSDS Orbit Data Messages (
src/odm.rs): OPM 3.0/2.0, OMM 3.0/2.0 a OCM 3,0 (bloky TRAJ, PHYS, COV, MAN, USER) zapisované a čtené v KVN a NDM/XML a OMM s plnou přesností ze sady elementů SGP4 (OmmMessage::from_omm_file); výstupOmmFile::to_omm_kvnje nezměněn. Proti Orekit 13.1.8 oběma směry: 27 z 30 zpráv Kshana se v Orekitu naparsuje a Kshana přečte každou zprávu zapsanou Orekitem, hodnoty v rámci 1e-14 relativně a epochy v rámci 1e-9 s; připnuta jsou čtyři zjištění (Orekit vyžadujeELEMENT_SET_NO, odmítáCOMMENTv uživatelsky definovaných parametrech XML, nezapíšeBTERMbezBSTARa čte relativní epochy OCM v TDB v sekundách SI). Starší zapisovač OMM sMETA_STARTOrekit odmítá (zaznamenáno). Řádek „CCSDS Orbit Data Messages (OPM, OMM, OCM)“. - CCSDS Attitude Data Messages (
src/adm.rs,src/ndm_xml.rs): AEM 2.0/1.0 a APM 2,0 v KVN a XML proti Orekit 13.1.8, každý práh splněn; zapisovač APM v Orekitu odmítá manévr bezMAN_DELTA_MASS(připnuto). Řádek „CCSDS Attitude Data Messages (AEM, APM)“. - Export SPICE SPK (
src/spk_writer.rs): zapisovač a čtečka SPK typů 9 a 13 a export OEM do SPK; proti CSPICE N0067 jsou jádra bajt po bajtu shodná s jádry SPICE a vyhodnocují se bitově shodně. Řádek „SPICE SPK export (types 9 and 13)“. - SPICE SPK typů 3 a 21 (
src/spk_writer.rs): segmenty typu 3 (Čebyševovy) a typu 21 (rozšířené diferenční řádky) zapsané z daných záznamů a vyhodnocované tak, jak to dělá SPICE; proti CSPICE N0067 jsou jádra bajt po bajtu shodná s jádry SPICE a každé vyhodnocení se shoduje bit po bitu oběma směry. Řádek „SPICE SPK types 3 and 21 (Chebyshev, extended difference lines)“. - Rozšíření Space Packet (
src/space_packet.rs): sekundární hlavička s časovými kódy CUC/CDS, řízení chyb paketu, segmentace a kontroly proudu, proti ccsdspy 2.0.1, spacepackets-rs 0.18.0, spacepackets-py 0.32.0 a CPythoncrc_hqx, nula nesrovnalostí. Řádek „CCSDS Space Packet secondary header, packet error control and segmentation“. - Schéma telemetrie 1,3 přes skutečné spotřebitele: Prometheus exposition a OTLP/HTTP JSON syntetického proudu se schématem 1.3, včetně řady geometrie a štítku
class, přesně přečtené nástroji prometheus_client a OTLP proto, přijaté nástrojem promtool 3.5.0check metricsbez problémů z lintu a nezměněně propuštěné přes OpenTelemetry Collector contrib 0.135.0 (podmíněno daty: nástroje stahované s připnutým SHA-256, výstupy commitnuty).
- CCSDS Orbit Data Messages (
Určování oběžné dráhy Marsu, běh 2 (0,36, WP-14, CAP-30):
mars_od::fit_dampedškáluje normálovou matici její diagonálou a tlumí krok (Levenberg-Marquardt), poté co registrovaný fit Gauss-Newton selhal na matici, jejíž surová diagonála zahrnuje osm řádů. Registrováno samostatně (xval/mro-od/PREREGISTRATION-RUN2.md, stejný oblouk, prahy i úpravy). Na hodnocených průletech MRO je dráha v rámci 0,36 km RMS (0,53 km maximum) od navigační rekonstrukce MRO, prahy splněny. Doppler po fitu je 48,6 mHz proti prahu 30 mHz, nesplněno (zjištění připnuto). Dodatek pouze k hodnocení, R2-A1, je zveřejněn vdocs/revisions. Řádek zůstává MODELLED.Model rampovaného 2-way Dopplera Marsu a určování oběžné dráhy (0,36, WP-14, část CAP-30, fáze 2):
mars_odpředpovídá rampovaný 2-way Doppler DSN v pásmu X z rampových tabulek ODF (světelný čas, Shapiro, troposféra, čas stanice, stanice DSN přes řetězec CIO a IERS EOP) a fituje oběžnici Marsu (GMM-3, třetí tělesa, SRP, odpor).naif_kernelčte SPK typu 1 (ověřeno proti CSPICE) agravity_sh::from_shadrčte pole PDS SHADR. Předregistrováno proti navigační rekonstrukci MRO na skutečných průletech MRO (podmíněno daty,scripts/fetch_mro_od.sh, měsíční CI): předpovězený Doppler se shoduje s pozorováním na 12,5 mHz (práh 30 mHz, splněno); registrovaný fit dráhy na hodnoceném oblouku selhal a nevytvořil žádnou dráhu (zjištění připnuto). Řádek zůstává MODELLED.Čtečka DSN Orbit Data File (0,36, WP-14, část CAP-30):
odf::parse_odfčte ODF TRK-2-18. Na skutečném ODF Mars Reconnaissance Orbiter (NASA PDS, přibaleno) čtečka odpovídá počtu záznamů, pozicím skupin, stanicím a časům v návěští PDS a všechny její datové typy jsou známé. Tabulka konce souboru v návěští je o jeden řádek kratší než soubor, což je nekonzistence návěští zaznamenaná jako zjištění. MODELLED. Určení oběžné dráhy z těchto dat zatím není hotové.Rozpočet TWSTFT a stabilita přenosu času: druh
time-transfer-budget(0,36, WP-14, FUT-19).- Dvoucestná rovnice:
twstft_budgetji řeší pro T_A − T_B se zpožděními zařízení stanic, asymetrií ionosféry v pásmu Ku při vysílání nahoru a dolů, rozdílem zpoždění transpondérů a členy Sagnacova jevu a obnoví dopředný model na 1e-15 s. - Rozpočet nejistoty: sloučen kvadraticky, s TDEV spoje jako členem typu A.
- Šum spoje: dvoucestná řada získává spodní hladinu flicker fázového šumu, denní nereciprocitu a konstantní reziduum reciprocity. Balíček
timetransfers bílým jitterem je nezměněn. - Skutečná řada: stabilita dodaných řad BIPM Circular T, CSV
MJD,nsnebo hodin stanic IGS.
MODELLED. Nový přibalený scénář
time-transfer-budget. Časové řešení PPP je samostatně VALIDATED proti hodinám stanice IGS na větvi skutečných dat GNSS.- Dvoucestná rovnice:
Zahřívání při vstupu, radiometrie EO a ztráty při výstupu na dráhu (0,36, WP-14, CAP-28): tři nové druhy.
entry-heating: vstup hmotného bodu ve 3 stupních volnosti nad rotující Zemí nebo Marsem se Sutton-Gravesovým zahříváním v bodě stagnace.eo-radiometry: SNR snímače, MTF na Nyquistově frekvenci, relativní odezva hrany a NIIRS podle GIQE 4.ascent-losses: vícestupňový výstup s gravitačním obratem se ztrátami gravitací, odporem, řízením a protitlakem, kontrolovaný přesnou identitou ideální dv minus ztráty.
Maximální zpomalení při vstupu bylo zkontrolováno proti zveřejněnému nominálu Stardustu pod předregistrovaným prahem: 35,44 g proti 33,4 g (+6,1 %, práh 10 %). Tento řádek je VALIDATED. Zahřívání, radiometrie a výstup na dráhu jsou MODELLED. Nově také:
reentry::us76_pressure, přibalené scénářeentry-heating-stardust,eo-radiometryaascent-lossesadocs/ENTRY-EO-ASCENT.md.Řízení polohy reakčními koly: druh
aocs(0,36, WP-14, CAP-21). Inerciální zaměřovací otočení tuhého tělesa se třemi nebo více vyváženými reakčními koly pod zpětnou vazbou MRP, s momenty kol s minimální normou oříznutými na limit každého motoru (aocs). Může také uzavřít smyčku na multiplikativním EKF ze simulovaného gyroskopu a hvězdného senzoru (aocs_mekf). Smyčka skutečného stavu byla porovnána s Basilisk 2.9.1 na třech případech předregistrovaných dříve, než kód existoval (tři ortogonální kola, čtyřkolová pyramida, případ se saturací). Každá složka MRP, úhlová rychlost tělesa, rychlost kol i moment motoru se shodovaly v každém vzorku, nejhůře 2.4e-14 v sigma a 2.9e-11 rad/s v rychlosti kola. Tento řádek je VALIDATED; MEKF je MODELLED (konzistence NEES). Nové přibalené scénářeaocs-slewaaocs-slew-mekfadocs/AOCS.md.Plánování pozemních kontaktů a DVB-S2 ACM (0,36, WP-14, CAP-22/23): dva nové druhy scénářů.
acm-linkudává pro jednu družici nad jednou stanicí Es/N0 každého průletu a MODCOD DVB-S2 zvolený po jeho dráze (prahy podle ETSI EN 302 307-1 Table 13 plus rezerva). Udává také objem dat, který ACM přenese oproti základu s konstantním kódováním.contact-scheduledělá totéž pro několik družic nad několika stanicemi a sestavuje plán kontaktů bez konfliktů (otočení antény, jedna stanice na družici, doručení vážené prioritou omezené každým nevyřízeným objemem). Uvádí plán mezní hodnoty typu greedy, základ „kdo dřív přijde“ a přesné optimum na malých množinách spolu s mezerou optimality greedy plánu. Okna přístupu pocházejí z prediktoru zdánlivých průletů, který je VALIDATED. Nové přibalené scénářeacm-linkacontact-schedule(ilustrativní vstupy) adocs/CONTACT-SCHEDULING.md. MODELLED (dva nové řádky registru).Dopplerovské určování polohy ze Starlink proti zveřejněnému experimentu (0,36, WP-14, část CAP-11, MODELLED). Jde o předregistrované proxy srovnání dopplerovského režimu
leo-pvts předvolboustarlink-sopproti percentilům datové sady 3 z „Unveiling Starlink for PNT“ (NAVIGATION 72(1), 2025, doi:10.33012/navi.685). Model použil 3 družice (maska 47 stupňů zvolená pevným pravidlem), žádnou podporu výšky a sigma Dopplera 30 Hz, přes 200 seedů. Jeho 90. percentil 3-D chyby je 92,2 m při 20 s a 870 m při 8 s, proti zveřejněným 2 m a 10 m, takže oba prahy dvojnásobku jsou NOT MET. Model je pesimistický, nikoli optimistický, jak bylo předpovězeno: tři pevné družice poskytují mnohem menší geometrickou různorodost než 63 družic experimentu během 10 minut s přepínáním kanálů každých 15 s. Obě nesplnění jsou potvrzena testem (tests/starlink_doppler_published_proxy.rs).Optimalizátor impulsních přeletů na DE440 (0,36, WP-14, CAP-20c/d):
maneuver::optimise_transfer_kernelnalézá data odletu a příletu jednootáčkového balistického dvouimpulsního přeletu, které minimalizují odletové C3 nebo příletové V-infinity v rámci Type I nebo Type II. Prohledává mřížku po 2 dnech a poté zpřesňuje 2-D Nelder-Mead na heliocentrických stavech z jádra DE440; vychází zporkchop_kernel. Srovnání bylo předregistrováno (bf0439e8) proti nezávislému optimalizátoru SPICE + pykep 3.0.1 + SciPy 1.18.1 na příležitosti Země–Mars 2026: všechny čtyři optimalizace se shodují na 8.7e-13 relativně, s daty v rámci 1e-5 dne (VALIDATED, nový řádek registru). Jako sekundární zveřejněná reference se NASA/TM-2010-216764 (příručka Země–Mars 2026-2045) shoduje pro minimum C3 typu II (9,182 vs 9,144) a minimum příletového V-infinity typu II (2,564 vs 2,565). Jeho minimum C3 typu I se neshoduje: 10,535 vs 11,11 (-5,18 %), kde knihovní orákulum souhlasí s Kshana. Toto nesplnění je zaznamenáno a potvrzeno testem.Studie lunární referenční stanice (0,36, podnícená zveřejněným materiálem o plánované referenční stanici na jižním pólu Měsíce; zdroje v
docs/LUNAR-REFERENCE-STATION.md): druhlunar-station-coverage, sweep Monte Carlo lunárního diferenčního modelu PNT přes uživatelskou mřížku u jižního pólu a den epoch, který dává pro každý bod i pro oblast percentilovou opravenou a neopravenou chybu, dostupnost s důvody, pokrytí proti uvedenému prahu, ochranné úrovně, poloměr pokrytí podle azimutu a rozpočet korekčního spoje. V jednom bodě, epoše a pokusu se přesně redukuje nalunar-differential-pnt; jeho aritmetika byla přepočtena v numpy pod předregistrovaným prahem (polohy a percentily splněny; opravy stanice svůj práh nesplnily kvůli zaokrouhlení v dvojité přesnosti, zaznamenáno). MODELLED; řádek registru „Lunar reference-station coverage and accuracy map“. Bez spojení s jakoukoli agenturou či jejího schválení; žádné tvrzení o výkonu jakéhokoli skutečného systému.Předregistrovaná předpověď: pokrytí lunární referenční stanice (není validace; MODELLED).
docs/predictions/lunar-reference-station.mdzmrazuje v commitu c05dac1d výsledkylunar-station-coverageza veřejně uvedených předpokladů, s hashi SHA-256 vstupů a výsledků a s hodnoticím protokolem určeným nyní (faktor 2 pro přesnosti a ochranné úrovně, 10 procentních bodů pro dostupnost a pokrytí; změněný předpoklad dostane novou datovanou předpověď, nikdy úpravu; nesplnění se zveřejní stejně výrazně jako splnění). Každá hodnota je dominována nezveřejněnou sadou elementů čtyřdružicové konstelace, která je ILLUSTRATIVE, a říká to.tests/prediction_frozen.rsji hlídá;docs/VALIDATION.mdzískává sekci „Pre-registered predictions“. Žádný řádek registru.Rozšíření lunární referenční stanice (0,36; omezení 2 a 3 studie stanice a styl řešení zdrojů), každé volitelně zapínané na
lunar-station-coveragea ve výchozím stavu vypnuté, takže každý existující dokument, včetně zmrazené předpovědi, je beze změny:[receiver](vícecestné šířenía + b exp(-el / el0)u uživatele i stanice, u stanice volitelně Gauss-Markov přes epochy, kódový šum DLL z C/N0, mezikanálová zkreslení; hodnoty ILLUSTRATIVE pro Měsíc);orbit_err_growth_m_per_s(lineární růst chyby vysílané dráhy po dobu latence oprav, ILLUSTRATIVE);[solution](omezení výšky, minimum tří družic s ním, okno statického uživatele přes epochy). Dva dodatky k porovnání se zveřejněnými tvrzeními, každý předregistrovaný samostatně před svým během, stojí vedle needitovaného zaznamenaného běhu: K5 s růstem selhává při každé rychlosti; ve stylu řešení zdrojů K1 až K5 selhávají a K6 vychází (1 z 6), přičemž opravená 3-D chyba p95 pro R300 klesá z 280,6 m na 2,11 m. MODELLED; tři řádky registru.Lunární masky horizontu z terénu (0,36; první omezení studie lunární referenční stanice): nepovinná sekce
[terrain]nalunar-station-coverage(stanice a každý uživatelský bod) amoonlight-service-volume(každý bod mřížky) dává každému místu azimutově závislý horizont ve formátu tabulky skyline 0,36, ze stanoveného profilu označeného svým zdrojem (station_horizon,user_horizon) nebo/a ze sledování paprsku po polárním DEM (dem_path) po velkých kružnicích lunární koule s přesným zakřivením. Přibaluje ořez 0,98 MB veřejně dostupného jihopolárního DEM LRO LOLALDEM_75S_240M, převzorkovaný blokovým průměrem 5 x 5 na 1200 m (data/lunar-dem/, s jeho NOTICE, SHA-256 ascripts/make_lola_south_polar_crop.py) a scénář pouze pro repozitářscenarios/lunar-station-coverage-terrain.toml. Kontrolováno proti horizontům v uzavřeném tvaru (holá koule, kráter na plošině, rasterizovaný kužel); MODELLED, řádek registru „Lunar terrain horizon masks from a stated profile or a polar DEM“. Bez sekce je každý dokument, včetně bloku jednotek, bajt po bajtu shodný.Důvěra s ohledem na geometrii (návrhová poznámka geometrie 0,36, oddíl 4). Každá epocha
receiver-trust, statická či plavidla, dávková či živá, nese svou geometrii družic:good,degraded(důvodyfew-satellites,high-pdop,high-hdopa informativnísky-blocked) nebounknown, kde log geometrii družic nedává, s HDOP, PDOP, VDOP a použitými družicemi. Je odvozena z elevací a azimutů, které přijímač hlásí (NMEA GSV, UBX NAV-SAT), přes stávající jádroorbit::dop, nebo převzata z NMEA GSA. Každá epocha nese také štítek,good,fairnebopoor, vždy hlášený a nikdy nehodnocený, a poznámku s HDOP, PDOP, VDOP, počtem družic a ztrátou signálu slovy. Skóre plavidla získává monitorgeometry, který nic neodečítá, dokud není geometrie špatná (HDOP nad 4, PDOP nad 6 nebo méně než 5 použitých družic), pak narůstá až k limitu 15 bodů; samotná geometrie dosáhne nejvýše pásma degradovaného, nikdy nedůvěryhodného (bez poplachu). Každé odečtení dostane třídu,geometry,environmentneboinconsistency, takže špatná obloha není brána jako útok.loss-of-lockjegeometry, když všechny ztracené družice byly při posledním hlášení pod 15 stupni; odečtení za špatnou geometrii jeinconsistency, když se HDOP uváděný přijímačem rozchází s jeho uváděnou oblohou o více než max(1,0, 25 % odvozeného HDOP), takže padělaná špatná obloha si štítek koupit nemůže. Nová tabulka[geometry]uvádí každou prahovou hodnotu s jejím původem (HDOP 4, PDOP 6, nejméně 5 použitých, sigma_UERE 1,5 m, tolerance HDOP max(1,0, 25 % odvozeného HDOP), přičemž 25 % je reprezentativní volba pro přijímače s hodinami podle konstelace nebo s řešeními z podmnožin, 15 stupňů; hodnoty IEC 61108-1 a GPS SPS jak jsou citovány, k ověření proti textu norem). Úplná ztráta signálu není označena jako obloha: když družice v dohledu nejsou sledovány a DOP družic v dohledu je dobrý (a nesledované nejsou soustředěny v jedné polovině horizontu), nese epochasignal_lossa odečtení za geometrii jeenvironment. Uváděné HDOP nebo PDOP 99 nebo více, kvalita GGA 0 a režim GSA 1 se čtou jako žádné řešení, ne jako DOP. Limit (cap_points15), konec náběhu (full_ratio1,5) a podlaha (floor, výchozídegraded_minskóre) jsou v[geometry], stejně jako dobré úrovně štítku (HDOP 2, PDOP 3, 6 družic, reprezentativní); platný limit jemin(cap_points, 100 - floor), takže tabulka[score], která zvyšujedegraded_min(včetně té s 0,35), limit snižuje místo toho, aby byla odmítnuta, a podlaha poddegraded_minje odmítnuta. MODELLED; software pouze poradního charakteru, nikoli typově schválené navigační zařízení (IEC 61108, IEC 61162): za navigaci plavidla zůstává odpovědný provozovatel.Geometrie se dostává na každý povrch: JSON výsledku (
epochs[].geometry,classu každého odečtení,geometry_model,geometry_summary), živé řádky JSON (schéma 1,3), Python a WebAssemblyreceiver_trust,assess_vessel_logareceiver_trust_replay, nástroje MCPassess_*, balíčky důkazů (epochs.json,config.json, dráha geometrie na souhrnné stránce) atrust-telemetry(Prometheuskshana_trust_geometry*a štítekclassukshana_trust_reason_active, OTLPkshana.geometry.*, vlastní pole CEFcs6(stav geometrie a třídy),cfp3(HDOP) acfp4(PDOP), kontrolovaná oběma parsery CEF jako orákuly, a LEEFgeoStatus,geoHdop,geoClass). Exportuje se i štítek geometrie, připojený za každou dřívější řadu a pole a jen pro vstupy, které jej nesou: Prometheuskshana_trust_geometry_label{label}akshana_trust_geometry_vdop, OTLPkshana.geometry.labelakshana.geometry.vdop, LEEFgeoLabel,geoPdop,geoVdop,geoUseda CEF třetí polecs6(štítek) acn1(použité družice); VDOP v CEF není (pole s plovoucí řádovou čárkou jsou obsazena). Oba parsery CEF jako orákula čtou případy štítku zpět tak, jak byly zapsány (dodatek 5: 176 řádků, 172 naparsováno pycef, 176 Logstashem). Uváděný HDOP, který uváděná obloha nevysvětluje, je označen u každé epochy a započten (geometry_summary.hdop_mismatch, řádek na souhrnné stránce důkazů), hodnocen jen když je geometrie špatná. Ztráta signálu se exportuje samostatně, protože stav geometrie zůstávádegraded, dokud trvá: Prometheuskshana_trust_geometry_signal_loss, OTLPkshana.geometry.signal_loss, LEEFgeoSignalLoss=1; v CEF se projeví jako třídaenvironmentvcs6.orbit::dop_cofactor: kovarianční faktor(HᵀH)⁻¹zaorbit::dop, z ní vyčleněný stejnou aritmetikou.Řádek registru „Position error from geometry: RMS error = sigma_UERE x DOP“ (MODELLED, vnitřní konzistence): Monte Carlo se seedem pro řešení nejmenších čtverců enginu na 8 geometriích DOP odpovídajících gnss_lib_py proti kovariančnímu faktoru ověřeného jádra DOP, s tolerancemi předregistrovanými před prvním během a se dvěma negativními kontrolami, které selhávají, jak se vyžaduje; vedle něj dřívější kontrola na čtyřech ručně zvolených oblohách s intervaly spolehlivosti chí-kvadrát, uvedená jako provedená před předregistrací.
Masky skyline závislé na azimutu (
src/skyline.rs,docs/SKYLINE.md, položka návrhové poznámky 1): elevační ořez závislý na azimutu, bodové maximum tabulek (každá interpolovaná samostatně, zalomená na 360°), pouliční kaňon v uzavřeném tvaru (s volitelnými otevřenými konci), sektory s ostrými hranami a profil terénu se zakřivením Země; účinný ořez jemax(mask_deg, skyline). Čtyři REPRESENTATIVE předvolby s uvedeným původem (city-street,harbour-approach,fjord,container-terminal), přepsatelné pole po poli. Nepovinná sekce[skyline]vgnss-sim,jamming,leo-pvt(každý režim, včetně polárního sweepu),leo-passa trénovacích souborechnmea-scenarioa vorbitaintegritypřes nového uživatele na pozemním stanovišti,user_site = { lat_deg, lon_deg, height_m }(geodetické úhly pohledu na rotující Zemi, s geodetickým „nahoru“ pro horizontální a vertikální rozdělení ARAIM; každý vzorek je jeden absolutní okamžik,epoch + t, ke kterému jsou sady elementů, vysílané efemeridy a soubory SP3 posunuty od svých vlastních epoch, datováno od nejnovější epochy družice, není-liepochuvedena; obíhajícíuserskyline odmítne). Výsledky získávajískyline { source, open_fraction, provenance }amasked_by_skylinepro každý vzorek. Bez sekce je každý scénář bajt po bajtu shodný s 0.35.0, ověřeno proti hashům z vydávacího commitu. Šest přibalených příkladů:orbit-urban-canyon-skyline,integrity-harbour-approach,gnss-sim-container-terminal-skyline,jamming-harbour-approach-skyline,leo-pvt-fjord-skylinea kampaňleo-vertical-autonomous-vehicle-skyline(kaňon pro autonomní vozidlo jako plochý ořez i jako ulice; existující kampaň je beze změny). MODELLED.Funkce geometrie oblohy (
src/geometry.rs, položka návrhové poznámky 2):sky_geometry(viditelné a maskované družice z místa, času a předvoleb konstelací, dvouřádkových sad elementů (tle, nejvýše 4 MiB, propagovaných SGP4 enginu do UTCepoch) nebo zadaných družic;sky_sourceasky_statementříkají, zda je obloha reprezentativní, nebo obloha, kterou sady elementů dávají v dané epoše, nikoli měření;tle_skippeduvádí každý nepoužitý řádek s důvodem; vstupní limity 2000 družic nad horizontem, kontrolované před sestavením systémové tabulky, a 16 hodin přijímače; pět DOP; kofaktor a kovariance v ENU s jedněmi hodinami na systém nebo jedněmi společnými; horizontální chybová elipsa na jedné sigma a na uvedené spolehlivosti),sky_monte_carlo(chyby nejmenších čtverců se seedem, nejvýše 5000),skyline_presets,skyline_profileaskyplot_svg.orbit::dop_covzpřístupňuje kovarianci zaorbit::dop, která je nyní jejím zúžením (ověřené skaláry jsou beze změny). Povrchy:kshana skyakshana skyline, funkce Pythonu a WASM stejných jmen a nástroj MCPsky_geometry(40 nástrojů) a notebooknotebooks/geometry.ipynb(s jeho zrcadlem.md; spouští jejtests/python/test_notebooks.py). Každý výsledek nese štítek MODELLED, prohlášení o modelu chyb a poradní upozornění.Registr: pět řádků o skyline a geometrii oblohy. VALIDATED, každý v porovnání předregistrovaném před během svého orákula: Azimuth-dependent skyline mask: visible set, azimuth and elevation, and DOP under the mask proti Orekit 12,2 (
TopocentricFrame,ElevationMask) a gnss_lib_py 1.0.4 (get_dop), nejhorší rozdíly úhlů pohledu a masky 1.1e-12° proti 1e-9°, shodné množiny viditelných družic, DOP 3.3e-13 relativně (xval/orekit-skyline/); Horizontal error ellipse and per-system cofactor from the geometry covariance proti numpylinalg.invalinalg.eigh(standard P2), 270 případů, osy 5.1e-13 relativně (xval/numpy-ellipse/). MODELLED: redukce kaňonu, sektorů a terénu; předvolby; skladba geometrie oblohy (obloha z předvolby, mrak Monte Carlo).S řádky geometrie důvěry, skyline a lunární referenční stanice má registr 274 řádků: 134 ověřených, 136 modelovaných, 4 partnerské.
Lunární referenční stanice: laboratoř času stanice (MODELLED). Nepovinný blok
[time_lab]nalunar-time-budget(src/lunar_time_lab.rs). Modeluje hodiny stanice (výchozí třída miniRAFS, libovolná pojmenovaná třída nebo karta zařízení nafitovaná na uvedené body stability) řízené k LTC, poté volně běžící nebo znovu řízené každých N sekund. Vydává křivku časové chyby x(t), čas do 1, 10 a 100 ns (bisekce vedle uzavřeného tvaru) a dominantní člen pro každý horizont, vše s jednotkami. Reziduum řízení je ILLUSTRATIVE. Rychlost LTC se znovu neodvozuje a drží si vlastní řádek VALIDATED. Cíl na úrovni nanosekund z veřejného materiálu ICG WG-B Lunar PNT (červen 2024) je citován jako výrok zdroje, nikoli jako tvrzení. Pořadí hodin optické < PHM < RAFS < miniRAFS platí od 1 s do 7e5 s a test připíná křížení křivek PHM a RAFS poblíž 7.5e5 s. Toto křížení je vlastností modelů hodin s jediným typem šumu (čistý flicker FM proti čistému bílému FM), nikoli fyzikálním výsledkem. Bez bloku jsou zpráva, její tabulka i souhrn beze změny. Příklad:scenarios/lunar-station-time-lab.toml. Přidává jeden řádek registru označený MODELLED.Lunární referenční stanice: geodézie stanice (MODELLED). Nepovinné vstupy
extra_reflectorsaextra_beaconsnalunar-llr-datumpřidávají blokstation_geodesy. Informace o datu z pěti polí z archivovaného řezu laserového měření vzdálenosti se spojují s tím, co by přidaly přidaný retroreflektor a přidaný maják VLBI na uvedených místech. Reflektor je měřen v archivovaných epochách, kdy jej lze vidět, s jejich archivovanými vahami. Maják využívá síť a rozvrhlunar-frame-campaign, se stanicemi pevnými. Blok udává každou Helmertovu 1-sigma před a po a jejich poměr. Jsou to meze Cramér–Rao pro zredukovanou množinu parametrů, na ILLUSTRATIVE rozvrhu a místě. Chybějící nebo prázdné vstupy nechávají zprávu bajt po bajtu shodnou. Příklady:scenarios/lunar-station-geodesy-baseline.tomla-with-station.toml. Přidává jeden řádek registru označený MODELLED.Lunární referenční stanice: porovnání se zveřejněnými tvrzeními (MODELLED). Každé číselné tvrzení v pěti veřejných zdrojích je uvedeno s přesným zněním, stranou a uvedenými předpoklady a zařazeno jako srovnatelné, částečně srovnatelné nebo nesrovnatelné (
tests/fixtures/lunar_station_published/CLAIMS.md; zdroje s URL, datem stažení, SHA-256 a licencí vtests/fixtures/lunar_station/SOURCES.md). Částečně srovnatelná tvrzení byla hodnocena podle šesti jednostranných prahů předregistrovaných před během (PREREGISTRATION.md, revize 2, 05bf9a19): 1 ze 6 tvrzení v rámci předregistrovaného prahu (předregistrováno 05bf9a19). Pokrytí je 0,00 proti >= 0,95 na obou jihopolárních kružnicích a opravené p95 je 280,6 m proti <= 1,5 m. Příčinou jsou dráhové elementy družic, které žádný zdroj nezveřejňuje: na ILLUSTRATIVE elementech ve stromě jsou čtyři družice ve společném dohledu v 8 % epoch, při téměř singulární geometrii. Běh tato tvrzení na těchto elementech nereprodukuje a není důkazem, že jsou tvrzení chybná. Připnuto vtests/lunar_station_published_oracle.rs. Jeden řádek registru označený MODELLED se zjištěním.Lunární referenční stanice: připravenost dat souboru hodin.
realdata::clk::rinex_clock_seriesnyní uvádí časový systém svých epoch. Je to hodnotaTIME SYSTEM IDnebo, není-li deklarována, výchozí hodnota družicového systému z hlavičky. Výsledek také říká, zda byl systém deklarován. Funkce odmítne neznámý časový systém (například lunární časovou škálu), nedeklarovaný soubor se smíšenými systémy a soubory, které si odporují, místo aby je četla jako čas GPS. Dodává syntetický fixture hodin stanice. Není definován žádný formát souboru oprav, protože žádný veřejný neexistuje.
Změněno#
Dokumentace modulů
fusion::ukf,fusion::tightly_coupledafusion::gnss_ins_ekfuž 17stavový navigátor UKF, plné těsné spojení s INS a explicitní stav hodin neoznačuje za budoucí práci; odkazuje nahybrid_ukf,tightly_coupled17acarrier_tc.RINEX 4 už není odmítán (0,36, WP-07): navigační soubor RINEX 4 býval záměrně odmítán; nyní se čte (viz Přidáno). U souborů pozorování verze 4 a novějších se štítky hlavičky párují pouze ve sloupcích 61-80, takže nové záznamy s volným textem se nemohou vydávat za štítky.
ionex::parse_ionexčte skutečné soubory IONEX (0,36, WP-07): plný záznam o 16 hodnotách vyplní sloupce 61-80, které čtečka považovala za štítek, a proto vracelaNonepro každý skutečný soubor IONEX. Nyní čte záznam, jehož pole štítku je číselné, jako hodnoty. Žádný dodaný výstup ji nepoužíval.Přijímané výkony Galileo E1 a E5a podle OS SIS ICD Issue 2,1 (revize, 2026-10-14). Spektrální pásma
galileo-e1agalileo-e5aa oběti GNSS signálů LEO, které z nich berou výkon, nyní používají minimální přijímané výkony z Table 12 dokumentu Galileo OS SIS ICD Issue 2,1: −157,25 dBW (bylo −157,0) a −155,25 dBW (bylo −155,0).- Mění se devět výsledků scénářů: příklady spektra, kampaň spektra, tři vertikály odolnosti LEO a tři návrhy signálů LEO. Efektivní C/N0 se na těchto pásmech mění o −0,25 dB a J/S o +0,25 dB.
- Každá změněná hodnota (1766, stará → nová) je uvedena v
docs/revisions/CAP12-galileo-icd21-power-changes.mda jeho CSV spolu s tabulkami dokumentace, které se změnily. Žádný řádek registru nemění stav. - Druhá část téhož dne: oběti signálů LEO
galileo-e5b(−155,0 → −155,25 dBW, Table 12 E5b) agalileo-e5-altboc(−152,0 → −152,24 dBW). ICD nemá řádek pro celé pásmo E5, takže hodnota AltBOC je výkonový součet celkových hodnot E5a a E5b z Table 12, sestavený tak, jak byla sestavena stará hodnota. Mění se tři výsledky návrhu signálů LEO (64 hodnot: tyto přijímané výkony a degradace C/N0 z LEO do GNSS u obou obětí), uvedené ve stejné revizi (§5) a CSV. Nic dalšího se nemění.
Oprava atmosférického přílivu S2 (
tides::atmospheric_tide). Harmonické tlaku vzduchu S2 podle Raye (2001) jsou koeficienty nenormalizovanéhoP_nms kosinovými fázovými zpožděními; byly použity jako plně normalizované a zpoždění jako sinový předstih podle IERS. Nyní vstupují vydělenéN_nmsε = 90° − ψ; novétides::s2_air_wavesreprodukuje model A2 z GFZ STR06/01 Table 5 pro všech 21 vln (nejhůře 0,0005 cm, 0,05°; VALIDATED). Mění se jen výstupy s povolenými slapy: fit Galileo CI 0,132 → 0,133 m, složky Swarm-A o 1–2 mm (předregistrováno vxval/s2-air-tide-fix/).Pouze dokumentace:
propagator::solve_kepler_checked,orbit::solve_kepleraephem::solve_keplerjsou zdokumentovány jako starší řešiče, číselně beze změny, s odkazem nakepler::solve_kepler_markley.Stav kola 3 D9 (
utck_bound). BIPM Circular T 465 vyšel 2026-10-12. Předregistrované prospektivní hodnocení stále nebylo spuštěno: číslo 465 obsahuje asi 285 testovacích hodnot a pravidlo zastavení potřebuje 1000, tedy zhruba čísla 465–468. Běh také potřebuje archivované soubory jednotlivých laboratoří z 2026-09-30, protože BIPM od té doby přepsal 87 ze 113. Řádek registru a hlavička testu to uvádějí; test, jeho prahy i jeho rozdělení jsou beze změny.Průchod pravdivosti dokumentace (0,36). Plán, řádky schopností, stavové řádky návrhových dokumentů a komentáře modulů uvedeny do souladu s kódem; žádné změny výstupů. Položky již postavené, ale stále vedené jako otevřené, jsou nyní označeny jako hotové: kontroly masek ITU-T, scénář holdoveru 24 h a načítání logů hodin (telekomunikační časování), quickstarty na první minutu, Lense–Thirring a křížová kontrola propagátoru Orekit, přesný řetězec GCRS podle ITRF, golden a multiplatformní hashe, provenience, vícenásobná porucha ARAIM (ADD v4.2), FDE jedné družice, knihovna CRPA, limit nejednoznačnosti proužků CAI, dimenzování streets-of-coverage a 3-D pohled na oběžnou dráhu, dynamika polohy tuhého tělesa, zapisovač OMM a čtečka jader NAIF, lunární librace DE440, věta o významu běhu v hřišti,
PositioningFom, 17stavový těsně vázaný navigátor a druh gravity-map. Řádky také přesně uvádějí, co zůstává otevřené (například dvoudílné JD vorbit::Propagator, čtečkasrc/ionex.rsproti skutečnému produktu a vyloučení více družic vraim). Chybějícídocs/design/evidence/cn0-m2m4/RESULTS.mdje napsán z čerstvého běhu svých testů (M1–M4 vycházejí) a návrh validace IQ pro partnery má aktuální počty řádků registru.Paměťové kódy Galileo E1 už nejsou přibaleny.
data/galileo-os-sis-icd/C7_E1B.txtaC8_E1C.txt(ICD Annex C.7/C.8) jsou odstraněny z repozitáře a balíčků. Podmínky ICD (citované vLICENSING.md) dovolují uživateli kódy uložit s uvedením zdroje a použít je v produktu, ale redistribuci povolují jen pro nekomerční účely, a Kshana je nabízena také pod komerční licencí.galileo::e1b_table/e1c_tablenyní vracejíResulta čtou vlastní kopii uživatele zKSHANA_GALILEO_E1B/KSHANA_GALILEO_E1Cnebo, ve zdrojovém checkoutu, zdata/galileo-os-sis-icd/, kde je z PDF ICD extrahuje novýscripts/fetch_galileo_e1_codes.sh(s kontrolou hashe).galileo::E1B_TABLE_TEXT/E1C_TABLE_TEXTjsou odstraněny. Bez tabulek vracejí signály Galileo E1 (galileo-e1b,galileo-e1c) chybu, která říká, jak je dodat, a testy E1 se přeskočí se zprávou. S tabulkami na místě je každý výstup E1 beze změny. Žádný scénář, golden ani výstup spektra kódové tabulky nepoužívá. Testovací fixtures E5a Annex C.3/C.4 (orákulum LFSR vtests/iq_signals.rs) se řeší stejně: stahují se stejným skriptem, jsou ignorovány gitem a test se bez nich přeskočí.Přenositelná matematika všude (0,36, STUDIO-15): každá transcendentní funkce
f64v knihovně a generátory normálního, gama a exponenciálního rozdělení zrand_distrse nyní počítají přes čistě Rustovýlibm(portable_math::PortableFloat,portable_distr), takže nativní sestavení a sestavení WebAssembly vracejí bajt po bajtu shodný JSON výsledků pro všech 141 přibalených scénářů i pro krátký běh IQ. Cenou je, že poslední bity výsledků počítaných matematickou knihovnou hostitele se posunuly: 98 ze 141 přibalených scénářů se změnilo, 43 ne; 5 se změnilo o více než 1e-3 v největším poli, ostatní o méně. Každá změněná hodnota je uvedena staré -> nové vdocs/revisions/STUDIO15-portable-math-rebaseline.md(s CSV všech 136 127 změněných čísel); žádný práh, tolerance ani mez se nezměnily. Zveřejněná čísla, která se změnila: dostupnosteuropa-surface-pnts dosahem Země 0,719 -> 0,713 a chyba RMS 86,147 -> 86,499 m (jedna epocha na hraně dostupnosti se nyní všude rozhoduje stejně; na macOS arm64 vypsala 0,725 / 85,800 m); chyba stanicelunar-joint-od-clock3,541350 -> 3,536885 m s VLBI a 2183,558 -> 2184,021 m bez;paper/crossover/inertial.json, osm hodnotvibration_psdo 3 jednotky na posledním místě (erratum v technické zprávě); vydaný dokumentcislunar-observabilityv množstvích na úrovni zaokrouhlovací podlahy (osm hodnot za šestým platným místem, až 6.8e-5 relativně; neposunulo se žádné pořadí ani práh). Připnuté hashe hlídačů bajtové shody (skyline_scenarios,geometry_corpus_identity,geometry_trust_no_change) jsou přebázovány na pojmenovaný základ „0,36 portable“ s hodnotami 0.35.0 uchovanými jako historický záznam; zmrazená předpověď lunární referenční stanice je nedotčena a její přenositelný opakovaný běh je uložen vedle ní (docs/predictions/*.portable-0.36.json).tests/lunar_joint_od_numpy_oracle.rs(ověřený řádek lunárního společného OD): fixtures znovu exportovány a porovnání s numpy znovu spuštěno s numpy 2.4.6, registrovanou verzí, skript i práh beze změny; všech šest sítí vychází (docs/revisions/STUDIO15-lunar-joint-od-oracle-rerecord.md). Práce ze dávek 2-3 sloučená po STUDIO-15 je také na přenositelné matematice (457 míst volání v 62 souborech); co se jí posunulo, je vdocs/revisions/STUDIO15-batch4-rebaseline.md: 12 přibalených scénářů (největší relativní změna 5.2e-8, neposune se žádná vytištěná hodnota), 28 znovu schválených řádků hlídače skyline, digest M2M4iq_campaign, starší hashe pravdygnss-ins, sigma data nepozorovaného majáku (632,3769 -> 632,3772 m) a dvě zaznamenaná zjištění (uzavření DRO v CR3BP; CRPA A3, 194 z 456 spojů). Přesné edf podle Greenhalla si drží svůj ověřený práh s logaritmem v aritmetice double-double ve svém jádře (docs/revisions/STUDIO15-greenhall-edf-portable.md) a orákulum testovací lavice gps-sdr-sim bylo znovu spuštěno na změněných exportech NMEA, přičemž každý práh platí (docs/revisions/STUDIO15-testbench-gpssdrsim-rerun.md).README: řádek lunární sady uvádí úroveň důkazů každé části (psalo se, že všechny jsou MODELLED).
realdata::clk::rinex_clock_seriesvracíRinexClockSeries(řada, log mřížkování, časový systém, zda byl deklarován, typ záznamu) místo n-tice(PhaseSeries, GriddingLog). Nyní se vrací od záznamů družice (AS) k záznamům přijímače/stanice (AR) požadovaného jména.Žádné skóre se nemění, pokud není geometrie špatná; štítek je hlášen vždy. S dobrou nebo střední geometrií (včetně oblohy jen s GPS s 8 družicemi) nebo s neznámou geometrií (monitor neběží) je každé skóre jako v 0,35:
tests/geometry_trust_no_change.rsdrží výstupy obou příkladových relací atests/geometry_corpus_identity.rskaždý commitnutý korpus NMEA plavidla (také jako obloha jen s GPS) a scénáře výcviku posádek na bajty 0.35.0, jakmile jsou připojené klíče odstraněny; ve dvou výcvikových scénářích, jejichž rušení činí geometrii špatnou, se špatné epochy liší samotným odečtením za geometrii. Log se špatnou geometrií ztrácí až 15 bodů, které v 0,35 neztrácel. Jinak zamýšlené změny, všechno doplňky: výše uvedené klíče v JSON výsledku a v balíčcích důkazů (score_model.weightsje beze změny); schéma živých řádků JSON přechází z 1,2 na 1,3 (geometrypřipojeno,classv každém odečtení); výtah souhrnu získávágeometry; telemetrie získává řady geometrie, pole a štítekclassjen pro vstupy, které je nesou, takže proud nebo výsledek 0,35 se vykreslí bajt po bajtu jako dříve.geometryje 17. jméno monitoru; je uvedeno poslední vmonitors_run, když rozhodoval (plavidlo, jehož log geometrii dává; seznam 0,35 si zachová své pořadí a počet monitorů v souhrnu se zvýší o jedna) a nemá položku[score.weights](její nastavení je odmítnuto: jeho odečtení se nastavuje v[geometry]).tests/fixtures/dop/NOTICEuváděl licenci gnss_lib_py jako Apache-2.0; vydání 1.0.4 je MIT.Čtečka NMEA nyní čte GSA (krátká GSA se ignoruje, nepočítá se jako přeskočená) a uchovává elevace a azimuty GSV, i pro družice uvedené bez signálu; čtečka UBX uchovává elevaci a azimut NAV-SAT. C/N0 se čte přesně jako dříve.
Změna výsledku: širokopásmové a přelaďované rušičky nyní používají Q = 2. Rovnice protirušení používá pro tyto rušičky učebnicovou úpravu rozprostřeného spektra Q, kde dříve používala 1. Q = 2 je bílý šum přes hlavní lalok s normalizovaným výkonem signálu v pásmu; v testech je připnuto k uzavřenému tvaru z
navsignal.- Beze změny: rušičky CW a úzkopásmové (Q = 1), nerozpoznaný typ rušičky (Q = 1, nejškodlivější hodnota) a
q_override. - Účinek: tam, kde působí širokopásmová nebo přelaďovaná rušička, efektivní C/N0 stoupá až o 3,0103 dB, odvozené prahy J/S stoupají o 3,0103 dB a poloměry odepření ve volném prostoru se zmenšují faktorem 0,7071.
- Změněné přibalené scénáře: 12 ze 144 se mění, všechny tak, jak bylo předregistrováno (
xval/jammer-q/PREREGISTRATION.md, výsledky vxval/jammer-q/RESULTS.md):jamming-demo: C/N0 +3,01 dB;jamming-harbour-approach-skyline:min_tracking6 → 7;lunar-jamming: ztracené družice 26 → 0, medián odstupu ztráty zachycení 27,4 → 19,4 km;tracking-loop: poloměr odepření dynamiky smyčky 75,2 → 53,2 km;- a kampaně a křížové kontroly spektra, které je obsahují.
- Dotčení spotřebitelé: druhy
jamming,lunar-jamming,tracking-loopaimpairment-eval,jamming_kind_cross_checkdruhů spektra, referenční křivka MODELLED kampaně IQ a výchozí Q labfit a export scény pro interoperabilitu.
- Beze změny: rušičky CW a úzkopásmové (Q = 1), nerozpoznaný typ rušičky (Q = 1, nejškodlivější hodnota) a
Plugin JetBrains: žádné zastaralé platformní API ani API plánované k odstranění. Pět dialogů výběru používá malý
DialogWrappers rozbalovacím seznamem místo zastaraléhoMessages.showChooseDialog; výběry jednoho souboru používají konstruktorFileChooserDescriptormísto zastaraléhoFileChooserDescriptorFactory.createSingleFileDescriptor(); animace se otevírá přesBrowserUtil.browse(Path)místobrowse(File), které platforma 2026,3 plánuje k odstranění. Since-build zůstává 243. IntelliJ Plugin Verifier hlásí Compatible bez použití zastaralého API či API plánovaného k odstranění proti 2024,3 (IC-243.21565.193), 2025,2 (IC-252.23892.409), 2026.2.3 (IU-262.10968.63) a 2026,3 EAP (IU-263.6259.32);verifyPluginve výchozím nastavení kontroluje 2024,3 a libovolný seznam zadaný vKSHANA_VERIFY_IDES.gnss_sim::run_gnss_simajamming::run_jammingvracejíResult: neplatná sekce[skyline]je při přímém volání chybou, jak tomu už bylo přesapi::run_toml, místo tichého návratu k plochému maskování. Zpětně nekompatibilní pro volající v Rustu těchto dvou funkcí.
Opraveno#
Hodnotitel kampaní: skutečné falešné zachycení trackeru se nikdy nezapočítalo (
iq::campaign). Kontrola falešného zachycení trackeru přesune kanál z LOCKED na LOST, když se spustí. Hodnotitel označil až následující aktualizaci kanálu, která už byla odemčená, a proto se nikdy nezapočítala. Událostfalse-lockhlášená z LOCKED je nyní jednou epizodou ve svém čase, v běhu i v každé uvedené události, která ji obsahuje. Událost nalezená během pull-in nebo opakovaná kanálem, který je už LOST, není novou epizodou. Nový test vyvolá skutečné falešné zachycení: legitimní nosná GPS L1 C/A skokově změněná o 1/(2T) při zachycení (tests/iq_campaign_false_lock.rs).- V referenční kampani
tests/iq_campaign.rsse mění jen PRN 11 z ramp/agc-3bit (epizody falešného zachycení 0 → 1, 426 a 437 za hodinu zachycení). - Její DIGESTy buněk jsou znovu připnuty.
- Předregistrované připnutí hodnocených výsledků zůstává živé a stále se reprodukuje přesně: v jeho hashi je jen těch šest polí, změněných touto opravou provedenou po registraci, namapováno zpět na jejich hodnoty před opravou. Opravené hodnoty jsou připnuty samostatně.
- Žádný práh nebyl změněn a nepohnul se žádný řádek VALIDATED, hodnota ani číslo na webu.
- V referenční kampani
lunar-frame-campaign: maják bez pozorování je nyní hlášen (nalezeno MR-05). Zpráva získává
unobserved_beaconsawarningjen tehdy, když nějaký maják nemá žádné pozorování, a sigmy pozorovaných majáků pak pocházejí z jejich vlastní informace, místo aby byly všechny null. Datum je beze změny a nemění se žádný výchozí, přibalený ani zveřejněný výstup (docs/revisions/BEACON-unobserved-cell-changes.md).Lunární soustava hlavních os (
lunar_frame::icrf_to_moon_pa, používaná vlunar_oda ve fitu LRO): posun DE421 od střední osy Země k hlavním osám zmoon_080317.tfbyl použit ve špatném směru a se špatným pořadím Eulerových úhlů, takže analytická soustava PA ležela asi 208″ od PA, místo aby na ní ležela. Nyní je přepsána tak, jak ji definuje Frames Required Reading SPICE, a shoduje se se SPICEpxform('MOON_ME','MOON_PA')na 2.6e-16 rad; analytická soustava PA je 6″ až 8″ od PA DE440 (předregistrováno e1ead19b, znovu registrováno be33382e poté, co první navržená změna nesplnila práh 1e-12;docs/design/evidence/fut05b-me-pa-offset-sign/). Zveřejněná čísla, která se mění: fit LRO (tests/agency_lro.rs) surové překrytí 53,8 → 39,9 m, dynamické 12,6 → 12,05 m, redukovaně dynamické 6,65 → 6,67 m (prahy beze změny). Analytický zásobník se nyní shoduje s křížovou validací ANISE na úrovni DE (12,0 / 6,67 m) na obou úrovních; dřívější rozdíl na dynamické úrovni byla tato chyba.Server MCP odmítá
[terrain] dem_hgt(navazuje na CAP-06b). Cesta k dlaždici terénu druhu jamming je nyní vinline_only::FILE_SOURCE_KEYS. Inline povrch odmítne scénář, který ji uvádí, se zprávou, která neobsahuje ani cestu, ani chybu operačního systému. Test ochrany zdrojů souborů nyní označí i pole končící na_hgt.Jd2::from_partsse zlomkovou denní částí zahazovalo zlomek v převodech UTC, TAI, UT1 a rotace Země (jedna hodina denní části otočila Zemi o 15° špatně); denní část je nyní normalizována na celé číslo. Žádný volající enginu nebyl dotčen: každý předává celý den a každý dodaný výstup je bitově shodný.
Plánováno#
- Geometrie ze zadaného skyline (položka 1 verze 0,36, nyní v enginu jako
src/skyline.rs):sky-blockedaopen_fractionze skyline, kde ho vstup dává (mezera v azimutu jako záloha), událost přirozené degradace (fjord nebo terminál) vnmea-scenarioa dvě maskované geometrie z návrhové poznámky v řádku sigma_UERE x DOP, předregistrované jako dodatek. - Geometrie pro logy RINEX s navigací (z vlastního řešení enginu) a logy Androidu (z řádků
Status); obojí dnes čteunknown. Geometrie v$PKSHT(verze 1 beze změny v 0,36) a integrace Signal K a OpenCPN. - Dříve existující mezera, nezavedená ve verzi 0,36: jakmile je pole SNR každé družice prázdné, nespustí se žádné odečtení
loss-of-lockani C/N0; úplná ztráta signálu je viditelná jen přessignal_lossmonitoru geometrie (zařazeno do třídyenvironment). Odečtení pro ni je plánováno. - Proud schématu 1,3 ve vnějších telemetrických orákulech (parser textového formátu Prometheus a kolektor OTLP), které dnes pokrývají jen proudy 1,2.
- Dvoustranná překážka (kaňon nebo úzký fjord) se čte jako ztráta signálu, nikoli jako zablokovaná obloha, dokud nebude skyline integrován.
[0.35.0] - 2026-10-12#
Pasáž jmenující AI klienty třetích stran je zde vynechána; je v CHANGELOG.md na GitHubu.
Ověřovač Galileo OSNMA#
- Nový modul
kshana::osnmaakshana osnma verify <input>: otevřený ověřovač OSNMA pro Galileo na straně přijímače, čistě v Rustu. Čte stránky I/NAV a hlásí pro každou družici a epochu, zda jsou navigační data autentizována, s důvodem každého selhání nebo zpoždění: parsování HKROOT a MACK, skládání DSM-KROOT a DSM-PKR, ověření veřejného klíče pomocí Merkle, ověření řetězce klíčů TESLA, ověření MACSEQ a značek pro ADKD 0, 4 a 12 včetně křížové autentizace a výsledek ve tvaru$PKSOSpro monitor důvěry v přijímač. Výstup nese poradní upozornění, že stav není službou integrity navigace.docs/OSNMA.mduvádí, co je a co není ověřováno, požadavek na čas a že Kshana neuděluje žádná práva podle IPR ICD OSNMA Evropské unie (uživatelé se spoléhají na oprávnění v Annex E ICD). Implementováno proti SIS ICD Issue 1,1 a Receiver Guidelines Issue 1,3. Stránky se kontrolují CRC a bajtový proud u-blox UBX-RXM-SFRBX lze číst přímo (--format ubx). Výchozí testy používají syntetická data a zveřejněné testy se známou odpovědí pro primitiva; test na vyžádání čte lokálně stažený exemplář oficiálních vektorů. Po nezávislém přezkumu ověřovač bere svůj čas jen z ověřených klíčů TESLA (podvržený podrámec z daleké budoucnosti už nemůže vymazat selhání), nechává autentizaci vypršet a sleduje používané IODnav, ctí ověřené výstražné zprávy (jejichž list Merkle nyní zahrnuje náhodné pole NPK) a stav NMA „don't use“, drží zástupné značky mimo stav družice, uchovává řetězce podle CID s odvoláním a obnovou, kontroluje výplňový hash KROOT a omezuje délky rámců UBX a práci ověřování TESLA. Družice se čte jako autentizovaná jen tehdy, když nejnovější efemeridy a data hodin, která vysílá, jsou bit po bitu tatáž data, která byla autentizována (nikoli jen pod stejným IODnav); stav nebo odvolání z neautentizované hlavičky NMA se počítá jen tehdy, když se shodnou dvě družice nebo jej nese ověřený KROOT; přehraný starší KROOT nemůže nahradit řetězec a zastavený proud klíčů je hlášen.
Přidáno (kanály serveru MCP)#
kshana-mcp --http <addr>, streamovatelné HTTP, vlastní hosting. Ve výchozím stavu loopback; adresa mimo loopback vyžaduje--allow-remotea bearer token vKSHANA_MCP_HTTP_TOKEN; žádný nástroj nečte ani nezapisuje cestu (nástroje pro soubory IQ jsou vypnuty); limity velikosti požadavku, času a souběžnosti; žádná hlavička CORS; kontroly Host a Origin. Kshana nehostuje žádný koncový bod (docs/deploy/mcp-http.md, se šablonami pro Docker, Fly.io a Cloud Run).
Pasáž jmenující AI klienty třetích stran je zde vynechána; je v CHANGELOG.md na GitHubu.
Přidáno (povrchy)#
osnma_verifyv Pythonu a WebAssembly. Ověřovač zakshana osnma verifynad bajty v paměti, vracející JSON, který tiskne--json(poradní upozornění v poliadvisory; jen stav autentizace, nikoli služba integrity navigace). Stejná odmítnutí jako na příkazové řádce. Ne v MCP: vstupem je dlouhý surový proud přijímače, který lépe obslouží CLI a Python. Říkají todocs/SURFACES.mdadocs/OSNMA.md.trust_telemetryve WebAssembly, Pythonu a MCP, s příkazem pluginu a akcí JetBrains. Vykresluje proud důvěry nebo výsledekreceiver-trustjako text Prometheus, řádky syslogu CEF nebo LEEF nebo payload OTLP JSON, s kodéry, které používákshana trust-telemetry(kshana::surface::trust_telemetry); žádný socket a žádné hodiny. Plugin:/kshana-trust-telemetrya dovednosttrust-telemetry. JetBrains: Render Trust Telemetry. Funkcewasmapythona server MCP nyní také zapínajíotlp, což nepřidává žádný crate.Průchod paritou. Akce JetBrains Validate Scenario, List Scenario Kinds a Assess Receiver Stream;
kshana --helpnyní uvádíreceiver-trust evidence,evidence,trust-telemetryanmea-scenario; notebookcompliance-and-test-bench(mapování compliance a export pro testovací lavici); a každá zbývající buňka JetBrains „pouze CLI“ vdocs/SURFACES.mdje nyní výslovné N/A s důvodem.
Pasáž jmenující AI klienty třetích stran je zde vynechána; je v CHANGELOG.md na GitHubu.
Přidáno (balíčky důkazů)#
kshana receiver-trust evidenceakshana evidence verify: podepsané, ověřitelné balíčky důkazů pro událost důvěry v GNSS. Balíček sdružuje výřez surového logu a SHA-256 celého logu, konfiguraci se všemi prahy, výsledky a důvody pro jednotlivé epochy, verzi enginu, manifest propojený hashi a samostatný souhrn HTML, podepsané Ed25519 (klíč zkshana evidence keygennebo vlastní soubor; klíče se v balíčku nikdy neukládají a*.evidence-keyje ignorován gitem).verifykontroluje každý hash, řetězec i podpis a pojmenuje přesně to, co selhává; s--pubkeypřipne podepisujícího. Lze připojit token RFC 3161, který se přečte a naváže na manifest (vlastní podpis autority toto sestavení nekontroluje; pokrývá toopenssl ts -verify). Výřez logu je přesnými bajty okna tam, kde čtečka hlásí zdrojové rozsahy (NMEA, UBX, RINEX 3, Android), jinak celý log, a manifest říká, který případ nastal. Vytvoření a ověření jsou čisté veřejné funkce (kshana::evidence), které se sestavují prowasm32. Balíčky uvádějí, že jsou technickým záznamem, nikoli právním posudkem. Nové závislosti jsou stromed25519-dalek(BSD-3-Clause a Apache-2.0/MIT, minimální funkce) a přímýzeroize(již v tomto stromu) pro vymazání klíčového materiálu. Vizdocs/EVIDENCE-PACKS.md.
Přidáno (telemetrie důvěry)#
kshana trust-telemetry: důvěra v GNSS jako zdroj bezpečnostní telemetrie. Čte proud důvěry po epochách (řádky JSON: skóre 0-100, pásmo, důvody) nebo dávkový výsledekreceiver-trusta plní koncový bod Prometheus/metrics(ve výchozím stavu localhost), události syslogu v CEF nebo LEEF uvnitř obálky RFC 5424 (UDP nebo TCP) a, za ve výchozím stavu vypnutou funkcíotlp, export OTLP/HTTP JSON. Doručování běží na pracovních vláknech s časovými limity připojení a zápisu, omezeným odstupem opětovného připojení a počítadlemkshana_trust_syslog_send_failures_total, takže mrtvý nebo zaseknutý kolektor nemůže zastavit živé hodnocení ani zmrazit/metrics; štítky důvodů jsou omezeny na 64 řad. Žádné nové závislosti. Ukázkový dashboard Grafana je vdeploy/grafana/. Názvy metrik, štítky a mapování polí CEF/LEEF jsou vdocs/TRUST-TELEMETRY.md. Formát proudu je izolován vsrc/telemetry/sample.rs.
Přidáno#
- Námořní důvěra: živé skóre důvěry 0-100 pro řešení pohybujícího se plavidla z NMEA 0183, které přijímač už vydává, s bránou zapínanou na vyžádání.
kshana receiver-trustpřijímá tabulku[platform](kind = "static"nebo"vessel", maximální rychlost plavidla, zrychlení a rychlost otáčení, výška antény nad čárou ponoru a volitelný snímač kurzu; každá výchozí hodnota zdokumentovaná s důvodem). Pro plavidlo je statický monitor skoku polohy, který měří vzdálenost od kalibračního průměru a na plující lodi se mýlí, nahrazen kauzálními monitory pohyblivé platformy: kinematická konzistence polohy vůči hlášené rychlosti a kurzu a vůči limitům plavidla, kurz z gyra vůči kurzu nad zemí, log rychlosti vůči rychlosti nad zemí, výška antény vůči uvedené výšce nad čárou ponoru, kolaps a současný růst rozptylu C/N0 vůči kalibračnímu základu a časová konzistence (v živém režimu i vůči hodinám tohoto počítače). Čte také hlášený stav autentizace, celkový nebo pro jednotlivé družice (jen hlášený stav: žádná kryptografie OSNMA). Každý práh je uveden v tabulce[maritime]před během. Každá epocha pak dostane skóre od 0 do 100 deterministickým, předregistrovaným mapováním (žádné učení, nic nefitovaného na události; váhy, hrany pásem a důkazy jsou v tabulce[score]), namapovaným na stávající stavy důvěry, s monitory, které odečetly, a jejich body. Statické scénáře jsou beze změny a hashují se jako dříve.kshana receiver-trust live <session.toml>čte stdin, soubor, ke kterému se připisuje, TCP nebo UDP a zapisuje jeden řádek JSON na epochu a proprietární větu$PKSHT; s--gatepropouští proud nezměněný, dokud je řešení důvěryhodné, a označuje řešení za neplatné (kvalita GGA 0, stav RMC a GLLV, režim GNS a VTGN), dokud není. Brána je vypnutá, pokud o ni není požádáno;--listen tcp:<port>poskytuje proud za bránou libovolnému počtu klientů TCP (ve výchozím stavu loopback, pomalý klient je odpojen, aby neblokoval ostatní). Je to software pouze poradního charakteru, nikoli typově schválené navigační zařízení (IEC 61108, IEC 61162); odpovědný zůstává provozovatel.examples/maritime-trust/je syntetický log Tallinn–Helsinki, zapsaný pouze jako text, s odtažením polohy v polovině, během něhož přijímač dál hlásí platné řešení; jeho očekávaný výstup je připnut testem. Průvodce:docs/MARITIME-TRUST.md. Kontroly nevidí spoofer, jehož řešení je konzistentní se vším na sběrnici; průvodce to uvádí.
Mapa interference#
kshana interference-mapakshana route-exposure: veřejný obraz toho, kde letadla a lodě hlásily zhoršená navigační data a kolik z trasy se jich dotýká. Vstupy jsou místní soubory CSV vytvořené z otevřeně licencovaných dat ADS-B (adsb.lol, ODbL 1,0) a AIS (NOAA MarineCadastre, Kystverket pod NLOD 2,0); každý výstupní soubor je jeden zdroj a jeden den UTC ve formátu GeoJSON, nesoucí metodu, její prahy, licenci dat, uvedení zdroje a zkreslení pokrytí zdroje. Metoda ADS-B agreguje NIC a NACp na pevnou mřížku a buňku označí za zhoršenou podle podílu odlišných letadel, s pojistkami pro zařízení, která nikdy nehlásí přesnost, pro nízkou výšku a pro příčiny na širokém území. Metoda AIS spouští pět detektorů: polohy na souši (proti pobřežní čáře dodané uživatelem), kruhové dráhy, nepravděpodobné skoky, nepravděpodobné rychlosti a mnoho plavidel na jednom místě. Prahy jsou předregistrované konstanty pojmenované verze metody. Pouze agregáty: identifikátory se hashují v paměti a nikdy nezapisují a buňky s méně než 5 odlišnými letadly nebo plavidly se nezveřejňují. Zhoršená buňka není zjištěním interference. Výchozí příkazy nepoužívají síť; pomocníkfetch-land --allow-networkna vyžádání stahuje polygony souše Natural Earth z adresy připnuté ke commitu a soubor uchová, jen když se jeho SHA-256 shoduje. Vstupem ADS-B je CSV nebo přímo soubory historie readsb z adsb.lol (nová závislost:flate2s čistě Rustovým backendem, pro gzip). Obě metody jsou ve verzi 2: volání zhoršená nebo anomální vyžaduje alespoň 5 letadel nebo plavidel (minimum pro zveřejnění), každý počet v buňce pod 5 je zadržen jakonulla den, jehož pozadí nelze odhadnout, zadrží svá volání. Výstupní soubory se jmenují<source>-<dataset>-<date>.geojsona nikdy se nepřepisují; vstup se streamuje po řádcích; expozice trasy zvládá antimeridián. Testy používají pouze syntetická data. Vizdocs/INTERFERENCE-MAP.mda přezkum licencí vdocs/data/INTERFERENCE-DATA-SOURCES.md.
Přidáno (trénovací proudy)#
kshana nmea-scenario: syntetický můstkový NMEA 0183 pro výcvik posádek v rozpoznávání rušení a spoofingu GNSS. Ze scénáře TOML zapisuje soubor nebo streamuje přes TCP či UDP (unicast nebo broadcast; v reálném čase, zrychleně nebo co nejrychleji) úplnou sadu můstku GGA, RMC, VTG, GSV, GSA, GNS, ZDA, HDT a VBW pro dráhu plavidla s limity rychlosti otáčení, zrychlení a proudu, s geometrií družic z vlastních nominálních konstelací enginu. Skriptované události na časové ose: rušení, odtažení polohy (platné řešení, které odchází), podvržení času a zpoždění přehrání, každé s náběhovými a doběhovými rampami. Instruktorský log (JSON a text) zaznamenává, co bylo kdy vloženo, se skutečnou dráhou proti hlášené. Knihovna vscenarios/training/(rušení na otevřeném moři, pobřežní odtažení, podvržení času při přiblížení k přístavu, kombinované) nese poznámky pro trenéra. Výstup má platné kontrolní součty a je deterministický pro každý seed; testy připínají zlatý výňatek pro každý scénář a čtou každou větu čtečkou NMEAreceiver-trust. Pouze text: žádný výstup RF, IQ ani průběhu signálu; proudy jsou určeny pro výcvik a testování a nikdy se nesmějí přivádět do živých navigačních systémů plavidla. Vizdocs/NMEA-TRAINING.md.
Námořní integrace (0.35.0, pracovní proud B)#
- Plugin Signal K (
integrations/signalk/, není zveřejněn na npm): spouštíkshana receiver-trust livenebo se k němu připojuje (vlastní vstup NMEA serveru, vlastní argumenty vstupu, přívod JSON-lines přes TCP nebo věty$PKSHTproudu s bránou), publikuje skóre důvěry, pásmo, důvody, alarmy a stav brány podnavigation.gnss.kshana.*(včetně polohy hlášené přijímačem jako kontext, nikdynavigation.position) a vyvolává oznámení Signal K (warnpři degradaci,alarmpři nedůvěryhodnosti, s prahy podržení, zrušení a zastarání, vše ve schématu konfigurace). Žádné závislosti npm. Testováno na zaznamenaném syntetickém výstupu. - OpenCPN: NMEA v režimu brány je poskytován přímo
kshana receiver-trust live --gate --listen tcp:10110(doporučeno); bezzávislostní relé TCP (integrations/opencpn/nmea-tcp-relay.mjs) je nepovinná alternativa. Tak či onak OpenCPN vidí neplatné řešení, když se důvěra zhroutí, a$PKSHTve svém ladicím okně NMEA; testy přehrávají syntetický proud s bránou přes skutečný socket TCP a kontrolují, co spotřebitel přijme. Nativní plugin s panelem skóre (integrations/opencpn/plugin/, plugin API 1,18, CMake) čte$PKSHTz vlastního proudu NMEA OpenCPN a upozorňuje na pásmo nedůvěryhodné; sestavuje se, jeho logika je testována jednotkovými testy a běžel uvnitř OpenCPN 5.8.4 pod virtuálním displejem (důkazy a reprodukční skript vintegrations/opencpn/evidence/); není zabalen pro správce pluginů. - Referenční sestavení (
deploy/reference-build/): obecný seznam dílů, nastavení OS, jednotky systemd pro poradní monitor a bránu zapínanou na vyžádání (kontrolovanésystemd-analyze verifypřescheck-units.sh), možnost kontejneru, zapojení Signal K. - Plugin Signal K přijímá živé schéma JSON 1,2 (klíč
position, poté klíčadvisorypřipojený na konec; neznámé připojené klíče se ignorují), kontrolováno na skutečném výstupu 1,2 a proti skutečnému signalk-server. - Opravy po přezkumu: jednotky systemd se vždy restartují a běží v pískovišti (žádný shell, žádná síť, kde není potřeba), úryvek logrotate,
check-units.shselže při jakémkoli zjištění; kontejner spouští bránu z proměnných prostředí s kontrolou stavu a se základními obrazy připnutými digestem; metadata skóre Signal K, zastaralé oznámení je při obnovení dat nahrazeno, chyby podřízených procesů se uchovávají a ukončení eskalují, nebezpečnéinputArgsjsou odmítány a oznámení je nanotifications.navigation.gnss.kshana.trust; relé omezuje podržený neúplný řádek; parsery$PKSHTodmítají skóre mimo 0 až 100; kontrola odkazů v dokumentaci; pracovní postup CI (marine-integrations.yml), který spouští vše, včetně skutečného binárního souboru od začátku do konce. docs/MARINE-INTEGRATIONS.md. Software pouze poradního charakteru, nikoli typově schválené zařízení; odpovědný zůstává provozovatel. Pouze software: nic nevysílá a netvrdí se žádná hodnota detekce ani falešného poplachu.
Přidáno: mapování compliance a export pro testovací lavici#
docs/compliance/akshana compliance-report. Mapování výstupů Kshana na pět rámců a norem odolnosti (US DHS Resilient PNT Conformance Framework v2.0, pokyny IMO pro lodě, pokyny EASA pro letectví, NIS2 Article 21, EN 16803, placená norma citovaná podle částí a těch několika čísel článků, která jsou vidět v katalogovém textu), jedna tabulka na rámec: odkaz, co požaduje v našem parafrázování, výstupy, které pro ně podporují důkazy (supports evidence for), a mezera. Verze zdrojů, URL a to, co bylo a nebylo přečteno, jsou zaznamenány.kshana compliance-report <result.json>...naplní mapování z daných běhů a označí každý řádekevidenced,partly-evidenced,not-evidencedneboout-of-scope, jako Markdown a JSON, s mezerou ponechanou u každého řádku. Formulace je „podporuje důkazy pro (supports evidence for)“; nic se nehodnotí ani neschvaluje. Testy používají syntetické běhy a selžou, když se uložená tabulka rozejde s kódem.kshana bench-export <scenario.toml>. Zapisuje pohyb vozidla a události scénářegnss-ins,jammingnebognss-simpro laboratorní simulátor GNSS: CSV pohybu uživatele se zdokumentovanými soustavami a doprovodný soubor metadat, NMEA 0183GGA/RMC, text s body trasy a události jako CSV a jako blokyreceiver-trust[[events]](src/interop/testbench.rs). Pouze pohyb a události: žádný signál se nezapisuje. Každý soubor se čte zpět vtests/interop_testbench.rsa porovnává v rámci své uvedené tolerance.docs/TEST-BENCH.mdudává metodu přehrání exportu přes simulátor a hodnocení logu přijímače pomocíkshana receiver-trust.- Co se počítá jako důkaz. Výsledek se počítá pro schopnost, jen když nese pole, která jeho druh zapisuje; samotný štítek druhu neznamená nic. Neznámé druhy, výsledek, který si odporuje se sesterským scénářem, nehexadecimální hashe a chybně utvořené počty důvěry v přijímač jsou uvedeny jako nepoužité, s důvodem. Zpráva escapuje buňky Markdownu a nespadne (panic) na hashi se znaky mimo ASCII.
compliance::run_from_textaassess_textspřijímají texty, nikoli cesty. - Export pro testovací lavici.
--epochje kontrolováno na rozsah (UtcEpoch::parse_iso); soubor s body trasy kontroluje každý interval a příkaz říká proč, když je vynechán; dokumentace uvádí, že kurzgnss-insje stáčení tělesa, nikoli kurz po trati, zástupná poleGGAa vlastní změnu výšky scénáře.bench-exportacompliance-reportjsou v textu použití. fusion::pack::truth_trajectoryzpřístupňuje historii skutečného stavu pro profil řízenígnss-ins(stejné krokování, jaké používá vlastní pravda druhu) aUtcEpochzískává pole data a času NMEA.
Validace mapy interference#
- Sémantika dekódování a geometrie mapy interference jsou kontrolovány proti nezávislým implementacím na syntetických vstupech. Významy kódů NIC a NACp proti dekódování syntetických rámců ADS-B v pyModeS, nedostupné hodnoty AIS proti dekódování syntetických vět AIVDM v pyais, přiřazení buněk mřížky proti shapely, délka trasy v každém stavu buňky proti shapely a GeographicLib a maskování vnitrozemí proti shapely a pyproj, vše na toleranci stanovenou před prvním porovnáním (
tests/fixtures/interference_map_ref/PREREGISTRATION.md). Toto ověřuje, jak se čtou kódy a hodnoty polí, a geometrii, nikoli že označená buňka je interference. Čtečka polygonů souše nyní uzavírá prstenec, který neopakuje svůj první vrchol a který dříve četla bez poslední hrany. Dokumentace uvádí prahy nízké přesnosti NACp a NIC jako mez, kterou každý kód představuje (NACp 6 je mez EPU 556 m, NIC 5 mez omezení 1 NM).
Přidáno (validace formátů telemetrie a balíčků důkazů)#
- Vnější kontroly kryptografie balíčků důkazů, ověřovače balíčků a přenosových formátů telemetrie. Testovací vektory Ed25519 z RFC 8032 oddílu 7,1 (1, 2, 3 a 1024) a příklady SHA-256 z FIPS 180-4 běží přes vlastní funkce balíčku pro podepisování, ověřování a hashování, na přesnou rovnost. Ověřovač napsaný v Pythonu pouze z normativního oddílu
docs/EVIDENCE-PACKS.md(hashlib acryptography) se shoduje s ověřovačem v Rustu na 71 neporušených a porušených balíčcích: verdikt, množina selhání, verdikt podpisu a obě hlavy řetězce. Naše expozice Prometheus je čtena parserem oficiálního klienta v Pythonu a náš OTLP JSON oficiální zprávouopentelemetry-proto, striktně, a obojí se shoduje se stavem, z něhož byly vytvořeny. CEF a LEEF nemají nezávislý otevřený validátor a zůstávají jen modelované.docs/EVIDENCE-PACKS.mdzískala normativní formát balíčku a postup ověření, z nichž byl ověřovač v čisté místnosti napsán;VerifyReportzískalasignature_valid. Orákula a fixtures:scripts/gen_ed25519_rfc8032_ref.py,scripts/gen_evidence_pack_ref.pysscripts/evidence_verify_cleanroom.py,scripts/gen_telemetry_formats_ref.py; testyevidence_crypto_reference,evidence_pack_referenceatelemetry_formats_reference. CI nepotřebuje Python.
Přidáno (validace událostí CEF)#
- Události CEF telemetrie jsou správně čteny zpět dvěma nezávislými open-source parsery.
pycef1,11 a kodek CEF pro Logstash (logstash-codec-cef6.2.7 v Logstash 8.15.3) parsují 157 řádků CEF (každou změnu pásma a každou epochu uloženého telemetrického proudu, plus nepřátelský text obsahující=, zpětná lomítka, svislítka, zalomení řádků, tabulátory a vícebajtový text) a obnoví každé pole hlavičky, závažnost, přesnou množinu klíčů rozšíření a každou hodnotu přesně. Kodek Logstash čte také čtyři řádky, jejichž text hlavičky vyžaduje escapování, cožpycefnezvládá. Práh byl zaregistrován před spuštěním kteréhokoli parseru (tests/cef_reference.rs); fixtures vtests/fixtures/cef/, skripty orákulscripts/gen_cef_ref.pyascripts/gen_cef_logstash_ref.py; CI nepotřebuje ani Python, ani Logstash. LEEF nemá udržovaný otevřený parser a zůstává jen modelovaný. Události CEF nyní nesou skóre důvěry a posun epochy v číselných vlastních polích CEF s plovoucí řádovou čárkou (cfp1,cfp2) místo celočíselných polícn1acn2, která nevyhovovala ani jedné hodnotě; CEF je v tomto vydání nové, takže se nic z dodaného nemění.
Změněno#
- MCP:
assess_receiver_logpřijímá log jakotextnebobase64; vstup nástroje je omezen na 4 MiB. - Také graf rušení přebírá své barvy z palety.
src/jamming.rsbyl jediný modul, který revize palety Observatory nechala na vlastních barvách, zatímco přistávala práce na Q rušiček; jeho*.chart.svg(scénáře druhůjamming,maritime-strait-jamminga další druhyjamming) nyní čtesrc/palette.rsa seznam povolených vtests/palette_sync.rsje prázdný. Pouze barvy a písmo: grafyjamming-demoamaritime-strait-jammingjsou shodné se svými dříve zaznamenanými vykresleními, jakmile se normalizují barva,font-familya patička s verzí. Žádná vynesená hodnota se nepohnula. Zaznamenané kopie Studia podweb/studio/recorded/byly znovu zaznamenány při přeportování 0.33.0 a 0.34.0 (pouze razítko verze): stále nesou starý nátěr grafu rušení a paletový nátěr převezmou při příštím přeportování.
Opraveno#
- Mez 3 sigma souboru hodin nyní zahrnuje flicker floor a kontrola zdraví filtru ho vidí. S
flicker_floornesly skutečné hodiny flicker FM, ale dvoustavový filtr dodávající mez integrity ne, takže pokrytí 3 sigma u dodávaného scénářeclock-ensemblebylo 0,41 (klasické) a 0,33 (kvantové) a kontrola NIS/NEES, která si čerpala svou pravdu z modelu filtru, hlásila totožné hodnoty s podlahou i bez ní. Mez je nyní dvoustavový rozptyl plus přesný rozptyl flicker fáze nahromaděné od poslední synchronizace, počítaný ze stejné banky, kterou používají skutečné hodiny; kontrola NIS/NEES čerpá svou pravdu z rozšířeného modelu s touto bankou a spouští odpovídající rozšířený filtr (a dvoustavový filtr proti flicker pravdě hlásíconsistent = false). Změna výstupu, jen pro hodiny s nenulovýmflicker_floor:integritynaclock-ensemblepřechází z 0,40866 / 0,33026 na 0,99970 / 1,0 (klasické / kvantové) a NIS/NEESfilter_healthnyní zahrnují flicker; časová chyba,holdover_satiming_p95_nsjsou beze změny a scénáře bez podlahy jsou bajt po bajtu shodné.scenarios/orbit-gnss-challenged.toml(druh orbit, seed 7, podlahy 1e-16 / 2e-11) se také mění:fom.integrityklasické 0,7734 na 1,0 a kvantové 0,9796 na 1,0 a NIS/NEESfilter_healtha jejich pásma se mění. Jeho kvantovéfilter_health.consistentse překlápí ztruenafalse: je to výběrová událost souboru flicker o 16 seedech krát 60 krocích (NIS 0,8815 proti pásmu [0,9125, 1,0914]), nikoli vada. Pásmo je pásmem 95 %, takže zhruba 5 % seedů z konstrukce označí odpovídající filtr (40 nových seedů tohoto scénáře: kvantové 1 a klasické 2 označeno); při 64 krát 200 je tentýž seed uvnitř pásma pro obě hodiny (NIS 0,990 a 1,001). Známé navazující úkoly: druh fusion má stejnou mezeru (klasická integrita 0,80 s podlahou); druh hybrid zůstává nad 0,99.
[0.34.1] - 2026-10-10#
Zabezpečení#
- Zpřísněn vstup serveru MCP. Nástroje scénářů serveru MCP nyní přijímají pouze inline obsah a odmítají pole se zdrojem souboru; velikost vstupu je omezena. Poradní upozornění: GHSA-8wpf-hqg5-6xjr.
[0.34.0] - 2026-10-09#
Lab replay: sledovací engine, monitory detekce a spouštěč kampaní pro záznamy IQ z GNSS, s návrhy smyček, odhady C/N0 a skóre, které k nim patří. Třída důkazů: vše níže je MODELLED nebo kontrolováno na vnitřní konzistenci proti uzavřeným tvarům a simulaci se seedem; nic z toho nepřidává řádek VALIDATED a verifikační registr je beze změny (251 řádků: 124 ověřených, 123 modelovaných, 4 partnerské). Je to softwarová analytická vrstva: nic zde nesyntetizuje průběh rušičky ani spoofera a nic nevysílá.
Přidáno#
Lab replay: testovací podmínky, spouštěč kampaní a hodnocení (0.34.0).
kshana iq campaign <campaign.toml>přehrává záznamy × řetězce vstupní části × návrhy smyček (kshana.loop-design/1) a hodnotí každou buňku proti souboru testovacích podmínek pro každý záznam (kshana.test-conditions/1, TOML nebo JSON). Tento soubor uvádí, co laboratoř o záznamu ví: očekávané družice a pro každou událost její štítek typu, začátek a konec, dotčené družice a uvedený profil J/S nebo výkonu rušičky. Jsou to jen metadata. Skóre pro každou družici, pro celý běh i pro každou událost, jsou:- dostupnost, čas do ztráty zachycení a uvedené J/S při ztrátě;
- čas opětovného zachycení, od konce události a od ztráty;
- změřená degradace C/N0 pro každý interval uvedeného J/S;
- epizody falešného zachycení za hodinu zachycení (příznak trackeru, nebo Doppler proti pomocnému souboru pravdy);
- jitter diskriminátorů PLL a DLL.
Vedle každé změřené křivky degradace je nakreslena analytická reference spektrální separace (
jamming::effective_cn0_dbhzsQdaného typu) a všude, kde se objeví, je označena MODELLED.Buňky běží paralelně přes stavový automat zachycení sledovací relace a každá se zapisuje atomicky pod klíčem hashe obsahu. Klíč pokrývá SHA-256 záznamu, hashe podmínky, vstupní části, návrhu, běhu a hodnocení, požadovanou
data_class(synthetic|client-confidential) a verzi enginu. Je-li nastavenorun.epochs, uchovává se u každé buňky i její proudkshana.track-epoch/1a události zachycení, pojmenované podle klíče buňky a zahrnuté do hashe buňky.cell_keyareport::digestjsou veřejné, takže spotřebitel může odvodit každý klíč i digest znovu. Opakovaný běh proto přeskočí hotové buňky a výstupy nikdy nezávisejí na počtu pracovních vláken. Běh zapisujescorecard.csv/.json, samostatnýreport.htmlaDIGEST. Prahy splnění a nesplnění ([scoring.bars], přepsatelné pro každý záznam) se použijí při sestavení zprávy.[scoring] cn0_estimator = "m2m4" | "nwpr"(výchozí"m2m4", součást hashe hodnocení) vybírá C/N0, na kterém stojí hlášené C/N0 a křivka degradace. Oba odhady jsou vždy hodnoceny i hlášeny (mediány celého běhu i základu a pro každý interval J/S) a buňka i scorecard zaznamenávají odhadovač. NWPR čte nízko zhruba o 8 dB × Bn·T pod vlastním jitterem smyčky; M2M4 ne.
Také nové:
kshana iq campaign report <dir>znovu sestaví scorecardy, zprávu a digest z buněk;kshana iq conditions <file>zkontroluje soubor testovacích podmínek proti jeho schématu;events_from_sigmf = trueimportuje anotacekshana:test_eventzáznamu SigMF jako události;- Python získává
iq_test_conditions,iq_campaignaiq_campaign_report; kshana-mcpzískáváiq_campaign, které je inkrementální a obnovitelné pod rozpočtem vzorků na volání, s každým souborem omezeným na pracovní adresář, aiq_campaign_status.
Testy:
tests/iq_campaign.rsspouští syntetickou kampaň 3 záznamů × 2 vstupních částí × 2 návrhů. Jeho scény nesou uvedené profily C/N0 a pokrývá:- každou metriku zkontrolovanou proti vložené pravdě;
- obnovení po částečném běhu jednoho pracovního vlákna s poškozenou buňkou, bajt po bajtu shodné s nepřerušeným během čtyř pracovních vláken;
- soubory epoch pro každou buňku;
- regresi opětovného zachycení tří družic na 20 s: se zapnutým
reacquireje každý kanál zpět do 2 s po mezeře 2 s; výsledek s vypnutýmreacquireje připnut; - prahy znovu posouzené bez nového běhu;
- CLI;
- ignorované kontroly propustnosti a paměti v release režimu, včetně záznamu 4 GB (5,45× reálný čas, špičková paměť 2 MB nad výchozí RSS; měření na jednom stroji, nikoli prahy).
Pouze software: nic nevysílá a nesyntetizuje se žádný průběh rušení ani spoofingu. Návrhové a skutečné poznámky:
docs/design/LAB-CAMPAIGN.md.Sledovací engine pro lab replay (0.34.0: B3.1, B3.2, B3.3, B6.1).
Soubory návrhu smyček: TOML
kshana.loop-design/1(docs/design/LOOP-DESIGN-TOML.md; parseriq::track::design). Jeden nebo více pojmenovaných návrhů nastavuje každé pole smyčky:- druh nosné (PLL, FLL nebo PLL podporovaná FLL), řády a šířky pásma;
- diskriminátory PLL/FLL/DLL a pomoc nosné;
- rozestup a integrace;
- prahy zachycení a okna C/N0 a synchronizace bitů;
- stavový automat zachycení;
- předávací akvizice (
"auto"nebo explicitní).
Návrhy mohou jeden druhého
extends. Neznámé klíče se odmítají. Každý vyřešený návrh má hash SHA-256 nad kanonickým tvarem JSON (klíče seřazené na každé úrovni, pevné formátování čísel), takže hash nezávisí na pořadí polí; každý výstup jej zaznamenává. Povrchy:kshana iq track --design <file> [--design-name], kde explicitní příznaky přepisují návrh a jsou zaznamenány;kshana iq sweep --design <file>, které spouští každý návrh v souboru;- Python
iq_track(design=, design_name=, reacquire=),iq_loop_designs; - MCP
iq_trackdesign/design_name.
M2M4 C/N0 (
EpochOutput.cn0_m2m4_dbhz, sloupec epoch sledovánícn0_m2m4_dbhzzacn0_beaulieu_dbhz; slovníky epoch v Pythonu). Odhad z druhého a čtvrtého momentu přes stejná okna jako NWPR, jen z výkonu prompt: NWPR čte nízko pod vlastním jitterem nosné smyčky (zhruba 8 dB × Bn_PLL·T) a M2M4 ne. Na GPS L2C CM (20 ms, nominálně 40 dB-Hz, PLL 1 až 10 Hz) čte 39,93 dB-Hz při každé šířce pásma, zatímco NWPR klesá z 39,55 na 38,22; na L1 C/A při 45 dB-Hz čte 45,34. NWPR a každý další výstup jsou beze změny (připnutí bit po bitu). Binární záznam zůstává 184 bajtů (hodnota využívá rezervovaný float a bit příznaku 6).Další korelátorové odbočky (multikorelátor / SQM).
[design.integration] extra_taps_chips = [..](odsazení v chipech od prompt, kladné směrem early; nejvýše 16, každé v rozmezí ±2) koreluje další repliky vedle E/P/L a vrací je jakoEpochOutput.extra((offset, value)v pořadí návrhu). Smyčky je nikdy nepoužívají. Klíč se při prázdnosti z kanonického JSON vynechává, takže hash výchozího návrhu a každý výstup bez odboček jsou beze změny (kshana.track-epoch/1zůstává; CSV/JSONL/binární výstup bez odboček jsou bitově shodné). S odbočkami: sloupce CSV/JSONL a binární záznam o184 + 16 × tapsbajtech, jehož hlavička neseextra_taps_chips, takže starý čtenář soubor odmítne, místo aby jej špatně parsoval.--extra-taps(CLI),extra_taps(Python) aextra_taps_chips(MCPiq_track). Návrhy jednoho běhu se musí shodovat v odbočkách.Paralelní kanály (
iq track/iq sweep --threads <N|auto>; RustTrackSession::with_threads). Kanály každého bloku běží až na N vláknech (std::thread::scope;wasm32zůstává sériové). Korelace a stavový automat zachycení kanálu se dotýkají jen tohoto kanálu; jeho epochy a události se ukládají do vyrovnávací paměti a do výstupů se zapisují v pořadí kanálů, takže výstup (CSV, JSONL, binární, události, souhrn) je pro libovolné N bajt po bajtu shodný se sériovým během. Výchozí zůstává 1 vlákno. Změřeno na záznamu s 12 kanály, 4 s, 4,092 MHz na 4 jádrech: 19,5 s sériově, 11,5 s při 2 vláknech, 6,3 s při 4 (3,1×; počáteční akvizice je sériová).Export povrchu akvizice (
kshana.acq-surface/1;iq::acq_surface,docs/design/ACQ-SURFACE.md).iq acquire --surface <path>(jeden PRN; CSV, JSON nebo binární), Pythoniq_acq_surfacea MCPiq_acquiresurface_outzapisují celý povrch korelačního výkonu Doppler × fáze kódu, který hledání počítá (jeho buňky jsou buňkyacquire, bit po bitu), s vrcholem a dvěma jemnými zpřesněními Dopplera: parabolickým odhadem a jemným hledáním po 1/16 binu (≈5 Hz při 4 ms koherentně, proti binům 167 Hz).acquiresamo i každá výchozí hodnota jsou beze změny.Streamovaný výstup epoch (
kshana.track-epoch/1;iq::track::sink). Každá aktualizace smyčky nese:- korelátory early/prompt/late;
- všechny tři výstupy diskriminátorů;
- stavy NCO PLL/FLL/DLL a fázi nosné;
- PLI a příznaky zachycení;
- oba odhady C/N0 a bity;
- stav zachycení.
Zapisuje se průběžně, jako CSV, JSON Lines nebo verzovaná binární forma se čtečkami v Rustu (
BinaryEpochReader) a Pythonu (iq_read_epochs).iq trackzískává--epochs,--eventsa--summary(kshana.track-summary/1) aiq sweepzískává--epochsa--events. MCPiq_trackzískáváepochs_out/events_outa sestavuje svou odpověď ze souhrnu s omezenou pamětí.- Halda běhu už neroste s délkou záznamu:
tests/iq_track_memory.rsji měří počítajícím alokátorem (6× délka, stejná špička v rozmezí 64 KiB), s kontrolou ukazující, že cesta v paměti roste. - Streamovaný výstup je bitově shodný s přehráním v paměti.
Stavový automat zachycení (
iq::track::lock,TrackSession): pull-in → zachyceno → ztraceno → opětovné zachycení → pull-in, nebo vyřazeno, jakmile ztráta přetrvá déle nežreacq_window_s(výchozí 30 s). Neúspěšná hledání se opakují každýchreacq_interval_s(0,1 s), rovnoměrně rozložená, takže plán opakování přidá k naměřenému času opětovného zachycení nejvýše 0,1 s. Nepovinné prodlužování odstupu (reacq_max_interval_snadreacq_interval_s) je ve výchozím stavu vypnuto amax_reacq_attemptsje nepovinný strop (0, tedy žádný, ve výchozím stavu). Výpadek 2 s na třech PRN při 4,092 MS/s nyní končí tak, že je každý kanál znovu zachycen a zamčen. Při rozpočtu 3 pokusů byl každý kanál vyřazen do 0,2 s od ztráty.- Prahy (
loss_dwell_s,pull_in_max_s, Dopplerovo okno opětovného zachycení) pocházejí z návrhu. Každý přechod je událostí se svým důvodem. - Kontrola falešného zachycení hledá sledovaný Doppler proti jeho aliasu ±1/(2T) FLL/PLL. Zachytí falešné zachycení, které změřil PR #38 (−2400 Hz sledováno 500 Hz mimo). Se zapnutým opětovným zachycením kanál končí zamčený na vloženém Doppleru.
- Mezera signálu 0,8 s je prohlášena za ztrátu a znovu zachycena do 0,3 s po návratu signálu.
--summaryfinal_state(a sloupec tabulky) je stav po posledním přechodu, takže kanál vyřazený po poslední aktualizaci smyčky čteRETIRED.- Pomoc FLL jen během pull-in (
[design.carrier] fll_assist = "pull-in", výchozí;"always"ponechává dřívější chování bit po bitu). FLL předá řízení PLL, jakmile vyhlazené PLI drží na úrovnifll_off_pli(0,8) nebo nad ní po dobufll_gate_dwell_s(0,1 s), a vrací se podfll_on_pli(0,6). Ponechaná zapnutá, dráha FLL 10 Hz porušovala fázový zámek pod zhruba 38 dB-Hz na čistých signálech: při 35 dB-Hz byl podíl fázového zámku 10–16 % se skutečnou fázovou chybou 38–41°. S bránou drží výchozí nastavení 100 % při 35 dB-Hz s 4,5°, stejně jako samotná PLL. Pull-in z chyby předání 100 Hz je beze změny. Důkazy s předregistrovanými prahy:docs/design/evidence/carrier-lock/. Výchozí smyčky tedy nejsou bit po bitu shodné s dřívějšími běhy výchozího návrhu. K jejich reprodukci použijtefll_assist = "always". Známé omezení: při 35 dB-Hz nastává předání 1,9–2,6 s po začátku sledování a při 33 dB-Hz FLL 10 Hz drží PLI pod prahem předání, takže se pull-in nikdy nedokončí. - Nové klíče návrhu smyček a API, vypsané:
[design.carrier]:fll_assist,fll_off_pli,fll_on_pli,fll_gate_dwell_s;[design.lock]:reacq_window_s,reacq_interval_s,reacq_max_interval_s, přičemžmax_reacq_attemptsse změnilo z výchozích 3 na nepovinný strop (výchozí 0);- Rust:
LoopConfig.fll_assist(FllAssist,FllGate),LoopCore::set_fll_enabled,EpochOutput.fll_active,ChannelSummary.final_state.
- Hash návrhu je nad kanonickým tvarem JSON a hash vestavěného výchozího je
33261cd171a53803a6c262686e878e01f37d902a93d5918c20a44297b8ef8e80(připnuto testem). - Poznámky ke kompatibilitě výstupu:
- tabulka
iq trackmá na konci sloupecfinal_state; - CSV
iq sweepmá na konci sloupecdesign_hasha jeho JSON mádesign_hashawarnings; mean_cn0_dbhzsweepu je nyní průměrem přes každou aktualizaci, která má odhad NWPR (souhrn s omezenou pamětí), nikoli už přes druhou polovinu běhu.
- tabulka
- Opětovné zachycení je ve vestavěném výchozím nastavení vypnuto, kde stavový automat jen pozoruje a smyčky běží bit po bitu stejně jako bez něj. (Samotné výchozí smyčky se ale změnily: viz pomoc FLL výše.) Zapněte jej pro každý návrh (
[design.lock] reacquire = true), pomocí--reacquirenebo pomocíreacquire=True. - Varování
commensurate_sampling: když je fs v rozmezí 1e-6 násobku poloviny čipové rychlosti (iq::track::commensurate_samples_per_chip), varujíiq track/iq sweep(výstup,--summary, JSON sweepu), odpověď MCPiq_tracka výsledek Pythonuiq_track, že jitter a zkreslení smyčky kódu nejsou reprezentativní. Příčina je zdokumentována s předregistrovanými prahy vdocs/design/evidence/dll-jitter/. Přesně při 2 vzorcích na čip s rozestupem 0,5 čipu je S-křivka DLL jediným schodem a smyčka kmitá: ≈ 0,09 čipu RMS chyby kódu (≈ 26 m) při 45 dB-Hz, proti ≈ 0,004 čipu při nesouměřitelné rychlosti. Zhruba 2 dB nízké C/N0 NWPR při této rychlosti má stejnou příčinu. Přesně při 0 Hz Dopplera kódu a 4 vzorcích na čip kód nikdy nepřekročí mrtvou zónu ±0,21 čipu, takže zkreslení fáze kódu až zhruba 0,2 čipu může přetrvávat, aniž by se projevilo v jitteru (změřeno: rozestup 0,5 čipu dává 2,0× chybu kódu kontroly se střední hodnotou +0,011 čipu; rozestup 0,25 čipu dává +0,125 čipu); varování pokrývá tuto rychlost. - Známé omezení: výchozí návrh nepředává FLL→PLL pod zhruba 35 dB-Hz (podlaha pull-in ~35 dB-Hz; viz pomoc FLL výše a
docs/design/evidence/carrier-lock/). - Hledání falešného zachycení nebo opětovného zachycení, které nelze spustit (rychlost bez celého počtu vzorků na periodu kódu), už nezastaví sledování.
- Testy:
tests/iq_track_engine.rs,tests/iq_cli.rs,iq::track::design::tests,tests/pythona kolo tam a zpět MCP IQ.
- Prahy (
Profily C/N0 v syntetických scénách (0.34.0).
iq::channel::cn0_profileplánuje časově proměnné C/N0 pro každou družici ve scénách samotné Kshana, jako odsazení v dB vzhledem k C/N0 scény. Tvary: skok, rampa, po částech lineární a scintilaci podobné Riceovy úniky se seedem s uvedeným S4 a dobou dekorelace. Použijí se přes existující háček kanálu scény (Cn0ProfileChannel, skládají se s efekty ionosféry, troposféry, scintilace a vícecestného šíření), beze změny jádra scény.cn0_dbhzpomocného souboru pravdy sleduje profil.- Povrchy:
kshana iq scene … --cn0-profile <toml>akshana.iq_scene(…, cn0_profile="<toml>"). - K čemu slouží: smyčky, monitory a hodnocení kampaní lze zátěžově testovat proti známé pravdě. Mění jen sílu legitimních signálů.
- Kontroly (
tests/iq_cn0_profile.rs). Prahy: střední intenzita úniku v rozmezí 5 % od 1, S4 v rozmezí 8 % od cíle (při S4 = 0,3, 0,7 a 1), korelace intenzity nad 0,9 při 0,05 τ a pod 0,05 při 5 τ; pravda přesně uvedené C/N0 plus profil; sledovaný pokles C/N0 NWPR v rozmezí 0,7 dB od skoku 6 dB. Změřeno: S4 v rozmezí 1,3 % od cíle a sledovaný pokles 6,26 dB.
- Povrchy:
Monitory detekce na cestě IQ (0.34.0 „Lab replay“). Nový modul
iq::monitor, příkazkshana iq monitora vazbakshana.iq_monitor(path, ...). Pozorují záznam a hlásí časové řady a označené události (čas začátku, poplachu a konce, špička, práh). Pouze detekují a měří; nic zde nevytváří signál.- Celkový výkon / AGC: výkon bloku a zisk, který by použilo ideální AGC; označuje nárůsty a poklesy.
- Spektrum před korelací: Welchovo PSD pro každý blok proti naučenému základu. Práh přebytku pochází z cíle falešných poplachů. Také komplexní špičatost a detektor pulsů. Detektor pulsů počítá vzorky nad prahem v každém bloku a vyvolá událost, když je přesný binomický horní chvost tohoto počtu pod
pulse_pfa(výchozí 1e-4 na blok), nikoli když z-skóre překročí limit: při malých očekávaných počtech u krátkých bloků je jediný vzorek už několik sigma. - C/N0 pro každý kanál: dva jednostranné detektory změn CUSUM (pokles a nárůst), napájené nezávislými odhady (krok je nastaven z okna C/N0 smyčky).
- SQM z korelátorů: delta
(I_E − I_L)/I_Pa poměr(I_E + I_L)/(2 I_P), plus testy asymetrie z dalších korelátorů, když je kanál dodává. - Řady indikátorů zachycení: PLI a indikátor frekvenčního zachycení z po sobě jdoucích prompt, jako surové signály. Rozhodnutí o zachycení a ztrátě zachycení zůstávají na stavovém automatu zachycení sledovacího enginu.
Jeden streamovaný průchod (
iq::monitor::run::run_monitors) spustí vše, se souborem nastavení TOML/JSON (MonitorConfig); spouštěč kampaní používá stejný vstupní bod. Vše MODELLED. Každá statistika je kontrolována proti svému uzavřenému tvaru simulací se seedem (tests/iq_monitor.rs):- překročení výkonu bloku proti chvostu Gamma;
- střední špičatost 2 a rozptyl
2/√N; - podíl pulsů
e^{−t}; - délky běhů CUSUM proti Siegmundově aproximaci (změřeno 330 a 8,46 vzorků proti 338 a 8,34);
- indikátor fázového zachycení proti střední hodnotě Riceovy fáze;
- na sledovaném signálu C/A se delta a poměr SQM rozptylují zhruba 6 % od uzavřených tvarů prvního řádu (změřeno 5,97 %; práh testu 12 %).
Vzorec falešných poplachů spektrálního přebytku je aproximace; změřená míra byla 1,3× vzorec. Od začátku do konce monitory označí:
- skok C/N0 o 6 dB (čas změny v rámci jednoho odhadu);
- odraženou cestu objevující se uprostřed záznamu (test poměru);
- výpadek signálu (PLI klesne z 0,999 na −0,3 a FLI z 0,93 na 0,03 během něj);
- úzkopásmový tón a řídké vzorky s vysokou amplitudou (spektrální testy, testy pulsů a špičatosti). Jsou to obecné testovací vstupy DSP, nikoli modely interference.
Změněno#
iq track/iq sweepstreamují přes novou relaci (viz Přidáno).--csvsi ponechává své sloupce 0,32, ale nyní se streamuje, takže se řádky několika kanálů prokládají v časovém pořadí místo seskupení podle kanálu.--jsonsi ponechává svůj tvar 0,32 a stále drží každou epochu v paměti: pro dlouhé záznamy použijte--epochs.iq sweepměří jitter přes aktualizace v druhé polovině doby běhu (dříve druhá polovina počtu aktualizací) a jeho CSV/JSON získávají sloupecdesign_hash.- Tabulka stop získává sloupec
final_state. - Text nápovědy už netvrdí, že
iq trackpřijímá příznaky vstupní části (front-end); používá je pouzeiq acquire. - Parametry
acq_noncoherentadoppler_maxv Pythonu uiq_trackmají nyní výchozí hodnotuNone(hodnoty z návrhu, ve vestavěném návrhu 1 a 5000 Hz). Jeho epochy získávají korelátory early/late,carrier_phase_cycles,bit_edge,bitastatea výsledek získávádesignaevents.
Opraveno#
Výchozí krok akvizice už nepředává sledování Galileo E1 zbytek, který FLL nedokáže zachytit. Krok
2 / (3 · N · T_code)zanechává při předání až1 / (3 · N · T_code)chyby Dopplerova posunu, ale výchozí dvoukvadrantová FLL zachytí jen1 / (4 T_track). U každého kódu s délkou 4 ms nebo delší (N = 1), včetně Galileo E1-B a E1-C, ležel zbytek (83,3 Hz při 4 ms) mimo zachytávací rozsah 62,5 Hz a sledování se falešně zachytilo na +125 Hz, přičemž indikátor fázového zachycení 0,97 to skrýval. Výchozí krok je nyní navíc omezen na0.2 / T_track(kshana::iq::acq::default_step_hz), tedy 0,8 zachytávacího rozsahu, takže předání zůstane uvnitř rozsahu, i když zvítězí sousední přihrádka. (Nejprve se zkusilo 0,4: při E1-B se falešně zachytil 1 běh ze 42 a koherentní hledání GPS L1 C/A s 1 ms vybralo přihrádku vzdálenou 350 Hz a zachytilo se na +500 Hz; hodnoty 0,25 a 0,2 ve stejných bězích žádné neměly.) Cena: Galileo E1-B/E1-C přecházejí z přihrádek po 166,7 Hz na přihrádky po 50 Hz, tedy 201 přihrádek v rozsahu ±5 kHz místo 61; kódy s 1 ms (166,7 Hz,N = 4) se nemění."auto"v návrhu smyčky znamená právě toto; explicitnídoppler_step_hznebo--doppler-stepse použije tak, jak je zadáno, aiq acquire(bez předání sledování) zachovává učebnicový krok. Hlavička epochy a--summarynyní zaznamenávají vyřešený krok a šířky pásma smyček pro každý kanál (resolved). Výchozí hash návrhu se nemění. Změna výstupu: detekce u kódů s délkou 4 ms a delší mohou dopadnout do jiných Dopplerových přihrádek.GPS L2C CM (aktualizace smyčky po 20 ms) s výchozím návrhem drží zachycení. Výchozí PLL 15 Hz a FLL 10 Hz mají
Bn · T0,3 a 0,2 při T = 20 ms a smyčka ztratila zachycení i při dokonalém startu (PLI −0,08, M2M4 15,8 dB-Hz). Nový klíč návrhucarrier.bn_t_max(výchozí 0,1) omezuje šířky pásma šumu PLL a FLL nabn_t_max / T, je-li doba aktualizace smyčky delší než 4 ms (Design::loop_config_for): 5 Hz a 5 Hz při 20 ms, 10 Hz a 10 Hz při 10 ms u BeiDou B1C; kódy s 1 ms a 4 ms si ponechávají 15 a 10 Hz. Platí i pro explicitně zadané šířky pásma;bn_t_max = 0to vypíná. Klíč se při výchozí hodnotě z kanonického tvaru vynechává, takže výchozí hash se nemění; návrh, který nastaví jinou hodnotu, má jiný hash. Při 45 dB-Hz dává L2C CM nyní PLI 0,996, chybu Dopplerova posunu 0,00 Hz a M2M4 42,71 dB-Hz. Známá otevřená položka: NWPR C/N0 tam vychází o 1,76 dB nízko (a o 2,45 dB nízko u B1C při 10 ms), takže T5 matice pro L2C zůstává ignorovaným zjištěním.Soubor
docs/assets/clock-ensemble-band.svgbyl znovu vygenerován: uložený obrázek byl zastaralý vůči vlastnímu scénáři (změna dat, nikoli přebarvení). Graf byl nakreslen 2026-06-02 ze souboruscenarios/clock-ensemble.toml; o dva dny později 67fed19e nastavil v tomto scénáři úrovně flicker-FM (kvantovéflicker_floor = 1e-16, CSACflicker_floor = 2e-11) a obrázek už nikdo nepřekreslil. Ukazoval běh před nastavením úrovní: osa y 0 až 47 ns, p95 výpadku CSAC na jeden běh 10,5 až 47,6 ns (průměr 25,2 ns), klasický holdover průměrně 4050 s. Scénář tak, jak je dodáván (a jak již uvádějí tutoriál a shrnutí CLI), dává osu y 0 až 407 ns, p95 CSAC na jeden běh 40,8 až 374,0 ns (průměr 167,0 ns), klasický holdover 844 s [220 až 2130 s]; specifikační čára 20 ns leží na stejných 20 ns na zhruba devětkrát vyšší ose. Engine se nemění: dnešní engine na červnovém souboru scénáře reprodukuje osu starého obrázku přesně. Obrázek není odkazován z README ani z dokumentace.
Známá omezení#
- NWPR C/N0 vychází nízko při vysokém C/N0·T na jeden prompt a BOC(1 1) při 5 MS/s ztrácí asi 1 dB. NWPR je na ideálních promptech nezkreslený, ale vlastní fázový jitter PLL smyčky stojí zhruba proloženě 8 dB × Bn·T (jedna scéna, čtyři body: −0,24/−0,44/−0,77/−1,58 dB při 1/2,5/5/10 Hz a 20 ms; asi −1 dB při výchozím
bn_t_max = 0.1); M2M4 je necitlivý. Data BeiDou B1C při 5 MS/s také ztrácejí asi 1 dB výkonu promptu kvůli omezení pásma (použijte 10 MS/s nebo více). Ani jedno není vadou estimátoru; řádky T5 signálové matice pro GPS L2C a BeiDou B1C zůstávají ignorovanými zjištěními s těmito příčinami.
[0.33.1] - 2026-10-08#
Zabezpečení#
- Zpřísněn text grafů a přejímání grafů ve Studiu. Text, který scénář přenáší do vygenerovaného grafu, je nyní jednotně escapován jednou sdílenou rutinou a Studio přejímá z grafu pouze značky kresby. Adresní parametry Studia, vyhledávání podle druhu a načítání scénářů jsou omezeny na známé hodnoty. Přibalené grafy, zaznamenané výsledky a zveřejněná čísla se nemění. Aktualizace se doporučuje všem, kdo ve Studiu otevírají soubory scénářů z nedůvěryhodných zdrojů nebo vkládají vygenerované grafy do webových stránek. Bezpečnostní upozornění: GHSA-h25h-cg9f-v2cg.
[0.33.0] - 2026-10-08#
Dokumentace#
- Rozsah vrstvy IQ z hlediska interference a spoofingu, uvedený přesně. Záznamy 0.31.0 a 0.32.0 níže uvádějí, že vrstva IQ nepřidává „žádnou syntézu signálu interference ani spoofingu“. To platí o samotné vrstvě IQ (
iq::scenegeneruje pouze legitimní signály GNSS), ale znělo to jako tvrzení o celém enginu, což není pravda: od 0.29.0 sekce[iq]druhuspectrumzapisuje snímek SigMF svého analytického modelu s nakonfigurovanými rušiči (šumové rušiče po přihrádkách, tóny a chirpy jako průběhy) aspoof_capturesčítá v paměti repliku autentického signálu a repliku signálu spoofera, aby otestoval zachycení smyčky (složený signál se nikdy nezapisuje). Engine navíc od 0.20.0 obsahuje softwarový přijímač GNSS (sdr: akvizice a sledování; od 0.31.0 takéiq::acqaiq::track). Nic v Kshaně nevysílá ani neřídí rádiový hardware. Stavový řádek README,docs/POSITIONING.md,docs/SPECTRUM.mda poznámky k návrhu IQ to nyní uvádějí; již vydané záznamy zůstávají tak, jak byly zveřejněny. Chování se nemění. - Známé omezení: souměřitelné vzorkování. Při vzorkovací frekvenci, která je celým nebo poloceločíselným násobkem čipové frekvence, leží vzorky v každém čipu na stejných fázích čipu a diskriminátor kódu se stává schodištěm. Na syntetickém signálu GPS L1 C/A při 45 dB-Hz s rozestupem 0,5 čipu dává 2,046 MHz (2 vzorky na čip) chybu kódu ≈ 0,09 čipu (≈ 26 m) RMS a odchylku −0,09 čipu, oproti ≈ 0,003 čipu při nesouměřitelné frekvenci. NWPR C/N0 tam vychází o ≈ 2,4 dB nízko. Při 4,092 MHz závisí na rozestupu a kódovém Dopplerově posunu. Při 0,5 čipu je neškodná při Dopplerově posunu 1500 Hz, ale 2× s odchylkou 0,011 čipu při 0 Hz a při 0,25 nebo 0,1 čipu je chyba kódu 8–10×. Sledování nosné není ovlivněno. Měření obsahuje
docs/design/iq-notes/receiver.md.
Přidáno#
Vrstva GNSS IQ na serveru MCP (fáze B.1).
kshana-mcpzískává šest nástrojů, které z agenta řídí vrstvukshana iq:iq_signals(přijímané názvy signálů a nastavení IQ),iq_info(popis nahrávky),iq_scene(generování scény se zadaným profilem nebo s vysílanými efemeridami, s volitelným kanálem na úrovni signálu),iq_acquire(FFT akvizice, volitelně za stupni front-endu),iq_track(akvizice a poté banka DLL/PLL/FLL) aiq_frontend(pásmová propust, notch, blanking, excize, AGC, kvantizér). Vzorky IQ protokolem nikdy neprocházejí: každý nástroj bere cesty k souborům uvnitř jednoho pracovního adresáře nastaveného proměnnouKSHANA_MCP_IQ_DIR(nenastavená vypíná nástroje pro soubory IQ a ostatní nástroje neovlivní), odmítá cesty, které se rozloží mimo něj, a výstupy, které již existují, pokud není nastavenooverwrite, před jakoukoli prací vynucuje rozpočet vzorků na jedno volání (KSHANA_MCP_IQ_MAX_SAMPLES, výchozí 50 000 000), odmítá neznámé argumenty a odpovídá kompaktním shrnutím JSON (detekce, C/N0, stav zachycení a každý zapsaný soubor s počtem bajtů). Výstup po epochách jde pouze do souborů, které volající pojmenuje. Nástroje spouštějí stejnou cestu kódu jako CLI přes nové veřejné rozhraníkshana::iq::cli::execute, které vrací zprávu CLI místo jejího tisku (stdout je kanál JSON-RPC MCP);iq::cli::build_codeaiq::cli::signal_namesjsou nyní také veřejné. Pouze software a pouze přírůstkově: vrstva IQ nepřidává syntézu interference ani spoofera, nic se nikdy nevysílá a nejsou žádné nové závislosti.server.jsondeklaruje obě proměnné prostředí. Testy round-trip vmcp/kshana-mcp/tests/iq_round_trip.rsgenerují krátkou scénu se dvěma satelity a kontrolují akvizici proti vlastnímu souboru pravdy scény, zachycení sledování a C/N0, front-end, výstup SigMF, rozpočet, omezení cest a vypnutý stav.Vrstva GNSS IQ v registru validace. Předregistrovaná křížová kontrola proti gps-sdr-sim (nezávislému generátoru základního pásma GPS L1 C/A, MIT, commit 28ca29a6) je nyní součástí vždy zapnuté sady testů (
tests/iq_gpssdrsim_cross_generator.rs). Její uložený referenční výstup (tests/fixtures/iq_gpssdrsim_cross_generator/: 20 ms vlastního 8bitového I/Q z gps-sdr-sim, jeho výpis kanálů a stav kanálů za ním z pomocného programu sestaveného ze stejného buildu) se znovu generuje skriptemscripts/gen_iq_gpssdrsim_ref.sh. Při testu není potřeba síť ani externí nástroj. Přidány jsou dva řádky registru (251 řádků: 124 ověřených, 123 modelovaných, 4 partnerské):- Geometrie signálu scény GNSS IQ proti nezávislému generátoru základního pásma: Ověřeno. Pravda scény (viditelná množina, pseudovzdálenost, fáze kódu, Dopplerův posun, úhly pohledu) pro scénu s vysílanými efemeridami odpovídá stavu kanálů gps-sdr-sim na všech 11 kanálech: nejhorší 1,6 mm, 5.5e-6 čipu, 7.4e-5 Hz, 4e-9 stupně, proti prahům 0,05 m, 2e-4 čipu, 0,02 Hz a 1e-4 stupně stanoveným před během.
- Akvizice GNSS IQ na nezávisle generovaných vzorcích I/Q: Modelováno, se zjištěním.
iq::acqnajde každý simulovaný satelit ve vzorcích gps-sdr-sim v rámci registrovaných prahů (fáze kódu do 0,195 čipu, Dopplerův posun do 72 Hz). Registrovaný práh „žádný jiný PRN nebyl detekován“ však selhává: na výstupu gps-sdr-sim bez šumu je práh pro gaussovský šum překročen křížovou korelací ostatních satelitů u všech 21 nepřítomných PRN. Přísný test je zachován, ignorován se zjištěním, a připnutý test je zaznamenává. Žádný kód enginu ani veřejné API se nemění. Vzorky I/Q se neporovnávají vzorek po vzorku: celočíselná sinová tabulka gps-sdr-sim, zisky, nulová počáteční fáze nosné a zkrácená pole LNAV nejsou veličiny, na kterých se musí přijímač shodnout. Porovnání se provádí na pozorovatelných veličinách, které přijímač měří.
Změněno#
iq trackpředává z akvizice o délce ≈4 ms ve výchozím nastavení (změna chování). Akvizice, která inicializuje každý kanál sledování, nyní koherentně integrujeceil(4 ms / T_code)period kódu místo jedné, kdeT_codeje celá perioda kódu (primární krát délka sekundárního u vrstveného kódu, jednotka, přes kterou akvizice integruje). Nevrstvené kódy s 1 ms (GPS L1 C/A, BeiDou B1I, GLONASS L1OF) nyní prohledávají 4 periody (4 ms), takže výchozí Dopplerův krok2 / (3 · N · T_code)je ~167 Hz místo ~667 Hz. Každý kód, jehož celá perioda je již 4 ms nebo delší, si ponechává 1 periodu: Galileo E1-B (4 ms), BeiDou B1C (10 ms) a vrstvené GPS L5-I/L5-Q, Galileo E5a-I/E5a-Q a E1-C (10 až 100 ms s jejich překryvnými kódy) a GPS L2C. Každý signál tedy integruje alespoň ~4 ms. Hledání s jednou periodou mohlo kanál předat až ~333 Hz vedle, mimo zachytávací rozsah FLL, a ten pak sledoval falešné zachycení ~500 Hz daleko, přičemž hlásil čisté sledování. Na seedovaném průchodu 180 kanálů GPS L1 C/A (Dopplerův posun v rozsahu ±5 kHz, 38 až 47 dB-Hz, polovina s navigačními daty;docs/design/evidence/iq-track-acq-default/, lze znovu spustit) klesají falešná zachycení z 27 ze 180 na 1 ze 180 a zmeškané akvizice ze 102 na 11, za cenu ~40 ms hledání navíc na PRN u GPS L1 (11 → 52 ms). Jediné zbývající falešné zachycení je při 38 dB-Hz, 36 Hz vedle. Všechna rozhraní se shodují:kshana iq trackakshana iq sweep(--acq-coherent), Pythonkshana.iq_track(acq_coherent=Noneje nyní automatické; stub aktualizován) a nástroj MCPiq_track. Uživatelé, kteří se spoléhali na staré výchozí chování, mohou předatacq_coherent=1(--acq-coherent 1). Vlastní výchozí hodnota--coherentukshana iq acquirezůstává 1. Nové veřejnéiq::acq::auto_coherent_periodsaiq::acq::AUTO_COHERENT_S; regresní testtests/iq_cli.rs::track_default_handoff_does_not_false_lock_where_one_period_did.- Každá generovaná grafika nyní sleduje téma Observatory webu: bajty každého grafu se mění. Jde o záměrnou revizi zveřejněných obrázků, pouze barev a písem; žádná vynesená hodnota, souřadnice ani popisek se nepohnuly.
*.chart.svgkaždého scénáře (a tedy exporty grafů Studia a ukázkové grafy v README), HTML zpráva o běhu (*.report.html), animace časové osy (--animate), HTML stránky výsledků scénářů a studií, shrnutí validace a obrázky a diagramy v dokumentaci používaly teplou tmavou červencovou paletu (základ#0c0b08, zlatá#e0bd84) a teplé papírové téma zpráv. Nyní přebírají každou barvu a písmo z jednoho modulu,src/palette.rs, který zrcadlíweb/theme.css: grafy jsou kresleny přístrojově tmavě na základu Observatory (#060A14) v sadě písem Geist; zpráva, přehrávač animací a stránky výsledků sledují světlou či tmavou preferenci prohlížeče se světlými a tmavými tokeny Observatory. Šest domén selhání si ponechává každá jednu barvu (interference korálová, spoofing purpurová, časování modrá, oběžné dráhy azurová, integrita limetková, navigace jantarová) a úrovně důkazů se čtou ověřeno limetkově, modelováno jantarově, partner purpurově. Rampy vodopádů si zachovávají své percepční (inferno) uspořádání, znovu ukotvené na novém základu.tests/palette_sync.rsdrží modul naweb/theme.cssv obou tématech, kontroluje, žedocs/assets/palette.jsonadocs/diagrams/mermaid-config.json(oba generované z modulu pro nástroje obrázků v Pythonu a mermaid-cli) jsou aktuální, a selže, objeví-li se vsrc/mimo paletu šestnáctkový barevný literál.tests/published_figures_still_reproduce.rszískává třetí diagnózu, „pohnuly se jen barvy a písma“, aby se revize palety odlišila od posunuté vynesené hodnoty. Každý znovu vykreslený graf v README byl ověřen jako shodný se svým předchůdcem po tomto normalizátoru.tools/gen_validation_figures.pyčte paletu a nyní také generuje tři výsledkové obrázky README, které neměly uložený generátor (domain-coverage-map,scenario-fom,sgp4-regime-bars), se skutečnými textovými prvky, zweb/capabilities.json, výsledkuclock-holdoveratests/fixtures/sgp4_comparison.md.tools/gen_readme_assets.pyčte stejnou paletu, čímž opravuje svůj posun světlého tématu oproti webu. Hodnotysgp4-regime-barsjsou sloupcem nejhoršího případukshana↔refv tomto fixture (7.31e-9, 8.05e-9, 8.18e-9 a 4.12e-6 km), beze změny oproti obrázku z Matplotlibu, atests/figures_doc_sync.rsnyní selže, pokud se uložený obrázek a fixture neshodují.
- Soubor
docs/assets/figures/domain-coverage-mapaktualizován na aktuální data (změna dat, nikoli přebarvení). Obrázek uváděl 28 schopností ve 8 doménách (11 ověřených, 17 modelovaných), zastaralé vůči vlastnímu uvedenému zdroji; nyní nakreslen novým generátorem zweb/capabilities.jsonuvádí 46 schopností v 8 doménách (17 ověřených, 29 modelovaných).
Opraveno#
Q rušiče CW/úzkopásmového je nyní 1,0, nikoli 1,5. Učebnicová hodnota pro tón na nosné je 1 (tón zachovává spektrální vrchol signálu,
κ = T_c,Q = 1/(R_c κ)); dřívější 1,5 způsobovala, že tón škodil méně než širokopásmový šum při stejném J/S. Změna výstupu: asi −1,8 dB efektivního C/N0 při rušičích CW/úzkopásmových při vysokém J/S v druzíchjamming,lunar-jamminga interop (tón přibaleného příkladuspectrum: 17,98 dB-Hz z tabulky, dříve 19,74). Q širokopásmového zůstává 1,0 (konzervativní, asi o 3 dB pod učebnicovými ~2) do revize 0,34. Nastavteq_override, chcete-li zachovat staré 1,5.Celočíselný výstup
kshana iq scenevyužívá celočíselný rozsah. Při šumu s jednotkovým výkonem a měřítku zapisovače 1 vycházely scényci8/ci16zhruba jako {-1, 0, 1} a 2bitové scény měly prahy při 2,8 sigma. Celočíselné formáty se nyní škálují tak, aby očekávané RMS na složku bylo čtvrtinou plného rozsahu (31,75 LSB u ci8, 8191,75 u ci16) nebo 2 LSB u 2 bitů. Měřítko a počet oříznutých prvků se vypisují a zapisují do doprovodného souboru. Výstup v pohyblivé řádce je beze změny.Osm fixture pinů v sedmi testovacích souborech už na macOS nepadá kvůli rozdílům v posledním bitu (část issue #36). Piny, které kontrolují, že engine stále sestaví uložené vstupy orákula (Jacobiány, tabulku stavů, azimuty startu), se porovnávaly bit po bitu a na macOS arm64 padaly o 2 až několik tisíc jednotek v posledním místě. Nyní se porovnávají v rámci 1e-12 měřítka převzatého z fixture; celá čísla, klíče a délky se stále porovnávají přesně a mutační test ukazuje, že relativní změna 1e-6 stále selže. Pin azimutu startu porovnává
sin aza větev vzestupná/sestupná místo samotného azimutu, protožeasinzesiluje jednu ulp svého argumentu na asi 3e-9 rad tam, kde se sklon rovná kodélce místa. Žádná tolerance orákula ani předregistrovaný práh se nezměnily. Dva testy (lunární společné OD, lunární pozorovatelnost) nejsou pokryty: na macOS se samy jejich předregistrovaná porovnání pohybují a to je ponecháno na navazující práci.kshana iq trackakshana iq sweepuplatňují příznaky front-endu. Text nápovědy uváděl--bandpass/--notch/--blank/--excise/--agc/--bitsutrack, aletrackasweepřetězec nikdy nesestavily: příznaky se tiše ignorovaly a příznak bez hodnoty, například--notch, pohltil příznak za sebou. Oba příkazy je nyní parsují stejně jakoiq acquirea před průchod akvizice a průchod sledování předřadí nový řetězec front-endu. Výstup se rovná spuštění příkazu na souboru, který pro stejné příznaky zapíšeiq frontend.Data scény IQ se umísťují podle jednotlivých signálů.
kshana iq scene --data(aNavData::Seeded) vkládají bity 50 bit/s do každého signálu, včetně pilotních, a na Galileu a BeiDou rychlostí GPS LNAV. Data nyní sledují vlastní časování symbolů každého signálu, které udává novéSpreadingCode::data_modulation()(DataModulation, nastavované každým konstruktorem viq::signals). Je to 10 ms u L5-I5, 4 ms u E1-B, 2 ms u BeiDou B1I GEO (D2) a bity 20 ms s meandrem 10 ms u GLONASS L1OF. Data jsou odmítnuta na pilotech, na GPS L2C jako jediném proudu CM/CL aNavData::Lnavna čemkoli jiném než L1 C/A. Vlastní kódy ve výchozím nastavení zachovávají dřívější časování 20 ms. ProgramovýScene, který požádal oNavData::Lnavna kódu jiném než L1 C/A nebo oNavData::Seededna pilotu, se dříve generoval mlčky a nyní vrací chybu při prvním čtení.Kanály GLONASS L1OF se akvirují a sledují na vlastní nosné FDMA.
iq::acq::acquirea kanály sledování směšovaly každý kód dolů jen odif_hz. V nahrávce GLONASS s více kanály proto hledání kanálu +3 našlo signál kanálu 0 (všechny kanály sdílejí jeden měřicí kód) a nikdy se nepodívalo o 1,6875 MHz výše. Obojí nyní používáSampleSpec::baseband_hz(carrier) = if_hz + (carrier − center_hz). Člen nosné je nulový pro každou nahrávku vystředěnou na vlastní nosnou signálu a je vynechán, není-li střed znám, takže zpracování CDMA se nemění. Pokud jste staré chování obcházeli zahrnutímcarrier − centerdoif_hzv doprovodném souboru, tento člen odstraňte: posun se nyní uplatňuje z nosné a středu, takže jeho ponechání ho uplatní dvakrát. Známé omezení, zde beze změny: scéna GLONASS identifikuje každý satelit podle jeho frekvenčního kanáluka id satelituu32záporný kanál zalamuje. Soubor pravdy zapisujek = -7jakosat_id4294967289 (k + 2^32). Čtěte jej zpět jakoks přetypováním nai32.
[0.32.0] - 2026-10-05#
Přidáno#
- Vrstva GNSS IQ v CLI a Pythonu (0.32.0 fáze A). Existující modul
iqje nyní použitelný bez psaní Rustu. Pět nových příkazůkshana iqse přidává do skupiny zpracování dat:scenegeneruje dlouhou vícesatelitní scénu IQ do souboru s doprovodným souborem pravdy;acquireprovádí FFT akvizici jednoho či více PRN nad nahrávkou a hlásí každou detekci (PRN, Dopplerův posun, fáze kódu, statistika, práh);trackakviruje a poté spouští banku DLL/PLL/FLL nad nahrávkou a vydává výstup sledování po epochách (CSV/JSON) s konfigurovatelnými šířkami pásma smyček, integrační dobou a rozestupem korelátorů;sweeppřehraje jednu nahrávku přes několik návrhů smyček a hlásí výsledné metriky jitteru a zachycení pro každý návrh; alabfitfituje model ztráty zachycení sledovací smyčky na časovou osu důvěry v přijímač. Stejné jádro je zpřístupněno Pythonu (kshana.iq_scene,iq_acquire,iq_track,iq_labfit,iq_signals) a vrací seznamy a slovníky přívětivé k NumPy. Pouze software a pouze přírůstkově: žádné nové závislosti, žádné vysílání, žádná syntéza signálu interference ani spoofingu; engine, akvizice, sledování a návrhy smyček jsou vlastní crate, takže volající z CLI či Pythonu dostane stejné bity jako testy v Rustu. Nový moduliq::cli; vlastní soubor pravdy scény je nezávislým orákulem vtests/iq_cli.rs(akvizice obnoví každou vloženou fázi kódu a Dopplerův posun, sledování konverguje k vloženému Dopplerovu posunu). Žádný zveřejněný počet druhů scénářů ani řádek verifikační matice se nemění. - Zbývající schopnosti knihovny GNSS IQ v CLI
iqa Pythonu (0.32.0 fáze A.2). Navazuje na fázi A a zpřístupňuje zbytek vrstvyiqbez psaní Rustu:- Propagační kanál na
iq scene(a v Pythonuiq_scene): ionosféra prvního řádu (--iono-stec/--iono-vtecnebo--iono-klobuchar), troposféra Saastamoinen/Niell (--tropo), model scintilace Cornell (--s4,--scint-tau0,--sigma-phi), zrcadlové vícecestné šíření od země (--multipath-height/--multipath-ground), třístavový pozemní mobilní kanál (--land-mobile) a blok bez přímé viditelnosti (--nlos) se uplatňují na každý satelit přes nový můstek interní pro crate (iq::channel::SceneChannelAdapter), který převádí absolutní dráhy modelů kanálu do tvaru přebytku nad geometrií, jaký scéna používá. - Výstup SigMF na
iq scene(--format sigmf): zapisuje vzorky jako dvojici.sigmf-data/.sigmf-metas capture a anotacemi pro jednotlivé satelity;acquire/trackjiž SigMF čtou, takže scéna projde round-trip. - DSP front-endu: nový příkaz
iq frontend <in> <out>a stejné příznaky uacquire/track(--bandpass,--notch,--blank,--excise,--agc,--bits1/2/3/8/14) spouštějí stupněiq::frontend(pásmová FIR propust, adaptivní notch, pulzní blanking, excize ve frekvenční oblasti, AGC, kvantizér); v Pythonu zrcadleno jakoiq_frontend. - Scény s vysílanými efemeridami:
iq scene --nav <rinex_nav> --rx-pos lat,lon,alt(s--start/--window/--prn) umístí každý zdravý satelit GPS do jeho skutečné vysílané geometrie pomocí čtečky RINEX enginu, takže soubor pravdy nese skutečnou vzdálenost, Dopplerův posun a fázi kódu pro jednotlivé satelity; v Pythonu zrcadleno jakoiq_scene_broadcast. Pouze software a pouze přírůstkově: žádné nové závislosti, žádné vysílání, žádná syntéza signálu interference ani spoofingu (efekty šíření kanálem působí jen na legitimní signál). Každé číselné tvrzení je testováno proti nezávislé referenci (uzavřený tvar nebo vložená pravda) v unit testech kanálu a front-endu a vtests/iq_cli.rs.
- Propagační kanál na
[0.31.0] - 2026-10-04#
Přidáno#
- Vrstva GNSS IQ: simulace na úrovni signálu a zpracování softwarovým přijímačem. Nový modul
iqposouvá Kshanu od jednosatelitního front-endu L1 C/A s krátkými bloky k plné vrstvě na úrovni signálu, dosažitelné ze skupiny příkazůkshana iq. Generuje dlouhé vícesatelitní surové scény IQ s doprovodným souborem pravdy po epochách (iq::scene); uplatňuje šíření na úrovni signálu — ionosféru s divergencí kód–nosná, troposféru, amplitudovou a fázovou scintilaci (model Cornell), Fresnelovo vícecestné šíření a třístavový pozemní mobilní kanál, s variantou bez přímé viditelnosti (iq::channel); akviruje a sleduje pomocí FFT akvizice a vícekanálové banky DLL/PLL/FLL, přičemž jednu nahrávku přehrává přes mnoho návrhů smyček (iq::acq,iq::track); modeluje front-end — filtrování FIR/IIR, kvantizaci na 1 až 14 bitů, AGC, notch, pulzní blanking a excizi ve frekvenční oblasti (iq::frontend); streamuje velké zaznamenané datové sady v omezené paměti — formáty int8/int16/float32/zabalené 2bitové a reálné IF, vícesouborový SigMF, převzorkování, inventář datové sady s SHA-256 po souborech a dávkový běh (iq::io); přidává rozprostírací kódy pro GPS L5/L2C, Galileo E1 (CBOC, skutečné paměťové kódy z ICD) a E5a, BeiDou B1C/B1I a GLONASS L1OF, každý ověřený proti svému dokumentu řízení rozhraní (iq::signals); a fituje model ztráty zachycení sledovací smyčky na pozorované chování skutečného přijímače v laboratorních bězích, s chybou při vynechání jednoho běhu (leave-one-run-out) a extrapolací označenou jako predikce (iq::labfit). Každé číselné tvrzení je testováno proti nezávislé referenci (tabulka z ICD, uzavřený tvar nebo nezávislý přijímač obnovující vloženou pravdu); fyzikální modely kanálu a smyček zůstávají MODELLED. Jde pouze o softwarovou vrstvu: zapisuje soubory IQ pro softwarové přijímače a nesyntetizuje průběhy interference ani spoofingu ani neřídí rádiový hardware. Žádný zveřejněný počet druhů scénářů ani řádek verifikační matice se nemění. Návrh:docs/design/GNSS-IQ-PLAN.md. - Důvěra v přijímač: posouzení záznamu skutečného přijímače GNSS.
kshana receiver-trust <scenario.toml>načte záznam u-blox UBX, RINEX 3 (s volitelným souborem vysílané navigace), Android GnssLogger nebo NMEA 0183 do jedné časově označené časové osy a nad ní spouští monitory důvěry: pokles poměru nosné k šumové hustotě (C/N0), ztrátu zachycení, automatické řízení zisku (AGC), indikátor rušení u-blox, skok polohy a, s RINEX a navigací, vlastní jednobodové řešení enginu s paritní autonomní monitorací integrity přijímače (RAIM) a monitor podporovaný hodinami. Každá epocha je nominální, degradovaná nebo nedůvěryhodná a výsledek říká, kdy a proč. Události a předpovězené poklesy C/N0 uvedené ve scénáři se hodnotí proti tolerancím uvedeným ve stejném souboru: detekováno, pozdě nebo zmeškáno a shoda nebo neshoda. Výstupem jsou výsledek JSON, CSV po epochách a graf; výsledek nese SHA-256 záznamu a každý práh. Dostupné je to také z Pythonu (kshana.receiver_trust), z balíčku WebAssembly (receiver_trust, záznamy vložené přímo) a z nového nástrojeassess_receiver_logserveru Model Context Protocol (MCP). Průvodce:docs/RECEIVER-TRUST.md; příklad:examples/receiver-trust/. Na záznamech spoofingu JammerTest 2024 cesta enginu reprodukuje první alarm předregistrovaného orákulového řetězce při každém zveřejněném nástupu (tests/receiver_trust_jammertest.rs). Monitory zůstávají MODELLED; žádný řádek verifikační matice se nemění.
0.30.0 - 2026-10-03#
Menší vydání. Validační kola 2 a balíčky vlny 1 posouvají verifikační matici z 223 řádků (93 VALIDATED) ve verzi 0.29.3 na 249 řádků (123 VALIDATED, 122 MODELLED, 4 PARTNER); každé povýšení bylo ověřeno proti nezávislému orákulu s tolerancí stanovenou před během a každý nesoulad je zveřejněn jako zjištění. Nově: nativní čtečka jader NAIF a cesta DE440, jedna ověřená cesta propagace a času SGP4 do ITRS, knihovna měřených hodin, referenční generátor LunaNet AFS, řešiče s rozšířenou přesností a odmocninové informační řešiče a zpracování skutečného lunárního IQ na datech LuGRE. Zveřejněná čísla, která se změnila, jsou uvedena níže jako revize.
Dvacet sedm řádků verifikační matice se stává VALIDATED poté, co se nezávislé orákulum shodlo v toleranci stanovené před prvním porovnáním (pravidlo povýšení v docs/VALIDATION.md): deset v prvním validačním kole a sedmnáct ve druhém. Padesát jedna řádků MODELLED bylo v prvním kole předloženo vnějšímu orákulu a zbývající směrovatelné řádky ve druhém; každý nesoulad je níže zaznamenán jako zjištění, nikoli odlaďován. Tři řádky byly rozděleny, aby ověřená část nenesla neověřený zbytek, čímž se matice posouvá z 223 na 226 řádků; od té doby sloučené validační balíčky ji posouvají na 249. Počty se čtou z generovaného docs/VERIFICATION-MATRIX.md.
| 0.29.0 | po kole 1 | Nevydáno | |
|---|---|---|---|
| Řádky verifikační matice | 223 | 223 | 249 |
| z toho VALIDATED proti vnějšímu orákulu | 83 | 93 | 123 |
| z toho MODELLED | 136 | 126 | 122 |
| z toho PARTNER | 4 | 4 | 4 |
Zkratky použité v tomto záznamu
| Zkratka | Význam |
|---|---|
| ADD, ARAIM, MAAST | Airborne Design Document (k ARAIM); pokročilá autonomní monitorace integrity přijímače; Matlab Algorithm Availability Simulation Tool Stanfordské univerzity |
| ADEV, VRW, ARW | Allanova odchylka; náhodná procházka rychlosti; náhodná procházka úhlu |
| ANISE, SPICE, NAIF, PCK | open-source astrodynamický toolkit (Nyx Space); toolkit NASA Spacecraft, Planet, Instrument, C-matrix, Events z jejího střediska Navigation and Ancillary Information Facility; jádro planetárních konstant |
| BCRS, TDB, TT | barycentrická nebeská referenční soustava; barycentrický dynamický čas; pozemský čas |
| BIPM, UTC(k) | Mezinárodní úřad pro míry a váhy; realizace koordinovaného světového času v jedné laboratoři |
| CCSDS, OEM, LTC, TCL | Consultative Committee for Space Data Systems; Orbit Ephemeris Message; lunární časové soustavy zapisované v poli TIME_SYSTEM zprávy |
| CRLB | Cramérova–Raova dolní mez |
| CW | relativní pohyb podle Clohessyho a Wiltshirea |
| DE440 | Development Ephemeris 440 Jet Propulsion Laboratory |
| DOP, PDOP | zhoršení přesnosti; zhoršení přesnosti polohy |
| EKF, UKF, INS, GNSS, IMU | rozšířený Kalmanův filtr; unscented Kalmanův filtr; inerciální navigační systém; globální družicový navigační systém; inerciální měřicí jednotka |
| EMT, VPL, HPL | efektivní práh monitoru; vertikální a horizontální ochranná úroveň |
| EOP, IERS, PCC, MAE | parametry orientace Země; Mezinárodní služba rotace Země a referenčních soustav; Prediction Comparison Campaign; střední absolutní chyba |
| ERFA, SOFA | Essential Routines for Fundamental Astronomy; Standards of Fundamental Astronomy |
| GMAT | General Mission Analysis Tool NASA |
| NTN, SSB | neterestrická síť (3GPP); blok synchronizačního signálu |
| IGS, ILRS, ITRF2020 | Mezinárodní služba GNSS; Mezinárodní služba laserového měření vzdáleností; Mezinárodní terestrická referenční soustava 2020 |
| ILS, LAMBDA | celočíselné nejmenší čtverce; Least-squares AMBiguity Decorrelation Adjustment |
| ISB | mezisystémové zkreslení |
| LEO | nízká oběžná dráha Země |
| MHSS, PL, TPL | separace řešení pro více hypotéz; ochranná úroveň; časová ochranná úroveň |
| PSD, IQ, SigMF | výkonová spektrální hustota; vzorky ve fázi a v kvadratuře; Signal Metadata Format |
| QPN | šum kvantové projekce |
| RAIM | autonomní monitorace integrity přijímače |
| SBAS, WAAS, DFMC, GEO | družicový rozšiřující systém; americký Wide Area Augmentation System; dvoufrekvenční vícekonstelační; geostacionární družice SBAS |
| RMS, SISRE | odmocnina ze středního kvadrátu; chyba vzdálenosti signálu ve vesmíru |
| RTKLIB | open-source knihovna pro určování polohy GNSS |
| TCXO | teplotně kompenzovaný krystalový oscilátor |
| VLBI | interferometrie s velmi dlouhou základnou |
Ověřeno#
Každý řádek níže uvádí druh svého orákula (Knihovna: nezávislá knihovna třetí strany počítající jednoznačně definovanou veličinu; Měřená data: skutečná naměřená data; P2: nezávislá numerická knihovna přepočítávající veličinu lineární algebry na uložených vstupech), orákulum, toleranci stanovenou před během a výsledek. Každé povýšení znovu spustil druhý recenzent, který bajt po bajtu znovu vygeneroval fixture a ukázal, že záměrná mutace enginu test obarví načerveno.
- Fúze senzorů GNSS/INS (Knihovna), zúžená na volně vázaný 15stavový EKF chyb: NaveGo v1.4 (LGPL-3.0, spuštěno v GNU Octave) na vlastní skutečné jízdě s IMU/GNSS Ekinox. Horizontální, vertikální a inovační RMS polohy Kshany jsou 0,912, 0,940 a 0,861 hodnot NaveGo (práh 1,2) a její střední normalizovaná inovace je 0,395 (práh 1,5). GNSS je přítomno po celou jízdu, takže se netestuje žádný výpadek. Těsně vázaný UKF a vázaný filtr hodin zůstávají mimo toto tvrzení.
- Rozpočet chyby 3-DOF orientace a zamíření (Knihovna), zúžený na špičku gradientního momentu gravitace: Basilisk 2.9.1 GravityGradientEffector, 40 případů, v rámci 1e-12 relativně (nejhorší 2.1e-15). Rozpočet zamíření RSS je součet čísel dodaných volajícím a zůstává mimo něj.
- Lunární společná geometrie komunikace a navigace (Knihovna), zúžená na umístění místa, azimut, elevaci a vzdálenost: ANISE 0.10.2, 768 vzorků, v rámci 1e-6 stupně a 1 mm (nejhorší 2.2e-12 stupně a 5.6e-9 m). Parametr přesnosti měření vzdálenosti je návrhový vstup mimo tvrzení.
- Dynamika orientace tuhého tělesa bez momentů (Knihovna): těleso kosmické lodi Basilisk 2.9.1, 1e4 s na dvou obecných tenzorech setrvačnosti, kvaternion a rychlosti v rámci 1e-9 (nejhorší 3.3e-11 a 3.4e-12 rad/s).
- Řešení celočíselné nejednoznačnosti fáze nosné GNSS (LAMBDA) (Knihovna), zúžené na řešení ILS a jeho dvě nejlepší normy: RTKLIB v2.4.2-p13
lambda(), 300 kovariancí, 0 celočíselných neshod, normy v rámci 1e-9 relativně (nejhorší 5.6e-13). Míra úspěšnosti metody bootstrap zůstává kontrolována pouze interně. - Složená časová PL, skalární MHSS (P2): numpy 2.3.5 a scipy 1.18.1 na 300 uložených vstupech, PL v rámci 1e-9 relativně (nejhorší 1.2e-10), řídicí podmnožina shodná.
- Bělení souhlasného režimu GLS a Mahalanobisova identita (P2): numpy 2.3.5 LAPACK na 201 uložených kovariancích, v rámci 1e-12 relativně (nejhorší 7.9e-16); čísla podmíněnosti až 19,3.
- Poskytovatel lunární orientace hlavních os z DE440 (Knihovna): SPICE
pxformna binárním PCK v 2 000 epochách mimo uzly, v rámci 1.7e-5 rad (nejhorší 1.7e-6 rad, asi 3 m na povrchu), po opravě uvedené v části „Opraveno“. - Vstup a výstup nahrávek SigMF a Welchova spektra (Knihovna), zúžené na čtení a zápis SigMF a
welch_psd: scipy 1.18.1signal.welchv rámci 1e-12 relativně na přihrádku (nejhorší 6.0e-14); nahrávky sigmf-python 1.13.0 dekódované bitově shodně; metadata crate platná proti schématu SigMF v1.2.6. Syntéza IQ a její porovnání modelů zůstávají mimo. - Fitter vysílaných efemerid LEO a SISRE vůči intervalu fitu (Měřená data), zúžený na 16parametrový keplerovský fit a jeho SISRE jen z oběžné dráhy: přesné dráhy TU Graz ITSG čtyř satelitů proti statistikám Liu et al. 2025, složky v rámci 1,5× (0,804 až 1,087) a SISRE v rámci 1,5× (0,716 až 0,809).
Zjištění#
Orákulum s těmito řádky nesouhlasilo, proto zůstávají MODELLED. Každé zjištění je také zapsáno do textu orákula řádku (a tím do docs/MODELLED-RATIONALE.md), s testem, který ho připíná.
- Odhad stavu palubních hodin: na vynechaných hodinách IGS u 11 satelitů GPS Block IIF je třístavový filtr konzistentní o jeden krok dopředu, ale při jedné hodině je příliš sebejistý u 9 z 11 (periodické a flicker členy v modelu nejsou).
- Detekce spoofingu: na JammerTest 2024 nezaalarmoval žádný monitor na úrovni pozorování do 10 s od žádného z 8 zveřejněných nástupů a tři okna před nástupem nesla falešné poplachy.
- Časová ochranná úroveň při spoofingu: změřená nedetekovaná časová chyba přesahuje TPL u 3 z 8 detekovaných nástupů (1,9× až 5,3×); 60 s kalibrace hodin nepokrývá drift TCXO přijímače.
- Okno startu a geometrie výstupu: proti Orekit 12,2 se geometrie shoduje v rámci zaokrouhlení, ale rychlost místa vlivem rotace Země nesplňuje 1e-6 relativně při šířce 62,9 stupně (1.12e-6, pohyb pólu, který sférický model vynechává). Kolo 2: rychlost pro skutečný pól s epochou se shoduje, výchozí rychlost bez epochy stále nesplňuje (viz níže).
- Koridor balistického návratu (Allen–Eggers): předpovězené maximální zpomalení při návratu Stardust je 61,8 g proti rekonstruovaným 32,89 g (+88 %, tolerance 15 %).
- Společná chyba UT1 a pohybu pólu: proti vzorci přesnosti vytištěnému ve 178 číslech IERS Bulletin A se pól shoduje v rámci 1,5×, ale UT1 ne (0,48 při 10 dnech, 1,59 při 40 dnech). Nahrazeno v kole 2: řádek je nyní VALIDATED (viz níže).
- Výchozí offline vstup orientace Země: astropy potvrzuje sčítání řádků, ale 12 řádků, které crate nazývá předpověďmi Bulletinu A, je označeno jako měřené (I), nikoli předpovězené (P). Údaje o shodě u řádku provozního prediktoru tedy byly proti měřeným řádkům. Nahrazeno v kole 2: engine třídí řádky podle příznaku a řádek je VALIDATED.
- Chyba predikce orientace Země v provozním stylu: chyba UT1 prediktoru je 2,4× až 12,6× chyba Bulletinu A při 1 až 10 dnech a 5,32 ms při 10 dnech, mimo rozsah 0,36 až 3,13 ms 2. EOP PCC.
- Lunární geodetická VLBI: proti světelným časům ANISE přes DE440 není žádné zpoždění v rámci 1 ps; největší rozdíl je 24 µs, převážně analytický střed Měsíce (asi 200 km od DE440). Kolo 2: cesta přes jádro je VALIDATED ve vlastním řádku; tato analytická cesta zůstává MODELLED.
- Lunární interoperabilní export: Orekit 12,2 odmítá časové soustavy LTC a TCL, takže výměna lunárních souborů OEM s druhou čtečkou není prokázána.
- Relativní pohyb podle Clohessyho a Wiltshirea: proti nelineárnímu pohybu Orekit při 100 m je rozdíl 1,2 až 6,3 mm, nad 1 mm; škáluje se jako vynechaný člen druhého řádu, takže předregistrovaná tolerance ležela pod chybou linearizace. Nahrazeno v kole 2: korekce druhého řádu je VALIDATED proti stejnému prahu.
- Růst chyby INS/TRN při setrvačném letu: proti volně setrvačnému Monte Carlo NaveGo zákony růstu platí v rámci 5 % do 600 s a za ním nadhodnocují (2,2× až 8× po jedné hodině), protože vynechávají Schulerovu zpětnou vazbu. Nahrazeno v kole 2: model chyby podle Schulera je VALIDATED.
- Lunární servisní objem ze skutečné geometrie konstelace: 4 z 12 zveřejněných statistik dostupnosti se liší o více než 2 procentní body (až 22,5).
- Horní mez zkreslení návaznosti heterogenního UTC(k): na 105 024 řádcích BIPM je horní mez překročena u 50,8 % řádků; zveřejněná nejistota ohraničuje měření odchylky provedené BIPM, nikoli samotnou odchylku.
- Klasifikace nulového prostoru lunárního datumu: na zveřejněné geometrii pěti odražečů je korelace -0,78 proti -0,97 a CRLB počátku je o 96 až 98 % pod hodnotou z článku.
- Substrát geometrie datumu lunárního LLR: proti 192 lunárním normálním bodům ILRS z roku 2024 bylo RMS jednosměrného rezidua 96 m s dřívější interpolací orientace a po níže uvedené opravě je 22,7 m, stále nad prahem 10 m (zaokrouhlené souřadnice stanic, bez pohybu pólu). Řada orientace mimo 2024–2025 mlčky ořezává. Kolo 2: model změřené vzdálenosti je VALIDATED ve vlastním řádku (2,81 m); řada nyní pokrývá 2014–2030 a mimo ni hlásí chybu.
- Vazba relativistické rychlosti hodin na soustavu: člen vlastního potenciálu je o 3.18e-4 nad zveřejněnou hodnotou (tolerance 1e-4); článek vyhodnocuje jiný potenciál, takže zveřejněná hodnota tohoto uzavřeného tvaru neexistuje. Nahrazeno v kole 2: rovníkový potenciál stupně 2 je VALIDATED proti stejnému článku.
- Fyzikální konstanty každého tělesa sluneční soustavy: 12 z 84 konstant přidaných těles se liší od NAIF pck00011 a gm_de440 (starší elementy satelitů Marsu; jiná řešení GM pro Uran, Neptun a Pluto). Kolo 2: konstanty nyní sledují NAIF (přepis, nezapočítává se) a vypočtená orientace se shoduje se SPICE; řádek zůstává MODELLED.
- Volitelné modely efemerid LEO: 22parametrový fit nechává 1,71× a 1,86× zveřejněné chyby ve směru dráhy na obloucích 20 min, nad 1,5×. Nahrazeno v kole 2: 22parametrový model a fit jsou VALIDATED ve vlastním řádku.
- Společné určování polohy GNSS a LEO: mezisystémové zkreslení se shoduje s RTKLIB, ale 93,2 % epoch je v rámci 3 m od ITRF2020 proti 95 %; samotný RTKLIB na datech dosahuje 88,2 % (93,6 % po opravě skupinového zpoždění v kole 2).
- Slepota integrity vůči souhlasnému režimu a mapy pokrytí a DOP: obě porovnání prošla, ale při revizi byla zamítnuta, protože je projde i záměrně chybný engine (první kontroluje jen vnitřní identitu; zveřejněné spodní hranice druhého nemohou zaznamenat zdvojené PDOP). Kolo 2: slepota integrity vůči souhlasnému režimu je VALIDATED na vstupech s paritou; mapy pokrytí zůstávají zjištěním (viz níže).
Validační kolo 2#
Druhé kolo vzalo každý řádek, který první kolo nechalo směrovatelný, s novými předregistracemi zapsanými před stažením jakéhokoli fixture nebo spuštěním jakéhokoli orákula, s kontradiktorním druhým recenzentem, který znovu spustil každé porovnání, a se záměrnou mutací enginu, která musí každý test obarvit načerveno. Vlastník přijal opravené znění řádku meze mimo Omega dne 2026-10-02, než byl povýšen (jeho starý text odporoval kódu).
Povýšeno na VALIDATED (17). Druh orákula v závorce; tolerance stanovena před během.
- Vazba relativistické rychlosti hodin na soustavu (Reference): L_m podle Ashbyho a Patly 2024 v rámci 2.8e-6 (práh 1e-4) z rovníkového potenciálu stupně 2 obou polí, která článek cituje; gravitace pyshtools stupně 350 pro radiální vstup (8.3e-5); lunární rychlost DE441 (2.5e-3).
- Výchozí offline vstup orientace Země (Knihovna): astropy 8.0.1 a IERS Bulletin A č. 039 potvrzují 30 finálních, 54 rychlých a 90 předpovězených řádků znovu sestaveného výřezu.
- Společná chyba UT1 a pohybu pólu (Knihovna): úplné rotace astropy a pyerfa reprodukují společnou tabulku (UT1 a pól v rámci 6e-16, kombinace v rámci 1.9e-7); realizované chyby z IERS Annual Report 2019 dávají poměry 1,001 až 1,100.
- Stopa a pokrytí užitečného zatížení EO (Knihovna): Orekit 12,2 a GeographicLib 2,1 při každém předregistrovaném prahu, s nodální regresí J2 nyní v rozestupu uzlů.
- Relativní pohyb podle Clohessyho a Wiltshirea (Knihovna): s korekcí druhého řádu v uzavřeném tvaru v rámci 1.2e-7 m od nelineárního pohybu Orekit proti 1e-3 m; samotná lineární matice zůstává charakterizována (1,2 až 6,3 mm).
- Cílení v rovině B a gravitační manévr v patched-conic aproximaci (Knihovna): GMAT R2026a rovina B, asymptoty, C3 a heliocentrické elementy; sbpy 0.6.0 a Kasuga a Jewitt 2019 pro Tisserandův parametr.
- Růst chyby INS/TRN při setrvačném letu (Knihovna): devítistavový model chyby podle Schulera v rámci 5 % opravených běhů NaveGo ve všech 48 bodech (nejhorší 3,70 %).
- Slepota integrity vůči souhlasnému režimu (P2): numpy
lstsqna 1464 vstupech s paritou v rámci 1e-12 (nejhorší 1.06e-14). - Lunární společná vícetechnologická OD a hodiny (P2): numpy přepočítává každý krok Gauss-Newton, sigmu a chybu stanice na šesti sítích (v rámci 2.4e-11) po opravě řešení QR.
- Kovariance souřadnic stanic lunární VLBI (Knihovna): Jacobián sestavený ve SPICE reprodukuje rozvrh, spektrum, sigmy a nulový prostor v rámci 1 % a 0,1 stupně; numpy do 2e-13.
- Nedetekovatelná mez souhlasného režimu pro rezidua mimo Omega (P2, znění opraveno rozhodnutím vlastníka): numpy LAPACK na 256 případech v rámci 1e-12, šest přesných nekonečen.
- Klasifikace nulového prostoru invariantní vůči bázi (P2): průnik podprostorů v SciPy a NumPy na 72 sestavených maticích, celá čísla přesně, norma projektoru v rámci 6.0e-15.
- Jednofrekvenční ionosférické služby a služby UTC navigační zprávy LEO (Knihovna): GNSSTk 15.3.1 pro Klobuchar, Az a drift UTC; ERFA pro tři případy přestupné sekundy.
- Mez určování polohy v neterestrických sítích 5G (P1): meze jednoho SSB podle Bachla, Leie a Nabeela 2026 v rámci půl vytištěné číslice; numpy pro kovariance řešení.
- Model změřené vzdálenosti LLR (Měřená data, nový řádek oddělený od substrátu datumu LLR): 192 lunárních normálních bodů ILRS při 2,81 m RMS proti prahu 10 m, s barycentrickým světelným časem IERS 2010; složky pod prahem se neřeší jednu po druhé a řádek to říká.
- Lunární geodetická VLBI, cesta přes jádro (Knihovna, nový řádek oddělený od řádku lunární VLBI): konvergované světelné časy SPICE v rámci 1 ps a parciální derivace v rámci 1e-6 v epochách blízko J2000; analytická výchozí cesta zůstává MODELLED.
- 22parametrový model efemerid LEO podle Liu et al. 2025 a jeho fit (Měřená data, nový řádek oddělený od řádku volitelných modelů): skutečné přesné dráhy v rámci 1,5× zveřejněných statistik ve dnech z článku i ve vynechaných dnech (0,683 až 1,186); konvence škály n_dot je přepsána a tímto porovnáním není ověřena a pravidlo zastavení je Kshanino pravidlo konvergence parametrů, nikoli pravidlo změny RMS z článku. Polynom ATOMIC a tabulka pěti výšek zůstávají MODELLED.
Stávající řádky VALIDATED znovu podložené (bez změny počtu).
- Polohy planet z elementů JPL Standish a světelný čas mezi tělesy sluneční soustavy: dodatečné prahy dvojnásobku nominální hodnoty jsou nahrazeny předregistrovanými porovnáními s JPL Horizons DE441 (RMS nejvýše hodnota z tabulky 8.10.1 Explanatory Supplement, nejhorší 0,778, včetně rozdělení Země a rotace ICRF; světelné časy v rámci 1e-6 s od Horizons na polohách DE441, nejhorší 6.7e-9 s). Jejich příznaky „limit stanoven po porovnání“ jsou odstraněny.
- Integrita (RAIM/ARAIM/SBAS): řádek se už nespoléhá na kontroly věrohodnosti. Nyní uvádí: separace řešení pro více hypotéz ARAIM podle ADD v4.2 se shoduje se Stanford MAAST pro ARAIM 2 na 270 skutečných případech (nejhorší rozdíl VPL 2.2e-3 m proti 0,05 m); detekce a vyloučení snapshotového RAIM se shodují s RTKLIB
raim_fdev 2016 z 2016 rozhodnutí, s ochrannou úrovní sklonu v rámci 2.7e-12 m; ochranné úrovně SBAS DO-229E L1 se shodují se Stanford MAAST na skutečných vysíláních WAAS (2868 dvojic v rámci 1.6e-5 m). Jasně uvádí, že funkce s jednotnou sigmouraim::araim_raimaraim::araim_dual_raimNEODPOVÍDAJÍ ADD (rozdíly při shodných vstupech 0,75/4,04 m a 0,39/1,93 m VPL/HPL, zjištění), že porovnání DFMC L5 SBAS je zjištěním (308 dvojic bez GEO v dohledu Kshana chrání a MAAST nikoli) a žeraim::solution_separation_raimnemá žádné vnější porovnání. Jeho vlastní příznak je odstraněn. - Fitter vysílaných efemerid LEO: integrovaná pravá dráha je přidána k ověřené části (Orekit 12,2 v rámci 4,55 mm za 6 h, práh 2 cm); korekční polynomy, fit hodin a kompromis periody aktualizace zůstávají modelované.
Zjištění a blokované řádky (zůstávají MODELLED). Text orákula každého řádku nese zjištění a jeho připnutý test.
- Modulace navigačního signálu (Betz 2001, Hein 2006): spektra a korelace se shodují; postranní laloky 24 MHz a každé zkreslení od vícecestného šíření (o 11 až 15 % nízké) ne, příčina nevyřešena.
- Geolokace TDOA/FDOA: meze odpovídají Ho a Chan a Ho a Xu i kódu autorů s přesností 3e-12; faktory z Ottawy vytištěné z Monte Carlo se liší o 1,3 % a 4,4 %.
- GNSS Země ve vzdálenosti Měsíce: zenitové průměry GENESIS se shodují s Montenbruck et al. 2023 v 5 z 6; nadirové průměry jsou o 1,0 až 2,4 satelitu vyšší.
- Mapy pokrytí a DOP: návrhy pro Zemi se shodují s Orekit, gnss_lib_py a numpy při každém prahu; návrhy pro Měsíc a Mars překračují 1e-9 jen v téměř singulárních buňkách.
- Společné určování polohy GNSS: dvoufrekvenční 79,9 % a přesné produkty 94,2 % v rámci 3 m proti 95 % (RTKLIB 67,9 % a 94,1 %); rozdíl ISB u přesných produktů je tím, že RTKLIB ignoruje posuny antén.
- Sledovací smyčky (GNSS-SDR 0.0.19): shoda při 35 až 45 dB-Hz; při 30 dB-Hz PLL +21 %, DLL -32 %, prahy +1,5 dB; doby do proklouznutí o 0,5 až 2 řádu kratší.
- Lunární servisní objem (Orekit a Hipparchus): 155 ze 160 hodnot se shoduje; požadavek na nejhorší vzorek selhává na téměř singulární geometrii LNCSS B.
- Kvantový inerciální senzor: spodní mez jen pro QPN je o 21 až 31 % pod změřeným šumem podle Gauguet 2009 (práh 30 %, minuto o 0,5 bodu).
- Předvolby oscilátorů: změřené kusy překračují předvolby holdoveru rubidia, krátkodobé stability cesia a nejhoršího kusu CSAC; předvolba OCXO nemá žádný změřený záznam.
- Hustota podle kosmického počasí: Jacchia 1971 je v rámci faktoru 2 od hustot z akcelerometrů při slunečním maximu, ale asi 1,7× příliš hustá v minimu 2008.
- Šikmé TEC bez geometrie: 33 z 36 oblouků v rámci 3 TECU od mapy CODE (nejhorší 6,84).
- Detekce spoofingu a TPL proti oficiálnímu záznamu JammerTest 2024: 4 z 10 nástupů detekováno včas; TPL je překročena u 4 z 10.
- Filtr hodin na čerstvých hodinách IGS: dva z 11 satelitů nesplňují kritérium součtu inovací.
- Prediktor EOP metodou nejmenších čtverců plus autoregrese: UT1 1,73 až 2,11× Bulletin A při 2 až 10 dnech.
- Horní mez realizované odchylky UTC(k): souhrnné překročení 0,0333 proti 1e-2.
- Lunární datum soustavy z kampaně: větev SPICE se shoduje; větev P2 s odhadovanými stanicemi nesplňuje 1e-9 na úloze s podmíněností 2.1e8.
- Lunární datum soustavy ze skutečného LLR: 15 z 16 hodnot se shoduje se SPICE; sigma z-translace je o 1,03 % vysoká proti 1 %.
- Návrat do atmosféry (Allen-Eggers): řešení hmotného bodu se shoduje s rekonstrukcemi agentur (pouze křížová kontrola); porovnání s akcelerometrem je blokováno kvůli čitelnému zdroji Hayabusa2.
- Masky ITU-T: vytištěné vzorové hodnoty se shodují; limity tříd G.8273.2 žádné nemají (blokováno).
- Geometrie okna startu: rychlost místa podle skutečného pólu s epochou se shoduje s Orekit (4.9e-8); výchozí rychlost bez epochy stále nesplňuje (1.12e-6). Nepovýšeno; navazující práce čeká.
- Fyzikální konstanty každého tělesa: nyní se 0 z 84 liší od NAIF (přepis) a vypočtená orientace se shoduje se SPICE s přesností 1.4e-10 rad. Nepovýšeno; navazující práce čeká.
- Blokováno rozhodnutím vlastníka o vymezení, u každého s uloženým souhlasným porovnáním: lunární pozorovatelnost absolutních stanic, DOP povrchových majáků, export mimo osu, detekční výkon napříč modalitami, statistika konzistence souhlasného režimu a pokrytí polárním LEO.
- Blokováno daty: rozpočet chyb přenosu času (potřebuje redukci skutečných dat), C/N0 JammerTest (poloha antény a rozdělení výkonu nejsou zdokumentovány).
Revize (zveřejněná čísla, která se změnila, staré -> nové).
- Ochranné úrovně
snapshot_raimjsou nyní na geodetické lokální úrovni místo radiální: až 0,31 m HPL a 0,14 m VPL na ABMF (16 stupňů s. š.); žádný golden se nezměnil, ale zaznamenané shrnutí tutoriálugnss-simse mění ze střední HPL 22,1 m / VPL 40,0 m na 22,2 m / 39,9 m (docs/tutorials/scenarios/gnss-sim.toml). - Výchozí hodnoty vazby lunární rychlostní soustavy: d_alpha/d_scale 3.139807e-11 -> 3.138801e-11; d_alpha/d_radial 1.807187e-17 -> 1.806185e-17 na metr.
- Výchozí offline běh EOP (
realtime-frame-eop, buňky uvedené vdocs/revisions/M035-default-eop-recut-cell-changes.md): predicted_rows 12 -> 90; spodní mez pólu 0,06776 -> 0,05550 mas; eop_term_m 14,01601 -> 14,01583; total_m 20,09759 -> 20,09746; total_time_ns 67,03834 -> 67,03790; řádky tabulky 2 vtests/golden/realtime-frame-eop.csv; shoda provozního prediktoru 0,256/0,695/1,252/3,885 ms -> 0,133/0,421/0,839/2,786 ms. docs/LEO-NAVMSG.mdliu22 SISRE dráha/s hodinami: 60 s 0,011/0,046 -> 0,014/0,046 cm; 300 s 0,068/0,139 -> 0,074/0,142 cm; 600 s 0,269/0,299 -> 0,258/0,290 cm.- Tabulka výšek Liu, Kshana (poměr): GRACE-A 5,40 (0,61) -> 4,25 (0,48); GRACE-C 4,12 (0,66) -> 2,87 (0,46); Sentinel-2A 2,95 (1,03) -> 2,20 (0,77); HY-2A 2,38 (1,13) -> 1,25 (0,59); Sentinel-6A 0,70 (0,94) -> 0,51 (0,67).
- Škála
nDotnavigační zprávy LEO 2^-60 -> 2^-58 (nebylo předregistrováno, zveřejněno; mimo porovnání fitu); CRC vzorkového rámce liu22 0x62373A -> 0xDED99C. - Verifikační tabulka
docs/LEO-NAVMSG.md: řádek Liu a ATOMIC rozdělen na řádek 22parametrového modelu VALIDATED a řádek ATOMIC a pěti výšek MODELLED. - Text řádku lunární orientace hlavních os z DE440: rozsah 2024-2025 / 731 řádků -> 2014-2030 / 6 209 řádků; „mlčky ořezává“ -> chyba mimo svůj rozsah.
- Scénář
eo-coverage: equatorial_ground_track_spacing_km 2756,37 -> 2752,17 km; nová pole inclination_deg (98,19) a nodal_period_min (98,893). constellation-multi-gnss-coverage(referenční hodiny TDOP/GDOP jsou nyní nejnižší číslovaná konstelace v dohledu): globální GDOP max 2,2236 -> 2,1205, průměr 1,122 -> 1,131, medián 1,115 -> 1,125, p90 1,255 -> 1,265, p95 1,305 -> 1,315, p99 1,41 -> 1,42 a mapa GDOP po buňkách; mean_visible_by_constellation se sčítá jako celá čísla (asi 1e-12 relativně, neviditelné na 4 desetinných míst).- Společné jednofrekvenční řešení GNSS po opravě vysílaného skupinového zpoždění: 93,2 % -> 93,6 % v rámci 3 m; medián ISB -0,351 -> -0,114 ns.
tracking-loopjitter_table log10_mean_time_to_cycle_slip_s (Costasova smyčka SNR rho/4): na prahu 25,47 dB-Hz 11,58 -> 2,10; při 25 dB-Hz 9,55 -> 1,60; při 22 dB-Hz 2,24 -> -0,14.ins-trn-coast: každý výstup se mění s modelem chyby podle Schulera; špička TRN dodaného scénáře 52,932679 -> 44,711834 m (tests/conflict_resilience_architecture_guard.rs).- Zpráva
lunar-vlbi: nový klíč geometry_path („analytic“ při výchozím běhu, žádná číselná hodnota se nezměnila); nová volitelná pole planetary_kernel_path, earth_orientation_kernel_path a moon_orientation_kernel_path, s epoch_partials na cestě přes jádro; popis druhu je přepsán. Orákulem cesty přes jádro u verifikačního řádku je SPICE (0,06 ps); ANISE (0,12 ps) se stává křížovou kontrolou vyhodnocení jádra. - Konstanty těles: Phobos GM 7.087e5 -> 7.087546066894452e5; Deimos 9.62e4 -> 9.615569648120313e4; Uran 5.7939506103e15 -> 5.793951256527211e15; Neptun 6.83509997e15 -> 6.835103145462294e15; Pluto 8.69326e11 -> 8.696138177608748e11 (m^3/s^2); rovníkový poloměr Phobosu 13,1 -> 13,0 km; pól a nultý poledník Phobosu a Deimosu z pck00011; prime_meridian_deg sluneční soustavy nyní zahrnuje kvadratické a periodické členy.
europa-surface-pnt(body-pntna Europě) z úplné orientace Europy podle pck00011 (7cfd66b4; orientace se shoduje se SPICE pxform s přesností 1.4e-10 rad), která posouvá lander v inerciálním prostoru: dostupnost jen relé / se vzdáleností k Zemi 0,485 / 0,725 -> 0,480 / 0,719 (83 -> 82 ze 171 epoch jen relé), mediánové PDOP 5,266 -> 5,360, RMS chyby řešení 129,516 / 100,983 m -> 112,742 / 86,147 m, mediánová formální sigma 5,266 / 4,272 m -> 5,360 / 4,239 m. Tabulka vdocs/SOLAR-SYSTEM.mda pin vmcp/kshana-mcp/tests/round_trip.rsnásledují;mars-orbit-pntse nemění.space-weather(f107 180, f107a 165, kp 4), kalibrovaný faktor nahrazen Jacchia 1971: activity_density_kg_m3 při 300/400/500/600/800 km 2.602e-11 -> 3.608e-11, 4.176e-12 -> 6.929e-12, 8.136e-13 -> 1.618e-12, 1.769e-13 -> 4.189e-13, 1.544e-14 -> 3.781e-14; activity_factor 1,076/1,121/1,168/1,216/1,320 -> 1,492/1,860/2,322/2,881/3,232; reference_exospheric_temperature_k odstraněno, mean_exospheric_temperature_k přidáno (1186,7 K);tests/space_weather_reference.rs: sluneční cyklus při 800 km nyní kolísá 10,4× (NRLMSISE-00 13,6×) a tvrzení o výšce sleduje vzestup NRLMSISE do 500 km a pokles při 800 km.ntn-5g-positioningtoa_median_sigma_3d_m: NR 5 MHz 2,0903959 -> 2,0903962 m; NB 200 kHz 25,938613 -> 25,938839 m (text shrnutí beze změny na 2,09 / 25,94 m).lunar-joint-od-clock(řešení QR): with_vlbi.station_pos_err_m 3,541344 -> 3,541350 m; without_vlbi.station_pos_err_m 2183,119 -> 2183,558 m.docs/field-units-schema.jsonznovu vygenerováno pro nová a odstraněná pole uvedená výše.
Validační balíčky#
D12, rozšířená přesnost a odmocninový řešič (dva nové řádky VALIDATED: 226 -> 228 řádků, 110 -> 112 ověřených).
Část 1, orákulum s rozšířenou přesností:
- Lunární datum soustavy s odhadovanými stanicemi: 50místné orákulum s rozšířenou přesností mpmath (předregistrováno 804662d5, prahy škálované podmíněností z apriorního vzorce zpětné chyby) se shoduje na novém datu kampaně (2026-03-18) i na původním scénáři z 2024-01-01; nový řádek VALIDATED pod P2. Rozhoduje dřívější spor o dvojitou přesnost: sigmy datumu enginu se liší až o 9.7e-6, inverzní a eigen cesty v NumPy až o 6.2e-6 a jeho cesty Cholesky a QR asi o 1e-8. Engine je v rámci své meze chyby, ale asi tisíckrát méně přesný než faktorizační cesta.
- Prostředí orákula: přidáno mpmath 1.3.0.
- Revize: žádné. Žádný golden soubor ani zveřejněný obrázek se nemění; řádek „Lunární datum soustavy z pozorovací kampaně“ zůstává MODELLED (rozhodnutí zakladatele 2026-10-02, varianta A: nepůjčuje si stav samostatného řádku); jeho text testů cituje nový test a jeho zjištění.
Část 2, odmocninový informační řešič datumu:
- Nový volitelný odmocninový informační řešič (
linalg_sr;solver = "srif"ve scénáři lunar-frame-campaign): Householderova QR, marginalizace přes trojúhelníkový faktor, Jacobiho SVD pro spektrum a kompenzované součiny pouze ze správně zaokrouhlených operací. Proti 50místnému orákulu (předregistrováno b41908c9) se jeho sigmy datumu shodují s přesností 3e-13 na novém datu (2026-06-09); na vstupech 2026-03-18 a 2024-01-01 je výchozí řešič mimo až o 1e-5. Nový řádek VALIDATED pod P2. Výchozí řešič a jeho výstup se nemění. Předregistrované prahy potvrzují chyby jen nad asi 2e-7 relativně: výchozí řešič odmítnou, ale nikoli obrácené znaménko Householderovy transformace, nekompenzovaný skalární součin ani spektrální konečnou inverzi, a řádek to říká. - Volitelné odmocninové cesty vedle nezměněných výchozích:
fim::crlb_srif,batch_ls::gauss_newton_srif,orbit_determination::determine_orbit_batch_srif,lunar_combination::formal_covariance_srif,precise_od::fit_srifacislunar_srif::srif_cross_validation_sqrt, na novýchlinalg_sr::weighted_lstsqacovariance_from_sqrt_information. Každá se shoduje se svou výchozí tam, kde jsou obě přesné (vnitřní kontrola, žádný řádek; pro ně se netvrdí žádná validace).precise_od::fitnyní deleguje na sdílenou rutinu; jeho výstup i výchozí výstup každého scénáře se nemění. - Rozhodnutí o hodnosti v lunární kampani soustavy: předregistrovaná kontrola s rozšířenou přesností za 40 dnů potvrzuje každé rozhodnutí o bloku stanic a o Helmertově transformaci plné hodnosti, které lze rozhodnout. Apriorní mez nemůže potvrdit 20 dnů Helmertovy transformace s deficitem hodnosti; v přesné aritmetice je jejich defekt geometrický, s prahem 1e-9 uvnitř přirozeného rozsahu poměrů vlastních čísel kampaně. Žádný řádek.
- Tvrzení řádku kampaně s rozšířenou přesností je zúženo na „v rámci meze nejhoršího případu“ a jeho kontrola nejslabšího směru při pevných stanicích nyní měří skutečný úhel (6.6e-16 rad; komparátor se změnil z acos na tětivu, práh ne).
- Revize: žádné. Žádný golden soubor ani zveřejněný obrázek se nemění; řádek „Lunární datum soustavy z pozorovací kampaně“ se nemění a zůstává MODELLED (rozhodnutí zakladatele 2026-10-02, varianta A).
D4, páteř jádrových efemerid JPL, fáze 1 (čtyři nové řádky VALIDATED: 228 -> 232 řádků, 112 -> 116 ověřených).
- Čtečka jader NAIF má vlastní řádek.
naif_kernel(kontejner DAF, SPK typu 2, binární PCK typu 2) se shoduje se SPICE Toolkit (CSPICE N0067 přes spiceypy 8.2.0) a s ANISE 0.10.6 na všech 600 stavech DE440 a 200 rotacích lunární orientace náhodné mřížky odvozené z vlastního hashe předregistračního commitu (abcd9133), v rámci prahů odvozených předem z vyhodnocení Čebyševových polynomů v dvojité přesnosti (nejhorší 0,6 % prahu, 1.95e-3 m). Řádek tvrdí, že engine čte jádra JPL správně, nikoli že DE440 nebo analytická řada je přesná (tests/naif_reader_spice_oracle.rs). ephem_provider::KernelEphemeris: polohy z DE440 (nebo libovolného SPK typu 2) přes vlastní čtečku enginu, s dvoudílnými epochami TDB a SHA-256 jádra uchovaným pro zprávy; nikdy nenahrazuje barycentrum soustavy planetou.LunisolarSourceumožňuje cestě geometrie zvolit analytickou řadu (výchozí) nebo jádro.- Volitelný Měsíc z jádra pro
lunar-llr-datumalunar-vlbi-fim: klíčplanetary_kernel_pathčte geocentrický střed Měsíce z jádra; nic jiného se nemění a zpráva získává blokmoon_ephemerispojmenovávající jádro a jeho SHA-256. Bez klíče jsou obě zprávy bajt po bajtu shodné s dřívějšími. - Kovariance bodu na lunárním povrchu na cestě přes jádro (nový řádek VALIDATED): při všech pevných stanicích a majáku na Měsíci z DE440 se kovariance majáku shoduje s Jacobiánem světelného času ve SPICE (nejhorší 1.7e-3 proti prahu 1 %) a s inverzí v NumPy (4e-14 proti 1e-9), předregistrováno 4a51256 (
tests/lunar_vlbi_surface_point_spice_oracle.rs). Řádek analytické cesty zůstává MODELLED: na analytickém Měsíci je jeho nejmenší sigma majáku o 3,9 % pod orákulem. - Lunární datum soustavy ze skutečné kampaně, střed Měsíce z jádra (nový řádek VALIDATED): na 447 neviděných normálních bodech 2019-Q2, předregistrováno 830d945a dříve, než byl kterýkoli stažen, se kovariance datumu na cestě přes jádro shoduje s nezměněným orákulem SPICE a NumPy v rámci 7.6e-5 proti prahům 1 % a 2 % (
tests/validate_llr_datum_kernel_moon_fresh.rs). Zakladatel rozhodl, že tento řádek se povyšuje jen na čerstvých bodech; diagnostika na již viděných datech (c51f8b2) je zjištěním, nikoli důkazem. Práh modely Měsíce nerozlišuje: analytický Měsíc na stejném výřezu také projde (nejhorší 3.8e-3), plánovaná mutace (Měsíc z jádra o hodinu opožděný) nebyla zachycena a při foldu prošel i střed Měsíce chybný asi o 4 650 km (Měsíc vzatý kolem barycentra soustavy Země–Měsíc). Řádek tvrdí kovarianci na této cestě, nikoli střed Měsíce, a říká to. - Polohy Slunce, Měsíce, Merkuru a Venuše z DE440 v epochách UTC (nový řádek VALIDATED):
KernelEphemeris::relative_position_utcse shoduje se Skyfield 1,54 na 600 polohách mezi 1973 a 2026, nejhorší 2,96 m, v rámci předregistrovaného prahu (0bfafe6d) daného dvoučlennou řadou TDB − TT (tests/kernel_ephemeris_skyfield_oracle.rs). Polohy planet dostávají nyní tento nový řádek jádra; řádek Standish a řádek planetárních měsíců se nemění a měsíce čekají na scénář, který je potřebuje (rozhodnutí zakladatele). - Zjištění: jediné minutí porovnání datumu LLR (sigma z-translace 1,025 % proti 1 %) klesá na 0,049 %, když se z DE440 čte jen střed Měsíce, na již viděných datech (
tests/validate_llr_datum_kernel_moon.rs); na čerstvém výřezu 2019 projde i analytický Měsíc, takže minutí v 2015 bylo okrajové vůči geometrii onoho čtvrtletí. Analytické řádky „Lunární datum soustavy ze SKUTEČNÉ pozorovací kampaně“ a „Kovariance souřadnic bodu na lunárním povrchu … oddělená od kovariance pozemní stanice“ zůstávají MODELLED; jejich texty orákula nyní odkazují na řádky cesty přes jádro. lunar_ephemerisuž neříká, že engine nemá čtečku binárních jader; odkazuje na řádek čtečky a vysvětluje, proč jádra kosmických lodí (typy 13 a 21) stále přicházejí přes Horizons.- Revize: žádné. Žádný golden soubor, zveřejněný obrázek ani stávající testovací hodnota se nemění; analytické zprávy
lunar-llr-datum,lunar-vlbi-fimalunar-vlbi-fims pevnými všemi stanicemi jsou bajt po bajtu shodné s dřívějšími (prefixy SHA-256 výsledku 9927aac2, cf1d2671, 25c357e4).
D9, knihovna měřených hodin „Clock Atlas“ (tři nové řádky, jeden VALIDATED: 232 -> 235 řádků, 116 -> 117 ověřených).
- Knihovna měřených hodin (
clock_library). Karty zařízení (bílá fáze, bílá, flicker a náhodná procházka frekvenční modulace, lineární drift frekvence a volitelně fázové členy s jedním až čtyřmi cykly na oběh) fitované na pojmenovaný změřený záznam hodin a hodnocené na vynechaných datech; Allanovy a Hadamardovy variance s ohledem na mezery; detektor úpravy, který zaznamenává každou mezeru, fázový odlehlý bod, fázový skok, shluk a skok frekvence a nic neví o hranicích souborů ani dnů; převod karty na model šumu časování slotů, rozšířený Kalmanův model hodin a úrovně šumu monitoru spoofingu. Čtečky souborů hodin RINEX a IGS, souborů BIPM po laboratořích a Circular T oddíl 1 (realdata::clk); souhrnná hierarchická mez stárnutí pro UTC(k) (utck_bound, zatím nehodnoceno). - Identifikace šumu pomocí autokorelace zpoždění 1 (
allan::lag1_noise_id, Riley a Greenhall 2004), nový řádek VALIDATED (Knihovna): shoduje se s allantools 2024,6autocorr_noise_idna 140 případech, celá čísla shodná, nejhorší rozdíl 9.6e-13 proti prahu 1e-9 (předregistrováno 2ec76864;tests/clock_library_lag1_noise_id_allantools.rs). - Změřené karty zařízení s predikcí na vynechaných datech, nový řádek MODELLED (zjištění): fit na jedné třetině, predikce Allanovy odchylky zbylých dvou třetin v rámci faktoru 1,5 (předregistrováno 2ec76864). GPS Block IIF na čerstvém okně IGS (2026-03-01 až 14): 10 z 11; G27 je optimistický v dvouhodinovém měřítku (nejhorší faktor 1,510). Cesium (uvnitř, 1,070), OCXO (mimo, 2,348) a stroncium (uvnitř) jsou uvedeny, nikoli slepé. Karta přijímače JammerTest a karty Galileo maseru a Deep Space Atomic Clock jsou blokovány. Třída modelu TCXO přijímače ZED-F9P na 12 statických stanicích Wroclaw (Zenodo 6488497) selhává: 1 z 11 slepých stanic v zveřejněném opraveném opakovaném běhu (
tests/clock_library_device_cards_oracle.rs,tests/clock_library_f9p_cards_oracle.rs). - Karty GPS Block IIF s členy na oběh, nový řádek MODELLED (zjištění): na druhém čerstvém okně (2026-04-01 až 14) 9 z 11 v rámci prahu; G03 (1,947) a G25 (1,581) jsou optimistické, protože jejich vynechané záznamy jsou hlučnější než jejich fitované třetiny; vynechání periodických členů selže u všech 11 (předregistrováno fb475550;
tests/clock_library_periodic_cards_oracle.rs). - M002, odhad stavu palubních hodin, kolo 3 (zjištění, zůstává MODELLED): po zmrazeném detektoru úpravy rozšířený filtr z kola 2, s nezměněným laděním a kritérii, poprvé splňuje (a) a (c) u všech 11 satelitů; (b) selhává u G09 (0,894) a G26 (0,876) (předregistrováno fb475550;
tests/clock_state_ext_igs_conditioned_oracle.rs). - M010, detekce spoofingu, kola 3 až 4b (zůstává MODELLED): kolo 3 blokováno (167 trénovacích epoch z ostatních relací jednotky JammerTest proti 3600); s kartou třídy modelu ZED-F9P (kola 4 a 4b) monitor hodin vyvolá nula falešných poplachů před nástupem u všech 10 zaznamenaných nástupů (kolo 2: 86) a 6 z 10 nástupů je detekováno do 10 s (kolo 2: 4); stejné čtyři zůstávají pozdní (
tests/clock_library_tcxo_card_jammertest_oracle.rs). - M083, horní mez UTC(k), kolo 3: předregistrováno prospektivně (fb475550) na číslech Circular T od 465, zatím nespuštěno (
tests/utck_bound_prospective_oracle.rs). - Prostředí orákula: záznam Wroclaw ZED-F9P je podmíněn přístupem k datům pod
$KSHANA_ORACLES/data/wroclaw_f9p(CC BY 4,0, asi 1,5 GB); fixture IGS hodin jsou přibalené (produkty IGS, s uvedením zdroje). - Revize: žádné. Žádný golden soubor, zveřejněný obrázek ani stávající testovací hodnota se nemění; M001 (znovukotvení holdoveru) se neuplatňuje, protože žádná třída hodin nebyla povýšena.
D8, jedna ověřená cesta propagace, soustavy a času (tři nové řádky VALIDATED a povýšené M131: 235 -> 238 řádků, ověřených 117 -> 121).
Druhy drah kolem Země, které nesly vlastní dvoutělesové, sekulární J2 nebo jen hvězdnočasové modely, nyní sdílejí jednu cestu: sady elementů SGP4/SDP4 s dvoudílnými juliánskými daty, převedené do GCRS a ITRS (International Terrestrial Reference System) řetězcem IAU (International Astronomical Union) 2006/2000A, s volitelnými parametry orientace Země.
- Nové
sgp4::MeanElementSet,sgp4::SgpOrbit,sgp4::Eop,sgp4::teme_to_itrs_matrix[_eop]asgp4::gcrs_to_itrs_matrix[_eop];Sgp4::new_ataSgp4::propagate_atberou dvoudílné epochy. Novéjd2::Jd2::from_utc_calendar(konvence SOFAdtf2dpro dny s přestupnou sekundou),jd2::utc_to_tai,tai_to_utc,utc_to_ut1(přes TAI, jako SOFAutcut1),tai_to_tta dvoudílnéjd2::earth_rotation_angle. - Polární režim
leo-pvtpropaguje pomocí SGP4 v 2026-01-01T00:00:00 UTC na řetězci IAU (leo_fusion::polar::latitude_sweep_atbere libovolnou epochu); generátor SGP4 Walker se otáčí do pevné soustavy Země přes řetězec IAU. - Druh
passesspouští nový prediktor zdánlivých přeletů (passes::predict_passes_apparent,apparent_look_angles): SGP4 na řetězci IAU, refrakce ITU-R P.834-9 a světelný čas downlinku (nové přepínačerefractionalight_time, ve výchozím stavu zapnuté), parametry orientace Země (ut1_minus_utc_s,xp_arcsec,yp_arcsec, výchozí 0), průchody řešené s přesností 1e-7 s a kulminace hledáním zlatým řezem. Geometrickýpasses::predict_passesse nemění. tests/no_private_models.rsbrání tomu, aby jádra geometrie, času a propagace balíčku nesla soukromou keplerovskou propagaci, sekulární rychlosti J2 nebo rotaci jen podle hvězdného času; pojmenované rychlé úrovně a fyzika, která je předmětem řádku, jsou odůvodněné výjimky.- Nový řádek VALIDATED „Dvoudílná juliánská data a přestupné sekundy na časové cestě drah kolem Země“: pyerfa 2.0.1.5
dtf2d/utctai/taiutcna 224 okamžicích kolem všech 27 přestupných sekund v rámci 1e-6 s (předregistrováno e947e69d); nejhorší 1.9e-11 s. - Nový řádek VALIDATED „Jedna cesta drah kolem Země“: polohy TEME pro 232 sad elementů proti python-sgp4 2,24 (Valladova referenční SGP4) v rámci 6.1e-8 m (práh 1 cm) a rotace GCRS -> ITRS a TEME -> ITRS proti ERFA
c2t06a,pnm06aaee06av rámci 2.9e-6 mas a 0,41 mas (prahy 0,1 a 2 mas), s parametry orientace Země (předregistrováno 72ea9eb0). Zveřejněno: první běh selhal v 2016-12-31T23:59:59,5 o jednu sekundu rotace; UT1 se bral z kvazijuliánského data UTC ve dni s přestupnou sekundou, engine nyní jde přes TAI a druhý běh se shoduje při nezměněných prazích. - M131 „Pokrytí LEO a zhoršení přesnosti pro polární a arktické uživatele oproti MEO GNSS“ se stává VALIDATED: Orekit 13.1.8 přebírá stavy GCRS enginu, otáčí je a počítá viditelnost a DOP (NumPy pro skupiny s více hodinami); polohy v rámci 6.8e-5 m (práh 0,2 m), počty satelitů v dohledu shodné na 4040/4040 vzorcích, mediánový DOP v rámci 2.3e-11 relativně.
- Nový řádek VALIDATED „Predikce zdánlivých přeletů pozemní stanice s refrakcí a světelným časem“: Orekit 13.1.8 propaguje stejné sady elementů v TEME, který si sestaví podle uvedené definice, s refrakcí ITU-R P.834 a jejím modelem měření světelného času, na 60 případech u stanic na úrovni moře: 1210 přeletů, průchody v rámci 3.4e-6 s (práh 5 ms), maximální elevace v rámci 5.5e-7 stupně, zdánlivý směr v rámci 8.8e-7 stupně (práh 1e-4 stupně).
- Zjištění, ponechaná připnutá: první porovnání úplného tvrzení s Orekit od začátku do konce minula své prahy polohy a směru, nikoli kvůli enginu, ale proto, že SDP4 v Orekit 13.1.8 se odchyluje od referenční SGP4 u kruhových (e = 0) drah v hlubokém vesmíru (až 67 m) a jeho výchozí TEME je postaven na nutaci IERS 1996 (IAU 1980), asi 72 milivteřin oblouku od řetězce IAU 2006/2000A (2,7 m na LEO). Koeficient refrakce ITU-R P.834 u h*theta0^2 je v Orekit 0,011380, kde Doporučení uvádí 0,01380; porovnání je na úrovni moře, kde tento člen mizí, a rozdíl nad ní je připnut.
- „Predikce přeletů pozemní stanice (pozemní segment)“ zůstává VALIDATED, jeho tvrzení je zúženo na geometrický
passes::predict_passes; druhpassespatří novému řádku. - Prostředí orákula: Orekit 13.1.8 s Hipparchus 4.0.3, pyerfa 2.0.1.5, python-sgp4 2,24 (
xval/d8-orekit13/setup.sh). - Revize: přibalený
scenarios/passes.tomlcelkový přístup 1675 s -> 1659 s (pět přeletů jako dříve; nejlepší maximální elevace 73,25 stupně -> 70,08 stupně) a každý výstuppassesse mění s novou cestou (vytištěný řádek vdocs/examples/multi-tool-pipeline.mda záznampassesvdocs/CAPABILITY.mdto nyní uvádějí); přibalenépolar-arctic-leo-coverageGNSS VDOP na rovníku 1,19669 -> 1,19710, při 89,9 stupně 1,50645 -> 1,50590, fúzované VDOP při 89,9 stupně 1,14388 -> 1,14250 (zveřejněné dvoumístné hodnoty 1,20, 1,51 a 1,14 se nemění). Žádný golden soubor se nemění. - Zatím nesměrováno:
leo_pass, režimy doppler, joint a timingleo-pvta pravá dráhaleo_navmsg(jejich modely žijí vleo_link::geometryaleo_fusion::geom) a návrhy pro Zemi vconstellation-design(pojmenovaná dvoutělesová rychlá úroveň).
D6, referenční generátor LunaNet AFS, LSIS V1.0 (čtyři nové řádky, dva VALIDATED: 238 -> 242 řádků, ověřených 121 -> 123).
- Referenční generátor LunaNet Augmented Forward Signal (AFS) (
lunar_afs), připnutý k LunaNet Signal-In-Space Recommended Standard (LSIS) V1.0 z 29 ledna 2025 a uvádějící tuto verzi v každém výstupu: nosná 2492,028 MHz; datový kanál AFS-I BPSK(1) rychlostí 500 symbolů za sekundu s Goldovým kódem o 2046 čipech; pilot AFS-Q BPSK(5) s Weilovým primárním kódem o 10230 čipech, sekundárním o 4 čipech a terciárním o 1500 čipech; rámec s identifikátorem rámce 0 (synchronizační vzor, podrámec 1 BCH (51, 8), CRC-24, podrámce 2 až 4 s LDPC o rychlosti jedna polovina, blokový prokladač 60 krát 98) s vyčerpávajícím dekodérem podrámce 1 a dekodérem LDPC min-sum napsaným pouze z matice paritních kontrol; a syntézu IQ v základním pásmu s popisky pravdy zapsanou jako nahrávka SigMF. Kódy se generují z posuvných registrů standardu a konstrukcí Legendre/Weil. Nic zkopírovaného ze standardu se nerozšiřuje (nenese žádné podmínky opětovného použití): primární indexy AFS-Q pocházejí z IS-GPS-800J a to, co definují jen přílohy standardu (zpoždění G2 u AFS-I, terciární kódy, podmatice LDPC), se čte za běhu z lokální mezipaměti, kterouxval/lunar-afs/fetch_lsis.shnaplní z PDF hostovaného NASA, přičemž každý soubor je ověřen proti připnutému SHA-256 (lunar_afs::lsis). Model je referencí shody se standardem, nikoli modelem kanálu, šíření ani rozpočtu spoje. sigmf::meta_to_json_with_extensionsasigmf::annotation_extension_fields: nahrávka může nést pole rozšíření s jmenným prostorem deklarovaná vcore:extensions.- Nový řádek VALIDATED „Vykreslení základního pásma LunaNet AFS proti nezávislému generátoru, při daném stavu jeho kanálů“: proti LANS-AFS-SIM (BSD-2-Clause, commit 480c6bf3, build pro pásmo S) nulové neshody čipů v kódech PRN 1 až 210, nulové neshody symbolů ve třech rámcích běhu a normalizovaná komplexní korelace 0,999990 na 23,9 s jeho vlastních vzorků (nejhorší blok 2 ms 0,999948), v rámci prahů stanovených před porovnáním (předregistrováno 986ac280). Vykreslovač řídí vlastním stavem kanálů simulátoru a nepokrývá rozdělení výkonu podle poměru nosné k šumové hustotě ani zápis SigMF a 8bitový zápis.
- Nový řádek VALIDATED „Kanálové kódování rámců LunaNet AFS, FID 0“: rámce o 6000 symbolech se rovnají rámcům LANS-AFS-SIM symbol po symbolu (předregistrováno 986ac280); kód podrámce 1 reprodukuje vzorový příklad z obrázku 8 LSIS a CRC-24 kontrolní hodnotu katalogu CRC-24/LTE-A.
- Oba povýšené řádky jsou podmíněny přístupem k datům v mezipaměti LSIS: jejich test orákula se s oznámením přeskočí, dokud nebyl spuštěn
xval/lunar-afs/fetch_lsis.sh. - Zjištění (nový řádek MODELLED), „Generování rozprostíracích kódů LunaNet AFS“: z 2 937 232 generovaných čipů a bitů porovnaných s tabulkami standardu a soubory Přílohy 3 se jeden liší, „posledních 24 čipů“, které Tabulka E-5 uvádí pro terciární PRN 147, což duplikuje buňku PRN 151, zatímco vlastní soubor Přílohy 3 standardu se shoduje s generátorem. Kritérium nulové neshody je minuto.
- Zjištění (nový řádek MODELLED), „Dekódovatelnost LunaNet AFS v uzavřené smyčce“: tři předregistrované běhy proti PocketSDR-AFS; třetí splnil své prahy sledování a dekódování plně, ale ne svou pojistku, že build přijímače jen s tiskem reprodukuje log připnutého buildu, protože dva běhy neupraveného přijímače se již liší v záznamech akvizice.
- Opraveno: výchozí nosná u
lunar_service(export_antenna.carrier_hz),lunar_jammingaattack_surfacebyla zaokrouhlených 2,4 GHz; nyní je to nosná AFS podle LSIS-020, 2492,028 MHz. Při starém výchozím nastavení byla ztráta ve volném prostoru podhodnocena o 0,327 dB. - Revize: žádné. Každý přibalený scénář uvádí svou nosnou a výsledky všech 138 souborů scénářů jsou bajt po bajtu shodné s předchozím main.
D7, skutečné lunární IQ a GPS LNAV (sedm nových řádků, žádný VALIDATED: 242 -> 249 řádků, ověřených 123 beze změny).
portable_math::FftPlan: rychlá Fourierova transformace (FFT) se smíšeným základem, jejíž výstup má na každé platformě stejné bity; připnutý SHA-256 transformací o 8000 a 24000 bodech prochází na x86_64 i na wasm32-wasip1 (runner vxval/portable-fft-wasm/).acquisition: paralelní hledání fáze kódu na vzorkovaném IQ (pcps_acquire,pcps_grid) s koherentním skládáním, nekoherentní akumulací, prahem chí-kvadrát pro pravděpodobnost falešného poplachu v celém hledání a statistikou průměrování buněk pro šum omezený pásmem;refine,prompt_seriess kódovým Dopplerovým posunem a estimátory poměru nosné k šumové hustotě (C/N0) M2M4 a vrcholu mřížky.gps_lnav: kodér starší navigační zprávy (LNAV) IS-GPS-200 pro podrámce 1 až 3, s paritou podle Tabulky 20-XIV a dekodérem polí.realdata::ion_sdr: čtečka standardu ION GNSS SDR Metadata Standard (.sdrx) a jeho vzorkových souborů, sto_mid_risepro úrovně v doplňkovém kódu.realdata::lugre: hlavička dávky LuGRE (Lunar GNSS Receiver Experiment) IQS, telemetrie RAW, ACQ a NAV a soubory CLK a kontrola, která uvádí, kde metadata.sdrxodporují binární hlavičce.antenna::GainPattern2Da vearth_gnss_lunartěleso řízené stáčením (yaw-steering), vysílací azimut a úhly mimo nadir atransmit_side_dbpro relativní C/N0 s měřenými diagramy.Kódování navigační zprávy GPS LNAV (nový řádek, zůstává MODELLED po poverifikaci integrátora): na vysílaném souboru IGS z 2 března 2025, zpracovaném a dekódovaném RTKLIB v2.4.2-p13, všech 960 slov projde paritou, všech 96 podrámců se dekóduje a všech 608 vysílaných celých čísel se rovná těm Kshany (
tests/gps_lnav_rtklib_integer_oracle.rs), ale předregistrace (d4d9eb9d) se dostala do veřejné větve dvě sekundy po commitu obsahujícím výsledek, takže pořadí „zaregistrováno před stažením souboru“ nelze prokázat a řádek není povýšen.realdata::ion_sdrplní slova od nejvýznamnějšího bitu (I ve vyšší půlce bajtu LuGRE; dřívější čtení dávalo sdružený signál), staré čtení ponechává jakoSdrLayout::fill_lsb_firsta čte vzorky širší než slovo.acquisition::refine_doppler_coherent: fázově koherentní zpřesnění Dopplerova posunu (0,2 Hz RMS při 30 dB-Hz za 200 ms v simulaci).GPS L1 C/A proti gps-sdr-sim: čipy a paritní bit přesně; 230 z 1152 polí LNAV se liší o jednotku, protože gps-sdr-sim ořezává tam, kde vysílané celé číslo vyžaduje zaokrouhlení.
LNAV dekódované RTKLIB: veškerá parita a podrámce projdou a každý parametr je v rámci poloviny kvanta; 41 škálovaných hodnot se liší o několik jednotek na posledním místě kvůli desítkové konstantě 2^-43 v RTKLIB, nad registrovaným prahem.
Akvizice LuGRE proti GNSS-SDR 0.0.19: 266 z 266 rozhodnutí se shoduje, 250 umístěno do téže buňky; většina pozitiv je artefakty průměru −0,5 v holých 4bitových úrovních; větev C/N0 neměla současná letová data. Dvě dávky (OP5, OP12) byly omylem vyloučeny: jejich metadata se shodují s hlavičkami, ale čtečka tehdy neuměla číst vzorek širší než slovo.
Akvizice LuGRE proti Dopplerovu posunu předpovězenému z dráhy: při rozhodnutí podle výkonu vzorků překračuje práh každé hledání na šumu omezeném pásmem; při rozhodnutí průměrováním buněk se nejsilnější dvojice shodují velikostí s obráceným znaménkem, což ukazuje, že registrované pořadí I/Q je sdružené k datům.
Slepá akvizice na lunárních povrchových dávkách: čtyři dávky každá akvirují jeden satelit (předpovězen jako viditelný, žádný falešný poplach při 1e-7), žádná dva, takže práh rozdílu Dopplerových posunů nemá žádný pár k hodnocení.
Relativní C/N0 ve vzdálenosti Měsíce (M039 přeformulováno): 15 záznamů Block IIR/IIR-M a jeden pár, příliš málo pro registrovaný práh.
Revize: žádné; žádné zveřejněné číslo, golden soubor ani obrázek v dokumentaci se nezměnily.
Řádek M039 „GNSS Země ve vzdálenosti Měsíce“ přeformulovává své tvrzení ve vzdálenosti Měsíce jako relativní C/N0 mezi satelity v jedné epoše plus viditelnost (absolutní C/N0 se netvrdí); zůstává MODELLED. Nejvyšší NOTICE nese uvedení zdroje LuGRE CC BY 4,0.
Opraveno#
- Lunární orientace hlavních os z DE440 se nyní interpoluje po geodetice mezi denními uzly. Dřívější interpolace po prvcích měla chybu až 2.0e-4 rad (340 m na lunárním povrchu) poblíž čtvrtinových bodů každého dne, nikoli „asi 14 m“, jak řádek uváděl. Jeho uživatelé (geometrie lunárního laserového měření vzdáleností, lunární datum, lunární pozorovatelnost poruch) dostávají opravenou orientaci.
- Opravy enginu v kole 2, každá znovu spuštěná proti své nezměněné předregistrované toleranci: vintage IERS řádku EOP se čte z jeho příznaků I/P místo z prázdného bloku Bulletinu B;
snapshot_raimpoužívá geodetickou lokální úroveň; lunární vazba rychlostní soustavy používá rovníkový poloměr, J2 a rotaci; fit liu22 začíná od nulových korekcí bez priorů a používá rychlost středního pohybu z článku; rozestup uzlů EO nese nodální regresi J2; doba do proklouznutí cyklu u Costase používá rho/4; společné řešení uplatňuje vysílané skupinové zpoždění dvojice; lunární společné řešení používá krok QR; mez NTN se vyhodnocuje na pravé poloze; referencí hodin v návrhu konstelací je nejnižší konstelace v dohledu; řada orientace DE440 pokrývá 2014-2030 a mimo ni hlásí chybu místo ořezání.
Přidáno#
leo_navmsg::truth::TruthOrbit::from_ecef_states, pravá dráha sestavená z tabelovaných stavů v pevné soustavě Země, používaná porovnáním fitteru skutečných drah.- Testovací soubory a fixture výše uvedených porovnání, každý se svým generátorem a souborem
NOTICE.mduvádějícím zdroj, licenci, datum stažení a SHA-256. - Kolo 2:
araim_reference::add_v42_protection_levelsa_ecef(detekce poruch podle ADD v4.2, podle Stanford MAAST pro ARAIM 2, oznámení BSD-3 ve zdroji);raim::snapshot_raim_fde;cw_dynamics::second_order_correctionapropagate_second_order; devítistavový model chyby INSinertial::coast::ErrorDynamics; parciální derivacelunar_vlbi::KernelGeometrya vstupylunar-vlbina cestě přes jádro;naif_kernel, čtečka jader SPK typu 2 a binárních PCK;lunar_llr_geometry::llr_bcrs_one_way_mse stanicemi ITRF2020; hustota Jacchia 1971;solar_system::link_onpřes libovolného poskytovatele efemerid;launch::site_rotation_speed_at;eo_payload::j2_nodal_periodaground_track_spacing_equator_j2;batch_ls::gauss_newton_qr;precise_products(čtečky RINEX hodin, ANTEX a DCB).
[0.29.3] - 2026-10-01#
Záplatové vydání nad 0.29.2. Kshana Studio je přestavěno kolem dvou pohledů: Jednoduchého, který nejdřív odpovídá a vysvětluje prostými slovy, a Pokročilého s úplným panelem. Přicházejí s ním dvě drobné opravy na kshana.dev. Engine se nemění: každý přibalený scénář dává výsledek bajt po bajtu shodný s 0.29.2 kromě otisku verze.
Změněno#
- Kshana Studio má Jednoduchý pohled. Právě ten se ve Studiu otevírá.
- Odpověď je na prvním místě: scénář se otevře svým výsledkem, vyjádřeným jednou prostou větou. Každý přibalený scénář má vlastní větu, napsanou pro to, co daný scénář měří.
- Zobrazeno je nejvýše pět nastavení, ta, která odpověď mění nejvíce. Zbytek je pod „Pokročilá nastavení“, sbalený, dokud jej neotevřete.
- „Jak se to počítá“ vysvětluje metodu v několika řádcích a „Pro výzkumníky“ uvádí vlastní hodnoty enginu, soubor scénáře a důkazy za výsledkem.
- Úplný panel je Pokročilý pohled. Je tu každý panel, graf, export a zpráva dřívějšího Studia.
- Přepínač přepíná mezi oběma pohledy a zachovává vaše místo. Scénář, pohled, na kterém jste byli, a všechna upravená nastavení se přenesou. Studio si pamatuje, který pohled jste použili naposledy. Odkazy z webu a dokumentace otevírají Jednoduchý pohled; odkaz s
view=advancedotevře Pokročilý pohled a každý dřívější odkaz na Studio stále otevírá stejný scénář a pohled. - Rychlejší první pohled na pomalém připojení. Zaznamenaná odpověď pro scénář se vykreslí dříve, než se načte zbytek Studia, takže na pomalém mobilním připojení se odpověď zobrazí asi za dvě sekundy místo asi devíti.
- Lepší vyhledávání. Hledání nyní nejdřív uvádí scénáře, jejichž oblast nebo název odpovídá hledaným slovům, před scénáři, které je zmiňují jen v názvu souboru nebo v textu.
Opraveno#
- Globus na domovské stránce už při omezeném pohybu nezůstane prázdný. Při zapnutém systémovém nastavení omezeného pohybu mohla změna velikosti okna nechat úvodní globus prázdný, dokud se stránka neposunula. Globus se nyní překreslí ve stejném snímku jako změna velikosti.
- Konzole pásma L na domovské stránce vysvětluje své prázdné pásmo. V „Sledujte, jak rušič zabere pásmo“ zůstal panel GPS L5 / Galileo E5a celou minutu tmavý, což vypadalo jako porucha. V tomto scénáři v tomto pásmu žádný rušič nevysílá a signály satelitů leží pod úrovní šumu, takže se tam nic nad ni nevznáší. Tichý popisek to nyní uvádí v každém úseku panelu, kde není nic nad úrovní šumu (panel L5 / E5a a panel L2C, než začne jeho šumový rušič), s C/N0 a stavem zachycení každého pásma ze stejného běhu. Zobrazuje se jen tam, kde není nic nad úrovní šumu, takže nikdy nezakrývá energii rušiče.
0.29.2 - 2026-10-01#
Záplatové vydání nad 0.29.1. Odstraňuje duplicitní kód v modulech navigační zprávy LEO, fúze a spektra, přidává světlé téma na kshana.dev, přesouvá Kshana Studio na vlastní adresu, činí web čitelným pro vyhledávače a AI asistenty, opravuje několik drobností ve Studiu a umožňuje vydání npm bez uloženého tokenu. Žádný výstup enginu se nemění: každý přibalený scénář dává výsledek bajt po bajtu shodný s 0.29.1 kromě otisku verze.
Přidáno#
- Světlé téma pro kshana.dev. Každou stránku lze číst světlou i tmavou. Web sleduje systémové nastavení čtenáře a má přepínač pro jeho změnu.
- Vyhledávače a AI asistenti mohou web číst. Každá stránka má nyní vlastní titulek, popis, kanonickou adresu, značky sociálních karet a strukturovaná data schema.org a prostý text pro sekce, které vykresluje skript. Web zveřejňuje
robots.txt,sitemap.xmls datem poslední změny každé stránky,llms.txtallms-full.txt(krátký a úplný prostý průvodce pro AI asistenty) a klíč IndexNow, aby nasazení mohlo vyhledávačům říct, co se změnilo. - Vydání npm lze publikovat bez uloženého tokenu. Úloha npm nyní běží na Node 24 a npm 11.5.1 nebo novějším, které podporují trusted publishing npm: npm vymění identitu GitHub úlohy vydání za krátkodobé přihlašovací údaje. Tajný klíč
NPM_TOKENstále funguje a používá se, dokud je nastaven, takže se nic nemění, dokud se pro balíček na npmjs.com trusted publishing nezapne.docs/RELEASING.mduvádí kroky.
Změněno#
Titulek domovské stránky je nad globusem čitelný. Za titulkem a jeho textem je nyní jemný stín, který tlumí orbitální čáry a tečky satelitů animovaného globusu tam, kde jej protínají.
Kshana Studio má vlastní adresu: https://kshana.dev/studio/. Odkazuje na ni každý odkaz na webu a v dokumentaci. Stará adresa,
/playground/, stále funguje a přesměruje na novou se zachovaným scénářem, pohledem a dalšími nastaveními v odkazu.Opravy Studia. Soubor enginu se stahuje jednou místo dvakrát. Během stahování Studio okamžitě ukazuje zaznamenaný výsledek scénáře, označený jako zaznamenaný, místo prázdné obrazovky. Na telefonu je záhlaví jeden kompaktní řádek. Klíčové hodnoty se zalamují po dvou na řádek, takže žádná není skryta za okrajem obrazovky. Popisky polí používají vlastní slova scénáře s názvem pole vedle nich a hledání najde pole podle obojího.
Méně duplicitního kódu. Tabulka jednotek navigační zprávy LEO zapisovala stejných deset řádků statistik SISRE pro čtyři shrnutí fitu. Nyní je zapisuje jednou makro. Dva spektrální grafy typu vodopád sdílejí jednu časovou osu, barevnou stupnici a panel C/N0. Podvzorkování hlavní mřížky znovu používá
downsample_grida Simpsonův integrál znovu používánavsignal::simpson. Dva vstupní body druhu přeletu LEO sdílejí jeden krok nastavení.leo_link::geometryimportuje pomocné vektorové funkceleo_fusion::geommísto jejich kopírování. Pokročilá zpráva importuje HTML escape zprávy API místo jeho kopírování. Každý z 139 souborů scénářů vscenarios/byl spuštěn na 0.29.1 i na tomto kódu a každý výstupní soubor je bajt po bajtu shodný.Tabulky jednotek leo-navmsg a leo-pvt mají vlastní soubory. Přesunuly se z modulů, které obsahují i logiku, do
src/leo_navmsg/units.rsasrc/leo_fusion/pvt_units.rs.PVT_UNITSsi ponechává svou veřejnou cestu. Pouze tyto dva soubory tabulek se přidávají k výjimkám detekce kopírování kódu pro deklarativní katalogy vsonar-project.properties, které kontrolujetests/sonar_cpd_exclusions_are_justified.rs.
Opraveno#
- Odznak CI v README ukazuje výsledek pushů do main. Odznak počítal běhy každé události na main, takže mohl hlásit „failing“, i když byl každý běh push zelený; nyní se ptá jen na běhy push (
event=push).
0.29.1 - 2026-10-01#
Záplatové vydání nad 0.29.0: změřená hodnota pokrytí, řádek s názvem projektu na kshana.dev, rychlejší úloha pokrytí a obnovené README. Žádný výstup enginu se nemění: každý scénář dává stejný výsledek jako na 0.29.0.
Revize zveřejněných čísel#
- Pokrytí řádků: ~96 % → ~95 %. Úloha pokrytí znovu změřila vydaný kód 0.29.0 (commit
db796dd, běh CI 36809850252, 2026-10-01): 95.35 %, 55 970 z 58 697 řádkůsrc/. Zveřejněná hodnota byla 95,63 % (37 697 z 39 419 řádků), změřená nab1d350dpřed 0.28.0; zaokrouhlovala se na ~96 %. Nová hodnota se zaokrouhluje na ~95 %, takže se společně mění každý povrch, kterýtests/coverage_figure_doc_sync.rspřipíná:docs/COVERAGE.md, odznak README, řádek Evidence a tabulka CI, odznaky crates.io, PyPI a npm, technická zpráva a stránka pokrytí na kshana.dev. Spodní mez 85 % se nemění.
Přidáno#
- Řádek s názvem na kshana.dev. „Kshana · क्षण · the precise instant“ nyní otevírá úvod domovské stránky a sedí pod značkou v patičce každé stránky. kshana.dev stále nevytváří žádný požadavek na jiného hostitele: devanágarí je vlastní hostovaná podmnožina Noto Sans Devanagari tří písmen क्षण (1 692 bajtů,
web/fonts/, s textem licence SIL Open Font License a jeho SHA-256 vweb/fonts/FONTS.json).web/tools/fetch_third_party.pyse naučil uložit podmnožinu Google Fontstext=pod název souboru adresovaný obsahem.
Změněno#
- Odkazy webu dopadají tam, kam míří, na čistých adresách. Odkaz na sekci nyní staví tuto sekci těsně pod záhlaví, na telefonu i na stolním počítači: odkaz na sektor Mise otevře tento sektor s jeho panelem nahoře; odkazy Schopnosti a Edice drží své místo, zatímco se vykreslují grafy nad nimi; Edice už nepřidávají druhý posun záhlaví; a odkaz do sbalené části stránky dokumentace ji otevře. Každá stránka je odkazována svou čistou adresou (
/evidence#research,/docs/changelog,/pro domovskou) a kanonické odkazy, mapa webu a přesměrování ze starých adres uvádějí totéž; adresy.htmlstále fungují. Výzkum má vlastní odkaz v záhlaví mezi Důkazy a Vývojáři a v patičce. Dokumentace už neukazuje plán (ROADMAP.mdzůstává v repozitáři): skupina Projekt je Changelog, Licencování, Bezpečnost, Přispívání, Správa a Kodex chování a Slovník se přesunul do Začínáme. - Úloha pokrytí je rychlejší. Na 0.29.0 trvala 143 minut oproti zdravým 91 až
- Fuzzer
tests/property.rs, příčina minule, zabral 4 z nich. Přibalený korpus vzrostl ze 74 na 139 scénářů a tři testovací binárky jej procházely celý po jednom souboru (determinismdvakrát,advanced_reportaanimationjednou): dohromady 37 minut pod instrumentací pokrytí, oproti 3 na 0.27.2. Nyní sdílejítests/support/corpus.rs, který práci na jednotlivých scénářích spouští na každém jádře a vrací výsledky v setříděném pořadí; každý scénář a každé tvrzení zůstává. Na laptopu arm64, debug build:determinismtrvá 143 s na 14 jádrech oproti 612 s sKSHANA_CORPUS_THREADS=1(starý sériový průchod).
- Fuzzer
- README, osvěžený. Začíná stejným řádkem s názvem jako web; snímky obrazovky Studia jsou pořízeny znovu ze Studia 0.29.1 a přibyl nový snímek Studia na telefonu s jeho spodní lištou kroků; nový pruh „Web“ ukazuje tři stránky kshana.dev ze sestavení 0.29.1 (
tools/capture_site_shots.mjs, složeno pomocítools/readme_shots.pya zaznamenáno vdocs/assets/readme/site/SHOTS.json); údaj o pokrytí je ~95 %; a alternativní text obrázku o výzkumu, který opakoval text obrázku o architektuře, nyní popisuje články. Odznaky v záhlaví jsou menší a kratší (výška 18 px; „~95%“, „83/223“, „quality“, „AGPL-3.0“, „zenodo.20528627“), takže se všech jedenáct vejde na dva řádky; každý odkaz i alternativní text si zachovává plný význam. - Úloha sestavení kontejnerového obrazu dostává 90 minut. Ve verzi v0.29.0 narazilo emulované sestavení obrazu
kshana-mcppro linux/arm64 při překladu poslední crate na dřívější limit 45 minut, takže se obraz, záznam v registru MCP ani kontrola kanálu nepublikovaly. Limit je nyní 90 minut; obraz je beze změny. - Osm literálů s plovoucí desetinnou čárkou přeskupeno v
src/ephem.rsasrc/sgp4.rs(0.323_273_64→0.323_273_640): SonarQube Cloud četl poslední skupinu_64nebo_32jako chybějící příponuf64čif32(pravidlo S7454). Hodnoty jsou tatáž čísla, takže všechny výsledky zůstávají beze změny.
0.29.0 - 2026-10-01#
Dvanáct nových druhů scénářů a tři nové způsoby, jak číst běh. Engine nyní pokrývá rádiové spektrum, celou sluneční soustavu, konstelace kolem libovolného tělesa, kampaně, které řetězí scénáře do jedné mise, a určování polohy, navigaci a čas (PNT) z nízké oběžné dráhy Země (LEO) od signálu až po určení polohy. Každý běh lze také zapsat jako animaci, úplnou zprávu a sadu souborů pro interoperabilitu s jinými nástroji.
Kolem enginu: přepracovaný kshana.dev (vícestránkový web a nový dashboard Kshana Studio, který spouští každou schopnost v prohlížeči), přepsaný README, čtrnáct nástrojů na serveru Model Context Protocol (MCP), sestavení pro prohlížeč, které dává stejná čísla jako nativní, a veřejná stránka pro Kshana Pro.
| 0.28.0 | 0.29.0 | |
|---|---|---|
| Druhy scénářů | 63 | 75 |
| Soubory scénářů (plus jeden manifest sady) | 77 | 138, z toho 132 je přibaleno pro kshana example |
| Řádky verifikační matice | 174 | 223 |
| z toho VALIDATED proti vnějšímu orákulu | 66 | 83 |
| z toho MODELLED (uvedený model, zkontrolovaný pouze na vnitřní konzistenci) | 104 | 136 |
| z toho PARTNER (vyžaduje hardware nebo data partnera) | 4 | 4 |
Odkud růst pochází:
| Oblast | Druhy | Soubory scénářů | Řádky matice (ověřené + modelované) |
|---|---|---|---|
| Spektrum | 1 | 1 | 3 (1 + 2) |
| Sluneční soustava a určování polohy kolem libovolného tělesa | 2 | 3 | 6 (2 + 4) |
| Návrh konstelace | 1 | 3 | 3 (2 + 1) |
| Kampaně | 1 | 5 | 3 (0 + 3) |
| Námořní, silniční a železniční scénáře | 0 | 5 | 0 |
| Animace, zprávy, exporty pro interoperabilitu | 0 | 0 | 0 |
| Návrhy signálů LEO a vícepásmové spektrum | 1 | 4 | 4 (2 + 2) |
| Přelet LEO a rozpočet spoje | 1 | 6 | 9 (6 + 3) |
| Navigační zpráva LEO | 1 | 5 | 9 (3 + 6) |
| Určování polohy, časování a fúze v LEO | 3 | 8 | 8 (1 + 7) |
| Řetězec LEO od začátku do konce | 1 | 3 | 1 (0 + 1) |
| Scénáře odolnosti LEO, oblastí zaměření a koncových uživatelů | 0 | 18 | 3 (0 + 3) |
| Celkem přidáno | 12 | 61 | 49 (17 + 32) |
Schopnost LEO je nezávislá na systému: běží na obecných, uvedených parametrech a nepotřebuje žádný pojmenovaný systém. Pojmenované systémy jsou volitelné předvolby, každá ve vlastním souboru s veřejným zdrojem. Jedna předvolba, Celeste IOD (demonstrace na oběžné dráze), používá údaje představené na workshopu ESA NAVISP LEO-PNT, 2026 (ESA je Evropská kosmická agentura; NAVISP je její Program inovací a podpory v oblasti navigace); žije v jediném souboru, src/celeste_iod.rs, spolu s pěti scénáři dostupnými jen v repozitáři, takže ji lze zadržet bez úpravy zdrojového kódu, a žádný z jejích údajů z workshopu se v tomto seznamu změn neopakuje.
Před upgradem si přečtěte „Revisions to published numbers“. Mění se jeden výstup enginu (sloupce inerciální soustavy druhu ephemeris po opravě znaménka v nutační matici) a audit dokumentace opravil údaje, které dřívější dokumenty vytiskly.
Zkratky použité v tomto záznamu
Stavy: VALIDATED znamená ověřeno proti nezávislému vnějšímu orákulu (publikované tabulce, softwaru jiné skupiny nebo naměřeným datům); MODELLED znamená uvedený model zkontrolovaný pouze na vnitřní konzistenci; PARTNER znamená, že kontrola vyžaduje hardware nebo data partnera.
| Zkratka | Význam |
|---|---|
| 3GPP, 5G, NTN | 3rd Generation Partnership Project; mobilní síť páté generace; nepozemská síť |
| AD, BC | letopočetní éry (anno Domini, před Kristem) |
| AIAA | American Institute of Aeronautics and Astronautics |
| AltBOC, BOC, BPSK, MBOC | alternativní binární offsetová nosná; binární offsetová nosná; binární fázové klíčování; multiplexovaná binární offsetová nosná (modulace signálu) |
| ATOMIC | Autonomous Time and Orbit Determination for Microsatellite Constellations (publikovaný model efemerid LEO) |
| C/A, L1, L2, L2C, L5 | kód hrubého určování (coarse/acquisition) a názvy nosných a civilních signálů systému Global Positioning System |
| C/N0 | poměr výkonu nosné k hustotě šumu |
| CIO | Celestial Intermediate Origin (nebeský přechodný počátek) |
| CLI | rozhraní příkazového řádku |
| CRC-24Q | 24bitová cyklická redundantní kontrola (polynom Qualcomm) |
| CSAC | čipové atomové hodiny |
| CSS, HTML, SVG, XML | Cascading Style Sheets; HyperText Markup Language; Scalable Vector Graphics; Extensible Markup Language |
| CSV, JSON, PDF, TOML, URL | hodnoty oddělené čárkami; JavaScript Object Notation; Portable Document Format; Tom's Obvious Minimal Language; jednotný lokátor zdrojů |
| CW | nemodulovaná nosná vlna |
| CZML, KML, GeoJSON | Cesium Language; Keyhole Markup Language; Geographic JSON (formáty map a glóbů) |
| DE441 | Development Ephemeris 441 Laboratoře tryskového pohonu (Jet Propulsion Laboratory) |
| DOI | digitální identifikátor objektu |
| DOP, GDOP, PDOP, HDOP, VDOP | zhoršení přesnosti: geometrické, polohové, horizontální, vertikální |
| E1, E5, E5a, E5b | názvy signálů Galileo |
| E3F | název slotu v tabulce konstelace Global Positioning System |
| ECEF | geocentrická soustava pevně spojená se Zemí |
| EE | rovnice rovnodennosti |
| EGM2008 | Earth Gravitational Model 2008 |
| EIRP | ekvivalentní izotropně vyzářený výkon |
| ERFA, SOFA | Essential Routines for Fundamental Astronomy; Standards of Fundamental Astronomy (referenční astronomické knihovny) |
| ESA, NAVISP | Evropská kosmická agentura; její Program inovací a podpory v oblasti navigace |
| FDMA | vícenásobný přístup s frekvenčním dělením |
| GCRF, GCRS | Geocentric Celestial Reference Frame; Geocentric Celestial Reference System |
| GLONASS | ruský globální navigační družicový systém (Global Navigation Satellite System) |
| GNSS, GPS | globální družicový navigační systém; Global Positioning System |
| IAU | Mezinárodní astronomická unie |
| ICD, OS SIS ICD, OS SDD | dokument řízení rozhraní; Galileo Open Service Signal-In-Space Interface Control Document; Galileo Open Service Service Definition Document |
| ICRF | International Celestial Reference Frame |
| IMO | Mezinárodní námořní organizace |
| INS, MEMS | inerciální navigační systém; mikroelektromechanický systém |
| IOD | demonstrace na oběžné dráze |
| IQ | složky ve fázi a v kvadratuře |
| IS-GPS-200 | specifikace rozhraní systému Global Positioning System |
| ISS | Mezinárodní vesmírná stanice |
| ITRF, ITRS, PEF, TEME | International Terrestrial Reference Frame; International Terrestrial Reference System; pseudo-Earth-fixed; true equator, mean equinox (referenční soustavy) |
| ITU, ITU-R | Mezinárodní telekomunikační unie; její Radiokomunikační sektor |
| J/S | poměr rušivého a užitečného signálu |
| J2 to J6, J2000 | zonální harmoniky gravitačního pole; epocha 2000-01-01 12:00 |
| JPL | Laboratoř tryskového pohonu (Jet Propulsion Laboratory) |
| LEO, MEO | nízká oběžná dráha Země; střední oběžná dráha Země |
| MBSE | modelově orientované systémové inženýrství |
| NEES | normalizovaná kvadratická chyba odhadu |
| NeQuick-G | ionosférický model Galileo |
| OEM, SP3, TLE | Orbit Ephemeris Message; Standard Product 3 (přesné dráhy); dvouřádkový soubor elementů dráhy |
| PNT, PPP | určování polohy, navigace a čas; přesné bodové určování polohy |
| PSD, SSC | spektrální hustota výkonu; koeficient spektrálního oddělení |
| RAIM, SQM | autonomní monitorování integrity v přijímači; monitorování kvality signálu |
| RINEX, RTCM | Receiver Independent Exchange Format; Radio Technical Commission for Maritime Services |
| RMS | střední kvadratická hodnota |
| RTKLIB | open-source knihovna pro určování polohy z GNSS, použitá zde jako orákulum |
| SGP4 | Simplified General Perturbations 4 (model dráhy dvouřádkových souborů elementů) |
| SHA-256 | Secure Hash Algorithm, 256 bitů |
| SigMF | Signal Metadata Format |
| SISRE | chyba vzdálenosti signálu v prostoru |
| SPS PS | Standard Positioning Service Performance Standard |
| SRTM | Shuttle Radar Topography Mission |
| STK | Systems Tool Kit (jeho formát souboru efemerid .e) |
| STL | Satellite Time and Location |
| SVID | identifikátor kosmického vozidla |
| T/P/F | celkový počet družic, rovin a fázování konstelace Walker |
| TEC | celkový obsah elektronů |
| UHF | ultra vysoké frekvence |
| UTC | koordinovaný světový čas |
| WGS 84 | World Geodetic System 1984 |
| X1, X5 | názvy signálů systému Xona Pulsar |
Revize zveřejněných čísel#
Změněné publikované číslo je revize a zaznamenává se, nikdy se potichu neopravuje. Toto vydání přináší jednu revizi výstupu enginu a několik revizí údajů vytištěných v dokumentaci.
Výstup enginu
- Redukce TEME→GCRS se otáčela o 2·Δψ: nutační matice měla obrácené znaménko Δψ.
nutation::numatsestavilaRx(−(ε̄+Δε))·Rz(Δψ)·Rx(ε̄), kdeiauNumatod SOFA sestavujeRx(−(ε̄+Δε))·Rz(−Δψ)·Rx(ε̄), takženutation_matrix,nutation_matrix_2000a,teme_to_gcrsagcrs_to_temeotáčely o dvojnásobek nutace v délce, asi 25 obloukových sekund. Každá kontrola řetězce byla vlastnostní test (vlastní rotace, zpětný převod, nenulový příspěvek nutace), který přehlédne chybu ve znaménku; end-to-end test podle Vallada pokrýval TEME→PEF, TEME→ITRF a GCRS→ITRS, ale nikoli TEME→GCRS. Na příkladu z Vallada (AIAA 2006-6753, 2004-04-06) řetězec minul publikované GCRF o 1 145 m; nyní od něj leží 0,11 m a matice se rovnánumatz ERFA na 1e-14.tests/frame_reference_vectors.rs::teme_to_gcrs_matches_vallado_gcrfinutation::tests::nutation_matrix_matches_erfa_numatna starém znaménku selhávají. Test konzistence CIO (Celestial Intermediate Origin) vsrc/cio.rspřičetl výsledný rozdíl ~130 m na vrub „≈ 2·EE“; zbytek je nyní 5 cm a jeho mez je zpřísněna z 250 m na 1 m. Tím se mění publikovaná čísla, zaznamenaná zde jako revize: sloupcegcrs_r_magcrs_v_m_sdruhuephemeris(asi 0,8–1,0 km pro přibalený scénář ISS (Mezinárodní vesmírná stanice); jeho sloupce TEME, pevné k Zemi, pozemní stopy, úhlů pohledu a Dopplera se nemění) aPropagator::position_in_frame/state_gcrspro soustavy GCRS a ITRS. Souhrnný řádek, graf ani zlatý hash žádného přibaleného scénáře tyto sloupce nečte. Nové exporty pro interoperabilitu používají opravený řetězec: poloha CZML první družiceorbit-sgp4-gpssouhlasí s redukcí téhož TLE v ERFA (propagovaného balíčkem Pythonusgp4) na 2,3 cm. - Druh
leo-navmsg, nativně i v sestavení pro prohlížeč. Druh nyní počítá každou transcendentní funkci jednou přenosnou matematickou knihovnou, takže jeho rámec má na každé platformě a v každém sestavení stejné bajty (v režimu Fixed). S tím se posouvá každý údajleo-navmsga stupeňnavmsgvleo-pnt-chain. Druh je v tomto vydání nový, takže se nic z dřívějšího vydání neposouvá, ale posouvají se údaje vytištěné před opravou: kontrolní hodnotadocs/LEO-NAVMSG.mdpro scénář kódování a dekódování byla0x110315a je0x19105F, a SISRE dekódované zprávy je 0,129 cm. Na kshana.dev ukazovala karta Mise proleo-navmsg-fit-interval-tradenejhorší chybu vzdálenosti 1,6 mm při proložení 60 s a 40,3 mm při proložení 900 s; web je nyní sestaven z enginu tohoto vydání a ukazuje 1,8 mm a 46,6 mm. - Mapa stopy rušení na kshana.dev (Mise). Každá z jejích 875 buněk je jeden běh
maritime-strait-jamming, při kterém se mění jen poloha přijímače. Buňky se nyní počítají ze stejných souřadnic na tři desetinná místa, které odkaz buňky „otevřít tento běh“ předává Kshana Studiu, takže buňka ukazuje přesně to, co její odkaz reprodukuje. Průměrný poměr rušivého a užitečného signálu (J/S) 30 buněk se posouvá o 0,1 dB nahoru či dolů; dostupnost sledování se nemění v žádné buňce. Engine dává pro každou buňku v 0.28.0 a 0.29.0 shodné výsledky. - Seedované převzorkování v balíčku WebAssembly (WASM). Sestavení pro prohlížeč losovalo ze stejného seedu jiné indexy bootstrapu a promíchání než nativní sestavení (v režimu Fixed). Interval
quantum-anomaly-detectplochy pod křivkou byl v prohlížeči[0.9901265, 0.9938305]a nyní je nativní[0.99035875, 0.993861]. Žádné nativní číslo se neposouvá.
Údaje vytištěné v dokumentaci
Dokumentace byla slovo od slova auditována proti během enginu tohoto vydání. Kde vytištěný údaj neodpovídal běhu, dokument byl opraven a každá oprava je zde uvedena, staré → nové. Ve všech níže uvedených případech se výstup enginu nezměnil; dokument jej špatně přečetl, špatně zaokrouhlil nebo ho přežil.
- Audit dokumentace stránek o spektru, konstelaci, kampani, animaci, zprávě a interoperabilitě a nový
docs/SOLAR-SYSTEM.md. Každý údaj byl znovu spuštěn tímto enginem. Mění se dvě publikovaná čísla:docs/CONSTELLATION-DESIGN.mduváděl test pokrytí 5 000 družic jako „asi 0,13 s v ladicím sestavení“; to se nereprodukovalo (1,24 s na vytíženém notebooku), takže stránka nyní uvádí podíl předfiltru, který test vypisuje (9,9 % z 19 440 000 testů dvojic), a 0,14 s release binárky pro přibalenýleo-pnt-mega-shell. Tatáž stránka uváděla křížení E3F jako „mimo o 0,050 deg“; žádný test tento údaj nevypisuje, takže stránka nyní uvádí jen práh 0,06 deg, který test vynucuje, a odvození 7,30 oproti 7,36 deg za ním. Žádný výstup enginu se nemění. - Dokumenty LEO-PNT: revidované publikované údaje (znovu spuštěno enginem tohoto vydání).
docs/LEO-SIGNAL.mdobchodní srovnání pásem: ionosférické zpoždění prvního řádu progeneric-sje 3,24 m (bylo vytištěno 3,25 m) a progeneric-c-wide0,77 m (bylo 0,78 m).docs/LEO-NAVMSG.mdkódování a dekódování: SISRE dekódované zprávy bylo vytištěno 0,119 cm, kde běh dal 0,122 cm; stránka nyní tiskne 0,129 cm, údaj po opravě nezávislosti na platformě v části Fixed níže.docs/LEO-PASS.mdprůlet LEO oproti GNSS: o 32 dB menší ztráta volným prostorem ve vrcholu průletu (bylo „26 až 32 dB“). U údajů o signálu a průletu se výstup enginu nezměnil; dokumenty jej špatně přečetly nebo špatně zaokrouhlily. - Tutoriály, ukázkový příklad řetězce a příkaz
/kshana-run, auditované proti enginu tohoto vydání. Revize publikovaných údajů, staré → nové: druhů, které zapisují<scenario>.table.csv, je šest, ne čtyři (leo-navmsgatelecom-timingchyběly;docs/tutorials/README.md,commands/kshana-run.md); průchod studených atomů ½bT² v Tutoriálu 3 je 18 443 s, ne 18 440 s; chyba zpětného převoduoem-interopvdocs/examples/multi-tool-pipeline.mdje naměřených 4.88e-7 km, ne „~1e-7 km“; pásmo holdoveru CSAC v Tutoriálu 2 je 2000–3200 s, které test vynucuje, ne „~2600–4400 s“; Tutoriál 1 cituje řádky SP3 a blok geometrie s přesností, s jakou je engine zapisuje. Žádný výstup enginu se nezměnil. - Stránky o validaci, kvantové technice, SGP4, animaci, tvrzeních a integritě.
docs/VALIDATION.md: vynucená mez simulované jednosekundové Allanovy odchylky hodin s bílým frekvenčním šumem je 20 % (bylo vytištěno 25 %; mez 25 % je ta na křivce v 1, 10 a 100 s); řádek náhodné procházky rychlosti nyní uvádí svou vynucenou mez 20 % vedle pozorovaných asi 12 %; a dostupnost čipových atomových hodin vorbit-gnss-challengedje asi 0,73 (bylo vytištěno asi 0,83).docs/QUANTUM.md: šum na jeden výstřel omezený vibracemi v ukázkovém příkladu studených atomů na stránce je asi 46 násobkem jeho šumového prahu výstřelu (bylo „~45ד; přepočteno 46,49) a rozsah „1–50 µg/√Hz“ pro nasazená zařízení, který odporoval zařízení, jež stránka sama cituje, je nahrazen publikovanými údaji dvou citovaných zařízení.docs/SGP4-VALIDATION.md: nejhorší rozdíl polohy je 4,12 mm (bylo „≈ 4 mm“), s uvedenou družicí.docs/ANIMATION.md: příklad videoenkodéru četl snímky o 24 snímcích za sekundu jako 12; nyní používá 24, frekvenci, kterou uvádí manifest snímků.docs/CLAIMS-VS-REALITY.md: model rušení má 10 testů (bylo 8) a „2,97 m oproti 48,8 m“ u spřaženého filtru je nahrazeno tím, co jeho test vynucuje (chyba polohy spřaženého filtru pod 0,6 násobkem nespřaženého, přičemž vyhrává nejméně 90 ze 100 pokusů).docs/INTEGRITY.md: razítko „Today“ četlo v0.22.0; nyní uvádí toto vydání a dvě schopnosti od té doby vytvořené (režim poruchy celé konstelace a podpůrná zpráva o integritě) odcházejí ze seznamu mezer.
Přidáno#
Spektrum
- Druh scénáře
spectrum: model spektra pásma L a vodopád (src/spectrum.rs,src/sigmf.rs,docs/SPECTRUM.md). Celé pásmo L systémů GNSS jako jedna spektrální hustota výkonu (PSD): GPS L1 kód hrubého určování (C/A) a L2 civilní (L2C) (BPSK(1)), Galileo E1 (multiplexovaná binární offsetová nosná, MBOC(6,1,1/11), nebo BOC(1 1)), GPS L5 a Galileo E5a (BPSK(10)), šumová hladina kT s šumovým číslem přijímače a rušiče s nemodulovanou nosnou (CW), úzkopásmové, s chirpem a se spárovaným šumem na skriptované časové ose. Každý rušič je pro každé pásmo hodnocen svým koeficientem spektrálního oddělení (SSC), z čehož vychází poměr rušivého a užitečného signálu (J/S) a efektivní poměr výkonu nosné k hustotě šumu (C/N0) pro každé pásmo a řádek. Graf je vodopád v SVG s pruhy C/N0; result.json nese mřížku zprůměrovanou po blocích ve výkonu. Volitelné[iq]kreslí model jako vzorky IQ, zapisuje a čte záznam Signal Metadata Format (SigMF) (cf32_le,ci16_le) a porovnává odhad podle Welche s modelem; volitelné[recording]odhaduje skutečný soubor SigMF. Přibalený příkladscenarios/l-band-waterfall-jamming.toml: chirp bere L1 C/A a E1 v 10 s, tón CW na nosné L1 drží C/A na 17,98 dB-Hz po skončení chirpu, zatímco E1, jehož spektrum má v tomto místě nulu, se zotavuje; L5 a E5a zůstávají nedotčeny.- Nový řádek VALIDATED: PSD signálů a SSC, proti hlavnímu laloku BPSK(n) o šířce 2n x 1,023 MHz, lalokům BOC(1 1) soustředěným na +/-1.023 MHz, uzavřeným tvarům podle Parsevala za publikovanými SSC -61.8 / -64.8 / -67.8 dB/Hz a učebnicovému Q = 1 (CW) a 1,5 (spárovaný). Maximum PSD BOC(1 1) leží na +/-0.759 MHz, ne ve středu laloku; test připíná obojí.
- Dva nové řádky MODELLED: vodopád a časová osa C/N0, které se přesně redukují na řetězec druhu
jamming(křížově kontrolováno v každé zprávě), a kodek SigMF s odhadem podle Welche. V repozitáři není žádný záznam třetí strany. navsignal: varianta MBOC aspectral_separation_coeff_offset.- Zpráva tiskne C/N0, které by dala tabulka reprezentativních hodnot Q druhu
jamming, vedle hodnoty odvozené ze spektra; u tónu CW na nosné C/A se liší o 1,8 dB. Tři nové řádky matice: jeden ověřený (spektra signálů a koeficienty spektrálního oddělení) a dva modelované.
Sluneční soustava
- Efemeridy sluneční soustavy a určování polohy kolem libovolného tělesa. Dva nové druhy scénářů.
solar-system: Slunce, osm planet, Pluto, Měsíc, Phobos, Deimos, Io, Europa, Ganymed, Callisto a Titan v jedné epoše: heliocentrická poloha a rychlost v International Celestial Reference Frame (ICRF), gravitační parametr, poloměry, J2 (druhá zonální harmonika), kde je publikována, siderická rotace, pól a nultý poledník podle Mezinárodní astronomické unie (IAU), dráhová stopa po jeden oběh a světelný čas, jednosměrná a dvousměrná vzdálenost, sluneční Shapirovo zpoždění a odchylka od Slunce z tělesa pozorovatele a pro libovolný další spoj. Planety pocházejí z keplerovských elementů Laboratoře tryskového pohonu (JPL) podle Standishe a Williamse (Tabulka 1, 1800 AD až 2050 AD; Tabulky 2a/2b, 3000 BC až 3000 AD); měsíce ze středních elementů JPL se synchronní rychlostí rotace podle IAU a Titan z rotačního modelu IAU. Příklad:scenarios/solar-system-tour.toml.body-pnt: orbiter nebo přistávací modul na povrchu kolem kteréhokoli z těchto těles, navigující pomocí pseudovzdáleností z konstelace Walker kolem tělesa a dvousměrné vzdálenosti bez vlivu hodin od Země; zhoršení přesnosti, formální nejistota a seedované určení polohy metodou nejmenších čtverců s odkazem na Zemi i bez něj. Příklady:scenarios/mars-orbit-pnt.toml,scenarios/europa-surface-pnt.toml.Bodyzískává Merkur, Venuši, Jupiter, Saturn, Uran, Neptun, Pluto a sedm měsíců, vyhledávání podle jména a fyzikální záznam;AnalyticSolarSystemdává libovolné těleso vzhledem ke kterémukoli jinému přes stávající rozhraníEphemerisProvider.- VALIDATED proti JPL Horizons (Development Ephemeris DE441; fixtury a dotazy v
tests/fixtures/solar_system/): Merkur až Saturn a Země z Tabulky 1 v rámci dvojnásobku uvedené nominální chyby (nejhůře 1,87 násobku), všech osm planet z Tabulek 2a/2b (nejhůře 1,71 násobku) a světelný čas Země–Mars a Země–Jupiter. MODELLED: Uran a Neptun z Tabulky 1, které proti DE441 překračují uvedenou chybu (2,0 a 5,2 násobku), Pluto, měsíce, konstanty těles a výsledkybody-pnt. - Zjištění: lunární řada Montenbruck & Gill v
src/ephem.rsje již vlastním členem precese vztažena k rovnodennosti J2000 (0,05 stupně od Horizons), takže se používá bez další precesní rotace. Šest nových řádků matice: dva ověřené (polohy planet, světelný čas) a čtyři modelované.
Konstelace kolem libovolného tělesa
- Návrh konstelací ve velkém měřítku (druh
constellation-design,src/constellation.rs). Vzory Walker delta a Walker star (T/P/F), explicitní seznamy elementů a návrhy z více slupek, několik konstelací v jednom běhu, kolem Země, Měsíce, Marsu či jakékoli jiné planety, Pluta nebo velkého měsíce z konstant těles, které přidal druhsolar-system. Předvolby z publikovaných nominálních elementů: základ a rozšiřitelná 24slotová konstelace Global Positioning System (GPS) (Standard Positioning Service Performance Standard, SPS PS, 2020), Galileo Walker 24/3/1 (Open Service Service Definition Document, vydání 1,1), BeiDou na střední oběžné dráze Země Walker 24/3/1 plus geostacionární a nakloněné geosynchronní družice (Open Service Performance Standard 3,0) a GLONASS 24/3/1 (Interface Control Document 5,1). Pokrytí a zhoršení přesnosti (DOP) na mřížce zeměpisné šířky a délky: družice v dohledu, GDOP, PDOP, HDOP a VDOP (geometrické, polohové, horizontální, vertikální) a dostupnost na buňku, globálně i v nejhorším místě, s jedněmi hodinami přijímače na konstelaci. Prefiltr viditelnosti (poloviční úhel pokrytí plus pás podružicové šířky, přesný na kulovém tělese) zpracuje 5 000 družic na mřížce 10 deg přibližně za 0,13 s v ladicím sestavení.- VALIDATED: generátor Walker reprodukuje tabulku 23 z Galileo OS SDD a vzorec slotů z GLONASS ICD; předvolba GPS reprodukuje sloupec rovníkových průchodů z SPS PS (35 ze 36 míst v rozmezí 0,0108 deg; E3F v rozmezí 0,06 deg, přičemž řádek samotné tabulky je nekonzistentní); globální rozdělení HDOP základu GPS odpovídá příloze B SPS PS (medián 0,940 oproti 0,94, 95% kvantil 1,255 oproti 1,25, průměr 0,965 oproti 0,96; práh 0,03).
- MODELLED: libovolné návrhy, jiná tělesa, uzly fáze BeiDou a nakloněné geosynchronní dráhy, dvoutělesové dráhy s volitelným J2, pouze geometrie.
- Scénáře:
constellation-multi-gnss-coverage(102 družic, dostupnost 100 %, medián PDOP 0,95, 31,0 v dohledu nad 10 deg),leo-pnt-mega-shell(5 000 družic, dostupnost 99,22 % při PDOP 3 nebo nižším nad 20 deg, 0 % na polárních čepičkách, prefiltr ponechává 11,5 % testů dvojic),lunar-relay-constellation(14 družic kolem Měsíce, dostupnost 21,33 % celkově a nejvyšší nad jižní polární oblastí). Všechny tři jsou přibaleny prokshana example. Poznámky:docs/CONSTELLATION-DESIGN.md. Tři nové řádky matice: dva ověřené (generátor Walker a předvolby GNSS, globální DOP GPS) a jeden modelovaný.
- Kampaň řízená modelem spektra a konstelace kolem libovolného tělesa.
scenarios/campaign-spectrum-holdover-integrity.tomlřetězí druhspectrums holdoverem hodin a monitorem integrity (chirp bere L1 C/A a E1; tón CW pak drží C/A dole, zatímco E1 se zotavuje a přijímač přechází na oblohu jen se systémem Galileo), a je připnuta proti samostatnému příkladu vodopádu vtests/campaign_composition_reference.rs.constellation-designnyní určuje své centrální těleso přesBody::by_name, takže lze konstelaci rozložit kolem libovolné planety, Pluta nebo velkého měsíce s konstantami, které používá druhsolar-system.
Kampaně
- Kampaně: mnoho scénářů složených do jednoho běhu. Nový druh
campaign(src/campaign.rs, zdokumentovaný vdocs/CAMPAIGNS.md) spouští členy existujících druhů stejným rozdělováním jako příkazový řádek a čte čísla zpět z jejich výsledků. Čtyři sekce v libovolné kombinaci:[[phases]]: zřetězená mise na jedné časové ose. Předvolby pro jednotlivé druhy čtou časovou chybu hodin proti její ochranné mezi, střední efektivní poměr výkonu nosné k hustotě šumu (C/N0) proti prahu sledování, vertikální ochrannou úroveň proti mezi výstrahy, chybu polohy, sledující družice a příznaky poplachu, držené na společné mřížce s hranicemi fází a událostmi. Stav se předává pomocícarry,handoffaend_at.[sweep]: jeden až tři klíče s tečkou libovolného druhu, volitelně se seedovaným souborem realizací v každém uzlu.[monte_carlo]: realizace k při základním seedu + k, se středem, rozptylem, percentily a bootstrapovým 95% intervalem spolehlivosti s pevným seedem.[compose]: sdílené hodnoty svázané do několika členů, s kombinovaným souhrnem nejlepšího a nejhoršího případu. Každý výsledek nese hash kampaně a souhrn přes každý výsledek člena. Čtyři přibalené scénáře:campaign-jam-spoof-holdover-integrity(nominální stav, rušení, spoofing ukončený při detekci monitorem hodin v 370 s, holdover nesoucí podvržený posun 37,0 ns s inerciální jednotkou v setrvačném pohybu, poplach integrity, zotavení),campaign-sweep-jammer-power,campaign-shared-jammer-sea-roadacampaign-monte-carlo-clock-holdover.tests/campaign_composition_reference.rspřipíná identity složení: jednofázová kampaň reprodukuje samostatný běh bit po bitu u tří druhů, soubor realizací s pevným seedem je bajtově stabilní a u hodin s bílým frekvenčním šumem leží střed souboru uvnitř uvedeného intervalu s rozptylem uvnitř intervalu chí-kvadrát pro sqrt(q_wf * tau) = 16,459 ns. Tři nové modelované řádky matice.
Animace
- Export animace (
--animate svg|html|frames|all,src/animation.rs,docs/ANIMATION.md). Každý běh, jehož výsledek nese časovou řadu, lze nyní zapsat jako animovaný soubor Scalable Vector Graphics (SVG) (klíčové snímky Cascading Style Sheets, žádný skript: průběhy se vykreslují za pohyblivým časovým kurzorem), jediný samostatný přehrávač HyperText Markup Language (HTML) (přehrát a pozastavit, posun, rychlost, každý panel na jednom synchronizovaném kurzoru, značky událostí, které po kliknutí přeskočí; žádný externí prvek) nebo očíslovanou posloupnost snímků SVG smanifest.json, který uvádí snímky za sekundu, trvání a časy snímků pro videoenkodér. Kampaň se přehrává jako své fáze s vyznačenými poplachy; běh spektra animuje svůj vodopád řádek po řádku. Přehrávač respektujeprefers-color-schemea připrefers-reduced-motionukazují SVG i přehrávač místo pohybu hotový obraz.--animate-fpsa--animate-durationnastavují přehrávání;kshana::api::animate_tomlakshana::animation::animate_resultjsou vstupní body knihovny aresult.jsonzískává blokanimationjen tehdy, když běží--animate. Výstup je čistá funkce výsledku a voleb, při opakovaném běhu bajtově shodný, bez časového razítka. Druh bez vzorkované časové osy je odmítnut hlášením „no time series to animate“ a nic se nezapíše. Exportér kreslí vlastní vzorky běhu a nepřidává žádné číslo, takže je MODELLED (vnitřní konzistence) a nenese žádný řádek verifikační matice; žádné publikované číslo se nemění. Testy:tests/animation.rs(determinismus, počet snímků, žádná externí adresa, dobře utvořené XML, cesta se sníženým pohybem a každý přibalený scénář s časovou řadou se animuje).
Zprávy
- Pokročilé zprávy o běhu (
src/advanced_report.rs, docs/REPORTS.md). Každý běh z rozhraní příkazového řádku (CLI) nyní zapisuje<scenario>.report.html, tisknutelnou zprávu HyperText Markup Language (HTML), a<scenario>.report.json, tentýž obsah jako strojově čitelný dokument JavaScript Object Notation (JSON). Sekce: shrnutí pro vedení; každý vstup scénáře s jeho jednotkou, přečtenou ze schématu jednotek polí (blokunitsvýsledku), jinak z přípony názvu pole, jinak uvedenou jako neuvedenou; výsledky s grafem běhu, každým skalárem a souhrnem každého číselného sloupce; u kampaně tabulka uzlů přesunu, střed Monte Carlo, směrodatná odchylka, 5. / 50. / 95. percentil a bootstrapový interval spolehlivosti s histogramem pro každou metriku, tabulka fází řetězce nebo členové složení a kombinovaný souhrn (a mřížka běhusweepčisweep-nd); časová osa událostí; štítek VALIDATED / MODELLED / PARTNER, orákulum a testové důkazy každého řádku verifikační matice, který druhy běhu uplatňují, čtené z matice přes převodník druhu na řádek (řádek, který hodnotí jednu vstupní cestu, například cestu Simplified General Perturbations 4 (SGP4) druhuorbitnebo cestu naměřeného záznamu druhuslot-timing, je uveden jen tehdy, když běh šel touto cestou, a řádek čtečky Shuttle Radar Topography Mission (SRTM) není uveden u žádného druhu, protože žádné pole scénáře nečte dlaždici SRTM); prohlášení o nemodelovaném a předpoklady, každé citované se svým zdrojem; a záznam reprodukovatelnosti (verze enginu, zdrojový commit, když sestavení nastavíKSHANA_GIT_COMMIT, otisky Secure Hash Algorithm 256-bit (SHA-256) souboru scénáře a dokumentu výsledku, seed, platforma a přesný příkaz). Zpráva nečte žádné hodiny: stejný scénář, seed a sestavení enginu dají bajtově shodnou zprávu a jediné časové razítko, které může ukázat, je to, které už zapisuje--study-name. Tisková šablona stylů se vejde na A4 i US Letter, opakuje záhlaví tabulek a drží řádky i obrázky celé napříč stránkami; soubor Portable Document Format (PDF) vznikne příkazem prohlížeče „Uložit jako PDF“. Volba--report pdfneexistuje, protože vykreslení grafů do PDF by vyžadovalo novou, těžkou závislost. Testy:tests/advanced_report.rshlásí každý přibalený scénář (žádná prázdná sekce, žádný zástupný text, štítky shodné s maticí, otisk scénáře shodný s otiskem souboru, bajtově shodné při opakovaném běhu) atests/advanced_report_cli.rsznovu spouští zaznamenaný příkaz v novém adresáři a vyžaduje bajtově shodnýresult.json. Žádné publikované číslo se nemění a počty druhů, souborů scénářů a řádků matice zůstávají beze změny. - Zpráva, animace a exporty spolupracují. Pokročilá zpráva získává sekci „Animation and exports“: animovaný výkres běhu vložený jako neaktivní obrázek (nebo důvod, proč žádný není), odkazy na soubory animace a exportů zapsané vedle ní a každý formát pro interoperabilitu s údajem, zda se použije, proč ne, a jeho specifikací;
report.jsonnese tentýž blokcompanions. Přehrávač animace v HTML uvádí soubory exportů zapsané vedle něj. Rozhraní příkazového řádku (CLI) nyní vykresluje exporty před zápisem zprávy, takže obě mohou soubory pojmenovat.
Exporty pro interoperabilitu
- Exporty a importy pro interoperabilitu (
--export,src/interop/, docs/INTEROP.md).kshana <scenario.toml> --export <format>zapisuje geometrii scénáře jako CZML (Cesium Language), KML (Keyhole Markup Language 2,2, standard Open Geospatial Consortium, s časově označenými stopamigx:Track), GeoJSON (Internet Engineering Task Force Request for Comments 7946) a efemeridy Ansys STK (Systems Tool Kit).e(EphemerisTimePosVel, metry, jeden soubor na pohybující se objekt) a syntetizovaný snímek IQ (složky ve fázi a v kvadratuře) druhuspectrumjako dvojici SigMF (Signal Metadata Format) přes stávajícísrc/sigmf.rs.--export allzapíše každý použitelný formát a vypíše, proč ostatní ne;--export listhlásí bez spuštění. Pohybující se objekty se zapisují v Geocentric Celestial Reference System (CZMLINERTIAL, STKICRF) a v zeměpisné délce, šířce a výšce vzhledem k Zemi WGS 84 (World Geodetic System 1984) (KML, GeoJSON); pevná místa jsou v CZMLFIXED. Druhjammingpřidává dvě stopy rušiček z vlastních rovnic spoje.--import-route <file.geojson>zapisuje GeoJSONLineStringdo vstupů trasyterrain-nav,terrain-slam,gravity-mapacombined-altpnt. Exporty jsou bajtově deterministické a nenesou časové razítko.tests/interop_formats.rsověřuje každý export proti jeho publikované specifikaci, porovnává exportované stavy družic s vlastními stavy enginu na 1 mm a spouští každý přibalený scénář každým formátem, přičemž každý buď exportuje, nebo uvede proč ne (tabulka v docs/INTEROP.md). Žádné publikované číslo se nemění: syntéza IQ druhuspectrumse přesunula do jedné sdílené funkce a jeho dokument výsledku je bajtově shodný aPassesScenariozískávápropagator()aepoch_calendar(), které používá jeho vlastní běh. Počty druhů, souborů scénářů a řádků verifikační matice zůstávají beze změny. Scénář oběžné dráhy nebo integrity bezepochse datuje podle vlastních dat svých družic:t = 0je nejstarší epocha TLE (dvouřádkový soubor elementů dráhy), broadcast efemerid nebo SP3 (Standard Product 3) a každá taková družice se otáčí do soustav GCRS a pevných k Zemi v okamžiku vlastní epochy; 2000-01-01T00:00:00Z se používá, jen když žádná družice nenese epochu. Exporty SP3 a OEM (Orbit Ephemeris Message) si ponechávají štítek 2000-01-01. Na podporu toho jsou přidánySgp4::epoch_jd_utc,Sp3Interpolator::jd_ut1aPropagator::own_jd_utc; nic dosavadního je nečte.
Navigace z nízké oběžné dráhy Země: signál
- Návrhy signálů LEO-PNT a vícepásmové spektrum. Nový druh
leo-signala druhspectrum, který sahá za pásmo L: jeden druh, čtyři soubory scénářů (tři přibalené; soubor Celeste IOD je jen v repozitáři) a čtyři řádky matice (dva VALIDATED, dva MODELLED).leo-signal: parametrizované návrhy signálů pro určování polohy, navigaci a čas (PNT) z nízké oběžné dráhy Země (LEO) pro libovolný systém (pásmo, vysílací šířka pásma, přidělení ITU; složky akvizice, dat a pilotu s BPSK(n), BOC(m,n), MBOC nebo plochými spektry, podíly výkonu, podnosné FDMA, délky kódů a datové rychlosti), ze zkompilovaných veřejných souborů předvoleb vdata/leo-signals/(Xona Pulsar X1/X5, Iridium STL, signál příležitosti Starlink, CentiSpace, reprezentativní návrh pásma C a reprezentativní návrhy UHF/L/S/C/široké C, každý s odkazem na URL svého zdroje) nebo zapsané přímo. Pro každý signál: pásmově omezená PSD a podíly výkonu v pásmu, Gaborova šířka pásma, pásmově omezený jitter sledování kódu early-late v závislosti na C/N0 a rozestupu (Betz & Kolodziejski 2009) a přesnost určení vzdálenosti, prostor hledání při akvizici, pravděpodobnost detekce a střední čas sériové a kódově paralelní akvizice, SSC do a z GPS L1 C/A, Galileo E1, GPS L5, Galileo E5a, E5b a AltBOC se ztrátou C/N0, tolerance J/S pro CW, širokopásmový a spárovaný rušič z kódu SSC druhu spektra, obchodní srovnání pásem (ionosférické zpoždění, ztráta volným prostorem, určení vzdálenosti při stejném C/N0 a stejném EIRP, tolerance vůči rušiči) a volitelné kontroly tvaru proti popsanému měření. Příklady:scenarios/leo-band-trade.toml,scenarios/xona-pulsar-signals.toml,scenarios/celeste-iod-classical-pilot-signals.toml(pásma a konfigurace signálu Celeste IOD představené na workshopu ESA NAVISP LEO-PNT, 2026; zadržené spolu s předvolbou Celeste IOD, viz „LEO-PNT end to end“ níže). Poznámky vdocs/LEO-SIGNAL.md.spectrum: pásma mohou být nyní předvolbou návrhu signálu (každá složka vykreslena, pásmově omezena, C/N0 a J/S vztaženo ke sledované složce) nebo vlastní nosnou a modulací;[[panels]]přidávají vodopády přes jiné frekvenční rozsahy na jedné časové ose; rušič typuwideband(zahlcovací) se přidává ke čtyřem průběhům. Zpráva přidávábands[].tracked_power_dbw,bands[].designapanelsa jednu položkunot_modelled. Prostá pásma dávají stejná čísla jako dříve. Příklad:scenarios/multi-band-jamming-waterfall.toml.navsignalzískává integrální sinus, uzavřené tvary výkonu BPSK v pásmu a pásmově omezené Gaborovy šířky pásma, pásmově omezený jitter early-late pro libovolné spektrum a jeho Gaborovu mez, uzavřený tvar SSC pro BPSK s posunem, spektrum Galileo E5 AltBOC(15 10) a parser štítků modulace;Modulation::labeltiskne BPSK(1/3) jako zlomek.- Čtyři řádky matice: VALIDATED pásmově omezené uzavřené tvary (90,3 % výkonu BPSK v hlavním laloku, jitter se redukuje na koherentní tvar Kaplana a Hegartyho, 0,0039564 chipu při 45 dB-Hz, B_L 1 Hz, d 1 chip, T 20 ms, a na svou Gaborovu mez, a vlastní SSC BPSK 2/(3 R_c); Gaborův uzavřený tvar a SSC s posunem proti jeho Parsevalovu tvaru jsou uvedeny jako vnitřní křížové kontroly); VALIDATED maximální Doppler v LEO (Xona X1 33,2 kHz uvnitř publikovaných 32 až 34 kHz, Iridium do 0,5 kHz od 36 kHz); MODELLED
leo-signal; MODELLED vícepásmové spektrum.
Navigace z nízké oběžné dráhy Země: spoj
- Průlet LEO-PNT a rozpočet spoje po pásmech: druh
leo-pass. LEO-PNT je určování polohy, navigace a čas z družic na nízké oběžné dráze Země (LEO). Uživatel (pozemní, námořní, letecký nebo uvnitř budovy, statický nebo pohybující se) a jedna či více družic LEO z navrženého průletu, explicitních elementů, dvouřádkového souboru elementů dráhy (TLE) přes SGP4 nebo konstelace Walker z kóduconstellation-design. Pro každou družici, pásmo a epochu: úhly pohledu, vzdálenost, uzavřený tvar rychlosti změny vzdálenosti a zrychlení vzdálenosti (kontrolováno při každém běhu proti centrálním diferencím), Doppler a rychlost Dopplerova posunu, ztráta volným prostorem, EIRP (ekvivalentní izotropně vyzářený výkon) s izoflux, gaussovským nebo plochým diagramem družice, plošná anténa uživatele, plynný útlum podle ITU-R P.676, útlum deštěm podle ITU-R P.838/P.618, troposférická scintilace podle P.618, ztráta průnikem do budovy podle ITU-R P.2109 pro uživatele uvnitř budovy, polarizační nesoulad, šumová teplota systému a C/N0 (poměr výkonu nosné k hustotě šumu); ionosférické zpoždění prvního řádu pro každé pásmo z Klobucharova modelu nebo šikmého TEC (celkový obsah elektronů) z vertikálního TEC pod družicí a dvojice pásem bez vlivu ionosféry s jejich zesílením šumu. Družice Galileo nebo GPS se vyhodnocují stejným přijímačem z výkonů přijímaných podle dokumentů rozhraní, takže zvonovitý průlet LEO a ploché nosné MEO (střední oběžná dráha Země) sdílejí jeden graf. Sekce[iot]udává čas do prvního určení polohy, energii na určení polohy a výdrž baterie vzhledem k pracovnímu cyklu (MODELLED).- Nezávislé na systému: engine nepotřebuje žádnou předvolbu. Volitelné předvolby, každá ve vlastním souboru a označená PUBLIC (s URL), REPRESENTATIVE nebo WORKSHOP: obecné vícepásmové (UHF, L, S, C), obecné pásmo C, Xona Pulsar X1/X5 (arXiv 2509,19551), Iridium STL, Starlink jako signál příležitosti jen s Dopplerem, CentiSpace a Celeste IOD (demonstrace na oběžné dráze), jejíž parametry signálu byly představeny na workshopu ESA NAVISP LEO-PNT, 2026, a nacházejí se v
src/celeste_iod.rs, takže je lze zadržet (viz „LEO-PNT end to end“ níže). - Veřejné stavební bloky v
src/leo_link/(geometry, antenna, itu, iono, energy, presets), které mohou volat jiné moduly. - Scénáře:
leo-pass-vs-gnss-cn0,leo-indoor-uhf,leo-iot-energy,leo-pass-xona-pulsar,leo-pass-iridium,leo-pass-celeste-iod-multiband. - Devět řádků matice. VALIDATED (6): koeficienty ITU-R P.838-3 proti jeho tabulce 5; útlum deštěm a scintilace podle P.618-14 proti validačním příkladům ITU-R Study Group 3; ztráta průnikem do budovy podle P.2109 proti sešitu Study Group 3; ionosférické škálování prvního řádu proti poměru skupinového zpoždění z IS-GPS-200, se ztrátou volným prostorem; maximální Doppler statického uživatele na kruhové dráze proti arXiv 2509,19551, tabulka 1. MODELLED (3): průlet a rozpočet spoje, předvolby a rozpočet určení polohy s nízkou spotřebou energie. Jeden druh a šest souborů scénářů. Poznámky v
docs/LEO-PASS.md.
- Nezávislé na systému: engine nepotřebuje žádnou předvolbu. Volitelné předvolby, každá ve vlastním souboru a označená PUBLIC (s URL), REPRESENTATIVE nebo WORKSHOP: obecné vícepásmové (UHF, L, S, C), obecné pásmo C, Xona Pulsar X1/X5 (arXiv 2509,19551), Iridium STL, Starlink jako signál příležitosti jen s Dopplerem, CentiSpace a Celeste IOD (demonstrace na oběžné dráze), jejíž parametry signálu byly představeny na workshopu ESA NAVISP LEO-PNT, 2026, a nacházejí se v
Navigace z nízké oběžné dráhy Země: navigační zpráva
- Navigační zpráva LEO (druh
leo-navmsg,src/leo_navmsg/). Vysílaná zpráva s efemeridami a hodinami družice pro určování polohy, navigaci a čas (PNT) z nízké oběžné dráhy Země (LEO), pro libovolnou dráhu, nosnou a model; pojmenované předvolby jsou volitelná data a každá schopnost běží bez nich. Jeden druh, pět souborů scénářů a devět řádků matice (tři VALIDATED, šest MODELLED). Vizdocs/LEO-NAVMSG.md.- Obsah zprávy: SVID, vydání dat, pásmo a stav zdraví signálu; týden, čas v týdnu a polynom hodin druhého řádu; efemeridy v jednom ze čtyř modelů — 16parametrová keplerovská sada podle Galileo OS SIS ICD, tatáž sada plus polynomy oprav v podélném, příčném a radiálním směru, 22parametrový model Liu et al. 2025 (doi 10.3390/rs17162894) nebo polynom ECEF ATOMIC s nulovými hodinami — a sada Klobuchar, koeficienty NeQuick-G s efektivní úrovní ionizace a parametry převodu systémového času na UTC s případy přestupné sekundy podle ICD.
- Fitter: pravdivá dráha integrovaná s gravitací zonálních J2–J6 nebo EGM2008 a odporem, seedované volné nebo řízené hodiny, fit Levenberg–Marquardt na nesingulárních elementech, poté lineární korekční polynomy metodou nejmenších čtverců a hodiny proložené po odečtení uživatelova relativistického členu.
- Čtyři analýzy a scénáře:
leo-navmsg-fit-interval-trade(chyba vzdálenosti signálu v prostoru (SISRE) oproti intervalu fitu a periodě aktualizace),leo-navmsg-model-comparison(čtyři modely, bity a 22parametrový fit Kshany ve výškách podle Liu et al. vedle publikovaných údajů, MODELLED),leo-navmsg-midpass-update(kontinuita při každém přepnutí zprávy v průletu) aleo-navmsg-encode-decode(vlastní zdokumentovaný binární rámec Kshany s CRC-24Q a rozpočtem kvantování, blok ve stylu RINEX-4 označený jako rozšíření Kshany a tabulka CSV). - VALIDATED: globální průměrné váhy SISRE proti publikované tabulce pro střední a geostacionární dráhy od Montenbruck et al. 2018; uživatelský algoritmus Galileo proti RTKLIB na čtyřech skutečných broadcast efemeridách Galileo (
tests/leo_navmsg_reference.rs); CRC-24Q proti katalogové kontrolní hodnotě a příkladovému rámci RTCM 10403 1005. - Předvolby, po jednom souboru se zdroji: Xona Pulsar a Pulsar-0, Iridium, Starlink, CentiSpace, reprezentativní systém v pásmu C, ATOMIC a Celeste IOD (jediná předvolba používající materiál představený na workshopu ESA NAVISP LEO-PNT, 2026, uchovaná v
src/celeste_iod.rsspolu se svými scénáři, takže ji lze zadržet).
Navigace z nízké oběžné dráhy Země: fúze
- Fúze určování polohy, navigace a času z MEO + LEO:
leo-pvt,leo-pppantn-positioning. Tři nové druhy scénářů vsrc/leo_fusion/, nezávislé na systému: každá konstelace jsou slupky Walker, sady elementů nebo předvolba GNSS, každý signál nosná, chipová rychlost a obálka poměru výkonu nosné k hustotě šumu (C/N0), každý rozpočet chyb explicitní jednosigma a pojmenované systémy na nízké oběžné dráze Země (LEO) jsou volitelné předvolby, po jednom souboru s jejich zdroji označenými jako veřejné, workshopové nebo odvozené (Xona Pulsar X1/X5, Iridium Satellite Time and Location (STL), signály příležitosti Starlink, CentiSpace, reprezentativní systém v pásmu C, model efemerid ATOMIC s nulovými hodinami a jedna předvolba ESA Celeste pro demonstraci na oběžné dráze, jejíž parametry odvozené z workshopu leží vsrc/celeste_iod.rs, takže je lze zadržet).leo-pvtmá čtyři režimy: určování polohy z Dopplera (dávkové nejmenší čtverce na rychlosti změny vzdálenosti se stavy driftu hodin a rychlosti, režim signálů příležitosti jen s Dopplerem, přesnost jednoho průletu v podélném a příčném směru a obálka Dopplera, rychlosti Dopplerova posunu a ryvu); společné vážené nejmenší čtverce GNSS + LEO s jedněmi hodinami na systém (mezisystémový posun) nebo se známým posunem, sigmami jednotlivých měření jako vstupy a DOP oproti počtu družic LEO; polární a arktické pokrytí v závislosti na zeměpisné šířce; a přenos času z LEO do koordinovaného světového času (UTC) oproti C/N0 a oscilátoru přijímače s výrazem pro převod systémového času na UTC podle IS-GPS-200.leo-ppp: plovoucí rozšířený Kalmanův filtr pro přesné bodové určování polohy (PPP) na kódu a fázi bez vlivu ionosféry, jen GNSS i s doplněním z LEO, s dobou konvergence a testem konzistence NEES (normalizovaná kvadratická chyba odhadu) metodou Monte Carlo. Přibalený scénář dává 7,4 min se čtyřmi systémy MEO a 4,8, 3,2, 2,7 a 2,3 min se 60, 96, 192 a 288 družicemi LEO, vedle 9,6, 7,0, 3,2, 2,1 a 1,3 min podle Li et al. (J. Geod. 93:749, 2019) jako MODELLED srovnání trendu.ntn-positioning: určování polohy v nepozemské síti (NTN) 5G v mobilním družicovém pásmu S 3GPP n256 z Cramérovy–Raovy meze pro čas příchodu a Doppler.- Scénáře:
leo-doppler-positioning,starlink-sop-doppler-positioning,meo-leo-fused-pvt,leo-ppp-convergence,ntn-5g-positioning,polar-arctic-leo-coverage,leo-timing-utc(přibaleno) aceleste-iod-fused-pvt(jen v repozitáři, zadrženo spolu s předvolbou Celeste IOD). - Osm řádků matice: obálka Dopplera v LEO VALIDATED proti publikovaným údajům Iridium (±36 kHz: 35,9 kHz, do 5%) a Xona Pulsar X1 (32 až 34 kHz: 33,6 kHz ze slupky 97 deg, bez rozšíření) (
tests/leo_doppler_reference.rs); určování polohy z Dopplera, společné určování polohy z pseudovzdáleností, konvergence PPP, meze NTN, časování z LEO, polární pokrytí a předvolby MODELLED. Tři druhy a osm souborů scénářů. Dokumentace:docs/LEO-PNT-FUSION.md.
- LEO-PNT od začátku do konce: druh
leo-pnt-chaina propojené stupně LEO. Jeden systém pro určování polohy, navigaci a čas (PNT) z nízké oběžné dráhy Země (LEO) sledovaný od návrhu signálu až po polohu uživatele, každý stupeň je vlastním druhem enginu na vlastní tabulce scénáře, s hodnotami předávanými v kódu (docs/LEO-PNT.md):- Pásma
leo-passmohou pojmenovat návrhleo-signal(signal = "xona-x5"): pásmo převezme střed návrhu, vysílací šířku pásma a chipovou rychlost sledované složky, rozdělí svůj EIRP (ekvivalentní izotropně vyzářený výkon) mezi složky návrhu a hlásí v každé epoše C/N0 (poměr výkonu nosné k hustotě šumu) sledované složky a pásmově omezený jitter sledování kódu (chybu určení vzdálenosti; šum dvojiciono_freeho také používá). Pásmo bez návrhu dává stejný výstup jako dříve. leo-pnt-chainspouští signál -> průlet -> navigační zpráva -> společné určení polohyleo-pvt-> volitelněleo-ppp. Každý systém LEO ve stupni určování polohy, který je nechává nenastavené, přebírá přímku C/N0 v sin(elevace) proloženou průletem, chybu vzdálenosti signálu v prostoru zprávy (SISRE: její chybu reprezentace na dráze družice průletu, s uvedeným členem určení dráhyod_sisre_mv odmocnině součtu čtverců) a nosnou a chipovou rychlost návrhu; případy přesného bodového určování polohy (PPP) přebírají SISRE. Každé předání je uvedeno se svou hodnotou a jednotkou atests/leo_pnt_chain.rskontroluje, že se každé rovná výstupu předchozího stupně a že změny na vstupu posouvají údaje na výstupu.LeoNavmsgScenario::broadcast_sisreje nový vstupní bod zprávy.- Scénáře:
leo-pnt-end-to-end(obecná konstelace 1080 km a reprezentativní signálgeneric-l),xona-pulsar-end-to-end(veřejný signál X5), oba přibalené, a volitelný scénářceleste-iod-end-to-endjen v repozitáři. - Předvolby Celeste IOD (demonstrace na oběžné dráze) pro oblasti průletu, zprávy a fúze určování polohy nyní leží v jediném souboru,
src/celeste_iod.rs, kterýbuild.rszkompiluje jen tehdy, když existuje (příznak konfiguracekshana_celeste). Jeho pět scénářů (scenarios/*celeste-iod*.toml) je jen v repozitáři, takže smazáním tohoto souboru a těchto scénářů se zadrží každé číslo představené na workshopu ESA NAVISP LEO-PNT, 2026, bez úpravy zdrojového kódu;tests/workshop_preset_isolation.rskontroluje, které soubory smějí předvolbu pojmenovat nebo nést čísla jejího plánu pásem. - Každý druh LEO v převodníku pokročilé zprávy, jehož řádky specifické pro cestu jsou uvedeny jen tehdy, když běh šel touto cestou (intenzita deště, budova, analýza nebo režim, které proběhly). Dopplerova okna
leo-pvtzískávajít_sa případyleo-pppzískávajít_min, takže se obojí animuje;leo-passaleo-pnt-chainexportují efemeridy CZML, KML, GeoJSON a STK a ostatní druhy LEO uvádějí, proč se formát nepoužije.
- Pásma
Navigace z nízké oběžné dráhy Země: odolnost, oblasti zaměření a scénáře koncových uživatelů
- Odolnost LEO-PNT, jeden scénář pro každou oblast zaměření experimentu a jeden pro každou vertikálu koncových uživatelů a
docs/LEO-PNT.mdjako přehled všech druhů a scénářů LEO. Každý scénář běží bez jakýchkoli dat Celeste a je přibalen.leo-passzískává sekci[spoofer]: spoofer padělá, ve vzdálenosti i rychlosti změny vzdálenosti vnitřně konzistentně, signály tvrzené polohy, která po nástupu skočí a/nebo je odtlačena od skutečné (pro každé pásmo LEO i signál GNSS z MEO), s ionosférou i bez ní. Běží dva monitory při uvedené pravděpodobnosti falešného poplachu: konzistence Dopplera a geometrie průletu (naměřené rychlosti změny vzdálenosti proti těm, které předpovídají dráhy a nezávislá předchozí poloha a rychlost; zobecněné nejmenší čtverce chí-kvadrát přes okno, na kanálech GNSS, LEO a všech, šum smyčky frekvenčního závěsu z C/N0) a konzistence mezi pásmy (skok modelově korigované kombinace bez vlivu geometrie u každé dvojice pásem LEO). Výsledek udává statistiky pro každou epochu (takže se animuje), každou dvojici a kdy každý monitor detekuje. Stavební bloky vleo_link::spoof. Chybí-li sekce, výstup je beze změny.- Každá dvojice pásem
leo-passtaké hlásí šikmý celkový obsah elektronů (TEC), který její kombinace bez vlivu geometrie obnoví ve vrcholu průletu, a sigmu kódového šumu tohoto odhadu (sondování ionosféry). To přidává dvě pole ke každému vícepásmovému výsledkuleo-pass; žádné existující číslo se nemění. - Režim časování
leo-pvtpřijímátrace = true: každý řádek pak hlásí svou časovou chybu a předpovězenou sigmu v každé epoše, se stejnými losy, takže statistiky řádků zůstávají beze změny a běh se animuje a řetězí v kampani. - Kampaň nyní exportuje každý členský scénář, který má geometrii (běhy fází, základní scénáře přesunu a Monte Carlo, složené členy s navázanými sdílenými hodnotami), jako vlastní sadu souborů, s označením člena v názvu souboru; dříve kampaň neexportovala nic. Tabulka interoperability v
docs/INTEROP.mdse podle toho mění. - Klíč přesunu kampaně může indexovat pole tabulek podle pozice (
system.2.sisre_m). - Scénáře odolnosti:
leo-resilience-multiband-diversity(zahlcovač v pásmu L5 o šířce 50 MHz s výkonem posouvaným: každý signál pásma L klesá, signály LEO v pásmech UHF, S a C si udržují C/N0),leo-resilience-js-margin(rezerva J/S z přijímaného výkonu: GPS L5, Galileo E5a a Xona X5 ztraceny při -105, -100 a -95 dBW, obecný signál LEO o -135 dBW stále sledován při -90 dBW),leo-resilience-spoof-doppler(skok o 30 m, který test Dopplera jen z GNSS minul a test na všech kanálech detekoval 105 s po nástupu),leo-resilience-spoof-monitors(čtyři spoofery proti oběma monitorům) aleo-resilience-gnss-jammed-leo-carries(GNSS rušeno, vrstva LEO v pásmech S a C sledována, autonomní monitorování integrity v přijímači jen na vrstvě LEO spouští poplach ve 2 z 30 epoch). - Scénáře oblastí zaměření:
leo-focus-ppp-altitude,leo-focus-ntn-bandwidth,leo-focus-iot-eirp,leo-focus-science-iono-sounding,leo-focus-data-services,leo-focus-indoor-uhf,leo-focus-fused-pnt-sisre(odolnost v pásmech L, S a C jeleo-resilience-multiband-diversity). - Vertikální kampaně, každá animovaná a exportující své průlety LEO:
leo-vertical-autonomous-vehicle,leo-vertical-rail-maritime(přibalené námořní a železniční scénáře plus LEO),leo-vertical-critical-infrastructure-timing,leo-vertical-polar-arctic,leo-vertical-5g-network-timing,leo-vertical-asset-tracking-iot. Výsledky na jeden řádek vdocs/LEO-PNT.md. - Tři řádky matice MODELLED: monitor spoofingu podle Dopplera a geometrie průletu, monitor spoofingu mezi pásmy a sondování ionosféry.
tests/leo_resilience_verticals.rskontroluje monitory (před nástupem mlčí, statistika Dopplera kvadratická ve skoku, ionosférický skok pozemního spoofera a žádný u spoofera, který ionosféru zohledňuje), identitu sondování, stopu časování proti statistikám řádků a že export kampaně se rovná exportu každého člena samostatně. - Stránka
leo-passse přesouvá dodocs/LEO-PASS.md;docs/LEO-PNT.mdje přehled.
Námořní, silniční a železniční scénáře
- Námořní, silniční a železniční scénáře. Pět přibalených příkladů na existujících druzích, aby lodě, silniční vozidla a vlaky měly každé propracovaný případ. Každý údaj je MODELLED; žádný není ověřen proti naměřeným datům.
scenarios/maritime-strait-jamming.toml(jamming): širokopásmový rušič 50 W na stožáru 30 m, 30 km přes otevřenou vodu od lodi. Střední poměr rušivého a užitečného signálu (J/S) asi 48 dB a dostupnost klesá z 1,00 na 0,00.scenarios/maritime-port-approach-coast.toml(ins-trn-coast): inerciální navigační systém (INS) navigační třídy při 12 uzlech se ztraceným GNSS a bez podpory. Překročí 10 m po 281 s a 100 m po 833 s, což jsou údaje pro přiblížení k přístavu a oceánské vody z rezoluce A.1046(27) Mezinárodní námořní organizace (IMO), zde použité jako rozpočty.scenarios/maritime-spoof-position-push.toml(spoof-detect): spoofer o +2 dB, nezarovnaný s nosnou, který tlačí čtyři družice, aby odtáhl loď o 500 m. Sloučený monitor jej detekuje (skóre 0,70 proti prahu 0,50) pomocí autonomního monitorování integrity v přijímači (RAIM) a monitorování kvality signálu (SQM); samotné monitorování výkonu jej mine.scenarios/automotive-urban-canyon.toml(gnss-ins): auto projíždějící podjezdem 15 s a výpadkem 60 s způsobeným rušičem u silnice, proti rozpočtu poloviny jízdního pruhu 1,5 m. Sloučená střední kvadratická (RMS) chyba při výpadku je 1,9 m pro jednotku MEMS (mikroelektromechanický systém) automobilové třídy a 0,7 m pro srovnávací jednotku taktické třídy; při volném běhu jednotka MEMS driftuje na 850,8 m.scenarios/rail-tunnel-coast.toml(ins-trn-coast): INS taktické třídy na vlaku rychlostí 160 km/h v tunelu. Překročí 2 m (rozlišení koleje) po 35,8 s, asi 1,6 km po vjezdu, a 20 m po 107,3 s. Jde jen o INS: engine nemá model odometru, takže je to pesimistická mez. Počet souborů scénářů v README se mění ze 77 na 82. Všech pět je přibaleno prokshana examplea uvedeno v hřišti v prohlížeči.
Server Model Context Protocol
Server Model Context Protocol (MCP) dosahuje ke každému druhu a každému pohledu na běh: sedm nových nástrojů, celkem čtrnáct.
run_scenariouž rozdělovalo každý druh; agentovi chyběla cesta k platnému scénáři daného druhu a ke třem výstupům, které příkazový řádek zapisuje vedle výsledku. Nové nástroje:list_example_scenariosaget_example_scenarioposkytují přibalené referenční scénáře (tabulkakshana example), každý s jeho druhem a první větou jeho vlastního záhlaví, bajt po bajtu shodné se souborem vscenarios/. Scénář, který je v repozitáři, ale není přibalen, je odmítnut s uvedením důvodu. Každý druh kromělunar-llr-datum(jehož datový výřez se dodává jen s repozitářem) má alespoň jeden příklad.report_scenariovrací zprávu o běhu jako JSON (JavaScript Object Notation) nebo jako tisknutelnou stránku HTML (HyperText Markup Language) (docs/REPORTS.md).animate_scenariovrací časovou řadu běhu jako animovaný výkres SVG (Scalable Vector Graphics), přehrávač HTML nebo očíslované snímky, po shrnutí v JSON toho, co bylo nakresleno (docs/ANIMATION.md). Odpověď nese nejvýše 120 snímků; příkazový řádek zapíše libovolnou délku.list_export_formats,export_interopaimport_routeposkytují exporty pro interoperabilitu a import trasy GeoJSON (docs/INTEROP.md): CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemeridy STK (Systems Tool Kit).ea SigMF (Signal Metadata Format), s indexem souborů v JSON (přípona, velikost a SHA-256, 256bitový otisk Secure Hash Algorithm) a binárním souborem vzorků SigMF jako base64.
Knihovna získává ve výchozím stavu vypnutou funkci
bundled-scenarios, která zpřístupňuje tabulku referenčních scénářů jakokshana::bundled_scenarios; zapíná ji jen server MCP, takže balíček Pythonu (wheel) a modul WebAssembly stále text scénářů nenesou. Sady studií (--study) zůstávají jen v příkazovém řádku, protože sada pojmenovává soubory na disku a server žádné nečte. Testy zpětného průchodu spouštějí každý nový nástroj proti přibaleným scénářům a kontrolují čísla enginu: spektrum, sluneční soustava, konstelace kolem Měsíce a Europy, přesun kampaně a druhy signálu z nízké oběžné dráhy Země (LEO), průletu, navigační zprávy, fúze určování polohy, přesného bodového určování polohy, nepozemské sítě a od začátku do konce. Každé místo, které uvádí počet nástrojů MCP nebo je vypisuje, nyní říká čtrnáct, kromě stránky hřiště vweb/, která je nahrazena webem.
kshana.dev, Kshana Studio a README
- Přepracovaný kshana.dev. Jediná stránka hřiště je nahrazena vícestránkovým webem: Domů, Mise, Schopnosti, Důkazy, Vývojáři, Edice a Dokumentace, s Kshana Studiem na jedno kliknutí. Každý graf, mapa a číslo na něm je zaznamenaný běh enginu tohoto vydání, se scénářem a odkazem, který tentýž běh znovu otevře ve Studiu; sestavení webu odmítne záznam pořízený jiným commitem enginu. Stránky dokumentace se generují z
docs/repozitáře a možnosti instalace z jeho kanálů. Písma a skriptové knihovny se servírují přímo z kshana.dev, takže žádná stránka nic nežádá od hostitele třetí strany. Staré adresy (/#playground,/#ledger, odkazy ke sdílení/#s=<scenario>, odkazy pro vložení/?embed=1&…a zbytek) přesměrují na nové místo a neznámá adresa dostane stránku 404. - Kshana Studio, dashboard pro každou schopnost. Studio se otevře úvodní obrazovkou s dlaždicemi domén a dobrými prvními běhy a poté provede běh pěti číslovanými kroky: Zvolit scénář, Nastavit jeho parametry, Spustit engine lokálně v prohlížeči, Přečíst výsledky (nejprve klíčové hodnoty, každá s příznakem PASS nebo FAIL, kde běh uvádí práh, poté panely) a Sdílet nebo exportovat. Jedno vyhledávací pole najde scénáře, domény a pole v nich a skočí na ovládací prvek; běhy lze připnout a porovnávat; drobečková navigace říká, kde se nacházíte; na telefonu se kroky mění v lištu kroků. Každý druh scénáře má svůj pohled, včetně vodopádu spektra, sluneční soustavy, pokrytí konstelace, kampaní, animace, zprávy o běhu, exportů pro interoperabilitu a řetězce z nízké oběžné dráhy Země. Hluboký odkaz (
?scenario=…&tab=…) otevře tentýž běh na pojmenovaném panelu. - Výzkum a citování. Stránka Důkazy uvádí pět článků o Kshaně na arXiv (2606,22054, 2606,24210, 2607,02566, 2607,05415 a 2607,06212), každý se shrnutím, obrázkem vypočteným tímto enginem, příkazem, který jej reprodukuje, odkazem do Studia a BibTeXem, vedle toho, jak citovat software. README získává tutéž sekci Výzkum.
- Veřejná stránka pro Kshana Pro.
docs/PRO.mda stránka Edice na webu říkají, co proprietární nadstavba Pro přidává nad týmž enginem (optimalizátor návrhu, nejistota a citlivost, dossier mise, sledování kampaní, koexistence spektra, služba úloh na vlastních serverech, sledovatelnost požadavků), co každá vytváří a co nedělá. Každý údaj Pro, který web ukazuje, je uveden na této veřejné stránce. Pro nepřidává žádný fyzikální model a otevřený engine zůstává celý a zdarma. - Přepsané README. Krátké sekce, jeden obrázek na sekci, značka Kshana, dvě řady odznaků, generované obrázky architektury, toku scénáře, řetězce z nízké oběžné dráhy Země a verifikace (
tools/gen_readme_assets.py, které na zastaralém obrázku selže) a snímky obrazovky Studia pořízené z běžícího Studia pomocítools/capture_studio_shots.mjs. README pro crates.io, PyPI, npm a server MCP se řídí stejným návrhem. Dlouhý referenční materiál je sbalen nebo přesunut dodocs/.
Změněno#
<scenario>.report.htmlje nyní pokročilá zpráva o běhu popsaná v části Added a řádek CLIwrote …pojmenovává i<scenario>.report.json. Jednostránková výsledková karta, kterou nahradila, zůstává beze změny jakoRunOutput::html_report(), který vazby pro Python a WebAssembly stále vracejí.OracleKind::modelled_reason()zpřístupňuje větu, kteroudocs/MODELLED-RATIONALE.mdtiskne pro každý řádek MODELLED; tento dokument je beze změny.- README říká, na čem Kshana Pro staví. Sekce Edice a řádek Kshana Pro pod „Support & professional services“ nyní uvádějí, co dělají nástroje Pro pro modelově orientované systémové inženýrství (MBSE) a programy a které publikované výstupy otevřeného enginu čte (
result.jsonareport.jsonkaždého běhu, soubor scénáře, schéma jednotek polí a štítky verifikační matice), a na čem v otevřeném enginu spočívají digitální dvojčata hodin, obchodní studie a balíčky důkazů. Pouze znění: žádný výstup enginu ani publikované číslo se nemění. - Kompatibilita. Veřejný výčet
navsignal::Modulationzískává variantuMboc, což je zásadní změna pro volajícího, který jej porovnává vyčerpávajícím způsobem. Sloupcegcrs_r_magcrs_v_m_sdruhuephemerisse mění (viz „Revisions to published numbers“). Běh je stále reprodukován verzí enginu, která jej vytvořila.
Opraveno#
export_table_csvna serveru MCP uváděl čtyři druhy jako jediné s tabulkou CSV (hodnoty oddělené čárkami); šest ji publikuje. Nástroj vždy vracel tabulku protelecom-timinga proleo-navmsg(jeho analýzuencode-decodena modelu zprávykepler16nebokepler-rac), ale jeho popis, jeho odmítavá zpráva i dokumenty, které druhy vypisují, obě vynechaly, takže agent byl veden k tomu, aby se neptal. Nyní jsou uvedeny a test zpětného průchodu načítá obě tabulky.Rámec navigační zprávy z nízké oběžné dráhy Země (LEO) nebyl na každé platformě ani v každém sestavení jedné platformy tvořen stejnými bajty.
scenarios/leo-navmsg-encode-decode.tomlzakódoval rámec s cyklickým redundantním součtem0x110315v release sestavení na aarch64 macOS,0x898BD8v ladicím sestavení téhož zdroje na témže stroji a0x6A82D9v sestavení WebAssembly (WASM);leo-navmsg-celeste-iod.tomldal nativně0x6EDB2Doproti0xC6E4F0v prohlížeči. Tři příčiny, každá vystopovaná k první rozcházející se hodnotě:- Mezi platformami. Pravdivá dráha byla na obou bitově shodná; výchozí bod fitu nikoli.
truth::state_to_elementsbere oskulační sklon zacosa argument perigea zatan2a obě matematické knihovny je v posledním místě zaokrouhlují odlišně (přes 20 000 argumentů se liší u 781 sinů, 858 kosinů, 1 931 exponenciál a 1 899 arkustangent o dvou argumentech). - Mezi profily sestavení. Optimalizované sestavení na macOS sloučí sinus a kosinus jednoho argumentu do jediného volání kombinované systémové rutiny a její sinus není sinem samostatného
sinu 379 z 200 000 argumentů; neoptimalizované sestavení volá obě zvlášť. Druh bere sinus a kosinus společně na třinácti místech. - V hodinách. Normální vzorkovač z
rand_distrvolá hostitelskéexpalnve svých dvou vzácných větvích: ze čtyř milionů seedovaných losů se tři lišily v posledním bitu mezi nativním a WASM sestavením.
Fit Levenberg–Marquardt, který se na tomto oblouku zastaví na svém limitu 80 iterací, a ne v minimu, přenáší jednu jednotku v posledním místě do odlišných kvantovaných polí. Druh nyní počítá každou transcendentní funkci přes nové
src/portable_math.rs, které volá cratelibmv čistém Rustu (již ve stromu závislostí, nyní pojmenovanou vCargo.toml), zkompilovanou z jednoho zdroje pro každý cíl, a ne přes volání knihovny, které optimalizátor přepisuje:leo_navmsg::{truth, fit, elements, codec, sisre, services}a kód scénáře. Celočíselné mocniny na této cestě jsou rozepsány jako umocňování opakovaným čtvercem, protožef64::powimá nespecifikovanou přesnost, a pravdivé hodiny losují své normální odchylky zportable_math::standard_normal(Marsagliova polární metoda na surovém výstupu generátoru). Sdílené rutiny, jimiž pravdivá dráha integruje, jsou napsány jednou, generické vůči matematické knihovně, s interním vstupním bodem_portablevedle stávajícího: zrychlení ze sférických harmonik, zonální zrychlení a zrychlení od odporu, sekulární rychlosti J2 a Klobucharovo zpoždění. Stávající vstupní body jsou beze změny do posledního bitu, takže se nemění číslo žádného jiného druhu.leo_navmsg::tests::the_encoded_frame_is_the_same_bytes_on_every_platformpřipíná celý 171bajtový rámec a jednu kontrolní hodnotu na model efemerid, v běžném (neoptimalizovaném) testovacím profilu, na každé platformě a bez brány na základního hostitele;the_kind_never_calls_the_host_mathematics_libraryčte zdroje druhu z disku a selže na vlastní transcendentní volání, na vzorkovačrand_distrnebo na volání do modulu, který nebyl zkontrolován. Po změně dávají ladicí sestavení, release sestavení a sestavení WASM bajtově shodné dokumenty výsledků pro všech pět scénářůleo-navmsg. Tím se mění čísla, zaznamenaná zde jako revize. Druhleo-navmsgje v tomto vydání nový, takže se nic publikovaného v dřívějším vydání nemění, ale mění se každý údajleo-navmsg, nativně i v sestavení WASM, a s ním stupeňnavmsgvleo-pnt-chain: údaje o dráze proto, že fit nyní začíná od přenosných elementů, údaje o hodinách proto, že pravdivé hodiny jsou jinou realizací téhož procesu.docs/LEO-NAVMSG.mdje znovu vygenerováno z nových výsledků; jeho publikovaná kontrolní hodnota pro scénář kódování a dekódování byla0x110315a je0x19105F(poloha do 1,126 mm od přesné zprávy, kde bylo 0,665 mm, hodiny do 0,185 mm, kde bylo 0,451 mm). Velikost změn v submilimetrových údajích je citlivost fitu, ne chyba v žádné z obou sad: fit je beze změny a stále se zastavuje na limitu iterací.- Mezi platformami. Pravdivá dráha byla na obou bitově shodná; výchozí bod fitu nikoli.
Seedované převzorkování losovalo na 32bitovém cíli odlišné indexy.
Rng::gen_rangepřesusizebere z generátoru 64 bitů na 64bitovém hostiteli a 32 bitů na 32bitovém, takže stejný seed dal jiné indexy a v sestavení WASM zanechal proud jinde. Takto losovala tři místa: percentilové bootstrapy veval_stats(bootstrap_ci,bootstrap_auc_ci), promíchání před každým tréninkovým průchodem vimpairment_mla permutační test vimpairment_study. Nyní losují přesportable_math::uniform_index, které vždy vzorkuje jakou64: přesně to, co dělal 64bitový hostitel, takže se nemění žádné nativní číslo. Tím se mění publikovaná čísla balíčku WASM, zaznamenaná zde jako revize: bootstrapový intervalquantum-anomaly-detectplochy pod křivkou (quantum_auc_ci,trade.foms[0].ci95) byl v prohlížeči[0.9901265, 0.9938305]a nyní je nativní[0.99035875, 0.993861].Názvy souborů efemerid STK z id pohyblivých objektů. Id pohyblivého objektu obsahující
/nebo mezeru (slupka konstelace a družice,Pulsar inclined/S1-0163) způsobilo panic CLI při--export stk; každé id nyní prochází bezpečnou částí souboru (písmena, číslice,-,_).Znaménko nutace TEME→GCRS, popsané výše pod „Revisions to published numbers“, protože mění publikovaný výstup.
0.28.0 - 2026-09-26#
Přidáno#
- Druh scénáře
slot-timing(src/slot_timing.rs): sekundy, než volně běžící hodiny opustí ochrannou mez časově indexovaného slotu směrování nebo zadávání úloh, každý přispívající člen v tom okamžiku s pojmenovaným dominantním, čas zbývající od posledního určení a největší interval určení, který drží hodiny uvnitř, po odečtení latence určení. Hodiny pocházejí z výchozí hodnoty třídy, předvolby datového listu telecom-timing, vloženého datového listu (maxima Allanovy odchylky, stárnutí, teplotní koeficient) nebo naměřeného fázového záznamu. Porušení za nejdelším časem průměrování, který zdroj podporuje, je označeno jako extrapolované. Přibalený příklad:slot-timing-ocxo-leo. Vizdocs/SLOT-TIMING.md. - Naměřená hladina červeného šumu. Překrývající se Allanova odchylka fázového záznamu je proložena váženými nejmenšími čtverci v bázi bílé fáze a frekvenční modulace podle IEEE Std 1139 (
slot_timing::fit_weighted), každý bod vážený svými ekvivalentními stupni volnosti, takže odpověď o holdoveru se může opřít o vlastní hladinu hodin místo o předpoklad třídy. Nevážený fit vložil do záznamu s bílým šumem falešnou hladinu flicker šumu a zkrátil porušení po 2 000 s o 30 %. - Validace holdoveru inverzí na zadržených datech skutečných hodin (
tests/slot_timing_cs5071a_holdout.rs): proloženo na první třetině záznamu cesiových hodin 5071A proti vodíkovému maseru, předpovězená porušení o jedné sigmě při šesti prazích od 0,5 do 2,5 ns leží v rozmezí 0,84 až 1,03 porušení naměřených na zbývajících dvou třetinách, proti prahu 1,5 stanovenému před prvním spuštěním testu. Kontrola (jednosekundová Allanova odchylka čtená jako bílý šum) mine o faktor asi 1 000 a práh nesplní. Nový řádek registru VALIDATED; pracovní postuprealdata-clockjej nyní spouští. - Stejná předpověď na skutečném krystalovém oscilátoru (
tests/slot_timing_ocxo_holdout.rs,scripts/fetch_ocxo.sh): na naměřeném krystalovém oscilátoru s termostatem je předpověď na zadržených datech konzervativní, na 0,59 až 0,70 naměřeného porušení a nikdy později, a většinou mimo práh 1,5, protože šumová hladina tohoto oscilátoru se během 5.5hodinového záznamu snížila na polovinu; při proložení ve vzorku leží v rozmezí 0,98 až 1,17. Případ krystalu není ověřen a zůstává MODELLED. Běh také odhalil chybějící člen: frekvence krystalu putuje, takže model nyní nese nejistotu frekvence známé při určení (fix_frequency_sigma); bez něj byla předpověď optimistická až o 2,5×. - Stejná předpověď na atomových hodinách na oběžné dráze (
tests/slot_timing_igs_holdout.rs,scripts/fetch_igs_clocks.sh): 14 dní finálních hodin International GNSS Service pro družice GPS Block IIF, s protokolem sepsaným před stažením dat. Osm z deseti družic leží v rámci prahu 1,5; G25 a G30 předpovídají porušení až asi dvakrát pozdější, než bylo naměřeno. Protokol vyžaduje, aby splnila každá družice, takže případ na oběžné dráze není ověřen a zůstává MODELLED; výsledek je připnut. - Třídy hodin s teplotně kompenzovaným krystalem (TCXO), krystalem s termostatem (OCXO) a rubidiovým atomovým frekvenčním etalonem (RAFS) (
ClockClass::Tcxo,Ocxo,Rafs), součástky, které létají na komerční sběrnici malých družic nebo používá pozemní brána, každá s odkazem na jeden veřejný datový list (ClockClass::source). PřidányClockClass::ALL,idafrom_id.baseline_clock_classdruhuquantum-tradepřijímá tři nová id. Přidání variant do veřejného výčtu je zásadní změna pro volajícího, který jej porovnává vyčerpávajícím způsobem. - Ochranná úroveň času pro přijímač na oběžné dráze (
src/orbital_timing.rs, volitelná sekcespoofingdruhuslot-timing): jak dlouho může pozemní spoofer dosáhnout družice na nízké oběžné dráze Země při jednom průletu, jaký posun nasbírá spoofer při uvedené maximální rychlosti náběhu, než družice opustí jeho dosah nebo proběhne nezávislá kontrola, a zda je každá kontrola při kontaktu se zemí nebo přes crosslink na tomto spooferu nezávislá. Přesně se redukuje natpl::timing_protection_level_nspro hodiny bez flicker šumu, šumu bílé fáze nebo náhodného běhu. MODELLED. - Tři poznámky:
docs/SLOT-TIMING.md(včetně toho, proti které metrice putování se má slot přijímat: maximální absolutní časová chyba, nikoli maximální chyba časového intervalu ani časová odchylka, a proč),docs/DECEIVED-TIME.md(podepsaný příkaz použitý v oklamaném čase stále směruje chybně) adocs/DEPLOYMENT-TARGETS.md(kde Kshana běží; jádro pro let bezno_stdse nenabízí).
0.27.4 - 2026-09-26#
Vydání v0.27.3 dorazilo na crates.io (kshana a kshana-mcp) a PyPI, poté se zastavilo u npm, takže npm, obraz MCP na ghcr.io, registr MCP, JetBrains Marketplace a kshana.dev je nikdy nedostaly. 0.27.4 nese tentýž engine, s opravou vydání níže, do každého kanálu.
Opraveno#
- Krok publikace npm pojmenovává tarball explicitní cestou. npm čte holé
npm-dist/kshana-0.27.3.tgzjako zkratku GitHubuowner/repo, takže úloha npm vydání v0.27.3 se pokusila naklonovatgithub.com/npm-dist/kshana-0.27.3.tgza selhala s „Permission denied (publickey)“. Samotný tarball byl sestaven a atestován. Krok nyní publikuje./npm-dist/*.tgz. Vše po npm v pořadí vydání (obraz MCP, plugin pro JetBrains, kontrola shody kanálů a web) bylo přeskočeno, jak je navrženo.
Změněno#
- Katalogy jednotek telecom-timing a
gnss-insjsou vyňaty z detekce kopírování, podle stejné politiky a stejného testu odůvodnění jako ostatní katalogy. Brána kvality SonarCloud zčervenala kvůli duplicitě v novém kódu (4,0% oproti 3%) a každý duplicitní blok byl řádek jednotek nebo položka masky ITU-T.
0.27.3 - 2026-09-25#
Přidáno#
scenarios/small-uas-jammed-nav.toml: jak dlouho drží navigace malého dronu po rušení GNSS. Spouští inerciální jednotku MEMS (mikroelektromechanickou) třídy řídicí jednotky letu, Bosch BMI088, proti jednotce taktické třídy. Signál GNSS (Global Navigation Satellite System) je 100 s nominální a poté 60 s odepřen (jamming-demo.tomlukazuje, proč to dělá blízký rušič). Biasy BMI088 jsou rezidua zbylá po kalibraci při spuštění, převzatá z teplotních koeficientů v jeho datovém listu (BST-BMI088-DS000-19 rev 1,9): 0,015 °/s na K pro gyroskop a < 0,2 mg na K pro akcelerometr. V souboru jsou označeny dva předpoklady: zahřátí o 10 K po kalibraci a pokračující zahřívání o 1 K za minutu za letu. Drift za letu je chyba, kterou se filtr nemůže naučit, než rušení začne, a ta ukončí setrvačný pohyb. Každý údaj je modelovaný; jeho ověření vyžaduje záznamy letů z prostředí s rušením.kshana example small-uas-jammed-navjej vypíše.Každý senzor
gnss-inssi může nastavit vlastní apriorní hodnotu filtru ([imu_quantum.filter_prior]nebo[imu_classical.filter_prior], ssigma_accel_biasasigma_gyro_bias). Výchozí hodnota je beze změny, takže každý existující scénář dává stejný výsledek. Zbytkový bias gyroskopu jednotky spotřebitelské třídy leží asi 26 sigma mimo výchozí hodnotu taktické třídy, kde by jej filtr nikdy nenaučil. Apriorní hodnota, která není konečná a kladná, je odmítnuta a výsledek apriorní hodnotu zopakuje, je-li nastavena.kshana example [<name>]dává uživateli registru scénář ke spuštění. Uživatelcargo install kshanamá spustitelný soubor a žádný adresářscenarios/, takže první příkaz, který mu každý quickstart dal, selhal. Rozhraní příkazového řádku (CLI) nyní nese 75 referenčních scénářů, které běží samostatně, bajt po bajtu zkompilovaných zscenarios/(src/bundled_scenarios.rs; tabulka žije v binárce CLI, takže balíček Pythonu (wheel) a modul WebAssembly nenabobtnají).kshana exampleje vypíše;kshana example clock-holdover > clock-holdover.tomljeden zapíše. Další dva soubory jsou jen v repozitáři:lunar-llr-datumčte archivovaná data laserového měření vzdálenosti k Měsíci, která se dodávají jen s repozitářem, aquantum-pnt-demonstrator.suiteje manifest studie, který spouští tři sourozenecké soubory pomocí--study. Požadavek na kterýkoli z nich uvede důvod a skončí s kódem 2, místo aby vypsal něco, co nemůže běžet samo.tests/cli_first_run.rsdrží tabulku shodnou s adresářem v obou směrech, takže nový soubor scénáře, který není ani přibalen, ani uveden jako jen pro repozitář, selže.Každý ukazatel kvality ve výsledku hodin, dráhy, hybridního nebo fúzního běhu nyní říká, zda je VALIDATED, nebo MODELLED, přímo ve výsledku. Dokument výsledku získává blok
figure_tiers, vždy jako svůj poslední klíč. Uvádí každý hlášený údaj (napříkladquantum.fom.timing_p95_ns) s jeho úrovní — VALIDATED znamená ověřeno proti nezávislému vnějšímu orákulu, MODELLED znamená model z prvních principů testovaný vnitřně — a řádek verifikační matice, ze kterého se úroveň čte. Úroveň pochází zsrc/verification.rspřessrc/fom_label.rs, takže neexistuje druhá tabulka, která by se mohla rozejít. Dříve se slova „ověřeno“ a „modelováno“ ve výsledku holdoveru hodin neobjevila ani jednou a čtenář surového JSON (JavaScript Object Notation) neměl jak obojí rozlišit. Údaje o polozehybridafusionnemají žádný vlastnící řádek matice, takže jsou uvedeny poduntiered, místo aby jim byla přidělena úroveň. Blok nenese žádná čísla. Je prokázáno, že je aditivní, ne jen předpokládáno: jeho odstranění vrátí dokument před změnou bajt po bajtu pro všech pět druhů (test enginu) a oba golden harnessy (tests/registry_golden.rs,tests/cross_platform_golden.rs) nyní odstraňují přesně tento klíč, a jen když je poslední, a zbytek hashují proti svým nezměněným zamrazeným konstantám. Seznam v každém harnessu připíná, které scénáře musí blok nést, takže se výjimka nemůže nenápadně rozšířit.Druh
telecom-timingodpovídá v jednotkách časového inženýra: časová chyba, maximální chyba časového intervalu (MTIE) a časová odchylka (TDEV), každá s PASS nebo FAIL a rezervou proti maskám Sektoru telekomunikační standardizace Mezinárodní telekomunikační unie (ITU-T). Masky jsou přepsány z platných vydání: G.8272 (07/2025) pro třídy A a B primárních referenčních časových hodin (PRTC), G.8272.1 (2024) Amd. 1 (07/2025) pro rozšířené PRTC v uzamčeném režimu a v holdoveru (včetně jeho obálky časové chyby, která stoupá z 30 ns na 100 ns po dobu holdoveru určenou tím, jak dlouho byly hodiny uzamčeny), G.8273.2 (2023) Amd. 2 (11/2025) pro telekomunikační hraniční a podřízené časové hodiny, třídy A až D, a G.8271.1 (2022) Amd. 3 (05/2025) pro meze sítě v referenčním bodě C. Každá položka, kterou tato doporučení nechávají „k dalšímu studiu“, chybí, není odhadována, adocs/TELECOM-TIMING.mduvádí každé číslo s jeho tabulkou nebo článkem a každou vynechanou položku. Zpráva také uvádí čas do překročení každého rozpočtu časové chyby: ve výchozím stavu výchozí holdover ePRTC 100 ns, síťový příděl holdoveru 400 ns, mez bodu C 1 100 ns a koncový požadavek třídy 4 1,5 mikrosekundy.Vstupem je buď syntetický holdover, nebo vaše vlastní řada. Syntetický používá jednu ze čtyř předvoleb oscilátoru (krystalový oscilátor s termostatem, rubidiový etalon, cesiový etalon a čipové atomové hodiny), každá nese údaje o stabilitě, stárnutí a teplotě z pojmenovaného datového listu Microchip. Jak se tyto údaje stávají bílým, flicker a náhodně procházejícím frekvenčním šumem, stárnutím a teplotním členem, je uvedeno v každé zprávě a označeno MODELLED. Vlastní řadou jsou dvojice
[time_s, time_error_ns], vložené přímo (tak běží v prohlížeči) nebo, v nativních sestaveních, ze souboru s hodnotami oddělenými čárkami. Tabulka MTIE/TDEV s limitem každé zvolené masky vedle ní se zapisuje jako artefakt CSV běhu.scenarios/telecom-prtc-holdover-24h.tomlje 24hodinový rubidiový holdover se stárnutím, flicker šumem a denním teplotním cyklem: jeho největší časová chyba je 603,2 ns, překročí 100 ns 8 206 s po ztrátě a zůstává po celý den uvnitř 1,5 mikrosekundy a neprojde obálkou holdoveru rozšířeného PRTC, jak se sluší na hodiny, které nejsou třídy cesia.scenarios/telecom-tie-ingest.tomlukazuje vložený vstup. MTIE a TDEV, které druh hlásí, jsou zkontrolovány proti balíčku allantools na uložené 2 048vzorkové řadě holdoveru, přesně pro MTIE a na 1.1e-15 pro TDEV, takže matice získává jeden řádek VALIDATED a dva MODELLED (přepis masek a předvolby) a nyní má 171 řádků — 65 VALIDATED, 102 MODELLED, 4 PARTNER. Pokrytí jednotek polí roste z 60 z 61 druhů na 61 z 62 a z 1 742 na 1 788 popsaných polí. Druh je nový a aditivní: žádný existující scénář, pin ani publikovaný údaj se nemění.Hřiště spouští engine ve Web Workeru na pozadí, takže pomalý scénář již stránku nezamrazí.
web/engine-worker.mjshostí engine WebAssembly aweb/engine.mjsmu předává každé provedení scénáře — běhy, přesuny parametrů a exporty SP3 / OMM / OEM / CSV. Běh, který trvá déle než 150 ms, ukáže stav zaneprázdnění (Spustit zakázáno, „Running… N s“) a tlačítko Zrušit, které worker ukončí a znovu spustí; prohlížeč, který nedokáže spustit modulový worker, se vrátí ke staré cestě v hlavním vláknu.cislunar-arc-recovery, vyřazený z katalogu, protože zamrazil stránku, je v něm zpět, označen jako pomalý: v Chrome trvá asi 13 s (čtyři volání enginu po asi 3 s), během nichž stránka zůstává responzivní.Každá hlášená veličina
cislunar-observabilitynyní nese jednotku, třídu původu a definici — poslední druh na celoprojektovém seznamu výjimek kromě jednoho. Všech 41 číselných polí dokumentu VYDANÝ je popsáno, takže pokrytí jednotek polí roste z 59 z 61 druhů na 60 z 61 a z 1 698 na 1 742 popsaných polí, přičemž nevyřízený nedostatek definic zůstává beze změny na 239.Bránil tomu pin, který zamrazuje vydaný dokument a který pojmenoval
unitsjako klíč, jejž dokument nesmí nikdy získat. Přidání jednoho by znamenalo smazat tuto aserci a znovu nastavit základ tří hashů ve třech souborech — tvar nerozeznatelný od zakrytí regrese. Místo toho dva piny, které tento dokument měří, nyní dokazují, že přidání je aditivní: každý odstraní blokunitszpět a znovu hashuje proti konstantě zamrazené před vznikem bloku a obě konstanty jsou beze změny. Mutace potvrzuje, že záruka je skutečná — změňte vydanou hodnotu a znovu nastavte základ hashe celého dokumentu tak, jak by to udělala neopatrná oprava, a odstranění a nové hashování stále selže. Třetí pin, v obecném harnessu registry-golden, má základ nastaven znovu v souladu se šesti sourozenci, kterým byl základ nastaven znovu právě z tohoto důvodu, a jeho literálexpect_summarynesoucí hodnoty se nemění.realtime-frame-eophlásí, proti které pravdě byl každý řádek orientace Země hodnocen a jak často se uplatnila záložní varianta.table3_joint_eop[].{ut1, polar_motion,combined}získávajítruth_sourceatruth_fallback_rows. Hladinafinalje hodnocena proti finálnímu Bulletinu B a může používat jen epochy, které jej publikují; každý řádekdNje hodnocen protitruth_pm()/truth_ut1(), které se vracejí k rychlé hodnotě z Bulletinu A. Na přibaleném výřezu 2026 to je 12 z 31 vzorků při jednom dni, oproti 0 u hladiny — takže řádek hladiny a řádky předpovědí vedle něj spočívají na měřitelně odlišné pravdě, což zpráva nyní uvádí, místo aby to nechala odvodit z počtu vzorků, který stoupá tam, kde vnořené horizonty říkají, že nemůže.moonlight-service-volumevydává keplerovský základ shodné velikosti.ephemeris_comparison.keplerian_matchedznovu spouští ilustrativní konstelaci při počtu družic sady ZÍSKANÁ, přítomné jen tehdy, když se počty liší. Počet je součástí geometrie tohoto návrhu — RAAN a střední anomálie jsou rozloženy jako360k/n— takže bez něj byla pětidružicová získaná sada hodnocena proti osmidružicové ilustrativní a návrh byl zaměněn s velikostí. U pětidružicové referenční sady LANS se 8,68 z 14.24bodového rozdílu v pokrytí ukazuje být třemi chybějícími družicemi a jen 5,56 bodu návrhem; u čtyř družic skutečně na lunární oběžné dráze dosahuje účelově navržená čtyřdružicová sada 4,86 %, kde ony dosahují 0 %. Test připíná, že shodný řádek je znovu postavená konstelace, a ne nakonfigurovaná s přepsaným štítkem, jak byl poprvé napsán a co běh poté hlásil.Devět karet schopností na veřejném webu, pokrývajících 22 řádků verifikační matice, které se dodávaly bez karty na úrovni produktu. Engine vyrostl o rodinu schopností — kontrolu ARAIM proti publikovaným referenčním vektorům Working Group C, skutečnou získanou geometrii lunární konstelace, lunární kontury odepření s naměřeným pásmem C/N₀, krok od rozvrhu VLBI ke kovarianci stanic, optické a RF předání s vkládáním poruch napříč modalitami, předpověď orientace Země v reálném čase proti archivovanému Bulletinu A, sdílení apertury mezi navigací a komunikací, setrvačný pohyb INS/TRN a pokrytí jednotkami a původem — každá s řádkem matice a přibaleným scénářem, a žádná z nich nebyla na kshana.dev pojmenována. Pokrytí karet řádky roste z 72 ze 168 řádků na 94.
Osm scénářů přidáno do katalogu hřiště. Tlačítko Spustit na kartě schopnosti se objeví, jen když soubor nese i
web/app.js; šest karet pojmenovalo scénář, který nenesl, takže se vykreslily bez možnosti je spustit — jedna z nich, datum reálného laserového měření vzdálenosti, byla v tomto stavu od svého vydání.tests/scenario_examples_doc_sync.rsnyní hlídá invariant v obou polovinách: cílrunkarty musí být přibalen podscenarios/a nabízen katalogem. Testováno mutacemi proti oběma způsobům selhání.moonlight-service-volumevydává svou geometrii po družicích jako<scenario>.table.csv, když je nakonfigurováno exportní místo (G11). Je to největší pole, které crate publikuje — 2304 řádků ve vydané společné tabulce komunikací a navigace — a dosud se k uživatelům dostávalo jen uvnitř JSON, tvaru, který zkrátil 57bodovou křivku sourozeneckého scénáře na 23 bodů pod sloupcem tvrdícím, že jsou tam všechny. Jeden řádek na spoj, počet řádků na řádku záhlaví, sloupce antén přítomné jen tehdy, když byla anténa nakonfigurována. Běh bez exportního místa je bajtově beze změny a nezapisuje žádný soubor.SBOM nyní popisuje to, co se dodává: 60 komponent se stalo 66.
scripts/gen-sbom.shuváděl každý balíček rozlišení s výchozími funkcemi, včetně vývojových závislostí. Tím se do soupisu materiálu dostalysgp4achrono— crates jen pro testy, nezkompilované do žádného artefaktu — a vynechal řetězec--features python, který linkuje wheel pro PyPI (pyo3,pyo3-ffi,pyo3-macros,pyo3-macros-backend,pyo3-build-config,portable-atomic,target-lexicon,heck), což je hranice cizích funkcí tohoto wheelu. Skript nyní prochází graf rozlišení od balíčku kshana jen přes běžné a build hrany, přes sjednocení sad funkcí výchozí,pythonawasm(balíček npm nese tentýž SBOM), pro každou cílovou platformu. Připnutý verdikt shody CycloneDX má základ nastaven znovu přes jeho uložený generátor: 60 → 66 komponent, 53 → 60 složených licenčních výrazů a stále nula chyb schématu, jakmile jsou umístěny do standardního tvaruexpression.Tabulka reprodukovatelnosti CSV dosahuje každého vstupu, nejen CLI a wheelu pro Python. Server MCP získává sedmý nástroj,
export_table_csv, který spustí scénář a vrátí bajtově stabilní tabulku, kterou CLI zapisuje jako<scenario>.table.csv— nebo chybu pojmenovávající druhy, které ji publikují (realtime-frame-eop,lunar-time-budget,lunar-jammingamoonlight-service-volumejen když jsou nastavenyexport_site_lat_deg+export_site_lon_deg). Modul WebAssembly získávátable_csv, který vrací týž text neboundefined. Test zpětného průchodu MCP a testy vazby pro Python nyní připínají vrácené CSV bajt po bajtu protitests/golden/realtime-frame-eop.csva připínají, žeRunOutput.write_csvvrací zapsané bajty a 0 bez vytvořeného souboru pro druh bez tabulky. Každé místo, které uvádí počet nástrojů MCP nebo je vypisuje, nyní říká sedm.run_allv modulu WebAssembly: jeden běh enginu pro každý výstup.run,chart_svg,summaryatable_csvkaždý provádí scénář od nuly, takže hřiště platilo za čtyři úplné běhy na kliknutí — asi 12 s místo 3 s procislunar-arc-recoveryv prohlížeči.run_allvrací{json, svg, summary, csv}z jednoho běhu a hřiště jej nyní používá. Shoduje se se čtyřmi samostatnými voláními bajt po bajtu.
Opraveno#
REVIZE: vazba biasu gyroskopu ve filtru GNSS/INS měla špatné znaménko a údaje o výpadku
gnss-insse mění. Rozšířený Kalmanův filtr (EKF) chybového stavu drží oba inerciální biasy jako rezidua (skutečnost mínus běžící odhad, zpětně přidávaná sčítáním). Sloupec akcelerometru řídil chybu rychlosti pomocí+C_b^n b_a, ale sloupec gyroskopu řídil chybu orientace pomocí−C_b^n b_g. Zbytkový bias gyroskopu ve skutečnosti otáčí vypočtenou orientaci o+C_b^n b_g, takže každý odhad biasu gyroskopu tlačil nesprávným směrem. Balíček zůstal stabilní jen proto, že jeho výchozí apriorní hodnota biasu gyroskopu (1e-4 rad/s, 1 sigma) byla dost těsná, aby ty stavy držela na místě. Při širší apriorní hodnotě filtr divergoval, i když byl skutečný bias gyroskopu nulový: 93 m sloučené chyby při výpadku se stalo 4,3 km. Publikované údaje proscenarios/gnss-ins.tomlse mění takto:gnss-ins.tomlpřed (≤ 0.27.2) po IMU se studenými atomy, sloučená střední kvadratická hodnota při výpadku 96,1 m 1,9 m IMU se studenými atomy, setrvačný pohyb v toleranci (50 m) 30 s 60 s (celý výpadek) taktická IMU, sloučená střední kvadratická hodnota při výpadku 62,5 m 3,1 m taktická IMU, setrvačný pohyb v toleranci (50 m) 37 s 60 s (celý výpadek) Údaje při volném běhu (130,7 m a 314,3 m) se nemění; filtr nikdy nepoužívaly. Dřívější čtení balíčku, že sloučený setrvačný pohyb je omezen podlahou orientace při předání a proto se s lepším senzorem nezlepšuje, bylo artefaktem této chyby a je staženo. S konstantními biasy bez šumu je filtr nyní naučí, dokud je GNSS k dispozici, takže sloučený setrvačný pohyb je nejlepší případ. Externí reference filterpy (
tests/gnss_ins_sensor_fusion_reference.rs) kontroluje jen aktualizace měření, proto propagaci nikdy neviděla. Dva testy nyní kontrolují znaménko přímo a oba selhávají na starém. První, vclosed_loop.rs, vloží známý zbytkový bias gyroskopu do strapdownu a vyžaduje, aby filtr předpověděl výslednou chybu orientace na 2 %. Druhý vyžaduje, aby široká apriorní hodnota naučila bias gyroskopu 1e-3 rad/s a zůstala do 6 m. Cross-platform goldengnss-insje znovu připnut z tohoto důvodu a z žádného jiného.Každý quickstart registru nyní běží tak, jak je napsán, na čistém stroji. Měřeno před touto změnou, příklady crates.io a PyPI (Python Package Index) četly
scenarios/clock-holdover.toml, což instalace z registru nemá, a příklad npm spadl pod Node.js sTypeError: fetch failed, protožeinit()balíčku načítá svou binárku WebAssembly afetchv Node nedokáže číst lokální soubor. Nyní:README.crates.mdaREADME.pypi.mdnesou tento scénář přímo, jak to už dělalREADME.npm.md. Fence v Rustu je celý program s vlastnímmain, protože řádek# Ok::<…>skrytý pro rustdoc, kterým končil, se na crates.io zobrazuje a po vložení se nezkompiluje.tests/readme_code_fences_doc_sync.rsjej stále kompiluje bajt po bajtu a nyní také odmítne skrytý řádek ve fence.README.npm.mdodděluje prohlížeč od Node.js a dává recept pro Node, který čte binárku z disku a předává jiinitSync. Test doc-sync přijímáinitSyncjako zavaděč, který generuje wasm-bindgen.- Všechny tři vkládají scénář s jeho řetězci původu nezkrácenými, takže hash scénáře je
5ba83a232b94na každém místě. Příklad npm je dříve zkracoval, což mu dávalo jiný hash než CLI. - Reprodukováno z lokálních sestavení tohoto stromu: čerstvý projekt
cargo news cestou k závislosti na zabaleném crate sestavil a spustil příklad v Rustu; wheel sestavený pomocí maturin ze zabalených zdrojů, nainstalovaný do nového virtuálního prostředí, spustil příklad v Pythonu; a balíčekwasm-pack --target web, zabalený a nainstalovaný pomocí npm, spustil recept pro Node. Všechny tři vypsaly týž souhrnný řádek.
cargo run -- <scenario.toml>funguje z klonu.Cargo.tomlnastavujedefault-run = "kshana". Bez toho cargo odmítlo s „could not determine which binary to run“, na což narazil každý řádekcargo run --v dokumentaci.Chyby CLI v první minutě říkají, co dělat dál. Cesta ke scénáři, která neexistuje, nyní přidává nápovědu odkazující na
kshana examplea druhý poziční argument vypíše text použití i pojmenuje argument.--help,--version, chyba neznámé volby (kód 2) a jednořádkovéok:při úspěchu u--validateuž byly v main.tests/cli_first_run.rsnyní pokrývá všechny, protože dříve žádný test pro žádný z nich binárku nespouštěl.list_kinds()v Pythonu je zdokumentováno tak, že vrací jeden řetězec JSON, ne seznam. Vrací tatáž metadata jakoscenario_kinds(), serializovaná, takže jeho procházení prochází znaky. Zachovává si návratový řetězec, aby se existující volající nerozbili.kshana.pyi, komentář dokumentace vazby,docs/PYTHON_API.mdaREADME.pypi.mdto nyní říkají a odkazují nascenario_kinds().Všechny tři README registrů rozepisují každou zkratku při prvním použití. PNT je nyní rozepsáno v úvodním heslu, kde se poprvé objevuje, a CLI, TOML, JSON, SVG, CSV, CSAC, HTML, URL a API jsou rozepsány v souborech, které je používají. Nadpis tabulky orákulí už neříká „CI-gated“, dokud CI není definováno.
Opravena publikovaná hodnota: dostupnost ARAIM pro dvě konstelace na přibalených TLE z Celestraku pro GPS + Galileo.
docs/CAPABILITY.mduváděl, že připojení Galilea zvedá dostupnost z 0,21 na 0,67 při VAL 12 m a že režim odolný vůči poruše konstelace je při pouhých dvou konstelacích omezený. Vycházelo to ztests/araim_dual_real_data.rs, který propagoval každou družici od její vlastní epochy TLE (parse_propagatorsepochu zahazuje), a epochy v těchto souborech zahrnují 70,6 h (GPS) a 335,7 h (Galileo), takže družice byly vzájemně v nekonzistentních časech. Test nyní epochu zachovává (parse_tle) a vyhodnocuje každou družici v jednom společném okamžiku UTC, a to v nejpozdější epoše TLE v dané sadě (2026-06-07T07:21:04). Naměřená dostupnost na téže mřížce 24 h o 289 vzorcích je nově pro samotné GPS 0,993 (dříve 0,208), pro sloučené konstelace 1,000 (dříve 0,671) a pro duální režim odolný vůči poruše konstelace 0,990 (dříve 0,031); u limitu APV-I se duální režim mění z 0,180 na 1,000. Závěr se obrací: při konzistentní obloze nesou dvě konstelace hypotézu poruchy konstelace při VAL 12 m. Stejné hodnoty vyjdou i při použití nejstarší epochy TLE jako reference. Autokontrola v testu přišpendluje jeho smyčku dostupnosti vzorek po vzorku karaim_dual_constellation_availability, takže jediným rozdílem je časové sladění.docs/CAPABILITY.mdadocs/REAL_TLE_GUIDE.md§3 obsahují nová čísla; níže uvedený záznam 0.13.0 zůstává tak, jak byl vydán.Veřejné stránky už neprezentují RINEX 4 jako ověřený. Engine nyní soubor s navigační zprávou RINEX 4 podle názvu odmítne, místo aby jej chybně dekódoval, ale mřížka standardů dosud ukazovala kartu „RINEX 3 / 4“ se štítkem ověřeno, vázanou na důkazy RINEX 3 pro navigační parser. Karta nyní zní „RINEX 3“ a README,
docs/CAPABILITY.md,docs/STANDARDS.md,ROADMAP.mdi souhrn schopností uvádějí, co je pravda: soubory s pozorováními RINEX 3.0x se zpracují, rozvržení pozorování 4,00 by se zpracovat mělo, ale žádný soubor 4,00 nebyl kódem dosud přečten, a navigační soubory RINEX 4 jsou odmítány.--validateříká, kdy „ok“ znamená, že nebylo co kontrolovat. Asi dvě třetiny katalogu nepublikují žádné povinné pole — tyto balíčky spouštějí svou referenční konfiguraci z prázdného těla — takže lint mohl u nich vypsat jen „ok“, stejnými slovy, jako po kontrole šesti polí. Řádek o úspěchu nyní uvádí počet povinných polí, která našel přítomná, nebo že daný druh žádná nevyžaduje.scripts/gate.shodmítá nečíselnéREPEATneboTEST_THREADS. V bashi 3,2 způsobiloREPEAT=nochybu číselného porovnání, které se vyhodnotilo jako nepravda, takže brána oznámila „repeatability loop SKIPPED (REPEAT=0)“ pro hodnotu, která nebyla 0, a přesto zapsala potvrzení. Oba parametry nyní končí s kódem 2, pokud nejsou prostými celými čísly.MSRV je uvedena jako 1,85 všude, kde ji člověk čte.
Cargo.tomlpřešel v minulém vydání na 1,85; odznak v README, text o instalaci a řešení potíží,codemeta.jsoni vlastní zdůvodnění v crate MCP stále uváděly 1,75.RunOutput.__repr__v pythonové vazbě uvádí bajty, ne „znaky“. Vypisovalolen()řetězců UTF-8, což je počet bajtů: 710 „znaků“ pro tabulku o 708 znacích.README už nedokumentuje použití
--study --study-namespolečně.--study-nameje příznak pro jediný scénář, při--studyse ignoruje (binárka vypíše varování). Dva příklady ke zkopírování v README.md a README.crates.md nyní ukazují samotný příkaz study.Důkazy o stabilitě hodin na webu uvádějí obě pozorované tolerance. Řada cesiových hodin 5071A je reprodukována s přesností ≤ 3e-5 a PHASE.DAT ≤ 5e-5; odstavec uváděl 3e-5 pro obě.
Dva soubory s výstupem enginu se již nesledují.
scenarios/quantum-pnt-demonstrator.study.{json,html}byly označeny enginem 0.20.0 s prázdnými všemi ukazateli kvality a vlastní příkaz study z README je přepisoval, čímž špinil pracovní strom a blokoval push gate.*.study.json/*.study.htmlse nyní ignorují jako ostatní čtyři výstupy enginu.Průchod seedem v playgroundu už nepadá při každém běhu. Průchod posouval celočíselný parametr
seedlineárně (1, 10,9, 20,8, …) a engine, který jej čte jakou64, každou zlomkovou hodnotu odmítl. Celočíselné parametry nyní procházejí různými celými čísly.Každé stažení z playgroundu říká, který engine a který vstup jej vytvořil. Několik druhů (např.
realtime-frame-eop) nevydáváengine_versionaniscenario_hash, takže jejich stažené soubory se jmenovaly prostěkshana-csv.csv. Název nyní používá verzi načteného enginu a 12místný hexadecimální otisk FNV-1a-64 textu scénáře.
Změněno#
Publikovaný crate je menší než polovina původní velikosti a
cargo install kshanasestaví samotné CLI. Balíček dříve obsahoval články, jejich podací balíčky, artefakty obrázků z článků, notebooky,docs/, skripty správců a ukázkové programy. Nic z toho knihovna ani CLI nekompiluje. Obsahoval také tři interní generátory podsrc/bin/(crossover_study,gen_validation_artifacts,validation_report), takže instalace z registru kompilovala a instalovala čtyři spustitelné soubory, z nichž tři byly užitečné jen uvnitř checkoutu. Tyto stromy a zdroje tří generátorů jsou nyní vyloučeny. Cargo vypisuje binárky balíčku ze souborů, které obsahuje, takže publikovaný manifest uvádí jenkshana. V klonu se generátory stále nacházejí automaticky, takžecargo run --bin <name>a úloha vydání, která spouštívalidation_report, zůstávají beze změny. Změřeno pomocícargo package: dříve 763 souborů, 16,7 MiB, 6,8 MiB komprimovaně; nyní 591 souborů, 10,5 MiB, 3,0 MiB komprimovaně. Jeho ověřovací sestavení, které kompiluje jen zabalené soubory, projde.cargo install --pathna zabaleném crate nainstalovalo jeden spustitelný soubor,kshana.Výstup, který časovací inženýr přečte: už žádné
p95 0.0ns, žádnésecurity 0.000bez útoku a počty na webu, které odpovídají README. Jde o revizi zobrazení. Žádné publikované číslo se nemění; hodnoty JSON jsou totožné, což dokazují výše uvedené golden hashe.- Jednořádkový souhrn vypisoval 95. percentil (p95) časové chyby optických hodin jako
0.0ns, zatímco tabulka vedle ukazovala 1.20e-4 ns. Nenulová časová hodnota příliš malá pro jedno desetinné místo se nyní vypisuje na tři platné číslice (p95 1.20e-4ns); přesná nula se stále vypisuje jako0.0. Zpráva HTML (HyperText Markup Language), srovnávací tabulka studie i stažitelná zpráva z playgroundu používají stejné pravidlo, takže se žádná nenulová hodnota nevypíše ani jako0.000. securityje analytická mez detekovatelnosti spoofingu, která má smysl jen proti nakonfigurovanému útoku. Druhyclock,orbit,hybridafusionžádný nekonfigurují, takže jejich souhrn nyní vypíšesecurity n/a (no attack)místo čísla jako0.000, které se čte jako selhání detekce. Hodnota zůstává vfom.security, označenaapplicable: falses důvodem vfigure_tiers, a tabulky ve zprávě uvádějí „neuplatňuje se“. Druhspoofdetekci nadále hodnotí.- Dva souhrnné pin v
tests/registry_golden.rsse posunuly přesně ze dvou těchto důvodů a z žádného jiného:golden_clock(kvantové p95 a obě hodnotysecurity) agolden_orbit(obě hodnotysecurity; jeho hodnoty p95 jsou přesně nula). Hashe jejich celých dokumentů se nezměnily. Očekávané souhrny v README, třech tutoriálech a jejich výukových scénářích jsou aktualizovány tak, aby odpovídaly, atests/tutorials.rskontroluje výukové kopie proti enginu. - Řízená prohlídka v playgroundu se už neotevírá při prvním načtení. Její modální okno zachytávalo první kliknutí a její reflektor odscrolloval stránku od místa, kam návštěvník přišel. Spouští se tlačítkem „Take the 60-second tour“ nebo plovoucím tlačítkem Tour.
- Stránka se na telefonu už neposouvá do stran. Při 390 px dával řádek se značkou a tlačítko GitHub asi 410 px obsahu, tedy přetečení o 4 px; záhlaví se nyní vejde od 320 px výše a tabulka ukazatelů kvality se posouvá uvnitř vlastního rámečku, místo aby rozšiřovala stránku.
- Průzkumník schopností začínal vlastním počtem karet („46 karet schopností … 17 podložených externím orákulem“) vedle README, která uvádějí 64 ze 168. Nyní začíná verifikační maticí, čtenou z vygenerovaného
web/data/verification-matrix.json(téže matice, ke které jsou přišpendlena čísla v README), a karty pojmenovává až poté jako souhrnnou vrstvu, kterou jsou.web/counts.test.mjs, nový krok v pracovním postupu průběžné integrace (CI), kontroluje aritmetiku a vzájemně porovnává README.md a popisy na stránce;tests/web_validation_counts_doc_sync.rspřišpendluje propojení ze strany Rustu.
- Jednořádkový souhrn vypisoval 95. percentil (p95) časové chyby optických hodin jako
Veřejný popis nyní začíná časováním a holdoverem, nejlépe ověřenou oblastí. Úvod README a
docs/POSITIONING.mdpředstavují Kshanu jako otevřený, reprodukovatelný engine důkazů odolnosti PNT s označeným původem: nejprve časování a holdover kritické infrastruktury (odhadovače Allan, modifikované Allan, time-deviation a maximální chyby časového intervalu a inverze rozptylu při doběhu holdoveru jsou řádky VALIDATED, které za tím stojí), kvantová technika jako neutrální metoda srovnání kvantového a klasického přístupu, jejíž výsledky jsou označeny MODELLED, a lunární / cislunární navigace a navigace v hlubokém vesmíru jako udržované schopnosti, nikoli hlavní sdělení. Obě stránky nyní říkají, čím Kshana není — není simulátorem rádiových signálů ani zkušebním stavem hardware-in-the-loop, není náhradou za MATLAB/Simulink, STK ani Orekit — a odkazují na nový druhtelecom-timinga nadocs/TELECOM-TIMING.md. Starý řádek „neexistuje žádný dobrý open nástroj“ je pryč: hledání, které nic nenajde, není důkazem, že nic neexistuje.ROADMAP.mdzískává nedatované pořadí priorit (nejprve časování, na druhém místě kvantové srovnání, lunární udržované) a vypouští tři zastaralé položky (systematické chyby Coriolis a light-shift, počáteční podmínky NRHO a lunární scénář, vše již dodáno); řádek v README „Coriolis and light-shift remain roadmap“ je opraven stejným způsobem.docs/CAPABILITY.mdpřestal podhodnocovat. Řádek o zemských soustavách uváděl „none“, zatímco matice hodnotí GCRS→ITRS jako VALIDATED; nyní zní „full“ a řádek o základních soustavách zaznamenává křížovou kontrolu ANISE jako dodanou. Řízený režim byl uveden jako plán; playground dodal řízené posuvníky i řízenou prohlídku. Průchod protisrc/verification.rsopravil dalších pět řádků, které předcházely svým validacím: silový model Cowell a dávkové/sekvenční určování oběžné dráhy proti Orekitu 12,2, přelety pozemních stanic proti detektoru elevace Orekitu, jádro faktoru zhoršení přesnosti proti gnss_lib_py a import OEM proti nezávislému parseruoem; řádek o verifikaci a validaci nyní jmenuje stráže, které kontrolují, že každý citovaný test existuje.Glosář vysvětluje, co říká soubor s výsledkem.
docs/GLOSSARY.mdzískává srozumitelné položky pro výstupní pojmy (holdover, p95, integrita, skóre zabezpečení, PDOP,sigma_y,q_wf), pojmy telekomunikačního časování (časová chyba, max|TE|, cTE, dTE, MTIE, TDEV, PRTC, ePRTC, T-BC, T-TSC, OCXO, CSAC) a tři úrovně důkazů (VALIDATED, MODELLED, PARTNER).Zkratky jsou rozepsány při prvním použití v každém ručně psaném veřejném dokumentu. README a 24 souborů v
docs/mělo několik set zkratek použitých před rozepsáním nebo bez něj; každá je nyní rozepsána tam, kde se v daném souboru poprvé objeví. Tři vygenerované soubory (docs/VERIFICATION-MATRIX.md,docs/MODELLED-RATIONALE.md,docs/SCENARIOS.md) zůstávají nedotčeny: jsou psány zsrc/verification.rsaapi::list_scenario_kinds(), takže jejich znění se musí změnit u zdroje.Pokrytí řádků má záznamové měření.
docs/COVERAGE.mdzaznamenává 95,63 % (37 697 z 39 419 řádků) z úlohy CIcoveragenab1d350datests/coverage_figure_doc_sync.rsk němu přišpendluje pět veřejných ploch s „~96%“ — jediné hlavní číslo, které se udržovalo ručně a které se už jednou nepozorovaně pohnulo.Nové brány synchronizace dokumentace pro plochy, které nic nečetlo.
tests/readme_code_fences_doc_sync.rskontroluje každýimport { … } from "kshana"v bloku JavaScriptu proti exportům WebAssembly a přišpendluje příklad v Rustu z README.crates.md bajt po bajtu ke kopii, kterou testovací binárka kompiluje.tests/security_md_doc_sync.rsselže, pokudsrc/lib.rsztratí#![forbid(unsafe_code)]nebo SECURITY.md přestane tuto skutečnost uvádět.tests/no_overclaims.rsnyní prohledává takéweb/README.mda tři README registrů a každý standard na webu musí výslovně uvádět svůjproof.Dvě kontroly hodin na skutečném hardwaru běží na runneru.
realdata-clock.yml(měsíčně a při ručním spuštění) stáhne řady 5071A a PHASE.DAT a spustí oba testy sKSHANA_REQUIRE_REALDATA=1, takže chybějící vstup selže, místo aby se přeskočil. Oba stahovací skripty jsou přišpendleny k jednomu commitu allantools a ověřují SHA-256.Pythonový typový stub je kontrolován proti sestavenému wheelu (
mypy.stubtestv úloze bindings), čímž se stalo, žecsv/write_csvbyly dodány bez stubu.Glosář definuje URE, EOP, FoM, CTI a TIB, které README a registr používaly bez vysvětlení.
Smlouva o polích každého druhu je nyní pravdivá a test ji tak drží. Změnilo se pět z 61 druhů. Druhy s neprázdným
required_fieldspřecházejí z 21 na 22:ephemerisnyní vyžadujetle|orbit+epoch(holékind = "ephemeris"dříve prošlo--validatea pak selhalo při běhu) aquantum-tradepřidávácandidate_adev_taus+candidate_adev_values|candidate_clock_class, což jeho běh už vyžadoval. Povinná položka smí používat|(jedno z těchto) a+(všechna tato společně);--validaterozumí oběma.lunar-joint-od-clock,pvtaearth-gnss-lunarpublikují 9 skutečných volitelných polí, která vynechaly.docs/SCENARIOS.mdnyní říká, žekindje povinné pro každý druh kroměclock.tests/required_fields_are_true.rskontroluje každý druh proti jeho dodanému scénáři: odstranění kterékoli povinné položky musí způsobit selhání běhu a dokument obsahující jen povinná pole musí běžet.Poznámky pro JetBrains Marketplace jsou hlídány bránou.
scripts/check-version-sync.shnyní selže, pokud nejnovější záznam<change-notes>vplugin.xmlneuvádí vydávanou verzi; sedm publikovaných verzí přitom neměnně dodávalo poznámky 0.22.0.Údaj o pokrytí v technické zprávě je ten naměřený.
paper/kshana-technical-report.mduváděla „near 97 %“; nyní uvádí near 96 % (95,63 % naměřeno,docs/COVERAGE.md) a je šestou plochou, kterou test pokrytí přišpendluje.Klient enginu mimo hlavní vlákno je testován (
web/engine.test.mjs, v CI): allowlist dispečinku, zrušení a znovuspuštění, tři záložní cesty na hlavním vlákně a zotavení po pádu, proti falešnému workeru.Nic se nepublikuje, dokud označený commit neprojde testy, a vydání není hotové, dokud ho neposkytují všechny registry. Pořadí je nyní tag, ověření, publikace, parita, web, v jednom běhu
release.yml(docs/RELEASING.md).- Publikace čeká na verdikt.
publish.yml,mcp-publish.ymlajetbrains-plugin.ymlse již nespouštějí při pushi tagu;release.ymlje volá z úloh, které majíneeds: verify. Dříve s ním soutěžily: u v0.27.2 crates.io, npm a Python Package Index (PyPI) publikovaly všechny do 4,5 minuty od tagu averifyse vrátil 84 minut po něm; u v0.27.0 npm a PyPI publikovaly, zatímco úloha crates.io selhala. Ruční opakování na tagu je zadrženo novýmscripts/check-release-verdict.sh, který vyžaduje zelenéverifypro přesně tento commit z rozhraní Actions a při čemkoli jiném selže uzavřeně. - Vše se sestaví dříve, než se cokoli nahraje a crates.io, jehož krok balení byl tím, který selhal uprostřed vydání, publikuje jako první.
- Chybějící token registru způsobí selhání úlohy, místo aby se nahrávání přeskočilo a hlásil se úspěch.
- Kontrola parity po publikaci.
scripts/check_channel_parity.pydotazuje crates.io (kshanaakshana-mcp), npm, PyPI (zdrojovou distribuci a všech šest platformních wheelů) a ghcr.io, dokud každý neposkytuje danou verzi, jinak běh selže; docs.rs a registr Model Context Protocol (MCP) se hlásí, ale nejsou vyžadovány. Spuštěna proti minulým vydáním zjistí, že 0.22.0 chybí v npm a PyPI, 0.23.0 v PyPI a 0.27.0 v crates.io. - Předsestavené binárky příkazové řádky pro macOS (Apple silicon i Intel) a Windows x86-64, pojmenované podle cíle (
kshana-aarch64-apple-darwina tak dále), vedle linuxovékshana, jejíž název se nemění. SouborSHA256SUMSpokrývá každý asset averify-releasejej kontroluje a spouští binárky pro macOS a Windows na jejich vlastních systémech. - kshana.dev ukazuje vydání, ne
main. Dříve se nasazoval znovu při každém pushi domain, zatímco jeho stránky jmenovaly poslední vydání.pages.ymlnyní sestavuje jen tag vydání: vydání jej spustí, jakmile každý kanál verzi poskytuje, a ruční spuštění nasadí znovu nejnovější vydání (nebo pojmenované). - Jediný zdroj wheelů. Ručně zkopírovaná matice šesti cílů v
publish.ymlje pryč; voláwheels.yml, takže brána značek auditwheel a kontrola bajtové reprodukovatelnosti nyní hodnotí wheely, které PyPI přijímá, a selhání kterékoli zastaví vydání. - Připnuté nástroje sestavení. Každý pracovní postup žádá Rust 1.93.0 (úloha msrv svou vlastní verzi);
publish.ymlapages.ymlžádaly@stablea log v0.27.2 ukazuje, že rustup nainstaloval 1.98.1 a pak kompiloval s 1.93.0 jen proto, žerust-toolchain.tomlmá přednost. wasm-pack je připnut na 0.13.1 (verze, která sestavila v0.27.2 a kterou zvolil nepřipnutý instalační skript) s kontrolou kontrolního součtu a mcp-publisher na 1.8.1 s jeho publikovaným SHA-256.scripts/check-toolchain.shnyní selže, pokud pracovní postup žádá jiný kompilátor nebo posílá stažený skript rourou do shellu. Žádná ověřovací úloha, golden pin ani lokální skript brány nebyl odstraněn ani uvolněn.
- Publikace čeká na verdikt.
Zabezpečení#
Každá GitHub Action třetí strany je připnuta podle SHA commitu — 93 odkazů v 15 pracovních postupech, 92 z nich nově — s tagem ponechaným jako koncový komentář, aby jej Dependabot aktualizoval. Výjimkou je
dtolnay/rust-toolchain, jejíž tag je volbou toolchainu.Základní vrstvy image serveru MCP jsou připnuty víceplatformním digestem a Dependabot nyní hlídá Dockerfile
mcp/kshana-mcp, takže vrstvy OS stále dostávají bezpečnostní aktualizace — přes zkontrolovaný PR.Kontrola tagu proti manifestu běží ve dvou publikačních pracovních postupech, které dodávají verzi tagu.
mcp-publish.yml(image ghcr, registr MCP) ajetbrains-plugin.yml(Marketplace) soutěží spublish.yml, místo aby na něj čekaly, takže chybně vytvořený tag byl hlídán jen v sourozenci. Oba nyní před sestavením spouštějíscripts/check-version-sync.sh.Čtyři bezpečnostní upozornění, která Dependabot vznesl v den zapnutí svých výstrah, jsou opravena. Server MCP přechází z
rmcp1,7 na 2,2: tři upozornění protirmcp< 2,1 (únik tabulky relací Streamable-HTTP, chybějící validace chráněného zdroje OAuth, vlastní hlavičky následující přesměrování mezi původy) — žádné zde nedosažitelné, protože server mluví jen přes stdio, ale publikovaný crate by neměl připínat zranitelné SDK. Makrarmcp2 potřebují Rust 1,88, takže nyní samotnýkshana-mcpdeklarujerust-version = "1.88"; knihovnakshanazůstává na 1,85. Jediná změna API (Content→ContentBlock) je provedena a testy průchodu tam a zpět projdou. Akce skenu SonarQube přechází z v5 na v6, což opravuje upozornění na injekci argumentů (≥ 4,0, < 6,0).
0.27.2 - 2026-09-22#
Přidáno#
Každá položka Rustu citovaná řádkem verifikační matice je nyní ověřena proti crate. Dosavadní stráž kontrolovala citace ve tvaru cest k souborům; 63 ze 164 řádků, které nejsou od partnera, uvádí svůj důkaz jako položku uvnitř crate —
navsignal::code_tests,integrity::tpl_scalar::tests,api::tests::tracking_loop_kind_round_trips_through_the_dispatch— a token bez přípony.rsbyl pro skener cest neviditelný. Tyto řádky mohly jmenovat přejmenovaný modul, vyprázdněný testovací modul nebo funkci, která nikdy neexistovala, a každá brána by zůstala zelená.tests/verification_rows_name_a_test_that_exists.rsvyhodnotí všech 339 takových citací přes strom modulů, vyžaduje, aby každý řádek, který není od partnera, jmenoval alespoň jeden test, který skutečně nese#[test], a vyžaduje, aby řádky od partnera žádný nejmenovaly. K jeho vyzkoušení posloužily čtyři mutace: přejmenování citovaného modulu, nasměrování jediné testové citace řádku na funkci, která není testem, přejmenování skutečnéhomod testsa odstranění atributů#[test]z něj — každá zčervená na tvrzení, které ji vlastní.Jeden řádek už byl chybný: Alternative / complementary PNT citoval
tests/*, tedy glob, což není citace. Nyní jmenujetests/alternative_complementary_pnt_reference.rsa tři testovací moduly v crate, které za ním stojí.Publikované obrázky se při každém sestavení znovu kontrolují proti enginu (
tests/published_figures_still_reproduce.rs). Tři demo grafy z README jsou vlastním výstupemchart.svgenginu a nic scénář znovu nespustilo; dvě studie křížení v článku byly vygenerovány jednou a zakomitovány; a README uvádí slovy čtyři ukazatele kvality vedlescenario-fom.png. Všechny tři jsou nyní přišpendleny k živému výstupu enginu.Sladění přineslo užitečný výsledek: demo grafy byly nakresleny enginem 0.22.0 a JSON křížení z článku verzí 0.20.0 a při 0.27.1 je každá vykreslená hodnota ve všech pěti artefaktech totožná — tři SVG grafy se od nového běhu liší přesně o dva znaky každý, o značku verze v zápatí. Grafy byly znovu vykresleny, aby zápatí platilo. JSON z článku je záměrně ponechán s označením 0.20.0: je záznamem běhu, jehož obrázek publikovaný článek vkládá, a nové označení by tvrdilo původ, který PDF nemá. Stráž místo toho tvrdí silnější vlastnost — že současný engine stále reprodukuje každou publikovanou hodnotu.
Opraveno#
Analýzy SonarCloud byly zaznamenávány jako
VERSION=not provided, takže období nového kóduprevious_versionnikdy nepostoupilo: stále bylo ukotveno v analýze z 2026-07-02, hodnotilo osmdesát dva dní práce jako jedinou delta a měřilo 7877 „nových“ duplikovaných řádků proti prahu 3 %. Sken nyní předává verzi crate. Základní duplicita je skutečná a toto ji neskrývá: je soustředěna v deklarativních registrechFieldUnitopakovaných napříčensemble,hybrid,fusion,inertialareporta v 168řádkové verifikační tabulce a je zde pojmenována jako práce, nikoli vyloučena z měření.scripts/gate.shnemělo zámek pro jediného zapisovatele a každý běh zapisoval do téhož logu. Nejde o pořádek:integration_binaries,tests_passedatests_ignoredv potvrzení se čtou zpět Z tohoto logu a pre-push hook potvrzení důvěřuje. Brána, která byla zabita, ale jejíž testovací binárka ještě žila, dál zapisovala do souboru, který další běh právě zkrátil — takže počty jednoho běhu mohly být osvědčeny jako počty jiného běhu a povolit push na základě sady, která na odesílaném stromu nikdy neběžela. Nyní platí jedna brána na checkout (odmítne se s kódem 75 vedle živé, zastaralý zámek, jehož pid už neexistuje, se vyčistí) a jeden log na běh, přičemžtarget/gate-run.logse při ukončení obnoví z dokončujícího běhu. Testují se oba směry: živý pid odmítne, mrtvý se vyčistí.src/verification.rstvrdil, že jeho testy „nedokazují, že řetězce pojmenovaných testů/orákulí odkazují na živý kód“. Dvě stráže nyní dělají přesně to, takže dokumentace modulu říkala opak pravdy; nyní uvádí, co je kontrolováno strojově a co se ponechává lidskému úsudku. Zastaralý odkaz naverification::gen— modul jeartifacts— je opraven v dokumentaci sesterské stráže.
Změněno#
mainbyla 2026-09-22 přepsána a vynuceně odeslána. Deset commitů se stalo čtyřmi. Přepsání sloučilo každý commit, který nechal bránu červenou, do commitu, který ji vyčistil, takže každý commit namainmá nyní strom, který projde, a odstranilo zrušené běhy, které po každém nahrazeném commitu zanechávala souběžnostní skupina platná pro celou větev.Nic nebylo zahozeno. Commity před přepsáním zůstávají dosažitelné přes tagy, které na ně ukazují, a konečný strom je bajt po bajtu totožný se stromem, z něhož přepsání vycházelo —
git diffmezi starým a novým koncem je prázdný, kromě tří souborů pracovních postupů, které toto vydání mění.Nahrazené SHA pro každého, kdo drží odkaz na některé z nich:
původní předmět 9733177docs(changelog): disclose the authorship rewrite and the two dangling crate sha1s 5d16ea8fix(docs): the engine-flow diagram said 6 figures of merit; the engine scores 7 148d31dfix(test): two more cross-platform pins, and two wrong assumptions of my own a3a2667feat(web): surface the lunar cluster on the site — seven capability cards 1e8bec6docs(lunar): document 42 public fields and ratchet the ceiling down to 985 7bba514chore(release): v0.27.0 3154548test(docs): guard the distribution diagram, the last unguarded one 7864142chore(release): v0.27.1 Tagy v0.27.0 a v0.27.1 byly záměrně NEPŘESUNUTY. Stále ukazují na
7bba514a7864142, přesné commity, jejichž stromy vytvořily artefakty, které jsou nyní živé na crates.io, npm, PyPI, ghcr.io a v registru MCP..cargo_vcs_info.jsoncrate zaznamenává sha1, z něhož byl zabalen, registry jsou neměnné a atestace původu sestavení SLSA na položkách vydání v0.27.1 je vázána na tento commit. Přesunutí tagů by ponechalo každý z těchto publikovaných artefaktů ukazovat na commit, který už neexistuje. Ponechání zachovává staré commity dosažitelné a každý publikovaný řetězec původu rozpoznatelný, za cenu dvou tagů, které už nejsou předkymain— a proto toto vydání existuje: v0.27.2 dávámainvlastní tag, zabalený z commitu, který na ní leží.Toto je druhé zveřejněné přepsání této historie; první, z 2026-09-21, kanonizovalo autorství a je zaznamenáno v poznámkách 0.27.0 spolu s jeho vlastními dvěma visícími sha1 crate. Přepsání se zde zveřejňuje pokaždé, protože repozitář, který prodává ověřitelný původ, nemůže potichu posouvat půdu pod publikovaným artefaktem.
0.27.1 - 2026-09-22#
Opraveno#
Publikovaný crate se nekompiloval.
src/lunar_orientation.rsobsahujeinclude_str!na nejvyšší úrovni souborutests/fixtures/llr_geometry/de440_moon_pa.csva manifest vylučuje/tests/fixturesz balíčku, takže tarball, který crates.io přijalo, postrádal soubor, který knihovna sama vkládá. Publikace v0.27.0 z tohoto důvodu selhala při ověřovacím sestavení a žádná verze 0.27.0 se na crates.io nedostala; npm a PyPI, jejichž úlohy na něm nezávisejí, publikovaly normálně. Vyloučení nyní nese výjimku pro tento jediný katalog.Každé další
include_str!přípravku vsrc/leží uvnitř modulu#[cfg(test)]a do zabalené knihovny se tedy nikdy nedostane. Jen to na nejvyšší úrovni ano.Nic v CI nespouštělo
cargo package, a proto byl tarball, který nelze zkompilovat, poprvé odhalen až publikační úlohou, poté co už dva další registry vydaly. Úlohapackagenyní při každém pushi sestaví a zkompiluje přesný tarball.
Změněno#
- Piny výstupu lunar-frame-realisation se už s navýšením verze nehýbou. Patička SVG nese verzi enginu, takže každé vydání znovu nastavilo tři hashe — dvakrát za jediný den — a pin znovu pořízený z rutiny se přestane číst. Řetězec verze se před hashováním normalizuje na zástupný symbol a výstup se zvlášť ověřuje, že uvádí běžící verzi, takže tato skutečnost se kontroluje přesněji, než ji kdy kontroloval hash.
0.27.0 - 2026-09-22#
Přidáno#
lunar-llr-datum— datum lunární soustavy ze skutečné pozorovací kampaně.lunar-frame-campaignnahradil vložený Helmertův přenos simulovanou kampaní a řekl to: její síť stanic, její plán a její sigma na pozorování jsou ilustrativní vstupy. Tento scénář odstraňuje simulaci ze dvou míst, kde do odpovědi vstupuje plán a chybový model. Epochy jsou okamžiky vyslání 337 archivovaných normálních bodů laserového měření vzdálenosti k Měsíci ILRS (2015-04-08 .. 2015-06-27, Grasse MeO 7845 a Matera MLRO 7941, všech pět retroreflektorových polí) a každá váha pozorování je vlastní archivovaná preciznost onoho normálního bodu,bin_rms / sqrt(n_raw)— medián 5,13 mm jednosměrné vzdálenosti, převzatý ze souboru, nikoli zvolený zde. Souřadnice stanic pocházejí z IERS ITRF2020 a souřadnice reflektorů z JPL DE430 Table 7; každý přípravek zaznamenává URL, datum stažení a SHA-256 a regeneruje se ze svého zdroje zakomitovaným generátorem, který zdroj ověří a raději skončí, než aby vydal číslo. Zpráva jmenuje, které články jsou měřené a které zůstávají modelované, a modelované jsou změřeny: pozorováno-minus-vypočteno u jednosměrné vzdálenosti nad skutečnými daty činí 156 494 m RMS, což táž sada testů potvrzuje proti JPL Horizons za totéž období (195 655 m RMS vektoru, nejhorší epocha 0,054° — uvnitř ~0,3°, které si vestavěná analytická lunární řada sama nárokuje). Aditivní: nový druh, nový čtečka (realdata::llr_crd) a nový modul (lunar_llr); stávající balíčky lunárních soustav jsou přišpendleny bit po bitu.sigma_ure_mjako parametr scénáře ulunar-integrityamoonlight-service-volume. Přesnost měření vzdálenosti signálem ve vesmíru byla konstantou v době kompilace (LUNAR_SIGMA_URE_M), takže průchod objemem služby mohl odpovědět jen splněno/nesplněno při jedné pevné hodnotě. Ochranné úrovně jsou na ní přesně lineárně závislé, takže její zpřístupnění mění průchod na požadavek na přesnost měření vzdálenosti v celém objemu. Výchozí hodnota reprodukuje dřívější chování bit po bitu.Export geometrie po družicích u
moonlight-service-volume:export_site_lat_deg+export_site_lon_degpřidávají poleper_sat_geometrys azimutem, elevací a šikmou vzdáleností ke každé družici v každé epoše pro jedno pojmenované selenografické místo, plus příznak viditelnosti. Souhrn souhrnného pokrytí geometrii po družicích záměrně slučuje, ale šikmá vzdálenost je přesně to, co spotřebovává rozpočet spoje, takže společnou analýzu komunikace a navigace nešlo z tohoto souhrnu provést. Vypnuto, pokud nejsou zadány obě souřadnice; čistě aditivní.lunar_service::topocentric, veřejná pomocná funkce pro úhly pohledu za exportem.Řádek verifikační matice pro novou schopnost geometrie.
Skutečný anténní diagram v exportu geometrie. Engine od P1 nese diagram kruhové apertury s rovnoměrným osvětlením (
antenna::pattern_gain_dbi, Airyho tvar[2·J₁(x)/x]²) a nic mimoantenna.rsjej nepoužívalo — práci místo toho dělal zisk v ose spárovaný s palcovým pravidlem pro vztah zisku a šířky svazku. Volitelná tabulkaexport_antennaumoonlight-service-volume(čtená jen při zadaném místě exportu) nyní dává každému exportovanému řádku úhel mimo osu na družici a vysílací zisk směrem k místu z tohoto diagramu a přidává blokantenna_pattern, který uvádí počet družic ve svazku podle skutečného diagramu vedle počtu podle symetrické aproximace (θ₃dB[deg] = √(31000/G_lin)) s rozdílem jako pojmenovanou korekcí. Vydávají se obě čísla; žádné druhé nenahrazuje. Změřeno na vlastní reprezentativní lunární apertuře enginu (parabola 1 m, 2,4 GHz, η = 0,60) nad jihopolárním místem a ilustrativní skořepinou třídy LCNS se obě liší o víc než jednu družici: skutečný diagram umístí 0 z 76 viditelných spojů do svazku s poloviční výkonovou šířkou, aproximace jich tvrdí 28 — korekce −2,33 družice na epochu, nejhorší jednotlivá epocha 3. Aproximace nese vlastní účinnost apertury (0,641 oproti pravidlu70·λ/Dstupňů, s nímž se obvykle uvádí, 0,920 oproti rovnoměrné kruhové apertuře), takže u paraboly s η = 0,60 vrací svazek 1,238× příliš široký; blok vydává obě implikované účinnosti, místo aby je nechával odvodit. Čistě aditivní: změřeno na zdokumentovaném pracovním bodě, 597 dříve existujících listů, 0 změněno, 0 odstraněno, 494 přidáno.antenna::symmetric_beamwidth_rad,antenna::symmetric_relation_implied_efficiency,antenna::within_half_power_beam,antenna::HALF_POWER_DROP_DB,antenna::SYMMETRIC_GAIN_BEAMWIDTH_CONST_DEG2,antenna::UNIFORM_APERTURE_HPBW_COEFFalunar_service::nadir_off_boresight_rad, veřejné součásti, které za tím stojí. Diagram je nyní také ukotven proti publikovaným Airyho konstantám, nikoli jen sám proti sobě: průsečík poloviční výkonové úrovně se nalezne půlením intervalu a porovná sx = 1.61634, což činí přesnou šířku v polovině výkonu1.02899·λ/Da poctivě zaznamenává, že konvenční koeficient1.02kladepattern_gain_dbina −2,955 dB, nikoli −3,010 dB.Dlouhá forma tabulky reprodukovatelnosti pro
lunar-time-budget. Výstupy scénáře ve tvaru polí — mřížka doby průměrování, sedm křivekx(τ)po členech a jejich celkový odmocninový součet čtverců — se ke spotřebitelům dostávaly jen jako pole JSON. Jedna vydaná tabulka byla zkrácena na 400 znaků a publikovala 23 z 57 dob průměrování pod sloupcem, který tvrdil, že obsahuje všechny, a rukopis sestavoval křivky po členech z uzavřených tvarů, protože je engine nikdy nevydal. Prostý běh nyní zapisuje i<scenario>.table.csvs jedním řádkem na (index mřížky, dobu průměrování, člen), který nelze zkrátit na něco, co by stále vypadalo celé. Index mřížky je přesný spojovací klíč;τse zapisuje na 13 platných číslic a každéxna 7, takže se bajty mezi sestaveními téhož zdroje nerozcházejí. Čistě aditivní: JSON zprávy je bajtově totožný.Zpráva
hybrid-optical-rfnyní popisuje sama sebe. Bloklink_configurationopakuje vyřešené vstupy spoje — vlnovou délku nosné, vysílací a přijímací aperturu, vzdálenost, šířku pulzu, integrační dobu, účinnosti a ztráty — s uplatněnými výchozími hodnotami, takže článek uvádí konfiguraci, se kterou běžel, místo citování výchozí hodnoty přečtené ze zdroje. Blokunitsudává jednotku a třídu původu každé veličiny, kterou článek pravděpodobně cituje. Stopy předávacích kovariancí jsou důvodem, proč existuje: vydávaly se jako holévariancea rukopis odvodil čtvereční metry z kontroly vnitřní konzistence. Odvození bylo správné, a právě proto bylo vadou — nic by nezachytilo, kdyby správné nebylo. Čistě aditivní: změřeno na čtyřech konfiguracích, 456 dříve existujících polí, 0 změněno, 0 odstraněno, 196 přidáno.Řádek verifikační matice pro tabulku reprodukovatelnosti časového rozpočtu, poctivě
InternalConsistency/ MODELLED — součet se kontroluje proti odmocninovému součtu čtverců členů ve stejném souboru, který sdílí vlastní definice členů enginu, a proto není nezávislým orákulem. Dohromady přidávají tři řádky. Průběžný součet pro tuto nevydanou sekci je 168 řádků — 64 VALIDATED, 100 MODELLED, 4 PARTNER.
Změněno#
Autorství commitů v celé historii je nyní jediná identita a dva publikované crate ukazují na commit, který už neexistuje. Dne 2026-09-21 byla historie gitu přepsána tak, že každý lidský commit má jako autora i zapisovatele
ashfordeOU <236818772+ashfordeOU@users.noreply.github.com>. Dříve nesl tři zápisy jedné osoby — 688 commitů jakoashfordeOU <contact@ashforde.org>, 34 jakoChakshu Baweja <contact@ashforde.org>a 94 již kanonických. Jediný commit oddependabot[bot]byl záměrně ponechán s vlastním autorem: přeznačit závislostní aktualizaci robota by znamenalo nárokovat si autorství práce, kterou tu nikdo neudělal.Žádný obsah se nezměnil. Přepsání se dotklo jen hlaviček autora a zapisovatele, a to je ověřitelné, ne jen tvrzené: strom každého tagu a každé větve je bit po bitu totožný s tím, jaký byl předtím.
v0.26.0se stále rozpoznává jako strom92284e9420605568f1bfabb78cd95d383b40f3e2, přesně jako dříve.Co to stálo. Název commitu je hash přes jeho strom, rodiče a hlavičky autora, takže změna předka přejmenuje každého potomka. Commit vydání
v0.26.0byldce2dbf7700788cf6de46260c14673c0e5347360a nyní jed4921f3025569e00e425e1747d0acfc261e96e18. Dva artefakty zaznamenaly starý název v době publikace a nelze je opravit, protože publikovaná verze v registru je z návrhu neměnná:kshana0.26.0 na crates.io —.cargo_vcs_info.jsonzaznamenávádce2dbf…kshana-mcp0.26.0 na crates.io — tentýž sha1,path_in_vcs: mcp/kshana-mcp
Nic dalšího není dotčeno. Balíček npm nezaznamenává žádné
gitHeada distribuce PyPI nezaznamenává žádný commit vůbec; obojí bylo zkontrolováno, nikoli předpokládáno.Neexistuje oprava, po níž by
dce2dbf…pojmenovalo přepsaný commit: tento řetězec je starý původ a jediný způsob, jak se rozpozná, je ponechat publikovanou historii před přepsáním, což by obnovilo autorství, které přepsání odstranilo. Původ 0.26.0 proto vede přes tag, nikoli přes zaznamenaný sha1 — a tag dodává identické bajty, z nichž byl crate sestaven. Další vydání zaznamená platný commit bez nutnosti zásahu.
Opraveno#
realtime-frame-eopměl jako výchozí soubor EOP bez řádků predikce (G12). Scénář vkládal pětiřádkový výňatekfinals2000Apouze s finálními hodnotami jako svůj výchozí offline soubor, takže holý běh hlásilpredicted_rows.n = 0a tabulka po horizontech stála na 5, 4, 3 a 2 dvojicích. Engine uměl řádek predikce vždy přečíst — vstup prostě žádný neměl. Výchozí je nyní doslovný výňatek IERS 2026 (tools/finals2000A_2026.txt, MJD 61173–61204): 20 finálních hodnot Bulletinu B a 12 řádků Bulletinu A pouze s predikcí, takže holý běh bez argumentu souboru a bez sítě hlásípredicted_rows.n = 12a tabulku po horizontech při n = 20 / 31 / 30 / 29 a naplní se i srovnání s operačním prediktorem a shoda s vlastními publikovanými predikcemi produktu. Dlouhý výňatek o 45 řádcích byl změřen jako alternativa a zamítnut: je také pouze finální, takže bypredicted_rows.nponechal na 0. Toto mění publikovaná čísla, podle pravidla R4 a s oprávněním zakladatele: deset z 22 buněk vydanéhop4_frame_eop.csva 24 ze 42 vyplněných buněktests/golden/realtime-frame-eop.csv. Změřená podlaha pólu rychlý-minus-finální se stává 0,0678 mas (z 0,0769 mas), což je hodnota, kterou tabulka polárního pohybu článku P4 již publikuje při n = 20 — nyní se shodují, místo aby se lišily o 13,5 %. Každá další hodnota, kterou P4 z této tabulky vypisuje, je při vypsané přesnosti beze změny. Úplný výčet starý → nový, včetně polí, která se nepohnula, je vdocs/revisions/G12-default-eop-cell-changes.md. Výňatek pouze s finálními hodnotami se nadále dodává, je bajtově přišpendlen a procvičován: nulový počet řádků predikce je na něm vlastností souboru a test to stále dokazuje.Zastaralé omezení počtu družic v
moonlight-service-volume. Scénář omezovaln_satsna 12, ačkoli jeho vlastní stavitel konstelace podporuje 24 a test tvrdí 24, takže každý požadovaný počet nad 12 byl tiše snížen a průchod počtem družic vracel nad 12 shodné hodnoty — k nerozeznání od skutečného geometrického nasycení. Nyní je omezeno na limit stavitele. Jde o změnu chování jen pron_sats > 12.Totéž zastaralé omezení v
lunar-differential-pnt.lunar_dpntomezovalon_satsna 12 se stejným důsledkem a tento se dostal do publikované tabulky:dpnt_nsats_sweep.csvnese řádekn = 16bajtově totožný s řádkemn = 12, protože engine vrátil odpověď pro dvanáct družic pod označením šestnácti družic. Nyní je omezeno na limit stavitele 24 a nový test to přišpendluje — každá větší konstelace musí hlásit vlastní počet a přísně zlepšit ochrannou úroveň, takže omezení se nemůže nepozorovaně vrátit. Toto mění publikovaná čísla: ochranná úroveňn = 16se mění na 16,92 m → 14,57 m. Při průchodu do 24 je křivka přísně monotónní (11,94 m při 24 družicích, o 29,5 % lepší než při 12), takže při 12 žádné nasycení není — zdánlivá plošina byla omezením. Změna chování jen pron_sats > 12.
0.26.0 - 2026-09-18#
Vydání dokumentace, transparentnosti a playgroundu. Žádné chování enginu se nemění: verifikační matice stojí na 102 řádcích — 56 VALIDATED, 42 MODELLED, 4 PARTNER, beze změny oproti 0.25.0.
Přidáno#
- Rustdoc na úrovni crate (
//!vlib.rs) pokrývající vstupní body, model poctivosti a úrovní a reprodukovatelnost, takže docs.rs se otevře na skutečné úvodní stránce místo holé zdi modulů. docs/SCENARIOS.md— referenční příručka po druzích pro všech 50 druhů scénářů, generovaná zapi::list_scenario_kinds()(jediného zdroje pravdy) pomocígen_validation_artifactsa hlídanátests/scenarios_reference_doc_sync.rs, takže se nemůže rozejít s dispečerem.- Dokumentace modulů pro 11 dříve nedokumentovaných veřejných modulů (
allan,estimator,fom,hybrid,inertial,models,report,run,scenario,timetransfer,types). - Literární zdroje pro pět modulů vzorců, které uváděly rovnici, ale nejmenovaly žádný odkaz:
batch_ls(Tapley/Schutz/Born; Bjorck),cr3bp(Szebehely; Koon et al.),detection(Kay),attitude_budget(Wertz; Sidi),reentry(Allen-Eggers, NACA TR-1381). - Publikovaný
security.txtna kshana.dev pro koordinované zveřejňování. - Úroveň validace pro každý běh v playgroundu. Tabulka ukazatelů kvality jednoho běhu nyní nese u každého ukazatele štítek VALIDATED/MODELLED čtený ze stejného vyhledávání
fomTier(), jaké používá stažitelná zpráva (zrcadlísrc/fom_label.rs, samo odvozené z verifikační matice), takže úroveň zobrazená vedle živého čísla se nikdy nemůže rozejít s registrem. lunar-attack-surfacev nabídce playgroundu — všech 50 spustitelných druhů je nyní na jedno kliknutí (dříve 49/50).- Dalších pět spustitelných karet schopností (kosmické počasí, vyhodnocení RF poruch, odolnost, interoperabilita CCSDS OEM, KIF), které zvyšují počet spustitelných karet z 11 na 16. Karty pouze pro API a knihovnu si ponechávají poctivý odkaz na dokumentaci místo falešného tlačítka spuštění.
Změněno#
- Pokrytí dokumentací je nyní v CI zajištěno západkou.
check-doc-coverage.shzkompiluje knihovnu smissing_docs, spočítá varování a selže, jen pokud počet překročí připnutý strop (986). Pevné#![warn(missing_docs)]pod-D warningsby přes noc změnilo ~1000 nyní nedokumentovaných veřejných položek v zlomení sestavení; takto nové nedokumentované veřejné položky sestavení shodí, zatímco stávající nevyřízené se splácí záměrně.
Opraveno#
- Řádek nástroje MCP
list_scenario_kindsuváděl „~17 vestavěných druhů scénářů“, zatímcoapi::list_scenario_kinds()už nějakou dobu zpřístupňovalo 50 — dokument pro agenty podhodnocující skutečnou schopnost trojnásobně. Připnuto na skutečný počet. - Znovu vygenerováno orákulum shody CycloneDX SBOM pro aktualizovaný graf závislostí (60 komponent). Verdikt shody se nemění: nula normalizovaných chyb schématu a každý atomický identifikátor licence je stále ve oficiálním výčtu SPDX.
0.25.0 - 2026-07-15#
Přidáno#
- Pět schopností povýšeno na externě VALIDATED, každá je nyní křížově ověřena proti nezávislé implementaci třetí strany téže jednoznačně definované veličiny (nekruhově, s přípravky regenerovatelnými offline):
- Převod mocninného zákona IEEE-1139 na Allanovu odchylku proti uzavřeným tvarům
allantoolspro všech pět typů šumu (tests/powerlaw_oadev_reference.rs); - Váhy formovače svazku CRPA MVDR / s minimální normou pro potlačení v nulách proti LAPACK v numpy/scipy (
tests/crpa_reference.rs); - Určování orientace Wahba / TRIAD / QUEST proti SVD
Rotation.align_vectorsv SciPy na pozorováních bez šumu (tests/wahba_reference.rs); - Výměna bloku kovariance OEM podle CCSDS 502,0 projitá tam a zpět parserem nezávislé knihovny
oem(tests/ccsds_oem_covariance_reference.rs); - jádro detekčních statistik akvizice se čtvercovým detektorem (zobecněné Marcum-Q / P_d / P_fa / práh) proti SciPy
ncx2/chi2(tests/acquisition_reference.rs). Strojově kontrolovaná validační matice se posouvá na 56 VALIDATED · 42 MODELLED · 4 PARTNER ve 102 řádcích (dříve 51 · 47 · 4). Poctivá omezení rozsahu zůstávají zachována — např. povýšení akvizice pokrývá jen jádro detekčních statistik; CFAR/ztráta překlenutím zůstává MODELLED.
- Převod mocninného zákona IEEE-1139 na Allanovu odchylku proti uzavřeným tvarům
- Ukazatele kvality v prostoru polohy (
fom::positioning_performance): přesné CEP, SEP a 2DRMS z 3D kovariance polohy ENU navigačního řešení plus horizontální ochranná úroveň. CEP/SEP jsou přesné mediány radiální chyby (nikoli lineární pravidlo0.589·(σ₁+σ₂)), křížově ověřené proti kvantilům rayleigh/maxwell zscipy.statsa nezávislému mediánu Monte Carlo v NumPy (tests/positioning_fom_reference.rs). Nahrazuje předchozí poctivý stub „neimplementováno“ — podpis funkce se změnil z()vracejícího chybu na(cov_enu, hpl_m)vracejícíPositioningFom. - Ekvivalentní počet stupňů volnosti (EDF) intervalu spolehlivosti dokončen pro všechny odhadovače rodiny Allan (
assurance::uncertainty::edf): EDF modifikované Allanovy, Hadamardovy a celkové variance nyní používá kombinovaný algoritmus EDF Greenhall & Riley a tvar TOTVAR z Table-7 NIST SP 1065 (dříve byl implementován jen EDF překrývající se Allanovy variance; ostatní jej tiše používaly znovu), křížově ověřeno protiallantoolsedf_greenhall/edf_totdev(tests/uncertainty_edf_reference.rs). - Nezávislé externí křížové kontroly pro lunární geometrii PNT, DOP, EOP, DRO a měření vzdálenosti v RF (
tests/validate_p*.rs, s přípravky a generátory orákulí podtests/fixtures/{p1_footprint,lunar_service,eop_prediction,rf_ranging_precision,dro_family_jpl,p2_independent_dop}/). Každá kontrola vede již dodanou modelovanou schopnost proti orákulu vytvořenému jinou implementací, takže shoda je nekruhová: orbitální stopa vysílání/příjmu protiscipy.special.j1(Cephes — skutečně jiná Besselova J1); geometrie DOP povrchových majáků proti nezávislému řešení(HᵀH)⁻¹v NumPy; růst chyby predikce perzistence UT1/EOP proti samostatnému novému parsování týchž doslovných řádků IERSfinals2000Av NumPy; rovinná rodina vzdálených retrográdních drah proti databázi periodických drah tří těles NASA/JPL; a rozpočet přesnosti měření vzdálenosti v RF proti referenci z prvních principů. Jsou to další regresní důkazy pro existující moduly; přidání těchto křížových kontrol samo o sobě žádnou schopnost nepřeznačuje (pět povýšení výše jsou samostatné změny stavu opřené o orákulum vsrc/verification.rs). - Scénář
lunar-attack-surface(src/attack_surface.rs,kind = "lunar-attack-surface"): složený, z binárky dosažitelný (CLI / Python / MCP / wasm přesrun_toml) běh lunární bezpečnosti signálu P1, který spojuje deficit výkonu v rozpočtu spoje a jeho pásmo citlivosti 12–18 dB, požadovaný vysílací výkon rušení/spoofingu v závislosti na odstupu, orbitální stopu záchytu při skutečném anténním diagramu, výsledek zachycení smyčky sledování spoofingem, dosah horizontu u tělesa bez atmosféry a rozpočet autentizace OSNMA/TESLA. Prázdné tělo reprodukuje základ P1. - Pásmo citlivosti deficitu výkonu (
linkbudget::deficit_sensitivity_band,deficit_power_factor): skutečný vícerozměrný průchod (reference × EIRP × šikmá vzdálenost) postavený nasweep::SweepAxisa vyhodnocený přesreceived_signal_power_dbw, který reprodukuje pásmo P1 12–18 dB a sjednocuje hodnoty lineárního faktoru 32× (zaokrouhleno) / 36× (nezaokrouhleno). - Trojrozměrná krychle zachycení spoofingem (
spoof_capture::capture_cube): přidává k mapě zachycení osu posunu nosné/Dopplera (J/S × posun kódu × posun nosné, doba zachycení na buňku); řez s nulovou nosnou se přesně redukuje na 2Dcapture_map.
Změněno#
- Detekce řídkou sítí monitorů (
monitor_network) nyní skládá fyzikální statistiku AGCspoof_monitorsa selenografickou mřížku viditelnostilunar_service, z nichž odvozuje detekční statistiku a geometrii každé stanice, místo volných parametrů a ad hoc překryvu po kružnicích; pravděpodobnosti detekce jednotlivých monitorů i sítě zůstávají uzavřenými tvary chí-kvadrát/Marcum-Q zdetection. PoleSurfaceMonitor/SpoofEventse změnila na fyzikální veličiny (zem. šířka/délka/výška/výkon).
Opraveno#
- Dimenzování režie autentizace OSNMA/TESLA (
nma_budget): části polí OSNMA na stránku (8 bitů HKROOT + 32 bitů MACK na stránku o 2 s) byly chybně označeny jako součty na podrámec, což podhodnocovalo režii 15× (1,33 bit/s). Opraveno na publikované součty SIS-ICD na 30s podrámec (HKROOT 120 + MACK 480 bitů ⇒ 20 bit/s). Důsledek se nyní uvádí poctivě: při navigační rychlosti AFS 50 bit/s je režie autentizace náklad prvního řádu ≈40 %, nikoli zanedbatelných několik procent; poleauth_latencyje zdokumentováno jako zpoždění odhalení klíče (dolní mez doby do prvního autentizovaného řešení od začátku do konce).
0.24.0 - 2026-07-09#
Široké vydání schopností. Přináší dvě plně externě ověřené analytické sady — úplnou rodinu vícekriteriální analýzy rozhodování (MCDA) a odhadovače Allanova wanderu / dlouhodobé stability hodin pro dlouhé τ — a otevírá na substrátu novou spustitelnou vrstvu scénářů lunárního časového rozpočtu, soustavy/EOP v reálném čase, optického/RF hybridu, cislunární pozorovatelnosti a odolnosti vrstveného PNT vůči konfliktu, plus substrát schopností lunárního povrchového majáku a bezpečnosti signálu. Strojově kontrolovaná validační matice roste na 51 VALIDATED · 47 MODELLED · 4 PARTNER ve 102 řádcích (dříve 40 · 47 · 4 ve 91): všech jedenáct nových řádků jsou validace s externím orákulem pro rozhodovací analýzu a odhadovače časování, kontrolované proti nezávislým knihovnám (SciPy, pymcdm, pyDecision, allantools) s úzkou tolerancí, zatímco nový povrch schopností PNT je poctivě uveden jako MODELLED. Jako vždy se žádné číselné tvrzení modelu nepovyšuje bez externí datové sady za ním.
Přidáno#
Spustitelné scénáře — každý je registrovaný scénář kind, spouštěný přes engine a od začátku do konce prokázaný v CI pomocí tests/determinism.rs (který spouští každý přibalený scenarios/*.toml a tvrdě selže u jakéhokoli nespustitelného přípravku):
- Odolnost vrstveného PNT vůči konfliktu (
conflict-resilience,src/conflict_resilience.rs) — engine odolnosti Monte Carlo se seedem pro víceúrovňovou architekturu PNT, s modelem přežití při postupné degradaci po vektorech podle §4,2 (čtyři pojmenované vektory hrozeb, uzavřený tvar přežití použitelného PNT, ke kterému konverguje Monte Carlo po vrstvách, vydávaný ve výsledném JSON) a zdokumentovaným, před rozchodem hlídaným původem parametrů hrozeb (src/conflict_threat_params.rs). Architektury MODELLED; konvergence Monte Carlo přežití → uzavřený tvar je ověřené jádro. - Cislunární pozorovatelnost (
cislunar-observability,src/cislunar_observability.rs) — vlastní spektrum Gramiánu pozorovatelnosti přes oblouk, diferenciálně korigovaný zakladač vzdálených retrográdních drah (DRO) a nezávislá křížová kontrola odmocninovým informačním filtrem, jehož posteriorní kovariance se stává konečnou přesně při plné pozorovatelné hodnosti. Konstelace MODELLED; invarianty hodnosti/Gramiánu/STM/SRIF jsou ověřené jádro. - Heterogenní optický/RF hybrid: kontinuita a integrita (
hybrid-optical-rf,src/hybrid_integrity.rs,src/optical_availability.rs,src/optical_linkbudget.rs,src/cross_raim.rs) — dostupnost a integrita napříč doménami, když se kombinují optické a RF PNT. MODELLED. - Endogenní lunární časový rozpočet (
lunar-time-budget,src/lunar_time_budget.rs) a rozpočet soustavy / EOP v reálném čase (realtime-frame-eop,src/realtime_frame_eop.rs,src/frame_eop.rs) — rozpočty lunárního času a orientace Země P3/P4 odvozené endogenně z časovacího řetězce, nikoli tvrzené. MODELLED.
Externě ověřené analytické sady — knihovní schopnosti, z nichž každá vstupuje do matice jako nové řádky VALIDATED (kontrolované proti nezávislému externímu orákulu, nikoli samokontrolou):
- Úplná sada vícekriteriální analýzy rozhodování (MCDA) (
src/mcda/) — čtyři rodiny metod: agregace hodnot (WSM, WPM, WASPAS), poměrový systém (MOORA) a proporcionální (COPRAS), vzdálenost od ideálu (TOPSIS), kompromisní programování (VIKOR) a přednostní (PROMETHEE II se šesti tvary zobecněného kritéria, ELECTRE I konkordance/diskordance) — plus váhy priorit z Perronova vlastního vektoru AHP s branou poměru konzistence Saaty (CR < 0,10), užitek MAUT, extrakci Paretovy fronty a analýzu citlivosti na váhy. Devět agregátorů reprodukuje pymcdm / pyDecision a vlastní vektor AHP odpovídá SciPy/LAPACK, vše s přesností < 1e-9 (tests/mcda_*_reference.rs). Tornádový diagram citlivosti je k dispozici i uvnitř scénáře odolnosti vůči konfliktu. - Odhadovače Allanova wanderu a dlouhodobé stability hodin pro dlouhé τ (
src/allan.rs) — MTIE (statistika wanderu časové chyby špička–špička podle ITU-T G.810/G.823/G.8261, proti níž se píší synchronizační masky), časový wander MDEV a TDEV a odhadovače s rozšířeným rozsahem Theo1 / TOTVAR. VALIDATED proti allantools na řadě NIST SP 1065; hybrid ThéoH s odstraněným zkreslením, postavený na TOTVAR, zůstává poctivě MODELLED. - Zajišťovací harness / harness externích orákulí (
src/assurance/) — harness orákulí napojený přímo na bránu poctivosti v CI, záznam původu W3C-PROV s deterministickým kořenem Merkle a ekvivalentní stupně volnosti Greenhall + intervaly spolehlivosti chí-kvadrát u odhadů stability. - Rozhraní rozšíření PackRegistry / ExternalPack (
src/registry.rs,src/api.rs) — rozhraní dispečinku, aby se balíčky schopností směrovaly přes jediný registr (vestavěný dispečink je na rychlé cestě CLI; balíčky mimo strom se připojují za výchozímExternalPack::register_into), hlídané zlatou sadou shody bajtové identity a bránami CI pro samostatný běh / wasm32.
Modelovaný substrát schopností — nové knihovní moduly napájející výše uvedené scénáře i budoucí (zatím ne samostatný scénář kind):
- DOP lunárního povrchového majáku (
src/lunar_beacon.rs) s rozpočtem realizované přesnosti, průchodem počtem N družic a mapou GDOP, plus rušená lunární efemerida (src/lunar_perturbed.rs) a geometrie horizontu bez atmosféry / inverze výkonu spoofingu / pásmo deficitu AFS (src/jamming.rs,src/linkbudget.rs). Znovu používá jádro DOP ověřené proti gnss_lib_py. - Načítání DEM ve formátu LOLA + přímá viditelnost s terénem (
src/realdata/lola_dem.rs). - Třívrstvá obrana bezpečnosti signálu — zachycení spoofingem, křížová integrita senzorů a dimenzování sítě monitorů (
src/spoof_capture.rs,src/cross_sensor_integrity.rs,src/monitor_network.rs) s anténní stopou orbitálního svazku a rozpočtem autentizace OSNMA (src/antenna.rs,src/nma_budget.rs). MODELLED.
Změněno#
- Validační matice a každý odvozený artefakt byly znovu vygenerovány z jediného zdroje pravdy (
src/verification.rs): registr na webu, diagramy mapy modulů a původu validace a řetězce počtů v README a na jednotlivých plochách nyní uvádějí 51 / 47 / 4 ze 102 (dříve 40 / 47 / 4 z 91); stráž poctivosti počtů nyní prohledává celou historii gitu a obrázky README jsou sjednoceny na tmavou paletu značky. - Jeden sdílený adaptivní integrační ovladač nyní stojí za
integrateiintegrate_dopri(src/integrator.rs) a odstraňuje zdvojený krokovač. - Do CI přidána statická analýza SonarQube Cloud (Rust + importované pokrytí) s odznaky hodnocení bezpečnosti / udržovatelnosti / spolehlivosti v README.
- Disciplína vydání / balení: CI registruje prostředí nasazení pro každou publikaci balíčku/registru a zaměřená úloha public-standalone je oddělena od pomalých validačních binárek.
- Stráž hygieny bez uvádění původu je omezena jen na značky autorství, takže pojmenování hostitele integrace nebo produktu už sestavení neshodí.
- Dokumentace: sekce README Citing nyní uvádí čtyři publikované preprinty arXiv a schopnost DOP povrchového majáku je zdokumentována v lunárním řádku.
Pasáž jmenující AI klienty třetích stran je zde vynechána; je v CHANGELOG.md na GitHubu.
Opraveno#
- Celočíselné čítače smyček pro smyčky řízené plovoucí řádovou čárkou (Sonar S2193).
- Přesná inverze chí-kvadrát při nízkém počtu stupňů volnosti pomocí Newtonova zpřesnění v cestě intervalů spolehlivosti zajištění.
- kshana.dev: sekce standardů se nyní otevírá ve výchozím stavu a záložní počet v registru je opraven; zastaralé řetězce README / webu kolem vrstvy pozorovatelnosti jsou synchronizovány.
0.23.0 - 2026-06-29#
Vydání schopností přidávající obecnou vrstvu Fisherovy informace / pozorovatelnosti Cramér–Rao a optimálního návrhu experimentu a vydání, o které se opírá článek o pozorovatelnosti lunárního PNT. Strojově kontrolovaná validační matice roste na 40 VALIDATED · 47 MODELLED · 4 PARTNER v 91 řádcích (dříve 39 · 46 · 4 v 89): nový estimační engine je kontrolován proti externímu orákulu a je VALIDATED; jeho lunární aplikace je poctivě MODELLED. Jako vždy se žádné číselné tvrzení modelu nepovyšuje bez externí datové sady za ním.
Přidáno#
src/fim.rs— Fisherova informace, meze Cramér–Rao a optimální návrh experimentu. Obecný, znovupoužitelný engine teorie odhadu: Fisherova informační maticeM = HᵀWHz měřicí jakobiánu a vah; symetrický řešič vlastních čísel (cyklický Jacobi); dolní mez Cramér–Rao přes inverzi, nebo přes Moore–Penroseovu pseudoinverzi plus bázi nulového prostoru, když je informace hodnostně deficitní (případ volné sítě / vady data); a metriky optimálního návrhu experimentu D, A, E a T se selektorembest_designnad kandidátními geometriemi. VALIDATED proti NumPy (eigh/inv) a publikovaným uzavřeným mezím Kay (1993) s přesností 1e-9 (tests/fim_observability_reference.rs), takže vstupuje do matice jako řádek s externím orákulem, nikoli jako samokontrola.- Pozorovatelnost společného určení dráhy u Měsíce (
lunar_observabilityvsrc/lunar_combination.rs, zpřístupněno ve zprávě o lunární kombinaci): aplikuje engine FIM/CRLB na společné řešení dráhy a hodin, aby odhalil vadu data absolutní stanice, obnovu její hodnosti při přidávání stanic se zemskou základnou, dosaženou CRLB polohy stanice a E-optimální podmíněnost. Poctivě MODELLED — estimační engine je externě ověřen, ale lunární síť, na kterou se aplikuje, je reprezentativní simulace a žádná současná datová sada nemůže z této geometrie udělat měření. - Reprezentativní geometrie eliptické lunární zamrzlé dráhy (ELFO) pro scénář lunární kombinace (
orbit_ecc,orbit_inc_deg,orbit_argp_deg,orbit_planes; kruhové rozmístění zůstává výchozí) a pole pozorovatelnosti bez VLBI ve zprávě, aby se výsledek vady data dal ukázat jako obecný vůči geometrii. Stejný žebříček 3→1→0 a práh tří stanic platí na ELFO rodiny Moonlight/LCNS a při třech zemských základnách VLBI je absolutní poloha stanice pozorovatelná se submetrovou mezí — zajištěnoelfo_geometry_confirms_the_observability_structure. Stále MODELLED.
Změněno#
- Validační matice a každý vygenerovaný artefakt důkazů byly znovu vygenerovány z jediného zdroje pravdy (
src/verification.rs): registr (web/data/verification-matrix.json),docs/VERIFICATION-MATRIX.md,docs/MODELLED-RATIONALE.md, obrázky rozpisu validace a druhů orákulí a řetězce počtů v README napříč všemi distribučními plochami nyní uvádějí 40 / 47 / 4 z 91.
0.22.1 - 2026-06-29#
Vydání opravy jen pro balení. Žádné změny enginu, scénářů ani výsledků; validační matice je beze změny na 39 VALIDATED · 46 MODELLED · 4 PARTNER v 89 řádcích.
Opraveno#
- Publikace do npm: balíček
repository.urlodvozený z manifestu crate používal vlastníka GitHubu s chybnou velikostí písmen (AshfordeOU), což selhalo při ověření původu sigstore v npm (porovnává vlastníka s ohledem na velikost písmen).repositoryv manifestu je nyní kanonické maléashfordeOU, takže vygenerovanýpackage.jsonodpovídá subjektu původu a vydání npm se publikuje.
Změněno#
- Sestavení wheelu připíná
codegen-units = 1, aby wheel manylinux byl bajtově reprodukovatelný napříč přestavbami (kontrola reprodukovatelnosti přestavěním a porovnáním).
0.22.0 - 2026-06-29#
Konsolidační vydání zaměřené na důkazy, původ a disciplínu distribuce. Strojově kontrolovaná validační matice roste na 39 VALIDATED · 46 MODELLED · 4 PARTNER ve svých 89 řádcích (dříve 15 · 42 · 4 v 61), hnáno křížovou validací modelovaných schopností proti nezávislým externím orákulím. Každý distribuovaný artefakt nyní nese kryptografickou atestaci původu sestavení SLSA, dodává CycloneDX SBOM a je publikován souběžně na všech plochách. Žádné číselné tvrzení modelu se nepovyšuje bez externí datové sady za ním; nová schopnost zůstává poctivě MODELLED.
Přidáno#
- Dynamika orientace (
src/attitude_dynamics.rs, MODELLED) — Eulerovy rovnice volného tuhého tělesa + kinematika kvaternionů (RK4), s autotesty zákonů zachování (norma kvaternionu, kinetická energie, |Iω|, precese symetrického vlčku). - Křížová validace modelovaných schopností proti nezávislým externím orákulím, která vede validační matici na 39 řádků VALIDATED, každý podložený externí datovou sadou (brána poctivosti v CI zakazuje stav VALIDATED bez ní). Nejnovější validace s externím orákulem: změřená křivka stability optických hodin (proložení křivky ADEV v
quantum_tradereprodukuje publikované σ_y(τ) optických mřížkových hodin ⁸⁸Sr od Norcia et al., Science 366:93 (2019), Zenodo 10.5281/zenodo.3382347, CC-BY-4.0, přibaleno podtests/fixtures/optical_clock_adev/); generování rozprostíracího kódu GPS L1 C/A (G1/G2 LFSR vsrc/sdr.rsreprodukuje osmičkové kódové fáze z IS-GPS-200 Table 3-Ia pro PRN 1–9); a čtečka digitálního modelu terénu SRTM na skutečném terénu (src/altpnt/terrain.rsčte přibalenou dlaždici NASA/USGS SRTM v3 ve veřejné doméně, N36W117 / Death Valley, a umísťuje Badwater Basin do jeho zdokumentovaného průzkumného pásma). - Nové schopnosti MODELLED, každá vnitřně zkontrolovaná proti uzavřenému tvaru nebo sesterské cestě kódu: dynamika relativního pohybu Clohessy–Wiltshire / Hill, pasivní geolokace zdroje TDOA/FDOA, určování orientace Wahba/TRIAD/QUEST, řešení celočíselné nejednoznačnosti fáze nosné GNSS (LAMBDA), cílení v B-rovině a gravitační manévr v patched-conic, tvarování svazku anténního pole CRPA proti rušení, statistiky akvizice GNSS se čtvercovým detektorem, nejednoznačnost proužků / dynamický rozsah kvantového inerciálního senzoru, mocninný šum hodin IEEE-1139 + flicker-FM podlaha a výměna bloku kovariance CCSDS-OEM.
- Registr důkazů s jediným zdrojem s vygenerovanými verifikačními dokumenty a stráží proti rozchodu; procházitelný validační registr na kshana.dev s odkazy na důkazy u každé karty.
- Strojově čitelná metadata citace —
codemeta.json(CodeMeta 2,0) a.zenodo.json, přišpendlená k manifestu Cargo pomocítests/citation_metadata_doc_sync.rs. - Původ dodavatelského řetězce — atestace původu sestavení SLSA pro tarball crate, wheely, sdist a tarball npm; důvěryhodná publikace PyPI přes OIDC; CycloneDX SBOM dodávaný uvnitř wheelu a balíčku npm; rozdíl reprodukovatelného sestavení a ověření po vydání.
- Nalezitelnost —
robots.txt,sitemap.xmla metadata Open Graph / JSON-LD na kshana.dev; vygenerovaný obrázekvalidation-breakdownodvozený z matice. - README pro jednotlivé plochy pro crates.io / PyPI / npm se stráží poctivosti počtů.
Změněno#
- Orákulum Sagnacova přenosu času povýšeno na ExternalDataset — Sagnacova korekce při rovníkovém oblétnutí je nyní kontrolována proti publikovaným 207,4 ns od Ashbyho (Living Reviews in Relativity 6:1, 2003, Eq. 1,29; reprodukováno s přesností < 0,05 ns). Složená schopnost přenosu času zůstává poctivě MODELLED.
- Dokumentace, diagramy a obrázky aktualizovány na živou matici (39/46/4/89): diagram původu validace, obrázek
oracle-kind-stacked(nyní generovaný z matice se stráží proti rozchodu v CI), VALIDATION/PROVENANCE/CAPABILITY/QUANTUM-MODELS/WHEEL_TAGS, dokumenty architektury a tutoriálů a celkový počet v registru na kshana.dev. - Zdrojový strom byl přeformátován připnutým rustfmt (toolchain 1.93.0) — čistě styl, žádná změna chování.
- Souběžné verzování. Každá distribuční plocha (crate, PyPI, npm, crate MCP + image OCI, zásuvný modul JetBrains) nyní verzuje souběžně s enginem, což vynucuje
scripts/check-version-sync.shv CI. - Zásuvný modul JetBrains přelicencován na AGPL-3.0-only (publikovaná 0.1.1 stále uváděla Apache-2.0) a nyní odvozuje verzi pro Marketplace z tagu vydání.
- Posílení robustnosti —
unwrapy mimo testy odstraněny nebo odůvodněny;clippy::unwrap_usedvynuceno na kódu mimo testy. - Přepracování kshana.dev s důrazem na důkaz: dominantní úvodní sekce, diagramy architektury a obrázky výsledků, i18n, sbalitelné/responzivní sekce registru a standardů.
Opraveno#
- Přesná efemerida SP3 — při interpolaci se uplatňuje korekce uzlu zemské rotace IGS.
- Obrázky v registrech — README na PyPI/crates.io/npm používají absolutní URL obrázků; relativní cesty obrázků hlavního README se na stránce PyPI 0.21.0 vykreslovaly jako rozbité obrázky. Stráž v CI (
tests/surface_readme_image_urls_doc_sync.rs) brání regresi. - CI —
fmt+clippyzelené; přestat kompilovat proti skutečným datům ignorovaným gitem.
Testy#
- Kalmanova kovariance hodin zůstává PSD a symetrická (test vlastností,
tests/property.rs). - Stráže synchronizace dokumentace: každý veřejný řetězec s počtem validací, metadata citace, vygenerovaný obrázek a URL obrázků v README jednotlivých ploch jsou všechny přišpendleny ke svému zdroji pravdy.
0.21.0 - 2026-06-26#
Toto vydání přidává do otevřeného enginu dvě aplikační sady MODELLED — demonstrátor PNT s kvantovými technologiemi (důvěryhodný kvantový přenos času, kvantová navigace bez GNSS, kvantová detekce poruch/anomálií) a sadu lunárního / cislunárního PNT (lunární souřadnicový čas, lunární VLBI, společné OD+hodiny, realizace soustavy, objem služby, diferenciální PNT, export interoperability) — každou spustitelnou z jediného kind, každá vydává poctivý záznam TradeEvidence plus registr reprezentativnosti / mezer k letu. Přináší také šest nových validací s externím orákulem, které vedou strojově kontrolovanou validační matici na 15 VALIDATED · 42 MODELLED · 4 PARTNER v jejích 61 řádcích. Nová aplikační čísla jsou MODELLED z ilustrativních parametrů z veřejných zdrojů — žádná TRL, letová historie, certifikace ani podpora agentury — a ověřená jádra, která znovu používají, jsou tak označena.
Přidáno#
- Sada demonstrátoru PNT s kvantovými technologiemi (
quantum-time-transfer,quantum-gnss-free-nav,quantum-anomaly-detect). Tři spustitelné aplikační oblasti MODELLED za enginem, z nichž každá vydáváTradeEvidenceplus záznam reprezentativnosti / mezer k letu:- Důvěryhodný kvantový přenos času (
src/timetransfer_chain.rs) — rozpočet optických mřížkových hodin + fotonického spoje oproti CSAC + dvoucestnému RF, znovu používající ochrannou úroveň časování, s ukazatelem bezpečnosti proti útoku zpožděním/přehráním (1 − P_md) a detekcí anomálie hodin + latencí CUSUM. - Kvantová navigace bez GNSS (
src/quantum_nav_od.rs) — inerciální doběh s interferometrem studených atomů oproti INS navigační třídy při výpadku GNSS, poctivě s tím, že bez externího určení polohy zůstává odchylka akcelerometru nepozorovatelná, takže chyba stále roste. - Kvantová detekce poruch / anomálií (
src/quantum_faults.rs) — označený katalog poruch s ROC AUC s bootstrapovým intervalem spolehlivosti a minimální detekovatelnou poruchou při pevné míře falešných poplachů. - Za všemi třemi stojí sdílená knihovna chybových modelů kvantových zařízení (
src/quantum_devices.rs) a jednotný harness srovnání kvantového a klasického přístupu (src/qtrade.rs).
- Důvěryhodný kvantový přenos času (
- Sada lunárního / cislunárního PNT. Sedm spustitelných
kindMODELLED vrstvených na jádru CR3BP: lunární souřadnicový čas (sekulární rychlost LTC/TCL − TT,src/lunar_time.rs), geodetická pozorovatelná zpoždění lunárního VLBI (src/lunar_vlbi.rs), dávkový odhadovač společného víceúrovňového OD + hodin (src/lunar_combination.rs), realizace referenční soustavy (Helmert se 7 parametry + vazba IAU 2015 WGCCRE,src/lunar_frame_realise.rs), analýza objemu služby třídy Moonlight / LCNS (src/lunar_service.rs), lunární diferenciální PNT (src/lunar_dpnt.rs) a export interoperability sladěný s LunaNet / IOAG (CCSDS-OEM + lunární časová stupnice v obálce KIF,src/lunar_interop.rs). Vše MODELLED z ilustrativních parametrů z veřejných zdrojů; neověřeno proti skutečnému sledování VLBI / Gateway; žádná příslušnost k agentuře ani její podpora. - Šest nových validací s externím orákulem (validační matice nyní stojí na 15 ověřených):
- ADEV / HDEV na skutečných cesiových hodinách 5071A — ověřeno proti dekádovým referenčním bodům Stable32 (
tests/cs5071a_reference.rs). - OADEV / MDEV / TDEV na referenci Stable32
PHASE.DAT— ověřeno proti publikovaným tabulkám Stable32 (tests/phasedat_reference.rs). - ROC AUC detekce anomálií na skutečné telemetrii ESA OPS-SAT — ověřeno proti scikit-learn (
tests/opssat_ad_reference.rs). - Syntéza funkcionálů gravitace ICGEM — ověřeno proti normální tíži GRS80 (Somigliana γ s přesností 3.5e-12; mapa poruch EGM2008,
tests/icgem_gravity_reference.rs). - Klobucharův vysílaný model ionosféry — ověřeno proti RTKLIB (
tests/klobuchar_reference.rs). - Detekční jádro RAIM (171 případů,
tests/raim_reference.rs) a ochranná úroveň SBAS DO-229E na skutečných datech EGNOS (fork RTKLIB SBAS-PL,tests/sbas_reference.rs) — obojí ověřeno proti jejich externím orákulím.
- ADEV / HDEV na skutečných cesiových hodinách 5071A — ověřeno proti dekádovým referenčním bodům Stable32 (
- Registr reprezentativnosti a mezer k letu (
src/representativeness.rs). Strukturovaný záznam, který vydává každý demonstrátor — co je reprezentativní, co je zjednodušeno a co stojí mezi modelem a letem — poctivý doprovod každého srovnání MODELLED. - Agregace studií a ergonomie CLI. Manifest sady scénářů s agregací studie jedním příkazem, hashově stabilní metadata studie +
--study-name, lintování scénářů--validatea zobrazení úrovně validace u každého ukazatele kvality ve zprávách studie.
Změněno#
- kshana.dev přepracován kolem sdílené doménové páteře — schopnosti a validace sloučeny do jednoho doménového průzkumníka se společnou slovní zásobou, nové ověřené ostrovy zviditelněny, animovaná Země přesná na pevniny jako přístroj a výzva k zadání studie, a značka/odkazy Ashforde OÜ.
- README + ARCHITECTURE zkontrolovány na úplnost a poctivost — zastaralé počty ověřených opraveny (nyní 15 externích orákulí), diagramy rozšířeny a citovány preprinty Conditional Timing Protection Level (arXiv:2606,24210) a RF-impairment optimism-gap (arXiv:2606,22054).
- Zdroje
paper/a řetězec konceptu JOSS jsou ponechány ve veřejném repozitáři.
0.20.0 - 2026-06-22#
Toto vydání přidává do otevřeného enginu čtyři schopnosti studií — podmíněnou ochrannou úroveň časování, hodnocení odolnosti PNT sladěné s rámcem, vyhodnocení mezery optimismu u RF poruch a front end softwarově definovaného přijímače / skutečných dat — každou reprodukovatelnou jediným příkazem a zapisující bajtově deterministický artefakt. Všechny studie jsou MODELLED (syntetická kalibrace nebo kalibrace na veřejné datové sadě), nesou svůj poctivý původ (verzi enginu, seedy, hash konfigurace) a validační štítky a nejsou certifikacemi.
Přidáno#
- Podmíněná ochranná úroveň časování (
tpl). Mez nezachycené časové chyby při spoofingu GNSS omezená holdoverem, s podlahou monitoru k-sigma, van Loanovým rozptylem doběhu přes latenci detekce a dobou do poplachu CUSUM. Kalibrováno na skutečném zaznamenaném útoku (JammerTest 2024, scénář 2.1.1) pomocícargo run --release --example tpl_jammertest, což reprodukuje jeho referenční tabulku ze skalárů získaných z veřejného záznamu (surová datová sada se nedistribuuje). - Hodnocení odolnosti PNT sladěné s rámcem + studie nestability rozhodnutí (
resilience). Model architektury, hodnocení sladěné s RPCF, simplex vah Dirichlet, nestabilita Kendallova tau a míry převrácení top-1 a kolaps diverzity společného režimu (Hill-N2), scargo run --release --example resilience_report -- paper-artifacts/resilience-study.json. Převodní tabulka vdocs/RESILIENCE-CROSSWALK.md. - Studie mezery optimismu u RF poruch (
impairment_study,impairment_ml,eval_stats). Panel 13 detektorů nad parametricky podloženým syntetickým korpusem, mezera optimismu uvnitř a vně rozdělení, trendy zákonů škálování s permutační nulou a prediktor degradace typu leave-one-out, přescargo run --release --example optimism_study -- paper-artifacts/optimism-study.json. - Front end softwarově definovaného přijímače (
sdr) a adaptéry skutečných dat (realdata/). Surové IQ/IF na odbočky korelátoru a SQM, plus adaptéry načítání (RINEX, u-blox UBX, GnssLogger, JammerTest, Yunnan, SatGrid) a sondovací příklady. Čtou záznamy, které uživatel dodá lokálně; žádné záznamy se nekomitují. - Zakomitované artefakty studií. Bajtově deterministické
optimism-study.jsonaresilience-study.jsonse nyní sledují podpaper-artifacts/, aby se čísla studií dala zkontrolovat bez přestavby; zůstávají regenerovatelné z generátorů výše. Surové datové sady zůstávají mimo repozitář (/realdata-cache/).
Změněno#
- Verze navýšena na 0.20.0 v
Cargo.toml,CITATION.cffaREADME; artefakty studie křížení jsou znovu vygenerovány, aby jejich značka odpovídala vydané verzi.
0.19.0 - 2026-06-18#
Změněno#
- Přelicencováno z Apache-2.0 na GNU AGPL-3.0-only s komerční licencí dostupnou od Ashforde OÜ (duální licencování). Otevřený engine zůstává plně otevřený a veřejně ověřitelný; síťový copyleft AGPL (§13) znamená, že uzavřený nebo hostovaný odvozený produkt se musí vrátit do open source — nebo si vzít komerční licenci. Tím se ověřené jádro brání proti forku a uzavření a zároveň se zachovává důvěryhodnost veřejného, spustitelného a auditovatelného enginu. Viz
LICENSE(AGPL) a novýLICENSING.md(co každá licence pokrývá a kdy se uplatní).LICENSEnyní obsahuje text AGPL-3.0; hlavičky SPDX ve všech zdrojích aktualizovány naAGPL-3.0-only;NOTICE,README,GOVERNANCE,GLOSSARY, web a metadata crate/balíčků (Cargo.toml,pyproject.toml,CITATION.cff, crate MCP + image) odpovídajícím způsobem aktualizovány.- Podmínky pro přispěvatele (
CONTRIBUTING.md) nyní licencují příspěvky přicházející pod AGPL a uděluje Ashforde OÜ právo zahrnout příspěvky do komerčně licencované edice, takže duální licencování dál funguje. - Politika závislostí beze změny, ale znovu odůvodněná (
deny.toml,GOVERNANCE): závislosti zůstávají permisivní (Apache/MIT/BSD/ISC). AGPL je povolena jen pro vlastní crate kshana — copyleftová závislost by poskvrnila komerční edici a rozbila duální licencování. - Poznámka pro navazující uživatele: jde o copyleftové přelicencování. Uživatelé, kteří se spoléhali na permisivní podmínky Apache-2.0, mohou dál používat poslední vydání pod Apache-2.0 (
v0.18.0a starší, tak jak byla publikována); odv0.19.0výše je AGPL-3.0 / komerční.
Zabezpečení#
- Navýšeno
pyo30,24 → 0,29, aby se z externích skenů OSV/závislostí odstranily RUSTSEC-2026-0176 / RUSTSEC-2026-0177 (GHSA-36hh-v3qg-5jq4 / GHSA-chgr-c6px-7xpp). Obě jsou upozornění na úrovni funkce, jejichž dotčené funkce (BoundList/TupleIterator::nth/nth_back,PyCFunction::new_closure) Kshana nikdy nevolá, apyo3je volitelná závislost (funkcepython) — skutečná expozice tedy byla nulová — ale navýšení udržuje čistý sken pro navazující auditory.src/python.rsmigrováno na API pyo3 0,29 (návratový typ Bound proscenario_kinds; explicitnískip_from_py_objectna pyclassRunOutput). Všech 11 testů pythonové vazby projde proti znovu sestavenému rozšíření.
0.18.0 - 2026-06-17#
Přidáno#
Jedenáct nových spustitelných druhů scénářů — demonstrátory dvou tendrů, most interoperability CCSDS a sada analýzy mise / prostředí prvního řádu (vše MODELLED, aditivní; stávající golden reprodukovatelnosti beze změny). Každý je spustitelný přes CLI / Python / WASM / MCP, dodává
scenarios/<kind>.tomla nese výslovný štítek MODELLED ve výsledném JSON a jednořádkovém souhrnu (test pro každý druh vtests/dominance_demonstrators.rstvrdí, že štítek je přítomen a že výstup nikdy neobsahuje řetězecVALIDATED):impairment-eval(src/impairment_eval.rs) — testovací stav pro vyhodnocení detekce RF poruch strojovým učením: označený syntetický korpus + harness ROC/AUC nezávislý na detektoru + zpráva o mezeře optimismu uvnitř/vně rozdělení (jen provozní charakteristiky — nikdy data z terénu/IQ).quantum-trade(src/quantum_trade.rs) — srovnání kvantového a klasického PNT s načítáním změřeného ADEV a obálkou odolnosti při odepření GNSS.space-weather(src/space_weather.rs) — solární/geomagnetické indexy (tabulka IAGA Kp↔ap, denní Ap, centrovaná 81denní F10.7a), exosférická teplota Jacchia-71 a vazba termosférické hustoty řízená aktivitou nad statickou atmosférou (NE model absolutní hustoty NRLMSISE).oem-interop(src/oem.rs) — import CCSDS 502,0 OEM + most pro obousměrný převod pro efemeridy GMAT / Orekit / STK (čtečkaparse_oem, přesná inverze zapisovače).launch-window(src/launch.rs) — azimut startu ve dvoutělesové úloze (sin Az = cos i/cos lat), Δv na změnu roviny, bonus rotace stanoviště a geometrie denních příležitostí.reentry(src/reentry.rs) — balistický koridor návratu Allen-Eggers: špičkové zpomalení, rychlosti při špičkovém g a špičkovém ohřevu, výška při špičkovém g.eo-coverage(src/eo_payload.rs) — geometrie EO záběr / GSD / přístup / opakovaný přelet (prostorový trojúhelník SMAD).space-packet(src/space_packet.rs) — kódování/dekódování primární hlavičky CCSDS 133.0-B Space Packet s bitově přesným převodem tam a zpět.attitude-budget(src/attitude_budget.rs) — 3-DOF moment gravitačního gradientu + rozpočet chyby zaměření RSS (skalární rozpočet před hardwarem, nikoli regulační smyčka).passes(src/passes.rs) — předpověď přeletů východ/západ pozemní stanice (AOS/TCA/LOS, maximální elevace, přístup).link-budget(src/linkbudget.rs) — jednosměrná rovnice spoje CCSDS-401 / DSN-810-005 (C/N₀ = EIRP − FSPL − L_other + G/T − k, FSPL / Eb·N₀ / rezerva / uzavření).
17stavový hybridní kvantový + klasický těsně vázaný UKF — zpřístupněn jako spustitelný scénář (MODELLED). Nový druh scénáře
hybrid-ukf(src/fusion/hybrid_ukf.rs,scenarios/hybrid-ukf.toml), který mění dříve jen API dostupný 17stavový těsně vázaný nescentovaný filtr GNSS/INS (src/fusion/tightly_coupled17.rs) na scénář, který mohou spouštět vazby CLI/Python/WASM/MCP. 17stavový vektor chyb tvoří 15 chybových stavů INS (poloha, rychlost, vychýlení orientace, odchylka akcelerometru + gyroskopu) rozšířených o korekci odchylky akcelerometru odvozenou z CAI — interferometr studených atomů (src/inertial/quantum_imu.rs) určuje podlahu náhodné procházky rychlostiq_va, takže dlouhodobý drift při doběhu je limitován kvantovým senzorem — a 2stavové hodiny fáze + frekvence, jejichž procesní šum pochází z enginu hodin s q-parametry (clock_state::q_from_allan, mapujícího profil Allanovy odchylky hodin na PSDq_wf/q_rw, přepočtené na jednotky vzdálenosti). Platforma je po úvodní fázi podporována GNSS (filtr se učí odchylky, rychlost a hodiny), poté doběhne přes výpadek GNSS jen na IMU CAI + hodinách, takže běh předvádí hybridizaci krátkodobé klasické IMU + dlouhodobé kvantové. Ukazatelem kvality je vnitřní konzistence filtru: sdružené NEES (Normalised Estimation Error Squared, přes odhadnutelnou podmnožinu polohy/rychlosti/hodin) a bělost inovací NIS (Normalised Innovation Squared) přes soubor Monte Carlo, kontrolované proti jejich pásmům χ² 95% (Bar-Shalom §5,4). Naladěný filtr leží uvnitř pásem; záměrně špatně naladěný filtr (parametryq_factor/r_factor) je označen — objektivně ověřitelná, rozlišující brána, nikoli razítko. Kontrola NEES/bělosti inovací je STATISTICKÉ ORÁKULUM: tvrzení o vnitřní konzistenci (hlášená kovariance filtru poctivě odpovídá rozptylu jeho vlastních chyb při modelovaném šumu), NE záruka přesnosti v reálném světě. Poctivý rozsah: vše je modelované / simulace — vstupy CAI a hodin jsou ohraničené hodnoty reprezentativní podle literatury, nikoli změřený hardware; hardware CAI a jeho Key-Person zůstávají v odpovědnosti partnera; nic zde nenaznačuje TRL > 3, letovou historii ani externí validaci (výsledný JSON a jednořádkový souhrn tyto štítky uvádějí výslovně). Jediná trajektorie s konstantní rychlostí v rovině činí stavy orientace a odchylek IMU jen slabě pozorovatelnými, takže NEES se posuzuje přes 8 odhadnutelných stavů; manévrující trajektorie pro plnou pozorovatelnost 17 stavů je v plánu. Přidává také instrumentaci konzistenceUkf::update_stats(vrací NIS pro každou aktualizaci) aTightlyCoupled17::{update_gnss_nis, nees, nees_subset}. Všechny stávající scénáře jsou nedotčeny (aditivní; golden reprodukovatelnosti beze změny).Sekvenční (rekurzivní) navigace podle terénu — SITAN jako běžící filtr. Nový druh scénáře
terrain-slam(src/altpnt/sequential.rs,scenarios/terrain-slam.toml), který spouští stávající model měření výškoměr-versus-DEM epochu po epoše přes engine SIRparticle_filter, místo dávkového hrubě-jemného hledání, kteréterrain-navpoužívá k získání jediného konstantního posunu INS. V každém bodu trasy se oblak propaguje přírůstkem hlášeným INS (sám narušený růstem driftu v každém kroku), převáží podle shody s terénem a při degeneraci se znovu vzorkuje — takže časově proměnný drift INS je podél trasy sledován, což proložení konstantního posunu strukturálně nedokáže. Na syntetickém DEM zůstává rekurzivní odhad omezený a znovu konverguje (konečně ≈ 70 m), zatímco nepodporované inerciální řešení neomezeně diverguje na ≈ 5 km; chyba v každé epoše sleduje výraznost terénu (nad plochými sedly doběhne na zkreslené INS a nad výrazným reliéfem se znovu zachytí) a monitor efektivní velikosti vzorku potvrzuje zdravý oblak. Poctivý rozsah: mapa je známá a pevná — rekurzivní lokalizace vůči uloženému DEM (lokalizační polovina terénního SLAM), nikoli společný odhad mapy; z konstrukce nekruhové (vložená rampa driftu je nezávislá pravda). Všechny stávající scénáře jsou nedotčeny (aditivní; golden reprodukovatelnosti beze změny).Páteř odolnosti při odepření GNSS + řezy demonstrátoru FutureNAV (
src/holdover.rsa základy obálky odolnosti podsrc/impairment_eval.rs,src/quantum_trade.rs,src/navsignal.rs,src/inertial/quantum_imu.rs, s verifikačními řezy FutureNAV vsrc/verification.rs). Skládá stavební bloky alternativního PNT — holdover hodin, sledování signálu, inerciální doběh, terén — do jediného příběhu odolnosti při výpadku GNSS. MODELLED; aditivní.Kshana Interchange Format (KIF) — verzovaná, samopopisná obálka artefaktů (
src/interchange.rs). Obal se značkou schématu kolem výsledků scénářů, aby uložený artefakt nesl svůj druh, verzi schématu a štítky MODELLED/VALIDATED s sebou a starší obálky zůstaly dopředně kompatibilně čitelné. Aditivní; stávající výsledný JSON beze změny.Modulace / sledování navigačního signálu + diferenciální korektor halo/NRHO v CR3BP (
src/navsignal.rs,src/cr3bp.rs). Model modulace a sledování navigačního signálu prvního řádu a diferenciální korektor omezeného kruhového problému tří těles pro halo / téměř přímočaré halo dráhy, zpřístupněný na stávající ose schopností hlubokého vesmíru. MODELLED.Režim vyhodnocení posunu rozdělení + parametr škály závažnosti korpusu pro
impairment-eval(src/impairment_eval.rs). Přidává do harnessu mezery optimismu ROC/AUC výslovné rozdělení uvnitř/vně rozdělení a laditelnou škálu závažnosti korpusu (jen provozní charakteristiky — nikdy data z terénu/IQ).Návratnost nákladů na pokrytí + mapování dopadu nezachycení detekce na integritu (
src/frugal.rs,src/integrity_impact.rs). Čočka návratnosti z úsporného inženýrství (náklady na jednotku pokrytí) a mapování míry nezachycení detekce na dopad na integritu. MODELLED; aditivní.Citovaný list parametrů chybového modelu interferometru studených atomů (CAI) (
src/inertial/quantum_imu.rs). Literárně podložený, ohraničený list parametrů pro inerciální model CAI — vstupy jsou citované, nikoli změřený hardware (žádné tvrzení o TRL / letu); napájí podlahu náhodné procházky rychlostihybrid-ukf.Správa projektu.
GOVERNANCE.mddokumentující rozhodovací model a hranici otevřeného/uzavřeného; řádek komunity/správy v mapě schopností se posouvánone → partial, aby to odrážel.
Opraveno#
Ochranná úroveň integrity ARAIM — nominální odchylka (
b_nom) a σ_URA se nyní uplatňují. Ochranná úroveň MHSS nyní odečítá jednostrannou projekci nominální odchylkyb_k = Σ_i |s_i|·b_nompro každý režim poruchy a používá sigmu integrity σ_URA (odlišnou od sigmy přesnosti σ_URE) přenášenou ve zprávě Integrity Support Message. Díky tomu je ochranná úroveň konzervativnější a správná podle standardů, a proto mění hodnoty PL hlášené stávajícími scénáři integrity. ISM/scénář získává pole#[serde(default)]sigma_ura_m/b_nom_m, takže vstupy, které je nechají nenastavená, si zachovávají dřívější chování. Vizdocs/ARAIM_REFERENCE.mdpro obnovený vzorecb_ka poctivou poznámku k implementaci.Konzistence χ² monitoru spoofingu.
parity_raim_testnyní používá sdílenou cestu inverzního χ²raim::chi2_quantile, čímž odstraňuje druhou odlišnou implementaci χ², takže RAIM a paritní monitor spoofingu se shodují na svých prazích.gravity-map-navzapojen do dispečera CLI. Scénář byl dříve dosažitelný jen přes API; nyní se spouští jakokind=jako každý jiný scénář.Přesnost dokumentace/počtů. Počty druhů scénářů v README jsou nyní testem
scenario_count_doc_syncpřišpendleny kapi::list_scenario_kinds().len(), takže zdokumentovaný počet se už nemůže rozejít s dispečerem.
0.17.0 - 2026-06-14#
Přidáno#
- PNT v hlubokém vesmíru a u Marsu — otevřený radiometrický navigační engine + simulace GSE. Nová, plně aditivní osa schopností nad jádrem ověřeným pro Zemi (každý stávající pozemský scénář je bajtově totožný — golden reprodukovatelnosti projdou beze změny bez regenerace). Přidává: vícetělesové dynamické jádro (
Body{mu, re, zonals, gravity, rotation, IAU-pole}s tesserálním gravitačním polem Marsu GMM-3, tělesově pevnou soustavou Marsu podle IAU, zásuvným rozhranímEphemerisProvider, dvoudílnými juliánskými daty s podmikrosekundovou přesností a TT↔TDB); radiometrické pozorovatelné (iterativní doba světla + Shapirovo zpoždění, dvou-/jedno-/třícestný Doppler a vzdálenost přes dvouramenné řešení Moyer, koherentní otočení transpondéru, regenerativní/PN měření vzdálenosti podle CCSDS 414, Δ-DOR podle CCSDS 506, média solární plazma/tropo/iono); parsování + vydávání CCSDS-TDM (503); odmocninový informační filtr s redukovanou dynamikou s empirickými zrychleními RTN, třístavovými palubními hodinami a modelem odporu Marsu; společný estimátor fúze jednocestných + dvoucestných dat; povrch scénářůmars-pnt(relay konstelace + LMO/přechod/ povrch) napříč CLI, Python, WASM, MCP a playgroundem; a komplexní simulátor výkonu GSE (geometrie → rozpočet spoje → pozorovatelné → SRIF → kovariance). Úroveň validace — ověřeno simulací: syntetické OD v uzavřené smyčce (Mars-LMO ≈ 0,2 m) a analytická vnitřní konzistence, přičemž dynamika Marsu s centrálním Sluncem je nezávisle křížově ověřena proti JPL DE440 (xval/anise-mars-od, podmíněno kernelem: 137 m při 1denním oblouku, poctivé nemodelované reziduum n těles). Hlášené přesnosti v hlubokém vesmíru jsou simulační / kovarianční ukazatele kvality, nikoli výsledky skutečné mise; validace na skutečných sledovacích datech DSN/ESTRACK zůstává v plánu. ANISE (MPL-2.0, edition-2024) je omezeno na crate pro křížovou kontrolu vyloučený z workspace, takže licenční bránacargo denya úloha MSRV-1.75 zůstávají nedotčeny. - Pozemní stopy přesné podle agentur ze skutečné orientace Země IERS. Scénář
ephemerispřijímá volitelné poleeop_finals2000a— vložené tělo skutečného souboru IERSfinals2000A— a redukuje pozemní stopu přes UT1−UTC a polární pohyb pro každou epochu interpolované z něj (tentýžEopSeries, který používáprecise_od), čímž přepíše nominální skalárydut1_s/xp_arcsec/yp_arcsec. Data cestují ve scénáři, takže běh zůstává reprodukovatelný a nepotřebuje souborový systém (funguje v playgroundu WASM). Příznakkshana --eop <finals2000A>zapracuje skutečný soubor do scénáře z CLI. Uzavírá asymetrii, kdy skutečná data orientace Země spotřebovával jenprecise_od.
Opraveno#
- Konzistence soustavy pro rychlost změny vzdálenosti. Pozemní stanice se nyní do inerciální soustavy převádí přesnou inverzí redukce družice (
frames::itrf_to_teme, vracející polární pohyb i hvězdnou rotaci) místo rotace GMST slepé vůči polárnímu pohybu, takže oba koncové body sdílejí jednu soustavu. Vliv na hlášený Doppler je pod validační podlahou, ale odstraňuje skutečnou nesrovnalost soustav a nadsazené tvrzení „přesné“ ve zdroji. carrier_hzse kontroluje. Nulová nebo nekonečná/nečíselná frekvence nosné nyní vrací chybu, místo aby tiše dávala nulový Doppler (λ = c/nosná se tím stávalo nekonečným), v souladu se stávající strážístep_s.
0.16.0 - 2026-06-11#
Přidáno#
- Validace silového modelu proložením efemeridy, křížově ověřená proti skutečným produktům agentur. Nový dávkový estimátor nejmenších čtverců (
src/precise_od.rs) s variační maticí přechodu stavu a editací odlehlých hodnot, řízený úplným silovým modelem (PreciseForceModel: geopotenciál EGM2008, třetí tělesa, slapy pevné + oceánské + atmosférické a empirická zrychlení CPR/2-per-rev), napájený skutečným parserem orientace Země IERSfinals2000A. Ověřeno proti publikovaným referenčním drahám: Galileo MEO na 13 cm po proložení, ESA Swarm-A LEO a LRO lunární (selenocentrická, gravitace GRAIL, tělesová soustava IAU-2015 — redukovaná dynamika 6,6 m, poctivě nad cílem 5 m na otevřené cestě; cesta třídy DE ANISE/DE440, která jej dosahuje, je crate vyloučený z workspace). - Scénář
spoof-detect— integrovaný vícevrstvý detektor spoofingu kombinující paritu RAIM v každé epoše, monitory AGC a kvality signálu (SQM) a sloučené rozhodnutí, ověřený proti publikovaným parametrům scénářů TEXBAT (Humphreys et al., ION GNSS 2012), včetně těžkého případu zarovnaného nosnou. - Scénář
ephemeris— stav, soustavy, pozemní stopa a Doppler. Propaguje jednu družici (TLE→SGP4 nebo analytická dráha) a v každém kroku vydává inerciální stav TEME a GCRS (polohu i rychlost), zemsky pevnou polohu ITRF/ECEF, podsatelitní pozemní stopu WGS-84 (zeměpisná šířka / délka / výška) a topocentrický azimut / elevaci / vzdálenost s rychlostí změny vzdálenosti a Dopplerem z pozemní stanice. Dosažitelný z CLI, Pythonu, WASM a serveru MCP a dodávaný jako předvolba „Ground track“ ve webovém playgroundu, kde se stopa kreslí přes skutečnou mapu světa (pobřežní čáry Natural Earth 1:110m, vestavěné — bez sítě a externí závislosti). - Export CCSDS OEM (
--export-oem/export_oem = true) — Orbit Ephemeris Message nesoucí rychlost, kterou spotřebovává GMAT / Orekit / STK, na úrovni stávajících exportérů SP3 a OMM. - Slapy Země pevné, oceánské (FES2004) a atmosférické (Ray 2001 S2) na geopotenciálu (IERS Conventions Ch. 6), zapojené do silového modelu.
- Wheely ARM64 — sestavení PyPI nyní vytváří i wheely Linux aarch64 (manylinux_2_28), macOS arm64 a Windows arm64.
- Rozšířená technická zpráva (preprint) odkazovaná z README a článek JOSS uzpůsobený k podání (ORCID autora, při každé změně kompilován do PDF v CI).
Změněno#
- Soustavy ověřeny na milimetr proti publikovaným vektorům Vallado. Redukce TEME→PEF/ITRF, úplný řetězec CIO IAU 2006/2000A GCRS→ITRS a převod ECEF→geodetické WGS-84 jsou nyní přišpendleny k řešenému příkladu ve Vallado et al. (AIAA 2006-6753) s jeho IERS EOP, nejen k vnitřní konzistenci.
- Nezávislé křížové kontroly časových stupnic. ERA a stupnice UTC/TAI/TT se shodují s
hifitimena < 1 µs a planetární efemerida DE440 se shoduje s JPL Horizons (geocentrické polohy Měsíce/Slunce), obojí jako vždy zapnuté brány CI. - Webový playground skrývá záložku ukazatelů kvality, když výsledek nenese žádné řádky ukazatelů kvality, takže balíčky jen s grafem (efemerida, RAIM, spoofing) se otevřou na svém grafu — u efemeridy na pozemní stopě — místo prázdné tabulky.
- Řízené posuvníky playgroundu a průchod parametrem nyní fungují pro scénář efemeridy / pozemní stopy: jeho parametry (zeměpisná šířka / délka stanice, časový krok, doba trvání, UT1−UTC) jsou laditelné a průchod může vykreslit geometrii přeletu (maximální elevace, špičkový Doppler, výška, rychlost) proti kterémukoli z nich — např. maximální elevace vs. zeměpisná šířka stanice. Záložka Sweep se nyní zobrazuje, jen když je scénář skutečně průchozí, takže žádný balíček nenabízí ovládací prvek, který nic nevykresluje.
- Zdokumentována aproximace SGP4
DUT1 ≈ 0v místě volání GMST (chyba rotace ≤ ~13″, hluboko uvnitř vlastní chyby modelu SGP4) a obnovenoCAPABILITY.md.
0.15.1 - 2026-06-09#
Přidáno#
- Zásuvný modul JetBrains Kshana — PNT simulator je nyní publikován a schválen na JetBrains Marketplace. README,
kshana.deva distribuční dokumenty na něj odkazují přímo.
Opraveno#
- Publikace do registru MCP nyní uspěje:
descriptionvserver.jsonpřekračoval limit registru 100 znaků (HTTP 422). Zkráceno a název serveru (i štítek vlastnictví image) sjednocen s kanonickým jmenným prostoremio.github.ashfordeOU/kshana-mcp. - Publikace do JetBrains Marketplace nyní uspěje: CI znovu nahrálo stejnou verzi zásuvného modulu, která byla zařazena ručně, což Marketplace odmítá. Verze zásuvného modulu je navýšena na
0.1.1a stráž idempotence nyní také bere odpověď „already contains version“ jako úspěšné no-op. - Cache-busting pro
kshana.dev: řetězce dotazu s verzí ustyle.css/app.jssledují vydání, takže se vracejícím se návštěvníkům vždy načte aktuální sestavení.
0.15.0 - 2026-06-08#
Přidáno#
kshana-mcp— Kshana jako server Model Context Protocol (MCP) (mcp/kshana-mcp/). Samostatný crate mimo workspace (SDKrmcpje edice 2024), který zpřístupňuje ověřený engine agentům a asistentům s umělou inteligencí — Cursor, JetBrains AI Assistant / Junie a libovolnému klientu MCP — přes stdio. Nástroje:run_scenario,list_scenario_kinds,validate_scenario,export_sp3,export_omm, každý je tenký obal nadkshana::api.- Zásuvný modul pro JetBrains IDE (
ide/jetbrains/). Klikněte pravým tlačítkem na soubor scénáře.toml→ Run Kshana Scenario; ukazatele kvality a výsledné JSON se průběžně zobrazují v okně nástroje Kshana. Čistě platformní zásuvný modul v Kotlinu, kompatibilní s každým JetBrains IDE 2024,3+. - Veřejná distribuce a automatické publikování s každým vydáním pro oba:
kshana-mcpna crates.io (cargo install kshana-mcp) přespublish.yml.kshana-mcpjako víceplatformní obraz OCI naghcr.io(docker run ghcr.io/ashfordeou/kshana-mcp) přes novýmcp-publish.yml.kshana-mcpdo oficiálního registru MCP přes GitHub OIDC (bez tajných klíčů); záznam v registru (server.json) používá typ balíčku OCI s vlastníkem ověřeným štítkem.- zásuvný modul pro IDE na JetBrains Marketplace přes
publishPlugin(řízeno tokenem, volitelné podpisování vývojáře) při každém značení vydání.
0.14.1 - 2026-06-08#
Přidáno#
- Nezávislá křížová validace referenčních soustav proti ANISE/SPICE (
xval/anise-frames/). Samostatný crate mimo workspace křížově kontroluje redukci IAU 2006/2000A CIO vkshana(kshana::cio::gcrs_to_itrs_matrix, GCRS→ITRS) proti ANISE (čistě rustová reimplementace NAIF/SPICE), která otáčí GCRF→ITRF93 podleearth_latest_high_prec.bpcz JPL, přičemž obě strany dostávají stejné parametry orientace Země IERSfinals2000A, a to přes osm čtvrtletních epoch 2020–2023. Obě nezávislé realizace soustavy se shodují s maximálním relativním natočením 0,028″ — ≤ 0,86 m na zemi, ≤ 0,93 m na LEO, ≤ 3,6 m na oběžné dráze GNSS, čímž s velkou rezervou splňují dlouhodobou kontrolu soustav z ROADMAP „< 10 m“ (doplňuje stávající bitově přesné kotvy SOFA/ERFA, nenahrazuje je). Crate je izolovaný, protožeanise+hifitimejsou pod licencí MPL-2.0 / edice 2024 a nikdy nesmějí vstoupit do publikovaného grafu závislostíkshana, jehoCargo.lock, licenční bránycargo denyani sestavení MSRV; ANISE je připnuto sdefault-features = false. Obsahuje binárkuframe-xval(stáhne přibližně 5 MB BPC, vypíše tabulku, zapíšereport.{json,md}), testovací bránu, která se sama přeskočí bez jádra či sítě, a volitelnou úlohu CI jen proworkflow_dispatch(nikdy neblokujemain). Zdokumentováno vdocs/VALIDATION.md(řádek CIO) a vROADMAP.md.
Opraveno#
- Hřiště přívětivé k mobilům. Opraven horizontální přetok
.panelhřiště na telefonech (položka mřížky CSS s výchozímmin-width: autose vykreslovala přibližně o 100 px šířeji než okno) pomocímin-width: 0a ovládacích prvků s hlídanou šířkou; ověřeno bez problémů při 360 / 390 / 414 / 768 px. Zarovnána akční tlačítka „Pin to compare“ / „Download report“ (stejné rámečky okrajů v řádku flex). Zvětšena tlačítka spuštění, posuvníky, výběry a odkazy navigace na minimum cílové plochy dotyku přibližně 44 px podle WCAG 2.5.5 / Apple HIG na telefonech a dotykových zařízeních; velikosti na počítači beze změny.
0.14.0 - 2026-06-08#
Opraveno#
- Zpevnění odolnosti po průchodu nepřátelským zátěžovým testem. (1)
sbas_protection_levelnyní odmítá nekonečné či nečíselné hodnoty elevace/azimutu/rozptylu a záporné nebo nekonečné diagonály kovariance (téměř singulární geometrie zvětšená malým σ dříve mohla projít branou absolutního pivotu a vrátit NaN VPL / absurdní HPL jako platnéSome— tiché selhání integrity). (2) Numerický propagátor (propagate/propagate_dopri) při nekonečném počátečním stavu selže bezpečně, místo aby adaptivní regulátor donekonečna neotáčel naprázdno. (3) Pomocná funkce buňky DEM už nepanikaří na mřížce s jediným vzorkem (1×N). (4) Azimutlunar_look_anglese drží přísně v[0, 360). (5)SphericalHarmonicField::from_gfcodmítá nefyzikální (NaN / nekladné)GM/poloměr.
Přidáno#
- Binárka
validation_report+ artefakt vydání: generátor bez závislostí, který vytváří jednostránkový HTML souhrn validace připravený k tisku a indexuje v něm každou validaci vynucovanou v CI (SGP4 666/666, EGM2008, bitově přesné soustavy, NIST Allan, datové listy IMU, ARAIM/SBAS, reprodukovatelnost na 3 OS, pokrytí) k jejímu testu a vnějšímu orákulu. Pracovní postup vydání vygenerujekshana-validation-summary.htmla připojí jej (spolu s původem SLSA) ke každému označenému vydání. - Pytest pro spolupráci s numpy + zpevnění wheelu:
tests/python/test_numpy_interop.py(běží v CI) a připnutý kontejner manylinux plus krok ověřeníauditwheel showv sestavení wheelu. - Tutoriály a vzdělávání:
docs/tutorials/(tři vypracované tutoriály, anotované scénáře pro jednotlivé domény, cvičení úrovní 1/2/3) stests/tutorials.rs, který připíná každé uvedené číslo k živému výstupu enginu. - Artefakty pro externí podání (
paper/,notebooks/,submissions/): koncept článku pro JOSS, notebook kvantové vs. klasické varianty a hotové balíčky k podání pro awesome-gnss / ESA Navipedia / NASA ASCL / ESA ESSR / ION/IAC a takéFUNDING.yml— příprava externích kroků podání. - Navigace alt-PNT podle terénu a kombinovaná (modul
altpnt): navigátor TERCOM/SITAN pro porovnávání terénu nad DEM (načítač.hgt+ generátor syntetických vzorků) a kombinovaný navigátor bez GPS na bázi gravitace + magnetického pole (IGRF) + terénu, zpřístupněný jako druhy scénářůterrain-navacombined-altpnt. Ověřeno konvergencí porovnávání terénu (známý vložený posun byl obnoven) a omezenou chybou kombinovaného filtru v okně bez GPS. - Geometrie LunaNet LANS (
lunar): pojmenovaná místa na povrchu Měsíce (Apollo 11/15/16, okraj Shackletonu) s autoritativními selenografickými souřadnicemi, úhly pohledu z povrchu (az/el/vzdálenost), viditelnost/pokrytí a DOP místa; ověřeno proti poloměru Měsíce, zveřejněným souřadnicím míst a identitě radiálně nadhlavové elevace 90°. - Řízené hřiště v prohlížeči: posuvníky řízeného režimu, výstupní panel s kartami, úvodní prohlídka při prvním spuštění, režimy průchodu parametrů a překrytí více běhů, 3D pohled na oběžnou dráhu na bázi canvas/SVG bez závislostí (balíček dráhy nyní vydává doplňkové
eci_track), režim vložení/iframe a stažení jako zpráva HTML — každé s unit testy v node v CI. - Model chyb IMU ověřený podle datových listů (
tests/imu_allan_spec.rs): ARW/VRW/nestabilita biasu u ADIS16465/16488/16460 obnovené ze syntetizované Allanovy odchylky a ověřené podle specifikací výrobce (identifikace NIST SP1065 / IEEE 952). - Validace odhadovačů Allanovy odchylky podle NIST SP1065 (
tests/allan_nist_sp1065_1000point.rs): čtyři odhadovače reprodukují zveřejněné referenční odchylky z 1000 bodů a meze spolehlivosti z Tabulky 32. - Ochranné úrovně SBAS / DO-229E, bezionosférická kombinace L1/L5 a mapa souladu s DO-316 (modul
sbas).sbas_protection_levelsestavuje vážené matice geometrie z elevace/azimutu každé družice a rozpočtu chyb UDRE/GIVE/letecké/tropo, invertuje normálovou matici (sdílenáorbit::invert4) a promítá rozptyly do HPL/VPL pomocí K-faktorů DO-229E (PA 6,0/5,33, NPA 6,18).iono_free_l1l5přidává bezionosférickou pseudovzdálenost GPS L1/L5 (IS-GPS-705,γ₁₅ = 1.79327), ověřenou tak, že ruší nezávislé ionosférické zpoždění prvního řádu v enginu.do316_compliance_mapvztahuje požadavky DO-316/DO-229E k implementujícím funkcím. Ověřeno proti uzavřeným definicím K-faktorů, referenční geometrii numpyinv(GᵀG)a identitě kovariance dvěma cestami; křížová kontrola shody zveřejněných PL s RTKLIB/gLAB je zdokumentována jako čekající na posouzení vdocs/COMPLIANCE.md. - Plná tesserální sférická harmonická gravitace — pole EGM2008 do stupně/řádu 70. Nový
gravity_sh::SphericalHarmonicFieldvyhodnocuje geopotenciál a jeho zrychlení v soustavě pevné se Zemí z plně normalizovaných koeficientůC̄_nm, S̄_nmpomocí stabilní normalizované Legendreovy rekurence Holmese a Featherstonea (denormalizace by při tomto stupni přetekla). Dodávané koeficienty jsou produktem NGA EGM2008 (volné dílo, přes ICGEM), součástíegm2008_data.rsa bitově přesně reprodukované pomocítools/gen_egm2008.pyz commitnutéhotools/egm2008_to70.gfc; libovolný model ICGEM.gfclze načíst přesfrom_gfc. Ověřeno proti třem nezávislým orákulům: kolaps na hmotný bod (jenC̄00=−μr/|r|³), čistě zonální pole reprodukující stávajícíforces::zonal_accelna přibližně 1e-9 a analytické zrychlení shodné s konečnědiferenčním gradientem přímo sečteného potenciálu na <1e-6. - Obecně relativistické zrychlení Lense–Thirring (strhávání rámců) (
forces::lense_thirring_accel, IERS 2010 rov. 10,12), gravitomagnetický člen nad rámec stávající Schwarzschildovy korekce, zapojený do numerického propagátoru novým příznakemForceModel::lense_thirring(). Ověřeno jako lineární v momentu hybnosti Země a o 1–2 řády pod Schwarzschildovým členem, tedy v režimu měření LAGEOS / Gravity Probe B. - Trait
Propagatorsjednocující analytický a numerický propagátor oběžné dráhy. Numerický propagátor Cowellova modelu sil je nyní plnohodnotným protějškem SGP4: nový typNumericalPropagator(počáteční stav +ForceModel+Tolerance+ volbaIntegrators dvojnásobením kroku nebo Dormand–Prince) aSgp4oba implementujípropagator::Propagator, jehožstate_at(t_seconds) -> StateVectorvrací inerciální stav TEME v jednotkách SI (m, m/s), takže jsou zaBox<dyn Propagator>zaměnitelné. Implementace SGP4 je přesný převod km/min→SI vlastní metody (ověřený testem rovnosti); numerická implementace splňuje přes trait stejnou submetrovou bránu přesné Keplerovy dráhy, oba adaptivní ovladače se shodují aPropagatorErrorzprostředkuje základní kód SGP4.
0.13.0 - 2026-06-08#
Toto vydání uzavírá největší mezeru v korektnosti enginu: redukce orientace Země a referenčních soustav je nyní provedena na úrovni referenční implementace (ověřeno bitově přesně proti ERFA/SOFA), zásobník integrity získává dvoukonstelační ARAIM na skutečných TLE GPS+Galileo a vrstvy propagace, kvantových senzorů, lunární/cislunární a geomagnetická se všechny prohlubují — vedle typovaného API pro Python, bohatšího hřiště v prohlížeči a matice reprodukovatelnosti na třech OS. Hlavní body:
- Referenční soustavy, bitově přesně. Plná nutace IAU 2000A a 2000B, precese IAU 2006, redukce IAU 2006/2000A GCRS↔ITRS založená na CIO (X, Y, s), polární pohyb IERS a výstupní soustavy TEME→GCRS/ITRS — každé ověřeno bitově přesně proti referenčním rutinám ERFA/SOFA.
- Dvoukonstelační ARAIM (GPS + Galileo) na skutečných TLE, s HPL/VPL, výstupem Stanfordova diagramu a otevřeným
docs/ARAIM_REFERENCE.md. - Cislunární PNT: propagátor CR3BP Země–Měsíc, soustavy MCI↔MCMF, selenografické souřadnice a spustitelný scénář lunární integrity LunaNet.
- Kvantové snímání: Coriolisovy a AC-Starkovy systematické vlivy pro interferometr se studenými atomy, průchod driftu a ověření proti rozpočtu Freiera (2016).
- Geomagnetický model hlavního pole IGRF-14, samostatný a ověřený.
- Typované API pro Python (PyO3
RunOutput/ScenarioMeta,.data(),scenario_kinds,validate_toml, typové stuby) se sestavením wheelu v CI a také plnohodnotný výstup propagátoru v GCRS/ITRS a export CCSDS OMM. - Důvěryhodnost a reprodukovatelnost: přímé srovnání přesnosti SGP4 s nezávislým crate
sgp4, brána pokrytí v CI (přibližně 97 % řádků vsrc/) a matice reprodukovatelnosti na třech OS (ubuntu/macos/windows).
Změněno#
- Každý graf v hřišti nyní odpovídá motivu webu. Všech dvanáct generátorů grafů SVG — graf výsledku/holdoveru (
src/report.rs+src/chart.rs), graf Allanovy odchylky (web/app.js) a každý graf scénáře (src/hybrid.rs,jamming.rs,timetransfer.rs,spoof.rs,raim.rsStanford + dostupnost,lunar.rs,ensemble.rs,sweep.rs,gnss_sim.rs,fusion/pack.rs,inertial/mod.rs) — používalo chladné námořnické panely (#0e131b), chladně šedé osy/texty a rušivou červenou/modrou/fialovou paletu řad. Nyní všude používají teplou grafitovou paletu: panely--bg, teplou mřížku--line, popisky--fga jednotné přiřazení řad: kvantové = medově zlatá (--accent-bright), klasické = teplá jantarová (--partial), specifikace/mez =--crit. Pohledy kódované z hlediska bezpečnosti si zachovávají svůj význam: Stanfordův diagram RAIM zůstává zelený (dostupné) / jantarový (zavádějící) / červený (nebezpečné) / tlumená ocelová (nedostupné) a HPL/VPL se čtou jako zlatá/bronzová. - Grafy jsou nyní po uložení/stažení samopopisné. Oba grafy vkládají svůj název do SVG (název grafu Allanovy odchylky + podtitul „lower is better“ byl dříve jen v HTML kolem obrázku, takže uložený obrázek neměl popisek) a oba nesou patičku s původem —
Kshana v<version> · <scenario-hash> · kshana.dev— takže stažený graf obstojí sám o sobě a zůstává reprodukovatelný. - Každý graf nyní nese patičku s původem. Patička —
Kshana v<version> · scenario <hash> · kshana.dev— se vkládá centrálně pro všechny druhy scénářů vapi::run_toml(dříve byla jen na grafech holdoveru a Allanovy odchylky), takže každý uložený či stažený obrázek — z hřiště, z exportu.chart.svgv CLI nebo ze scorecardu HTML — identifikuje svou verzi, otisk scénáře a zdroj. Hash je pro přehlednost označenscenarioa pochází zscenario_hashvýsledku, kde je přítomen, s náhradou hashem zdroje u zpráv o integritě/lunárních. Co je otisk a proč tam je, je zdokumentováno v sekci „Output“ souboru README a vdocs/PROVENANCE.md.
Opraveno#
raim::chi2_quantilea vzorkovač šumu RAIM Stanford jsou nyní bez paniky při mimorozsahových / nekonečných vstupech (nález fuzzingu závislý na pořadíread_dirz nových scénářů ARAIM).chi2_quantilenyní hlídáp/kjakonormal_quantile(vrací hraniční hodnotu místo panikyassert!) aNormalšumu Stanford pro dostupnost omezuje σ na striktně kladné, takže zásobník integrity/ARAIM nikdy nepanikaří na zmutovaných či chybně nastavených scénářích.
Přidáno#
- Matice CI pro reprodukovatelnost napříč platformami. Nová úloha
reproducibility-matrixspouští testy reprodukovatelnosti na ubuntu-latest, macos-latest a windows-latest při každém pushi. Protože úplné výsledné JSON není napříč OS bajtově shodné (rozdíl libm v poslední ULP), přesně se tvrdí projekce neměnná vůči platformě — otisk vstupu plus tvar výstupu, připnuté pro každý scénář jako zlaté hodnoty SHA-256 vtests/golden/novýmtests/cross_platform_golden.rs— spolu s numerickými piny (golden.rs, na 1e-6), stavy SGP4 (sgp4_verification.rs, na 2e-5 km) a determinismem v rámci procesu (determinism.rs). Dohromady to dokazuje reprodukovatelnost napříč platformami na třech OS bez křehkosti přesného bajtového hashování celého výstupu.docs/REPRODUCIBILITY.mdtoto rozdělení dokumentuje. - Brána pokrytí kódu v CI. Nová úloha
coveragespouštícargo-tarpaulins enginem na bázi zdrojů LLVM, publikuje zprávu lcov jako artefakt sestavení a vynucuje spodní mez pokrytí řádků nasrc/(generované datové tabulky, vstupní bod CLI, testy a webové zdroje jsou vyloučeny). Naměřené pokrytí řádků je přibližně 97 % nasrc/(SGP4 a moduly hodin ≥95 %); brána je nastavena na 85 % — nad cílem ≥80 % a s odstupem od naměřené hodnoty, takže zachytí regrese, aniž by kolísala. V README je zveřejněn odznak pokrytí. - SGP4/SDP4 přímo proti nezávislému crate
sgp4. Nový test (tests/sgp4_crate_comparison.rs) křížově ověřuje propagátor Kshana proti nejpoužívanější knihovně SGP4 v Rustu (neuromorphicsystems/sgp4, přidáno jako závislost jen pro testy) na stejných 666 vektorech AIAA 2006-6753. Při obou řízených gravitačním modelem WGS72, který vektory používají, se obě nezávislé implementace shodují pod mikrometr na drahách blízko Země a rezonančních a na 4,12 mm v nejhorším případě napříč všemi režimy; obě reprodukují referenční tabulkutcppver.out. Commitnutá srovnávací tabulka (tests/fixtures/sgp4_comparison.md, regenerovaná přesKSHANA_REGEN_FIXTURES=1) rozepisuje výsledek podle režimů (LEO/MEO, hluboký vesmír, rezonance ½denní a 1denní) a poznamenává čtyři záměrně patologické případy, které crate při konstrukci odmítá. Živá tvrzení drží obě implementace do 2e-5 km od reference a vzájemně se shodují do 4e-5 km — ochrana proti regresím, ne jednorázový výsledek. Jde o konkurenční pedigree: správnost proti nezávislé kódové základně, nejen proti statické tabulce. (Výchozífrom_elementscrate používá WGS84, a proto se od reference WGS72 liší přibližně o km — upřímně uvedeno v textu u tabulky.) - Export CCSDS OMM je nyní dostupný od začátku do konce. Zapisovač OMM (
src/omm.rs) dříve neměl cestu přes CLI/API; střední prvky scénářeorbitlze nyní publikovat jako katalog CCSDS 502.0-B-2 OMM — jedna zpráva OMM KVN na družici definovanou v TLE — přeskshana <orbit.toml> --export-omm out.omm, neboexport_omm = trueve scénáři automaticky zapíše<scenario>.omm(zrcadlí stávající--export-sp3). Každá zpráva nese skutečné katalogové číslo NORAD družice, mezinárodní označení COSPAR (YYYY-NNNP) a epochu (tvar dne v roce CCSDS), které nová funkcetle::parse_tle_identitynačte z řádku 1 TLE; řádek s názvem se staneOBJECT_NAME(jinakOBJECT <id>).CREATION_DATEje epocha scénáře, nikoli hodinový čas, takže je výstup reprodukovatelný. Nové API:api::export_omm/api::auto_export_omm,OmmFile::from_tle_block,OrbitClockScenario::to_omm_string. Syntetický scénář Walker nebo RINEX (bez středních prvků TLE) skončí chybou, místo aby vydal prázdný soubor. Ověřeno proti přibalenému snímku 30 družicgps-ops(tests/sp3_export_roundtrip.rs). - Interaktivní zobrazení hodnot při najetí na grafy hřiště. Pohyb kurzoru nad grafem přichytí zaměřovací kříž k nejbližšímu vzorku a zobrazí bublinu s hodnotou (
web/hover.mjs, zapojeno vweb/app.js). Na grafu Allanovy odchylky čte τ a σ_y(τ) každých hodin; na časových řadách scénářů (holdover hodin, dead-reckoning, přenos času, hybridní PNT, GNSS/INS) čte čas a hodnotu každé sady v jednotkách grafu (ns / m / ps / využití), načtené z výsledku, takže údaj odpovídá křivce. Specializované diagramy (RAIM, spoof, průchod) překrytí nemají. Grafy zůstávají samopopisnými obrázky<img>z blobu — překrytí je průhledný zaměřovací kříž + bublina nad nimi, takže stažení/porovnání/export zůstávají nedotčeny. Výpočty souřadnic (nejbližší vzorek, kurzor→podíl grafu, parsování lomené čáry) jsou testovány unit testy (web/hover.test.mjs, běží v CI). - Režim porovnání A/B v hřišti. Připněte libovolný běh jako základ A, spusťte druhý scénář a oba se zobrazí vedle sebe s tabulkou rozdílů ukazatelů kvality (holdover, RMS/p95 časování, dostupnost), která u každé metriky zvýrazní vítěze (
web/compare.mjs, zapojeno vweb/app.js; logika rozdílů je testována unit testy vweb/compare.test.mjs, běží v CI). Všechny hodnoty se vkládají jako text a všechny grafy přes blob<img>, takže se nic z řetězce scénáře nikdy nevkládá jako značkování. - Tlačítka stažení grafu (SVG + PNG). Každý graf v hřišti má nyní lištu „Download SVG / PNG“ ladící s motivem (
web/chartdl.mjs, zapojeno vweb/app.js). SVG vrací věrný škálovatelný originál; PNG vykreslí stejný samopopisný obraz ve 2× pro prezentace a dokumenty. Soubory se pojmenují s údaji o původu —kshana-<chart>-v<version>-<scenario-hash>.<ext>— a logika názvu/velikosti je testována unit testy (web/chartdl.test.mjs, běží v CI). - Geomagnetický model hlavního pole IGRF-14 (
src/igrf.rs). Standardní sférické harmonické pole IAGA (stupeň/řád 13, epocha 2025,0 + sekulární variace 2025–2030; koeficienty strojově generované z oficiálníhoigrf14coeffs.txtpomocítools/gen_igrf.pydosrc/igrf_data.rs, bitově přesně reprodukovatelné). Syntéza se Schmidtovou normalizací vrací vektor pole (sever/východ/dolů) a odvozené prvky (deklinace, inklinace, horizontální/celková intenzita) na libovolném geodetickém místě/datu, plus geomagnetický pól a sílu dipólu — magnetický protějšek porovnávače gravitačních map pro alternativní navigaci PNT. Ověřeno samostatně: syntéza odpovídá přesnému uzavřenému tvaru nakloněného dipólu, plné analytické pole stupně 13 odpovídá konečné diferenci skalárního potenciálu, osa dipólu reprodukuje známý geomagnetický pól (přibližně 80,7°N, −72,7°E) a sílu přibližně 29,7 µT a globální pole je fyzikální. - Typované vazby pro Python (
src/python.rs). Kromě funkcírun/run_fulls řetězcem na vstupu a výstupu modul nyní zpřístupňuje typovanou tříduRunOutput(.json,.svg,.summarya přístupový prvek.data(), který vrací výsledek zpracovaný do nativního slovníku Pythonu — bez opětovného parsování JSON, lze obalit NumPy), plusrun_typed,scenario_kinds()(zpracovaný seznam slovníků s metadaty) avalidate_toml()(seznam chybových zpráv, který nevyvolává výjimku). Dodává typový stub PEP 561 (kshana.pyi+py.typed) pro mypy/pyright/editory a rychlý startdocs/PYTHON_API.md. Stávající funkce jsou beze změny. - Plnohodnotné výstupní soustavy pro propagátory (
src/orbit.rsvýčetFrame+position_in_frame+state_gcrs). KaždýPropagator(Kepler, SGP4, RINEX, GLONASS, SP3) nyní může vydat svou polohu v TEME, GCRS (≈ J2000) nebo ITRS (pevná se Zemí) — TEME nativně, GCRS přes ověřenou redukci TEME→GCRS, ITRS zřetězením té do rotace IAU 2006/2000A CIOgcrs_to_itrs— a svůj úplný stav GCRS (poloha + rychlost) přesstate_gcrs. Setrvačný výstup k datu už není jen TEME. - Redukce IAU 2006/2000A z nebeské do pozemské soustavy založená na CIO (
src/cio.rs). Moderní řetězec GCRS↔CIRS↔ITRS bez ekvinokcia: souřadnice CIPX, Yodečtené z matice biasu-precese-nutace IAU 2006/2000A (s využitím ověřené precese FW + nutace 2000A s úpravou P03eraNut06a), 66členná řada lokátoru CIOs(eraS06, strojově generovaná z reference ERFA pomocítools/gen_s06.pydosrc/cio_s06_data.rs, bitově přesně reprodukovatelná), matice GCRS→CIRS (eraC2ixys), úhel rotace Země (eraEra00) a plná rotace GCRS→ITRS (eraC2tcio, složená se stávajícím polárním pohybem IERS). Ověřeno bitově přesně proti zveřejněnémueraXys06a(X=0.5791308482835292617e-3, Y=0.4020580099454020310e-4, s=-0.1220032294164579896e-7 při JD_TT 2453736,5) a testovacím vektorůmeraC2ixysaeraEra00. Řetězec CIO a starší redukce TEME s ekvinokciem/GMST-1982 se shodují až na zdokumentovaný rozdíl konvence hvězdného času ≈2·(rovnice ekvinokcií). Toto je důsledná redukce, kterou cesta přes ekvinokcium/GMST jen aproximovala. - Plná řada nutace IAU 2000A (
src/nutation.rsnutation_iau2000a,nutation_matrix_2000a). Úplný model MHB2000 — 678 luni-solárních + 687 planetárních členů — s přesností < 0,1 mas, vedle stávajícího zkráceného modelu 2000B o 77 členech. Tabulky jsou strojově generované z reference IAU SOFA / ERFAnut00apomocítools/gen_nut00a.pydosrc/nutation_iau2000a_data.rs(generátor reprodukuje commitnutý soubor bitově přesně) a celá řada — obě sady fundamentálních argumentů IERS-2003 a MHB2000 i planetární délky — je ověřena bitově přesně proti zveřejněnému testovacímu vektorueraNut00a(Δψ = −0.9630909107115518e-5, Δε = 0.4063239174001679e-4 při JD_TT 2453736,5, na 1e-13 rad). Výchozí redukce TEME→GCRS ponechává řadu 2000B (~1 mas, pod zjednodušením rotace rychlostní soustavy v řetězci);nutation_matrix_2000azpřístupňuje matici k datu s < 0,1 mas pro volající, kteří ji potřebují. - Spustitelný scénář lunární integrity (
kind = "lunar-integrity",scenarios/lunanet-araim.toml). Zapojuje průchod ochrannou úrovní u lunárního jižního pólu (src/lunar.rsLunarScenario→south_pole_hpl_pass) do spouštěče scénářů s JSONLunarReporta grafem SVG HPL v čase, takže případ cislunární integrity je dostupný přímo z CLI. Upřímně ukazuje mezeru: při 30 m σ_URE u LANS přesahuje HPL u jižního pólu (≈ 260–450 m) mezní hodnotu výstrahy 50 m (0 % dostupnosti) — integrita lunárního PNT zatím není splněna. - Dostupnost dvoukonstelačního ARAIM na skutečných TLE GPS+Galileo a zapojení do spouštěče scénářů (
src/raim.rs,src/orbit.rs,scenarios/araim-gps-galileo.toml). Přidáváaraim_dual_constellation_availability(pokročilý engine ARAIM — poruchy jednotlivé družice i celé konstelace — spuštěný nad časovou mřížkou) avisible_positions_labeleda zapojuje jej do spouštěčeIntegrityScenariopříznakemaraim_dual, takže studie ARAIM s více GNSS je dostupná přímo z TOML. Test se skutečnými daty (tests/araim_dual_real_data.rs) na přibalených snímcích Celestrak GPS+Galileo z 2026-06-07 ukazuje, že přidání Galilea zvedá dostupnost ARAIM z 0,21 na 0,67 při náročném VAL 12 m (10,5→21,8 družic v dohledu), zatímco režim odolný vůči poruchám konstelace je se dvěma konstelacemi zásadně omezený — kvantitativní důvod, proč robustní dvoukonstelační integrita směřuje ke třetí konstelaci nebo k SBAS. Upřímný zbytek: číselně přesná reprodukce tabulky A-3 z EU ARAIM TN proti jedné epoše zamčené na verzi a záznam fixture v Zenodu. - Kruhový omezený problém tří těles (CR3BP) pro systém Země–Měsíc (
src/cr3bp.rs). Nové jádro cislunární dynamiky, které propagátory dvou těles/SGP4 poskytnout nemohou: pohybové rovnice v rotující soustavě (cr3bp_accel), propagátor RK4 (propagate_cr3bp), integrál Jacobiho konstanty (jacobi_constant) a pět Lagrangeových bodů (lagrange_points). Ověřeno proti uzavřeným / zveřejněným kotvám: kolineární body Země–Měsíc (L1 ≈ 0,83692, L2 ≈ 1,15568, L3 ≈ −1,00506), přesné rovnostranné L4/L5 = (½−μ, ±√3/2, 0), všech pět potvrzených jako rovnovážné body pole, Jacobiho konstanta zachovaná na přesnost integrátoru při propagaci a mimorovinná zpětná síla, která umožňuje dráhy halo/NRHO. Toto je základ pro znázornění skutečné NRHO. Upřímný zbytek: diferenciálně korigované periodické počáteční podmínky NRHO 9:2, excentrický/efemeridový (DE) model a denormalizovaná transformace do selenocentrických soustav vsrc/lunar.rs. - Polární pohyb IERS a redukce TEME→ITRF (
src/frames.rs). Přidávápolar_motion_matrix(SOFAiauPom00:W = Rx(−y_p)·Ry(−x_p)·Rz(s′)s lokátorem TIOs′),pef_to_itrf/itrf_to_pefateme_to_itrf— rotaci TEME→PEF založenou na GMST s následným polárním pohybem — čímž doplňuje polohu pevnou se Zemí přesnou v ITRF nad rámecteme_to_ecefjen s GMST (polární pohyb je na oběžném poloměru efekt v řádu desítek metrů).x_p/y_pjsou pozorované veličiny IERS, které dodává volající. Upřímný zbytek: plně CIO řetězec (X, Y, s) a numerická křížová kontrola ANISE/SPICE <10 m zůstávají jako navazující práce. - Systematické vlivy interferometru se studenými atomy, průchod driftu a ověření proti publikovanému zařízení (
src/inertial/quantum_imu.rs,docs/QUANTUM.md). Rozšiřuje akcelerometr CAI z prvních principů o dva hlavní deterministické systematické vlivy: fázi Coriolis/rotaceΦ_cor = 2·k_eff·v_⊥·Ω·T²(coriolis_phase, s ekvivalentním biasem zrychlení2·Ω×vpřescoriolis_accel_bias) a fázi světelného posuvu AC-StarkΦ_LS = (δ_LS,1 − δ_LS,3)/Ω_eff(ac_stark_phase, která se pro konstantní posuv ruší symetrií π/2–π–π/2). Přidávácai_drift_sweep(drift polohy při dead-reckoningu v závislosti na době cyklu — jádro srovnání kvantového a klasického přístupu) a validační test proti mobilnímu gravimetru Freiera et al. 2016 (arXiv:1512,05660): modelovaná mez kvantového projekčního šumu leží pod publikovaným krátkodobým šumem 96 nm/s²/√Hz a v odstupu přibližně 2 řádů od něj.docs/QUANTUM.mdaktualizováno. Upřímný zbytek: systematické vlivy vlnoplochy/zaměření svazku, řešení nejednoznačnosti proužků, přesná reprodukce letových zkoušek CARIOQA-PMP / Boeing-AOSense (vyžaduje publikované PSD platforem) a předvolba v JS hřišti. - Redukce cislunární soustavy a průchod integrity u lunárního jižního pólu (
src/lunar.rs). Rozšiřuje lunární engine ARAIM o rotaci MCI↔MCMF (inerciální soustava se středem v Měsíci ↔ soustava pevná s Měsícem) (mci_to_mcmf/mcmf_to_mci, zjednodušený model střední rotace při lunární hvězdné rychlosti), selenografickou šířku/délku/výšku (mcmf_to_selenographic/selenographic_to_mcmf) asouth_pole_hpl_pass— přistálý přijímač v oblasti Artemis proti reprezentativní sadě relé LunaNet během průchodu 24 h, což upřímně vyčíslí mezeru v integritě: při nominálním σ_URE u LANS 30 m je ochranná úroveň konečná, ale přesahuje mezní hodnotu výstrahy 50 m pro operace na povrchu. Upřímný zbytek: přesné efemeridy LANS NRHO (cislunární dráha 3 těles), fyzikální librace / precesující lunární pól (DE421/SPICE) a scénář LunaNet v TOML zůstávají jako navazující práce. - Zpráva o podpoře integrity ARAIM, SVG Stanfordova diagramu a otevřená reference ARAIM (
src/raim.rs,docs/ARAIM_REFERENCE.md). Přidává explicitníIntegritySupportMessage(σ_URA / σ_URE / b_nom / P_sat / P_const, s referenčními hodnotami WG-C pro GPS+Galileo a převodníky.fault_priors()/.dual_fault_priors()do enginů s jednou poruchouaraim_raima s poruchou celé konstelacearaim_dual_raim), samostatný vykreslovačstanford_svgStanfordova diagramu integrity (čtyři zóny, hranicePL = error, vodicí linky mezní hodnoty výstrahy, jedna barevně kódovaná značka na epochu) adocs/ARAIM_REFERENCE.md, který dokumentuje algoritmus, ISM, hypotézy poruch, smlouvu ochranné úrovně a přínos dvou konstelací. Testy dokládají zisk geometrie/redundance (přidání druhé konstelace zpřísňuje HPL při jedné poruše) a toleranci poruchy konstelace (uživatel se dvěma konstelacemi přežije ztrátu celé konstelace; uživatel s jednou nikoli). Upřímný zbytek: číselná reprodukce tabulky A-3 z EU ARAIM TN / hodnoty dostupnosti 15–25 % proti snímku skutečných TLE zamčenému na verzi, záznam fixture v Zenodu a zapojeníaraim_dual_raimdo spouštěče souborů scénářů. - Nutace IAU 2000B a úplná inerciální redukce TEME→GCRS/J2000 (
src/nutation.rs). Přidává druhý a třetí díl skutečné redukce inerciální soustavy nad dodávanou precesí IAU 2006: 77členná luni-solární řada nutace MHB2000 (nutation_iau2000b, standardní zkrácení IAU 2000B s přesností ~1 mas) s Delaunayovými fundamentálními argumenty a maticí nutace SOFAiauNumata řetězec Vallado AIAA-2006-6980 TEME→TOD (rovnice ekvinokcií) → TOD→MOD (nutace) → MOD→GCRS (bias-precese) zpřístupněný jakoteme_to_gcrs(r, v, jd_tt)/gcrs_to_teme. Řada, argumenty a konstanty jednotek jsou přepsány z reference IAU SOFA / ERFAnut00ba ověřeny bitově přesně proti zveřejněnému testovacímu vektorueraNut00b(Δψ, Δε na 1e-13 rad). Upřímný zbytek: úplná řada IAU 2000A o 678 členech (<0,1 mas), numerická křížová kontrola ANISE/SPICE <10 m a polární pohyb zůstávají jako navazující práce (vizROADMAP.md).
0.12.0 - 2026-06-06#
Toto vydání přináší první neanalytický propagátor oběžné dráhy v Kshana — Cowellův integrátor s hierarchickým modelem sil se šesti poruchami (dvě tělesa + zonální J2–J6 + třetí těleso Slunce/Měsíc řízené epochou + tlak slunečního záření s kuželovým stínem umbra/penumbra + atmosférický odpor + postnewtonovská Schwarzschildova relativistická korekce) poháněný volbou ze dvou adaptivních integrátorů (RK4 s dvojnásobením kroku a vložená dvojice Dormand–Prince RK5(4)) — vedle vrstvy manévrů / návrhu trajektorie (impulzní a konečné zážehy, Izzoův řešič Lambertovy úlohy a průchod porkchop), vrstvy alt-PNT s porovnáváním gravitačních map, která obnoví 60minutovou dráhu bez GPS na méně než 500 m, dávkového + sekvenčního řetězce určování oběžné dráhy a plného 17stavového těsně vázaného UKF GNSS/INS s dead-reckoningem kvantového CAI. Každá numerická schopnost je připnuta k analytické pravdě nebo ručně odvozenému uzavřenému tvaru; poruchy vypnuté ve výchozím stavu nechávají vydané zlaté hodnoty nedotčené.
Přidáno#
- Postnewtonovská (Schwarzschildova) relativistická korekce (
forces::relativistic_accel+propagator::ForceModel::relativity). Přidává dominantní obecně relativistickou poruchu na oběžné dráze blízko Země — hlavní příčinu relativistického postupu perigea — ve tvaru IERS / Montenbruck–Gillβ = γ = 1a = (μ/c²r³)·{[4μ/r − v²]·r + 4(r·v)·v}. Stejně jako atmosférický odpor je závislá na rychlosti, takže jede na pravé straně integrátoru(r, v)přes [accel_rv], je volitelná a ve výchozím stavu vypnutá. Ověřeno samostatně: na kruhové dráze se zhroutí na uzavřený tvar3μ²/(c²r³)·r̂(čistě radiální a směřující ven, mimoosé složky přesně nulové); její poměr ke dvěma tělesům je učebnicové≈1.9·10⁻⁹na LEO (podpisμ/(c²r)); případ radiální rychlosti odpovídá ručně zjednodušenémuμ(4μ + 3v²r)/(c²r³); a v propagátoru poruší dráhu, aniž by ji disipovala — hlavní poloosa se zachovává na výrazně méně než metr za den, strukturální opak monotónního úbytku způsobeného odporem. Protože je ve výchozím stavu vypnutá, zlaté hodnoty dvou těles/J2/zonálních členů zůstávají nedotčeny. Ladění parametrů PPN (β,γ) a člen strhávání rámců Lense–Thirring zůstávají jako navazující práce. - Model kuželového stínu umbra+penumbra (
forces::conical_shadow), nyní používaný tlakem slunečního záření. Povyšuje binární zatmění válcovou umbrou na hladký činitelν ∈ [0,1]: Slunce a Země jsou modelovány jako kotouče zdánlivých úhlových poloměrůa = asin(R☉/d☉),b = asin(Rₑ/|r|)se zdánlivou vzdáleností středůcaνje jedna minus podíl slunečního kotouče zakrytý kotoučem Země (plocha překryvu kruh–kruh); plné slunce proc ≥ a+b, úplná umbra proc ≤ b−a, prstencové zatmění proc ≤ a−ba mezi tím spojitá penumbra.srp_acceljej nyní používá, takže síla SRP v zatmění plynule slábne, místo aby se zapínala/vypínala. Přidává nominálníforces::SOLAR_RADIUSpodle IAU. Ověřeno samostatně:ν = 1na plném slunci aν = 0hluboko v umbře (přesně), hladká monotónní penumbra (νroste z 0 → ~½ přic = b→ 1 napříč pásmem[b−a, b+a]) a kuželová penumbra přesahuje válec umbry (bod, který binární válec považuje za plně osvětlený, je pro kužel0 < ν < 1). Jednoduššícylindrical_shadowzůstává k dispozici; sluneční okrajové ztemnění a stín zploštělé Země zůstávají jako navazující práce. - Vložený integrátor Dormand–Prince RK5(4) (
integrator::dopri54_step/integrator::integrate_dopri+propagator::propagate_dopri). Přidává standardní vloženou dvojici Dormand–Prince (1980) s Butcherovou tabulkou vedle stávajícího ovladače RK4 s dvojnásobením kroku: sedm stupňů FSAL poskytuje řešení 5. řádu a odhad chyby 4. řádu z jedné sady vyhodnocení (7 oproti 11 voláním funkce na krok), levnější odhad lokální chyby. Adaptivní ovladač používá stejnou normu RMS chyby a regulátor kroku0.9·(1/err)^(1/5), takže jde o náhradu bez úprav;propagator::propagate_doprijej zpřístupňuje v modelu sil dráhy. Ověřeno samostatně: odhad vložené chyby je O(h⁵) (půlení kroku jej snižuje ~32×); DP5(4) integrujey' = ynaea harmonický oscilátor přes 50 period se zachováním energie na <1e-6; dosáhne stejného koncového bodu při stejné toleranci s menším počtem vyhodnocení funkce než dvojnásobení kroku (bez ztráty přesnosti); apropagate_doprisplňuje stejnou bránu analytické pravdy jako cesta RK4 — pod metr oproti přesnému řešení Keplera v univerzálních proměnných na oběžné dráze LEO za 24 h — zatímco oba ovladače se shodují na <1 m na dráze J2..J6 (bez uzavřeného tvaru). Vyšší vložené dvojice (RKF7(8) / DOP853) zůstávají jako navazující práce. - Atmosférický odpor zapojený do propagátoru jako jeho první síla závislá na rychlosti (
forces::atmospheric_density+forces::drag_accel+propagator::ForceModel::drag). Přidává atmosféru po částech exponenciální podle Vallada, tabulka 8-4ρ = ρ0·exp(−(h−h0)/H)(28 pásem od hladiny moře po 1000 km, pod povrchem omezeno) a kvadratický odpora = −½ · ρ(h) · (C_D·A/m) · |v_rel| · v_relvůči spoluotáčející se atmosféřev_rel = v − ωₑ ẑ × r(forces::EARTH_ROTATION_RATE = 7.2921151467e-5). Protože odpor závisí na rychlosti,ForceModelzískává novéaccel_rv(t, r, v)a pravá strana integrátoru nyní předává rychlost (f(t,[r;v]) = [v; a(t,r,v)]); funkceaccel_atjen s polohou je beze změny, takže konzervativní členy a zlaté hodnoty zůstávají nedotčeny. Ověřeno samostatně: hustota se kotví na hodnotě 1,225 kg/m³ u hladiny moře, pod povrchem je omezená, monotónně klesá přes LEO, ve 400 km leží v pásmu slunečního průměru ~1e-12 kg/m³ a její obnovená lokální výšková stupnice (≈ 58 km ve 400 km) je fyzikální; odpor působí proti spoluotáčející se relativní rychlosti o velikosti ~2e-6 m/s² typické pro LEO přiC_D·A/m = 0.02 m²/kg; a — klíčový podpis — odpor je disipativní: dráha 300 km ztrácí měrnou energii monotónně a její hlavní poloosa klesá o omezených ~km/den, zatímco vakuový základ zachovává energii na <1e-9. Termosférická hustota NRLMSISE-00 (ustanovení o hustotě odporu < 5 %) zůstává jako navazující práce. - Tlak slunečního záření zapojený podle epochy do modelu sil propagátoru (
forces::srp_accel+propagator::ForceModel::solar_radiation). Přidává model SRP s dělovou koulía = ν · P☉ · cᵣ · (A/m) · (AU/d)² · d̂s činitelem zatmění podle válcového stínu (forces::cylindrical_shadow, ν ∈ {0 1}): tlak zářeníP☉ = Φ☉/cz moderní celkové sluneční ozářenosti 1361 W/m² (≈ 4,5398·10⁻⁶ N/m²), pokles toku s převrácenou hodnotou čtverce vzdálenosti(AU/d)²a radiální tlak směrem od Slunce. Jede na stejné pravé straně řízené epochou jako třetí těleso, přičemž vzorkuje Slunceephemjednou v postoupivší epošeepoch_jd_tt + t/86400, sdílené mezi třetím tělesem Slunce a SRP. Skládatelné:with_zonals_j2_j6().third_body(true, true, epoch).solar_radiation(1.5, 0.02). Ověřeno samostatně proti ručně odvozeným podpisům: tlak záření na 1 AU se kotví na učebnicové ≈ 4,5398·10⁻⁶ N/m²; SRP plně osvětlené družice na LEO je bitově shodné se vzorcem dělové koule, míří pryč od Slunce a leží v pásmu ~1,36·10⁻⁷ m/s² pro cᵣ = 1,5, A/m = 0,02 m²/kg; zdvojnásobení vzdálenosti Slunce zmenší velikost na čtvrtinu (převrácená hodnota čtverce); válcový stín zatmívá jen válec umbry (protisluneční a v rámci jednoho poloměru Země od spojnice Země–Slunce) a dává přesně nulové SRP v zatmění; a v propagátoru SRP porušuje dráhu LEO o malou omezenou hodnotu, která roste přibližně lineárně s A/m — zatímco model bez poruch zůstává bitově přesně nezávislý na čase a zlaté hodnoty dvou těles/J2/zonálních členů zůstávají nedotčeny. Kuželová umbra/penumbra (hladké ν ∈ [0 1]), atmosférický odpor a externí křížová validace s GMAT/Orekit zůstávají jako navazující práce. - Třetí těleso Slunce/Měsíc řízené epochou zapojené do časově proměnné pravé strany propagátoru (
propagator::ForceModel::third_body/accel_at). Porucha třetím tělesem už není samostatný člen síly — Cowellův propagátor ji nyní integruje jako skutečně časově proměnnou sílu: každé vyhodnocení pravé strany vzorkuje polohy Slunce/Měsíceephemv postoupivší epošeepoch_jd_tt + t/86400(s využitímprecession::julian_centuries_ttpro převod den↔století), takže rušitelé se během integrace pohybují po svých drahách a nezůstávají zmrazeni na začátku. Skládatelné s libovolným gravitačním modelem (ForceModel::with_zonals_j2_j6().third_body(true, true, epoch)). Ověřeno samostatně: člen Slunce na pravé straně je bitově shodný sthird_body_accelvyhodnoceným v poloze z efemerid pro daný okamžik přit = 0it = 1 day(což přesně dokládá zapojení 86400 s ↔ 1 den ↔ 1/36525 století), rušitel postoupí o ~2,6·10⁹ m/den mezi vzorky (není zmrazen), okamžité slapové velikosti na LEO zasahují učebnicová pásma ~5·10⁻⁷ m/s² (Slunce) a ~1,1·10⁻⁶ m/s² (Měsíc, ≈ 2× Slunce), každé těleso měřitelně poruší celodenní trajektorii a zůstává přitom omezené a stejný počáteční stav propagovaný v epochách vzdálených čtvrt roku dává jinou trajektorii (slapová osa se otočí o 90°) — zatímco model bez obou těles je bitově přesně nezávislý na čase a zlaté hodnoty dvou těles/J2/zonálních členů zůstávají nedotčeny. Přesnost efemerid na úrovni DE a externí křížová validace s GMAT/Orekit zůstávají jako navazující práce. - Efemeridy Měsíce s nízkou přesností (
ephem::moon_position), které doplňují dvojici třetích těles Slunce/Měsíc. Přidává řadu lunární polohy s nízkou přesností podle Montenbrucka & Gilla (§3.3.2) vedle modelu Slunce, takže obecná funkceforces::third_body_accelmůže být poháněna kterýmkoli svítidlem bez externího jádra DE/SPK. Ověřeno samostatně proti ručně odvozeným lunárním podpisům: geocentrická vzdálenost zůstává uvnitř skutečné obálky perigea/apogea (~356 500–406 700 km) po celý měsíc a její měsíční průměr obnoví hlavní poloosu ~384 400 km; ekliptikální šířka nikdy nepřekročí sklon lunární dráhy ~5,3° (ověřeno promítnutím na pól ekliptiky v rovníkových souřadnicích, což ověřuje řadu šířky a rotaci sklonu ekliptiky společně); směr Měsíce se po jednom siderickém měsíci (27,3217 d) vrátí do 1° a jeho denní pohyb zůstává ve fyzikálním pásmu 12–15°/den; a lunární porucha třetím tělesem na družici LEO má učebnicovou velikost ~1,1·10⁻⁶ m/s² (≈ dvojnásobek Slunce). Přesnost polohy na úrovni DE, atmosférický odpor a SRP zůstávají jako navazující práce. - Gravitace třetího tělesa (Slunce) s vestavěnými efemeridami s nízkou přesností (
forces::third_body_accel,ephem::sun_position). Přidává do modelu sil poruchu třetím tělesem:a = GM₃·((s−r)/|s−r|³ − s/|s|³)(přímé přitahování minus nepřímý člen, který geocentrická soustava musí odečíst), přičemž polohu Slunce dodává nový modulephems analytickou řadou s nízkou přesností podle Montenbrucka & Gilla — pro běh s nízkou věrností není potřeba externí jádro DE/SPK. Ověřeno samostatně: zrychlení odpovídá přesnému gradientu vlastního rušivého potenciálu (third_body_potential), porucha v geocentru zaniká a má učebnicovou velikost ~5·10⁻⁷ m/s² na družici LEO a efemeridy Slunce zasahují ručně odvozené kotvy J2000 — vzdálenost v přísluní ≈ 1,471·10¹¹ m, deklinace ≈ −23° poblíž prosincového slunovratu, zdánlivý pohyb ≈ 1°/den (≈ 90° za čtvrt roku) a vzdálenost, která za celý rok zůstává uvnitř obálky oběžné dráhy Země 0,983–1,017 AU. Dodává část pro třetí těleso z kroku modelu sil v milníku numerického propagátoru (Měsíc je dodán v souvisejícím záznamu výše); přesnost polohy na úrovni DE, atmosférický odpor a SRP zůstávají jako navazující práce. - Model sil se zonálními harmonickými J2–J6 (
forces::zonal_accel/zonal_potential). Rozšiřuje model sil Cowellova propagátoru za J2 na celé zonální pole Země do stupně 6 (standardní publikované nenormalizovanéJ2..J6z EGM-96), zapojené do propagátoru jakoForceModel::with_zonals_j2_j6(). Zrychlení je přesný analytický gradient zonálního rušivého potenciáluR(r) = −(μ/r)·Σ Jₙ(Re/r)ⁿPₙ(z/r)(Legendreovy polynomy vzestupnou rekurencí), ověřený třemi nezávislými způsoby: redukuje se naj2_accelověřené 666 vektory s přesností stroje, je-li omezeno na[J2]; odpovídá numerickému gradientu vlastního potenciálu přes celé pole J2..J6 (zlatý standard kontroly konzervativního pole); a liché členyJ3oproti sudýmJ2/J4..J6vykazují svou charakteristickou (anti)symetrii sever–jih přiz → −z— asymetrii tvaru hrušky. Propagovaná dráha J2..J6 zachovává celkovou energii (kinetická + centrální + zonální potenciál) na ~1e-8 za den a poruší dráhu jen s J2 o malou nenulovou hodnotu. Tím je dodán krok 2 („zonální harmonické J2–J6“) milníku numerického propagátoru; pole tesserální EGM vysokého stupně, odpor, SRP, třetí těleso a externí křížová validace s GMAT/Orekit zůstávají jako navazující práce. - Numerický (Cowellův) propagátor oběžné dráhy (
src/propagator.rs). První neanalytický propagátor v Kshana (zbytek zásobníku drah je analytický SGP4/SDP4): zapojuje model sil dvou těles + J2 (src/forces.rs) do adaptivního ovladače RK4 s dvojnásobením kroku (src/integrator.rs) jakof(t,[r;v]) = [v; a(r)]s přepínačemForceModel. Ověřeno proti analytické pravdě, která je silnější než numerický křížový nástroj: neporušená dráha reprodukuje přesné řešení Keplera v univerzálních proměnných pod metr na 24hodinové dráze LEO (přísnější brána než „oproti numerické referenci < 10 m“, jak milník formuluje), měrná energie a moment hybnosti se zachovávají na ~1e-9 relativně a nodální regrese J2 reprodukuje uzavřenéj2_secular_ratespodle teorie prvního řádu (do 2 %, zbytek O(J2²)). Přidává takésolve_kepler_checked, Newtonův řešič Keplerovy rovnice, který vracíErrmísto tiše chybné odpovědi, když nezkonverguje v omezeném rozpočtu iterací (případe = 0.999poblíž perigea). Upřímný rozsah: model sil je jen dvě tělesa + J2 — tesserální pole EGM vysokého stupně (200×200 + načítač), odpor (NRLMSISE-00), SRP, síly třetího tělesa a externí křížová validace s GMAT/Orekit zůstávají jako navazující práce. - 60minutové porovnávání gravitačních map bez GPS na < 500 m (
run_gps_denied_gravity_nav). Prohlubuje vrstvu alt-PNT k validačnímu cíli ESA NAVISP Quantum Wayfarer: vozidlo letí po dráze ~700 km při celohodinovém výpadku GNSS — jeho inerciální řešení se rozjíždí na ≈ 70 km — a gravimetr se studenými atomy spolu s hierarchickým hrubo-jemným částicovým/mřížkovým porovnávačem obnoví konstantní drift INS na ≈ 145 m (< 500 m), tedy > 480× snížení. Skutečný práh bílého šumu gravimetru se vkládá jako deterministická sekvence ze seedu, takže porovnávač nikdy nedostane pravdu bez šumu, a přesto je běh přesně reprodukovatelný (ověřeno jako bitově shodný a stabilní na několik metrů napříč realizacemi šumu). Test na úrovni regrese ukazuje, že zjemnění je nezbytné — jedna hrubá mřížka uvízne na ~2 km, teprve třístupňové zjemnění prolomí bariéru 500 m. Nový commitnutý scénářscenarios/gps-denied-gravity-nav.toml. Řádekdocs/CAPABILITY.mdzůstává upřímně částečný (stále není přibalená mapa EGM2008) s důkazy aktualizovanými na výsledek 60 min < 500 m. Upřímný rozsah beze změny: nízkostupňové sférické harmonické pole + syntetické mascony; Monte Carlo přes realizace chyby reprezentace mapy je navazující práce. - Registr nadsazených tvrzení + ochrana proti regresi (
docs/CLAIMS-VS-REALITY.md,tests/no_overclaims.rs). Uzavírá cestu poctivosti/odstraňování nadsazení: čtrnáct nadsazených tvrzení, která dřívější audit katalogizoval (OC-0…OC-13), je nyní všech GREEN — silná tvrzení (OC-0spřažený Kalman hodin + polohy,OC-2rušení J/S→C/N₀→ztráta vazby,OC-7fyzika CAI Mach–Zehnder,OC-8ARAIM HPL/VPL) jsou nahrazena dodanými, testovanými schopnostmi místo změkčeného znění a zbývající řádky jsou zbaveny nadsazení tak, aby odpovídaly kódu. Nový test CI prochází živé veřejné povrchy (README,CAPABILITY,GLOSSARY,web/) a selže, pokud se jakákoli vyřazená holá nadsazená formulace znovu objeví bez výhrady, takže řádek GREEN se nemůže tiše zhoršit. „Integrita“ jako ukazatel kvality u každého běhu zůstává upřímně označena jako sebekonzistence filtru (ne letecká integrita); skutečné ARAIM HPL/VPL je uváděno zvlášť, aby se obojí nikdy nezaměňovalo. - Navigace porovnáváním gravitačních map (alt-PNT bez GPS). Nový
src/gravimeter.rspřidává vrstvu schopností alt-PNT, kterou vyžadují studie porovnávání gravitačních map ESA NAVISP Quantum Wayfarer / QT-CCI: model měření gravimetru se studenými atomy, jehož práh bílého šumu je odvozen z ASD akcelerometru CAI (σ = ASD/√τ); nízkostupňové plně normalizované sférické harmonické pole gravitačních anomálií (ověřené proti uzavřeným Legendreovým funkcímP̄₁₁=√3·cosφ,P̄₂₀=(√5/2)(3sin²φ−1),P̄₂₂=(√15/2)cos²φa ručně odvozené jednočlenné anomálii 1,897 mGal) plus syntetické mascony pro vysokostupňové místní rysy; a částicový filtr pro porovnávání gravitačních map (skládámapmatch+particle_filter), který obnoví dráhu bez GPS z posloupnosti anomálií, jimiž letí. Commitnutý benchmark NAVISP (scenarios/gravity-map-nav.toml) snižuje volný inerciální drift ~73 km na několik km. Upřímný rozsah: Kshana nepřibaluje úplnou sadu koeficientů EGM2008 2190° — pole je nízkostupňové + mascony, nikoli skutečná mapa s vysokým rozlišením; načítač EGM/EIGEN, magnetická mapa, SLAM podporovaný terénem a zapojeníkind=do enginu scénářů s SVG grafem driftu zůstávají jako navazující práce.docs/CAPABILITY.md„Gravity-map / alt-PNT navigation“ → částečné. - Modelování manévrů a základ návrhu trajektorií. Nový
src/maneuver.rspřidává první vrstvu návrhu trajektorií nad SGP4: impulzní uzly ΔV, které aplikují nespojitost rychlosti a posouvají kovarianci 6×6 dopředu (deterministický zážeh ⇒ jednotková matice přechodu stavu; kovariance chyby provedení se otáčí ze soustavy zážehu — ECI nebo LVLH — do bloku rychlosti), integraci konečného zážehu (konstantní tah po oblouku zážehu s hmotností jako stavem), jejíž dosažené ΔV se kontroluje proti uzavřené Ciolkovského raketové rovnici s přesností lepší než 0,01 %, Lambertův řešič Izzo-2015 pro jednu otáčku (r1,r2, doba letu ⇒v1,v2), přesný Keplerův propagátor v univerzálních proměnných (pravda pro dvě tělesa) a průchod porkchop, který mapuje mřížku epocha startu × epocha příletu na odletové C3 a příletové V∞ a vydává je jako 2D pole JSON pro vykreslení vrstevnic v prohlížeči. Validace je samostatná a silnější než výstup z tutoriálu: každý výstup Lambertova řešiče se vrací oklikou přes Keplerův propagátor (musí dopadnout zpět nar2) a minimum porkchopu se kontroluje proti analytické dolní mezi C3 Hohmannova přechodu pro dvě koplanární kruhové dráhy. Kshana to staví jako vrstvu simulace výkonu nad GMAT/Orekit, nikoli jako jejich náhradu (větve s více otáčkami a skutečné planetární efemeridy zůstávají mimo rozsah). Deset testů. - Plný 17stavový těsně vázaný UKF GNSS/INS s dead-reckoningem kvantového CAI. Nový
src/fusion/tightly_coupled17.rsnese úplný stav inerciální navigace, který těsně vázaný filtr odhaduje —[position, velocity, attitude-error, accelerometer bias, gyro bias, clock bias, clock drift](17 stavů) — propagovaný strapdown mechanizací poháněnou měrnou silou a úhlovou rychlostí, s rotací tělesa→inerciální soustavaC ≈ I + [ψ×]pro malé úhly, takže chyba orientace se vazbou promítá do horizontálního zrychlení (standardní naklopená vazba INS). Při výpadku GNSS jede jen na IMU; procesní šum náhodné procházky rychlosti je odvozenéq_vaakcelerometru s interferometrem se studenými atomy (crate::inertial::quantum_imu), takže drift při dead-reckoningu je omezený kvantovým senzorem — 120sekundový výpadek zůstane omezen na několik set metrů oproti kilometrům, jichž by dosáhlo volné INS navigační třídy. Aktualizace pseudovzdálenosti/rychlosti změny vzdálenosti běží přes sdílený unscented filtr (s α = 1 pro dobře podmíněné váhy při této velikosti stavu). Pět testů: identita modelu měření, integrace konstantní rychlosti s dokonalou IMU, podpora GNSS, odhad biasu akcelerometru a benchmark 120s výpadku omezeného CAI.
0.11.0 - 2026-06-05#
Změněno#
- Poctivé zarámování kvantového určování polohy. Hlavní označení je nyní „simulátor odolnosti PNT s modely výkonu kvantových senzorů“ důsledně v hesle README, citačním řádku,
CITATION.cff(název + abstrakt) a grafice banneru — místo volnější marketingové formulace „hybridní kvantový/klasický simulátor PNT“. Sekce README Co to je / není získává explicitní prohlášení o rozsahu „Zatím to není“ (není to fyzikální engine atomové interferometrie z prvních principů, není to přijímač GNSS/řešič PVT, není to nástroj pro návrh misí) a nový nadřazenýROADMAP.mdzařazuje vrstvu kvantové fyziky jako položku P2 (fáze CAI Mach–Zehnder, projekční šum, tenzor vibrací), aby čtenáři věděli, že fyzika z prvních principů je vymezená a připravovaná, nikoli opuštěná. Beze změny chování ani API.
Přidáno#
- Obchodní studie návrhu konstelace: průchod návrhy Walker s Paretovou frontou, JSON s dobou opětovného přeletu a submetrové ověření vzorce Walker.
src/walker.rszískáváwalker_design_sweep, který spouští mřížkuplanes × sats_per_plane(např. studii 3×3) při pevném sklonu a pro každý návrh vyčísluje podíl pokrytí, nejhorší PDOP a maximální/střední mezeru opětovného přeletu;pareto_frontoznačuje nedominované návrhy (méně družic, větší pokrytí, nižší PDOP, kratší opětovný přelet) aWalkerDesignReport::to_jsonserializuje buňky a Paretovu frontu — včetně polí s dobou opětovného přeletu — do JSON. Nové ověření připíná generátor ke vzorci Walkeri:T/P/F: družice na stejné pozici v sousedních rovinách se zobrazují jedna na druhou přesnou rotacíR_z(2π/P)s odchylkou pod 1 km po celých 24 h propagace SGP4 (krátkoperiodické „dýchání“ J2 je souhlasné a ruší se) a pozice v rovině jsou potvrzeny jako rozmístěné2π/Sve střední hodnotě. Vychází z commitnutého skutečného snímku Celestrakgps-opsz 2021-07-28 (scenarios/orbit-sgp4-gps.toml, využívaného testy pokrytí scénářů a zpětného průchodu SP3). - Pokročilý přenos času a frekvence: TWSTFT, společný pohled GNSS, PPP, optický, proložení mocninného PSD podle IEEE-1139 a ensemble hodin. Nový
src/timetransfer_adv.rsstaví operační metody přenosu na dodávaných uzavřených tvarech Sagnac/společný pohled a nástrojích stability Allanovy odchylky.twstft_sagnacdává korekci Sagnac pro oboustranný družicový přenos času a frekvence (TWSTFT) jako součet smyčky o třech skocích, přesně rovný uzavřenému tvaru BIPMΔt = 2·A·ω_E/c²(křížově ověřeno nezávislýmtwstft_sagnac_bipm);run_twstftvydává jednodenní řaduT_A − T_Ba její TDEV.gnss_common_view_seriesjednoduše diferencuje dvě syntetické pozemní stanice, takže se hodiny družice zruší.iono_free_combination+ppp_receiver_clockjsou bezionosférická kombinace PPP a řešení hodin přijímače proti (syntetické) pravdě třídy SP3, přičemž se ionosféra prvního řádu ruší přesně.rytov_variance,fried_parameteralognormal_fadings jednotkovou střední hodnotou modelují scintilaci způsobenou turbulencí na optické spojnici ve volném prostoru.fit_power_law_psdje úplné proložení křivky Allanova rozptylu metodou nejmenších čtverců s pěti koeficientyh_αpodle IEEE-1139 (všech pět kanonických šumových procesů najednou) s hlášením dominantního procesu pro každou dekádu τ.ensemble_timescaletvoří papírovou časovou stupnici váženou inverzním rozptylem, jejíž Allanova odchylka klesá striktně pod nejlepší přispívající hodiny. 31 unit testů; validačními cíli jsou uzavřené tvary a syntetická pravda — skutečný import BIPM Circular-T / IGS SP3 teprve zbývá. - Mapy ionosféry IONEX: parser souborů, časová interpolace a mapování šikmé obliquity.
src/ionex.rszískáváparse_ionex, který čte formát souboru IONEX (definice mřížky v hlavičce + blokySTART/END OF TEC MAP) do posloupnostiIonexMap— normalizuje pořadí šířek v souboru od severu k jihu naTecGrids kladným krokem a škáluje hodnoty podle10^EXPONENT.interpolate_tec_in_timeprolne dvě po sobě jdoucí mapy do dotazované epochy aobliquity_factor/slant_tecmapují vertikální TEC na šikmý paprsek pomocí činitele jednovrstvé tenké slupkyM(z) = 1/cos z′(sin z′ = (Rₑ/(Rₑ+H))·sin z). Spolu s dodávaným modelem mřížky z toho vznikne z naměřené globální mapy ionosféry IGS použitelné šikmé zpoždění. - Návrh konstelace: dimenzování pokrytí „ulicemi“ (streets-of-coverage) + srovnání více konstelací.
src/walker.rszískávámin_satellites_streets_of_coverage, idealizovaný řešič minimálního počtu družic metodou streets-of-coverage — z dodávaného poloúhlu pokrytíλa poloviční šířky ulicecdimenzuje téměř polární konstelaci pro nepřetržité jednonásobné globální pokrytí jakop = ⌈π/(2c)⌉rovin (např. 4družicová rovina ve výšce GPS potřebuje 2 roviny, 8 družic) a hlásíNone, když jsou družice příliš řídké na vytvoření souvislé ulice.compare_constellationsje nástroj pro srovnání více konstelací: ohodnotí každý pojmenovaný návrh Walker na téže stanici/okně přespdop_sweepa vrátí jejich pokrytí / PDOP / velikost vedle sebe. Upřímný rozsah: korekce Rider přesná na švu na hranici protiběžných rovin a 3D glóbus pokrytí zůstávají jako navazující práce. - Vícevrstvá detekce spoofingu: paritní detektor konzistence RAIM + fúze vrstev.
src/spoof_monitors.rszískává třetí a poslední detekční vrstvu a fúzní stupeň:parity_raim_testproloží metodou nejmenších čtverců řešení polohy/hodin redundantní sadou pseudovzdáleností a otestuje zbylý vážený součet čtverců reziduí proti prahu χ²(m−4)— označí zkreslenou podmnožinu družic a souhlasné zkreslení (pohlcené hodinami přijímače) správně ponechá pro RAIM neviditelné, nezakryté.fuse_spoof_layerskombinuje vrstvy parity, AGC a SQM do jednoho váženého rozhodnutí, které zaznamená, které vrstvy zareagovaly. Monte Carlo charakterizuje detektor: empirické P_fa ≈ 0,068 proti návrhovému bodu 0,05 a nezachycená událost klesá z 0,885 při zkreslení spoofingu 2σ na 0,16 při 8σ. Upřímný rozsah: křížová validace proti konkrétním zveřejněným testovacím vektorům spoofingu (Spirent / ION GNSS+) vyžaduje tyto externí datové sady a zůstává jako navazující práce. - Validační ensemble Kalmanova filtru spřaženého vs. nespřaženého. Monte Carlo o 100 pokusech v
src/fusion/coupled.rsvyčísluje hodnotu přenášení vzájemné kovariance poloha↔hodiny: věrný vložený nespřažený základ (ověřený bitově přesně proti dodávanémuCoupledPntFilter) zpracovává stejná data s vynulovanými křížovými bloky a po téměř degenerovaných pseudovzdálenostech plus opravě jen hodin spřažený filtr obnoví polohu s 2,97 m RMS oproti 48,8 m u nespřaženého filtru a vyhraje 97 ze 100 pokusů — oprava hodin zpřesní polohu jen skrze korelaci, kterou nespřažený balík zahazuje. Tím je dokončena sada validace správnosti Kalmanova filtru (Josephův tvar, bezpečnost PSD, konzistence NEES/NIS a nyní ensemble spřaženého filtru). - Řetězec určování oběžné dráhy (dávkový + sekvenční). Nový
src/orbit_determination.rsobnovuje oběžný stav družice[r, v]ze sledování vzdálenosti pozemními stanicemi a skládá tři dodávané části: model sil dvou těles + J2 (src/forces.rs) a integrátor RK4 (src/integrator.rs) propagují kandidátní stav po oblouku, model měření vzdálenosti předpovídá vzdálenost od každé stanice a dávkový korektor Gauss–Newton (src/batch_ls.rs) žene kandidáta na nejlépe proložený stav (determine_orbit_batch). Stejná dynamika a model vzdálenosti také pohánějí sekvenční rekurzivní určování na dodávaném unscented filtru (determine_orbit_sequential). Ověřují jej čtyři testy: předpověď vzdálenosti po oblouku; dávkové obnovení na submetr / mm·s⁻¹ z bezšumových vzdáleností; dávkové obnovení na ~2 m s rezidui po proložení na šumovém prahu 5 m (podpis konzistentního proložení metodou nejmenších čtverců); a sekvenční obnovení na desítky metrů. Upřímný rozsah: měření rychlosti změny vzdálenosti/Doppler a úhlů, analytická matice přechodu stavu J2 a maskování viditelnosti stanic zůstávají jako navazující práce. - Navigátor UKF GNSS/INS těsně vázaný. Nový
src/fusion/tightly_coupled.rszapojuje dodávané jádro unscented Kalmanova filtru (src/fusion/ukf.rs) do funkčního těsně vázaného navigátoru nad osmistavovým[px,py,pz,vx,vy,vz,b,d](poloha/rychlost v ECEF plus bias a drift hodin přijímače v jednotkách vzdálenosti). Přijímá surová měření družic —pseudorange(ρ = |p − sᵢ| + b) arange_rate/Doppler (ρ̇ = (p − sᵢ)·(v − ṡᵢ)/|p − sᵢ| + d) — místo předem vytvořené polohové opravy, takžeTightlyCoupled(spropagate/propagate_orbital/update_gnss) pokračuje v opravách i s méně než čtyřmi družicemi a výpadky GNSS přejede na své propagované dynamice. Pět testů jej ověřuje od začátku do konce, včetně akceptačních scénářů milníku: geometrie pseudovzdálenosti/Doppleru proti ručním hodnotám; bezšumová konvergence na submetr s pěti družicemi; případ se třemi družicemi konvergující z ~212 m na ~13 m, kde snímkové PVT nelze ani sestavit; 120sekundový výpadek při konstantní rychlosti v mezích 50 m; a — hlavní akceptace — 30minutový zakřivený průchod LEO (skutečná dráha dvou těles + J2) s 120sekundovým výpadkem GNSS, držený na 0,77 m RMS průchodu a 2,9 m v nejhorším případě během výpadku. Tento orbitální dojezd skládá dodávaný gravitační model sil (src/forces.rs) a integrátor RK4 (src/integrator.rs) do procesního modelu UKF (propagate_orbital), takže filtr sleduje zakřivení dráhy — což dojezd konstantní rychlostí nedokáže (samotné zakřivení činí na LEO ~58 km za 120 s). Upřímný rozsah: orbitální dojezd používá model sil dvou těles + J2 místo surové měrné síly z IMU (pro neřízenou orbitální platformu se shodují); přidání chybového stavu strapdown IMU a oprav ionosféry/troposféry ve smyčce zůstává jako navazující práce. - Model měření pro porovnávání map (navigace podle terénu / gravitace). Nový
src/mapmatch.rsdodává model měření, který mění dodávaný částicový filtr se sekvenčním vážením a převzorkováním (src/particle_filter.rs) na funkční navigátor bez GPS:field_likelihood(gaussovská věrohodnost shody pole) amap_match_likelihood, který vzorkuje libovolné georeferencované referenční pole — výšku terénu (TRN) nebo gravitační anomálii — v poloze částice a váží ji podle shody s naměřenou hodnotou vozidla. Polem je libovolný vzorkovačFn(lat, lon) -> value, takže se skládá s bilineární mřížkou vsrc/ionex.rsnebo s uzávěrem. Ukotvují ji dva testy — věrohodnost má vrchol (=1) při dokonalé shodě a klesá nae^(−½)při jedné sigmě a částicový filtr nad výraznou syntetickou plochou terénu obnoví skutečnou polohu na 0,1. Upřímný rozsah: skutečné referenční mapy (výška SRTM, gravitační anomálie EGM/EIGEN) a jejich načítače zůstávají jako navazující práce. - Integrita cislunárního PNT (lunární ARAIM). Nový
src/lunar.rsaplikuje pozemský engine ARAIM MHSS na navigační službu typu LunaNet s lunárními parametry (σ_URE ≈ 30 moproti 0,6 m u GPS,P_sat ≈ 1e-4): lunární konstanty, selenocentrická báze východ/sever/nahoru a pomocná funkce geometrie oblohy alunar_araim(HPL/VPL). Ukotvují jej tři testy — ortonormální selenocentrická báze, geometrie šikmé vzdálenosti a přesné lineární škálování ochranné úrovně sσ_URE(lunární 30 m dává 50× větší ochrannou úroveň než stejná geometrie při 0,6 m u GPS — kvantitativní důvod, proč je integrita lunárního PNT obtížná). Upřímný rozsah: přesné efemeridy LANS NRHO, rozpočet chyb signálu v prostoru a redukce soustav MCI↔MCMF zůstávají jako navazující práce. - Dvousložková (vysoce přesná) juliánská data. Nový
src/jd2.rspřidáváJd2, juliánské datum rozdělené na celédaya zlomkovéfracv[0,1)(konvence SOFA/hifitime), snew/from_parts/add_seconds/diff_seconds/total. Rozdíly blízkých epoch zůstávají přesné až na podlahuf64, kde JD s jednímf64ztrácí ~50 µs poblíž J2000. Ukotvují jej čtyři testy: zpětný průchod, normalizace zlomku, přesné obnovení mikrosekund (spolu s předvedeným selháním u jednohof64) a aditivní/vratná aritmetika sekund. - Zapisovač CCSDS OMM (Orbit Mean-Elements Message). Nový
src/omm.rsdoplňuje zapisovač efemeridoemo zprávu se středními prvky:OmmFile::from_tlemapuje střední prvky SGP4/TLE do jednotek OMM (střední pohyb v ot./den, úhly ve stupních, plusBSTAR) ato_omm_kvnserializuje standardizovaný tvar KVN podle CCSDS 502.0-B-2 — takže dráhu Kshana lze zpracovat libovolným nástrojem znalým OMM místo svébytného TLE. Dva testy ukotvují převod jednotek TLE→OMM (≈ 15,5 ot./den, sklon 51,6° atd.) a přítomnost požadovaných klíčových slov KVN. Upřímný rozsah: tvar KVN a mapování TLE jsou dodány zde; vykreslení v XML (ndm/omm) a zpětný průchod referenčním parserem zůstávají jako navazující práce. - Částicový filtr se sekvenčním vážením a převzorkováním. Nový
src/particle_filter.rspřidává nelineární, negaussovský odhadovač za navigací podporovanou mapou bez GPS (porovnávání podle terénu nebo gravitační mapy):predict(propaguje částice dynamikou + gaussovským procesním šumem),update(převáží podle věrohodnosti měření pro každou částici), systematickéresample, monitor degeneraceeffective_sample_sizea odhad váženým průměrem. Šest testů přesně ukotvuje deterministické jádro — ESS v rozsahu 1…N, systematické převzorkování volící indexy v poměru k váze, konvexní kombinace váženého průměru, gaussovská věrohodnost přitahující odhad k měření, chování převzorkování k rovnoměrnosti a determinismus predikce se seedem. Upřímný rozsah: engine je dodán zde; referenční mapy (výška SRTM, gravitační anomálie EGM) a model měření mapy zůstávají jako navazující práce (vzorkovač mřížky + bilineární vionexby stejně dobře posloužil gravitační/terénní mapě). - Mapy ionosféry TEC ve stylu IONEX. Nový
src/ionex.rspřidává naměřenou ionosféru jako alternativu k vysílanému modelu Klobuchar:TecGrid(pravidelná mřížka zem. šířka/délka vertikálního TEC, globální mapa ionosféry IGS) s bilineární interpolací v průsečném bodě (vtec_at, mimo mřížku omezeno) a zpožděním prvního řáduΔ = 40.3·TEC/f²(vtec_to_delay_m,delay_at). Ukotvují jej čtyři testy:1 TECU ≈ 0.162 mna L1 se škálováním1/f², interpolace přesná v uzlech, bilineární středy průměrující rohy a dotazy mimo mřížku omezené na okraj. Upřímný rozsah: mřížka a interpolace jsou dodány zde; parsování formátu souboru IONEX, časová interpolace mezi mapami a mapovací funkce šikmé dráhy zůstávají jako navazující práce. - Geometrické korekce přenosu času (Sagnac + společný pohled GNSS). Nový
src/timegeo.rspřidává dva deterministické efekty, které musí skutečné srovnání hodin zohlednit, a doplňuje stochastický oboustranný model vtimetransfer:sagnac_correction(Δt = (ω_E/c²)·(x₁y₂ − x₂y₁), zpoždění otáčející se Země — desítky ns pro kontinentální základny) acommon_view_offset, jednoduchý rozdíl společného pohledu GNSS, který přesně zruší chybu hodin družice a obnoví posun mezi stanicemi. Tři testy je ukotvují na přesných referencích: Sagnac ≈ 33 ns pro rovníkovou čtvrtotáčku, antisymetrie a nulové radiální/polární případy a přesné zrušení hodin družice. Upřímný rozsah: úplný rozpočet zpoždění transpondéru/hardwaru TWSTFT a řešení přenosu času PPP bezionosférické zůstávají jako navazující práce. - Model sil na oběžné dráze (dvě tělesa + J2). Nový
src/forces.rspřidává model zrychlení, který numerický propagátor integruje:two_body_accel(−μ·r/|r|³), poruchu zploštěníj2_accel(uzavřený tvar v ECI) agravity_accel, který je sčítá — spárujte jej ssrc/integrator.rsjakof(t,[r;v]) = [v; a(r)]. Zpřístupňuje také analytické J2 sekulární rychlosti (j2_secular_rates): nodální regresiΩ̇, rotaci apsidω̇a drift střední anomálieṀ. Šest testů ukotvuje fyziku na přesných referencích:μ/r²pro člen dvou těles, uzavřený tvar J2 na rovníku (~10⁻³ velikosti dvou těles), kritický sklon (63,4349°), který zmrazí perigeum (ω̇ = 0), nodální regresi ISS (Ω̇ ≈ −5°/day) a východní drift retrográdní slunečně synchronní dráhy. Upřímný rozsah: jen dvě tělesa + J2; J3–J6, odpor, SRP a třetí těleso zůstávají jako navazující práce. - Sdílitelné trvalé odkazy na scénáře. Nový
src/permalink.rspřidává kodek Base64 podle RFC 4648 bez závislostí (standardní abeceda+/s vyplněním a URL-bezpečná abeceda-_bez vyplnění) a obalyencode_scenario/decode_scenario, takže TOML z hřiště lze zakódovat do parametru dotazu?s=a sdílet jako URL. Zpřístupněno prohlížeči jako vazby wasmencode_permalink/decode_permalink. Čtyři testy je ukotvují na kanonických vektorech RFC 4648 ("foobar"→"Zm9vYmFy"atd.), URL-bezpečném zpětném průchodu scénáře (není třeba escapovat+///=), odmítnutí neplatných symbolů a zpětném průchodu všech 256 bajtů. Upřímný rozsah: kodek a vazby jsou dodány zde; UI tlačítka Share v hřišti, vícesériový graf Plotly/D3 a režim porovnání A/B zůstávají jako navazující práce. - Dávkové nejmenší čtverce Gauss–Newton (dávkový diferenciální korektor). Nový
src/batch_ls.rspřidává odhadovací jádro, na kterém spočívá dávkové určování oběžné dráhy (nebo jakékoli proložení parametrů):gauss_newtonlinearizuje uživatelem dodaný modelh(x)pomocí jakobiánu ze centrálních konečných diferencí, sestaví a řeší vážené normální rovnice(HᵀWH)·Δx = HᵀW·(z − h(x))(s využitím testované inverze matice) a iteruje do konvergence s váhami jednotlivých měření. Ukotvují jej čtyři testy: lineární proložení přímky dosahující přesného řešení váženými nejmenšími čtverci, nelineární proloženía·exp(b·t)obnovující skutečné parametry, 3D multilaterace vzdáleností, která z bezšumových vzdáleností obnoví známou polohu (varianta určování oběžné dráhy), a odmítnutí nedourčených/nesouhlasných vstupů. Upřímný rozsah: jde o obecný engine korektoru; model měření vzdálenosti/rychlosti změny vzdálenosti/azimutu-elevace specifický pro dráhy, analytická matice přechodu stavu J2 a validace na zveřejněném případu zůstávají jako navazující práce. - Monitory spoofingu na vrstvě RF (výkon AGC a SQM). Nový
src/spoof_monitors.rspřidává dva nezávislé detektory spoofingu v předním konci přijímače, které doplňují monitor časového spoofingu podporovaný hodinami vspoof: monitor výkonu AGC (combine_power_dbmnekoherentní součet výkonů +AgcMonitor), který označí nadbytečný přijatý výkon, jejž vysílač spoofingu přidá nad konfigurovatelnou rezervu v dB, a monitor kvality signálu (bpsk_autocorrtrojúhelníková autokorelace kódu +SqmMonitor), který označí nevyváženost korelátorů Early-minus-Late způsobenou vícecestným šířením/meaconingem/přehráním. Čtyři testy ukotvují přesné uzavřené tvary (3,01 dB pro zdvojnásobení výkonu, agregát10·log10(N), trojúhelníkovéR(τ)=1−|τ|a práh výstrahy Early/Late 10 %). Upřímný rozsah: úplný paritní detektor spoofingu s konzistencí RAIM, vícevrstvá fúze výstupů monitorů a validace proti zveřejněným vektorům spoofingu Spirent/ION GNSS+ zůstávají jako navazující práce. - Adaptivní numerický integrátor ODR. Nový
src/integrator.rspřidává první část numerického propagátoru (propagace drah v Kshana je jinak analytická SGP4/SDP4): obecný krok Runge–Kutta čtvrtého řádu (rk4_step) nad libovolnou soustavou prvního řáduy' = f(t, y)a adaptivní ovladač (integrate), který řídí lokální chybu dvojnásobením kroku (Richardsonova extrapolace) se standardním regulátorem kroku0.9·(tol/err)^(1/5)a logikou přijetí/odmítnutí. Šest testů jej ukotvuje na přesných řešeních: exponenciálay' = y → ena< 1e-9, snížení chyby ~16× při každém půlení kroku, které dokazuje konvergenci čtvrtého řádu, zachování energie/návratu harmonického oscilátoru po celou periodu a adaptivní ovladač splňující úzkou toleranci s proměnnými kroky. Upřímný rozsah: jde o jádro integrátoru a jeho řízení chyby; vložené tabulky Dormand–Prince RK5(4)/RKF7(8) a hierarchický model sil dráhy (dvě tělesa + J2–J6 + odpor + SRP + třetí těleso), které z něj činíNumericalPropagator, zůstávají jako navazující práce. - Unscented (sigma-bodový) Kalmanův filtr. Nový
src/fusion/ukf.rspřidává škálovaný unscented Kalmanův filtr (Julier & Uhlmann; Wan & van der Merwe) jako obecný odhadovač snstavy nad uživatelem dodanými procesními a měřicími funkcemi — odhadovač se sigma-body, který těsně vázaný navigátor GNSS/INS používá, když je model pseudovzdálenosti/Doppleru silně nelineární a jakobián EKF se zhoršuje. Zahrnuje podpůrnou hustou lineární algebru (Choleského rozklad pro rozptyl sigma-bodů, Gaussovu–Jordanovu inverzi pro kovarianci inovace) a aktualizaciP⁺ = P⁻ − K S Kᵀbez Josephova tvaru. Šest testů jej ověřuje, přičemž klíčové z nich využívají přesnou vlastnost, že pro lineární model unscented transformace reprodukuje Kalmanův filtr na numerickou přesnost (predikce, aktualizace i celý cyklus predikce+aktualizace shodné s ručně spuštěným lineárním KF, plus analytická kontrola bayesovského posteriorního rozdělení v 1D a identity Choleského rozkladu/inverze). Upřímný rozsah: jde o odhadovací engine; 17stavový těsně vázaný navigátor GNSS/INS, model měření pseudovzdálenosti/Doppleru a scénář validace výpadku zůstávají jako navazující práce. - Ochranné úrovně dvoukonstelačního ARAIM. Nový
araim_dual_raimrozšiřuje ARAIM s jednou poruchou (araim_raim) o režim poruchy celé konstelace podle EU ARAIM / DO-316: vedle hypotéz bez poruchy a poruchy jednotlivé družice přispívá každá konstelace (označená u každé družice) jednou hypotézou, která odstraní všechny její družice najednou, s apriorní pravděpodobnostíP_const(novéDualFaultPriors { p_sat, p_const }). Každá hypotéza přidává člen do téhož součtu integrity MHSS, takže VPL/HPL jsou nejmenší meze, jejichž celkovéP_HMIsplňuje rozpočet přes poruchy bez poruchy + jednotlivých SV + jednotlivých konstelací (rozdělení falešných výstrah podle Bonferroniho je přes všechny hypotézyN + C). PřiP_const = 0je výsledek bitově shodný saraim_raim; uživatel s jednou konstelací vracíNoneproti poruše vlastní konstelace (nelze ji vyloučit) — což je přesně důvod, proč na pokrytí dvěma konstelacemi záleží. Čtyři testy pokrývají ekvivalenci, rozšíření ochranné úrovně, nedostupnost s jednou konstelací a validaci vstupu, přičemž využívají stávající aparát podřešení při separaci řešení. - Precese IAU 2006 (úhly Fukushima–Williams a matice bias-precese). Nový
src/precession.rsimplementuje precesi IAU 2006 (P03; Capitaine, Wallace & Chapront 2003): čtyři úhly Fukushima–Williams(γ̄, φ̄, ψ̄, ε̄_A)jako polynomy v juliánských stoletích TT (fw_angles) a rotační matici bias-precese GCRS→střední soustava data z nich sestavenou konstrukcí SOFAiauFw2m(precession_matrix, s pomocnými funkcemigcrs_to_mod/mod_to_gcrs). Toto je první díl inerciální soustavy nad stávající redukcíframeszaloženou na GMST. Osm testů ověřuje proti uzavřeným kotvám — střední sklon ekliptiky J2000ε̄ = 84381.406″ = 23.4392794°, zveřejněné konstantní členy úhlů, akumulaci obecné preceseψ̄ ≈ 5039.998″za století, ortonormalitu matice adet = +1, téměř jednotkovou hodnotu (jen bias soustavy) v J2000 a čistý úhel rotace≈ 1.40°/století. Upřímný rozsah (ROADMAP.md): jen precese — nutace IAU 2000A o 678 členech, úplný řetězec TEME→GCRS a numerická křížová kontrola SOFA/ANISE µas/<10 m zůstávají jako navazující práce. - Fyzika akcelerometru s interferometrem se studenými atomy (CAI) z prvních principů.
src/inertial/quantum_imu.rsmodeluje třípulzní atomový interferometr Mach–Zehnder z prvních principů místo z datového listu: efektivní vlnový vektork_eff = 4π/λ, fáze interferometruΦ = k_eff·a·T², kvantový projekční (výstřelový) šumσ_Φ = 1/(C·√N), citlivost na zrychlení na jeden výstřel, pokles kontrastuC(t) = C₀·e^(−t/τ)a — to hlavní —CaiAccelerometer::q_va(), které odvozuje PSD bílého zrychlení, jež klasickéAccelModeljiž spotřebovává, z počtu atomů, doby dotazování a kontrastu. Model nyní pokrývá také vazbu vibrací — dominantní člen u skutečných zařízení: přenosovou funkci interferometru zrychlení→fáze|H(ω)| = (4/ω²)sin²(ωT/2)(accel_transfer_function), rozptyl fáze pro bílé PSDσ_Φ² = k_eff²·S_a·T³/3(vibration_phase_variance_white, s numerickou křížovou kontrolou pásmovým integrálemvibration_phase_variance_band), projekcibeam_axis_projectionhodnosti 1 podél svazku aCaiAccelerometer::vibration_phase_noise/vibration_limited_accel(to druhé se redukuje na mez√(S_a/(3T))nezávislou nak_eff). Jedenáct testů ručně ověřuje fyziku (Rb-87k_eff ≈ 1.61×10⁷,Φ(1 g) ≈ 1.58×10⁴ rad,σ_a ≈ 0.13 µg/výstřel mez výstřelového šumu oproti mezi vibrací ≈ 5,9 µg, zákony škálování1/T²,1/√NaT³). Upřímný rozsah vdocs/QUANTUM.md: pokrývá mez projekčního šumu a režim omezený vibracemi nad ní; šum fáze laseru, systematické vlivy Coriolisovy a světelného posuvu a validační scénáře PHARAO/CARIOQA zůstávají jako navazující práce. - Akcelerometr kvantového CAI zapojený do inerciálního scénáře. Akcelerometr v inerciálním scénáři s dead-reckoningem se nyní vyhodnotí na nový
ImuKind—Classical(stávající senzor s koeficienty z datového listu) neboQuantumCai, pokud nese volitelný blok[cai](CaiCfg: vlnová délka, rozestup pulzů, počet atomů, kontrast, doba cyklu a volitelnévibration_psdplatformy). PSD náhodné procházky rychlosti senzoruquantum_caiq_vaje odvozeno z fyziky interferometru — mez výstřelového šumu plus, je-li zadáno PSD vibrací, příspěvek omezený vibracemi v kvadratuře — místo dodaného koeficientu a původ běhu zaznamenává, že šum je odvozen z fyziky. Polecaijeskip_serializing_if = "Option::is_none", takže stávající scénáře je vynechávají a serializují se bajtově shodně (hash scénáře se nemění). Pět testů pokrývá odvození, kvadraturní součet vibrací, výběrClassical/QuantumCai, serializaci stabilní vůči hashi a běh od začátku do konce řízený CAI. - Optimalizátor návrhu konstelace a geometrie streets-of-coverage.
src/walker.rszískáváoptimize_walker_design, mřížkový optimalizátor bez gradientu, který prohledává návrhový prostor{planes × sats × inclination}a vrací nejlepší návrh Walker podle zvolenéhoDesignObjective—MinSatellitesForCoverage,MaxCoverageneboMinWorstPdop— nad již ověřeným průchodem PDOP (test potvrzuje, že vrací vítěze hrubou silou). K tomu analytické uzavřené tvary streets-of-coveragecoverage_half_angle_rad(λ = arccos(Re/r·cos ε) − ε) astreet_half_width_rad(cos c = cos λ / cos(π/s), Rider/Beste), ručně ověřené proti učebnicové geometrii a detekující mezeru nedostatečného obsazení. Úplný Riderův řešič minimálního počtu družic pro globální pokrytí, 3D glóbus v hřišti a externí křížová kontrola DOP zůstávají jako navazující práce. - Export přesných efemerid SP3 z CLI. Propagovaný scénář dráhy/konstelace lze nyní zapsat do souboru SP3-c:
kshana <orbit.toml> --export-sp3 out.sp3, neboexport_sp3 = trueve scénáři automaticky zapíše<scenario>.sp3(api::export_sp3/auto_export_sp3,OrbitClockScenario::to_sp3_string, volitelnéepoch). Test zpětného průchodu (tests/sp3_export_roundtrip.rs) propaguje skutečný snímek Celestrakgps-ops, exportuje jej, znovu zpracuje a potvrdí, že obnovené polohy v ECEF odpovídají pravdě SGP4 za 24 h s odchylkou < 0,5 m (hluboko v toleranci třídy TLE 10 m). README dokumentuje roli interoperability (RINEX → RTKLIB/gLAB, SP3 → produkty Ginan/přesných drah). - Spřažený Kalmanův filtr hodin+poloha (vzájemná kovariance bloků).
src/fusion/coupled.rsCoupledPntFilterje jediný vrstvený filtr[pos, vel, phase, freq](aktualizace v Josephově tvaru), jehož měření pseudovzdálenostiρ = g·pos + c·phase + noiseskutečně spřahuje bloky polohy a hodin — na rozdíl od starší fúzní sady se dvěma nezávislými dvoustavovými filtry, které drží vzájemnou kovarianci bloků přesně nulovou. Ověřeno: sdílená pseudovzdálenost činíP[pos,phase]nenulovým; dvě odlišné geometrie společně rozliší vložené posuny polohy+hodin, které jedna vzdálenost oddělit nedokáže; oprava jen hodin zpřesní polohu skrze vzájemnou kovarianci (přínos, který nespřažené filtry poskytnout nemohou); a Monte Carlo NEES je konzistentní s χ²(4). Jde o realizaci s 1 DOF (rozměrnost fúzní sady); rozšíření na 3D se 8 stavy a zapojení do spustitelné sady jsou vedena jako navazující práce. - Monitorování zdraví konzistence Kalmanova filtru (NIS/NEES). Aktualizace kovariance dvoustavového filtru hodin je nyní v Josephově stabilizovaném tvaru `P⁺ = (I−KH)P(I−KH)ᵀ
- KRKᵀ
, which stays positive-semidefinite under extreme Q/R ratios (Cholesky-checked in CI atR=1e-26 / Q≈1e-30). A newsrc/filter_health.rsruns a Monte-Carlo consistency assessment (Bar-Shalom §5.4): pooled **NIS** (normalised innovation², target 1) and **NEES** (normalised estimation error², target 2) against 95% χ² bands, surfaced as afilter_health { nis_mean, nis_chi2_lower_95, nis_chi2_upper_95, nees_mean, nees_chi2_lower_95, nees_chi2_upper_95, consistent }block in the clock result JSON and as a green/amber card in the playground. A Q/R-mismatch sweep test proves the monitor flips to inconsistent when the process noise is mistuned by ×0.1–×10. Adds a general χ² quantile (detection::chi2_inv_cdf`, Wilson–Hilferty, ověřeno proti tabulce).
- KRKᵀ
docs/PROVENANCE.md— jedna citovatelná tabulka původu. Sjednocuje každý parametr senzoru (hodiny, inerciální, přenos času), fyzikální/algoritmický model (dráha, časové soustavy, soustavy, iono/tropo, integrita, detekce, rušení, Allan) a validační datovou sadu (AIAA 2006-6753, Celestrakgps-ops) s jejím zveřejněným zdrojem — datovým listem, článkem, ICD nebo normou — a upřímným označením zralosti (kvalifikováno pro let / pozemní laboratoř / vesmírný cíl na pozemním hardwaru). Odkazováno z úvodu README a z tabulky dokumentace; doplňuje řetězceprovenancepro každý běh, které již putují ve výsledném JSON.- Typované API scénářů. Rozdělení nyní probíhá podle typovaného výčtu
ScenarioKindmísto porovnávání surového řetězcekind(ScenarioKind::classify+ vyčerpávající rozdělení), takže přidání balíčku je kontrolováno při kompilaci. Nové typované povrchy vedle nezměněnéhorun_tomlvracejícího řetězec:run_scenario(src) -> Result<RunOutput, KshanaError>se strukturovanou taxonomií chyb (InvalidInput/NonConvergence/Unsupported/IoError, každá se stabilnímkind_tag()); traitScenarioa rozšiřující bodExternalPack(balíčekjammingje jím zapojen jako vypracovaný příklad); a introspekcelist_scenario_kinds()(název, popis, povinná/volitelná pole pro každý druh). Vazby pro Python a WebAssembly získávajílist_kinds()aerror_kind(). Zdokumentováno vdocs/ARCHITECTURE.md. - Skutečná konstelace GPS + pokrytí provozní obálky.
scenarios/orbit-sgp4-gps.tomlnyní dodává skutečný snímek Celestrakgps-ops(2021-07-28, 30 družic) místo syntetických TLE Walker, sstrict_checksum = true, takže se načte, jen když je platný každý kontrolní součet TLE;scripts/fetch_tles.shdokumentuje reprodukovatelné obnovení a README uvádí zdroj otevřených dat. Novýtests/scenario_coverage.rsprověřuje každý balíček přes ≥5 variant obálky s tvrzením o konečném/omezeném výstupu, potvrzuje, že práh flicker-FM měřitelně zhoršuje dojezd hodin, je-li zapnut (nyní nastaven ve třech dodávaných scénářích), a potvrzuje, že fúzní filtr konverguje se skutečným nenulovým biasem akcelerometru (do 3× případu s nulovým biasem), čímž uzavírá mezeru v realismu „fúze funguje jen s nulovými biasy“.docs/VALIDATION.mdzískává tabulku provozní obálky. - Simulace GNSS v doméně měření (druh
gnss-sim). Dopředný model na úrovni pseudovzdálenosti: pro každou viditelnou družici syntetizujeρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipatha Doppler na L1, s jednofrekvenční ionosférou Klobuchar (IS-GPS-200 §20.3.3.5.2.5) a zenitovou troposférou Saastamoinen promítnutou mapovací funkcí Niell (1996) — zpřístupněno jako bloky TOML[iono]a[tropo]. Rezidua napájejí snímkové RAIM pro HPL/VPL v každé epoše a pole JSONgnss_measurements[]nese pseudovzdálenost, Doppler, C/N₀ a opravy iono/tropo každé SV. Běh bez šumu reprodukuje geometrii + opravy na submilimetr (test CI). Novésrc/gnss_sim.rsascenarios/gnss-sim-raim.toml. - Stochastický detektor časového spoofingu (druh
spoof). Balíček spoofingu nyní spouští skutečný detektor místo deterministického porovnání rampy s mezí: čtyři tvary vložení (linear_ramp,step_jump,meaconing,replay), oboustranný test energie χ²₁ / Neyman–Pearson na statistice monitoru podporovaného hodinami s prahem nastaveným z cílového rozpočtu falešných poplachůtarget_pfaa pravděpodobnost nezachycené událostiP_mduváděná v uzavřeném tvaru i Monte Carlem (mc_runspokusů na hypotézu — obojí se shoduje na několik ×1/√N). Ukazatel kvality Security je nyní1 − P_mdpři provozně škodlivé (specifikační) velikosti. Novýsrc/detection.rs(gaussovské ocasní funkce, test NP/energie, Monte Carlo P_fa/P_md) ascenarios/spoof-meaconing.toml. Zpětně kompatibilní: holé[attack] rate_ns_per_sse stále přijímá jako lineární rampa.
Změněno#
- Definice ukazatele kvality Security (druh
spoof): od analytické meze detekovatelnosti1 − min_detectable/thresholdke1 − P_mdstochastického detektoru. Polesecuritybalíčku hodin zůstává rychlejším analytickým zástupcem.
Přidáno (pokračování)#
- Model rušení RF (druh
jamming). Model interference na bázi rozpočtu spoje, který mění výkon a geometrii rušičky na ztrátu vazby u každé družice: poměr rušička–signál z útlumu volným prostorem a zisku přijímací antény pro každý směr, efektivní C/N₀ podle standardní rovnice protirušení (zisk zpracování rozprostřením × činitel spektrální separaceQ; Kaplan & Hegarty §9,4) a konfigurovatelný práh sledování, vyhodnocený přes konstelaci Walker jako ukazatel kvalityavailability_under_jamming. Novésrc/jamming.rsascenarios/jamming-demo.toml. Upřímný rozsah (bez vícecestného šíření, stínění terénem, AGC a adaptivního nulování) je zdokumentován vdocs/CAPABILITY.md/docs/VALIDATION.md. - Obecný N-rozměrný průchod parametrů přes libovolný druh scénáře (
sweep-nd). Předchozí N-rozměrný průchod byl jen pro balíček hodin.sweep-ndmění tečkované klíče TOML scénáře[base]přes kartézský součin jeho os, znovu rozešle každý uzel mřížky běžnou cestou běhu a čte z výsledku jednu či více metrik tečkovanou cestou JSON — takže funguje pro každý balíček (inerciální, gnss-ins, integrita, spoof, …) bez vazby na typ Rust každého balíčku. Uzly mřížky se na nativních cílech vyhodnocují paralelně přes vlákna OS (bez přidané závislosti); wasm se vrací k sekvenčnímu zpracování. Deterministické a po řádcích bez ohledu na počet vláken. Nový příkladscenarios/sweep-nd-inertial.toml. - Deterministický model chyb IMU konfigurovatelný v TOML v balíčku
gnss-ins. Třídosý strapdown řetězec chyb (škálovací faktor, nesouosost, g-citlivost, kvantizace, rampa rychlosti; IEEE Std 952-1997 §A.2, Groves 2013 §4,3) je nyní dosažitelný pro každý senzor ze souboru scénáře přes volitelný blok[imu_*.error_model], vrstvený nad konstantní biasy po zapnutí. Vynechání bloku ponechá každý senzor čistě zdrojem konstantního biasu, takže stávající běhygnss-insjsou beze změny. Tím je dříve jen knihovní model chyb zapojen do spustitelného balíčku a ukazatele kvality.
0.10.0 - 2026-06-04#
Změněno#
- Validace na skutečných datech. Parser navigace RINEX pro více GNSS, propagátor GLONASS RK4 a čtečka SP3 jsou nyní prověřeny proti skutečným souborům IGS/DLR (skutečný smíšený vysílaný navigační soubor RINEX 3 a produkt drah IGS SP3-c), nejen proti vlastnoručně vytvořeným vzorkům — s tvrzením o neprázdných množinách družic a konečných, fyzikálně velkých polohách v ECEF. Fixtures jsou jen pro testy (vyloučené z publikovaného crate); viz
tests/fixtures/igs/NOTICE. - RAIM na geometrii skutečných referenčních drah. Jádra snímkového RAIM, separace řešení (MHSS) a ochranných úrovní ARAIM jsou nyní ověřena proti skutečné geometrii přesných drah IGS (SP3), nejen proti syntetickým konstelacím: geometrie přímé viditelnosti je sestavena z první epochy SP3 na skutečné pozemní stanici a testy tvrdí, že ochranné úrovně jsou na úrovni metrů a dostupné pro APV-I, že zkreslení pseudovzdálenosti 60 m spustí monitor χ², že separace řešení identifikuje družici s poruchou a že úrovně ARAIM splňují přidělené
P_HMI. Uzavírá mezeru ověření jen na syntetické geometrii (shoda na straně přijímače s gLAB přes celý oblouk RINEX zůstává položkou plánu — vyžaduje řešení pseudovzdálenosti).
Přidáno#
- Intervaly spolehlivosti pro každý uzel N-rozměrného průchodu parametrů (
sweep::nd_sweep_ensemble). Každý uzel mřížky N-rozměrného průchodu s kartézským součinem lze nyní vyhodnotit jako ensemble Monte Carlo ze seedů a uvádět průměr metriky, percentily a percentilový bootstrap 95% CI pro každý uzel (u obou hodin) — statisticky poctivý průchod místo jednoho tahu na uzel. Využívá aparát ensemble/bootstrap (metric_stat); deterministické;runs = 1se přesně redukuje na jednoseedovénd_sweep. (Zobecnění průchodu na všechny balíčky, spletené s refaktorem typovaného Scenario, a paralelní provádění zbývají.) - Křížová validace řetězce šumu IMU proti NaveGo (
tests/navego_imu_crossval.rs). Externí křížová kontrola proti NaveGo (open-source sadě nástrojů INS/GNSS od R. Gonzaleze): reprodukuje syntetický zpětný průchodnavego_example_allan.mna jeho zveřejněném referenčním profilu Microstrain 3DM-GX3-35 a potvrzuje, že náš odhadovač překrývající se ADEV obnovuje koeficienty náhodné procházky rychlosti a úhlu podle NaveGo (ADEV(1 s) = σ·√dt) s odchylkou pod 5 % s očekávaným sklonem bílého šumu −1/2. (Zaznamenaný záznam STIM300.mato 40 MB se nenačítá — brání tomu binární formát.) - Těsně vázaná (pseudovzdálenostní) aktualizace GNSS/INS.
GnssInsEkf::update_tightly_coupled(a obalClosedLoopInsGnss::fuse_tightly_coupled) implementují dříve jen nahrazené měření v doméně vzdálenosti: inovací je předpovězená vzdálenost od polohy INS ke každé družici oproti naměřené pseudovzdálenosti, s jakobiánem přímé viditelnosti na chybu polohy. Protože každá družice je skalární měření, filtr pokračuje v opravách i s méně než čtyřmi družicemi — tam, kde volně vázané řešení PVT neexistuje. Pět testů pokrývá nulování se čtyřmi družicemi, opravu se dvěma družicemi (PVT není možné), pozorovatelnost jedné družice podél přímky viditelnosti a validaci vstupu. Jen pseudovzdálenost; fáze nosné a explicitní stav hodin přijímače zůstávají v plánu. Nepoužívaná funkce cargotight_coupling(která zahrazovala starou chybovou náhradu) je odstraněna. - Balíček scénářů GNSS/INS volně vázaný (
kind = "gnss-ins",src/fusion/pack.rs). Zapojuje třídosý strapdown navigátor a 15stavový EKF chybového stavu (closed_loop/gnss_ins_ekf) do spustitelného scénáře s ukazatelem kvality — EKF disciplinuje mechanizaci proti zašuměným fixům GNSS, dokud je pokrytí k dispozici, a pak přejede výpadek, čímž nahrazuje reset na pravdu starého skalárního balíčku s 1 DOF skutečnou fúzí. Výsledek uvádí řadu fúzované horizontální chyby, vyhodnocený ukazatel kvality polohy (dostupnost / RMS při výpadku / holdover) a RMS volné INS s otevřenou smyčkou pro srovnání; dvojice kvantové/klasické IMU se liší jen skutečným biasem. Spouští se z vstupního bodu CLI/Python/wasm s příklademscenarios/gnss-ins.toml. Poctivé zarámování: jen volně vázané, jedna deterministická trajektorie a fúzovaná chyba při výpadku je omezena podlahou chyby orientace při předání (takže se netvrdí, že roste s biasem) — robustními zjištěními je, že fúze překonává nepodporovaný dead-reckoning u senzoru s biasem a že senzor s nižším biasem má lepší nepodporovaný dojezd. - Návrh konstelace na ověřeném jádru SGP4 (
src/walker.rs). Nový modulwalkervydává navržený vzor Walker-delta (i: T/P/F) jako střední prvky SGP4, takže se syntetická konstelace propaguje toutéž cestou SGP4 ověřenou na 4,12 mm proti vektorům AIAA 2006-6753 — nikoli analytickým keplerovským generátorem. Nad tím:pdop_sweepvyčísluje pokrytí a mediánový/nejhorší PDOP přes mřížku návrhů{planes × sats × inclination}acoverage_revisituvádí podíl pokrytí a mezery opětovného přeletu (nejhorší/střední) v pozemním bodě. Ověřeno fyzikálními monotonnostmi, které musí obchodní studie dodržet (více družic ⇒ větší pokrytí, nižší PDOP, kratší opětovný přelet). Zvlášť je jako fixture jen pro testy přidán skutečný snímek TLE Celestrakgps-ops(2021-07-28, 30 provozních družic GPS) a proti němu ověřena cesta skutečné TLE → SGP4 → geometrie ECEF (celá slupka MEO v rozmezí 1 %, devět družic zároveň v dohledu při PDOP 1,64), vedle stávajících cest se skutečnými daty SP3 a RINEX. - Efektivní stupně volnosti specifické pro typ šumu u intervalů spolehlivosti Allanovy odchylky.
allan::edf_overlapping_adevimplementuje uzavřené tvary NIST SP 1065 Tabulky 5 (jednoduchá sada Stable32) pro všech pět kanonických mocninných typů šumu — bílý/flicker PM, bílý/flicker FM, náhodná procházka FM — a nahrazuje konzervativní počet bez překryvu jako stupně volnosti χ². Nový výčetPowerLawNoiseaclassify_power_lawurčí dominantní typ ze sklonu modifikované Allanovy odchylky záznamu (MDEV odliší bílý a flicker PM tam, kde to ADEV nedokáže) aoverlapping_adev_curvenyní ke každému bodu exportované křivky ADEV připojí určený typ šumu, jeho edf a 95% pásmo spolehlivosti (AdevPointzískávánoise/edf/ci_lo/ci_hi, doplňkově s výchozími hodnotami serde). Ověřeno dvěma způsoby: pět vzorců odpovídá ručně vyhodnoceným hodnotám na 1e-12 a Monte Carlo ensemble bílého FM o 4 000 záznamech potvrzuje, že vzorec předpovídá skutečné edf odhadovače podle χ² do 20 % (a že podstatně překonává konzervativní počet). Osm nových testů. - Stochastický model oboustranného přenosu času.
timetransfer::TwoWayLinknahrazuje vzorkovač jen s bílým šumem fyzikálně podloženým modelem: reciproční (souhlasné) zpoždění cesty se v odhadu(m_AB - m_BA)/2ruší (two_way_offset_estimate, takže dvě nezávislá jednosměrná měření se zprůměrují na1/sqrt(2)) a zbytkem je nereciproční rozdílové zpoždění — modelované jako barevný proces bílého FM + náhodné procházky FM (ověřenéClockModel), který dává řadě chyby synchronizace realistický podpis Allanovy odchylky (sigma_y^2(tau) = q_rw*tau/3) místo plochého bílého šumu.LinkCfgzískáváq_wf_s/q_rw_s(výchozí hodnota serde 0 ⇒ původní chování jen s bílým šumem, bitově shodné), ukazatel kvality spoje uvádíadev_tau0(Allanova odchylka modelu při základním kroku) a scénář/CLItimetransferjej zpřístupňují. Zlatý ukazatel kvality znovu připnut. Šest ručně odvozených testů (zrušení souhlasné složky, dvoucestný zisk sqrt(2), zákon RWFMtau/3přes vlastnístep()spoje, shoda s původním chováním přiq=0, determinismus a zpřístupnění ukazatele kvality od začátku do konce). - Numerická shoda se Stable32 pro odhadovače rodiny Allan (NBS14).
tests/allan_reference.rsověřuje odhadovače překrývající se ADEV, modifikované ADEV, časové odchylky a překrývající se Hadamardovy proti referenčním odchylkám Stable32 pro kanonickou datovou sadu NBS14 (W. J. Riley, Handbook of Frequency Stability Analysis, NIST SP 1065, ~s. 107) pro tau = 1, 2 s relativní tolerancí 1e-4 — skutečná shoda ~1e-6. Tím se matematika odhadovačů připíná proti de facto referenční implementaci, nejen proti vlastní analytické samokonzistenci odhadovačů. Používají se jen veřejná referenční čísla; žádný cizí kód. - Vertikální Stanfordův diagram integrity exportovaný scénářem
integrity. Spustitelný druh scénářeintegritynově vedle mapy dostupnosti HPL/VPL exportuje i vertikální Stanfordův(-ESA) diagram: v každé chráněné epoše se zreprodukovatelný, seedem řízený výběr chyby měření vzdálenosti bez poruchy převede přes geometrii na skutečnou vertikální chybu polohy a zařadí se vůči VPL a vertikálnímu poplachovému limitu (Available / System-Unavailable / Misleading / Hazardously-Misleading). Diagram (body po epochách a počty v oblastech) je součástí výsledného JSON a počty událostí integrity a HMI jsou v souhrnu CLI, takže Stanfordův klasifikátor, dříve dostupný jen jako knihovna, je dosažitelný od začátku do konce.IntegrityScenariozískává poleseed(výchozí 0), které řídí realizaci chyby; samotná mapa dostupnosti zůstává čistě geometrická a na seedu nezávislá. - Rozpočet integritního rizika ARAIM (P_HMI) pro ochranné úrovně.
raim::araim_raimodvozuje horizontální a vertikální ochranné úrovně z explicitního rozpočtu integritního rizika, nikoli z pevného násobiteleK_md: pro řešení ze všech viditelných družic i pro každé dílčí řešení s vyloučením jedné družice sestaví na každé ose(prior, detection threshold, σ)pro jednotlivé režimy, aaraim_protection_levelpak najde nejmenší PL, jehož součtová pravděpodobnost nebezpečně zavádějící informace (araim_integrity_risk,P_HMI = Σ_k p_fault,k · Q((PL − T_k)/σ_k), Blanch et al. Baseline ARAIM) splní přidělenéP_HMI. Výsledek uvádí integritní riziko, kterého úrovně skutečně dosahují, takže uživatel může explicitně vyvažovat integritu proti poplachovému limitu. Šest ručně odvozených testů (uzavřené tvary pro jeden režim bez poruchy a s prahem, sčítání více režimů a monotonie, ochrana bez poruchy od začátku do konce s 10⁵× přísnějším rozpočtem zvyšujícím PL, detekce a identifikace poruchy a minimální redundance šesti družic). Porucha jedné družice (MHSS) je základem ARAIM; současné poruchy více podmnožin SV, režim poruchy celé konstelace a validace na referenčním datovém souboru gLAB jsou zdokumentovaná rozšíření. - Dvourychlostní kompenzace coningu a scullingu pro strapdown mechanizaci.
inertial::mechanization::coning_sculling_compensatevyjímá vysokofrekvenční členy coningu (orientace) a rotace se scullingem (rychlost) z uspořádaných dílčích přírůstků IMU hrubé aktualizace, takžeNavState::step_incrementss mírnou frekvencí reprodukuje pohyb usměrněný vibracemi, který hrubý krok nad surovými součty míjí. Validační test pohání prostředí coning+sculling o frekvenci 10 Hz po dobu 60 s a porovnává jemnou referenční pravdu, naivní hrubou integraci a hrubou integraci se sloučenými členy: sloučení sníží chybu polohy zhruba 18× (z metrů naivního driftu na méně než decimetr), což potvrzuje, že členy coningu/scullingu jsou nosné. Alias typuScalarErrorBudgetpojmenovává starší jednoosý (1-DOF)AccelModeltím, čím je, odlišně od tříosého navigátoruNavState. - Parser observačního souboru RINEX. Nový modul
rinex_obsčte observační soubor RINEX 3.0x / 4,00, tedy skutečná měření přijímače, a doplňuje tak dvojici RINEX vedle stávajícího parseru navigační zprávy.parse_obsdekóduje hlavičku (verze/typ, seznamySYS / # / OBS TYPESpodle systémů včetně pokračovacích řádků, přibližnou polohu, interval, čas první observace) a záznamy každé epochy po družicích: pseudovzdálenost, fázi nosné, Doppler a sílu signálu, klíčované jejich observačním kódem RINEX 3 (C1C,L1C, …) spolu s příznaky ztráty vazby (LLI) a síly signálu (SSI); prázdné pole se zachovává jako chybějící, nikoli jako nula. Poctivý rozsah: jde o načtení ve standardním formátu (skutečný observační záznam z RTKLIB/gLAB/stanice IGS na vstupu, typovaná měření na výstupu), nikoli o polohovací engine; zde není žádné řešení z pseudovzdáleností, PPP ani RTK. - Zapisovač CCSDS OEM (Orbit Ephemeris Message). Nový modul
oemexportuje propagovanou konstelaci jako platnou zprávu CCSDS 502.0-B OEM 2,0, tedy formát efemerid KVN, který přijímají GMAT, Orekit, STK a většina nástrojů letové dynamiky.OemFile::from_propagatorsvzorkuje setrvačný stav (TEME) každé družice, tedy polohu i rychlost přímo z propagátoru bez rotace do systému pevného se Zemí, na rozdíl od exportu SP3, na časovou mřížku aOemFile::to_oem_stringserializuje hlavičkuCCSDS_OEM_VERS/CREATION_DATE/ORIGINATORa jeden segmentMETA_START … META_STOPna družici (OBJECT_NAME/OBJECT_ID/CENTER_NAME/REF_FRAME = TEME/TIME_SYSTEM = GPS/START_TIME/STOP_TIME) následovaný řádkyepoch X Y Z X_DOT Y_DOT Z_DOT(km, km/s). HodnotuCREATION_DATEdodává volající, nikdy ne hodinový čas systému, takže výstup je mezi běhy bajt po bajtu shodný (smlouva o reprodukovatelnosti). Jde o protějšek exportu SP3 pro GNSS určený pro efemeridy kosmických těles: dráhu z Kshana lze nyní předat nástroji letové dynamiky ve standardním formátu. - Přesné efemeridy SP3 jako zdroj propagace.
Sp3File::interpolatorsestaví pro každou družiciSp3Interpolator, který mezi tabelovanými epochami SP3 doplňuje polohu Lagrangeovým polynomem 9. řádu (standardní praxe IGS) a převádí ji do společného systému TEME; zpřístupněno jakoPropagator::Sp3Precise. Soubor přesných drah z IGS nebo analytického centra tak může pohánět stejný řetězec geometrie, viditelnosti a integrity jako broadcast a analytické propagátory. Ověřeno obousměrným průchodem: Keplerova dráha zapsaná do SP3 a znovu načtená přes interpolátor souhlasí s původní na uzlech na méně než metr a uprostřed intervalu na < 100 m. Interpolace hodin je na řadě. - Broadcast efemeridy GLONASS (dokončují multi-GNSS navigaci RINEX). Nový modul
glonass: GLONASS nevysílá keplerovské elementy, ale stavový vektor pevný se Zemí v PZ-90 (poloha, rychlost, luni-solární zrychlení).parse_glonass_navčte záznamy RINEX 3Ra poloha družice v libovolném čase se získá Rungeovou–Kuttovou integrací 4. řádu pohybových rovnic z ICD GLONASS (centrální gravitace +J2+ Coriolisovy/odstředivé členy rotace Země + vysílané zrychlení). Zpřístupněno jakoPropagator::Glonass, takže družice GLONASS procházejí řetězcem konstelace, viditelnosti a integrity spolu se systémy s keplerovskými elementy; jediný blok konstelacerinexnyní může míchat GPS, Galileo, QZSS, BeiDou a GLONASS. - Navigace RINEX pro více systémů GNSS (GPS, Galileo, QZSS, BeiDou). Parser navigačních dat RINEX 3 nyní vedle GPS (
G) dekóduje záznamy Galileo (E), QZSS (J) a BeiDou (C, MEO/IGSO); sdílejí keplerovské uspořádání a uživatelský algoritmus a každý se vyhodnocuje s vlastní gravitační konstantou a rychlostí rotace Země (μ pro Galileo/BeiDou, Ω̇ₑ pro BeiDou). Soubor se smíšenými konstelacemi poskytne všechny z nich, které procházejí řetězcem konstelace, viditelnosti a integrity jakoPropagator::Rinex. Geostacionární družice BeiDou používají jinou rotaci souřadnic a jsou přeskočeny, dokud nebude k dispozici referenční vzorek, vůči němuž by šly ověřit. Procházení záznamů používá počty řádků podle systému, čímž se opravuje latentní chyba, kdy se čtyřřádkové záznamy GLONASS/SBAS přeskakovaly, jako by měly osm řádků. GLONASS (model stavového vektoru) je na řadě. - Čtečka a zapisovač přesných efemerid SP3-c/d. Nový modul
sp3zpracovává soubory přesných drah SP3 z IGS nebo analytických center (parse_sp3), tedy dodatečně zpracovaný produkt polohy a hodin v ECEF, který enginy PPP (Ginan, RTKLIB, gLAB) berou jako referenci, do strukturovanéhoSp3File(hlavička, mřížka epoch, poloha každé družice km→m, hodiny µs a rychlost dm/s→m/s u produktůV) se zachováním zástupných hodnot SP3 pro chybná data. Pokryt je i opačný směr:Sp3File::from_propagatorssestaví SP3 z propagované konstelace (TEME→ECEF pro každou epochu) ato_sp3_stringjej serializuje, takže dráhy z Kshana lze exportovat ve formátu, který externí nástroje PPP čtou, tedy obousměrný průchod čtení↔zápis. Interpolace epoch a zdroj propagátoru SP3 jsou na řadě. - Broadcast efemeridy RINEX jako spustitelný zdroj konstelace. Konstelace nyní přijímá vložený blok
rinex(navigační text RINEX 3 pro GPS) vedle stávající volbytle, takže skutečný broadcast soubor pohání scénář od začátku do konce z CLI, z Pythonu nebo z prohlížečového hřiště: na vstupu RINEX, na výstupu geometrie PNT. Novýscenarios/orbit-rinex.tomlukazuje dostupnost GNSS a DOP z osmi družic GPS sestavených přímo z broadcast záznamů. (Pouze GPS LNAV; multi-GNSS a SP3 jsou na řadě.) - Broadcast efemeridy RINEX jako zdroj propagace. Zpracovaný
RinexEphemerisse nyní převádí naorbit::Propagator(Propagator::Rinex): poloha je broadcast dráha podle IS-GPS-200 otočená z ECEF do společného setrvačného systému TEME (sv_position_teme, s časem GPS→UT1 správným vzhledem k přestupným sekundám), rychlost je centrální konečná diference a keplerovská oběžná doba. Skutečná broadcast data GPS tak mohou pohánět stejný řetězec geometrie, viditelnosti a integrity (RAIM) jako analytické propagátory SGP4/Kepler. (Zatím není zpřístupněno jako druh scénáře se souborem RINEX; to a multi-GNSS/SP3 je na řadě.)
0.9.2 - 2026-06-03#
Přidáno#
- Archivní DOI. Vydání se nyní ukládají do Zenodo a dostávají citovatelné DOI.
0.9.1 - 2026-06-03#
Změněno#
- Dokumentace. README bylo přepracováno na institucionální úroveň: přehled schopností celého stacku v0.9.0, oddíl Verzování a vydání, čistá hlavička s novou značkou a stručný stavový řádek. Žádné změny enginu.
0.9.0 - 2026-06-03#
Toto vydání přidává tři podstatné oblasti schopností nad základem SGP4 z verze 0.8.0: skutečný tříosý strapdown INS, volně vázaný chybový stavový EKF GNSS/INS s uzavřenou zpětnou vazbou, skutečný snapshotový RAIM a RAIM se separací řešení (ve stylu ARAIM) s HPL/VPL a spustitelným scénářem integrity a první krok k interoperabilitě formátů GNSS (načítání efemerid GPS ve formátu RINEX-3).
Přidáno#
- Parser navigační zprávy GPS RINEX 3 (
src/rinex.rs). První krok k interoperabilitě formátů GNSS:parse_navčte navigační soubor RINEX 3.x a dekóduje každý broadcast efemeridní záznam GPS (G), tedy osmiřádkový blok SV/epocha +BROADCAST ORBIT, doRinexEphemeriskeplerovských elementů a oprav hodin, s názvy polí a jednotkami podle IS-GPS-200. Zvládá fortranský formát čísel s exponentemD(parse_d) a rozvržení do sloupců pevné šířky; záznamy jiných systémů než GPS se přeskakují, nikoli odmítají, takže smíšený soubor stále poskytne své efemeridy GPS. Čtyři testy: parsování exponentuD(včetně prázdných hodnot a chyb), úplný záznam dekódovaný proti známým hodnotám polí s kontrolou věrohodnosti hlavní poloosy GPS (√A² ≈ 26 560 km), přeskakování záznamů jiných systémů než GPS a případ prázdného souboru. - Broadcast efemeridy GPS → poloha v ECEF (
src/rinex.rs).RinexEphemeris::sv_position_ecef(t_tow)vyhodnocuje polohu družice v systému pevném se Zemí ze zpracovaných efemerid uživatelským algoritmem IS-GPS-200 §20.3.3.4.3.1: Newtonovo řešení Keplerovy rovnice pro excentrickou anomálii, korekce druhé harmonické argumentu šířky, poloměru a sklonu a rotace do ECEF zohledňující rotaci Země od referenční epochy (s hodnotami GPSμaΩ̇ₑpředepsanými specifikací a přeloženímtkpři přechodu týdne). Tři testy: geocentrický poloměr zůstává v pásmu GPS (≈ 26 560 km), rychlost vůči Zemi je ~3,9 km/s a vyhodnocení o celý týden dál reprodukuje stejnou polohu. - Posun hodin družice GPS s relativistickou korekcí (
src/rinex.rs).RinexEphemeris::sv_clock_bias_s(t_tow)vyhodnocuje broadcast polynom hodinaf0 + af1·Δt + af2·Δt²okoloTocplus relativistický člen excentricityF·e·√A·sin Ek(IS-GPS-200 §20.3.3.3.3.1). NováEpochUtc::gps_time_of_weekpřevádí kalendářní epochu záznamu na čas GPS v týdnu pomocí aritmetiky juliánského dne od epochy GPS (1980-01-06) a řešení Keplerovy rovnice je sdíleno s vyhodnocením polohy. Testy: čas GPS v týdnu pro neděli/úterý/sobotu (hranice týdne) a posun hodin s dominantním af0 a přítomným, omezeným relativistickým členem. Skupinové zpoždění L1TGDje zpřístupněno, ale záměrně se nezapočítává. Poctivý rozsah: zdrojPropagator, Galileo/BeiDou/GLONASS a SP3 zůstávají dalšími kroky. (docs/CAPABILITY.mdje aktualizován tak, aby odpovídal.) - Uživatelem spustitelný druh scénáře
integrity(scenarios/integrity-raim.toml). Schopnost dostupnosti RAIM je nyní dosažitelná z CLI/TOML jako každý jiný balíček:kind = "integrity"zpracujeIntegrityScenario(dráhu uživatele, jednu či více konstelací GNSS, elevační masku a integritní konfiguraci(sigma, P_fa, P_md, AL_H, AL_V)), spustíconstellation_raim_availabilitya vydá mapu dostupnosti HPL/VPL po epochách jako JSON plus samostatné SVG: ochranné úrovně v čase proti poplachovým limitům se zeleno-červeným pruhem dostupnosti.kshana scenarios/integrity-raim.tomlzapíše JSON, graf a zprávu HTML. Přibalený scénář (Walkerova konstelace o 24 družicích, dvoufrekvenční měření vzdálenosti 1 m, limity APV-I) uvádí dostupnost ~95 %; dokumentuje, že jednofrekvenční RAIM u jediné konstelace nesplňuje vertikální limit APV-I, a proto se pro vertikální navádění používá SBAS/dvoufrekvenční režim/ARAIM. Testy pokrývají dispečink, JSON mapy dostupnosti a SVG. - Spustitelná dostupnost RAIM nad konstelací (
src/raim.rs). Modul integrity neměl žádného volajícího:constellation_raim_availabilityz něj dělá skutečný vstupní bod od začátku do konce. V každé epoše na časové mřížce propaguje viditelné družice (tytéžPropagatorSGP4/Kepler, které engine používá), vypočte ochranné úrovně bez poruchy a posoudí dostupnost vůči horizontálnímu a vertikálnímu poplachovému limitu; vracíRaimAvailabilityReportserializovatelný přesserde(po epocháchn_visible/HPL/VPL/availableplus podíl dostupnosti).RaimConfigsdružuje(sigma, P_fa, P_md, AL_H, AL_V)araim_availability_epochpro každou epochu je zpřístupněno volajícím, kteří si geometrii řeší sami. Tři testy: epocha posouzená jako dostupná podle limitů APV-I na geometrii deseti družic, učiněná nedostupnou nemožně přísným limitem, a úrovněNonepod pěti družicemi; a běh od začátku do konce nad Walkerovou konstelací o 24 družicích, který dá konečnou mapu dostupnosti a lze jej serializovat. (Šest družic, tedy práh redundance zbytkového RAIM, poctivě nesplňuje APV-I ani při měření vzdálenosti 1 m; dostupnost APV-I vyžaduje hustší geometrii, kterou test používá.) - Akumulátor Stanfordova diagramu integrity (-ESA) (
src/raim.rs). Standardní způsob shrnutí integritního monitoru přes mnoho epoch: vynáší skutečnou chybu polohy (x) proti ochranné úrovni (y) a každou epochu zařazuje podle úhlopříčkyy = xa poplachového limitu doAvailable(PL ohraničuje chybu, v rámci AL),SystemUnavailable(PL ohraničuje chybu, ale překračuje AL: bezpečné, nepoužitelné),MisleadingInformation(PL < chyba ≤ AL) neboHazardouslyMisleadingInformation(PL < chyba a chyba > AL: nebezpečné selhání).classify_stanfordje čistý klasifikátor;StanfordDiagramakumuluje body(error, PL)vůči pevnému poplachovému limitu a zpřístupňuje počty v oblastech, dostupnost, součty integritních událostí a body serializovatelné přesserdepro vykreslení a export do JSON. Čtyři testy: každá oblast (včetně hranice ohraničení přierror == PL), akumulace počtů a dostupnosti a obousměrný průchod JSON. Jde o výstupní vrstvu pro ochranné úrovně RAIM; zapojení do scénáře konstelace a validace na veřejném datovém souboru zůstávají položkami plánu. - RAIM se separací řešení (ve stylu ARAIM) (
src/raim.rs). Integritní monitor s více hypotézami vedle stávajícího reziduálního/paritníhosnapshot_raimpodle chí kvadrát. Pro řešení nejmenších čtverců ze všech viditelných družic i pro každé dílčí řešení s vyloučením jedné družice vytváří separaciΔ_k = x_k − x₀, která je za bezporuchového stavu gaussovská s nulovou střední hodnotou a kovariancíCov(x_k) − Cov(x₀)(identita vnořených estimátorů, platná, protože řešení ze všech viditelných družic je BLUE), a díky tomu poruchu jak detekuje, tak identifikuje postiženou družici (tu, jejíž vyloučení dává největší normalizovanou separaci). Horizontální a vertikální ochranné úrovně odpovídají standardnímu přidělení MHSSPL = max(K_md·σ₀, max_k[K_fa·σ_ss,k + K_md·σ_k]), kdeK_fa = Φ⁻¹(1−P_fa/2),K_md = Φ⁻¹(1−P_md). Novénormal_cdf/normal_quantilebez závislostí, postavené na stávající regularizované neúplné funkci gama modulu (erf(x) = P(½,x²)). Čtyři ručně odvozené testy: normální CDF / kvantilová funkce proti hodnotám z učebnic (Φ(1,95996)=0,975, chvost 1e-7 = 5,1993, symetrie); bezporuchová geometrie, která nevyvolá poplach a dá konečné, kladné HPL/VPL; 60σ systematická chyba jedné družice, která je detekována a správně identifikována (excluded_sv == 2); a minimální redundance šesti družic. Uzavírá na straně algoritmu mezeru P0 z auditu „tautologická integrita: žádný skutečný RAIM/HPL/VPL“; validace na datovém souboru gLAB a akumulátor Stanfordova diagramu zůstávají položkami plánu. - Integrace GNSS/INS s uzavřenou smyčkou (
src/fusion/closed_loop.rs).ClosedLoopInsGnsszapojuje jádro chybového stavového EKF do tříosé strapdown mechanizace: každý vzorek IMU se opraví průběžnými odhady biasů, mechanizuje se vpřed a kovariance EKF se časově propaguje s odpovídajícím navigačním kontextem; každá fixace polohy a rychlosti GNSS vytvoří inovaci INS−GNSS a vrací odhadnutou polohu, rychlost, chybu orientace (ψ, jako rotaci kvaternionem) a biasy akcelerometrů a gyroskopů zpět do řešení a nuluje střední hodnotu chybového stavu. Zpětná vazba orientace (nejen biasů) je pro stabilitu nutná: náklon a bias akcelerometru tvoří vázanou dvojici, takže oprava jednoho bez druhého diverguje. INS a GNSS se porovnávají v lokální tečné rovině v soustavě NED s použitím vlastních poloměrů křivosti mechanizace (novémechanization::radii_of_curvature;NavState::omega_ie_n/omega_en_nzpřístupněno). Je to poctivá náhrada resetu přichycením k pravdě v hybridním balíčku. Tři testy: uzavřená smyčka vynulující vloženou chybu polohy 8 m / −5 m na <0,1 m; podpořené řešení zůstávající omezené na metry (<6 m) na jedoucí trajektorii, zatímco volně běžící INS diverguje přes 100 m; a milníkový benchmark: RMS polohy sloučeného řešení metodou Monte Carlo při výpadku GNSS 60 s je lepší než u nepodporovaného dead-reckoneru s otevřenou smyčkou o více než 2× (≈4× napříč seedy). Poctivé omezení zdokumentované v modulu: ve volně vázaném režimu jsou bias akcelerometru a náklon jen slabě oddělitelné (oba se vážou přes gravitaci), takže dodanou hodnotou je omezený, opravený stav a čistý vstup do výpadku, nikoli přesná inerciální kalibrace; bohatší dynamika a těsně vázané rozšíření zůstávají položkami plánu. - Jádro volně vázaného chybového stavového EKF GNSS/INS (
src/fusion/gnss_ins_ekf.rs). Rozšířený Kalmanův filtr s 15 chybovými stavy,δx = [δp, δv, ψ, b_a, b_g], s dynamikou chyb strapdownu podle Grovese 2013 §14,2 (vazba měrné síly a náklonu, Coriolis, projekce biasů z tělesné do navigační soustavy, Gaussovy–Markovovy modely biasů), diskrétním přechodem prvního řáduΦ = I + F·dta volně vázanou měřicí aktualizací polohy a rychlosti (H = [I₃ 0 0 0 0; 0 I₃ 0 0 0]) v Josephově tvaru. Hustá lineární algebra bez závislostí (Gaussova–Jordanova inverze, Josephova aktualizace kovariance). Cargo featuretight_couplinghradí zdokumentovanou, dosud neimplementovanou aktualizaci z pseudovzdáleností/Doppleru. 7 testů s ručně odvozenými očekáváními: identita antisymetrické matice/vektorového součinu, ověřená inverze 3×3, kovariance zůstávající symetrická/PSD při predikci (a nejistota polohy rostoucí bez podpory), fixace polohy zmenšující kovarianci polohy, přesné obnovení známé chyby polohy při analytickém Kalmanově ziskuP/(P+R)a menší korekce při větším měřicím šumu. Je to jádro, které nahradí reset přichycením k pravdě s otevřenou smyčkou v hybridním balíčku zpětnou vazbou s uzavřenou smyčkou (zapojení do balíčku a validace proti NaveGo budou následovat). - Deterministický model chyb IMU pro 3osý strapdown navigátor (
src/inertial/imu_errors.rs).ImuErrorModelzkresluje skutečnou dvojici(ω, f)v tělesné soustavě na měřenou prostřednictvím pěti systematických kategorií (IEEE Std 952-1997 §A.2; Groves 2013 §4,3, tabulka 4,1): chyba měřítka (chyba zesílení v ppm na osu), nesouosost / křížová vazba (nenulové mimodiagonální prvky vyjadřující neortogonalitu trojosy), g-citlivost (bias úhlové rychlosti gyroskopu úměrný měrné síle), kvantizace (zaokrouhlení na výstupní LSB) a rate-ramp (drift lineární v čase, třetí oblast Allanovy odchylky) plus konstantní bias při zapnutí. Každý člen je ve výchozím stavu nulový, takžeImuErrorModel::ideal()je průhledný průchod a stávající scénáře nejsou dotčeny. Každý zdroj chyby má izolační test (měřítko lineární na <0,01 %, nesouosost mezi osami nad úrovní VRW, bias g-citlivosti, mřížka LSB, lineární rampa) a test od začátku do konce pohání navigační chybu mechanizací ze zkresleného IMU. Nemodelováno: chyba usměrnění vibrací, drift teplotního gradientu. (Dodávaný balíček scénářůinertialstále běží s původním jednoosým (1-DOF) skalárním rozpočtem; tento model napájí 3osou knihovnu.) - Kompenzace coningu a scullingu pro strapdown integrátor. Větev orientace přidává dvouvzorkový
coning_increment(½ Δθ_prev × Δθ_cur); integrace hrubou frekvencí (30 Hz, 5 vzorků na cyklus) prostředí s coningem 5 Hz se ověřeně drží jemné referenční pravdy s korekcí o ≥ 3× lépe než naivní sčítání přírůstků. Větev rychlosti přidávásculling_increment(½ Δθ × Δv, Groves rov. 5,82) a převádí přírůstek rychlosti v tělesné soustavě přes novou aktualizaciNavState::step_incrementszaloženou na přírůstcích s použitím rotace vůči tělesuΔθ_rel = Δθ_b − C_n^b ζ, takže platforma pevná se Zemí nezaznamenává žádný falešný sculling, zatímco skutečná vibrace spustí celý člen. - Plná tříosá strapdown mechanizace v soustavě NED (
src/inertial/mechanization.rs).NavState { q, v_ned, p_llh }se posouvá volánímstep(gyro_b, accel_f_b, dt)podle standardních rovnic NED v pozemské soustavě (Groves §5,4): orientace tělesná→NED opravená o rychlost setrvačná→navigačníω_in = ω_ie + ω_en(rotace Země + transportní rychlost); měrná síla převedená z tělesné soustavy do NED přes DCM; rychlost integrujícív̇ = f_n − (2 ω_ie + ω_en) × v + g_n(Coriolis/transport + gravitace); a geodetická poloha přes poloměry křivosti meridiánu a příčného řezu. Gravitace je uzavřená Somiglianova normální (olovnicová) tíže podle WGS-84 s výškovou korekcí volného vzduchu podle NIMA, nikdy pevně zadaná konstanta. Je to skutečný tříosý navigátor, který nahrazuje jednoosou (1-DOF) skalární cestu rozpočtu chyb. Ověřeno fyzikálními invarianty: platforma přišroubovaná k rotující Zemi na 45° s. š. (snímající rychlost rotace Země + 1 g) zůstane po dobu 60 s v rozmezí 1 mm; vodorovná měrná síla směrem na sever dáváv_N ≈ a·ta posun½ a t²; normální tíže odpovídá známým hodnotám na rovníku/pólu/45° a gradientu volného vzduchu. - Tříosá reprezentace orientace pro strapdown INS (
src/inertial/attitude.rs). Typ jednotkového kvaternionuQuaternion(skalár první, Hamiltonova konvence) nesoucí rotaci tělesná→navigační soustava, s pohledem DCM (to_dcm/from_dcmShepperdovou metodou), Hamiltonovým součinem, konstruktory z osy a úhlu a z rotačního vektoru (přesné exp-mapování) a kinematikou kvaternionů: jak aktualizací rychlosti prvního řádu RK (q̇ = ½ q ⊗ ω), tak aktualizací rotačního vektoru s korekcí coningu. Dvouvzorkovýconing_increment(Savage / Bryan–Lewantowski,½ Δθ_prev × Δθ_cur) dodává člen křížové vazby rotačních rychlostí, který skalární dead-reckoning vynechává. Je to základ orientace pro plnou 3osou mechanizaci, která nahrazuje původní jednoosou (1-DOF) cestu rozpočtu chyb. Ověřeno proti uzavřeným tvarům rotací: šíření s konstantní rychlostí souhlasí s kvaternionem osy a úhlu na 1e-6, DCM jsou ortonormální s jednotkovým determinantem a coning mizí při pohybu v jedné ose. (src/inertial.rsje nyní adresář modulusrc/inertial/; veřejná cestacrate::inertialse nemění.) - Geodeticky správná viditelnost z pozemní stanice (
src/frames.rs).elevation,is_visibleavisible_countpočítají elevaci družice nad horizontem pozemní stanice vůči normále elipsoidu WGS-84 (skutečné místní svislici), nikoli vůči geocentrickému průvodiči; ty se liší až o geodetickou odchylku ~0,19°, což stačí k tomu, aby družice blízko horizontu vstoupily do elevační masky nebo z ní vypadly. Ověřeno od začátku do konce (propagovaná Walkerova konstelace, otočená TEME→ECEF a spočítaná z geodetického místa) i proti geocentrické aproximaci.
Změněno#
- Spolehlivost CI. Úloha
test-python-bindingsnyní sestavuje wheel pomocíPyO3/maturin-action(kontejner manylinux) místo surového hostitelskéhomaturin build, čímž odpadá občasný konflikt rustuprustfmt-preview/cargo-fmtna obrazu runneru. Úlohadenyinstalujecargo-denyjako předem sestavený binární soubor přestaiki-e/install-actionmísto akcecargo-deny-actionzaložené na Dockeru, čímž odpadá vypršení časového limitu při stahování z registru Docker Hub. Žádná ze změn neovlivňuje prováděné kontroly.
0.8.0 - 2026-06-02#
Přidáno#
Setrvačná rychlost je zpřístupněna dále v řetězci.
Propagator::velocity_eciaPropagator::state_eci(vracejícíStateEci { r_m, v_m_s }) předávají volajícím v m/s analytickou rychlost TEME, kterou SGP4 už počítá, ale dříve ji zahazoval;Orbit::velocity_ecidává keplerovské cestě konzistentní rychlost. Ověřovací test AIAA 2006-6753 nyní u každého referenčního řádku kontroluje i rychlost (nejhorší chyba rychlosti 1.85e-9 km/s napříč všemi 666 stavy) a přesně fixuje počet porovnávaných řádků na 666.Přísnější parsování TLE odolné proti panice. Řádky musí být ASCII a řežou se bezpečně (už žádné panicy z indexu bajtů při vícebajtovém vstupu); elementy se kontrolují na rozsah (sklon, excentricita, střední pohyb); kontrolní součet ve sloupci 69 lze vynutit přes
ParseOpts { strict_checksum }/parse_propagators_optsa nový příznakstrict_checksumuConstellationCfg(ve výchozím stavu tolerantní).Křivka Allanovy odchylky ve výstupu. Každý běh hodin nyní uvádí
adev_curve([{tau_s, adev, n_samples}]) a prohlížečové hřiště vykresluje log-log graf „Stabilita hodin (ADEV)“.Validace vstupní časové mřížky.
TimeCfg::validateodmítne neplatnou (nekonečnou či NaN), nulovou, zápornou nebo příliš velkou časovou mřížku (krok větší než doba trvání nebo více nežMAX_TIME_STEPSvzorků) před jakoukoli alokací, takže chybně utvořený scénář vrátí chybu místo panice nebo vyčerpání paměti.Soubory běhů Monte Carlo pro inerciální balíček.
runs = Nu inerciálního scénáře spustí N seedů a uvede u každé metriky průměr, směrodatnou odchylku, percentily a percentilový bootstrapový 95% interval spolehlivosti (ensemble). Každý inerciální běh nyní nese příznakmonte_carlo, takže ukazatel kvality z jediné realizace už nelze zaměnit za rozdělení. (CEP/2DRMS se záměrně neuvádějí: vyžadují 3osý model, který je v plánu.)Řízený režim hřiště. Prohlížečové hřiště vás už nehodí rovnou na holou zeď TOML: pás „Začněte zde“ s kartami scénářů na jedno kliknutí načte a spustí propracovaný příklad, posuvníky zpřístupňují univerzální ovladače (seed, časový práh) bez zásahu do TOML, poznámka „Jak to číst“ vysvětluje výsledek a celé TOML je na jedno rozbalení. Každý běh lze sdílet: Zkopírovat odkaz ke sdílení zakóduje celý scénář do fragmentu URL (nic se nenahrává), takže odkaz při načtení reprodukuje přesně týž běh. Kodek má jednotkové testy (
web/share.test.mjs, spouštěné v CI).N-rozměrné průchody parametrů (
src/sweep.rs).nd_sweepvyhodnotí metriku nad úplným kartézským součinem rozsahů několikaSweepAxis(víceparametrová studie kompromisů), deterministicky, v pořadí po řádcích. Doplňující: stávající API 1-rozměrného průchodu zůstává beze změny. Bootstrapové intervaly spolehlivosti pro jednotlivé uzly a zobecnění nad rámec balíčku hodin zůstávají v plánu.Skutečný snapshotový RAIM (
src/raim.rs). Skutečná autonomní monitorace integrity přijímače v oblasti polohy: sestaví geometrii zorných přímek k viditelným družicím, vytvoří řešení nejmenších čtverců a rezidua, provede test detekce poruch z reziduí χ² (přesný práh z neúplné gama funkce a necentrálního χ² bez závislostí) a vypočte horizontální a vertikální ochranné úrovně (HPL/VPL) založené na sklonu, s odchylkou nezachycené události odvozenou pro nastavené P_fa/P_md. To se liší od ukazatele Integrity (filtrové vnitřní konzistence) v řetězci scénářů a zatím do něj není zapojeno; vyloučení poruchy, rozpočtování alert-limit/P_HMI a ARAIM zůstávají v plánu.Sada stability frekvence: MDEV, TDEV, HDEV + intervaly spolehlivosti (
src/allan.rs). Vedle překrývající se ADEV: modifikovaná Allanova odchylka (odděluje bílý od flicker fázového šumu), časová odchylka (TDEV = tau/sqrt(3) * MDEV) a Hadamardova odchylka (přesně potlačuje lineární drift frekvence a konverguje pro divergentní typy červeného šumu). Intervaly spolehlivosti založené na χ² (deviation_ci) používají dvojici normálního a χ² kvantilu bez závislostí (Acklam + Wilson-Hilferty) s konzervativním nepřekrývajícím se edf; edf specifické pro typ šumu a číselná shoda se Stable32 zůstávají v plánu.Redukce referenčních soustav (
src/frames.rs). Rotace TEME↔ECEF založená na GMST (používá tentýž hvězdný čas IAU-1982 jako propagátor), přesná geodetická↔ECEF podle WGS-84 s iterativní inverzí s Bowringovým počátečním odhadem (přesnost stroje ve všech výškách, včetně MEO/GEO) a geodetický pozorovatel pozemní stanice, který vrací azimut / elevaci / vzdálenost v místní soustavě východ-sever-nahoru. Pohyb pólu a nutace pod úhlovou vteřinu se neaplikují (pouze GMST, pod kilometr na pozemní stopě); přesný řetězec CIO podle ITRF je v plánu.Základ časových stupnic (
src/timescales.rs). API juliánských dat bez závislostí (gregoriánské občanské datum ↔ JD, MJD), úplná celočíselná historie přestupných sekund IERS (UTC↔TAI, 10 s v roce 1972 až 37 s od roku 2017), definovaný posun TAI→TT, oprava UT1 přes dodané DUT1 a úhel rotace Země IAU-2000. To je časový základ, na kterém stojí redukce na soustavu pevnou se Zemí (plánovaná). Okamžiky jsou juliánská data s jedinýmf64(rozlišení ~50 µs v blízkosti současné epochy; dvoudílné JD je v plánu) a éra gumových sekund před rokem 1972 se nemodeluje; obojí je zdokumentováno v modulu.Reprodukovatelnost a původ. Deterministický generátor SBOM CycloneDX (
scripts/gen-sbom.sh) a atestace původu sestavení SLSA u binárního souboru vydání a SBOM; toolchain vydání je připnut tak, aby odpovídal CI. Záruky determinismu, výhrada klibmnapříč platformami a přístup připínání zlatých hodnot jsou zdokumentovány vdocs/REPRODUCIBILITY.md.Testy založené na vlastnostech a fuzz testy (
tests/property.rs). Deterministické náhodné testy (bez nové závislosti) ověřují invarianty na tisících vstupů: parsery TLE a scénářů nikdy nespadnou na nesmyslném, ne-ASCII, mutovaném nebo useknutém vstupu;TimeCfg::validatenikdy nespadne na mřížkách s NaN/inf/zápornými hodnotami; kontrolní součet TLE je konzistentní a týká se jen sloupce 69; obousměrné převody geodetická↔ECEF a rotace TEME→ECEF zachovávají normu v celém světě a v širokém pásmu výšek.
Změněno#
- Zlaté testy nyní fixují ukazatele kvality pole po poli u čtyř referenčních scénářů (s tolerancí pohlcující kolísání
libmnapříč platformami) a nahrazují dřívější kontroly pouhých nerovností, takže tichá numerická regrese je zachycena okamžitě. schema_versionve výsledných artefaktech zvýšeno z0.1na0.7(byla zamrzlá, zatímco engine pokračoval dál).cargo-denynyní zamítá (nikoli jen varuje) stažené (yanked) závislosti.- Nové dokumenty:
CAPABILITY.md(mapa poctivého rozsahu),SCHEMA.md(reference polí výsledku),INTEGRITY.md,QUANTUM-MODELS.md,REAL_TLE_GUIDE.md. Ochrana v CI selže, pokud se odznak verze v README rozejde sCargo.toml.
0.7.0 - 2026-06-02#
Přidáno#
- Propagace oběžné dráhy SGP4/SDP4. Úplná implementace standardního propagátoru zjednodušených poruch bez závislostí: SGP4 pro blízkozemní dráhy spolu s rozšířením SDP4 pro hluboký vesmír (luni-solární sekulární a periodické poruchy a rezonance geopotenciálu 12 h / 24 h). Je ověřena proti oficiálním ověřovacím vektorům AIAA 2006-6753 („Revisiting Spacetrack Report #3“): všech 666 referenčních stavů napříč případy blízkozemními, hlubokého vesmíru, rezonančními a chybových kódů souhlasí s nejhorší chybou polohy asi 4 mm. Je to model, vůči kterému jsou dvouřádkové sady elementů definovány, takže reprezentuje skutečné konstelace, zejména dráhy GNSS s periodou ~12 h, které jsou v hlubokém vesmíru a rezonanční a které dřívější model dvou těles + sekulárního J2 zachytit nedokáže.
- Konstelace zadaná jako úplné dvouřádkové sady elementů (řádek 1 + řádek 2) se nyní propaguje pomocí SGP4/SDP4; konstelace zadaná jen elementy z řádku 2 zachovává analytickou keplerovskou propagaci dvou těles beze změny. Obě formy lze v jednom bloku míchat. Nový referenční scénář
orbit-sgp4-gps.toml(konstelace MEO podobná GPS ve skutečném dvouřádkovém formátu, propagovaná pomocí SGP4): vložte aktuální sadu „gps-ops“ z Celestraku a prostudujte živou konstelaci.
0.6.0 - 2026-06-02#
Přidáno#
- Demonstrátor aktivního útoku spoofingem. Nový druh scénáře
spoofvkládá narůstající falešný časový spoof a spouští u každých hodin monitor integrity podporovaný hodinami; uvádí, zda a kdy je spoof detekován a zda se bez detekce dostane k provozní specifikaci, a mění tak ukazatel kvality Security na konkrétní ukázku útoku a obrany. Nový referenční scénářspoof-attack.toml. - Dostupnost při více konstelacích. Scénář dráhy může kombinovat několik konstelací (seznam
[[constellations]]vedle primární[constellation]) pro dostupnost multi-GNSS a faktor zhoršení přesnosti (DOP), například GPS plus Galileo. Nový referenční scénářorbit-multignss.toml.
0.5.0 - 2026-06-02#
Přidáno#
- Zpráva HTML se skóre. Každý běh nyní vytváří i samostatnou HTML kartu skóre s brandingem: jednořádkový souhrn, graf (vložený jako inertní obrázek data-URI) a úplný JSON; zapisuje je CLI vedle JSON a SVG. Sdílitelný jednosouborový artefakt pro výstup studie nebo přílohu.
- Společný estimátor fúze senzorů. Nový druh scénáře
fusionspouští jediný rekurzivní Kalmanův filtr jako navigační řešení: slučuje stav hodin[phase, frequency]a stav polohy[position, velocity], je disciplinován GNSS (učí se frekvenční offset a rychlost) a během výpadku podporován optickým přenosem času, místo skládání nezávislých prediktorů. Uvádí sloučený holdover času a polohy a integritu ze společné kovariance. Nový referenční scénářfusion-pnt.toml. - Úplnější model šumu IMU. Akcelerometr nyní modeluje zbývající členy Allanova rozptylu nad rámec konstantního biasu a náhodné procházky rychlosti: nestabilitu biasu (flicker 1/f na úrovni standardního Allanova koeficientu nestability biasu, s využitím flicker syntézy hodin) a náhodnou procházku zrychlení. Nová volitelná pole
bias_instabilityaq_aainerciálního scénáře; nová fixace GNSS rekalibruje zbytkový drift biasu. - Skutečná geometrie konstelace z TLE. Konstelaci lze zadat jako blok dvouřádkových sad elementů (standardní formát NORAD/Celestrak) přes pole
tle, takže dostupnost a faktor zhoršení přesnosti používají zveřejněnou geometrii skutečné konstelace místo syntetického Walkerova vzoru. Engine čte střední keplerovské elementy každého TLE a propaguje je jako dvě tělesa, nikoli SGP4, což je pro snímkovou studii od společné epochy rozumné. Nový referenční scénářorbit-real-tle.toml.
0.4.0 - 2026-06-02#
Přidáno#
- Průchody parametrů pro studie kompromisů. Nový druh scénáře
sweepmění jeden parametr (threshold_ns,duration_s,quantum_q_wfneboclassical_q_wf) v lineárním či logaritmickém rozsahu a v každém bodě zaznamenává zvolený ukazatel kvality pro oba typy hodin; vzniká tak srovnávací graf „jak roste holdover se stabilitou hodin?“, který návrhový kompromis potřebuje. Nový referenční scénářsweep-clock-stability.toml. - Pásma spolehlivosti Monte Carlo. Scénář holdoveru hodin může spustit mnoho realizací (nové volitelné pole
runs): každý ukazatel kvality se pak uvádí jako průměr s rozptylem mezi 5. a 95. percentilem a graf vybarví 5–95% obálku chyby kolem mediánu pro každé hodiny. Výchozí zůstává jediný běh. Nový referenční scénářclock-ensemble.toml. - Excentrické dráhy a drift J2. Typ dráhy je nyní plná keplerovská dráha (hlavní poloosa, excentricita, sklon, RAAN, argument perigea, střední anomálie), propagovaná řešením Keplerovy rovnice, s volitelnou sekulární nodální regresí a apsidální precesí J2. Nová volitelná pole scénáře
eccentricity,argp_degaj2a referenční scénářorbit-molniya.toml(uživatel na vysoce excentrické kritické dráze se sklonem a periodou 12 h). Kruhové dráhy zachovávají původní uzavřenou cestu bit po bitu. - Hybridní balíček (kombinované PNT) nyní uvádí Integrity a Security, takže všechny čtyři balíčky pokrývají plnou sadu provozních ukazatelů kvality. Integrity je zahrnutí do ochranné meze časového kanálu z Kalmanova estimátoru disciplinovaného k pravdě, dokud je GNSS nominální, a (volněji) znovu ukotveného při každé optické resynchronizaci; jeho mez zahrnuje podlahu měřicího šumu spoje, takže hodiny mnohem lepší než spoj jsou hodnoceny proti skutečnému šumu dodaného řešení. Security je skóre detekce spoofingu podporované hodinami proti časové specifikaci.
Změněno#
- Poznámky k vydání se nyní generují z upravené sekce CHANGELOG pro daný tag (
scripts/changelog-extract.sh), takže každé vydání na GitHubu zdůrazňuje, co se změnilo, místo výpisu surových commitů.
0.3.0 - 2026-06-02#
Přidáno#
- Ukazatel kvality Security (dříve nenaplněný): skóre detekce spoofingu podporované hodinami pro balíčky holdoveru hodin a dráhy. Modeluje monitor integrity, který porovnává čas odvozený z GNSS s vlastní extrapolovanou predikcí hodin přes koherentní okno; práh detekce kombinuje zprůměrovaný měřicí šum s nejistotou extrapolace hodin, takže tišší hodiny detekují menší, pomalejší časové spoofy. Skóre se uvádí v
[0, 1]vztažené k časové specifikaci, čímž je dokončeno šest provozních ukazatelů kvality. - Přesnost polohy odvozená z geometrie pro balíček dráhy: z geometrie zorných přímek k viditelným družicím sestaví matici návrhu a faktor její kovariance
Q = (HᵀH)⁻¹a získá faktory zhoršení přesnosti (GDOP/PDOP/HDOP/VDOP/TDOP). Přesnost polohy je poziční DOP vynásobený nastavitelnou ekvivalentní chybou měření vzdálenosti uživatele (nové volitelné pole scénářesigma_uere_m). Výsledek dráhy nyní nese souhrn geometrie (podíl vzorků s fixací, nejlepší a mediánové PDOP a sigma polohy). - Hřiště v prohlížeči (
web/), které spouští engine na straně klienta jako WebAssembly: vyberte referenční scénář nebo upravte TOML, spusťte jej a uvidíte souhrn, graf i úplný JSON, aniž by se cokoli nahrávalo. Workflowpagesjej sestaví a publikuje na GitHub Pages a nový export WebAssemblysummaryzajišťuje výpis. - Popsané osy y u grafů SVG: mřížky, číselné popisky dílků a název osy s jednotkami (přes sdílenou pomocnou funkci
chart), takže jsou veličiny čitelné. - Workflow publikace balíčků (
publish) pro crates.io, PyPI a npm, každý podmíněný svým tokenem registru a spouštěný publikovaným vydáním.
0.2.0 - 2026-06-02#
Přidáno#
- Flicker (1/f) FM podlaha modelu chyby hodin, syntetizovaná jako součet logaritmicky rozmístěných Ornsteinových–Uhlenbeckových procesů a kalibrovaná tak, aby plochá podlaha Allanovy odchylky ležela na nastavitelné úrovni. Ve výchozím stavu vypnuto; zapíná se u každých hodin volitelným polem scénáře
flicker_floor. - Kanál gyroskopu pro inerciální model: zbytkový bias gyroskopu a náhodná procházka úhlu pohánějí chybu orientace (náklonu), která převádí gravitaci do horizontální chyby měrné síly, což je dominantní mechanismus růstu chyby strapdownu. Ve výchozím stavu vypnuto; zapíná se u každého senzoru volitelnými poli
gyro_biasaq_arw. - Dvoustavový (fáze, frekvence) Kalmanův estimátor hodin s přesnou diskretizací procesního šumu podle van Loana. Extrapolace ze známého stavu přesně reprodukuje analytický růst chyby holdoveru (
q_wf*T + q_rw*T^3/3) a filtr navíc poskytuje online mez nejistoty 1 sigma. - Běh hodin nyní uvádí ukazatel kvality Integrity (dříve nenaplněný): podíl vzorků výpadku, jejichž chyba zůstává uvnitř ochranné meze 3 sigma filtru, zobrazený ve výsledném JSON a v souhrnu CLI.
- Dostupnost GNSS odvozená z geometrie: propagace kruhové dráhy, generátor konstelace Walker-delta a viditelnost po zorné přímce (zákryt Zemí plus elevační maska) vytvářejí časovou osu dostupnosti ze skutečné orbitální geometrie. Nový druh scénáře
orbita referenční scénářorbit-gnss-challenged.toml(kosmická loď uvnitř slupky GNSS s přerušovaným pokrytím). - Volitelné rozšíření pro Python (PyO3, abi3) zpřístupňující
run,run_fullaversion, zabalené pomocí maturin (pyproject.toml) a sestavené pro Linux, macOS a Windows workflowwheelsspouštěným tagem vydání. Vazba je volitelná závislost řízená feature: výchozí sestavení, testy a brána auditu závislostí nejsou dotčeny. - Volitelný modul WebAssembly (wasm-bindgen) zpřístupňující
run,chart_svgaversion, sestavený pomocí wasm-pack pod featurewasm;getrandomje podmíněn cílem, aby nawasm32používal zdroj entropie prohlížeče. - Sdílené rozdělování
api::run_tomlpoužívané CLI i oběma vazbami, takže se příkazový řádek a vazby nemohou rozejít.
Změněno#
- Hodnocení holdoveru je nyní vědomé segmentů: časové osy výpadků se při opětovném získání GNSS dělí na souvislé segmenty a uváděný holdover je nejhorší (nejkratší) extrapolace napříč nimi. Scénáře s jediným výpadkem zůstávají beze změny. Platí pro hodnotitele hodin, inerciální i hybridní.
- Uváděné
kindinerciálního modelu je nyníinertial(dříveaccelerometer), což odráží sloučené kanály akcelerometru a gyroskopu.
0.1.0 - 2026-06-01#
První vydání.
Přidáno#
- Deterministický simulační engine pro hybridní kvantové/klasické PNT: společné rozhraní modelů chyb, deklarativní scénáře dostupnosti GNSS, estimátory holdover / dead-reckoning a hodnocení ukazatelů kvality podle standardních provozních kritérií PNT. Výsledky jsou reprodukovatelné z
scenario + seed + engine version(verzovaný, sám sebe popisující JSON s hashem scénáře) a vykreslují se jako grafy SVG. CLI rozděluje scénáře podlekind. - Čtyři balíčky senzorů, každý kalibrovaný na zveřejněná data a ověřený proti standardnímu vztahu:
- Holdover hodin: bílý FM, FM náhodné procházky a lineární stárnutí; ověřeno překrývající se Allanovou odchylkou (Riley, NIST SP 1065). Čipové atomové hodiny oproti optickým hodinám se stronciovou mřížkou.
- Inerciální dead-reckoning: zbytkový bias + náhodná procházka rychlosti, dvakrát integrované na chybu polohy; ověřeno proti Grovesovým vztahům růstu chyby. Studený atom oproti akcelerometru navigační třídy.
- Přenos času: časový jitter optického oproti RF spoji → přesnost synchronizace → jednosměrné určování vzdálenosti.
- Hybridní fúze (závěrečný balíček): kombinovaná sada PNT, která musí držet čas i polohu, s volitelným podporováním hodin optickým mezidružicovým přenosem času.
- Jeden citovaný referenční scénář na balíček v
scenarios/, přičemž každý číselný parametr nese recenzovanýprovenance. - Ochrany reprodukovatelnosti a čistoty repozitáře; CI (formát, clippy, testy, ochrany, MSRV) a potrubí vydání podmíněné tagem, které znovu spouští všechny kontroly.
- Dokumentace: README s architektonickými diagramy, zpráva o stavu validace, příručka pro přispěvatele, bezpečnostní politika a kodex chování; licence Apache-2.0; šablony issue/PR a konfigurace Dependabotu.
- Celé neutrální vůči dodavatelům; recenzované vědecké a metrologické citace zachovány.
- Čistota licence Apache-2.0: hlavičky SPDX ve všech zdrojích, soubor
NOTICEs upozorněním na ochranné známky, schvalování příspěvků podle Developer Certificate of Origin (DCO) a vynucování licencí a upozornění závislostí v CI pomocícargo-deny. - Pozicování open-core (README): bezplatný engine Apache-2.0 plus dostupná komerční podpora, integrace a proprietární rozšíření od Ashforde OÜ, financované službami, nikoli licenčními poplatky.
CITATION.cff, aby software bylo možné citovat.