Skip to content

Navigation Extension Guide

Use this guide when adding navigation-domain behavior: product decoding, orbit state, correction law, clock handling, estimator behavior, PPP, RTK, or scientific refusal evidence. If the work is signal substrate, receiver runtime, repository persistence, or command presentation, leave this crate.

Define the Claim First

Before choosing a module or API, write down:

  • the input product or observation and its provenance
  • constellation, signal, time system, coordinate frame, and units
  • the physical or statistical behavior being added
  • required products, geometry, state, and quality thresholds
  • successful, degraded, and refused outcomes
  • the independent reference or invariant that can distinguish a correct result from a plausible one

If these are unknown, implementation is premature.

Extension Route

flowchart TD
    claim["define scientific claim and refusal"]
    owner["choose the owning domain"]
    implementation["implement behind the domain boundary"]
    evidence["compare with independent evidence"]
    integration["check downstream consumers"]
    contract["admit a public contract if required"]

    claim --> owner --> implementation --> evidence --> integration --> contract

Choose the Owner

extension owning boundary minimum evidence
product decoder or writer format boundary realistic valid fixture, malformed input, time context, and round-trip or reference interpretation
orbit or satellite state orbit boundary broadcast or precise reference, frame and time assumptions, error budget, and unavailable-product behavior
correction or combination correction boundary independent formula or dataset, units, nominal effect, invalid combination, and missing-context refusal
environmental or antenna model model boundary model-domain bounds, reference values, required environmental context, and out-of-domain behavior
reusable filter primitive EKF boundary numerical properties independent of one solver family and explicit covariance assumptions
position or RAIM behavior position boundary accuracy, residuals, uncertainty, integrity, outlier behavior, and impossible-geometry refusal
PPP behavior PPP boundary product prerequisites, state lifecycle, convergence, quality downgrade, and refusal
RTK behavior RTK boundary differencing, ambiguity state, baseline truth, fix policy, quality, and refusal
time interpretation navigation time boundary conversion boundaries, rollover context, leap-second behavior, and ambiguous-input rejection

Keep Ownership Narrow

  • File discovery and repository lookup remain in infrastructure.
  • Sample flow, channel state, and stage scheduling remain in receiver.
  • Signal identity and code generation remain in signal.
  • Shared units, identifiers, and result records remain in core.
  • Command arguments and report wording remain in the facade.
  • Reusable filter primitives belong in the EKF boundary only when more than one estimator family needs the same mathematical contract.

Build the Evidence

Use the nearest package guide before changing behavior:

Do not generate expected values from the implementation under test. A changed tolerance must name the uncertainty or reference limitation that justifies the new bound.

Admit the Public Surface

Add an export only when another crate needs a durable navigation contract. Document it in the public API guide, record scientific and compatibility impact in the package release history, and review downstream receiver, infrastructure, and facade presentation.