Traducción automática, no revisada por un hablante nativo. El inglés es la referencia.

Primeros pasosEditar en GitHubFuente: README.md

Kshana: la marca, una retícula de brújula que señala el instante preciso, junto al logotipo tipográfico kshanaKshana: la marca, una retícula de brújula que señala el instante preciso, junto al logotipo tipográfico kshana

Kshana · क्षण · el instante preciso
Un simulador de código abierto para la resiliencia de PNT (posicionamiento, navegación y temporización).

Estado de la integración continua en main Cobertura de líneas cercana al 95 % de src/, medida en docs/COVERAGE.md y con un mínimo del 85 % exigido en la integración continua 176 de 401 capacidades VALIDATED frente a una referencia independiente externa, según la matriz de verificación Estado de la puerta de calidad de SonarQube Cloud Versión v0.40.0 Licencia: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, el registro conceptual de Zenodo de todas las versiones Hay una licencia comercial disponible en Ashforde® OÜ, véase Ediciones kshana en crates.io, la versión publicada actual kshana en PyPI, la versión publicada actual kshana en npm, la versión publicada actual

Abrir Kshana Studio · Instalar · Capacidades · Evidencias · Investigación · Documentación · Cómo citar

Ensaye el minuto en que el GNSS se apaga. La consola de misión de Kshana, dibujada a partir de una ejecución real del motor v0.40.0: la campaña encadenada campaign-jam-spoof-holdover-integrity (semilla 20260928, 6 fases, 18 ejecuciones miembro durante T+01:16:10) y los 102 satélites de GPS, Galileo, BeiDou y GLONASS de constellation-multi-gnss-coverage, cada uno dibujado sobre la órbita circular de dos cuerpos recuperada de la traza en tierra del motor, con los radios comprimidos para su visualización. El error de tiempo del reloj alcanza un máximo de 62,7 ns frente a una guarda de 50 ns, la densidad de portadora a ruido cae a -12.2 dB-Hz frente a un suelo de 25 dB-Hz, y el nivel de protección vertical llega a 135,4 m frente a un límite de alerta de 50 m.Ensaye el minuto en que el GNSS se apaga. La consola de misión de Kshana, dibujada a partir de una ejecución real del motor v0.40.0: la campaña encadenada campaign-jam-spoof-holdover-integrity (semilla 20260928, 6 fases, 18 ejecuciones miembro durante T+01:16:10) y los 102 satélites de GPS, Galileo, BeiDou y GLONASS de constellation-multi-gnss-coverage, cada uno dibujado sobre la órbita circular de dos cuerpos recuperada de la traza en tierra del motor, con los radios comprimidos para su visualización. El error de tiempo del reloj alcanza un máximo de 62,7 ns frente a una guarda de 50 ns, la densidad de portadora a ruido cae a -12.2 dB-Hz frente a un suelo de 25 dB-Hz, y el nivel de protección vertical llega a 135,4 m frente a un límite de alerta de 50 m.
Contenido

Ensaye el minuto en que el GNSS se apaga#

Kshana reproduce jamming, spoofing y holdover de reloj cuando fallan las señales GNSS (Sistema Global de Navegación por Satélite), y le dice cuánto tiempo mantiene un sistema la hora y la posición dentro de su presupuesto, y qué reloj o sensor aporta más margen. Es un único motor en Rust. Se ejecuta en un terminal, un cuaderno, un IDE (entorno de desarrollo integrado), un asistente de IA (inteligencia artificial) o en su navegador.

Cada ejecución es reproducible bit a bit a partir del escenario, la semilla y la versión del motor. Cada capacidad lleva una de tres etiquetas en un registro comprobado por máquina: VALIDATED (concuerda una referencia independiente externa), MODELLED (internamente coherente, y declarado en voz alta) o PARTNER (la posee un socio de hardware).

Estado: v0.40.0. Un sustrato de simulación validado y reproducible para la resiliencia de PNT. La temporización y el holdover van primero, porque ese dominio es el mejor validado. Kshana es un instrumento de estudio y de compromisos de diseño: no es hardware generador de señales de radiofrecuencia (RF) (no maneja ninguna radio y no transmite nada; su salida a nivel de señal son archivos de muestras IQ en banda base para receptores por software), no es un receptor GNSS de hardware ni certificado (su receptor por software es una herramienta de análisis) y no es un producto de vuelo. ¿Nuevo en el campo? Empiece por la introducción en lenguaje llano y el glosario.

Novedades de 0,40#

0,40 añade un presupuesto de errores a nivel de misión, etiqueta cada figura y tabla con su nivel de evidencia, lee registros de reloj medidos, comprueba envíos de socios de datos, estima dónde puede estar un emisor de interferencia y habla diecisiete idiomas además del inglés. El registro tiene ahora 401 filas: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Ninguna fila se promovió a VALIDATED, y cada fallo que se indica a continuación queda fijado por una prueba.

  • Hilo de misión. El tipo de escenario mission-thread encadena fases desde el lanzamiento hasta la entrada (launch-ascent, leo-rendezvous, tli-and-cruise, entry y cuatro tipos de escenario lunares) con reglas de traspaso indicadas, un margen frente a los requisitos indicados y el eslabón más débil; un ejemplo de extremo a extremo de clase Artemis en 11 fases (segmentos terrestre y lunar), 92 tipos de escenario en total. Cada número es MODELLED. La propagación cislunar frente a la trayectoria pública de Artemis I no alcanza su umbral preregistrado (45,3 km y 0,25 m/s frente a 5 km y 0,05 m/s; la causa son pequeñas maniobras que el modelo no incluye), y el propagador lunar frente a la órbita de CAPSTONE no alcanza el suyo (136,8 km frente a 25 km al final de una revolución); la comparación con LRO se alcanza. Las filas siguen siendo MODELLED (Hilo de misión, segmento lunar). En el Studio, el hilo se lee en /studio/mission-thread/.
  • Etiquetas de evidencia. Cada figura y tabla que escribe una ejecución lleva el nivel y los identificadores de fila del registro en que se apoya, leídos de la matriz.
  • Relojes medidos. Se leen ocho formatos de registro de reloj (docs/CLOCK-LOG-FORMATS.md) y una serie ajustada puede conducir el holdover. Frente a umbrales preregistrados, el ajuste no alcanza F1(a) en cinco de seis registros y F2 en uno; ambos siguen siendo MODELLED (Registro de cambios).
  • Socios de datos. kshana partner check comprueba el formato de un envío y no puntúa nada (docs/PARTNER-DATA.md).
  • Región del emisor. kshana interference-map locate da una región y una elipse, nunca un punto aislado, a partir de informes ADS-B o AIS. Comparado una vez con los emplazamientos de transmisores de Jammertest 2025, el resultado es NOT ASSESSABLE para ambas fuentes (demasiado pocas sesiones programadas en los datos abiertos), de modo que la fila sigue siendo MODELLED (Mapa de interferencias).
  • Benchmark. La recampaña de 0,40 alcanza A3, D3 (ambos EXPLORATORY), R3 y R4; A2, D1 y R1 siguen NOT MET (Bench).
  • Idiomas. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja y zh-Hans, como traducciones automáticas que ningún hablante nativo ha revisado; el inglés es la referencia, y las ejecuciones en idiomas distintos del inglés tardan aproximadamente el doble (docs/i18n.md).

Novedades de 0,39#

0,39 no añade ninguna función y no cambia ningún resultado; la salida del motor es la de 0,38. Corrige una cosa en la línea de comandos, actualiza dependencias de las herramientas de validación cruzada y expone los veredictos de los benchmark completos.

  • Línea de comandos. kshana kinds | head (cualquier salida estándar cerrada) ya no provoca un pánico: el programa termina en silencio con el estado 141, como hacen otras herramientas ante una tubería cerrada. Los demás errores de escritura se siguen informando.
  • Dependencies. memmap2 0.9.11 en los dos bloqueos de validación cruzada de ANISE y pillow 13.0.0 y certifi 2026.10.19 en las fijaciones del entorno de referencia independiente, todo bajo xval/: nada de lo que se distribuye ha cambiado.
  • kshana-bench, todos los veredictos. Frente a los umbrales preregistrados, tres son NOT MET, cada uno fijado por una prueba: A2 (agc_k_sigma AUC 0,766 frente a al menos 0,80), D1 (mayor brecha 0,0301) y la tarea (b) R1 (arrastrado, no vuelto a ejecutar). Ningún umbral se relajó (Bench).

Novedades de 0,38#

0,38 hace medible al árbitro neutral: puntúa registros de receptor frente a un calendario de pruebas publicado, lee más receptores y sensores, prueba sistemas de temporización y aporta un benchmark y un observatorio de interferencias. Sigue siendo de carácter consultivo: nada de esto está certificado, ningún resultado es una homologación y nada transmite. Cada fila indica lo que el registro contiene sobre ella (cómo se gana una etiqueta); un estado nombra solo lo que se comprobó, y la fila del registro y la página enlazada dicen lo que no.

Novedades de 0,38 Qué hace y por qué Estado en el registro Se lee
Puntuación de jammertest kshana jammertest import lee el catálogo de pruebas y el plan de transmisión publicados por la NPRA como verdad programada; jammertest score puntúa un registro de receptor por prueba (latencia de detección, alarmas perdidas, falsas alarmas, tiempo de recuperación), como un paquete de evidencias firmado si usted aporta una clave MODELLED: una fila del registro. Los umbrales se preregistraron antes de cualquier ejecución puntuada; con los datos de JammerTest 2024 la regla de datos mínimos falló en ambas ejecuciones (4 y 7 ventanas puntuables frente a 10 exigidas), por lo que ningún umbral es evaluable y no se afirma nada Jammertest
Las banderas propias del receptor UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG y NovAtel RXSTATUS se leen en un self_report por época y se comparan con las alarmas de Kshana (ambos, solo el receptor, solo Kshana, ninguno); un lector de Septentrio SBF y una entrada --serial de solo lectura MODELLED; la coincidencia entre el detector de un receptor y el de Kshana no es validación Confianza del receptor
Más receptores y sensores RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7 (de las tablas de pyrtcm con licencia BSD, no del texto de RTCM), flujos de monitor de GNSS-SDR, un registro de IMU como segundo sensor, un paquete de ROS 2, un puente gnss_lib_py y imu-fit para parámetros híbridos de sensor MODELLED: seis filas del registro; solo archivos de prueba escritos por nosotros, no se leyó ninguna captura de un receptor real, de una IMU, de una ejecución de GNSS-SDR ni de un grafo de ROS Entradas de máquina
Pruebas de temporización y de holdover el tipo holdover-test puntúa una prueba de holdover (GNSS retirado por el operador, holdover, recuperación) a partir de un registro medido de error de tiempo frente a las máscaras de la UIT-T, «medido frente a la máscara»; lectores de registros de linuxptp y chrony; las etapas de hardware y el campo lab-attestation MODELLED: dos filas del registro; las horas son declaración del operador, no verificadas HIL de temporización, Seguridad del hardware
Paquetes de normas, LunaNet AFS, ciclo completo de laboratorio paquetes puntuados para DHS RPCF, IMO MSC.1/Circ.1575 y ICAO Doc 9849 Apéndice F frente a umbrales declarados antes de la ejecución, «aporta evidencias a favor de»; una correspondencia con NIST IR 8323r1; un generador y verificador de códigos LunaNet AFS; un paquete firmado que enlaza el escenario, las condiciones de prueba, el registro del receptor y la puntuación de una ejecución de laboratorio MODELLED para los paquetes y el ciclo completo; la comprobación de códigos AFS es VALIDATED frente a sus columnas de comprobación impresas (véanse las filas del registro) Normas, LunaNet AFS
kshana-bench y el observatorio tareas, particiones y métricas fijas para la detección de interferencias, la detección en IQ, la predicción de holdover y la brecha de optimismo, con un conjunto reservado sellado y una clasificación estática; un producto diario reproducible de interferencias con un retraso de 24 h, celdas gruesas y sin atribución sin fila propia en el registro: puntúa envíos, y sus líneas base se etiquetan como MODELLED en los archivos de resultados; frente a los umbrales preregistrados se alcanzan el evaluador, C1 a C3 y D2, y tres umbrales son NOT MET (fijados por pruebas): A2 (agc_k_sigma AUC 0,766 frente a al menos 0,80 en la partición de prueba), D1 (mayor brecha 0,0301) y la tarea (b) R1 (arrastrado, no vuelto a ejecutar); véase xval/bench/RESULTS-v2.md Bench, Observatorio
Exportadores telemetría de confianza como mensajes de descubrimiento y de estado MQTT de Home Assistant (solo publicación, sin credenciales), junto a Prometheus, CEF, LEEF y OTLP MODELLED: una fila del registro Telemetría de confianza
Margen del enlace óptico frente al tiempo el tipo optical-atmosphere puede escribir una realización con semilla de la meteorología de un emplazamiento como serie de margen del enlace MODELLED: una fila del registro; un sorteo del modelo, no el clima Atmósfera óptica

Aspectos destacados de 0,37: registro de cambios. La lista completa de 0,38 está en el registro de cambios.

0,38 en detalle#

Cada capacidad de la tabla anterior, en pocas líneas: qué hace, un comando para ejecutarla, una imagen dibujada a partir de una ejecución real del motor y lo que el registro contiene sobre ella. Las imágenes las escribe tools/gen_figures_038.py en docs/figures/0.38/ (nunca se dibujan a mano): python3 tools/gen_figures_038.py las reescribe a partir de un motor compilado, y --check falla si una está obsoleta o su pie de figura aquí difiere. Cuando una entrada es un registro, es uno inventado que escribe el script, porque los registros reales de terceros nunca se incorporan al repositorio, y el pie de figura lo dice. Todo lo que sigue es de carácter consultivo: no certificado, no una homologación, y nada transmite. Un estado nombra lo que se comprobó y nada más; cómo se gana una etiqueta.

Puntuación de jammertest#

kshana jammertest import convierte el catálogo de pruebas y el plan de transmisión publicados por la NPRA en verdad programada, y kshana jammertest score puntúa un registro de receptor frente a ella: para cada prueba programada, si se detectó, con qué retraso y cuánto tardó el receptor en recuperarse, además de las falsas alarmas fuera de cada ranura. El catálogo se descarga, nunca se incorpora al repositorio.

xval/jammertest-plan/fetch.sh ../jammertest-plan
kshana jammertest score session.toml --catalog ../jammertest-plan/testcatalog2025.json \
    --plan ../jammertest-plan/plan-tuesday-2025-09-16.json --location 1 --json
Puntuación de un registro de receptor sintético frente a una planificación de tres pruebas, a partir de una ejecución real del motor v0.40.0 (`kshana jammertest score`). El registro es inventado: 1800 s de NMEA con una caída de 20 dB de C/N0 en dos intervalos. La planificación enumera tres franjas; la franja central no tiene ningún inhibidor en el registro. La puntuación marca 2 de 3 pruebas detectadas (latencia mediana 0 s) y 1 no detectada, con 0 ejecuciones de falsa alarma en 0,25 h de tiempo limpio. Nada de esto dice nada sobre un receptor real. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque.Puntuación de un registro de receptor sintético frente a una planificación de tres pruebas, a partir de una ejecución real del motor v0.40.0 (`kshana jammertest score`). El registro es inventado: 1800 s de NMEA con una caída de 20 dB de C/N0 en dos intervalos. La planificación enumera tres franjas; la franja central no tiene ningún inhibidor en el registro. La puntuación marca 2 de 3 pruebas detectadas (latencia mediana 0 s) y 1 no detectada, con 0 ejecuciones de falsa alarma en 0,25 h de tiempo limpio. Nada de esto dice nada sobre un receptor real. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque.

Estado en el registro: MODELLED. Los umbrales se fijaron antes de cualquier ejecución puntuada; con los datos de JammerTest 2024 la regla de datos mínimos falló en ambas ejecuciones, por lo que ningún umbral es evaluable y no se afirma nada. Jammertest.

Las banderas propias del receptor#

UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG y NovAtel RXSTATUS se leen en un self_report por época y se sitúan junto a las alarmas de Kshana: ambos, solo el receptor, solo Kshana, o ninguno. Un lector de Septentrio SBF y una entrada --serial de solo lectura alimentan la misma comparación. Ninguno de los dos lados es verdad de referencia.

kshana receiver-trust session.toml     # [log] format = "ubx", path = "receiver.ubx"
La bandera de spoofing propia del receptor frente a las alarmas de Kshana, a partir de una ejecución real del motor v0.40.0 sobre un registro UBX inventado (200 épocas a 1 Hz). El C/N0 cae 20 dB entre 80 y 90 s y entre 120 y 130 s; el receptor marca de 120 a 130 s y de 160 a 165 s. De 140 épocas comparadas tras la calibración, 11 tuvieron ambos marcando, 6 solo el receptor, 11 solo Kshana y 112 ninguno. Ninguno de los dos lados es verdad de referencia y la coincidencia no es validación. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.La bandera de spoofing propia del receptor frente a las alarmas de Kshana, a partir de una ejecución real del motor v0.40.0 sobre un registro UBX inventado (200 épocas a 1 Hz). El C/N0 cae 20 dB entre 80 y 90 s y entre 120 y 130 s; el receptor marca de 120 a 130 s y de 160 a 165 s. De 140 épocas comparadas tras la calibración, 11 tuvieron ambos marcando, 6 solo el receptor, 11 solo Kshana y 112 ninguno. Ninguno de los dos lados es verdad de referencia y la coincidencia no es validación. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.

Estado en el registro: MODELLED. La coincidencia entre el detector de un receptor y el de Kshana no es validación. Confianza en el receptor.

Más receptores y sensores#

RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7, flujos de monitor de GNSS-SDR, un registro de IMU como segundo sensor, un paquete de ROS 2 y un puente gnss_lib_py terminan todos en la misma cronología de receiver-trust. imu-fit lee de un registro de IMU estacionaria los parámetros de sensor que necesitan los escenarios híbridos y de fusión, de modo que un escenario puede ejecutarse con el sensor que realmente se tiene.

kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Lo que `kshana imu-fit` extrae de un registro de IMU estacionaria, a partir de una ejecución real del motor v0.40.0 sobre un registro inventado (20.000 muestras a 100 Hz, 200 s): el paseo aleatorio de velocidad del acelerómetro q_va = 4.02e-06, el paseo aleatorio de ángulo del giróscopo q_arw = 9e-08, la inestabilidad del sesgo 0,00296 y las pendientes de Allan tempranas (-0.51 y -0.49; en torno a -0.5 donde domina el ruido blanco). La tabla contigua es el TOML que imprime el comando. El estimador se ha comprobado solo con registros sintéticos. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Lo que `kshana imu-fit` extrae de un registro de IMU estacionaria, a partir de una ejecución real del motor v0.40.0 sobre un registro inventado (20.000 muestras a 100 Hz, 200 s): el paseo aleatorio de velocidad del acelerómetro q_va = 4.02e-06, el paseo aleatorio de ángulo del giróscopo q_arw = 9e-08, la inestabilidad del sesgo 0,00296 y las pendientes de Allan tempranas (-0.51 y -0.49; en torno a -0.5 donde domina el ruido blanco). La tabla contigua es el TOML que imprime el comando. El estimador se ha comprobado solo con registros sintéticos. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.

Estado en el registro: MODELLED. Solo archivos de prueba escritos por nosotros; no se leyó ninguna captura de un receptor real, de una IMU, de una ejecución de GNSS-SDR ni de un grafo de ROS. Entradas de máquina.

Pruebas de temporización y de holdover#

El tipo holdover-test puntúa una prueba de holdover (GNSS retirado por el operador, holdover, recuperación) a partir de un registro medido de error de tiempo frente a las máscaras de la UIT-T, y lo dice con esas palabras: medido frente a la máscara. La alimentan lectores de registros de linuxptp y chrony; las etapas de hardware y el campo lab-attestation indican quién declaró qué.

kshana scenarios/holdover-test-example.toml
Una prueba de holdover puntuada a partir de un registro de error de tiempo, de una ejecución real del motor v0.40.0 sobre scenarios/holdover-test-example.toml (601 muestras cada 5 s). El operador retira el GNSS a los 600 s y lo restablece a los 2400 s; el error de tiempo deriva hasta 299 ns al final del holdover, rebasa el presupuesto de 100 ns tras 675 s, y vuelve a la banda de 100 ns 70 s después del restablecimiento. Veredictos: máscaras de línea base PASS, máscaras de holdover FAIL, envolvente de holdover FAIL, recuperación RECOVERED. Medido frente a la máscara, no una aprobación. Las horas son declaración del operador, no verificadas por Kshana. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Una prueba de holdover puntuada a partir de un registro de error de tiempo, de una ejecución real del motor v0.40.0 sobre scenarios/holdover-test-example.toml (601 muestras cada 5 s). El operador retira el GNSS a los 600 s y lo restablece a los 2400 s; el error de tiempo deriva hasta 299 ns al final del holdover, rebasa el presupuesto de 100 ns tras 675 s, y vuelve a la banda de 100 ns 70 s después del restablecimiento. Veredictos: máscaras de línea base PASS, máscaras de holdover FAIL, envolvente de holdover FAIL, recuperación RECOVERED. Medido frente a la máscara, no una aprobación. Las horas son declaración del operador, no verificadas por Kshana. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.

Estado en el registro: MODELLED. Las horas en que se retiró y se restableció el GNSS son declaración del operador, no verificadas. HIL de temporización, Seguridad del hardware.

Paquetes de normas#

Paquetes puntuados para los perfiles de prueba de PNT resiliente del DHS, IMO MSC.1/Circ.1575 e ICAO Doc 9849 Apéndice F, además de una correspondencia con NIST IR 8323r1 en compliance-report. Cada prueba ejecuta un escenario incluido y compara un campo de resultados con un umbral declarado antes de la ejecución; una prueba que necesita un registro de receptor se lista como necesitada de una entrada, no puntuada. La redacción es «aporta evidencias a favor de».

kshana standards-pack list
kshana standards-pack run imo-circ-1575
Todas las pruebas de los tres paquetes de normas puntuados, a partir de ejecuciones reales del motor v0.40.0 (`kshana standards-pack run`): dhs-rpcf: 6 alcanzadas, 1 no alcanzada, 2 necesitan una entrada; imo-circ-1575: 1 alcanzada, 4 no alcanzadas, 2 necesitan una entrada; icao-doc9849-appf: 6 alcanzadas, 0 no alcanzadas, 2 necesitan una entrada. En total, 13 alcanzadas, 5 no alcanzadas y 6 necesitan una entrada de la que el motor no dispone (un registro de receptor o documentación del equipo). Cada umbral se fijó antes de la ejecución; un fallo se conserva como fallo. Un umbral alcanzado indica que un escenario modelado alcanzó un umbral fijado, y nada acerca de un producto. Los paquetes aportan evidencias a favor de las filas que citan; no son una evaluación. Orientativo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de salvaguarda de la vida humana; no debe ser la única base de ninguna decisión de navegación o de seguridad.Todas las pruebas de los tres paquetes de normas puntuados, a partir de ejecuciones reales del motor v0.40.0 (`kshana standards-pack run`): dhs-rpcf: 6 alcanzadas, 1 no alcanzada, 2 necesitan una entrada; imo-circ-1575: 1 alcanzada, 4 no alcanzadas, 2 necesitan una entrada; icao-doc9849-appf: 6 alcanzadas, 0 no alcanzadas, 2 necesitan una entrada. En total, 13 alcanzadas, 5 no alcanzadas y 6 necesitan una entrada de la que el motor no dispone (un registro de receptor o documentación del equipo). Cada umbral se fijó antes de la ejecución; un fallo se conserva como fallo. Un umbral alcanzado indica que un escenario modelado alcanzó un umbral fijado, y nada acerca de un producto. Los paquetes aportan evidencias a favor de las filas que citan; no son una evaluación. Orientativo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de salvaguarda de la vida humana; no debe ser la única base de ninguna decisión de navegación o de seguridad.

Estado en el registro: MODELLED. Un umbral alcanzado dice que un escenario modelado alcanzó un umbral declarado, nada sobre un producto; cada fallo se conserva y queda fijado por una prueba. Normas.

LunaNet AFS#

El generador de códigos de la señal directa aumentada de LunaNet (códigos Gold, Weil y terciarios, la trama del mensaje y su codificación de errores) y un verificador para un flujo de símbolos grabado o generado, fijado a una edición de la especificación.

kshana lunanet-afs-check spec
kshana lunanet-afs-check generate --frames 2 --out afs.sym
kshana lunanet-afs-check symbols afs.sym
El generador de códigos AFS de LunaNet comprobado frente a las columnas impresas de la especificación, a partir de una ejecución real del motor v0.40.0 (`kshana lunanet-afs-check spec`, fijado a LNIS V5, AD1 volumen A (LSIS-AFS) V1.0, 29 de enero de 2025; el documento marca sus tablas de códigos {LSIS-TBC}). Se alcanzan 9 de 10 comprobaciones; B4 es NOT MET (420 de 421 coinciden). Comprueba un flujo de símbolos frente a una edición de una especificación publicada y no dice nada sobre ningún nodo ni servicio de LunaNet. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Comprueba un flujo de símbolos frente a una edición de una especificación publicada y no dice nada sobre ningún nodo ni servicio de LunaNet.El generador de códigos AFS de LunaNet comprobado frente a las columnas impresas de la especificación, a partir de una ejecución real del motor v0.40.0 (`kshana lunanet-afs-check spec`, fijado a LNIS V5, AD1 volumen A (LSIS-AFS) V1.0, 29 de enero de 2025; el documento marca sus tablas de códigos {LSIS-TBC}). Se alcanzan 9 de 10 comprobaciones; B4 es NOT MET (420 de 421 coinciden). Comprueba un flujo de símbolos frente a una edición de una especificación publicada y no dice nada sobre ningún nodo ni servicio de LunaNet. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Comprueba un flujo de símbolos frente a una edición de una especificación publicada y no dice nada sobre ningún nodo ni servicio de LunaNet.

Estado en el registro: VALIDATED para las comprobaciones de código y de sincronización, frente a los valores que imprime la especificación (que marca como TBC); una comprobación es NOT MET, conservada y fijada (una columna impresa del código terciario difiere: el documento imprime el mismo valor para dos PRN). No se comprueban las palabras LDPC y CRC de las subtramas 2 a 4. Las filas del registro dicen exactamente cuáles. LunaNet AFS.

Ciclo completo de laboratorio#

kshana.test-conditions/1 es una descripción publicada de lo que hizo un laboratorio (eventos, horas, potencias). kshana evidence round-trip enlaza el hash del escenario, el hash de las condiciones, el hash del registro del receptor y la puntuación en un único paquete firmado, y rechaza un paquete cuyas condiciones y escenario de puntuación discrepan sobre los eventos. Kshana nunca produce ni reproduce una señal: cómo llegó un escenario a un receptor es responsabilidad del operador.

kshana evidence --help
La estructura de un paquete de evidencias. Un registro de receptor (NMEA, u-blox UBX, RINEX 3 o un registro de Android) y una ventana de tiempo entran en kshana receiver-trust evidence, que escribe siete archivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig y un timestamp.tsr opcional. El manifiesto registra el SHA-256 del registro completo y de cada archivo, y una cadena de hashes sobre los archivos; la firma cubre el manifiesto. kshana evidence verify comprueba la firma, el hash de cada archivo, la cadena y que no haya ningún archivo no listado, y termina con 0 cuando está verificado, 1 cuando algo falló y 3 cuando el firmante no estaba fijado. Un paquete es un registro técnico, no un dictamen jurídico.La estructura de un paquete de evidencias. Un registro de receptor (NMEA, u-blox UBX, RINEX 3 o un registro de Android) y una ventana de tiempo entran en kshana receiver-trust evidence, que escribe siete archivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig y un timestamp.tsr opcional. El manifiesto registra el SHA-256 del registro completo y de cada archivo, y una cadena de hashes sobre los archivos; la firma cubre el manifiesto. kshana evidence verify comprueba la firma, el hash de cada archivo, la cadena y que no haya ningún archivo no listado, y termina con 0 cuando está verificado, 1 cuando algo falló y 3 cuando el firmante no estaba fijado. Un paquete es un registro técnico, no un dictamen jurídico.

La imagen es la disposición de un paquete. Estado en el registro: MODELLED. Condiciones de prueba, Banco de pruebas.

kshana-bench#

Tareas, particiones y métricas fijas para la detección de interferencias, la detección en IQ, la predicción de holdover y la brecha de optimismo, con un conjunto reservado sellado y una clasificación estática. Puntúa envíos; no es un ranking de receptores.

kshana bench baseline --task d --split test --out results/
Las líneas base integradas de la tarea D de kshana-bench (la brecha de optimismo) en la partición de prueba, a partir de una ejecución real del motor v0.40.0 (`kshana bench baseline`). Cada par de barras es el área bajo la curva ROC en los casos dentro de la distribución y en los casos desplazados; la diferencia entre ambas es la brecha de optimismo, frente a una tolerancia de 0,05. fused-max-z: 0,998 y 0,983 (diferencia 0,015); sqm-imbalance: 0,882 y 0,882 (diferencia 0,001); agc-excess: 0,848 y 0,819 (diferencia 0,030); raim-parity: 0,682 y 0,672 (diferencia 0,010); energy-cn0-drop: 0,595 y 0,565 (diferencia 0,030). Las etiquetas son etiquetas de un modelo generativo de un corpus sintético, nunca datos de campo: MODELLED. Consultivo: modelado o medido frente a referencias declaradas, no una aprobación, una certificación ni una declaración de ajuste a la norma. Una puntuación describe un registro o un corpus, nunca un producto.Las líneas base integradas de la tarea D de kshana-bench (la brecha de optimismo) en la partición de prueba, a partir de una ejecución real del motor v0.40.0 (`kshana bench baseline`). Cada par de barras es el área bajo la curva ROC en los casos dentro de la distribución y en los casos desplazados; la diferencia entre ambas es la brecha de optimismo, frente a una tolerancia de 0,05. fused-max-z: 0,998 y 0,983 (diferencia 0,015); sqm-imbalance: 0,882 y 0,882 (diferencia 0,001); agc-excess: 0,848 y 0,819 (diferencia 0,030); raim-parity: 0,682 y 0,672 (diferencia 0,010); energy-cn0-drop: 0,595 y 0,565 (diferencia 0,030). Las etiquetas son etiquetas de un modelo generativo de un corpus sintético, nunca datos de campo: MODELLED. Consultivo: modelado o medido frente a referencias declaradas, no una aprobación, una certificación ni una declaración de ajuste a la norma. Una puntuación describe un registro o un corpus, nunca un producto.

Estado en el registro: sin fila propia en el registro; las líneas base se etiquetan como MODELLED en los archivos de resultados. Frente a los umbrales preregistrados se alcanzan el evaluador, C1 a C3 y D2, y tres umbrales son NOT MET, cada uno fijado por una prueba: A2 (agc_k_sigma AUC 0,766 frente a al menos 0,80 en la partición de prueba), D1 (mayor brecha 0,0301) y la tarea (b) R1 (arrastrado de la campaña anterior, no vuelto a ejecutar). Las cifras están en xval/bench/RESULTS-v2.md. Bench.

Observatorio de interferencias#

Un producto por día UTC y región a partir de un archivo abierto de posiciones de aeronaves, sobre una cuadrícula gruesa fija: cada celda es degradada, no degradada o no observada (lo cual no es «despejada»). Se publica no antes de 24 h después de terminar el día, con las celdas pequeñas suprimidas y sin atribución de causa.

kshana interference-map daily /path/to/extracted/2026-09-15 \
    --dataset adsb-lol --day 2026-09-15 --bbox 53.5,9.0,66.0,31.0 --out products/
Dos días sintéticos del mapa de interferencias dibujados a partir de las muestras confirmadas en examples/interference-map/output, cada uno con su propia ruta sintética y las proporciones de exposición de ruta que informa el motor. A la izquierda, un día de ADS-B: 1 celda degradada, 6 no degradadas, 4 no evaluadas (rayadas) y celdas sin entrada, dibujadas vacías, que no se observaron. La ruta es de 525 km: el 11,5 % de su longitud en celdas degradadas, el 38,3 % no degradado, el 9,1 % no evaluado y el 41,1 % no observado. A la derecha, un día de AIS: celdas marcadas por los detectores de círculo y de tierra firme, celdas no anómalas y celdas vacías; la ruta es de 454 km con el 10,5 % en celdas anómalas, el 21,2 % no anómalo, el 0,0 % no evaluado y el 68,3 % no observado. ADS-B y AIS son capas separadas, nunca combinadas. Una celda marcada no es un hallazgo de interferencia, y una celda sin color no se observó, lo que no equivale a despejada. Todos los datos son inventados, en pleno Atlántico medio, y no son una medición.Dos días sintéticos del mapa de interferencias dibujados a partir de las muestras confirmadas en examples/interference-map/output, cada uno con su propia ruta sintética y las proporciones de exposición de ruta que informa el motor. A la izquierda, un día de ADS-B: 1 celda degradada, 6 no degradadas, 4 no evaluadas (rayadas) y celdas sin entrada, dibujadas vacías, que no se observaron. La ruta es de 525 km: el 11,5 % de su longitud en celdas degradadas, el 38,3 % no degradado, el 9,1 % no evaluado y el 41,1 % no observado. A la derecha, un día de AIS: celdas marcadas por los detectores de círculo y de tierra firme, celdas no anómalas y celdas vacías; la ruta es de 454 km con el 10,5 % en celdas anómalas, el 21,2 % no anómalo, el 0,0 % no evaluado y el 68,3 % no observado. ADS-B y AIS son capas separadas, nunca combinadas. Una celda marcada no es un hallazgo de interferencia, y una celda sin color no se observó, lo que no equivale a despejada. Todos los datos son inventados, en pleno Atlántico medio, y no son una medición.

La imagen son los días de muestra registrados, no un producto del observatorio. Estado en el registro: MODELLED: sin referencia independiente externa, sin verdad de referencia y sin atribución de causa; una celda no observada no se evaluó, lo cual no es lo mismo que despejada. Método del observatorio.

Exportadores#

Telemetría de confianza como texto Prometheus, CEF, LEEF, OTLP y mensajes de descubrimiento y de estado MQTT de Home Assistant. El comando publica solo en un destino que usted le dé y no guarda credenciales.

kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Un resultado de confianza en tres formatos de exportación, a partir de ejecuciones reales del motor v0.40.0 (`kshana trust-telemetry`) sobre examples/maritime-trust: exposición de texto de Prometheus (la última puntuación de confianza es 5,9 y la banda de no confiable es la activa), y los últimos mensajes CEF y LEEF. El comando no publica nada si no se le da un destino, no guarda credenciales y no transmite ninguna señal de radio. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque.Un resultado de confianza en tres formatos de exportación, a partir de ejecuciones reales del motor v0.40.0 (`kshana trust-telemetry`) sobre examples/maritime-trust: exposición de texto de Prometheus (la última puntuación de confianza es 5,9 y la banda de no confiable es la activa), y los últimos mensajes CEF y LEEF. El comando no publica nada si no se le da un destino, no guarda credenciales y no transmite ninguna señal de radio. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque.

Estado en el registro: MODELLED. Telemetría de confianza.

El tipo optical-atmosphere puede escribir una realización con semilla de la meteorología de un emplazamiento como serie de margen del enlace: episodios de nubes, una columna de agua líquida para cada uno, una muestra de centelleo por paso. La página de PNT óptico de Studio abre los escenarios optical-atmosphere.

kshana scenarios/optical-atmosphere-network.toml
Una realización con semilla del margen del enlace del emplazamiento 'northern' durante 336 h, a partir de una ejecución real del motor v0.40.0 sobre scenarios/optical-atmosphere-network.toml (semilla 37, un paso de 600 s). El margen cae por debajo de cero durante los episodios de nubes; en este sorteo el enlace está activo el 40,5 % del tiempo, con 27 interrupciones y una interrupción más larga de 30,7 h. Las entradas son ilustrativas, la serie es un sorteo del modelo y no el clima, y difiere de la disponibilidad estadística (37,8 %) por el error de muestreo del sorteo. Solo análisis de carácter consultivo: no es un producto certificado de disponibilidad, de integridad ni de navegación, y no es una predicción para ningún emplazamiento real salvo que sus entradas de clima procedan de un conjunto de datos declarado.Una realización con semilla del margen del enlace del emplazamiento 'northern' durante 336 h, a partir de una ejecución real del motor v0.40.0 sobre scenarios/optical-atmosphere-network.toml (semilla 37, un paso de 600 s). El margen cae por debajo de cero durante los episodios de nubes; en este sorteo el enlace está activo el 40,5 % del tiempo, con 27 interrupciones y una interrupción más larga de 30,7 h. Las entradas son ilustrativas, la serie es un sorteo del modelo y no el clima, y difiere de la disponibilidad estadística (37,8 %) por el error de muestreo del sorteo. Solo análisis de carácter consultivo: no es un producto certificado de disponibilidad, de integridad ni de navegación, y no es una predicción para ningún emplazamiento real salvo que sus entradas de clima procedan de un conjunto de datos declarado.

Estado en el registro: MODELLED. Un sorteo del modelo, no el clima. Atmósfera óptica.

Nuevas vistas de Studio#

kshana.dev/studio incorpora una repetición del puente (dos ejecuciones lado a lado con un mismo reloj de misión, en /studio/replay/), una página de PNT óptico (/studio/optical/), una página de prueba de holdover (/studio/holdover/) y un visor del observatorio (/studio/observatory/). Ejecutan el mismo motor en el navegador, no se sube nada y llevan la misma declaración de carácter consultivo. Las imágenes de arriba las dibuja un script a partir de la propia salida del motor; no son capturas de pantalla de estas páginas.

Navegación de usuarios espaciales (gnss-ssv)#

Para una nave por encima, alrededor o muy por encima de las órbitas GNSS: cuántas señales GNSS puede usar, cuán intensas son, qué tan buena es la geometría y qué puede hacer con ellas un filtro de a bordo. Un tipo, cuatro modos, elegidos por las tablas del escenario: una capa de usuarios (la proporción de tiempo con una y con cuatro señales, por constelación), una trayectoria (señales, C/N0, dilución de la precisión y el medio de rayo rasante a lo largo de una órbita), una ejecución de navegación (un filtro de nueve estados sobre pseudodistancias, hasta la Luna) y una formación (navegación relativa de subordinados en torno a un jefe). La fuente pública para la comparación de disponibilidad es el folleto interoperable del Volumen de Servicio Espacial GNSS (UN OOSA ST/SPACE/75, del Comité Internacional sobre GNSS), que es en sí una simulación; se descarga, nunca se incorpora al repositorio. Página completa: docs/SSV.md.

kshana scenarios/gnss-ssv-shell.toml            # shell: the upper space service volume, reduced size
kshana scenarios/gnss-ssv-heo.toml              # trajectory: a high Earth orbit, limb medium
kshana scenarios/gnss-ssv-nav-lunar.toml        # navigation: an onboard filter toward the Moon
kshana scenarios/gnss-ssv-formation-heo.toml    # formation: relative navigation
Disponibilidad de señal para un usuario sobre una esfera a 36000 km de altitud con una antena hemisférica, a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-shell.toml (una ejecución reducida: 162 usuarios, 3 días, pasos de 10 min), con un umbral de 20 dB-Hz. Para cada constelación y banda, dos barras: la proporción de pares (usuario, época) con al menos una señal y con al menos cuatro. Combinado, L1: 99,4 % al menos una, 73,2 % al menos cuatro, interrupción más larga por debajo de cuatro señales 160 min. Combinado, L5: 100,0 % al menos una, 99,9 % al menos cuatro, interrupción más larga por debajo de cuatro señales 20 min. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. El tamaño reducido no es la comparación con el folleto. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Disponibilidad de señal para un usuario sobre una esfera a 36000 km de altitud con una antena hemisférica, a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-shell.toml (una ejecución reducida: 162 usuarios, 3 días, pasos de 10 min), con un umbral de 20 dB-Hz. Para cada constelación y banda, dos barras: la proporción de pares (usuario, época) con al menos una señal y con al menos cuatro. Combinado, L1: 99,4 % al menos una, 73,2 % al menos cuatro, interrupción más larga por debajo de cuatro señales 160 min. Combinado, L5: 100,0 % al menos una, 99,9 % al menos cuatro, interrupción más larga por debajo de cuatro señales 20 min. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. El tamaño reducido no es la comparación con el folleto. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Señales a lo largo de una órbita terrestre alta (perigeo 497 km, apogeo 58622 km, periodo 18,8 h), a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-heo.toml, banda L1. Arriba: la mejor densidad de portadora a ruido entre las señales a la vista, frente al umbral de 20 dB-Hz. En medio: el número de señales a la vista de todas las constelaciones, de 4 a 55 a lo largo de los puntos muestreados. De los enlaces recibidos, 2252 llegaron por un lóbulo principal y 696 por lóbulos laterales, con un patrón paramétrico sustitutivo etiquetado, no el patrón medido de ningún sistema. PDOP mediano 67, percentil 95 358. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Señales a lo largo de una órbita terrestre alta (perigeo 497 km, apogeo 58622 km, periodo 18,8 h), a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-heo.toml, banda L1. Arriba: la mejor densidad de portadora a ruido entre las señales a la vista, frente al umbral de 20 dB-Hz. En medio: el número de señales a la vista de todas las constelaciones, de 4 a 55 a lo largo de los puntos muestreados. De los enlaces recibidos, 2252 llegaron por un lóbulo principal y 696 por lóbulos laterales, con un patrón paramétrico sustitutivo etiquetado, no el patrón medido de ningún sistema. PDOP mediano 67, percentil 95 358. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Un filtro de nueve estados a bordo en una transferencia desde órbita baja hacia la Luna, a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-nav-lunar.toml (289 épocas, 13 puntos dibujados). En un eje logarítmico, el error de posición real y la propia cota de un sigma del filtro frente al tiempo desde el inicio. Dentro de las órbitas GNSS el RMS de posición es 1,4 m; por encima de ellas es 90 m, con el error final de 184 m a 193.330 km de altitud con 1 medición. El error de estimación normalizado al cuadrado medio de toda la ejecución es 4,4 (unos 3 para un bloque de posición coherente). La verdad y el filtro comparten sus sustitutos del Sol y de la Luna. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Un filtro de nueve estados a bordo en una transferencia desde órbita baja hacia la Luna, a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-nav-lunar.toml (289 épocas, 13 puntos dibujados). En un eje logarítmico, el error de posición real y la propia cota de un sigma del filtro frente al tiempo desde el inicio. Dentro de las órbitas GNSS el RMS de posición es 1,4 m; por encima de ellas es 90 m, con el error final de 184 m a 193.330 km de altitud con 1 medición. El error de estimación normalizado al cuadrado medio de toda la ejecución es 4,4 (unos 3 para un bloque de posición coherente). La verdad y el filtro comparten sus sustitutos del Sol y de la Luna. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Navegación relativa de 2 subordinados en torno a un jefe en una órbita alta, a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-formation-heo.toml (401 épocas). Para cada subordinado, dos barras: el RMS de la posición relativa restando las dos estimaciones absolutas independientes, y el del filtro relativo sobre pseudodistancias de diferencia simple. Línea base 0,8 km: 5,1 m y 1,2 m. Línea base 2,0 km: 4,1 m y 2,1 m. El filtro absoluto no es coherente aquí: error de estimación normalizado al cuadrado medio 187 frente a unos 3 para un filtro coherente, de modo que su incertidumbre declarada es muy inferior a la real. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Navegación relativa de 2 subordinados en torno a un jefe en una órbita alta, a partir de una ejecución real del motor v0.40.0 sobre scenarios/gnss-ssv-formation-heo.toml (401 épocas). Para cada subordinado, dos barras: el RMS de la posición relativa restando las dos estimaciones absolutas independientes, y el del filtro relativo sobre pseudodistancias de diferencia simple. Línea base 0,8 km: 5,1 m y 1,2 m. Línea base 2,0 km: 4,1 m y 2,1 m. El filtro absoluto no es coherente aquí: error de estimación normalizado al cuadrado medio 187 frente a unos 3 para un filtro coherente, de modo que su incertidumbre declarada es muy inferior a la real. MODELLED: un estudio modelado a partir de entradas declaradas, no una medición ni una afirmación de volumen de servicio para ningún sistema. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.

Estado en el registro: MODELLED, y la comparación con el folleto en su mayor parte falla. Los umbrales se fijaron antes de la ejecución. De ocho, solo se alcanzan S0 (el balance de enlace inverso, 13 de 13 valores) y S6 (la misión lunar). S1 a S5 y S7 son NOT MET: la geometría del volumen de servicio superior e inferior (43 de 52 y 48 de 52 celdas), el volumen de servicio superior de 15/20/25 dB-Hz, las seis misiones GEO, la misión HEO y el patrón paramétrico de lóbulos laterales frente a los patrones medidos de paneles GPS. Casi todos los fallos de S1 a S5 afectan a GLONASS, y el folleto imprime dos ángulos de referencia distintos para él; una variante de diagnóstico que usa el otro par lleva S1, S2 y S4 a todas las celdas, pero no sustituye la ejecución de referencia y ninguna fila es VALIDATED. El filtro absoluto de la ejecución de formación también es demasiado confiado (error normalizado al cuadrado medio muy por encima del valor de unos 3 que da un filtro coherente).

La comparación registrada del modelo de disponibilidad de usuarios espaciales con el folleto público del Volumen de Servicio Espacial, a partir de los resultados registrados de la ejecución preregistrada (xval/gnss-ssv/results-run1.json, escrito por el ejemplo ssv_booklet_check del motor v0.40.0). Umbral por umbral, las celdas dentro de la tolerancia: S0 13 de 13 (MET); S1 43 de 52 (NOT MET); S2 48 de 52 (NOT MET); S3 122 de 155 (NOT MET); S4 132 de 156 (NOT MET); S5 18 de 26 (NOT MET); S6 26 de 26 (MET); S7 0 de 20 patrones de panel (NOT MET). Solo se alcanzan S0 y S6 con la lectura preregistrada. Una variante de diagnóstico que usa los otros ángulos de GLONASS del folleto lleva S1, S2 y S4 a todas las celdas, pero no sustituye la ejecución de referencia. Ninguna fila del registro es VALIDATED. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.La comparación registrada del modelo de disponibilidad de usuarios espaciales con el folleto público del Volumen de Servicio Espacial, a partir de los resultados registrados de la ejecución preregistrada (xval/gnss-ssv/results-run1.json, escrito por el ejemplo ssv_booklet_check del motor v0.40.0). Umbral por umbral, las celdas dentro de la tolerancia: S0 13 de 13 (MET); S1 43 de 52 (NOT MET); S2 48 de 52 (NOT MET); S3 122 de 155 (NOT MET); S4 132 de 156 (NOT MET); S5 18 de 26 (NOT MET); S6 26 de 26 (MET); S7 0 de 20 patrones de panel (NOT MET). Solo se alcanzan S0 y S6 con la lectura preregistrada. Una variante de diagnóstico que usa los otros ángulos de GLONASS del folleto lleva S1, S2 y S4 a todas las celdas, pero no sustituye la ejecución de referencia. Ninguna fila del registro es VALIDATED. De carácter consultivo: salida de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.

Navegación de usuarios espaciales, qué muestra la comparación.

Infraestructura lunar (lunar-infrastructure)#

La órbita y la superficie de la Luna como infraestructura de navegación y geodésica, en cinco estudios elegidos por study: od-consistency (una determinación de órbita a bordo con GNSS terrestre en una órbita de halo frente a una independiente desde tierra), carrier-phase (fijación de ambigüedad entera entre estaciones de superficie y un orbitador), frame-coestimation (el datum lunar a partir de mediciones de distancia desde estaciones terrestres con y sin enlaces con el orbitador), space-tie (desfases de láser, VLBI y GNSS en una misma nave frente al error de enlace local) y geodesy-sensitivity (qué familia de observables ve los números de Love h2, k2 y l2). El modelo es uno restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas. Página completa: docs/LUNAR-INFRASTRUCTURE.md.

kshana scenarios/lunar-infrastructure-od-consistency.toml
kshana scenarios/lunar-infrastructure-carrier-phase.toml            # quick; the scored run takes about eight minutes
kshana scenarios/lunar-infrastructure-frame-coestimation.toml
kshana scenarios/lunar-infrastructure-space-tie.toml
kshana scenarios/lunar-infrastructure-geodesy-sensitivity.toml
Consistencia de una determinación de órbita a bordo con GNSS terrestre en una órbita de halo casi rectilínea con una determinación de órbita independiente en tierra, a partir de ejecuciones reales del motor v0.40.0 sobre scenarios/lunar-infrastructure-od-consistency.toml y su variante con error de modelo (400 ensayos cada una). La diferencia normalizada media q es 5,81 sin error de modelo y 5,95 con un error de aceleración inyectado de 3e-10 m/s2, frente a 6 esperado: las dos soluciones de órbita son consistentes (umbral C1 MET). La proporción de ensayos por encima del punto del 95 % es 0,040 y 0,052; el umbral para detectar el error inyectado era de al menos 0,5, de modo que es NOT MET (C3): la solución a bordo se conoce con unos 352 m frente a 23 m de la de tierra, por lo que un desplazamiento de diez metros queda oculto dentro de su covarianza. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Consistencia de una determinación de órbita a bordo con GNSS terrestre en una órbita de halo casi rectilínea con una determinación de órbita independiente en tierra, a partir de ejecuciones reales del motor v0.40.0 sobre scenarios/lunar-infrastructure-od-consistency.toml y su variante con error de modelo (400 ensayos cada una). La diferencia normalizada media q es 5,81 sin error de modelo y 5,95 con un error de aceleración inyectado de 3e-10 m/s2, frente a 6 esperado: las dos soluciones de órbita son consistentes (umbral C1 MET). La proporción de ensayos por encima del punto del 95 % es 0,040 y 0,052; el umbral para detectar el error inyectado era de al menos 0,5, de modo que es NOT MET (C3): la solución a bordo se conoce con unos 352 m frente a 23 m de la de tierra, por lo que un desplazamiento de diez metros queda oculto dentro de su covarianza. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Resolución de la ambigüedad entera de la fase de portadora entre estaciones de superficie lunares y un orbitador, a partir del resultado confirmado de la ejecución puntuada del motor v0.40.0 (tests/fixtures/lunar_infra/phase_full_run.json: 3 duraciones de arco, un Monte Carlo de 401 extracciones cada una, escrito por scenarios/carrier-phase-scored.toml). 1 día: éxito 1,0 % (error estándar 0,5 %), 134 ambigüedades, sigma de posición del orbitador 45,6 m flotante y 18,5 m fijada; 2 días: éxito 0,5 % (error estándar 0,4 %), 259 ambigüedades, sigma de posición del orbitador 21,5 m flotante y 8,7 m fijada; 3 días: éxito 2,8 % (error estándar 0,8 %), 375 ambigüedades, sigma de posición del orbitador 6,3 m flotante y 2,1 m fijada. La resolución entera no se logra: el éxito se mantiene entre el 1 % y el 3 % a 25 dBi, y a los 12 dBi registrados el problema no puede plantearse. MODELLED: un modelo restringido de tres cuerpos con simplificaciones indicadas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Carácter consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Resolución de la ambigüedad entera de la fase de portadora entre estaciones de superficie lunares y un orbitador, a partir del resultado confirmado de la ejecución puntuada del motor v0.40.0 (tests/fixtures/lunar_infra/phase_full_run.json: 3 duraciones de arco, un Monte Carlo de 401 extracciones cada una, escrito por scenarios/carrier-phase-scored.toml). 1 día: éxito 1,0 % (error estándar 0,5 %), 134 ambigüedades, sigma de posición del orbitador 45,6 m flotante y 18,5 m fijada; 2 días: éxito 0,5 % (error estándar 0,4 %), 259 ambigüedades, sigma de posición del orbitador 21,5 m flotante y 8,7 m fijada; 3 días: éxito 2,8 % (error estándar 0,8 %), 375 ambigüedades, sigma de posición del orbitador 6,3 m flotante y 2,1 m fijada. La resolución entera no se logra: el éxito se mantiene entre el 1 % y el 3 % a 25 dBi, y a los 12 dBi registrados el problema no puede plantearse. MODELLED: un modelo restringido de tres cuerpos con simplificaciones indicadas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Carácter consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Precisión del datum lunar de siete parámetros (tres traslaciones, una escala y tres rotaciones) a partir de mediciones de distancia desde estaciones terrestres, con y sin distancias de orbitador a estación de superficie, a partir de una ejecución real del motor v0.40.0 sobre scenarios/lunar-infrastructure-frame-coestimation.toml. La sigma de Cramer-Rao de las traslaciones y rotaciones disminuye con los enlaces del orbitador (por ejemplo, t_z de 0,98 m a 0,046 m); el menor autovalor de información aumenta 111 veces y la traza de la CRLB baja al 1,0 % (umbral F3 MET). Esto supone que la órbita se conoce en los ejes lunares, con su error recogido en la sigma de distancia del orbitador de 1 m. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Precisión del datum lunar de siete parámetros (tres traslaciones, una escala y tres rotaciones) a partir de mediciones de distancia desde estaciones terrestres, con y sin distancias de orbitador a estación de superficie, a partir de una ejecución real del motor v0.40.0 sobre scenarios/lunar-infrastructure-frame-coestimation.toml. La sigma de Cramer-Rao de las traslaciones y rotaciones disminuye con los enlaces del orbitador (por ejemplo, t_z de 0,98 m a 0,046 m); el menor autovalor de información aumenta 111 veces y la traza de la CRLB baja al 1,0 % (umbral F3 MET). Esto supone que la órbita se conoce en los ejes lunares, con su error recogido en la sigma de distancia del orbitador de 1 m. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Precisión de los desfases entre las posiciones por medición láser de distancia, VLBI y GNSS de una nave, frente al error del enlace local en tierra, a partir de una ejecución real del motor v0.40.0 sobre scenarios/lunar-infrastructure-space-tie.toml (un arco de 6,56 días, sigmas de técnica GNSS 10 m, VLBI 1 m, láser 0,1 m). Con un enlace local de 1 mm a 1 m, la sigma de traslación láser menos GNSS se mantiene cerca de 1,04 m hasta que el enlace llega a 1 m: está limitada por el ruido de medición de las técnicas, no por el enlace local. El mínimo fijado solo por el enlace es la raíz cuadrada de dos veces su sigma. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Precisión de los desfases entre las posiciones por medición láser de distancia, VLBI y GNSS de una nave, frente al error del enlace local en tierra, a partir de una ejecución real del motor v0.40.0 sobre scenarios/lunar-infrastructure-space-tie.toml (un arco de 6,56 días, sigmas de técnica GNSS 10 m, VLBI 1 m, láser 0,1 m). Con un enlace local de 1 mm a 1 m, la sigma de traslación láser menos GNSS se mantiene cerca de 1,04 m hasta que el enlace llega a 1 m: está limitada por el ruido de medición de las técnicas, no por el enlace local. El mínimo fijado solo por el enlace es la raíz cuadrada de dos veces su sigma. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana. Qué familia de observables es sensible a los números de Love lunares h2, k2 y l2, a partir de una ejecución real del motor v0.40.0 sobre scenarios/lunar-infrastructure-geodesy-sensitivity.toml. Cada celda es la derivada parcial RMS de las observaciones de una familia respecto a un parámetro, en las unidades propias de esa familia (de modo que las celdas se comparan a lo largo de una fila, no de una columna); un guion indica que la familia no tiene sensibilidad. Medición láser de distancia: h2 7,6, k2 ninguna, l2 9,8. Seguimiento del orbitador: h2 ninguna, k2 0,00086, l2 ninguna. Gravímetro de superficie: h2 2.9e+03, k2 4.3e+03, l2 ninguna. Reloj de superficie: h2 2.8e-17, k2 2.8e-17, l2 ninguna. Con las cuatro familias, la sigma de Cramer-Rao es el 0,36 % de h2 nominal, el 0,52 % de k2 y el 1,16 % de l2. Añadir una familia nunca redujo el menor autovalor (28 de 28 adiciones), pero la traza de la seudoinversa no fue mayor en solo 16 de 28: esa mitad del umbral G3 es NOT MET. La familia del orbitador ve la integral a lo largo de la línea de visión de la aceleración de k2, una cifra de extremo superior. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.Qué familia de observables es sensible a los números de Love lunares h2, k2 y l2, a partir de una ejecución real del motor v0.40.0 sobre scenarios/lunar-infrastructure-geodesy-sensitivity.toml. Cada celda es la derivada parcial RMS de las observaciones de una familia respecto a un parámetro, en las unidades propias de esa familia (de modo que las celdas se comparan a lo largo de una fila, no de una columna); un guion indica que la familia no tiene sensibilidad. Medición láser de distancia: h2 7,6, k2 ninguna, l2 9,8. Seguimiento del orbitador: h2 ninguna, k2 0,00086, l2 ninguna. Gravímetro de superficie: h2 2.9e+03, k2 4.3e+03, l2 ninguna. Reloj de superficie: h2 2.8e-17, k2 2.8e-17, l2 ninguna. Con las cuatro familias, la sigma de Cramer-Rao es el 0,36 % de h2 nominal, el 0,52 % de k2 y el 1,16 % de l2. Añadir una familia nunca redujo el menor autovalor (28 de 28 adiciones), pero la traza de la seudoinversa no fue mayor en solo 16 de 28: esa mitad del umbral G3 es NOT MET. La familia del orbitador ve la integral a lo largo de la línea de visión de la aceleración de k2, una cifra de extremo superior. MODELLED: un modelo restringido de tres cuerpos con simplificaciones declaradas y entradas ilustrativas, no una medición de ninguna magnitud lunar. Consultivo: resultado de análisis de una herramienta de investigación e ingeniería, no un equipo de navegación homologado ni un servicio de seguridad de la vida humana.

Estado en el registro: MODELLED, y tres umbrales son NOT MET. La numérica se comprueba frente a programas independientes de numpy y scipy; nada se compara con una medición de una magnitud lunar, y nada es VALIDATED. Alcanzados: las dos soluciones de órbita son coherentes (q medio 5,81 frente a 6 esperado), y los enlaces con el orbitador elevan unas 111 veces el menor valor propio del datum, suponiendo una órbita conocida. No alcanzados: el error de modelo inyectado de 3e-10 m/s2 no se detecta (C3: la solución a bordo se conoce hasta unos 350 m, de modo que unos diez metros se esconden en su covarianza); no se logra la fijación entera (1 a 3 % de éxito a 25 dBi, y a los 12 dBi registrados el problema no puede plantearse); y la mitad de traza de G3 para añadir una familia de observables (la traza subió en 12 de 28 adiciones, cada vez porque la familia elevó el rango). Cada fallo queda fijado por una prueba. Infraestructura lunar.

Kshana Studio#

Abra kshana.dev/studio y todo el motor se ejecuta en su navegador, compilado a WebAssembly. Nada que instalar, y nada se sube. Studio tiene dos vistas del mismo motor, y un interruptor en la cabecera pasa de una a otra conservando el escenario, la vista y cualquier ajuste que haya cambiado.

La vista Simple es con la que se abre Studio. Parte de preguntas (cuántos satélites puedo ver, puedo confiar en mi posición, cuánto tiempo puede un reloj mantener la hora, qué le hace un jammer a mi receptor) y de un mapa de todo lo que puede hacer el motor, cada área con su proporción de métodos validados. Abra un escenario y la respuesta va primero: una frase llana, escrita para lo que mide ese escenario, luego sus cifras clave y un gráfico. Como máximo se muestran cinco ajustes, los que más cambian la respuesta; el resto espera bajo Ajustes avanzados. Cómo se calcula esto explica el método, y Para investigadores da las cifras propias del motor, el archivo de escenario, el código para ejecutarlo desde Python y la cita.

Kshana Studio, vista simple, con el escenario incluido integrity-raim, motor v0.40.0 ejecutándose en local. La pregunta: ¿la geometría cumple los límites de alerta (nivel de protección horizontal y vertical)? Primero la respuesta, marcada como Resultado en vivo: Sí, en su mayor parte: durante el 95,3 % de las 12 h. El límite de error del receptor se mantuvo por debajo de los límites de alerta (40 m en horizontal y 50 m en vertical) en 344 de 361 comprobaciones, y ninguna posición fue engañosa. Cifras clave: tiempo en que se puede confiar en la posición 95,3 %, mayor hueco 10 min, límite de error típico 6,5 / 13 m, posiciones engañosas 0. A su lado, Probar otros ajustes con cinco de ellos (el error de distancia, los dos límites de alerta, la duración y la máscara de elevación) y Ejecutar de nuevo, y luego las secciones plegadas Ajustes avanzados (13 más), Cómo se calcula (8 validados, 6 modelados) y Para investigadores. Debajo, las vistas de este resultado y los niveles de protección representados frente al límite de alerta.Kshana Studio, vista simple, con el escenario incluido integrity-raim, motor v0.40.0 ejecutándose en local. La pregunta: ¿la geometría cumple los límites de alerta (nivel de protección horizontal y vertical)? Primero la respuesta, marcada como Resultado en vivo: Sí, en su mayor parte: durante el 95,3 % de las 12 h. El límite de error del receptor se mantuvo por debajo de los límites de alerta (40 m en horizontal y 50 m en vertical) en 344 de 361 comprobaciones, y ninguna posición fue engañosa. Cifras clave: tiempo en que se puede confiar en la posición 95,3 %, mayor hueco 10 min, límite de error típico 6,5 / 13 m, posiciones engañosas 0. A su lado, Probar otros ajustes con cinco de ellos (el error de distancia, los dos límites de alerta, la duración y la máscara de elevación) y Ejecutar de nuevo, y luego las secciones plegadas Ajustes avanzados (13 más), Cómo se calcula (8 validados, 6 modelados) y Para investigadores. Debajo, las vistas de este resultado y los niveles de protección representados frente al límite de alerta.

La vista Avanzada es el panel completo: la biblioteca de escenarios, cinco pasos numerados (Elegir, Ajustar, Ejecutar, Leer resultados, Compartir o exportar), las cifras clave con etiquetas PASS y FAIL donde la ejecución declara un umbral, y todos los paneles: resumen, gráficos, mapas, repetición, el informe del motor y exportaciones. Un cuadro de búsqueda llega a escenarios, dominios y los campos que contienen, y puede fijar hasta cuatro ejecuciones y compararlas lado a lado.

La pantalla inicial de la vista Simple, y la vista Avanzada tras una ejecución
Kshana Studio, vista simple, pantalla de inicio, titulada ¿Qué le gustaría averiguar?, con el motor v0.40.0 activo y, en la barra superior, tres enlaces: Informe de formación, Mapa de interferencias y Confianza del receptor. Cuatro preguntas: cuántos satélites puedo ver en cualquier lugar de la Tierra, puedo fiarme de mi posición, cuánto tiempo puede un reloj mantener la hora sin satélites, y qué le hace un inhibidor a mi receptor. Bajo la primera, su resultado registrado: al menos 22 satélites a la vista en cada lugar y 31 de media con GPS, Galileo, BeiDou y GLONASS juntos, una posición posible en el 100 % de los lugares y momentos, sobre un mapa mundial de satélites a la vista, con un botón Abrir este resultado. A su lado, Todo lo que Kshana puede hacer: 16 áreas y 139 escenarios listos para ejecutar, cada recuadro con un pequeño gráfico de una ejecución registrada y su proporción de métodos validados, y las 173 de 350 capacidades validadas del registro.Kshana Studio, vista simple, pantalla de inicio, titulada ¿Qué le gustaría averiguar?, con el motor v0.40.0 activo y, en la barra superior, tres enlaces: Informe de formación, Mapa de interferencias y Confianza del receptor. Cuatro preguntas: cuántos satélites puedo ver en cualquier lugar de la Tierra, puedo fiarme de mi posición, cuánto tiempo puede un reloj mantener la hora sin satélites, y qué le hace un inhibidor a mi receptor. Bajo la primera, su resultado registrado: al menos 22 satélites a la vista en cada lugar y 31 de media con GPS, Galileo, BeiDou y GLONASS juntos, una posición posible en el 100 % de los lugares y momentos, sobre un mapa mundial de satélites a la vista, con un botón Abrir este resultado. A su lado, Todo lo que Kshana puede hacer: 16 áreas y 139 escenarios listos para ejecutar, cada recuadro con un pequeño gráfico de una ejecución registrada y su proporción de métodos validados, y las 173 de 350 capacidades validadas del registro. Kshana Studio, vista avanzada, tras una ejecución del escenario incluido constellation-multi-gnss-coverage (Cuatro constelaciones GNSS, un mapa), motor v0.40.0 ejecutándose en local. A la izquierda la biblioteca de escenarios, 139 escenarios en 16 ámbitos. Los cinco pasos Elegir, Establecer, Ejecutar, Leer resultados y Compartir o exportar, con el paso 4 actual. Cifras clave: 102 satélites, disponibilidad 100 % (PASS), dilución de precisión de posición (PDOP) mediana 0,95 (PASS), percentil 95 de PDOP 1,105 (PASS), 31,03 satélites a la vista de media y 22 como mínimo. Debajo, la fila de paneles con Cobertura seleccionada, la barra de reproducción, un mapa mundial del PDOP medio de 0,831 a 1,0853 con cada satélite dibujado, y las cifras de cobertura global.Kshana Studio, vista avanzada, tras una ejecución del escenario incluido constellation-multi-gnss-coverage (Cuatro constelaciones GNSS, un mapa), motor v0.40.0 ejecutándose en local. A la izquierda la biblioteca de escenarios, 139 escenarios en 16 ámbitos. Los cinco pasos Elegir, Establecer, Ejecutar, Leer resultados y Compartir o exportar, con el paso 4 actual. Cifras clave: 102 satélites, disponibilidad 100 % (PASS), dilución de precisión de posición (PDOP) mediana 0,95 (PASS), percentil 95 de PDOP 1,105 (PASS), 31,03 satélites a la vista de media y 22 como mínimo. Debajo, la fila de paneles con Cobertura seleccionada, la barra de reproducción, un mapa mundial del PDOP medio de 0,831 a 1,0853 con cada satélite dibujado, y las cifras de cobertura global.

El código fuente de Studio y sus notas de compilación están en web/README.md.

El sitio#

El resto de kshana.dev se construye a partir de los propios archivos de este repositorio y de ejecuciones del motor: misiones, capacidades, el registro de evidencias, la investigación publicada y las ediciones.

Tres páginas de kshana.dev una junto a otra. La portada de Inicio: la línea del nombre Kshana · क्षण · el instante preciso sobre el titular Ensaye el minuto en que el GNSS se apaga, con la consola de misión de una ejecución real del motor v0.40.0 (un globo y tres gráficos en vivo: error de tiempo del reloj, densidad portadora a ruido y nivel de protección). Evidencias, Investigación publicada: los seis artículos de arXiv basados en el motor abierto, el más reciente con una figura del motor. Ediciones, Kshana Pro, el mismo motor, amplificado: Free ejecuta un escenario, Pro responde a la pregunta del programa.Tres páginas de kshana.dev una junto a otra. La portada de Inicio: la línea del nombre Kshana · क्षण · el instante preciso sobre el titular Ensaye el minuto en que el GNSS se apaga, con la consola de misión de una ejecución real del motor v0.40.0 (un globo y tres gráficos en vivo: error de tiempo del reloj, densidad portadora a ruido y nivel de protección). Evidencias, Investigación publicada: los seis artículos de arXiv basados en el motor abierto, el más reciente con una figura del motor. Ediciones, Kshana Pro, el mismo motor, amplificado: Free ejecuta un escenario, Pro responde a la pregunta del programa.

Capacidades#

Un solo motor cubre toda la cadena de fallo, desde el primer satélite interferido hasta el último nanosegundo de holdover del reloj. El motor tiene 92 tipos de escenario; kshana kinds los enumera y docs/SCENARIOS.md documenta cada campo.

