Thank you for your interest in contributing. This guide covers everything you need to get started.
- Python 3.11+
- A Redis-compatible store running locally — Valkey (recommended) or Redis 7+
- Git
git clone https://github.com/sriti-ai/sriti-core.git
cd sriti-core
# Using a virtual environment
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Or with conda
conda create -n sriti python=3.11
conda activate sriti
pip install -e ".[dev]"# Unit tests only (no external services required)
pytest tests/ -q
# Include integration tests (requires Valkey/Redis and LLM API keys in .env)
pytest tests/ -q --run-integrationAll tests must pass before a PR can be merged. The CI gate runs the unit suite only.
- Follow the conventions already in the codebase — consistent naming, docstrings on public functions, type hints throughout.
- Do not introduce new runtime dependencies without opening a discussion issue first. The dependency footprint is deliberately kept lean.
- No reformatting passes on unrelated code in a PR.
| Type | Prefix | Example |
|---|---|---|
| New feature | feature/ |
feature/streaming-cache |
| Bug fix | fix/ |
fix/cold-start-tie-break |
| Documentation | docs/ |
docs/policy-yaml-reference |
| Refactor | refactor/ |
refactor/engine-dispatch |
- For non-trivial changes, open a GitHub Issue first to discuss the approach.
- Keep PRs focused — one logical change per PR.
- Write or update tests for any changed behaviour.
- Ensure
pytest tests/ -qpasses locally before opening the PR. - Fill in the PR description — what changed and why.
Open a GitHub Issue with:
- A minimal reproduction case
- The Python version and OS
- The full traceback if applicable
Open a GitHub Issue tagged enhancement. Describe the use case, not just the feature — it helps frame the discussion.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.