# Claude per-machine overrides (project-scoped settings.json IS committed)
.claude/settings.local.json

# gh-context binding — per-developer, set via `gh context bind <name>`
.ghcontext

# Secrets — canonical source is infra/.env, generated from infra/.env.example
infra/.env
.env
.env.*
!.env.example
!infra/.env.example

# OS
.DS_Store
Thumbs.db

# Editors
.vscode/
.idea/
*.swp
*.swo
*~

# Python
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
*.egg
.venv/
venv/
env/
.python-version

# Python tooling caches
.mypy_cache/
.ruff_cache/
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
.tox/
.nox/

# uv
.uv/

# Build artifacts
build/
dist/
*.whl
*.tar.gz

# Node
node_modules/
.pnpm-store/
.npm/

# Frontend build artifacts
.next/
.turbo/
.cache/
.tanstack/
.output/
.vinxi/

# TanStack / Vite / Vitest
.vite/
*.local

# Logs
*.log
logs/

# Experiments — per-run output is gitignored; configs are committed
**/experiments/runs/

# MLflow / TensorBoard local stores
mlruns/
mlartifacts/
runs/
tensorboard/

# SkyPilot local state
.sky/

# Misc
*.tmp
*.bak

# Scratch — spike scripts and other ephemeral artifacts (skill §4 Gate 1 keeps verified output in `docs/specs/<slice-id>/spike.md`)
tmp/

# Parallel-ops worktrees — per-machine, never committed (ADR-0015)
worktrees/

# Dashboard write lock — per-machine, never committed (ADR-0019)
.bodhi-locks/
