All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.7.0] - 2026-06-04

GNSS positioning. Orbis can now recover a receiver position from pseudoranges against precise or broadcast ephemeris, with the supporting ephemeris, correction, time, and data-fetch layers.

Added

  • Orbis.PointPositioning — single-point positioning (SPP). Solves a receiver position, clock, and geometry diagnostics from one epoch of pseudoranges against either an Orbis.SP3 precise product or an Orbis.BroadcastEphemeris handle. Multi-constellation (GPS / Galileo / BeiDou / GLONASS) solves carry one receiver clock per system; the solution reports position, geodetic position, per-system clocks, DOP, residuals, used/rejected satellites, and solver metadata.
  • Orbis.SP3 — SP3-c/SP3-d precise orbit/clock loading and arbitrary-epoch satellite position/clock interpolation, plus satellite_ids/1 to read the product's declared satellite set.
  • Orbis.GnssConstellation — a GPS constellation catalog built from CelesTrak gps-ops OMM identity and an optional NAVCEN status/SVN overlay (PRN ↔ SVN ↔ NORAD ↔ SP3 id, active/usable flags). Merges sources only when the block type matches, recording PRN-transition disagreements as conflicts rather than corrupting identity; exports the compact mapping CSV and validates a catalog (duplicate PRNs/NORAD ids, inactive/unusable PRNs, and missing/extra satellites against a loaded Orbis.SP3 product).
  • Orbis.BroadcastEphemeris — RINEX 3.x and 4.xx navigation parsing and broadcast orbit/clock evaluation: GPS LNAV, Galileo I/NAV and F/NAV, BeiDou D1/D2 (including geostationary satellites), and GLONASS (PZ-90.11 state-vector propagation by Runge–Kutta integration).
  • Orbis.Ionosphere (broadcast Klobuchar, frequency-aware across L1/E1/B1I) and Orbis.Troposphere (Saastamoinen zenith delay + Niell mapping) correction models.
  • Orbis.GnssData — an optional product fetch/cache layer: a catalog over public archives, HTTPS (Req) and FTP downloads, an atomic on-disk cache with SHA-256 integrity and provenance sidecars, a gzip-bomb guard, and an offline mode. Includes convenience loaders that return Orbis.SP3 / Orbis.BroadcastEphemeris handles. Req is an optional dependency.
  • Orbis.GnssTime — GNSS epoch/seconds-of-week and day-of-year helpers.

Notes

  • The GNSS numerical core lives in the Rust astrodynamics / astrodynamics-gnss crate layer. Its libm-bound components (orbit and clock evaluation, ionosphere, troposphere, dilution of precision) are held to bit-exact (0 ULP) parity against pinned Python references; broadcast orbits are additionally validated against precise SP3 products. The least-squares solver's final position is a sub-micron solver-agreement result, not a 0-ULP claim.

Releases before 0.7.0 predate this changelog.