Architecture Risks¶
bijux-gnss-receiver is where independent GNSS facts become a running
receiver. That makes it useful and dangerous: acquisition, tracking,
observation construction, optional navigation handoff, diagnostics, and runtime
artifacts all meet here. A change is risky when it makes those seams harder to
name or easier to bypass.
Risk Map¶
flowchart LR
signal[signal facts\nbijux-gnss-signal] --> runtime[receiver runtime\nbijux-gnss-receiver]
core[shared records\nbijux-gnss-core] --> runtime
nav[navigation science\nbijux-gnss-nav] --> runtime
runtime --> artifacts[run artifacts\nreceiver-owned meaning]
artifacts --> infra[persistence and indexing\nbijux-gnss-infra]
runtime --> command[operator workflow\nbijux-gnss]
The receiver should compose the graph. It should not rewrite the meaning owned by the neighboring crates.
Highest-Risk Changes¶
- the crate is broad enough that runtime convenience can slowly erase internal stage boundaries between acquisition, tracking, observations, navigation handoff, and reporting
- receiver-owned adapters over nav science can be mistaken for permission to own orbit, clock, estimator, or correction science
- runtime artifacts can attract repository semantics because they are later persisted by infrastructure
- synthetic helpers can sprawl into an informal truth system if not kept tied to receiver-boundary proof
- public re-exports can make lower-owner surfaces look receiver-owned when they are only being composed for caller convenience
Review Triage¶
| change shape | risk to inspect | better destination when it is not receiver-owned |
|---|---|---|
| new acquisition or tracking behavior | stage state leaks into signal catalogs or command policy | bijux-gnss-signal for reusable signal facts, bijux-gnss for operator selection |
| new observation or navigation handoff field | runtime record starts defining scientific model semantics | bijux-gnss-core for shared record meaning, bijux-gnss-nav for navigation science |
| new artifact field | runtime output starts naming directories, manifests, or repository history | bijux-gnss-infra |
| new simulation helper | synthetic data becomes the only proof instead of bounded receiver evidence | bijux-gnss-receiver tests plus explicit truth fixture limits |
| new public export | facade exposes a shortcut that callers will treat as a contract | api.rs only after the owner and stability promise are clear |
Proof To Request¶
crates/bijux-gnss-receiver/docs/PIPELINE.mdwhen the change moves a stage boundary or handoff.crates/bijux-gnss-receiver/docs/ARTIFACTS.mdwhen the change changes what a receiver run emits.crates/bijux-gnss-receiver/docs/REFERENCE_VALIDATION.mdwhen the change compares runtime output to truth or reference trajectories.crates/bijux-gnss-receiver/docs/BOUNDARY.mdwhen the ownership answer is not obvious from the diff.
Reject a receiver architecture change that can only be justified as "the runtime already has access to that data." Access is not ownership.