sidereon_core/estimation/mod.rs
1//! GNSS estimation substrate (Phase-2).
2//!
3//! The Phase-2 redesign collapses the three thick estimator stacks
4//! (`spp`, `rtk`/`rtk_filter`, `precise_positioning`) onto one shared estimation
5//! substrate plus thin, runtime-selectable strategies. The mechanism that keeps
6//! every external reference bit-exact through the migration is the NAMED recipe:
7//! a strategy selects the floating-point operation order it needs by enum value,
8//! never by owning a private copy of a parity-sensitive helper.
9//!
10//! P0 landed [`recipe`] - the taxonomy of operation-order variants, each
11//! documented against the current code path it names and defaulting to current
12//! behavior. P1 adds [`substrate`] with the frame and range kernels; P2 adds the
13//! parameter layout, the weighted measurement row, the measurement covariance
14//! block, and the normal-equation assembler; P3 adds the shared ambiguity and qc
15//! kernels, all routed through by the existing strategies via their current
16//! recipe. P4 adds [`strategies`]: the runtime [`StrategyId`] selector
17//! ([`strategies::estimate`]) that resolves a strategy into its recipe and
18//! screen/ambiguity policy data and dispatches to the technique's reference
19//! entry point, leaving every existing 0-ULP golden unchanged.
20
21pub mod recipe;
22pub mod strategies;
23pub(crate) mod substrate;
24
25pub use recipe::{
26 AmbiguityIdPolicy, DifferencingMode, EstimationRecipe, FrameRecipe, NormalRecipe,
27 PartialResolution, RangeRecipe, ReferenceTarget, ResidualNormRecipe, SagnacRecipe, ScreenKind,
28 SolverRecipe, StrategyId, Technique,
29};
30pub use strategies::{
31 estimate, EstimateError, EstimateInput, EstimateOptions, EstimateOutput, ResolvedStrategy,
32};