Files
galileo/docs/development_phases.md
T

68 lines
3.5 KiB
Markdown

# Phase gates and reproducible commands
The project was implemented in six gates. These are the exact command shapes
used to validate each gate; the final regression reruns their union.
## Phase 1
```bash
python -m pytest tests/unit/test_config.py tests/unit/test_signals.py
python examples/generate_e1_signal.py
```
## Phase 2
```bash
python -m pytest tests/unit/test_frontend.py tests/unit/test_acquisition_metrics.py tests/unit/test_acquisition_parallelism.py tests/integration/test_acquisition.py tests/integration/test_long_integration.py
python examples/run_acquisition.py
```
## Phases 3 and 4
```bash
python -m pytest tests/unit/test_discriminators.py tests/unit/test_loop_filters.py tests/unit/test_correlator.py tests/integration/test_tracking.py
python examples/run_tracking.py
python examples/run_complete_receiver.py
```
## Phase 5
```bash
python -m pytest tests/unit/test_fixed_point.py tests/unit/test_fixed_fft.py tests/integration/test_fixed_acquisition.py tests/regression/test_complete_receiver.py
python -m galileo_rx.cli compare-fixed --config configs/acquisition_example.yaml --input samples.bin
```
## Phase 6 and final regression
```bash
python -m pytest tests/unit/test_rtl_model.py tests/unit/test_vector_export.py
python -m pytest
```
The CLI smoke sequence is:
```bash
python -m galileo_rx.cli generate --config configs/acquisition_example.yaml --duration-ms 60 --prn 1 --output samples.bin
python -m galileo_rx.cli acquire --config configs/acquisition_example.yaml --input samples.bin --output acquisition.json
python -m galileo_rx.cli track --config configs/tracking_example.yaml --input samples.bin --acquisition-result acquisition.json --output tracking.csv
python -m galileo_rx.cli run --config configs/acquisition_example.yaml --input samples.bin
python -m galileo_rx.cli compare-fixed --config configs/acquisition_example.yaml --input samples.bin
```
## E1B I/NAV pre-PVT gate
```bash
python tools/generate_signalsim_vectors.py --signalsim-path signalsim/SignalSim --vector navigation_multisat --project-root .
python -m galileo_rx.cli collect-navigation --config configs/navigation_collection.yaml --output-dir reports/navigation_run --require-ready
python -m galileo_rx.cli prompts-to-symbols --input verification/navigation/signalsim_navigation_multisat/prn_01/prompt_epochs.npz --prn 1 --output-dir reports/navigation_replay/prn_01
python -m galileo_rx.cli decode-inav --input verification/navigation/signalsim_navigation_multisat/prn_01/prompt_epochs.npz --prn 1 --output-dir reports/navigation_replay/prn_01
python -m galileo_rx.cli inspect-navigation --input reports/navigation_replay/prn_01
python -m galileo_rx.cli compare-inav-truth --artifact-root verification/navigation/signalsim_navigation_multisat --rinex signalsim/SignalSim/EphData/BRDC00IGS_R_20211700000_01D_MN.rnx --collection-report reports/navigation_run/inav_collection_report.json --signalsim-config verification/vectors/signalsim/navigation_multisat/generated_config.json --output-dir reports
MPLBACKEND=Agg python -m pytest tests/navigation tests/integration/test_signalsim_inav_symbols.py tests/integration/test_signalsim_inav_pages.py tests/integration/test_signalsim_inav_ephemeris.py tests/integration/test_multisat_navigation_collection.py
MPLBACKEND=Agg python -m pytest
```
The RF `.bin` vector is regenerated locally and remains ignored; its committed
configuration, metadata, SHA-256 tag, log, and compact prompt-to-ephemeris
artifacts make the gate reproducible without checking in hundreds of megabytes.