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

# Testing
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
.tox/
.mypy_cache/
.ruff_cache/
.pyre/
.pytype/

# IDE
.vscode/
.idea/
*.swp
*.swo
*.swn
.history/
*~
*.bak
*.orig

# Local secrets / env
.env
.env.*
!.env.example
.python-version
.tool-versions
*.local

# Editor/AI assistant artefacts that shouldn't ride into the public repo
.aider*

# Roam index
.roam/
.roam.db

# Conductor
.context/

# Entire
.entire/

# OS
.DS_Store
Thumbs.db

# Benchmark artifacts
bench-*.json
bench-repos/

# Virtual environments
venv/
.venv/
.venv_roam/
env/

# Node (benchmark workspaces)
node_modules/

# Windows artifacts
NUL

# Benchmark results (ephemeral)
benchmarks/agent-eval/results/
benchmarks/oss-eval/results/

# Build artifacts in benchmark workspaces
**/build-mingw/
**/cmake-build-*/

# Internal reports (not public)
reports/

# Internal docs (not public)
internal/

# Claude Code internal state (lockfiles, scheduled tasks, etc.)
.claude/

# dev/ has NO special rules. Everything in dev/ is public — public dev
# scripts, public docs, the example plugin subtree. Private content
# (planning memos, sprint plans, monetization research, dogfood batches,
# generated test fixtures, smoke results, scratch notes) goes under
# internal/ — the wholesale-ignored folder above. No magic.

# Stoa session profile (per-machine local state)
.stoa/

# Recheck-agent scratch dirs
.audit-tmp/

# Scratch / temporary — surface inventory dumps + ad-hoc memcheck output
.surface.json
tmp_surface.json
.tmp-memcheck/

# Cloudflare Workers dev cache (landing-page deploy artifacts)
.wrangler/
