# Secrets — never commit
.env

# Claude Code local settings (gitignore the directory's contents
# via /* so the directory itself stays trackable, then carve out
# the project-shared settings.json — added 2026-05-26 for the
# team-wide ruff pre-push hook. Using `.claude/` here would
# block the !.claude/settings.json re-include because git can't
# re-include a file under an excluded directory).
.claude/*
!.claude/settings.json
# Custom subagents are shared, durable assets (brand-guardian, marketing-agent
# …) — version them. Re-include the dir, then the .md definitions inside it.
!.claude/agents/
!.claude/agents/*.md

# Python
__pycache__/
*.py[cod]
*.pyo
*.pyd
.Python
*.egg-info/
dist/
build/
.eggs/
*.egg
.venv/
venv/
env/

# Docker volumes / data
data/
*.sqlite
*.db

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

# OS
.DS_Store
Thumbs.db

# Logs
*.log
logs/

# Test artifacts
.pytest_cache/
.coverage
htmlcov/

# WSL metadata garbage from Windows copy-paste (foo.png:Zone.Identifier)
*:Zone.Identifier

# Generated/temp HTML renders of the markdown review docs — never track
PRODUCT_REVIEW.html
PRODUCT_REVIEW_tmp.html
*_tmp.html

# Local-only working / handover docs + ad-hoc probes — never track
HANDOVER.md
PIPELINE_CONCURRENCY_GOVERNOR_PLAN.md
test_ocr_concurrency.py
