Tradução automática, não revista por um falante nativo. O inglês é a referência.

Validação e evidênciasEditar no GitHubFonte: docs/VALIDATION.md

Estado da validação

Sobre as tolerâncias. "Validado" abaixo significa que um teste de calibração afirma que a estatística simulada coincide com a relação de referência dentro de um gate imposto, atualmente 20–25% de erro relativo (média sobre seeds) para as relações de Allan/orçamento de ruído. A concordância mediana observada é muitas vezes muito mais apertada (alguns por cento), mas o limite garantido é o gate, não a mediana. Onde aparece um número como "~2%", é uma observação típica, não a tolerância imposta. Ver Afirmações contra realidade.

A regra de promoção#

Uma linha da matriz de verificação verificada por máquina (src/verification.rs) é VALIDATED apenas quando uma referência independente do Kshana concorda com a implementação dentro de uma tolerância indicada antes de a comparação ser executada, num teste que corre no gate. Esta secção é o único local onde a regra está escrita; a matriz, a prosa de cada linha e as notas de versão remetem para ela.

Os tipos de referência independente aceites#

Tipo O que conta Exemplos já na matriz
Medido Dados reais medidos da grandeza que a linha afirma: uma observação do mundo físico, não uma saída de modelo. Os dois terços reservados de um registo real de relógio de césio; pontos normais arquivados de medição laser da distância à Lua; a série Circular T UTC(k) do BIPM (Bureau International des Poids et Mesures); o mosaico de terreno SRTM (Shuttle Radar Topography Mission).
Biblioteca Uma biblioteca ou ferramenta independente de terceiros que calcula uma grandeza univocamente definida sobre as mesmas entradas, em que a biblioteca implementa ela própria o cálculo do domínio. A concordância entre bibliotecas é uma verificação genuína apenas porque a grandeza tem uma única resposta certa. allantools, Orekit, ANISE, RTKLIB, gnss_lib_py, lamberthub, pymcdm, scikit-learn, as distribuições estatísticas do SciPy.
Referência Vetores de referência, tabelas ou exemplos de verificação publicados: números que uma norma, uma agência ou um texto de referência imprimem para que as implementações possam ser verificadas face a eles. Vetores SOFA/ERFA (Standards of Fundamental Astronomy), os vetores de verificação SGP4 da AIAA (American Institute of Aeronautics and Astronautics), os exemplos de validação da ITU-R (International Telecommunication Union, Radiocommunication Sector), o exemplo trabalhado ARAIM do Working Group C, o JPL (Jet Propulsion Laboratory) Horizons.

Duas normas adicionais decidem os casos-limite. Ambas são adotadas para a versão 0,30.

  • P1, um valor trabalhado publicado. Um valor trabalhado publicado, calculado a partir da mesma forma fechada que a linha implementa, conta como vetor de referência publicado quando a publicação é independente do Kshana e a comparação fixa uma tolerância indicada. O valor tem de estar impresso como número na publicação (um valor lido de um gráfico só conta se a incerteza de leitura estiver dentro da tolerância indicada), e o teste tem de fazer o Kshana calculá-lo a partir das entradas da publicação; comparar uma constante com o documento de onde foi copiada é uma verificação de transcrição, não P1.
  • P2, uma biblioteca numérica independente. Uma biblioteca numérica independente, como o numpy ou o LAPACK (Linear Algebra PACKage), que recalcule uma grandeza de álgebra linear univocamente definida sobre entradas indicadas conta como biblioteca independente. A biblioteca tem de executar o passo de decomposição, inversão, resolução ou mínimos quadrados com o seu próprio algoritmo, sobre entradas incluídas no fixture; a afirmação validada é então a álgebra linear sobre essas entradas, não as magnitudes físicas de um cenário representativo. Um script que reavalie uma forma fechada escalar com aritmética numpy é uma segunda implementação nossa, não P2.

Condições que se aplicam a todos os tipos: a referência independente não é escrita, executada nem publicada por este projeto (a série de artigos do próprio repositório não é, por isso, independente dele); a tolerância está no teste e foi fixada antes da primeira comparação; um teste condicionado a dados que é saltado quando os seus dados públicos estão ausentes di-lo quando é saltado.

O que não conta#

  • A nossa própria segunda implementação: um segundo caminho de código nesta crate (ReferenceImpl), ou um script neste repositório que reavalie a mesma forma fechada.
  • A concordância com a nossa própria saída anterior: goldens, fixações de regressão, snapshots ou uma tabela dos artigos do próprio projeto.
  • Uma transcrição das constantes de uma citação: verificar um coeficiente, uma predefinição, um valor de folha de especificações ou uma folha de parâmetros face ao documento de onde foi copiado.
  • Uma escolha de projeto: uma atribuição, ponderação, limiar, limite de alerta ou cenário representativo. Não existe verdade externa para uma escolha.
  • Uma identidade interna: um integral numérico face à sua própria forma analítica, uma ida e volta, uma inversão, um teste de propriedade ou de monotonia.
  • Uma execução de integração face a um anfitrião real (IntegrationRun): carregar um plugin num servidor Signal K real ou no OpenCPN, ou alimentar a saída de um gate real a um consumidor TCP, e verificar que o anfitrião aceita a entrada e mostra o estado esperado. Mostra que a infraestrutura funciona. O anfitrião não é uma referência independente para nenhum valor que a integração transporte, pelo que não há nada externo com que comparar e uma tal linha (a linha das integrações marítimas) é MODELLED, não VALIDATED. IntegrationRun é um tipo de referência independente próprio, permitido apenas em linhas MODELLED: integration_run_only_on_modelled_rows em src/verification.rs falha se uma linha VALIDATED o tiver, e validated_rows_require_an_external_oracle já exige que cada linha VALIDATED seja ExternalDataset.
  • Plausibilidade sobre entradas reais: dados reais usados apenas como entrada, com afirmações de escala em vez de uma comparação com um valor externo.
  • Uma tolerância escolhida depois de ver a comparação.

Como a regra é aplicada#

Cada linha VALIDATED declara, em validated_oracle_basis() em src/verification.rs, em que tipo assenta (Medido, Biblioteca, Referência, P1 ou P2), a fonte independente (citada do texto de referência independente da própria linha) e o único teste que contém a comparação. Os testes unitários junto da tabela falham quando uma linha VALIDATED não está declarada ou está declarada duas vezes, quando uma declaração nomeia uma linha que não é VALIDATED, quando a fonte declarada não é a que o texto de referência independente da linha nomeia ou é o próprio Kshana, quando o teste declarado não é um que a linha cita, ou quando uma linha P2 não nomeia nenhuma biblioteca numérica independente. tests/verification_rows_declare_an_oracle_basis.rs exige então que o teste declarado exista em disco como um #[test] real que não esteja ignorado. O que a máquina não consegue verificar é se o teste nomeado compara face à fonte declarada; isso continua a ser uma leitura humana. As contagens por tipo não são aqui escritas: a tabela é a fonte.

Linhas VALIDATED existentes reexaminadas segundo a regra#

A regra foi aplicada às linhas existentes tal como às promoções futuras.

  • Linhas P1 nomeadas pelo estudo de validação 0,30, todas fundamentadas: Balanço de ligação unidirecional (a tabela de controlo de projeto X-band do Galileo, JPL Pub 82-76, reconstruída a partir das suas linhas de detalhe até 4.6e-3 dB de perda no espaço livre); Formas fechadas de banda limitada para qualquer sinal de medição de distância (90,3 por cento da potência do lóbulo principal e o jitter coerente early-late publicado); Doppler máximo de um satélite de navegação em órbita terrestre baixa (os valores publicados do Xona Pulsar X1 e do Iridium); Doppler máximo que um utilizador estático vê a partir de uma órbita LEO ou MEO (Tabela 1 do artigo do Pulsar, 20 valores); Doppler que um recetor em terra tem de tratar a partir de um satélite de navegação LEO (os mesmos valores publicados a partir de uma órbita real). Cada publicação é independente do Kshana, imprime os seus números, e o teste indica a sua tolerância.
  • Outras linhas que assentam em P1, encontradas no reexame, todas fundamentadas: Compromisso de projeto de códigos de medição de distância (a correlação cruzada Gold publicada de −23,9 dB); Tempo coordenado lunar (Ashby e Patla 2024, cuja verificação cruzada da velocidade da Lua face ao DE440 é uma verificação de biblioteca); Densidades espetrais de potência de sinais de banda L em forma fechada (valores Q de Kaplan e Hegarty); Atraso ionosférico de primeira ordem por banda (a razão de atraso de grupo da IS-GPS-200); Pesos do erro de distância do sinal no espaço em média global (a tabela de Montenbruck, Steigenberger e Hauschild 2018).
  • Linhas P2 nomeadas pelo estudo, todas fundamentadas: Informação de Fisher e observabilidade de Cramér–Rao (numpy eigh/inv); Identificabilidade do datum lunar; Calibre acoplado do referencial e da escala de tempo lunares; Pipeline autónomo de observabilidade de falhas em rede livre (SVD do numpy/SciPy, decomposição em valores singulares). Cada uma recalcula uma grandeza de álgebra linear univocamente definida sobre entradas incluídas, por um algoritmo diferente do solucionador de valores próprios de Jacobi do Kshana.
  • Outras linhas que assentam em P2, encontradas no reexame, todas fundamentadas: Derivação de prioridades MCDA (análise de decisão multicritério) (o vetor próprio AHP, processo analítico hierárquico, por SciPy/LAPACK; a tabela de Random Index que também reproduz é uma transcrição e não é contada); Variância de deriva em holdover do relógio (expm do SciPy da matriz aumentada de Van Loan); Realização do referencial lunar (uma resolução Umeyama por SVD do numpy); Formação de feixe CRPA (antena de padrão de receção controlado) (resolução complexa LAPACK); Núcleo do nível de proteção ARAIM lunar (a inversa LU do RTKLIB com quantis do SciPy); Consistência de referencial/dinâmica lunar entre fornecedores (um ajuste de mínimos quadrados por SVD do numpy de três efemérides publicadas).
  • Assinaladas na primeira passagem, reapoiadas na ronda 2 da execução 0,30. Três linhas foram assinaladas como não sustentadas pela regra escrita. Cada uma assenta agora numa comparação pré-registada antes de o seu fixture ser obtido, pelo que nenhuma linha está assinalada; um teste unitário junto de validated_oracle_basis() fixa a lista (agora vazia).
    • Integridade (RAIM/ARAIM/SBAS). Os testes citados afirmavam apenas plausibilidade sobre geometria real do IGS (International GNSS Service). A linha assenta agora em três referências de biblioteca independentes: a solução de separação de hipóteses múltiplas do ARAIM do Airborne Design Document v4.2 face ao Stanford MAAST para o ARAIM 2 (270 casos reais, pior diferença de VPL 2.2e-3 m face a 0,05 m); a deteção e exclusão RAIM de snapshot face ao RTKLIB raim_fde (2016 de 2016 decisões idênticas) com o nível de proteção de declive; e os níveis de proteção SBAS L1 do DO-229E face ao Stanford MAAST em difusões WAAS reais (2868 pares dentro de 1.6e-5 m). A linha diz claramente que as funções de sigma uniforme raim::araim_raim e raim::araim_dual_raim não são aderentes à norma ADD e que a comparação SBAS L5 de dupla frequência é uma constatação.
    • Posições dos planetas em todo o sistema solar a partir dos elementos keplerianos Standish do JPL. O limiar post-hoc do dobro do erro nominal é substituído por um limiar pré-registado: RMS no máximo o valor da Tabela 8.10.1 do Explanatory Supplement por planeta e componente, face ao JPL Horizons DE441, com a divisão da Terra e a rotação ICRF cobertas.
    • Tempo de luz entre corpos do sistema solar. O solucionador de tempo de luz é agora comparado com os tempos de luz do Horizons até 1e-6 s sobre posições DE441, um limiar pré-registado que não herda o limiar de posição.
  • Linhas MODELLED que as duas políticas tornam promovíveis (apenas através da execução 0,30 linha a linha, nunca por este texto): sob P1, o limite de geolocalização de emissores por TDOA/FDOA (diferença de tempo e de frequência de chegada), o acoplamento da taxa de relógio relativista ao referencial, as máscaras de sincronização da ITU-T (Telecommunication Standardization Sector) (apenas para valores de máscara que as Recomendações imprimem como números; os pontos de quebra transcritos verificados face a si próprios não contam) e o limite de posicionamento de rede não terrestre 5G (apenas se for encontrado um valor trabalhado publicado); sob P2, a cegueira de integridade de modo comum, o nível de proteção de temporização MHSS escalar (separação de soluções de hipóteses múltiplas) e o branqueamento GLS (mínimos quadrados generalizados). As duas linhas de benchmark de integridade de temporização (o classificador do diagrama de integridade de Stanford e o pontuador de cobertura de integridade) são classificação baseada em regras, não álgebra linear, pelo que o P2 não as alcança; precisam de uma ferramenta independente, e a única encontrada (gLAB) tem uma licença não comercial.
  • Coerência com recusas anteriores. A verificação de Vallado da linha da janela de lançamento qualificar-se-ia agora sob P1 se o seu teste calculasse o exemplo trabalhado impresso; o plano 0,30 promove-a antes através do Orekit. A tabela de cruzamento de tempo lunar por classe de relógio mantém-se MODELLED: a tabela que reproduz provém do artigo do próprio projeto, que não é independente.