Capacidad Qué responde
Espectro cómo un jammer se apodera de la banda L del GNSS, banda por banda, segundo a segundo
Relojes y temporización cuánto tiempo mantiene la hora cada reloj tras perder el GNSS
Constelaciones alrededor de cualquier cuerpo cobertura, dilución de la precisión y disponibilidad alrededor de la Tierra, la Luna o Marte
Sistema solar dónde está cada planeta, y el tiempo de luz de cualquier enlace
Navegación en órbita terrestre baja una pasada, un enlace, un mensaje de navegación y una posición fusionada, etapa por etapa
Campañas una misión encadenada, un barrido o un conjunto de Monte Carlo en un solo escenario
Animación la serie temporal de una ejecución como dibujo animado, un reproductor o fotogramas
Informes cada cifra con su unidad y su etiqueta, en HTML (lenguaje de marcado de hipertexto) y JSON (notación de objetos de JavaScript)
Exportaciones de interoperabilidad órbitas y geometría para otras herramientas: SP3, CCSDS OMM y OEM, CZML, KML, GeoJSON, STK y SigMF
Confianza marítima puede el puente confiar en esta posición: una puntuación de 0 a 100 y motivos para el NMEA de un buque, en vivo o desde un registro (de carácter consultivo, no un equipo de navegación homologado)
Flujos NMEA de formación NMEA de puente sintético con jamming y spoofing programados y un registro del instructor, para la formación de tripulaciones (solo texto; nunca para los sistemas de navegación en servicio de un buque; de carácter consultivo, no un equipo de navegación homologado)
Mapa de interferencias dónde informaron aeronaves y buques de datos de navegación degradados, y cuánto de una ruta afecta
Región del emisor dónde, bajo supuestos indicados, puede estar una fuente de informes de posición degradados: regiones con una confianza indicada, un centroide con su elipse, nunca un punto (MODELLED; kshana interference-map locate)
Paquetes de evidencias un registro técnico firmado y verificable sin conexión de una ventana de registro de un buque y de lo que el motor calculó a partir de ella, para un informe de incidente (de carácter consultivo, no un equipo de navegación homologado)
Telemetría de confianza el flujo de confianza como métricas de Prometheus, eventos SIEM y OpenTelemetry opcional, con un panel de Grafana de ejemplo (deploy/grafana/kshana-gnss-trust.json)
Signal K y OpenCPN la puntuación de confianza en el servidor Signal K de una embarcación y en OpenCPN, con una compilación de referencia para un ordenador pequeño junto al receptor (de carácter consultivo, no un equipo de navegación homologado)
Exportación para test bench kshana bench-export: el movimiento del vehículo y los eventos de un escenario para un simulador GNSS de laboratorio (no se escribe ninguna señal), y cómo puntuar después el registro del receptor
Correspondencia de compliance e informe kshana compliance-report: a qué filas de marcos públicos de resiliencia aporta evidencias a favor un conjunto de ejecuciones, y la brecha que queda
Cuadernos tutoriales ejecutables: confianza de buques y flujos de formación, exposición de rutas en el mapa de interferencias, correspondencia de compliance y el banco de pruebas, GDOP cuántico frente a clásico
Verificador de Galileo OSNMA los datos de navegación de qué satélites puede autenticar criptográficamente un receptor, y por qué falla una comprobación; Kshana no concede ningún derecho sobre los ICD IPRs de OSNMA de la UE (véase el AVISO en la página)

Los formatos de exportación al completo: SP3 es Standard Product 3; CCSDS OMM y OEM son los Orbit Mean-elements Message y Orbit Ephemeris Message del Consultative Committee for Space Data Systems; CZML y KML son los lenguajes de marcado de Cesium y de Keyhole; STK es Systems Tool Kit; SigMF es el Signal Metadata Format.

La campaña encadenada campaign-jam-spoof-holdover-integrity, una ejecución real del motor (semilla 20260928): 6 fases (Nominal → Jamming → Spoofing → Holdover → Alarma de integridad → Recuperación) y 18 ejecuciones miembro en una rejilla de 10 s durante T+01:16:10. Tres carriles: error de tiempo del reloj frente a una guarda de 50 ns (máximo 62,7 ns), densidad de portadora a ruido efectiva frente a un suelo de 25 dB-Hz (mínimo -12.2 dB-Hz) y nivel de protección vertical frente a un límite de alerta de 50 m (máximo 135,4 m), con los eventos de alarma de la ejecución: T+00:20:00 alarmas del detector de spoofing de RF (monitores fusionados de coherencia, potencia y calidad de señal); T+00:26:10 alarmas del monitor de spoofing asistido por reloj.La campaña encadenada campaign-jam-spoof-holdover-integrity, una ejecución real del motor (semilla 20260928): 6 fases (Nominal → Jamming → Spoofing → Holdover → Alarma de integridad → Recuperación) y 18 ejecuciones miembro en una rejilla de 10 s durante T+01:16:10. Tres carriles: error de tiempo del reloj frente a una guarda de 50 ns (máximo 62,7 ns), densidad de portadora a ruido efectiva frente a un suelo de 25 dB-Hz (mínimo -12.2 dB-Hz) y nivel de protección vertical frente a un límite de alerta de 50 m (máximo 135,4 m), con los eventos de alarma de la ejecución: T+00:20:00 alarmas del detector de spoofing de RF (monitores fusionados de coherencia, potencia y calidad de señal); T+00:26:10 alarmas del monitor de spoofing asistido por reloj.
Cada capacidad, dibujada a partir de una ejecución real: la cascada de banda L, el mapa de cobertura, el sistema solar y una pasada en órbita terrestre baja
La banda L del GNSS como una única densidad espectral de potencia durante 60 s, a partir de una ejecución real del tipo spectrum (l-band-waterfall-jamming.toml, semilla 7, motor v0.40.0): frecuencia en horizontal, tiempo hacia abajo, color para la potencia por encima del suelo de ruido de -202.0 dBW/Hz. Jammers: dispositivo de privacidad con chirp (chirp, activo a los 10 s, desactivado a los 40 s); tono CW en L1 (cw, activo a los 30 s); ruido de banda estrecha en L2 (narrowband, activo a los 45 s). Peor banda GPS L1 C/A: C/N0 efectivo mínimo 3,2 dB-Hz a los 31 s frente a un suelo de seguimiento de 25 dB-Hz. GPS L1 C/A mínimo 3,2 dB-Hz; Galileo E1 mínimo 4,7 dB-Hz; GPS L2C mínimo 36,9 dB-Hz; GPS L5 mínimo 44,1 dB-Hz; Galileo E5a mínimo 47,0 dB-Hz.La banda L del GNSS como una única densidad espectral de potencia durante 60 s, a partir de una ejecución real del tipo spectrum (l-band-waterfall-jamming.toml, semilla 7, motor v0.40.0): frecuencia en horizontal, tiempo hacia abajo, color para la potencia por encima del suelo de ruido de -202.0 dBW/Hz. Jammers: dispositivo de privacidad con chirp (chirp, activo a los 10 s, desactivado a los 40 s); tono CW en L1 (cw, activo a los 30 s); ruido de banda estrecha en L2 (narrowband, activo a los 45 s). Peor banda GPS L1 C/A: C/N0 efectivo mínimo 3,2 dB-Hz a los 31 s frente a un suelo de seguimiento de 25 dB-Hz. GPS L1 C/A mínimo 3,2 dB-Hz; Galileo E1 mínimo 4,7 dB-Hz; GPS L2C mínimo 36,9 dB-Hz; GPS L5 mínimo 44,1 dB-Hz; Galileo E5a mínimo 47,0 dB-Hz. Satélites a la vista sobre toda la Tierra durante un día, a partir de una ejecución real de constellation-design (constellation-multi-gnss-coverage.toml, motor ejecutado por este generador): 102 satélites (GPS 24, Galileo 24, BeiDou 30, GLONASS 24). Cada celda de 10 grados se sombrea según el número medio de satélites por encima de la máscara de 10 grados (27,2 a 36,5); los puntos son las muestras de la traza en tierra del motor, una por hora y por satélite. Disponibilidad global 100,00 % con PDOP igual o inferior a 6, PDOP mediano 0,95, media de 31,0 y mínimo de 22 satélites a la vista.Satélites a la vista sobre toda la Tierra durante un día, a partir de una ejecución real de constellation-design (constellation-multi-gnss-coverage.toml, motor ejecutado por este generador): 102 satélites (GPS 24, Galileo 24, BeiDou 30, GLONASS 24). Cada celda de 10 grados se sombrea según el número medio de satélites por encima de la máscara de 10 grados (27,2 a 36,5); los puntos son las muestras de la traza en tierra del motor, una por hora y por satélite. Disponibilidad global 100,00 % con PDOP igual o inferior a 6, PDOP mediano 0,95, media de 31,0 y mínimo de 22 satélites a la vista. El sistema solar en la época del escenario 2026-09-28T00:00:00, a partir de una ejecución real del tipo solar-system (solar-system-tour.toml): el Sol, 9 planetas y el planeta enano Plutón vistos desde encima de la eclíptica, con las distancias comprimidas logarítmicamente para su visualización, con el tiempo de luz de ida de cada cuerpo desde la Tierra. Mercurio 0,47 ua, 10,1 minutos luz, VALIDATED; Venus 0,73 ua, 3,0 minutos luz, VALIDATED; Marte 1,55 ua, 14,0 minutos luz, VALIDATED; Júpiter 5,30 ua, 49,5 minutos luz, VALIDATED; Saturno 9,44 ua, 70,2 minutos luz, VALIDATED; Urano 19,44 ua, 157,4 minutos luz, MODELLED; Neptuno 29,88 ua, 240,2 minutos luz, MODELLED; Plutón 35,61 ua, 292,2 minutos luz, MODELLED. Enlaces: de Marte a Júpiter, de ida 2193,5 s; de Saturno a la Tierra, de ida 4212,2 s; de Europa a Júpiter, de ida 2,2 s.El sistema solar en la época del escenario 2026-09-28T00:00:00, a partir de una ejecución real del tipo solar-system (solar-system-tour.toml): el Sol, 9 planetas y el planeta enano Plutón vistos desde encima de la eclíptica, con las distancias comprimidas logarítmicamente para su visualización, con el tiempo de luz de ida de cada cuerpo desde la Tierra. Mercurio 0,47 ua, 10,1 minutos luz, VALIDATED; Venus 0,73 ua, 3,0 minutos luz, VALIDATED; Marte 1,55 ua, 14,0 minutos luz, VALIDATED; Júpiter 5,30 ua, 49,5 minutos luz, VALIDATED; Saturno 9,44 ua, 70,2 minutos luz, VALIDATED; Urano 19,44 ua, 157,4 minutos luz, MODELLED; Neptuno 29,88 ua, 240,2 minutos luz, MODELLED; Plutón 35,61 ua, 292,2 minutos luz, MODELLED. Enlaces: de Marte a Júpiter, de ida 2193,5 s; de Saturno a la Tierra, de ida 4212,2 s; de Europa a Júpiter, de ida 2,2 s. Una pasada en órbita terrestre baja (LEO) a partir de una ejecución real del tipo leo-pass (leo-pass-iridium.toml, motor ejecutado por este generador): Iridium-pass a 781 km, banda STL a 1621 MHz, vista por un usuario aéreo a 50° N 30° O. Por encima de la máscara de 5° durante 750 s, elevación máxima 65,0° a los 444 s. La densidad de portadora a ruido alcanza un máximo de 80,5 dB-Hz (mediana 71,3), 34,3 dB por encima de la mediana del GNSS de 46,2 dB-Hz con 8 satélites GPS a la vista (38,2 a 51,1 dB-Hz); el Doppler llega a 35,4 kHz.Una pasada en órbita terrestre baja (LEO) a partir de una ejecución real del tipo leo-pass (leo-pass-iridium.toml, motor ejecutado por este generador): Iridium-pass a 781 km, banda STL a 1621 MHz, vista por un usuario aéreo a 50° N 30° O. Por encima de la máscara de 5° durante 750 s, elevación máxima 65,0° a los 444 s. La densidad de portadora a ruido alcanza un máximo de 80,5 dB-Hz (mediana 71,3), 34,3 dB por encima de la mediana del GNSS de 46,2 dB-Hz con 8 satélites GPS a la vista (38,2 a 51,1 dB-Hz); el Doppler llega a 35,4 kHz.

Ejecute cualquiera de ellos con kshana example <scenario> > s.toml && kshana s.toml: los escenarios son l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour y leo-pass-iridium.

Las capacidades marítimas y de interferencia, dibujadas a partir de entradas sintéticas registradas: una puntuación de confianza, un mapa de interferencias con exposición de ruta, un flujo de formación y un paquete de evidencias
Puntuación de confianza a lo largo de una travesía sintética, a partir de una ejecución real del motor v0.40.0 sobre examples/maritime-trust (un registro NMEA inventado de un transbordador en una ruta de Tallin a Helsinki, 3001 épocas a 1 Hz). Tres carriles comparten un eje de tiempo. Arriba: la distancia entre la posición que notifica el receptor y la posición real del buque, que se mantiene dentro de unos pocos metros hasta unos 1576 s, cuando el arrastre de posición programado en el registro la aparta, mientras el receptor sigue notificando una posición válida. En medio: la puntuación de confianza de 0 a 100, no calculada durante los primeros 300 s de calibración, en la banda nominal (al menos 90) hasta el arrastre y luego descendiendo por la banda degraded (al menos 55) hasta la banda untrusted. Abajo: la banda de cada época como una cinta de color con su nombre. La puntuación es consultiva. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque. El registro es inventado para mostrar el formato y los monitores; no es una medición y no dice nada sobre cómo funcionaría ningún receptor.Puntuación de confianza a lo largo de una travesía sintética, a partir de una ejecución real del motor v0.40.0 sobre examples/maritime-trust (un registro NMEA inventado de un transbordador en una ruta de Tallin a Helsinki, 3001 épocas a 1 Hz). Tres carriles comparten un eje de tiempo. Arriba: la distancia entre la posición que notifica el receptor y la posición real del buque, que se mantiene dentro de unos pocos metros hasta unos 1576 s, cuando el arrastre de posición programado en el registro la aparta, mientras el receptor sigue notificando una posición válida. En medio: la puntuación de confianza de 0 a 100, no calculada durante los primeros 300 s de calibración, en la banda nominal (al menos 90) hasta el arrastre y luego descendiendo por la banda degraded (al menos 55) hasta la banda untrusted. Abajo: la banda de cada época como una cinta de color con su nombre. La puntuación es consultiva. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque. El registro es inventado para mostrar el formato y los monitores; no es una medición y no dice nada sobre cómo funcionaría ningún receptor. Dos días sintéticos del mapa de interferencias dibujados a partir de las muestras confirmadas en examples/interference-map/output, cada uno con su propia ruta sintética y las proporciones de exposición de ruta que informa el motor. A la izquierda, un día de ADS-B: 1 celda degradada, 6 no degradadas, 4 no evaluadas (rayadas) y celdas sin entrada, dibujadas vacías, que no se observaron. La ruta es de 525 km: el 11,5 % de su longitud en celdas degradadas, el 38,3 % no degradado, el 9,1 % no evaluado y el 41,1 % no observado. A la derecha, un día de AIS: celdas marcadas por los detectores de círculo y de tierra firme, celdas no anómalas y celdas vacías; la ruta es de 454 km con el 10,5 % en celdas anómalas, el 21,2 % no anómalo, el 0,0 % no evaluado y el 68,3 % no observado. ADS-B y AIS son capas separadas, nunca combinadas. Una celda marcada no es un hallazgo de interferencia, y una celda sin color no se observó, lo que no equivale a despejada. Todos los datos son inventados, en pleno Atlántico medio, y no son una medición.Dos días sintéticos del mapa de interferencias dibujados a partir de las muestras confirmadas en examples/interference-map/output, cada uno con su propia ruta sintética y las proporciones de exposición de ruta que informa el motor. A la izquierda, un día de ADS-B: 1 celda degradada, 6 no degradadas, 4 no evaluadas (rayadas) y celdas sin entrada, dibujadas vacías, que no se observaron. La ruta es de 525 km: el 11,5 % de su longitud en celdas degradadas, el 38,3 % no degradado, el 9,1 % no evaluado y el 41,1 % no observado. A la derecha, un día de AIS: celdas marcadas por los detectores de círculo y de tierra firme, celdas no anómalas y celdas vacías; la ruta es de 454 km con el 10,5 % en celdas anómalas, el 21,2 % no anómalo, el 0,0 % no evaluado y el 68,3 % no observado. ADS-B y AIS son capas separadas, nunca combinadas. Una celda marcada no es un hallazgo de interferencia, y una celda sin color no se observó, lo que no equivale a despejada. Todos los datos son inventados, en pleno Atlántico medio, y no son una medición. Flujo de formación del escenario coastal-drag-off (motor v0.40.0, semilla 22, 25 minutos con una posición cada 10 s del registro del instructor). Un mapa muestra la trayectoria real del buque y la que informa el receptor: coinciden hasta que comienza un arrastre de posición programado a los 421 s; entonces la trayectoria informada se aleja de la real mientras el receptor mantiene una posición válida, y vuelve a ella cuando termina el evento a los 1140 s. Junto a ella, la distancia entre las dos trayectorias a lo largo del tiempo y la densidad media de portadora a ruido que informa el receptor, que sube a un nivel elevado mientras dura el evento. Datos de formación sintéticos generados por Kshana. Solo para formación y pruebas: no introduzca nunca este flujo en los sistemas de navegación en servicio de un buque. De carácter consultivo, no es un equipo de navegación homologado. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque. Las posiciones, las fechas y las trayectorias son inventadas.Flujo de formación del escenario coastal-drag-off (motor v0.40.0, semilla 22, 25 minutos con una posición cada 10 s del registro del instructor). Un mapa muestra la trayectoria real del buque y la que informa el receptor: coinciden hasta que comienza un arrastre de posición programado a los 421 s; entonces la trayectoria informada se aleja de la real mientras el receptor mantiene una posición válida, y vuelve a ella cuando termina el evento a los 1140 s. Junto a ella, la distancia entre las dos trayectorias a lo largo del tiempo y la densidad media de portadora a ruido que informa el receptor, que sube a un nivel elevado mientras dura el evento. Datos de formación sintéticos generados por Kshana. Solo para formación y pruebas: no introduzca nunca este flujo en los sistemas de navegación en servicio de un buque. De carácter consultivo, no es un equipo de navegación homologado. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque. Las posiciones, las fechas y las trayectorias son inventadas. La estructura de un paquete de evidencias. Un registro de receptor (NMEA, u-blox UBX, RINEX 3 o un registro de Android) y una ventana de tiempo entran en kshana receiver-trust evidence, que escribe siete archivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig y un timestamp.tsr opcional. El manifiesto registra el SHA-256 del registro completo y de cada archivo, y una cadena de hashes sobre los archivos; la firma cubre el manifiesto. kshana evidence verify comprueba la firma, el hash de cada archivo, la cadena y que no haya ningún archivo no listado, y termina con 0 cuando está verificado, 1 cuando algo falló y 3 cuando el firmante no estaba fijado. Un paquete es un registro técnico, no un dictamen jurídico.La estructura de un paquete de evidencias. Un registro de receptor (NMEA, u-blox UBX, RINEX 3 o un registro de Android) y una ventana de tiempo entran en kshana receiver-trust evidence, que escribe siete archivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig y un timestamp.tsr opcional. El manifiesto registra el SHA-256 del registro completo y de cada archivo, y una cadena de hashes sobre los archivos; la firma cubre el manifiesto. kshana evidence verify comprueba la firma, el hash de cada archivo, la cadena y que no haya ningún archivo no listado, y termina con 0 cuando está verificado, 1 cuando algo falló y 3 cuando el firmante no estaba fijado. Un paquete es un registro técnico, no un dictamen jurídico.

Los cuatro son datos inventados y de carácter consultivo: muestran el formato y el comportamiento del software, no cómo se comporta ningún receptor o sistema frente a interferencias. Ejecute el primero con kshana receiver-trust examples/maritime-trust/session.toml, el segundo con kshana route-exposure sobre las muestras de examples/interference-map/, el tercero con kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (solo para formación: nunca lo introduzca en equipos de navegación en servicio) y el cuarto como en docs/EVIDENCE-PACKS.md.

La tabla completa de capacidades, dominio por dominio

A continuación sigue el detalle completo dominio por dominio; para un registro de madurez por capacidad véanse docs/CAPABILITY.md y docs/VALIDATION.md.

