Skip to content

Known Limitations

The receiver has broad deterministic and reference-backed evidence, but its proof is bounded by input models, feature selection, runtime observability, and the distinction between in-memory results and persisted runs. These limits affect how callers should interpret success.

Limits In The Current Contract

flowchart TD
    result["successful receiver result"]
    input{"input consumed?"}
    features{"required features enabled?"}
    evidence{"expected stage evidence present?"}
    telemetry{"telemetry required?"}
    persist{"durable run required?"}
    bounded["bounded receiver claim"]
    investigate["insufficient evidence"]
    verify_sink["verify external sink"]
    infra["validate infrastructure artifact"]

    result --> input
    input -- no --> investigate
    input -- yes --> features
    features -- no --> investigate
    features -- yes --> evidence
    evidence -- no --> investigate
    evidence -- yes --> telemetry
    telemetry -- yes --> verify_sink
    telemetry -- no --> persist
    verify_sink --> persist
    persist -- yes --> infra
    persist -- no --> bounded
    infra --> bounded
limitation consequence responsible interpretation
Empty input returns an empty default artifact set rather than an error. Ok alone does not prove that any signal data was processed. Require nonzero processed counts and stage-specific evidence for claims that need execution.
Navigation is feature-gated and empty results are not self-describing. An empty navigation collection does not by itself distinguish disabled support, no attempted solution, or no emitted solution. Record the build feature set and inspect support, observations, diagnostics, and command-level attempt evidence.
Runtime sinks are best-effort. Default sinks discard events, and sink methods cannot return storage failures. Treat returned typed artifacts as receiver evidence; verify required telemetry independently.
RunArtifacts is not a versioned serialization contract. Ad hoc serialization can freeze unstable field layout without schema or migration policy. Persist through infrastructure-owned contracts and schemas.
The public API includes broad lower-owner re-exports. A source-compatible receiver facade can still hide a semantic change in core, signal, or navigation. Review the original owner and feature matrix, not only the receiver import path.
Synthetic and checked-in captures cover selected models. A passing scenario cannot establish behavior for unmodeled antennas, propagation, interference, front ends, oscillators, or field conditions. Name the scenario envelope and add independent capture evidence when the claim extends beyond it.
End-to-end receiver proof is expensive. Running only a fast stage test can miss handoff and long-duration dynamics; running only a broad test can hide the failed contract. Pair the narrowest contract test with the necessary boundary or scenario test and record deferred slow evidence.

Evidence Escalation

flowchart LR
    unit["stage-local invariant"]
    boundary["stage handoff"]
    scenario["synthetic scenario"]
    reference["independent reference or capture"]
    persisted["persisted run validation"]

    unit --> boundary
    boundary --> scenario
    scenario --> reference
    reference --> persisted

Use only as much of this chain as the claim needs:

  • a loop-filter formula change may stop at focused signal and tracking proof;
  • a changed acquisition-to-tracking field needs boundary evidence;
  • a lock or navigation accuracy claim needs a scenario with explicit truth;
  • a field-performance statement needs evidence independent of the generator used by the receiver tests;
  • a reproducibility or history statement additionally needs infrastructure validation.

The receiver change validation guide maps runtime claims to appropriate evidence. The test guide describes the major executable families.

What A Successful Run Does Not Say

A successful return does not guarantee:

  • that every requested satellite or component acquired;
  • that every channel remained locked;
  • that every observation was accepted;
  • that navigation produced a valid or stable solution;
  • that diagnostics, traces, or metrics reached external storage;
  • that returned artifacts were persisted atomically or registered in history.

Inspect the relevant candidates, channel-state reports, observation decisions, solution validity, and persisted manifest before making those claims. The state and persistence guide explains where each form of evidence ends.

Reporting A Gap

State the missing proof by physical or operational condition: for example, “validated with deterministic dual-frequency synthetic input; no independent front-end capture was evaluated.” Do not hide the gap behind “tests passed” or infer a stronger claim from the size of the test suite.