Architecture Risks¶
The biggest structural risk in bijux-gnss-infra is honest overreach. The
crate sits at a legitimate aggregation boundary, so almost every convenience
argument sounds plausible.
Risk Map¶
flowchart LR
command[command workflows] --> infra[infra repository contracts]
receiver[receiver artifacts] --> infra
nav[nav products] --> infra
signal[raw-IQ metadata] --> infra
infra --> state[datasets, run layout, manifests, reports, history]
infra --> review[artifact inspection and validation adapters]
Infra owns repository state and inspection after product behavior has produced data. It should not redefine the product meaning that command, receiver, nav, signal, or core crates own.
Highest-Risk Changes¶
- glue-bucket growth: unrelated helpers pile in because the crate already touches many surfaces
- boundary confusion: payload meaning from core or runtime behavior from receiver gets silently redefined here
- hidden command policy: command-specific workflow choices harden into repository contracts
- unstable persisted footprint: manifests, reports, or histories drift without being treated as durable contracts
- validation overclaim: repository-side checks are presented as end-to-end scientific proof
Review Triage¶
| change shape | risk to inspect | better destination when it is not infra-owned |
|---|---|---|
| dataset or capture metadata | signal or receiver behavior gets encoded as repository policy | bijux-gnss-signal or bijux-gnss-receiver |
| manifest, report, or history field | product semantics move into persistence naming | product owner plus bijux-gnss-core for shared records |
| artifact inspection | producer-owned meaning is reinterpreted after persistence | producing crate or bijux-gnss-core payload validation |
| override or sweep behavior | command UX or experiment policy becomes hidden infra behavior | command owner or explicit experiment contract |
| validation adapter | validation result is treated as full product proof | receiver, nav, or command proof in addition to infra proof |
Proof To Request¶
crates/bijux-gnss-infra/docs/ARCHITECTURE.mdfor module and ownership shape.crates/bijux-gnss-infra/docs/CONTRACTS.mdfor repository contract family.crates/bijux-gnss-infra/docs/RUN_LAYOUT.mdfor persisted footprint changes.crates/bijux-gnss-infra/docs/DATASETS.mdfor dataset and capture provenance changes.crates/bijux-gnss-infra/tests/integration_guardrails.rsfor layering guardrails.
Reject infra changes that are only justified by "many callers need it." The question is whether many callers need the same repository-state interpretation.