Skip to content

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 14 Jun 18:12
· 60 commits to main since this release

Added

  • Deep-space & Mars PNT — open radiometric navigation engine + GSE simulation.
    A new, fully additive capability axis on top of the Earth-validated core (every
    existing Earth scenario is byte-identical — the reproducibility goldens pass
    unchanged with no regeneration). Adds: a multi-body dynamics core (Body{mu, re, zonals, gravity, rotation, IAU-pole} with Mars GMM-3 tesseral gravity, an IAU
    body-fixed Mars frame, a pluggable EphemerisProvider seam, sub-microsecond
    two-part Julian dates and TT↔TDB); radiometric observables (iterative light-time +
    Shapiro delay, two-/one-/three-way Doppler & range via the Moyer two-leg solve,
    coherent transponder turnaround, regenerative/PN ranging per CCSDS 414, Δ-DOR per
    CCSDS 506, solar-plasma/tropo/iono media); CCSDS-TDM (503) parse + emit; a
    reduced-dynamic Square-Root Information Filter with RTN empirical accelerations, a
    three-state onboard clock, and a Mars-drag model; a joint one-way + two-way fusion
    estimator; the mars-pnt scenario surface (relay constellation + LMO/transfer/
    surface) across CLI, Python, WASM, MCP, and the playground; and an end-to-end GSE
    performance simulator (geometry → link budget → observables → SRIF → covariance).
    Validation tier — simulation-validated: synthetic closed-loop OD (Mars-LMO ≈
    0.2 m) and analytic self-consistency, with the Sun-central Mars dynamics
    independently cross-checked against JPL DE440 (xval/anise-mars-od, kernel-gated:
    137 m @ 1-day arc, the honest unmodelled-n-body residual). Reported deep-space
    accuracies are simulation / covariance figures of merit, not real-mission
    results; real DSN/ESTRACK tracking-data validation remains on the roadmap. ANISE
    (MPL-2.0, edition-2024) is confined to a workspace-excluded cross-check crate, so
    the cargo deny license gate and the MSRV-1.75 job are untouched.
  • Agency-accurate ground tracks from real IERS Earth orientation. The
    ephemeris scenario takes an optional eop_finals2000a field — the inlined body
    of a real IERS finals2000A file — and reduces the ground track through the
    per-epoch UT1−UTC and polar motion interpolated from it (the same EopSeries
    precise_od uses), overriding the nominal dut1_s/xp_arcsec/yp_arcsec
    scalars. The data travels in the scenario, so the run stays reproducible and
    needs no filesystem (it works in the WASM playground). A kshana --eop <finals2000A> flag folds a real file into the scenario from the CLI. Closes the
    asymmetry where only precise_od consumed real Earth-orientation data.

Fixed

  • Range-rate frame consistency. The ground station is now mapped into the
    inertial frame through the exact inverse of the satellite's reduction
    (frames::itrf_to_teme, undoing polar motion and the sidereal rotation)
    instead of a polar-motion-blind GMST rotation, so both endpoints share one
    frame. The effect on the reported Doppler is below the validation floor, but it
    removes a real frame mismatch and an "exact" overclaim in the source.
  • carrier_hz is validated. A zero or non-finite carrier frequency now returns
    an error instead of silently producing zero Doppler (it had made λ = c/carrier
    infinite), matching the existing step_s guard.

Get this release

Download — attached below, prebuilt (no toolchain needed); each artifact carries
SLSA build-provenance (verify with gh attestation verify <file> --repo AshfordeOU/kshana):

  • kshana — the simulator CLI / engine (Linux x86-64)
  • kshana-mcp — the Model Context Protocol server (Linux x86-64)
  • kshana-sbom.cdx.json — CycloneDX SBOM
  • kshana-validation-summary.html — the per-release validation summary

On macOS or Windows, install from a registry below — the PyPI wheels, the npm/WASM
package, and the Docker image are all cross-platform.

Install from a package registry:

Channel Get it
crates.io cargo install kshana · cargo install kshana-mcp
PyPI pip install kshana
npm npm install kshana
ghcr.io docker run -i ghcr.io/ashfordeou/kshana-mcp:0.17.0
MCP registry io.github.ashfordeOU/kshana-mcp (auto-discovered by MCP clients)
JetBrains Marketplace search "Kshana" in your IDE → Plugins

No install: run it in your browser at kshana.dev · Cite: DOI 10.5281/zenodo.20528627


Full changelog: CHANGELOG.md · Docs: README