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 limite imposto (gate), atualmente de 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 costuma ser muito mais estreita (alguns por cento), mas o limite garantido é o gate, não a mediana. Onde um número como "~2%" aparece, é uma observação típica, não a tolerância imposta. Veja Alegações versus realidade.

A regra de promoção#

Uma linha da matriz de verificação verificada por máquina (src/verification.rs) é VALIDATED somente quando uma referência independente do Kshana concorda com a implementação dentro de uma tolerância declarada antes de a comparação ser executada, em um teste que roda no gate. Esta seção é o único lugar em que a regra é escrita; a matriz, a prosa de cada linha e as notas de versão remetem a ela.

Os tipos de referência independente aceitos#

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 registro real de relógio de césio; pontos normais arquivados de telemetria laser lunar; a série UTC(k) da Circular T do BIPM (Bureau Internacional de Pesos e Medidas); a tile de terreno da SRTM (Shuttle Radar Topography Mission).
Biblioteca Uma biblioteca ou ferramenta de terceiros independente que calcula uma grandeza univocamente definida sobre as mesmas entradas, em que a biblioteca implementa o próprio 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 imprime para que as implementações possam ser conferidas com eles. Vetores SOFA/ERFA (Standards of Fundamental Astronomy), os vetores de verificação do SGP4 da AIAA (American Institute of Aeronautics and Astronautics), os exemplos de validação da ITU-R (International Telecommunication Union, Radiocommunication Sector), o exemplo resolvido de ARAIM do Working Group C, JPL (Jet Propulsion Laboratory) Horizons.

Duas outras regras decidem os casos limítrofes. Ambas são adotadas para a versão 0,30.

  • P1, um valor resolvido publicado. Um valor resolvido 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 declarada. O valor deve 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 declarada), e o teste deve fazer o Kshana calculá-lo a partir das entradas da publicação; comparar uma constante com o documento de que foi copiada é uma verificação de transcrição, não P1.
  • P2, uma biblioteca numérica independente. Uma biblioteca numérica independente, como numpy ou LAPACK (Linear Algebra PACKage), recalculando uma grandeza de álgebra linear univocamente definida sobre entradas declaradas conta como biblioteca independente. A biblioteca deve realizar a decomposição, a inversa, a resolução ou o passo de mínimos quadrados por seu próprio algoritmo, sobre entradas registradas junto com a 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 reavalia uma forma fechada escalar com aritmética numpy é uma segunda implementação nossa, não P2.

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

O que não conta#

  • Nossa própria segunda implementação: um segundo caminho de código neste crate (ReferenceImpl), ou um script neste repositório que reavalia a mesma forma fechada.
  • Concordância com nossa própria saída anterior: goldens, pins de regressão, snapshots ou uma tabela dos artigos do próprio projeto.
  • Uma transcrição das constantes de uma citação: conferir um coeficiente, predefinição, valor de datasheet ou folha de parâmetros contra o documento do qual foi copiado.
  • Uma escolha de projeto: uma alocação, ponderação, limiar, limite de alerta ou cenário representativo. Não há verdade externa para uma escolha.
  • Uma identidade interna: uma integral numérica contra sua própria forma analítica, uma ida e volta, uma inversão, um teste de propriedade ou de monotonicidade.
  • Uma execução de integração contra um host real (IntegrationRun): carregar um plugin em um servidor Signal K real ou no OpenCPN, ou alimentar a saída de um gate real a um consumidor TCP, e verificar que o host aceita a entrada e mostra o estado esperado. Isso mostra que a infraestrutura funciona. O host não é uma referência independente para nenhum valor que a integração carrega, portanto não há nada externo contra o que comparar, e uma linha assim (a linha de integrações marítimas) é MODELLED, não VALIDATED. IntegrationRun é um tipo próprio de referência independente, permitido somente em linhas MODELLED: integration_run_only_on_modelled_rows em src/verification.rs falha se uma linha VALIDATED o carrega, e validated_rows_require_an_external_oracle já exige que toda linha VALIDATED seja ExternalDataset.
  • Plausibilidade em entradas reais: dados reais usados apenas como entrada, com asserçõ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 é imposta#

Toda linha VALIDATED declara, em validated_oracle_basis() em src/verification.rs, em qual tipo ela se apoia (Measured, Library, Reference, P1 ou P2), a fonte independente (citada do próprio texto da referência independente da linha) e o único teste que carrega a comparação. Os testes unitários ao lado da tabela falham quando uma linha VALIDATED não é declarada ou é declarada duas vezes, quando uma declaração nomeia uma linha que não é VALIDATED, quando a fonte declarada não é a que o texto da 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 então exige 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 contra a fonte declarada; isso continua sendo uma leitura humana. As contagens por tipo não são digitadas aqui: a tabela é a fonte.

Linhas VALIDATED existentes reexaminadas sob a regra#

A regra foi aplicada às linhas existentes, além de às futuras promoções.

  • Linhas P1 nomeadas pelo estudo de validação 0,30, cada uma apoiada: Orçamento de enlace unidirecional (a tabela de controle de projeto X-band do Galileo da JPL Pub 82-76, remontada a partir de seus itens de linha 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 usuário estático vê de uma órbita LEO ou MEO (Tabela 1 do artigo do Pulsar, 20 valores); Doppler que um receptor em solo deve tratar de um satélite de navegação LEO (os mesmos valores publicados de uma órbita voada). Cada publicação é independente do Kshana, imprime seus números, e o teste declara sua tolerância.
  • Outras linhas que se apoiam em P1, encontradas no reexame, cada uma apoiada: Compromisso de projeto de código de medição de distância (a correlação cruzada Gold de −23,9 dB publicada); Tempo coordenado lunar (Ashby e Patla 2024, cuja verificação cruzada da velocidade da Lua contra a DE440 é uma verificação de biblioteca); Densidades espectrais de potência de sinal 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 de erro de alcance do sinal no espaço médios globais (a tabela de Montenbruck, Steigenberger e Hauschild 2018).
  • Linhas P2 nomeadas pelo estudo, cada uma apoiada: Informação de Fisher e observabilidade de Cramér–Rao (numpy eigh/inv); Identificabilidade do datum lunar; Gauge acoplado de referencial e escala de tempo lunares; Pipeline autônomo de observabilidade de falhas em rede livre (SVD de numpy/SciPy, decomposição em valores singulares). Cada uma recalcula uma grandeza de álgebra linear univocamente definida sobre entradas registradas por um algoritmo diferente do solucionador de autovalores de Jacobi do Kshana.
  • Outras linhas que se apoiam em P2, encontradas no reexame, cada uma apoiada: Derivação de prioridades MCDA (análise de decisão multicritério) (o autovetor do AHP, processo analítico hierárquico, pelo SciPy/LAPACK; a tabela de Random Index que ele também reproduz é uma transcrição e não é contada); Variância de deriva do holdover de relógio (expm do SciPy da matriz aumentada de Van Loan); Realização do referencial lunar (uma solução de Umeyama por SVD do numpy); Beamforming de CRPA (antena de padrão de recepção controlado) (resolução complexa do LAPACK); Núcleo de nível de proteção ARAIM lunar (a inversa LU do RTKLIB com quantis do SciPy); Consistência de referencial/dinâmica lunar entre provedores (um ajuste de mínimos quadrados por SVD do numpy de três efemérides publicadas).
  • Sinalizadas na primeira passagem, reapoiadas na rodada 2 da execução 0,30. Três linhas foram sinalizadas como não apoiadas pela regra escrita. Cada uma agora se apoia em uma comparação pré-registrada antes de sua fixture ser obtida, de modo que nenhuma linha é sinalizada; um teste unitário ao lado de validated_oracle_basis() fixa a lista (agora vazia).
    • Integridade (RAIM/ARAIM/SBAS). Os testes citados costumavam afirmar apenas plausibilidade sobre geometria real do IGS (International GNSS Service). A linha agora se apoia em três referências independentes de biblioteca: a separação de solução de múltiplas hipóteses do ARAIM do Airborne Design Document v4.2 contra o Stanford MAAST para o ARAIM 2 (270 casos reais, pior diferença de VPL 2.2e-3 m contra 0,05 m); a detecção e exclusão de RAIM de snapshot contra o RTKLIB raim_fde (2016 de 2016 decisões idênticas) com o nível de proteção de inclinação; e os níveis de proteção L1 do SBAS DO-229E contra o Stanford MAAST em transmissõ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 do ADD e que a comparação de SBAS L5 de dupla frequência é uma constatação.
    • Posições de planetas pelo sistema solar a partir dos elementos keplerianos de Standish do JPL. O limiar post-hoc de duas vezes o erro nominal é substituído por um limiar pré-registrado: RMS no máximo igual ao valor da Tabela 8.10.1 do Explanatory Supplement por planeta e componente, contra o JPL Horizons DE441, com a divisão da Terra e a rotação ICRF cobertas.
    • Tempo-luz entre corpos do sistema solar. O solucionador de tempo-luz agora é comparado com os tempos-luz do Horizons dentro de 1e-6 s em posições DE441, um limiar pré-registrado que não herda o limiar de posição.
  • Linhas MODELLED que as duas políticas tornam promovíveis (somente pela execução linha a linha 0,30, nunca por este texto): sob P1, o limite de geolocalização de emissor por TDOA/FDOA (diferença de tempo e de frequência de chegada), o acoplamento da taxa de relógio relativística ao referencial, as máscaras de sincronização da ITU-T (Setor de Normalização das Telecomunicações) (somente para valores de máscara que as Recomendações imprimem como números; os pontos de quebra transcritos conferidos contra si mesmos não contam) e o limite de posicionamento 5G por rede não terrestre (somente se um valor resolvido publicado for encontrado); sob P2, a cegueira de integridade em modo comum, o nível de proteção de temporização MHSS (separação de solução de múltiplas hipóteses) escalar e o branqueamento GLS (mínimos quadrados generalizados). As duas linhas de benchmark de integridade de temporização (o classificador de diagrama de integridade de Stanford e o pontuador de cobertura de integridade) são classificação baseada em regras, não álgebra linear, de modo que P2 não as alcança; elas precisam de uma ferramenta independente, e a única encontrada (gLAB) tem licença não comercial.
  • Coerência com recusas anteriores. A verificação de Vallado da linha da janela de lançamento agora se qualificaria sob P1 se seu teste calcular o exemplo resolvido impresso; o plano 0,30 a promove pelo Orekit. A tabela de cruzamento de tempo lunar por classe de relógio permanece MODELLED: a tabela que ela reproduz vem do artigo do próprio projeto, que não é independente.
Termo de ruído Status 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 em fonte primária contra a SP (Special Publication) 1065 do NIST (National Institute of Standards and Technology) (Riley, Handbook of Frequency Stability Analysis, 2008), ambas com tolerância relativa de 1e-4. (1) tests/allan_reference.rs: os estimadores 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 verdade, de ~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 da SP 1065 §12,4 de 1000 pontos (Tabela 31, p. 108) nos fatores de média 1 / 10 / 100, em que o conjunto é regenerado no 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 em aewallin/allantools (tests/nbs14), reproduzidos aqui sem código de terceiros. Isso fixa a matemática dos estimadores contra a referência, distinta das linhas de calibração de 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 real de césio 5071A medido contra um maser de hidrogênio (556.990 amostras de fase em τ₀ = 1 s; 1 PPS (pulso por segundo) em um contador 53230A, fev 2014; coletado por A. Wallin, distribuído com allantools). Verificado em toda a escada decádica de τ (16 fatores de média, τ = 1 s … 4×10⁴ s): fatores bem amostrados com um limite relativo de 1e-3 (a concordância observada é, na verdade, ≤ 3e-5, por exemplo OADEV(1 s) 3.317111e-10 contra Stable32 3.3171e-10), fatores esparsos de τ longo obrigados a cair dentro da faixa de confiança de 1‑σ impressa pelo Stable32. Isso complementa a paridade sintética do NBS14 acima com uma verificação de relógio medido. O arquivo bruto de fase é dado de terceiros sem licença de redistribuição, por isso é ignorado pelo git; scripts/fetch_cs5071a.sh o reproduz e o teste imprime um aviso de omissão (a CI (integração contínua) continua verde) quando ele está ausente. Somente os números públicos de referência do Stable32 são registrados (tests/fixtures/cs5071a/); nenhum código de terceiros é usado.
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 PHASE.DAT — a série de 1001 pontos distribuída com o Stable32 que ferramentas independentes (por exemplo allantools) usam como alvo padrão de regressão — em toda a escada completa de fatores de média (139 fatores) com um limite relativo de 1e-3 (observado ≤ 5e-5). Uma segunda série de referência real e independente, ao lado da verificação de césio medido acima. O PHASE.DAT acompanha a ferramenta comercial Stable32, por isso a série bruta é ignorada pelo git; scripts/fetch_phasedat.sh a reproduz e o teste é ignorado em verde (a CI continua verde) quando ela está ausente. Somente os números públicos de referência do Stable32 são registrados (tests/fixtures/phasedat/); nenhum código de terceiros é usado.
Estabilidade de relógio óptico em uma 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 óptica 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 de ≈4.7e-16/√τ do artigo (~10% RMS (raiz do valor quadrático médio) sobre a curva) e o ajuste detecta um piso medido não nulo (q_rw > 0). Isso fixa a inversão ADEV medido → parâmetro de ruído contra um relógio óptico real; o benefício de holdover até o limiar construído sobre ela permanece MODELLED.
ROC (curva característica de operação do receptor) AUC (área sob a curva) de detecção de anomalias em telemetria real OPS-SAT da ESA (Agência Espacial Europeia) validated (reproduz os rótulos) tests/opssat_ad_reference.rs: no conjunto OPSSAT-AD (Ruszczak et al. 2025, Zenodo 10.5281/zenodo.12588359, CC BY 4,0) — segmentos reais de housekeeping do OPS-SAT com rótulos de anomalia de verdade-terreno — a AUC ROC de Mann–Whitney do Kshana (impairment_eval::auc) reproduz o roc_auc_score do scikit-learn a < 1e-9 na partição de teste reservada (529 segmentos, 113 anomalias), para dois escores determinísticos: um detector transparente de uma só característica (contagem de picos do segmento, AUC ≈ 0,851) e um escore de Mahalanobis diagonal de 8 características ajustado nos segmentos normais de treinamento (AUC ≈ 0,556); eval_stats::bootstrap_auc_ci delimita a estimativa pontual com seu limite inferior acima do acaso. Isso valida o cálculo da AUC em dados reais da ESA e a separação rotulada de um detector transparente — não reproduz a melhor métrica publicada do artigo OPSSAT-AD (uma FCNN supervisionada (rede neural totalmente conectada), F1 ≈ 0,95), que precisa do 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 gravitacional (mapa de navegação com auxílio gravitacional / sem GNSS (GNSS: sistema global de navegação por satélite)) validated tests/icgem_gravity_reference.rs: o núcleo de funcional gravitacional em harmônicos esféricos (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — o "leitor de mapa" com que um navegador auxiliado por gravidade compara — é validado contra o padrão de gravidade normal GRS80 (Geodetic Reference System 1980) (Moritz 1980, adotado pela IAG (IAG: Associação Internacional de Geodesia)). Construir o campo normal GRS80 a partir de 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², a 3.5e-12 relativo em todas as latitudes (limite 1e-9). O mesmo núcleo carrega o modelo terrestre principal real ICGEM (International Centre for Global Earth Models) EGM2008 (Earth Gravitational Model 2008) (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 gravitacional fisicamente limitado (RMS ≈ 26 mGal, máx. ≈ 89 mGal em d/o 70). Valida a correção do código de síntese; a exatidão da solução de navegação auxiliada por gravidade permanece MODELLED (não há trajetória pública de gravímetro em uma plataforma com verdade-terreno).
edf específico do tipo de ruído (intervalos de confiança) validated src/allan.rs: a faixa 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 de flicker, modulação de frequência branca e de 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 registro identificado a partir da inclinação log-log de seu MDEV. Três verificações independentes: (a) as cinco fórmulas reproduzem valores avaliados à mão em N=64,m=4 a 1e-12; (b) um conjunto Monte-Carlo de FM (modulação de frequência) branca (4.000 registros) mede o edf qui-quadrado real do estimador = 2·média²/Var(σ²) e coincide com a fórmula dentro de 20% (e supera de forma material a contagem conservadora sem sobreposição); (c) tests/allan_nist_sp1065_1000point.rs reproduz o edf impresso na SP 1065 Tabela 32 (p. 109) = 146,177 para o conjunto de 1000 pontos em m=10 (FM branca) a 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 contra o χ² exato do NIST). A curva ADEV exportada traz o tipo de ruído identificado, o edf e a faixa 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, limite imposto de 20% (CSAC e a meta da rede óptica) — e a curva de FM branca sigma_y(tau)=sigma_y(1s)/sqrt(tau) em tau = 1, 10, 100 s dentro de um limite de 25% (coincide com o datasheet do CSAC (relógio atômico em 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) a ~20% (média sobre seeds).
Envelhecimento / deriva linear modeled + calibrado e removido Determinístico; o estimador de holdover remove o deslocamento e o envelhecimento por meio de um preditor quadrático, de modo 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 verdadeiro; a deriva livre reproduz a variância analítica de holdover q_wf*T + q_rw*T^3/3 a 1e-9. A atualização da covariância está na forma estabilizada de Joseph P⁺ = (I−KH)P(I−KH)ᵀ + KRKᵀ, que permanece semidefinida positiva (verificada por Cholesky) ao longo de 500 passos de predição/atualização a uma razão R=1e-26 / Q≈1e-30 extrema, e concorda com a forma ingênua a 1e-9 onde esta é bem condicionada. A camada de execução informa 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 Monte-Carlo (Bar-Shalom §5,4). O NIS → 1 e o NEES → 2 agregados do filtro casado caem dentro de suas faixas χ² de 95% (a faixa do NIS usa a contagem de inovações brancas agregadas; a faixa do NEES usa a contagem de execuções independentes, já que os erros de estimação são correlacionados no tempo). Um teste de varredura de descasamento Q/R verifica que o monitor informa consistent=true somente na sintonia unitária e consistent=false em dessintonias de ×0.1/×0.5/×2/×10, com o NIS escalando como ≈1/q_factor, como derivado. Exposto como filter_health no JSON (JavaScript Object Notation) de resultado do relógio e em um cartão do playground. As faixas χ² usam o quantil de Wilson–Hilferty (detection::chi2_inv_cdf, conferido contra tabela).
Modelo de transferência de tempo bidirecional validated (modelo) src/timetransfer.rs: o atraso de modo comum recíproco se cancela exatamente na estimativa (m_AB - m_BA)/2 (derivada à mão, exata) e duas medições unidirecionais têm média 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%, pelo step() do próprio enlace). Os parâmetros (por enlace sigma_j, q_rw) são valores TWSTFT/ópticos (TWSTFT: transferência bidirecional de tempo e frequência por satélite) representativos, não ajustados a um terminal específico.
Segurança (pontuação de detecção de spoofing) validated (modelo) src/security.rs: o piso de 1-sigma do monitor sqrt(r/m + q_wf*tau + q_rw*tau^3/3) e o desvio mínimo detectável de k-sigma e a pontuação [0,1] resultantes são derivados à mão e testados unitariamente. O modelo (detecção auxiliada por relógio, de inovação / estilo RAIM (RAIM: monitoramento autônomo de integridade pelo receptor)) é sólido; os parâmetros (janela de monitoramento tau, multiplicador de detecção k, ruído de medição r) são representativos, não ajustados a um receptor específico.
Detecção de ataque de spoofing validated (modelo) src/spoof.rs: um spoof de tempo falso em rampa é sinalizado quando seu deslocamento excede o limite de detecção do relógio; o tempo de detecção coincide com o start + bound/rate derivado à mão a um passo de grade, e um relógio cujo limite excede a especificação deixa o spoof alcançar o limiar sem ser detectado. Mesma ressalva de representative-parameters da pontuação de Segurança.
FM de flicker (piso) modeled (desativado por padrão) Sintetizado como uma soma de processos de Ornstein-Uhlenbeck (OU) espaçados logaritmicamente, calibrados para um piso de ADEV plano configurável; src/models.rs valida que o piso é plano ao longo do tempo de média e fica no nível configurado (média sobre seeds). Ativado por relógio via flicker_floor. Os cenários de referência citados o deixam desativado: o CSAC é dominado por FM branca em toda a faixa de seu datasheet (1-1000 s) e o piso sistemático do relógio óptico (~5e-17) é representado por sua figura de exatidão.
Estatísticas do conjunto Monte Carlo validated (agregação) src/ensemble.rs: percentis por posto mais próximo e média sobre runs realizações reprodutíveis; uma execução única colapsa a dispersão, a faixa por passo de tempo é 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 Microchip SA65 / SA.45s datasheet
optical-sr-lattice (Sr lattice) 1.0e-15 relógio óptico de rede de estrôncio, meta orientada ao espaço, arXiv:1503,08457

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

Maturidade: os valores do relógio óptico são a meta orientada ao espaço em hardware de solo -- nenhum relógio óptico de estrôncio voou. Relógios de Sr de laboratório chegam a 4.8e-17 (Oelker et al. 2019, Nature Photonics). Os valores do CSAC vêm de uma peça comercial em uso.

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 por estima inercial (unidade de medição inercial quântica)#

Termo Status Evidências
Viés constante/residual -> posição validated erro de posição = família 0,5bT^2 (Tutorial de Groves AESS (Aerospace and Electronic Systems Society)); teste discreto derivado à mão em src/inertial/mod.rs.
Passeio aleatório de 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) a ~12% observado (média sobre seeds; limite imposto de 20%).
Física do acelerômetro de interferômetro de átomos frios (CAI) (primeiros princípios) validated (modelo) src/inertial/quantum_imu.rs: um interferômetro de átomos frios Mach-Zehnder de três pulsos. Verificado à mão contra a geometria de livro-texto — 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 em 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 de contraste. q_va() deriva a PSD (densidade espectral de potência) de aceleração branca que o AccelModel clássico consome. Escopo honesto: apenas o piso de ruído de projeção quântica (~0,09 ug/sqrtHz aqui) — muito abaixo de dispositivos reais, limitados por vibração (1-50 ug/sqrtHz); o tensor de vibração, a força de Coriolis e as sistemáticas de deslocamento de luz ainda não são modeladas (veja QUANTUM.md).
Viés de giroscópio + passeio aleatório angular (ARW) -> inclinação -> acoplamento da gravidade modeled (desativado por padrão) Um viés residual de giroscópio e o ARW provocam um erro de atitude; a inclinação acopla a gravidade (g*theta) ao erro de força específica horizontal. src/inertial/mod.rs valida exatamente o crescimento cúbico de posição por viés puro e o crescimento de atitude por ARW como um processo de Wiener (média sobre seeds). Ativado por sensor via gyro_bias e q_arw; desativado nos cenários citados só com acelerômetro.
Instabilidade de viés (piso de flicker 1/f) modeled (desativado por padrão) src/inertial/mod.rs: um processo de flicker 1/f (a mesma síntese OU validada para o relógio) cujo piso plano de desvio de Allan fica no coeficiente de instabilidade de viés; zero é uma operação nula, um piso não nulo altera a trajetória, ambos reprodutíveis. Ativado por sensor via bias_instability.
Passeio aleatório de aceleração (passeio aleatório de 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 a ~20%. Ativado por sensor via q_aa.
Validação cruzada com o NaveGo (coeficientes de ruído da IMU (unidade de medição inercial)) validated tests/navego_imu_crossval.rs: uma verificação cruzada externa contra o NaveGo (R. Gonzalez, toolbox INS/GNSS (INS: sistema de navegação inercial) de código aberto, github.com/rodralez/NaveGo). Reproduz a ida e volta sintética do navego_example_allan.m do NaveGo em seu perfil de referência publicado do Microstrain 3DM-GX3-35: alimentar nosso estimador de ADEV sobreposto (validado com NBS14/Stable32) com ruído branco de sensor nos níveis de 1-σ do NaveGo recupera os coeficientes de passeio aleatório de velocidade e de ângulo (VRW, ARW) (ADEV(1 s) = σ·√dt) a < 5% (real ~0,4%), com o ramo de ruído branco na inclinação −1/2. Confirma que nosso pipeline de Allan e as definições de VRW/ARW do NaveGo concordam. O registro .mat de 40 MB do STIM300 gravado não é ingerido (condicionado a formato binário).
Fator de escala, termos cruzados entre eixos mais finos not modeled neste pacote de 1-DOF (um grau de liberdade) O pacote legado 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; veja a tabela de alegações abaixo).
Sensor estabilidade de viés raiz da PSD 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 / Groves AESS Tutorial

Enquadramento honesto: a vantagem do átomo frio é a estabilidade de viés de longo prazo (~2600x menor), que domina uma longa interrupção de GNSS por meio 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 vence a maratona, não a corrida de velocidade. Maturidade: os acelerômetros de átomos frios estão em estágio de laboratório/inicial (JRC122785), o quartzo de grau de navegação já é empregado.

Termo Status 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 do enlace sigma_j; a média amostral se comporta como sigma/sqrt(N) a <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 (exato, teste derivado à mão).
Piso de 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 permanece inalterado.
Enlace jitter de amostra única tipo fonte
optical-isl 1 ps (1e-12 s) alvo crível em órbita enlace óptico entre satélites, alvo de sincronização em 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) sessão única medida TWSTFT do BIPM/PTB/NIST (BIPM: Bureau Internacional de Pesos e Medidas; PTB: Physikalisch-Technische Bundesanstalt, o instituto nacional de metrologia da Alemanha)

