contribute
Get from landing to first PR.
The gate is strict — and that's a selling point. Here's exactly what CI expects.
mypy src tests
ruff format --check .
pytest # full suite
⚠ Classic trap: mypy src alone passes locally and fails CI. You must include tests.
Start here
Grab a good first issue — pulled live from the GitHub API.
Branch off develop, never main.
Design records live in docs/specs/ — read the spec before changing a subsystem.