Thanks for contributing to millstone.
- Search existing issues and pull requests to avoid duplicates.
- Open an issue first for substantial changes to align on scope.
- Be respectful and follow the Code of Conduct.
- Fork and clone the repository.
- Create and activate a virtual environment.
- Install in editable mode with development dependencies:
pip install -e .[dev]
pre-commit install --hook-type pre-commit --hook-type pre-pushRun the full test suite:
pytestRun a single test:
pytest tests/test_orchestrator.py::test_function_name -vRun with coverage:
pytest --cov=. --cov-report=term-missingRun the local pre-push CI subset manually:
python -m millstone.devtools.local_ciThis mirrors the highest-signal required CI checks locally: quality gates, unit tests, coverage, package build, docs build, and an isolated install smoke test.
Run dependency security checks:
pip install -e .[security]
pip check
pip-audit- Keep PRs focused and reviewable.
- Add or update tests for behavior changes.
- Update docs for user-facing changes.
- Call out breaking changes explicitly.
- Use clear, imperative commit messages.
- Pull requests require maintainer review before merge.
- Required CI checks must pass.
- Use draft PRs while work is in progress.
- Resolve all review conversations before merge.
- Code ownership is defined in
.github/CODEOWNERS. - Maintainer responsibilities are documented in
docs/maintainer/maintainers.md.
Add eval baseline regression guardFix tasklist parser for empty context blocks
Use the issue templates:
- Bug report
- Feature request
Include expected behavior, actual behavior, reproduction details, and environment information.