Enquadramento honesto: o valor óptico é uma meta de sincronização em órbita em nível de picossegundo (não voada). O piso do laboratório óptico terrestre é ~1 fs (muito melhor); um enlace de micro-ondas bem projetado (o enlace de micro-ondas (MWL) do ACES (Atomic Clock Ensemble in Space), ~0,3 ps) pode rivalizar com o óptico, de modo que a linha de base "RF = 0,5 ns" é especificamente o TWSTFT comum. A conversão para distância é unidirecional (distância = cdt); bidirecional/ida e volta a divide por dois (distância = cdt/2).

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

Compõe o Pacote 1 (relógio), o Pacote 2 (inercial) e o Pacote 3 (transferência de tempo) em uma única suíte PNT (posicionamento, navegação e temporização). A suíte deve manter TANTO a temporização (< especificação de temporização) QUANTO a posição (< especificação de posição) dentro dos limites; pnt_holdover_s é o tempo até que qualquer uma delas seja violada. A transferência de tempo por enlace óptico entre satélites (ISL) opcional ressincroniza o relógio durante a interrupção (apenas auxílio de tempo — a posição não é ressincronizada, pois a transferência de tempo fornece tempo, não posição).

Aspecto Status Evidências
Pontuação combinada de PNT (temporização E posição) validated src/hybrid.rs teste de score_hybrid derivado à mão (pnt_holdover = o primeiro entre temporização/posição a violar).
Integridade + Segurança para o pacote híbrido validated src/hybrid.rs: um estimador de temporização de Kalman disciplinado à verdade (nominal) e reancorado a cada ressincronização óptica; a Integridade é a contenção no limite de proteção (o limite inclui o piso de jitter do enlace), a Segurança a pontuação de detecção de spoofing. Testado para ambas as suítes, inclusive o caso auxiliado por enlace.
Estimador de fusão conjunta validated (modelo) src/fusion/mod.rs: um único filtro de Kalman conjunto ([fase, freq] ⊕ [pos, vel]) é o navegador, disciplinado pelo GNSS (aprendendo os deslocamentos 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 confiável (≥0,9) para ambas as suítes com sensores de ruído consistente. O pacote observa posição e tempo separadamente, caso em que o filtro ótimo é bloco-diagonal; a estimativa de viés constante com estado aumentado e o auxílio cruzado dinâmico são trabalho futuro.
Filtro acoplado de 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 na 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 compartilhada torna P[pos,phase] não nulo (filtros desacoplados o mantêm exatamente em 0); duas geometrias distintas resolvem em conjunto deslocamentos injetados de posição e de relógio que uma única distância não consegue separar; uma solução somente de relógio afina a posição pela covariância cruzada (o ganho que o acoplamento oferece e que filtros desacoplados não podem); e um NEES Monte-Carlo é consistente com χ²(4) (Bar-Shalom §5,4, faixa 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 em seus próprios pacotes.
GNSS/INS fracamente acoplado (pacote gnss-ins) validated (modelo) src/fusion/{gnss_ins_ekf,closed_loop,pack}.rs: um EKF de estado 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 se anula com auxílio de verdade perfeita; a solução auxiliada permanece limitada a metros enquanto um INS em funcionamento livre diverge além de 100 m; e o RMS de 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 conjunto (~4× quando medido antes da 0.27.3; a margem é maior após a correção abaixo). O acoplamento do viés de giroscópio é conferido contra o próprio strapdown: um viés residual de giroscópio conhecido deve produzir o erro de atitude que o filtro prevê (closed_loop::tests::gyro_bias_coupling_predicts_the_strapdown_attitude_error), e um prior amplo deve aprender um viés de giroscópio de classe controlador de voo mantendo-se limitado; ambos falham com o sinal anterior à 0.27.3. Revisado na 0.27.3: esse acoplamento tinha o sinal errado, de modo que as estimativas de viés de giroscópio empurravam no sentido errado e só um prior estreito mantinha o pacote estável; os valores publicados de interrupção mudaram (CHANGELOG, Fixed). Limite honesto: o viés de acelerômetro e a inclinação em acoplamento fraco são pouco separáveis, de modo que a calibração por viés não é alegada.
GNSS/INS fortemente acoplado (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 de linha de visada sobre δp). Testes: quatro satélites anulam um erro horizontal injetado de 8 m/−5 m a < 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 visada (vertical) e deixa a horizontal intocada; entradas malformadas são rejeitadas. Somente pseudodistância — fase da portadora e um estado explícito de relógio do receptor estão no roteiro.
Fidelidade de auxílio cruzado entre sensores (fusão completa por Kalman/grafo de fatores) not modeled no pacote hybrid O pacote híbrido é uma composição em nível de sistema + auxílio de tempo, não um estimador ótimo. Existem filtros em outros lugares: o EKF (filtro de Kalman estendido) fracamente e fortemente acoplado 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: a suíte totalmente quântica mantém o PNT completo ao longo de uma interrupção de 1,8 h; a suíte totalmente clássica é limitada pela posição (a IMU de grau de navegação viola primeiro). A transferência de tempo óptica ISL mantém travado até o relógio clássico, isolando o sensor inercial como o elo fraco da suíte clássica — o argumento central a favor de inércia quântica + temporização óptica em conjunto.

Geometria — disponibilidade de GNSS a partir de órbitas#

Aspecto Status 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 retorna após um período, planaridade equatorial/polar — testes derivados à mão.
Propagação excêntrica (kepleriana) validated src/orbit.rs: 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 a 1e-9.
Deriva secular nodal/apsidal 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 (progrado) / avança (retrógrado) / é estacionário (polar), e as apsides congelam na inclinação crítica de 63,4 graus — testes de sinal/zero derivados à mão. Somente dois corpos + secular, não osculador.
Visibilidade por linha de visada (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 do GNSS -> linha do tempo 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 linha do tempo derivada.
Otimizador de projeto de constelação + geometria de streets-of-coverage validated (modelo) src/walker.rs: optimize_walker_design varre a grade {planes × sats × inclination} e devolve a célula que melhor satisfaz um DesignObjective (mín. de satélites para uma meta de cobertura / cobertura máx. / PDOP do pior caso mín. (PDOP: diluição da precisão de posição)) — um teste afirma que a escolha é igual a uma varredura de força bruta independente do mesmo conjunto, e um exemplo resolvido confirma que um projeto Walker 24/6/1 do GPS (Global Positioning System) cobre pelo menos tão bem quanto um desbastado 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 contra a geometria de livro-texto (GPS com máscara de 5°: λ ≈ 71,16°, meia-largura da faixa de 4 satélites ≈ 62,83°) e detectam a lacuna de subpopulação (λ < π/s ⇒ None). O solucionador completo de Rider de número mínimo de satélites para cobertura global (a contagem de planos sensível à emenda) 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 de tempo da precisão)) -> exatidão de posição validated src/orbit.rs: Q=(HᵀH)⁻¹ a partir da matriz de projeto de linha de visada. Referência independente externa (tests/dop_reference.rs): os cinco fatores de DOP reproduzem os calculados pelo gnss_lib_py 1.0.4 (Stanford NAV Lab — uma biblioteca GNSS independente e revisada por pares, usada aqui como o ERFA (Essential Routines for Fundamental Astronomy) é para os referenciais) em 8 geometrias que vão de bem condicionadas a quase singulares (DOP na casa das centenas), a 1e-6 relativo; procedência + regeneração em tests/fixtures/dop/. Como verificação adicional em forma fechada, uma geometria de tetraedro regular reproduz os DOPs analíticos (PDOP 1,5, TDOP 0,5, GDOP √2,5, HDOP √1,5, VDOP √0,75) a 1e-9. Sigma de posição = PDOP × erro equivalente de alcance do usuário.
Erro de posição = σ_UERE × DOP para a própria solução de mínimos quadrados do mecanismo 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 coincide com o do gnss_lib_py), contra σ²·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é-registradas (commit e50c88d2, antes da primeira execução, segundo a nota de projeto de geometria 0,36, seção 5,2), cada uma um número de erros-padrão: variâncias de leste, norte, vertical e relógio dentro de 5 %; RMS H/V/P dentro de 2,5 %; correlação leste-norte dentro de 0,035; médias dentro de 5 erros-padrão; a fração da elipse horizontal de 95 % 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). Controles negativos falham como exigido: PDOP dobrado falha em toda geometria; erros crescendo como 1/sin(elevação) contra o Q sem ponderação falham em uma verificação de variância em toda geometria cujo satélite mais baixo está abaixo de 20°. Como ele se combina com a linha acima: aquela linha valida o DOP dessas geometrias contra o gnss_lib_py; esta acrescenta o passo desses fatores até metros pelo solucionador do mecanismo. Uma primeira verificação, separada, é mantida ao lado dela (src/dop_error_ci.rs, tests/position_error_dop_ci.rs, executada antes do pré-registro e relatada como tal): quatro céus escolhidos à mão (aberto, agrupado, cânion, meio céu; σ 1 m) com intervalos de confiança qui-quadrado a 1e-6 no total sobre 20 verificações; razões de 0,987 a 1,009, e seus próprios controles negativos (um erro de DOP de 10 %, erros de 1/sin(elevação)) falham como exigido. Por que MODELLED: sem conjunto de dados externo; não mostra que o erro de um receptor real segue o modelo, e σ_UERE é uma entrada.
Disponibilidade multiconstelação validated src/orbit.rs: [[constellations]] adicionais são mescladas em um único conjunto de satélites para visibilidade/DOP; um teste de contagem combinada confirma a união.
Ionosfera de transmissã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 transmitido 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 fato, compilada do código-fonte e executada de forma independente) em 10 casos que cobrem elevação, azimute, hora local e dois conjuntos de coeficientes (o padrão do kshana + o do RTKLIB), a < 1e-4 m. O leitor de mapas de TEC (TEC: conteúdo total de elétrons) IONEX (IONosphere map EXchange format) para arquivos GIM (mapa global da ionosfera) agora existe (src/ionex.rs, parse_ionex com interpolação espacial e temporal bilinear e um mapeamento oblíquo, testado unitariamente no próprio crate); uma verificação cruzada dessa interpolação contra um produto GIM real do CODE (Center for Orbit Determination in Europe) ainda é uma continuação. O próprio modelo transmitido é validado externamente.
Núcleo de detecção RAIM/ARAIM (ARAIM: monitoramento autônomo avançado de integridade pelo receptor) (χ² / χ² não central / normal) → limiares e multiplicadores validated src/raim.rs: o limiar de detecção de snapshot / separação de solução / ARAIM (chi2_quantile), a não centralidade de detecção perdida 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) nas faixas operacionais de P_fa / P_md / redundância, a ≤ 1e-6 relativo. A geometria que envolve o núcleo (a inclinação/covariância de (GᵀG)⁻¹) é o núcleo de DOP validado pelo gnss_lib_py. Escopo: esta linha fixa o núcleo estatístico. O valor do nível de proteção da alocação MHSS (separação de solução de múltiplas hipóteses) do ARAIM é fixado separadamente contra o exemplo resolvido publicado do 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; veja a nota de 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 LS ponderado (LS: mínimos quadrados) → eixo maior da elipse de erro horizontal + σ vertical, escalado 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 transmissão do GEO (órbita geoestacionária) PRN120 + RINEX real (Receiver Independent Exchange Format) BUTE/Budapeste, 2017-02-19), em 6 épocas a < 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 usuário) + ionosfera GIVE (erro vertical ionosférico de grade) + tropo + aerotransportado). O gLAB v6.0.0 da ESA (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 (padrões mínimos de desempenho operacional) → 5,33; o kshana usa o Φ⁻¹(1−5e-8)=5.3267 exato (VPL ~0,06 % menor), de modo 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 TLEs (linha 2 / kepleriana) validated (interpretação) src/tle.rs: interpreta 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 a ida e volta para os elementos e o período corretos. Para um bloco somente com a linha 2, a propagação é a de dois corpos do mecanismo (+ J2 opcional) dos elementos médios — adequada para um instantâneo de uma época comum, divergindo do SGP4 (Simplified General Perturbations 4) com o tempo.
Propagação SGP4 / SDP4 (Simplified Deep-space Perturbations 4) (TLEs completos) validated src/sgp4.rs: SGP4 completo de órbita próxima à Terra + SDP4 de espaço profundo (secular/periódico lunissolar + ressonância geopotencial de 12 h / 24 h). Validado em tests/sgp4_verification.rs contra os vetores oficiais AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 ("Revisiting Spacetrack Report #3") — todos os 666 estados de referência (órbita próxima à Terra, espaço profundo, ressonante, casos de código de erro) coincidem com um erro de posição de pior caso de ≈ 4,1 mm. Um conjunto completo de duas linhas (linha 1 + linha 2) é propagado com o SGP4; somente 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 usuário e os satélites (sem redução TEME→ECEF (ECEF: centrado e fixo na Terra) — adequado para geometria de disponibilidade/DOP).
Nutação IAU (União Astronômica Internacional) 2000A / 2000B + redução TEME→GCRS (GCRS: Geocentric Celestial Reference System) validated src/nutation.rs: a série IAU 2000A completa (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 contra os 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 a 1e-13 rad. A tabela 2000A é gerada por máquina a partir da fonte nut00a do ERFA por tools/gen_nut00a.py (reproduz o nutation_iau2000a_data.rs registrado 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 às propriedades de rotação própria/ida e volta/precessão mais nutação, a matriz de nutação contra o numat do ERFA elemento por elemento a 1e-14, e toda a cadeia TEME→GCRS contra o exemplo TEME→GCRF publicado de Vallado (AIAA 2006-6753, 2004-04-06) a 0,11 m (tests/frame_reference_vectors.rs); até que essa verificação de ponta a ponta fosse acrescentada, a matriz de nutação carregava Δψ com o sinal errado, uma rotação de 2·Δψ (cerca de 25″) que os testes de propriedade não conseguiam ver (veja CHANGELOG, Unreleased, Fixed); 2000A e 2000B concordam a < 1 mas, como exigido. A cadeia é baseada em equinócio/GMST (GMST: tempo sideral médio de Greenwich); a redução CIO (X,Y,s) sem equinócio e sua verificação cruzada numérica independente com ANISE/SPICE (ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris — um toolkit de geometria planetária em Rust puro; SPICE: Spacecraft, Planet, Instrument, C-matrix, Events) (≤ 3,6 m na órbita do GNSS, bem dentro da meta < 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 de harmônicos esféricos normalizado 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 contra o arquivo da IAGA (g₁⁰=−29350,0, g₁¹=−1410,3, h₁¹=4545,5 nT); (2) a síntese de grau 1 reproduz o campo exato do dipolo inclinado em forma fechada (B_r,B_θ,B_φ) a 1e-6; (3) o campo analítico completo de grau 13 é igual a −∇V do potencial escalar (diferenças finitas, a 1e-4) — exercitando as derivadas de Legendre e o termo 1/sinθ de ponta a ponta; (4) o eixo do dipolo reproduz o conhecido polo norte geomagnético (~80,7°N, −72,7°E) e a intensidade do dipolo (~29,7 µT), e o campo global fica na faixa física de 22–67 µT com o sinal correto de inclinação por hemisfério; e (5) referência independente externa — a síntese completa reproduz os valores do serviço web do IGRF-14 do British Geological Survey em 2025,0 (geodésico, altitude WGS-84 (WGS: World Geodetic System)) a < 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-terrestre sem equinócio. As coordenadas (X, Y) do CIP (Celestial Intermediate Pole) e a série de 66 termos do localizador CIO s são validadas bit a bit contra o vetor eraXys06a do SOFA/ERFA 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) contra eraC2ixys (todos os nove elementos a 1e-12); o ângulo de rotação da Terra (ERA) contra eraEra00(2400000.5, 54388.0) = 0,4022837240028158102 (1e-12). A tabela s é gerada por máquina a partir da referência s06.c do ERFA 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 mostrada consistente com a redução TEME legada de equinócio/GMST-1982 a menos de 1 m em um raio de 7.000 km (as convenções diferem em cerca de 5 cm ali). 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)) rotacionando 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 aos dois lados, ao longo de oito épocas trimestrais 2020–2023. As duas realizações independentes de referencial concordam a 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 de GNSS (ângulo médio 0,023″). Esta é a verificação cruzada de referencial "< 10 m" do ROADMAP, entregue; 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 sendo os vetores SOFA/ERFA acima). O ANISE é um crate MPL-2.0 (MPL: Mozilla Public License) / edition-2024, de modo que a verificação fica em um subcrate autônomo, excluído do workspace, que nunca toca o grafo de dependências publicado do kshana nem qualquer gate de CI padrão.
Ida e volta da exportação SP3 (Standard Product 3, o formato de órbita precisa) (constelação → SP3-c → nova leitura) validated tests/sp3_export_roundtrip.rs: o instantâneo real do gps-ops do Celestrak (30 satélites GPS) é propagado com SGP4, exportado para SP3-c (Sp3File::from_propagators → to_sp3_string), lido novamente (parse_sp3), e as posições ECEF recuperadas são comparadas com a verdade do SGP4 em cada época ao longo de 24 h — pior resíduo < 0,5 m (a serialização em milímetros do gravador; a tolerância de 10 m, de nível TLE (TLE: conjunto de elementos de duas linhas), do marco é atendida com larga margem). O caminho --export-sp3 da CLI (interface de linha de comando) também é coberto: o cenário de órbita incluído exporta um SP3 de 30 satélites que pode ser lido novamente, e um cenário que não é de órbita é rejeitado.
Geometria real da constelação GPS a partir de TLEs (SGP4 → ECEF) validated tests/igs_real_data.rs: um instantâneo gps-ops genuíno do Celestrak (2021-07-28, 30 satélites GPS operacionais; procedência em tests/fixtures/celestrak/NOTICE) é lido e cada satélite é propagado pelo núcleo SGP4 validado até um instante comum, girado de TEME para ECEF. Afirma que a constelação completa pousa na camada GPS MEO (órbita terrestre média) dentro de 1%, e que, de um local de latitude média com céu aberto, o conjunto real de todos os satélites em visada (nove satélites) rende PDOP 1,64 com a diluição vertical superando a horizontal (como deve ser para um usuário em solo). Isso exercita o SGP4 em uma constelação real, ao lado dos caminhos de dados reais SP3 (preciso) e RINEX (transmitido).
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 para que o semieixo maior do SGP4 caia na camada-alvo) e propagado pelo núcleo validado. Testes: um Walker de 24 satélites semelhante ao GPS fica na camada MEO dentro de 1%, os planos são espaçados exatamente 90° em RAAN (ascensão reta do nó ascendente) recuperada a partir das normais das órbitas, e o movimento médio reproduz o período de ~718 min da camada GPS.
Varredura de PDOP da constelação + FoMs (figuras de mérito) de cobertura/revisita validated (monotonicidade) src/walker.rs: pdop_sweep tabula a cobertura e o PDOP mediano/pior sobre uma grade {planes × sats × inclination}; coverage_revisit informa a fração de cobertura e as lacunas de revisita em um ponto do solo. Validado pelas monotonicidades físicas que um estudo de compromisso de projeto deve obedecer: adicionar satélites nunca reduz a cobertura e reduz estritamente o PDOP mediano (um projeto completo de 24 satélites cobre continuamente com PDOP ~1,7), e adensar uma constelação reduzida diminui estritamente a pior lacuna de revisita. A lacuna média de revisita nunca excede a máxima. São tabelas de compromisso geométrico, não um orçamento de enlace/cobertura certificado.

