# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
*.egg
.eggs/

# Virtual environments
.venv/
venv/
env/

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

# Testing & tools
.pytest_cache/
.ruff_cache/
.mypy_cache/
htmlcov/
.coverage

# vstash data
*.db
vstash.toml

# ONNX model cache
.fastembed_cache/

# Experiment datasets (large, auto-downloaded by scripts)
# Regenerate with: python -m experiments.beir_benchmark
experiments/data/beir_*/
experiments/data/beir_*_raw/
experiments/data/arxiv_cache/
experiments/data/hf_cache/
experiments/data/snapvec_bench_cache/
experiments/data/wikipedia_corpus.json
experiments/data/longmemeval/

# Large test files
experiments/*.pdf
experiments/results/rrf_training_pairs.jsonl
experiments/results/rrf_training_pairs.stats.json

# Large LME corpus snapshots (regenerate via experiments.lme_prepare_retrain)
experiments/lme_retrain_full.db.gz
experiments/lme_retrain_smoke.db

# SQLite WAL / shared-memory runtime files
*.db-wal
*.db-shm

# LaTeX build artifacts
paper/arxiv/*.aux
paper/arxiv/*.log
paper/arxiv/*.out
paper/arxiv/*.toc
paper/arxiv/*.bbl
paper/arxiv/*.blg

# Claude scheduled-task lock
.claude/scheduled_tasks.lock

# Personal scratch + archived docs (local-only, never committed)
notes/
archive/

# Paper v2 draft (work-in-progress; v1 vstash.tex/pdf stays tracked)
paper/arxiv/vstash-v2.*

# macOS iCloud sync collision artefacts (e.g. "foo 2.py", "foo 3.json").
# These are auto-generated when iCloud cannot reconcile the same file
# across devices and never represent real work; the un-suffixed file
# is canonical. iCloud starts numbering at 2, so "* 1.*" / "* 0.*"
# are NOT collision markers and stay tracked (e.g. "Figure 1.png",
# "version 0.json"). Multi-digit covers the rare 10+ collision case.
* [2-9].*
* [2-9]
* [0-9][0-9].*
* [0-9][0-9]
