# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.venv/
venv/
.env
.env.*
!.env.example

# Java (Maven build output — `mvn test` in sdks/java writes here)
target/

# IDE
.vscode/
.idea/
*.swp

# OS
.DS_Store
Thumbs.db
nul

# Claude Code (keep shared configs, ignore local/transient)
.claude/settings.local.json
.claude/history/
.claude/plans/
.claude/projects/
.claude/todos/

# Node / TypeScript
node_modules/
.vite/

# Project
*.log

# Generated reports
gaas-cost-audit.html

# Super admin credentials (contains passwords)
SUPER_ADMIN_CREDENTIALS.txt

# Local development scripts (not part of tracked codebase)
scripts/test-*.py
scripts/diagnose-*.py
scripts/send-*.py
scripts/trigger-*.py
scripts/uat-*.py
test_results_*.json
tests/e2e/

# Local trash can (never committed)
gaascan/

# uv.lock — NOT this project's lock file. Dependency locking is pip-tools
# (requirements.lock / requirements-dev.lock, both hash-pinned). An orphaned
# uv.lock sat here from Mar–Aug 2026 and was the ONLY Python manifest Dependabot
# parsed, so all 24 pip alerts anchored to a file nothing installed from — see
# gotcha #68. `uv run` (docs/README.md) regenerates it on demand; ignoring it
# stops that resurrecting the orphan.
uv.lock

# Local planning docs (never committed)
.planning/

# Confidential business & sales documents
docs/business/
docs/sales/

# Session artifacts (Claude Code working docs)
/DAY_*.md
/DAYS_*.md
/HANDOFF_*.md
/think_tank.md

# Auto-generated test reports
apps/dashboard/playwright-report/
apps/dashboard/test-results/
apps/dashboard/e2e/screenshots/

# Test artifacts
.coverage
.coverage.*
htmlcov/

# Scheduled-agent output written to the repo by mistake.
# These routines address output relative to their working directory; when that
# changes they leave a copy behind here. Canonical homes are ~/Documents/... —
# see docs/maintenance/untracked-consolidation-plan-2026-08-22.md
.scheduled-fallback/
/Documents/