Enquadramento honesto: esta é uma camada geométrica determinística (órbitas circulares, Terra esférica de raio médio 6371 km, linha de visada pura). Ela estabelece a disponibilidade e a exatidão de posição geométrica (diluição de precisão × um orçamento de erro de distância representativo) a partir da geometria real, não uma solução de navegação com efemérides precisas. A referência orbit-gnss-challenged.toml coloca uma espaçonave dentro da camada GNSS: ela mantém uma posição apenas em ~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 em 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 de forças hierárquico (src/forces.rs) com os integradores adaptativos (src/integrator.rs). Cada termo abaixo é validado contra a verdade analítica ou uma forma fechada derivada à mão; as perturbações ficam desligadas por padrão, de modo que os goldens publicados permanecem intactos. O modelo composto também é verificado de forma cruzada contra outra ferramenta: tests/numerical_cowell_propagator_reference.rs executa 11 casos LEO e GTO (órbita de transferência geoestacionária), 275 épocas horárias, contra o 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 caso de 0,08 m ao longo de 24 h (VALIDATED na matriz); o nível de arrasto é apenas caracterizado (333 m) e permanece MODELLED.

Termo Status Evidências
Propagador de Cowell contra a verdade analítica de Kepler validated src/propagator.rs: a órbita sem perturbações (dois corpos) reproduz a solução exata de Kepler em variáveis universais com precisão submétrica ao longo de uma órbita LEO de 24 h (um critério mais rígido que "contra uma referência numérica < 10 m"); a energia específica e o momento angular se conservam em ~1e-9 relativo; a regressão nodal de J2 reproduz a forma fechada j2_secular_rates 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 Newton não converge (perto do perigeu, e = 0,999). O solve_kepler_robust robusto (ponto de partida de Markley 1995, src/kepler.rs) converge ali e em todo o intervalo 0 ≤ e ≤ 0,999999, dentro de 0,9 ε·|E| das raízes 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 queda de erro de ~16× por passo reduzido à 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 à metade a corta em ~32×), integra o oscilador por 50 períodos conservando a energia até < 1e-6 e chega ao mesmo ponto final com a mesma tolerância em menos avaliações de função que a duplicação de passo; propagate_dopri satisfaz o mesmo critério submétrico de Kepler e concorda com o caminho RK4 até < 1 m em uma órbita J2..J6. O DOP853 (integrate_dop853): o par 8(5.3) de Hairer com saída densa reproduz o passo do DOP853 do SciPy 1.18.1 passo a passo (um único passo dentro de 5.6e-15; contagens de passos idênticas nas execuções com e = 0,7 e de 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 exata de Kepler tão de perto quanto o SciPy (tests/dop853_scipy_oracle.rs).
Campo de harmônicos zonais J2–J6 validated src/forces.rs: zonal_accel é verificado de três maneiras — ele se reduz ao j2_accel, validado com 666 vetores, até a precisão de máquina quando restrito a [J2]; ele coincide com o gradiente numérico do seu próprio potencial zonal ao longo de todo o campo J2..J6 (o padrão-ouro do campo conservativo); 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 em ~1e-8 ao longo de um dia.
Gravidade de terceiro corpo (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 LEO de livro-texto (~5e-7 m/s² Sol, ~1.1e-6 m/s² Lua). As efemérides do Sol de baixa precisão de Montenbruck–Gill atingem âncoras J2000 derivadas à mão (distância do periélio ≈ 1.471e11 m, declinação do solstício ~−23°, movimento de ~1°/dia); as efemérides da Lua permanecem 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 voltam a menos de 1° após um mês sideral. A ligação do lado direito (RHS) dirigida pela época é exata bit a bit (o termo RHS é igual a third_body_accel na posição amostrada em t = 0 e t = 1 dia), e um deslocamento 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êntico bit a bit à forma fechada em pleno sol, fixa a pressão de radiação a 1 AU (AU: unidade astronômica) em ≈ 4.5398e-6 N/m², fica na faixa LEO de ~1.36e-7 m/s² empurrando para longe do Sol, cai a um quarto quando a distância ao Sol dobra (inverso do quadrado) e é exatamente zero no fundo da umbra. conical_shadow dá ν = 1 em pleno sol e ν = 0 em umbra total (exato), uma penumbra suave e monotônica que sobe de 0 → 1 ao longo da faixa [b−a, b+a], a qual se estende além do cilindro umbral.
Arrasto atmosférico (primeiro termo dependente da velocidade) validated src/forces.rs: atmospheric_density (Vallado Tabela 8-4, exponencial por partes) ancora em 1,225 kg/m³ ao nível do mar, limita abaixo da superfície, decresce monotonicamente através da LEO, fica na faixa de ~1e-12 kg/m³ a 400 km com uma altura de escala física recuperada de ~58 km; drag_accel se opõe à velocidade relativa de co-rotação na magnitude LEO de ~2e-6 m/s². A verificação característica: uma órbita de 300 km perde energia específica monotonicamente e seu semieixo maior decai de forma limitada, ~km/dia, enquanto a linha de base no vácuo conserva a energia até < 1e-9.
Correção relativística pós-newtoniana (Schwarzschild) validated src/forces.rs: relativistic_accel (forma β = γ = 1 do IERS a = (μ/c²r³)·{[4μ/r − v²]·r + 4(r·v)·v}) colapsa em uma órbita circular na forma fechada 3μ²/(c²r³)·r̂ (radial, para fora, componentes fora do eixo exatamente zero), mostra a razão LEO ≈1.9e-9 em relação a dois corpos de livro-texto, coincide com a forma simplificada à mão em velocidade radial μ(4μ + 3v²r)/(c²r³) até < 1e-12 e, no propagador, perturba a órbita mantendo o semieixo maior abaixo de um metro/dia — o oposto conservativo do decaimento por arrasto.

Escopo honesto: os padrões ForceModel publicados integram o campo zonal. O campo tesseral EGM2008 de alto grau (src/gravity_sh.rs, grau/ordem 70), as marés sólida/oceânica/atmosférica (src/tides.rs) e o termo de arrasto de referencial de Lense–Thirring agora estão implementados e compostos no modelo de forças preciso de ajuste de efemérides (src/precise_od.rs — veja abaixo). O campo tesseral também é um termo opcional do ForceModel de Cowell (propagator::Geopotential, desligado por padrão), validado contra o HolmesFeatherstoneAttractionModel do Orekit 12,2 até grau/ordem 70 (6 casos ao longo de 24 h, pior |Δr| 0,036 m; tests/cowell_tesseral_orekit_oracle.rs). Existem dois avaliadores de campo: o histórico acceleration (derivadas parciais esféricas; válido até o 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é o 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 até 7.3e-17 m/s² em oito pontos até o grau 2190; permanece MODELLED porque o pyshtools não atingiu o limiar perto dos polos fixado antecipadamente (uma verificação com mpmath situa o erro no pyshtools; xval/high-degree-gravity/). Uma órbita 200×200 de 24 h concorda com o Orekit até 0,13 m, mas seu controle de sensibilidade de grau 70 fixado antecipadamente não foi atingido (0,73 m < 1 m), de modo que os graus 71–200 são caracterizados, não validados, em órbita (xval/cowell-tesseral-200-orekit/). A densidade termosférica NRLMSISE-00 (NRLMSISE: modelo de atmosfera estendida do Naval Research Laboratory com espectrômetro de massa e radar de espalhamento incoerente) está portada (src/nrlmsise00.rs: idêntica bit a bit à porta em C de domínio público em 720 pontos, dentro de 1.9e-6 relativo do pymsis, com os 17 casos de teste publicados reproduzidos; tests/nrlmsise00_reference.rs) e é um nível opcional de densidade de arrasto (forces::DensityModel, ForceModel::drag_density; o padrão continua sendo o modelo estático de Vallado). Isso valida a porta, não a exatidão do modelo contra a densidade medida. O Sol e a Lua DE440 (DE: efemérides de desenvolvimento) são um nível opcional de efemérides (ForceModel::with_ephemeris). A sombra de SRP da Terra oblata WGS-84 é opcional (ForceModel::srp_shadow), concordando com a razão de iluminação do Orekit 12,2 dentro de 7.4e-9 em 2400 geometrias (tests/srp_oblate_shadow_orekit_oracle.rs); sua variante com escurecimento de limbo não tem referência independente externa (MODELLED). O nível de arrasto NRLMSISE-00 concorda com o próprio arrasto NRLMSISE-00 do Orekit 12,2 ao longo de 24 h até 0,03 m contra até 142 km de deslocamento por arrasto (tests/drag_tier_orekit_oracle.rs, VALIDATED sob as convenções compartilhadas). Uma verificação cruzada com o GMAT (General Mission Analysis Tool) continua sendo um passo seguinte.

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 contra os próprios números publicados das convenções — não contra outra ferramenta.

Contribuição Status Evidências
Maré terrestre sólida (IERS Eq. 6,6 / 6.8b / 6,14) validated tests/tides_iers.rs: a maré permanente (frequência zero) ΔC̄₂₀ fica dentro de 1 % do valor publicado pelo IERS, −4,1736×10⁻⁹ (números de Love anelásticos); o exemplo resolvido K1 do Passo 2 é reproduzido bit a bit (amplitudes seno/cosseno 470,9 / −30,2 ×10⁻¹² até 0,1×10⁻¹²); o caminho de Legendre normalizado é fixado por valores à mão em 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, interpretação de Doodson→multiplicador) reproduz exatamente os coeficientes M2 (2.2) da fonte; a fase de Doodson de K1 é igual a θ_g + π; a magnitude setorial de grau 2 é física e uma ordem abaixo da maré sólida.
Maré atmosférica de ar S2 (Ray 2001, NASA (National Aeronautics and Space Administration) GSFC (Goddard Space Flight Center)) validated Os harmônicos de Ray incorporados são convertidos pela relação de carga superficial (Eq. 6,21) em um ΔC̄₂₂ de pico ≈ 4×10⁻¹¹ (~10 % do termo M2 oceânico). Ressalva honesta: não existe referência independente publicada de coeficiente de geopotencial para a maré de ar, de modo que ela é validada por integridade da fonte + magnitude, um critério mais fraco que o das marés sólida/oceânica.

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

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

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

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

Aspecto Status 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 em um ajuste linear, recupera os parâmetros verdadeiros em um ajuste não linear a·exp(b·t) e resolve uma multilateração de distâncias em 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 rastreamento de distância por estações terrestres (propagado sobre o modelo de forças de dois corpos + J2) com precisão submétrica / mm·s⁻¹ a partir de distâncias sem ruído, e com ~2 m com 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 dentro de dezenas de metros na mesma dinâmica e no mesmo modelo de distância.
OD em lote e sequencial contra um estimador independente validated tests/batch_sequential_orbit_determination_reference.rs: 8 cenários (6 LEO/MEO/excêntricos sem ruído com 3–4 estações, 2 com σ = 5 m) contra os estimadores de mínimos quadrados em lote e de Kalman do Orekit 12,2 em um modelo de forças equivalente; pior caso em lote 1e-3 m / 1e-6 m/s, sequencial 0,9 m.

| OD em lote com taxa de variação da distância / az-el e máscara de elevação | modelled (comparação externa, um limiar fixado antecipadamente não atingido) | tests/od_tracking_measurements_reference.rs: 8 cenários contra os 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 dentro de 5.8e-8 m / 6.3e-10 m/s / 1.4e-13 rad, matriz de transição de estado dentro de 1.2e-14, estados ruidosos dentro de 1,74 cm e RMS por tipo dentro de 2.7e-4; o limiar sem ruído ≤ 1 cm de estado, fixado antecipadamente, não é atingido em 2 de 4 cenários (1,46 e 1,74 cm; a própria estimativa do Orekit fica tão longe da sua verdade simulada, a do kshana dentro de 1e-8 m). Veja xval/od-measurements-orekit/RESULTS.md. |

Escopo 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 caminho 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 há filtro sequencial para taxa de variação da distância ou ângulos. O caminho somente de distância mantém seu jacobiano por diferenças finitas. (O motor completo de ajuste de efemérides com todas as forças, abaixo, traz 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 de mínimos quadrados em lote de observação de posição, preciso e com todas as forças: o geopotencial tesseral EGM2008 (avaliado no referencial fixo à Terra por meio da redução CIO) composto com o terceiro corpo Sol/Lua, SRP, arrasto, GR (relatividade geral) de Schwarzschild/Lense–Thirring e as marés acima, ajustado a uma trilha de posições inerciais com um jacobiano de matriz de transição de estado variacional. Validado em dados sintéticos, em que a verdade é o próprio integrador do Kshana, de modo que cada resíduo é do estimador e não da dinâmica.

Aspecto Status 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 cada época (o termo central é invariante por rotação); o grau 8 acrescenta o achatamento da banda J2; o terceiro corpo Sol e o termo de maré se conectam 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 de arco inteiro com < 1×10⁻⁶ relativo tanto na resposta de posição quanto na de velocidade — a verificação cruzada documentada STM↔FD. Φ(0) = I; os propagadores aumentado e simples concordam em nível submilimétrico.
Autorrecuperação do mínimo quadrado em lote validated Um arco Kshana de 1 hora (grau 6 + Sol + Lua) observado sem ruído é recuperado de um deslocamento de 150 m / 0,1 m·s⁻¹ até o estado de época dentro 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 se estabiliza no piso de ruído de ~σ, sem viés. O C_R de SRP é recuperado de 1,0 até dentro de 1 % da verdade de 1,4.
Edição de valores atípicos e relatório em RTN validated Um erro grosseiro de 500 m é rejeitado pela edição pós-ajuste de 5-σ (exatamente uma observação), deixando um ajuste limpo em nível milimétrico; os resíduos são relatados decompostos em radial/transversal/normal, além de 3-D.
Nível de aceleração empírica (constante em RTN + 1-CPR (CPR: ciclo por revolução)) validated Os nove parâmetros empíricos com restrição a priori permanecem abaixo de 1×10⁻⁸ m·s⁻² sobre uma verdade sem componente empírica, sem perturbar o ajuste; uma aceleração transversal constante de 3×10⁻⁸ m·s⁻² injetada na verdade é recuperada dentro de 20 %.

Escopo honesto: a onda sintética usa parâmetros nominais de orientação da Terra (EOP: UT1 (Universal Time 1, tempo de rotação da Terra) ≈ TT (Tempo Terrestre), sem movimento polar) — exato para a autorrecuperação, pois o mesmo modelo gera e ajusta o arco. As validações com conjuntos de dados de agências sobrepõem EOP reais finals2000A e verdade SP3/SPK (SPK: kernel de efemérides planetárias) a este motor por meio 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 Status Evidências
Galileo MEO — < 5 m GREEN validated O motor de todas as forças do Kshana ajustado a uma fatia literal da própria órbita final da ESA/ESOC (ESOC: Centro Europeu de Operações Espaciais) (ESA0MGNFIN, ITRF (Referencial Terrestre Internacional)) para o Galileo E11 ao longo de 8 h, cada posição ITRF girada para o GCRS com EOP real finals2000A: RMS 3-D pós-ajuste de 0,133 m só 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 é 0,611 m. Tudo bem dentro do limiar de 5 m. Gravidade do campo convergida em d/o-8 (idêntica em d/o 8/10/12); o job workflow_dispatch executa o d/o-70 completo. Procedência + SHA-256 (SHA: Secure Hash Algorithm) em tests/fixtures/agency/NOTICE.md; registro completo em docs/AGENCY-ORBIT-VALIDATION.md.
Swarm-A LEO — < 5 m GREEN validated Motor de todas as forças (+ arrasto atmosférico) ajustado a uma fatia literal da própria órbita precisa de dinâmica reduzida do Swarm-A da ESA (SW_OPER_SP3ACOM_2_, L47, ITRF, ~430 km, ~2 cm) ao longo de 3 h em d/o-70, EOP real finals2000A pela cadeia CIO: nível dinâmico (só estado, densidade estática, C_R=1) RMS 3-D pós-ajuste de 2,687 m (RTN 0.925/2.522/0.045 m — resíduo ≈ puro arrasto ao longo da trilha), nível de dinâmica reduzida (+ acelerações empíricas CPR) 0,098 m (RTN 0.026/0.092/0.025 m) — ~10 cm contra a órbita de ~2 cm da ESA. Procedência + SHA-256 em tests/fixtures/agency/NOTICE.md; registro completo em docs/AGENCY-ORBIT-VALIDATION.md.
LRO (Lunar Reconnaissance Orbiter) lunar — validado, acima de 5 m (honesto) validated Ajuste de modelo de forças centrado na Lua (src/lunar_od.rs): o campo gravitacional 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 deslocamento fixo DE421 (efemérides de desenvolvimento 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 pelo 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, 1+2-por-revolução empírico), 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 em 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 (efemérides de desenvolvimento 440) + efemérides DE440 via ANISE) corrigiu a afirmação do fator limitante — deu 12,0 m dinâmico e 6,67 m de dinâmica reduzida, que a pilha analítica corrigida agora iguala nos dois níveis (a lacuna dinâmica anterior, 12,6 → 12,0 m, era o erro de deslocamento ME→PA), de modo que o piso operacional não é a orientação/efemérides analíticas, 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á iguala o nível DE para a órbita de dinâmica reduzida. Procedência + SHA-256 em tests/fixtures/agency/NOTICE.md; registro completo em docs/AGENCY-ORBIT-VALIDATION.md. Validado contra verdade real de agências: 3 de 3; atingindo < 5 m: 2 de 3.

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

Aspecto Status Evidências
Campo de anomalia gravitacional em harmônicos esféricos validated src/gravimeter.rs: um campo de grau baixo, totalmente normalizado, verificado contra as funções de Legendre em forma fechada (P̄₁₁ = √3·cosφ, P̄₂₀ = (√5/2)(3sin²φ−1), P̄₂₂ = (√15/2)cos²φ) e 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 comparador 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 (tamanho efetivo da amostra) abrangendo 1…N, reamostragem sistemática escolhendo índices em proporção ao peso, a combinação convexa da média ponderada, uma verossimilhança gaussiana puxando a estimativa para a medição e o determinismo da predição com semente.
Verossimilhança de correspondência de mapa + recuperação validated src/mapmatch.rs: field_likelihood atinge o pico (= 1) em uma correspondência perfeita e cai para e^(−½) a um sigma; um filtro de partículas sobre um trecho distintivo de terreno sintético recupera a posição verdadeira dentro de 0,1.
Benchmark de 60 minutos sem GPS validated run_gps_denied_gravity_nav (scenarios/gps-denied-gravity-nav.toml): uma interrupção de ~700 km / uma hora em que a solução inercial deriva para ≈ 70 km é recuperada para ≈ 145 m (< 500 m) por um comparador hierárquico do grosso ao fino — reprodutível bit a bit, estável entre realizações de ruído e comprovadamente limitado pelo refinamento (uma única grade grossa estagna em ~2 km).
Carregador de DEM (modelo digital de elevação) .hgt do SRTM (Shuttle Radar Topography Mission) + amostra bilinear (REFERÊNCIA INDEPENDENTE A) validated src/altpnt/terrain.rs / tests/terrain_nav_validation.rs: um buffer .hgt 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 arquivo mais ao norte na latitude armazenada mais alta — tudo contra a especificação do driver SRTMHGT (formato de arquivo de altura da Shuttle Radar Topography Mission) do GDAL (Geospatial Data Abstraction Library) (16 bits com sinal big-endian, linha a linha, linha norte primeiro, vazio -32768, https://gdal.org/en/stable/drivers/raster/srtmhgt.html). Uma fixture 11×11 versionada (tools/gen_terrain_fixture.py) exercita o analisador na CI; e uma tile real SRTM v3 da NASA/USGS (USGS: United States Geological Survey), de domínio público, versionada (N36W117, Vale da Morte, decimada para 6 arcos de segundo, 722 KB, tests/fixtures/terrain/N36W117_sub6.hgt) é lida na CI (não ignorada, real_srtm_committed_badwater_tile_reads_real_relief), situando Badwater Basin em ≈ −78 m dentro da faixa documentada de [−95,−70] m (levantamento NGS/NOAA (NGS: National Geodetic Survey; NOAA: National Oceanic and Atmospheric Administration) ≈ −86 m) com o máximo da tile ≈ 2161 m — a fonte da verdade é o levantamento, o DEM está sob teste (não circular). Cotas pontuais publicadas maiores (Mount Whitney 4421 m) permanecem em testes de tile completa condicionados por #[ignore].
Convergência da navegação referenciada ao terreno (TERCOM/SITAN (TERCOM: correspondência de contornos de terreno; SITAN: Sandia Inertial Terrain-Aided Navigation)) (REFERÊNCIA INDEPENDENTE B) validated run_terrain_nav (scenarios/terrain-nav.toml): uma deriva de 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 grade search_step/factor² ≈ 140 m), um corte > 100× em relação ao inercial livre — verificado contra o número injetado, nunca contra o 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 verossimilhança em produto dão um resíduo limitado < 500 m ao longo da interrupção de 60 min que, com média sobre sementes, é não pior que o melhor canal único (aditividade de informação / CRLB (limite inferior de Cramér–Rao) menor). Situa-se no regime publicado de "dezenas de metros" de CEP (erro circular provável) da navegação referenciada ao terreno (TRN) / TERCOM (https://en.wikipedia.org/wiki/TERCOM; PeerJ 2024 ESKF-TERCOM (ESKF: filtro de Kalman de estado de erro), https://peerj.com/articles/cs-3118/).

Escopo honesto: o campo gravitacional é 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 se apoia no campo principal suave IGRF mais mascons de anomalia crustal sintéticos (um mapa crustal real de alta frequência é um passo seguinte); o campo de terreno da CI para os benchmarks de correção de navegação é o DEM sintético autocontido, enquanto o leitor .hgt em si agora é validado na CI contra uma tile real SRTM v3 versionada (acima); as tiles reais de resolução total continuam condicionadas por #[ignore]. Um Monte Carlo do erro de representação do mapa continua sendo um passo seguinte. Os três navegadores agora estão 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 dados (src/inertial/)#

O modelo de erro estocástico da IMU é validado contra especificações publicadas de folhas de dados / conjuntos de dados de fabricantes — nunca contra 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 de viés é o patamar plano de Allan (tests/imu_allan_spec.rs, hermético — sem download).

Aspecto Status 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 dados da Analog Devices) recuperado a partir do ADEV(1 s) com < 5%.
Passeio aleatório de velocidade do acelerômetro validated VRW do ADIS16465 de 0,1 m/s/√hr recuperado com < 5%.
Inclinação de Allan do ruído branco validated Inclinação log-log do ramo branco do ADIS16460 −0,5 ± 0,05.
Patamar de instabilidade de viés em operação validated Instabilidade de viés (BI) do giroscópio ADIS16465 de 2,0 deg/hr recuperada como o mínimo plano de Allan com < 15%.
Segundo perfil de IMU validated NaveGo ADIS16488 (ARW 0,3 deg/√hr, VRW 0,029 m/s/√hr) ambos recuperados com < 5%.

Escopo honesto: isto valida o modelo de erro estocástico contra coeficientes de Allan de folhas de dados. O conjunto de dados de veículo KF-GINS do i2Nav-WHU (WHU: Universidade de Wuhan) é usado como uma verificação separada, condicionada aos dados: o EKF de estado de erro em malha fechada, fracamente acoplado, com o modelo de braço de alavanca GNSS, é uma linha VALIDATED da matriz de verificação (EKF GNSS/INS fracamente acoplado com braço de alavanca no conjunto de dados KF-GINS), comparada com a trajetória de referência em C++ do KF-GINS sob limiares registrados antes da execução. Ele só é executado onde o conjunto de dados é fornecido (KSHANA_KFGINS_DIR); sem ele, são executados o carregador sintético e os testes de braço de alavanca. As variantes fortemente acopladas e de fase da portadora não são cobertas por essa linha (a linha GNSS/INS fortemente acoplada com 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, acrescentar a dinâmica de Marte, uma junção de provedor de efemérides, tempo submicrossegundo e as primitivas de tempo de luz / atraso relativístico. Todo cenário terrestre existente é idêntico byte a byte — os goldens de reprodutibilidade multiplataforma (tests/cross_platform_golden.rs, tests/golden.rs) passam sem alterações e sem regeneração, verificado a cada commit.

Termo Status 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 afirma que two_body_accel_body(r,&Body::earth()) e zonal_accel_body são iguais às funções legadas da Terra com igualdade exata de bits (assert_eq!), e um arco terrestre com ForceModel padrão é idêntico byte a byte — os goldens de reprodutibilidade permanecem inalterados (mesmo SHA, sem regeneração).
Gravidade de Marte (GMM-3 (GMM: Goddard Mars Model) tesseral, 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 gravitacional da Mars Reconnaissance Orbiter) (C̄n0=−Jn/√(2n+1), o J2 faz ida e volta até 1.9604e-3) + setorial/tesseral C̄22/S̄22, C̄32/S̄32 do MRO110B2 (Konopliv et al. 2011; tabulados em Liu, Baoyin & Ma 2012), avaliados no referencial fixo ao corpo de Marte da IAU. tests/mars_dynamics.rs verifica a ida e volta, o afastamento em escala J2 em relação à 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 mais altos são carregados de um .gfc incorporado por meio de gravity_sh::from_gfc.
Referencial fixo ao corpo de Marte (polo IAU) validated src/mars_frame.rs: a rotação IAU 3-1-3 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 até 1e-12 com det +1, identidade de ida e volta, o meridiano de referência avança a prime_w_dot por dia.
Propagação em Marte / centrada no Sol validated (autoconsistência) tests/mars_propagation.rs: uma Órbita Baixa de Marte retorna ao ponto de partida após um período kepleriano (fechamento); a energia específica ε=v²/2−μ/r deriva <1e-9 ao longo do arco; a regressão nodal secular de J2 de Marte coincide com a taxa analítica de Vallado (calculada de forma independente ≈ −5,15 °/dia a 60° de incl.) com 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 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 (via ANISE), com a verdade do Horizons citada literalmente (procedê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 @ arco de 1 dia (5,97×10⁻¹⁰ da distância heliocêntrica de 2,299×10¹¹ m), crescendo para 3,3 km @ 5 d, 87,9 km @ 30 d, 1,71 Mm @ 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 (principalmente de Júpiter) e o movimento interno do sistema de Marte que a efeméride baricêntrica DE440 carrega, de modo que o crescimento é a assinatura honesta da dinâmica de n corpos não modelada, não um erro do integrador; um arco curto permanecendo uma pequena fração da distância heliocêntrica confirma que a maquinaria centrada no Sol está correta. Só é executado quando o kernel DE440 está presente ($KSHANA_ANISE_DE440S, ou obtido automaticamente, ~32 MB) — uma verificação de nível DE manual / workflow_dispatch, não um portão padrão da CI, de modo que o crate publicado e todo portão padrão permanecem byte a byte intocados.
Tempo de luz + atraso de Shapiro validated src/radiometric.rs: a solução iterativa de tempo de luz em é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 pela efeméride embutida; um emissor sintético de velocidade constante recupera a solução retardada analítica com <1e-9 s (solucionador comprovadamente independente de qualquer efeméride real); o Shapiro coincide exatamente com um valor calculado à mão e dá ~100–250 µs para um raio rasante de conjunção superior Terra–Marte.
Junção de provedor de efemérides validated src/ephem_provider.rs: trait EphemerisProvider + BuiltinEphemeris sem kernel (Sol/Lua de Montenbruck–Gill, geocêntricas); devolve None para corpos para os quais não há série (por exemplo, Marte), para os quais o provedor ANISE de nível DE é o caminho — a mesma divisão embutido-versus-ANISE de LunarEnvironment/AniseLunarEnvironment.
Tempo em duas partes + TT↔TDB validated src/timescales.rs: um TwoPartJd{day,frac} com acumulação de soma dupla de Knuth recupera intervalos submicrossegundo que o JD em f64 único 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 caminho de tempo existente em f64 único permanece inalterado.

Observáveis radiométricos de espaço profundo e Tracking Data Message do 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 relativístico D0 nas grandezas reais que uma passagem de rastreamento da Deep Space Network (DSN) ou da ESTRACK (rede europeia de rastreamento espacial) informa — distância, Doppler de uma/duas/três vias, retorno coerente do transponder, medição de distância regenerativa/PN (PN: pseudo-ruído), Δ-DOR (DOR: medição diferencial de distância em uma via) e os meios de propagação — além da entrada/saída da Tracking Data Message (TDM) CCSDS (Consultative Committee for Space Data Systems) 503.0-B, que ingere/emite um arquivo de rastreamento padrão de agência. Escopo honesto: são modelos geométricos exatos que seguem as convenções de Moyer / CCSDS; o ruído de medição é o sigma por observação fornecido pelo chamador, não embutido no modelo. Reproduzir uma passagem de rastreamento real específica exige dados TDM reais mais o solucionador de determinação de órbita de espaço profundo — isso é D2, não D1. Tudo abaixo é aditivo (os goldens de reprodutibilidade permanecem inalterados; mesmo SHA, sem regeneração).

Termo Status Evidências
Distância e Doppler de 1/2/3 vias (soluçã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 retardada (perna de descida) e adiantada (perna de subida) do 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 deslocamento 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 espaçonave que se aproxima dá um deslocamento positivo (para o azul). Testes: distância de duas vias = soma das pernas com <1 mm (~2 AU de ida e volta Terra–Sol); distância de uma via = c·τ exatamente; o Doppler de uma via coincide com o analítico −(f/c)·ρ̇ para um emissor radial de velocidade constante até ppt; o de três vias com estações no mesmo local colapsa byte a byte para o de duas vias.
Retorno coerente do transponder (razões exatas da DSN) validated src/radiometric.rs turnaround_ratio: os números racionais exatos de retorno 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 indefinido entra em pânico (falha em voz alta, 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é a precisão de 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 inequívoca em escala de resolução por chip) e pn_range_ambiguity = isso × o comprimento do código (a distância inequívoca do código PN completo c·L/(2·f_chip)), segundo a 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 inequívoca de projeto de ~151.000 km; dobrar a taxa de chips divide pela metade a ambiguidade por chip.
Δ-DOR (CCSDS 506 plano do céu) 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 deslocamento conhecido alinhado à linha de base até 1e-15 s, com a magnitude de ângulo pequeno |Δτ| ≈ B·Δθ/c e com o nulo (uma espaçonave co-alinhada com o quasar dá atraso diferencial exatamente zero).
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 coronal TEC ∝ 1/sin(SEP) de classe Cassini (substituto analítico, não uma coroa 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 coroa aumenta em direção à conjunção; e um TEC injetado é recuperado com <1 % (na verdade ≪ 1e-9 sem ruído) — dual_frequency_recovers_injected_plasma.
Meios tropo / iono (reutilizam modelos GNSS) validated (modelo) src/radiometric.rs tropo_delay/iono_delay: o segmento de estação terrestre de espaço profundo atravessa a mesma atmosfera terrestre que o pacote GNSS já modela, de modo que estes delegam para gnss_sim::tropo_delay_m (zênite de Saastamoinen + mapeamento de Niell, não dispersivo) e gnss_sim::klobuchar_delay_m (iono transmitido). Testado ligado + com sinal físico: tropo positivo e maior em baixa elevação do que no zênite; iono um atraso oblíquo não negativo (a fidelidade numérica é a dos próprios testes referenciados a folhas de dados do pacote GNSS).
Análise / emissão CCSDS-TDM 503 + ponte radiométrica validated src/ccsds_tdm.rs: um leitor e gravador KVN (notação palavra-chave-valor) CCSDS 503.0-B-2 (cabeçalho + segmentos META_START…META_STOP / DATA_START…DATA_STOP; registros RANGE/DOPPLER_*/ANGLE_*/*_FREQ). Testes (#[cfg(test)] + tests/fixtures/deepspace/reference.tdm): a fixture de referência é analisada nos campos nomeados esperados; analisar→emitir→analisar é uma estrutura igual (ida e volta semântica); a ponte to_radiometric_obs mapeia os registros 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 arquivo de vários segmentos reinicia 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 é deixado em 0.0 para o chamador 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, de modo que o benchmark honesto é que o erro numérico do próprio modelo está muito abaixo do piso de medição publicado da DSN/ESTRACK — o modelo não é o gargalo de exatidão, o σ fornecido pelo chamador é. Cada teste calcula um observável de duas maneiras independentes (ou recupera uma verdade injetada) e afirma que o resíduo está abaixo do piso: a distância faz ida e volta com <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 em forma fechada exata v/(1+v/c) até ~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ância em f64 a ~1 AU, uma característica numérica, não um erro de modelagem; o Δ-DOR reproduz a projeção em forma fechada até 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 com ≪ 1 %; e o atraso de Shapiro fica na faixa publicada de ~100–250 µs da conjunção Terra–Marte. Os valores publicados são declarados e rotulados como especificações da DSN de ordem de grandeza, não como números exatos fabricados, e a documentação do módulo é explícita ao dizer que este benchmark mede a PRECISÃO DO MODELO, não a reprodução de uma passagem real (isso é D2 + TDM real).

OD de espaço profundo de dinâmica reduzida — 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 em uma trajetória recuperada — um Square-Root Information Filter (SRIF) numericamente robusto com acelerações empíricas de dinâmica reduzida, um relógio de bordo de três estados, um modelo de arrasto de Marte e as derivadas parciais da medição radiométrica que ligam distância/Doppler ao estado do filtro, fechado de ponta a ponta por uma recuperação sintética de determinação de órbita em órbita baixa de Marte (LMO). Escopo honesto: a recuperação é um circuito fechado sintético (a verdade e o filtro compartilham o mesmo propagador de Marte, e as observações são o mesmo modelo de observáveis geométricos que o filtro inverte, mais ruído gaussiano injetado) — ela valida a maquinaria 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 a kernel (D0.8b). Tudo abaixo é aditivo (os goldens de reprodutibilidade permanecem inalterados; mesmo SHA, sem regeneração).

Termo Status 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 com Vec<f64> puro (sem nalgebra). Testes: o SRIF sequencial coincide com a solução de mínimos quadrados ponderados em lote (gauss_newton) em estado e covariância até 1e-9 em um problema linear-gaussiano projetado (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 Cholesky tem sucesso); e a informação se acumula (o traço de P diminui monotonicamente à medida que medições de geometria idêntica são incorporadas).
Acelerações empíricas de dinâmica reduzida (ajuste cruzeiro↔LMO) validated src/deepspace_od.rs ReducedDynamicOd: o filtro de nove estados [r; v; a_emp] com acelerações empíricas RTN como estados de processo de Gauss–Markov de primeira ordem, a técnica de dinâmica reduzida do JPL/ESOC exposta como um único parâmetro dynamic_tightness (quase dinâmico ⇒ suaviza o ruído em um arco balístico; quase cinemático ⇒ o nível empírico absorve uma manobra/arrasto não modelado). 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 ruidoso (reduced_dynamic_tracks_maneuver); variar a rigidez move o resíduo pós-ajuste monotonicamente, um contínuo e não uma chave (tuning_is_a_continuum).
Relógio de bordo de 3 estados (fase/freq/deriva, Q de van Loan, 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 exato de van Loan e uma atualização estabilizada de Joseph. Testes: o Q discretizado coincide com o polinômio de van Loan derivado à mão até 1e-12 e se reduz exatamente ao Q do KalmanClock de dois estados quando a deriva = 0 (um superconjunto estrito); uma propagação livre de vários passos faz a variância de fase crescer até a relação analítica de holdover do NIST SP 1065 por meio do termo de passeio de execução T⁵; o estado de deriva recupera uma verdadeira rampa de envelhecimento com <5 %; um perfil de Allan de classe USO é recuperado (ADEV sobreposto em τ=1 s dentro do critério de calibração) e o estimador permanece consistente em NEES (>95 % dentro de 3σ) e PSD durante uma execução com Q/R severo. ClockClass traz os valores σ_y(1 s) citados de CSAC/USO/DSAC (USO: oscilador ultraestável; DSAC: Deep Space Atomic Clock) e o piso Doppler Δv = c·σ_y.
Arrasto atmosférico 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 partes (superfície ~0,020 kg/m³, altura de escala perto da superfície ~11 km, a média de baixa poeira do Mars-GRAM 2010 / MCD (Mars Climate Database)) e a aceleração de arrasto quadrática tomada em relação à atmosfera de Marte em co-rotação, mais uma variante ..._scaled que o SRIF pode multiplicar. Testes: a densidade decresce monotônica e continuamente entre as faixas, a altura de escala recuperada perto da superfície é a física de ~11 km, o arrasto é estritamente antiparalelo à velocidade relativa (o produto vetorial se anula até 1e-12) com uma magnitude LMO razoável de ~3e-4 m/s², e é linear no termo balístico. Escopo 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 de frequência do relógio no Doppler de uma via ∂ρ̇_obs/∂y = c. Testes: ambas as derivadas parciais coincidem com uma diferença finita central do observável até 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 a mantém definida positiva (PD), e uma atualização Doppler reduz a variância de 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 verdadeiro de Órbita Baixa de Marte propagado sob a gravidade Body::mars_gmm3(4) gera distância (σ=1 m) + Doppler (σ=0,1 mm/s) de duas vias com ruído em relação a duas estações de rastreamento; o SRIF de dinâmica reduzida o recupera a partir de um estado inicial perturbado em ~2,7 km. Alcançado: RMS de posição convergido ≈ 0,2 m (submétrico, bem 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 fatorada definida positiva em cada época (a garantia do SRIF, afirmada o tempo todo). O contínuo de ajuste cruzeiro→LMO é exercitado de ponta a ponta: com uma verdade de arrasto não modelado que o modelo do filtro não tem, o parâmetro de dinâmica reduzida (rigidez 1) recupera ~14 m contra ~677 m da execução quase dinâmica (rigidez 0) — uma melhoria de 48× devido ao nível empírico absorver o arrasto. Escopo 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 a kernel (D0.8b), nunca executado aqui, sem rede.

Cenário PNT de espaço profundo e fusão de 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 Mars-PNT executável que reúne o corpo / referencial de Marte D0, os observáveis radiométricos D1 e a OD de dinâmica reduzida D2 em um único tipo de cenário mars-pnt. Ele modela uma pequena constelação de retransmissão ao estilo MARCONI que transmite um sinal no espaço de uma via (acoplado ao relógio) e retransmite um enlace de duas vias (coerente, livre de relógio) para uma estação de espaço profundo, e navega três usuários de referência (transferência para Marte, orbitador em Órbita Baixa de Marte, ponto fixo na superfície) pelo estimador de fusão conjunta de uma via + duas vias D3.1 — um SRIF de doze estados que amplia o bloco de órbita/empírico de dinâmica reduzida do D2 com um relógio de bordo de três estados. Escopo honesto: toda figura de mérito é o limite de covariância formal do estimador (posição 1σ / 3σ por época) e o RMS alcançado contra uma verdade de circuito fechado sintético (a verdade e o filtro compartilham a mesma dinâmica de Marte e o mesmo modelo de observáveis geométricos, mais ruído gaussiano injetado) — uma FoM de navegação simulada, NÃO um nível de proteção certificado para aviação, e NÃO uma afirmação de voo (sem modelo de falhas certificado, sem monitor de integridade, sem dados de rastreamento reais). Tudo abaixo é aditivo (os goldens de reprodutibilidade permanecem inalterados; mesmo SHA, sem regeneração).

Termo Status Evidências
Fusão radiométrica conjunta de 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 ampliado com os três estados de relógio de bordo (ClockState3), ingerindo uma série temporal mista de distância/Doppler de duas vias (livre de relógio, fixando a órbita — colunas de relógio nulas na derivada parcial) e de uma via (acoplado ao relógio — a derivada parcial de frequência ∂ρ̇_obs/∂y = c) por meio de fused_observable. A estrutura calibrar-e-depois-navegar-livremente: as passagens de duas vias fixam a órbita, os dados de uma via então calibram o relógio e propagam livremente 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 qualquer tipo de enlace isolado; o erro de propagação livre de uma execução somente de uma via cresce com a lacuna entre passagens de duas vias de forma consistente com o limite de Allan da classe do relógio; a covariância conjunta permanece SPD (simétrica definida positiva) o tempo todo.
Constelação MARCONI (raio areoestacionário, ocultação) validated (model) src/mars_pnt.rs MarconiConstellation: um conjunto de cinco retransmissores — três retransmissores areoestacionários em r = (μ/ω²)^{1/3} ≈ 20 428 km (o raio síncrono de Marte a partir de μ/taxa de rotação publicados; testado na faixa de 20.400–20.500 km) igualmente espaçados em 120° de longitude com inclinação de 5°, mais dois retransmissores em uma órbita circular mais alta (1,4× areoestacionária) inclinada em 60° para cobertura no plano do céu. Os estados dos retransmissores por época são integrados adiante sob a gravidade mars_gmm3; o teste de visibilidade por ocultação por Marte é a geometria corda-livra-esfera (chord_clears_sphere, testado: um retransmissor diametralmente oposto está oculto, um retransmissor sobre a cabeça está visível). Escopo honesto: uma geometria mínima representativa de transmissão mais retransmissão construída a partir de constantes de Marte publicadas — não um projeto específico de constelação de voo.
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 da CLI, a ligação Python, a compilação WASM/playground e o despacho do servidor MCP encaminham todos para ele (src/api.rs, teste de ida e volta 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 traz um fom_note explícito rotulando a FoM como um limite de covariância (não um PL certificado), e as saídas summary / to_svg repetem o rótulo de honestidade.
Metas MARCONI / LightShip reproduzidas: orbitador < 100 m, rover < 15 m validated (synthetic closed-loop, under stated assumptions) tests/mars_pnt_targets.rs: as metas publicadas do programa MARCONI / LightShip (orbitador < 100 m, superfície/rover < 15 m) reproduzidas em simulação. Premissas compartilhadas: a constelação MARCONI padrão de cinco retransmissores; cada retransmissor à vista dá uma distância+Doppler de uma via por época; uma passagem coerente de estação de duas vias a cada 30 min; ruído de classe DSN (σ de distância = 1 m, σ de Doppler = 0,1 mm/s); o filtro de fusão conjunta de órbita de dinâmica reduzida + relógio de 3 estados iniciado a partir de um estado a priori perturbado em ~2,7 km (rigidez 0,1); FoM = RMS de posição 3-D convergido na segunda metade do arco em relação à verdade sintética. Orbitador (LMO ~400 km / 60° de incl., relógio USO, cadência de 60 s, arco de ~2 h ≈ uma órbita): RMS convergido alcançado ≈ 0,40 m ≪ a meta de 100 m (média de 3,1 retransmissores à vista, covariância SPD o tempo todo). Rover (ponto fixo equatorial na superfície, relógio USO, cadência de 30 s, arco de ~2 h): RMS convergido alcançado ≈ 5,1 m < a meta de 15 m (média de 3,0 retransmissores à vista, covariância SPD). Ambas as metas foram atingidas sem afrouxar nenhuma asserção — o USO é a classe menos capaz entre as classes realistas de relógio de bordo (um DSAC só ajudaria) e a cadência de 30 min de duas vias é conservadora para um cronograma rotineiro de rede de retransmissão, de modo que as premissas são fisicamente justas para um sistema de classe MARCONI, e não ajustadas para passar. Escopo honesto: reprodução simulada sob as premissas declaradas, NÃO uma afirmação de voo nem um nível de proteção certificado; a verdade sintética em circuito fechado compartilha a dinâmica de Marte e o modelo de observáveis do filtro.

Tempo coordenado lunar — taxa relativística 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)) exige a taxa secular com que um relógio na superfície lunar corre em relação a um relógio no geoide terrestre (TT). src/lunar_time.rs a calcula a partir de primeiros princípios: uma identidade pós-newtoniana de primeira ordem que soma a diferença de autopotencial (o potencial convencional do geoide L_G da IAU W0 = L_G·c² ≈ 6.26369e7 m²/s² menos o autopotencial da superfície da Lua GM_moon/R_moon ≈ 2.822e6 m²/s²) e o termo cinético (efeito Doppler de segunda ordem) −<v²>/2c² a partir da velocidade geocêntrica da Lua (obtida 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 informa essa taxa, o deslocamento LTC−TT acumulado ao longo de um horizonte e oferece suporte a um conjunto mínimo de variância inversa (um relógio de papel lunar); as conversões TT↔LTC fazem ida e volta com < 1 ns/dia.

Capacidade Status Referência independente / escopo honesto
Taxa relativística 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 relativística interna em forma fechada (geopotencial L_G da IAU / das convenções do IERS e o autopotencial GM/r (GM: parâmetro gravitacional, G vezes a massa)), verificada de forma cruzada contra a faixa 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 faixa com os termos nomeados somando-o, o deslocamento LTC−TT de 1 dia ≈ 57 µs e uma ida e volta TT↔LTC com < 1 ns/dia. Escopo honesto: o valor de destaque em µs/dia é dependente da referência — depende das superfícies de referência escolhidas (geoide terrestre W0 contra um selenoide lunar), da janela de média temporal e das correções centrífuga/J₂ desprezadas abaixo de µs/dia — razão pela qual uma faixa, e não um único número certificado, é a saída publicada. Esta é uma verificação de autoconsistência Modelled, NÃO uma validação externa, NÃO uma exatidão absoluta abaixo de nanossegundo e NÃO certificada para cronometragem operacional.

VLBI geodésico lunar — atraso de campo próximo para uma linha de base na Terra observando 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) observando um sinal de uma via de um transmissor de classe NovaMoon na superfície lunar. A Lua está em campo próximo, não é uma onda plana, de modo que o atraso geométrico é a diferença exata de duas distâncias tau_geom = (|r2 − r_B| − |r1 − r_B|)/c, em vez da projeção no plano do céu. O observável completo acrescenta a diferença de deslocamento de relógio das estações e um termo de Shapiro do potencial terrestre diferenciado (reutilizado de src/radiometric.rs). As estações são posicionadas em coordenadas inerciais geocêntricas (GCRS) por meio de src/frames.rs + src/cio.rs; o farol por meio 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→inercial IAU-2015). O cenário lunar-vlbi amostra o atraso, sua taxa por diferença finita e a correção de campo próximo ao longo de uma passagem.

A referência independente é o observável Δ-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 deve colapsar em −(B·ŝ_B)/c = delta_dor(r_B, [0,0,0], B) até a precisão de máquina; à distância lunar verdadeira, a correção de campo próximo da curvatura da frente de onda é diferente de zero (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 Status Referência independente / escopo honesto
Atraso 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ça finita. 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 até < 1e-9 s, uma correção de campo próximo diferente de zero à distância lunar, derivadas parciais FD do farol/estação dentro de 1e-5 relativo, um termo de relógio exato e uma execução finita de cenário despachada por run_toml. Escopo honesto: Modelled, NÃO validado contra dados reais de VLBI. O movimento polar é descartado (xp = yp = 0), de modo que as posições inerciais das estações carregam um erro de referencial de alguns metros; o farol mistura uma série da Lua de equador médio da data com um deslocamento fixo ao corpo ICRF (International Celestial Reference Frame) (jd_tdb ≈ jd_tt), uma incompatibilidade de consistência de referencial abaixo da fidelidade do modelo, mas não rigorosa; e não há iteração de tempo de luz, rotação da Terra durante o tempo de luz, meios (tropo/iono/plasma) nem termo de aberração além do Shapiro diferenciado. Não se alega TRL (nível de maturidade tecnológica), herança de voo nem endosso de agência. 0,30: contra os tempos de luz do ANISE pela DE440, nenhum atraso deste caminho analítico está dentro de 1 ps (maior diferença 24 µs); a constatação é fixada.
VLBI geodésico lunar, caminho por kernel validated (0.30) src/lunar_vlbi.rs KernelGeometry (Terra e Lua DE440, eixos principais lunares DE440, orientação da Terra ITRF93, cada tempo de luz convergido no referencial baricêntrico), executado pelo cenário lunar-vlbi quando os três caminhos de kernel estão definidos. Referência independente: biblioteca — tempos de luz convergidos do NAIF SPICE Toolkit N0067 (spiceypy 8.2.0) até DSS-14/43/63, pré-registrado: 75 atrasos dentro de 1 ps (pior caso 0,06 ps), derivadas parciais do farol e da estação dentro de 1e-6, em 25 épocas perto de J2000 (uma emenda depois que as 2024 épocas falharam 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, radiométrica/de medição de distância local lunar e de medição de distância entre satélites em uma rede lunar SIMULADA para recuperar, em conjunto, a posição 3-D de uma estação na superfície lunar, as posições por satélite de uma pequena constelação e o deslocamento de relógio de cada ativo. Os observáveis são: (1) atrasos de VLBI geodésico de linha de base na Terra até a estação lunar tratada como o farol (reutilizando src/lunar_vlbi.rs, inercial geocêntrico) — a técnica de destaque; (2) distâncias radiométricas geocêntricas de 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 de relógio de estação que ancora o deslocamento 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 sobre uma órbita lunar representativa; este é 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 permaneça 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 solução com e sem as pernas de VLBI com a mesma semente/verdade e informa ambas as soluções mais o fator de melhoria de observabilidade da estação.

O resultado honesto de destaque: a medição de distância local lunar a partir de uma estação polar até um punhado de satélites que ficam todos para um lado do céu deixa a posição da estação fracamente observada ao longo de uma direção, de modo que a solução somente com distâncias é mal condicionada e o erro 3-D recuperado da estação é grande (ou a solução não converge). Acrescentar os atrasos de VLBI de linha de base na Terra torna observável a posição 3-D completa da estação, e o erro recuperado da estação colapsa para o nível de metros. O teste vlbi_restores_station_observability afirma que o erro da estação com VLBI é nitidamente (≥5×) menor que o erro somente com distâncias na mesma verdade injetada — o VLBI restaurar 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 verdadeiro 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 pelo mesmo modelo geométrico que o solucionador inverte, ruído gaussiano com semente é adicionado (padrões ilustrativos: VLBI σ ≈ 1e-11 s, distância σ ≈ 0,1 m, ISL σ ≈ 0,1 m; pesos 1/σ²), e o estimador deve 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 sobre sementes (formal_covariance_nees) fica dentro de uma faixa folgada em torno de n_params, uma verificação de realismo da covariância.

Capacidade Status Referência independente / escopo honesto
OD conjunta multitécnica lunar + relógio validated (0,30, P2: a álgebra linear da soluçã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 versionados de seis redes (tests/lunar_joint_od_numpy_oracle.rs, passos dentro de 2.4e-11, sigmas dentro 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 de 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 restaura a observabilidade 3-D da estação (erro da estação ≥5× menor com VLBI do que somente 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 dentro de uma faixa folgada em torno de n_params; números informados finitos/protegidos mesmo quando a solução somente com distâncias é mal condicionada; cenário despachado por run_toml. Escopo honesto: esta é uma recuperação simulada em circuito fechado — a verdade compartilha 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 TRL, herança de voo nem endosso 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 pontuais estimadas ligadas a um datum. O núcleo de estimação é uma clássica transformação de similaridade (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ído 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 por meio de crate::batch_ls::gauss_newton: o modelo direto prediz cada q_i a partir de 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 soluçã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 permaneça bem escalado na magnitude de coordenadas da superfície lunar (~1.7e6 m). Um pequeno icrf_orientation_tie compõe a pequena rotação realizada pela orientação IAU corpo→ICRF (transpose(crate::lunar_frame::icrf_to_iau_moon(jd_tdb))) e devolve o deslocamento angular pequeno residual do referencial realizado em torno dos eixos 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 em uma rede sintética de pontos bem distribuídos (lat/lon selenográficas variadas → MCMF, alguns pontos em altitude), ruído gaussiano com semente é adicionado e o ajuste deve recuperar os parâmetros injetados. Em dados sem ruído, a recuperação é até ~a precisão de 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 dentro de alguns × o σ formal e o resíduo RMS pós-ajuste fica perto do nível de ruído. O cenário lunar-frame-realisation informa o datum recuperado, o erro de recuperação por parâmetro em relação à verdade injetada, o resíduo RMS pós-ajuste e a ligação de orientação ICRF da rotação realizada.

Capacidade Status Referência independente / escopo honesto
Realização do referencial de referência 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 similaridade 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 dentro de alguns × σ e resíduo RMS perto do nível de ruído; ida e volta aplicar-depois-inverter; determinístico (mesma semente → idêntico bit a bit, semente diferente → diferente, mas recuperado); a ligação ICRF de rotação zero é zero e a ligação preserva a magnitude da rotação; cenário despachado por run_toml. Escopo honesto: esta é uma verificação de autoconsistência — ela recupera uma transformação injetada em uma rede sintética — NÃO uma realização do referencial lunar contra dados reais de rastreamento / VLBI, e não alega exatidão absoluta de 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 TRL, herança de voo nem endosso 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 em uma análise de volume de serviço de navegação lunar: ele varre uma grade selenográfica de latitude/longitude ao longo de um horizonte de tempo contra uma constelação de órbita lunar ilustrativa, de fonte pública, de classe Moonlight / LCNS (LCNS: Lunar Communications and Navigation Services) e informa DOP / cobertura / disponibilidade mais um envelope generalizado de nível de proteção ARAIM lunar. As duas reutilizações são determinantes e explícitas. A geometria de DOP é o kernel VALIDATED (contra o gnss_lib_py) crate::orbit::dop — service_dop é um fino filtro de máscara de elevação mais esse kernel, e um teste afirma a identidade (service_dop é igual a um orbit::dop direto nas mesmas posições visíveis). A integridade reutiliza a maquinaria ARAIM lunar da 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 afirma que ele se reduz ao caso do polo sul (no polo sul, com a mesma geometria/orçamento, ele devolve exatamente o resultado existente de lunar::lunar_araim até < 1e-9).

Os parâmetros da constelação são uma aproximação ilustrativa de descrições públicas da ESA da classe do 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 é o padrã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). Eles não são a efeméride real do Moonlight/LCNS e não implicam nenhuma afiliação, endosso, 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 LunaNet LNIS publicados. Ela 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 informa a porcentagem 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 em relação ao limite de alerta.

Capacidade Status Referência independente / escopo 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 kernel crate::orbit::dop validado com o gnss_lib_py; a integridade reutiliza o ARAIM lunar publicado da LunaNet/LNIS (crate::lunar::lunar_araim, σ_URE ≈ 30 m). Testes (lunar_service::tests): service_dop é uma identidade sobre o kernel validado; lunar_protection_level no polo sul é igual ao PL existente de lunar::lunar_araim até < 1e-9 (reduz-se ao caso do polo sul); a cobertura é não decrescente com o tamanho da constelação; a visibilidade respeita a máscara de elevação; o cenário é determinístico e é despachado por run_toml. Escopo honesto: a constelação é ilustrativa, de fonte pública, NÃO afiliada à ESA — não é a efeméride real 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 TRL, herança de voo nem endosso 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 diferencial por satélite) / SBAS: uma estação de referência de classe NovaMoon em uma localização selenográfica conhecida calcula correções diferenciais por satélite a partir de uma constelação ilustrativa, de fonte pública, de classe Moonlight / LCNS, e um usuário itinerante afastado dela por uma linha de base as aplica, de modo que os erros de efeméride transmitida de modo comum se cancelam. Cada satélite i traz um vetor comum injetado de erro de órbita 3-D e_i e um erro comum de relógio 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 usuário é −e_i · û_user,i + c_i; o erro corrigido do usuário é a diferença entre eles −e_i · (û_user,i − û_ref,i). O termo de relógio c_i se cancela exatamente (é idêntico nas duas observações), e o termo de órbita colapsa na projeção sobre a diferença dos dois vetores unitários de 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 pela geometria do usuário por uma pequena solução instantânea de mínimos quadrados ponderados, de poucas dependências (estado [x, y, z, clock] via crate::orbit::invert4; um viés constante de distância é absorvido pela incógnita de relógio em vez de corromper a posição) para dar o erro de posição do usuário. O nível de proteção do usuário reutiliza a maquinaria 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 o orçamento de erro de 1-σ de cada satélite.

O NovaMoon é referenciado apenas como uma classe de sistema (uma descrição pública de uma estação de referência lunar); a constelação reutiliza a crate::lunar_service::LunarConstellation ilustrativa de fonte pública. São parâmetros ilustrativos para exercitar o método diferencial, não uma efeméride real, e não implicam nenhuma afiliação, endosso, herança, certificação ou TRL. O cenário lunar-differential-pnt informa o erro de posição do usuário com e sem correções, o fator de redução, a curva de erro contra linha de base e o nível de proteção. Na configuração padrão, o erro corrigido do usuário 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 zero.

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 zero; o termo de relógio se cancela até a precisão de máquina em 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 contra o qual a pilha SBAS é 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 rastreamento lunar real.

Capacidade Status Referência independente / escopo 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 de erro diferencial mais a reutilização da maquinaria de nível de proteção SBAS DO-229E (crate::sbas). Testes (lunar_dpnt::tests): com linha de base zero, o erro corrigido do usuário 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 se cancela exatamente em qualquer linha de base (caso de erro de órbita zero); o erro corrigido cresce monotonicamente com a linha de base, permanecendo ≪ 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 de sbas::sbas_protection_level e escala com o σ residual; uma geometria subdeterminada devolve None; o cenário é determinístico (com semente) e é despachado por run_toml. Escopo 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 rastreamento lunar real, e isto NÃO é validado com dados reais. O NovaMoon é referenciado apenas como uma classe de sistema (ilustrativo, de fonte pública, não afiliado à ESA). Não se alega TRL, herança de voo nem endosso de agência.

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

O referencial lunar, a escala de tempo lunar e a efeméride lunar são exportados em formas de intercâmbio baseadas no CCSDS e alinhadas à LunaNet/IOAG (IOAG: Interagency Operations Advisory Group). Esta fase não inventa um formato de transmissão: ela reutiliza o emissor e o analisador 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 de eixos principais), TIME_SYSTEM como a escala de tempo lunar (LTC / TCL / UTC) e CENTER_NAME como MOON, sobre uma efeméride de amostra ilustrativa, de fonte pública, de 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 à LunaNet/IOAG (id da escala, taxa secular em µs/dia de crate::lunar_time::lunar_rate_breakdown, a faixa publicada de 56–59 µs/dia, superfície de referência) que faz ida e volta por serde_json. export_kif_lunar envolve o OEM + descritor + rótulo de referencial no envelope KIF existente com o rótulo de honestidade MODELLED.

A referência independente é a ida e volta / aderência à norma dos campos. Como oem.rs traz ambas as direções, o OEM faz ida e volta por crate::oem::parse_oem (de volta a um segmento igual, com o referencial/tempo lunar e a contagem de estados preservados) e é verificado de forma independente por oem_conformance, que confirma que toda palavra-chave obrigatória de cabeçalho CCSDS/LunaNet está presente, que REF_FRAME traz um token 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 de sucesso mais a lista de campos presentes/ausentes, de modo que uma exportação quebrada (por exemplo, um TIME_SYSTEM descartado) é detectada e nomeada. Os metadados de tempo fazem ida e volta por parse_lunar_time_metadata, e o envelope KIF faz ida e volta por Envelope::parse até artefatos iguais que carregam o rótulo MODELLED.

Capacidade Status Referência independente / escopo 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 via crate::oem::parse_oem; KIF via crate::interchange::Envelope::parse; metadados de tempo via serde_json) mais aderência à norma dos nomes de campo contra a semântica de campos publicada do CCSDS OEM + LunaNet/IOAG. Testes (lunar_interop::tests): o OEM exportado traz os tokens lunares REF_FRAME (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 ida e volta (taxa/faixa/referência) e rejeitam lixo; o envelope KIF é serializado e desserializado para um valor igual, com o rótulo de honestidade MODELLED presente; um OEM deliberadamente quebrado (sem TIME_SYSTEM) falha em oem_conformance e é relatado como ausente; o cenário é despachado por run_toml. Escopo honesto: os nomes/unidades dos campos estão alinhados a padrões públicos (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 à norma dos nomes de campo 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 TRL, herança de voo nem endosso de agência.

Previsões pré-registradas#

Uma previsão pré-registrada é um resultado MODELLED congelado antes de existirem dados para avaliá-lo, com o protocolo de avaliação fixado ao mesmo tempo. Não é uma validação e não acrescenta nenhuma linha ao registro. Cada uma fica em docs/predictions/, com suas entradas congeladas, seu resultado e os hashes SHA-256 de ambos, e tests/prediction_frozen.rs falha se qualquer byte congelado mudar; uma premissa alterada é respondida por uma nova previsão datada ao lado da antiga, nunca editando-a.

Previsão Congelada Avaliada contra Status
Cobertura da 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 parte ainda não avaliada (sem resultados publicados)

Representatividade da demonstração e registro de lacunas até o voo (src/representativeness.rs)#

Um resultado de simulação só é útil como evidência se declara, de forma explícita, ao que está ancorado, o que assume e o que ainda o separa de um sistema de voo. O registro de representatividade torna isso uma saída de primeira classe, verificada por máquina: um registro Representativeness traz os Anchors externos da demonstração, suas premissas modeladas, suas Gaps até o voo (cada uma com a fase/atividade que a fecharia) e a faixa de TRL para a qual ele é representativo. É o complemento por resultado da matriz verification em nível de capacidade.

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

Capacidade Status Referência independente / escopo honesto
Registro de representatividade e de lacunas até o 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 entre status/tipo de referência independente de verification. Testes (representativeness::tests): um registro validado sem âncora externa falha; uma âncora interna (ReferenceImpl) não satisfaz o validado; um registro modelado sem lacuna falha; um registro modelado acima de TRL 4 falha; faixas de TRL malformadas são detectadas; o registro é serializado em JSON com os campos esperados e gera um relatório legível. Escopo honesto: o registro verifica a classificação da evidência de um resultado — ele não prova que as âncoras nomeadas resolvem para testes ativos (esses são curados, exatamente como a matriz verification); a afirmação "verificado por máquina" se restringe às invariantes de status/âncora/lacuna/TRL.

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

Toda área de aplicação de PNT quântico responde à mesma pergunta da mesma maneira: 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 caminho de código neutro, pontuá-los em figuras de mérito comuns e informar — com um intervalo de confiança e um rótulo honesto de validado/modelado — onde o quântico vence e onde não vence. TradeEvidence dá a essa resposta uma forma única, de modo que as verticais de temporização, navegação e detecção de anomalias emitem o mesmo objeto reprodutível e honestamente rotulado. Ele não reimplementa nenhum compromisso: os números por FoM vêm dos motores existentes (quantum_trade, crossover e os módulos verticais); isto é o contrato mais o invólucro de reprodutibilidade/representatividade, construído sobre o registro de representatividade e os rótulos 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 sempre significa que o lado quântico é melhor, tanto para FoMs de holdover em que mais é melhor quanto para FoMs de erro em que menos é melhor); um objeto de evidência construído a partir de um quantum_trade::TradeResult real reproduz suas razões de benefício; evidência desonesta é rejeitada (uma representatividade modelada sem lacuna, ou uma FoM Validated cujo registro de compromisso não traz âncora externa); o JSON é determinístico e traz os campos de referencial/semente/motor/FoM/representatividade.

Capacidade Status Referência independente / escopo honesto
Evidência de compromisso quântico versus 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 registro de representatividade e à fronteira entre status/tipo de referência independente da verificação. Testes (qtrade::tests) como acima. Escopo honesto: o arcabouço padroniza como um compromisso é relatado e reproduzido; a física subjacente por FoM é a que o motor contribuinte fornece, carregada com seu próprio rótulo validado/modelado — TradeEvidence não promove uma FoM modelada a validada.

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

Um lugar único que expõe os dispositivos de PNT quântico que o demonstrador compara — relógios ópticos / de íons aprisionados / de íons de mercúrio, relógios de referência clássicos, o interferômetro de átomos frios e enlaces de transferência de tempo — cada um como um DeviceCard que traz sua especificação de destaque e um registro 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; enlaces ópticos/RF clássicos de timetransfer_adv). O único modelo realmente novo é o enlace de transferência de tempo por emaranhamento / fóton único, cuja precisão de temporização é limitada por ruído de disparo: σ_t ≈ jitter/√(R·τ) na taxa de coincidências detectadas R e na integração τ, degradada por uma penalidade de contagens de escuro √(1 + dark/R) e com piso dado por um sistemático irredutível.

A referência independente são os coeficientes publicados de relógio/CAI reutilizados mais identidades em forma fechada de ruído de disparo/perda. quantum_devices::tests: a ordenação reutilizada das estabilidades dos relógios é razoável (rede óptica < íon de mercúrio < CSAC em σ_y(1 s)); a precisão do emaranhamento melhora como 1/√τ (uma integração 4× maior divide σ pela metade) quando limitada por ruído de disparo; a taxa de coincidências detectadas cai 10× a cada 10 dB de perda do enlace; as contagens de escuro degradam a precisão monotonicamente; o piso sistemático limita a precisão inferiormente; todo cartão de dispositivo é um registro de representatividade válido e modelado.

Capacidade Status Referência independente / escopo 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ógio/CAI reutilizados + identidades em forma fechada de ruído de disparo/perda para o enlace de emaranhamento. Testes (quantum_devices::tests) como acima. Escopo honesto: os parâmetros de dispositivos de relógio/CAI são reutilizados dos modelos de coeficientes publicados já existentes no motor; o modelo do enlace de emaranhamento é 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/perda — ele não é validado contra um enlace medido, e o hardware real de fonte/canal/detector é uma lacuna até o voo declarada.

Temporização quântica confiável — cadeia de ponta a ponta, disseminação segura, anomalia + 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 usuário de ponta a ponta (erro de navegação livre do relógio de referência e precisão de temporização do enlace combinados em quadratura) para uma cadeia quântica (relógio de rede óptica + enlace de emaranhamento/fóton único) contra uma cadeia clássica (CSAC + enlace RF de duas vias); um nível de proteção de temporização (TPL, reutilizado de tpl) que limita o erro de tempo não detectado; uma figura de mérito de segurança contra ataques de atraso/repetição 1 − P_md a uma taxa de falso alarme declarada (reutilizada de detection); uma probabilidade de detecção de anomalia de relógio + latência de detecção de mudança por CUSUM (soma cumulativa); e a comparação quântico-versus-clássico como qtrade::TradeEvidence honesto que traz um registro de representatividade + lacunas até o voo.

A referência independente é um orçamento em quadratura em forma fechada sobre kernels reutilizados e validados separadamente (ADEV contra 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 vencer e pode perder na FoM de precisão (honesto — não é uma vitória universal; um enlace com muita perda inverte o resultado); o nível de proteção é finito e positivo; a FoM de segurança está em [0.1] e cresce com o atraso do ataque; a probabilidade de detecção de anomalia é monotônica na magnitude da falha; e a evidência de compromisso é internamente honesta (is_honest()).

Capacidade Status Referência independente / escopo honesto
Temporização quântica confiável (cadeia + disseminação segura + anomalia + 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 kernels validados reutilizados (ADEV/Stable32-NIST, limite do TPL, Pd/Pmd analíticos de detecção); honestidade ligada ao registro de representatividade. Testes (timetransfer_chain::tests) como acima. Escopo honesto: os parâmetros de relógio/enlace são ilustrativos, de fonte pública; o enlace de emaranhamento é o modelo MODELLED limitado por ruído de disparo de quantum_devices; isto modela a classe de sistema de temporização confiável — ele não é validado contra um enlace medido de ponta a ponta, e o hardware real de relógio/enlace/canal espacial é uma lacuna até o voo declarada; não se alega 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 estimativa durante uma interrupção do GNSS entre um orçamento inercial quântico (um acelerômetro interferômetro de átomos frios, reutilizado de inertial::quantum_imu/quantum_trade, cujo piso de ruído branco CAI é validado até ~2 ordens de grandeza de Freier et al. 2016) e um INS clássico de grau de navegação. Ele informa o crescimento do erro de posição ao longo da navegação livre, o tempo de holdover até um limiar de posição e o compromisso quântico-versus-clássico como qtrade::TradeEvidence honesto. A observabilidade é declarada com honestidade: sem correção externa durante a interrupção, o viés do acelerômetro é inobservável, de modo 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 viés menor retarda esse crescimento, mas não fecha a lacuna — somente uma correção externa fecha.

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

Capacidade Status Referência independente / escopo 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 ~2 ordens contra Freier 2016; deriva clássica em forma fechada); honestidade ligada ao registro de representatividade. Testes (quantum_nav_od::tests) como acima. Escopo honesto: uma comparação estática de orçamentos de navegação por estimativa, não um filtro dinâmico em trajetórias reais; o viés inobservável sem correção é declarado; 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é o voo declaradas; não se alega TRL/voo/certificação.

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

O cenário quantum-anomaly-detect define um catálogo rotulado de falhas de PNT quântico (salto de frequência de relógio, deriva, perda de travamento; degrau de viés de sensor, perda de dados), pontua uma estatística de detecção em janelas nominais versus com falha e informa a discriminação do detector como uma AUC de ROC e uma falha mínima detectável a uma taxa de falso alarme fixa. O ângulo quântico-versus-clássico: uma referência de relógio quântico mais estável reduz o ruído σ do monitor, de modo que ele detecta falhas menores — emitido como qtrade::TradeEvidence honesto com um registro de representatividade.

A referência independente é uma AUC em forma fechada para a estatística de detecção gaussiana (nominal N(0,σ), falha N(μ,σ) ⇒ AUC = Φ(μ/(σ√2))) verificada de forma cruzada contra o eval_stats::bootstrap_auc_ci validado externamente (validado contra o scikit-learn) e os limiares analíticos de detection. quantum_faults::tests: a AUC analítica coincide com valores conhecidos (0,5 em μ=0, →1 para μ/σ grande, monotônica); o IC de AUC por bootstrap empírico envolve a forma fechada; o monitor quântico tem AUC maior e uma falha mínima detectável menor; a vantagem desaparece para falhas enormes (ambos detectam perfeitamente — não é uma margem universal); o catálogo tem cinco classes rotuladas; o compromisso é internamente honesto.

Capacidade Status Referência independente / escopo honesto
Detecçã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 de forma cruzada contra a AUC por bootstrap de eval_stats, validada externamente (contra o scikit-learn), e os limiares analíticos de detection. Testes (quantum_faults::tests) como acima. Escopo honesto: a estatística de detecção é um modelo gaussiano, não telemetria real; o catálogo de falhas é sintético rotulado; os níveis de ruído do monitor quântico/clássico são ilustrativos, de fonte pública; modela a classe de detecção de anomalias de PNT quântico — telemetria real de hardware com rótulos de verdade de referência é uma lacuna até o voo declarada; não se alega TRL/voo/certificação.

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

Padrão Status Referência independente externa
CCSDS OEM (502.0-B Orbit Data Messages) validated tests/ccsds_reference.rs: parse_oem recupera as épocas exatas e os vetores de estado X/Y/Z/Ẋ/Ẏ/Ż do exemplo OEM em KVN da 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). A fixture tests/fixtures/ccsds/oem_502_b3_figG11.oem é reproduzida caractere por caractere do Blue Book oficial (os marcadores editoriais "< intervening data records omitted here >", que não são registros OEM válidos, não são incluídos).
CCSDS TDM (503.0-B Tracking Data Message) validated tests/ccsds_reference.rs: TdmFile::parse recupera todos os 41 registros RANGE (primeiro 3198,03679519614 km, último 3270,46440460551 km) e os metadados do exemplo TDM em KVN da CCSDS 503.0-B-2, Anexo E, Figura E-9 ("Range Data with TIMETAG_REF=TRANSMIT", p. E-9). A fixture tests/fixtures/ccsds/tdm_503_b2_figE9.tdm é literal do Blue Book. (Esta é a referência independente do Blue Book publicado, ao lado da ida e volta reference.tdm já existente, escrita à mão, 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 de cabeçalho primário em nível de 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 com todos os valores máximos — mais o caso canônico de telemetria (TM) com todos os bits em um, cada um levado de ida e volta pela decodificação. Larguras/ordem dos campos de bits segundo a CCSDS 133.0-B-2 §4.1.3.
CCSDS 401 / DSN (orçamento de enlace, DSN 810-005) validated src/linkbudget.rs link_equation_reproduces_descanso_galileo_dct: a cadeia de FSPL (perda no espaço livre) e C/N₀ reproduz a tabela publicada de controle de projeto de telemetria de espaço profundo de 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 — o enlace de descida do Galileo em banda X (8420,43 MHz) a 6,37 AU: perda no espaço livre de 290,54 dB (<0,05 dB) e Pr/N₀ = 54,6 dB-Hz recebido (<0,2 dB). Os centros de banda ficam dentro das alocações de enlace de descida de espaço profundo da DSN/CCSDS-401 (DSN 810-005 Módulo 201). Os parâmetros de missão padrão continuam representativos (não um transponder calibrado); o que é fixado aqui é a equação do enlace.

Normas GNSS — situação da referência independente externa e as lacunas restantes, com honestidade:

Padrão Situação e ressalva honesta
RAIM / ARAIM Núcleo, geometria e nível de proteção ARAIM validados externamente. O núcleo de detecção — o limiar de detecção de falhas por χ², a não centralidade da detecção perdida em χ² 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) do ARAIM agora também é fixado: contra o "exemplo numérico LPV-200 (LPV: desempenho de localizador com orientação vertical)" do ADD (Algorithm Description Document) v3.1 de Referência ARAIM do WG-C (WG: Working Group), src/araim_reference.rs / tests/araim_reference_vectors.rs dão VPL 18,2926 m contra 18,3 m, HPL 13,4063 m contra 13,45 m e σ_v,acc 1,3694 m contra 1,3694 m, dentro do próprio TOL_PL = 0,05 m da referência (o tipo araim-reference-check). Escopo: modos de falha até um satélite ou uma constelação (N_fault,max = 1); subconjuntos de falhas de múltiplos eventos e a exclusão não estão implementados, e o RAIM clássico ainda não tem vetor de teste entrada→HPL canônico publicado. Veja ARAIM_REFERENCE.md.
SBAS / DO-229E Algoritmo de nível de proteção agora validado externamente. Dados (el, az, σ) por satélite, o sbas_protection_level do kshana reproduz o fork SBAS-PL do RTKLIB (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 transmissão reais do EGNOS + RINEX real da BUTE — até < 2e-3 m de HPL em 6 épocas (tests/sbas_reference.rs); o gLAB v6.0.0 da ESA (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 é validado e o que não é: isto fixa o algoritmo de PL (σ entra → HPL/VPL sai); a modelagem de σ a montante a partir de mensagens UDRE/GIVE brutas está fora do escopo do kshana — é aí que ferramentas independentes de pipeline completo ainda discordam por metros em dados reais. K_V coincidiu no valor arredondado da referência independente, 5,33 (o exato do kshana Φ⁻¹(1−5e-8)=5.3267 → VPL ~0,06 % menor; a vertical é validada sem fator K como d_U).
IONEX / Klobuchar Modelo de transmissão validado externamente. O modelo Klobuchar L1 reproduz o ionmodel do RTKLIB (tests/klobuchar_reference.rs, < 1e-4 m) — paridade de implementação com a referência aberta de fato, já que não existe nenhum exemplo resolvido oficial de verdade medida. O leitor de mapas de TEC IONEX agora existe (src/ionex.rs, testado por unidade); a lacuna restante é uma verificação cruzada dele contra um produto GIM real, não o modelo de transmissão. Veja as linhas Klobuchar em Afirmações versus 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 de código C/A G1/G2 LFSR (registrador de deslocamento com realimentação linear) reproduz as atribuições de fase de código publicadas na IS-GPS-200 Tabela 3-Ia — os dez primeiros chips em octal para PRN (ruído pseudoaleatório) 1–9 ({1440, 1620, 1710, 1744, 1133, 1455, 1131, 1454, 1626}) — exatamente. Isto fixa a sequência de chips do código de espalhamento contra a especificação de interface do GPS; as peças circundantes de modulação, separação espectral e rastreamento de código por DLL (malha de captura de atraso) (navsignal) permanecem MODELLED.

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

As capacidades acrescentadas na linha 0,28 são avaliadas linha por linha na VERIFICATION-MATRIX.md gerada; esta seção resume quais delas trazem uma referência independente externa. Uma linha é VALIDATED somente com uma referência independente externa; todo o resto é MODELLED.

Capacidade (tipo) Status Referência independente externa, ou por que permanece modelada
MTIE (erro máximo de intervalo de tempo) e TDEV (desvio de tempo) de telecomunicações em uma série de holdover (telecom-timing) validated tests/telecom_timing_reference.rs: 17 fatores de promediação de MTIE e 12 de TDEV em uma série versionada de holdover de relógio em escala de chip de 2 048 amostras contra o allantools 2024,06, com < 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 de folha de dados permanecem MODELLED. Veja TELECOM-TIMING.md.
Previsão de holdover a partir de um registro de relógio medido (slot-timing) validated tests/slot_timing_cs5071a_holdout.rs: ajustar sobre o primeiro terço do registro real do césio 5071A, prever o tempo de violação de um sigma em seis limiares e medi-lo nos dois terços reservados; limiar de um fator de 1,5 para mais ou para menos, razões observadas de 0,84 a 1,03. O orçamento de guarda de slot e a cadência de correção construídos sobre isso permanecem MODELLED.
Densidades espectrais de potência da banda L em forma fechada e separação espectral (spectrum) validated Formas fechadas de navsignal contra valores publicados (linha da matriz "Closed-form L-band signal power spectral densities…"). A cascata com J/S (razão jammer-sinal) por banda e C/N0 (densidade de portadora para ruído) efetivo, 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é-registrado contra o 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 caso 0,778), incluídos a divisã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 dentro de 1e-6 s do tempo de luz do Horizons (pior caso 6.7e-9 s). A comparação anterior com o dobro do nominal (tests/solar_system_horizons_reference.rs), cujo limiar foi definido depois da primeira comparação, é mantida como regressão sem efeito bloqueante. Urano/Netuno da Tabela 1, Plutão, as luas, as constantes de corpos e body-pnt permanecem MODELLED.
Geometria Walker e as posições orbitais publicadas de GPS, Galileo e GLONASS (GLObal NAvigation Satellite System); diluição de precisão global do GPS (constellation-design) validated constellation::tests: o Walker 24/3/1 reproduz a tabela de definição do serviço aberto do Galileo até 1e-9°, a fórmula de posição do documento de controle de interface do GLONASS e os cruzamentos equatoriais do GPS; a mediana de HDOP da linha de base do GPS 0,940 contra os 0,94 do padrão de desempenho do Standard Positioning Service. Mapas de cobertura multiconstelação arbitrários em torno de qualquer corpo permanecem MODELLED.
Campanhas: missões encadeadas, varreduras, conjuntos de Monte Carlo, execuções com condições compartilhadas (campaign) modelled tests/campaign_composition_reference.rs (11 testes): uma campanha de uma fase reproduz a execução autônoma byte a byte, uma varredura de um 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 de enlace LEO (low Earth orbit): coeficientes de chuva ITU-R (ITU Radiocommunication Sector) P.838, atenuação por chuva e cintilação P.618, perda de penetração em edificações 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 (versionados com sua fonte e data de obtenção), a razão de atraso de grupo da 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 usuário de efemérides transmitidas do ICD (documento de controle de interface) do Galileo, CRC-24Q (verificação de redundância cíclica de 24 bits), pesos globais médios de SISRE (erro de distância do sinal no espaço) (leo-navmsg) validated tests/leo_navmsg_reference.rs: o algoritmo de usuário do Galileo reproduz o RTKLIB (uma biblioteca aberta de posicionamento cinemático em tempo real) até 1 mm em quatro efemérides transmitidas reais do Galileo; o CRC-24Q dá o valor de verificação de catálogo 0xCDE703 e os bytes de verificação do quadro de exemplo RTCM (Radio Technical Commission for Maritime Services) 1005; os pesos de SISRE reproduzem a tabela publicada de MEO/GEO. O ajustador, a atualização no meio da passagem, a codificação binária, o texto no estilo RINEX-4/CSV (valores separados por vírgula) e os modelos de efemérides selecionáveis permanecem MODELLED.
Projeto de sinal LEO, passagem e orçamento de enlace, Doppler e posicionamento conjunto GNSS+LEO, convergência de PPP (posicionamento preciso por 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 de filtro (por exemplo, o NEES médio das execuções do filtro PPP dentro de sua faixa de 95%) e comparações de tendências publicadas; sem dados de campo.
Um sistema PNT em LEO de ponta a ponta (leo-pnt-chain) modelled tests/leo_pnt_chain.rs: cada valor repassado é igual à própria saída do estágio a montante, e alterar uma entrada a montante move toda figura a jusante que depende dela.
Resiliência e verticais em 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 renderizações, não evidência, 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; veja INTEROP.md); as animações (tests/animation.rs: reexecuções idênticas byte a byte, contagens exatas de quadros, SVG (Scalable Vector Graphics) bem formado, nenhum endereço externo no player HTML (HyperText Markup Language)); e o relatório de execução (tests/advanced_report.rs, tests/advanced_report_cli.rs: todo cenário incluído gera relatório sem nenhuma seção vazia ou valor de preenchimento, os rótulos coincidem com a matriz, e o comando registrado reproduz result.json e o relatório byte a byte).

Envelope operacional#

Cada pacote é exercitado ao longo do seu envelope de entrada declarado por tests/scenario_coverage.rs, que afirma que toda saída numérica é finita (sem NaN/Inf (NaN: não é um número)) e limitada. A tabela lista a faixa de entrada testada por pacote, o comportamento de saída esperado e o teste que a cobre.

Pacote Entrada variada Faixa testada Saída esperada Teste de cobertura
clock threshold_ns (especificação de temporização) 1 – 500 ns FoMs finitas de holdover/temporização/segurança clock_pack_covers_the_spec_threshold_envelope
inertial accel.bias 1e-7 – 1e-2 m/s² (átomos frios → MEMS (sistemas microeletromecânicos) rudimentares) RMS/p95 de posição finito e limitado 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, com verificação estrita de checksum só carrega com checksums válidos; geometria limitada real_gps_constellation_scenario_loads_with_valid_checksums_and_bounded_output
relógio (flicker) flicker_floor ligado/desligado 0 contra 1e-12 habilitar o piso 1/f piora a navegação livre de p95 de temporização flicker_fm_floor_degrades_the_clock_holdover_when_enabled
fusão (realismo) accel.bias 0 contra 5.88e-7 m/s² zero contra não nulo realista o filtro ainda converge, dentro de 3× o erro de 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 específicas de realismo: os termos de ruído ficam desligados por padrão, mas afetam demonstravelmente a saída quando habilitados, e o filtro de fusão conjunta não depende de os vieses serem zerados — ele converge também com um viés residual realista de grau átomos frios.

Limitações conhecidas#

  • As execuções quântica e clássica agora usam sementes de RNG (gerador de números aleatórios) independentes (semente clássica = semente + 0x9e3779b97f4a7c15), de modo que suas realizações de ruído são não correlacionadas — corrigido após revisão.
  • holdover_s reconhece segmentos: as linhas do tempo de interrupção são divididas em segmentos contíguos na reaquisição do GNSS, e o valor informado é a pior navegação livre (a mais curta) entre eles. Ele continua limitado pela resolução da grade de tempo (um limite inferior).
  • A ressincronização da transferência de tempo ISL modela a incerteza residual do enlace como uma nova oscilação de média zero a cada passo de medição, mais reancoragem no intervalo configurado.

Afirmações versus realidade — referência rápida#

A 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 fica a versão real no roteiro.

Termo que você pode ver O que de fato é hoje O que não é (ainda)
"simulador PNT híbrido quântico/clássico" um simulador estocástico clássico conduzido por coeficientes publicados de Allan/ruído de sensores quânticos física quântica de primeiros princípios (fase de Mach–Zehnder, ruído de projeção, sistemáticos) — veja QUANTUM-MODELS.md
"fusão de Kalman conjunta" / pacote de fusão o pacote executável fusion observa o relógio e a posição separadamente (uma correção direta de tempo e uma correção direta de posição), para o que o estimador ótimo é genuinamente bloco-diagonal — dois filtros de dois estados com uma FoM combinada um filtro acoplado para o caso de pseudodistância agora existe como fusion::coupled::CoupledPntFilter ([pos,vel,phase,freq] empilhado de 4 estados, covariância cruzada entre blocos não nula, validado por NEES) mas ainda não está ligado ao pacote executável, e o pacote é 1-DOF (um grau de liberdade) — a extensão 3-D de 8 estados é trabalho futuro
FoM de segurança (tipo spoof) 1 − P_md de um detector estocástico de spoofing de tempo: um teste χ²₁ bilateral / de Neyman–Pearson sobre uma estatística de monitor auxiliada pelo relógio, limiar definido a partir de um P_fa alvo, P_md avaliado na magnitude da especificação, tanto em forma fechada quanto por Monte Carlo (que concordam até alguns ×1/√N) um detector RAIM/ARAIM de múltiplos satélites — veja INTEGRITY.md; a estatística do monitor é um modelo gaussiano com o σ derivado da PSD do relógio, não uma correlação em nível de sinal
"detecção de spoofing auxiliada 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 detector de spoofing (forma fechada contra Monte Carlo) o P_md analítico baseado em Φ e a estimativa empírica de mc_runs ensaios coincidem dentro do erro amostral (≈ 1/√N); validado nos testes de src/spoof.rs / src/detection.rs a uma deflexão sob estresse (μ/σ = 2) uma ROC de detector medida contra dados de spoofing gravados
modelo de pseudodistância gnss-sim uma simulação direta: ρ = geometric + clocks + Klobuchar iono + Saastamoinen·Niell tropo + noise + multipath. Cada modelo de atmosfera é testado por unidade contra valores à mão (ZHD (atraso hidrostático zenital) ≈ 2,3 m, Niell = 1 no zênite, obliquidade de Klobuchar), e o modelo de transmissão completo de Klobuchar é verificado de forma cruzada contra a implementação de referência ionmodel() do RTKLIB até o nível submilimétrico (klobuchar_agrees_with_rtklib_reference_implementation, 6,1278 m para o caso de coeficientes padrão do RTKLIB — não existe vetor de teste oficial publicado de Klobuchar, de modo que isto é paridade de implementação, não verdade medida); uma execução sem ruído reproduz geometria + correções até o nível submilimétrico (resíduo RAIM ≈ 0) uma solução de posição a partir de sinais reais (PPP/RTK (PPP: posicionamento preciso por ponto)), combinação livre de ionosfera de dupla frequência ou resolução de ambiguidade da fase da portadora — não modelada
modelo de jamming (tipo jamming) uma cadeia de orçamento de enlace: J/S a partir da perda no espaço livre + ganho de antena por direção → C/N₀ efetivo pela equação antijamming (ganho de desespalhamento × separação espectral Q) → perda de travamento em um limiar (Kaplan & Hegarty §9,4) multipercurso, dinâmica de AGC (controle automático de ganho) no tempo, a própria busca de aquisição (a histerese opcional [acquisition] é um par de limiares); a perda opcional de quantizador [front_end] é a de uma entrada gaussiana, não válida para um jammer CW; o arranjo opcional [crpa] é de banda estreita e ideal (sem acoplamento ou descasamento), e o sombreamento opcional [terrain] é uma única aresta de faca em uma única tile SRTM; Q é uma constante representativa por tipo, não derivada da PSD medida do jammer
FoM de integridade (pacotes de relógio/holdover) autoconsistência do filtro (fração das amostras de interrupção dentro de seu próprio limite k·σ) HPL/VPL, risco de integridade / P_HMI, limites de alerta, DO-229E/316/ED-259A — estes são informados separadamente pelo tipo integrity (RAIM / ARAIM) e pelas funções SBAS, nunca incorporados a esta FoM
FoM 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 de viés) com redefinição por ajuste à verdade o pacote legado é 1-DOF; o caminho de 3 eixos vem no pacote gnss-ins (próxima linha)
biblioteca strapdown de 3 eixos + pacote gnss-ins (src/inertial/, src/fusion/pack.rs) um navegador verificado de quatérnions/NED (NED: norte-leste-baixo) com um modelo determinístico de erro de IMU — fator de escala, desalinhamento, sensibilidade a g, 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 de cenário) ([imu_*.error_model]) não modelados: erro de retificação de vibração, deriva por gradiente de temperatura. O erro de navegação livre fundida é limitado por piso pelo erro de atitude na transferência (inclinação/viés do acelerômetro pouco separáveis), de modo que a calibração por viés não é alegada
"Integração PNT híbrida" (pacote hybrid) navegação por estimativa em malha aberta delimitada por redefinições GNSS ajustadas à verdade uma mistura de Kalman GNSS–INS acoplada (fraca/forte) — esse é o pacote gnss-ins separado (EKF) e o tipo 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 ponderada por RMS/CEP/SEP/DOP (SEP: erro esférico provável)
FoM de posição inercial (pos_rms_m) um RMS/p95 de posição de eixo único em metros, a partir de uma 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 de distância) de conjunto (roteiro: CEP por Monte Carlo)
"validado até ~2%" uma concordância típica observada; o critério imposto é de 20–25% de erro relativo um limite de exatidão garantido de 2%
"reprodutível / idêntico bit a bit" nova execução idêntica bit a bit no mesmo SO (sistema operacional) + toolchain fixada; entre Linux, macOS e Windows, a CI verifica um SHA-256 versionado da impressão digital de entrada e da forma de cada resultado (tests/cross_platform_golden.rs) e os valores numéricos até 1e-6 (tests/golden.rs) um resultado completo idêntico byte a byte entre sistemas operacionais (diferenças do libm no último dígito)
Cenário SGP4 GPS (orbit-sgp4-gps.toml) um instantâneo gps-ops genuíno do Celestrak (2021-07-28, 30 satélites, checksums estritos), cada satélite propagado a partir de sua própria época de TLE uma constelação atual — atualize o instantâneo com scripts/fetch_tles.sh (veja REAL_TLE_GUIDE.md); os números de catálogo do NORAD (North American Aerospace Defense Command) são os reais

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

A suíte lunar/cislunar (as capacidades "Lunar & cislunar" e "Lunar PNT suite" no README) tem suas afirmações de artigos publicados verificadas de forma cruzada e independente em tests/validate_p*.rs, cada uma contra uma referência independente de uma implementação diferente:

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

As fixtures e os scripts geradores de referência independente ficam em tests/fixtures/{p1_footprint,lunar_service,eop_prediction,rf_ranging_precision,dro_family_jpl,p2_independent_dop}/. Eles reforçam a evidência por trá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, de modo que não alteram, por si mesmas, a contagem da matriz verificada por máquina. Essa contagem não é reproduzida aqui, porque uma cópia digitada à mão dela se desatualiza: a divisão atual é 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.