Dominio Capacidad
Órbita y geometría Propagación SGP4/SDP4 (validada hasta 4,12 mm frente a los 666 vectores AIAA 2006-6753); elementos de dos líneas reales (una instantánea de Celestrak gps-ops registrada y con fecha) o constelaciones sintéticas Walker-delta cuyos elementos medios realizan la fórmula i:T/P/F con menos de 1 km en una propagación de 24 h; visibilidad multiconstelación, dilución de la precisión: geométrica, de posición, horizontal, vertical y de tiempo (GDOP/PDOP/HDOP/VDOP/TDOP), validada hasta 1e-6 frente a gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), y disponibilidad GNSS; un optimizador de diseño de constelaciones sin gradiente, dimensionado del mínimo de satélites por franjas de cobertura, una herramienta de comparación multiconstelación y un barrido de diseño Walker que tabula cobertura / PDOP / tiempo de revisita sobre una rejilla de planos × satélites e informa de los diseños óptimos de Pareto.
Propagador numérico Un propagador numérico de Cowell (src/propagator.rs) que complementa la vía analítica SGP4/SDP4, con un modelo de fuerzas jerárquico de siete perturbaciones (src/forces.rs): dos cuerpos + el campo zonal completo J2–J6 (los coeficientes armónicos zonales de achatamiento terrestre J2 a J6; el gradiente analítico exacto de su potencial perturbador), un geopotencial armónico esférico teseral EGM2008 opcional hasta grado/orden 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; coeficientes reales de la NGA (National Geospatial-Intelligence Agency de EE. UU.), recurrencia de Legendre normalizada de Holmes–Featherstone, comprobada frente a las funciones de Legendre en forma cerrada y la identidad analítica de ∇V), la gravedad de tercer cuerpo del Sol y la Luna guiada por época (una efeméride incorporada de baja precisión, sin kernel DE/SPK: Development Ephemeris / SPICE Spacecraft and Planet Kernel), la presión de radiación solar (modelo de bola de cañón con sombra cónica de umbra y penumbra), la resistencia atmosférica (densidad exponencial por tramos de Vallado, atmósfera en corrotación), la corrección relativista post-newtoniana de Schwarzschild y el término de arrastre de marcos de Lense–Thirring (IERS: International Earth Rotation and Reference Systems Service, Conventions 2010 §10, lineal en el momento angular de la Tierra, ~1–2 órdenes por debajo de Schwarzschild), movido por una elección de dos integradores adaptativos (RK4, Runge–Kutta de cuarto orden, con duplicación de paso, o el par incrustado Dormand–Prince RK5(4)). Validado frente a Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853: 278 épocas en LEO (órbita terrestre baja) + GTO (órbita de transferencia geoestacionaria), con los niveles de fuerzas conservativas coincidiendo hasta un caso peor de |Δr| 0,08 m en 24 h (tests/numerical_cowell_propagator_reference.rs); el nivel de resistencia atmosférica se caracteriza por separado (≈ 333 m / 24 h) y las entradas absolutas de efemérides del Sol y la Luna y de densidad siguen siendo, con honestidad, modeladas. Evidencia interna adicional (no validación externa): la órbita sin perturbar se comprueba frente a la solución exacta de Kepler en variables universales con error submétrico en 24 h, la energía y el momento angular se conservan hasta ~1e-9, y cada perturbación coincide con una firma en forma cerrada deducida a mano.
Maniobras y diseño de trayectorias Nodos de ΔV impulsivos con propagación de covarianza de 6×6 (marcos de error de ejecución ECI, inercial centrado en la Tierra, / LVLH, vertical local y horizontal local), integración de maniobra finita comprobada frente a la ecuación del cohete de Tsiolkovsky en forma cerrada hasta < 0,01 %, un resolutor de Lambert de Izzo-2015 de una sola revolución, un propagador de Kepler exacto en variables universales y un barrido porkchop (lanzamiento × llegada) de C3 (energía de lanzamiento) / V∞ de llegada emitido como rejilla de contornos JSON: la capa de simulación de prestaciones por encima de GMAT/Orekit, con cada salida de Lambert cerrada ida y vuelta frente a la verdad de dos cuerpos y el mínimo del porkchop comprobado frente al suelo analítico de Hohmann.
Sistemas de tiempo y marcos de referencia Escalas de segundos intercalares del IERS UTC / TAI / TT / UT1 (Tiempo Universal Coordinado, Tiempo Atómico Internacional, Tiempo Terrestre y el tiempo de rotación terrestre Tiempo Universal 1), una API (interfaz de programación de aplicaciones) de fecha juliana, el Ángulo de Rotación de la Tierra (ERA) de la IAU-2000 (Unión Astronómica Internacional), TEME ↔ ECEF basado en GMST (Tiempo Sidéreo Medio de Greenwich) (ecuador verdadero, equinoccio medio ↔ centrado en la Tierra y fijo a ella) con marcos geodésicos WGS-84 (World Geodetic System 1984), precesión IAU 2006 (Fukushima–Williams), nutación IAU 2000A/2000B completa, movimiento polar del IERS y la reducción GCRS↔ITRS IAU 2006/2000A basada en el CIO, sin equinoccio (CIO = Celestial Intermediate Origin): todo validado bit a bit frente a los vectores SOFA/ERFA, y comprobado de forma independiente frente a ANISE (la reimplementación en Rust puro de NAIF/SPICE; NAIF = Navigation and Ancillary Information Facility de la NASA, la Administración Nacional de Aeronáutica y del Espacio de EE. UU.): el GCRS→ITRS de kshana frente al ITRF93 de ANISE (International Terrestrial Reference Frame 1993) a partir del earth_latest_high_prec.bpc del JPL, con los mismos parámetros de orientación terrestre del IERS en ambos, coinciden hasta ≤ 0,86 m en tierra / ≤ 3,6 m en órbita GNSS (máx. 0,028″) en ocho épocas 2020–2023.
Inercial INS strapdown de tres ejes: actitud por cuaterniones, mecanización NED (norte-este-abajo) en WGS-84, compensación de coning/sculling y un modelo determinista de errores de IMU (factor de escala, desalineación, sensibilidad a g, cuantización, deriva); un acelerómetro de interferómetro de átomos fríos de primeros principios (fase de Mach–Zehnder, ruido de proyección cuántica, decaimiento de contraste, acoplamiento de vibraciones) que deriva el coeficiente de paseo aleatorio de velocidad; y un filtro de partículas de remuestreo por importancia secuencial para navegación asistida por mapas (referenciada a terreno o gravedad) sin GPS.
PNT alternativo (sin GPS) Un modelo de medición de gravímetro de átomos fríos cuyo suelo de ruido blanco (σ = ASD/√τ, ASD = densidad espectral de amplitud) se deriva de la física del acelerómetro CAI; un campo de anomalías de gravedad de armónicos esféricos de bajo grado y totalmente normalizado (comprobado frente a las funciones de Legendre en forma cerrada y a una anomalía de un solo término deducida a mano) más mascons sintéticos; el núcleo de síntesis de funcionales de gravedad (gravity_sh::gravity_magnitude / gravity_disturbance_mgal), el «lector de mapas» con el que se compara un navegador asistido por gravedad, se valida frente al estándar de gravedad normal GRS80 (Geodetic Reference System 1980), reproduce la gravedad normal de Somigliana en forma cerrada y los γ_e / γ_p publicados hasta 3.5e-12 y produce un mapa de perturbación físicamente acotado a partir del campo real EGM2008 del ICGEM (International Centre for Global Earth Models) (RMS, raíz cuadrática media, ≈ 26 mGal, máx. ≈ 89 mGal en d/o 70; tests/icgem_gravity_reference.rs); y un filtro de partículas de ajuste a mapas de gravedad que recupera una trayectoria sin GPS a partir de la secuencia de anomalías que atraviesa. Se extiende a la navegación referenciada a terreno (TERCOM/SITAN: ajuste de contornos del terreno / Sandia Inertial Terrain-Aided Navigation, frente a un DEM (modelo digital de elevación) .hgt de SRTM (Shuttle Radar Topography Mission), src/altpnt/terrain.rs), un campo geomagnético principal IGRF-14 (Campo Geomagnético de Referencia Internacional de 14.ª generación) hasta grado/orden 13 (src/igrf.rs, comprobado frente a la forma cerrada del dipolo inclinado y a diferencias finitas de ∇V), y un navegador combinado de gravedad + magnético + terreno que fusiona los tres canales escalares en un único filtro de partículas (la información es aditiva: ningún canal empeora la posición). Un benchmark de 60 minutos sin GPS (una interrupción de ~700 km / una hora en la que la solución inercial deriva hasta ~70 km) se recupera hasta ~145 m (< 500 m) con un ajustador jerárquico de grueso a fino: el objetivo Quantum Wayfarer del NAVISP (Navigation Innovation and Support Programme) de la ESA.
Fusión EKF (filtro de Kalman extendido) de estado de error GNSS/INS de 15 estados débilmente acoplado con realimentación en lazo cerrado (el paquete gnss-ins); una actualización de pseudodistancia fuertemente acoplada que sigue corrigiendo con menos de cuatro satélites; un filtro acoplado de reloj + posición; un filtro de Kalman unscented (UKF, de puntos sigma) general para mediciones fuertemente no lineales; un navegador UKF GNSS/INS fuertemente acoplado (pseudodistancia + Doppler) cuya deriva orbital con modelo de fuerzas se comprueba por autoconsistencia hasta 0,77 m RMS en una pasada LEO curva de 30 minutos que incluye una interrupción GNSS de 120 segundos (una cifra de coherencia del filtro, no una validación con referencia independiente externa: este navegador sigue siendo MODELLED); y un UKF GNSS/INS fuertemente acoplado de 17 estados completo (posición, velocidad, error de actitud, sesgos de acelerómetro y giróscopo, sesgo y deriva del reloj) cuya navegación a estima cuántica CAI cubre una interrupción de 120 segundos con el paseo aleatorio de velocidad derivado del acelerómetro de átomos fríos.
Determinación de órbita Recuperación de un estado orbital [r, v] a partir del seguimiento de distancias desde estaciones terrestres, componiendo el modelo de fuerzas de dos cuerpos + J2 y el integrador RK4 con un corrector por lotes de Gauss–Newton (determine_orbit_batch, submétrico / mm·s⁻¹ a partir de distancias sin ruido, ~2 m con un suelo de ruido de 5 m) y una variante secuencial con filtro de Kalman unscented (determine_orbit_sequential).
Observabilidad y teoría de la estimación Una capa general y reutilizable de información de Fisher / Cramér–Rao (src/fim.rs): la matriz de información M = HᵀWH, la cota inferior de Cramér–Rao, el rango de observabilidad y el espacio nulo del defecto de datum (pseudoinversa de Moore–Penrose) y escalares de diseño de experimentos D/A/E/T-óptimos a partir de un resolutor de valores propios de Jacobi simétrico. Validado: valores propios frente a numpy.linalg.eigh, la covarianza de la CRLB frente a σ²(XᵀX)⁻¹ mediante numpy.linalg.inv y el DOP GNSS a partir de la matriz de información, todo coincidente hasta 1e-9 (tests/fim_observability_reference.rs), y además comprobado frente a las cotas en forma cerrada de Kay (1993) con logro de la CRLB por Monte Carlo. Sustenta el motor de DOP, la CRLB de geolocalización pasiva y el teorema de observabilidad de estaciones lunares absolutas (más abajo).
Lunar y cislunar Un propagador del problema restringido circular de tres cuerpos (CR3BP) Tierra–Luna en el marco giratorio (constante de Jacobi conservada y los cinco puntos de Lagrange, src/cr3bp.rs), ahora con una matriz de transición de estado (STM) de 6×6 y un corrector diferencial de disparo único (cr3bp_jacobian, propagate_state_stm, differential_correct_halo) que produce órbitas halo / NRHO (órbita de halo casi rectilínea) genuinamente periódicas: la STM se valida frente a diferencias finitas, las órbitas corregidas se cierran hasta la precisión de máquina, y sembrar el estado de apoluna publicado reproduce la NRHO sur 9:2 de L2 (L2 = el segundo punto de Lagrange Tierra–Luna; la órbita de Gateway) con periodo ≈ 6,57 d / perilunio ≈ 3.250 km, coherente con los publicados ≈ 6,56 d / ≈ 3.370 km (una solución CR3BP, circular y sin Sol, no validada frente a una efeméride real de LANS (Lunar Augmented Navigation Service)/Gateway; la transformación selenocéntrica MCI/MCMF (inercial centrado en la Luna / centrado en la Luna y fijo a ella) de la órbita corregida es un trabajo posterior); además de la geometría de PNT cislunar de LunaNet / LNIS (LunaNet Interoperability Specification) (reducción MCI↔MCMF, coordenadas selenográficas) con una pasada de ARAIM en el polo sur lunar que saca a la luz con honestidad la brecha de integridad: un σ_URE (error de distancia del usuario) de ~30 m lleva el nivel de protección muy por encima de un límite de alerta de 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); y un aumento del DOP con balizas de superficie (src/lunar_beacon.rs) que muestra cómo unas pocas balizas de medición de distancia de superficie levantadas aportan las filas de línea de visión de baja elevación y amplio acimut de las que carece un conjunto solo orbital y siempre cenital, colapsando el GDOP polar sur mal condicionado y, mediante un presupuesto de error de raíz de suma de cuadrados, la exactitud de posición realizada en metros (reutilizando el núcleo de DOP validado con gnss_lib_py y la forma cerrada de visibilidad con horizonte sin atmósfera; el análisis de la dilución de la precisión se expone en arXiv:2607,06212).
Conjunto de PNT lunar Un conjunto de navegación lunar/cislunar apilado sobre el núcleo CR3BP, cada uno un tipo (kind) ejecutable: Tiempo Coordenado Lunar (lunar-time-offset, src/lunar_time.rs: la tasa secular LTC/TCL − TT (LTC = Lunar Coordinate Time; TCL = su forma francesa, Temps-Coordonnée Lunaire) a partir de la diferencia de autopotencial + término cinético, informada con la banda publicada de 56–59 µs/día); un observable geodésico de retardo de VLBI lunar (interferometría de base muy larga) (lunar-vlbi, src/lunar_vlbi.rs: un retardo y tasa de diferencia de dos distancias de campo cercano con línea de base terrestre, comprobado frente al Δ-DOR (delta differential one-way ranging) de onda plana del mismo código base en el límite de campo lejano, con derivadas parciales verificadas por diferencias finitas); un estimador por lotes de OD + reloj multitécnica conjunta (lunar-joint-od-clock, src/lunar_combination.rs: un ajuste de Gauss–Newton que fusiona VLBI + distancias locales lunares + distancias entre satélites) que lleva un resultado de observabilidad de información de Fisher: la medición de distancias interna sola deja un defecto de datum de sólido rígido de seis grados de libertad, de modo que la posición absoluta de una estación de superficie no es observable hasta que se añade un enlace con el marco terrestre: un retardo de VLBI con línea de base terrestre restablece la observabilidad para una constelación escasa y afina la cota de Cramér–Rao para una rica, y el datum absoluto se cierra con tres estaciones terrestres no colineales (el resultado de observabilidad se expone en arXiv:2607,02566); realización de marcos de referencia (lunar-frame-realisation, src/lunar_frame_realise.rs: un ajuste de datum de Helmert de 7 parámetros + un enlace de orientación WGCCRE de la IAU 2015; WGCCRE = el Grupo de Trabajo de la IAU sobre Coordenadas Cartográficas y Elementos de Rotación); un análisis de volumen de servicio de clase Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs: DOP / cobertura / disponibilidad + una envolvente HPL/VPL (nivel de protección horizontal/vertical) de ARAIM lunar generalizado, reutilizando el núcleo de DOP validado con gnss_lib_py y la maquinaria σ_URE≈30 m de LunaNet); PNT diferencial lunar (lunar-differential-pnt, src/lunar_dpnt.rs: un análogo lunar de GNSS diferencial / sistema de aumentación basado en satélites (SBAS): cancelación exacta del reloj de modo común + decorrelación espacial de primer orden frente a la línea de base, reutilizando el nivel de protección SBAS de DO-229E; DO-229E es el estándar de prestaciones operativas mínimas de la RTCA (antes Radio Technical Commission for Aeronautics) para receptores SBAS); y una exportación de interoperabilidad alineada con LunaNet/IOAG (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs: CCSDS-OEM (Orbit Ephemeris Message) + ida y vuelta de la escala de tiempo lunar en el marco del cuerpo lunar IAU 2015, envuelto en el sobre KIF). Los niveles de evidencia de cada pieza están en la matriz de verificación: el Tiempo Coordenado Lunar, el estimador conjunto de OD + reloj, la realización de marcos de referencia y la geometría del volumen de servicio son VALIDATED (cada uno frente a la referencia independiente que nombra su fila, igual que la vía del núcleo del retardo VLBI); el observable VLBI, el resultado de observabilidad del defecto de datum, el PNT diferencial y la exportación de interoperabilidad son MODELLED. Los parámetros son valores ilustrativos de fuentes públicas: no validados frente a seguimiento real de VLBI o de Gateway, no afiliados ni respaldados por ninguna agencia, sin afirmación de TRL (nivel de madurez tecnológica) ni de herencia.
PNT de espacio profundo y de Marte Un motor de navegación radiométrica abierto: tiempo de luz iterativo + retardo relativista de Shapiro, Doppler y distancia de dos, uno y tres sentidos (dos tramos de Moyer), razones de giro de transpondedor coherente, medición de distancia regenerativa/PN (pseudorruido) (CCSDS 414, el estándar de medición de distancia por pseudorruido) y Δ-DOR en el plano del cielo (CCSDS 506, el estándar Delta-DOR), con medios de plasma solar/tropo/iono; análisis y emisión de mensajes de datos de seguimiento CCSDS-TDM (503); un filtro de información de raíz cuadrada de dinámica reducida (RTN, radial, transversal, normal: aceleraciones empíricas + un reloj de a bordo de 3 estados + resistencia atmosférica de Marte) que hace determinación de órbita LMO de Marte hasta ≈ 0,2 m en un lazo cerrado sintético; un estimador conjunto de fusión de un sentido + dos sentidos; un núcleo de dinámica multicuerpo (Body{μ, re, zonals, gravity, IAU-pole}, gravedad GMM-3 de Marte (Goddard Mars Model 3), un marco de Marte fijo al cuerpo de la IAU, una costura EphemerisProvider enchufable, fechas julianas de dos partes + TT↔TDB (Barycentric Dynamical Time)); y el escenario de PNT con relé mars-pnt (una constelación de relés areoestacionarios MARCONI) con un simulador de prestaciones GSE de extremo a extremo (GSE = equipo de apoyo en tierra) (geometría → balance de enlace → observables → SRIF → covarianza). Validado por simulación (cifras de mérito de covarianza / lazo cerrado); la dinámica de Marte centrada en el Sol se comprueba frente a DE440 del JPL (137 m con un arco de 1 día, xval/anise-mars-od). La validación con datos reales de seguimiento de DSN/ESTRACK está en la hoja de ruta.
Sistema solar y PNT en torno a cualquier cuerpo Una efeméride de todo el sistema solar sin kernel (src/ephem.rs, src/ephem_provider.rs): cada planeta a partir de los elementos keplerianos de Standish del JPL (Tabla 1, 1800–2050 d. C.; Tablas 2a/2b, 3000 a. C.–3000 d. C.) con el error nominal publicado de cada planeta, la Tierra y la Luna separadas mediante la serie lunar, y Fobos, Deimos, Ío, Europa, Ganímedes, Calisto y Titán a partir de elementos medios del JPL y del modelo de rotación de la IAU (Unión Astronómica Internacional); cualquier cuerpo respecto a cualquier otro en el ICRF (International Celestial Reference Frame). Body lleva ahora GM (parámetro gravitacional), radios, J2 (el segundo armónico zonal) donde está publicado y el polo y el meridiano origen de la IAU de dieciocho cuerpos. El tipo solar-system informa de posiciones, velocidades, constantes, tiempo de luz y distancia de uno y dos sentidos entre dos cuerpos cualesquiera (el resolutor radiométrico de tiempo de luz existente, con el retardo de Shapiro solar) y una traza orbital por cuerpo, lo bastante para dibujar un sistema solar interactivo; el tipo body-pnt sitúa un orbitador o un módulo de aterrizaje en torno a cualquier cuerpo (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) con una constelación Walker local, la maquinaria de dilución de la precisión y de Gauss–Newton y una distancia al espacio profundo desde la Tierra. Validado frente a JPL Horizons (DE441, JPL Development Ephemeris 441): de Mercurio a Saturno y la Tierra de la Tabla 1 dentro de dos veces el error nominal (peor caso 1,87×), los ocho planetas de las Tablas 2a/2b (peor caso 1,71×) y el tiempo de luz Tierra–Marte/Júpiter. Modelado: Urano y Neptuno de la Tabla 1 (2,0× y 5,2× el error declarado frente a DE441), Plutón, las lunas y los resultados de navegación de body-pnt.
PNT fusionado MEO + LEO src/leo_fusion/: posicionamiento, navegación y temporización LEO independientes del sistema, sobre cualquier constelación (capas Walker, conjuntos de elementos, preajustes GNSS) y cualquier señal (portadora, tasa de chip, envolvente de C/N0, error de alcance de la señal en el espacio), con preajustes opcionales de un solo archivo que incluyen sus fuentes (Xona Pulsar X1/X5, Iridium STL, señales de oportunidad de Starlink, CentiSpace, un sistema representativo en banda C, el modelo de efemérides ATOMIC de reloj cero). leo-pvt: posicionamiento Doppler por lotes a partir de la velocidad de alcance (con uno o varios satélites, con estados de deriva del reloj y de velocidad, geometría along/cross-track de un solo paso y la solución especular), mínimos cuadrados ponderados conjuntos GNSS + LEO con sesgos entre sistemas por cada sistema y sigmas por señal aportados por quien llama, el DOP en función del número de satélites LEO, cobertura polar y ártica y transferencia de tiempo LEO a UTC en función de C/N0 y del oscilador. leo-ppp: un EKF (filtro de Kalman extendido) de PPP (posicionamiento preciso de punto) con ambigüedades flotantes, solo con GNSS y con LEO, su tiempo de convergencia y una prueba de consistencia NEES de chi cuadrado. ntn-positioning: posicionamiento 5G de red no terrestre a partir de la cota de Cramér-Rao del ancho de banda. Validado: la envolvente Doppler LEO frente a las cifras publicadas de Iridium y Xona. Modelado: el resto, con la tendencia de PPP comparada con Li et al. (2019) — véase docs/LEO-PNT-FUSION.md.
Integridad RAIM (monitorización autónoma de la integridad por el receptor) instantáneo y de separación de soluciones (estilo ARAIM), con niveles de protección horizontal/vertical (HPL/VPL), detección y exclusión de fallos y diagramas de integridad de Stanford; un nivel de protección explícito de separación de soluciones de hipótesis múltiples (MHSS) con presupuesto de riesgo de integridad, que incluye el modo de fallo de toda la constelación en doble/multiconstelación (ARAIM de la UE (Unión Europea) / DO-316, el estándar de prestaciones de la RTCA para equipos GPS aeroportados con aumentación basada en la aeronave), ejercitado sobre una instantánea real de GPS + Galileo (scenarios/araim-gps-galileo.toml). El nivel de protección aplica la proyección unilateral de sesgo nominal b_k = Σ_i|s_i|·b_nom por modo de fallo y el sigma de integridad σ_URA (precisión de alcance del usuario; distinta del sigma de exactitud σ_URE, error de alcance del usuario) del mensaje de soporte de integridad — véase docs/ARAIM_REFERENCE.md. El núcleo de detección (los umbrales de χ²/χ² no central/normal y los multiplicadores K) está validado externamente frente a SciPy en 171 casos (tests/raim_reference.rs); la geometría reutiliza el núcleo de DOP validado con gnss_lib_py. La asignación del presupuesto de riesgo de integridad de ARAIM MHSS no tiene una referencia independiente numérica publicada y sigue siendo, con toda honestidad, modelada.
Aumentación (SBAS) Niveles de protección SBAS / WAAS (WAAS = el Sistema de Aumentación de Área Amplia) en la forma de mínimos cuadrados ponderados de DO-229E (factores K de aproximación de precisión y en ruta) y la combinación libre de ionosfera de doble frecuencia L1/L5 (L1 y L5 son dos bandas de señal civil del GPS; IS-GPS-705, la especificación de interfaz del GPS para la señal L5, γ₁₅ ≈ 1,793) que sustenta DO-316 — src/sbas.rs. El algoritmo del nivel de protección está validado externamente frente a la bifurcación SBAS-PL de RTKLIB (RTKLIB = la biblioteca abierta de posicionamiento cinemático en tiempo real; PL = nivel de protección) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — la revisión anterior de DO-229 — App. J) ejecutado sobre datos reales de EGNOS (Servicio Europeo de Navegación por Complemento Geoestacionario), reproduciendo su HPL con una diferencia inferior a 2e-3 m (tests/sbas_reference.rs); gLAB (el conjunto de herramientas del GNSS Laboratory) v6.0.0 confirmó la misma convención.
Relojes y temporización Holdover con filtro de Kalman de dos estados (covarianza en forma de Joseph, salud de consistencia NIS/NEES — innovación normalizada al cuadrado / error de estimación normalizado al cuadrado); estabilidad de la familia Allan (ADEV / MDEV / TDEV / HDEV / MTIE — desviación de Allan, de Allan modificada, de tiempo y de Hadamard, y error máximo de intervalo de tiempo) con intervalos de confianza específicos de cada tipo de ruido y un ajuste completo de ley de potencias de cinco coeficientes según IEEE-1139 (IEEE Std 1139, las definiciones de metrología de frecuencia y tiempo del Institute of Electrical and Electronics Engineers) — los estimadores están validados con hardware real frente a Stable32: un patrón primario real de cesio 5071A frente a un máser de hidrógeno (556.990 muestras de fase, 16 factores de promediado, OADEV/OHDEV — desviación de Allan/Hadamard solapada — con 1e-3; tests/cs5071a_reference.rs) y la serie de regresión canónica PHASE.DAT de Stable32 (139 factores de promediado, OADEV/MDEV/TDEV con 1e-3; tests/phasedat_reference.rs); los estimadores ADEV/MDEV/TDEV y la métrica de deriva de telecomunicaciones MTIE se contrastan además con la biblioteca independiente allantools 2024,06 con una diferencia inferior a 1e-9 sobre la serie NIST SP 1065 (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); correcciones geométricas (Sagnac, vista común GNSS); y los métodos operativos de transferencia — TWSTFT (transferencia bidireccional de tiempo y frecuencia por satélite) con la forma cerrada de Sagnac del BIPM (Oficina Internacional de Pesas y Medidas), vista común GNSS, transferencia de tiempo libre de ionosfera con PPP (posicionamiento preciso de punto), un enlace óptico en espacio libre con centelleo por turbulencia y una escala de tiempo (de papel) de conjunto de relojes por varianza inversa por debajo del mejor reloj contribuyente. Una calculadora de holdover del reloj sin GNSS (src/holdover.rs) expone el crecimiento del error de inercia de van Loan en forma cerrada como una inversión de holdover hasta el umbral — cuánto tiempo funciona un reloj libre antes de que su error de temporización supere el presupuesto — para clases representativas de relojes clásicos y cuánticos; modelado (contrastado con la recursión de covarianza multipaso de clock_state), y con la honestidad de señalar que, para un reloj muy estable, el holdover hasta un umbral estricto lo fija el suelo de ruido de tau largo supuesto, no el ADEV citado. Un nivel de protección de temporización condicional (src/tpl.rs) extiende el holdover al spoofing: una cota del error de tiempo no detectado, dada una comprobación cruzada independiente, que compone un suelo de monitor de k sigmas, la varianza de inercia de van Loan durante la latencia de detección y un tiempo hasta la alarma de CUSUM (suma acumulada). Calibrado sobre un spoofing real registrado (JammerTest 2024) y reproducible mediante cargo run --example tpl_jammertest; composición MODELLED (sin presupuesto de riesgo de integridad por hora), condicionada a la detección — no existe una cota incondicional finita.
Dominio de medición GNSS Síntesis directa de pseudodistancia / Doppler con ionosfera Klobuchar (difundida) e IONEX / malla de TEC (formato de intercambio de mapas de la ionosfera / contenido total de electrones; medida) — que incluye un analizador de archivos IONEX, interpolación temporal entre mapas y el mapeo de oblicuidad de capa delgada en trayectoria oblicua —, troposfera Saastamoinen + Niell y RAIM instantáneo (HPL/VPL).
Resiliencia Jamming de presupuesto de enlace (J/S → C/N₀ efectiva → pérdida de enganche — relación interferencia-señal, relación portadora-densidad de ruido — con el factor de separación espectral antiinterferencia Q ahora derivado de los espectros de potencia reales de la señal y del interferidor mediante src/navsignal.rs — Q = 1/(R_c·κ), contrastado en CI con la constante representativa anterior); un detector estocástico de spoofing de tiempo (prueba de energía de Neyman–Pearson / χ²₁ con P_fa/P_md en forma cerrada y por Monte Carlo y una figura de mérito (FoM) de seguridad de 1 − P_md); y un detector de spoofing multicapa que fusiona una prueba de paridad de consistencia RAIM (con el punto ciego de modo común modelado con honestidad), un monitor de potencia AGC de RF (control automático de ganancia) y un monitor de calidad de señal (SQM — monitorización de la calidad de la señal, early-minus-late); y un presupuesto de error de navegación inercial cuántica por estima (QuantumNavBudget, src/inertial/quantum_imu.rs) que compone el paseo aleatorio de velocidad de ruido blanco del interferómetro de átomos fríos con el sesgo residual (contrastado con el integrador independiente AccelModel) y el error de factor de escala en una cifra de deriva de posición durante el holdover — el gemelo inercial del holdover del reloj. Un motor de puntuación de resiliencia alineado con un marco (src/resilience/) asigna el comportamiento simulado de una arquitectura a subpuntuaciones por dimensión en las siete categorías de resiliencia propias de Kshana (no términos del DHS), alineadas con el Resilient PNT Conformance Framework del Departamento de Seguridad Nacional de EE. UU., y estudia después la estabilidad de decisión de cualquier puntuación compuesta única o nivel de madurez bajo un símplex de ponderación de Dirichlet y un conjunto de cinco amenazas — inestabilidad de rango de Kendall-τ, tasa de cambio del ganador top-1 y colapso de diversidad de modo común (Hill-N2), con un informe de garantía con hash de integridad (35 pruebas con referencia independiente derivada a mano). Reproducible mediante cargo run --example resilience_report; arquitecturas sintéticas MODELLED, una autoevaluación alineada con RPCF v2.0, no una certificación. Véase docs/RESILIENCE-CROSSWALK.md.
Geolocalización pasiva por RF Geolocalización de emisores TDOA/FDOA (diferencia de tiempo/frecuencia de llegada; src/geolocation.rs) — localiza un interferidor o spoofer (o una fuente oportunista para PNT inverso) a partir de hiperboloides de diferencia de tiempo de llegada en una red de receptores, resueltos por mínimos cuadrados de Gauss–Newton; al añadir la diferencia de frecuencia de llegada con receptores en movimiento se recuperan conjuntamente la posición y la velocidad del emisor, con la cota de Cramér–Rao sobre la covarianza de posición derivada de la geometría de la red. MODELLED (referencias independientes de consistencia interna: viajes de ida y vuelta directo→inverso, la identidad J·CRLB = I, la monotonía del GDOP y el estimador que alcanza su propia CRLB bajo Monte Carlo) — un modelo de fuente puntual con línea de visión, sin términos de multitrayecto / NLOS (sin línea de visión), sesgo del reloj del receptor ni refracción.
Señal de navegación y seguimiento de código El nivel de señal entre el presupuesto de enlace y el dominio de medida (src/navsignal.rs): densidades espectrales de potencia (PSD) de área unidad para BPSK-R(n) (modulación por desplazamiento de fase binaria con chips rectangulares) y sine-BOC(m,n) (portadora con desplazamiento binario); el coeficiente de separación espectral (SSC) κ = ∫ G_s·G_i df, que deriva el Q antiinterferencia que usa el modelo de jamming (Q = 1/(R_c·κ)) a partir de los espectros reales de señal/interferidor en lugar de una constante representativa; el ancho de banda RMS (de Gabor) (BOC > BPSK — la medida de información de distancia / de Cramér–Rao); la fluctuación por ruido térmico del seguimiento de código DLL early–late coherente (DLL = lazo de enganche de retardo; Kaplan & Hegarty; ~submétrica para C/A — el código de adquisición gruesa del GPS — a 45 dB-Hz); y la envolvente del error por multitrayecto (EML coherente, early-minus-late — supresión del correlador estrecho). Validado frente a anclajes de forma cerrada (SSC propio de BPSK = 2/(3·R_c), PSD de área unidad, fluctuación submétrica de C/A). Esto es análisis del desempeño de la señal, no diseño de hardware de antena / carga útil de RF (función de un socio de carga útil).
Interoperabilidad Ingesta de efemérides de difusión multi-GNSS en RINEX-3 (GPS, Galileo, QZSS — el Sistema de Satélites Cuasi-Cenit de Japón —, BeiDou MEO/IGSO — órbita terrestre media / órbita geosíncrona inclinada — mediante IS-GPS-200, la especificación de interfaz del GPS; GLONASS, el Sistema Global de Navegación por Satélite de Rusia, mediante PZ-90 — el datum ruso Parametry Zemli 1990 — vector de estado RK4) utilizable como fuente de constelación (entra RINEX, sale geometría PNT); un analizador de observaciones RINEX-3 (pseudodistancia, fase de portadora, Doppler, intensidad de señal; se espera que el formato de observación 4,00 se analice, pero no está probado, y los archivos de navegación RINEX 4 se rechazan por su nombre en lugar de decodificarse mal) que ahora alimenta un solucionador de posicionamiento de punto único (SPP) (pvt) — entran observaciones de código reales, sale una posición del receptor real, validado con datos del IGS; un lector/escritor de efemérides precisas SP3-c/d con interpolación de Lagrange de orden 9; y exportación CCSDS OEM 2,0 + OMM (mensaje de elementos medios orbitales) para herramientas de dinámica de vuelo (GMAT, Orekit, STK — Systems Tool Kit); y análisis y emisión de mensajes de datos de seguimiento CCSDS-TDM (503) para el seguimiento radiométrico del espacio profundo.
Análisis de misión (ingeniería de sistemas) Presupuestos de diseño de misión de primer orden, cada uno un tipo de escenario ejecutable: geometría de lanzamiento y ascenso de dos cuerpos (launch-window — acimut de lanzamiento sin Az = cos i/cos lat, inclinación mínima, bonificación por la rotación terrestre, Δv de cambio de plano en dogleg, oportunidades diarias; src/launch.rs); un corredor de reentrada balística de Allen–Eggers (reentry — deceleración máxima, velocidad/altitud de g máxima, velocidad de calentamiento máximo; src/reentry.rs); geometría de cobertura de observación de la Tierra (eo-coverage — franja / GSD (distancia de muestreo sobre el terreno) en nadir / acceso fuera de nadir / revisita mediante el triángulo espacial de SMAD (Space Mission Analysis and Design); src/eo_payload.rs); un presupuesto de error de actitud y apuntamiento en 3-DOF (tres grados de libertad; attitude-budget — par de gradiente de gravedad en el peor caso + presupuesto de apuntamiento RSS (raíz de la suma de cuadrados); src/attitude_budget.rs); predicción de pasos sobre estación terrestre (passes — AOS/TCA/LOS, adquisición de señal / momento de máximo acercamiento / pérdida de señal, elevación máxima, tiempo de acceso; src/passes.rs); y un presupuesto de enlace unidireccional sobre la ecuación de enlace de CCSDS 401 / DSN 810-005 (el estándar de radiofrecuencia y modulación del CCSDS / el manual de diseño de enlaces de la Red del Espacio Profundo; link-budget — FSPL (pérdida en el espacio libre), C/N₀, Eb/N₀ (relación energía por bit a densidad de ruido), margen, cierre; src/linkbudget.rs). Presupuestos analíticos de primer orden MODELLED — la capa previa al hardware por debajo de STK/GMAT/Basilisk, no un sustituto de 6-DoF ni radiométrico.
Análisis de decisión y compromisos (MCDA) Un conjunto completo de análisis de decisión multicriterio (MCDA) (src/mcda/) que abarca las cuatro familias de métodos — agregación de valor (WSM, WPM, WASPAS — modelo de suma ponderada, modelo de producto ponderado, evaluación ponderada agregada de suma y producto), distancia al ideal (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), programación de compromiso (VIKOR, del serbio para optimización multicriterio y solución de compromiso) y superación (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, del francés para eliminación y elección que expresan la realidad), además de MOORA de sistema de razones (Multi-Objective Optimization on the basis of Ratio Analysis) y COPRAS proporcional (Complex Proportional Assessment) — con ponderación de prioridades por comparación por pares AHP (Analytic Hierarchy Process) (razón de consistencia), un frente no dominado de Pareto, análisis de sensibilidad de los pesos y puntuación de utilidad multiatributo. Los nueve agregadores reproducen las bibliotecas independientes de terceros pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) y pyDecision (ELECTRE I, COPRAS) con una diferencia inferior a 1e-9, y el vector de prioridades de AHP + la razón de consistencia coinciden con la tabla de índice aleatorio de Saaty y con el solucionador de autovalores principales de SciPy/LAPACK con una diferencia inferior a 1e-9 (tests/mcda_*_reference.rs). VALIDATED — la capa de decisión bajo el motor de estudios de compromisos.
Entorno espacial Un modelo de entorno de meteorología espacial (space-weather, src/space_weather.rs): índices de actividad solar (F10.7 / F10.7a centrada en 81 días — el flujo de radio solar de 10,7 cm) y geomagnética (Kp, el índice K planetario, con la tabla definicional Kp↔ap — siendo ap su amplitud planetaria lineal), la temperatura exosférica de Jacchia-1971 que impulsan (validada frente a los mínimo/medio/máximo solares publicados) y la densidad neutra termosférica corregida por actividad frente a la estática a una altitud dada — la dependencia de la densidad respecto del ciclo solar que omite la atmósfera estática USSA76 (Atmósfera Estándar de EE. UU. 1976). MODELLED: un acoplamiento de altura de escala de primer orden calibrado, no una atmósfera validada con datos (NRLMSISE — el modelo de exosfera de espectrómetro de masas y radar de dispersión incoherente del Laboratorio de Investigación Naval de EE. UU.).
Evaluación y estudio comparativo de aprendizaje automático Un banco de pruebas de evaluación de detección de degradaciones de RF (impairment-eval, src/impairment_eval.rs): un corpus sintético etiquetado y con parámetros fundamentados (nominal / jamming / spoofing de tiempo / spoofing de posición / multitrayecto), un arnés de ROC/AUC (característica operativa del receptor / área bajo la curva) independiente del detector que puntúa cualquier detector (energy | agc | sqm | parity | fused) con Pd por clase (probabilidad de detección) a una Pfa objetivo (probabilidad de falsa alarma), y la brecha de optimismo dentro y fuera de la distribución (modo de cambio de distribución). Además, un compromiso PNT cuántico frente a clásico (quantum-trade, src/quantum_trade.rs) que cuantifica el beneficio de holdover de temporización/inercial de un reloj candidato a partir de una curva de ADEV medida frente a una línea base clásica, con la salvedad del suelo de tau largo incluida en el artefacto y una envolvente de resiliencia frente al tiempo sin GNSS. Las métricas de evaluación (AUC / confusión / Pd-Pmd, siendo Pmd la probabilidad de detección fallida) están validadas con coincidencia exacta frente a scikit-learn 1.9.0 — también con telemetría real de ESA OPS-SAT (el conjunto de datos de detección de anomalías OPSSAT-AD, Ruszczak et al. 2025, CC BY 4,0 — Creative Commons Atribución 4,0), donde el ROC AUC de Mann–Whitney de Kshana reproduce el roc_auc_score de scikit-learn con una diferencia inferior a 1e-9 en la partición de prueba reservada y un detector transparente de recuento de picos separa las anomalías etiquetadas con un AUC ≈ 0,85 (tests/opssat_ad_reference.rs) — y los núcleos numéricos del motor de compromisos (ajuste NNLS de ADEV — mínimos cuadrados no negativos —, bandas de consistencia χ², Q de reloj de van Loan) frente a scipy 1.17.1; las cifras de beneficio de dispositivo construidas encima siguen siendo características operativas MODELLED — nunca datos de campo/IQ (muestras en fase/cuadratura), sin veredicto de bueno/malo. Sobre la base del banco de pruebas, un estudio de brecha de optimismo más profundo (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) puntúa un panel de 13 detectores (energy/AGC/SQM/parity más detectores de regresión logística con semilla y de MLP — perceptrón multicapa — de una capa oculta), ajusta leyes de escala dentro y fuera de la distribución con una nula por permutación, y aprende un predictor leave-one-out de la degradación fuera de distribución a partir de estadísticos dentro de la distribución (cargo run --example optimism_study). Un front end de receptor definido por software (src/sdr.rs — IQ/IF (frecuencia intermedia) en bruto → tomas early/prompt/late del correlador → SQM) y adaptadores de ingesta de datos reales (src/realdata/ — RINEX, u-blox UBX (el protocolo binario de u-blox), GnssLogger, JammerTest, Yunnan, SatGrid) permiten ejecutar los mismos detectores sobre grabaciones suministradas localmente (no se incluye ningún conjunto de datos). El mapa de cruce de resiliencia cuántico frente a clásico bajo incertidumbre de parámetros (src/crossover.rs; cargo run --bin crossover_study) regenera los estudios de cruce inercial y de reloj que hay detrás de las figuras de Resultados.
Demostrador de PNT con tecnología cuántica Tres áreas de aplicación ejecutables, MODELLED, detrás del motor abierto, cada una de las cuales emite un TradeEvidence honesto + un registro de representatividad / brechas hasta el vuelo (src/representativeness.rs): transferencia cuántica de tiempo de confianza (quantum-time-transfer, src/timetransfer_chain.rs — un presupuesto de extremo a extremo de reloj de red óptica + enlace fotónico frente a CSAC (reloj atómico de escala de chip) + bidireccional por RF, con un nivel de protección de temporización reutilizado, una FoM de seguridad frente a ataques de retardo/repetición (1 − P_md) y detección de anomalías del reloj + latencia de CUSUM); navegación cuántica sin GNSS (quantum-gnss-free-nav, src/quantum_nav_od.rs — una deriva inercial con interferómetro de átomos fríos frente a un INS de grado de navegación durante una interrupción del GNSS, con la honestidad de señalar que, sin una posición externa, el sesgo del acelerómetro no es observable y el error sigue creciendo); y detección de fallos/anomalías en sistemas cuánticos (quantum-anomaly-detect, src/quantum_faults.rs — un catálogo de fallos etiquetado con un ROC AUC con IC (intervalo de confianza) por bootstrap procedente de eval_stats, validado externamente, y un fallo mínimo detectable con una tasa de falsa alarma fija). Una biblioteca compartida de modelos de error de dispositivos cuánticos (src/quantum_devices.rs) y un arnés unificado de compromiso cuántico frente a clásico (src/qtrade.rs) los sustentan. Se reutilizan los núcleos validados sobre los que se apoyan (métricas de evaluación frente a scikit-learn, núcleos de compromiso frente a scipy); las cifras de beneficio de dispositivo construidas encima siguen siendo MODELLED — parámetros de dispositivo/enlace ilustrativos de fuentes públicas, modela la clase, sin TRL / herencia de vuelo / certificación, sin respaldo de ninguna agencia.
Ingeniería frugal e impacto en la integridad Una perspectiva de ROI de coste por cobertura (retorno de la inversión) (src/frugal.rs) — coste por unidad de cobertura entregada para un compromiso de arquitectura — y una asignación detección fallida → impacto en la integridad (src/integrity_impact.rs) que convierte la tasa de detección fallida de un monitor en su contribución al riesgo de integridad. Presupuestos de apoyo a la decisión MODELLED, aditivos.
Intercambio de artefactos El Kshana Interchange Format (KIF) (src/interchange.rs) — un sobre versionado y autodescriptivo que envuelve el resultado de un escenario con su tipo de escenario, la versión del esquema y las etiquetas MODELLED/VALIDATED, de modo que un artefacto almacenado se documente a sí mismo y los sobres más antiguos sigan siendo legibles con compatibilidad hacia adelante.

Cada capacidad es accesible como API de Rust, como kind de escenario ejecutable, o ambos. La madurez de cada capacidad — validada, ejecutable o de biblioteca — se sigue en docs/CAPABILITY.md. Una matriz de verificación comprobada por máquina (src/verification.rs) presenta la referencia cruzada requisito → módulo → prueba → referencia independiente → estado, con invariantes de honestidad probados unitariamente que permiten una etiqueta validada solo cuando la respalda una referencia independiente externa — y que registran las capacidades de hardware/PA (garantía del producto) que Kshana deliberadamente no ofrece.

Los cuatro paquetes de sensores, tal como se publicaron por primera vez (resultados)

Resultados#

Cada escenario compara un sensor cuántico con su equivalente clásico a lo largo de una interrupción del GNSS de ~1,8 h. Las cifras son reproducibles (scenario + seed + version).

Lo que aportan los sensores cuánticos cuando falta el GNSS, escenario de holdover del reloj: el cuántico mantiene 6600 s de autonomía frente a 2610 s el clásico, un error de temporización mucho menor y una disponibilidad del 100 % frente al 95,6 %
Lo que aportan los sensores cuánticos cuando falta el GNSS — clock-holdover · semilla 42 · dibujado con el motor 0.40.0, y cada figura anterior se vuelve a comprobar con el motor actual en cada compilación mediante tests/published_figures_still_reproduce.rs · SVG

La ventaja depende de la duración de la interrupción y de la vibración, con un punto de equilibrio explícito en el que gana el sistema clásico — mostrada con honestidad a lo largo de la escala de madurez tecnológica (las cifras del reloj óptico son objetivos de demostrador en tierra; ningún reloj óptico de estroncio ha volado):

Cruce del holdover del reloj cuántico frente al clásico a lo largo de la escala de madurez tecnológica, con bandas de confianza
Mapa de calor de la ventaja inercial cuántica frente a la clásica según la duración de la interrupción y la vibración, con un contorno de punto de equilibrio donde gana el sistema clásico
Cruce de resiliencia cuántico frente a clásico — escala TRL del holdover del reloj (arriba) · mapa de ventaja inercial con contorno de punto de equilibrio (abajo). Regenerable mediante cargo run --release --bin crossover_study.

Navegación inercial por estima: error de posición durante una interrupción del GNSS — el sensor cuántico (de átomos fríos) se mantiene cerca de la línea de especificación mientras el sensor de grado de navegación diverge hasta decenas de kilómetros
Error de posición de la navegación por estima durante una interrupción del GNSS: el sensor cuántico (azul) se mantiene plano cerca de la especificación; el sensor clásico (rojo) diverge hasta decenas de kilómetros. Generado por Kshana a partir de scenarios/imu-deadreckoning.toml.

Paquete Escenario Cuántico Clásico
1 — Holdover del reloj clock-holdover.toml (especificación de 20 ns) el reloj óptico aguanta toda la interrupción el CSAC supera la especificación a mitad de la interrupción
2 — Navegación inercial por estima imu-deadreckoning.toml (especificación de 100 m) átomos fríos: ~41 m, aguanta toda la interrupción grado de navegación: supera la especificación en ~350 s → decenas de km
3 — Transferencia de tiempo (enlace óptico entre satélites) timetransfer.toml óptico: medición de distancia de ~0,3 mm RF (TWSTFT): medición de distancia de ~150 mm
4 — Fusión híbrida (colofón) hybrid-pnt.toml posición y temporización completas durante toda la interrupción limitado en posición a ~350 s

El colofón muestra la tesis de la fusión: la transferencia óptica de tiempo entre satélites mantiene enganchado incluso un reloj clásico, de modo que el sensor inercial queda aislado como el eslabón débil del conjunto clásico — es decir, inercial cuántico + temporización óptica en conjunto.

Holdover del reloj: error de fase durante una interrupción del GNSS — el reloj óptico se mantiene dentro de la especificación de 20 ns durante toda la interrupción mientras que el reloj de escala de chip la supera a mitad de la interrupción
Holdover del reloj durante una interrupción del GNSS: el reloj óptico (azul) se mantiene dentro de la especificación de 20 ns durante toda la deriva; el reloj de escala de chip (rojo) la supera a mitad de la interrupción. Generado por Kshana a partir de scenarios/clock-holdover.toml.

Otro escenario, orbit-gnss-challenged.toml, deriva la disponibilidad del GNSS de la geometría orbital en lugar de ventanas definidas a mano: una nave espacial dentro de la capa del GNSS se propaga frente a una constelación Walker de tipo GPS, y el número de satélites visibles (línea de visión, ocultación por la Tierra, máscara de elevación) fija el estado de la solución de posición en cada paso. A lo largo de un día el usuario tiene solución de posición solo ~59 % del tiempo; el reloj cuántico mantiene una solución de temporización de 5 ns durante todos los huecos (disponibilidad 1.0), el reloj de escala de chip solo ~0.83.

