Contributing to Mistaber¶
Welcome! We appreciate your interest in contributing to Mistaber, the formal symbolic reasoning system for computational halacha.
Ways to Contribute¶
- ๐ Report bugs - Open an issue describing the problem
- ๐ก Suggest features - Open an issue with your idea
- ๐ Improve documentation - Fix typos, add examples, clarify explanations
- ๐งช Add tests - Increase coverage for edge cases
- ๐ง Submit code - Fix bugs or implement features
Development Setup¶
Prerequisites¶
- Python 3.10 or higher
- Clingo ASP solver (5.6.0+)
Installation¶
# Clone the repository
git clone https://github.com/BrainyBlaze/mistraber.git
cd mistaber
# Install in development mode with dev dependencies
pip install -e ".[dev]"
# Verify installation
mistaber --help
Running Tests¶
# Run all tests
pytest
# Run specific module tests
pytest tests/engine/
# Run with coverage
pytest --cov=mistaber
# Stop on first failure (useful for debugging)
pytest -x --tb=short
Code Quality Checks¶
Pull Request Process¶
- Fork the repository on GitHub
- Clone your fork locally
- Create a branch for your changes:
- Make your changes with tests
- Run quality checks:
- Commit with a clear message following Conventional Commits:
feat: add new featurefix: resolve bug in Xdocs: update READMErefactor: restructure module Ytest: add tests for Z- Push to your fork and open a Pull Request
Code Style¶
- Line length: 100 characters maximum
- Type hints: Required for all public functions
- Docstrings: Required for public modules, classes, and functions
- Imports: Sorted by ruff (stdlib, third-party, local)
- Follow existing patterns in the codebase
Domain Knowledge¶
Mistaber deals with halachic (Jewish legal) reasoning. If you're unfamiliar with the domain:
- docs/formal/ - Formal foundations (modal logic, Kripke semantics)
- docs/guides/tutorials/ - Step-by-step tutorials
- docs/overview/ - Project overview and concepts
Don't worry if you're not a halacha expert! Many contributions (tests, documentation, tooling) don't require deep domain knowledge.
Commit Message Guidelines¶
We follow Conventional Commits:
Types: feat, fix, docs, style, refactor, test, build, ci, chore
Examples:
- feat(engine): add support for sfek sfeika resolution
- fix(cli): handle missing ontology path gracefully
- docs(tutorials): add machloket encoding example
Questions?¶
- Open an issue with the "question" label
- Check existing discussions (if enabled)
Code of Conduct¶
Please read and follow our Code of Conduct.
Thank you for contributing to Mistaber! ๐