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.