Órbita con GNSS degradado: error de temporización del reloj a lo largo de un día para una nave espacial dentro de la capa del GNSS, donde los huecos de cobertura se derivan de la geometría orbital — el reloj óptico se mantiene dentro de la especificación de 5 ns durante los huecos mientras que el reloj de escala de chip la supera
Error de temporización a lo largo de un día con la disponibilidad del GNSS derivada de la geometría orbital: el número de satélites visibles (línea de visión, ocultación por la Tierra, máscara de elevación) fija el estado de la solución de posición en cada paso, de modo que el reloj debe sostener cada hueco — el reloj óptico mantiene la especificación de 5 ns mientras que el reloj de escala de chip la supera. Generado por Kshana a partir de scenarios/orbit-gnss-challenged.toml.

La constelación también puede darse como conjuntos reales de elementos de dos líneas (TLE). Un TLE completo (línea 1 + línea 2) se propaga con el modelo SGP4/SDP4 completo — que incluye la resistencia atmosférica y los términos lunisolares de espacio profundo y de resonancia de 12 h / 24 h que importan para las órbitas GNSS de ~12 h — validado frente a los vectores oficiales AIAA 2006-6753 con un caso más desfavorable de ≈ 4 mm. scenarios/orbit-sgp4-gps.toml incluye una instantánea real de Celestrak gps-ops de la constelación GPS operativa (2021-07-28, 30 satélites) y exige sumas de comprobación de TLE válidas — los conjuntos de elementos de dos líneas son datos abiertos del catálogo del Servicio Espacial de EE. UU. / 18.º Escuadrón de Defensa Espacial, redistribuidos por Celestrak (Dr. T. S. Kelso, celestrak.org); se actualizan con scripts/fetch_tles.sh. Un bloque con solo la línea 2 conserva la propagación analítica de dos cuerpos (scenarios/orbit-real-tle.toml); las dos formas pueden mezclarse en una misma constelación. Una constelación también puede construirse a partir de un bloque de registros de efemérides de difusión GPS en RINEX-3 — el formato que decodifica un receptor — propagados con el algoritmo de usuario de IS-GPS-200 y procesados con la misma geometría (scenarios/orbit-rinex.toml).

Qué es y qué no es, en detalle

Qué es y qué no es#

Es: un motor determinista y con pocas dependencias que abarca toda la pila PNT — geometría orbital, navegación inercial, fusión GNSS/INS, integridad, relojes y temporización. Ejecuta un escenario (a menudo una interrupción del GNSS), hace evolucionar modelos de error de sensores calibrados a través del estimador adecuado y puntúa el resultado frente a las figuras de mérito operativas, emitiendo un resultado JSON (JavaScript Object Notation) reproducible y un gráfico SVG, desde una biblioteca de Rust, una interfaz de línea de comandos (CLI), una extensión de Python, un módulo WebAssembly en el navegador, un servidor Model Context Protocol (MCP) para agentes de IA o un complemento para IDE (entorno de desarrollo integrado) de JetBrains.

No es: hardware de vuelo, un diseño de carga útil cuántica, un receptor completo de señales GNSS, un simulador de señales de radiofrecuencia (RF) ni un banco de pruebas con hardware en el bucle, ni un producto de aviónica certificado — y no sustituye a MATLAB/Simulink, STK (Systems Tool Kit) ni Orekit; se sitúa junto a ellos e intercambia archivos con ellos. La fidelidad del hardware cuántico procede de modelos de error publicados, no de esta herramienta. La madurez detallada de cada capacidad está documentada en docs/CAPABILITY.md.

No es (todavía): un motor de física de interferometría atómica completo (la mayoría de los sensores cuánticos consumen coeficientes publicados de Allan/presupuesto de ruido; el acelerómetro CAI (interferómetro de átomos fríos) tiene una capa de primeros principios — fase de Mach–Zehnder, ruido de proyección, decaimiento del contraste y acoplamiento de vibraciones, además de sistemáticos de Coriolis y de desplazamiento por luz — pero los sistemáticos de frente de onda y la resolución de la ambigüedad de franjas siguen siendo una capa de hoja de ruta P2 (fase 2 de la hoja de ruta, la capa de física cuántica), véase ROADMAP.md y docs/QUANTUM-MODELS.md); un receptor GNSS certificado o de hardware (resuelve una posición PVT (posición, velocidad y tiempo) de punto único a partir de observaciones de código RINEX (Receiver Independent Exchange Format) reales — validado con datos reales del IGS (International GNSS Service) — y su capa de IQ (kshana iq, desde 0.31.0) adquiere y sigue en software muestras de banda base grabadas o generadas, como receptor de análisis: no controla hardware de radio ni transmite, no es un receptor certificado y no hace posicionamiento por fase de portadora (RTK ni PPP)); ni una suite completa de diseño de misiones (tiene bloques de construcción de Lambert / porkchop / maniobra / determinación de órbita, pero es la capa de simulación de desempeño por encima de GMAT (General Mission Analysis Tool)/Orekit, no un sustituto). Asumir este alcance es deliberado. Si necesita presupuestos de error de interferómetros de átomos fríos de primeros principios (p. ej., de nivel CARIOQA-PMP — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — o validación al estilo X-37B), consulte la hoja de ruta P2 y póngase en contacto para colaborar.

Navegación en órbita terrestre baja#

Los satélites de órbita terrestre baja (LEO) pasan rápido y con mucha señal. El tipo de escenario leo-pnt-chain sigue un sistema a través de cada etapa: la señal, el paso y su enlace, el mensaje de navegación, y la solución fusionada de posición, velocidad y tiempo (PVT) y el posicionamiento preciso de punto (PPP). Cada etapa pasa sus cifras a la siguiente. Véase docs/LEO-PNT.md.

La cadena PNT LEO de una ejecución real de leo-pnt-chain (leo-pnt-end-to-end.toml): la etapa de señal (generic-l a 1191,795 MHz, piloto seguido a 10,23 Mchip/s) pasa a la etapa de paso (1080 km, pico de C/N0 seguido de 58,2 dB-Hz), que pasa al mensaje de navegación (kepler-rac, ajuste de 300 s, SISRE de representación de 0,91 mm RMS, 0,250 m con determinación de órbita), que alimenta la solución fusionada (solo GNSS 1,60 m RMS 3D, GNSS más LEO 0,43 m) y el posicionamiento preciso de punto (convergencia de 11,5 min solo con GNSS, 7,5 min con 240 satélites LEO). Entre las etapas se pasan 11 valores.La cadena PNT LEO de una ejecución real de leo-pnt-chain (leo-pnt-end-to-end.toml): la etapa de señal (generic-l a 1191,795 MHz, piloto seguido a 10,23 Mchip/s) pasa a la etapa de paso (1080 km, pico de C/N0 seguido de 58,2 dB-Hz), que pasa al mensaje de navegación (kepler-rac, ajuste de 300 s, SISRE de representación de 0,91 mm RMS, 0,250 m con determinación de órbita), que alimenta la solución fusionada (solo GNSS 1,60 m RMS 3D, GNSS más LEO 0,43 m) y el posicionamiento preciso de punto (convergencia de 11,5 min solo con GNSS, 7,5 min con 240 satélites LEO). Entre las etapas se pasan 11 valores.

Todos los tipos de escenario por familia#

Los tipos de escenario del motor, clasificados por familias. Cada familia tiene una página con una entrada por tipo (la descripción y los campos del motor, un comando de ejemplo, cifras destacadas de una ejecución, las filas de la matriz de verificación que lo nombran y el gráfico que escribe el propio motor) y una hoja de contactos de esos gráficos; docs/KINDS.md los indexa todos. La tabla la escribe tools/gen_readme_blocks.py y las páginas tools/gen_kinds_index.py, y ambos fallan si el motor incorpora un tipo que ninguna familia nombra.

Familia Qué responde Tipos Ejecutar uno
Relojes, temporización y holdover cuánto tiempo mantiene la hora un reloj sin GNSS y cómo se comporta un sistema de temporización frente a sus máscaras clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer kshana scenarios/clock-holdover.toml
Sensores inerciales, de fusión y cuánticos navegación por estima y fusión de sensores durante una interrupción del GNSS, con sensores clásicos y cuánticos inertial, hybrid, fusion, hybrid-ukf, gnss-ins, ins-trn-coast, quantum-gnss-free-nav, quantum-anomaly-detect, quantum-trade kshana scenarios/gnss-ins.toml
PNT alternativo sin GPS navegar a partir de la gravedad, el terreno y otros campos cuando falta el GNSS gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience kshana scenarios/combined-altpnt.toml
Constelaciones, cobertura y geometría dónde están los satélites, quién los ve y qué calidad tiene la geometría, alrededor de la Tierra, la Luna o Marte orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes kshana scenarios/orbit-gnss-challenged.toml
Mediciones GNSS, posicionamiento e integridad pseudodistancias, soluciones de posición, niveles de protección y el entorno espacial integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop kshana scenarios/integrity-raim.toml
Jamming, spoofing y el espectro cómo llega la interferencia a un receptor y si se detecta jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval kshana scenarios/jamming-demo.toml
Navegación en órbita terrestre baja una pasada, un enlace, un mensaje de navegación y una posición fusionada, etapa por etapa leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain kshana scenarios/leo-pnt-end-to-end.toml
Lunar y cislunar navegación, tiempo, marcos y geodesia en la Luna lunar-integrity, lunar-time-offset, lunar-time-budget, lunar-ascent, lunar-surface, lunar-descent, lunar-orbit-rendezvous, lunar-vlbi, lunar-vlbi-fim, lunar-joint-od-clock, lunar-frame-realisation, lunar-frame-campaign, lunar-llr-datum, moonlight-service-volume, lunar-differential-pnt, lunar-station-coverage, lunar-beacon, lunar-interop-export, cislunar-observability, cislunar-arc-recovery, lunar-attack-surface, lunar-jamming, earth-gnss-lunar, lunar-infrastructure kshana scenarios/lunar-infrastructure-od-consistency.toml
Navegación de usuarios espaciales señales GNSS para naves espaciales por encima, alrededor y más allá de las órbitas GNSS gnss-ssv kshana scenarios/gnss-ssv-shell.toml
PNT óptico enlaces ópticos a través de la atmósfera y figuras de mérito ópticas y de RF combinadas optical-atmosphere, hybrid-optical-rf kshana scenarios/optical-atmosphere-network.toml
Análisis de misión, enlaces y operaciones espaciales lanzamiento, ascenso, reentrada, actitud, enlaces, planificación de contactos y formatos de archivo launch-window, ascent-losses, reentry, entry-heating, eo-coverage, eo-radiometry, attitude-budget, aocs, link-budget, acm-link, contact-schedule, aperture-duty-cycle, space-packet, oem-interop kshana scenarios/launch-window.toml
Hilos de misión el presupuesto de errores de navegación y temporización de una cadena de fases desde el lanzamiento hasta la entrada mission-thread kshana scenarios/mission-thread-artemis-class.toml
Campañas misiones encadenadas, barridos y conjuntos construidos a partir de los demás tipos de escenario campaign kshana scenarios/campaign-jam-spoof-holdover-integrity.toml

Todos los comandos#

kshana <scenario.toml> ejecuta un escenario; cualquier otro comando es un subcomando, y kshana --help imprime el uso de todos ellos. Los comandos son --study, --validate, kinds, example, receiver-trust (con live y evidence), evidence (keygen, verify, attach-timestamp, round-trip), jammertest (import, score), trust-telemetry, imu-fit, nmea-scenario, interference-map (adsb, ais, daily, sensitivity, fetch-land), route-exposure, bench (spec, truth, cases, score, baseline, seal, reveal-check, manifest, verify-manifest, validate, leaderboard), bench-export, compliance-report, lunanet-afs-check, standards-pack, partner (check), osnma, iq (scene, acquire, track, sweep, labfit, campaign, conditions, frontend, monitor, inventory, info, extract, convert, decimate), sky y skyline. docs/COMMANDS.md da el propósito de cada uno, un ejemplo verificado y su página de documentación.

Todas las superficies#

Un solo motor, los mismos resultados en todas partes: la línea de comandos, la biblioteca de Rust, Python, JavaScript y WebAssembly, el servidor MCP con sus comandos de complemento y habilidades, Kshana Studio (cada página se ejecuta en el navegador, sin instalación y sin subir nada), las integraciones con ROS 2, Signal K, OpenCPN, GNSS-SDR y gnss_lib_py, los kits de despliegue de systemd, Docker y Grafana, y el complemento de JetBrains. docs/ALL-SURFACES.md los enumera con la forma de obtener cada uno y los nombres de todos los comandos de complemento, habilidades y páginas de Studio; docs/SURFACES.md indica, para cada comando y tipo de escenario, qué superficie lo ofrece y cuáles no, con el motivo.

Cómo funciona una ejecución#

Un escenario es un archivo TOML (Tom's Obvious, Minimal Language): un tipo de escenario, una semilla y los parámetros. El motor lo ejecuta y escribe junto a él el resultado, un gráfico y un informe, y las exportaciones que se soliciten.

Cómo fluye una ejecución. Un archivo TOML de escenario (un tipo de escenario, una semilla y sus parámetros) entra en el motor, kshana 0.40.0, a través del despacho api::run_toml sobre 92 tipos de escenario, determinista a partir del escenario, la semilla y la versión del motor. El motor escribe result.json, chart.svg, report.html y report.json, un table.csv para los tipos de escenario que definen uno, y, a petición, exportaciones SP3, CCSDS OMM y OEM, CZML, KML, GeoJSON, STK y SigMF; un conjunto escribe study.json y study.html. Esos archivos alimentan Kshana Studio en el navegador, un asistente de IA a través del servidor kshana-mcp, y la integración continua.Cómo fluye una ejecución. Un archivo TOML de escenario (un tipo de escenario, una semilla y sus parámetros) entra en el motor, kshana 0.40.0, a través del despacho api::run_toml sobre 92 tipos de escenario, determinista a partir del escenario, la semilla y la versión del motor. El motor escribe result.json, chart.svg, report.html y report.json, un table.csv para los tipos de escenario que definen uno, y, a petición, exportaciones SP3, CCSDS OMM y OEM, CZML, KML, GeoJSON, STK y SigMF; un conjunto escribe study.json y study.html. Esos archivos alimentan Kshana Studio en el navegador, un asistente de IA a través del servidor kshana-mcp, y la integración continua.

Este escenario incluido dura 2 h: 10 min de GNSS y después unas 1,8 h con el GNSS denegado. Plantea cuánto tiempo mantienen la hora, con un margen de 20 ns, un reloj óptico de red de estroncio y un reloj atómico de escala de chip (CSAC).

kshana example clock-holdover > clock-holdover.toml
kshana clock-holdover.toml
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote clock-holdover.result.json, clock-holdover.chart.svg, clock-holdover.report.html, and clock-holdover.report.json

El reloj óptico mantiene el presupuesto de 20 ns durante toda la interrupción de 6600 s; el CSAC lo mantiene durante 2610 s y está dentro del presupuesto el 95,6 % de la ejecución frente al 100 % del reloj óptico. kshana example enumera todos los escenarios incluidos.

Misiones#

Diez sectores plantean diez preguntas distintas al mismo motor. Cada uno tiene escenarios incluidos para empezar.

Sector Empezar con
Defensa y seguridad campaign-jam-spoof-holdover-integrity, spoof-meaconing
Espacio, órbita terrestre orbit-gnss-challenged, leo-pnt-end-to-end
Luna, Marte y espacio profundo lunar-relay-constellation, mars-orbit-pnt
Aviación y drones small-uas-jammed-nav, araim-gps-galileo
Marítimo maritime-strait-jamming, maritime-port-approach-coast
Carretera automotive-urban-canyon
Ferrocarril rail-tunnel-coast
Infraestructuras críticas y temporización clock-holdover, clock-ensemble
Telecomunicaciones y 5G (la quinta generación de redes móviles) telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Ciencia e investigación sweep-clock-stability, quantum-pnt-demonstrator.suite
La pregunta que plantea cada sector
Sector La pregunta que plantea Empezar con
Defensa y seguridad ¿Cuánto tiempo siguen siendo fiables nuestra navegación y nuestra temporización bajo jamming y spoofing, y qué capas nos mantienen dentro de la especificación? campaign-jam-spoof-holdover-integrity, spoof-meaconing
Espacio: órbita terrestre ¿Ve mi nave espacial suficientes satélites de navegación, cuánto tiempo mantiene la hora su reloj entre soluciones de posición y qué aportaría una capa de navegación en órbita baja? orbit-gnss-challenged, leo-pnt-end-to-end
Luna y espacio profundo ¿Obtendrá un módulo de aterrizaje, un rover o un orbitador en la Luna, en Marte o más lejos una posición y una hora fiables? lunar-relay-constellation, mars-orbit-pnt
Aviación y drones Después de que un interferidor deje sin GNSS, ¿cuánto tiempo permanece mi sistema de aeronave no tripulada (UAS) dentro de su presupuesto de posición y hay integridad disponible en mi ruta? small-uas-jammed-nav, araim-gps-galileo
Marítimo ¿Hasta dónde alcanza un interferidor sobre el agua, se detectaría un empujón de posición y cuánto tiempo puede un buque avanzar por inercia hasta el puerto? maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast
Carretera y automoción ¿Cuánto se desvía un coche bajo un paso elevado o al pasar junto a un interferidor en la carretera? automotive-urban-canyon
Ferrocarril ¿Cuántos segundos después de entrar en un túnel puede un tren seguir sabiendo en qué vía está? rail-tunnel-coast
Infraestructuras críticas y temporización Si se pierde o se falsifica la hora GNSS, ¿cuánto tiempo mantienen una red eléctrica, un mercado de negociación o un centro de datos una hora trazable? clock-holdover, clock-ensemble
Telecomunicaciones y 5G Si se pierde la referencia de tiempo GNSS, ¿se mantiene el reloj de mi red dentro de las máscaras de la ITU-T y durante cuánto tiempo? telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Ciencia e investigación ¿Puedo reproducir, ampliar y citar un resultado PNT, hasta la semilla? sweep-clock-stability, quantum-pnt-demonstrator.suite

Evidencias#

SGP4 contrastado con los 666 vectores de referencia de AIAA 2006-6753, error de posición más desfavorable de 4,12 mm

176 de 401 capacidades validadas frente a referencias independientes externas; 221 etiquetadas con franqueza como modeladas. Cada fila de la matriz de verificación nombra una capacidad, la referencia independiente frente a la que se comprueba, la prueba que ejecuta la comprobación y la etiqueta que se deriva. La integración continua (CI) hace imposible llamar VALIDATED a una capacidad sin una referencia independiente externa.

Cómo gana una capacidad su etiqueta. Cada fila de la matriz de verificación nombra una capacidad, la referencia independiente frente a la que se comprueba, la prueba que ejecuta la comprobación en la integración continua y la etiqueta que se deriva. Una fila solo puede ser VALIDATED con una referencia independiente externa; en caso contrario es MODELLED, o PARTNER cuando un socio de hardware es su propietario. Ejemplo: SGP4/SDP4, Cowell 6-DOF + perturbaciones, DO por lotes/secuencial, referencia independiente vectores de verificación SGP4 de AIAA 2006-6753, prueba tests/sgp4_verification.rs, etiqueta VALIDATED. Recuentos actuales: 176 VALIDATED, 221 MODELLED, 4 PARTNER de 401 filas. En total, 176 capacidades validadas frente a referencias independientes externas; otras 221 están etiquetadas con franqueza como MODELLED y 4 son propiedad de PARTNER.Cómo gana una capacidad su etiqueta. Cada fila de la matriz de verificación nombra una capacidad, la referencia independiente frente a la que se comprueba, la prueba que ejecuta la comprobación en la integración continua y la etiqueta que se deriva. Una fila solo puede ser VALIDATED con una referencia independiente externa; en caso contrario es MODELLED, o PARTNER cuando un socio de hardware es su propietario. Ejemplo: SGP4/SDP4, Cowell 6-DOF + perturbaciones, DO por lotes/secuencial, referencia independiente vectores de verificación SGP4 de AIAA 2006-6753, prueba tests/sgp4_verification.rs, etiqueta VALIDATED. Recuentos actuales: 176 VALIDATED, 221 MODELLED, 4 PARTNER de 401 filas. En total, 176 capacidades validadas frente a referencias independientes externas; otras 221 están etiquetadas con franqueza como MODELLED y 4 son propiedad de PARTNER.
Etiqueta Filas Significado
VALIDATED 176 una referencia independiente externa coincide: datos reales, una implementación independiente o vectores de referencia publicados
MODELLED 221 contrastado con la verdad analítica o con la autoconsistencia de la simulación, y dicho sin rodeos
PARTNER 4 propiedad de un socio de hardware; Kshana no tiene ninguna referencia independiente para ello

Algunas de las comprobaciones: los 666 vectores SGP4 (Simplified General Perturbations 4) de AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 con 4,12 mm; el modelo de fuerzas de Cowell con 0,08 m frente a Orekit 12,2; Galileo con 0,61 m y Swarm-A con 0,10 m frente a efemérides precisas reales de la Agencia Espacial Europea (ESA). Las pruebas mantienen cerca del 95 % de cobertura de líneas de src/, con una exigencia del 85 % en la CI. El registro es docs/VERIFICATION-MATRIX.md, generado a partir de src/verification.rs: la matriz completa de 401 filas, y por qué cada fila modelada no tiene referencia independiente externa en docs/MODELLED-RATIONALE.md.

Cómo funciona la validación, la tabla de aspectos destacados y las figuras de evidencia

Validación, reproducibilidad y honestidad#

  • Cada término de ruido está calibrado con una cifra publicada y citada y validado frente a la relación estándar (desviación de Allan para relojes; crecimiento del error de navegación por estima de Groves para inerciales; la conversión de temporización a distancia para la transferencia de tiempo). El estado de cada término se sigue en docs/VALIDATION.md como validated o not modeled — nada se presenta como validado si no lo está.
  • Reproducible por construcción: scenario + seed + engine version → identical bits. scripts/check-reproducible.sh lo impone; las ejecuciones cuánticas y clásicas usan semillas independientes para que su ruido no esté correlacionado.
  • La madurez se declara con honestidad: las cifras del reloj óptico y del enlace óptico son resultados de objetivos / demostrador en tierra, no de vuelo.

La etiqueta de evidencia en cada figura#

Cada figura y tabla que escribe una ejecución indica hasta qué punto fiarse de ella y en qué filas del registro se apoya. El JSON de resultados tiene una clave evidence, el SVG del gráfico una línea bajo el trazado (y un elemento <metadata id="kshana-evidence">), y la tabla CSV líneas de comentario # evidence: por delante (se leen con comment='#'). Nombra un nivel, VALIDATED, MODELLED o PARTNER, y los identificadores (VM- y ocho dígitos hexadecimales) de las filas de la matriz de verificación que ejercitó la ejecución. El nivel es el más débil de esas filas, de modo que una ejecución que se apoya en una fila modelada se etiqueta MODELLED por muchas filas validadas que haya a su lado; la etiqueta nunca puede afirmar más que el registro. Las filas, los estados y los identificadores se leen de la matriz, no se escriben a mano (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), y tests/evidence_labels_doc_sync.rs falla si una figura no tiene etiqueta o si una etiqueta discrepa de la matriz.

La validación de un vistazo#

Cada fila la hace cumplir una prueba con nombre en la CI. Esta tabla es una selección destacada; la matriz completa verificada por máquina es de 401 filas — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), con las evidencias completas (y lo que honestamente no está todavía validado) en docs/VALIDATION.md y el artefacto kshana-validation-summary.html de cada versión (generado por cargo run --bin validation_report, con atestación SLSA — Supply-chain Levels for Software Artifacts).

La columna Estado indica el tipo de evidencia, de acuerdo con la escala de validación anterior: VALIDATED = contrastado con una referencia independiente externa (datos reales, una biblioteca independiente o vectores de referencia publicados); MODELLED = contrastado con la verdad analítica o con la autoconsistencia de la simulación (sin un conjunto de datos externo independiente). VALIDATED describe el método de comprobación, no un resultado de aprobado/suspendido — un fallo honesto frente a una referencia independiente externa real sigue siendo VALIDATED, mientras que una comparación que ninguna fila de la matriz nombra como referencia independiente (el ajuste a LRO — Lunar Reconnaissance Orbiter — de arriba) se muestra como MODELLED. Las filas de CI son salvaguardas de proceso, no figuras de mérito. Unas pocas islas de datos reales (el reloj de cesio medido, Stable32 PHASE.DAT y las comprobaciones OPS-SAT/ICGEM cuyos datos de entrada en bruto no tienen licencia de redistribución) están condicionadas por datos: la prueba imprime un aviso de omisión y se mantiene en verde cuando falta la entrada, y las cifras públicas de referencia se confirman en tests/fixtures/. Los datos de entrada en bruto se reproducen con el scripts/fetch_*.sh correspondiente.

