sidereon 0.8.0

Thin ergonomic API over sidereon-core: SP3 loading and SPP/RTK/PPP positioning solves with rich result structs and one error enum
Documentation
# sidereon

A thin, ergonomic Rust API over the [`sidereon-core`](../sidereon-core) engine.

It adds no modeling logic of its own: every function delegates to a
`sidereon-core` reference entry point and re-exports its result structs, so the
numerical behavior is identical to calling the core directly. What it provides is
a small human surface:

- `load_sp3` parses a precise SP3 ephemeris product.
- `parse_antex` / `load_antex` parse ANTEX antenna calibration products.
- `parse_rinex_nav` / `load_rinex_nav` parse RINEX navigation products.
- `parse_rinex_obs` / `load_rinex_obs` parse RINEX observation products.
- `parse_rinex_clock` / `load_rinex_clock` parse RINEX clock products, with
  lossy variants for best-effort recovery.
- `decode_crinex` / `load_crinex` expand Hatanaka-compressed observation files.
- `solve_spp` runs single-point positioning.
- `solve_velocity` solves receiver ECEF velocity and clock drift from range-rate
  or Doppler observations.
- `solve_rtk_float_with` / `solve_rtk_fixed_with` solve static RTK baselines
  from typed configs; `solve_rtk_float` / `solve_rtk_fixed` remain the
  lower-level positional forms kept for bindings.
- `solve_ppp_float_with` / `solve_ppp_fixed_with` solve static PPP arcs from
  typed configs; `solve_ppp_float` / `solve_ppp_fixed` remain the lower-level
  positional forms kept for bindings.
- GNSS utility modules including `frequencies`, `combinations`, `quality`,
  `carrier_phase`, `signal`, `velocity`, `broadcast_comparison`, `constants`,
  `navigation`, `geometry`, and `dgnss` are re-exported from `sidereon-core`.
- `astro` exposes astrodynamics modules for TLE/SGP4 propagation, numerical
  propagation, time/frame conversions, Sun/Moon positions, RF link budgets,
  eclipse events, conjunction/covariance utilities, TCA screening, and CDM/OMM
  parsing.
- root-level `tle`, `sgp4`, `passes`, `tca`, `propagator`, and `state` remain
  shortcuts to the matching `astro` modules.
- core domain modules including `antex`, `rinex`, `ephemeris`, `positioning`,
  `rtk_filter`, `precise_positioning`, and `observables` are available from the
  same crate root as the wrappers.
- one `Error` enum unifies product parsing/loading and every solve failure.

```rust
let parsed = sidereon::load_sp3(b"not a valid sp3 file");
assert!(matches!(parsed, Err(sidereon::Error::Sp3(_))));
```

MIT licensed.

## Attribution

The engine's SGP4 propagation is a Rust port of David Vallado's reference implementation (credit: David Vallado, AIAA 2006). See the `sidereon-core` crate for full attribution.