Contributing

We welcome patches that improve the physics fidelity, performance, or ergonomics of the LW Integrator. Please keep the following ground rules in mind:

  • Stay regression safe. All changes that touch physics need focused pytest coverage and, where relevant, CLI/GUI parity checks. Historical notebooks can inform investigations, but they are not the active validation baseline.

  • Document as you go. Extend the relevant page under docs/source/ when you add or change behaviour. The documentation is built as part of CI and warnings fail the build.

  • Prefer type hints and small helpers. The modern core/ modules are a transcription of the archived reference code; helper functions exist to keep the flow readable without altering the math.

  • Use the project tooling. Formatting, linting, and tests are orchestrated via pre-commit hooks and pytest. Run pre-commit install once and pre-commit run --all-files before sending a PR.

Process

  1. Fork and branch from main.

  2. Make changes with accompanying tests and documentation.

  3. Run the pytest, CLI, plotting, or docs checks relevant to your change.

  4. Submit a pull request summarising the physics context and validation output.

Reach out via the issue tracker if you plan a large refactor so we can align on scope before you begin.