# ── Secrets — never commit ────────────────────────────────────────────────────
# Live PyPI API token used by dev/publish-*.bat
**/dev/token.txt
**/token.txt
*.pem
*.key
.env
.env.*

# ── Virtual environments ──────────────────────────────────────────────────────
.venv/
venv/
env/
**/.venv/

# ── Python build / cache ──────────────────────────────────────────────────────
__pycache__/
*.py[cod]
*.egg-info/
build/
dist/
.pytest_cache/
.mypy_cache/
.ruff_cache/

# ── Atlas debug session logs ──────────────────────────────────────────────────
# Bug reports are per-session working files, not source. README.md is kept.
debug/atlas-*.jsonl
debug/atlas-*.md
debug/latest.md

# ── Large test / sample data — on disk, not in history ────────────────────────
# 364 MB of Bakken + Vaca Muerta shapefiles. Git is not a data store; keeping
# these out is what makes the repo clonable. They stay on disk untouched.
incubator/testing-data/
**/TestingData/
*.duckdb
*.zip

# Parked experiments (see CLAUDE.md) — ~58 MB, mostly binary assets.
# Untracked, not deleted. Remove this line if you want them versioned.
incubator/archive/

# ── Editor / OS ───────────────────────────────────────────────────────────────
.idea/
.vscode/
*.swp
Thumbs.db
desktop.ini
$RECYCLE.BIN/

# ── Claude Code working state ─────────────────────────────────────────────────
.claude/worktrees/
.claude/shell-snapshots/
.claude/statsig/
.claude/todos/

# ── Scratch output ────────────────────────────────────────────────────────────
*.atlas.json.bak
*.bak-*
