# Build outputs - NEVER commit these
dist/
build/
*.egg-info/
*.egg
*.whl

# Python bytecode
__pycache__/
*.py[cod]
*$py.class
*.so

# Virtual environments
venv/
env/
.venv/
.venv-ci*/
.env/

# IDE
.idea/
.vscode/
*.swp
*.swo
*~

# Testing
.pytest_cache/
.coverage
coverage.xml
htmlcov/
.tox/
.nox/

# hfl runtime data (user-specific)
.hfl/

# OS files
.DS_Store
Thumbs.db

# Logs
*.log

# Local configuration
.env
.env.local
*.local.yaml
*.local.yml

# Jupyter
.ipynb_checkpoints/

# mypy
.mypy_cache/

# ruff
.ruff_cache/

# Internal planning docs
IMPROVEMENT_PLAN*.md
ARCHITECTURE_IMPROVEMENT_PLAN*.md
OLLAMA_PARITY_PLAN*.md
local/
coverage.json

# uv lockfile. Deliberately NOT tracked: hfl is a published library, so what
# users resolve comes from the ranges in pyproject.toml and a lock would not
# reach them. Nothing in the repo reads it either — every workflow and
# scripts/ci-local.sh install with `pip install -e ".[dev]"`. Committing it
# would add ~1.8 MB that goes stale with nothing to catch it. Revisit only
# alongside switching CI to `uv sync --frozen`.
uv.lock

# Claude Code (local agent tooling — not part of the project)
CLAUDE.md
.claude/
RELICENSE-VERIFICATION.md
