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

# Virtual environments
.venv/
venv/
env/

# Distribution / packaging
build/
dist/
*.egg-info/
*.egg
wheels/
.eggs/

# Testing
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
coverage.xml
.hypothesis/

# Type checkers
.mypy_cache/
.pyright/
.ruff_cache/

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

# OS
.DS_Store
Thumbs.db

# autodev runtime state
.autodev/evidence/*.patch
.autodev/evidence/*.diff
.autodev/tournaments/*/a/
.autodev/tournaments/*/b/
.autodev/tournaments/*/ab/
# v0.21.0 A1: warm-start worktree pool — recycled per execute phase.
.autodev/execute_worktrees_pool/
# v0.25.0: file/symbol index — built per-workspace, never checked in.
.autodev/index.db
.autodev/index.db-shm
.autodev/index.db-wal
.autodev/index.db.lock
.autodev/index.db.building
.autodev/index.state.json
.autodev/index-build.log

# Swarm files
.swarm/

# Local caches
.cache/
*.log

# Phase-1 benchmark pilot output — transient per-run reports/workdirs; the
# operator commits only the baseline JSON + locked slice (see
# benchmarks/RUNBOOK-phase1-pilot.md), never the raw run output. Root-anchored so
# it never matches the tracked benchmarks/results/.gitkeep.
/results/

# AI agent files
.cursor/
.claude/
thoughts/
.serena/
autoreason_results

# Environment variables
.env

# Phase-4 P6 (task_009) generated 50k-file filler — synthesised by
# generate_filler.py before a run and deleted after; never committed.
benchmarks/tasks/v1/task_009_py_50k_scale/repo/filler/