Thank you for your interest in contributing to GenOps! This document provides guidelines for contributing to the project.
-
Clone the repository
git clone git@github.com:neerazz/genops-framework.git cd genops-framework -
Create a virtual environment
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install development dependencies
pip install -e ".[dev]" -
Run tests to verify setup
pytest tests/ -v
- Follow PEP 8 for Python code style
- Use type hints for all function signatures
- Document all public functions with docstrings
- Maximum line length: 100 characters
Use conventional commits format:
feat:New featuresfix:Bug fixesdocs:Documentation changestest:Test additions/modificationsrefactor:Code refactoring
- All new features must include tests
- All tests must pass before merging
- Target test coverage: >80%
# Run all tests
pytest tests/ -v
# Run specific test file
pytest tests/test_pillars.py -v
# Run with coverage
pytest --cov=genops --cov-report=html
# Run the demo for manual verification
python run_demo.py --quickgenops/
├── models.py # Data models and validation
├── context_ingestion.py # Pillar 1: RAG-style context
├── risk_scoring.py # Pillar 2: Risk assessment
├── canary_rollout.py # Pillar 3: Staged rollouts
├── governance.py # Pillar 4: Audit & policies
├── pipeline.py # Main orchestrator
└── simulator.py # Deployment simulation
- Fork the repository
- Create a feature branch from
main - Make your changes with appropriate tests
- Run the full test suite
- Submit a pull request with a clear description
- Tests pass locally (
pytest tests/ -v) - Demo runs successfully (
python run_demo.py --quick) - Code follows style guidelines
- Documentation updated if needed
- Commits follow conventional format
When adding new features:
- Update
README.mdif adding user-facing features - Update
REPRODUCIBILITY.mdif changing validation steps - Add inline comments for complex logic
- Include usage examples in docstrings
- Open an issue for bugs or feature requests
- Tag issues with appropriate labels
- Join discussions in existing issues
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to safer AI-powered deployments!