Estado Capacidad Coincidencia Referencia / referencia independiente
VALIDATED Propagación SGP4/SDP4 666/666 vectores, caso más desfavorable 4,12 mm AIAA 2006-6753 (Vallado tcppver.out) + comparación directa con el crate independiente sgp4
VALIDATED Marcos de referencia — nutación IAU 2000A/B, cadena CIO IAU 2006/2000A, ERA bit a bit (X,Y con 1e-14, s con 1e-18, ERA con 1e-12) ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b
MODELLED GCRS→ITRS frente a un motor SPICE independiente máx. 0.028″ → ≤ 0,86 m en tierra, ≤ 3,6 m en órbita GNSS ANISE (NAIF/SPICE en Rust puro), mismo EOP finals2000A del IERS, 8 épocas de 2020–2023 (comparado con esta referencia; ninguna fila de la matriz de verificación la nombra como referencia independiente externa, por lo que no se etiqueta VALIDATED)
MODELLED Geopotencial EGM2008 (grado/orden 70) aceleración = ∇V con < 1e-6; el colapso zonal coincide con J2 validado Coeficientes EGM2008 de NGA + identidad analítica de ∇V
VALIDATED Síntesis de funcionales de gravedad (mapa de navegación asistida por gravedad / sin GNSS) GRS80 Somigliana + γ_e/γ_p con 3.5e-12; mapa de perturbación EGM2008 real físicamente plausible (RMS ≈ 26 mGal, g/o 70) GRS80 (Moritz 1980, IAG — Asociación Internacional de Geodesia) gravedad normal de Somigliana + EGM2008 real de ICGEM (tests/icgem_gravity_reference.rs)
VALIDATED Estimadores de Allan (ADEV/MDEV/TDEV/HDEV) + bandas de confianza reproducen las desviaciones de referencia; las bandas χ² coinciden NIST SP 1065 (Riley), tabla 31/32 de 1000 puntos
VALIDATED Estimadores de Allan sobre un reloj de cesio medido real OADEV/OHDEV con 1e-3 (observado ≤ 3e-5), 16 factores de promediado Stable32 sobre un Cs 5071A real frente a un máser de H, 556.990 puntos (tests/cs5071a_reference.rs, condicionado por datos)
VALIDATED Estimadores de Allan sobre el PHASE.DAT canónico de Stable32 OADEV/MDEV/TDEV con 1e-3 (observado ≤ 5e-5), 139 factores de promediado Desviaciones de referencia de Stable32 para PHASE.DAT (tests/phasedat_reference.rs, condicionado por datos)
MODELLED Modelo de error de IMU — ARW / VRW / inestabilidad del sesgo recuperado a < 5 % (inestabilidad del sesgo < 15 %) Hoja de datos del ADIS16465 de Analog Devices; perfil de referencia de NaveGo
VALIDATED Propagador numérico de Cowell + modelo de fuerzas (niveles conservadores) error de posición más desfavorable 0,08 m durante 24 h, 278 épocas (LEO + GTO) Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs
MODELLED Nivel de resistencia de Cowell + entradas absolutas de efemérides del Sol/Luna y de densidad nivel de resistencia caracterizado ≈ 333 m / 24 h; sin perturbaciones coincide con Kepler de variable universal a nivel submétrico, energía/momento ~1e-9 efemérides integradas de baja precisión + Kepler analítico
MODELLED Lambert · Tsiolkovsky · porkchop viaje de ida y vuelta a la verdad de dos cuerpos; ΔV < 0.01 % Izzo 2015 · ecuación del cohete · suelo analítico de Hohmann
MODELLED Determinación de órbita (lotes de Gauss–Newton) submétrico / mm·s⁻¹ sin ruido; ~2 m con un suelo de ruido de 5 m dos cuerpos + J2 sobre un arco RK4
MODELLED Ajuste del modelo de fuerzas frente a las efemérides precisas de Galileo (arco completo) 0,61 m RMS en 3-D, 24 h, g/o-70, solo fuerzas Órbita final ESA0MGNFIN de ESA/ESOC (E11), EOP finals2000A real (comparado con esta referencia; ninguna fila de la matriz de verificación la nombra como referencia independiente externa, por lo que no se etiqueta VALIDATED)
MODELLED Ajuste del modelo de fuerzas frente a las efemérides precisas de Swarm-A (dinámica reducida) 0,10 m RMS en 3-D (cota de nivel empírico, no una medida) Órbita precisa SW_OPER_SP3ACOM_2_ de ESA (comparada con esta referencia; ninguna fila de la matriz de verificación la nombra como referencia independiente externa, por lo que no se etiqueta VALIDATED)
MODELLED Ajuste del modelo de fuerzas frente a LRO lunar (fallo honesto) 6,67 m de dinámica reducida, por encima del objetivo de 5 m JPL Horizons LRO (NAIF −85) + GRGM660PRIM de GRAIL (Gravity Recovery and Interior Laboratory) (comparado con esta referencia; ninguna fila de la matriz de verificación la nombra como referencia independiente externa, por lo que no se etiqueta VALIDATED)
MODELLED OD de Marte en espacio profundo (SRIF de dinámica reducida) ≈ 0,2 m Marte-LMO (FoM de simulación, no de misión real) OD sintética en lazo cerrado — validación de la maquinaria del estimador
MODELLED Dinámica de Marte con el Sol como centro frente a JPL DE440 137 m con un arco de 1 día (crece con el arco = n-cuerpos no modelado) JPL DE440 mediante ANISE (xval/anise-mars-od, condicionado por kernel) (comparado con esta referencia; ninguna fila de la matriz de verificación la nombra como referencia independiente externa, por lo que no se etiqueta VALIDATED)
VALIDATED Posicionamiento de punto único frente a una coordenada IGS topografiada (observaciones reales) 5,7 m RMS en 3-D / 1,1 m horizontal, SPP de código libre de ionosfera de doble frecuencia Levantamiento de la estación IGS ABMF + efemérides de difusión GPS, 2018-05-13 (tests/pvt_abmf.rs)
MODELLED UKF GNSS/INS fuertemente acoplado 0,77 m RMS durante un paso LEO de 30 min con una interrupción de 120 s deriva con modelo de fuerzas, derivado a mano
MODELLED Navegación con mapa de gravedad sin GPS ~70 km de deriva del INS → ~145 m recuperados Objetivo Quantum Wayfarer de ESA NAVISP
MODELLED Navegación referenciada al terreno (TERCOM/SITAN) 70 km de deriva → < 500 m (suelo de resolución de malla ~140 m) DEM .hgt de SRTM; deriva inyectada a mano (comprobación no circular)
MODELLED Campo principal IGRF-14 (grado/orden 13) polo ~80,7°N, dipolo ~29,7 µT, banda física de 22–67 µT IAGA (Asociación Internacional de Geomagnetismo y Aeronomía) igrf14coeffs.txt (seminormalizado de Schmidt)
MODELLED Modulación de señal de navegación y seguimiento de código SSC propio de BPSK = 2/(3·R_c); PSD de área unidad; fluctuación submétrica del DLL de C/A a 45 dB-Hz Anclajes de SSC/PSD en forma cerrada + fórmula de ruido térmico del DLL de Kaplan & Hegarty
MODELLED Corrector diferencial de halo/NRHO del CR3BP STM = diferencias finitas; la órbita se cierra con precisión de máquina; NRHO L2 9:2 ≈ 6,57 d / periluna ≈ 3.250 km comprobación de la STM por diferencias finitas + NRHO publicada L2 meridional 9:2 (≈ 6,56 d / ≈ 3.370 km) — CR3BP, no unas efemérides reales de Gateway
MODELLED Integridad ARAIM de doble constelación modo de fallo de toda la constelación con GPS + Galileo reales TR (informe técnico) de ARAIM de la UE / DO-316; Celestrak gps-ops 2021-07-28 (comparado con esta referencia; ninguna fila de la matriz de verificación la nombra como referencia independiente externa, por lo que no se etiqueta VALIDATED)
VALIDATED Geometría GNSS / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) coinciden con 1e-6 relativo en 8 geometrías (bien condicionadas → casi singulares) gnss_lib_py 1.0.4 (Stanford NAV Lab) — biblioteca independiente (tests/dop_reference.rs)
VALIDATED Métricas de evaluación de detectores de ML (AUC/ROC/confusión/Pd-Pmd/precisión/F1) recuentos exactos + < 1e-9 en 5 conjuntos de datos × 24 umbrales scikit-learn 1.9.0 (Pedregosa et al., JMLR — Journal of Machine Learning Research — 2011) — biblioteca independiente (tests/eval_metrics_reference.rs)
VALIDATED ROC AUC de detección de anomalías con telemetría real de ESA OPS-SAT el AUC reproduce el de scikit-learn con < 1e-9; AUC del detector de recuento de picos ≈ 0.85 en la partición de prueba etiquetada roc_auc_score de scikit-learn en la partición de prueba de OPSSAT-AD (Ruszczak et al. 2025, CC BY 4,0) — telemetría real de OPS-SAT (tests/opssat_ad_reference.rs)
VALIDATED Núcleos numéricos del compromiso cuántico (ajuste NNLS de ADEV · bandas de consistencia χ² · Q de reloj de van Loan) NNLS + Q exactos; χ² < 5e-4 con gdl de operación ≥ 48 scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs)
VALIDATED Métricas de wander de telecomunicaciones MTIE / MDEV / TDEV (ITU-T G.810/G.823/G.8261/G.811 — las recomendaciones del Sector de Normalización de las Telecomunicaciones de la Unión Internacional de Telecomunicaciones) MTIE (9 factores de promediado, exacto bit a bit) y MDEV + TDEV (8 factores, < 1e-9 relativo) sobre la serie LCG (generador congruencial lineal) de NIST SP 1065 allantools 2024,06 mtie / mdev / tdev — biblioteca independiente (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs)
VALIDATED Métodos de estudio de compromisos MCDA — las cuatro familias de decisión, nueve agregadores validados externamente (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) más ponderación de prioridades por comparación por pares AHP puntuaciones / clasificaciones / matrices de concordancia reproducidas con < 1e-9 pymcdm + pyDecision (bibliotecas MCDA independientes de terceros) + RI (índice aleatorio) de Saaty / autovalores de SciPy-LAPACK (tests/mcda_*_reference.rs)
VALIDATED Envolvente Doppler LEO a partir de la órbita y la portadora máximo de Iridium dentro de 5 % de los ±36 kHz publicados; Xona Pulsar X1 dentro de los 32–34 kHz publicados Resultados de pruebas de RNTF LEO PNT; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs)
MODELLED Convergencia de PPP con aumentación LEO 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min con 60 / 96 / 192 / 288 satélites LEO, monótono; NEES del filtro dentro de la banda χ² tendencia comparada con Li et al., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); no se reproducen las constelaciones ni el ruido
MODELLED Nivel de protección de temporización condicional (error de tiempo no detectado limitado por el holdover bajo spoofing) la composición reproduce la recursión de covarianza multipaso de clock_state; calibrada sobre un spoofing real registrado Escalares de JammerTest 2024 (Zenodo 15911589) + formas cerradas de van Loan / CUSUM (examples/tpl_jammertest)
MODELLED Puntuación de resiliencia PNT + inestabilidad de decisión 35 pruebas con referencia independiente derivada a mano; artefacto de estudio determinista byte a byte (semilla fija) Correspondencia con DHS RPCF v2.0 + formas cerradas de Dirichlet / Kendall-τ / Hill-N2 — arquitecturas sintéticas, no una certificación
MODELLED Estudio de brecha de optimismo ante degradaciones de RF (leyes de escala + predictor leave-one-out) significación con nula por permutación; artefacto determinista byte a byte (5 semillas) corpus sintético con parámetros fundamentados — las métricas de evaluación están VALIDATED frente a scikit-learn (arriba); el estudio es MODELLED
CI Reproducibilidad multiplataforma entrada idéntica bit a bit + golden de forma en 3 sistemas operativos Matriz de CI de Linux / macOS / Windows, golden de SHA-256
CI Cobertura de pruebas ~95 % de líneas en src/ excluyendo src/*_data.rs y src/main.rs, con umbral ≥ 85 % cargo-tarpaulin (motor LLVM)

Cómo gana una capacidad su etiqueta: un requisito se asigna a un módulo de src, a una prueba de tests, a una referencia independiente externa (conjunto de datos real, implementación de referencia independiente o vectores publicados), a un estado, con una salvaguarda aplicada por la CI de que ninguna capacidad puede ser validada sin una referencia independiente externa. Recuentos actuales: 176 validadas, 221 modeladas, 4 de socios, 401 en total
Cómo gana una capacidad su etiqueta — el invariante aplicado por CI: sin referencia independiente externa ⇒ no puede quedar validada · SVG

Cómo se respalda cada afirmación: la columna de validadas es 176 de 176 ExternalDataset por construcción (aplicado por CI); las filas modeladas se etiquetan con honestidad como InternalConsistency, ReferenceImpl o ExternalDataset; las filas de socio no tienen ninguna referencia independiente de Kshana
Error de posición en el caso más desfavorable de SGP4/SDP4 frente a la referencia AIAA 2006-6753 por régimen, escala logarítmica: todos los regímenes quedan muy por debajo de la tolerancia de AIAA, con un caso más desfavorable de 4,12 mm en el régimen de espacio profundo no resonante
Arriba: cada fila validada está respaldada por un conjunto de datos externo, por construcción. Abajo: SGP4 coincide con la referencia oficial en todos los regímenes (caso más desfavorable 4,12 mm). SVG · SVG

Estado de verificación de las 401 capacidades: 176 validadas (comprobadas frente a una referencia independiente externa), 221 modeladas, 4 propiedad de socios
176 validadas · 221 modeladas · 4 de socios — SVG

Dominios de capacidad#

Todas las capacidades del mapa público, por dominio, con su etiqueta del registro. La tabla de dominios la escribe tools/gen_readme_blocks.py a partir de web/capabilities.json, el mismo archivo que lee el mapa de todo de Studio.

Capacidades de Kshana por dominio y madurez: capacidades públicas validadas y modeladas por dominio, dibujadas a partir de web/capabilities.json por tools/gen_validation_figures.pyCapacidades de Kshana por dominio y madurez: capacidades públicas validadas y modeladas por dominio, dibujadas a partir de web/capabilities.json por tools/gen_validation_figures.py

La tabla completa, dominio por dominio con cada capacidad y su etiqueta, está en docs/CAPABILITY-DOMAINS.md.

Instalación#

Una sola línea instala la herramienta de línea de comandos: cargo install kshana. Todos los canales publican v0.40.0 desde el mismo commit etiquetado.

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Canal Instalación Guía
Probar en el navegador abrir https://kshana.dev Guía de Studio
Línea de comandos (Rust) cargo install kshana Uso de la línea de comandos
Biblioteca de Rust cargo add kshana Referencia de la API en docs.rs
Python pip install kshana Guía de la API de Python
JavaScript y WebAssembly npm install kshana Guía de npm y WebAssembly
Asistente de IA (servidor MCP, cargo) cargo install kshana-mcp Guía del servidor MCP
Imagen de Docker docker run --rm -i ghcr.io/ashfordeou/kshana-mcp Guía del servidor MCP: Docker
Cursor (un clic) Añadir a Cursor (npx) · Añadir a Cursor (Docker) · npx -y kshana-mcp@0.40.0 Todos los fragmentos de instalación de MCP
VS Code (un clic) Instalar en VS Code (npx) · Instalar en VS Code (Docker) · npx -y kshana-mcp@0.40.0 Todos los fragmentos de instalación de MCP
npx npx -y kshana-mcp@0.40.0 Todos los fragmentos de instalación de MCP
uvx / pipx uvx kshana-mcp==0.40.0 Todos los fragmentos de instalación de MCP
Homebrew brew install ashfordeOU/tap/kshana-mcp Todos los fragmentos de instalación de MCP
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp Todos los fragmentos de instalación de MCP
winget winget install AshfordeOU.KshanaMcp Todos los fragmentos de instalación de MCP
Binario precompilado descargue kshana-mcp-<target> de la versión y compárelo con SHA256SUMS Todos los fragmentos de instalación de MCP
Registro oficial de MCP buscar io.github.ashfordeOU/kshana-mcp Todos los fragmentos de instalación de MCP
Remoto (HTTP en flujo), autoalojado kshana-mcp --http 127.0.0.1:8080 Guía de autoalojamiento
Complemento para IDE de JetBrains Configuración → Plugins → Marketplace → buscar "Kshana" (ID del complemento dev.kshana.ide) Guía del complemento
Plugin de Signal K npm install signalk-kshana-trust Guía del plugin de Signal K
Plugin de OpenCPN descargue el archivo tar del complemento de la versión Envío al catálogo de OpenCPN
Panel de Grafana importe kshana-grafana-*.json de la versión Código fuente del panel
Imagen de compilación de referencia docker pull ghcr.io/ashfordeou/kshana-reference-build Integraciones marinas

Kshana en el JetBrains Marketplace Se compila con Rust 1,88 o posterior, la rust-version de Cargo.toml

MCP es el Model Context Protocol. Fije una versión con cargo install kshana --version 0.40.0, pip install kshana==0.40.0 o npm install kshana@0.40.0. Para compilar desde el código fuente, consulte Instalar y compilar en Referencia.

Ejecutar un escenario desde Python y desde WebAssembly
import json, kshana

toml = open("clock-holdover.toml").read()
result = json.loads(kshana.run(toml))
print(kshana.version(), result["quantum"]["fom"]["holdover_s"], result["classical"]["fom"]["holdover_s"])
# 0.40.0 6600.0 2610.0

Además de run, el módulo expone run_full (JSON, SVG y el resumen de una línea a la vez), run_typed, validate_toml, list_kinds / scenario_kinds y error_kind; véase docs/PYTHON_API.md.

El paquete npm es el motor completo compilado a WebAssembly. En Node.js, pase el binario a initSync; en un navegador, await init() lo descarga (véase README.npm.md).

import { readFileSync } from "node:fs";
import { createRequire } from "node:module";
import { initSync, run, summary, version } from "kshana";

const wasm = createRequire(import.meta.url).resolve("kshana/kshana_bg.wasm");
initSync({ module: readFileSync(wasm) });

const toml = readFileSync("clock-holdover.toml", "utf8");
const result = JSON.parse(run(toml));
console.log(version(), result.quantum.fom.holdover_s, result.classical.fom.holdover_s);
// 0.40.0 6600 2610
console.log(summary(toml));

Arquitectura#

Un motor abierto está en el centro y cada superficie lo ejecuta: la línea de comandos, la biblioteca de Rust, Python, WebAssembly y Kshana Studio, el servidor MCP, la imagen de Docker y el complemento de JetBrains. El mismo archivo de escenario da los mismos bytes en cada una. Kshana Pro se sitúa por encima como una capa independiente que depende del motor y nunca lo bifurca.

La arquitectura de Kshana: un motor abierto en el centro, kshana 0.40.0 bajo la AGPL-3.0, con api::run_toml, un despacho tipado sobre cada tipo de escenario, y el registro de verificación de 401 capacidades (176 VALIDATED, 221 MODELLED, 4 PARTNER). A su alrededor, cada superficie ejecuta el mismo motor: línea de comandos (cargo install kshana); biblioteca de Rust (cargo add kshana); Python (pip install kshana); WebAssembly + Kshana Studio (npm install kshana); servidor MCP (cargo install kshana-mcp); imagen de Docker (ghcr.io/ashfordeou/kshana-mcp); complemento de JetBrains (Marketplace: «Kshana»). Debajo, Kshana Pro, una capa superpuesta propietaria que depende del motor abierto como biblioteca y nunca lo bifurca, y no añade ningún modelo físico.La arquitectura de Kshana: un motor abierto en el centro, kshana 0.40.0 bajo la AGPL-3.0, con api::run_toml, un despacho tipado sobre cada tipo de escenario, y el registro de verificación de 401 capacidades (176 VALIDATED, 221 MODELLED, 4 PARTNER). A su alrededor, cada superficie ejecuta el mismo motor: línea de comandos (cargo install kshana); biblioteca de Rust (cargo add kshana); Python (pip install kshana); WebAssembly + Kshana Studio (npm install kshana); servidor MCP (cargo install kshana-mcp); imagen de Docker (ghcr.io/ashfordeou/kshana-mcp); complemento de JetBrains (Marketplace: «Kshana»). Debajo, Kshana Pro, una capa superpuesta propietaria que depende del motor abierto como biblioteca y nunca lo bifurca, y no añade ningún modelo físico.
Dentro del motor: las capas de dominio y el registro de verificación La arquitectura de Kshana en capas. Cinco puertas de entrada (la línea de comandos, Python, JavaScript y WebAssembly, el servidor MCP y el complemento de JetBrains) llegan a un único api::run_toml, un despacho tipado sobre 92 tipos de escenario. Debajo hay ocho capas de dominio: tiempo y marcos, relojes y temporización, inercial y fusión, GNSS e integridad, astrodinámica, PNT en LEO, la Luna, Marte y el espacio profundo, y misiones y estudios, sobre un núcleo compartido, todo con referencias cruzadas del módulo de verificación, la matriz verificada por máquina de 401 capacidades que es la única fuente de verdad de cada etiqueta.La arquitectura de Kshana en capas. Cinco puertas de entrada (la línea de comandos, Python, JavaScript y WebAssembly, el servidor MCP y el complemento de JetBrains) llegan a un único api::run_toml, un despacho tipado sobre 92 tipos de escenario. Debajo hay ocho capas de dominio: tiempo y marcos, relojes y temporización, inercial y fusión, GNSS e integridad, astrodinámica, PNT en LEO, la Luna, Marte y el espacio profundo, y misiones y estudios, sobre un núcleo compartido, todo con referencias cruzadas del módulo de verificación, la matriz verificada por máquina de 401 capacidades que es la única fuente de verdad de cada etiqueta.

Un motor, muchas puertas de entrada. Un único núcleo de Rust (kshana) ejecuta cada escenario, al que se accede mediante una CLI, una extensión de Python, un módulo WebAssembly en el navegador, un servidor MCP para agentes de IA y un complemento para IDE de JetBrains — todos convergen en un único despacho api::run_toml. En su interior, los paquetes de sensores se conectan a una interfaz común de modelos de error; junto a ellos hay una capa de marcos de referencia (precesión–nutación IAU 2006/2000A y la reducción GCRS↔ITRS basada en CIO), una capa de astrodinámica/numérica (SGP4/SDP4 analítico y un propagador numérico de Cowell con su modelo de fuerzas EGM2008/perturbaciones, diseño de maniobras y determinación de órbita), una capa de integridad/GNSS (RAIM/ARAIM, SBAS, el dominio de medida, jamming, cislunar), una capa de fusión / PNT alternativo (los estimadores GNSS/INS y los correladores de mapas de gravedad/terreno/magnéticos), una capa de espacio profundo y lunar (PNT radiométrico de Marte y la suite de PNT lunar, con su nivel de evidencia por pieza en la matriz — tiempo LTC, VLBI, OD+reloj conjunta, realización de marcos, volumen de servicio, PNT diferencial, interoperabilidad), una capa de análisis de misión (presupuestos de lanzamiento / reentrada / cobertura / apuntamiento / paso / enlace y el entorno de meteorología espacial) y la capa abierta de estudios de resiliencia y aprendizaje automático (puntuación de resiliencia RPCF, la brecha de optimismo ante degradaciones de RF y el demostrador de PNT con tecnología cuántica) cuyos artefactos reproducibles se apoyan en los núcleos validados.

Dos crates independientes, excluidos del workspace, están junto al núcleo — mcp/kshana-mcp (el servidor MCP, construido sobre el SDK rmcp de la edición 2024) y xval/anise-frames (la comprobación cruzada de marcos de ANISE/SPICE, que incorpora dependencias MPL-2.0 (Mozilla Public License 2,0)) — que se mantienen fuera del grafo de dependencias del crate publicado, de Cargo.lock, de la puerta de licencias y de la compilación de MSRV (versión mínima compatible de Rust) mediante la lista exclude de Cargo.toml de la raíz. El complemento de JetBrains (ide/jetbrains) es un proyecto independiente en Kotlin. Véase docs/ARCHITECTURE.md para el conjunto completo de diagramas.

Los diagramas renderizados (flujo del motor, mapa de módulos, distribución) están en docs/ARCHITECTURE.md.

Diagramas#

Los diagramas son fuentes Mermaid en docs/diagrams/, renderizadas a SVG y PNG en docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> en Linux, los otros dos scripts render-diagram en el resto), y un registro vincula cada PNG con el SVG exacto del que procede. Las pruebas fijan los recuentos que indican. Los gráficos de las secciones anteriores los dibujan herramientas a partir de ejecuciones del motor; estos muestran cómo encajan las piezas.

El sistema: seis puertas de entrada (línea de comandos, Python, WebAssembly y npm con Kshana Studio, servidor MCP con complementos y habilidades, complemento de JetBrains, integraciones) llaman a un único despacho sobre todos los tipos de escenario, que ejecuta un motor con núcleo compartido, paquetes de sensores y marcos, y modelos de dominio, y escribe un resultado y un gráfico reproducibles
Un despacho, un motor, una salida reproducible · SVG · fuente system-overview.mmd

Las superficies: un motor determinista sin conexión alimenta la línea de comandos, la biblioteca de Rust, Python, WebAssembly y npm, y el servidor MCP; Studio se ejecuta sobre la compilación de WebAssembly, los comandos de complemento y las habilidades sobre el servidor MCP, las integraciones y los kits de despliegue sobre la línea de comandos, y el complemento de JetBrains sobre la biblioteca
Todas las superficies, desde el mismo motor · SVG · fuente surfaces.mmd

Dentro de una ejecución: un archivo de escenario con su semilla y su cronología GNSS alimenta el motor, que en cada paso de tiempo hace evolucionar el modelo de error, ejecuta el estimador y puntúa las figuras de mérito, y escribe un resultado y un gráfico reproducibles
El bucle interno de una ejecución · SVG · fuente engine-flow.mmd

Confianza en el receptor: un registro o flujo del receptor se ingiere en observables por época y en las propias marcas del receptor, pasa por los monitores y se convierte en una puntuación de confianza orientativa con una banda y motivos, que alimenta Studio, la telemetría, un paquete de evidencias firmado, Jammertest y la puntuación de bench, y el informe de compliance
De un registro del receptor a una puntuación de confianza y lo que la usa · SVG · fuente trust-flow.mmd

El viaje de ida y vuelta de laboratorio: un escenario se exporta con sus eventos y condiciones de prueba, un operador ajeno a Kshana reproduce un archivo con un simulador de laboratorio, el registro del receptor se puntúa frente a los eventos declarados, y el viaje de ida y vuelta de evidencias vincula el escenario, las condiciones y los hashes del registro y la puntuación en un paquete firmado
Del escenario al paquete firmado; Kshana nunca produce ni reproduce una señal · SVG · fuente lab-round-trip.mmd

Kshana Studio: el navegador ejecuta localmente el motor compilado a WebAssembly sin subir nada, toma escenarios incluidos o un escenario o registro que usted abra, y muestra el resultado en la vista simple, la vista avanzada y las páginas de tareas, con las exportaciones guardadas por el usuario
Cómo se ejecuta Studio, en local · SVG · fuente studio-flow.mmd

El flujo de pruebas y publicación: las puertas locales (formato, clippy, la comprobación de ausencia de atribución, el ratchet de cobertura de documentación y scripts/gate.sh, que ejecuta la suite completa y las ejecuciones repetidas y escribe el recibo que comprueba el hook de pre-push) conducen a una pull request solo de CI y a un CI completo en verde; el propietario avanza main por fast-forward hasta el commit en verde y una etiqueta anotada se coloca sobre él tras la comprobación de sincronización de versión; el flujo de publicación verifica la suite completa en el commit etiquetado antes de publicar nada, compila los binarios con un SBOM, sumas de comprobación y procedencia de la compilación, publica en crates.io, PyPI, npm, el registro de contenedores, el registro de MCP y el JetBrains Marketplace, consulta cada registro hasta que sirve la nueva versión y lanza la compilación del sitio desde la etiqueta; una vía independiente solo del sitio lanza el flujo de páginas con la etiqueta main y se rechaza salvo que nada fuera de web/ y .github/ haya cambiado desde la última versión
Flujo de pruebas y publicación, desde las puertas locales hasta una versión verificada y la vía solo del sitio · SVG · fuente release-flow.mmd · docs/RELEASING.md

El mapa de módulos: la línea de comandos, Python, WebAssembly, el servidor MCP y el complemento de JetBrains llaman al despacho tipado sobre todos los tipos de escenario, que llega al núcleo compartido, tiempo y marcos, paquetes de sensores, astrodinámica, integridad, detección de spoofing, fusión, espacio profundo y lunar, resiliencia, y los módulos de árbitro y de benchmark, todos respaldados por la matriz de verificación
Dónde está el código · SVG · fuente module-map.mmd

Distribución: un repositorio publica el crate del núcleo, el servidor MCP, el complemento de IDE y los crates de comprobación cruzada en crates.io, PyPI, npm, GitHub Releases, el playground de Pages, el registro de contenedores, el registro de MCP y el JetBrains Marketplace, con un archivo de Zenodo
Qué se publica dónde y qué lo comprueba · SVG · fuente distribution.mmd

Asistente de IA#

kshana-mcp es un servidor MCP: su asistente ejecuta el motor real y lee su JSON, en lugar de adivinar las matemáticas. Cada una de sus 49 herramientas es una envoltura fina de una función pública de la biblioteca kshana, de modo que ninguna lógica de simulación reside en el servidor.

Instalar el servidor MCP#

De carácter consultivo, no es un equipo de navegación homologado: el operador sigue siendo responsable de la navegación. El servidor se ejecuta en su ordenador; no se envía nada a Ashforde OÜ.

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Canal Comando o botón Requiere Forma fijada
Cursor (un clic) npx (Node) · Docker Node o Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code (un clic) npx (Node) · Docker · Insiders (npx) Node o Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
npx npx -y kshana-mcp@0.40.0 Node 18+ kshana-mcp@0.40.0
uvx / pipx uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 Python 3,9+ con uv o pipx kshana-mcp==0.40.0
Docker docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.40.0 Docker ghcr.io/ashfordeou/kshana-mcp:0.40.0
Homebrew brew install ashfordeOU/tap/kshana-mcp brew fórmula para v0.40.0
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket y luego scoop install kshana-mcp Scoop (Windows) manifiesto para v0.40.0
winget winget install AshfordeOU.KshanaMcp winget (Windows) --version 0.40.0
cargo cargo install kshana-mcp --version 0.40.0 Rust 1,88+ kshana-mcp 0.40.0
Binario precompilado la página de la versión: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], comprobado con SHA256SUMS y gh attestation verify ninguna v0.40.0
Registro de MCP io.github.ashfordeOU/kshana-mcp (lo encuentran los clientes que conocen el registro) un cliente que conoce el registro 0.40.0
Remoto (HTTP en streaming) kshana-mcp --http 127.0.0.1:8080, autoalojado: véase docs/deploy/mcp-http.md su propio host v0.40.0

kshana-mcp en Glama, su puntuación de calidad de servidor MCP

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

La configuración por cliente está en docs/integrations.md. El servidor figura en el registro oficial de MCP como io.github.ashfordeOU/kshana-mcp.

Las 49 herramientas

Escenarios e informes

Herramienta Qué hace
run_scenario Ejecutar un escenario a partir de una definición TOML (Tom's Obvious, Minimal Language)
list_scenario_kinds Los 92 tipos de escenario integrados con descripciones y campos obligatorios/opcionales, para que el agente pueda construir un escenario válido
validate_scenario Comprobación previa: analizar el TOML y detectar su tipo de escenario, sin ejecutarlo
list_example_scenarios Los escenarios de referencia incluidos, como JSON
get_example_scenario El texto TOML de un escenario de referencia incluido, byte por byte el archivo de scenarios/
report_scenario Ejecutar un escenario y devolver su informe
animate_scenario Ejecutar un escenario y devolver su serie temporal como animación
sky_geometry Geometría del cielo bajo un horizonte dependiente del acimut: los satélites visibles y ocultos, el DOP, la covarianza este-norte-arriba y la elipse de error horizontal; o un preajuste de horizonte con su procedencia

Exportación e interoperabilidad

Herramienta Qué hace
list_export_formats Qué formatos de interoperabilidad se aplican a un escenario (czml, kml, geojson, stk, sigmf), el motivo cuando alguno no se aplica y la especificación que sigue cada escritor
export_interop Exportar un escenario como CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemérides STK (Systems Tool Kit) .e o SigMF (Signal Metadata
import_route Escribir una ruta GeoJSON LineString en un escenario que vuela una trayectoria de puntos de paso (terrain-nav, terrain-slam, gravity-map, combined-altpnt) y devolver el nuevo TOML
export_sp3 Exportar la constelación de un escenario orbit como efemérides precisas SP3-c (Standard Product 3, revisión c)
export_omm Exportar los elementos de un escenario orbit como catálogo OMM (Orbit Mean-elements Message) CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2
export_oem Exportar la serie de estados de un escenario orbit como efemérides CCSDS OEM (Orbit Ephemeris Message) 2,0 — la posición TEME (ecuador verdadero, equinoccio medio) y
export_table_csv Ejecutar un escenario y devolver su tabla de reproducibilidad como CSV (valores separados por comas) — la tabla estable byte a byte que la CLI (interfaz de línea de comandos) escribe como <scenario>.table.csv
export_test_bench El movimiento del vehículo y los eventos de un escenario para un simulador GNSS de laboratorio (kshana bench-export)

Confianza en receptores y buques

Herramienta Qué hace
assess_receiver_log Evaluar la confianza en un registro real de un receptor GNSS (sistema global de navegación por satélite)
assess_vessel_stream Puntuar un extracto NMEA 0183 acotado (como máximo 2 MiB y 20.000 épocas
assess_vessel_log Un registro NMEA 0183 de un buque (como máximo 4 MiB) como ejecución por lotes, con el TOML de sesión que indica los límites del buque
create_evidence_pack Un paquete de evidencias firmado para una ventana del registro de un buque (kshana receiver-trust evidence)
attach_evidence_timestamp Vincular un token de marca de tiempo RFC 3161 (base64 de los bytes de .tsr) a un paquete, en memoria (kshana evidence attach-timestamp)
verify_evidence_pack Verificar un paquete (kshana evidence verify)
generate_training_nmea NMEA 0183 sintético de puente para entrenamiento de tripulación a partir de un TOML de nmea-scenario (jamming, arrastre de posición, spoofing de tiempo, retardo de repetición) con el registro del instructor (kshana-nmea-training/1)
build_interference_map Un mapa de interferencias GNSS a partir de informes de posición ADS-B o AIS como texto CSV (como máximo 4 MiB)
route_exposure La proporción de la longitud de una ruta en celdas degradadas, no degradadas, no evaluadas y no observadas de uno o varios mapas de interferencias, opcionalmente dentro de un intervalo de fechas
trust_telemetry Un flujo de confianza (líneas JSON) o un resultado de receiver-trust representado como texto de Prometheus, líneas de syslog CEF o LEEF o una carga JSON OTLP, con los codificadores de kshana trust-telemetry
jammertest_import Lee el catálogo de pruebas y el plan de transmisión publicados de Jammertest (NPRA/jammertest-plan, MIT) como verdad programada (kshana jammertest import): las franjas de un área de prueba se convierten en sucesos de confianza del receptor con el identificador del catálogo y el año en cada etiqueta. Franjas planificadas, no horas de emisión registradas; no se lee ningún campo de contacto del plan. MODELLED. Véase docs/JAMMERTEST.md.
jammertest_score Puntúa un registro de receptor frente a ese programa (kshana jammertest score): por prueba, la latencia de detección, las alarmas perdidas y el tiempo de recuperación, y las falsas alarmas fuera de cada franja. Registros de texto como log, binarios (ubx, sbf) como log_base64. Un paquete firmado necesita una clave: línea de comandos. Solo consultivo; MODELLED.
fit_imu_log Parámetros de acelerómetro y giróscopo de los escenarios hybrid y fusion ajustados a partir de un registro de IMU estacionaria (CSV o EuRoC) mediante desviación de Allan, con una tabla [accel_classical] lista para pegar y el SHA-256 del registro (kshana imu-fit). Texto de entrada, JSON de salida; MODELLED.

IQ de GNSS (archivos del directorio de trabajo; desactivado en modo HTTP)

Herramienta Qué hace
iq_signals La configuración de la capa IQ de GNSS
iq_info Describir una grabación IQ (en fase y cuadratura) del directorio de trabajo sin procesarla
iq_scene Generar una escena IQ GNSS multisatélite en el directorio de trabajo (kshana iq scene)
iq_acquire Adquisición por FFT (transformada rápida de Fourier) de uno o más PRN (códigos de ruido pseudoaleatorio) sobre una grabación (kshana iq acquire), opcionalmente tras etapas de front end
iq_track Adquirir y luego seguir con el banco de DLL/PLL/FLL (lazos de enganche de retardo, de fase y de frecuencia) (kshana iq track), con los lazos de un `kshana.loop-desig
iq_frontend Aplicar DSP (procesamiento digital de señales) de front end del receptor y de mitigación de interferencias
iq_sweep Reproducir una grabación IQ del directorio de trabajo con varios diseños de lazos de seguimiento (kshana iq sweep)
iq_monitor Ejecutar los monitores de detección de interferencias y spoofing sobre una grabación IQ del directorio de trabajo (kshana iq monitor)
iq_labfit Ajustar el modelo de pérdida de enganche de los lazos de seguimiento a ejecuciones de laboratorio (kshana iq labfit) a partir de un escenario iq-labfit cuyos registros están en línea (text o base64
iq_test_conditions Validar un archivo kshana.test-conditions/1 dado como texto y devolver las condiciones resueltas con su hash
iq_campaign Ejecutar una campaña de reproducción en laboratorio (kshana iq campaign)
iq_campaign_status El progreso de la carpeta de salida de una campaña

Correspondencia de compliance

Herramienta Qué hace
compliance_report La correspondencia con el marco público rellenada a partir de documentos de resultados dados como texto (kshana compliance-report)
compliance_mapping Las tablas estáticas de correspondencia (o, con sources, los documentos fuente que citan, con versiones y URL) como Markdown, encabezadas por la misma declaración
list_standards_packs Los paquetes de normas (kshana standards-pack list): conjuntos de escenarios puntuados para los perfiles de prueba del marco Resilient PNT del DHS, IMO MSC.1/Circ.1575 y ICAO Doc 9849 Apéndice F
run_standards_pack Un paquete ejecutado frente a umbrales fijados antes de la ejecución: cada prueba MET, NOT MET o NEEDS INPUT; MODELLED, no califica ningún producto
lunanet_afs_check La señal directa aumentada de LunaNet comprobada frente a LNIS V5 AD1 Volumen A (LSIS-AFS V1.0): los códigos frente a las tablas impresas, o un flujo de símbolos frente al formato de trama; el LDPC y el CRC-24Q de las subtramas 2 a 4 no se verifican
create_round_trip_pack El paquete firmado de viaje de ida y vuelta de laboratorio: escenario, documento kshana.test-conditions/1, registro del receptor y puntuación vinculados por hash

Benchmark

Herramienta Qué hace
score_benchmark Una entrega de kshana-bench puntuada frente a un archivo de verdad de referencia, ambos en texto JSON (kshana bench score, bench/SPEC.md): el archivo de resultados con la versión de la especificación, la partición, los hashes de entrada y las métricas de la tarea. MODELLED; describe un registro o un corpus, nunca un producto.
render_leaderboard Archivos de resultados de kshana-bench convertidos en la página estática de clasificación (texto HTML), cada uno validado antes.

Ediciones#

Todo el motor es gratuito. Kshana Pro y los estudios a medida son para programas que necesitan más, y toda vía de pago empieza con un mensaje: aquí no hay precios.

Gratis Kshana Pro Estudio a medida
Qué es todo el motor abierto, los 92 tipos de escenario, sin restricción de funciones una capa propietaria sobre el mismo motor, bajo contrato un estudio MODELLED de resiliencia PNT de su sistema, hecho por nosotros
Licencia AGPL-3.0 (GNU Affero General Public License, versión 3), o una licencia comercial propietario contrato
Cómo empezar instalar o abrir kshana.dev solicitar una evaluación de Pro solicitar un estudio

Qué es Pro, en palabras de docs/PRO.md:

Un superconjunto estricto de Kshana abierto. Pro depende del motor abierto como biblioteca y nunca lo bifurca. Todo tipo de escenario abierto se ejecuta en Pro sin cambios, y un escenario abierto se ejecuta en Pro sin ninguna licencia.

Ninguna física nueva. Pro no añade ningún modelo físico ni cambia ninguno. Cada cifra de Pro procede de ejecuciones del motor abierto, de modo que una cifra de Pro es tan fiable como el tipo de escenario abierto del que procede, y nunca más.

Pro responde a las siguientes preguntas de un programa: qué diseño llevar al vuelo (un optimizador de diseño y su frente de Pareto), con qué seguridad se conoce la respuesta (incertidumbre y sensibilidad) y si la misión satisface sus requisitos (un dosier de misión, trazabilidad de requisitos, estudios de compromisos, una comprobación de regresión de escenarios, gemelos digitales de relojes, un dosier de estudio y un servicio en las instalaciones del cliente). También vigila una campaña de cifras y hace fallar un pipeline cuando una empeora, prueba planes de señal candidatos frente a las señales abiertas de navegación por satélite en ambos sentidos (coexistencia de espectro) y pone en cola estudios en un servicio de trabajos en las instalaciones con un registro de entrega encadenado por hash. Cada uno se describe, con lo que produce y lo que no hace, en docs/PRO.md. Nada de lo que produce Pro es una certificación, y un estudio a medida tampoco lo es.

Qué lee Kshana Pro del motor abierto, y el soporte de Ashforde® OÜ

Sobre qué se construye Kshana Pro. Cada parte de Pro funciona a partir del motor abierto y lo deja sin cambios:

  • El optimizador de diseño, el estudio de incertidumbre y el dosier de misión ejecutan escenarios del motor abierto a través de la interfaz pública del motor y calculan cada cifra a partir de los resultados de las ejecuciones. Cada salida conserva el nivel VALIDATED, MODELLED o PARTNER que el motor abierto dio a cada cifra, nunca uno superior.
  • Los gemelos digitales de relojes usan el modelo de reloj del motor abierto y su estimador de desviación de Allan: un gemelo se calibra con el presupuesto de Allan publicado del dispositivo y después se comprueba estimando la desviación de Allan del gemelo con el estimador abierto.
  • Los estudios de compromisos ejecutan cada opción de arquitectura como un escenario del motor abierto, sin cambios, y clasifican las opciones según una figura de mérito leída del resultado de cada ejecución.
  • La vigilancia de campañas lee sus cifras de los resultados de ejecuciones del motor abierto de los escenarios de un paquete y las compara con la ejecución anterior que pasó.
  • La coexistencia de espectro lee cada cifra física de ejecuciones del motor abierto de los tipos de escenario leo-signal y constellation-design, y añade solo la suma sobre los satélites a la vista y la clasificación de los planes.
  • El servicio de trabajos en las instalaciones ejecuta escenarios abiertos y de Pro con el mismo motor y almacena cada resultado tal como lo devolvió la ejecución.
  • Los paquetes de evidencias registran, para cada ejecución, el hash del escenario que el motor abierto estampa en su resultado, de modo que una cifra de un paquete pueda reproducirse volviendo a ejecutar su escenario.
  • Herramientas de ingeniería de sistemas y de programa. Las herramientas de ingeniería de sistemas basada en modelos (MBSE) y de programa de Kshana Pro comprueban los requisitos de un programa frente a ejecuciones del motor abierto: importan requisitos como valores separados por comas (CSV), o como un subconjunto documentado del Requirements Interchange Format (ReqIF) o del texto de Systems Modeling Language versión 2 (SysML v2), evalúan cada criterio de aceptación, con su unidad, frente a los valores que escribió una ejecución, y producen una matriz de referencia cruzada de verificación (VCRM), un modelo SysML v2, un informe de impacto de cambios y un paquete de evidencias sin conexión. No vuelven a ejecutar ni recalculan nada, y leen solo lo que publica el motor abierto: el result.json de cada ejecución (los campos que nombra un criterio, sus unidades, el sello de reproducibilidad con hash del escenario, semilla, versión del motor y versión del esquema, y la etiqueta y los niveles de las cifras de la ejecución), su report.json (tipo de escenario, registro de reproducibilidad y etiquetas de capacidad), el archivo de escenario (su hash, tipo de escenario, semilla y parámetros), el esquema de unidades de campo (la unidad, la procedencia y el nivel de evidencia de cada campo) y la matriz de verificación (la etiqueta VALIDATED, MODELLED o PARTNER de cada capacidad).

Soporte y servicios profesionales#

Kshana es gratuito y de código abierto bajo la AGPL-3.0 y está desarrollado y mantenido profesionalmente por Ashforde® OÜ (Estonia). El motor abierto está completo y es utilizable por sí solo. Para las organizaciones que necesitan más, Ashforde® OÜ ofrece:

  • Soporte comercial e integración — incorporar Kshana a su cadena de herramientas, escenarios a medida y correcciones prioritarias.
  • Modelos de sensores a medida — calibrados para su hardware, incluidos modelos de resiliencia sujetos a control de exportación mantenidos en una capa privada.
  • Kshana Pro — herramientas propietarias de ingeniería de sistemas basada en modelos (MBSE) y de programa que comprueban los requisitos de un programa frente a ejecuciones del motor abierto y producen una matriz de referencia cruzada de verificación (VCRM), un modelo de Systems Modeling Language versión 2 (SysML v2), un informe de impacto de cambios y un paquete de evidencias sin conexión. No vuelven a ejecutar nada y leen solo las salidas publicadas del motor: el result.json y el report.json de cada ejecución, el archivo de escenario, el esquema de unidades de campo y las etiquetas de la matriz de verificación (la lista completa está en Ediciones).
  • Herramientas de diseño, incertidumbre y misión de Kshana Pro — el frente de Pareto de un espacio de diseño, incertidumbre y sensibilidad sobre miles de ejecuciones, y un dosier de misión con un solo comando, con una matriz de verificación y un PDF; véase docs/PRO.md.
  • Vigilancia de campañas, coexistencia de espectro y servicio de trabajos de Kshana Pro — un pipeline que falla cuando empeora una cifra vigilada, planes de señal probados frente a las señales abiertas de navegación por satélite en ambos sentidos, y una cola de trabajos en las instalaciones con un registro de entrega encadenado por hash; véase docs/PRO.md.
  • Formación y consultoría sobre análisis del desempeño de PNT cuántico/clásico.

Este es el modelo open-core: el motor tiene, y seguirá teniendo, una licencia abierta; el negocio que lo sostiene es la experiencia, el soporte y las extensiones propietarias, no las cuotas de licencia. Contacto: contact@ashforde.org · ashforde.org.

Investigación#

Los estudios construidos sobre el motor abierto se publican en arXiv. Cada uno nombra el comando del motor que hay detrás, de modo que sus cifras pueden regenerarse a partir de un escenario o ejemplo de estudio confirmado en el repositorio.

Investigación construida sobre el motor abierto: seis artículos en arXiv, cada tarjeta con el nombre del artículo, su fecha y categoría, y el comando del motor que regenera sus cifras. Los mismos seis artículos, con enlaces y comandos, están en la tabla de abajo.Investigación construida sobre el motor abierto: seis artículos en arXiv, cada tarjeta con el nombre del artículo, su fecha y categoría, y el comando del motor que regenera sus cifras. Los mismos seis artículos, con enlaces y comandos, están en la tabla de abajo.
Artículo Qué muestra Comando del motor
Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics
arXiv:2606,22054 · doi:10.48550/arXiv.2606.22054
La caída de la puntuación de un detector de interferencias GNSS cuando cambian las condiciones puede predecirse solo a partir de estadísticos dentro de la distribución, en un banco de pruebas sintético abierto y después en grabaciones de campo abiertas. cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json
A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing
arXiv:2606,24210 · doi:10.48550/arXiv.2606.24210
Un receptor de temporización GNSS bajo spoofing no tiene ninguna cota incondicional finita del error de tiempo no detectado, por lo que el artículo da una cota condicional, calibrada sobre un spoofing real emitido por aire y registrado de la campaña pública JammerTest 2024. cargo run --release --example tpl_jammertest
How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting
arXiv:2607,05415 · doi:10.48550/arXiv.2607.05415
Una única puntuación compuesta de resiliencia es una base estable para una decisión solo cuando un diseño domina; cuando los diseños compiten, basta con reponderar para cambiar al ganador. cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json
Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination
arXiv:2607,02566 · doi:10.48550/arXiv.2607.02566
La medición de distancia dentro de una constelación lunar deja inobservable la posición absoluta de una estación en superficie; un retardo de interferometría de base muy larga (VLBI) desde la Tierra la restablece cuando la constelación es escasa y la afina cuando es rica. el tipo de escenario lunar-joint-od-clock: kshana example lunar-joint-od-clock > s.toml && kshana s.toml
The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis
arXiv:2607,06212 · doi:10.48550/arXiv.2607.06212
Las constelaciones previstas de cuatro a seis satélites dan una geometría deficiente en el polo sur lunar, y unas pocas balizas de medición de distancia en superficie la corrigen con mucho menos coste que más satélites. el tipo de escenario lunar-beacon: kshana example lunar-beacon > s.toml && kshana s.toml
Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever
arXiv:2610,23871 · doi:10.48550/arXiv.2610.23871
La dilución de la precisión no está definida para el seguimiento cislunar solo por distancia, porque la velocidad es inobservable en una instantánea, así que el artículo usa el gramiano de observabilidad sobre cuatro órbitas retrógradas distantes planas: solo con distancia el rango es 2 de 4 en una instantánea y se necesita un arco de unas 2,09 h para que sea totalmente observable, con un condicionamiento que mejora a medida que el arco se alarga; la velocidad de alcance (Doppler) da rango 4 al instante; y estimar conjuntamente una estación con los estados de los satélites y los relojes sigue siendo deficiente de rango en uno salvo que se añada un observable interferométrico externo. Los requisitos corresponden a presupuestos de longitud de arco, condicionamiento y tipo de medición, no de DOP. el tipo de escenario cislunar-observability: kshana scenarios/cislunar-observability.toml (su hermano cislunar-arc-recovery prueba el umbral con un estimador independiente por diferencias finitas)

Los tres ejemplos de estudio escriben artefactos deterministas byte a byte (semillas fijas) que registran la versión del motor, las semillas y un hash de configuración. Los tres artículos lunares y cislunares se construyen sobre la suite lunar (el nivel de evidencia de cada pieza figura en la matriz de verificación); sus afirmaciones de geometría y de dilución de la precisión también se contrastan con referencias independientes distintas en tests/validate_p*.rs. Más en Artefactos de estudio reproducibles en Referencia.

Citar#

Si usa Kshana en un trabajo académico o técnico, cite la versión que utilizó, con el escenario y la semilla. CITATION.cff contiene los metadatos legibles por máquina, y GitHub muestra a partir de ellos un botón "Cite this repository". Cada versión se archiva en Zenodo; el DOI (Digital Object Identifier) de concepto 10.5281/zenodo.20528627 siempre resuelve a la última versión.

Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627

Los artículos anteriores:

Baweja, C. (2026). Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics. arXiv:2606,22054. https://doi.org/10.48550/arXiv.2606.22054

Baweja, C. (2026). A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing. arXiv:2606,24210. https://doi.org/10.48550/arXiv.2606.24210

Baweja, C. (2026). How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting. arXiv:2607,05415. https://doi.org/10.48550/arXiv.2607.05415

Baweja, C. (2026). Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination. arXiv:2607,02566. https://doi.org/10.48550/arXiv.2607.02566

Baweja, C. (2026). The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis. arXiv:2607,06212. https://doi.org/10.48550/arXiv.2607.06212

Baweja, C. (2026). Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever. arXiv:2610,23871. https://doi.org/10.48550/arXiv.2610.23871

Licencia#

Kshana tiene doble licencia: la AGPL-3.0-only de GNU (LICENSE), o una licencia comercial de Ashforde® OÜ para integraciones cerradas a las que la AGPL no se adapta. LICENSING.md explica cuál se aplica. Las contribuciones se licencian de entrada bajo la AGPL y además conceden a Ashforde® OÜ el derecho a incluirlas en la edición comercial; firme cada commit con git commit -s (véase CONTRIBUTING.md). "Kshana" y sus marcas son marcas registradas de Ashforde® OÜ: la licencia cubre el código, no el nombre, así que cambie el nombre de las bifurcaciones.

Referencia#

El material extenso, plegado. Todos los documentos figuran en Documentación.

Instalar y compilar desde el código fuente

Instalar y compilar#

Requiere una cadena de herramientas de Rust (≥ 1,88, la rust-version de Cargo.toml; desarrollado con 1,93).

git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test          # all tests pass
Uso: la línea de comandos al completo

Uso#

Ejecute cualquier escenario; la CLI despacha según el campo kind del escenario y escribe <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html y <scenario>.report.json junto a él — además de <scenario>.table.csv para los tipos de escenario que publican una tabla. El informe (una página de HyperText Markup Language (HTML) y un documento JSON con el mismo contenido) incluye un resumen ejecutivo, cada entrada con su unidad, los resultados y los gráficos, las tablas de barrido, Monte Carlo o encadenamiento de una campaña, una cronología de eventos, la etiqueta VALIDATED / MODELLED / PARTNER y la fuente de cada capacidad que usó la ejecución, lo que no está modelado y un registro de reproducibilidad (versión del motor, resúmenes Secure Hash Algorithm de 256 bits (SHA-256), semilla, plataforma y el comando exacto). Se imprime como un archivo PDF (Portable Document Format) limpio desde el navegador en papel A4 o Letter; el motor no escribe ningún PDF por sí mismo. Véase docs/REPORTS.md.

cargo run -- scenarios/clock-holdover.toml
cargo run -- scenarios/imu-deadreckoning.toml
cargo run -- scenarios/timetransfer.toml
cargo run -- scenarios/hybrid-pnt.toml
cargo run -- scenarios/orbit-gnss-challenged.toml
cargo run -- scenarios/orbit-sgp4-gps.toml
cargo run -- scenarios/orbit-rinex.toml
cargo run -- scenarios/integrity-raim.toml

# Export a propagated constellation to an SP3-c precise-ephemeris file:
cargo run -- scenarios/orbit-sgp4-gps.toml --export-sp3 gps.sp3

# Export the constellation's mean elements to a CCSDS OMM catalogue (one OMM
# message per TLE-defined satellite, with its real NORAD id / COSPAR designator):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-omm gps.omm

# Export the velocity-carrying state to a CCSDS OEM 2.0 ephemeris (GMAT/Orekit/STK):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-oem gps.oem

# Export the geometry for a globe, a map or a mission-analysis tool: CZML, KML,
# GeoJSON, STK .e, or SigMF for the spectrum kind (every format that applies):
cargo run -- scenarios/jamming-demo.toml --export all

--export <czml|kml|geojson|stk|sigmf|all|list> escribe junto al escenario grabaciones CZML (el Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), efemérides .e de Ansys STK (Systems Tool Kit) y SigMF (Signal Metadata Format), y --import-route <route.geojson> introduce una línea GeoJSON en los tipos de escenario que vuelan una trayectoria. Cada formato se valida frente a su especificación publicada, y un escenario al que no se aplica un formato explica el motivo: véase docs/INTEROP.md.

Otros modos de la CLI — comprobar un escenario con lint, introducir datos reales de orientación de la Tierra o ejecutar una suite completa:

# Lint a scenario without running it (checks the kind + required fields):
cargo run -- --validate scenarios/integrity-raim.toml

# Feed a real IERS Earth-orientation file (finals2000A) for frame precision:
cargo run -- scenarios/orbit-sgp4-gps.toml --eop tests/fixtures/agency/eop/finals2000A_2022001.txt

# Run a SUITE of scenarios into one aggregated, stamped study artifact
# (writes <suite>.study.json + <suite>.study.html next to the manifest):
cargo run -- --study scenarios/quantum-pnt-demonstrator.suite.toml

# Animate a run's time series: an animated SVG, a self-contained HTML player, and a
# numbered SVG frame sequence with manifest.json (see docs/ANIMATION.md):
cargo run -- scenarios/campaign-jam-spoof-holdover-integrity.toml --animate all

Exportación de animaciones. --animate svg|html|frames|all escribe <scenario>.animation.svg (fotogramas clave de Cascading Style Sheets (CSS), sin script), <scenario>.animation.html (reproducir, pausar, desplazar, velocidad y paneles sincronizados, sin ningún recurso externo) y <scenario>.frames/ (frame_0000.svg, … más manifest.json con los fotogramas por segundo y la duración). Una campaña reproduce sus fases y alarmas, una ejecución de espectro su cascada; el tema sigue prefers-color-scheme y prefers-reduced-motion muestra la imagen final. Representa las propias muestras de la ejecución, idénticas byte a byte al repetirla, y no añade evidencias. Véase docs/ANIMATION.md.

Un manifiesto de suite es un pequeño archivo TOML (Tom's Obvious, Minimal Language) — un title y una matriz scenarios = [ … ] de rutas de escenarios — que el motor ejecuta por turnos, integrando cada resultado (con sus etiquetas MODELLED / VALIDATED) en un artefacto de estudio autodescriptivo. Véase scenarios/quantum-pnt-demonstrator.suite.toml.

Papel en la interoperabilidad. Kshana es la capa de simulación de desempeño que se sitúa junto a la cadena de posprocesamiento, no un sustituto de ella: introduzca su salida RINEX en RTKLIB o gLAB para obtener una solución de posición y use su salida SP3 como producto de órbita precisa para herramientas como Ginan — Kshana responde a qué resiliencia aporta una arquitectura PNT dada antes de tener señales reales, en formatos que esas herramientas ya ingieren (--export-sp3, o export_sp3 = true en un escenario orbit, escribe <scenario>.sp3). La misma órbita puede publicarse como elementos medios CCSDS OMM de la vía de normalización (--export-omm, o export_omm = true, escribe <scenario>.omm) — un mensaje OMM 502,0 KVN (notación palabra clave = valor) por satélite definido por TLE, con el número de catálogo NORAD (North American Aerospace Defense Command), el designador internacional COSPAR (Committee on Space Research) y la época reales de cada objeto, para cualquier consumidor que entienda OMM en lugar de un conjunto de elementos de dos líneas a medida.

Salida de ejemplo (holdover del reloj — observe cómo se informan las figuras de mérito de integridad y de seguridad):

scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote scenarios/clock-holdover.result.json, scenarios/clock-holdover.chart.svg, scenarios/clock-holdover.report.html, and scenarios/clock-holdover.report.json

El error de temporización del percentil 95 (p95) del reloj óptico es de 1.20e-4 ns: el resumen imprime los valores pequeños con cifras significativas en lugar de redondearlos a 0.0. security muestra n/a (no attack) porque este escenario no configura ningún ataque, de modo que no hay nada que detectar. El resultado JSON sigue incluyendo la cota analítica de detectabilidad de spoofing de cada reloj en fom.security (0,997 para el reloj óptico, 0,000 para el reloj atómico de escala de chip, cuyo propio ruido durante la ventana de monitorización supera la especificación de 20 ns), y su bloque figure_tiers marca esa cifra como applicable: false. El tipo de escenario spoof puntúa la detección frente a un ataque inyectado. figure_tiers también da a cada cifra informada su nivel de verificación — VALIDATED (contrastada con una referencia independiente externa) o MODELLED — y la fila de la matriz de verificación de la que se lee el nivel. El escenario de órbita informa además un bloque de geometría — fracción de muestras con solución de posición y mejor/mediana dilución de la precisión de posición (PDOP) y exactitud de posición — junto al resultado del reloj.

Lea estas dos cifras con atención. security es una cota analítica de detectabilidad de spoofing derivada de la estabilidad de cada reloj — solo tiene sentido frente a un escenario de spoofing configurado y no es un detector RAIM multisatélite. integrity aquí es la autoconsistencia del filtro (fracción de muestras de la interrupción dentro de su propia cota de k sigmas), no una cifra de integridad HPL/VPL de aviación. Véase docs/INTEGRITY.md.

Para una integridad autónoma del receptor genuina, el tipo de escenario integrity (scenarios/integrity-raim.toml) ejecuta RAIM real instantáneo y de separación de soluciones (estilo ARAIM) sobre la geometría de la constelación propagada: calcula los niveles de protección (HPL/VPL) horizontal/vertical por época e informa de la fracción de épocas que satisfacen los límites de alerta configurados, con un diagrama de integridad de Stanford para la clasificación de error frente a PL (nivel de protección).

Artefactos de estudio reproducibles

Cuatro estudios abiertos regeneran cada uno un artefacto determinista byte a byte (semilla fija) con un solo comando — las cifras que hay detrás del cruce cuántico frente a clásico, la brecha de optimismo ante degradaciones de RF, la puntuación de resiliencia PNT y los estudios del nivel de protección de temporización:

# Quantum-vs-classical resilience crossover map (writes paper/crossover/*.json):
cargo run --release --bin crossover_study -- paper/crossover

# RF-impairment optimism-gap study (13-detector panel, scaling laws, LOO predictor):
cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json

# Framework-aligned PNT-resilience scoring + decision-instability study:
cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json

# Conditional Timing Protection Level, calibrated on a real recorded spoof:
cargo run --release --example tpl_jammertest

Cada artefacto registra la versión del motor, las semillas y un hash de configuración, y lleva una etiqueta honesta MODELLED/VALIDATED. Las sondas de datos reales (*_probe) ejecutan el mismo pipeline sobre grabaciones que usted suministra localmente; en el repositorio no se incluye ningún conjunto de datos. El estudio de la brecha de optimismo ante degradaciones de RF se describe en el preprint arXiv:2606,22054, y el nivel de protección de temporización condicional (tpl_jammertest arriba) en el preprint arXiv:2606,24210 (véase Citar).

Los estudios publicados de PNT lunar (arXiv:2607,06212 DOP con balizas en superficie, arXiv:2607,02566 observabilidad con VLBI y arXiv:2610,23871 observabilidad cislunar por longitud de arco) tienen sus afirmaciones de geometría, dilución de la precisión, predicción de marcos en tiempo real / parámetros de orientación de la Tierra (EOP), órbita retrógrada distante y medición de distancia por RF contrastadas de forma independiente en tests/validate_p*.rs con referencias independientes distintas (scipy.special.j1, una resolución independiente de DOP con (HᵀH)⁻¹ de NumPy, un nuevo análisis con NumPy de las mismas filas finals2000A del IERS y la Three-Body Periodic Orbit Database de NASA/JPL). Son comprobaciones de regresión adicionales sobre la suite lunar modelada; no cambian el recuento de la matriz comprobada por máquina.

Formato de escenario

Formato de escenario#

Los escenarios son TOML declarativo. Un campo kind de nivel superior selecciona el paquete — cincuenta en total (clock es el predeterminado si se omite): inertial, timetransfer, hybrid, hybrid-ukf, fusion, gnss-ins, orbit, ephemeris, gnss-sim, integrity, lunar-integrity, lunar-time-offset, spoof, spoof-detect, jamming, sweep, sweep-nd, gravity-map, terrain-nav, terrain-slam, combined-altpnt, pvt, mars-pnt, impairment-eval (banco de pruebas de evaluación de detección de degradaciones de RF con aprendizaje automático — corpus sintético etiquetado + arnés de ROC/AUC independiente del detector + brecha de optimismo dentro/fuera de la distribución), quantum-trade (compromiso PNT cuántico frente a clásico con ingesta de ADEV medido + envolvente de resiliencia sin GNSS; MODELLED), space-weather (índices solares/geomagnéticos + temperatura exosférica de Jacchia-71 + densidad termosférica impulsada por la actividad sobre la atmósfera estática; MODELLED), oem-interop (puente de importación/viaje de ida y vuelta de CCSDS OEM para efemérides de GMAT/Orekit/STK; MODELLED), el trío de análisis de misión launch-window (acimut de lanzamiento de dos cuerpos / cambio de plano / oportunidades), reentry (corredor de reentrada balística de Allen-Eggers), eo-coverage (geometría de franja / GSD / acceso / revisita de observación de la Tierra), space-packet (encapsulado de paquetes espaciales TM/TC — telemetría/telecomando — CCSDS 133,0 — disposición exacta de bits, verificada en viaje de ida y vuelta) y attitude-budget (par de gradiente de gravedad en 3-DOF + presupuesto de error de apuntamiento RSS), passes (predicción de pasos de salida/puesta sobre estación terrestre — AOS/TCA/LOS, elevación máxima, acceso) y link-budget (ecuación de enlace unidireccional CCSDS/DSN — FSPL / Eb·N₀ / margen / cierre); telecom-timing (error de tiempo en holdover, MTIE y TDEV contrastados con las máscaras de ITU-T); spectrum (toda la banda L del GNSS como una sola densidad espectral de potencia: una cascada de frecuencia por tiempo bajo una cronología guionizada de interferidor de onda continua, banda estrecha, chirp o ruido adaptado, relación interferencia-señal por banda y densidad de ruido a portadora efectiva a partir del coeficiente de separación espectral, y entrada y salida de grabaciones Signal Metadata Format (SigMF) con estimaciones espectrales de Welch; los espectros de señal VALIDATED frente a valores de manual, el escenario de interferidor MODELLED; véase docs/SPECTRUM.md; el mismo tipo de escenario dibuja paneles de banda UHF, S y C con señales diseñadas de órbita terrestre baja); leo-signal (diseños de señales de posicionamiento, navegación y temporización de órbita terrestre baja para cualquier sistema: espectros de banda limitada, fluctuación del seguimiento de código y exactitud de medición de distancia, búsqueda y tiempo de adquisición, separación espectral frente a GPS y Galileo, tolerancia al interferidor y un compromiso de banda UHF a C, a partir de preajustes públicos como Xona Pulsar, Iridium, Starlink y CentiSpace o de diseños en línea; las formas cerradas y el Doppler LEO VALIDATED, los diseños MODELLED; véase docs/LEO-SIGNAL.md); solar-system (el Sol, los planetas, Plutón, la Luna y siete lunas principales en una época — posiciones, constantes, tiempos de luz y trayectorias orbitales; posiciones de los planetas VALIDATED frente a JPL Horizons) y body-pnt (posicionamiento alrededor de cualquiera de esos cuerpos con una constelación de navegación local y un enlace de espacio profundo desde la Tierra; MODELLED); campaign (tipos de escenario existentes compuestos en una cronología de misión encadenada con el estado traspasado entre fases, un barrido de parámetros, un conjunto de Monte Carlo con semilla o varios escenarios bajo una condición compartida; MODELLED, véase docs/CAMPAIGNS.md); constellation-design (patrones Walker delta y estrella, listas de elementos y diseños multicapa con preajustes de GPS, Galileo, BeiDou y GLONASS, y cobertura y dilución de la precisión sobre una malla de latitud/longitud; el generador y el DOP global de GPS VALIDATED frente a los documentos de servicio publicados, véase docs/CONSTELLATION-DESIGN.md); leo-pass (un paso de satélite de posicionamiento, navegación y temporización (PNT) de órbita terrestre baja (LEO) y su presupuesto de enlace banda por banda, para cualquier constelación y cualquier diseño de señal: ángulos de visión, Doppler y tasa de Doppler, pérdidas de ITU-R por lluvia, gases, centelleo y penetración en edificios, densidad de ruido a portadora frente a los satélites GNSS MEO a la vista, la ionosfera de primer orden y los pares libres de ionosfera, y un presupuesto de solución de posición de baja energía, sondeo de la ionosfera con cada par de bandas, y monitores de spoofing por consistencia de Doppler y geometría del paso y por consistencia entre bandas; los términos de ITU-R y la envolvente Doppler de usuario estático VALIDATED, el paso MODELLED, véase docs/LEO-PASS.md); leo-navmsg (el mensaje de efemérides y reloj de difusión de un satélite PNT de órbita terrestre baja (LEO), para cualquier órbita y portadora: un ajustador desde una órbita de verdad integrada hasta el conjunto kepleriano de Galileo, ese conjunto con polinomios de corrección along-track, cross-track y radial, el modelo de 22 parámetros de Liu et al. 2025 o el polinomio ECEF de reloj cero ATOMIC; error de alcance de la señal en el espacio (SISRE) frente al intervalo de ajuste y al período de actualización, una comprobación de continuidad de actualización a mitad de paso, la propia trama binaria documentada de Kshana con una comprobación de redundancia cíclica CRC-24Q y un presupuesto de cuantización, y un bloque de estilo RINEX-4 etiquetado como extensión de Kshana; los pesos de SISRE, el algoritmo de usuario de Galileo y el CRC-24Q VALIDATED, los ajustes MODELLED; preajustes opcionales para Xona Pulsar, Iridium, Starlink, CentiSpace, un sistema representativo en banda C, ATOMIC y Celeste IOD; véase docs/LEO-NAVMSG.md); el trío de PNT fusionado MEO + LEO leo-pvt (posicionamiento Doppler a partir de la velocidad de alcance de órbita terrestre baja (LEO), soluciones conjuntas de pseudodistancia GNSS + LEO con sesgos entre sistemas y el DOP en función del número de satélites LEO, cobertura polar y ártica y transferencia de tiempo LEO a UTC — sobre cualquier constelación, con preajustes opcionales como las señales de oportunidad de Xona Pulsar, Iridium y Starlink; la envolvente Doppler LEO VALIDATED frente a las cifras publicadas de Iridium y Xona), leo-ppp (convergencia del posicionamiento preciso de punto solo con GNSS y con aumentación LEO, comparada con Li et al. 2019) y ntn-positioning (posicionamiento 5G de red no terrestre a partir de la cota de Cramér-Rao del ancho de banda de la señal), MODELLED salvo esa envolvente, véase docs/LEO-PNT-FUSION.md; leo-pnt-chain (un sistema LEO-PNT de extremo a extremo: un diseño leo-signal transportado por una banda leo-pass, el C/N0 del paso y el error de alcance de la señal en el espacio del mensaje de navegación entregados a una solución fusionada leo-pvt y a la convergencia de leo-ppp, con cada traspaso enumerado; MODELLED, véase docs/LEO-PNT.md, que es también la visión general de todos los tipos de escenario y escenarios LEO-PNT, incluidas las campañas de resiliencia, un escenario por área de enfoque experimental y uno por sector de usuario final); la suite de PNT lunar lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; el demostrador de PNT con tecnología cuántica quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; y los tipos de escenario de investigación de seguridad de señal, cislunar y resiliencia por capas lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience — el trío de análisis de misión y estos tipos posteriores, todos MODELLED (cada uno con un núcleo de forma cerrada validado; véase la matriz). Campos comunes: seed, una malla [time], una cronología de disponibilidad [gnss] (el factor de las interrupciones) y bloques por sensor con cadenas provenance que citan la fuente de cada cifra. Ejemplo (reloj):

seed = 42
threshold_ns = 20.0
[time]
step_s = 10.0
duration_s = 7200.0
[gnss]
windows = [
  { t0 = 0.0,   t1 = 600.0,  state = "nominal" },  # 10 min GNSS sync
  { t0 = 600.0, t1 = 7200.0, state = "denied"  },  # ~1.8 h outage
]
[clock_quantum]
id = "optical-sr-lattice"
provenance = "Strontium optical lattice clock, space-oriented goal sigma_y(1s)=1e-15 (arXiv:1503.08457)"
y0 = 5.0e-17
q_wf = 1.0e-30   # white FM:  q_wf = sigma_y(1s)^2
q_rw = 0.0       # random-walk FM
drift = 0.0      # linear aging (per second)
[clock_classical]
id = "csac-sa45s"
provenance = "Microchip SA65 / SA.45s CSAC datasheet sigma_y(1s)=3e-10"
y0 = 5.0e-10
q_wf = 9.0e-20
q_rw = 0.0
drift = 0.0

Campos opcionales (desactivados si faltan): un reloj puede añadir flicker_floor (suelo de Allan de FM — modulación de frecuencia — 1/f); un sensor inercial puede añadir gyro_bias y q_arw (sesgo del giróscopo y paseo aleatorio angular), y bias_instability y q_aa (el suelo de inestabilidad del sesgo de Allan y el paseo aleatorio de aceleración) — en conjunto un presupuesto de error de acelerómetro de un solo eje (1-DOF) (VRW/ARW — paseo aleatorio de velocidad/angular — e inestabilidad del sesgo). Este es el presupuesto de error que ejecuta el paquete de escenarios inertial incluido. Por separado, la biblioteca incorpora ahora un navegador strapdown de 3 ejes verificado (src/inertial/{attitude,mechanization,imu_errors}.rs): actitud por cuaterniones con compensación de coning/sculling, una mecanización NED completa (términos de velocidad de rotación terrestre y de transporte, gravedad de Somigliana de WGS-84) y un modelo determinista de error de IMU en el que se modelan el factor de escala, la desalineación, la sensibilidad a g, la cuantización y la rampa de velocidad (IEEE Std 952-1997, el estándar del IEEE de especificación y procedimiento de prueba de giróscopos, §A.2; Groves 2013 §4,3). Esa vía de 3 ejes está ahora conectada a un paquete GNSS/INS ejecutable de acoplamiento débil (kind = "gnss-ins"): un EKF de estado de error de 15 estados disciplina la solución strapdown frente a posiciones ruidosas mientras el GNSS está disponible y después sigue por inercia durante la interrupción, e informa del error horizontal fusionado frente a la deriva INS libre en lazo abierto. También hay disponible una actualización de pseudodistancia de acoplamiento fuerte (forma la innovación en el dominio de la distancia, por lo que sigue corrigiendo con menos de cuatro satélites). Un escenario de holdover del reloj puede añadir runs (> 1) para ejecutar un conjunto de Monte Carlo — cada figura de mérito se informa entonces como una media con una dispersión de los percentiles 5 a 95 y el gráfico sombrea la banda de confianza del error (véase scenarios/clock-ensemble.toml).

Un escenario fusion (mismos bloques que hybrid) ejecuta dos estimadores de Kalman independientes — uno para el estado del reloj y otro para el estado de posición — disciplinados por el GNSS y asistidos por transferencia óptica de tiempo, e informa de una FoM combinada de holdover. Los dos bloques no comparten covarianza cruzada: es un par apilado de presupuestos de error, no un verdadero filtro conjunto acoplado de reloj+posición (la covarianza entre bloques es un elemento de la hoja de ruta). Véase scenarios/fusion-pnt.toml.

Un escenario spoof inyecta un spoofing de tiempo — uno de los cuatro tipos de [attack.shape] (linear_ramp, step_jump, meaconing, replay; un rate_ns_per_s a secas se sigue aceptando como rampa lineal) — y ejecuta el detector de spoofing de cada reloj. El detector es una prueba de energía χ²₁ / de Neyman–Pearson bilateral sobre el estadístico de monitorización asistido por reloj: el umbral se fija a partir de un presupuesto objetivo de falsa alarma target_pfa, y la probabilidad de detección fallida P_md se informa tanto en forma cerrada como por Monte Carlo (mc_runs ensayos por hipótesis — ambas coinciden con una diferencia de unos pocos ×1/√N). La figura de mérito de seguridad es 1 − P_md en la magnitud operativamente dañina (la de la especificación), de modo que un reloj silencioso que detecta un spoofing del tamaño de la especificación puntúa ≈ 1 y uno ruidoso que a menudo lo pasa por alto puntúa menos (véanse scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).

Un escenario gnss-sim es una simulación en el dominio de la medida: para cada satélite visible sintetiza la pseudodistancia ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath y el Doppler en L1, con la ionosfera monofrecuencia de Klobuchar ([iono], IS-GPS-200 §20.3.3.5.2.5) y la troposfera cenital de Saastamoinen proyectada con la función de mapeo de Niell (1996) ([tropo]). Los residuos alimentan el RAIM instantáneo para obtener HPL/VPL por época, y la pseudodistancia, el Doppler, el C/N₀ y las correcciones iono/tropo de cada satélite se emiten en la matriz gnss_measurements del JSON. Es un simulador directo (genera mediciones a partir de una verdad conocida), no un receptor/solucionador — una ejecución sin ruido reproduce la geometría más las correcciones con precisión submilimétrica (véase scenarios/gnss-sim-raim.toml).

Un escenario jamming modela la interferencia de RF como un presupuesto de enlace: un [jammer] (posición ECEF, power_dbw de transmisión, tipo) eleva la relación interferencia-señal en un [receiver] que observa una [constellation] Walker. A partir de la geometría (pérdida en el espacio libre y ganancia de la antena receptora por dirección) calcula el J/S de cada satélite, la C/N₀ efectiva mediante la ecuación estándar antiinterferencia (ganancia de procesamiento por desensanchamiento × el factor de separación espectral Q; Kaplan & Hegarty §9,4) y señala la pérdida de enganche por debajo de un umbral de seguimiento configurable — informando de una figura de mérito availability_under_jamming. Un interferidor de banda ancha de 10 W a 1 km niega por completo el receptor (J/S ≈ 72 dB); el mismo interferidor a 100 km solo degrada los enlaces (véase scenarios/jamming-demo.toml).

Un escenario sweep ejecuta un estudio de compromisos: varía un parameter (threshold_ns, duration_s, quantum_q_wf o classical_q_wf) desde start hasta stop en steps puntos con una scale lin o log, registra una metric (p. ej., holdover_s) para ambos relojes y representa las dos curvas. El escenario base va bajo [base] (véase scenarios/sweep-clock-stability.toml).

Un escenario sweep-nd generaliza esto a cualquier paquete y cualquier número de ejes: varía claves TOML con puntos de un escenario [base] (de cualquier kind) sobre el producto cartesiano de [[axes]], vuelve a ejecutar cada nodo de la malla y registra metrics dadas como rutas JSON con puntos dentro del resultado (p. ej., classical.fom.holdover_s). Funciona con todos los paquetes porque opera en el límite TOML/resultado; las ejecuciones nativas evalúan la malla en paralelo (sin dependencias adicionales; wasm recurre a la ejecución secuencial) y la salida es determinista y de orden por filas (véase scenarios/sweep-nd-inertial.toml).

Un escenario orbit deriva la cronología [gnss] de la geometría en lugar de definirla a mano — indique una órbita [user], una [constellation], una mask_deg de elevación y los dos bloques de reloj. También informa de la exactitud de posición a partir de la geometría de los satélites; el sigma_uere_m opcional (error de alcance equivalente del usuario a 1 sigma, 1 m por defecto) escala la dilución de la precisión de posición hasta un sigma de posición. La órbita del usuario puede hacerse excéntrica con eccentricity y argp_deg, y j2 = true añade la deriva secular por achatamiento terrestre (véase scenarios/orbit-molniya.toml). La constelación puede ser en cambio una real: dé a [constellation] un bloque tle de conjuntos de elementos de dos líneas y los satélites se leen de él (véase scenarios/orbit-real-tle.toml). Añada uno o más bloques [[constellations]] para multi-GNSS (p. ej., GPS + Galileo; véase scenarios/orbit-multignss.toml):

kind = "orbit"
seed = 7
threshold_ns = 5.0
mask_deg = 10.0
sigma_uere_m = 1.0           # optional; position sigma = position-DOP * this
[time]
step_s = 60.0
duration_s = 86400.0
[user]                       # spacecraft (altitude in km, angles in deg)
altitude_km = 8000.0
inclination_deg = 0.0
[constellation]              # Walker-delta GNSS (GPS-like)
altitude_km = 20180.0
inclination_deg = 55.0
planes = 6
sats_per_plane = 4
phasing_f = 1.0
[clock_quantum]  # ... as above
[clock_classical]  # ... as above

Los tipos de escenario de PNT alternativo sin GPS navegan sin ningún GNSS, haciendo coincidir una secuencia de campo medida con un mapa mediante un filtro de partículas. Un escenario gravity-map vuela una trayectoria a través de un campo de anomalías de gravedad en armónicos esféricos y la recupera a partir de la lectura de un gravímetro de átomos fríos (scenarios/gps-denied-gravity-nav.toml); un escenario terrain-nav hace lo mismo con un DEM de elevación SRTM (TERCOM/SITAN, scenarios/terrain-nav.toml); y un escenario combined-altpnt fusiona gravedad + magnetismo IGRF + terreno en un solo filtro (scenarios/combined-altpnt.toml).

Un escenario lunar-integrity evalúa el PNT cislunar: ejecuta un paso de nivel de protección ARAIM en el polo sur lunar frente a un conjunto de relés LunaNet/LNIS e informa con honestidad de la brecha de integridad — un σ_URE lunar de ~30 m lleva el nivel de protección muy por encima de un límite de alerta de 50 m, de modo que el servicio no está disponible bajo reglas de integridad de estilo aeronáutico (scenarios/lunanet-araim.toml).

Un escenario lunar-time-offset informa de la tasa relativista del reloj Tierra–Luna — la base de una escala de Tiempo Coordenado Lunar (LTC/TCL). Una identidad postnewtoniana de primeros principios suma la diferencia de potencial propio (potencial del geoide de la IAU L_G menos el potencial propio de la superficie de la Luna) y el término cinético de la Luna (efecto Doppler de segundo orden) hasta una tasa secular de ≈ 57 µs/día, informada con la banda publicada de 56–59 µs/día; también da el desfase LTC−TT acumulado a lo largo de un horizonte y un conjunto por varianza inversa (un reloj de papel lunar). MODELLED — la cifra principal depende de la referencia (geoide terrestre frente a selenoide lunar, ventana de promediado), por lo que se informa una banda y no un único número certificado (scenarios/lunar-time-offset.toml).

Consulte scenarios/ para ver al menos un ejemplo práctico de cada tipo de escenario (92 tipos de escenario, 193 archivos de escenario .toml + 1 manifiesto de conjunto; varios tipos de escenario incluyen más de un ejemplo). No todos los tipos de escenario tienen un archivo con su nombre: lunar-integrity → scenarios/lunanet-araim.toml y gravity-map → scenarios/gps-denied-gravity-nav.toml son dos de varios casos así. Puede enumerar en cualquier momento los tipos de escenario despachables con los errores de cargo run -- --validate <file>, con list_kinds() en Python o con la herramienta list_scenario_kinds de MCP.

Salida

Salida#

El artefacto de resultado es un JSON versionado y autodescriptivo: series temporales por paso, las figuras de mérito puntuadas, las especificaciones de modelo activas (con su procedencia), la semilla, un hash del escenario — de modo que cualquier gráfico puede reproducirse a partir del archivo — y, para cada reloj, una adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): la desviación de Allan solapada a lo largo de tiempos de promediado espaciados por octavas — la forma estándar de leer la estabilidad de un reloj — ahora con una banda de confianza del 95 % específica del tipo de ruido por punto (el tipo de ley de potencias del registro se identifica a partir de su pendiente de Allan modificada, y el intervalo χ² usa los grados de libertad efectivos correspondientes de NIST SP 1065). El playground del navegador la representa como un gráfico log-log de "Estabilidad del reloj (ADEV)". (MDEV, TDEV y HDEV están disponibles como estimadores de la biblioteca; la curva exportada del resultado es la ADEV solapada.) Cada campo, con sus unidades y una referencia a la fuente, está documentado en docs/SCHEMA.md.

Cada gráfico es autodescriptivo. El playground del navegador, la exportación *.chart.svg de la CLI y el cuadro de mando HTML (HyperText Markup Language) estampan en cada imagen de gráfico un pie con el texto Kshana v<version> · scenario <hash> · kshana.dev. El scenario <hash> son los primeros 12 caracteres hexadecimales del hash del escenario de la ejecución — un resumen SHA-256 (Secure Hash Algorithm de 256 bits) sobre la definición canónica del escenario (semilla, umbrales, parámetros del modelo, ventanas GNSS, …); los informes de integridad y lunares, que no llevan hash propio, recurren a un SHA-256 del código fuente del escenario. Es la misma huella que se muestra en el resumen de una línea y en el JSON del resultado, de modo que un gráfico guardado o pegado siempre lleva su versión, el escenario exacto que lo produjo (para reproducirlo bit a bit) y la fuente — si cambia cualquier entrada, cambia el hash.

Las figuras de mérito siguen las figuras de mérito operativas estándar de PNT:

Figura de mérito Cómo la calcula Kshana
Desempeño de temporización (paquetes de reloj/órbita) RMS del error de fase del reloj + percentil 95 durante la interrupción, en nanosegundos (timing_rms_ns) — una métrica de temporización, no de posición
Desempeño de posicionamiento (paquetes inerciales/híbridos) RMS del error de posición en 1-DOF + percentil 95 durante la interrupción, en metros (pos_rms_m); de un solo eje. Una ejecución única se marca como monte_carlo: false; establezca runs = N para un conjunto de Monte Carlo que informa, de cada métrica, la media, la dispersión y un IC (intervalo de confianza) del 95 % por bootstrap. Todavía no es un CEP/2DRMS en 2-D (error circular probable / dos veces la raíz de la distancia cuadrática media) ni una exactitud ponderada por DOP (eso requiere el modelo de 3 ejes — hoja de ruta)
Autonomía duración del holdover — tiempo dentro de la especificación tras perder el GNSS (cuantizado por la malla: una cota inferior)
Resiliencia pendiente de crecimiento del error durante la interrupción
Disponibilidad fracción de la ejecución con una solución dentro de la especificación
Integridad autoconsistencia del filtro — fracción de muestras de la interrupción cuyo error permanece dentro de la propia cota de k sigmas del filtro de Kalman. No es una cifra de integridad HPL/VPL/RAIM de aviación (véase docs/INTEGRITY.md)
Seguridad cota analítica de detectabilidad de spoofing a partir de la estabilidad del reloj — cuán pequeño/lento puede ser un spoofing de tiempo que un monitor de consistencia de un solo reloj podría señalar. Solo tiene sentido con un ataque configurado; no es un detector RAIM multisatélite

¿Nuevo con estos términos? Cada uno se define en lenguaje llano en el glosario.

Estructura del repositorio

Estructura del repositorio#

kshana/
├── src/                                       # the kshana core crate (library + CLI)
│   ├── api.rs · main.rs · lib.rs              # typed dispatch (92 kinds) + CLI + crate root
│   ├── python.rs · wasm.rs                    # optional PyO3 / wasm-bindgen bindings
│   ├── types.rs · scenario.rs · allan.rs      # shared core (time grid, GNSS timeline, Allan)
│   │
│   ├── models.rs · estimator.rs · kalman.rs   # Pack 1 — clock holdover + integrity
│   ├── security.rs · detection.rs · spoof.rs · spoof_monitors.rs  # spoof detection
│   ├── filter_health.rs · fom.rs · fom_label.rs · report.rs · chart.rs · run.rs  # health · FoM scoring + labelling · output
│   ├── suite.rs · study.rs                     # scenario suites + aggregated multi-scenario study artifacts (`--study`)
│   ├── inertial/                              # Pack 2 — strapdown INS (attitude · mechanization · imu_errors · quantum_imu)
│   ├── timetransfer.rs · timetransfer_adv.rs · timegeo.rs  # Pack 3 — TWSTFT/CV/PPP/optical, Sagnac
│   ├── hybrid.rs · ensemble.rs · sweep.rs     # Pack 4 — fused PNT, Monte-Carlo, trade sweeps
│   │
│   ├── timescales.rs · jd2.rs · ephem.rs      # time systems, two-part JD, Sun/Moon ephemeris
│   ├── precession.rs · nutation.rs · cio.rs   # IAU 2006/2000A precession-nutation + CIO GCRS↔ITRS
│   ├── frames.rs · *_data.rs                  # TEME↔ECEF + generated nutation/CIO/EGM2008/IGRF tables
│   │
│   ├── orbit.rs · sgp4.rs · tle.rs · walker.rs   # geometry, SGP4/SDP4, TLE, Walker design
│   ├── propagator.rs · forces.rs · gravity_sh.rs · integrator.rs  # Cowell + perturbations (EGM2008 d/o70, GR) + RK4/DOPRI
│   ├── maneuver.rs · batch_ls.rs · orbit_determination.rs  # burns/Lambert/porkchop, Gauss-Newton, OD
│   ├── cr3bp.rs · lunar.rs · lunar_frame.rs · lunar_od.rs  # Earth–Moon CR3BP + halo/NRHO STM corrector, cislunar/LunaNet ARAIM, MCI↔MCMF, lunar OD
│   ├── lunar_time.rs · lunar_vlbi.rs · lunar_combination.rs · lunar_frame_realise.rs · lunar_service.rs · lunar_dpnt.rs · lunar_interop.rs  # tiers per piece in the matrix lunar PNT suite — LTC time · geodetic VLBI · joint OD+clock · frame realisation · Moonlight service-volume · differential PNT · LunaNet/IOAG interop export
│   ├── body.rs · mars_frame.rs · ephem_provider.rs · radiometric.rs · ccsds_tdm.rs  # deep-space: multi-body · Mars frame · ephemeris seam · radiometric obs + CCSDS-TDM
│   ├── deepspace_od.rs · clock_state.rs · mars_atmos.rs · mars_pnt.rs · linkbudget.rs · gse_sim.rs  # SRIF OD · onboard clock · Mars drag · relay-PNT · link budget · GSE sim
│   │
│   ├── fusion/                                # GNSS/INS — EKF · UKF · tightly_coupled(17) · coupled · closed_loop
│   ├── raim.rs · sbas.rs                      # RAIM/ARAIM HPL/VPL, SBAS DO-229E PLs + L1/L5 iono-free
│   ├── gnss_sim.rs · ionex.rs · pvt.rs · jamming.rs  # measurement domain · ionosphere maps · single-point positioning · jamming
│   ├── navsignal.rs                            # nav-signal PSD (BPSK-R/BOC) · spectral-separation → anti-jam Q · DLL code-tracking jitter · multipath envelope
│   ├── gravimeter.rs · igrf.rs · mapmatch.rs · particle_filter.rs · altpnt/  # gravity/magnetic/terrain alt-PNT
│   ├── rinex.rs · rinex_obs.rs · glonass.rs · sp3.rs · oem.rs · omm.rs · permalink.rs  # interop formats
│   ├── launch.rs · reentry.rs · eo_payload.rs · attitude_budget.rs · passes.rs · space_packet.rs  # mission-analysis budgets + CCSDS Space Packet
│   ├── space_weather.rs · holdover.rs · tpl.rs   # space-weather environment · GNSS-denied clock-holdover calculator · conditional Timing Protection Level (under spoofing)
│   ├── resilience/                              # framework-aligned PNT-resilience scoring + decision-instability study (RPCF · Dirichlet · Kendall-τ · diversity collapse · assurance report)
│   ├── impairment_eval.rs · impairment_study.rs · impairment_ml.rs · eval_stats.rs  # Machine-learning RF-impairment eval testbed · optimism-gap study · LR/MLP detectors · bootstrap/DeLong/Spearman stats
│   ├── sdr.rs · realdata/                       # software-defined-receiver front end (IQ/IF → E/P/L taps → SQM) + real-data ingest adapters (RINEX · UBX · GnssLogger · JammerTest · Yunnan · SatGrid)
│   ├── crossover.rs · quantum_trade.rs · frugal.rs · integrity_impact.rs  # quantum-vs-classical crossover map · PNT trade · cost-per-coverage ROI · integrity impact
│   ├── quantum_devices.rs · quantum_faults.rs · quantum_nav_od.rs · qtrade.rs · timetransfer_chain.rs · representativeness.rs  # Quantum-Enabled PNT demonstrator — device error models · fault catalogue · GNSS-free quantum OD · unified trade harness · quantum time-transfer chain · representativeness / gaps-to-flight ledger
│   ├── interchange.rs · verification.rs          # KIF artifact envelope · machine-checked verification matrix
│   └── bin/crossover_study.rs · bin/validation_report.rs  # crossover-study artifact generator · release validation-summary HTML
│
├── mcp/kshana-mcp/        # standalone, workspace-EXCLUDED crate — the MCP server (+ Dockerfile, server.json)
├── ide/jetbrains/         # standalone Kotlin/Gradle IntelliJ-Platform plugin
├── xval/                  # standalone, workspace-EXCLUDED external cross-checks: anise-{frames,lunar-od,mars-od,service-geometry} (Rust ANISE/SPICE DE440) + orekit-passes (Java Orekit)
│
├── examples/            # reproducible study generators: tpl_jammertest · resilience_report · optimism_study + real-data probes (jammertest_probe · yunnan_probe · satgrid_probe · texbat_probe · ingest_realdata)
├── paper-artifacts/     # byte-deterministic study artifacts, regenerable from examples/ (optimism-study.json · resilience-study.json); raw datasets stay out
├── scenarios/            # one cited .toml per kind + geometry-driven + GPS-denied
├── scripts/              # reproducibility + repo-hygiene + SBOM guards
├── docs/                 # CONCEPTS, ARCHITECTURE, CAPABILITY, VALIDATION, PROVENANCE, GLOSSARY, …
├── web/                  # the WebAssembly playground + kshana.dev site
├── tools/                # table generators (EGM2008 · IGRF · nutation · CIO) + fetch_tles.sh
├── .github/workflows/    # ci · release · publish · wheels · pages · mcp-publish · jetbrains-plugin · frame-xval
├── pyproject.toml        # Python packaging (maturin)
├── CHANGELOG.md          # Keep a Changelog + SemVer
└── CITATION.cff · ROADMAP.md · CONTRIBUTING.md · SECURITY.md
Preguntas frecuentes

FAQ#

¿Necesito entender la física cuántica para usar esto? No. Si puede ejecutar una línea de comandos, puede ejecutar Kshana. Empiece por la introducción en lenguaje llano; consulte los términos en el glosario.

¿Es un diseño de hardware cuántico o software de vuelo? No. Es un simulador de desempeño. La fidelidad del hardware cuántico procede de modelos de error publicados, no de esta herramienta. Véase Qué es y qué no es.

¿Los resultados cuánticos son realistas o marketing? Cada parámetro se cita a una hoja de datos o un artículo, cada modelo está validado frente a una relación de manual y la madurez se etiqueta con honestidad en VALIDATION.md — incluido que ningún reloj óptico de estroncio ha volado. El motor es neutral: lo cuántico y lo clásico son el mismo código con cifras publicadas distintas.

¿Puedo confiar en que dos ejecuciones coincidan? Sí — las ejecuciones son deterministas: scenario + seed + engine version → bit-identical output, garantizado por scripts/check-reproducible.sh.

¿Puedo usarlo desde Python o en un navegador? Sí — véase Instalar: los ejemplos de Python y WebAssembly están debajo. Ambos llaman al mismo motor.

¿Cómo modelo mi propio sensor? Escriba un escenario .toml con las cifras publicadas de su sensor en los campos provenance. Véanse Formato de escenario y los ejemplos de scenarios/.

¿Es gratuito para uso comercial? Sí — bajo la AGPL-3.0, también en entornos comerciales, siempre que respete el copyleft de la AGPL (en particular: si modifica Kshana y lo ofrece a través de una red, debe ofrecer a esos usuarios su código fuente modificado). Si eso no le conviene — p. ej., necesita incorporar Kshana a un producto propietario o ejecutar un servicio de red cerrado — Ashforde® OÜ ofrece una licencia comercial; véanse LICENSING.md y Soporte.

Solución de problemas

Solución de problemas#

cargo build falla con una cadena de herramientas antigua. Kshana necesita Rust ≥ 1,88. Actualice con rustup update.

La compilación de la extensión de Python falla al enlazar en macOS (Undefined symbols … _Py…). Una extensión de Python resuelve sus símbolos en el momento de la carga. maturin establece automáticamente la opción de enlazador correcta — use maturin develop --features python en lugar de un cargo build a secas.

La compilación de Python se queja de que el intérprete es más reciente de lo que PyO3 conoce. Establezca PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (los wheels abi3 son compatibles hacia adelante entre versiones de CPython).

La compilación de WebAssembly no encuentra el destino. Instálelo una vez con rustup target add wasm32-unknown-unknown y luego wasm-pack build --target web -- --features wasm.

¿Dónde está mi salida? Cada ejecución escribe <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html y <scenario>.report.json junto al .toml de entrada, y también <scenario>.table.csv para los tipos de escenario que publican una tabla. Todos ellos están excluidos de git por diseño.

Versiones y lanzamientos

Versiones y lanzamientos#

Kshana sigue el Versionado Semántico. Mientras sea anterior a 1.0, el esquema público de escenario/resultado aún puede cambiar; los cambios incompatibles se señalan explícitamente en CHANGELOG.md. Cada resultado es reproducible a partir de scenario + seed + engine version.

Cada etiqueta vX.Y.Z publica todos los canales automáticamente, en un solo orden — primero se ejecuta la suite de pruebas completa en el commit etiquetado, no se publica nada hasta que pasa y después el pipeline comprueba que cada registro sirve realmente la nueva versión (docs/RELEASING.md). Los canales:

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en README.md en GitHub.

Canal Instalar / obtener Contenido
crates.io cargo install kshana · kshana = "0.35" Biblioteca de Rust + CLI
crates.io cargo install kshana-mcp el servidor MCP
PyPI (Python Package Index) pip install kshana wheels abi3 (Linux/macOS/Windows) + sdist (distribución de código fuente)
npm npm install kshana módulo WebAssembly + envoltorio de JS
ghcr.io docker run -i ghcr.io/ashfordeou/kshana-mcp imagen OCI (Open Container Initiative) multiarquitectura — no necesita cadena de herramientas
npm npx -y kshana-mcp@0.40.0 lanzador: descarga el binario de la versión, verifica SHA256SUMS y lo ejecuta
PyPI uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 el mismo lanzador para Python
Homebrew · Scoop · winget brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp el binario kshana-mcp, generado a partir del SHA256SUMS de cada versión
registro oficial de MCP descubierto automáticamente por los clientes MCP io.github.ashfordeOU/kshana-mcp (imagen OCI y paquetes de npm y PyPI)
JetBrains Marketplace IDE → Plugins → buscar "Kshana" el complemento de IDE Kshana — PNT simulator
Zenodo DOI un archivo citable de cada versión
kshana.dev abrir en un navegador Kshana Studio, la aplicación WebAssembly en el navegador, recompilada a partir de cada etiqueta de versión (de modo que la versión que muestra es la versión que ejecuta)

La versión del crate / imagen / registro del servidor MCP sigue la del motor (incluye la biblioteca); el complemento de JetBrains lleva versiones independientes (invoca el binario kshana que tenga instalado).

Hoja de ruta

Hoja de ruta#

Véase ROADMAP.md para la hoja de ruta por fases, CHANGELOG.md para el historial publicado y docs/CAPABILITY.md para la hoja de ruta por capacidad. El orden de prioridad es: primero la evidencia de temporización y holdover para infraestructuras críticas (máscaras de telecomunicaciones, holdover más largo con envejecimiento y ruido flicker, ingesta de datos de reloj medidos); en segundo lugar el método neutral de compromiso cuántico frente a clásico (resultados etiquetados MODELLED hasta que los datos medidos de un socio los promuevan); y la navegación lunar / cislunar y de espacio profundo se mantiene, sin ampliarse como prioridad. La reducción de marcos precisa en ITRF ya está entregada — la cadena completa GCRS↔ITRS IAU 2006/2000A basada en CIO (movimiento polar + nutación subarcosegundo), validada bit a bit frente a SOFA/ERFA y contrastada de forma independiente con ANISE (SPICE en Rust puro) con ≤ 3,6 m en órbita GNSS. Los elementos a corto plazo incluyen la fusión de fase de portadora de acoplamiento fuerte y la exposición del navegador GNSS/INS de acoplamiento débil/fuerte en más paquetes; el motor de navegación radiométrica de espacio profundo / Marte llegó en v0.17.0 (validado por simulación). La capa de física cuántica es un elemento P2: el acelerómetro CAI se simula ahora desde primeros principios (fase de Mach–Zehnder, ruido de proyección, decaimiento del contraste, acoplamiento de vibraciones), mientras que los sensores de reloj/transferencia de tiempo siguen basándose en coeficientes publicados de Allan/presupuesto de ruido. La conversión TEME&harr;ECEF basada en GMST, los sistemas de tiempo con segundos intercalares del IERS (UTC/TAI/TT/UT1), la propagación orbital SGP4/SDP4 (v0.7.0, validada frente a los vectores AIAA 2006-6753) y el paquete de fusión gnss-ins ejecutable ya se han entregado, y la velocidad inercial se expone aguas abajo. En main han llegado un detector estocástico activo de spoofing de tiempo (prueba de energía de Neyman–Pearson / χ²₁ con P_fa/P_md por Monte Carlo y una FoM de seguridad de 1−P_md), un modelo de jamming con presupuesto de enlace (J/S → C/N₀ efectiva → pérdida de enganche), disponibilidad multiconstelación, un presupuesto de error de IMU de un solo eje (1-DOF), dos estimadores de Kalman independientes (reloj + posición) informados como una FoM combinada, geometría de constelación real a partir de TLE, un informe de cuadro de mando HTML, disponibilidad GNSS derivada de la geometría y dilución de la precisión a partir de órbitas keplerianas con excentricidad y deriva J2, bandas de confianza de Monte Carlo, barridos de parámetros de estudios de compromisos, un playground WebAssembly en el navegador y enlaces opcionales de Python (PyO3) y WebAssembly (wasm-bindgen).

Contribuir

Contribuir#

Véase CONTRIBUTING.md. En resumen: las pruebas pasan (cargo test), los dos scripts de guarda pasan, Conventional Commits, y una entrada [Unreleased] de CHANGELOG.md por cada cambio visible para el usuario. La participación se rige por nuestro Código de Conducta. Para informar de un problema de seguridad, consulte la Política de seguridad — no abra una incidencia pública para vulnerabilidades.

Documentación: cada documento y a quién va dirigido

Documentación#

Documento Para quién Qué contiene
Introducción a los conceptos todos, empiece aquí qué hace Kshana y por qué, desde cero hasta la física
Kshana Studio todos ejecute el motor en su navegador (WebAssembly); notas de compilación y despliegue
Glosario todos definiciones en lenguaje llano de cada término
Tipos de escenario todos cada tipo de escenario que despacha el motor: qué hace, sus campos, un comando de ejemplo, sus filas del registro y el gráfico que escribe el motor para él
Datos de socios laboratorios y fabricantes que tienen datos medidos qué filas MODELLED podría promover un registro medido de reloj o de IMU, los formatos, cómo se comprueba un envío (kshana partner check), se puntúa y se acredita
Arquitectura desarrolladores / revisores mapa de módulos, pipeline del motor, despacho y diagramas
Estado de la validación revisores / citadores qué es validated frente a not modeled, con evidencias
Matriz de verificación revisores / citadores el registro de evidencias comprobado por máquina — cada fila de capacidad con su estado, módulo, prueba y referencia independiente externa, generado a partir de src/verification.rs
Justificación de lo modelado revisores por qué cada fila modelada no tiene referencia independiente externa, explicado fila por fila
Procedencia revisores / citadores cada parámetro de sensor, modelo y conjunto de datos rastreado hasta su fuente publicada, en una única tabla citable
Reproducibilidad y procedencia revisores / empaquetadores garantías de determinismo, fijación de golden, SBOM (lista de materiales de software), procedencia de la compilación
Etiquetas de plataforma de los wheels empaquetadores la matriz de wheels abi3 de Python — qué etiqueta de plataforma resuelve pip install kshana
Posicionamiento evaluadores dónde se sitúa Kshana frente a RTKLIB/gLAB (complementario) y el nivel de navegador sin instalación
Kshana Pro evaluadores / responsables de programa qué añade la capa propietaria Pro sobre el mismo motor: optimizador de diseño, incertidumbre y sensibilidad, dosier de misión, vigilancia de campañas, coexistencia de espectro, servicio de trabajos en las instalaciones, trazabilidad de requisitos; qué produce cada uno y qué no hace
Informe técnico · Artículo de JOSS revisores / citadores / evaluadores el artículo de investigación ampliado completo — arquitectura, modelos por dominio, validación, casos de estudio y limitaciones — más la presentación concisa a JOSS (Journal of Open Source Software)
Validación de SGP4 revisores / citadores coincidencia con la referencia AIAA 2006-6753 (666 estados, ~4 mm) y una comparación directa con el crate independiente sgp4 (coinciden a nivel submicrométrico / 4,12 mm)
Validación del modelo de fuerzas revisores / citadores el motor de fuerzas completas (src/precise_od.rs) ajustado a efemérides de agencias — metodología y residuos validados
Guía de TLE reales usuarios conducir escenarios con TLE reales de constelaciones de Celestrak / Space-Track (frente al conjunto Walker sintético incluido)
FoM de integridad evaluadores qué significan las cifras integrity / security — y qué no son frente a HPL/VPL de aviación
Referencia de ARAIM revisores / integradores la implementación abierta del nivel de protección MHSS de ARAIM — la proyección de sesgo nominal b_k, σ_URA frente a σ_URE y las probabilidades a priori de los modos de fallo
Modelos cuánticos · detalles revisores la capa de física del interferómetro de átomos fríos y dónde los coeficientes siguen consultándose en tablas
Compliance evaluadores Alcance de los algoritmos DO-229E / DO-316, y qué no es una afirmación de ajuste a la norma
Confianza marítima marinos / integradores la puntuación de confianza GNSS de 0 a 100 para el NMEA de un buque, sus monitores y sus límites (de carácter consultivo, no un equipo de navegación homologado)
Flujos NMEA de formación formadores marítimos NMEA sintético de puente con jamming y spoofing guionizados y un registro del instructor; solo texto, nunca para navegación en vivo
Mapa de interferencias analistas / marinos dónde informaron aeronaves y buques de datos de navegación degradados, y cuánto de una ruta afecta
Paquetes de evidencias operadores / aseguradores registros técnicos firmados de un evento de confianza y cómo verificar uno
Telemetría de confianza equipos de operaciones / seguridad el flujo de confianza como métricas de Prometheus, eventos SIEM y OpenTelemetry, con un panel de Grafana
Integraciones marinas propietarios de embarcaciones / integradores el complemento de Signal K, el modo de compuerta de OpenCPN y la compilación de referencia
Test bench fabricantes de receptores reproducir un escenario exportado con un simulador de laboratorio y puntuar el registro del receptor
Correspondencia de compliance evaluadores marcos públicos de resiliencia asignados a las salidas de Kshana, con fuentes y brechas; kshana compliance-report
Cuadernos usuarios tutoriales ejecutables con su texto renderizado
Normas e interoperabilidad integradores los formatos de intercambio GNSS / dinámica de vuelo / agencias que Kshana lee y escribe (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …)
Fusión PNT LEO usuarios / evaluadores posicionamiento, navegación y temporización fusionados MEO + LEO: Doppler, pseudodistancia conjunta, convergencia de PPP, 5G NTN, cobertura polar y transferencia de tiempo LEO sobre cualquier constelación; los preajustes opcionales y sus fuentes públicas
Campañas usuarios / evaluadores composición de escenarios: cronologías de misión encadenadas, barridos de parámetros, conjuntos de Monte Carlo y ejecuciones de condición compartida, con las identidades de composición que fijan las pruebas
Catálogo de escenarios usuarios / integradores cada tipo de escenario despachable con sus campos TOML obligatorios y opcionales — generado a partir de api::list_scenario_kinds()
Esquema de resultados integradores cada campo del JSON de resultado, con sus unidades y una referencia a la fuente
API de Python usuarios de Python la superficie de enlace PyO3 — llamar al motor, los tipos de escenario/resultado y ejemplos
Afirmaciones frente a realidad revisores el registro de cierre de afirmaciones excesivas + la guarda de CI (tests/no_overclaims.rs) que lo mantiene resuelto
Hoja de ruta todos la hoja de ruta por fases — lo que se ha entregado y lo que viene después
Servidor MCP · Complemento de JetBrains agentes / usuarios de IDE ejecutar Kshana desde un asistente de IA o un IDE de JetBrains
Guía para agentes · Superficies agentes / integradores qué herramienta responde a qué pregunta, qué conservar con cada respuesta; dónde es accesible cada capacidad (CLI, Rust, Python, WASM, MCP, complemento, JetBrains, notebooks) y por qué una celda es N/A
Registro de cambios todos historial publicado (Keep a Changelog + SemVer, Versionado Semántico)
Contribuir colaboradores compilación, guardas, disciplina de pruebas/citación, DCO (Developer Certificate of Origin)
Gobernanza colaboradores / comunidad cómo se gobierna Kshana — quién decide, cómo y el límite entre lo abierto y lo cerrado
Código de Conducta comunidad conducta esperada (Contributor Covenant)
Política de seguridad quienes informan cómo informar de una vulnerabilidad; nota sobre doble uso
Referencias clave

Referencias clave#

Referencias independientes de validación y normas — las autoridades externas a las que se anclan las comprobaciones de Kshana:

  • Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; datos de prueba): el conjunto de verificación de SGP4/SDP4 con el que Kshana coincide hasta 4,12 mm, y los ejemplos de marcos resueltos con los que se contrasta la cadena TEME→ITRF.
  • IAU SOFA / ERFA — las rutinas de referencia de tiempo y marcos con las que se validan bit a bit la nutación IAU 2000A y la reducción GCRS↔ITRS basada en CIO.
  • Petit & Luzum (eds.) — IERS Conventions (2010), IERS TN (Nota Técnica) 36 (orientación de la Tierra, movimiento polar y estándares de marcos).
  • Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (relaciones de la desviación de Allan y la serie de referencia NBS14; NBS = la antigua Oficina Nacional de Normas de EE. UU.).
  • Pedregosa et al. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): las implementaciones de referencia de ROC/AUC, matriz de confusión y precisión/exhaustividad/F1 con las que el banco de pruebas de evaluación de degradaciones de RF coincide exactamente (tests/eval_metrics_reference.rs).
  • Virtanen et al. — SciPy 1,0, Nature Methods 17 (2020): optimize.nnls, stats.chi2 y linalg.expm — las rutinas de referencia frente a las que se validan el ajuste NNLS de ADEV medida del compromiso cuántico, las bandas de consistencia χ² y la covarianza del ruido de proceso del reloj de van Loan (tests/scipy_reference.rs).
  • Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): usado tanto como estado de la técnica abierto (véase Comparación y estado de la técnica abierto más abajo) como referencia independiente de DOP con la que coincide hasta 1e-6 el cálculo de GDOP/PDOP/HDOP/VDOP/TDOP (tests/dop_reference.rs).
  • Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): los modelos de fuerzas que hay detrás del ajuste del modelo de fuerzas a las efemérides precisas de agencias.
  • Howell — Three-dimensional, periodic, halo orbits, Celestial Mechanics 32(1) (1984), doi:10.1007/BF01358403; Zimovan-Spreen, Howell & Davis — Near rectilinear halo orbits and nearby higher-period dynamical structures, Astrodynamics 6 (2022), doi:10.1007/s42064-021-0125-x (las familias halo/NRHO que reproduce el corrector diferencial del CR3BP).

Física de dispositivos y métodos — las fuentes citadas que hay detrás de los modelos de sensores:

  • Origlia, Schiller, Bongs et al. — arXiv:1503,08457 (reloj óptico de red de estroncio, objetivo orientado al espacio).
  • Oelker et al., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (reloj de Sr de laboratorio, 4,8×10⁻¹⁷).
  • Templier et al., Science Advances (2022) — arXiv:2209,13209 (tríada de acelerómetros cuánticos híbridos).
  • Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — tutorial de IEEE AESS (Aerospace and Electronic Systems Society) (repositorio Discovery de University College London) (crecimiento del error de navegación por estima).
  • Giorgetta et al., Nature Photonics 7, 434 (2013) — arXiv:1211,4902; Deschênes et al., Phys. Rev. X 6, 021016 (2016) — APS (American Physical Society) (transferencia óptica bidireccional de tiempo-frecuencia; el enlace óptico entre satélites modela su presupuesto de no reciprocidad según estos trabajos).
  • Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (la teoría de la modulación BOC y de la separación espectral que hay detrás de src/navsignal.rs).
  • Kaplan & Hegarty (eds.) — Understanding GPS/GNSS: Principles and Applications (3.ª ed., Artech House, 2017): la ecuación de C/N₀ efectiva antiinterferencia y la fluctuación por ruido térmico del seguimiento de código DLL early–late que usan los modelos de señal de navegación y de jamming.

Comparación y estado de la técnica abierto — las herramientas y estudios frente a los que se posiciona Kshana:

  • Humphreys et al. — TEXBAT (la Texas Spoofing Test Battery; ION — Institute of Navigation — GNSS 2012): los parámetros de la batería de pruebas de spoofing con los que se caracteriza el detector multicapa.
  • González et al. — NaveGo (2017): los perfiles abiertos y validados de error de navegación inercial usados como línea base clásica.
  • Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): simulador abierto de PNT lunar.
  • Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: análisis abierto de datos GNSS.
  • Li, Zaminpardaz, Kealy & Greentree — Quantum sensors for enhanced positioning and navigation: a comprehensive review, GPS Solutions 30(1):62 (2026), doi:10.1007/s10291-026-02030-y.
  • Bertone et al. — Earth and Space Science 8(6) (2021), doi:10.1029/2020EA001454: OD de dinámica reducida con GRAIL, el suelo de aceleración empírica que reproduce el ajuste a LRO.