# Virtual environments
.venv/
venv/
env/

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

# Testing
.pytest_cache/
.coverage
htmlcov/

# Audit reports — local working artifacts, regenerated each release
audits/

# Docs — internal notes, plans, and benchmark dumps. Already-tracked
# files under docs/ stay tracked; this prevents new files from being
# added to git.
docs/

# Benchmarks — already-tracked scripts/configs stay tracked; new
# benchmark output, repo clones, and intermediate artifacts ignored.
# Exception: the calibration label sets are a versioned scientific artifact,
# so the eval_data/calibration/** tree is explicitly re-included. Using
# `benchmarks/*` (not `benchmarks/`) lets git descend so the negations below
# can take effect.
benchmarks/*
!benchmarks/eval_data/
benchmarks/eval_data/*
!benchmarks/eval_data/calibration/
!benchmarks/eval_data/calibration/**

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

# OS
.DS_Store
Thumbs.db

# Temporary / scratch files
_create_resolution.py
_gen_test.py
_test_b64.txt
_write_test.py

# IDE / editor
.cursor/
.claude/

# Local Claude Code working instructions (not shipped)
CLAUDE.md

# ML training artifacts (never commit — multi-GB)
ml/all_symbols.json
ml/claude_training_pairs.json
ml/llm_training_pairs.json
ml/m5_*.json
ml/m5_programmatic_pairs.json
ml/m5_*.pt
ml/.claude_batch_state.json
ml/.repo_cache/

# Generic ML data extensions
*.pt
*.ckpt

# Developer-specific shell helpers
grafyx_start.sh

# Benchmark harness — only scripts, pinned_commits.json, and the
# eval_data/calibration label sets are tracked (see the benchmarks/* block
# above; eval_data/calibration is re-included there).
benchmarks/repos/
benchmarks/results/

# One-shot ONNX conversion output (large, uploaded to HF, not committed)
ml/coderankembed_onnx_out/
