Thank you for your interest in contributing to ATLAS! This document provides guidelines for contributing to the project.
Before opening an issue:
- Search existing issues to avoid duplicates
- Check the troubleshooting guide
- Gather relevant information:
- ATLAS version/commit hash
- Operating system and version
- GPU model and driver version
- Output of
kubectl get pods - Relevant logs
When opening an issue:
- Use a clear, descriptive title
- Describe the expected vs actual behavior
- Provide steps to reproduce
- Include logs and configuration (remove secrets!)
Feature requests are welcome! Please:
- Describe the use case and problem you're solving
- Explain how your feature would work
- Consider implementation complexity and trade-offs
- Check existing issues/PRs for similar changes
- For major changes, open an issue first to discuss
- Fork the repository and create a feature branch
# Clone your fork
git clone https://github.com/<your-username>/atlas.git
cd atlas
# Create feature branch
git checkout -b feature/your-feature-name
# Copy configuration
cp .env.example .env
# Edit .env if you need to change model path or ports
# Run tests before making changes
python tests/validate_tests.py- Follow existing code style and patterns
- Write tests for new functionality
- Update documentation as needed
- Keep commits focused and atomic
- Write clear commit messages
component: short description (50 chars max)
Longer description if needed. Explain what and why,
not how (the code shows how).
Fixes #123
Examples:
geometric-lens: add project caching for faster queriessandbox: increase default timeout to 90sdocs: add GPU troubleshooting section
- Ensure all tests pass:
python tests/validate_tests.py - Update CHANGELOG.md if applicable
- Push to your fork
- Open a pull request with:
- Clear title and description
- Link to related issues
- Test results
- Address review feedback promptly
- Explain your decisions when disagreeing
- Request re-review after making changes
- Follow PEP 8
- Use type hints for function signatures
- Document public functions with docstrings
- Maximum line length: 100 characters
def process_chunk(
content: str,
file_path: str,
start_line: int,
) -> dict[str, Any]:
"""
Process a code chunk for vector storage.
Args:
content: The chunk text content
file_path: Source file path
start_line: Starting line number
Returns:
Dictionary with chunk metadata and embedding
"""
...- Use shellcheck for linting
- Quote variables:
"$var"not$var - Use
[[for conditionals - Add comments for non-obvious logic
#!/bin/bash
set -euo pipefail
# Check if model file exists
if [[ ! -f "$MODEL_PATH" ]]; then
echo "Error: Model not found at $MODEL_PATH" >&2
exit 1
fi- Use 2-space indentation
- Add resource limits to all containers
- Use meaningful names and labels
- Use Markdown for all documentation
- Include code examples where helpful
- Keep language clear and concise
- Update table of contents when adding sections
# Run all tests
python tests/validate_tests.py
# Run specific test file
pytest tests/v3/test_plan_search.py -v
# Run with coverage
pytest tests/ --cov=. --cov-report=html- Place tests in
tests/directory - Name test files
test_*.py - Use descriptive test function names
- Test edge cases and error conditions
def test_chunk_overlap_preserves_context():
"""Verify chunk overlap includes surrounding lines."""
chunks = chunk_file(content, chunk_size=100, overlap=20)
# Verify overlap exists
assert chunks[0].end_line >= chunks[1].start_line- New features must include tests
- Bug fixes should include regression tests
- Maintain or improve test coverage
When proposing architectural changes:
- Document the problem and proposed solution
- List alternatives considered
- Explain trade-offs
- Consider backwards compatibility
- Update architecture documentation
Releases are handled by maintainers:
- Update version in relevant files
- Update CHANGELOG.md
- Create git tag
- Build and push container images
- Create GitHub release
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) (see LICENSE).
By submitting a contribution (pull request, patch, or any other form), you agree to the following terms:
- Your contributions are accepted under the same license as the project: AGPL-3.0.
- You retain copyright of your contributions.
- You grant the project maintainer (Isaac Tigges) a perpetual, irrevocable, worldwide, royalty-free license to use, modify, and distribute your contributions under the project license.
- You represent that you have the legal right to grant this license and that your contributions do not infringe on any third-party rights.
- Check existing documentation
- Search closed issues
- Open a discussion for general questions
Thank you for contributing!