Skip to content

Navigation Verification Guide

Choose verification from the scientific claim, not from the size of the code change. Begin where data first acquires changed meaning, prove rejected input, then follow that meaning to the first affected estimator or consumer.

Route the Claim

flowchart TD
    claim["changed navigation claim"]
    owner{"first scientific owner"}
    format["format or message<br/>interpretation"]
    state["orbit, clock, time,<br/>or physical model"]
    correction["correction or<br/>combination"]
    estimate["SPP, PPP,<br/>or RTK"]
    integrity["integrity, residual,<br/>or uncertainty"]

    claim --> owner
    owner --> format
    owner --> state
    owner --> correction
    owner --> estimate
    owner --> integrity

The test guide maps the full families. Use the focused routes below to start; do not treat them as a universal command list.

Focused Starting Commands

Run from the repository root:

cargo test -p bijux-gnss-nav --test integration_precise_products
cargo test -p bijux-gnss-nav --test integration_time_system_conversions
cargo test -p bijux-gnss-nav --test integration_broadcast_orbit_reference
cargo test -p bijux-gnss-nav --test integration_broadcast_ionosphere_residuals
cargo test -p bijux-gnss-nav --test integration_position
cargo test -p bijux-gnss-nav --test integration_position_refusal
cargo test -p bijux-gnss-nav --test integration_position_protection_levels
cargo test -p bijux-gnss-nav --test integration_public_ppp_convergence
cargo test -p bijux-gnss-nav --test integration_rtk_baseline_accuracy
Changed meaning Start with Add before completion
Product or navigation-message decoding matching format or constellation decoder malformed input, provenance, time interpretation, and first model consumer
Time conversion or rollover time-system conversion or leap-second test constellation-specific boundary and affected orbit or estimator
Broadcast or precise satellite state matching orbit or clock reference invalid interval, frame and timescale assertions, then consuming correction or estimator
Ionosphere, atmosphere, bias, antenna, or combination model matching correction residual test sign and units, inapplicable-input case, public reference, and consuming estimator
SPP solution or weighting position test impossible geometry, outlier handling, residuals, covariance, and public station truth
Integrity or protection level matching protection-level or RAIM test fault detection, exclusion or refusal, threshold evidence, and accepted-set consistency
PPP PPP family and public convergence test prerequisites, downgrade, product policy, covariance, and stable-window evidence
RTK baseline, differencing, or ambiguity family float and fixed states, refused prerequisites, baseline truth, and downgrade evidence
Public API or package boundary guardrail plus direct public use owning scientific proof and first downstream consumer

Build Evidence in Order

flowchart LR
    source["independent source<br/>or fixture"]
    local["focused owner<br/>comparison"]
    invalid["invalid, stale, or<br/>unsupported input"]
    consumer["first affected<br/>consumer"]
    uncertainty["residual, covariance,<br/>or integrity evidence"]
    claim["bounded published<br/>claim"]

    source --> local --> invalid --> claim
    local --> consumer --> uncertainty --> claim

An independent source may be a published product, station coordinate, trusted reference output, specification-derived vector, or a separately implemented model. A fixture copied from current output is regression data, not an independent accuracy reference.

Define the Comparison

Before interpreting a numeric result, record:

  • constellation, product type, station, and fixture provenance
  • epoch, timescale, coordinate frame, and physical units
  • enabled features and estimator configuration
  • correction set and covariance assumptions
  • accepted and excluded observations
  • comparison metric, threshold, and applicable stable window

Exact comparisons protect identity, ordering, state, selection, diagnostics, and refusal. Toleranced comparisons protect physical quantities. Keep those assertions separate so a numeric budget cannot hide a semantic regression.

Cover Prerequisites and Refusal

Successful output is only half the contract. Exercise the relevant failure:

  • malformed, stale, out-of-range, or mismatched products
  • unsupported constellation, signal combination, or claim mode
  • insufficient observations or impossible geometry
  • missing reference coordinates or precise products
  • non-finite state, singular solution, failed integrity, or unresolved ambiguity

The result should preserve which prerequisite failed and whether the estimator refused or downgraded the claim. It must not return an ordinary solution with weakened meaning.

Account for Feature Scope

Precise-product support is enabled by default. A precise-product change should prove the enabled behavior and ensure the crate remains coherent without that feature. A default package pass does not prove every constellation, format, correction, estimator, or long-run scenario.

Some public-data, convergence, RTK, and stability suites are intentionally expensive. Use the repository's governed test lanes for broad verification; do not shorten an epoch window or loosen a scientific threshold to make a test fast. If expensive evidence is omitted, name the exact scenario and the claim that remains unverified.

Interpret Results Narrowly

  • Parser success proves syntax and selected semantics, not satellite-state accuracy.
  • Orbit or clock agreement proves the named product, epochs, frame, and tolerance only.
  • A correction residual proves the selected model and geometry, not every estimator.
  • SPP accuracy does not establish PPP convergence or RTK ambiguity fixing.
  • PPP convergence on one station does not establish global convergence.
  • RTK baseline accuracy does not prove every ambiguity or outage condition.
  • An integrity pass does not prove its covariance model is representative beyond the tested fault and geometry.
  • Long-run stability does not replace an independent truth comparison.

Record the Verification

Report the changed scientific invariant, exact commands, feature set, fixture provenance, frame and timescale, thresholds and worst observed values, refused or downgraded behavior, first affected consumer, and any expensive evidence not run.

Use navigation science invariants to name the contract, the format guide for parser claims, and the estimation guide for SPP, PPP, RTK, and integrity ownership.

Verification is complete when a reviewer can reproduce the focused comparison, see why invalid input cannot become a valid claim, and state precisely what the evidence does not cover.