Skip to content

Package Overview

bijux-gnss-core is the shared language of the GNSS workspace. It defines identities, units, time, observations, navigation results, diagnostics, support records, and artifact envelopes before higher packages add algorithms, execution, persistence, or operator policy.

Core is useful because it is restrictive. A contract belongs here only when multiple packages need the same meaning and that meaning survives independently of any one workflow.

Where Core Sits

flowchart LR
    producers["signal, navigation,<br/>receiver"]
    core["shared core contracts"]
    consumers["receiver, infra,<br/>command, tools"]
    artifacts["versioned artifacts"]

    producers --> core --> consumers
    core --> artifacts --> consumers

The arrows describe exchange, not ownership transfer. Receiver may produce a tracking epoch and navigation may produce a solution epoch, but core owns the shared record semantics that let other packages consume those results.

Use Core When

need core is the right owner when
identity or unit every caller must agree on the same constellation, signal, time scale, coordinate frame, or physical quantity
pipeline record a result crosses package boundaries without carrying one stage's implementation state
diagnostic code, severity, fields, and aggregation need stable machine-readable meaning
artifact payload serialized records need explicit version and validation behavior
support declaration runtime, infra, and commands need one inventory vocabulary
pure helper the operation defines shared scientific meaning and requires no runtime, filesystem, or solver policy

Keep The Concern Elsewhere

  • Signal catalogs, code generation, sample conversion, and DSP belong in signal.
  • Orbit products, physical corrections, estimators, PPP, and RTK belong in navigation.
  • Stage orchestration, channel lifecycle, ports, and runtime diagnostics belong in receiver.
  • Dataset discovery, run layout, manifests, and artifact inspection belong in infra.
  • Commands, flags, workflow selection, and report wording belong in the command package.

A concern does not become core merely because two functions use it. The semantics must be shared, durable, and independent of both callers.

What Downstream Readers Can Rely On

  • Public contracts are imported through bijux_gnss_core::api.
  • Implementation modules remain private.
  • Units, time, coordinates, validity, and refusal state should be explicit in exchanged records.
  • Versioned artifact meaning is owned here; repository placement is not.
  • Shared diagnostics remain structured rather than being reduced to display text.

Continue Reading

Use Scope and Non-Goals for ownership disputes, Shared Concepts for the common vocabulary, and Ownership Boundary before admitting a new contract. For implementation structure, continue to the Module Map. For public or serialized changes, open Public Imports and State and Serialization.