Skip to content

Latest commit

 

History

History
53 lines (39 loc) · 2.01 KB

File metadata and controls

53 lines (39 loc) · 2.01 KB

Contributing to crowdcheck

Thanks for your interest. crowdcheck is the contestation and calibration layer on top of last30days. Contributions to the judgment layer (stance classifiers, calibration, evidence providers) are especially welcome.

Development setup

git clone https://github.com/avnath13/crowdcheck
cd crowdcheck
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,mcp]"
python -m pytest -q

The core has no third-party dependencies, so pip install -e . and python -m pytest -q work with nothing else installed.

Where things live

  • src/crowdcheck/schema.py - the ContestationMap contract
  • src/crowdcheck/calibrate.py - the consensus and confidence math
  • src/crowdcheck/stance.py - stance classifiers (heuristic and LLM)
  • src/crowdcheck/native.py - the keyless fallback provider
  • src/crowdcheck/evidence.py - the provider registry and last30days adapter
  • src/crowdcheck/cli.py, mcp_server.py - the CLI and MCP surfaces

Adding an evidence provider

Implement fetch(claim, recency_days=30) -> (list[Evidence], MarketSignal | None) and register it in make_provider. Providers must fail softly: skip a dead or rate-limited source and print a one-line notice, never crash the run.

Adding a stance classifier

Implement classify(claim, text) -> (Stance, confidence). See PromptedLLMClassifier for a reference implementation.

Style

  • Keep the core dependency-free (standard library only). Optional integrations go behind extras in pyproject.toml.
  • Type-annotate public functions; the package ships a py.typed marker.
  • No em dashes anywhere. Use - (a hyphen with spaces). This is a hard convention across the whole repo, code and docs alike.
  • Run python -m pytest -q before opening a PR, and add tests for new behavior.

Pull requests

Keep PRs focused and describe what changed and why. Link any related issue. By contributing, you agree that your work is licensed under the MIT License.