We welcome contributions that improve correctness, performance, and developer experience.
- Ensure Python 3.10+ is available (CI runs 3.10 and 3.11).
- Install dev deps and hooks:
make dev. - Verify setup:
make testandmake lint.
- Format with
ruff formatand lint withruff check(seemake format,make lint). - Strict typing with MyPy (
make typecheck). - NumPy-style docstrings where appropriate.
- Create a feature branch and open a PR to
main. - Keep changes focused; update docs and tests as needed.
- Ensure CI is green on Linux and Windows; avoid breaking parity.
- Run
make testlocally (prints coverage to terminal). - Add tests for new logic; mirror patterns under
tests/. - For algorithm changes, validate parity:
python scripts/compare_parity.py.
Before requesting review on algorithm or orchestration work, ensure the parity
Definition of Done (originally tracked in
docs/archive/status/DOD_CHECKLIST.md) is satisfied:
- ✅ All five algorithms match NEDC metrics on the full parity dataset (verify
with
pytest tests/validation/test_integration_parity.py -xvsandpython scripts/ultimate_parity_test.py). - ✅ FA/24h calculations flow through
nedc_bench/utils/metrics.py::fa_per_24hin code and scripts—no custom implementations. - ✅ Regression tests for historical bugs stay green (see algorithm-specific
notes in
docs/algorithms/). - ✅ CI-ready:
make lint typecheck testpasses locally and on GitHub Actions. - ✅ Documentation updates accompany behavioural changes—especially
docs/reference/parity.mdand the algorithm troubleshooting sections.
Use the list above as a quick gate; the full audit trail remains in the archive for historical reference.