Skip to content

Contributing

Development setup

python3.12 -m venv .venv
.venv/bin/pip install -e ".[dev]"
scripts/check.sh              # format check, lint, mypy --strict, tests
python scripts/run_examples.py

Before committing: ruff check --fix . && ruff format . then scripts/check.sh.

Pull requests

  • One logical change per PR, with tests. Every feature needs tests; property-based tests (Hypothesis) are welcome for invariants.
  • Use conventional commit messages (feat:, fix:, perf:, docs:, test:, ci:).
  • Keep the core free of network calls, API keys and heavy dependencies; optional integrations go behind extras.

Mechanism and policy contributions

  • Must be deterministic functions of their inputs and serialisable via to_spec() (replay depends on both).
  • Document rules, payments, assumptions and limitations in docs/mechanisms.md.
  • Do not claim truthfulness, efficiency or optimality unless the documentation states the exact assumptions under which it holds for this implementation.

Research and benchmark contributions

  • Experiments must be YAML configs with a stated hypothesis and seed.
  • Commit generated reports only from a clean working tree, and keep conclusions within what the report shows. Never edit benchmark or result numbers by hand.

Architecture changes

Open an issue first for changes to core models, the auction state machine, event schemas or the storage schema (which needs a new migration, never an edited one).

Security

See SECURITY.md; report vulnerabilities privately.