# Secrets — never commit
.env
.env.local
.env.*.local

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
.venv/
venv/
env/
.python-version.local
*.egg-info/
# Build artifacts
dist/
build/
.pytest_cache/
.mypy_cache/
.ruff_cache/

# uv
.uv/

# DuckDB / SQLite data stores — NOT committed (they are large and rebuildable).
# A fresh clone regenerates them via the ingest/bootstrap scripts — see the
# README "Getting the data" section. The built wheel ships none of these.
storage/*.duckdb
storage/*.duckdb.wal
storage/*.duckdb.bak*
storage/*.sqlite
storage/*.sqlite-journal
storage/*.bak*
**/llm_cache.sqlite
storage/backups/
storage/bse_scrip_map.json
storage/dhan_scrip_master.csv
storage/nifty500_cache.json
!storage/.gitkeep

# Autoresearch loop artifacts (regenerable from log.csv + per-iter dirs)
iterations/*/
iterations/dashboard.html

# OS / IDE
.DS_Store
.idea/
.vscode/
*.swp
*.swn
Thumbs.db

# Reports + state (regenerable)
state/reports/*.html
state/reports/*.json
!state/reports/.gitkeep

# Halt flag (operational, not source)
halt.json

# Scratch / temp
*.log
*.tmp
scratch/

# Mac
.DS_Store

# Claude Code local state
.claude/
