# Environment
.env
.env.*
!.env.example
*.local

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
.venv/
venv/
env/
ENV/

# Test & tooling caches
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
coverage.xml
htmlcov/

# Project runtime data (indices, parsed artifacts, captions, etc.)
# The library writes here at runtime; not part of source distribution.
/data/
/indexes/
/parsed/
/captions/
/documents.jsonl
/run_report.json
/eval_report.json
# Background-task history + asset index (runtime SQLite / append-only
# logs written to $MM_ASSET_RAG_HOME). Listed here defensively in case
# anyone points MM_ASSET_RAG_HOME at a path inside the repo.
/tasks.db
/tasks.db-journal
/tasks.jsonl
/tasks.jsonl.last
/asset_index.jsonl

# Sample assets and developer fixtures kept locally for manual testing.
# The full `examples/data/chapter11_assets/` subtree (sample PDFs +
# photos, ~170 MB) is intentionally not tracked: it bloats every clone
# and is not required now that the project is upload-first. It was
# removed from the index so this rule now takes effect; the files may
# still exist on disk locally if pulled before the cleanup.
/examples/data/

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

# Claude Code tooling state: per-user `.claude/` cache + the root
# `CLAUDE.md` AI working guide. Both are kept local-only (not committed) —
# CLAUDE.md is a per-developer AI assistant guide, not project docs for
# human readers, so it stays on each machine.
.claude/
/CLAUDE.md

# Personal eval/debug snapshots — point-in-time records of one corpus run,
# not maintained as docs. Kept locally for reference, not published.
/docs/eval-report.md

# Knowledge graph cache generated by the graphify hook. Safe to delete;
# rebuilt from source on the next `graphify --update` or via the
# `.git/hooks/post-commit` hook.
graphify-out/
