kshana 0.34.1

Open, reproducible PNT-resilience simulator with quantum-sensor performance models
Documentation
// SPDX-License-Identifier: AGPL-3.0-only
// Panic-surface gate: a bare `.unwrap()` in non-test code is a lint. Combined with the
// CI `-D warnings`, this makes any new `.unwrap()` outside `#[cfg(test)]` fail the build.
// Retained non-test panics use `.expect("<provable invariant>")` instead, which carries
// the proof in-source; `expect_used` is intentionally NOT enabled.
#![cfg_attr(not(test), warn(clippy::unwrap_used))]
// Memory-safety gate: the crate has never contained an `unsafe` block, fn, impl or
// extern, and this makes that a compiler-enforced property rather than an accident of
// discipline. Unguarded on purpose: the pyo3 (`--features python`) and wasm-bindgen
// (`--features wasm`) macro expansions both compile clean under it, and the wheel is
// the one surface where FFI would ever plausibly be introduced, so exempting it would
// exempt the only place that matters.
#![forbid(unsafe_code)]
//! # kshana — a validated, reproducible PNT simulation substrate
//!
//! `kshana` is an open-source engine for positioning, navigation and timing
//! (PNT) analysis: GNSS geometry and integrity, clock holdover and time transfer,
//! inertial and alt-PNT navigation, orbit and mission analysis, lunar/cislunar
//! PNT, and RF resilience. It has no scientific runtime dependencies, and every
//! run is deterministic from its inputs.
//!
//! ## Entry points
//!
//! * [`api::run_toml`] is the single dispatch entry: it parses a scenario TOML,
//!   detects its kind, runs it, and returns a structured result. Every language
//!   binding — the Python package, the MCP server, and the WASM playground — is a
//!   thin wrapper over it, so all surfaces run the identical engine.
//! * [`api::list_scenario_kinds`] is the machine-readable catalogue of the
//!   built-in scenario kinds, each with its description and required/optional
//!   fields — the same catalogue the [`docs/SCENARIOS.md`] reference is generated
//!   from.
//!
//! [`docs/SCENARIOS.md`]: https://github.com/AshfordeOU/kshana/blob/main/docs/SCENARIOS.md
//!
//! ## Honesty model
//!
//! Every capability carries an explicit maturity tier, generated from source in
//! [`verification::verification_matrix`] (the single source of truth) and
//! CI-pinned so the labels cannot drift from the code:
//!
//! * [`Validated`](verification::VerificationStatus::Validated) — checked against
//!   an independent external oracle (a published dataset, reference vectors, or a
//!   closed-form value). A self-consistency check can never be labelled Validated.
//! * [`Modelled`](verification::VerificationStatus::Modelled) — implemented from
//!   published or first-principles physics with tests, but not checked against an
//!   external oracle to a stated tolerance.
//! * [`PartnerOwned`](verification::VerificationStatus::PartnerOwned) — a
//!   capability kshana deliberately does not provide, recorded as a gap rather than
//!   faked.
//!
//! The per-figure-of-merit tier shown next to a result is derived from this same
//! matrix via [`fom_label`]. kshana makes no technology-readiness or heritage
//! claim and is not affiliated with, nor endorsed by, any space agency.
//!
//! ## Reproducibility
//!
//! Runs are deterministic: a scenario, a seed, and a pinned engine version rebuild
//! the same figures byte-for-byte. The governing equations behind the physics are
//! collected, with their literature sources, in the [`docs/EQUATIONS.md`]
//! reference.
//!
//! [`docs/EQUATIONS.md`]: https://github.com/AshfordeOU/kshana/blob/main/docs/EQUATIONS.md