Termo de ruído Estado Evidências
Paridade dos estimadores de Allan (ADEV/MDEV/TDEV/OHDEV (ADEV: desvio de Allan; MDEV: desvio de Allan modificado; OHDEV: desvio de Hadamard sobreposto)) validated Duas verificações de fonte primária face à NIST (National Institute of Standards and Technology) SP (Special Publication) 1065 (Riley, Handbook of Frequency Stability Analysis, 2008), ambas com uma tolerância relativa de 1e-4. (1) tests/allan_reference.rs: os estimadores de ADEV sobreposto, ADEV modificado, desvio de tempo e Hadamard sobreposto reproduzem os desvios do conjunto canónico de 10 pontos NBS14 (SP 1065 Tabela 29/30, p. 107) em tau = 1, 2 — a concordância é na realidade ~1e-6 (por exemplo, ADEV sobreposto (OADEV) em τ = 2: 85,952868 contra 85,95287). (2) tests/allan_nist_sp1065_1000point.rs: os mesmos quatro estimadores reproduzem o conjunto de dados de 1000 pontos da SP 1065 §12,4 (Tabela 31, p. 108) com fatores de média 1 / 10 / 100, em que o conjunto de dados é regenerado em código a partir do LCG da SP 1065 (Eq. 73) — hermético, sem fixture. Os mesmos dados e os números da Tabela 31 são o alvo de regressão no aewallin/allantools (tests/nbs14), aqui reproduzidos sem código de terceiros. Isto fixa a matemática dos estimadores face à referência, distinta das linhas de calibração do ruído abaixo.
Paridade dos estimadores de Allan em hardware real medido validated tests/cs5071a_reference.rs: os estimadores de Allan sobreposto e de Hadamard sobreposto reproduzem os desvios de referência do Stable32 para um padrão primário de césio 5071A real medido face a um maser de hidrogénio (556 990 amostras de fase a τ₀ = 1 s; 1 PPS (pulso por segundo) para um contador 53230A, fev. 2014; recolhido por A. Wallin, distribuído com allantools). Verificado ao longo de toda a escada decádica de τ (16 fatores de média, τ = 1 s … 4×10⁴ s): fatores bem amostrados com um gate relativo de 1e-3 (a concordância observada é na realidade ≤ 3e-5, por exemplo OADEV(1 s) 3.317111e-10 contra Stable32 3.3171e-10), fatores esparsos de τ longo obrigados a cair dentro da banda de confiança de 1‑σ impressa do Stable32. Isto complementa a paridade sintética NBS14 acima com uma verificação de relógio medido. O ficheiro de fase em bruto são dados de terceiros sem licença de redistribuição, pelo que é ignorado pelo git; scripts/fetch_cs5071a.sh reproduz-o e o teste imprime um aviso de salto (a CI (integração contínua) mantém-se verde) quando está ausente. Apenas os números de referência públicos do Stable32 estão incluídos (tests/fixtures/cs5071a/); não é usado código de terceiros.
Paridade dos estimadores de Allan no PHASE.DAT canónico do Stable32 validated tests/phasedat_reference.rs: os estimadores de Allan sobreposto, de Allan modificado e de desvio de tempo reproduzem os desvios de referência do Stable32 para o PHASE.DAT — a série de 1001 pontos distribuída com o Stable32 que ferramentas independentes (por exemplo allantools) usam como alvo de regressão padrão — ao longo de toda a escada de fatores de média (139 fatores) com um gate relativo de 1e-3 (observado ≤ 5e-5). Uma segunda série de referência real e independente, a par da verificação do césio medido acima. O PHASE.DAT acompanha a ferramenta comercial Stable32, pelo que a série em bruto é ignorada pelo git; scripts/fetch_phasedat.sh reproduz-a e o teste é saltado em verde (a CI mantém-se verde) quando está ausente. Apenas os números de referência públicos do Stable32 estão incluídos (tests/fixtures/phasedat/); não é usado código de terceiros.
Estabilidade de relógio ótico numa curva real medida validated tests/optical_clock_adev_reference.rs: a inversão de parâmetros de ruído do relógio (quantum_trade::qparams_from_adev_curve) reproduz o σ_y(τ) publicado do relógio de rede ótica de ⁸⁸Sr de Norcia et al., Science 366:93 (2019) (Zenodo 10.5281/zenodo.3382347, CC-BY-4.0 (Creative Commons Attribution 4,0), curva incluída em tests/fixtures/optical_clock_adev/): o coeficiente de frequência branca recuperado √q_wf ≈ 4.33e-16 coincide com a estabilidade de curto prazo do artigo de ≈4.7e-16/√τ (~10% RMS (raiz do valor quadrático médio) ao longo da curva) e o ajuste deteta um patamar medido não nulo (q_rw > 0). Isto fixa a inversão de ADEV medido → parâmetros de ruído face a um relógio ótico real; o benefício de holdover até ao limiar construído sobre ela continua MODELLED.
ROC (característica de operação do recetor) AUC (área sob a curva) de deteção de anomalias em telemetria real OPS-SAT da ESA (European Space Agency) validated (reproduz as etiquetas) tests/opssat_ad_reference.rs: no conjunto de dados OPSSAT-AD (Ruszczak et al. 2025, Zenodo 10.5281/zenodo.12588359, CC BY 4,0) — segmentos reais de housekeeping do OPS-SAT com etiquetas de anomalia de referência — a AUC ROC de Mann–Whitney do Kshana (impairment_eval::auc) reproduz a roc_auc_score do scikit-learn até < 1e-9 na partição de teste reservada (529 segmentos, 113 anomalias), para duas pontuações determinísticas: um detetor transparente de uma única característica (contagem de picos do segmento, AUC ≈ 0,851) e uma pontuação de Mahalanobis diagonal de 8 características ajustada aos segmentos normais de treino (AUC ≈ 0,556); eval_stats::bootstrap_auc_ci delimita a estimativa pontual com o seu limite inferior acima do acaso. Isto valida o cálculo da AUC em dados reais da ESA e a separação etiquetada de um detetor transparente — não reproduz a melhor métrica publicada no artigo OPSSAT-AD (uma FCNN supervisionada (rede neuronal totalmente ligada), F1 ≈ 0,95), que requer o modelo treinado deles. Dados CC-BY incluídos (tests/fixtures/opssat/, herméticos); referência independente regenerada por generate_opssat_oracle.py.
Síntese de funcionais do campo gravítico (mapa de navegação assistida por gravidade / sem GNSS (GNSS: global navigation satellite system)) validated tests/icgem_gravity_reference.rs: o núcleo de funcionais gravíticos em harmónicos esféricos (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — o "leitor de mapa" com que um navegador assistido por gravidade faz correspondência — é validado face à norma de gravidade normal GRS80 (Geodetic Reference System 1980) (Moritz 1980, adotada pela IAG (IAG: International Association of Geodesy)). Construir o campo normal GRS80 a partir dos seus harmónicos zonais pares publicados J₂…J₈ e sintetizar a gravidade (gravitação + centrífuga) no elipsoide reproduz a gravidade normal de Somigliana em forma fechada, e os valores equatorial/polar publicados γ_e = 9,7803267715 / γ_p = 9,8321863685 m/s², até 3.5e-12 relativo em todas as latitudes (gate 1e-9). O mesmo núcleo carrega o modelo terrestre real ICGEM (International Centre for Global Earth Models) EGM2008 (Earth Gravitational Model 2008) de referência (NGA (National Geospatial-Intelligence Agency), domínio público via ICGEM; o leitor from_gfc é também exercitado no campo lunar GRAIL (Gravity Recovery and Interior Laboratory) em tests/agency_lro.rs) e produz um mapa de perturbação gravítica fisicamente limitado (RMS ≈ 26 mGal, máx. ≈ 89 mGal a d/o 70). Valida a correção do código de síntese; a exatidão da solução de posição da navegação assistida por gravidade continua MODELLED (não existe nenhuma trajetória pública de gravímetro em plataforma com referência de verdade).
Graus de liberdade efetivos (edf) específicos do tipo de ruído (intervalos de confiança) validated src/allan.rs: a banda de confiança χ² em cada ponto de ADEV sobreposto usa os graus de liberdade efetivos específicos do tipo de ruído (formas fechadas da Tabela 5 da NIST SP 1065 para modulação de fase branca e flicker, modulação de frequência branca e flicker e modulação de frequência de passeio aleatório (WPM/FPM/WFM/FFM/RWFM) — o conjunto simples do Stable32), com o tipo de lei de potência do registo identificado a partir do declive log-log do seu MDEV. Três verificações independentes: (a) as cinco fórmulas reproduzem valores avaliados à mão em N=64,m=4 até 1e-12; (b) um ensemble de Monte Carlo de FM branca (FM: modulação de frequência) (4 000 registos) mede o edf qui-quadrado efetivo do estimador = 2·média²/Var(σ²) e coincide com a fórmula dentro de 20% (e supera de forma material a contagem conservadora não sobreposta); (c) tests/allan_nist_sp1065_1000point.rs reproduz o edf impresso na SP 1065 Tabela 32 (p. 109) = 146,177 para o conjunto de dados de 1000 pontos em m=10 (FM branca) até 5e-3, e os limites de confiança de 95% da tabela (8.223942e-2 / 1.035201e-1) a <0,2% (o pequeno resíduo é a aproximação χ² de Wilson-Hilferty face ao χ² exato do NIST). A curva ADEV exportada traz o tipo de ruído identificado, o edf e a banda de 95% por τ.
FM branca (curto prazo) validated tests/calibration.rs: o ADEV sobreposto simulado reproduz o sigma_y(1 s) publicado — tipicamente dentro de alguns por cento, gate imposto de 20% (CSAC e o objetivo de rede ótica) — e a curva de FM branca sigma_y(tau)=sigma_y(1s)/sqrt(tau) para tau = 1, 10, 100 s dentro de um gate de 25% (coincide com a folha de especificações do CSAC (relógio atómico à escala de chip) 3e-10 / 1e-10 / 3e-11).
FM de passeio aleatório (longo prazo) validated tests/calibration.rs: o ADEV simulado coincide com sigma_y^2(tau)=q_rw*tau/3 (Riley NIST SP 1065) até ~20% (média sobre seeds).
Envelhecimento / deriva linear modeled + calibrado e removido Determinístico; o estimador de holdover remove o desvio e o envelhecimento através de um preditor quadrático, pelo que o resíduo é o limite estocástico. Testado em src/estimator.rs / src/models.rs.
Estimador de Kalman + limite de integridade validated src/kalman.rs: um filtro de dois estados (fase, frequência) cujo ruído de processo exato de van Loan coincide com o modelo de referência; a navegação em inércia reproduz a variância analítica de holdover q_wf*T + q_rw*T^3/3 até 1e-9. A atualização da covariância está na forma estabilizada de Joseph P⁺ = (I−KH)P(I−KH)ᵀ + KRKᵀ, que se mantém semidefinida positiva (verificada por Cholesky) ao longo de 500 passos de previsão/atualização com uma razão extrema R=1e-26 / Q≈1e-30, e concorda com a forma ingénua até 1e-9 onde esta última está bem condicionada. A camada de execução comunica a Integridade como a fração de amostras da interrupção dentro do limite de proteção de 3 sigma (src/run.rs).
Autoconsistência do filtro (NIS (inovação normalizada ao quadrado) / NEES (erro de estimação normalizado ao quadrado)) validated (modelo) src/filter_health.rs: uma avaliação de consistência por Monte Carlo (Bar-Shalom §5,4). O NIS → 1 e o NEES → 2 agregados do filtro ajustado situam-se dentro das suas bandas χ² de 95% (a banda do NIS usa a contagem agregada de inovações brancas; a banda do NEES usa a contagem de execuções independentes, dado que os erros de estimação são correlacionados no tempo). Um teste de varrimento de incompatibilidade Q/R verifica que o monitor comunica consistent=true apenas com sintonia unitária e consistent=false com dessintonias de ×0.1/×0.5/×2/×10, com o NIS a escalar como ≈1/q_factor, tal como derivado. Exposto como filter_health no JSON (JavaScript Object Notation) de resultado do relógio e num cartão do playground. As bandas χ² usam o quantil de Wilson–Hilferty (detection::chi2_inv_cdf, verificado por tabela).
Modelo de transferência bidirecional de tempo validated (modelo) src/timetransfer.rs: o atraso recíproco de modo comum cancela-se exatamente na estimativa (m_AB - m_BA)/2 (derivado à mão, exato) e duas medições unidirecionais fazem a média para 1/sqrt(2) (média sobre seeds); o atraso diferencial não recíproco é um processo colorido de FM branca + FM de passeio aleatório cujo desvio de Allan segue sigma_y^2(tau) = q_rw*tau/3 (média sobre seeds, ~20%, através do próprio step() da ligação). Os parâmetros (sigma_j, q_rw por ligação) são valores representativos de TWSTFT/ótico (TWSTFT: transferência bidirecional de tempo e frequência por satélite), não ajustados a um terminal específico.
Segurança (pontuação de deteção de spoofing) validated (modelo) src/security.rs: o patamar de 1 sigma do monitor sqrt(r/m + q_wf*tau + q_rw*tau^3/3) e o desvio mínimo detetável de k sigma resultante e a pontuação [0,1] são derivados à mão e testados unitariamente. O modelo (deteção assistida por relógio de inovação / tipo RAIM (RAIM: monitorização autónoma da integridade pelo recetor)) é sólido; os parâmetros (janela de monitorização tau, multiplicador de deteção k, ruído de medição r) são representativos, não ajustados a um recetor específico.
Deteção de ataques de spoofing validated (modelo) src/spoof.rs: um spoofing de tempo falso em rampa é assinalado quando o seu desvio excede o limite de deteção do relógio; o tempo de deteção coincide com start + bound/rate derivado à mão até um passo da grelha, e um relógio cujo limite excede a especificação deixa o spoofing atingir o limiar sem ser detetado. Mesma ressalva representative-parameters que a pontuação de Segurança.
FM flicker (patamar) modeled (desativado por predefinição) Sintetizado como uma soma de processos de Ornstein-Uhlenbeck (OU) espaçados logaritmicamente, calibrados para um patamar de ADEV plano configurável; src/models.rs valida que o patamar é plano ao longo do tempo de média e se situa no nível configurado (média sobre seeds). Ativado por relógio através de flicker_floor. Os cenários de referência citados deixam-no desativado: o CSAC é dominado por FM branca ao longo da sua gama de folha de especificações (1-1000 s) e o patamar sistemático do relógio ótico (~5e-17) é representado pela sua figura de exatidão.
Estatísticas do ensemble de Monte Carlo validated (agregação) src/ensemble.rs: percentis por ordem mais próxima e média sobre runs realizações reproduzíveis; uma execução única colapsa a dispersão, a banda por passo de tempo está ordenada p05 <= p50 <= p95, e as reexecuções são idênticas bit a bit. Isto é agregação estatística sobre a execução única já validada, não um novo modelo físico.
Relógio sigma_y(1 s) Fonte
csac-sa45s (CSAC) 3.0e-10 Folha de especificações Microchip SA65 / SA.45s
optical-sr-lattice (rede de Sr) 1.0e-15 relógio ótico de rede de estrôncio, objetivo orientado para o espaço, arXiv:1503,08457

Estado: FM branca e FM de passeio aleatório validadas; envelhecimento modelado e calibrado e removido; FM flicker modelada e validada (desativada por predefinição nos cenários citados).

Maturidade: os valores do relógio ótico são o objetivo orientado para o espaço em hardware terrestre -- nenhum relógio ótico de estrôncio voou. Os relógios de Sr de laboratório atingem 4.8e-17 (Oelker et al. 2019, Nature Photonics). Os valores do CSAC provêm de um componente comercial em utilização.

Relações: Riley, NIST SP 1065, Eq. 67 -- FM branca sigma_y^2(tau)=h0/(2 tau); FM de passeio aleatório sigma_y^2(tau)=(2 pi^2/3) h_-2 tau, equivalentemente q_rw*tau/3 para um processo de Wiener de frequência de difusão q_rw.

Pacote 2 — navegação inercial por estima (unidade de medição inercial quântica)#

Termo Estado Evidências
Viés constante/residual -> posição validated erro de posição = família 0,5bT^2 (Tutorial Groves AESS (Aerospace and Electronic Systems Society)); teste discreto derivado à mão em src/inertial/mod.rs.
Passeio aleatório da velocidade (aceleração branca) validated src/inertial/mod.rs: o DP (desvio padrão) do erro de posição simulado coincide com sigma_x(T)=sqrt(S_a*T^3/3) (Groves eq.54) até ~12% observado (média sobre seeds; gate imposto de 20%).
Física do acelerómetro de interferómetro de átomos frios (CAI) (a partir de primeiros princípios) validated (modelo) src/inertial/quantum_imu.rs: um interferómetro de átomos frios Mach-Zehnder de três impulsos. Verificado à mão face à geometria de manual — Rb-87 k_eff = 4pi/lambda ~ 1.611e7 rad/m; Phi = k_eff*a*T^2 ~ 1.580e4 rad a 1 g, T = 10 ms; ruído de projeção sigma_Phi = 1/(C*sqrt(N)) = 2e-3 rad com C = 0.5, N = 1e6; sigma_a ~ 1.24e-6 m/s^2 por disparo; as leis de escala 1/T^2 e 1/sqrt(N); decaimento exponencial do contraste. q_va() deriva a PSD (densidade espetral de potência) de aceleração branca que o AccelModel clássico consome. Âmbito honesto: apenas o patamar de ruído de projeção quântica (~0,09 ug/sqrtHz aqui) — muito abaixo de dispositivos reais limitados pela vibração (1-50 ug/sqrtHz); o tensor de vibração, a força de Coriolis e os sistemáticos de desvio de luz ainda não estão modelados (ver QUANTUM.md).
Viés do giroscópio + passeio aleatório angular (ARW) -> inclinação -> acoplamento da gravidade modeled (desativado por predefinição) Um viés residual do giroscópio e o ARW conduzem um erro de atitude; a inclinação acopla a gravidade (g*theta) no erro de força específica horizontal. src/inertial/mod.rs valida exatamente o crescimento cúbico da posição por viés puro e o crescimento da atitude por ARW como processo de Wiener (média sobre seeds). Ativado por sensor através de gyro_bias e q_arw; desativado nos cenários de apenas acelerómetro citados.
Instabilidade do viés (patamar flicker 1/f) modeled (desativado por predefinição) src/inertial/mod.rs: um processo flicker 1/f (a mesma síntese OU validada para o relógio) cujo patamar plano de desvio de Allan se situa no coeficiente de instabilidade do viés; zero é uma operação nula, um patamar não nulo altera a trajetória, ambos reproduzíveis. Ativado por sensor através de bias_instability.
Passeio aleatório da aceleração (passeio aleatório da taxa) validated src/inertial/mod.rs: o viés é um processo de Wiener com Var(bias_rw(T)) = q_aa*T, verificado com média sobre seeds até ~20%. Ativado por sensor através de q_aa.
Validação cruzada com o NaveGo (coeficientes de ruído de IMU (unidade de medição inercial)) validated tests/navego_imu_crossval.rs: uma verificação cruzada externa face ao NaveGo (R. Gonzalez, toolbox INS/GNSS (INS: sistema de navegação inercial) de código aberto, github.com/rodralez/NaveGo). Reproduz o ciclo sintético de ida e volta do navego_example_allan.m do NaveGo no seu perfil de referência Microstrain 3DM-GX3-35 publicado: ao alimentar o nosso estimador de ADEV sobreposto (validado com NBS14/Stable32) com ruído branco do sensor aos níveis de 1-σ do NaveGo, recuperam-se os coeficientes de passeio aleatório da velocidade e do ângulo (VRW, ARW) (ADEV(1 s) = σ·√dt) até < 5% (real ~0,4%), com o ramo de ruído branco no declive −1/2. Confirma que o nosso pipeline de Allan e as definições de VRW/ARW do NaveGo concordam. O registo STIM300 .mat gravado de 40 MB não é ingerido (condicionado ao formato binário).
Fator de escala, termos de eixo cruzado mais finos not modeled neste pacote de 1-DOF (um grau de liberdade) O pacote herdado de eixo único não tem erro de fator de escala nem de acoplamento cruzado. A biblioteca strapdown de três eixos e o pacote gnss-ins modelam fator de escala, desalinhamento, sensibilidade a g, quantização e rampa de taxa (src/inertial/imu_errors.rs; ver a tabela de afirmações abaixo).
Sensor estabilidade do viés PSD de raiz do ruído Fonte
cold-atom-quat (quântico) 5.88e-7 m/s^2 (60 ng, 24 h) 22 ug/sqrtHz = 2.16e-4 (m/s^2)/sqrtHz Templier et al. 2022, Science Advances (arXiv:2209,13209)
nav-grade-quartz (clássico) 1.57e-3 m/s^2 (~160 ug) ~20 ug/sqrtHz = 1.96e-4 (m/s^2)/sqrtHz Honeywell QA-2000 / Tutorial Groves AESS

Enquadramento honesto: a vantagem dos átomos frios é a estabilidade de viés a longo prazo (~2600x inferior), que domina uma longa interrupção GNSS através de 0,5bT^2. O ruído de curto prazo é comparável (quântico ~22 contra clássico ~20 ug/sqrtHz) — o sensor quântico ganha a maratona, não o sprint. Maturidade: os acelerómetros de átomos frios estão em fase de laboratório/inicial (JRC122785), o quartzo de grau de navegação está em utilização.

Termo Estado Evidências
Jitter de temporização branco -> precisão de sincronização validated src/timetransfer.rs: o RMS de sincronização simulado reproduz o jitter da ligação sigma_j; a média da amostra comporta-se como sigma/sqrt(N) até <20% (média sobre seeds).
Temporização -> medição de distância unidirecional validated distância = c * dt, c=299792458 m/s; 1 ps = 0,299792458 mm (teste exato, derivado à mão).
Patamar flicker/TDEV, resíduo de reciprocidade bidirecional modelled src/twstft_budget.rs (tipo de cenário time-transfer-budget): ruído de fase flicker (Kasdin–Walter, TDEV plano), uma não reciprocidade diurna e um resíduo de reciprocidade constante na série bidirecional; o pacote timetransfer de jitter branco não se altera.
Ligação jitter de amostra única tipo fonte
optical-isl 1 ps (1e-12 s) alvo credível em órbita ligação ótica entre satélites, alvo de sincronização de picossegundos; O-TWTFT de laboratório (TWTFT: transferência bidirecional de tempo e frequência) ~1 fs (Giorgetta 2013 / Deschenes 2016)
twstft-rf 0,5 ns (5e-10 s) medido numa única sessão TWSTFT do BIPM/PTB/NIST (BIPM: Bureau International des Poids et Mesures; PTB: Physikalisch-Technische Bundesanstalt, o instituto nacional de metrologia alemão)

Enquadramento honesto: o valor ótico é um alvo de sincronização em órbita ao nível do picossegundo (não lançado). O patamar do laboratório ótico terrestre é ~1 fs (muito melhor); uma ligação de micro-ondas bem projetada (a ligação de micro-ondas (MWL) do ACES (Atomic Clock Ensemble in Space), ~0,3 ps) pode rivalizar com a ótica, pelo que a linha de base "RF = 0,5 ns" é especificamente o TWSTFT corrente. A conversão para distância é unidirecional (distância = cdt); bidirecional/ida e volta divide-a ao meio (distância = cdt/2).

Pacote 4 — fusão híbrida (tutorial final)#

Compõe o Pacote 1 (relógio), o Pacote 2 (inercial) e o Pacote 3 (transferência de tempo) num único conjunto PNT (posicionamento, navegação e temporização). O conjunto tem de manter AMBOS a temporização (< especificação de temporização) e a posição (< especificação de posição) dentro dos limites; pnt_holdover_s é o tempo até um deles ser violado. A transferência de tempo opcional por ligação ótica entre satélites (ISL) ressincroniza o relógio durante a interrupção (apenas auxílio de tempo — a posição não é ressincronizada, uma vez que a transferência de tempo dá tempo, não posição).

Aspeto Estado Evidências
Pontuação PNT combinada (temporização E posição) validated src/hybrid.rs teste score_hybrid derivado à mão (pnt_holdover = o primeiro de temporização/posição a ser violado).
Integridade + Segurança para o pacote híbrido validated src/hybrid.rs: um estimador de temporização de Kalman disciplinado pela referência (nominal) e reancorado a cada ressincronização ótica; a Integridade é a contenção no limite de proteção (o limite inclui o patamar de jitter da ligação), a Segurança a pontuação de deteção de spoofing. Testado para ambos os conjuntos, incluindo o caso assistido por ligação.
Estimador de fusão conjunto validated (modelo) src/fusion/mod.rs: um único filtro de Kalman conjunto ([fase, freq] ⊕ [pos, vel]) é o navegador, disciplinado pelo GNSS (aprendendo os desvios a partir de covariância inicial não nula) e auxiliado pela transferência de tempo; a covariância conjunta dá uma integridade conjunta que é testada como fiável (≥0,9) para ambos os conjuntos com sensores consistentes com o ruído. O pacote observa a posição e o tempo separadamente, para o que o filtro ótimo é diagonal por blocos; a estimação de viés constante com estado aumentado e o auxílio cruzado dinâmico são trabalho futuro.
Filtro acoplado relógio+posição (covariância entre blocos) validated (modelo) src/fusion/coupled.rs CoupledPntFilter: um único filtro de Kalman empilhado [pos, vel, phase, freq] (atualizações em forma de Joseph) cuja medição de pseudodistância ρ = g·pos + c·phase + noise acopla os blocos de posição e de relógio. Testes: uma pseudodistância partilhada leva P[pos,phase] a ser não nulo (filtros desacoplados mantêm-no exatamente em 0); duas geometrias distintas resolvem em conjunto desvios injetados de posição e de relógio que uma única distância não consegue separar; uma solução apenas de relógio melhora a posição através da covariância cruzada (o ganho que o acoplamento proporciona e os filtros desacoplados não); e um NEES de Monte Carlo é consistente com χ²(4) (Bar-Shalom §5,4, banda baseada em execuções). 1-DOF (a dimensionalidade do pacote); ainda não ligado ao pacote executável, e a extensão 3-D de 8 estados é trabalho futuro.
Composição de submodelos validados herda os termos de relógio/inercial/transferência de tempo são validados nos seus próprios pacotes.
GNSS/INS de acoplamento fraco (pacote gnss-ins) validated (modelo) src/fusion/{gnss_ins_ekf,closed_loop,pack}.rs: um EKF de estados de erro de 15 estados (δp, δv, ψ, viés de acelerómetro/giroscópio; Groves §14) conduz o navegador strapdown de três eixos com realimentação. Testes: um erro de posição injetado anula-se com auxílio de referência perfeita; a solução assistida mantém-se limitada a metros enquanto um INS em funcionamento livre diverge para além de 100 m; e o RMS da posição fundida ao longo de uma interrupção de 60 s supera a navegação por estima sem auxílio pelo limite do teste de ensemble (~4× quando medido antes de 0.27.3; a margem é maior após a correção abaixo). O acoplamento do viés do giroscópio é verificado face ao próprio strapdown: um viés residual conhecido do giroscópio tem de produzir o erro de atitude que o filtro prevê (closed_loop::tests::gyro_bias_coupling_predicts_the_strapdown_attitude_error), e um prior largo tem de aprender um viés de giroscópio de classe de controlador de voo mantendo-se limitado; ambos falham com o sinal anterior à 0.27.3. Revisto em 0.27.3: esse acoplamento tinha o sinal errado, pelo que as estimativas de viés do giroscópio empurravam no sentido errado e só um prior apertado mantinha o pacote estável; os valores de interrupção publicados mudaram (CHANGELOG, Fixed). Limite honesto: o viés do acelerómetro e a inclinação são fracamente separáveis no acoplamento fraco, pelo que não é afirmada calibração por viés.
GNSS/INS de acoplamento forte (pseudodistância) validated (modelo) src/fusion/gnss_ins_ekf.rs update_tightly_coupled + closed_loop.rs fuse_tightly_coupled: a inovação é formada no domínio da distância (jacobiano da linha de vista em δp). Testes: quatro satélites anulam um erro horizontal injetado de 8 m/−5 m até < 0,1 m; dois satélites (nenhuma solução de posição, velocidade e tempo (PVT) possível) ainda reduzem o erro horizontal em > 5×; um único satélite no zénite observa apenas a componente ao longo da linha de vista (vertical) e deixa a horizontal intocada; as entradas malformadas são rejeitadas. Apenas pseudodistância — a fase da portadora e um estado explícito de relógio do recetor estão no plano de desenvolvimento.
Fidelidade do auxílio cruzado de sensores (fusão completa Kalman/grafo de fatores) not modeled no pacote hybrid O pacote híbrido é uma composição ao nível do sistema + auxílio de tempo, não um estimador ótimo. Existem filtros noutros locais: o EKF (filtro de Kalman estendido) de acoplamento fraco e forte do pacote gnss-ins (linhas acima) e o filtro de Kalman unscented (UKF) de 17 estados do tipo de cenário hybrid-ukf. Nenhum suavizador de grafo de fatores é modelado.

Resultado: o conjunto totalmente quântico mantém o PNT completo durante uma interrupção de 1,8 h; o conjunto totalmente clássico é limitado pela posição (a IMU de grau de navegação é violada primeiro). A transferência de tempo ótica por ISL mantém bloqueado até o RELÓGIO clássico, isolando o sensor inercial como o elo fraco do conjunto clássico — o argumento central a favor da inércia quântica e da temporização ótica em conjunto.

Geometria — disponibilidade GNSS a partir de órbitas#

Aspeto Estado Evidências
Propagação circular de dois corpos validated src/orbit.rs: período T=2 pi sqrt(r^3/mu) (mu = 3.986004418e14), a posição regressa após um período, planaridade equatorial/polar — testes derivados à mão.
Propagação excêntrica (kepleriana) validated src/orbit.rs: a equação de Kepler M = E - e sin E resolvida por Newton (resíduo < 1e-12); raios de perigeu/apogeu a(1∓e); o caso circular coincide com o caminho em forma fechada até 1e-9.
Deriva secular nodal/apsidal por J2 validated src/orbit.rs: Omega_dot = -1.5 n J2 (Re/p)^2 cos i, argp_dot = 0.75 n J2 (Re/p)^2 (5cos^2 i - 1) (Vallado); o nó regride (progradas) / avança (retrógradas) / é estacionário (polares), e os apsides congelam na inclinação crítica de 63,4 graus — testes de sinal/zero derivados à mão. Apenas dois corpos + secular, não osculador.
Visibilidade em linha de vista (ocultação pela Terra + máscara de elevação) validated Satélite antipodal ocultado, satélite radialmente para fora a 90 graus de elevação, satélite tangencial no horizonte — testes exatos derivados à mão.
Visibilidade -> estado GNSS -> cronologia validated >=4 visíveis = nominal, 1-3 degradado, 0 negado; gerador Walker-delta; um teste de integração conduz uma execução de holdover de relógio a partir da cronologia derivada.
Otimizador de projeto de constelações + geometria de streets-of-coverage validated (modelo) src/walker.rs: optimize_walker_design pesquisa a grelha {planes × sats × inclination} e devolve a célula que melhor satisfaz um DesignObjective (mínimo de satélites para um alvo de cobertura / cobertura máxima / mínimo do pior PDOP (PDOP: diluição da precisão da posição)) — um teste afirma que a escolha é igual a uma varredura exaustiva independente da mesma pesquisa, e um exemplo trabalhado confirma que um projeto Walker 24/6/1 do GPS (Global Positioning System) cobre pelo menos tão bem como um reduzido de 18 satélites. As formas fechadas analíticas de streets-of-coverage (coverage_half_angle_rad λ = arccos(Re/r·cos ε) − ε; street_half_width_rad cos c = cos λ / cos(π/s), Rider/Beste) são verificadas à mão face à geometria de manual (GPS com máscara de 5°: λ ≈ 71,16°, meia-largura da rua de 4 satélites ≈ 62,83°) e detetam a lacuna de subpovoamento (λ < π/s ⇒ None). O solucionador completo de Rider de número mínimo de satélites para cobertura global (a contagem de planos sensível à junção) ainda não está implementado.
Diluição da precisão (GDOP/PDOP/HDOP/VDOP/TDOP (GDOP: diluição geométrica da precisão; HDOP: diluição horizontal da precisão; VDOP: diluição vertical da precisão; TDOP: diluição da precisão do tempo)) -> exatidão de posição validated src/orbit.rs: Q=(HᵀH)⁻¹ a partir da matriz de projeto da linha de vista. Referência independente externa (tests/dop_reference.rs): os cinco fatores DOP reproduzem os calculados pelo gnss_lib_py 1.0.4 (Stanford NAV Lab — uma biblioteca GNSS independente e revista por pares, usada aqui como o ERFA (Essential Routines for Fundamental Astronomy) é usado para os referenciais) em 8 geometrias que vão de bem condicionadas a quase singulares (DOP nas centenas), até 1e-6 relativo; proveniência + regeneração em tests/fixtures/dop/. Como verificação adicional em forma fechada, uma geometria de tetraedro regular reproduz os DOP analíticos (PDOP 1,5, TDOP 0,5, GDOP √2,5, HDOP √1,5, VDOP √0,75) até 1e-9. Sigma da posição = PDOP × erro equivalente de distância do utilizador.
Erro de posição = σ_UERE × DOP para a solução de posição de mínimos quadrados do próprio motor modelled src/dop_error_mc.rs, tests/uere_dop_monte_carlo.rs: um Monte Carlo com seed (N = 20 000 épocas por geometria, σ = 1,5 m, seed ChaCha8 36 + i) de pvt::solve_spp com pesos unitários, resolvido a partir da posição verdadeira, nas 8 geometrias de tests/fixtures/dop/dop_reference.csv (aquelas cujo DOP está ajustado ao gnss_lib_py), face a σ²·Q, em que Q é o fator de covariância do próprio núcleo orbit::dop (orbit::dop_cofactor, a mesma aritmética). Tolerâncias pré-registadas (commit e50c88d2, antes da primeira execução, segundo a nota de projeto de geometria 0,36, secção 5,2), cada uma um número de erros padrão: variâncias este, norte, vertical e de relógio dentro de 5 %; RMS H/V/P dentro de 2,5 %; correlação este-norte dentro de 0,035; médias dentro de 5 erros padrão; a fração de 95 % da elipse horizontal dentro de 0,95 ± 0,0077. Primeira execução: todas as 104 verificações passam (pior variância 3,2 %, RMS 1,6 %, correlação 0,012, média 2,2 erros padrão, elipse 0,0039). Os controlos negativos falham como exigido: um PDOP duplicado falha em todas as geometrias; erros a crescer como 1/sin(elevação) face ao Q não ponderado falham uma verificação de variância em todas as geometrias cujo satélite mais baixo está abaixo de 20°. Como se compõe com a linha acima: essa linha valida o DOP destas geometrias face ao gnss_lib_py; esta acrescenta o passo desses fatores até metros através do solucionador do motor. Mantém-se ao lado uma primeira verificação, separada (src/dop_error_ci.rs, tests/position_error_dop_ci.rs, executada antes do pré-registo e comunicada como tal): quatro céus escolhidos à mão (aberto, agrupado, desfiladeiro, meio céu; σ 1 m) com intervalos de confiança de qui-quadrado a 1e-6 no total sobre 20 verificações; razões 0,987 a 1,009, e os seus próprios controlos negativos (um erro de 10 % no DOP, erros de 1/sin(elevação)) falham como exigido. Porque é MODELLED: nenhum conjunto de dados externo; não mostra que o erro de um recetor real segue o modelo, e σ_UERE é uma entrada.
Disponibilidade multiconstelação validated src/orbit.rs: os [[constellations]] adicionais são fundidos num único conjunto de satélites para visibilidade/DOP; um teste de contagem combinada confirma a união.
Ionosfera de difusão (Klobuchar, IS-GPS-200 (IS: Interface Specification)) → atraso oblíquo em L1 validated src/gnss_sim.rs: klobuchar_delay_m, o modelo de frequência única difundido de oito coeficientes. Referência independente externa (tests/klobuchar_reference.rs): o atraso oblíquo em L1 reproduz o ionmodel do RTKLIB (uma biblioteca de código aberto de posicionamento cinemático em tempo real) (tomojitakasu/RTKLIB, src/rtkcmn.c — a referência GNSS aberta de facto, compilada a partir do código-fonte e executada de forma independente) em 10 casos que abrangem elevação, azimute, hora local e dois conjuntos de coeficientes (o predefinido do kshana + o do RTKLIB), até < 1e-4 m. O leitor de mapas de TEC (TEC: conteúdo total de eletrões) IONEX (IONosphere map EXchange format) para ficheiros GIM (mapa global da ionosfera) existe agora (src/ionex.rs, parse_ionex com interpolação espacial bilinear e temporal e um mapeamento oblíquo, testado unitariamente na própria crate); uma verificação cruzada dessa interpolação face a um produto GIM real do CODE (Center for Orbit Determination in Europe) continua a ser um seguimento. O próprio modelo de difusão é validado externamente.
Núcleo de deteção RAIM/ARAIM (ARAIM: monitorização autónoma avançada da integridade pelo recetor) (χ² / χ² não central / normal) → limiares e multiplicadores validated src/raim.rs: o limiar de deteção de snapshot / separação de soluções / ARAIM (chi2_quantile), a não centralidade de falha de deteção pbias=√λ (noncentral_chi2_cdf) e os multiplicadores K_fa/K_md/K_V (normal_quantile) são todos avaliados a partir de uma função gama incompleta regularizada sem dependências. Referência independente externa (tests/raim_reference.rs): 171 casos reproduzem o SciPy 1.17.0 (scipy.stats.chi2/.ncx2/.norm + optimize.brentq — uma implementação independente Cephes/Boost, um algoritmo diferente) ao longo das gamas de funcionamento de P_fa / P_md / redundância, até ≤ 1e-6 relativo. A geometria que envolve o núcleo (o declive/covariância de (GᵀG)⁻¹) é o núcleo DOP validado pelo gnss_lib_py. Âmbito: esta linha fixa o núcleo estatístico. O valor do nível de proteção da atribuição MHSS (separação de soluções de hipóteses múltiplas) do ARAIM é fixado em separado face ao exemplo trabalhado publicado pelo Subgrupo Técnico ARAIM do WG-C (Working Group C) (tests/araim_reference_vectors.rs, VPL (nível de proteção vertical) 18,2926 m contra 18,3 m, HPL (nível de proteção horizontal) 13,4063 m contra 13,45 m, dentro da própria tolerância de 0,05 m da referência; ver a nota sobre normas abaixo e ARAIM_REFERENCE.md).
Nível de proteção SBAS (sistema de aumentação baseado em satélites) (DO-229E Apêndice J) → nível de proteção horizontal / vertical (HPL / VPL) validated src/sbas.rs: sbas_protection_level, o D=(GᵀWG)⁻¹ de mínimos quadrados (LS) ponderados → eixo maior da elipse de erro horizontal + σ vertical, escalados pelos fatores K do DO-229E. Referência independente externa (tests/sbas_reference.rs): o HPL do kshana reproduz o fork SBAS-PL do RTKLIB (zsiki/rtklib_ws waasprotlevels(), a implementação "DO-229D Appendix J" de Siki & Takács 2017), executado por rnx2rtkp -ws em dados reais do EGNOS (European Geostationary Navigation Overlay Service) (mensagens de difusão do GEO (órbita geoestacionária) PRN120 + RINEX (Receiver Independent Exchange Format) real de BUTE/Budapeste, 2017-02-19), em 6 épocas até < 2e-3 m. O σ por satélite é o orçamento SBAS completo da própria referência independente (UDRE (erro diferencial de distância do utilizador) + GIVE (erro vertical ionosférico de grelha) ionosfera + troposfera + aerotransportado). O ESA gLAB v6.0.0 (core/filter.c) foi compilado e confirmado como usando a convenção idêntica. Nota sobre K_V: ambas as referências independentes arredondam o K_V do MOPS (normas mínimas de desempenho operacional) → 5,33; o kshana usa o Φ⁻¹(1−5e-8)=5.3267 exato (VPL ~0,06 % menor), pelo que a vertical é validada como o d_U sem fator K (= VPL da referência independente / 5,33). O HPL é comparado diretamente (K_H = 6,0 em ambos os lados).
Geometria real da constelação a partir de TLE (linha 2 / kepleriana) validated (análise sintática) src/tle.rs: analisa os elementos keplerianos médios da linha 2 (semieixo maior a partir do movimento médio); um conjunto de elementos conhecido da ISS (International Space Station) faz ida e volta para os elementos e o período corretos. Para um bloco apenas de linha 2, a propagação é a de dois corpos do motor (+ J2 opcional) dos elementos médios — sólida para um instantâneo de uma época comum, derivando do SGP4 (Simplified General Perturbations 4) com o tempo.
Propagação SGP4 / SDP4 (Simplified Deep-space Perturbations 4) (TLE completos) validated src/sgp4.rs: SGP4 completo para perto da Terra + SDP4 para espaço profundo (secular/periódico lunisolar + ressonância do geopotencial de 12 h / 24 h). Validado em tests/sgp4_verification.rs face aos vetores oficiais AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 ("Revisiting Spacetrack Report #3") — todos os 666 estados de referência (perto da Terra, espaço profundo, ressonantes, casos de código de erro) coincidem até um erro de posição no pior caso de ≈ 4,1 mm. Um conjunto completo de duas linhas (linha 1 + linha 2) é propagado com o SGP4; só a linha 2 permanece kepleriana; os dois podem ser misturados. O referencial é o TEME (equador verdadeiro, equinócio médio), usado de forma consistente para o utilizador e os satélites (sem redução TEME→ECEF (ECEF: centrado na Terra e fixo à Terra) — adequado para a geometria de disponibilidade/DOP).
Nutação IAU (International Astronomical Union) 2000A / 2000B + redução TEME→GCRS (GCRS: Geocentric Celestial Reference System) validated src/nutation.rs: a série completa IAU 2000A (678 termos lunissolares + 687 planetários, nutation_iau2000a) e o truncamento de 77 termos 2000B (nutation_iau2000b) são cada um validados bit a bit face aos vetores de referência SOFA/ERFA (SOFA: Standards of Fundamental Astronomy) publicados em JD_TT 2453736,5 — eraNut00a dá Δψ = −0.9630909107115518e-5, Δε = 0.4063239174001679e-4; eraNut00b dá Δψ = −0.9632552291148363e-5, Δε = 0.4063197106621160e-4 — ambos até 1e-13 rad. A tabela 2000A é gerada por máquina a partir da fonte ERFA nut00a por tools/gen_nut00a.py (reproduz o nutation_iau2000a_data.rs incluído bit a bit). A matriz de nutação (iauNumat), a equação dos equinócios e a cadeia completa TEME→TOD→MOD→GCRS (TOD: verdadeiro da data; MOD: médio da data) (teme_to_gcrs, Vallado AIAA-2006-6980) são testadas quanto a propriedades de rotação própria/ida e volta/precessão mais nutação, a matriz de nutação face ao ERFA numat elemento a elemento até 1e-14, e toda a cadeia TEME→GCRS face ao exemplo TEME→GCRF publicado de Vallado (AIAA 2006-6753, 2004-04-06) até 0,11 m (tests/frame_reference_vectors.rs); até essa verificação de ponta a ponta ser acrescentada, a matriz de nutação trazia Δψ com o sinal errado, uma rotação de 2·Δψ (cerca de 25″) que os testes de propriedades não conseguiam ver (ver CHANGELOG, Unreleased, Fixed); 2000A face a 2000B concordam a < 1 mas, como exigido. A cadeia baseia-se em equinócio/GMST (GMST: tempo sideral médio de Greenwich); a redução CIO (X,Y,s) sem equinócio e a sua verificação cruzada numérica independente ANISE/SPICE (ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris — um kit de ferramentas de geometria planetária em Rust puro; SPICE: Spacecraft, Planet, Instrument, C-matrix, Events) (≤ 3,6 m em órbita GNSS, bem dentro do alvo de < 10 m) estão na linha CIO abaixo.
Modelo geomagnético do campo principal IGRF-14 (IGRF: International Geomagnetic Reference Field) validated src/igrf.rs: o campo em harmónicos esféricos normalizados de Schmidt da IAGA (International Association of Geomagnetism and Aeronomy) (grau/ordem 13, 2025,0 + variação secular; coeficientes gerados por máquina a partir do igrf14coeffs.txt oficial por tools/gen_igrf.py, reproduzindo igrf_data.rs bit a bit). Validado em cinco frentes independentes: (1) verificações pontuais exatas de coeficientes face ao ficheiro da IAGA (g₁⁰=−29350,0, g₁¹=−1410,3, h₁¹=4545,5 nT); (2) a síntese de grau 1 reproduz o campo de dipolo inclinado em forma fechada exata (B_r,B_θ,B_φ) até 1e-6; (3) o campo analítico completo de grau 13 é igual a −∇V do potencial escalar (diferenças finitas, até 1e-4) — exercitando as derivadas de Legendre e o termo 1/sinθ de ponta a ponta; (4) o eixo do dipolo reproduz o polo norte geomagnético conhecido (~80,7°N, −72,7°E) e a intensidade do dipolo (~29,7 µT), e o campo global situa-se na banda física de 22–67 µT com o sinal de inclinação correto por hemisfério; e (5) referência independente externa — a síntese completa reproduz os valores do serviço web IGRF-14 do British Geological Survey em 2025,0 (altitude geodésica, WGS-84 (WGS: World Geodetic System)) até < 2 nT em X/Y/Z/F e < 0.02° em D/I em quatro pontos, incluindo 400 km de altitude (synthesis_matches_the_official_bgs_igrf14_values_at_2025).
Redução GCRS↔ITRS (ITRS: International Terrestrial Reference System) IAU 2006/2000A baseada em CIO validated src/cio.rs: a cadeia celeste-para-terrestre sem equinócio. As coordenadas do CIP (Celestial Intermediate Pole) (X, Y) e a série de 66 termos do localizador do CIO s são validadas bit a bit face ao vetor SOFA/ERFA eraXys06a publicado em JD_TT 2453736,5 — X=0.5791308482835292617e-3 (1e-14), Y=0.4020580099454020310e-4 (1e-15), s=-0.1220032294164579896e-7 (1e-18); a matriz GCRS→CIRS (CIRS: Celestial Intermediate Reference System) face a eraC2ixys (todos os nove elementos até 1e-12); o ângulo de rotação da Terra (ERA) face a eraEra00(2400000.5, 54388.0) = 0,4022837240028158102 (1e-12). A tabela s é gerada por máquina a partir da referência ERFA s06.c por tools/gen_s06.py (reproduz cio_s06_data.rs bit a bit). A gcrs_to_itrs_matrix completa (CIO eraC2tcio = movimento polar · ERA · GCRS→CIRS) é testada quanto a rotação própria + ida e volta, e mostra-se consistente com a redução TEME herdada baseada em equinócio/GMST-1982 dentro de 1 m a um raio de 7 000 km (as convenções diferem cerca de 5 cm aí). Verificação cruzada independente de terceiros (xval/anise-frames/): a mesma gcrs_to_itrs_matrix é comparada com o ANISE (a reimplementação em Rust puro do NAIF/SPICE (NAIF: Navigation and Ancillary Information Facility)) ao rodar GCRF→ITRF93 (GCRF: Geocentric Celestial Reference Frame; ITRF93: International Terrestrial Reference Frame 1993) a partir do earth_latest_high_prec.bpc do JPL (Jet Propulsion Laboratory), com parâmetros de orientação da Terra finals2000A do IERS (International Earth Rotation and Reference Systems Service) idênticos fornecidos a ambos os lados, ao longo de oito épocas trimestrais 2020–2023. As duas realizações independentes do referencial concordam até uma rotação relativa máxima de 0,028″ — ≤ 0,86 m no solo, ≤ 0,93 m em LEO (órbita terrestre baixa), ≤ 3,6 m em órbita GNSS (ângulo médio 0,023″). Esta é a verificação cruzada de referenciais de "< 10 m" do ROADMAP, concretizada; o resíduo é a diferença esperada de modelo/datum entre ITRF93 e IERS-2010-CIO, não um defeito (a âncora bit a bit continua a ser os vetores SOFA/ERFA acima). O ANISE é uma crate MPL-2.0 (MPL: Mozilla Public License) / edição 2024, pelo que a verificação reside numa sub-crate autónoma, excluída do workspace, que nunca toca no grafo de dependências publicado do kshana nem em qualquer gate de CI predefinido.
Ida e volta de exportação SP3 (Standard Product 3, o formato de órbita precisa) (constelação → SP3-c → reanálise) validated tests/sp3_export_roundtrip.rs: o instantâneo real do Celestrak gps-ops (30 satélites GPS) é propagado com o SGP4, exportado para SP3-c (Sp3File::from_propagators → to_sp3_string), reanalisado (parse_sp3), e as posições ECEF recuperadas são comparadas com a referência SGP4 em cada época ao longo de 24 h — pior resíduo < 0,5 m (a serialização milimétrica do escritor; a tolerância de 10 m de grau TLE (TLE: conjunto de elementos de duas linhas) do marco é satisfeita com grande margem). O caminho --export-sp3 da CLI (command-line interface) também é coberto: o cenário de órbita incluído exporta um SP3 reanalisável de 30 satélites, e um cenário que não é de órbita é rejeitado.
Geometria real da constelação GPS a partir de TLE (SGP4 → ECEF) validated tests/igs_real_data.rs: um instantâneo genuíno do Celestrak gps-ops (2021-07-28, 30 satélites GPS operacionais; proveniência em tests/fixtures/celestrak/NOTICE) é analisado e cada satélite propagado através do núcleo SGP4 validado até um instante comum, rodado de TEME para ECEF. Afirma que a constelação completa assenta na camada MEO (órbita terrestre média) do GPS dentro de 1%, e que, a partir de um local de latitude média com céu aberto, o todos-à-vista real (nove satélites) produz PDOP 1,64 com a diluição vertical a exceder a horizontal (como tem de acontecer para um utilizador em terra). Isto exercita o SGP4 numa constelação real, a par dos caminhos de dados reais SP3 (precisos) e RINEX (de difusão).
Gerador Walker de elementos médios SGP4 validated src/walker.rs: um padrão Walker-delta projetado é emitido como elementos médios SGP4 (movimento médio de Kozai escolhido de modo que o semieixo maior do SGP4 caia na camada alvo) e propagado através do núcleo validado. Testes: um Walker de 24 satélites do tipo GPS situa-se na camada MEO dentro de 1%, os planos estão espaçados exatamente 90° em RAAN (ascensão reta do nó ascendente) recuperada das normais das órbitas, e o movimento médio reproduz o período da camada GPS de ~718 min.
Varrimento de PDOP da constelação + FoM (figuras de mérito) de cobertura/revisita validated (monotonia) src/walker.rs: pdop_sweep tabela a cobertura e o PDOP mediano/pior sobre uma grelha {planes × sats × inclination}; coverage_revisit comunica a fração de cobertura e as lacunas de revisita num ponto do solo. Validado pelas monotonicidades físicas a que um compromisso de projeto tem de obedecer: acrescentar satélites nunca baixa a cobertura e baixa estritamente o PDOP mediano (um projeto completo de 24 satélites cobre continuamente com PDOP ~1,7), e densificar uma constelação reduzida diminui estritamente a pior lacuna de revisita. A lacuna média de revisita nunca excede a máxima. Estas são tabelas de compromisso geométrico, não um orçamento certificado de ligação/cobertura.

Enquadramento honesto: esta é uma camada de geometria determinística (órbitas circulares, Terra esférica de raio médio 6371 km, linha de vista pura). Estabelece a disponibilidade e a exatidão de posição geométrica (diluição da precisão × um orçamento representativo de erro de distância) a partir de geometria real, não uma solução de navegação de efemérides precisas. A referência orbit-gnss-challenged.toml coloca uma nave espacial dentro da camada GNSS: mantém uma solução de posição apenas ~59% do dia, o relógio quântico mantém uma solução de temporização de 5 ns em todas as lacunas (disponibilidade 1,0) enquanto o relógio à escala de chip mantém ~0,73.

Propagador numérico (Cowell) e modelo de forças#

O propagador numérico (src/propagator.rs) integra um modelo hierárquico de forças (src/forces.rs) com os integradores adaptativos (src/integrator.rs). Cada termo abaixo é validado face à verdade analítica ou a uma forma fechada derivada à mão; as perturbações estão desativadas por predefinição, pelo que os goldens publicados não são tocados. O modelo composto é também verificado de forma cruzada com outra ferramenta: tests/numerical_cowell_propagator_reference.rs executa 11 casos LEO e GTO (órbita de transferência geoestacionária), 275 épocas horárias, face ao propagador DormandPrince853 do Orekit 12,2, e os níveis conservativos (dois corpos → J2–J6 → Sol/Lua → SRP de bola de canhão) concordam até um pior de 0,08 m ao longo de 24 h (VALIDATED na matriz); o nível de arrasto é apenas caracterizado (333 m) e continua MODELLED.

Termo Estado Evidências
Propagador de Cowell face à verdade kepleriana analítica validated src/propagator.rs: a órbita não perturbada (dois corpos) reproduz a solução de Kepler exata por variáveis universais a menos de um metro ao longo de uma órbita LEO de 24 h (um gate mais apertado do que "face a uma referência numérica < 10 m"); a energia específica e o momento angular conservam-se até ~1e-9 relativo; a regressão nodal por J2 reproduz o j2_secular_rates em forma fechada segundo a teoria de primeira ordem (dentro de 2 %, o resíduo O(J2²)). solve_kepler_checked devolve Err em vez de uma resposta silenciosamente errada quando o método de Newton não converge (perto do perigeu e = 0,999). O solve_kepler_robust robusto (arranque de Markley 1995, src/kepler.rs) converge aí e em 0 ≤ e ≤ 0,999999, dentro de 0,9 ε·|E| das raízes de mpmath de 50 dígitos (tests/kepler_mpmath_oracle.rs).
Integradores adaptativos (RK4 (Runge–Kutta de quarta ordem) com duplicação de passo + o par embutido Dormand–Prince RK5(4), DP5(4) abaixo) validated src/integrator.rs: o RK4 integra y' = y → e até < 1e-9, mostra a descida de erro de ~16× por passo reduzido a metade (convergência de 4.ª ordem), e conserva o oscilador harmónico ao longo de um período. A estimativa de erro embutida do DP5(4) é O(h⁵) (reduzir o passo a metade corta-a ~32×), integra o oscilador ao longo de 50 períodos conservando a energia até < 1e-6, e atinge o mesmo ponto final com a mesma tolerância em menos avaliações de função do que a duplicação de passo; propagate_dopri satisfaz o mesmo gate de Kepler a menos de um metro e concorda com o caminho RK4 a < 1 m numa órbita J2..J6. DOP853 (integrate_dop853): o par 8(5 3) de Hairer com saída densa reproduz o DOP853 do SciPy 1.18.1 passo a passo (passo único dentro de 5.6e-15; contagens de passos idênticas nas execuções e = 0,7 e Arenstorf, uma inversão de aceitação/rejeição em 501 passos na execução LEO; estados finais dentro de 1.6e-12) e coincide com a solução de Kepler exata tão de perto como o SciPy (tests/dop853_scipy_oracle.rs).
Campo de harmónicos zonais J2–J6 validated src/forces.rs: zonal_accel é verificado de três formas — reduz-se ao j2_accel validado com 666 vetores até à precisão de máquina quando restrito a [J2]; coincide com o gradiente numérico do seu próprio potencial zonal ao longo de todo o campo J2..J6 (o padrão de referência dos campos conservativos); e os termos ímpares J3 contra os pares J2/J4..J6 mostram a (anti)simetria norte–sul característica sob z → −z. Uma órbita J2..J6 propagada conserva a energia total até ~1e-8 ao longo de um dia.
Gravidade de terceiros corpos (Sol e Lua) validated src/forces.rs + src/ephem.rs: third_body_accel coincide com o gradiente exato do seu potencial perturbador, anula-se no geocentro e atinge as magnitudes de manual em LEO (~5e-7 m/s² Sol, ~1.1e-6 m/s² Lua). As efemérides solares de baixa precisão de Montenbruck–Gill atingem âncoras J2000 derivadas à mão (distância ao periélio ≈ 1.471e11 m, declinação no solstício de ~−23°, movimento de ~1°/dia); as efemérides lunares mantêm-se dentro do seu envelope de perigeu/apogeu, recuperam a distância média de ~384 400 km, nunca excedem a inclinação de 5,3° e regressam a menos de 1° após um mês sideral. A ligação do membro direito (RHS) dependente da época é exata ao bit (o termo RHS é igual a third_body_accel na posição amostrada em t = 0 e t = 1 dia), e um desvio de época de um quarto de ano produz uma trajetória diferente.
Pressão de radiação solar (SRP) + sombra cónica validated src/forces.rs: srp_accel (bola de canhão ν·P☉·cᵣ·(A/m)·(AU/d)²·d̂) é idêntica ao bit à forma fechada em pleno sol, fixa a pressão de radiação a 1 UA (UA: unidade astronómica) em ≈ 4.5398e-6 N/m², situa-se na banda LEO de ~1.36e-7 m/s² a empurrar para longe do Sol, divide-se por quatro quando a distância ao Sol duplica (inverso do quadrado), e é exatamente zero no interior da umbra. conical_shadow dá ν = 1 em pleno sol e ν = 0 em umbra total (exato), com uma penumbra suave e monótona a subir de 0 → 1 ao longo da banda [b−a, b+a] que se estende para além do cilindro umbral.
Resistência atmosférica (primeiro termo dependente da velocidade) validated src/forces.rs: atmospheric_density (Vallado Tabela 8-4, exponencial por troços) ancora-se em 1,225 kg/m³ ao nível do mar, satura abaixo da superfície, diminui monotonicamente ao longo da LEO, situa-se na banda de ~1e-12 kg/m³ a 400 km com uma escala de altura física recuperada de ~58 km; drag_accel opõe-se à velocidade relativa de co-rotação com a magnitude de ~2e-6 m/s² típica da LEO. A verificação característica: uma órbita de 300 km perde energia específica monotonicamente e o seu semieixo maior decai um valor limitado de ~km/dia, ao passo que a linha de base no vácuo conserva a energia a < 1e-9.
Correção relativista pós-newtoniana (Schwarzschild) validated src/forces.rs: relativistic_accel (forma a = (μ/c²r³)·{[4μ/r − v²]·r + 4(r·v)·v} do IERS com β = γ = 1) reduz-se, numa órbita circular, à forma fechada 3μ²/(c²r³)·r̂ (radial, para o exterior, componentes fora do eixo exatamente nulas), mostra a razão de manual de ≈1.9e-9 em LEO face ao problema de dois corpos, coincide com a forma simplificada à mão em função da velocidade radial μ(4μ + 3v²r)/(c²r³) a < 1e-12 e, no propagador, perturba a órbita mantendo o semieixo maior abaixo de um metro/dia — o oposto conservativo do decaimento por resistência atmosférica.

Âmbito honesto: as predefinições de ForceModel publicadas integram o campo zonal. O campo tesseral EGM2008 de grau elevado (src/gravity_sh.rs, grau/ordem 70), as marés sólidas/oceânicas/atmosféricas (src/tides.rs) e o termo de arrastamento de referencial de Lense–Thirring estão agora implementados e integrados no modelo de forças preciso de ajuste de efemérides (src/precise_od.rs — ver abaixo). O campo tesseral é também um termo opcional do ForceModel de Cowell (propagator::Geopotential, desativado por predefinição), validado face ao HolmesFeatherstoneAttractionModel do Orekit 12,2 até ao grau/ordem 70 (6 casos ao longo de 24 h, pior |Δr| de 0,036 m; tests/cowell_tesseral_orekit_oracle.rs). Existem dois avaliadores do campo: o histórico acceleration (derivadas parciais esféricas; válido até ao grau ~180 longe dos polos; saídas fixadas) e acceleration_hf (coluna progressiva modificada de Holmes–Featherstone 2002, gradiente sem 1/cos φ; válido até ao grau 2190 em todas as latitudes). O EGM2008 até 2190 é carregado em tempo de execução (from_gfc_file, scripts/fetch_egm2008.sh, não incluído). acceleration_hf concorda com o Orekit 12,2 a 7.3e-17 m/s² em oito pontos até ao grau 2190; permanece MODELLED porque o pyshtools não atingiu o limiar fixado antecipadamente junto aos polos (uma verificação com mpmath situa o erro no pyshtools; xval/high-degree-gravity/). Uma órbita de 200×200 durante 24 h concorda com o Orekit a 0,13 m, mas o seu controlo de sensibilidade ao grau 70, fixado antecipadamente, falhou (0,73 m < 1 m); assim, os graus 71–200 são caracterizados, e não validados, em órbita (xval/cowell-tesseral-200-orekit/). A densidade termosférica NRLMSISE-00 (NRLMSISE: modelo de atmosfera Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar Extended) está portada (src/nrlmsise00.rs: bit a bit idêntica à portagem em C de domínio público em 720 pontos, a menos de 1.9e-6 relativo face ao pymsis, com os 17 casos de teste publicados reproduzidos; tests/nrlmsise00_reference.rs) e é um nível opcional de densidade de resistência atmosférica (forces::DensityModel, ForceModel::drag_density; a predefinição continua a ser o modelo estático de Vallado). Isto valida a portagem, não a exatidão do modelo face à densidade medida. O Sol e a Lua DE440 (DE: Development Ephemeris) são um nível opcional de efemérides (ForceModel::with_ephemeris). A sombra de PSR (pressão de radiação solar) para a Terra oblata WGS-84 é opcional (ForceModel::srp_shadow), concordando com a razão de iluminação do Orekit 12,2 a menos de 7.4e-9 em 2400 geometrias (tests/srp_oblate_shadow_orekit_oracle.rs); a sua variante com escurecimento do limbo não tem referência independente externa (MODELLED). O nível de resistência atmosférica NRLMSISE-00 concorda com a resistência NRLMSISE-00 do próprio Orekit 12,2 ao longo de 24 h a 0,03 m, para um deslocamento por resistência de até 142 km (tests/drag_tier_orekit_oracle.rs, VALIDATED sob as convenções partilhadas). Uma verificação cruzada com o GMAT (General Mission Analysis Tool) continua a ser um trabalho posterior.

Marés no geopotencial (src/tides.rs)#

Correções variáveis no tempo ΔC̄_nm, ΔS̄_nm aos coeficientes de Stokes (IERS Conventions 2010, Capítulo 6), validadas face aos números publicados pelas próprias convenções — e não face a outra ferramenta.

Contribuição Estado Evidências
Maré da Terra sólida (IERS Eq. 6,6 / 6.8b / 6,14) validated tests/tides_iers.rs: a maré permanente (de frequência zero) ΔC̄₂₀ fica a menos de 1 % do valor publicado pelo IERS, −4,1736×10⁻⁹ (números de Love anelásticos); o exemplo trabalhado K1 do passo 2 é reproduzido bit a bit (amplitudes sin/cos 470,9 / −30,2 ×10⁻¹² a 0,1×10⁻¹²); o percurso de Legendre normalizado é fixado por valores manuais de forma fechada, independentes da recorrência.
Maré oceânica (IERS Eq. 6,15, FES2004 (atlas de marés Finite Element Solution 2004), 8 constituintes) validated O subconjunto FES2004 incorporado (tools/gen_fes2004.py → src/fes2004_data.rs, leitura de Doodson→multiplicador) reproduz exatamente os coeficientes M2 (2 2) de origem; a fase de Doodson de K1 é igual a θ_g + π; a magnitude setorial de grau 2 é física e uma ordem de grandeza abaixo da maré sólida.
Maré atmosférica S2 (Ray 2001, NASA (National Aeronautics and Space Administration) GSFC (Goddard Space Flight Center)) validated Os harmónicos de Ray incorporados convertem-se, através da relação de carga à superfície (Eq. 6,21), num pico de ΔC̄₂₂ ≈ 4×10⁻¹¹ (~10 % do termo M2 oceânico). Ressalva honesta: não existe nenhuma referência independente publicada de coeficientes do geopotencial para a maré atmosférica, pelo que é validada por integridade da fonte e por magnitude, um limiar mais fraco do que o das marés sólida/oceânica.

Manobras e projeto de trajetórias (src/maneuver.rs)#

Aspeto Estado Evidências
ΔV impulsivo + propagação da covariância validated Uma descontinuidade de velocidade com uma covariância de 6×6 propagada (queima determinística ⇒ STM (matriz de transição de estado) identidade; a covariância do erro de execução roda desde o referencial da queima — ECI (inercial centrado na Terra) ou LVLH (vertical local, horizontal local) — para o bloco da velocidade).
Integração de queima finita vs Tsiolkovsky validated Integração a tração constante ao longo de um arco de queima (massa como estado) cujo ΔV alcançado coincide com a equação de foguetão de Tsiolkovsky em forma fechada a melhor do que 0,01 %.
Ida e volta do solucionador de Lambert (Izzo 2015) validated A saída de Lambert de uma só revolução (r1, r2, tempo de voo ⇒ v1, v2) é feita em ida e volta através do propagador de Kepler de variáveis universais exato — tem de voltar a cair em r2.
Varrimento porkchop vs piso de Hohmann validated O mínimo da grelha lançamento × chegada de C3 / V∞ de chegada é verificado face ao piso analítico de C3 da transferência de Hohmann para duas órbitas circulares coplanares.
Solucionador de Lambert vs uma biblioteca independente validated tests/lambert_reference.rs: 13 transferências de uma só revolução, de LEO a GEO e a heliocêntrica, progradas e retrógradas, face ao lamberthub 1.0.0 izzo2015; pior diferença de velocidade na fronteira de 7e-12 m/s.

Âmbito honesto: sem otimizador de trajetórias, sem ramos de Lambert de várias revoluções e com um modelo heliocêntrico sintético circular coplanar (sem efemérides planetárias DE, pelo que não foi executada uma verificação cruzada de C3 Terra–Marte com o GMAT).

Determinação de órbita (OD) (src/orbit_determination.rs, src/batch_ls.rs)#

Aspeto Estado Evidências
Corretor em lote de Gauss–Newton validated O solucionador genérico gauss_newton atinge a solução exata de mínimos quadrados ponderados num ajuste linear, recupera os parâmetros verdadeiros num ajuste não linear a·exp(b·t) e resolve uma multilateração de distâncias 3-D a partir de distâncias sem ruído.
Determinação de órbita em lote a partir de distâncias validated determine_orbit_batch recupera [r, v] a partir do seguimento de distâncias por estação terrestre (propagado com o modelo de forças de dois corpos + J2) com exatidão sub-métrica / mm·s⁻¹ a partir de distâncias sem ruído e com ~2 m e um resíduo pós-ajuste no piso de ruído de 5 m — a assinatura de um ajuste de mínimos quadrados consistente.
OD sequencial (filtro unscented) validated determine_orbit_sequential recupera recursivamente o estado a menos de dezenas de metros com a mesma dinâmica e o mesmo modelo de distâncias.
OD em lote e sequencial vs um estimador independente validated tests/batch_sequential_orbit_determination_reference.rs: 8 cenários (6 sem ruído em LEO/MEO/excêntrica com 3–4 estações, 2 com σ = 5 m) face aos estimadores de mínimos quadrados em lote e de Kalman do Orekit 12,2 com um modelo de forças equivalente; pior caso em lote 1e-3 m / 1e-6 m/s, sequencial 0,9 m.

| OD em lote de taxa de variação da distância / az-el com máscara de elevação | modelled (comparação externa, um limiar fixado antecipadamente não foi atingido) | tests/od_tracking_measurements_reference.rs: 8 cenários face aos mínimos quadrados em lote do Orekit 12,2 com medições geométricas instantâneas personalizadas; conjuntos visíveis idênticos, valores de medição a menos de 5.8e-8 m / 6.3e-10 m/s / 1.4e-13 rad, matriz de transição de estado a menos de 1.2e-14, estados com ruído a menos de 1,74 cm e RMS por tipo a menos de 2.7e-4; o limiar de estado sem ruído ≤ 1 cm, fixado antecipadamente, não é atingido em 2 de 4 cenários (1,46 e 1,74 cm; a própria estimativa do Orekit fica a essa distância da sua verdade simulada, a do kshana a menos de 1e-8 m). Ver xval/od-measurements-orekit/RESULTS.md. |

Âmbito honesto: a OD didática usa estações inerciais fixas, um referencial topocêntrico de Terra esférica e medições geométricas instantâneas (sem tempo de luz, aberração, refração ou rotação da Terra); a matriz de transição de estado do percurso de taxa de variação da distância/ângulos é variacional (integrada por RK4 com derivadas parciais analíticas de dois corpos + J2), não de forma fechada; não existe filtro sequencial para taxa de variação da distância ou ângulos. O percurso só com distâncias mantém o seu jacobiano por diferenças finitas. (O motor de ajuste de efemérides de força total abaixo tem a sua própria matriz de transição de estado variacional.)

Validação do modelo de forças por ajuste de efemérides (src/precise_od.rs)#

Um estimador preciso de mínimos quadrados em lote de observações de posição com força total: o geopotencial tesseral EGM2008 (avaliado no referencial fixo à Terra através da redução CIO) composto com o terceiro corpo Sol/Lua, PSR, resistência atmosférica, RG (relatividade geral) de Schwarzschild/Lense–Thirring e as marés acima, ajustado a um conjunto de posições inerciais com um jacobiano de matriz de transição de estado variacional. Validado com dados sintéticos, em que a verdade é o próprio integrador do Kshana, pelo que cada resíduo é do estimador e não da dinâmica.

Aspeto Estado Evidências
Composição precisa do modelo de forças validated tests/precise_od_synth.rs: o campo de grau 0 é exatamente a massa pontual em todas as épocas (o termo central é invariante à rotação); o grau 8 acrescenta o achatamento da banda J2; o terceiro corpo Sol e o termo de marés ligam-se com fidelidade bit a bit; uma aceleração empírica radial constante é puramente radial em RTN (radial, transversal, normal).
Matriz de transição de estado variacional validated Cada coluna de Φ ao longo de meia órbita LEO (geopotencial de grau 8 + Sol + Lua) concorda com uma repropagação independente por diferenças finitas (FD) centrais em todo o arco a < 1×10⁻⁶ relativo na resposta de posição e de velocidade — a verificação cruzada STM↔FD documentada. Φ(0) = I; os propagadores aumentado e simples concordam a menos de um milímetro.
Autorrecuperação do ajuste LS em lote validated Um arco Kshana de 1 hora (grau 6 + Sol + Lua) observado sem ruído é recuperado, a partir de um desvio de 150 m / 0,1 m·s⁻¹, para o estado de época a menos de 1×10⁻² m com RMS pós-ajuste quase nulo; com ruído branco de 5 m, o RMS 3-D pós-ajuste estabiliza no piso de ruído de ~σ, sem enviesamento. O C_R da PSR é recuperado de 1,0 a menos de 1 % da verdade de 1,4.
Edição de valores atípicos e relatório RTN validated Um erro grosseiro de 500 m é rejeitado pela edição pós-ajuste a 5 σ (exatamente uma observação), deixando um ajuste limpo ao nível do milímetro; os resíduos são apresentados decompostos em radial/transversal/normal, além de 3-D.
Nível de aceleração empírica (constante RTN + 1-CPR (CPR: ciclo por revolução)) validated Os nove parâmetros empíricos com restrição a priori mantêm-se abaixo de 1×10⁻⁸ m·s⁻² numa verdade sem componente empírica, sem perturbar o ajuste; uma aceleração constante transversal à trajetória de 3×10⁻⁸ m·s⁻² injetada na verdade é recuperada a menos de 20 %.

Âmbito honesto: a onda sintética usa parâmetros nominais de orientação da Terra (EOP: UT1 (Tempo Universal 1, tempo de rotação da Terra) ≈ TT (Tempo Terrestre), sem movimento polar) — exatos para a autorrecuperação, uma vez que o mesmo modelo gera e ajusta o arco. As validações com conjuntos de dados de agências sobrepõem EOP finals2000A reais e verdade SP3/SPK (SPK: núcleo de efemérides planetárias) a este motor através da cadeia de referenciais CIO (src/eop.rs, tests/agency_galileo.rs, tests/agency_swarm.rs, tests/agency_lro.rs).

Órbitas precisas reais de agências (tests/agency_galileo.rs, tests/agency_swarm.rs, tests/agency_lro.rs)#

Conjunto de dados Estado Evidências
Galileo MEO — < 5 m GREEN validated Motor de força total do Kshana ajustado a uma fatia textual da própria órbita final da ESA/ESOC (ESOC: European Space Operations Centre) (ESA0MGNFIN, ITRF (International Terrestrial Reference Frame)) para o Galileo E11 ao longo de 8 h, com cada posição ITRF rodada para GCRS com EOP finals2000A reais: RMS 3-D pós-ajuste de 0,133 m com força pura + C_R (RTN 0.105/0.067/0.047 m, C_R 1,174), 0,070 m com o nível empírico, a partir de uma sobreposição bruta de 78,7 km. O arco completo de 24 h dá 0,611 m. Tudo bem dentro do limiar de 5 m. Campo gravítico convergido por d/o-8 (idêntico a d/o 8/10/12); o trabalho workflow_dispatch executa o d/o-70 completo. Proveniência + SHA-256 (SHA: Secure Hash Algorithm) em tests/fixtures/agency/NOTICE.md; registo completo em docs/AGENCY-ORBIT-VALIDATION.md.
Swarm-A LEO — < 5 m GREEN validated Motor de força total (+ resistência atmosférica) ajustado a uma fatia textual da própria órbita precisa de dinâmica reduzida Swarm-A da ESA (SW_OPER_SP3ACOM_2_, L47, ITRF, ~430 km, ~2 cm) ao longo de 3 h a d/o-70, com EOP finals2000A reais através da cadeia CIO: nível dinâmico (só estado, densidade estática, C_R=1) com RMS 3-D pós-ajuste de 2,687 m (RTN 0.925/2.522/0.045 m — resíduo ≈ pura resistência atmosférica ao longo da trajetória), nível de dinâmica reduzida (+ acelerações empíricas CPR) 0,098 m (RTN 0.026/0.092/0.025 m) — ~10 cm face à órbita de ~2 cm da ESA. Proveniência + SHA-256 em tests/fixtures/agency/NOTICE.md; registo completo em docs/AGENCY-ORBIT-VALIDATION.md.
LRO (Lunar Reconnaissance Orbiter) lunar — validado, acima de 5 m (com honestidade) validated Ajuste de modelo de forças centrado na Lua (src/lunar_od.rs): o campo gravítico GRGM660PRIM do GRAIL (d/o 100) no referencial lunar de eixos principais fixo ao corpo (src/lunar_frame.rs, IAU 2015 Terra média + o desvio fixo DE421 (Development Ephemeris 421) Terra média → eixos principais (ME→PA), aplicado como o SPICE o define desde 0,36: até então era aplicado no sentido errado, com cerca de 208″ de erro) + terceiro corpo Terra/Sol, ajustado através do mesmo estimador genérico de Gauss–Newton dos conjuntos de dados da Terra à órbita reconstruída real do JPL Horizons LRO (NAIF −85), 4 h / 241 épocas, ~98 km. Pós-ajuste honesto (0,36): dinâmico 12,05 m (RTN 2.91/10.11/5.88), de dinâmica reduzida 6,67 m (RTN 3.41/4.58/3.44, empírico de 1+2 por revolução), a partir de uma sobreposição bruta de 39,9 m (antes da correção ME→PA: 12,6 m, 6,65 m, 53,8 m) — acima do limiar de < 5 m, sem que a causa seja o estimador (idêntico a d/o 100/150 e atol 1e-6/1e-9). Uma validação cruzada de nível DE (xval/anise-lunar-od: orientação PA lunar DE440 (Development Ephemeris 440) + efemérides DE440 através do ANISE) corrigiu a afirmação sobre o fator limitante — deu 12,0 m dinâmico e 6,67 m de dinâmica reduzida, valores com que a pilha analítica corrigida coincide agora nos dois níveis (a anterior diferença dinâmica, 12,6 → 12,0 m, era o erro do desvio ME→PA), pelo que o piso operacional não é a orientação/efemérides analítica, mas um resíduo irredutível do nível empírico (mais consistente com dinâmica não gravitacional do LRO não modelada ao longo do arco curto); a pilha analítica enxuta já coincide com o nível DE para a órbita de dinâmica reduzida. Proveniência + SHA-256 em tests/fixtures/agency/NOTICE.md; registo completo em docs/AGENCY-ORBIT-VALIDATION.md. Validado face à verdade real de agências: 3 de 3; atingindo < 5 m: 2 de 3.

Navegação por mapa gravítico / alt-PNT (src/gravimeter.rs, src/mapmatch.rs, src/particle_filter.rs, src/altpnt/terrain.rs)#

Aspeto Estado Evidências
Campo de anomalia gravítica em harmónicos esféricos validated src/gravimeter.rs: um campo de grau baixo, totalmente normalizado, verificado face às funções de Legendre em forma fechada (P̄₁₁ = √3·cosφ, P̄₂₀ = (√5/2)(3sin²φ−1), P̄₂₂ = (√15/2)cos²φ) e a uma anomalia de termo único derivada à mão de 1,897 mGal.
Modelo de medição do gravímetro de átomos frios validated (modelo) O piso de ruído branco é derivado da ASD do acelerómetro CAI (σ = ASD/√τ), injetado como uma sequência determinística com semente (o algoritmo de correspondência nunca recebe a verdade sem ruído, mas a execução é reprodutível bit a bit).
Filtro de partículas com reamostragem por importância sequencial validated src/particle_filter.rs: o núcleo determinístico é fixado exatamente — ESS (dimensão efetiva da amostra) a abranger 1…N, reamostragem sistemática a escolher índices em proporção ao peso, a combinação convexa da média ponderada, uma verosimilhança gaussiana a puxar a estimativa para a medição e o determinismo da predição com semente.
Verosimilhança de correspondência com o mapa + recuperação validated src/mapmatch.rs: field_likelihood atinge o máximo (= 1) numa correspondência perfeita e cai para e^(−½) a um sigma; um filtro de partículas sobre uma região de terreno sintético distintiva recupera a posição verdadeira a menos de 0,1.
Benchmark de 60 minutos sem GPS validated run_gps_denied_gravity_nav (scenarios/gps-denied-gravity-nav.toml): uma falha de ~700 km / uma hora em que a solução inercial deriva para ≈ 70 km é recuperada para ≈ 145 m (< 500 m) por um algoritmo de correspondência hierárquico do grosseiro ao fino — reprodutível bit a bit, estável entre realizações de ruído e comprovadamente limitado pelo refinamento (uma única grelha grosseira estagna em ~2 km).
Carregador de DEM (modelo digital de elevação) SRTM (Shuttle Radar Topography Mission) .hgt + amostragem bilinear (REFERÊNCIA INDEPENDENTE A) validated src/altpnt/terrain.rs / tests/terrain_nav_validation.rs: um buffer .hgt de 2×2 construído à mão, com cantos [100 200;300 400], interpola bilinearmente para exatamente 250,0 no centro da célula (referência independente em forma fechada), a ida e volta em 16 bits big-endian é exata e a inversão de linhas coloca a linha de ficheiro mais a norte na latitude armazenada mais elevada — tudo face à especificação do controlador SRTMHGT (Shuttle Radar Topography Mission height-file format) da GDAL (Geospatial Data Abstraction Library) (16 bits com sinal big-endian, por linhas, linha norte primeiro, vazio -32768, https://gdal.org/en/stable/drivers/raster/srtmhgt.html). Um dado de teste de 11×11 incluído no repositório (tools/gen_terrain_fixture.py) exercita o analisador em CI; e um mosaico SRTM v3 real, de domínio público, da NASA/USGS (USGS: United States Geological Survey), incluído no repositório (N36W117, Vale da Morte, decimado para 6 segundos de arco, 722 KB, tests/fixtures/terrain/N36W117_sub6.hgt) é lido em CI (não ignorado, real_srtm_committed_badwater_tile_reads_real_relief), situando Badwater Basin a ≈ −78 m, dentro da banda documentada [−95,−70] m (levantamento NGS/NOAA (NGS: National Geodetic Survey; NOAA: National Oceanic and Atmospheric Administration) ≈ −86 m) com o máximo do mosaico a ≈ 2161 m — a fonte de verdade é o levantamento, o DEM é que está em teste (não circular). Altitudes publicadas de maior dimensão (Mount Whitney 4421 m) permanecem nos testes de mosaico completo condicionados por #[ignore].
Convergência da navegação referenciada ao terreno (TERCOM/SITAN (TERCOM: correspondência de contornos do terreno; SITAN: Sandia Inertial Terrain-Aided Navigation)) (REFERÊNCIA INDEPENDENTE B) validated run_terrain_nav (scenarios/terrain-nav.toml): uma deriva do INS injetada derivada à mão (0,5°N, −0,4°E ≈ 70 km a ~12° de latitude, calculada como deriva° × M_por_grau × cos lat) é recuperada para < 500 m (dentro do piso de resolução da grelha search_step/factor² ≈ 140 m), uma redução de > 100× face à navegação inercial livre — verificada face ao número injetado, nunca face ao DEM (não circular), reprodutível bit a bit e estável entre sementes de ruído.
Ganho de fusão combinada gravidade+magnético+terreno (REFERÊNCIA INDEPENDENTE C) validated run_combined_altpnt (scenarios/combined-altpnt.toml): três canais escalares (Δg · anomalia crustal de |B| · elevação) fundidos como uma verosimilhança em produto dão um resíduo limitado de < 500 m ao longo da falha de 60 min que, com média de sementes, é não pior do que o melhor canal individual (aditividade de informação / CRLB (limite inferior de Cramér–Rao) menor). Situa-se no regime de CEP (erro circular provável) de "dezenas de metros" publicado para o TERCOM / navegação referenciada ao terreno (TRN) (https://en.wikipedia.org/wiki/TERCOM; PeerJ 2024 ESKF-TERCOM (ESKF: filtro de Kalman de estado de erro), https://peerj.com/articles/cs-3118/).

Âmbito honesto: o campo gravítico é de grau baixo + mascons sintéticos, não o conjunto completo de coeficientes EGM2008/EIGEN (EIGEN: European Improved Gravity model of the Earth by New techniques); o canal magnético assenta no campo principal IGRF suave mais mascons de anomalia crustal sintéticos (um mapa crustal real de alta frequência é um trabalho posterior); o campo de terreno de CI para os benchmarks de posição de navegação é o DEM sintético autónomo, enquanto o próprio leitor de .hgt está agora validado em CI face a um mosaico SRTM v3 real incluído no repositório (acima); os mosaicos reais de resolução completa continuam condicionados por #[ignore]. Uma simulação de Monte Carlo do erro de representação do mapa continua a ser um trabalho posterior. Os três navegadores estão agora ligados ao motor de cenários por kind= (gravity-map, terrain-nav, combined-altpnt).

Modelo de erro de INS / IMU — validação referenciada a folhas de especificações (src/inertial/)#

O modelo de erro estocástico da IMU é validado face a especificações publicadas de folhas de especificações / conjuntos de dados de fabricantes — nunca face a um valor produzido pelo próprio Kshana. A ponte entre uma especificação em unidades de campo e o modelo de ruído em SI (Sistema Internacional de Unidades) é a identificação padrão por desvio de Allan (Riley, NIST SP 1065 §5; IEEE (Institute of Electrical and Electronics Engineers) Std 952): o coeficiente de passeio aleatório N é o ADEV sobreposto lido em τ = 1 s na inclinação τ⁻¹ᐟ², e o coeficiente de instabilidade do viés é o patamar plano de Allan (tests/imu_allan_spec.rs, hermético — sem descargas).

Aspeto Estado Evidência / referência independente
Camada de conversão de unidades (o risco n.º 1 de não circularidade) validated Verificado à mão: 0,15 deg/√hr = 4.3633e-5 rad/√s; 3,6 µg = 3.5304e-5 m/s²; 2,0 deg/hr = 9.6963e-6 rad/s.
Passeio aleatório de ângulo do giroscópio validated ARW do ADIS16465 de 0,15 deg/√hr (folha de especificações da Analog Devices) recuperado a partir de ADEV(1 s) a < 5%.
Passeio aleatório de velocidade do acelerómetro validated VRW do ADIS16465 de 0,1 m/s/√hr recuperado a < 5%.
Inclinação de Allan do ruído branco validated Inclinação log-log do ramo branco do ADIS16460 de −0,5 ± 0,05.
Patamar de instabilidade do viés em funcionamento validated Instabilidade do viés (BI) do giroscópio do ADIS16465 de 2,0 deg/hr recuperada como o mínimo plano de Allan a < 15%.
Segundo perfil de IMU validated NaveGo ADIS16488 (ARW 0,3 deg/√hr, VRW 0,029 m/s/√hr), ambos recuperados a < 5%.

Âmbito honesto: isto valida o modelo de erro estocástico face aos coeficientes de Allan das folhas de especificações. O conjunto de dados de veículo KF-GINS do i2Nav-WHU (WHU: Wuhan University) é usado como uma verificação separada, condicionada pelos dados: o EKF de estado de erro em malha fechada com acoplamento fraco e modelo de braço de alavanca do GNSS é uma linha VALIDATED da matriz de verificação (EKF GNSS/INS com acoplamento fraco e braço de alavanca no conjunto de dados KF-GINS), comparado com a trajetória de referência em C++ do KF-GINS sob limiares registados antes da execução. Só é executado onde o conjunto de dados é fornecido (KSHANA_KFGINS_DIR); sem ele, são executados os testes do carregador sintético e do braço de alavanca. As variantes com acoplamento forte e de fase da portadora não são abrangidas por essa linha (a linha GNSS/INS com acoplamento forte e fase da portadora é MODELLED).

PNT de espaço profundo e de Marte — fundação D0 (src/body.rs, src/mars_frame.rs, src/ephem_provider.rs, src/radiometric.rs, src/timescales.rs)#

O primeiro marco do motor de navegação de espaço profundo: generalizar o núcleo, fixado na Terra, para um corpo central arbitrário, acrescentando a dinâmica de Marte, uma interface de fornecedor de efemérides, tempo sub-microssegundo e as primitivas de tempo de luz / atraso relativista. Todos os cenários da Terra existentes são idênticos byte a byte — os valores de referência de reprodutibilidade multiplataforma (tests/cross_platform_golden.rs, tests/golden.rs) passam sem alterações e sem regeneração, verificados a cada commit.

Termo Estado Evidências
Abstração de corpo central (Terra idêntica byte a byte) validated src/body.rs: Body{mu,re,zonals,gravity,rotation,IAU-pole} com earth()/mars()/moon()/sun(). tests/mars_dynamics.rs verifica que two_body_accel_body(r,&Body::earth()) e zonal_accel_body são iguais às funções legadas da Terra com igualdade bit a bit exata (assert_eq!), e que um arco da Terra com ForceModel predefinido é idêntico byte a byte — os valores de referência de reprodutibilidade não se alteram (mesmo SHA, sem regeneração).
Gravidade de Marte (tesseral GMM-3 (GMM: Goddard Mars Model), fixa ao corpo) validated (modelo) Body::mars_gmm3(nmax): zonais C̄20/C̄30/C̄40 a partir de J2/J3/J4 do MRO110 (solução gravítica da Mars Reconnaissance Orbiter) (C̄n0=−Jn/√(2n+1), o J2 faz a ida e volta para 1.9604e-3) + setoriais/tesserais C̄22/S̄22, C̄32/S̄32 do MRO110B2 (Konopliv et al. 2011; tabelados em Liu, Baoyin & Ma 2012), avaliados no referencial de Marte fixo ao corpo da IAU. tests/mars_dynamics.rs verifica a ida e volta, o afastamento à escala de J2 face à massa pontual e que o campo é genuinamente fixo ao corpo (uma reorientação de um quarto de dia marciano altera a aceleração inercial). Graus/ordens superiores são carregados a partir de um .gfc incorporado através de gravity_sh::from_gfc.
Referencial de Marte fixo ao corpo (polo IAU) validated src/mars_frame.rs: a rotação 3-1-3 da IAU R3(W)·R1(90°−δ0)·R3(90°+α0) (convenção WGCCRE/NAIF (WGCCRE: Working Group on Cartographic Coordinates and Rotational Elements), a mesma de lunar_frame.rs). Testes: ortonormal a 1e-12 com det +1, identidade na ida e volta, o meridiano de referência avança a prime_w_dot por dia.
Propagação em torno de Marte / centrada no Sol validated (autoconsistência) tests/mars_propagation.rs: uma órbita baixa de Marte regressa ao ponto de partida após um período kepleriano (fecho); a energia específica ε=v²/2−μ/r deriva <1e-9 ao longo do arco; a regressão nodal secular por J2 de Marte coincide com a taxa analítica de Vallado (calculada de forma independente ≈ −5,15 °/dia a 60° de incl.) a 3%; uma órbita heliocêntrica recupera o ano marciano de ~687 dias (vis-viva + recuperação independente do período a partir do arco). Sem dados externos.
Validação cruzada com a DE440 (Marte heliocêntrico) kernel-gated xval/anise-mars-od/ (EXCLUÍDO do workspace; o ANISE sob MPL-2.0 fica confinado ao seu próprio Cargo.lock; espelha xval/anise-lunar-od): compara a propagação de Marte centrada no Sol do Kshana com a DE440 do JPL (através do ANISE), com a verdade do Horizons citada textualmente (proveniência + SHA-256). Resultado reproduzido (semente JD (data juliana) 2459580,5 TDB (Tempo Dinâmico Baricêntrico), de440s.bsp SHA-256 c1c7fee…b260a49f2): resíduo de posição de 137 m num arco de 1 dia (5,97×10⁻¹⁰ da distância heliocêntrica de 2,299×10¹¹ m), a crescer para 3,3 km a 5 d, 87,9 km a 30 d, 1,71 Mm a 90 d — o resíduo cresce com o comprimento do arco porque um modelo de dois corpos centrado no Sol omite deliberadamente as perturbações planetárias (sobretudo de Júpiter) e o movimento interno do sistema de Marte que as efemérides baricêntricas DE440 incluem; assim, o crescimento é a assinatura honesta da dinâmica de n corpos não modelada, e não um erro do integrador; um arco curto a manter-se uma pequena fração da distância heliocêntrica confirma que o mecanismo centrado no Sol está correto. Só é executado quando o núcleo DE440 está presente ($KSHANA_ANISE_DE440S, ou obtido automaticamente, ~32 MB) — uma verificação manual / workflow_dispatch de nível DE, não uma barreira de CI predefinida, pelo que o crate publicado e todas as barreiras predefinidas permanecem byte a byte intocados.
Tempo de luz + atraso de Shapiro validated src/radiometric.rs: a solução iterativa do tempo de luz com época retardada (converge |Δτ|<1e-12 s, com limite) e o atraso de Shapiro Δt=(2μ/c³)·ln[(r1+r2+r12)/(r1+r2−r12)]. Testes: Terra–Sol ≈ 499 s e Terra–Lua ≈ 1,28 s através das efemérides incorporadas; um emissor sintético de velocidade constante recupera a solução retardada analítica a <1e-9 s (solucionador comprovadamente independente de qualquer efemérides real); o atraso de Shapiro coincide exatamente com um valor calculado à mão e dá ~100–250 µs para um raio rasante de conjunção superior Terra–Marte.
Interface de fornecedor de efemérides validated src/ephem_provider.rs: trait EphemerisProvider + BuiltinEphemeris sem núcleos (Sol/Lua de Montenbruck–Gill, geocêntricos); devolve None para os corpos para os quais não tem série (por exemplo, Marte), para os quais o fornecedor ANISE de nível DE é o caminho — a mesma separação entre incorporado e ANISE que em LunarEnvironment/AniseLunarEnvironment.
Tempo em duas partes + TT↔TDB validated src/timescales.rs: um TwoPartJd{day,frac} com acumulação two-sum de Knuth recupera intervalos sub-microssegundo que o JD em f64 simples perde perto de J2000 (>1000× melhor, testado); tt_to_tdb/tdb_to_tt usam a série periódica dominante de Fairhead–Bretagnon (|TDB−TT|≲1,7 ms, verificada à mão em J2000). Aditivo — o percurso de tempo em f64 simples existente não se altera.

Observáveis radiométricos de espaço profundo e Mensagem de Dados de Seguimento CCSDS — D1 (src/radiometric.rs, src/ccsds_tdm.rs)#

O segundo marco do motor de navegação de espaço profundo: o modelo de observáveis que transforma o núcleo de tempo de luz/atraso relativista D0 nas grandezas efetivas que uma passagem de seguimento da Deep Space Network (DSN) ou da ESTRACK (European Space Tracking network) comunica — distância, Doppler a uma/duas/três vias, retransmissão coerente do transponder, medição de distância regenerativa/PN (PN: pseudo-ruído), Δ-DOR (DOR: medição de distância diferencial a uma via) e os meios de propagação — mais a entrada/saída da Mensagem de Dados de Seguimento (TDM) CCSDS (Consultative Committee for Space Data Systems) 503.0-B, que ingere/emite um ficheiro de seguimento padrão de agência. Âmbito honesto: trata-se de modelos geométricos exatos que seguem as convenções de Moyer / CCSDS; o ruído de medição é o sigma por observação fornecido por quem chama, não incorporado no modelo. Reproduzir uma passagem de seguimento real específica exige dados TDM reais e o solucionador de determinação de órbita de espaço profundo — isso é D2, não D1. Tudo o que se segue é aditivo (os valores de referência de reprodutibilidade não se alteram; mesmo SHA, sem regeneração).

Termo Estado Evidências
Distância e Doppler a 1/2/3 vias (resolução de duas pernas de Moyer) validated (modelo) src/radiometric.rs: one_way_range/two_way_range compõem as soluções de tempo de luz retardado (perna descendente) e avançado (perna ascendente) de D0; a convenção completa de ida e volta é ρ₂ = c·(τ_up + τ_down) (m), documentada e consistente. one_way_doppler/two_way_doppler/three_way_doppler formam o desvio da portadora f_D = −(M·f_ul/c)·(ρ̇_up + ρ̇_down) (Hz) a partir da taxa de variação da distância na linha de visada, convenção de sinal: uma sonda a aproximar-se dá um desvio positivo (para o azul). Testes: distância a duas vias = soma das pernas a <1 mm (~2 UA de ida e volta Terra–Sol); distância a uma via = c·τ exatamente; o Doppler a uma via coincide com o analítico −(f/c)·ρ̇ para um emissor radial de velocidade constante a ppt; a três vias com estações co-localizadas reduz-se byte a byte a duas vias.
Retransmissão coerente do transponder (razões DSN exatas) validated src/radiometric.rs turnaround_ratio: os números racionais exatos de retransmissão DSN/CCSDS M = f_down/f_up (Moyer §13; DSN 810-005 módulo 201/214) — S/S 240/221, S/X 880/221, X/S 240/749, X/X 880/749, X/Ka 3344/749, Ka/Ka 3360/3599. Testado quanto à igualdade exata; um par de bandas não definido provoca pânico (falha ruidosa, nunca inventa uma razão). two_way_doppler_coherent aplica a portadora da banda + a razão de ponta a ponta e é igual ao two_way_doppler explícito até à precisão da máquina.
Medição de distância regenerativa / PN (CCSDS 414; ambiguidade) validated src/radiometric.rs: regenerative_range_ambiguity = c/(2·chip_rate) (a distância sem ambiguidade à escala da resolução por chip) e pn_range_ambiguity = isso × comprimento do código (a distância sem ambiguidade do código PN completo c·L/(2·f_chip)), segundo o CCSDS 414.1-B. Testado: um relógio de distância de 1 MHz dá ~149,9 m; o código PN de votação ponderada CCSDS-414.1 (1 009 470 chips) a 1 Mchip/s dá a distância sem ambiguidade de projeto de ~151 000 km; duplicar a taxa de chips reduz a metade a ambiguidade por chip.
Δ-DOR (plano do céu CCSDS 506) validated (modelo) src/radiometric.rs delta_dor: o atraso diferencial no plano do céu Δτ = −B⃗·(ŝ_sc − ŝ_quasar)/c (s) para uma linha de base interferométrica B⃗ (CCSDS 506.1-B). Testado: coincide com a projeção analítica exata −B·sin(Δθ)/c para um desvio conhecido alinhado com a linha de base a 1e-15 s, com a magnitude para ângulos pequenos |Δτ| ≈ B·Δθ/c e com o nulo (uma sonda co-alinhada com o quasar dá um atraso diferencial exatamente nulo).
Calibração de plasma 1/f² em dupla frequência validated (modelo) src/radiometric.rs: solar_plasma_delay = K_PLASMA·TEC/(c·f²) (o atraso de grupo dispersivo 1/f² de partículas carregadas, K_PLASMA = 40.3 m·Hz²·TECU⁻¹); coronal_tec_from_sep a coluna de corona TEC ∝ 1/sin(SEP) do tipo Cassini (substituto analítico, não uma corona calibrada); dual_freq_plasma_calibration a inversão de dispersão K_disp = (Δt_X−Δt_Ka)/(1/f_X²−1/f_Ka²) que a DSN usa para remover o plasma. Testado: a lei 1/f² d_X/d_Ka = (f_Ka/f_X)²; a corona aumenta em direção à conjunção; e um TEC injetado é recuperado a <1 % (na verdade ≪ 1e-9 sem ruído) — dual_frequency_recovers_injected_plasma.
Meios tropo / iono (reutiliza modelos GNSS) validated (modelo) src/radiometric.rs tropo_delay/iono_delay: o segmento da estação terrestre de espaço profundo atravessa a mesma atmosfera terrestre que o pacote GNSS já modela, pelo que delegam em gnss_sim::tropo_delay_m (zenital de Saastamoinen + mapeamento de Niell, não dispersivo) e gnss_sim::klobuchar_delay_m (iono de difusão). Testado: ligado e fisicamente com o sinal certo: tropo positivo e maior a baixa elevação do que no zénite; iono um atraso oblíquo não negativo (a fidelidade numérica é a dos testes do próprio pacote GNSS, referenciados a folhas de especificações).
Leitura / emissão CCSDS-TDM 503 + ponte radiométrica validated src/ccsds_tdm.rs: um leitor e escritor KVN (notação chave-valor) CCSDS 503.0-B-2 (cabeçalho + segmentos META_START…META_STOP / DATA_START…DATA_STOP; registos RANGE/DOPPLER_*/ANGLE_*/*_FREQ). Testes (#[cfg(test)] + tests/fixtures/deepspace/reference.tdm): o dado de teste de referência é lido para os campos nomeados esperados; ler→emitir→ler é uma estrutura igual (ida e volta semântica); a ponte to_radiometric_obs mapeia os registos inequívocos RANGE/DOPPLER_* para RadiometricObs (vias a partir de PATH 1,2/1,2,1/1,2,3, banda a partir de TRANSMIT_BAND, km→m); um ficheiro com vários segmentos repõe a máquina de estados. Omissão honesta em vez de suposição: ângulos/frequências, bandas desconhecidas, épocas em dia do ano e sistemas de tempo não reconhecidos são omitidos, nunca mapeados incorretamente, e sigma fica em 0.0 para quem chama o ponderar.
Benchmark DSN/ESTRACK (precisão do modelo ≫ piso publicado) validated (model) tests/radiometric_benchmark.rs: os observáveis são cálculos geométricos exatos, pelo que o benchmark honesto é que o erro numérico do próprio modelo está muito abaixo do piso de medição DSN/ESTRACK publicado — o modelo não é o estrangulamento da exatidão, é o σ fornecido por quem chama. Cada teste calcula um observável de duas formas independentes (ou recupera uma verdade injetada) e verifica que o resíduo está abaixo do piso: a distância faz a ida e volta a <1 mm ≪ o piso de ~1 m da medição de distância PN (DSN 810-005 mód. 214 / CCSDS 414.1-B); o Doppler coincide com a taxa de variação da distância retardada exata em forma fechada v/(1+v/c) a ~10⁻⁶ m/s, várias × abaixo do piso de ~0,05 mm/s da banda X (DSN 810-005 mód. 203 / Moyer) — o resíduo é o piso da diferenciação de distâncias em f64 a ~1 UA, uma característica numérica e não um erro de modelação; o Δ-DOR reproduz a projeção em forma fechada com um ângulo equivalente no plano do céu ≪ 1 nrad ≪ o piso de ~1–10 nrad (DSN 810-005 mód. 210 / CCSDS 506.1-B); o plasma em dupla frequência recupera o atraso injetado a ≪ 1 %; e o atraso de Shapiro situa-se na banda publicada de ~100–250 µs da conjunção Terra–Marte. Os valores publicados são apresentados e rotulados como especificações DSN de ordem de grandeza, e não como números exatos fabricados, e a documentação do módulo é explícita em que isto avalia a PRECISÃO DO MODELO, e não a reprodução de uma passagem real (isso é D2 + TDM real).

OD de dinâmica reduzida de espaço profundo — D2 (src/deepspace_od.rs, src/clock_state.rs, src/mars_atmos.rs)#

O terceiro marco do motor de navegação de espaço profundo: o estimador que transforma os observáveis radiométricos D1 numa trajetória recuperada — um filtro de informação de raiz quadrada (SRIF) numericamente robusto, com acelerações empíricas de dinâmica reduzida, um relógio de bordo de três estados, um modelo de resistência atmosférica de Marte e as derivadas parciais da medição radiométrica que ligam a distância/Doppler ao estado do filtro, fechado de ponta a ponta por uma recuperação de determinação de órbita sintética em órbita baixa de Marte (LMO). Âmbito honesto: a recuperação é um circuito fechado sintético (a verdade e o filtro partilham o mesmo propagador de Marte, e as observações são o mesmo modelo de observáveis geométrico que o filtro inverte, mais ruído gaussiano injetado) — valida o mecanismo do estimador, não a fidelidade absoluta do modelo de forças de Marte; a verificação cruzada externa de nível DE é o crate xval/anise-mars-od condicionado por núcleos (D0.8b). Tudo o que se segue é aditivo (os valores de referência de reprodutibilidade não se alteram; mesmo SHA, sem regeneração).

Termo Estado Evidências
Núcleo SRIF (filtro de informação de raiz quadrada) validated src/deepspace_od.rs Srif: um filtro de informação de raiz quadrada de Bierman feito à mão — R triangular superior com Λ = RᵀR, vetor de informação b, atualizações de medição/tempo de Householder, aritmética Vec<f64> simples (sem nalgebra). Testes: o SRIF sequencial coincide com a solução de mínimos quadrados ponderados em lote (gauss_newton) no estado e na covariância a 1e-9 num problema linear-gaussiano concebido para o efeito (srif_matches_batch_on_linear); a covariância recuperada P = R⁻¹R⁻ᵀ é simétrica (1e-12) e definida positiva por construção após uma longa sequência de atualizações de medição/tempo (srif_covariance_is_spd, a decomposição de Cholesky tem êxito); e a informação acumula-se (o traço de P diminui monotonicamente à medida que se incorporam medições de geometria idêntica).
Acelerações empíricas de dinâmica reduzida (afinação cruzeiro↔LMO) validated src/deepspace_od.rs ReducedDynamicOd: o filtro [r; v; a_emp] de nove estados com acelerações empíricas RTN como estados de processos de Gauss–Markov de primeira ordem, a técnica de dinâmica reduzida do JPL/ESOC exposta como um único botão dynamic_tightness (quase dinâmico ⇒ suaviza o ruído num arco balístico; quase cinemático ⇒ o nível empírico absorve uma manobra/resistência atmosférica não modelada). Testes: um filtro quase cinemático acompanha uma manobra em degrau (propulsor) com <½ do resíduo do quase dinâmico, enquanto o filtro quase dinâmico suaviza melhor um arco balístico com ruído (reduced_dynamic_tracks_maneuver); variar o grau de aperto desloca o resíduo pós-ajuste monotonicamente, um contínuo e não um interruptor (tuning_is_a_continuum).
Relógio de bordo de 3 estados (fase/freq/deriva, van Loan Q, Allan) validated src/clock_state.rs ClockState3: estado de erro de fase + frequência fracionária + deriva de frequência com o ruído de processo discreto de van Loan exato e uma atualização estabilizada de Joseph. Testes: o Q discretizado coincide com o polinómio de van Loan derivado à mão a 1e-12 e reduz-se exatamente ao Q do KalmanClock de dois estados quando a deriva = 0 (um superconjunto estrito); uma deriva livre em vários passos faz crescer a variância de fase até à relação de holdover analítica da NIST SP 1065 através do termo de passeio aleatório de T⁵; o estado de deriva recupera uma rampa de envelhecimento verdadeira a <5 %; um perfil de Allan de classe USO é recuperado (ADEV sobreposto em τ=1 s dentro do limiar de calibração) e o estimador mantém-se consistente em NEES (>95 % dentro de 3σ) e PSD ao longo de uma execução com Q/R severo. ClockClass contém os valores CSAC/USO/DSAC (USO: oscilador ultraestável; DSAC: Deep Space Atomic Clock) citados de σ_y(1 s) e o piso de Doppler Δv = c·σ_y.
Resistência atmosférica de Marte (Mars-GRAM-lite (GRAM: Global Reference Atmospheric Model)) validated (model) src/mars_atmos.rs: um perfil de densidade neutra de Marte exponencial por troços (superfície ~0,020 kg/m³, altura de escala junto à superfície ~11 km, a média de baixo teor de poeira Mars-GRAM 2010 / MCD (Mars Climate Database)) e a aceleração de resistência quadrática calculada relativamente à atmosfera de Marte em co-rotação, mais uma variante ..._scaled que o SRIF pode multiplicar. Testes: a densidade diminui monotonicamente e de forma contínua entre bandas, a altura de escala recuperada junto à superfície é a física de ~11 km, a resistência é estritamente antiparalela à velocidade relativa (o produto vetorial anula-se a 1e-12) com uma magnitude razoável de ~3e-4 m/s² em LMO, e é linear no termo balístico. Âmbito honesto: uma atmosfera de engenharia representativa, não um Mars-GRAM/MCD validado em voo com dependência de poeira/estação/hora local.
Derivadas parciais da medição radiométrica (distância/Doppler) para o SRIF validated src/deepspace_od.rs range_observable / range_rate_observable: as derivadas parciais da distância na linha de visada ρ = |r_sc − r_sta| (∂ρ/∂r = û, ∂ρ/∂v = 0) e da taxa de variação da distância ρ̇ = û·(v_sc − v_sta) (∂ρ̇/∂v = û, ∂ρ̇/∂r = (v_rel − ρ̇·û)/ρ) que ligam os observáveis D1 ao estado do filtro, mais a derivada parcial da frequência do relógio no Doppler a uma via ∂ρ̇_obs/∂y = c. Testes: ambas as derivadas parciais coincidem com uma diferença finita central do observável a 1e-6 (range_partial_matches_finite_difference, range_rate_partials_match_finite_difference); uma única atualização de distância reduz a covariância na direção observada (linha de visada, LOS) em ≫1000× e mantém-na definida positiva (PD), e uma atualização de Doppler reduz a variância da velocidade na LOS (radiometric_update_reduces_covariance_in_observed_direction, range_rate_update_observes_velocity).
OD de ponta a ponta em LMO de Marte a partir de dados radiométricos validated (synthetic closed-loop) tests/mars_lmo_od.rs: um arco de verdade em órbita baixa de Marte propagado sob a gravidade Body::mars_gmm3(4) gera distância (σ=1 m) + Doppler (σ=0,1 mm/s) a duas vias com ruído, relativos a duas estações de seguimento; o SRIF de dinâmica reduzida recupera-o a partir de um estado inicial perturbado em ~2,7 km. Alcançado: RMS de posição convergido ≈ 0,2 m (sub-métrico, muito dentro do critério de conclusão de metros a dezenas de metros) ao longo de um arco de 3 órbitas com cadência de 30 s, com a covariância fatorizada definida positiva em cada época (a garantia do SRIF, verificada ao longo de todo o arco). O contínuo de afinação cruzeiro→LMO é exercitado de ponta a ponta: com uma verdade de resistência atmosférica não modelada que o modelo do filtro não tem, o botão de dinâmica reduzida (aperto 1) recupera-se a ~14 m contra ~677 m na execução quase dinâmica (aperto 0) — uma melhoria de 48× devida ao nível empírico que absorve a resistência atmosférica. Âmbito honesto: circuito fechado sintético (verdade = o mesmo propagador que o filtro usa); a verificação cruzada externa de nível DE é o xval/anise-mars-od condicionado por núcleos (D0.8b), nunca executado aqui, sem rede.

Cenário PNT de espaço profundo e fusão a uma via + duas vias — D3 (src/mars_pnt.rs, src/deepspace_od.rs)#

O quarto marco do motor de navegação de espaço profundo: um cenário de produto PNT de Marte executável que liga o corpo / referencial de Marte D0, os observáveis radiométricos D1 e a OD de dinâmica reduzida D2 num único tipo de cenário mars-pnt. Modela uma pequena constelação de retransmissão ao estilo MARCONI que difunde um sinal no espaço a uma via (acoplado ao relógio) e retransmite uma ligação a duas vias (coerente, sem relógio) para uma estação de espaço profundo, e navega três utilizadores de referência (transferência para Marte, orbitador em órbita baixa de Marte, ponto fixo à superfície) através do estimador de fusão conjunta a uma via + duas vias D3.1 — um SRIF de doze estados que aumenta o bloco orbital/empírico de dinâmica reduzida D2 com um relógio de bordo de três estados. Âmbito honesto: cada figura de mérito é o limite de covariância formal do estimador (posição 1σ / 3σ por época) e o RMS alcançado face a uma verdade de circuito fechado sintético (a verdade e o filtro partilham a mesma dinâmica de Marte e o mesmo modelo de observáveis geométrico, mais ruído gaussiano injetado) — uma figura de mérito de navegação simulada, NÃO um nível de proteção certificado para aviação e NÃO uma alegação de voo (sem modelo de falhas certificado, sem monitor de integridade, sem dados de seguimento reais). Tudo o que se segue é aditivo (os valores de referência de reprodutibilidade não se alteram; mesmo SHA, sem regeneração).

Termo Estado Evidências
Fusão radiométrica conjunta a uma via + duas vias (a fusão supera cada uma isoladamente) validated src/deepspace_od.rs FusionOd: o SRIF de dinâmica reduzida D2.2 aumentado com os três estados do relógio de bordo (ClockState3), que ingere uma série temporal mista de distância/Doppler a duas vias (sem relógio, fixa a órbita — zero colunas de relógio na derivada parcial) e a uma via (acoplado ao relógio — a derivada parcial de frequência ∂ρ̇_obs/∂y = c) através de fused_observable. A estrutura calibrar-e-depois-navegar-em-inércia: as passagens a duas vias fixam a órbita, os dados a uma via calibram depois o relógio e mantêm a órbita entre passagens com erro limitado pela estabilidade de Allan do relógio. Testado em src/deepspace_od.rs #[cfg(test)]: a solução fundida supera cada tipo de ligação isoladamente; o erro de navegação em inércia de uma execução só a uma via cresce com o intervalo entre passagens a duas vias, de forma consistente com o limite de Allan da classe do relógio; a covariância conjunta mantém-se SPD (simétrica definida positiva) ao longo de todo o processo.
Constelação MARCONI (raio areostacionário, ocultação) validated (model) src/mars_pnt.rs MarconiConstellation: um conjunto de cinco retransmissores — três retransmissores areostacionários em r = (μ/ω²)^{1/3} ≈ 20 428 km (o raio síncrono de Marte a partir de μ/taxa de rotação publicados; testado na banda de 20 400–20 500 km) igualmente espaçados em 120° de longitude com 5° de inclinação, mais dois retransmissores numa órbita circular mais alta (1,4× areostacionária) com 60° de inclinação para cobertura no plano do céu. Os estados dos retransmissores por época são integrados para a frente sob a gravidade mars_gmm3; o teste de visibilidade de ocultação por Marte é a geometria da corda que libera a esfera (chord_clears_sphere, testado: um retransmissor diametralmente oposto está ocultado, um retransmissor na vertical está visível). Âmbito honesto: uma geometria mínima representativa de difusão mais retransmissão construída a partir de constantes publicadas de Marte — não o projeto de uma constelação de voo específica.
Cenário mars-pnt acessível por CLI / Python / WASM (WebAssembly) / MCP (Model Context Protocol) validated src/mars_pnt.rs MarsScenario / run_mars_pnt está ligado como o cenário kind = "mars-pnt" em todas as superfícies (D3.3): o executor de CLI, a ligação Python, a versão WASM/playground e o despacho do servidor MCP encaminham todos para ele (teste de ida e volta de src/api.rs mars_pnt_kind_round_trips_through_the_dispatch). Cenários de referência fornecidos: scenarios/mars-pnt-lmo.toml, scenarios/mars-pnt-surface.toml, scenarios/mars-pnt-transfer.toml. O resultado inclui uma fom_note explícita que rotula a figura de mérito como um limite de covariância (e não como um PL certificado), e as saídas summary / to_svg repetem o rótulo de honestidade.
Objetivos MARCONI / LightShip reproduzidos: orbitador < 100 m, rover < 15 m validated (synthetic closed-loop, under stated assumptions) tests/mars_pnt_targets.rs: os objetivos publicados dos programas MARCONI / LightShip (orbitador < 100 m, superfície/rover < 15 m) reproduzidos em simulação. Pressupostos partilhados: a constelação MARCONI predefinida de cinco retransmissores; cada retransmissor à vista dá uma distância+Doppler a uma via por época; uma passagem de estação a duas vias coerente a cada 30 min; ruído de classe DSN (σ da distância = 1 m, σ do Doppler = 0,1 mm/s); o filtro de fusão conjunto de órbita de dinâmica reduzida + relógio de 3 estados iniciado a partir de um estado a priori perturbado em ~2,7 km (aperto 0,1); figura de mérito = RMS de posição 3-D convergido na segunda metade do arco face à verdade sintética. Orbitador (LMO ~400 km / 60° de incl., relógio USO, cadência de 60 s, ~2 h ≈ arco de uma órbita): RMS convergido alcançado ≈ 0,40 m ≪ o objetivo de 100 m (média de 3,1 retransmissores à vista, covariância SPD em todo o arco). Rover (ponto fixo equatorial à superfície, relógio USO, cadência de 30 s, arco de ~2 h): RMS convergido alcançado ≈ 5,1 m < o objetivo de 15 m (média de 3,0 retransmissores à vista, covariância SPD). Ambos os objetivos foram atingidos sem afrouxar nenhuma verificação — o USO é a classe menos capaz dos relógios de bordo realistas (um DSAC só ajudaria) e a cadência de 30 min a duas vias é conservadora para um calendário rotineiro de rede de retransmissão, pelo que os pressupostos são fisicamente justos para um sistema da classe MARCONI e não ajustados para passar. Âmbito honesto: reprodução simulada sob os pressupostos indicados, NÃO uma alegação de voo nem um nível de proteção certificado; a verdade de circuito fechado sintético partilha a dinâmica de Marte e o modelo de observáveis do filtro.

Tempo coordenado lunar — taxa relativista do relógio Terra–Lua (src/lunar_time.rs)#

Uma escala de Tempo Coordenado Lunar (LTC/TCL (TCL: Temps-Coordonnée Lunaire, o nome francês do Tempo Coordenado Lunar)) requer a taxa secular a que um relógio à superfície lunar funciona relativamente a um relógio no geoide terrestre (TT). src/lunar_time.rs calcula-a a partir de princípios fundamentais: uma identidade pós-newtoniana de primeira ordem que soma a diferença de autopotencial (o potencial geoidal convencional L_G da IAU W0 = L_G·c² ≈ 6.26369e7 m²/s² menos o autopotencial à superfície da Lua GM_moon/R_moon ≈ 2.822e6 m²/s²) e o termo cinético (Doppler de segunda ordem) −<v²>/2c² a partir da velocidade geocêntrica da Lua (por diferenças finitas da série lunar de Montenbruck-Gill em src/ephem.rs). O termo dominante de autopotencial dá ≈ 57,5 µs/dia, o termo cinético ≈ −0,5 µs/dia, para um total de ≈ 57 µs/dia. O cenário lunar-time-offset comunica esta taxa, o desvio LTC−TT acumulado ao longo de um horizonte e suporta um conjunto mínimo de variância inversa (um relógio de papel lunar); as conversões TT↔LTC fazem a ida e volta a < 1 ns/dia.

Capacidade Estado Referência independente / âmbito honesto
Taxa relativista do relógio Terra–Lua (LTC/TCL) modelled src/lunar_time.rs lunar_rate_breakdown, tt_to_ltc/ltc_to_tt, lunar_ensemble, LunarTimeScenario. Referência independente: uma identidade relativista interna em forma fechada (geopotencial L_G da IAU / das convenções do IERS e autopotencial GM/r (GM: parâmetro gravitacional, G vezes a massa)), verificada por comparação com a banda publicada da taxa do relógio lunar [56, 59] µs/dia. Testes (lunar_time::tests): o termo de autopotencial ≈ 57,5 µs/dia, a velocidade da Lua ≈ 1 km/s, o termo cinético um pequeno valor negativo, o total dentro da banda com os termos nomeados a somar esse total, o desvio LTC−TT a 1 dia ≈ 57 µs e uma ida e volta TT↔LTC a < 1 ns/dia. Âmbito honesto: o valor principal em µs/dia é dependente da referência — depende das superfícies de referência escolhidas (geoide terrestre W0 vs um selenoide lunar), da janela de média temporal e das correções centrífugas/J₂ desprezadas abaixo de µs/dia — razão pela qual o que se publica é uma banda, e não um único número certificado. Esta é uma verificação de autoconsistência Modelled, NÃO uma validação externa, NÃO uma exatidão absoluta sub-nanossegundo e NÃO certificada para cronometragem operacional.

VLBI geodésico lunar — atraso em campo próximo para uma linha de base terrestre que observa um farol lunar (src/lunar_vlbi.rs)#

Um observável de VLBI (interferometria de linha de base muito longa) geodésico para duas estações terrestres (uma linha de base) que observam um sinal a uma via de um emissor da classe NovaMoon à superfície lunar. A Lua está em campo próximo, não é uma onda plana, pelo que o atraso geométrico é a diferença exata de duas distâncias tau_geom = (|r2 − r_B| − |r1 − r_B|)/c e não a projeção no plano do céu. O observável completo acrescenta a diferença de desvio de relógio das estações e um termo de Shapiro diferenciado do potencial da Terra (reutilizado de src/radiometric.rs). As estações são colocadas em coordenadas inerciais geocêntricas (GCRS) através de src/frames.rs + src/cio.rs; o farol através de src/ephem.rs (Lua geocêntrica) + src/lunar.rs (selenográfico→MCMF (MCMF: centrado na Lua, fixo à Lua)) + src/lunar_frame.rs (corpo fixo ME da IAU-2015→inercial). O cenário lunar-vlbi amostra o atraso, a sua taxa por diferenças finitas e a correção de campo próximo ao longo de uma passagem.

A referência independente é o observável de Δ-DOR de onda plana da mesma base de código delta_dor em src/radiometric.rs: no limite de campo distante (um farol sintético a 1e15 m) o atraso geométrico tem de se reduzir a −(B·ŝ_B)/c = delta_dor(r_B, [0,0,0], B) até à precisão da máquina; à distância lunar verdadeira, a correção de campo próximo da curvatura da frente de onda é não nula (dezenas a centenas de µs). As derivadas parciais do farol dtau/dr_B = ((r_B−r2)/|r_B−r2| − (r_B−r1)/|r_B−r1|)/c (e as das estações) são verificadas por diferença finita central (erro relativo < 1e-5).

Capacidade Estado Referência independente / âmbito honesto
Atraso de VLBI geodésico lunar + derivadas parciais modelled src/lunar_vlbi.rs geometric_delay_s, vlbi_delay_s, delay_partials_beacon/_station1/_station2, near_field_correction_s, LunarVlbiScenario. Referência independente: ReferenceImpl — o delta_dor de onda plana da mesma base de código (src/radiometric.rs) no limite de campo distante, mais derivadas parciais por diferenças finitas. Testes (lunar_vlbi::tests): magnitude da estação ≈ raio da Terra, distância do farol à distância lunar (356–407 Mm), o atraso geométrico de campo distante coincide com delta_dor a < 1e-9 s, uma correção de campo próximo não nula à distância lunar, derivadas parciais do farol/estação por FD a 1e-5 relativo, um termo de relógio exato e uma execução de cenário finita despachada através de run_toml. Âmbito honesto: Modelled, NÃO validado face a dados reais de VLBI. O movimento polar é desprezado (xp = yp = 0), pelo que as posições inerciais das estações têm um erro de referencial de alguns metros; o farol mistura uma série da Lua com equador médio da data com um desvio fixo ao corpo no ICRF (International Celestial Reference Frame) (jd_tdb ≈ jd_tt), uma incoerência de referenciais abaixo da fidelidade do modelo, mas não rigorosa; e não há iteração do tempo de luz, rotação da Terra durante o tempo de luz, meios (tropo/iono/plasma) nem termo de aberração para além do Shapiro diferenciado. Não se alega nenhum TRL (nível de maturidade tecnológica), herança de voo nem aval de agência. 0,30: face aos tempos de luz do ANISE através da DE440, nenhum atraso deste percurso analítico está a menos de 1 ps (maior diferença 24 µs); a constatação fica fixada.
VLBI geodésico lunar, percurso por kernel validated (0.30) src/lunar_vlbi.rs KernelGeometry (Terra e Lua da DE440, eixos principais lunares da DE440, orientação da Terra ITRF93, cada tempo de luz convergido no referencial baricêntrico), executada pelo cenário lunar-vlbi quando os três caminhos de núcleos estão definidos. Referência independente: Biblioteca — tempos de luz convergidos do NAIF SPICE Toolkit N0067 (spiceypy 8.2.0) para DSS-14/43/63, fixados antecipadamente: 75 atrasos a menos de 1 ps (pior 0,06 ps), derivadas parciais do farol e das estações a menos de 1e-6, em 25 épocas perto de J2000 (uma emenda depois de as 2024 épocas falharem na própria época de emissão em precisão dupla do SPICE, cerca de 6 ps, divulgada e fixada). O termo de Shapiro diferenciado, a taxa de atraso e a correção de campo próximo do cenário não são comparados.

OD lunar conjunta multitécnica + relógio — recuperação simulada em circuito fechado (src/lunar_combination.rs)#

Um ajuste de mínimos quadrados em lote de época única (instantâneo) (crate::batch_ls::gauss_newton_qr, um passo QR de Householder desde 0,30) que funde as técnicas de VLBI geodésico, de medição radiométrica/de distância local lunar e de medição de distância entre satélites numa rede lunar SIMULADA para recuperar, em conjunto, a posição 3-D de uma estação à superfície lunar, as posições de cada satélite de uma pequena constelação e o desvio de relógio de cada ativo. Os observáveis são: (1) atrasos de VLBI geodésico de linha de base terrestre até à estação lunar tratada como farol (reutilizando src/lunar_vlbi.rs, inercial geocêntrico) — a técnica principal; (2) distâncias radiométricas geocêntricas estação terrestre→satélite (que multilateram a constelação a partir das estações terrestres bem distribuídas) e distâncias locais lunares estação↔satélite (distância euclidiana MCI (inercial centrado na Lua) mais o termo de relógio diferenciado); (3) distâncias entre satélites (mesma forma); mais uma única pseudo-observação de sincronização do relógio da estação que ancora o desvio de relógio comum, de outro modo inobservável. O vetor de estado é [station_pos(3), {sat_pos(3)}×N_sat, station_clk, {sat_clk}×N_sat]. Não há propagação de modelo de forças dentro do solucionador — os satélites são pontos fixos, distintos e ilustrativos numa órbita lunar representativa; trata-se de um ajuste instantâneo deliberadamente limpo. Internamente, as posições são escaladas e os relógios são estimados em metros equivalentes de distância para que a matriz normal se mantenha bem condicionada em f64; as distâncias de VLBI e à distância lunar têm a média removida em torno da geometria nominal para que o jacobiano por diferenças finitas não sofra cancelamento catastrófico. O cenário lunar-joint-od-clock executa a resolução com e sem as componentes de VLBI na mesma semente/verdade e comunica ambas as soluções mais o fator de melhoria da observabilidade da estação.

O resultado honesto principal: a medição de distância local lunar de uma estação polar a um punhado de satélites situados todos para um lado do céu deixa a posição da estação fracamente observada segundo uma direção, pelo que a resolução apenas com distâncias é mal condicionada e o erro 3-D recuperado da estação é grande (ou a resolução não converge). Acrescentar os atrasos de VLBI de linha de base terrestre torna observável a posição 3-D completa da estação, e o erro recuperado da estação desce para o nível do metro. O teste vlbi_restores_station_observability verifica que o erro da estação com VLBI é marcadamente (≥5×) menor do que o erro só com distâncias na mesma verdade injetada — o VLBI repor a direção da estação, de outro modo inobservável, é o objetivo da fase.

A referência independente é a consistência interna: um estado de verdade injetado (estação ~50 m/eixo, satélites ~30 m/eixo, relógios ~1e-7 s, com uma oscilação por componente com semente) é mapeado para observáveis sintéticos através do mesmo modelo geométrico que o solucionador inverte, é adicionado ruído gaussiano com semente (predefinições ilustrativas: σ de VLBI ≈ 1e-11 s, σ de distância ≈ 0,1 m, σ de ISL ≈ 0,1 m; pesos 1/σ²), e o estimador tem de recuperar a verdade injetada dentro do ruído a partir de uma estimativa inicial de zeros. Um NEES médio de Monte Carlo Δxᵀ(HᵀWH)Δx ao longo das sementes (formal_covariance_nees) situa-se numa banda larga em torno de n_params, uma verificação de realismo da covariância.

Capacidade Estado Referência independente / âmbito honesto
OD conjunta lunar multitécnica + relógio validated (0,30, P2: a álgebra linear da resolução) src/lunar_combination.rs estimate, formal_covariance_nees, LunarCombinationScenario. Referência independente de 0,30: P2 — o numpy 2.4.6 (LAPACK gelsd e inv) recalcula cada passo de Gauss-Newton, a solução ponderada convergida, os sigmas formais e o erro da estação nos jacobianos incluídos no repositório de seis redes (tests/lunar_joint_od_numpy_oracle.rs, passos a menos de 2.4e-11, sigmas a menos de 1.3e-11); os modelos físicos de observação e as magnitudes permanecem MODELLED. Referência independente anterior: InternalConsistency — recuperação de uma verdade simulada injetada + consistência da covariância por NEES. Testes (lunar_combination::tests): a fusão completa recupera a verdade (estação < 5 m, RMS dos satélites < 5 m, relógios < 1e-8 s, convergido); o VLBI repõe a observabilidade 3-D da estação (erro da estação ≥5× menor com VLBI do que só com distâncias na mesma verdade); determinístico (mesma semente → solução idêntica bit a bit, semente diferente → solução diferente mas recuperada); NEES médio numa banda larga em torno de n_params; números comunicados finitos/protegidos mesmo quando só com distâncias é mal condicionado; cenário despachado através de run_toml. Âmbito honesto: esta é uma recuperação simulada em circuito fechado — a verdade partilha o modelo de observação — NÃO uma validação com dados reais; sem propagação de modelo de forças dentro do solucionador; as posições dos satélites e a geometria das estações terrestres/lunares são ilustrativas. Não se alega nenhum TRL, herança de voo nem aval de agência.

Realização do referencial lunar — ajuste de datum de Helmert de 7 parâmetros (src/lunar_frame_realise.rs)#

Enquanto src/lunar_frame.rs aplica a orientação do corpo lunar WGCCRE da IAU 2015 (um modelo direto), este módulo estima (realiza) um referencial lunar a partir de uma rede de coordenadas de pontos estimadas ligadas a um datum. O núcleo de estimação é uma clássica transformação de semelhança (Helmert) de 7 parâmetros — três de translação, três de rotação de ângulo pequeno e um de escala — que mapeia os pontos p_i (referencial estimado) para q_i (referencial do datum) como q_i = t + (1 + s)·R(θ)·p_i, com R(θ) = rz(θz)·ry(θy)·rx(θx) construída a partir de crate::precession::{rx, ry, rz, matmul, mat_vec}. Os sete parâmetros [tx, ty, tz, θx, θy, θz, s] são estimados a partir de ≥ 3 pares de pontos não colineares por mínimos quadrados ponderados através de crate::batch_ls::gauss_newton: o modelo direto prevê cada q_i a partir do seu p_i e achata as três componentes de todos os pontos no vetor de observáveis, as coordenadas observadas do datum formam z, os pesos são 1/σ², e a resolução parte de x0 = zeros. Os ângulos de rotação são estimados em µrad e a escala em ppb para que o jacobiano por diferenças finitas se mantenha bem escalado à magnitude das coordenadas à superfície lunar (~1.7e6 m). Uma pequena icrf_orientation_tie compõe a pequena rotação realizada através da orientação corpo da IAU→ICRF (transpose(crate::lunar_frame::icrf_to_iau_moon(jd_tdb))) e devolve o desvio angular pequeno residual do referencial realizado em torno dos eixos do ICRF — uma mudança de referencial de expressão deliberadamente simples, não uma estimativa independente do polo lunar.

A referência independente é a consistência interna: uma transformação de Helmert conhecida (translação ~dezenas de m, rotação ~µrad, escala ~1e-7) é injetada numa rede sintética de pontos bem distribuídos (latitude/longitude selenográficas variadas → MCMF, alguns pontos em altitude), é adicionado ruído gaussiano com semente, e o ajuste tem de recuperar os parâmetros injetados. Com dados sem ruído, a recuperação é até ~à precisão da máquina (translação < 1e-6 m, rotação < 1e-9 rad, escala < 1e-12); com ruído de metros, os parâmetros recuperados ficam a poucos × o σ formal e o RMS residual pós-ajuste situa-se perto do nível de ruído. O cenário lunar-frame-realisation comunica o datum recuperado, o erro de recuperação por parâmetro face à verdade injetada, o RMS residual pós-ajuste e a ligação de orientação ICRF da rotação realizada.

Capacidade Estado Referência independente / âmbito honesto
Realização do referencial lunar modelled src/lunar_frame_realise.rs helmert_fit, apply_helmert, realise_frame, icrf_orientation_tie, LunarFrameRealiseScenario. Referência independente: InternalConsistency — recuperação de uma transformação de semelhança de 7 parâmetros injetada mais a identidade algébrica de ida e volta de apply_helmert. Testes (lunar_frame_realise::tests): recuperação sem ruído da transformação injetada (translação < 1e-6 m, rotação < 1e-9 rad, escala < 1e-12); recuperação com ruído a poucos × σ e RMS residual perto do nível de ruído; ida e volta aplicar-e-inverter; determinístico (mesma semente → idêntico bit a bit, semente diferente → diferente mas recuperado); a ligação ICRF com rotação nula é nula e a ligação preserva a magnitude da rotação; cenário despachado através de run_toml. Âmbito honesto: esta é uma verificação de autoconsistência — recupera uma transformação injetada numa rede sintética — NÃO uma realização do referencial lunar face a dados reais de seguimento / VLBI, e não alega nenhuma exatidão absoluta do referencial. A ligação de orientação ICRF é uma simples mudança de expressão, não uma estimativa independente do polo. Não se alega nenhum TRL, herança de voo nem aval de agência.

Volume de serviço de navegação lunar — DOP / cobertura / disponibilidade + PL ARAIM lunar generalizado (src/lunar_service.rs)#

Este módulo compõe peças já construídas numa análise de volume de serviço de navegação lunar: varre uma grelha de latitude/longitude selenográficas ao longo de um horizonte temporal face a uma constelação de órbita lunar ilustrativa, de fonte pública, da classe Moonlight / LCNS (LCNS: Lunar Communications and Navigation Services) e comunica DOP / cobertura / disponibilidade mais um envelope generalizado de nível de proteção ARAIM lunar. As duas reutilizações são essenciais e explícitas. A geometria DOP é o núcleo VALIDATED (face ao gnss_lib_py) crate::orbit::dop — service_dop é um fino filtro de máscara de elevação mais esse núcleo, e um teste verifica a identidade (service_dop é igual a um orbit::dop direto nas mesmas posições visíveis). A integridade reutiliza o mecanismo ARAIM lunar do LunaNet LNIS (LunaNet Interoperability Specification) crate::lunar::lunar_araim (σ_URE ≈ 30 m, P_sat ≈ 1e-4); lunar_protection_level generaliza o nível de proteção existente do polo sul para um ponto arbitrário da superfície, e um teste verifica que se reduz ao caso do polo sul (no polo sul, com a mesma geometria/orçamento, devolve exatamente o resultado existente de lunar::lunar_araim a < 1e-9).

Os parâmetros da constelação são uma aproximação ilustrativa das descrições públicas da ESA para esta classe de sistema (≈ 4 satélites em órbitas lunares elípticas congeladas que favorecem a cobertura do polo sul — apolúnio sobre o hemisfério sul; 4 é a predefinição da biblioteca, e o moonlight-service-volume.toml incluído define 8 porque o nível de proteção precisa de pelo menos 6 à vista). Não são as efemérides reais do Moonlight/LCNS e não implicam nenhuma afiliação, aval, herança, certificação ou TRL. A composição (cobertura / disponibilidade / integridade) é MODELLED: um conjunto de retransmissores kepleriano circular/elíptico (não uma efeméride LCNS / NRHO (órbita de halo quase retilínea) 9:2 corrigida diferencialmente), uma Lua de rotação média (sem libração física / polo em precessão) e parâmetros de integridade publicados do LunaNet LNIS. Demonstra o método de volume de serviço, não um número de disponibilidade operacional. Determinístico (geometria pura; sem aleatoriedade). O cenário moonlight-service-volume comunica a percentagem de cobertura, os envelopes de contagem de visíveis e de PDOP, o envelope HPL/VPL sobre o volume e a disponibilidade do nível de proteção face ao limite de alerta.

Capacidade Estado Referência independente / âmbito honesto
Volume de serviço de navegação lunar modelled src/lunar_service.rs LunarConstellation, visible_sats, service_dop, coverage, lunar_protection_level, LunarServiceScenario. Geometria DOP validada por reutilização do núcleo crate::orbit::dop validado com o gnss_lib_py; a integridade reutiliza o ARAIM lunar publicado do LunaNet/LNIS (crate::lunar::lunar_araim, σ_URE ≈ 30 m). Testes (lunar_service::tests): service_dop é uma identidade sobre o núcleo validado; lunar_protection_level no polo sul é igual ao PL existente de lunar::lunar_araim a < 1e-9 (reduz-se ao caso do polo sul); a cobertura não decresce com a dimensão da constelação; a visibilidade respeita a máscara de elevação; o cenário é determinístico e despacha através de run_toml. Âmbito honesto: a constelação é ilustrativa, de fonte pública, NÃO afiliada à ESA — não são as efemérides reais do Moonlight/LCNS; a composição de cobertura/disponibilidade/integridade é MODELLED (retransmissores keplerianos circulares/elípticos, Lua de rotação média, parâmetros LNIS publicados), NÃO um número operacional de disponibilidade do Moonlight. Não se alega nenhum TRL, herança de voo nem aval de agência.

PNT diferencial lunar — cancelamento de modo comum + resíduo crescente com a linha de base + níveis de proteção DGNSS (src/lunar_dpnt.rs)#

Um análogo lunar de DGNSS (navegação por satélite diferencial) / SBAS: uma estação de referência da classe NovaMoon numa localização selenográfica conhecida calcula correções diferenciais por satélite a partir de uma constelação ilustrativa, de fonte pública, da classe Moonlight / LCNS, e um utilizador móvel afastado dela por uma linha de base aplica-as, de modo que os erros de efemérides de difusão de modo comum se cancelem. Cada satélite i tem um vetor de erro orbital 3-D comum injetado e_i e um erro de relógio comum c_i. O resíduo de pseudodistância da estação de referência é a correção −e_i · û_ref,i + c_i; o erro bruto do utilizador é −e_i · û_user,i + c_i; o erro corrigido do utilizador é a sua diferença −e_i · (û_user,i − û_ref,i). O termo de relógio c_i cancela-se exatamente (é idêntico nas duas observações), e o termo orbital reduz-se à projeção na diferença dos dois vetores unitários da linha de visada, que → 0 quando a linha de base → 0 (o piso de descorrelação espacial) e cresce ≈ linearmente com a linha de base. Os erros de distância corrigidos por satélite são mapeados através da geometria do utilizador por uma pequena resolução instantânea de mínimos quadrados ponderados com poucas dependências (estado [x, y, z, clock] através de crate::orbit::invert4; um desvio constante de distância é absorvido pela incógnita do relógio em vez de corromper a solução) para dar o erro de posição do utilizador. O nível de proteção do utilizador reutiliza o mecanismo de nível de proteção SBAS DO-229E (crate::sbas::sbas_protection_level, fatores K de Aproximação de Precisão) com o σ residual diferencial como orçamento de erro a 1 σ de cada satélite.

O NovaMoon é referido apenas como classe de sistema (uma descrição pública de uma estação de referência lunar); a constelação reutiliza o crate::lunar_service::LunarConstellation ilustrativo de fonte pública. Estes são parâmetros ilustrativos para exercitar o método diferencial, não uma efeméride real, e não implicam nenhuma afiliação, aval, herança, certificação ou TRL. O cenário lunar-differential-pnt comunica o erro de posição do utilizador com e sem correções, o fator de redução, a curva de erro em função da linha de base e o nível de proteção. Na configuração predefinida, o erro corrigido do utilizador a uma linha de base de 50 km é ≈ 0,008 m contra ≈ 24 m sem correção (uma redução de ~3000×), e ≈ 0 com linha de base nula.

A referência independente é a consistência interna: o cancelamento de modo comum é uma identidade algébrica exata (com noise = 0, erro corrigido < 1e-6 m com linha de base nula; o termo de relógio cancela-se até à precisão da máquina com qualquer linha de base), o resíduo cresce monotonicamente com a linha de base, e o nível de proteção é o mesmo algoritmo DO-229E face ao qual a pilha SBAS está fixada. O resíduo de descorrelação espacial é um modelo geométrico de primeira ordem, não um modelo de descorrelação ajustado a partir de seguimento lunar real.

Capacidade Estado Referência independente / âmbito honesto
PNT diferencial lunar modelled src/lunar_dpnt.rs differential_corrections, corrected_user_range_errors, user_position_error_m, lunar_dgnss_protection_level, LunarDpntScenario. Referência independente: InternalConsistency — a identidade de cancelamento diferencial de erros mais a reutilização do mecanismo de nível de proteção SBAS DO-229E (crate::sbas). Testes (lunar_dpnt::tests): com linha de base nula, o erro corrigido do utilizador e cada erro de distância corrigido por satélite são ~0 (< 1e-6 m) e ≪ o erro sem correção; o termo de relógio cancela-se exatamente com qualquer linha de base (caso de erro orbital nulo); o erro corrigido cresce monotonicamente com a linha de base, mantendo-se ≪ o não corrigido em linhas de base modestas; o diferencial supera o autónomo por uma margem clara (> 2×); o nível de proteção é igual a uma chamada direta a sbas::sbas_protection_level e escala com o σ residual; uma geometria subdeterminada devolve None; o cenário é determinístico (com semente) e despacha através de run_toml. Âmbito honesto: MODELLED — o cancelamento de modo comum é uma identidade exata, mas o resíduo de descorrelação espacial é um modelo geométrico de primeira ordem, NÃO um modelo de descorrelação ajustado a partir de seguimento lunar real, e isto NÃO está validado com dados reais. O NovaMoon é referido apenas como classe de sistema (ilustrativo, de fonte pública, não afiliado à ESA). Não se alega nenhum TRL, herança de voo nem aval de agência.

Exportação de interoperabilidade lunar — CCSDS OEM + KIF alinhados com LunaNet/IOAG, com aderência à norma na ida e volta (src/lunar_interop.rs)#

O referencial lunar, a escala de tempo lunar e as efemérides lunares são exportados em formas de intercâmbio alinhadas com o LunaNet/IOAG (IOAG: Interagency Operations Advisory Group), baseadas no CCSDS. Esta fase não inventa um formato de transmissão: reutiliza o emissor e o analisador de CCSDS OEM (Orbit Ephemeris Message) 2,0 já existentes no crate (crate::oem::OemFile::to_oem_string / crate::oem::parse_oem) e o envelope do Kshana Interchange Format (crate::interchange::Envelope), reetiquetados para o contexto lunar. export_lunar_oem define o REF_FRAME do OEM como o referencial de corpo lunar WGCCRE da IAU 2015 (MOON_ME Terra média ou MOON_PA eixos principais), TIME_SYSTEM como a escala de tempo lunar (LTC / TCL / UTC) e CENTER_NAME como MOON, sobre uma efeméride de exemplo ilustrativa, de fonte pública, da classe LCNS (posições de crate::lunar_service::LunarSat::position_mci, velocidade por diferença finita central). export_lunar_time_metadata emite um descritor de tempo lunar alinhado com o LunaNet/IOAG (identificador da escala, taxa secular em µs/dia de crate::lunar_time::lunar_rate_breakdown, a banda publicada de 56–59 µs/dia, superfície de referência) que faz a ida e volta através de serde_json. export_kif_lunar envolve o OEM + descritor + etiqueta do referencial no envelope KIF existente com a etiqueta de honestidade MODELLED.

A referência independente é a ida e volta / aderência dos campos à norma. Como oem.rs fornece ambos os sentidos, o OEM faz a ida e volta através de crate::oem::parse_oem (de volta a um segmento igual, com o referencial/tempo lunares e o número de estados preservados) e é verificado de forma independente por oem_conformance, que confirma que todas as palavras-chave de cabeçalho exigidas pelo CCSDS/LunaNet estão presentes, que REF_FRAME contém um símbolo MOON_* lunar e que TIME_SYSTEM não está vazio, que o enquadramento META_START … META_STOP se mantém e que as linhas de dados de posição+velocidade estão bem formadas — devolvendo um resultado estruturado mais a lista de campos presentes/em falta, de modo que uma exportação defeituosa (por exemplo, um TIME_SYSTEM omitido) seja detetada e identificada. Os metadados de tempo fazem a ida e volta através de parse_lunar_time_metadata, e o envelope KIF faz a ida e volta através de Envelope::parse para artefactos iguais que contêm a etiqueta MODELLED.

Capacidade Estado Referência independente / âmbito honesto
Exportação de interoperabilidade lunar modelled src/lunar_interop.rs export_lunar_oem, export_lunar_time_metadata, parse_lunar_time_metadata, export_kif_lunar, oem_conformance, LunarInteropScenario. Referência independente: InternalConsistency — ida e volta determinística (CCSDS OEM através de crate::oem::parse_oem; KIF através de crate::interchange::Envelope::parse; metadados de tempo através de serde_json) mais aderência dos nomes dos campos à norma face à semântica de campos publicada do CCSDS OEM + LunaNet/IOAG. Testes (lunar_interop::tests): o OEM exportado contém os símbolos REF_FRAME lunar (MOON_ME/MOON_PA) e TIME_SYSTEM (LTC/TCL), CENTER_NAME = MOON, o objeto e linhas de dados bem formadas; os metadados de tempo lunar fazem a ida e volta (taxa/banda/referência) e rejeitam lixo; o envelope KIF serializa e desserializa para um valor igual com a etiqueta de honestidade MODELLED presente; um OEM deliberadamente defeituoso (sem TIME_SYSTEM) falha em oem_conformance e é comunicado como em falta; o cenário despacha através de run_toml. Âmbito honesto: os nomes/unidades dos campos estão alinhados com normas públicas (CCSDS 502.0-B OEM, referenciais lunares WGCCRE da IAU 2015, a LunaNet Interoperability Specification / arquitetura lunar do IOAG); a exportação é MODELLED — a ida e volta determinística + a aderência dos nomes dos campos à norma são a referência independente, isto NÃO é um teste certificado de aderência à norma de interoperabilidade, a efeméride é ilustrativa, de fonte pública, não afiliada à ESA, e não se alega nenhum TRL, herança de voo nem aval de agência.

Previsões pré-registadas#

Uma previsão pré-registada é um resultado MODELLED congelado antes de existirem dados para a pontuar, com o protocolo de pontuação fixado ao mesmo tempo. Não é uma validação e não acrescenta nenhuma linha ao registo. Cada uma reside em docs/predictions/, com as suas entradas congeladas, o seu resultado e os respetivos hashes SHA-256, e tests/prediction_frozen.rs falha se algum byte congelado se alterar; a uma alteração de pressuposto responde-se com uma nova previsão datada ao lado da antiga, nunca editando-a.

Previsão Congelada Pontuada face a Estado
Cobertura de uma estação de referência lunar c05dac1d, 2026-10-12 exatidão, disponibilidade, cobertura e níveis de proteção publicados de uma estação diferencial lunar polar sul, por qualquer entidade ainda não pontuada (sem resultados publicados)

Registo de representatividade da demonstração e de lacunas até ao voo (src/representativeness.rs)#

Um resultado de simulação só é útil como evidência se declarar, de forma explícita, àquilo a que está ancorado, o que pressupõe e o que ainda o separa de um sistema de voo. O registo de representatividade torna isso uma saída de primeira classe, verificada por máquina: um registo Representativeness contém as Anchors externas da demonstração, os seus pressupostos modelados, as suas Gaps até ao voo (cada uma com a fase/atividade que a fecharia) e a banda de TRL para a qual é representativo. É o complemento, por resultado, da matriz verification ao nível das capacidades.

A referência independente é um conjunto de invariantes em forma fechada, impostas por representativeness::tests: um registo Validated tem de listar pelo menos uma âncora ExternalDataset (uma simulação não pode ser validada face a si própria); um registo Modelled tem de listar pelo menos uma lacuna até ao voo e não pode alegar uma banda de TRL representativa acima de 4 (a maturação para além disso exige evidências de hardware/voo, que são uma lacuna, e não uma saída de simulação); a banda de TRL tem de estar bem formada; e um registo PartnerOwned não pode afirmar nada. Estas invariantes operacionalizam a disciplina de "representatividade justificada + lacunas restantes até ao voo claramente identificadas".

Capacidade Estado Referência independente / âmbito honesto
Registo de representatividade e de lacunas até ao voo modelled src/representativeness.rs Representativeness/Anchor/Gap, check/is_valid/report/to_json. Referência independente: InternalConsistency — invariantes de honestidade em forma fechada ligadas à fronteira de estado/tipo de referência independente de verification. Testes (representativeness::tests): um registo validado sem âncora externa falha; uma âncora interna (ReferenceImpl) não satisfaz o estado validado; um registo modelado sem lacuna falha; um registo modelado acima de TRL 4 falha; bandas de TRL malformadas são detetadas; o registo serializa para JSON com os campos esperados e produz um relatório legível. Âmbito honesto: o registo verifica a classificação da evidência de um resultado — não prova que as âncoras nomeadas correspondem a testes ativos (estes são curados, exatamente como a matriz verification); a alegação de "verificado por máquina" limita-se às invariantes de estado/âncora/lacuna/TRL.

Evidência unificada de compromisso quântico vs clássico (src/qtrade.rs)#

Cada área de aplicação de PNT quântico responde à mesma pergunta da mesma forma: fixar um referencial de comparação (cenário + semente + versão do motor), encaminhar um candidato quântico e uma linha de base clássica por um único percurso de código neutro, pontuá-los em figuras de mérito comuns e comunicar — com um intervalo de confiança e uma etiqueta honesta de validado/modelado — onde o quântico ganha e onde não ganha. TradeEvidence dá a essa resposta uma forma única para que as verticais de temporização, navegação e deteção de anomalias emitam o mesmo objeto reprodutível e honestamente etiquetado. Não volta a implementar nenhum compromisso: os números por figura de mérito vêm dos motores existentes (quantum_trade, crossover e dos módulos verticais); isto é o contrato mais o invólucro de reprodutibilidade/representatividade, construído sobre o registo de representatividade e as etiquetas de verificação.

A referência independente são identidades de benefício/vencedor em forma fechada mais um invólucro fiel da saída de compromisso existente. qtrade::tests: a razão de benefício tem a polaridade correta (orientada de modo que >1 signifique sempre que o lado quântico é melhor, tanto para figuras de mérito de holdover em que mais é melhor como para figuras de mérito de erro em que menos é melhor); um objeto de evidência construído a partir de um quantum_trade::TradeResult real reproduz as suas razões de benefício; a evidência desonesta é rejeitada (uma representatividade modelada sem lacuna, ou uma figura de mérito Validated cujo registo de compromisso não tem âncora externa); o JSON é determinístico e contém os campos de referencial/semente/motor/figura de mérito/representatividade.

Capacidade Estado Referência independente / âmbito honesto
Evidência de compromisso quântico vs clássico modelled src/qtrade.rs TradeEvidence/TradeFom/TradeFrame/Winner. Referência independente: InternalConsistency — identidades de benefício/vencedor em forma fechada + invólucro fiel de quantum_trade::TradeResult; honestidade ligada ao registo de representatividade e à fronteira de estado/tipo de referência independente da verificação. Testes (qtrade::tests) como acima. Âmbito honesto: o arnês normaliza como um compromisso é comunicado e reproduzido; a física subjacente de cada figura de mérito é a que o motor contribuinte fornecer, com a sua própria etiqueta de validado/modelado — TradeEvidence não promove uma figura de mérito modelada a validada.

Biblioteca de modelos de erro de dispositivos quânticos (src/quantum_devices.rs)#

Um único local que expõe os dispositivos de PNT quântico que o demonstrador compara — relógios óticos / de iões aprisionados / de iões de mercúrio, relógios de referência clássicos, o interferómetro de átomos frios e ligações de transferência de tempo — cada um como um DeviceCard com a sua especificação principal e um registo de representatividade. A maior parte da física dos dispositivos é reutilizada (estabilidades de relógio de holdover::QuantumClockClass e clock_state::ClockClass; o interferómetro de átomos frios de quantum_trade/crossover; ligações clássicas óticas/RF de timetransfer_adv). O único modelo genuinamente novo é a ligação de transferência de tempo por entrelaçamento / fotão único, cuja precisão de temporização é limitada pelo ruído de disparo: σ_t ≈ jitter/√(R·τ) na taxa de coincidências detetadas R e integração τ, degradada por uma penalização de contagens de escuro √(1 + dark/R) e limitada inferiormente por um sistemático irredutível.

A referência independente são os coeficientes publicados de relógios/CAI reutilizados mais identidades em forma fechada de ruído de disparo/perdas. quantum_devices::tests: a ordenação reutilizada das estabilidades dos relógios é sensata (rede ótica < iões de mercúrio < CSAC em σ_y(1 s)); a precisão do entrelaçamento melhora como 1/√τ (4× de integração reduz σ a metade) quando limitada pelo ruído de disparo; a taxa de coincidências detetadas cai 10× por cada 10 dB de perda da ligação; as contagens de escuro degradam monotonicamente a precisão; o piso sistemático limita a precisão inferiormente; cada cartão de dispositivo é um registo de representatividade válido e modelado.

Capacidade Estado Referência independente / âmbito honesto
Biblioteca de modelos de erro de dispositivos quânticos modelled src/quantum_devices.rs DeviceCard, quantum_clock_card/classical_clock_card, EntanglementTimeLink. Referência independente: InternalConsistency — coeficientes publicados de relógios/CAI reutilizados + identidades em forma fechada de ruído de disparo/perdas para a ligação de entrelaçamento. Testes (quantum_devices::tests) como acima. Âmbito honesto: os parâmetros dos dispositivos de relógio/CAI são reutilizados dos modelos de coeficientes publicados já existentes no motor; o modelo da ligação de entrelaçamento é MODELLED a partir do comportamento publicado de sincronização quântica de relógios, com valores ilustrativos de fonte pública de taxa de pares/eficiência/perdas — não está validado face a uma ligação medida, e o hardware real de fonte/canal/detetor é uma lacuna até ao voo declarada.

Temporização quântica de confiança — cadeia de ponta a ponta, disseminação segura, anomalias + compromisso (src/timetransfer_chain.rs)#

O cenário quantum-time-transfer compõe a cadeia de temporização de que um demonstrador de PNT quântico precisa: um orçamento de tempo do utilizador de ponta a ponta (erro de deriva livre do relógio de referência e precisão de temporização da ligação combinados em quadratura) para uma cadeia quântica (relógio de rede ótica + ligação por entrelaçamento/fotão único) face a uma cadeia clássica (CSAC + ligação RF a duas vias); um nível de proteção de temporização (TPL, reutilizado de tpl) que limita o erro de tempo não detetado; uma figura de mérito de segurança contra ataques de atraso/repetição 1 − P_md a uma taxa de falsos alarmes indicada (reutilizada de detection); uma probabilidade de deteção de anomalias do relógio + latência de deteção de alterações por CUSUM (soma cumulativa); e a comparação quântico-vs-clássico como qtrade::TradeEvidence honesto que contém um registo de representatividade + lacunas até ao voo.

A referência independente é um orçamento em quadratura em forma fechada sobre núcleos reutilizados e validados separadamente (ADEV vs Stable32/NIST; o limite do TPL; detection::analytic_pd/analytic_pmd). timetransfer_chain::tests: a precisão quântica melhora com o tempo de integração; a cadeia quântica pode ganhar e pode perder na figura de mérito de precisão (honesto — não é uma vitória universal; uma ligação com muitas perdas inverte o resultado); o nível de proteção é finito e positivo; a figura de mérito de segurança está em [0 1] e cresce com o atraso do ataque; a probabilidade de deteção de anomalias é monótona na magnitude da falha; e a evidência de compromisso é internamente honesta (is_honest()).

Capacidade Estado Referência independente / âmbito honesto
Temporização quântica de confiança (cadeia + disseminação segura + anomalias + compromisso) modelled src/timetransfer_chain.rs QuantumTimeTransferScenario/Report, to_svg; kind="quantum-time-transfer". Referência independente: InternalConsistency — orçamento em quadratura em forma fechada sobre núcleos validados reutilizados (ADEV/Stable32-NIST, limite do TPL, Pd/Pmd analíticos de deteção); honestidade ligada ao registo de representatividade. Testes (timetransfer_chain::tests) como acima. Âmbito honesto: os parâmetros do relógio/ligação são ilustrativos, de fonte pública; a ligação por entrelaçamento é o modelo MODELLED limitado pelo ruído de disparo de quantum_devices; isto modela a classe de sistema de temporização de confiança — não está validado face a uma ligação de ponta a ponta medida, e o hardware real de relógio/ligação/canal espacial é uma lacuna até ao voo declarada; não se alega nenhum TRL, herança de voo nem certificação.

Navegação quântica sem GNSS (src/quantum_nav_od.rs)#

O cenário quantum-gnss-free-nav compara a navegação por estima durante uma falha de GNSS com um orçamento inercial quântico (um acelerómetro interferométrico de átomos frios, reutilizado de inertial::quantum_imu/quantum_trade, cujo piso de ruído branco CAI está validado a ~2 ordens de grandeza de Freier et al. 2016) face a um INS clássico de grau de navegação. Comunica o crescimento do erro de posição durante a deriva livre, o tempo de holdover até um limiar de posição e o compromisso quântico-vs-clássico como qtrade::TradeEvidence honesto. A observabilidade é declarada com honestidade: sem posição externa durante a falha, o viés do acelerómetro é inobservável, pelo que o erro de posição cresce sem limite (≈ ½·viés·t² mais um termo de passeio aleatório de velocidade); um sensor quântico de menor viés atenua esse crescimento, mas não elimina a diferença — só uma posição externa o faz.

A referência independente são os orçamentos inerciais reutilizados (QuantumNavBudget/ClassicalInsBudget, ambos a implementar o trait PositionDrift) mais identidades de deriva em forma fechada. quantum_nav_od::tests: o orçamento quântico supera o clássico numa falha longa (menor erro, holdover mais longo); o erro cresce com a duração da falha em ambos (a lacuna de observabilidade); a vantagem depende da duração da falha, não é um fator de ganho constante (a curva quântica é dominada pelo ruído em deriva livre curta e pelo viés em deriva livre longa); a evidência de compromisso é internamente honesta.

Capacidade Estado Referência independente / âmbito honesto
Navegação quântica sem GNSS modelled src/quantum_nav_od.rs QuantumNavOdScenario/Report, to_svg; kind="quantum-gnss-free-nav". Referência independente: InternalConsistency — orçamentos inerciais reutilizados (CAI validado por reutilização a ~2 ordens vs Freier 2016; deriva clássica em forma fechada); honestidade ligada ao registo de representatividade. Testes (quantum_nav_od::tests) como acima. Âmbito honesto: uma comparação estática de orçamentos de navegação por estima, não um filtro dinâmico sobre trajetórias reais; declara-se que o viés é inobservável sem posição externa; os parâmetros dos dispositivos são ilustrativos, de fonte pública; modela a classe de navegação quântica sem GNSS — o hardware real de IMU de átomos frios, uma plataforma dinâmica e o ambiente de voo são lacunas até ao voo declaradas; não se alega nenhum TRL/voo/certificação.

Deteção de falhas / anomalias para sistemas PNT quânticos (src/quantum_faults.rs)#

O cenário quantum-anomaly-detect define um catálogo etiquetado de falhas de PNT quântico (salto de frequência do relógio, deriva, perda de bloqueio; degrau de viés do sensor, perda de dados), pontua uma estatística de deteção em janelas nominais vs com falhas e comunica a discriminação do detetor como uma AUC de ROC e uma falha mínima detetável a uma taxa de falsos alarmes fixa. O ângulo quântico-vs-clássico: uma referência de relógio quântico mais estável reduz o ruído σ do monitor, pelo que deteta falhas menores — emitido como qtrade::TradeEvidence honesto com um registo de representatividade.

A referência independente é uma AUC em forma fechada para a estatística de deteção gaussiana (nominal N(0,σ), falha N(μ,σ) ⇒ AUC = Φ(μ/(σ√2))) verificada por comparação com o eval_stats::bootstrap_auc_ci validado externamente (validado face ao scikit-learn) e com os limiares analíticos de detection. quantum_faults::tests: a AUC analítica coincide com valores conhecidos (0,5 com μ=0, →1 para μ/σ grande, monótona); o IC bootstrap empírico da AUC enquadra a forma fechada; o monitor quântico tem AUC superior e uma falha mínima detetável menor; a vantagem desaparece para falhas enormes (ambos detetam na perfeição — não é uma margem universal); o catálogo tem cinco classes etiquetadas; o compromisso é internamente honesto.

Capacidade Estado Referência independente / âmbito honesto
Deteção de falhas/anomalias para PNT quântico modelled src/quantum_faults.rs FaultKind, QuantumAnomalyScenario/Report, analytic_auc, min_detectable_fault; kind="quantum-anomaly-detect". Referência independente: InternalConsistency — AUC gaussiana em forma fechada verificada por comparação com a AUC bootstrap de eval_stats validada externamente (vs scikit-learn) e com os limiares analíticos de detection. Testes (quantum_faults::tests) como acima. Âmbito honesto: a estatística de deteção é um modelo gaussiano, não telemetria real; o catálogo de falhas é sintético etiquetado; os níveis de ruído do monitor quântico/clássico são ilustrativos, de fonte pública; modela a classe de deteção de anomalias de PNT quântico — telemetria real de hardware com etiquetas de verdade é uma lacuna até ao voo declarada; não se alega nenhum TRL/voo/certificação.

Estas normas são validadas recuperando os exemplos trabalhados textuais / valores de referência publicados nas próprias normas (ou numa implementação de referência independente), e não através da ida e volta do próprio Kshana. Recuperar o exemplo de anexo de uma norma é a verificação de aderência à norma mais forte disponível para um analisador de formato de intercâmbio.

Norma Estado Referência independente externa
CCSDS OEM (Mensagens de Dados Orbitais 502.0-B) validated tests/ccsds_reference.rs: parse_oem recupera as épocas exatas e os vetores de estado X/Y/Z/Ẋ/Ẏ/Ż do exemplo OEM em KVN do CCSDS 502.0-B-3, Anexo G §G6, Figura G-11 ("OEM Example with No Acceleration, No Covariance", p. G-10) — ambos os segmentos de efemérides, incluindo os valores de origem com zeros à esquerda (-063.042). O dado de teste tests/fixtures/ccsds/oem_502_b3_figG11.oem é reproduzido caráter a caráter a partir do Livro Azul oficial (os marcadores editoriais "< intervening data records omitted here >", que não são registos OEM válidos, não são incluídos).
CCSDS TDM (Mensagem de Dados de Seguimento 503.0-B) validated tests/ccsds_reference.rs: TdmFile::parse recupera todos os 41 registos RANGE (primeiro 3198,03679519614 km, último 3270,46440460551 km) e os metadados do exemplo TDM em KVN do CCSDS 503.0-B-2, Anexo E, Figura E-9 ("Range Data with TIMETAG_REF=TRANSMIT", p. E-9). O dado de teste tests/fixtures/ccsds/tdm_503_b2_figE9.tdm é textual do Livro Azul. (Esta é a referência independente do Livro Azul publicado, a par da ida e volta de reference.tdm escrito à mão já existente em src/ccsds_tdm.rs.)
CCSDS 133,0 (Space Packet Protocol) validated src/space_packet.rs primary_header_matches_published_independent_test_vectors: o codificador reproduz os vetores de teste do cabeçalho primário ao nível do byte da biblioteca spacepackets independente (us-irs/spacepackets-py, tests/ccsds/test_space_packet.py) — por exemplo 18 02 40 34 00 16 e o 1F FF FF FF FF FF de todos os máximos — mais o caso canónico de telemetria (TM) com todos os bits a um, cada um com ida e volta através da descodificação. Larguras/ordem dos campos de bits segundo o CCSDS 133.0-B-2 §4.1.3.
CCSDS 401 / DSN (balanço de ligação, DSN 810-005) validated src/linkbudget.rs link_equation_reproduces_descanso_galileo_dct: a cadeia de FSPL (perda de percurso em espaço livre) e C/N₀ reproduz a tabela de controlo de projeto de telemetria de espaço profundo publicada em J. H. Yuen (ed.), Deep Space Telecommunications Systems Engineering (DESCANSO/JPL (DESCANSO: Deep Space Communications and Navigation Systems Center of Excellence) Pub. 82-76), Tabela 1-1 — a ligação descendente em banda X (8420,43 MHz) do Galileo a 6,37 UA: perda em espaço livre 290,54 dB (<0,05 dB) e Pr/N₀ = 54,6 dB-Hz recebido (<0,2 dB). Os centros de banda situam-se dentro das atribuições de ligação descendente de espaço profundo DSN/CCSDS-401 (DSN 810-005 Módulo 201). Os parâmetros de missão predefinidos permanecem representativos (não são um transponder calibrado); o que aqui é fixado é a equação da ligação.

Normas GNSS — estado da referência independente externa e lacunas honestas que subsistem:

Norma Estado e ressalva honesta
RAIM / ARAIM Núcleo, geometria e nível de proteção ARAIM validados externamente. O núcleo de deteção — o limiar de deteção de falhas χ², a não centralidade da deteção falhada do χ² não central e os multiplicadores K da lei normal — reproduz o SciPy (tests/raim_reference.rs, 171 casos, ≤ 1e-6 rel), e a geometria envolvente reproduz o gnss_lib_py (DOP). O valor do nível de proteção (PL) ARAIM está agora também fixado: face ao "exemplo numérico LPV-200 (LPV: desempenho do localizador com orientação vertical)" do ADD (Algorithm Description Document) de Referência ARAIM do WG-C (WG: Working Group) v3.1, src/araim_reference.rs / tests/araim_reference_vectors.rs dão VPL 18,2926 m vs 18,3 m, HPL 13,4063 m vs 13,45 m e σ_v,acc 1,3694 m vs 1,3694 m, dentro da própria TOL_PL = 0,05 m da referência (o tipo araim-reference-check). Âmbito: modos de falha até um satélite ou uma constelação (N_fault,max = 1); subconjuntos de falhas com vários eventos e a exclusão não estão implementados, e o RAIM clássico continua a não ter nenhum vetor de teste canónico publicado de entrada→HPL. Ver ARAIM_REFERENCE.md.
SBAS / DO-229E Algoritmo do nível de proteção agora validado externamente. Dado o (el, az, σ) por satélite, o sbas_protection_level do kshana reproduz o fork RTKLIB de PL SBAS (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, "DO-229D Appendix J") — alimentado com o σ próprio dessa ferramenta, calculado a partir de mensagens de difusão EGNOS reais + RINEX BUTE real — a < 2e-3 m de HPL em 6 épocas (tests/sbas_reference.rs); o ESA gLAB v6.0.0 (core/filter.c) confirmou a convenção idêntica. Os fatores K (K_H,PA=6.0, K_V=5.33, K_H,NPA≈6.18) coincidem com o DO-229E Appendix J. O que está validado e o que não está: isto fixa o algoritmo de PL (σ à entrada → HPL/VPL à saída); a modelação do σ a montante a partir de mensagens UDRE/GIVE em bruto está fora do âmbito do kshana — é aí que as ferramentas independentes de pipeline completo ainda divergem em metros com dados reais. O K_V coincidiu com o valor arredondado de 5,33 da referência independente (o Φ⁻¹(1−5e-8)=5.3267 exato do kshana → VPL ~0,06 % menor; a vertical é validada sem fator K como d_U).
IONEX / Klobuchar Modelo de difusão validado externamente. O modelo de Klobuchar L1 reproduz o ionmodel do RTKLIB (tests/klobuchar_reference.rs, < 1e-4 m) — paridade de implementação com a referência aberta de facto, uma vez que não existe nenhum exemplo trabalhado oficial de verdade medida. O leitor de mapas de TEC IONEX já existe (src/ionex.rs, com testes unitários); a lacuna que subsiste é uma verificação cruzada do mesmo face a um produto GIM real, e não o modelo de difusão. Ver as linhas de Klobuchar em Alegações vs. realidade.
Código de espalhamento GPS L1 C/A (IS-GPS-200) Geração de código validada externamente. src/sdr.rs (ca_first_ten_chips_match_is_gps_200_octal): o gerador do código C/A com LFSR (registo de deslocamento com realimentação linear) G1/G2 reproduz exatamente as atribuições de fase de código publicadas na Tabela 3-Ia do IS-GPS-200 — os primeiros dez chips em octal para os PRN (ruído pseudoaleatório) 1–9 ({1440, 1620, 1710, 1744, 1133, 1455, 1131, 1454, 1626}). Isto fixa a sequência de chips do código de espalhamento face à especificação de interface do GPS; as peças envolventes de modulação, separação espetral e seguimento de código por DLL (malha de bloqueio de atraso) (navsignal) permanecem MODELLED.

Temporização para redes, espetro, o sistema solar, constelações, campanhas e LEO-PNT#

As capacidades acrescentadas na linha 0,28 são classificadas linha a linha na VERIFICATION-MATRIX.md gerada; esta secção resume quais delas têm uma referência independente externa. Uma linha só é VALIDATED com uma referência independente externa; tudo o resto é MODELLED.

Capacidade (tipo de cenário) Estado Referência independente externa, ou porque continua modelado
MTIE (erro máximo de intervalo de tempo) e TDEV (desvio de tempo) de telecomunicações numa série de holdover (telecom-timing) validated tests/telecom_timing_reference.rs: 17 fatores de média de MTIE e 12 de TDEV numa série de holdover de relógio à escala de chip de 2 048 amostras incluída no repositório, face ao allantools 2024,06, a < 1e-12 / < 1e-9 relativo. Os veredictos PASS/FAIL da máscara ITU-T (International Telecommunication Union Telecommunication Standardization Sector) e as predefinições de osciladores das folhas de especificações permanecem MODELLED. Ver TELECOM-TIMING.md.
Previsão de holdover a partir de um registo de relógio medido (slot-timing) validated tests/slot_timing_cs5071a_holdout.rs: ajuste sobre o primeiro terço do registo real de césio 5071A, previsão do instante de violação de um sigma em seis limiares, medição no conjunto reservado dos restantes dois terços; limiar de um fator de 1,5 em qualquer sentido, razões observadas de 0,84 a 1,03. O orçamento de guarda do intervalo e a cadência de posição construídos sobre ele permanecem MODELLED.
Densidades espetrais de potência em banda L em forma fechada e separação espetral (spectrum) validated Formas fechadas de navsignal face a valores publicados (linha da matriz "Closed-form L-band signal power spectral densities…"). O diagrama em cascata com J/S (razão interferente-sinal) por banda e C/N0 (densidade portadora-ruído) efetiva, e a entrada/saída SigMF (Signal Metadata Format), permanecem MODELLED.
Posições planetárias a partir dos elementos de Standish do JPL (Jet Propulsion Laboratory) e tempo de luz entre corpos (solar-system) validated 0,30, pré-registado face ao JPL Horizons (DE441): tests/solar_system_standish_preregistered.rs e tests/solar_system_standish_earth_icrf_preregistered.rs, RMS por planeta e componente no máximo igual ao valor da Tabela 8.10.1 do Explanatory Supplement (pior 0,778), incluindo a separação da Terra e a rotação ICRF; tests/solar_system_light_time_solver_preregistered.rs, o solucionador de tempo de luz sobre posições DE441 a menos de 1e-6 s do tempo de luz do Horizons (pior 6.7e-9 s). A comparação anterior com o dobro do valor nominal (tests/solar_system_horizons_reference.rs), cujo limiar foi fixado após a primeira comparação, é mantida como regressão sem efeito de bloqueio. Úrano/Neptuno da Tabela 1, Plutão, as luas, as constantes dos corpos e body-pnt permanecem MODELLED.
Geometria Walker e as posições publicadas de GPS, Galileo e GLONASS (GLObal NAvigation Satellite System); diluição de precisão global do GPS (constellation-design) validated constellation::tests: Walker 24/3/1 reproduz a tabela de definição do serviço aberto do Galileo a 1e-9°, a fórmula de posições do documento de controlo de interface do GLONASS, os cruzamentos equatoriais do GPS; a mediana de HDOP da linha de base do GPS de 0,940 face ao valor de 0,94 da norma de desempenho do Serviço de Posicionamento Padrão. Os mapas de cobertura de multiconstelação arbitrária em torno de qualquer corpo permanecem MODELLED.
Campanhas: missões encadeadas, varrimentos, conjuntos de Monte Carlo, execuções com condições partilhadas (campaign) modelled tests/campaign_composition_reference.rs (11 testes): uma campanha de uma só fase reproduz a execução autónoma byte a byte, um varrimento de um só nó lê o mesmo número, um conjunto com semente é estável byte a byte. Identidades de composição, não uma referência independente externa.
Física da ligação LEO (órbita terrestre baixa): coeficientes de chuva ITU-R (ITU Radiocommunication Sector) P.838, atenuação por chuva e cintilação P.618, perda de penetração em edifícios P.2109, ionosfera de primeira ordem, Doppler máximo validated tests/leo_link_reference.rs, tests/leo_doppler_reference.rs: as próprias tabelas das Recomendações ITU-R e os exemplos de validação do Study Group 3 (incluídos no repositório com a sua fonte e data de obtenção), a razão de atraso de grupo do IS-GPS-200 para a ionosfera e a tabela publicada de Doppler máximo de Leclere, Marathe e Reid (ION GNSS+ 2025, arXiv 2509,19551).
Mensagem de navegação LEO: o algoritmo de utilizador de efemérides de difusão do ICD (documento de controlo de interface) do Galileo, CRC-24Q (verificação de redundância cíclica de 24 bits), pesos SISRE (erro de distância do sinal no espaço) médios globais (leo-navmsg) validated tests/leo_navmsg_reference.rs: o algoritmo de utilizador do Galileo reproduz o RTKLIB (uma biblioteca de código aberto de posicionamento cinemático em tempo real) a 1 mm em quatro efemérides de difusão reais do Galileo; o CRC-24Q dá o valor de verificação de catálogo 0xCDE703 e os bytes de verificação da trama de exemplo RTCM (Radio Technical Commission for Maritime Services) 1005; os pesos SISRE reproduzem a tabela publicada de MEO/GEO. O ajustador, a atualização a meio da passagem, a codificação binária, o texto em estilo RINEX-4/CSV (valores separados por vírgulas) e os modelos de efemérides selecionáveis permanecem MODELLED.
Projeto de sinal LEO, passagem e balanço de ligação, Doppler e posicionamento conjunto GNSS+LEO, convergência de PPP (posicionamento preciso de ponto), posicionamento 5G NTN (rede não terrestre), transferência de tempo LEO (leo-signal, leo-pass, leo-pvt, leo-ppp, ntn-positioning) modelled tests/leo_signal_reference.rs, tests/leo_fusion_scenarios.rs: formas fechadas, consistência do filtro (por exemplo, o NEES médio das execuções do filtro PPP dentro da sua banda de 95%) e comparações de tendências publicadas; sem dados de campo.
Um sistema LEO-PNT de ponta a ponta (leo-pnt-chain) modelled tests/leo_pnt_chain.rs: cada valor transmitido é igual à própria saída da etapa a montante, e alterar uma entrada a montante desloca todas as figuras a jusante que dela dependem.
Resiliência e verticais LEO (spoofing por Doppler e por consistência entre bandas, sondagem da ionosfera) modelled tests/leo_resilience_verticals.rs (10 testes). Os cenários de resiliência e verticais estão listados em RESILIENCE-CROSSWALK.md.

As saídas que são representações, e não evidências, têm testes mas não têm linha na matriz: as exportações de intercâmbio (CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemérides STK (Systems Tool Kit), SigMF (Signal Metadata Format)), cada uma lida de volta por um validador escrito a partir da especificação do formato (tests/interop_formats.rs, 13 testes; ver INTEROP.md); as animações (tests/animation.rs: reexecuções idênticas byte a byte, contagens exatas de fotogramas, SVG (Scalable Vector Graphics) bem formado, nenhum endereço externo no leitor HTML (HyperText Markup Language)); e o relatório de execução (tests/advanced_report.rs, tests/advanced_report_cli.rs: todos os cenários incluídos geram relatório sem secção vazia nem valor de substituição, as etiquetas coincidem com a matriz, e o comando registado reproduz result.json e o relatório byte a byte).

Envelope de operação#

Cada pacote é exercitado ao longo do seu envelope de entrada declarado por tests/scenario_coverage.rs, que verifica que todas as saídas numéricas são finitas (sem NaN/Inf (NaN: não é um número)) e limitadas. A tabela lista o intervalo de entrada testado por pacote, o comportamento de saída esperado e o teste que o cobre.

Pacote Entrada varrida Intervalo testado Saída esperada Teste de cobertura
clock threshold_ns (especificação de temporização) 1 – 500 ns figuras de mérito de holdover/temporização/segurança finitas clock_pack_covers_the_spec_threshold_envelope
inertial accel.bias 1e-7 – 1e-2 m/s² (átomos frios → MEMS (sistemas microeletromecânicos) rudimentar) RMS/p95 de posição finitos e limitados inertial_pack_covers_the_accel_bias_envelope
orbit mask_deg (máscara de elevação) 5° – 30° DOP/disponibilidade finitos; limitados orbit_pack_covers_the_elevation_mask_envelope
spoof attack.rate_ns_per_s 0,1 – 50 ns/s P_md / segurança finitos, limitados spoof_pack_covers_the_attack_rate_envelope
hybrid position_spec_m 10 – 1000 m holdover de temporização/posição finito hybrid_pack_covers_the_position_spec_envelope
órbita (real) TLEs reais gps-ops do Celestrak instantâneo de 30 satélites, somas de verificação estritas só carrega com somas de verificação válidas; geometria limitada real_gps_constellation_scenario_loads_with_valid_checksums_and_bounded_output
relógio (flicker) flicker_floor ligado/desligado 0 vs 1e-12 ativar o piso 1/f agrava a deriva livre de p95 da temporização flicker_fm_floor_degrades_the_clock_holdover_when_enabled
fusão (realismo) accel.bias 0 vs 5.88e-7 m/s² zero vs não nulo realista o filtro continua a convergir, a menos de 3× o erro com viés zero fusion_filter_converges_with_a_realistic_non_zero_bias

As linhas de flicker-FM e de viés de fusão fecham duas lacunas de realismo específicas: os termos de ruído estão desligados por predefinição, mas afetam demonstravelmente a saída quando ativados, e o filtro de fusão conjunto não depende de os vieses serem anulados — converge também com um viés residual realista de grau de átomos frios.

Limitações conhecidas#

  • As execuções quânticas e clássicas usam agora sementes de RNG (gerador de números aleatórios) independentes (semente clássica = semente + 0x9e3779b97f4a7c15), pelo que as suas realizações de ruído são não correlacionadas — corrigido após revisão.
  • holdover_s tem em conta os segmentos: as cronologias de falha são divididas em segmentos contíguos na reaquisição do GNSS e o valor comunicado é a deriva livre do pior caso (a mais curta) entre eles. Continua limitado pela resolução da grelha temporal (um limite inferior).
  • A ressincronização de transferência de tempo por ISL modela a incerteza residual da ligação como oscilação nova de média nula a cada passo de medição, mais reancoragem no intervalo configurado.

Alegações vs. realidade — referência rápida#

Uma lista de verificação de um revisor hostil. Para cada termo que possa ser lido como mais do que é: o que o Kshana faz hoje e onde se situa, no roteiro, a versão real.

Termo que poderá ver O que realmente é hoje O que não é (ainda)
"simulador PNT híbrido quântico/clássico" um simulador estocástico clássico conduzido por coeficientes de Allan/ruído publicados de sensores quânticos física quântica de princípios fundamentais (fase de Mach–Zehnder, ruído de projeção, sistemáticos) — ver QUANTUM-MODELS.md
"fusão de Kalman conjunta" / pacote de fusão o pacote fusion executável observa o relógio e a posição separadamente (uma posição de tempo direta e uma posição direta), para o que o estimador ótimo é genuinamente diagonal por blocos — dois filtros de dois estados com uma figura de mérito combinada um filtro acoplado para o caso da pseudodistância existe agora como fusion::coupled::CoupledPntFilter ([pos,vel,phase,freq] empilhado de 4 estados, covariância de blocos cruzados não nula, validado por NEES) mas ainda não está ligado ao pacote executável, e o pacote é de 1 grau de liberdade (1-DOF) — a extensão 3-D de 8 estados é trabalho futuro
Figura de mérito de segurança (tipo de cenário spoof) 1 − P_md de um detetor estocástico de spoofing de tempo: um teste χ²₁ bilateral / de Neyman–Pearson sobre uma estatística de monitor assistida por relógio, limiar definido a partir de um P_fa alvo, P_md avaliado à magnitude da especificação tanto em forma fechada como por Monte Carlo (que concordam a alguns ×1/√N) um detetor RAIM/ARAIM multissatélite — ver INTEGRITY.md; a estatística do monitor é um modelo gaussiano com o σ derivado da PSD do relógio, e não uma correlação ao nível do sinal
"deteção de spoofing assistida por relógio" um monitor de discrepância de tempo de relógio único (estatística gaussiana, σ da PSD do relógio), NÃO um RAIM multi-SV (SV: veículo espacial, isto é, um satélite) RAIM multi-SV no domínio da distância com níveis de proteção
P_md do detetor de spoofing (forma fechada vs Monte Carlo) o P_md analítico baseado em Φ e a estimativa empírica de mc_runs ensaios coincidem a menos do erro de amostragem (≈ 1/√N); validado nos testes de src/spoof.rs / src/detection.rs a um desvio sob esforço (μ/σ = 2) uma ROC de detetor medida face a dados de spoofing registados
modelo de pseudodistância de gnss-sim uma simulação direta: ρ = geometric + clocks + Klobuchar iono + Saastamoinen·Niell tropo + noise + multipath. Cada modelo de atmosfera é testado unitariamente face a valores calculados à mão (ZHD (atraso hidrostático zenital) ≈ 2,3 m, Niell = 1 no zénite, obliquidade de Klobuchar), e o modelo de difusão completo de Klobuchar é verificado por comparação com a implementação de referência ionmodel() do RTKLIB a menos de um milímetro (klobuchar_agrees_with_rtklib_reference_implementation, 6,1278 m para o caso de coeficientes predefinidos do RTKLIB — não existe nenhum vetor de teste de Klobuchar oficial publicado, pelo que isto é paridade de implementação, e não verdade medida); uma execução sem ruído reproduz a geometria + correções a menos de um milímetro (resíduo RAIM ≈ 0) uma solução de posição a partir de sinais reais (PPP/RTK (PPP: posicionamento preciso de ponto)), combinação sem ionosfera em dupla frequência ou resolução de ambiguidades da fase da portadora — não modelado
modelo de jamming (tipo de cenário jamming) uma cadeia de balanço de ligação: J/S a partir da perda de percurso em espaço livre + ganho de antena por direção → C/N₀ efetivo através da equação anti-jam (ganho de desespalhamento × separação espetral Q) → perda de bloqueio a um limiar (Kaplan & Hegarty §9,4) multipercurso, dinâmica do AGC (controlo automático de ganho) no tempo, a própria pesquisa de aquisição (a histerese opcional [acquisition] é um par de limiares); a perda de quantização opcional [front_end] é a de uma entrada gaussiana, não válida para um interferente CW; o agrupamento opcional [crpa] é de banda estreita e ideal (sem acoplamento nem desadaptação), e a sombra opcional [terrain] é um único gume de faca num único mosaico SRTM; Q é uma constante representativa por tipo, não derivada da PSD medida do interferente
Figura de mérito de integridade (pacotes de relógio/holdover) autoconsistência do filtro (fração das amostras da falha dentro do seu próprio limite k·σ) HPL/VPL, risco de integridade / P_HMI, limites de alerta, DO-229E/316/ED-259A — estes são comunicados em separado pelo tipo de cenário integrity (RAIM / ARAIM) e pelas funções SBAS, nunca incorporados nesta figura de mérito
figura de mérito do pacote de cenário inertial legado um orçamento de erro de acelerómetro/giroscópio de eixo único (1-DOF) (VRW/ARW, instabilidade do viés) com reposição à verdade o pacote legado é de 1-DOF; o percurso de 3 eixos é fornecido no pacote gnss-ins (linha seguinte)
Biblioteca strapdown de 3 eixos + pacote gnss-ins (src/inertial/, src/fusion/pack.rs) um navegador verificado de quaterniões/NED (NED: norte-este-baixo) com um modelo determinístico de erro de IMU — fator de escala, desalinhamento, sensibilidade à gravidade, quantização, rampa de taxa modelados (IEEE Std 952-1997 §A.2; Groves 2013 §4,3) — agora conduzido pelo pacote de cenário gnss-ins e configurável por sensor a partir de TOML (Tom's Obvious Minimal Language, o formato dos cenários) ([imu_*.error_model]) não modelado: erro de retificação por vibração, deriva por gradiente de temperatura. O erro da deriva livre fundida é limitado inferiormente pelo erro de atitude na transferência (inclinação/viés do acelerómetro pouco separáveis), pelo que não se alega calibração por viés
"Integração PNT híbrida" (pacote hybrid) navegação por estima em malha aberta delimitada por reposições GNSS à verdade uma mistura de Kalman GNSS–INS acoplada (fraca/forte) — que é o pacote gnss-ins separado (EKF) e o tipo de cenário hybrid-ukf
"Desempenho de posicionamento" (pacotes de relógio) RMS de temporização da fase do relógio em ns (timing_rms_ns) uma exatidão no domínio da posição com RMS/CEP/SEP/ponderada por DOP (SEP: erro esférico provável)
figura de mérito de posição inercial (pos_rms_m) um RMS/p95 de posição de eixo único em metros, de uma só semente, a menos que runs = N peça um conjunto (então média, dispersão e um intervalo de confiança bootstrap de 95% por métrica) uma distribuição de CEP / 2DRMS (o dobro do RMS da distância) de conjunto (roteiro: CEP de Monte Carlo)
"validado a ~2%" uma concordância observada típica; o limiar imposto é um erro relativo de 20–25% um limite de exatidão de 2% garantido
"reprodutível / idêntico bit a bit" reexecução idêntica bit a bit no mesmo SO (sistema operativo) + cadeia de ferramentas fixada; entre Linux, macOS e Windows, a CI verifica um SHA-256 incluído no repositório da impressão digital de entrada e da forma de cada resultado (tests/cross_platform_golden.rs) e os valores numéricos a 1e-6 (tests/golden.rs) um resultado completo idêntico byte a byte entre sistemas operativos (diferenças de libm no último dígito)
Cenário SGP4 de GPS (orbit-sgp4-gps.toml) um instantâneo genuíno gps-ops do Celestrak (2021-07-28, 30 satélites, somas de verificação estritas), com cada satélite propagado a partir da sua própria época de TLE uma constelação atual — atualize o instantâneo com scripts/fetch_tles.sh (ver REAL_TLE_GUIDE.md); os números de catálogo do NORAD (North American Aerospace Defense Command) são os reais

Verificações cruzadas de artigos de PNT lunar (evidência de regressão, não linhas da matriz)#

O conjunto lunar/cislunar (as capacidades "Lunar & cislunar" e "Lunar PNT suite" do README) tem as suas alegações de artigos publicados verificadas por comparação independente em tests/validate_p*.rs, cada uma face a uma referência independente de uma implementação diferente:

  • pegada orbital de transmissão/captura vs scipy.special.j1 (Bessel J1 de Cephes);
  • DOP da geometria de faróis à superfície vs uma resolução (HᵀH)⁻¹ independente em NumPy;
  • crescimento do erro de previsão por persistência de UT1/EOP vs uma nova leitura em NumPy das mesmas linhas textuais finals2000A do IERS;
  • família de órbitas retrógradas distantes planares vs a Three-Body Periodic Orbit Database da NASA/JPL;
  • orçamento de precisão de medição de distância por RF vs uma referência de princípios fundamentais.

Os dados de teste e os scripts de geração de referências independentes encontram-se em tests/fixtures/{p1_footprint,lunar_service,eop_prediction,rf_ranging_precision,dro_family_jpl,p2_independent_dop}/. Estes reforçam a evidência por detrás de capacidades que permanecem MODELLED na matriz verificada por máquina (src/verification.rs); são verificações de regressão, não novas linhas VALIDATED da matriz, pelo que não alteram por si a contagem da matriz verificada por máquina. Essa contagem não é aqui repetida, porque uma cópia escrita à mão dela desatualiza-se: a divisão em vigor é o cabeçalho gerado de VERIFICATION-MATRIX.md, que gen_validation_artifacts escreve a partir de verification_matrix() e tests/verification_artifacts_doc_sync.rs fixa.