Skip to content

Change Principles

Changes to bijux-gnss-nav should preserve scientific legibility, not only compile or benchmark behavior.

Change Flow

flowchart LR
    input["scientific change"]
    contract["format, model, or estimator contract"]
    evidence["solution, residual, or refusal evidence"]
    proof["reference or integration proof"]
    docs["reader route"]

    input --> contract
    contract --> evidence
    evidence --> proof
    contract --> docs

Principles

  • prefer exposing scientific families through durable public surfaces rather than making downstream crates reach into internal files
  • keep parser, correction, and estimator law near the families that own it instead of centralizing everything in one convenience module
  • add runtime or repository integration only through explicit seams, never by letting those concerns backfill into solver code
  • treat refusal paths and integrity evidence as first-class outcomes, not as second-order error handling
  • widen public API only when multiple downstream owners genuinely need a stable scientific contract

Reader Impact

reader needs to know
solver maintainer which estimator, residual, or refusal behavior changed
product-format maintainer which external product fields or validity rules changed
receiver maintainer whether observation handoff assumptions changed
evidence reviewer which proof shows scientific correctness and unsafe refusal

Warning Signs

  • a new helper is easier to describe by its caller than by its scientific role
  • a solver change adds file-path or command-default knowledge
  • product parsing begins to depend on repository layout assumptions

Review Checks

  • Does the change name the scientific family it belongs to?
  • Does validation prove the science, not only the caller route?
  • Are refusal and uncertainty semantics preserved or deliberately changed?