Kshana · क्षण · o instante preciso
Um simulador de código aberto para a resiliência de PNT (posicionamento, navegação e temporização).
Estado da integração contínua em main
Cobertura de linhas próxima de 95 % de src/, medida em docs/COVERAGE.md e exigida em 85 % na integração contínua
176 de 401 capacidades VALIDATED em relação a uma referência independente externa, a partir da matriz de verificação
Estado do portão de qualidade do SonarQube Cloud
Versão v0.40.0
Licença: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, o registro conceitual do Zenodo de cada release
Uma licença comercial está disponível junto à Ashforde® OÜ, veja Edições
kshana no crates.io, a versão publicada atual
kshana no PyPI, a versão publicada atual
kshana no npm, a versão publicada atual
Abrir o Kshana Studio · Instalar · Capacidades · Evidências · Pesquisa · Documentação · Citar
Conteúdo
- Ensaie o minuto em que o GNSS apaga
- Novidades da 0,40, Novidades da 0,39, Novidades da 0,38 e a 0,38 em detalhe: pontuação do jammertest, os próprios indicadores do receptor, entradas de máquina, temporização e holdover, pacotes de normas, LunaNet AFS, o ciclo de ida e volta no laboratório, kshana-bench, o observatório, exportadores, óptica, navegação de usuários no espaço e infraestrutura lunar
- Kshana Studio e todas as páginas do Studio
- Capacidades: a tabela de áreas, todo tipo de cenário por família, todo comando, toda superfície
- Como uma execução funciona, Missões
- Evidências: o registro, domínios de capacidade
- Instalar, Arquitetura (e os diagramas), assistente de IA
- Edições, Pesquisa, Citar, Licença
- Referência: uso, formato de cenário, saída, estrutura do repositório, FAQ, solução de problemas, versionamento, roteiro, contribuição, documentação
Ensaie o minuto em que o GNSS apaga#
O Kshana reproduz jamming, spoofing e holdover de relógio quando os sinais do GNSS (Global Navigation Satellite System) falham, e diz por quanto tempo um sistema mantém a hora e a posição dentro de seu orçamento, e qual relógio ou sensor rende a maior margem. É um único motor em Rust. Ele roda em um terminal, um notebook, uma IDE (ambiente de desenvolvimento integrado), um assistente de IA (inteligência artificial) ou no seu navegador.
Toda execução é reproduzível bit a bit a partir do cenário, da semente e da versão do motor. Toda capacidade traz um de três rótulos em um registro verificado por máquina: VALIDATED (uma referência independente externa concorda), MODELLED (internamente consistente, e dito em voz alta) ou PARTNER (um parceiro de hardware é o responsável).
Estado: v0.40.0. Um substrato de simulação validado e reproduzível para a resiliência de PNT. Temporização e holdover vêm primeiro, porque esse domínio é o mais bem validado. O Kshana é um instrumento de estudo e de análise de compromissos: não é hardware gerador de sinais de radiofrequência (RF) (não aciona nenhum rádio e não transmite nada; sua saída em nível de sinal são arquivos de amostras IQ em banda base para receptores de software), não é um receptor GNSS de hardware nem certificado (seu receptor de software é uma ferramenta de análise) e não é um produto de voo. Novo na área? Comece pelo guia introdutório em linguagem simples e pelo glossário.
Novidades da 0,40#
A 0,40 acrescenta um orçamento de erro em nível de missão, rotula cada figura e tabela com seu nível de evidência, lê registros de relógio medidos, verifica envios de parceiros de dados, estima onde pode estar um emissor de interferência e fala dezessete idiomas além do inglês. O registro agora tem 401 linhas: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Nenhuma linha foi promovida a VALIDATED, e toda falha abaixo está fixada por um teste.
- Sequência de missão. O tipo de cenário
mission-threadencadeia fases do lançamento à reentrada (launch-ascent,leo-rendezvous,tli-and-cruise,entrye quatro tipos lunares) com regras de transferência declaradas, uma margem em relação aos requisitos declarados e o elo mais fraco; um exemplo de ponta a ponta de classe Artemis em 11 fases (segmentos terrestre e lunar), 92 tipos de cenário no total. Todo número é MODELLED. A propagação cislunar em relação à trajetória pública da Artemis I não atinge o seu limiar fixado antecipadamente (45,3 km e 0,25 m/s contra 5 km e 0,05 m/s; a causa são pequenas manobras que o modelo não inclui), e o propagador lunar em relação à órbita do CAPSTONE não atinge (136,8 km contra 25 km ao fim de uma revolução); a comparação com o LRO é atingida. As linhas permanecem MODELLED (Sequência de missão, segmento lunar). No Studio, a sequência é lida em/studio/mission-thread/. - Rótulos de evidência. Cada figura e tabela que uma execução grava traz o nível e os ids das linhas do registro em que se apoia, lidos da matriz.
- Relógios medidos. Oito formatos de registro de relógio são lidos (
docs/CLOCK-LOG-FORMATS.md) e uma série ajustada pode conduzir o holdover. Em relação a limiares fixados antecipadamente, o ajuste não atinge F1(a) em cinco de seis registros e F2 em um; ambos permanecem MODELLED (Registro de alterações). - Parceiros de dados.
kshana partner checkverifica o formato de um envio e não pontua nada (docs/PARTNER-DATA.md). - Região do emissor.
kshana interference-map locatefornece uma região e uma elipse, nunca um ponto isolado, a partir de relatos ADS-B ou AIS. Comparado uma vez com os locais de transmissores do Jammertest 2025, o resultado é NOT ASSESSABLE para as duas fontes (poucas sessões programadas nos dados abertos), portanto a linha permanece MODELLED (Mapa de interferência). - Benchmark. A recampanha da 0,40 atinge A3, D3 (ambos EXPLORATORY), R3 e R4; A2, D1 e R1 permanecem NOT MET (Bench).
- Idiomas. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja e zh-Hans, como traduções automáticas que nenhum falante nativo revisou; o inglês é a referência, e as execuções em outros idiomas levam cerca do dobro do tempo (
docs/i18n.md).
Novidades da 0,39#
A 0,39 não acrescenta nenhuma funcionalidade e não altera nenhum resultado; a saída do motor é a saída da 0,38. Ela corrige uma coisa na linha de comando, atualiza dependências das ferramentas de validação cruzada e declara os vereditos do benchmark por completo.
- Linha de comando.
kshana kinds | head(qualquer saída padrão fechada) não entra mais em pânico: o programa termina silenciosamente com status 141, como outras ferramentas fazem para um pipe fechado. Outros erros de escrita continuam se reportando. - Dependencies.
memmap20.9.11 nos dois locks de verificação cruzada do ANISE epillow13.0.0 ecertifi2026.10.19 nas fixações do ambiente da referência independente, tudo sobxval/: nada do que é distribuído mudou. - kshana-bench, todos os vereditos. Contra os limiares pré-registrados, três são NOT MET, cada um fixado por um teste: A2 (
agc_k_sigmaAUC 0,766 contra pelo menos 0,80), D1 (maior lacuna 0,0301) e tarefa (b) R1 (herdado, não reexecutado). Nenhum limiar foi afrouxado (Bench).
Novidades da 0,38#
A 0,38 torna mensurável o árbitro neutro: ela pontua registros de receptores contra um cronograma de testes publicado, lê mais receptores e sensores, testa sistemas de temporização e inclui um benchmark e um observatório de interferência. Continua consultiva: nada aqui é certificado, nenhum resultado é uma homologação e nada transmite. Cada linha informa o que o registro mantém para ela (como um rótulo é conquistado); um estado nomeia apenas o que foi verificado, e a linha do registro e a página vinculada dizem o que não foi.
| Novo na 0,38 | O que faz, e por quê | Estado no registro | Lido |
|---|---|---|---|
| Pontuação do Jammertest | kshana jammertest import lê o catálogo de testes e o plano de transmissão publicados da NPRA como verdade programada; jammertest score pontua o registro de um receptor por teste (latência de detecção, alarmes perdidos, alarmes falsos, tempo de recuperação), como um pacote de evidências assinado se você fornecer uma chave |
MODELLED: uma linha do registro. Os limiares foram pré-registrados antes de qualquer execução pontuada; nos dados do JammerTest 2024 a regra de dados mínimos falhou nas duas execuções (4 e 7 janelas pontuáveis contra 10 exigidas), de modo que nenhum limiar é avaliável e nada é afirmado | Jammertest |
| Os sinalizadores do próprio receptor | UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG e NovAtel RXSTATUS lidos em um self_report por época e comparados com os alarmes do Kshana (ambos, só o receptor, só o Kshana, nenhum); um leitor Septentrio SBF e uma entrada --serial somente de leitura |
MODELLED; a concordância entre o detector de um receptor e o do Kshana não é validação | Confiança do receptor |
| Mais receptores e sensores | RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7 (das tabelas do pyrtcm, com licença BSD, não do texto da RTCM), fluxos de monitor do GNSS-SDR, um registro de IMU como segundo sensor, um pacote ROS 2, uma ponte gnss_lib_py e imu-fit para parâmetros de sensores híbridos |
MODELLED: seis linhas do registro; apenas fixtures escritas por nós, nenhuma captura de um receptor, IMU, execução do GNSS-SDR ou grafo ROS reais foi lida | Entradas de máquina |
| Testes de temporização e de holdover | o tipo de cenário holdover-test pontua um teste de holdover (GNSS removido pelo operador, holdover, recuperação) a partir de um registro medido de erro de tempo contra máscaras da ITU-T, "medido contra a máscara"; leitores de registros do linuxptp e do chrony; os estágios de hardware e o campo lab-attestation |
MODELLED: duas linhas do registro; os horários são a declaração do operador, não verificados | HIL de temporização, Segurança de hardware |
| Pacotes de normas, LunaNet AFS, ciclo completo de laboratório | pacotes pontuados para o DHS RPCF, a IMO MSC.1/Circ.1575 e o Apêndice F do ICAO Doc 9849 contra limiares declarados antes da execução, "fornece evidências em apoio de"; uma correspondência com o NIST IR 8323r1; um gerador e verificador de códigos do LunaNet AFS; um pacote assinado que vincula o cenário de uma execução de laboratório, as condições de teste, o registro do receptor e a pontuação | MODELLED para os pacotes e o ciclo completo; a verificação de códigos do AFS é VALIDATED contra suas colunas de verificação impressas (veja as linhas do registro) | Normas, LunaNet AFS |
| kshana-bench e o observatório | tarefas, partições e métricas fixas para detecção de interferência, detecção em IQ, previsão de holdover e a lacuna de otimismo, com um conjunto reservado selado e um quadro de classificação estático; um produto diário reproduzível de interferência com atraso de 24 h, células grosseiras e sem atribuição | nenhuma linha própria no registro: ele pontua submissões, e suas linhas de base são rotuladas MODELLED nos arquivos de resultados; contra os limiares pré-registrados, o pontuador, C1 a C3 e D2 são atingidos e três limiares são NOT MET (fixados por testes): A2 (agc_k_sigma AUC 0,766 contra pelo menos 0,80 na partição de teste), D1 (maior lacuna 0,0301) e tarefa (b) R1 (herdado, não reexecutado); veja xval/bench/RESULTS-v2.md |
Bench, Observatório |
| Exportadores | telemetria de confiança como mensagens de descoberta e de estado MQTT do Home Assistant (somente publicação, sem credenciais), ao lado de Prometheus, CEF, LEEF e OTLP | MODELLED: uma linha do registro | Telemetria de confiança |
| Margem do enlace óptico ao longo do tempo | o tipo de cenário optical-atmosphere pode gravar uma realização com semente do clima de um sítio como uma série de margem do enlace |
MODELLED: uma linha do registro; um sorteio do modelo, não o clima | Atmosfera óptica |
Destaques da 0,37: changelog. A lista completa da 0,38 está no changelog.
A 0,38 em detalhe#
Cada capacidade da tabela acima, em poucas linhas: o que faz, um comando para executá-la, uma imagem desenhada a partir de uma execução real do motor e o que o registro mantém para ela. As imagens são escritas por tools/gen_figures_038.py em docs/figures/0.38/ (nunca desenhadas à mão): python3 tools/gen_figures_038.py as reescreve a partir de um motor compilado, e --check falha se uma estiver desatualizada ou se sua legenda aqui for diferente. Onde a entrada é um registro, trata-se de um registro fictício que o script escreve, porque os registros reais de terceiros nunca são incorporados ao repositório, e a legenda diz isso. Tudo abaixo é consultivo: não certificado, não uma homologação, e nada transmite. Um estado nomeia o que foi verificado e nada mais; como um rótulo é conquistado.
Pontuação do Jammertest#
kshana jammertest import transforma o catálogo de testes e o plano de transmissão publicados da NPRA em verdade programada, e kshana jammertest score pontua um registro de receptor contra ela: para cada teste programado, se foi detectado, com que atraso e quanto tempo o receptor levou para se recuperar, além de alarmes falsos fora de todo slot. O catálogo é obtido, nunca incorporado ao repositório.
xval/jammertest-plan/fetch.sh ../jammertest-plan
kshana jammertest score session.toml --catalog ../jammertest-plan/testcatalog2025.json \
--plan ../jammertest-plan/plan-tuesday-2025-09-16.json --location 1 --json
Estado no registro: MODELLED. Os limiares foram fixados antes de qualquer execução pontuada; nos dados do JammerTest 2024 a regra de dados mínimos falhou nas duas execuções, de modo que nenhum limiar é avaliável e nada é afirmado. Jammertest.
Os sinalizadores do próprio receptor#
UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG e NovAtel RXSTATUS são lidos em um self_report por época e postos ao lado dos alarmes do Kshana: ambos, só o receptor, só o Kshana ou nenhum. Um leitor Septentrio SBF e uma entrada --serial somente de leitura alimentam a mesma comparação. Nenhum dos lados é verdade de referência.
kshana receiver-trust session.toml # [log] format = "ubx", path = "receiver.ubx"
Estado no registro: MODELLED. A concordância entre o detector de um receptor e o do Kshana não é validação. Confiança do receptor.
Mais receptores e sensores#
RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7, fluxos de monitor do GNSS-SDR, um registro de IMU como segundo sensor, um pacote ROS 2 e uma ponte gnss_lib_py terminam todos na mesma linha do tempo de receiver-trust. imu-fit lê, de um registro de IMU estacionária, os parâmetros de sensor de que os cenários híbridos e de fusão precisam, de modo que um cenário possa ser executado com o sensor que você realmente tem.
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Estado no registro: MODELLED. Apenas fixtures escritas por nós; nenhuma captura de um receptor, IMU, execução do GNSS-SDR ou grafo ROS reais foi lida. Entradas de máquina.
Testes de temporização e de holdover#
O tipo de cenário holdover-test pontua um teste de holdover (GNSS removido pelo operador, holdover, recuperação) a partir de um registro medido de erro de tempo contra máscaras da ITU-T, e diz isso com essas palavras: medido contra a máscara. Leitores de registros do linuxptp e do chrony o alimentam; os estágios de hardware e o campo lab-attestation dizem quem declarou o quê.
kshana scenarios/holdover-test-example.toml
Estado no registro: MODELLED. Os horários em que o GNSS foi removido e restaurado são a declaração do operador, não verificados. HIL de temporização, Segurança de hardware.
Pacotes de normas#
Pacotes pontuados para os perfis de teste de PNT resiliente do DHS, a IMO MSC.1/Circ.1575 e o Apêndice F do ICAO Doc 9849, além de uma correspondência com o NIST IR 8323r1 em compliance-report. Cada teste executa um cenário incluído e compara um campo do resultado com um limiar declarado antes da execução; um teste que precisa de um registro de receptor é listado como necessitando de uma entrada, não pontuado. A redação é "fornece evidências em apoio de".
kshana standards-pack list
kshana standards-pack run imo-circ-1575
Estado no registro: MODELLED. Um limiar atingido diz que um cenário modelado atingiu um limiar declarado, nada sobre um produto; todo fracasso é mantido e fixado por um teste. Normas.
LunaNet AFS#
O gerador de códigos do Sinal Direto Aumentado do LunaNet (códigos Gold, Weil e terciários, o quadro de mensagem e sua codificação de erros) e um verificador para um fluxo de símbolos gravado ou gerado, fixado a uma edição da especificação.
kshana lunanet-afs-check spec
kshana lunanet-afs-check generate --frames 2 --out afs.sym
kshana lunanet-afs-check symbols afs.sym
Estado no registro: VALIDATED para as verificações de código e de sincronização, contra os valores que a especificação imprime (que ela marca como TBC); uma verificação é NOT MET, mantida e fixada (uma coluna impressa de código terciário diverge: o documento imprime o mesmo valor para dois PRNs). As palavras LDPC e CRC dos subquadros 2 a 4 não são verificadas. As linhas do registro dizem exatamente quais. LunaNet AFS.
Ciclo completo de laboratório#
kshana.test-conditions/1 é uma descrição publicada do que um laboratório fez (eventos, horários, potências). kshana evidence round-trip vincula o hash do cenário, o hash das condições, o hash do registro do receptor e a pontuação em um único pacote assinado, e recusa um pacote cujas condições e cenário de pontuação discordem sobre os eventos. O Kshana nunca produz nem reproduz um sinal: como um cenário chegou a um receptor é responsabilidade do operador.
kshana evidence --help
A imagem é o layout de um pacote. Estado no registro: MODELLED. Condições de teste, Test bench.
kshana-bench#
Tarefas, partições e métricas fixas para detecção de interferência, detecção em IQ, previsão de holdover e a lacuna de otimismo, com um conjunto reservado selado e um quadro de classificação estático. Ele pontua submissões; não é um ranking de receptores.
kshana bench baseline --task d --split test --out results/
Estado no registro: nenhuma linha própria no registro; as linhas de base são rotuladas MODELLED nos arquivos de resultados. Contra os limiares pré-registrados, o pontuador, C1 a C3 e D2 são atingidos e três limiares são NOT MET, cada um fixado por um teste: A2 (agc_k_sigma AUC 0,766 contra pelo menos 0,80 na partição de teste), D1 (maior lacuna 0,0301) e tarefa (b) R1 (herdado da campanha anterior, não reexecutado). As cifras estão em xval/bench/RESULTS-v2.md. Bench.
Observatório de interferência#
Um produto por dia UTC e por região a partir de um arquivo aberto de posições de aeronaves, em uma grade grosseira fixa: cada célula é degraded, not degraded ou not observed (o que não é "limpo"). Liberado no mínimo 24 h após o fim do dia, com células pequenas suprimidas e sem atribuição de causa.
kshana interference-map daily /path/to/extracted/2026-09-15 \
--dataset adsb-lol --day 2026-09-15 --bbox 53.5,9.0,66.0,31.0 --out products/
A imagem são os dias de amostra registrados, não um produto do observatório. Estado no registro: MODELLED: sem referência independente externa, sem verdade de referência e sem atribuição de causa; uma célula not observed não foi avaliada, o que não é o mesmo que limpa. Método do observatório.
Exportadores#
Telemetria de confiança como texto Prometheus, CEF, LEEF, OTLP e mensagens de descoberta e de estado MQTT do Home Assistant. O comando publica somente em um destino que você fornece e não guarda credenciais.
kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Estado no registro: MODELLED. Telemetria de confiança.
Margem do enlace óptico ao longo do tempo#
O tipo de cenário optical-atmosphere pode gravar uma realização com semente do clima de um sítio como uma série de margem do enlace: episódios de nuvens, uma coluna de água líquida para cada um, uma amostra de cintilação por passo. A página de PNT óptico do Studio abre os cenários optical-atmosphere.
kshana scenarios/optical-atmosphere-network.toml
Estado no registro: MODELLED. Um sorteio do modelo, não o clima. Atmosfera óptica.
Novas visões do Studio#
kshana.dev/studio ganha uma Reprodução de ponte (duas execuções lado a lado em um mesmo relógio de missão, em /studio/replay/), uma página de PNT óptico (/studio/optical/), uma página de teste de holdover (/studio/holdover/) e um visualizador do observatório (/studio/observatory/). Elas executam o mesmo motor no navegador, nada é enviado, e trazem a mesma declaração consultiva. As imagens acima são desenhadas por um script a partir da saída do próprio motor; não são capturas de tela dessas páginas.
Navegação de usuários espaciais (gnss-ssv)#
Para uma espaçonave acima, ao redor ou muito além das órbitas GNSS: quantos sinais GNSS ela pode usar, quão fortes são, quão boa é a geometria e o que um filtro de bordo pode fazer com eles. Um tipo de cenário, quatro modos, escolhidos pelas tabelas do cenário: uma casca de usuários (a parcela do tempo com um e com quatro sinais, por constelação), uma trajetória (sinais, C/N0, diluição da precisão e o meio de raio rasante ao longo de uma órbita), uma execução de navegação (um filtro de nove estados sobre pseudodistâncias, até a Lua) e uma formação (navegação relativa de satélites secundários em torno de um principal). A fonte pública para a comparação de disponibilidade é o livreto interoperável do Volume de Serviço Espacial GNSS (UN OOSA ST/SPACE/75, do Comitê Internacional sobre GNSS), que é ele próprio uma simulação; é obtido, nunca incorporado ao repositório. Página completa: docs/SSV.md.
kshana scenarios/gnss-ssv-shell.toml # shell: the upper space service volume, reduced size
kshana scenarios/gnss-ssv-heo.toml # trajectory: a high Earth orbit, limb medium
kshana scenarios/gnss-ssv-nav-lunar.toml # navigation: an onboard filter toward the Moon
kshana scenarios/gnss-ssv-formation-heo.toml # formation: relative navigation
Estado no registro: MODELLED, e a comparação com o livreto em sua maior parte fracassa. Os limiares foram fixados antes da execução. De oito, apenas S0 (o orçamento de enlace inverso, 13 de 13 valores) e S6 (a missão lunar) são atingidos. S1 a S5 e S7 são NOT MET: a geometria dos volumes de serviço superior e inferior (43 de 52 e 48 de 52 células), o volume de serviço superior de 15/20/25 dB-Hz, as seis missões GEO, a missão HEO e o padrão paramétrico de lóbulos laterais contra padrões medidos de painéis do GPS. Quase todo fracasso em S1 a S5 envolve o GLONASS, e o livreto imprime dois ângulos de referência diferentes para ele; uma variante diagnóstica que usa o outro par leva S1, S2 e S4 a todas as células, mas não substitui a execução de registro e nenhuma linha é VALIDATED. O filtro absoluto da execução de formação também é excessivamente confiante (erro quadrático normalizado médio bem acima do valor de cerca de 3 que um filtro consistente dá).
Navegação de usuários espaciais, o que a comparação mostra.
Infraestrutura lunar (lunar-infrastructure)#
A órbita e a superfície da Lua como infraestrutura de navegação e geodésica, em cinco estudos escolhidos por study: od-consistency (uma determinação de órbita GNSS-Terra a bordo em uma órbita de halo contra uma independente em solo), carrier-phase (fixação de ambiguidade inteira entre estações na superfície e um orbitador), frame-coestimation (o datum lunar a partir de medições de distância de estações da Terra com e sem enlaces com o orbitador), space-tie (deslocamentos de laser, VLBI e GNSS em uma mesma espaçonave contra o erro de ligação local) e geodesy-sensitivity (qual família de observáveis enxerga os números de Love h2, k2 e l2). O modelo é de três corpos restrito, com simplificações declaradas e entradas ilustrativas. Página completa: docs/LUNAR-INFRASTRUCTURE.md.
kshana scenarios/lunar-infrastructure-od-consistency.toml
kshana scenarios/lunar-infrastructure-carrier-phase.toml # quick; the scored run takes about eight minutes
kshana scenarios/lunar-infrastructure-frame-coestimation.toml
kshana scenarios/lunar-infrastructure-space-tie.toml
kshana scenarios/lunar-infrastructure-geodesy-sensitivity.toml
Estado no registro: MODELLED, e três limiares são NOT MET. A numérica é verificada contra programas independentes em numpy e scipy; nada é comparado com uma medição de uma grandeza lunar, e nada é VALIDATED. Atingidos: as duas soluções de órbita são consistentes (q médio 5,81 contra 6 esperado), e os enlaces com o orbitador elevam o menor autovalor do datum cerca de 111 vezes, supondo uma órbita conhecida. Não atingidos: o erro de modelo injetado de 3e-10 m/s2 não é detectado (C3: a solução de bordo é conhecida a cerca de 350 m, de modo que cerca de dez metros se escondem em sua covariância); a fixação de inteiros não é alcançada (1 a 3 % de sucesso a 25 dBi, e a 12 dBi registrados o problema não pode ser formado); e a metade do traço do G3 para acrescentar uma família de observáveis (o traço aumentou em 12 de 28 acréscimos, cada vez porque a família elevou o posto). Cada fracasso é fixado por um teste. Infraestrutura lunar.
Kshana Studio#
Abra kshana.dev/studio e o motor inteiro roda no seu navegador, compilado para WebAssembly. Nada a instalar, e nada é enviado. O Studio tem duas visões do mesmo motor, e uma chave no cabeçalho alterna entre elas, mantendo o cenário, a visão e quaisquer configurações que você alterou.
A visão Simples é onde o Studio abre. Ela parte de perguntas (quantos satélites consigo ver, posso confiar na minha solução de posição, por quanto tempo um relógio mantém a hora, o que um jammer faz com o meu receptor) e de um mapa de tudo o que o motor pode fazer, cada área com sua parcela de métodos validados. Abra um cenário e a resposta vem primeiro: uma frase simples, escrita para o que aquele cenário mede, depois suas cifras principais e um gráfico. No máximo cinco configurações ficam à mostra, as que mais mudam a resposta; as demais esperam em Configurações avançadas. Como isto é calculado explica o método, e Para pesquisadores traz as cifras do próprio motor, o arquivo do cenário, o código para executá-lo a partir do Python e a citação.