pub mod acquisition;
pub mod advanced_report;
pub mod allan;
pub mod altpnt;
pub mod animation;
pub mod antenna;
pub mod aperture_duty;
pub mod api;
pub mod araim_reference;
pub mod assurance;
pub mod attack_surface;
pub mod attitude_budget;
pub mod attitude_dynamics;
pub mod batch_ls;
pub mod benchmark;
pub mod body;
pub mod body_pnt;
pub mod bplane;
/// The bundled reference scenarios, present only with the `bundled-scenarios` feature.
#[cfg(feature = "bundled-scenarios")]
pub mod bundled_scenarios;
pub mod campaign;
pub mod ccsds_tdm;
/// The optional Celeste IOD preset: compiled in only when `src/celeste_iod.rs` exists.
#[cfg(kshana_celeste)]
pub mod celeste_iod;
pub mod chart;
pub mod cio;
mod cio_s06_data;
pub mod cislunar_arc_recovery;
pub mod cislunar_observability;
pub mod cislunar_srif;
pub mod clock_library;
pub mod clock_specs;
pub mod clock_state;
pub mod conflict_resilience;
pub mod conflict_threat_params;
pub mod constellation;
pub mod cr3bp;
pub mod cross_raim;
pub mod cross_sensor_integrity;
pub mod crossover;
pub mod crpa;
pub mod cw_dynamics;
pub mod deepspace_od;
pub mod detection;
pub mod dro;
pub mod earth_gnss_lunar;
pub mod egm2008_data;
pub mod ensemble;
pub mod eo_payload;
pub mod eop;
/// Least-squares plus autoregressive Earth-orientation prediction with the zonal tides removed.
pub mod eop_ls_ar;
pub mod ephem;
pub mod ephem_provider;
pub mod ephemeris;
pub mod estimator;
pub mod eval_stats;
mod fes2004_data;
pub mod field_schema;
pub mod filter_health;
pub mod fim;
pub mod fom;
pub mod fom_label;
pub mod forces;
pub mod frame_eop;
pub mod frames;
pub mod frugal;
pub mod fusion;
pub mod geolocation;
pub mod glonass;
pub mod gnss_sim;
pub mod gps_lnav;
pub mod gravimeter;
pub mod gravity_sh;
pub mod gse_sim;
pub mod handoff;
pub mod holdover;
pub mod hybrid;
pub mod hybrid_integrity;
pub mod igrf;
mod igrf_data;
pub mod impairment_eval;
pub mod impairment_ml;
pub mod impairment_study;
pub mod inertial;
pub mod inline_only;
pub mod integrator;
pub mod integrity;
pub mod integrity_impact;
pub mod interchange;
pub mod interop;
pub mod intersat_range;
pub mod ionex;
pub mod iq;
pub mod jamming;
pub mod jd2;
pub mod kalman;
pub mod lambda;
pub mod launch;
pub mod leo_fusion;
pub mod leo_link;
pub mod leo_navmsg;
pub mod leo_pass;
pub mod leo_pnt_chain;
pub mod leo_signal;
pub mod linalg_sr;
pub mod linkbudget;
pub mod lunar;
pub mod lunar_afs;
pub mod lunar_beacon;
pub mod lunar_combination;
pub mod lunar_common_mode;
pub mod lunar_datum;
pub mod lunar_dpnt;
pub mod lunar_ephemeris;
pub mod lunar_faultobs;
pub mod lunar_frame;
pub mod lunar_frame_campaign;
pub mod lunar_frame_predict;
pub mod lunar_frame_realise;
pub mod lunar_gauge;
pub mod lunar_identifiability;
pub mod lunar_interop;
pub mod lunar_interop_budget;
pub mod lunar_jamming;
pub mod lunar_llr;
pub mod lunar_llr_geometry;
pub mod lunar_od;
pub mod lunar_orientation;
pub mod lunar_perturbed;
pub mod lunar_service;
pub mod lunar_techniques;
pub mod lunar_time;
pub mod lunar_time_budget;
pub mod lunar_time_budget_scenario;
pub mod lunar_vlbi;
/// Station-coordinate covariance from a lunar-VLBI schedule: the delay partials of
/// [`lunar_vlbi`] accumulated over baselines and epochs into a Fisher information matrix.
pub mod lunar_vlbi_fim;
pub mod maneuver;
pub mod mapmatch;
pub mod mars_atmos;
pub mod mars_frame;
pub mod mars_pnt;
pub mod mcda;
pub mod models;
pub mod monitor_network;
pub mod naif_kernel;
pub mod navsignal;
pub mod nma_budget;
pub mod nutation;
mod nutation_iau2000a_data;
pub mod observability_gramian;
pub mod oem;
pub mod omm;
pub mod optical_availability;
pub mod optical_linkbudget;
pub mod orbit;
pub mod orbit_determination;
pub mod orbital_timing;
pub mod palette;
pub mod particle_filter;
pub mod passes;
pub mod permalink;
// Transcendental functions that return the same bits on every platform, for the
// modules whose output is discrete (an encoded frame) and must not depend on the host.
mod portable_math;
pub mod powerlaw;
pub mod precession;
pub mod precise_od;
pub mod precise_products;
pub mod propagator;
pub mod pvt;
#[cfg(feature = "python")]
pub mod python;
pub mod qtrade;
pub mod quantum_devices;
pub mod quantum_faults;
pub mod quantum_nav_od;
pub mod quantum_trade;
pub mod radiometric;
pub mod raim;
pub mod realdata;
pub mod realtime_frame_eop;
pub mod receiver_trust;
pub mod reentry;
pub mod registry;
pub mod report;
pub mod representativeness;
pub mod resilience;
pub mod rinex;
pub mod rinex_obs;
pub mod run;
pub mod sbas;
pub mod scenario;
pub mod sdr;
pub mod security;
pub mod sgp4;
pub mod sigmf;
pub mod slot_timing;
pub mod solar_system;
pub mod sp3;
pub mod space_packet;
pub mod space_weather;
pub mod spectrum;
pub mod spoof;
pub mod spoof_capture;
pub mod spoof_detect;
pub mod spoof_monitors;
pub mod study;
pub mod suite;
pub mod sweep;
pub mod telecom_timing;
// Comparison helpers shared by the byte-identity guards. Test-only: it exists so those
// guards can assert the exact pin where it is true and a portable one everywhere else.
#[cfg(test)]
mod test_support;
pub mod tides;
pub mod timegeo;
pub mod timescales;
pub mod timetransfer;
pub mod timetransfer_adv;
pub mod timetransfer_chain;
pub mod tle;
pub mod tpl;
pub mod tracking_loop;
pub mod types;
pub mod utck_bound;
pub mod verification;
pub mod wahba;
pub mod walker;
#[cfg(feature = "wasm")]
pub mod wasm;
mod worldmap;