Skip to content

Navigation Change Guide

Begin a navigation change with the scientific claim, not the module. Name the input product or observation, time system, frame, units, model assumptions, quality evidence, and accepted, degraded, and refused outcomes before choosing implementation.

Define The Claim Before The Code

flowchart LR
    claim["scientific claim"]
    inputs["inputs and provenance"]
    assumptions["time, frame, units,<br/>models, prerequisites"]
    outcomes["success, degradation,<br/>and refusal"]
    reference["independent reference<br/>or invariant"]
    owner["scientific owner"]
    implementation["implementation"]
    evidence["focused evidence"]

    claim --> inputs --> assumptions --> outcomes --> reference --> owner
    owner --> implementation --> evidence

If the expected value comes only from the implementation under test, the change does not yet have independent scientific evidence.

Choose The Maintenance Route

changed science operational route minimum evidence
Message decoder, RINEX, or precise-product parser Navigation extension guide realistic valid input, malformed input, time context, typed rejection, and semantic round trip where applicable
Orbit, clock, time, or product interpolation Change sequence independent reference, frame and epoch, coverage edges, uncertainty, and unavailable-product behavior
Atmospheric, bias, antenna, combination, or physical model Common workflows formula or dataset independent of implementation, units, domain bounds, and missing-context refusal
Position, integrity, EKF, PPP, or RTK Review scope prerequisites, lifecycle, residuals, covariance, convergence, quality, downgrade, and refusal
Public or precise-product fixture Precise product and fixture care provenance, reference epoch, frame, original data, and tolerance rationale
Focused local proof Local development and verification commands exact scientific family and bounded claim
Published behavior Release and versioning public API, accepted data, result meaning, feature behavior, and migration

Carry Evidence Through The Change

flowchart LR
    fixture["reference or fixture"]
    interpretation["format and time<br/>interpretation"]
    model["orbit, correction,<br/>or physical model"]
    estimator["estimator family"]
    result["result and refusal evidence"]
    consumer["receiver or command consumer"]

    fixture --> interpretation --> model --> estimator --> result --> consumer

A parser change that reaches an estimator needs evidence at both boundaries. An estimator-only change does not justify rewriting a parser fixture. Select proof according to where meaning moved.

Protect Fixture Integrity

  • Preserve source, license or public origin, epoch, frame, units, and any preprocessing needed to reproduce the expected value.
  • Do not broaden a tolerance until a test passes. Tie tolerance to reference uncertainty, numerical conditioning, or model limits.
  • Keep malformed and partial products alongside accepted cases.
  • Distinguish missing data, invalid data, unsupported claims, non-convergence, and integrity refusal.
  • Keep parser fixtures with format proof and solver fixtures with estimator proof.

Review Downstream Effects

Receiver decides when navigation runs, infrastructure persists results, and the command package presents them. Review those consumers when public fields, feature gates, status, quality, or refusal meaning changes. Do not move their runtime or repository policy into navigation to simplify adaptation.

Commit Boundary

Commit when one scientific family, its assumptions, implementation, accepted and refused outcomes, independent evidence, public contract, and necessary consumer adaptations agree. Keep unrelated estimator families separate even when they share mathematical helpers.

The format guide, orbit guide, correction guide, estimation guide, and test guide are the package-level authorities.