A visão Avançada é o painel completo: a biblioteca de cenários, cinco etapas numeradas (Escolher, Definir, Executar, Ler resultados, Compartilhar ou exportar), as cifras principais com chips PASS e FAIL onde a execução declara um limiar, e todos os painéis: visão geral, gráficos, mapas, reprodução, o relatório do motor e exportações. Uma caixa de busca alcança cenários, domínios e os campos dentro deles, e você pode fixar até quatro execuções e compará-las lado a lado.
A tela inicial da visão Simples, e a visão Avançada após uma execução


O código-fonte do Studio e suas notas de compilação estão em web/README.md.
O site#
O restante de kshana.dev é construído a partir dos próprios arquivos e execuções do motor deste repositório: missões, capacidades, o registro de evidências, a pesquisa publicada e as edições.

Capacidades#
Um único motor cobre toda a cadeia de falhas, do primeiro satélite sob interferência ao último nanossegundo de holdover do relógio. O motor tem 92 tipos de cenário; kshana kinds os lista e docs/SCENARIOS.md documenta cada campo.
| Capacidade | O que responde |
|---|---|
| Espectro | como um jammer toma a banda L do GNSS, banda por banda, segundo a segundo |
| Relógios e temporização | por quanto tempo cada relógio mantém a hora após a perda do GNSS |
| Constelações em torno de qualquer corpo | cobertura, diluição da precisão e disponibilidade ao redor da Terra, da Lua ou de Marte |
| Sistema solar | onde está cada planeta, e o tempo de luz de qualquer enlace |
| Navegação em órbita baixa da Terra | uma passagem, um enlace, uma mensagem de navegação e uma solução fundida, etapa por etapa |
| Campanhas | uma missão encadeada, uma varredura ou um conjunto Monte Carlo em um único cenário |
| Animação | a série temporal de uma execução como desenho animado, um reprodutor ou quadros |
| Relatórios | cada figura com sua unidade e seu rótulo, em HTML (HyperText Markup Language) e JSON (JavaScript Object Notation) |
| Exportações de interoperabilidade | órbitas e geometria para outras ferramentas: SP3, CCSDS OMM e OEM, CZML, KML, GeoJSON, STK e SigMF |
| Confiança marítima | a ponte pode confiar nesta solução de posição: uma pontuação de 0-100 e motivos para o NMEA de uma embarcação, ao vivo ou a partir de um registro (consultivo, não um equipamento de navegação homologado) |
| Fluxos NMEA de treinamento | NMEA de ponte sintético com jamming e spoofing roteirizados e um registro do instrutor, para treinamento de tripulações (apenas texto; nunca para os sistemas de navegação reais de uma embarcação; consultivo, não um equipamento de navegação homologado) |
| Mapa de interferência | onde aeronaves e navios relataram dados de navegação degradados, e quanto de uma rota isso atinge |
| Região do emissor | onde, sob hipóteses declaradas, pode estar uma fonte de relatos de posição degradados: regiões com confiança declarada, um centroide com sua elipse, nunca um ponto (MODELLED; kshana interference-map locate) |
| Pacotes de evidências | um registro técnico assinado e verificável offline da janela de registro de uma embarcação e do que o motor calculou a partir dela, para um relatório de incidente (consultivo, não um equipamento de navegação homologado) |
| Telemetria de confiança | o fluxo de confiança como métricas Prometheus, eventos SIEM e OpenTelemetry opcional, com um painel Grafana de exemplo (deploy/grafana/kshana-gnss-trust.json) |
| Signal K e OpenCPN | a pontuação de confiança no servidor Signal K de um barco e no OpenCPN, com uma construção de referência para um computador pequeno ao lado do receptor (consultivo, não um equipamento de navegação homologado) |
| Exportação para test bench | kshana bench-export: o movimento do veículo e os eventos de um cenário para um simulador GNSS de laboratório (nenhum sinal é gravado), e como pontuar depois o registro do receptor |
| Mapeamento e relatório de compliance | kshana compliance-report: para quais linhas de marcos públicos de resiliência um conjunto de execuções fornece evidências em apoio de, e a lacuna que sobra |
| Notebooks | tutoriais executáveis: fluxos de confiança e de treinamento de embarcações, uma exposição de rota ao mapa de interferência, mapeamento de compliance e o test bench, GDOP quântico contra clássico |
| Verificador Galileo OSNMA | os dados de navegação de quais satélites um receptor pode autenticar criptograficamente, e por que uma verificação falha; o Kshana não concede nenhum direito sob os ICD IPRs do OSNMA da UE (veja o AVISO na página) |
Os formatos de exportação por extenso: SP3 é Standard Product 3; CCSDS OMM e OEM são as Orbit Mean-elements Messages e Orbit Ephemeris Messages do Consultative Committee for Space Data Systems; CZML e KML são as Cesium e Keyhole Markup Languages; STK é Systems Tool Kit; SigMF é o Signal Metadata Format.
Cada capacidade, desenhada a partir de uma execução real: a cascata da banda L, o mapa de cobertura, o sistema solar e uma passagem em órbita baixa da Terra
Execute qualquer um deles com kshana example <scenario> > s.toml && kshana s.toml: os cenários são l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour e leo-pass-iridium.
As capacidades marítimas e de interferência, desenhadas a partir de entradas sintéticas registradas: uma pontuação de confiança, um mapa de interferência com exposição de rota, um fluxo de treinamento e um pacote de evidências
Todos os quatro são dados fictícios e consultivos: mostram o formato e o comportamento do software, não o desempenho de qualquer receptor ou sistema frente à interferência. Execute o primeiro com kshana receiver-trust examples/maritime-trust/session.toml, o segundo com kshana route-exposure sobre as amostras em examples/interference-map/, o terceiro com kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (somente para treinamento: nunca o alimente em equipamento de navegação real) e o quarto como em docs/EVIDENCE-PACKS.md.
A tabela completa de capacidades, domínio por domínio
O detalhe completo, domínio por domínio, segue; para um registro de maturidade por capacidade, veja docs/CAPABILITY.md e docs/VALIDATION.md.
| Domínio | Capacidade |
|---|---|
| Órbita e geometria | Propagação SGP4/SDP4 (validada a 4,12 mm contra todos os 666 vetores AIAA 2006-6753); elementos de duas linhas reais (um instantâneo do Celestrak gps-ops registrado e datado) ou constelações Walker-delta sintéticas cujos elementos médios realizam a fórmula i:T/P/F a menos de 1 km ao longo de uma propagação de 24 h; visibilidade multiconstelação, diluição da precisão — geométrica, de posição, horizontal, vertical e de tempo (GDOP/PDOP/HDOP/VDOP/TDOP), validada a 1e-6 contra o gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), e disponibilidade GNSS; um otimizador de projeto de constelação sem gradiente, dimensionamento do número mínimo de satélites por ruas de cobertura, uma ferramenta de comparação multiconstelação e uma varredura de projeto Walker que tabula cobertura / PDOP / tempo de revisita sobre uma grade de planos × satélites e informa os projetos ótimos de Pareto. |
| Propagador numérico | Um propagador numérico Cowell (src/propagator.rs) que complementa o caminho analítico SGP4/SDP4, com um modelo de forças hierárquico de sete perturbações (src/forces.rs): dois corpos + o campo zonal completo J2–J6 (os coeficientes harmônicos zonais de achatamento da Terra J2 a J6; o gradiente analítico exato de seu potencial perturbador), um geopotencial harmônico esférico tesseral EGM2008 opcional até grau/ordem 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; coeficientes reais da NGA — National Geospatial-Intelligence Agency dos EUA —, recorrência de Legendre normalizada de Holmes–Featherstone, verificada de forma cruzada contra as funções de Legendre em forma fechada e a identidade analítica de ∇V), gravidade de terceiro corpo do Sol e da Lua dirigida pela época (uma efeméride embutida de baixa precisão, sem kernel DE/SPK — Development Ephemeris / SPICE Spacecraft and Planet Kernel), pressão de radiação solar (modelo de bala de canhão com sombra cônica de umbra+penumbra), arrasto atmosférico (densidade exponencial por partes de Vallado, atmosfera co-rotante), a correção relativística pós-newtoniana de Schwarzschild e o termo de arrasto de referencial de Lense–Thirring (IERS — International Earth Rotation and Reference Systems Service — Conventions 2010 §10, linear no momento angular da Terra, ~1–2 ordens abaixo de Schwarzschild) — conduzido por uma escolha de dois integradores adaptativos (RK4 — Runge–Kutta de quarta ordem — com duplicação de passo ou o par embutido Dormand–Prince RK5(4)). Validado contra o Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 épocas em LEO (órbita baixa da Terra) + GTO (órbita de transferência geoestacionária), com os níveis de forças conservativas concordando a um pior caso de |Δr| 0,08 m em 24 h (tests/numerical_cowell_propagator_reference.rs); o nível de arrasto atmosférico é caracterizado separadamente (≈ 333 m / 24 h) e as entradas absolutas de efeméride do Sol/Lua e de densidade permanecem honestamente modeladas. Evidência interna adicional (não validação externa): a órbita não perturbada é verificada contra a solução exata de Kepler em variáveis universais a menos de um metro em 24 h, energia/momento angular se conservam a ~1e-9, e cada perturbação coincide com uma assinatura em forma fechada derivada à mão. |
| Manobras e projeto de trajetória | Nós de ΔV impulsivos com propagação de covariância 6×6 (referenciais de erro de execução ECI — inercial centrado na Terra — / LVLH — vertical local, horizontal local), integração de queima finita verificada contra a equação de foguete de Tsiolkovsky em forma fechada a < 0,01 %, um solucionador de Lambert de revolução única de Izzo-2015, um propagador de Kepler exato em variáveis universais e uma varredura porkchop (lançamento × chegada) de C3 (energia de lançamento) / V∞ de chegada emitida como uma grade de contornos JSON — a camada de simulação de desempenho acima do GMAT/Orekit, com cada saída de Lambert verificada de ida e volta contra a verdade de dois corpos e o mínimo do porkchop verificado contra o piso analítico de Hohmann. |
| Sistemas de tempo e referenciais | Escalas UTC / TAI / TT / UT1 com segundos intercalares do IERS (Tempo Universal Coordenado, Tempo Atômico Internacional, Tempo Terrestre e o tempo de rotação da Terra Universal Time 1), uma API (interface de programação de aplicações) de data juliana, o Ângulo de Rotação da Terra (ERA) IAU-2000 (União Astronômica Internacional), TEME ↔ ECEF baseado em GMST (Greenwich Mean Sidereal Time) (equador verdadeiro, equinócio médio ↔ centrado na Terra e fixo na Terra) com referenciais geodésicos WGS-84 (World Geodetic System 1984), precessão IAU 2006 (Fukushima–Williams), nutação IAU 2000A/2000B completa, movimento polar do IERS e a redução GCRS↔ITRS IAU 2006/2000A baseada em CIO sem equinócio (CIO = Celestial Intermediate Origin) — tudo validado bit a bit contra os vetores SOFA/ERFA, e verificado de forma cruzada e independente contra o ANISE (a reimplementação NAIF/SPICE em Rust puro; NAIF = Navigation and Ancillary Information Facility da NASA, a National Aeronautics and Space Administration dos EUA): o GCRS→ITRS do Kshana contra o ITRF93 do ANISE (International Terrestrial Reference Frame 1993) a partir do earth_latest_high_prec.bpc do JPL, com os mesmos parâmetros de orientação da Terra do IERS alimentados em ambos, concordam a ≤ 0,86 m no solo / ≤ 3,6 m em órbita GNSS (máx. 0,028″) em oito épocas de 2020–2023. |
| Inercial | INS strapdown de três eixos — atitude por quatérnio, mecanização NED (norte-leste-baixo) WGS-84, compensação de coning/sculling e um modelo determinístico de erros da IMU (fator de escala, desalinhamento, sensibilidade a g, quantização, deriva); um acelerômetro de interferômetro de átomos frios a partir de primeiros princípios (fase de Mach–Zehnder, ruído de projeção quântica, decaimento de contraste, acoplamento de vibração) que deriva o coeficiente de passeio aleatório de velocidade; e um filtro de partículas de reamostragem por importância sequencial para navegação assistida por mapa (referenciada em terreno/gravidade) sem GPS. |
| PNT alternativo (sem GPS) | Um modelo de medição de gravímetro de átomos frios cujo piso de ruído branco (σ = ASD/√τ, ASD = densidade espectral de amplitude) é derivado da física do acelerômetro CAI; um campo de anomalia de gravidade em harmônicos esféricos de baixo grau e totalmente normalizado (verificado contra as funções de Legendre em forma fechada e uma anomalia de termo único derivada à mão) mais mascons sintéticos; o núcleo de síntese de funcionais de gravidade (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — o "leitor de mapa" contra o qual um navegador assistido por gravidade faz a correspondência — é validado contra o padrão de gravidade normal GRS80 (Geodetic Reference System 1980), reproduzindo a gravidade normal de Somigliana em forma fechada e os γ_e / γ_p publicados a 3.5e-12 e produzindo um mapa de perturbação fisicamente limitado a partir do campo EGM2008 real do ICGEM (International Centre for Global Earth Models) (RMS — raiz do valor quadrático médio — ≈ 26 mGal, máx. ≈ 89 mGal em d/o 70; tests/icgem_gravity_reference.rs); e um filtro de partículas de correspondência de mapa de gravidade que recupera uma trajetória sem GPS a partir da sequência de anomalias que atravessa. Estende-se à navegação referenciada ao terreno (TERCOM/SITAN — terrain contour matching / Sandia Inertial Terrain-Aided Navigation — contra um DEM (modelo digital de elevação) SRTM (Shuttle Radar Topography Mission) .hgt, src/altpnt/terrain.rs), um campo geomagnético principal IGRF-14 (International Geomagnetic Reference Field, 14ª geração) até grau/ordem 13 (src/igrf.rs, verificado contra a forma fechada do dipolo inclinado e diferenças finitas de ∇V), e um navegador combinado de gravidade + magnético + terreno que funde os três canais escalares por um único filtro de partículas (a informação é aditiva — nenhum canal piora a solução). Um benchmark de 60 minutos sem GPS (uma interrupção de ~700 km / uma hora em que a solução inercial deriva até ~70 km) é recuperado a ~145 m (< 500 m) por um correspondente hierárquico do grosseiro ao fino — o alvo Quantum Wayfarer do NAVISP da ESA (Navigation Innovation and Support Programme). |
| Fusão | EKF (filtro de Kalman estendido) de estado de erro GNSS/INS fracamente acoplado de 15 estados com realimentação em malha fechada (o pacote gnss-ins); uma atualização de pseudodistância fortemente acoplada que continua corrigindo com menos de quatro satélites; um filtro acoplado de relógio + posição; um estimador geral de Kalman unscented (de pontos sigma) para medições fortemente não lineares; um navegador UKF GNSS/INS fortemente acoplado (pseudodistância + Doppler) cuja deriva orbital por modelo de forças é verificada quanto à autoconsistência a 0,77 m RMS ao longo de uma passagem LEO curva de 30 minutos que inclui uma interrupção de GNSS de 120 segundos (uma cifra de consistência do filtro, não uma validação por referência independente externa — este navegador permanece MODELLED); e um UKF GNSS/INS fortemente acoplado completo de 17 estados (posição, velocidade, erro de atitude, vieses do acelerômetro e do giroscópio, viés e deriva do relógio) cuja navegação por estima quântica CAI atravessa uma interrupção de 120 segundos com o passeio aleatório de velocidade derivado do acelerômetro de átomos frios. |
| Determinação de órbita | Recuperação de um estado orbital [r, v] a partir do rastreamento de distância por estação em solo, compondo o modelo de forças de dois corpos + J2 e o integrador RK4 com um corretor em lote de Gauss–Newton (determine_orbit_batch, submétrico / mm·s⁻¹ a partir de distâncias sem ruído, ~2 m com um piso de ruído de 5 m) e uma variante sequencial com filtro unscented (determine_orbit_sequential). |
| Observabilidade e teoria da estimação | Uma camada geral e reutilizável de informação de Fisher / Cramér–Rao (src/fim.rs): a matriz de informação M = HᵀWH, o limite inferior de Cramér–Rao, o posto de observabilidade e o espaço nulo do defeito de datum (pseudoinversa de Moore–Penrose) e escalares de projeto de experimento ótimos D/A/E/T a partir de um autosolucionador simétrico de Jacobi. Validado — autovalores contra numpy.linalg.eigh, a covariância do CRLB contra σ²(XᵀX)⁻¹ via numpy.linalg.inv e o DOP GNSS a partir da matriz de informação, todos coincidindo a 1e-9 (tests/fim_observability_reference.rs), e verificado adicionalmente de forma cruzada contra os limites em forma fechada de Kay (1993) com atingimento do CRLB por Monte Carlo. Sustenta o motor de DOP, o CRLB de geolocalização passiva e o teorema de observabilidade de estações absolutas lunares (abaixo). |
| Lunar e cislunar | Um propagador Terra–Lua circular restrito de três corpos (CR3BP) no referencial rotativo — constante de Jacobi conservada e todos os cinco pontos de Lagrange (src/cr3bp.rs) — agora com uma matriz de transição de estado 6×6 (STM) e um corretor diferencial de tiro único (cr3bp_jacobian, propagate_state_stm, differential_correct_halo) que produz órbitas halo / NRHO (órbita halo quase retilínea) genuinamente periódicas: a STM é validada contra diferenças finitas, as órbitas corrigidas fecham até a precisão de máquina, e semear o estado de apolúnio publicado reproduz a NRHO 9:2 sul de L2 (L2 = o segundo ponto de Lagrange Terra–Lua; a órbita do Gateway) com período ≈ 6,57 d / perilúnio ≈ 3.250 km, consistente com os publicados ≈ 6,56 d / ≈ 3.370 km (uma solução CR3BP — circular, sem Sol —, não validada contra uma efeméride real do LANS (Lunar Augmented Navigation Service)/Gateway; a transformação selenocêntrica MCI/MCMF (inercial centrado na Lua / centrado na Lua e fixo na Lua) da órbita corrigida é um passo seguinte); mais a geometria de PNT cislunar LunaNet / LNIS (LunaNet Interoperability Specification) (redução MCI↔MCMF, coordenadas selenográficas) com uma passagem ARAIM no polo sul lunar que expõe honestamente a lacuna de integridade: um σ_URE (erro de distância do usuário) de ~30 m leva o nível de proteção bem acima de um limite de alerta de 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); e uma ampliação de DOP por radiobalizas de superfície (src/lunar_beacon.rs) mostrando como algumas radiobalizas de medição de distância levantadas na superfície fornecem as linhas de visada de baixa elevação e amplo azimute que um conjunto só de órbita, todo acima da cabeça, não tem — colapsando o GDOP mal condicionado do polo sul e, por meio de um orçamento de erros em raiz da soma dos quadrados, a precisão de posição realizada em metros (reutilizando o núcleo de DOP validado contra o gnss_lib_py e a forma fechada de visibilidade de horizonte sem atmosfera; a análise da diluição da precisão está descrita em arXiv:2607,06212). |
| Conjunto de PNT lunar | Um conjunto de navegação lunar/cislunar em camadas sobre o núcleo CR3BP, cada parte um kind executável: Tempo Coordenado Lunar (lunar-time-offset, src/lunar_time.rs — a taxa secular LTC/TCL − TT (LTC = Lunar Coordinate Time; TCL = sua forma em francês, Temps-Coordonnée Lunaire) a partir da diferença de autopotencial + termo cinético, informada com a faixa publicada de 56–59 µs/dia); um observável geodésico de atraso de VLBI lunar (interferometria de linha de base muito longa) (lunar-vlbi, src/lunar_vlbi.rs — um atraso + taxa de diferença de duas distâncias em campo próximo com linha de base Terra, verificado de forma cruzada contra o Δ-DOR (delta differential one-way ranging) de onda plana da mesma base de código no limite de campo distante, com derivadas parciais verificadas por diferenças finitas); um estimador em lote conjunto de OD multitécnica + relógio (lunar-joint-od-clock, src/lunar_combination.rs — um ajuste de Gauss–Newton que funde VLBI + distâncias locais lunares + distâncias entre satélites) que traz um resultado de observabilidade por informação de Fisher: a medição de distância interna sozinha deixa um defeito de datum de corpo rígido com seis graus de liberdade, de modo que a posição absoluta de uma estação de superfície é inobservável até que se acrescente uma ligação ao referencial da Terra — um atraso de VLBI com linha de base Terra restaura a observabilidade para uma constelação esparsa e afia o limite de Cramér–Rao para uma rica, com o datum absoluto se fechando em três estações da Terra não colineares (o resultado de observabilidade está descrito em arXiv:2607,02566); realização de referencial (lunar-frame-realisation, src/lunar_frame_realise.rs — um ajuste de datum de Helmert de 7 parâmetros + ligação de orientação IAU 2015 WGCCRE — WGCCRE = o Grupo de Trabalho da IAU sobre Coordenadas Cartográficas e Elementos Rotacionais); uma análise de volume de serviço classe Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / cobertura / disponibilidade + um envelope generalizado de HPL/VPL (nível de proteção horizontal/vertical) do ARAIM lunar, reutilizando o núcleo de DOP validado contra o gnss_lib_py e a maquinaria σ_URE≈30 m da LunaNet); PNT diferencial lunar (lunar-differential-pnt, src/lunar_dpnt.rs — um análogo lunar de GNSS diferencial / sistema de aumentação baseado em satélites (SBAS): cancelamento exato de relógio de modo comum + decorrelação espacial de primeira ordem versus linha de base, reutilizando o nível de proteção SBAS do DO-229E — o DO-229E sendo o padrão de desempenho operacional mínimo da RTCA (anteriormente Radio Technical Commission for Aeronautics) para receptores SBAS); e uma exportação de interoperabilidade alinhada à LunaNet/IOAG (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs — CCSDS-OEM (Orbit Ephemeris Message) + ida e volta de escala de tempo lunar no referencial de corpo lunar IAU 2015, envolvida no envelope KIF). Os níveis de evidência por parte estão na matriz de verificação: o Tempo Coordenado Lunar, o estimador conjunto de OD + relógio, a realização de referencial e a geometria do volume de serviço são VALIDATED (cada um contra a referência independente que sua linha nomeia, assim como o caminho do núcleo do atraso de VLBI); o observável de VLBI, o resultado de observabilidade do defeito de datum, o PNT diferencial e a exportação de interoperabilidade são MODELLED. Os parâmetros são valores ilustrativos de fontes públicas — não validados contra rastreamento real de VLBI/Gateway, não afiliados a nenhuma agência nem endossados por ela, sem nenhuma afirmação de TRL (nível de maturidade tecnológica) / herança. |
| PNT de espaço profundo e Marte | Um motor aberto de navegação radiométrica: tempo de luz iterativo + atraso relativístico de Shapiro, Doppler e distância de duas, uma e três vias (duas pernas de Moyer), razões coerentes de inversão do transponder, medição de distância regenerativa/PN (pseudo-ruído) (CCSDS 414, o padrão de medição de distância por pseudo-ruído) e Δ-DOR no plano do céu (CCSDS 506, o padrão Delta-DOR), com meios de plasma solar/tropo/iono; análise e emissão de mensagens de dados de rastreamento CCSDS-TDM (503); um Filtro de Informação de Raiz Quadrada de dinâmica reduzida (RTN — radial, transversal, normal — acelerações empíricas + um relógio de bordo de 3 estados + arrasto atmosférico de Marte) que faz a determinação de órbita em LMO de Marte a ≈ 0,2 m em um laço fechado sintético; um estimador conjunto de fusão de uma via + duas vias; um núcleo de dinâmica de múltiplos corpos (Body{μ, re, zonals, gravity, IAU-pole}, gravidade GMM-3 de Marte (Goddard Mars Model 3), um referencial de Marte fixo ao corpo da IAU, uma interface EphemerisProvider plugável, datas julianas de duas partes + TT↔TDB (Barycentric Dynamical Time)); e o cenário de PNT com retransmissão mars-pnt (uma constelação de retransmissão areoestacionária MARCONI) com um simulador de desempenho GSE de ponta a ponta (GSE = equipamento de apoio em solo) (geometria → orçamento de enlace → observáveis → SRIF → covariância). Validado por simulação (cifras de mérito de covariância / laço fechado); a dinâmica de Marte centrada no Sol é verificada de forma cruzada contra o DE440 do JPL (137 m @ arco de 1 dia, xval/anise-mars-od). A validação com dados reais de rastreamento da DSN/ESTRACK está no roteiro. |
| Sistema solar e PNT em qualquer corpo | Uma efeméride de todo o sistema solar sem kernel (src/ephem.rs, src/ephem_provider.rs): cada planeta a partir dos elementos keplerianos de Standish do JPL (Tabela 1, 1800–2050 d.C.; Tabelas 2a/2b, 3000 a.C.–3000 d.C.) com o erro nominal publicado de cada planeta, a Terra e a Lua separadas pela série lunar, e Fobos, Deimos, Io, Europa, Ganimedes, Calisto e Titã a partir de elementos médios do JPL e do modelo de rotação da IAU (União Astronômica Internacional); qualquer corpo relativo a qualquer outro no ICRF (International Celestial Reference Frame). Body agora traz GM (parâmetro gravitacional), raios, J2 (o segundo harmônico zonal) onde publicado e o polo e o meridiano de origem da IAU para dezoito corpos. O tipo de cenário solar-system informa posições, velocidades, constantes, tempo de luz e distância de uma e de duas vias entre quaisquer dois corpos (o solucionador existente de tempo de luz radiométrico, com o atraso de Shapiro solar) e uma trilha orbital por corpo — o bastante para desenhar um sistema solar interativo; o tipo de cenário body-pnt posiciona um orbitador ou um módulo de pouso ao redor de qualquer corpo (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) com uma constelação Walker local, a maquinaria de diluição da precisão e de Gauss–Newton e uma distância em espaço profundo a partir da Terra. Validado contra o JPL Horizons (DE441, JPL Development Ephemeris 441): Mercúrio–Saturno e a Terra a partir da Tabela 1 dentro de duas vezes o erro nominal (pior 1,87×), todos os oito planetas a partir das Tabelas 2a/2b (pior 1,71×), e o tempo de luz Terra–Marte/Júpiter. Modelado: Urano e Netuno a partir da Tabela 1 (2,0× e 5,2× o erro declarado contra o DE441), Plutão, as luas e os resultados de navegação de body-pnt. |
| PNT fundido MEO + LEO | src/leo_fusion/: posicionamento, navegação e temporização LEO agnósticos de sistema sobre qualquer constelação (cascas Walker, conjuntos de elementos, predefinições GNSS) e qualquer sinal (portadora, taxa de chips, envelope de C/N0, erro de distância do sinal no espaço), com predefinições opcionais de um arquivo que trazem suas fontes (Xona Pulsar X1/X5, Iridium STL, sinais de oportunidade da Starlink, CentiSpace, um sistema representativo em banda C, o modelo de efeméride de relógio zero ATOMIC). leo-pvt: posicionamento Doppler em lote a partir da taxa de distância (um e vários satélites, estados de deriva de relógio e velocidade, geometria de passagem única ao longo/através da trilha e a solução espelho), mínimos quadrados ponderados conjuntos GNSS + LEO com vieses intersistemas por sistema e sigmas por sinal fornecidos pelo chamador, o DOP em função do número de satélites LEO, cobertura polar e ártica e transferência de tempo LEO para UTC em função do C/N0 e do oscilador. leo-ppp: um EKF (filtro de Kalman estendido) de PPP (posicionamento preciso de ponto) em ponto flutuante apenas com GNSS e com LEO, seu tempo de convergência e um teste de consistência NEES por qui-quadrado. ntn-positioning: posicionamento 5G de rede não terrestre a partir do limite de Cramér-Rao da largura de banda. Validado: o envelope Doppler LEO contra as cifras publicadas da Iridium e da Xona. Modelado: o restante, com a tendência do PPP comparada com Li et al. (2019) — veja docs/LEO-PNT-FUSION.md. |
| Integridade | RAIM — monitoramento autônomo de integridade pelo receptor — de snapshot e de separação de soluções (estilo ARAIM), com níveis de proteção horizontal/vertical (HPL/VPL), detecção e exclusão de falhas e diagramas de integridade de Stanford; um nível de proteção de separação de soluções de múltiplas hipóteses (MHSS) com orçamento explícito de risco de integridade, incluindo o modo de falha de toda a constelação em dupla/múltipla constelação (ARAIM da UE (União Europeia) / DO-316, o padrão de desempenho da RTCA para equipamento aerotransportado GPS com aumentação baseada na aeronave), exercitado sobre um snapshot real de GPS + Galileo (scenarios/araim-gps-galileo.toml). O nível de proteção aplica a projeção unilateral de viés nominal b_k = Σ_i|s_i|·b_nom por modo de falha e o sigma de integridade σ_URA (precisão de distância do usuário; distinto do sigma de precisão σ_URE, erro de distância do usuário) da Integrity Support Message — veja docs/ARAIM_REFERENCE.md. O núcleo de detecção (os limiares χ²/χ² não central/normal e os multiplicadores K) é validado externamente contra o SciPy em 171 casos (tests/raim_reference.rs); a geometria reutiliza o núcleo de DOP validado contra o gnss_lib_py. A alocação do orçamento de risco de integridade do MHSS do ARAIM em si não tem nenhuma referência independente numérica publicada e permanece honestamente modelada. |
| Aumentação (SBAS) | Níveis de proteção SBAS / WAAS (WAAS = o Wide Area Augmentation System) na forma de mínimos quadrados ponderados do DO-229E (fatores K de aproximação de precisão e em rota) e a combinação L1/L5 de dupla frequência livre de ionosfera (L1 e L5 sendo duas bandas de sinais civis do GPS; IS-GPS-705, a especificação de interface do GPS para o sinal L5, γ₁₅ ≈ 1,793) que sustenta o DO-316 — src/sbas.rs. O algoritmo de nível de proteção é validado externamente contra o fork SBAS-PL do RTKLIB (RTKLIB = a biblioteca aberta de posicionamento cinemático em tempo real; PL = nível de proteção) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — a revisão anterior do DO-229 — Apêndice J) executado sobre dados reais do EGNOS (European Geostationary Navigation Overlay Service), reproduzindo seu HPL a < 2e-3 m (tests/sbas_reference.rs); o gLAB (o conjunto de ferramentas GNSS Laboratory) v6.0.0 confirmou a mesma convenção. |
| Relógio e temporização | Holdover com filtro de Kalman de dois estados (covariância na forma de Joseph, saúde de consistência NIS/NEES — inovação quadrática normalizada / erro de estimação quadrático normalizado); estabilidade da família Allan (ADEV / MDEV / TDEV / HDEV / MTIE — desvios de Allan, de Allan modificado, de tempo e de Hadamard, e erro máximo de intervalo de tempo) com intervalos de confiança específicos por tipo de ruído e um ajuste completo de lei de potência de cinco coeficientes IEEE-1139 (IEEE Std 1139, as definições de metrologia de frequência e tempo do Institute of Electrical and Electronics Engineers) — os estimadores são validados em hardware real contra o Stable32: um padrão primário real de césio 5071A contra um maser de hidrogênio (556.990 amostras de fase, 16 fatores de média, OADEV/OHDEV — desvios de Allan/Hadamard sobrepostos — a 1e-3; tests/cs5071a_reference.rs) e a série de regressão canônica PHASE.DAT do Stable32 (139 fatores de média, OADEV/MDEV/TDEV a 1e-3; tests/phasedat_reference.rs); os estimadores ADEV/MDEV/TDEV e a métrica de wander de telecom MTIE são ainda verificados de forma cruzada contra a biblioteca independente allantools 2024,06 a < 1e-9 na série NIST SP 1065 (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); correções geométricas (Sagnac, visada comum de GNSS); e os métodos operacionais de transferência — TWSTFT (transferência bidirecional de tempo e frequência por satélite) com a forma fechada de Sagnac do BIPM (Bureau International des Poids et Mesures), visada comum de GNSS, transferência de tempo PPP (posicionamento preciso de ponto) livre de ionosfera, um enlace óptico em espaço livre com cintilação por turbulência e uma escala de tempo de conjunto de relógios (de papel) por inverso da variância abaixo do melhor relógio contribuinte. Uma calculadora de holdover de relógio sem GNSS (src/holdover.rs) expõe o crescimento do erro de deriva de van Loan em forma fechada como uma inversão de holdover até o limiar — por quanto tempo um relógio funciona livre antes que seu erro de tempo exceda o orçamento — em classes representativas de relógios clássicos e quânticos; modelado (verificado de forma cruzada contra a recursão de covariância de múltiplos passos de clock_state), e honesto quanto a que, para um relógio muito estável, o holdover até um limiar estreito é determinado pelo piso de ruído de τ longo presumido, não pelo ADEV citado. Um Nível de Proteção de Temporização condicional (src/tpl.rs) estende o holdover ao spoofing: um limite para o erro de tempo não detectado, dada uma verificação cruzada independente, que compõe um piso de monitor de k sigmas, a variância de deriva de van Loan sobre a latência de detecção e um tempo até o alarme por CUSUM (soma cumulativa). Calibrado sobre um spoof real gravado (JammerTest 2024) e reproduzível via cargo run --example tpl_jammertest; composição MODELLED (sem orçamento de risco de integridade por hora), condicional à detecção — não existe um limite incondicional finito. |
| Domínio de medição do GNSS | Síntese direta de pseudodistância / Doppler com ionosfera Klobuchar (difundida) e IONEX / grade de TEC (formato de intercâmbio de mapas da IONosfera / conteúdo total de elétrons; medida) — incluindo um analisador de arquivos IONEX, interpolação temporal entre mapas e o mapeamento de obliquidade oblíqua de casca fina —, troposfera de Saastamoinen + Niell e RAIM de snapshot (HPL/VPL). |
| Resiliência | Jamming por orçamento de enlace (J/S → C/N₀ efetivo → perda de sincronismo — razão jammer-sinal, razão portadora-densidade de ruído — com o fator de separação espectral antijamming Q agora derivado dos espectros de potência reais do sinal e do jammer via src/navsignal.rs — Q = 1/(R_c·κ), verificado de forma cruzada na CI contra a constante representativa anterior); um detector estocástico de spoofing de tempo (teste de energia de Neyman–Pearson / χ²₁ com P_fa/P_md em forma fechada e por Monte Carlo e uma figura de mérito (FoM) de Segurança de 1 − P_md); e um detector de spoofing em múltiplas camadas que funde um teste de paridade de consistência RAIM (com o ponto cego de modo comum modelado honestamente), um monitor de potência de AGC (controle automático de ganho) de RF e um monitor de qualidade de sinal (SQM — monitoramento da qualidade do sinal, adiantado menos atrasado); e um orçamento de erro de navegação por estima quântico-inercial (QuantumNavBudget, src/inertial/quantum_imu.rs) que compõe o passeio aleatório de velocidade de ruído branco do interferômetro de átomos frios com o viés residual (verificado de forma cruzada contra o integrador independente AccelModel) e o erro de fator de escala em uma cifra de deriva de posição durante o holdover — o gêmeo inercial do holdover do relógio. Um motor de pontuação de resiliência alinhado a um marco (src/resilience/) mapeia o comportamento simulado de uma arquitetura em subpontuações por dimensão nas sete categorias de resiliência do próprio Kshana (não termos do DHS), alinhadas ao Resilient PNT Conformance Framework do Departamento de Segurança Interna dos EUA, e depois estuda a estabilidade de decisão de qualquer pontuação composta única ou Nível de maturidade sob um simplex de ponderação de Dirichlet e um conjunto de cinco ameaças — instabilidade de ranking por Kendall-τ, taxa de inversão do vencedor top-1 e colapso de diversidade de modo comum (Hill-N2), com um relatório de garantia com hash de integridade (35 testes de referência independente derivados à mão). Reproduzível via cargo run --example resilience_report; arquiteturas sintéticas MODELLED, uma autoavaliação alinhada ao RPCF v2.0, não uma certificação. Veja docs/RESILIENCE-CROSSWALK.md. |
| Geolocalização passiva por RF | Geolocalização de emissores por TDOA/FDOA (diferença de tempo/frequência de chegada; src/geolocation.rs) — localizar um jammer ou spoofer (ou uma fonte oportunista para PNT reverso) a partir de hiperboloides de diferença de tempo de chegada em uma rede de receptores, resolvidos por mínimos quadrados de Gauss–Newton; acrescentar diferença de frequência de chegada com receptores em movimento recupera conjuntamente a posição e a velocidade do emissor, com o limite de Cramér–Rao sobre a covariância de posição derivado da geometria da rede. MODELLED (referências de consistência interna: ida e volta direta→inversa, a identidade J·CRLB = I, monotonicidade do GDOP e o estimador atingindo seu próprio CRLB sob Monte Carlo) — um modelo de linha de visada de fonte pontual, sem termos de multicaminho / NLOS (sem linha de visada), de viés de relógio do receptor ou de refração. |
| Sinal de navegação e rastreamento de código | O nível de sinal entre o orçamento de enlace e o domínio de medição (src/navsignal.rs): densidades espectrais de potência (PSDs) de área unitária para BPSK-R(n) (modulação por deslocamento de fase binária com chips retangulares) e sine-BOC(m,n) (portadora com deslocamento binário); o coeficiente de separação espectral (SSC) κ = ∫ G_s·G_i df, que deriva o Q antijamming que o modelo de jamming usa (Q = 1/(R_c·κ)) a partir dos espectros reais de sinal/jammer em vez de uma constante representativa; a largura de banda RMS (de Gabor) (BOC > BPSK — a medida de informação de distância / Cramér–Rao); o jitter de ruído térmico do rastreamento de código DLL adiantado–atrasado coerente (DLL = malha de sincronismo de atraso; Kaplan & Hegarty; ~submétrico para o C/A — o código de aquisição grosseira do GPS — a 45 dB-Hz); e o envelope de erro de multicaminho (EML coerente, adiantado menos atrasado — supressão por correlador estreito). Validado contra âncoras em forma fechada (auto-SSC do BPSK = 2/(3·R_c), PSDs de área unitária, jitter submétrico do C/A). Isto é análise de desempenho de sinal, não projeto de hardware de antena / carga útil de RF (o papel de um parceiro de carga útil). |
| Interoperabilidade | Ingestão de efemérides difundidas multi-GNSS em RINEX-3 (GPS, Galileo, QZSS — o Quasi-Zenith Satellite System do Japão —, BeiDou MEO/IGSO — órbita terrestre média / órbita geossíncrona inclinada — via IS-GPS-200, a especificação de interface do GPS; GLONASS, o Sistema Global de Navegação por Satélite da Rússia, via vetor de estado RK4 em PZ-90 — o datum russo Parametry Zemli 1990) utilizável como fonte de constelação (RINEX entra, geometria de PNT sai); um analisador de observações RINEX-3 (pseudodistância, fase da portadora, Doppler, intensidade de sinal; espera-se que o layout de observação 4,00 seja analisado, mas isso não foi testado, e os arquivos de navegação RINEX 4 são recusados pelo nome em vez de decodificados erroneamente) que agora alimenta um solucionador de posicionamento de ponto único (SPP) (pvt) — observações reais de código entram, uma posição de receptor real sai, validada com dados do IGS; um leitor/gravador de efemérides precisas SP3-c/d com interpolação de Lagrange de 9ª ordem; e exportação CCSDS OEM 2,0 + OMM (Orbit Mean-elements Message) para ferramentas de dinâmica de voo (GMAT, Orekit, STK — Systems Tool Kit); e análise e emissão de mensagens de dados de rastreamento CCSDS-TDM (503) para rastreamento radiométrico de espaço profundo. |
| Análise de missão (engenharia de sistemas) | Orçamentos de projeto de missão de primeira ordem, cada um um tipo de cenário executável: geometria de lançamento e ascensão de dois corpos (launch-window — azimute de lançamento sin Az = cos i/cos lat, inclinação mínima, bônus de rotação da Terra, Δv de mudança de plano em dogleg, oportunidades diárias; src/launch.rs); um corredor balístico de reentrada de Allen–Eggers (reentry — desaceleração máxima, velocidade/altitude do pico de g, velocidade do pico de aquecimento; src/reentry.rs); geometria de cobertura de observação da Terra (eo-coverage — faixa de imageamento / GSD (distância de amostragem no solo) no nadir / acesso fora do nadir / revisita pelo triângulo espacial do SMAD (Space Mission Analysis and Design); src/eo_payload.rs); um orçamento de atitude e erro de apontamento de 3-DOF (três graus de liberdade; attitude-budget — torque de gradiente de gravidade no pior caso + orçamento de apontamento RSS (raiz da soma dos quadrados); src/attitude_budget.rs); previsão de passagens de estação em solo (passes — AOS/TCA/LOS, aquisição de sinal / instante de maior aproximação / perda de sinal, elevação máxima, tempo de acesso; src/passes.rs); e um orçamento de enlace de uma via sobre a equação de enlace CCSDS 401 / DSN 810-005 (o padrão de radiofrequência e modulação do CCSDS / o manual de projeto de enlaces da Deep Space Network; link-budget — FSPL (perda de percurso em espaço livre), C/N₀, Eb/N₀ (razão energia por bit sobre densidade de ruído), margem, fechamento; src/linkbudget.rs). Orçamentos analíticos de primeira ordem MODELLED — a camada pré-hardware abaixo do STK/GMAT/Basilisk, não uma substituição de 6-DoF nem radiométrica. |
| Análise de decisão e análise de compromissos (MCDA) | Um conjunto completo de análise de decisão multicritério (MCDA) (src/mcda/) abrangendo as quatro famílias de métodos — agregação de valor (WSM, WPM, WASPAS — modelo de soma ponderada, modelo de produto ponderado, avaliação ponderada agregada de soma e produto), distância ao ideal (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), programação de compromisso (VIKOR, do sérvio para otimização multicritério e solução de compromisso) e superação (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, do francês para eliminação e escolha expressando a realidade), além de MOORA por sistema de razões (Multi-Objective Optimization on the basis of Ratio Analysis) e COPRAS proporcional (Complex Proportional Assessment) — com ponderação de prioridades por comparação par a par AHP (Analytic Hierarchy Process) (Razão de Consistência), uma frente não dominada de Pareto, análise de sensibilidade de pesos e pontuação por utilidade multiatributo. Os nove agregadores reproduzem as bibliotecas independentes de terceiros pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) e pyDecision (ELECTRE I, COPRAS) a < 1e-9, e o vetor de prioridades do AHP + Razão de Consistência coincidem com a tabela de Índice Aleatório de Saaty e o autosolucionador principal do SciPy/LAPACK a < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — a camada de decisão sob o motor de estudos de compromisso. |
| Ambiente espacial | Um modelo de ambiente de clima espacial (space-weather, src/space_weather.rs): índices de atividade solar (F10.7 / F10.7a centrado em 81 dias — o fluxo de rádio solar de 10,7 cm) e geomagnética (Kp, o índice K planetário, com a tabela definicional Kp↔ap — sendo ap sua amplitude planetária linear), a temperatura exosférica de Jacchia-1971 que eles conduzem (validada contra o mínimo/média/máximo solar publicados) e a densidade neutra termosférica corrigida pela atividade versus estática em altitude — a dependência da densidade em relação ao ciclo solar que a atmosfera estática USSA76 (US Standard Atmosphere 1976) omite. MODELLED: um acoplamento de altura de escala de primeira ordem calibrado, não uma atmosfera (NRLMSISE — o modelo Mass Spectrometer and Incoherent Scatter Radar Exosphere do US Naval Research Laboratory) validada por dados. |
| Avaliação por aprendizado de máquina e compromisso | Uma bancada de avaliação de detecção de degradações de RF (impairment-eval, src/impairment_eval.rs): um corpus sintético rotulado e fundamentado em parâmetros (nominal / jamming / spoof de tempo / spoof de posição / multicaminho), um arcabouço de ROC/AUC (característica de operação do receptor / área sob a curva) agnóstico quanto ao detector que pontua qualquer detector (energy | agc | sqm | parity | fused) com Pd (probabilidade de detecção) por classe a uma Pfa (probabilidade de alarme falso) alvo, e a lacuna de otimismo dentro versus fora da distribuição (modo de mudança de distribuição). Além disso, uma análise de compromisso PNT quântico versus clássico (quantum-trade, src/quantum_trade.rs) que quantifica o benefício de holdover de temporização/inercial de um relógio candidato a partir de uma curva de ADEV medido contra uma linha de base clássica, com a ressalva do piso de τ longo levada no artefato e um envelope de resiliência versus tempo sem GNSS. As métricas de avaliação (AUC / confusão / Pd-Pmd, sendo Pmd a probabilidade de detecção perdida) são validadas com correspondência exata contra o scikit-learn 1.9.0 — inclusive sobre telemetria real do ESA OPS-SAT (o conjunto de dados de detecção de anomalias OPSSAT-AD, Ruszczak et al. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), onde a AUC ROC de Mann–Whitney do Kshana reproduz a roc_auc_score do scikit-learn a < 1e-9 na partição de teste reservada e um detector transparente de contagem de picos separa as anomalias rotuladas a AUC ≈ 0,85 (tests/opssat_ad_reference.rs) — e os núcleos numéricos do motor de compromissos (ajuste NNLS — mínimos quadrados não negativos — de ADEV, bandas de consistência χ², Q de relógio de van Loan) contra o scipy 1.17.1; os números de benefício de dispositivo construídos sobre isso permanecem características operacionais MODELLED — nunca dados de campo/IQ (amostras em fase/quadratura), sem veredito bom/ruim. Sobre a bancada, um estudo de lacuna de otimismo mais profundo (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) pontua um painel de 13 detectores (energy/AGC/SQM/parity mais detectores de regressão logística com semente e de MLP — perceptron multicamadas — de uma camada oculta), ajusta leis de escala dentro versus fora da distribuição com um nulo por permutação e aprende um preditor leave-one-out da degradação fora da distribuição a partir de estatísticas dentro da distribuição (cargo run --example optimism_study). Um front end de receptor definido por software (src/sdr.rs — IQ/IF bruto (frequência intermediária) → derivações do correlador adiantado/pontual/atrasado → SQM) e adaptadores de ingestão de dados reais (src/realdata/ — RINEX, UBX da u-blox (o protocolo binário da u-blox), GnssLogger, JammerTest, Yunnan, SatGrid) permitem que os mesmos detectores rodem sobre gravações fornecidas localmente (nenhum conjunto de dados é registrado no repositório). O mapa de cruzamento de resiliência quântico versus clássico sob incerteza de parâmetros (src/crossover.rs; cargo run --bin crossover_study) regenera os estudos de cruzamento inercial e de relógio por trás das figuras de Resultados. |
| Demonstrador de PNT habilitado por tecnologia quântica | Três áreas de aplicação executáveis e MODELLED por trás do motor aberto, cada uma emitindo um TradeEvidence honesto + um registro de representatividade / lacunas até o voo (src/representativeness.rs): transferência quântica confiável de tempo (quantum-time-transfer, src/timetransfer_chain.rs — um orçamento de ponta a ponta de relógio de rede óptica + enlace fotônico contra CSAC (relógio atômico em escala de chip) + bidirecional por RF, com um nível de proteção de temporização reutilizado, uma FoM de segurança contra ataques de atraso/repetição (1 − P_md) e detecção de anomalias de relógio + latência de CUSUM); navegação quântica sem GNSS (quantum-gnss-free-nav, src/quantum_nav_od.rs — uma deriva inercial por interferômetro de átomos frios contra um INS de grau de navegação durante uma interrupção de GNSS, honesta quanto a que, sem correção externa, o viés do acelerômetro é inobservável e, portanto, o erro ainda cresce); e detecção de falhas/anomalias de sistemas quânticos (quantum-anomaly-detect, src/quantum_faults.rs — um catálogo rotulado de falhas com uma AUC ROC de IC (intervalo de confiança) por bootstrap a partir do eval_stats validado externamente e uma falha mínima detectável a uma taxa fixa de alarmes falsos). Uma biblioteca compartilhada de modelos de erro de dispositivos quânticos (src/quantum_devices.rs) e um arcabouço unificado de compromisso quântico versus clássico (src/qtrade.rs) sustentam essas áreas. Os núcleos validados em que elas se apoiam (métricas de avaliação contra o scikit-learn, núcleos de compromisso contra o scipy) são reutilizados; os números de benefício de dispositivo construídos sobre eles permanecem MODELLED — parâmetros de dispositivo/enlace ilustrativos de fontes públicas, modelam a classe, sem TRL / herança de voo / certificação, sem endosso de agência. |
| Engenharia frugal e impacto na integridade | Uma lente de ROI (retorno sobre o investimento) de custo por cobertura (src/frugal.rs) — custo por unidade de cobertura entregue em uma análise de compromisso de arquitetura — e um mapeamento de detecção perdida → impacto na integridade (src/integrity_impact.rs) que transforma a taxa de detecção perdida de um monitor em sua contribuição ao risco de integridade. Orçamentos de apoio à decisão MODELLED, aditivos. |
| Intercâmbio de artefatos | O Kshana Interchange Format (KIF) (src/interchange.rs) — um envelope versionado e autodescritivo que envolve o resultado de um cenário com seu tipo de cenário, a versão do esquema e os rótulos MODELLED/VALIDATED, de modo que um artefato armazenado continue se autodocumentando e envelopes mais antigos permaneçam legíveis com compatibilidade futura. |
Cada capacidade é acessível como uma API Rust, um cenário executável kind, ou ambos. A maturidade por capacidade — validada, executável ou biblioteca — é acompanhada em docs/CAPABILITY.md. Uma matriz de verificação verificada por máquina (src/verification.rs) apresenta a referência cruzada requisito → módulo → teste → referência independente → estado, com invariantes de honestidade testadas por unidade que permitem um rótulo validada somente onde uma referência independente externa a respalda — e que registram as capacidades de hardware/PA (garantia do produto) que o Kshana deliberadamente não oferece.
Os quatro pacotes de sensores, como publicados originalmente (resultados)
Resultados#
Cada cenário compara um sensor quântico com seu equivalente clássico ao longo de uma interrupção de GNSS de ~1,8 h. Os números são reproduzíveis (scenario + seed + version).
O que os sensores quânticos oferecem quando o GNSS desaparece — clock-holdover · semente 42 · desenhado no motor 0.40.0, e cada figura acima reverificada contra o motor atual a cada compilação por tests/published_figures_still_reproduce.rs · SVG
A vantagem depende da interrupção e da vibração, com um ponto de equilíbrio explícito onde o clássico vence — mostrada honestamente ao longo da escada de maturidade tecnológica (as cifras de relógio óptico são alvos de demonstradores em solo; nenhum relógio óptico de estrôncio voou):
Cruzamento de resiliência quântico versus clássico — escada TRL de holdover de relógio (em cima) · mapa de vantagem inercial com contorno de ponto de equilíbrio (embaixo). Regenerável via cargo run --release --bin crossover_study.
Erro de posição da navegação por estima durante uma interrupção de GNSS: o sensor quântico (azul) permanece plano perto da especificação; o sensor clássico (vermelho) diverge para dezenas de quilômetros. Gerado pelo Kshana a partir de scenarios/imu-deadreckoning.toml.
| Pacote | Cenário | Quântico | Clássico |
|---|---|---|---|
| 1 — Holdover de relógio | clock-holdover.toml (especificação de 20 ns) |
o relógio óptico mantém toda a interrupção | o CSAC viola a especificação no meio da interrupção |
| 2 — Navegação por estima inercial | imu-deadreckoning.toml (especificação de 100 m) |
átomos frios: ~41 m, mantém toda a interrupção | grau de navegação: viola em ~350 s → dezenas de km |
| 3 — Transferência de tempo (enlace óptico entre satélites) | timetransfer.toml |
óptico: medição de distância de ~0,3 mm | RF (TWSTFT): medição de distância de ~150 mm |
| 4 — Fusão híbrida (síntese final) | hybrid-pnt.toml |
posição+tempo completos durante toda a interrupção | limitado em posição a ~350 s |
A síntese final mostra a tese da fusão: a transferência óptica de tempo entre satélites mantém travado até um relógio clássico, isolando o sensor inercial como o elo fraco do conjunto clássico — ou seja, inercial quântico + temporização óptica juntos.
Holdover de relógio durante uma interrupção de GNSS: o relógio óptico (azul) permanece dentro da especificação de 20 ns durante toda a deriva; o relógio em escala de chip (vermelho) a viola no meio do caminho. Gerado pelo Kshana a partir de scenarios/clock-holdover.toml.
Um cenário adicional, orbit-gnss-challenged.toml, deriva a disponibilidade de GNSS da geometria orbital em vez de janelas escritas à mão: uma espaçonave dentro da casca GNSS é propagada contra uma constelação Walker semelhante ao GPS, e a contagem de satélites visíveis (linha de visada, ocultação pela Terra, máscara de elevação) define o estado da solução em cada passo. Ao longo de um dia o usuário tem solução apenas ~59% do tempo; o relógio quântico mantém uma solução de temporização de 5 ns em todas as lacunas (disponibilidade 1.0), o relógio em escala de chip apenas ~0.83.
Erro de temporização ao longo de um dia com a disponibilidade de GNSS derivada da geometria orbital: a contagem de satélites visíveis (linha de visada, ocultação pela Terra, máscara de elevação) define o estado da solução em cada passo, de modo que o relógio precisa atravessar toda lacuna em deriva — o relógio óptico mantém a especificação de 5 ns enquanto o relógio em escala de chip a viola. Gerado pelo Kshana a partir de scenarios/orbit-gnss-challenged.toml.
A constelação também pode ser dada como conjuntos reais de elementos de duas linhas (TLEs). Um TLE completo (linha 1 + linha 2) é propagado com o modelo SGP4/SDP4 completo — incluindo arrasto atmosférico e os termos de espaço profundo lunar-solares e de ressonância de 12 h / 24 h que importam para órbitas GNSS de ~12 h — validado contra os vetores oficiais AIAA 2006-6753 a um pior caso de ≈ 4 mm. scenarios/orbit-sgp4-gps.toml inclui um instantâneo real do Celestrak gps-ops da constelação GPS operacional (2021-07-28, 30 satélites) e exige checksums de TLE válidos — os conjuntos de elementos de duas linhas são dados abertos do catálogo da Força Espacial dos EUA / 18th Space Defense Squadron, redistribuídos pelo Celestrak (Dr. T. S. Kelso, celestrak.org); atualize com scripts/fetch_tles.sh. Um bloco só da linha 2 mantém a propagação analítica de dois corpos (scenarios/orbit-real-tle.toml); as duas formas podem ser misturadas em uma única constelação. Uma constelação também pode ser construída a partir de um bloco de registros de efemérides difundidas do GPS em RINEX-3 — o formato que um receptor decodifica — propagados pelo algoritmo de usuário do IS-GPS-200 e alimentados pela mesma geometria (scenarios/orbit-rinex.toml).
O que é / não é, por extenso
O que é / não é#
É: um motor determinístico e de poucas dependências que abrange a pilha de PNT — geometria orbital, navegação inercial, fusão GNSS/INS, integridade, relógios e temporização. Ele executa um cenário (muitas vezes uma interrupção de GNSS), evolui modelos calibrados de erro de sensores por meio do estimador apropriado e pontua o resultado contra as figuras de mérito operacionais — emitindo um resultado JSON (JavaScript Object Notation) reproduzível e um gráfico SVG, a partir de uma biblioteca Rust, uma interface de linha de comando (CLI), uma extensão Python, um módulo WebAssembly no navegador, um servidor Model Context Protocol (MCP) para agentes de IA ou um plugin para IDE (ambiente de desenvolvimento integrado) JetBrains.
Não é: hardware de voo, um projeto de carga útil quântica, um receptor completo de sinais GNSS, um simulador de sinais de radiofrequência (RF) ou bancada de hardware-in-the-loop, nem um produto de aviônica certificado — e não substitui o MATLAB/Simulink, o STK (Systems Tool Kit) nem o Orekit; ele fica ao lado deles e troca arquivos com eles. A fidelidade do hardware quântico vem de modelos de erro publicados, não desta ferramenta. A maturidade granular de cada capacidade está documentada em docs/CAPABILITY.md.
Não é (ainda): um motor completo de física de interferometria atômica (a maioria dos sensores quânticos consome coeficientes publicados de Allan/orçamento de ruído; o acelerômetro CAI (interferômetro de átomos frios) tem uma camada de primeiros princípios — fase de Mach–Zehnder, ruído de projeção, decaimento de contraste e acoplamento de vibração, além de sistemáticos de Coriolis e de deslocamento de luz — mas os sistemáticos de frente de onda e a resolução de ambiguidade de franjas continuam sendo uma camada P2 (fase 2 do roteiro, a camada de física quântica) do roteiro, veja ROADMAP.md e docs/QUANTUM-MODELS.md); um receptor GNSS certificado ou de hardware (ele resolve uma solução de posição PVT (posição, velocidade e tempo) de ponto único a partir de observações reais de código RINEX (Receiver Independent Exchange Format) — validada com dados reais do IGS (International GNSS Service) — e sua camada IQ (kshana iq, desde a 0.31.0) adquire e rastreia amostras de banda base gravadas ou geradas em software, como um receptor de análise: ela não aciona hardware de rádio nem transmite, não é um receptor certificado e não faz posicionamento por fase da portadora (RTK ou PPP)); nem um conjunto completo de projeto de missão (tem blocos de construção de Lambert / porkchop / manobra / determinação de órbita, mas é a camada de simulação de desempenho acima do GMAT (General Mission Analysis Tool)/Orekit, não uma substituição). Assumir este escopo é deliberado. Se você precisa de orçamentos de erro de interferômetro de átomos frios a partir de primeiros princípios (por exemplo, de nível CARIOQA-PMP — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — ou validação no estilo X-37B), veja o roteiro P2 e entre em contato para colaborar.
Navegação em órbita baixa da Terra#
Os satélites em órbita baixa da Terra (LEO) passam rápido e fortes. O tipo de cenário leo-pnt-chain acompanha um sistema por todas as etapas: o sinal, a passagem e seu enlace, a mensagem de navegação e a solução fundida de posição, velocidade e tempo (PVT) e o posicionamento preciso de ponto (PPP). Cada etapa entrega seus números à seguinte. Veja docs/LEO-PNT.md.
Todo tipo de cenário por família#
Os tipos de cenário do motor, organizados em famílias. Cada família tem uma página com uma entrada por tipo de cenário (a descrição e os campos do motor, um comando de exemplo, cifras principais de uma execução, as linhas da matriz de verificação que o nomeiam e o gráfico que o próprio motor escreve) e uma folha de contatos desses gráficos; docs/KINDS.md indexa todos eles. A tabela é escrita por tools/gen_readme_blocks.py e as páginas por tools/gen_kinds_index.py, e ambos falham se o motor ganhar um tipo de cenário que nenhuma família nomeia.
| Família | O que responde | Tipos de cenário | Execute um |
|---|---|---|---|
| Relógios, temporização e holdover | por quanto tempo um relógio mantém a hora sem GNSS, e como um sistema de temporização se sustenta contra suas máscaras | clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer |
kshana scenarios/clock-holdover.toml |
| Sensores inerciais, de fusão e quânticos | navegação por estima e fusão de sensores durante uma interrupção de GNSS, com sensores clássicos e quânticos | inertial, hybrid, fusion, hybrid-ukf, gnss-ins, ins-trn-coast, quantum-gnss-free-nav, quantum-anomaly-detect, quantum-trade |
kshana scenarios/gnss-ins.toml |
| PNT alternativo sem GPS | navegar a partir de gravidade, terreno e outros campos quando o GNSS desaparece | gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience |
kshana scenarios/combined-altpnt.toml |
| Constelações, cobertura e geometria | onde estão os satélites, quem os vê e quão boa é a geometria, ao redor da Terra, da Lua ou de Marte | orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes |
kshana scenarios/orbit-gnss-challenged.toml |
| Medições de GNSS, posicionamento e integridade | pseudodistâncias, soluções de posição, níveis de proteção e o ambiente espacial | integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop |
kshana scenarios/integrity-raim.toml |
| Jamming, spoofing e o espectro | como a interferência chega a um receptor e se é detectada | jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval |
kshana scenarios/jamming-demo.toml |
| Navegação em órbita baixa da Terra | uma passagem, um enlace, uma mensagem de navegação e uma solução fundida, etapa por etapa | leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain |
kshana scenarios/leo-pnt-end-to-end.toml |
| Lunar e cislunar | navegação, tempo, referenciais e geodésia na Lua | lunar-integrity, lunar-time-offset, lunar-time-budget, lunar-ascent, lunar-surface, lunar-descent, lunar-orbit-rendezvous, lunar-vlbi, lunar-vlbi-fim, lunar-joint-od-clock, lunar-frame-realisation, lunar-frame-campaign, lunar-llr-datum, moonlight-service-volume, lunar-differential-pnt, lunar-station-coverage, lunar-beacon, lunar-interop-export, cislunar-observability, cislunar-arc-recovery, lunar-attack-surface, lunar-jamming, earth-gnss-lunar, lunar-infrastructure |
kshana scenarios/lunar-infrastructure-od-consistency.toml |
| Navegação de usuários espaciais | sinais GNSS para espaçonaves acima, ao redor e além das órbitas GNSS | gnss-ssv |
kshana scenarios/gnss-ssv-shell.toml |
| PNT óptico | enlaces ópticos através da atmosfera e figuras de mérito ópticas mais RF | optical-atmosphere, hybrid-optical-rf |
kshana scenarios/optical-atmosphere-network.toml |
| Análise de missão, enlaces e operações espaciais | lançamento, ascensão, reentrada, atitude, enlaces, planejamento de contatos e formatos de arquivo | launch-window, ascent-losses, reentry, entry-heating, eo-coverage, eo-radiometry, attitude-budget, aocs, link-budget, acm-link, contact-schedule, aperture-duty-cycle, space-packet, oem-interop |
kshana scenarios/launch-window.toml |
| Sequências de missão | o orçamento de erro de navegação e temporização de uma cadeia de fases do lançamento à reentrada | mission-thread |
kshana scenarios/mission-thread-artemis-class.toml |
| Campanhas | missões encadeadas, varreduras e conjuntos construídos a partir dos outros tipos de cenário | campaign |
kshana scenarios/campaign-jam-spoof-holdover-integrity.toml |
Todos os comandos#
kshana <scenario.toml> executa um cenário; todo outro comando é um subcomando, e kshana --help imprime o uso de todos eles. Os comandos são --study, --validate, kinds, example, receiver-trust (com live e evidence), evidence (keygen, verify, attach-timestamp, round-trip), jammertest (import, score), trust-telemetry, imu-fit, nmea-scenario, interference-map (adsb, ais, daily, sensitivity, fetch-land), route-exposure, bench (spec, truth, cases, score, baseline, seal, reveal-check, manifest, verify-manifest, validate, leaderboard), bench-export, compliance-report, lunanet-afs-check, standards-pack, partner (check), osnma, iq (scene, acquire, track, sweep, labfit, campaign, conditions, frontend, monitor, inventory, info, extract, convert, decimate), sky e skyline. docs/COMMANDS.md dá a finalidade de cada um, um exemplo verificado e sua página de documentação.
Todas as superfícies#
Um motor, os mesmos resultados em todo lugar: a linha de comando, a biblioteca Rust, Python, JavaScript e WebAssembly, o servidor MCP com seus comandos de plugin e skills, o Kshana Studio (todas as páginas rodam no navegador, sem instalação, nada é enviado), as integrações com ROS 2, Signal K, OpenCPN, GNSS-SDR e gnss_lib_py, os kits de implantação systemd, Docker e Grafana, e o plugin JetBrains. docs/ALL-SURFACES.md os lista com como obter cada um e os nomes de todos os comandos de plugin, skills e páginas do Studio; docs/SURFACES.md diz, para cada comando e tipo de cenário, qual superfície o oferece e quais não, com o motivo.
Como uma execução funciona#
Um cenário é um arquivo TOML (Tom's Obvious, Minimal Language): um tipo de cenário, uma semente e os parâmetros. O motor o executa e escreve o resultado, um gráfico e um relatório ao lado dele, e as exportações que você pedir.
Este cenário incluído dura 2 h: 10 min de GNSS, depois cerca de 1,8 h com GNSS negado. Ele pergunta por quanto tempo um relógio óptico de rede de estrôncio e um relógio atômico em escala de chip (CSAC) mantêm, cada um, a hora dentro de 20 ns.
kshana example clock-holdover > clock-holdover.toml
kshana clock-holdover.toml
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote clock-holdover.result.json, clock-holdover.chart.svg, clock-holdover.report.html, and clock-holdover.report.json
O relógio óptico mantém o orçamento de 20 ns durante toda a interrupção de 6600 s; o CSAC o mantém por 2610 s, e fica dentro do orçamento durante 95,6% da execução contra 100% do relógio óptico. kshana example lista todos os cenários incluídos.
Missões#
Dez setores fazem dez perguntas diferentes ao mesmo motor. Cada um tem cenários incluídos para começar.
| Setor | Comece com |
|---|---|
| Defesa e segurança | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Espaço, órbita terrestre | orbit-gnss-challenged, leo-pnt-end-to-end |
| Lua, Marte e espaço profundo | lunar-relay-constellation, mars-orbit-pnt |
| Aviação e drones | small-uas-jammed-nav, araim-gps-galileo |
| Marítimo | maritime-strait-jamming, maritime-port-approach-coast |
| Rodovias | automotive-urban-canyon |
| Ferrovias | rail-tunnel-coast |
| Infraestrutura crítica e temporização | clock-holdover, clock-ensemble |
| Telecom e 5G (a quinta geração de redes móveis) | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Ciência e pesquisa | sweep-clock-stability, quantum-pnt-demonstrator.suite |
A pergunta que cada setor faz
| Setor | A pergunta que ele faz | Comece com |
|---|---|---|
| Defesa e segurança | Por quanto tempo nossa navegação e nossa temporização permanecem confiáveis sob jamming e spoofing, e quais camadas nos mantêm dentro da especificação? | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Espaço: órbita terrestre | Minha espaçonave vê satélites de navegação suficientes, por quanto tempo seu relógio mantém a hora entre soluções e o que acrescentaria uma camada de navegação em órbita baixa? | orbit-gnss-challenged, leo-pnt-end-to-end |
| Lunar e espaço profundo | Um módulo de pouso, um rover ou um orbitador na Lua, em Marte ou mais longe obterá uma posição e um tempo confiáveis? | lunar-relay-constellation, mars-orbit-pnt |
| Aviação e drones | Depois que um jammer tira o GNSS, por quanto tempo meu sistema de aeronave não tripulada (UAS) permanece dentro de seu orçamento de posição, e há integridade disponível na minha rota? | small-uas-jammed-nav, araim-gps-galileo |
| Marítimo | Até onde, sobre a água, um jammer alcança, um deslocamento de posição seria detectado e por quanto tempo um navio pode seguir à deriva até o porto? | maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast |
| Rodovias e automotivo | Quanto um carro deriva sob um viaduto ou ao passar por um jammer à beira da estrada? | automotive-urban-canyon |
| Ferrovias | Quantos segundos dentro de um túnel um trem ainda consegue dizer em que via está? | rail-tunnel-coast |
| Infraestrutura crítica e temporização | Se o tempo GNSS for perdido ou falsificado, por quanto tempo uma rede elétrica, uma bolsa de negociação ou um data center mantêm um tempo rastreável? | clock-holdover, clock-ensemble |
| Telecom e 5G | Se a referência de tempo GNSS for perdida, o relógio da minha rede permanece dentro das máscaras da ITU-T, e por quanto tempo? | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Ciência e pesquisa | Consigo reproduzir, estender e citar um resultado de PNT, até a semente? | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Evidências#
176 de 401 capacidades validadas em relação a referências independentes externas; 221 rotuladas com honestidade como modeladas. Cada linha da matriz de verificação nomeia uma capacidade, a referência independente com a qual ela é verificada, o teste que executa a verificação e o rótulo que resulta. A integração contínua (CI) torna impossível chamar uma capacidade de VALIDATED sem uma referência independente externa.
| Rótulo | Linhas | Significado |
|---|---|---|
| VALIDATED | 176 | uma referência independente externa concorda: dados reais, uma implementação independente ou vetores de referência publicados |
| MODELLED | 221 | verificado contra a verdade analítica ou a autoconsistência da simulação, e dito em voz alta |
| PARTNER | 4 | de responsabilidade de um parceiro de hardware; o Kshana não tem referência independente para ela |
Algumas das verificações: todos os 666 vetores SGP4 (Simplified General Perturbations 4) do AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 até 4,12 mm; o modelo de forças de Cowell até 0,08 m em relação ao Orekit 12,2; o Galileo até 0,61 m e o Swarm-A até 0,10 m em relação a efemérides precisas reais da Agência Espacial Europeia (ESA). Os testes mantêm cerca de 95 % de cobertura de linhas de src/, com um mínimo de 85 % exigido na CI. O registro é docs/VERIFICATION-MATRIX.md, gerado a partir de src/verification.rs: a matriz completa de 401 linhas, e por que cada linha modelada não tem referência independente externa em docs/MODELLED-RATIONALE.md.
Como a validação funciona, a tabela curada de destaques e as figuras de evidência
Validação, reprodutibilidade e honestidade#
- Todo termo de ruído é calibrado a uma cifra publicada e citada e validado contra a relação padrão (desvio de Allan para relógios; crescimento de erro de navegação por estima de Groves para inercial; a conversão temporização→medição de distância para transferência de tempo). O estado por termo é acompanhado em
docs/VALIDATION.mdcomovalidatedounot modeled— nada é apresentado como validado sem sê-lo. - Reproduzível por construção:
scenario + seed + engine version → identical bits.scripts/check-reproducible.sho impõe; as execuções quânticas e clássicas usam sementes independentes, de modo que seu ruído não é correlacionado. - A maturidade é declarada honestamente: as cifras de relógio óptico e de enlace óptico são resultados de alvos / demonstradores em solo, não de voo.
O rótulo de evidência em cada figura#
Cada figura e tabela que uma execução grava diz até que ponto confiar nela e em quais linhas do registro ela se apoia. O JSON de resultado tem uma chave evidence, o SVG do gráfico tem uma linha sob o gráfico (e um elemento <metadata id="kshana-evidence">), e a tabela CSV tem linhas de comentário # evidence: na frente (lidas com comment='#'). Ele nomeia um nível, VALIDATED, MODELLED ou PARTNER, e os ids (VM- e oito dígitos hexadecimais) das linhas da matriz de verificação que a execução exercitou. O nível é o mais fraco dessas linhas, de modo que uma execução que se apoia em uma linha modelada é rotulada MODELLED por mais linhas validadas que haja ao lado; o rótulo nunca pode afirmar mais do que o registro. Linhas, estados e ids são lidos da matriz, não digitados (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), e tests/evidence_labels_doc_sync.rs falha se uma figura não tem rótulo ou se um rótulo discorda da matriz.
A validação num relance#
Cada linha é imposta por um teste nomeado na CI. Esta tabela é um destaque selecionado; a matriz completa, verificada por máquina, tem 401 linhas — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), com as evidências completas (e o que honestamente ainda não é validado) em docs/VALIDATION.md e o artefato kshana-validation-summary.html de cada versão (gerado por cargo run --bin validation_report, atestado pelo SLSA — Supply-chain Levels for Software Artifacts).
A coluna Estado declara o tipo de evidência, de acordo com a escada de validação acima: VALIDATED = verificado contra uma referência independente externa (dados reais, uma biblioteca independente ou vetores de referência publicados); MODELLED = verificado contra a verdade analítica ou a autoconsistência da simulação (sem conjunto de dados externo independente). VALIDATED descreve o método de verificação, não um passa/falha — uma falha honesta contra uma referência independente externa real continua VALIDATED, enquanto uma comparação que nenhuma linha da matriz nomeia como referência independente (o ajuste do LRO — Lunar Reconnaissance Orbiter — acima) é mostrada como MODELLED. As linhas de CI são salvaguardas de processo, não figuras de mérito. Algumas ilhas de dados reais (o relógio de césio medido, o PHASE.DAT do Stable32 e as verificações OPS-SAT/ICGEM em que as entradas brutas não trazem licença de redistribuição) são condicionadas a dados: o teste imprime um aviso de omissão e permanece verde quando a entrada está ausente, e os números públicos de referência são registrados em tests/fixtures/. Reproduza as entradas brutas com o scripts/fetch_*.sh correspondente.
| Status | Capacidade | Concordância | Referência / referência independente |
|---|---|---|---|
| VALIDATED | Propagação SGP4/SDP4 | 666/666 vetores, pior 4,12 mm | AIAA 2006-6753 (Vallado tcppver.out) + comparação direta com o crate independente sgp4 |
| VALIDATED | Referenciais — nutação IAU 2000A/B, cadeia CIO IAU 2006/2000A, ERA | bit a bit (X,Y a 1e-14, s a 1e-18, ERA a 1e-12) | ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b |
| MODELLED | GCRS→ITRS contra um motor SPICE independente | máx. 0.028″ → ≤ 0,86 m no solo, ≤ 3,6 m em órbita GNSS | ANISE (NAIF/SPICE em Rust puro), mesmo EOP finals2000A do IERS, 8 épocas 2020–2023 (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, de modo que não é rotulado VALIDATED) |
| MODELLED | Geopotencial EGM2008 (grau/ordem 70) | aceleração = ∇V a < 1e-6; colapso zonal para o J2 validado | Coeficientes EGM2008 da NGA + identidade analítica de ∇V |
| VALIDATED | Síntese de funcionais de gravidade (mapa de navegação assistida por gravidade / sem GNSS) | Somigliana GRS80 + γ_e/γ_p a 3.5e-12; mapa de perturbação real do EGM2008 fisicamente plausível (RMS ≈ 26 mGal, d/o 70) | Gravidade normal de Somigliana do GRS80 (Moritz 1980, IAG — International Association of Geodesy) + EGM2008 real do ICGEM (tests/icgem_gravity_reference.rs) |
| VALIDATED | Estimadores de Allan (ADEV/MDEV/TDEV/HDEV) + bandas de confiança | reproduzem os desvios de referência; as bandas χ² coincidem | NIST SP 1065 (Riley), Tabela 31/32 de 1000 pontos |
| VALIDATED | Estimadores de Allan sobre um relógio de césio real medido | OADEV/OHDEV a 1e-3 (observado ≤ 3e-5), 16 fatores de média | Stable32 sobre um Cs 5071A real contra maser de H, 556.990 pontos (tests/cs5071a_reference.rs, condicionado a dados) |
| VALIDATED | Estimadores de Allan sobre o PHASE.DAT canônico do Stable32 | OADEV/MDEV/TDEV a 1e-3 (observado ≤ 5e-5), 139 fatores de média | Desvios de referência do Stable32 para o PHASE.DAT (tests/phasedat_reference.rs, condicionado a dados) |
| MODELLED | Modelo de erro de IMU — ARW / VRW / instabilidade de viés | recuperado a < 5 % (instabilidade de viés < 15 %) | Folha de dados do Analog Devices ADIS16465; perfil de referência do NaveGo |
| VALIDATED | Propagador numérico de Cowell + modelo de forças (níveis conservativos) | pior erro de posição 0,08 m ao longo de 24 h, 278 épocas (LEO + GTO) | Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs |
| MODELLED | Nível de arrasto de Cowell + entradas absolutas de efemérides do Sol/Lua e de densidade | nível de arrasto caracterizado em ≈ 333 m / 24 h; o caso não perturbado coincide com o Kepler de variável universal em nível submétrico, energia/momento ~1e-9 | efemérides integradas de baixa precisão + Kepler analítico |
| MODELLED | Lambert · Tsiolkovsky · porkchop | ida e volta até a verdade de dois corpos; ΔV < 0.01 % | Izzo 2015 · equação do foguete · piso analítico de Hohmann |
| MODELLED | Determinação de órbita (lote de Gauss–Newton) | submétrico / mm·s⁻¹ sem ruído; ~2 m com um piso de ruído de 5 m | dois corpos + J2 sobre um arco RK4 |
| MODELLED | Ajuste do modelo de forças em relação às efemérides precisas do Galileo (arco completo) | 0,61 m RMS 3-D, 24 h, d/o-70, apenas forças | órbita final ESA0MGNFIN da ESA/ESOC (E11), EOP real finals2000A (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED) |
| MODELLED | Ajuste do modelo de forças em relação às efemérides precisas do Swarm-A (dinâmica reduzida) | 0,10 m RMS 3-D (limite de nível empírico, não uma medida) | órbita precisa SW_OPER_SP3ACOM_2_ da ESA (comparada com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulada VALIDATED) |
| MODELLED | Ajuste do modelo de forças em relação ao LRO lunar (falha assumida) | 6,67 m de dinâmica reduzida, acima da meta de 5 m | JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED) |
| MODELLED | OD em espaço profundo para Marte (SRIF de dinâmica reduzida) | ≈ 0,2 m Mars-LMO (FoM de simulação, não de missão real) | OD sintética em malha fechada — validação da maquinaria do estimador |
| MODELLED | Dinâmica de Marte com o Sol como centro em relação ao JPL DE440 | 137 m em arco de 1 dia (cresce com o arco = n corpos não modelados) | JPL DE440 via ANISE (xval/anise-mars-od, condicionado ao kernel) (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED) |
| VALIDATED | Posicionamento de ponto único em relação a uma coordenada IGS levantada (observações reais) | 5,7 m RMS 3-D / 1,1 m horizontal, SPP de código de dupla frequência livre de ionosfera | levantamento da estação IGS ABMF + efemérides de transmissão do GPS, 2018-05-13 (tests/pvt_abmf.rs) |
| MODELLED | Filtro de Kalman unscented (UKF) GNSS/INS fortemente acoplado | 0,77 m RMS ao longo de uma passagem LEO de 30 min, incluindo uma interrupção de 120 s | deriva por modelo de forças, derivada à mão |
| MODELLED | Navegação por mapa gravitacional sem GPS | ~70 km de deriva do INS → ~145 m recuperados | meta do Quantum Wayfarer da ESA NAVISP |
| MODELLED | Navegação referenciada ao terreno (TERCOM/SITAN) | 70 km de deriva → < 500 m (piso de resolução da grade ~140 m) | DEM SRTM .hgt; deriva injetada à mão (verificação não circular) |
| MODELLED | Campo principal IGRF-14 (grau/ordem 13) | polo ~80,7°N, dipolo ~29,7 µT, faixa física de 22–67 µT | IAGA (International Association of Geomagnetism and Aeronomy) igrf14coeffs.txt (semi-normalização de Schmidt) |
| MODELLED | Modulação do sinal de navegação e rastreamento de código | SSC próprio de BPSK = 2/(3·R_c); PSDs de área unitária; jitter de DLL do C/A submétrico a 45 dB-Hz | Âncoras de SSC/PSD em forma fechada + fórmula de ruído térmico do DLL de Kaplan e Hegarty |
| MODELLED | Corretor diferencial de halo/NRHO no CR3BP | STM = diferenças finitas; a órbita fecha com precisão de máquina; NRHO L2 de 9:2 ≈ 6,57 d / perilúnio ≈ 3.250 km | verificação da STM por diferenças finitas + NRHO publicada do L2 meridional de 9:2 (≈ 6,56 d / ≈ 3.370 km) — CR3BP, não uma efeméride real do Gateway |
| MODELLED | Integridade ARAIM de dupla constelação | modo de falha em toda a constelação com GPS + Galileo reais | EU ARAIM TR (relatório técnico) / DO-316; Celestrak gps-ops 2021-07-28 (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED) |
| VALIDATED | Geometria GNSS / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) | coincidência em 1e-6 relativo em 8 geometrias (bem condicionada → quase singular) | gnss_lib_py 1.0.4 (Stanford NAV Lab) — biblioteca independente (tests/dop_reference.rs) |
| VALIDATED | Métricas de avaliação de detectores de ML (AUC/ROC/confusão/Pd-Pmd/precisão/F1) | contagens exatas + < 1e-9 em 5 conjuntos de dados × 24 limiares | scikit-learn 1.9.0 (Pedregosa et al., JMLR — Journal of Machine Learning Research — 2011) — biblioteca independente (tests/eval_metrics_reference.rs) |
| VALIDATED | AUC ROC de detecção de anomalias em telemetria real do OPS-SAT da ESA | a AUC reproduz o scikit-learn com < 1e-9; AUC do detector de contagem de picos ≈ 0.85 na divisão de teste rotulada | scikit-learn roc_auc_score na divisão de teste do OPSSAT-AD (Ruszczak et al. 2025, CC BY 4,0) — telemetria real do OPS-SAT (tests/opssat_ad_reference.rs) |
| VALIDATED | Kernels numéricos de estudo de trade quântico (ajuste NNLS de ADEV · faixas de consistência χ² · Q de relógio de van Loan) | NNLS + Q exatos; χ² < 5e-4 com gl operacionais ≥ 48 | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs) |
| VALIDATED | Métricas de wander de telecomunicações MTIE / MDEV / TDEV (ITU-T G.810/G.823/G.8261/G.811 — recomendações do Setor de Normalização das Telecomunicações da União Internacional de Telecomunicações) | MTIE (9 fatores de média, idêntica bit a bit) e MDEV + TDEV (8 fatores, < 1e-9 relativo) na série LCG (gerador congruencial linear) do NIST SP 1065 | allantools 2024,06 mtie / mdev / tdev — biblioteca independente (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs) |
| VALIDATED | Métodos de estudo de trade MCDA — as quatro famílias de decisão, nove agregadores validados externamente (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) mais a ponderação de prioridades por comparação par a par AHP | pontuações / classificações / matrizes de concordância reproduzidas com < 1e-9 | pymcdm + pyDecision (bibliotecas MCDA independentes de terceiros) + RI de Saaty (Random Index) / autovalores SciPy-LAPACK (tests/mcda_*_reference.rs) |
| VALIDATED | Envelope Doppler LEO a partir da órbita e da portadora | máximo do Iridium dentro de 5 % do valor publicado de ±36 kHz; Xona Pulsar X1 dentro da faixa publicada de 32–34 kHz | resultados de teste de PNT LEO da RNTF; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs) |
| MODELLED | Convergência do PPP com aumento por LEO | 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min com 60 / 96 / 192 / 288 satélites LEO, monótona; NEES do filtro dentro da faixa χ² | tendência comparada com Li et al., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); constelações e ruído não reproduzidos |
| MODELLED | Nível de Proteção de Temporização Condicional (erro de tempo não detectado, limitado pelo holdover, sob spoofing) | a composição reproduz a recursão de covariância de vários passos de clock_state; calibrada com um spoof real gravado |
escalares do JammerTest 2024 (Zenodo 15911589) + formas fechadas de van Loan / CUSUM (examples/tpl_jammertest) |
| MODELLED | Pontuação de resiliência de PNT + instabilidade de decisão | 35 testes de referência independente derivados à mão; artefato de estudo determinístico byte a byte (semente fixa) | Mapeamento DHS RPCF v2.0 + formas fechadas de Dirichlet / Kendall-τ / Hill-N2 — arquiteturas sintéticas, não uma certificação |
| MODELLED | Estudo da lacuna de otimismo por degradação de RF (leis de escala + preditor leave-one-out) | significância por nulo de permutação; artefato determinístico byte a byte (5 sementes) | corpus sintético baseado em parâmetros — as métricas de avaliação são VALIDATED em relação ao scikit-learn (acima); o estudo é MODELLED |
| CI | Reprodutibilidade entre plataformas | entrada idêntica bit a bit + referências golden de forma em 3 SOs (sistemas operacionais) | Matriz de CI Linux / macOS / Windows, referências golden SHA-256 |
| CI | Cobertura de testes | ~95 % de linhas em src/, excluindo src/*_data.rs e src/main.rs, com limite mínimo ≥ 85 % |
cargo-tarpaulin (motor LLVM) |
Como uma capacidade conquista seu rótulo — o invariante aplicado pela CI: sem referência independente externa ⇒ não pode ser validada · SVG
Acima: toda linha validada é sustentada por um conjunto de dados externo, por construção. Abaixo: o SGP4 coincide com a referência oficial em todos os regimes (pior caso 4,12 mm). SVG · SVG
176 validadas · 221 modeladas · 4 de parceiros — SVG
Domínios de capacidade#
Todas as capacidades do mapa público, por domínio, com seu rótulo no registro. A tabela de domínios é escrita por tools/gen_readme_blocks.py a partir de web/capabilities.json, o mesmo arquivo que o mapa de tudo do Studio lê.
A tabela completa, domínio por domínio, com cada capacidade e seu rótulo, está em docs/CAPABILITY-DOMAINS.md.
Instalar#
Uma linha instala a ferramenta de linha de comando: cargo install kshana. Todos os canais distribuem a v0.40.0 a partir do mesmo commit com tag.
| Canal | Instalar | Guia |
|---|---|---|
| Experimentar no navegador | abra https://kshana.dev | Guia do Studio |
| Linha de comando (Rust) | cargo install kshana |
Uso da linha de comando |
| Biblioteca Rust | cargo add kshana |
Referência da API em docs.rs |
| Python | pip install kshana |
Guia da API Python |
| JavaScript e WebAssembly | npm install kshana |
Guia de npm e WebAssembly |
| Assistente de IA (servidor MCP, cargo) | cargo install kshana-mcp |
Guia do servidor MCP |
| Imagem Docker | docker run --rm -i ghcr.io/ashfordeou/kshana-mcp |
Guia do servidor MCP: Docker |
| Cursor (um clique) | Adicionar ao Cursor (npx) · Adicionar ao Cursor (Docker) · npx -y kshana-mcp@0.40.0 |
Todos os trechos de instalação do MCP |
| VS Code (um clique) | Instalar no VS Code (npx) · Instalar no VS Code (Docker) · npx -y kshana-mcp@0.40.0 |
Todos os trechos de instalação do MCP |
| npx | npx -y kshana-mcp@0.40.0 |
Todos os trechos de instalação do MCP |
| uvx / pipx | uvx kshana-mcp==0.40.0 |
Todos os trechos de instalação do MCP |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
Todos os trechos de instalação do MCP |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp |
Todos os trechos de instalação do MCP |
| winget | winget install AshfordeOU.KshanaMcp |
Todos os trechos de instalação do MCP |
| Binário pré-compilado | baixe kshana-mcp-<target> da versão publicada e confira-o com SHA256SUMS | Todos os trechos de instalação do MCP |
| Registro oficial de MCP | pesquise io.github.ashfordeOU/kshana-mcp | Todos os trechos de instalação do MCP |
| Remoto (HTTP em fluxo), auto-hospedado | kshana-mcp --http 127.0.0.1:8080 |
Guia de auto-hospedagem |
| Plugin para IDE JetBrains | Configurações → Plugins → Marketplace → pesquise "Kshana" (ID do plugin dev.kshana.ide) | Guia do plugin |
| Plugin do Signal K | npm install signalk-kshana-trust |
Guia do plugin do Signal K |
| Plugin do OpenCPN | baixe o tarball do plugin da versão publicada | Submissão ao catálogo do OpenCPN |
| Painel do Grafana | importe kshana-grafana-*.json da versão publicada | Código-fonte do painel |
| Imagem de build de referência | docker pull ghcr.io/ashfordeou/kshana-reference-build |
Integrações marítimas |
Kshana no JetBrains Marketplace Compila com Rust 1,88 ou mais recente, a rust-version em Cargo.toml
MCP é o Model Context Protocol. Fixe uma versão com cargo install kshana --version 0.40.0, pip install kshana==0.40.0 ou npm install kshana@0.40.0. Para compilar a partir do código-fonte, consulte Instalar e compilar em Referência.
Execute um cenário a partir de Python e de WebAssembly
import json, kshana
toml = open("clock-holdover.toml").read()
result = json.loads(kshana.run(toml))
print(kshana.version(), result["quantum"]["fom"]["holdover_s"], result["classical"]["fom"]["holdover_s"])
# 0.40.0 6600.0 2610.0
Além de run, o módulo expõe run_full (JSON, SVG e o resumo de uma linha de uma só vez), run_typed, validate_toml, list_kinds / scenario_kinds e error_kind; consulte docs/PYTHON_API.md.
O pacote npm é o motor inteiro compilado para WebAssembly. No Node.js, entregue o binário a initSync; em um navegador, await init() o busca (consulte README.npm.md).
import { readFileSync } from "node:fs";
import { createRequire } from "node:module";
import { initSync, run, summary, version } from "kshana";
const wasm = createRequire(import.meta.url).resolve("kshana/kshana_bg.wasm");
initSync({ module: readFileSync(wasm) });
const toml = readFileSync("clock-holdover.toml", "utf8");
const result = JSON.parse(run(toml));
console.log(version(), result.quantum.fom.holdover_s, result.classical.fom.holdover_s);
// 0.40.0 6600 2610
console.log(summary(toml));
Arquitetura#
Um único motor aberto fica no centro, e todas as superfícies o executam: a linha de comando, a biblioteca Rust, Python, WebAssembly e o Kshana Studio, o servidor MCP, a imagem Docker e o plugin do JetBrains. O mesmo arquivo de cenário produz os mesmos bytes em cada uma. O Kshana Pro fica por cima como uma camada separada que depende do motor e nunca o bifurca.
Por dentro do motor: as camadas de domínio e o registro de verificação
Um motor, muitas portas de entrada. Um único núcleo em Rust (kshana) executa todos os cenários, acessado por uma CLI, uma extensão Python, um módulo WebAssembly no navegador, um servidor MCP para agentes de IA e um plugin de IDE do JetBrains — todos convergindo para um único despacho api::run_toml. Por dentro, os pacotes de sensores se conectam a uma interface comum de modelo de erro; ao lado deles ficam uma camada de referenciais (precessão–nutação IAU 2006/2000A e a redução GCRS↔ITRS baseada no CIO), uma camada numérica/de astrodinâmica (SGP4/SDP4 analítico e um propagador numérico de Cowell com seu modelo de forças EGM2008/perturbações, projeto de manobras e determinação de órbita), uma camada de integridade/GNSS (RAIM/ARAIM, SBAS, o domínio de medição, jamming, cislunar), uma camada de fusão / PNT alternativo (os estimadores GNSS/INS e os correlacionadores de mapas gravitacionais/de terreno/magnéticos), uma camada de espaço profundo e lunar (PNT radiométrico de Marte e o conjunto de PNT lunar, com seu nível de evidência por peça na matriz — tempo LTC, VLBI, OD+relógio conjunta, realização de referencial, volume de serviço, PNT diferencial, interoperabilidade), uma camada de análise de missão (orçamentos de lançamento / reentrada / cobertura / apontamento / passagem / enlace e o ambiente de clima espacial) e a camada aberta de estudos de resiliência e aprendizado de máquina (pontuação de resiliência RPCF, a lacuna de otimismo por degradação de RF e o demonstrador de PNT quântico), cujos artefatos reproduzíveis se apoiam nos kernels validados.
Dois crates independentes, excluídos do workspace, ficam ao lado do núcleo — mcp/kshana-mcp (o servidor MCP, construído sobre o SDK rmcp da edição 2024) e xval/anise-frames (a verificação cruzada de referenciais ANISE/SPICE, que traz dependências MPL-2.0 (Mozilla Public License 2,0)) — mantidos fora do grafo de dependências do crate publicado, de Cargo.lock, do bloqueio de licenças e da compilação MSRV (versão mínima suportada do Rust) pela lista exclude do Cargo.toml raiz. O plugin do JetBrains (ide/jetbrains) é um projeto Kotlin separado. Consulte docs/ARCHITECTURE.md para o conjunto completo de diagramas.
Os diagramas renderizados (fluxo do motor, mapa de módulos, distribuição) estão em docs/ARCHITECTURE.md.
Diagramas#
Os diagramas são fontes Mermaid em docs/diagrams/, renderizadas em SVG e PNG em docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> no Linux, os outros dois scripts render-diagram nos demais sistemas), e um registro associa cada PNG ao SVG exato de que veio. Testes fixam as contagens que eles declaram. Os gráficos das seções acima são desenhados por ferramentas a partir de execuções do motor; estes mostram como as partes se encaixam.

Um despacho, um motor, saída reproduzível · SVG · fonte system-overview.mmd

Todas as superfícies, a partir do mesmo motor · SVG · fonte surfaces.mmd

O laço interno de uma execução · SVG · fonte engine-flow.mmd

De um registro do receptor a uma pontuação de confiança e ao que a usa · SVG · fonte trust-flow.mmd

Do cenário ao pacote assinado; o Kshana nunca produz nem reproduz um sinal · SVG · fonte lab-round-trip.mmd

Como o Studio roda, localmente · SVG · fonte studio-flow.mmd

Fluxo de teste e lançamento, das verificações locais a um lançamento verificado e ao caminho apenas do site · SVG · fonte release-flow.mmd · docs/RELEASING.md

Onde o código está · SVG · fonte module-map.mmd

O que é distribuído onde, e o que o verifica · SVG · fonte distribution.mmd
Assistente de IA#
kshana-mcp é um servidor MCP: seu assistente executa o motor de verdade e lê de volta o seu JSON, em vez de adivinhar a matemática. Cada uma de suas 49 ferramentas é um invólucro fino sobre uma função pública da biblioteca kshana, de modo que nenhuma lógica de simulação fica no servidor.
Instalar o servidor MCP#
Consultivo, não é um equipamento de navegação homologado: o operador continua responsável pela navegação. O servidor roda no seu computador; nada é enviado à Ashforde OÜ.
Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.
| Canal | Comando ou botão | Requer | Forma fixada |
|---|---|---|---|
| Cursor (um clique) | npx (Node) · Docker | Node ou Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| VS Code (um clique) | npx (Node) · Docker · Insiders (npx) | Node ou Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| npx | npx -y kshana-mcp@0.40.0 |
Node 18+ | kshana-mcp@0.40.0 |
| uvx / pipx | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
Python 3,9+ com uv ou pipx | kshana-mcp==0.40.0 |
| Docker | docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
Docker | ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
brew | fórmula para v0.40.0 |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket e depois scoop install kshana-mcp |
Scoop (Windows) | manifesto para v0.40.0 |
| winget | winget install AshfordeOU.KshanaMcp |
winget (Windows) | --version 0.40.0 |
| cargo | cargo install kshana-mcp --version 0.40.0 |
Rust 1,88+ | kshana-mcp 0.40.0 |
| Binário pré-compilado | a página da versão: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], conferido por SHA256SUMS e gh attestation verify |
nenhuma | v0.40.0 |
| Registro de MCP | io.github.ashfordeOU/kshana-mcp (encontrado por clientes que consultam o registro) |
um cliente que consulta o registro | 0.40.0 |
| Remoto (HTTP em fluxo contínuo) | kshana-mcp --http 127.0.0.1:8080, hospedado por conta própria: consulte docs/deploy/mcp-http.md |
seu próprio host | v0.40.0 |
kshana-mcp no Glama, sua pontuação de qualidade de servidor MCP
Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.
A configuração por cliente está em docs/integrations.md. O servidor está listado no registro MCP oficial como io.github.ashfordeOU/kshana-mcp.
As 49 ferramentas
Cenários e relatórios
| Ferramenta | O que faz |
|---|---|
run_scenario |
Executar um cenário a partir de uma definição TOML (Tom's Obvious, Minimal Language) |
list_scenario_kinds |
Os 92 tipos de cenário incorporados com descrições + campos obrigatórios/opcionais — para que o agente possa montar um cenário válido |
validate_scenario |
Verificação prévia: analisa o TOML e detecta seu tipo de cenário, sem executar |
list_example_scenarios |
Os cenários de referência incluídos, como JSON |
get_example_scenario |
O texto TOML de um cenário de referência incluído, byte a byte o arquivo em scenarios/ |
report_scenario |
Executar um cenário e devolver seu relatório |
animate_scenario |
Executar um cenário e devolver sua série temporal como uma animação |
sky_geometry |
Geometria do céu sob um horizonte dependente do azimute: os satélites visíveis e ocultos, o DOP, a covariância leste-norte-cima e a elipse de erro horizontal; ou uma predefinição de horizonte com sua procedência |
Exportação e interoperabilidade
| Ferramenta | O que faz |
|---|---|
list_export_formats |
Quais formatos de interoperabilidade se aplicam a um cenário (czml, kml, geojson, stk, sigmf), o motivo quando um não se aplica e a especificação que cada gravador segue |
export_interop |
Exportar um cenário como CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemérides STK (Systems Tool Kit) .e ou SigMF (Signal Metadata |
import_route |
Gravar uma rota GeoJSON LineString em um cenário que percorre uma trilha de pontos de passagem (terrain-nav, terrain-slam, gravity-map, combined-altpnt) e devolver o novo TOML |
export_sp3 |
Exportar a constelação de um cenário orbit como efemérides precisas SP3-c (Standard Product 3, revisão c) |
export_omm |
Exportar os elementos de um cenário orbit como um catálogo OMM (Orbit Mean-elements Message) CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2 |
export_oem |
Exportar a série de estados de um cenário orbit como efemérides OEM (Orbit Ephemeris Message) CCSDS 2,0 — a posição TEME (true equator, mean equinox) e |
export_table_csv |
Executar um cenário e devolver sua tabela de reprodutibilidade como CSV (valores separados por vírgula) — a tabela estável byte a byte que a CLI (interface de linha de comando) grava como <scenario>.table.csv |
export_test_bench |
O movimento do veículo e os eventos de um cenário para um simulador GNSS de laboratório (kshana bench-export) |
Confiança do receptor e da embarcação
| Ferramenta | O que faz |
|---|---|
assess_receiver_log |
Avaliar a confiança em um registro de receptor GNSS (sistema global de navegação por satélite) real |
assess_vessel_stream |
Pontuar um trecho limitado de NMEA 0183 (no máximo 2 MiB e 20.000 épocas |
assess_vessel_log |
O registro NMEA 0183 de uma embarcação (no máximo 4 MiB) como execução em lote, com o TOML de sessão declarando os limites da embarcação |
create_evidence_pack |
Um pacote de evidências assinado para uma janela do registro de uma embarcação (kshana receiver-trust evidence) |
attach_evidence_timestamp |
Vincular um token de carimbo de tempo RFC 3161 (base64 dos bytes de .tsr) a um pacote, em memória (kshana evidence attach-timestamp) |
verify_evidence_pack |
Verificar um pacote (kshana evidence verify) |
generate_training_nmea |
NMEA 0183 sintético de ponte para treinamento de tripulação a partir de um TOML nmea-scenario (jamming, arrasto de posição, spoofing de tempo, atraso de replay) com o registro do instrutor (kshana-nmea-training/1) |
build_interference_map |
Um mapa de interferência GNSS a partir de relatórios de posição ADS-B ou AIS em texto CSV (no máximo 4 MiB) |
route_exposure |
A parcela do comprimento de uma rota em células degradadas, não degradadas, não avaliadas e não observadas de um ou mais mapas de interferência, opcionalmente dentro de um intervalo de datas |
trust_telemetry |
Um fluxo de confiança (linhas JSON) ou um resultado de receiver-trust renderizado como texto Prometheus, linhas de syslog CEF ou LEEF, ou uma carga JSON OTLP, com os codificadores de kshana trust-telemetry |
jammertest_import |
Lê o catálogo de testes e o plano de transmissão do Jammertest publicados (NPRA/jammertest-plan, MIT) como verdade programada (kshana jammertest import): os intervalos de uma área de teste tornam-se eventos de confiança do receptor, com o id do catálogo e o ano em cada rótulo. Intervalos planejados, não horários de transmissão registrados; nenhum campo de contato do plano é lido. MODELLED. Veja docs/JAMMERTEST.md. |
jammertest_score |
Pontua um registro de receptor contra esse cronograma (kshana jammertest score): por teste, a latência de detecção, os alarmes perdidos e o tempo de recuperação, e os alarmes falsos fora de todo intervalo. Registros de texto como log, binários (ubx, sbf) como log_base64. Um pacote assinado precisa de uma chave: linha de comando. Somente consultivo; MODELLED. |
fit_imu_log |
Parâmetros de acelerômetro e de giroscópio dos cenários hybrid e fusion ajustados a partir de um registro de IMU estacionária (CSV ou EuRoC) por desvio de Allan, com uma tabela [accel_classical] pronta para colar e o SHA-256 do registro (kshana imu-fit). Texto na entrada, JSON na saída; MODELLED. |
IQ GNSS (arquivos do diretório de trabalho; desligado no modo HTTP)
| Ferramenta | O que faz |
|---|---|
iq_signals |
A configuração da camada de IQ GNSS |
iq_info |
Descrever uma gravação IQ (em fase e em quadratura) no diretório de trabalho sem processá-la |
iq_scene |
Gerar uma cena IQ GNSS com vários satélites no diretório de trabalho (kshana iq scene) |
iq_acquire |
Aquisição por FFT (transformada rápida de Fourier) de um ou mais PRNs (códigos de ruído pseudoaleatório) em uma gravação (kshana iq acquire), opcionalmente após estágios de front-end |
iq_track |
Adquirir e depois rastrear com o banco de DLL/PLL/FLL (malha travada em atraso, fase e frequência) (kshana iq track), com as malhas de um `kshana.loop-desig |
iq_frontend |
Aplicar DSP (processamento digital de sinais) de front-end de receptor e de mitigação de interferência |
iq_sweep |
Reproduzir uma gravação IQ do diretório de trabalho em vários projetos de malha de rastreamento (kshana iq sweep) |
iq_monitor |
Executar os monitores de detecção de interferência e de spoofing sobre uma gravação IQ do diretório de trabalho (kshana iq monitor) |
iq_labfit |
Ajustar o modelo de perda de travamento da malha de rastreamento a execuções de laboratório (kshana iq labfit) a partir de um cenário iq-labfit cujos registros estão em linha (text ou base64 |
iq_test_conditions |
Validar um arquivo kshana.test-conditions/1 dado como texto e devolver as condições resolvidas com seu hash |
iq_campaign |
Executar uma campanha de replay em laboratório (kshana iq campaign) |
iq_campaign_status |
O progresso da pasta de saída de uma campanha |
Mapeamento de compliance
| Ferramenta | O que faz |
|---|---|
compliance_report |
O mapeamento do referencial público preenchido a partir de documentos de resultado dados como texto (kshana compliance-report) |
compliance_mapping |
As tabelas estáticas de mapeamento (ou, com sources, os documentos de origem que elas citam, com versões e URLs) em Markdown, iniciadas pela mesma declaração |
list_standards_packs |
Os pacotes de normas (kshana standards-pack list): conjuntos de cenários pontuados para os perfis de teste do referencial DHS Resilient PNT, o IMO MSC.1/Circ.1575 e o ICAO Doc 9849 Apêndice F |
run_standards_pack |
Um pacote executado contra limiares declarados antes da execução: cada teste MET, NOT MET ou NEEDS INPUT; MODELLED, não classifica nenhum produto |
lunanet_afs_check |
O LunaNet Augmented Forward Signal verificado em relação ao LNIS V5 AD1 Volume A (LSIS-AFS V1.0): os códigos em relação às tabelas impressas, ou um fluxo de símbolos em relação ao formato de quadro; o LDPC e o CRC-24Q dos subquadros 2 a 4 não são verificados |
create_round_trip_pack |
O pacote assinado de ida e volta em laboratório: cenário, documento kshana.test-conditions/1, registro do receptor e pontuação, vinculados por hash |
Benchmark
| Ferramenta | O que faz |
|---|---|
score_benchmark |
Uma submissão kshana-bench pontuada contra um arquivo de verdade, ambos em texto JSON (kshana bench score, bench/SPEC.md): o arquivo de resultado com a versão da especificação, a divisão, os hashes de entrada e as métricas da tarefa. MODELLED; descreve um registro ou corpus, nunca um produto. |
render_leaderboard |
Arquivos de resultado do kshana-bench renderizados como a página estática de classificação (texto HTML), cada um validado antes. |
Edições#
O motor inteiro é gratuito. O Kshana Pro e os estudos sob medida são para programas que precisam de mais, e todo caminho pago começa com uma mensagem: não há preços aqui.
| Gratuito | Kshana Pro | Estudo sob medida | |
|---|---|---|---|
| O que é | todo o motor aberto, todos os 92 tipos de cenário, sem restrição de recursos | uma camada proprietária sobre o mesmo motor, sob contrato | um estudo de resiliência de PNT MODELLED do seu sistema, feito para você |
| Licença | AGPL-3.0 (GNU Affero General Public License, versão 3), ou uma licença comercial | proprietário | contrato |
| Como começar | instale ou abra kshana.dev | solicite uma avaliação do Pro | solicite um estudo |
O que é o Pro, nas palavras de docs/PRO.md:
Um superconjunto estrito do Kshana aberto. O Pro depende do motor aberto como biblioteca e nunca o bifurca. Todo tipo de cenário aberto roda no Pro sem alterações, e um cenário aberto roda no Pro sem nenhuma licença.
Nenhuma física nova. O Pro não acrescenta nenhum modelo físico e não altera nenhum. Todo número do Pro vem de execuções do motor aberto, de modo que uma figura do Pro é tão confiável quanto o tipo de cenário aberto de que veio, e nunca mais.
O Pro responde às próximas perguntas de um programa: qual projeto levar ao voo (um otimizador de projeto e sua fronteira de Pareto), quão segura é a resposta (incerteza e sensibilidade) e se a missão atende aos seus requisitos (um dossiê de missão, rastreabilidade de requisitos, estudos de trade, uma verificação de regressão de cenários, gêmeos digitais de relógio, um dossiê de estudo e um serviço local). Ele também acompanha uma campanha de figuras e faz um pipeline falhar quando uma delas piora, testa planos de sinal candidatos em relação aos sinais abertos de navegação por satélite nos dois sentidos (coexistência espectral) e enfileira estudos em um serviço local de tarefas com um registro de entregas encadeado por hash. Cada um está descrito, com o que produz e o que não faz, em docs/PRO.md. Nada que o Pro produz é uma certificação, e um estudo sob medida também não é uma certificação.
O que o Kshana Pro lê do motor aberto, e o suporte da Ashforde® OÜ
Sobre o que o Kshana Pro se apoia. Cada parte do Pro trabalha a partir do motor aberto e o deixa inalterado:
- O otimizador de projeto, o estudo de incerteza e o dossiê de missão executam cenários do motor aberto pela interface pública do motor e calculam cada número a partir dos resultados das execuções. Cada saída mantém o nível VALIDATED, MODELLED ou PARTNER que o motor aberto deu a cada figura, nunca um superior.
- Gêmeos digitais de relógio usam o modelo de relógio do motor aberto e seu estimador de desvio de Allan: um gêmeo é calibrado ao orçamento de Allan publicado do dispositivo e depois verificado estimando o desvio de Allan do gêmeo com o estimador aberto.
- Estudos de trade executam cada opção de arquitetura como um cenário do motor aberto, sem alterações, e classificam as opções por uma figura de mérito lida do resultado de cada execução.
- O acompanhamento de campanha lê suas figuras dos resultados de execuções do motor aberto dos cenários de um pacote e as compara com a execução anterior que passou.
- A coexistência espectral lê cada número físico de execuções do motor aberto dos tipos
leo-signaleconstellation-design, e acrescenta apenas a soma sobre os satélites à vista e a classificação dos planos. - O serviço local de tarefas executa cenários abertos e do Pro pelo mesmo motor e armazena cada resultado como a execução o devolveu.
- Pacotes de evidências registram, para cada execução, o hash do cenário que o motor aberto carimba em seu resultado, de modo que uma figura em um pacote possa ser reproduzida executando-se novamente o seu cenário.
- Ferramentas de engenharia de sistemas e de programa. As ferramentas de engenharia de sistemas baseada em modelos (MBSE) e de programa do Kshana Pro conferem os requisitos de um programa com execuções do motor aberto: importam requisitos como valores separados por vírgula (CSV), ou como um subconjunto documentado do Requirements Interchange Format (ReqIF) ou do texto da Systems Modeling Language versão 2 (SysML v2), avaliam cada critério de aceitação, com sua unidade, em relação aos valores que uma execução gravou, e produzem uma matriz de referência cruzada de verificação (VCRM), um modelo SysML v2, um relatório de impacto de mudanças e um pacote de evidências offline. Elas não reexecutam nem recalculam nada, e leem apenas o que o motor aberto publica: o
result.jsonde cada execução (os campos que um critério nomeia, suas unidades, o carimbo de reprodutibilidade com hash do cenário, semente, versão do motor e versão do esquema, e o rótulo e os níveis das figuras da execução), seureport.json(tipo de cenário, registro de reprodutibilidade e rótulos de capacidade), o arquivo de cenário (seu hash, tipo de cenário, semente e parâmetros), o esquema de unidades de campo (a unidade, a procedência e o nível de evidência de cada campo) e a matriz de verificação (o rótulo VALIDATED, MODELLED ou PARTNER de cada capacidade).
Suporte e serviços profissionais#
O Kshana é gratuito e de código aberto sob a AGPL-3.0 e desenvolvido e mantido profissionalmente pela Ashforde® OÜ (Estônia). O motor aberto é completo e utilizável por si só. Para organizações que precisam de mais, a Ashforde® OÜ oferece:
- Suporte comercial e integração — incorporação do Kshana à sua cadeia de ferramentas, cenários personalizados e correções prioritárias.
- Modelos de sensor sob medida — calibrados ao seu hardware, incluindo modelos de resiliência sujeitos a controle de exportação mantidos em uma camada privada.
- Kshana Pro — ferramentas proprietárias de engenharia de sistemas baseada em modelos (MBSE) e de programa que conferem os requisitos de um programa com execuções do motor aberto e produzem uma matriz de referência cruzada de verificação (VCRM), um modelo Systems Modeling Language versão 2 (SysML v2), um relatório de impacto de mudanças e um pacote de evidências offline. Elas não reexecutam nada e leem apenas as saídas publicadas do motor: o
result.jsone oreport.jsonde cada execução, o arquivo de cenário, o esquema de unidades de campo e os rótulos da matriz de verificação (a lista completa está em Edições). - Ferramentas do Kshana Pro para projeto, incerteza e missão — a fronteira de Pareto de um espaço de projeto, incerteza e sensibilidade ao longo de milhares de execuções, e um dossiê de missão com um único comando, com matriz de verificação e um PDF; consulte
docs/PRO.md. - Acompanhamento de campanha, coexistência espectral e serviço de tarefas do Kshana Pro — um pipeline que falha quando uma figura monitorada piora, planos de sinal testados em relação aos sinais abertos de navegação por satélite nos dois sentidos e uma fila local de tarefas com um registro de entregas encadeado por hash; consulte
docs/PRO.md. - Treinamento e consultoria em análise de desempenho de PNT quântico/clássico.
Este é o modelo de núcleo aberto: o motor é, e continua sendo, licenciado de forma aberta; o negócio que o sustenta é conhecimento especializado, suporte e as extensões proprietárias — não taxas de licença. Contato: contact@ashforde.org · ashforde.org.
Pesquisa#
Os estudos construídos sobre o motor aberto são publicados no arXiv. Cada um nomeia o comando do motor por trás dele, de modo que seus números possam ser regenerados a partir de um cenário ou exemplo de estudo versionado.
| Artigo | O que ele mostra | Comando do motor |
|---|---|---|
| Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics arXiv:2606,22054 · doi:10.48550/arXiv.2606.22054 |
A queda na pontuação de um detector de interferência GNSS quando as condições mudam pode ser prevista apenas a partir de estatísticas dentro da distribuição, em uma bancada sintética aberta e depois em gravações de campo abertas. | cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json |
| A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing arXiv:2606,24210 · doi:10.48550/arXiv.2606.24210 |
Um receptor de temporização GNSS sob spoofing não tem um limite incondicional finito para o erro de tempo não detectado, de modo que o artigo apresenta um limite condicional, calibrado em um spoof gravado pelo ar da campanha pública JammerTest 2024. | cargo run --release --example tpl_jammertest |
| How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting arXiv:2607,05415 · doi:10.48550/arXiv.2607.05415 |
Uma única pontuação composta de resiliência é uma base estável para uma decisão apenas quando um projeto domina; quando os projetos disputam, só a reponderação já pode mudar o vencedor. | cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json |
| Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination arXiv:2607,02566 · doi:10.48550/arXiv.2607.02566 |
A medição de distância dentro de uma constelação lunar deixa a posição absoluta de uma estação de superfície inobservável; um atraso de interferometria de linha de base muito longa (VLBI) vindo da Terra a restaura quando a constelação é esparsa e a refina quando é rica. | o tipo de cenário lunar-joint-od-clock: kshana example lunar-joint-od-clock > s.toml && kshana s.toml |
| The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis arXiv:2607,06212 · doi:10.48550/arXiv.2607.06212 |
Constelações planejadas de quatro a seis satélites dão uma geometria ruim no polo sul lunar, e alguns faróis de medição de distância na superfície a corrigem a um custo muito menor do que mais satélites. | o tipo de cenário lunar-beacon: kshana example lunar-beacon > s.toml && kshana s.toml |
| Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever arXiv:2610,23871 · doi:10.48550/arXiv.2610.23871 |
A diluição de precisão é indefinida para o rastreamento cislunar apenas por distância, porque a velocidade é inobservável em um instante, de modo que o artigo usa o Gramiano de observabilidade em quatro órbitas retrógradas distantes planares: apenas distância tem posto 2 de 4 em um instante e precisa de um arco de cerca de 2,09 h para se tornar totalmente observável, com o condicionamento melhorando à medida que o arco se alonga; a taxa de variação da distância (Doppler) dá posto 4 instantaneamente; e coestimar uma estação com os estados e relógios dos satélites continua com deficiência de posto de um, a menos que se acrescente um observável interferométrico externo. Os requisitos pertencem a orçamentos de comprimento de arco, de condicionamento e de tipo de medição, não ao DOP. | o tipo de cenário cislunar-observability: kshana scenarios/cislunar-observability.toml (seu irmão cislunar-arc-recovery testa o limiar com um estimador independente por diferenças finitas) |
Os três exemplos de estudo gravam artefatos determinísticos byte a byte (sementes fixas) que registram a versão do motor, as sementes e um hash de configuração. Os três artigos lunares e cislunares são construídos sobre o conjunto lunar (o nível de evidência de cada parte está na matriz de verificação); suas afirmações de geometria e de diluição de precisão também são conferidas de forma cruzada com referências independentes separadas em tests/validate_p*.rs. Mais em Artefatos de estudo reproduzíveis em Referência.
Citar#
Se você usar o Kshana em trabalho acadêmico ou técnico, cite a versão que usou, com o cenário e a semente. CITATION.cff contém os metadados legíveis por máquina, e o GitHub exibe a partir dele um botão "Cite this repository". Cada versão é arquivada no Zenodo; o DOI (Digital Object Identifier) de conceito 10.5281/zenodo.20528627 sempre aponta para a versão mais recente.
Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627
Os artigos acima:
Baweja, C. (2026). Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics. arXiv:2606,22054. https://doi.org/10.48550/arXiv.2606.22054
Baweja, C. (2026). A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing. arXiv:2606,24210. https://doi.org/10.48550/arXiv.2606.24210
Baweja, C. (2026). How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting. arXiv:2607,05415. https://doi.org/10.48550/arXiv.2607.05415
Baweja, C. (2026). Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination. arXiv:2607,02566. https://doi.org/10.48550/arXiv.2607.02566
Baweja, C. (2026). The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis. arXiv:2607,06212. https://doi.org/10.48550/arXiv.2607.06212
Baweja, C. (2026). Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever. arXiv:2610,23871. https://doi.org/10.48550/arXiv.2610.23871
Licença#
O Kshana tem licença dupla: a GNU AGPL-3.0-only (LICENSE), ou uma licença comercial da Ashforde® OÜ para integração fechada à qual a AGPL não se adapta. LICENSING.md explica qual se aplica. As contribuições são licenciadas na entrada sob a AGPL e também concedem à Ashforde® OÜ o direito de incluí-las na edição comercial; assine cada commit com git commit -s (consulte CONTRIBUTING.md). "Kshana" e suas marcas são marcas registradas da Ashforde® OÜ: a licença cobre o código, não o nome, portanto renomeie os forks.
Referência#
O material longo, recolhido. Todos os documentos estão listados em Documentação.
Instalar e compilar a partir do código-fonte
Instalar e compilar#
Requer uma cadeia de ferramentas Rust (≥ 1,88, o rust-version em Cargo.toml; desenvolvido em 1,93).
git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test # all tests pass
Uso: a linha de comando por completo
Uso#
Execute qualquer cenário; a CLI despacha pelo campo kind do cenário e grava <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html e <scenario>.report.json ao lado dele — além de <scenario>.table.csv para os tipos de cenário que publicam uma tabela. O relatório (uma página HTML (HyperText Markup Language) e um documento JSON com o mesmo conteúdo) traz um resumo executivo, cada entrada com sua unidade, os resultados e gráficos, as tabelas de varredura, Monte Carlo ou cadeia de uma campanha, uma linha do tempo de eventos, o rótulo VALIDATED / MODELLED / PARTNER e a origem de cada capacidade usada pela execução, o que não é modelado e um registro de reprodutibilidade (versão do motor, resumos Secure Hash Algorithm 256-bit (SHA-256), semente, plataforma e o comando exato). Ele é impresso como um arquivo PDF (Portable Document Format) limpo a partir do navegador em papel A4 ou Carta; o motor não grava nenhum PDF por conta própria. Consulte docs/REPORTS.md.
cargo run -- scenarios/clock-holdover.toml
cargo run -- scenarios/imu-deadreckoning.toml
cargo run -- scenarios/timetransfer.toml
cargo run -- scenarios/hybrid-pnt.toml
cargo run -- scenarios/orbit-gnss-challenged.toml
cargo run -- scenarios/orbit-sgp4-gps.toml
cargo run -- scenarios/orbit-rinex.toml
cargo run -- scenarios/integrity-raim.toml
# Export a propagated constellation to an SP3-c precise-ephemeris file:
cargo run -- scenarios/orbit-sgp4-gps.toml --export-sp3 gps.sp3
# Export the constellation's mean elements to a CCSDS OMM catalogue (one OMM
# message per TLE-defined satellite, with its real NORAD id / COSPAR designator):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-omm gps.omm
# Export the velocity-carrying state to a CCSDS OEM 2.0 ephemeris (GMAT/Orekit/STK):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-oem gps.oem
# Export the geometry for a globe, a map or a mission-analysis tool: CZML, KML,
# GeoJSON, STK .e, or SigMF for the spectrum kind (every format that applies):
cargo run -- scenarios/jamming-demo.toml --export all
--export <czml|kml|geojson|stk|sigmf|all|list> grava ao lado do cenário CZML (a Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), efemérides .e do Ansys STK (Systems Tool Kit) e gravações SigMF (Signal Metadata Format), e --import-route <route.geojson> injeta uma linha GeoJSON nos tipos de cenário que percorrem uma trilha. Cada formato é validado em relação à sua especificação publicada, e um cenário ao qual um formato não se aplica diz por quê: consulte docs/INTEROP.md.
Outros modos da CLI — verificar um cenário com lint, fornecer dados reais de orientação da Terra ou executar uma suíte inteira:
# Lint a scenario without running it (checks the kind + required fields):
cargo run -- --validate scenarios/integrity-raim.toml
# Feed a real IERS Earth-orientation file (finals2000A) for frame precision:
cargo run -- scenarios/orbit-sgp4-gps.toml --eop tests/fixtures/agency/eop/finals2000A_2022001.txt
# Run a SUITE of scenarios into one aggregated, stamped study artifact
# (writes <suite>.study.json + <suite>.study.html next to the manifest):
cargo run -- --study scenarios/quantum-pnt-demonstrator.suite.toml
# Animate a run's time series: an animated SVG, a self-contained HTML player, and a
# numbered SVG frame sequence with manifest.json (see docs/ANIMATION.md):
cargo run -- scenarios/campaign-jam-spoof-holdover-integrity.toml --animate all
Exportação de animação. --animate svg|html|frames|all grava <scenario>.animation.svg (keyframes de Cascading Style Sheets (CSS), sem script), <scenario>.animation.html (reproduzir, pausar, arrastar, velocidade e painéis sincronizados, sem nenhum recurso externo) e <scenario>.frames/ (frame_0000.svg, … mais manifest.json com os quadros por segundo e a duração). Uma campanha reproduz suas fases e alarmes, uma execução de espectro sua cascata; o tema segue prefers-color-scheme e prefers-reduced-motion mostra a imagem final. Ele renderiza as amostras da própria execução, idênticas byte a byte em uma nova execução, e não acrescenta nenhuma evidência. Consulte docs/ANIMATION.md.
Um manifesto de suíte é um pequeno arquivo TOML (Tom's Obvious, Minimal Language) — um title e uma matriz scenarios = [ … ] de caminhos de cenário — que o motor executa em sequência, reunindo cada resultado (com seus rótulos MODELLED / VALIDATED) em um único artefato de estudo autodescritivo. Consulte scenarios/quantum-pnt-demonstrator.suite.toml.
Papel de interoperabilidade. O Kshana é a camada de simulação de desempenho que fica ao lado da cadeia de ferramentas de pós-processamento, e não uma substituta dela: alimente sua saída RINEX no RTKLIB ou no gLAB para obter uma solução de posição e use sua saída SP3 como produto de órbita precisa para ferramentas como o Ginan — o Kshana responde que resiliência uma dada arquitetura de PNT proporciona antes de você ter sinais reais, em formatos que essas ferramentas já ingerem (--export-sp3, ou export_sp3 = true em um cenário orbit, grava <scenario>.sp3). A mesma órbita pode ser publicada como elementos médios CCSDS OMM da trilha de normas (--export-omm, ou export_omm = true, grava <scenario>.omm) — uma mensagem OMM 502,0 KVN (notação palavra-chave = valor) por satélite definido por TLE, trazendo o número de catálogo NORAD (North American Aerospace Defense Command) real de cada objeto, o designador internacional COSPAR (Committee on Space Research) e a época, para qualquer consumidor que entenda OMM, em vez de um conjunto de elementos de duas linhas sob medida.
Exemplo de saída (holdover de relógio — observe como as figuras de mérito de Integridade e Segurança são relatadas):
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote scenarios/clock-holdover.result.json, scenarios/clock-holdover.chart.svg, scenarios/clock-holdover.report.html, and scenarios/clock-holdover.report.json
O erro de temporização do percentil 95 (p95) do relógio óptico é 1.20e-4 ns: o resumo imprime valores pequenos com algarismos significativos em vez de arredondá-los para 0.0. security lê n/a (no attack) porque este cenário não configura nenhum ataque, portanto não há nada a detectar. O resultado JSON ainda traz o limite analítico de detectabilidade de spoofing de cada relógio em fom.security (0,997 para o relógio óptico, 0,000 para o relógio atômico em escala de chip, cujo próprio ruído na janela de monitoramento excede a especificação de 20 ns), e seu bloco figure_tiers marca essa figura como applicable: false. O tipo de cenário spoof pontua a detecção contra um ataque injetado. figure_tiers também dá a cada figura relatada o seu nível de verificação — VALIDATED (verificado em relação a uma referência independente externa) ou MODELLED — e a linha da matriz de verificação de onde o nível é lido. O cenário de órbita relata adicionalmente um bloco de geometria — fração de amostras com solução e melhor/mediana diluição de precisão de posição (PDOP) e exatidão de posição — ao lado do resultado do relógio.
Leia estes dois números com atenção.
securityé um limite analítico de detectabilidade de spoofing derivado da estabilidade de cada relógio — só tem significado diante de um cenário de spoofing configurado e não é um detector RAIM com vários satélites.integrityaqui é a autoconsistência do filtro (fração das amostras de interrupção dentro do seu próprio limite k-sigma), não uma figura de integridade HPL/VPL de aviação. Consultedocs/INTEGRITY.md.Para integridade autônoma genuína do receptor, o tipo de cenário
integrity(scenarios/integrity-raim.toml) executa RAIM real de snapshot e de separação de soluções (estilo ARAIM) sobre a geometria propagada da constelação: ele calcula níveis de proteção horizontal/vertical (HPL/VPL) por época e relata a fração de épocas que atendem aos limites de alerta configurados, com um diagrama de integridade de Stanford para classificação de erro versus PL (nível de proteção).
Artefatos de estudo reproduzíveis
Quatro estudos abertos regeneram, cada um, um artefato determinístico byte a byte (semente fixa) com um único comando — os números por trás dos estudos de cruzamento quântico versus clássico, de lacuna de otimismo por degradação de RF, de pontuação de resiliência de PNT e de nível de proteção de temporização:
# Quantum-vs-classical resilience crossover map (writes paper/crossover/*.json):
cargo run --release --bin crossover_study -- paper/crossover
# RF-impairment optimism-gap study (13-detector panel, scaling laws, LOO predictor):
cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json
# Framework-aligned PNT-resilience scoring + decision-instability study:
cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json
# Conditional Timing Protection Level, calibrated on a real recorded spoof:
cargo run --release --example tpl_jammertest
Cada artefato registra a versão do motor, as sementes e um hash de configuração, e traz um rótulo honesto MODELLED/VALIDATED. As sondas com dados reais (*_probe) executam o mesmo pipeline sobre gravações que você fornece localmente; nenhum conjunto de dados é distribuído no repositório. O estudo da lacuna de otimismo por degradação de RF está descrito no preprint arXiv:2606,22054, e o nível de proteção de temporização condicional (tpl_jammertest acima) no preprint arXiv:2606,24210 (consulte Citar).
Os estudos publicados de PNT lunar (arXiv:2607,06212 DOP com faróis de superfície, arXiv:2607,02566 observabilidade por VLBI e arXiv:2610,23871 observabilidade cislunar por comprimento de arco) têm suas afirmações de geometria, de diluição de precisão, de predição em tempo real de referencial / parâmetros de orientação da Terra (EOP), de órbitas retrógradas distantes e de medição de distância por RF conferidas de forma cruzada e independente em tests/validate_p*.rs com referências independentes separadas (scipy.special.j1, uma solução de DOP independente em NumPy (HᵀH)⁻¹, uma nova leitura em NumPy das mesmas linhas finals2000A do IERS e o NASA/JPL Three-Body Periodic Orbit Database). Estas são verificações de regressão adicionais sobre o conjunto lunar modelado; elas não alteram a contagem da matriz verificada por máquina.
Formato de cenário
Formato de cenário#
Os cenários são TOML declarativo. Um kind de nível superior seleciona o pacote — cinquenta ao todo (clock é o padrão se omitido): inertial, timetransfer, hybrid, hybrid-ukf, fusion, gnss-ins, orbit, ephemeris, gnss-sim, integrity, lunar-integrity, lunar-time-offset, spoof, spoof-detect, jamming, sweep, sweep-nd, gravity-map, terrain-nav, terrain-slam, combined-altpnt, pvt, mars-pnt, impairment-eval (bancada de avaliação de detecção de degradação de RF por aprendizado de máquina — corpus sintético rotulado + arcabouço de ROC/AUC independente do detector + lacuna de otimismo dentro/fora da distribuição), quantum-trade (trade quântico versus clássico de PNT com ingestão de ADEV medido + envelope de resiliência sem GNSS; MODELLED), space-weather (índices solares/geomagnéticos + temperatura exosférica de Jacchia-71 + densidade termosférica dirigida pela atividade sobre a atmosfera estática; MODELLED), oem-interop (ponte de importação/ida e volta de OEM CCSDS para efemérides do GMAT/Orekit/STK; MODELLED), o trio de análise de missão launch-window (azimute de lançamento de dois corpos / mudança de plano / oportunidades), reentry (corredor de reentrada balística de Allen-Eggers), eo-coverage (geometria de faixa / GSD / acesso / revisita de observação da Terra), space-packet (enquadramento de Space Packet TM/TC — telemetria/telecomando — CCSDS 133,0 — leiaute exato de bits, ida e volta verificada) e attitude-budget (torque de gradiente gravitacional em 3 graus de liberdade + orçamento de erro de apontamento RSS), passes (predição de passagens de nascer/pôr em estação terrestre — AOS/TCA/LOS, elevação máxima, acesso) e link-budget (equação de enlace CCSDS/DSN de sentido único — FSPL / Eb·N₀ / margem / fechamento); telecom-timing (erro de tempo em holdover, MTIE e TDEV verificados em relação a máscaras ITU-T); spectrum (toda a banda L do GNSS como uma única densidade espectral de potência: uma cascata de frequência por tempo sob uma linha do tempo roteirizada de jammer de onda contínua, banda estreita, chirp ou ruído casado, razão jammer-sinal por banda e densidade efetiva de portadora para ruído a partir do coeficiente de separação espectral, e entrada e saída de gravações Signal Metadata Format (SigMF) com estimativas espectrais de Welch; os espectros de sinal VALIDATED em relação a valores de manual, o cenário de jammer MODELLED; consulte docs/SPECTRUM.md; o mesmo tipo de cenário desenha painéis das bandas UHF, S e C com sinais projetados de órbita baixa da Terra); leo-signal (projetos de sinais de posicionamento, navegação e temporização em órbita baixa da Terra para qualquer sistema: espectros limitados em banda, jitter de rastreamento de código e exatidão de medição de distância, busca e tempo de aquisição, separação espectral em relação a GPS e Galileo, tolerância a jammer e um trade de banda UHF a C, a partir de predefinições públicas como Xona Pulsar, Iridium, Starlink e CentiSpace ou de projetos em linha; as formas fechadas e o Doppler LEO VALIDATED, os projetos MODELLED; consulte docs/LEO-SIGNAL.md); solar-system (o Sol, os planetas, Plutão, a Lua e sete luas principais em uma época — posições, constantes, tempos de luz e trajetórias orbitais; posições dos planetas VALIDATED em relação ao JPL Horizons) e body-pnt (posicionamento em torno de qualquer um desses corpos com uma constelação de navegação local e um enlace de espaço profundo a partir da Terra; MODELLED); campaign (tipos de cenário existentes compostos em uma linha do tempo de missão encadeada com o estado passado entre as fases, uma varredura de parâmetros, um conjunto Monte Carlo com semente, ou vários cenários sob uma condição compartilhada; MODELLED, consulte docs/CAMPAIGNS.md); constellation-design (padrões Walker delta e estrela, listas de elementos e projetos de várias camadas com predefinições de GPS, Galileo, BeiDou e GLONASS, e cobertura e diluição de precisão sobre uma grade de latitude/longitude; o gerador e o DOP global do GPS VALIDATED em relação aos documentos de serviço publicados, consulte docs/CONSTELLATION-DESIGN.md); leo-pass (uma passagem de satélite de posicionamento, navegação e temporização (PNT) em órbita baixa da Terra (LEO) e seu orçamento de enlace banda a banda, a partir de qualquer constelação e de qualquer projeto de sinal: ângulos de visada, Doppler e taxa de Doppler, perdas ITU-R por chuva, gases, cintilação e penetração em edifícios, densidade de portadora para ruído em relação aos satélites GNSS MEO à vista, a ionosfera de primeira ordem e os pares livres de ionosfera, e um orçamento de solução de baixa energia, sondagem da ionosfera a partir de cada par de bandas, e monitores de spoofing por consistência de Doppler e da geometria da passagem e por consistência entre bandas; os termos ITU-R e o envelope Doppler de usuário estático VALIDATED, a passagem MODELLED, consulte docs/LEO-PASS.md); leo-navmsg (a mensagem de efemérides e de relógio transmitida por um satélite de PNT em órbita baixa da Terra (LEO), para qualquer órbita e portadora: um ajustador de uma órbita verdadeira integrada para o conjunto kepleriano do Galileo, esse conjunto com polinômios de correção ao longo da trajetória, transversais e radiais, o modelo de 22 parâmetros de Liu et al. 2025 ou o polinômio ECEF de relógio zero ATOMIC; erro de distância do sinal no espaço (SISRE) em função do intervalo de ajuste e do período de atualização, uma verificação de continuidade de atualização no meio da passagem, o formato binário próprio e documentado do Kshana com uma verificação de redundância cíclica CRC-24Q e um orçamento de quantização, e um bloco no estilo RINEX-4 rotulado como extensão do Kshana; os pesos do SISRE, o algoritmo de usuário do Galileo e o CRC-24Q VALIDATED, os ajustes MODELLED; predefinições opcionais para Xona Pulsar, Iridium, Starlink, CentiSpace, um sistema representativo em banda C, ATOMIC e Celeste IOD; consulte docs/LEO-NAVMSG.md); o trio de PNT fundido MEO + LEO leo-pvt (posicionamento Doppler a partir da taxa de variação da distância em órbita baixa da Terra (LEO), soluções conjuntas de pseudodistância GNSS + LEO com vieses entre sistemas e o DOP em função do número de satélites LEO, cobertura polar e ártica, e transferência de tempo LEO para UTC — sobre qualquer constelação, com predefinições opcionais como sinais de oportunidade Xona Pulsar, Iridium e Starlink; o envelope Doppler LEO VALIDATED em relação a valores publicados do Iridium e da Xona), leo-ppp (convergência do posicionamento por ponto preciso apenas com GNSS e com aumento por LEO, comparada com Li et al. 2019) e ntn-positioning (posicionamento de rede não terrestre 5G a partir do limite de Cramér-Rao da largura de banda do sinal), MODELLED à parte esse envelope, consulte docs/LEO-PNT-FUSION.md; leo-pnt-chain (um sistema de PNT LEO de ponta a ponta: um projeto leo-signal transportado por uma banda leo-pass, o C/N0 da passagem e o erro de distância do sinal no espaço da mensagem de navegação entregues a uma solução leo-pvt fundida e à convergência leo-ppp, com cada transferência listada; MODELLED, consulte docs/LEO-PNT.md, que também é a visão geral de todos os tipos de cenário e cenários de PNT LEO, incluindo as campanhas de resiliência, um cenário por área de foco de experimento e um por vertical de usuário final); o conjunto de PNT lunar lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; o demonstrador de PNT habilitado por tecnologia quântica quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; e os tipos de cenário de pesquisa de segurança de sinal, cislunar e resiliência em camadas lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience — o trio de análise de missão e estes tipos posteriores são todos MODELLED (cada um com um núcleo de forma fechada validado; consulte a matriz). Campos comuns: seed, uma grade [time], uma linha do tempo de disponibilidade [gnss] (o que dirige a interrupção) e blocos por sensor com strings provenance que citam a fonte de cada figura. Exemplo (relógio):
seed = 42
threshold_ns = 20.0
[time]
step_s = 10.0
duration_s = 7200.0
[gnss]
windows = [
{ t0 = 0.0, t1 = 600.0, state = "nominal" }, # 10 min GNSS sync
{ t0 = 600.0, t1 = 7200.0, state = "denied" }, # ~1.8 h outage
]
[clock_quantum]
id = "optical-sr-lattice"
provenance = "Strontium optical lattice clock, space-oriented goal sigma_y(1s)=1e-15 (arXiv:1503.08457)"
y0 = 5.0e-17
q_wf = 1.0e-30 # white FM: q_wf = sigma_y(1s)^2
q_rw = 0.0 # random-walk FM
drift = 0.0 # linear aging (per second)
[clock_classical]
id = "csac-sa45s"
provenance = "Microchip SA65 / SA.45s CSAC datasheet sigma_y(1s)=3e-10"
y0 = 5.0e-10
q_wf = 9.0e-20
q_rw = 0.0
drift = 0.0
Campos opcionais (desligados quando ausentes): um relógio pode acrescentar flicker_floor (piso de Allan de 1/f FM — modulação em frequência); um sensor inercial pode acrescentar gyro_bias e q_arw (viés do giroscópio e passeio aleatório angular), e bias_instability e q_aa (o piso de Allan de instabilidade de viés e o passeio aleatório de aceleração) — juntos formam um orçamento de erro de acelerômetro de eixo único (1 grau de liberdade) (VRW/ARW — passeio aleatório de velocidade/angular — e instabilidade de viés). Este é o orçamento de erro que o pacote de cenários inertial distribuído executa. Separadamente, a biblioteca agora traz um navegador strapdown de 3 eixos verificado (src/inertial/{attitude,mechanization,imu_errors}.rs): atitude por quatérnions com compensação de coning/sculling, uma mecanização NED completa (termos de taxa da Terra e de taxa de transporte, gravidade de Somigliana do WGS-84) e um modelo determinístico de erros de IMU em que fator de escala, desalinhamento, sensibilidade à gravidade, quantização e rampa de taxa são modelados (IEEE Std 952-1997, o padrão IEEE de especificação e procedimento de teste de giroscópios, §A.2; Groves 2013 §4,3). Esse caminho de 3 eixos agora está ligado a um pacote GNSS/INS fracamente acoplado executável (kind = "gnss-ins"): um EKF de estado de erro de 15 estados disciplina a solução strapdown em relação a posições ruidosas enquanto o GNSS está ativo e depois segue em deriva durante a interrupção, relatando o erro horizontal fundido em relação à deriva do INS livre em malha aberta. Uma atualização de pseudodistância fortemente acoplada também está disponível (ela forma a inovação no domínio da distância, de modo que continua corrigindo com menos de quatro satélites). Um cenário de holdover de relógio pode acrescentar runs (> 1) para executar um conjunto Monte Carlo — cada figura de mérito é então relatada como média com uma dispersão entre os percentis 5 e 95, e o gráfico sombreia a faixa de confiança do erro (consulte scenarios/clock-ensemble.toml).
Um cenário fusion (mesmos blocos de hybrid) executa dois estimadores de Kalman independentes — um para o estado do relógio, outro para o estado de posição — disciplinados pelo GNSS e auxiliados por transferência óptica de tempo, e relata uma FoM combinada de holdover. Os dois blocos não compartilham covariância cruzada: é um par empilhado de orçamentos de erro, não um verdadeiro filtro conjunto acoplado de relógio + posição (a covariância entre blocos é um item do roteiro). Consulte scenarios/fusion-pnt.toml.
Um cenário spoof injeta um spoofing de tempo — um dos quatro tipos de [attack.shape] (linear_ramp, step_jump, meaconing, replay; um simples rate_ns_per_s ainda é aceito como rampa linear) — e executa o detector de spoofing de cada relógio. O detector é um teste de energia χ²₁ / Neyman–Pearson bilateral sobre a estatística de monitoramento auxiliada pelo relógio: o limiar é definido a partir de um orçamento alvo de falsos alarmes target_pfa, e a probabilidade de detecção perdida P_md é relatada tanto em forma fechada quanto por Monte Carlo (mc_runs tentativas por hipótese — as duas concordam até alguns ×1/√N). A figura de mérito de Segurança é 1 − P_md na magnitude operacionalmente danosa (da especificação), de modo que um relógio silencioso que detecta um spoof do tamanho da especificação pontua ≈ 1 e um ruidoso que frequentemente o perde pontua menos (consulte scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).
Um cenário gnss-sim é uma simulação no domínio da medição: para cada satélite visível ele sintetiza a pseudodistância ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath e o Doppler em L1, com a ionosfera monofrequência de Klobuchar ([iono], IS-GPS-200 §20.3.3.5.2.5) e a troposfera zenital de Saastamoinen projetada pela função de mapeamento de Niell (1996) ([tropo]). Os resíduos alimentam o RAIM de snapshot para HPL/VPL por época, e a pseudodistância, o Doppler, o C/N₀ e as correções ionosféricas/troposféricas de cada satélite são emitidos na matriz JSON gnss_measurements. É um simulador direto (gera medições a partir de uma verdade conhecida), não um receptor/solucionador — uma execução sem ruído reproduz a geometria mais as correções em nível submilimétrico (consulte scenarios/gnss-sim-raim.toml).
Um cenário jamming modela a interferência de RF como um orçamento de enlace: um [jammer] (posição ECEF, power_dbw de transmissão, tipo) eleva a razão jammer-sinal em um [receiver] que observa uma [constellation] Walker. A partir da geometria (perda de percurso em espaço livre e o ganho da antena receptora por direção) ele calcula o J/S de cada satélite, o C/N₀ efetivo pela equação padrão antijamming (ganho de processamento de despreading × o fator de separação espectral Q; Kaplan & Hegarty §9,4), e sinaliza a perda de travamento abaixo de um limiar de rastreamento configurável — relatando uma figura de mérito availability_under_jamming. Um jammer de banda larga de 10 W a 1 km nega totalmente o receptor (J/S ≈ 72 dB); o mesmo jammer a 100 km apenas degrada os enlaces (consulte scenarios/jamming-demo.toml).
Um cenário sweep executa um estudo de trade: ele varia um parameter (threshold_ns, duration_s, quantum_q_wf ou classical_q_wf) de start a stop em steps pontos em uma scale lin ou log, registra uma metric (por exemplo holdover_s) para os dois relógios e traça as duas curvas. O cenário base fica sob [base] (consulte scenarios/sweep-clock-stability.toml).
Um cenário sweep-nd generaliza isso para qualquer pacote e qualquer número de eixos: ele varia chaves TOML pontilhadas de um cenário [base] (de qualquer kind) sobre o produto cartesiano de [[axes]], reexecuta cada nó da grade e registra metrics dadas como caminhos JSON pontilhados no resultado (por exemplo classical.fom.holdover_s). Funciona com todos os pacotes porque opera na fronteira entre TOML e resultado; as execuções nativas avaliam a grade em paralelo (sem dependência extra; o wasm recorre ao modo sequencial) e a saída é determinística e em ordem de linhas (consulte scenarios/sweep-nd-inertial.toml).
Um cenário orbit deriva a linha do tempo [gnss] da geometria em vez de ela ser escrita à mão — forneça uma órbita [user], uma [constellation], uma mask_deg de elevação e os dois blocos de relógio. Ele também relata a exatidão de posição a partir da geometria dos satélites; o sigma_uere_m opcional (erro de distância equivalente do usuário de 1 sigma, padrão 1 m) converte a diluição de precisão de posição em um sigma de posição. A órbita do usuário pode ser tornada excêntrica com eccentricity e argp_deg, e j2 = true acrescenta a deriva secular por achatamento da Terra (consulte scenarios/orbit-molniya.toml). A constelação pode, em vez disso, ser uma real: dê a [constellation] um bloco tle de conjuntos de elementos de duas linhas e os satélites são lidos dele (consulte scenarios/orbit-real-tle.toml). Acrescente um ou mais blocos [[constellations]] para multi-GNSS (por exemplo GPS + Galileo; consulte scenarios/orbit-multignss.toml):
kind = "orbit"
seed = 7
threshold_ns = 5.0
mask_deg = 10.0
sigma_uere_m = 1.0 # optional; position sigma = position-DOP * this
[time]
step_s = 60.0
duration_s = 86400.0
[user] # spacecraft (altitude in km, angles in deg)
altitude_km = 8000.0
inclination_deg = 0.0
[constellation] # Walker-delta GNSS (GPS-like)
altitude_km = 20180.0
inclination_deg = 55.0
planes = 6
sats_per_plane = 4
phasing_f = 1.0
[clock_quantum] # ... as above
[clock_classical] # ... as above
Os tipos de cenário de PNT alternativo sem GPS navegam sem nenhum GNSS, correlacionando uma sequência de campo medida com um mapa por meio de um filtro de partículas. Um cenário gravity-map percorre uma trajetória por um campo de anomalia gravitacional de harmônicos esféricos e a recupera a partir da leitura de um gravímetro de átomos frios (scenarios/gps-denied-gravity-nav.toml); um cenário terrain-nav faz o mesmo em relação a um DEM de elevação SRTM (TERCOM/SITAN, scenarios/terrain-nav.toml); e um cenário combined-altpnt funde gravidade + magnético IGRF + terreno em um único filtro (scenarios/combined-altpnt.toml).
Um cenário lunar-integrity avalia PNT cislunar: ele executa uma passagem de nível de proteção ARAIM no polo sul lunar contra um conjunto de retransmissores LunaNet/LNIS e relata com honestidade a lacuna de integridade — um σ_URE lunar de ~30 m leva o nível de proteção muito acima de um limite de alerta de 50 m, de modo que o serviço fica indisponível sob regras de integridade no estilo da aviação (scenarios/lunanet-araim.toml).
Um cenário lunar-time-offset relata a taxa relativística do relógio Terra–Lua — a base de uma escala de Tempo Coordenado Lunar (LTC/TCL). Uma identidade pós-newtoniana de primeiros princípios soma a diferença de potencial próprio (potencial do geoide L_G da IAU menos o potencial próprio da superfície da Lua) e o termo cinético da Lua (Doppler de segunda ordem) em uma taxa secular de ≈ 57 µs/dia, relatada com a faixa publicada de 56–59 µs/dia; ele também dá o deslocamento LTC−TT acumulado ao longo de um horizonte e um conjunto de variância inversa (um relógio de papel lunar). MODELLED — a figura principal é dependente da referência (geoide terrestre versus selenoide lunar, janela de média), razão pela qual se relata uma faixa, e não um único número certificado (scenarios/lunar-time-offset.toml).
Veja scenarios/ para pelo menos um exemplo prático de cada tipo de cenário (92 tipos, 193 arquivos .toml de cenário + 1 manifesto de suíte — vários tipos de cenário trazem mais de um exemplo). Nem todo tipo de cenário tem um arquivo com o seu nome: lunar-integrity → scenarios/lunanet-araim.toml e gravity-map → scenarios/gps-denied-gravity-nav.toml são dois de vários casos assim. Liste os tipos de cenário despacháveis a qualquer momento com os erros de cargo run -- --validate <file>, o list_kinds() do Python ou a ferramenta list_scenario_kinds do MCP.
Saída
Saída#
O artefato de resultado é um JSON versionado e autodescritivo: séries temporais por passo, as figuras de mérito pontuadas, as especificações de modelo ativas (com procedência), a semente, um hash do cenário — de modo que qualquer gráfico possa ser reproduzido a partir do arquivo — e, para cada relógio, uma adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): o desvio de Allan sobreposto em tempos de média espaçados em oitavas — a forma padrão de ler a estabilidade de um relógio — agora com uma faixa de confiança de 95% específica do tipo de ruído por ponto (o tipo de lei de potência do registro é identificado a partir de sua inclinação de Allan modificada, e o intervalo χ² usa os graus de liberdade efetivos correspondentes do NIST SP 1065). O playground do navegador o renderiza como um gráfico log-log "Clock stability (ADEV)". (MDEV, TDEV e HDEV estão disponíveis como estimadores da biblioteca; a curva exportada do resultado é o ADEV sobreposto.) Cada campo, com unidades e uma indicação da fonte, está documentado em docs/SCHEMA.md.
Todo gráfico é autodescritivo. O playground do navegador, a exportação *.chart.svg da CLI e o painel de resultados em HTML (HyperText Markup Language) carimbam cada imagem de gráfico com um rodapé que diz Kshana v<version> · scenario <hash> · kshana.dev. O scenario <hash> são os primeiros 12 caracteres hexadecimais do hash do cenário da execução — um resumo SHA-256 (o Secure Hash Algorithm de 256 bits) da definição canônica do cenário (semente, limiares, parâmetros de modelo, janelas GNSS, …); os relatórios de integridade e lunares, que não trazem hash próprio, recorrem a um SHA-256 do código-fonte do cenário. É a mesma impressão digital mostrada no resumo de uma linha e no JSON do resultado, de modo que um gráfico salvo ou colado sempre traz sua versão, o cenário exato que o produziu (para reprodução bit a bit) e a fonte — mude qualquer entrada e o hash muda.
As figuras de mérito seguem as figuras de mérito operacionais padrão de PNT:
| Figura de mérito | Como o Kshana a calcula |
|---|---|
| Desempenho de temporização (pacotes de relógio/órbita) | RMS do erro de fase do relógio + percentil 95 durante a interrupção, em nanossegundos (timing_rms_ns) — uma métrica de temporização, não de posição |
| Desempenho de posicionamento (pacotes inerciais/híbridos) | RMS do erro de posição de 1 grau de liberdade + percentil 95 durante a interrupção, em metros (pos_rms_m); eixo único. Uma execução única é sinalizada como monte_carlo: false; defina runs = N para um conjunto Monte Carlo que relata, para cada métrica, a média, a dispersão e o IC (intervalo de confiança) de 95% por bootstrap. Ainda não é um CEP/2DRMS 2-D (erro circular provável / duas vezes a raiz da distância quadrática média) nem uma exatidão ponderada por DOP (isso exige o modelo de 3 eixos — roteiro) |
| Autonomia | duração do holdover — tempo dentro da especificação após a perda do GNSS (quantizado pela grade: um limite inferior) |
| Resiliência | inclinação do crescimento do erro durante a interrupção |
| Disponibilidade | fração da execução com uma solução dentro da especificação |
| Integridade | autoconsistência do filtro — fração das amostras da interrupção cujo erro permanece dentro do próprio limite k-sigma do filtro de Kalman. Não é uma figura de integridade HPL/VPL/RAIM de aviação (consulte docs/INTEGRITY.md) |
| Segurança | limite analítico de detectabilidade de spoofing a partir da estabilidade do relógio — quão pequeno/lento um spoofing de tempo um monitor de consistência de relógio único conseguiria sinalizar. Significativo apenas com um ataque configurado; não é um detector RAIM com vários satélites |
Novo nesses termos? Cada um está definido em linguagem simples no glossário.
Estrutura do repositório
Estrutura do repositório#
kshana/
├── src/ # the kshana core crate (library + CLI)
│ ├── api.rs · main.rs · lib.rs # typed dispatch (92 kinds) + CLI + crate root
│ ├── python.rs · wasm.rs # optional PyO3 / wasm-bindgen bindings
│ ├── types.rs · scenario.rs · allan.rs # shared core (time grid, GNSS timeline, Allan)
│ │
│ ├── models.rs · estimator.rs · kalman.rs # Pack 1 — clock holdover + integrity
│ ├── security.rs · detection.rs · spoof.rs · spoof_monitors.rs # spoof detection
│ ├── filter_health.rs · fom.rs · fom_label.rs · report.rs · chart.rs · run.rs # health · FoM scoring + labelling · output
│ ├── suite.rs · study.rs # scenario suites + aggregated multi-scenario study artifacts (`--study`)
│ ├── inertial/ # Pack 2 — strapdown INS (attitude · mechanization · imu_errors · quantum_imu)
│ ├── timetransfer.rs · timetransfer_adv.rs · timegeo.rs # Pack 3 — TWSTFT/CV/PPP/optical, Sagnac
│ ├── hybrid.rs · ensemble.rs · sweep.rs # Pack 4 — fused PNT, Monte-Carlo, trade sweeps
│ │
│ ├── timescales.rs · jd2.rs · ephem.rs # time systems, two-part JD, Sun/Moon ephemeris
│ ├── precession.rs · nutation.rs · cio.rs # IAU 2006/2000A precession-nutation + CIO GCRS↔ITRS
│ ├── frames.rs · *_data.rs # TEME↔ECEF + generated nutation/CIO/EGM2008/IGRF tables
│ │
│ ├── orbit.rs · sgp4.rs · tle.rs · walker.rs # geometry, SGP4/SDP4, TLE, Walker design
│ ├── propagator.rs · forces.rs · gravity_sh.rs · integrator.rs # Cowell + perturbations (EGM2008 d/o70, GR) + RK4/DOPRI
│ ├── maneuver.rs · batch_ls.rs · orbit_determination.rs # burns/Lambert/porkchop, Gauss-Newton, OD
│ ├── cr3bp.rs · lunar.rs · lunar_frame.rs · lunar_od.rs # Earth–Moon CR3BP + halo/NRHO STM corrector, cislunar/LunaNet ARAIM, MCI↔MCMF, lunar OD
│ ├── lunar_time.rs · lunar_vlbi.rs · lunar_combination.rs · lunar_frame_realise.rs · lunar_service.rs · lunar_dpnt.rs · lunar_interop.rs # tiers per piece in the matrix lunar PNT suite — LTC time · geodetic VLBI · joint OD+clock · frame realisation · Moonlight service-volume · differential PNT · LunaNet/IOAG interop export
│ ├── body.rs · mars_frame.rs · ephem_provider.rs · radiometric.rs · ccsds_tdm.rs # deep-space: multi-body · Mars frame · ephemeris seam · radiometric obs + CCSDS-TDM
│ ├── deepspace_od.rs · clock_state.rs · mars_atmos.rs · mars_pnt.rs · linkbudget.rs · gse_sim.rs # SRIF OD · onboard clock · Mars drag · relay-PNT · link budget · GSE sim
│ │
│ ├── fusion/ # GNSS/INS — EKF · UKF · tightly_coupled(17) · coupled · closed_loop
│ ├── raim.rs · sbas.rs # RAIM/ARAIM HPL/VPL, SBAS DO-229E PLs + L1/L5 iono-free
│ ├── gnss_sim.rs · ionex.rs · pvt.rs · jamming.rs # measurement domain · ionosphere maps · single-point positioning · jamming
│ ├── navsignal.rs # nav-signal PSD (BPSK-R/BOC) · spectral-separation → anti-jam Q · DLL code-tracking jitter · multipath envelope
│ ├── gravimeter.rs · igrf.rs · mapmatch.rs · particle_filter.rs · altpnt/ # gravity/magnetic/terrain alt-PNT
│ ├── rinex.rs · rinex_obs.rs · glonass.rs · sp3.rs · oem.rs · omm.rs · permalink.rs # interop formats
│ ├── launch.rs · reentry.rs · eo_payload.rs · attitude_budget.rs · passes.rs · space_packet.rs # mission-analysis budgets + CCSDS Space Packet
│ ├── space_weather.rs · holdover.rs · tpl.rs # space-weather environment · GNSS-denied clock-holdover calculator · conditional Timing Protection Level (under spoofing)
│ ├── resilience/ # framework-aligned PNT-resilience scoring + decision-instability study (RPCF · Dirichlet · Kendall-τ · diversity collapse · assurance report)
│ ├── impairment_eval.rs · impairment_study.rs · impairment_ml.rs · eval_stats.rs # Machine-learning RF-impairment eval testbed · optimism-gap study · LR/MLP detectors · bootstrap/DeLong/Spearman stats
│ ├── sdr.rs · realdata/ # software-defined-receiver front end (IQ/IF → E/P/L taps → SQM) + real-data ingest adapters (RINEX · UBX · GnssLogger · JammerTest · Yunnan · SatGrid)
│ ├── crossover.rs · quantum_trade.rs · frugal.rs · integrity_impact.rs # quantum-vs-classical crossover map · PNT trade · cost-per-coverage ROI · integrity impact
│ ├── quantum_devices.rs · quantum_faults.rs · quantum_nav_od.rs · qtrade.rs · timetransfer_chain.rs · representativeness.rs # Quantum-Enabled PNT demonstrator — device error models · fault catalogue · GNSS-free quantum OD · unified trade harness · quantum time-transfer chain · representativeness / gaps-to-flight ledger
│ ├── interchange.rs · verification.rs # KIF artifact envelope · machine-checked verification matrix
│ └── bin/crossover_study.rs · bin/validation_report.rs # crossover-study artifact generator · release validation-summary HTML
│
├── mcp/kshana-mcp/ # standalone, workspace-EXCLUDED crate — the MCP server (+ Dockerfile, server.json)
├── ide/jetbrains/ # standalone Kotlin/Gradle IntelliJ-Platform plugin
├── xval/ # standalone, workspace-EXCLUDED external cross-checks: anise-{frames,lunar-od,mars-od,service-geometry} (Rust ANISE/SPICE DE440) + orekit-passes (Java Orekit)
│
├── examples/ # reproducible study generators: tpl_jammertest · resilience_report · optimism_study + real-data probes (jammertest_probe · yunnan_probe · satgrid_probe · texbat_probe · ingest_realdata)
├── paper-artifacts/ # byte-deterministic study artifacts, regenerable from examples/ (optimism-study.json · resilience-study.json); raw datasets stay out
├── scenarios/ # one cited .toml per kind + geometry-driven + GPS-denied
├── scripts/ # reproducibility + repo-hygiene + SBOM guards
├── docs/ # CONCEPTS, ARCHITECTURE, CAPABILITY, VALIDATION, PROVENANCE, GLOSSARY, …
├── web/ # the WebAssembly playground + kshana.dev site
├── tools/ # table generators (EGM2008 · IGRF · nutation · CIO) + fetch_tles.sh
├── .github/workflows/ # ci · release · publish · wheels · pages · mcp-publish · jetbrains-plugin · frame-xval
├── pyproject.toml # Python packaging (maturin)
├── CHANGELOG.md # Keep a Changelog + SemVer
└── CITATION.cff · ROADMAP.md · CONTRIBUTING.md · SECURITY.md
FAQ (perguntas frequentes)
FAQ#
Preciso entender física quântica para usar isto? Não. Se você sabe executar uma linha de comando, sabe executar o Kshana. Comece pela introdução em linguagem simples; consulte os termos no glossário.
Isto é um projeto de hardware quântico ou um software de voo? Não. É um simulador de desempenho. A fidelidade do hardware quântico vem de modelos de erro publicados, não desta ferramenta. Consulte O que é / não é.
Os resultados quânticos são realistas, ou marketing? Cada parâmetro é citado a partir de uma folha de dados ou de um artigo, cada modelo é validado em relação a uma relação de manual, e a maturidade é rotulada com honestidade em VALIDATION.md — inclusive o fato de que nenhum relógio óptico de estrôncio já voou. O motor é neutro: quântico e clássico são o mesmo código com números publicados diferentes.
Posso confiar que duas execuções concordam? Sim — as execuções são determinísticas: scenario + seed + engine version → bit-identical output, garantido por scripts/check-reproducible.sh.
Posso usá-lo a partir de Python ou em um navegador? Sim — consulte Instalar: os exemplos de Python e WebAssembly estão logo abaixo. Ambos chamam o mesmo motor.
Como modelo meu próprio sensor? Escreva um .toml de cenário com as figuras publicadas do seu sensor nos campos provenance. Consulte Formato de cenário e os exemplos em scenarios/.
É gratuito para uso comercial? Sim — sob a AGPL-3.0, inclusive em contextos comerciais, desde que você respeite o copyleft da AGPL (em especial: se você modificar o Kshana e oferecê-lo por uma rede, deverá oferecer a esses usuários o seu código-fonte modificado). Se isso não lhe serve — por exemplo, se você precisa incorporar o Kshana a um produto proprietário ou executar um serviço de rede fechado — uma licença comercial está disponível na Ashforde® OÜ; consulte LICENSING.md e Suporte.
Solução de problemas
Solução de problemas#
cargo build falha em uma cadeia de ferramentas antiga. O Kshana precisa de Rust ≥ 1,88. Atualize com rustup update.
A compilação da extensão Python falha na ligação no macOS (Undefined symbols … _Py…). Uma extensão Python resolve seus símbolos em tempo de carga. maturin define automaticamente o sinalizador correto do linker — use maturin develop --features python em vez de um simples cargo build.
A compilação do Python reclama que o interpretador é mais novo do que o PyO3 conhece. Defina PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (as wheels abi3 têm compatibilidade futura entre versões do CPython).
A compilação do WebAssembly não encontra o alvo. Instale-o uma vez com rustup target add wasm32-unknown-unknown e depois execute wasm-pack build --target web -- --features wasm.
Para onde foi minha saída? Cada execução grava <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html e <scenario>.report.json ao lado do .toml de entrada, e também <scenario>.table.csv para os tipos de cenário que publicam uma tabela. Todos eles são ignorados pelo git por projeto.
Versionamento e lançamentos
Versionamento e lançamentos#
O Kshana segue o Versionamento Semântico. Enquanto estiver antes da 1.0, o esquema público de cenário/resultado ainda pode mudar; as mudanças incompatíveis são destacadas explicitamente em CHANGELOG.md. Todo resultado é reproduzível a partir de scenario + seed + engine version.
Toda tag vX.Y.Z publica todos os canais automaticamente, em uma única ordem — a suíte de testes completa é executada primeiro no commit com tag, nada é publicado até que ela passe, e depois o pipeline confere se cada registro realmente serve a nova versão (docs/RELEASING.md). Os canais:
| Canal | Instalar / obter | Conteúdo |
|---|---|---|
| crates.io | cargo install kshana · kshana = "0.35" |
Biblioteca Rust + CLI |
| crates.io | cargo install kshana-mcp |
o servidor MCP |
| PyPI (Python Package Index) | pip install kshana |
wheels abi3 (Linux/macOS/Windows) + sdist (distribuição de código-fonte) |
| npm | npm install kshana |
módulo WebAssembly + wrapper JS |
| ghcr.io | docker run -i ghcr.io/ashfordeou/kshana-mcp |
imagem OCI (Open Container Initiative) multiarquitetura — não precisa de cadeia de ferramentas |
| npm | npx -y kshana-mcp@0.40.0 |
launcher: baixa o binário da versão, verifica SHA256SUMS e o executa |
| PyPI | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
o mesmo launcher para Python |
| Homebrew · Scoop · winget | brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp |
o binário kshana-mcp, gerado a partir do SHA256SUMS de cada versão |
| registro MCP oficial | descoberto automaticamente por clientes MCP | io.github.ashfordeOU/kshana-mcp (imagem OCI, pacotes npm e PyPI) |
| JetBrains Marketplace | IDE → Plugins → pesquise "Kshana" | o plugin de IDE Kshana — PNT simulator |
| Zenodo | DOI | um arquivo citável de cada versão |
| kshana.dev | abrir em um navegador | Kshana Studio, o aplicativo WebAssembly no navegador, recompilado a partir de cada tag de versão (de modo que a versão que ele mostra é a versão que ele executa) |
A versão do crate / imagem / registro do servidor MCP acompanha o motor (ele inclui a biblioteca); o plugin do JetBrains tem versionamento independente (ele chama o binário kshana que você instalou).
Roteiro
Roteiro#
Consulte ROADMAP.md para o roteiro em fases, CHANGELOG.md para o histórico de versões publicadas e docs/CAPABILITY.md para o roteiro por capacidade. A ordem de prioridade é: primeiro, evidências de temporização e holdover para infraestrutura crítica (máscaras de telecomunicações, holdover mais longo com envelhecimento e ruído flicker, ingestão de dados de relógio medidos); em segundo, o método neutro de trade quântico versus clássico (resultados rotulados MODELLED até que os dados medidos de um parceiro os promovam); e a navegação lunar / cislunar e de espaço profundo mantida, não ampliada como prioridade principal. A redução de referencial precisa para o ITRF agora está entregue — a cadeia completa GCRS↔ITRS da IAU 2006/2000A baseada no CIO (movimento polar + nutação abaixo de um segundo de arco), validada bit a bit em relação ao SOFA/ERFA e conferida de forma cruzada e independente com o ANISE (SPICE em Rust puro) em ≤ 3,6 m na órbita GNSS. Os itens de curto prazo incluem a fusão de fase da portadora fortemente acoplada e a exposição do navegador GNSS/INS fracamente/fortemente acoplado em mais pacotes; o motor de navegação radiométrica de espaço profundo / Marte chegou na v0.17.0 (validado por simulação). A camada de física quântica é um item P2: o acelerômetro CAI agora é simulado a partir de primeiros princípios (fase de Mach–Zehnder, ruído de projeção, decaimento de contraste, acoplamento de vibração), enquanto os sensores de relógio/transferência de tempo ainda são dirigidos por coeficientes publicados de Allan/orçamento de ruído. TEME↔ECEF baseado em GMST, os sistemas de tempo IERS com segundos intercalares (UTC/TAI/TT/UT1), a propagação de órbita SGP4/SDP4 (v0.7.0, validada em relação aos vetores AIAA 2006-6753) e o pacote de fusão gnss-ins executável foram todos entregues, e a velocidade inercial é exposta a jusante. Um detector estocástico ativo de spoofing de tempo (teste de energia Neyman–Pearson / χ²₁ com P_fa/P_md por Monte Carlo e uma FoM de Segurança de 1−P_md), um modelo de jamming por orçamento de enlace (J/S → C/N₀ efetivo → perda de travamento), disponibilidade multiconstelação, um orçamento de erro de IMU de eixo único (1 grau de liberdade), dois estimadores de Kalman independentes (relógio + posição) relatados como uma FoM combinada, geometria real de constelação a partir de TLEs, um relatório de painel de resultados em HTML, disponibilidade GNSS derivada da geometria e diluição de precisão a partir de órbitas keplerianas com excentricidade e deriva de J2, faixas de confiança Monte Carlo, varreduras de parâmetros de estudos de trade, um playground WebAssembly no navegador e ligações opcionais para Python (PyO3) e WebAssembly (wasm-bindgen) chegaram ao main.
Como contribuir
Como contribuir#
Consulte CONTRIBUTING.md. Em resumo: os testes passam (cargo test), os dois scripts de salvaguarda passam, Conventional Commits, e uma entrada [Unreleased] em CHANGELOG.md para cada mudança visível ao usuário. A participação é regida pelo nosso Código de Conduta. Para relatar um problema de segurança, consulte a Política de segurança — não abra uma issue pública para vulnerabilidades.
Documentação: cada documento e para quem ele é
Documentação#
| Documento | Para quem | O que há nele |
|---|---|---|
| Introdução aos conceitos | todos, comecem aqui | o que o Kshana faz e por quê, do zero até a física |
| Kshana Studio | todos | execute o motor no seu navegador (WebAssembly); notas de compilação e implantação |
| Glossário | todos | definições em linguagem simples de cada termo |
| Tipos de cenário | todos | cada tipo de cenário que o motor despacha: o que faz, seus campos, um comando de exemplo, suas linhas do registro e o gráfico que o motor grava para ele |
| Dados de parceiros | laboratórios e fabricantes com dados medidos | quais linhas MODELLED um registro medido de relógio ou de IMU poderia promover, os formatos, como um envio é verificado (kshana partner check), pontuado e creditado |
| Arquitetura | desenvolvedores / revisores | mapa de módulos, pipeline do motor, despacho e diagramas |
| Estado da validação | revisores / quem cita | o que é validated e o que é not modeled, com evidências |
| Matriz de verificação | revisores / quem cita | o registro de evidências verificado por máquina — cada linha de capacidade com seu status, módulo, teste e referência independente externa, gerado a partir de src/verification.rs |
| Justificativa dos itens modelados | revisores | por que cada linha modelada não tem referência independente externa, declarado linha por linha |
| Proveniência | revisores / quem cita | cada parâmetro de sensor, modelo e conjunto de dados rastreado até sua fonte publicada, em uma única tabela citável |
| Reprodutibilidade e procedência | revisores / empacotadores | garantias de determinismo, fixação por golden, SBOM (lista de materiais de software), procedência de compilação |
| Tags de plataforma das wheels | empacotadores | a matriz de wheels Python abi3 — qual tag de plataforma pip install kshana resolve |
| Posicionamento | avaliadores | onde o Kshana fica em relação ao RTKLIB/gLAB (complementar), e a camada de navegador sem instalação |
| Kshana Pro | avaliadores / gerentes de programa | o que a camada proprietária Pro acrescenta sobre o mesmo motor: otimizador de projeto, incerteza e sensibilidade, dossiê de missão, acompanhamento de campanha, coexistência espectral, serviço local de tarefas, rastreabilidade de requisitos; o que cada um produz e o que não faz |
| Relatório técnico · Artigo JOSS | revisores / quem cita / avaliadores | o artigo de pesquisa estendido completo — arquitetura, modelos por domínio, validação, estudos de caso e limitações — mais a submissão concisa ao JOSS (Journal of Open Source Software) |
| Validação do SGP4 | revisores / quem cita | concordância com a referência AIAA 2006-6753 (666 estados, ~4 mm) e uma comparação direta com o crate independente sgp4 (concordam em nível submicrométrico / 4,12 mm) |
| Validação do modelo de forças | revisores / quem cita | o motor de forças completas (src/precise_od.rs) ajustado a efemérides de agências — metodologia e resíduos validados |
| Guia de TLE reais | usuários | conduzir cenários com TLEs reais de constelações do Celestrak / Space-Track (em vez do conjunto Walker sintético incluído) |
| FoM de integridade | avaliadores | o que as figuras integrity / security significam — e o que elas não são em relação ao HPL/VPL de aviação |
| Referência do ARAIM | revisores / integradores | a implementação aberta do nível de proteção ARAIM MHSS — a projeção de viés nominal b_k, σ_URA versus σ_URE e as probabilidades a priori dos modos de falha |
| Modelos quânticos · detalhes | revisores | a camada de física de interferômetros de átomos frios, e onde os coeficientes ainda são consultados |
| Compliance | avaliadores | escopo dos algoritmos DO-229E / DO-316, e o que não é uma alegação de aderência à norma |
| Confiança marítima | marinheiros / integradores | a pontuação de confiança GNSS de 0 a 100 para o NMEA de uma embarcação, seus monitores e seus limites (consultivo, não um equipamento de navegação homologado) |
| Fluxos NMEA de treinamento | instrutores marítimos | NMEA sintético de ponte com jamming e spoofing roteirizados e um registro do instrutor; somente texto, nunca para navegação ao vivo |
| Mapa de interferência | analistas / marinheiros | onde aeronaves e navios relataram dados de navegação degradados, e quanto de uma rota isso atinge |
| Pacotes de evidências | operadores / seguradoras | registros técnicos assinados de um evento de confiança e como verificar um |
| Telemetria de confiança | equipes de operações / segurança | o fluxo de confiança como métricas Prometheus, eventos SIEM e OpenTelemetry, com um painel Grafana |
| Integrações marítimas | proprietários de embarcações / integradores | o plugin Signal K, o modo de bloqueio do OpenCPN e a compilação de referência |
| Test bench | fabricantes de receptores | reproduzir um cenário exportado em um simulador de laboratório e pontuar o registro do receptor |
| Mapeamento de compliance | avaliadores | referenciais públicos de resiliência mapeados para as saídas do Kshana, com fontes e lacunas; kshana compliance-report |
| Notebooks | usuários | tutoriais executáveis com seu texto renderizado |
| Normas e interoperabilidade | integradores | os formatos de intercâmbio de GNSS / dinâmica de voo / agências que o Kshana lê e grava (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …) |
| Fusão de PNT LEO | usuários / avaliadores | posicionamento, navegação e temporização fundidos MEO + LEO: Doppler, pseudodistância conjunta, convergência do PPP, 5G NTN, cobertura polar e transferência de tempo LEO sobre qualquer constelação; as predefinições opcionais e suas fontes públicas |
| Campanhas | usuários / avaliadores | composição de cenários: linhas do tempo de missão encadeadas, varreduras de parâmetros, conjuntos Monte Carlo e execuções de condição compartilhada, com as identidades de composição que os testes fixam |
| Catálogo de cenários | usuários / integradores | cada tipo de cenário despachável com seus campos TOML obrigatórios e opcionais — gerado a partir de api::list_scenario_kinds() |
| Esquema de resultado | integradores | cada campo do JSON de resultado, com unidades e uma indicação da fonte |
| API Python | usuários de Python | a superfície de ligação PyO3 — chamar o motor, os tipos de cenário/resultado e exemplos |
| Afirmações versus realidade | revisores | o registro de resolução de afirmações exageradas + a salvaguarda de CI (tests/no_overclaims.rs) que a mantém resolvida |
| Roteiro | todos | o roteiro em fases — o que foi entregue e o que vem a seguir |
| Servidor MCP · Plugin do JetBrains | agentes / usuários de IDE | execute o Kshana a partir de um assistente de IA ou de uma IDE JetBrains |
| Guia do agente · Superfícies | agentes / integradores | qual ferramenta responde a qual pergunta, o que guardar com cada resposta; onde cada capacidade é acessível (CLI, Rust, Python, WASM, MCP, plugin, JetBrains, notebooks) e por que uma célula é N/A |
| Histórico de alterações | todos | histórico de versões publicadas (Keep a Changelog + SemVer, Versionamento Semântico) |
| Como contribuir | colaboradores | compilação, salvaguardas, disciplina de testes/citações, DCO (Developer Certificate of Origin) |
| Governança | colaboradores / comunidade | como o Kshana é governado — quem decide, como, e a fronteira entre aberto e fechado |
| Código de Conduta | comunidade | conduta esperada (Contributor Covenant) |
| Política de segurança | quem relata | como relatar uma vulnerabilidade; nota sobre duplo uso |
Referências principais
Referências principais#
Referências independentes de validação e normas — as autoridades externas às quais as verificações do Kshana estão ancoradas:
- Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; dados de teste): o conjunto de verificação do SGP4/SDP4 com o qual o Kshana coincide em 4,12 mm, e os exemplos práticos de referenciais com os quais a cadeia TEME→ITRF é conferida.
- IAU SOFA / ERFA — as rotinas de referência de tempo e referenciais com as quais a nutação IAU 2000A e a redução GCRS↔ITRS baseada no CIO são validadas bit a bit.
- Petit & Luzum (orgs.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (orientação da Terra, movimento polar e padrões de referenciais).
- Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (relações do desvio de Allan e a série de referência NBS14; NBS = o antigo National Bureau of Standards dos EUA).
- Pedregosa et al. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): as implementações de referência de ROC/AUC, matriz de confusão e precisão/recall/F1 com as quais a bancada de avaliação de degradação de RF coincide exatamente (
tests/eval_metrics_reference.rs). - Virtanen et al. — SciPy 1,0, Nature Methods 17 (2020):
optimize.nnls,stats.chi2elinalg.expm— as rotinas de referência com as quais o ajuste NNLS de ADEV medido do trade quântico, as faixas de consistência χ² e a covariância de ruído de processo do relógio de van Loan são validados (tests/scipy_reference.rs). - Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): usado tanto como estado da arte aberto (veja Comparação e estado da arte aberto abaixo) quanto como a referência independente de DOP com a qual o cálculo de GDOP/PDOP/HDOP/VDOP/TDOP coincide em 1e-6 (
tests/dop_reference.rs). - Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): os modelos de forças por trás do ajuste do modelo de forças a efemérides precisas de agências.
- Howell — Three-dimensional, periodic, halo orbits, Celestial Mechanics 32(1) (1984), doi:10.1007/BF01358403; Zimovan-Spreen, Howell & Davis — Near rectilinear halo orbits and nearby higher-period dynamical structures, Astrodynamics 6 (2022), doi:10.1007/s42064-021-0125-x (as famílias de halo/NRHO que o corretor diferencial do CR3BP reproduz).
Física de dispositivos e métodos — as fontes citadas por trás dos modelos de sensor:
- Origlia, Schiller, Bongs et al. — arXiv:1503,08457 (relógio óptico de rede de estrôncio, meta voltada ao espaço).
- Oelker et al., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (relógio de Sr de laboratório, 4,8×10⁻¹⁷).
- Templier et al., Science Advances (2022) — arXiv:2209,13209 (tríade de acelerômetros quânticos híbridos).
- Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — tutorial da IEEE AESS (Aerospace and Electronic Systems Society) (repositório Discovery da University College London) (crescimento do erro na navegação por estima (dead reckoning)).
- Giorgetta et al., Nature Photonics 7, 434 (2013) — arXiv:1211,4902; Deschênes et al., Phys. Rev. X 6, 021016 (2016) — APS (American Physical Society) (transferência óptica bidirecional de tempo e frequência; o enlace óptico entre satélites modela seu orçamento de não reciprocidade a partir destes).
- Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (a modulação BOC e a teoria de separação espectral por trás de
src/navsignal.rs). - Kaplan & Hegarty (orgs.) — Understanding GPS/GNSS: Principles and Applications (3ª ed., Artech House, 2017): a equação de C/N₀ efetivo antijamming e o jitter de ruído térmico do rastreamento de código por DLL early–late que os modelos de sinal de navegação e de jamming usam.
Comparação e estado da arte aberto — as ferramentas e levantamentos em relação aos quais o Kshana se posiciona:
- Humphreys et al. — TEXBAT (o Texas Spoofing Test Battery; ION — Institute of Navigation — GNSS 2012): os parâmetros da bateria de testes de spoofing com os quais o detector multicamadas é caracterizado.
- González et al. — NaveGo (2017): os perfis abertos e validados de erro de navegação inercial usados como linha de base clássica.
- Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): simulador aberto de PNT lunar.
- Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: análise aberta de dados GNSS.
- Li, Zaminpardaz, Kealy & Greentree — Quantum sensors for enhanced positioning and navigation: a comprehensive review, GPS Solutions 30(1):62 (2026), doi:10.1007/s10291-026-02030-y.
- Bertone et al. — Earth and Space Science 8(6) (2021), doi:10.1029/2020EA001454: OD de dinâmica reduzida do GRAIL, o piso de aceleração empírica que o ajuste do LRO reproduz.