# Environment
.env
.env.local
.env.*.local
!.env.example

# Per-service env files (contain secrets)
services/*/.env
services/*/.env.local
platform/*/.env
platform/*/.env.local

# Keep .env.example files tracked
!services/*/.env.example
!platform/*/.env.example

# Go
vendor/
main
*.exe
*.exe~
*.dll
*.so
*.dylib
*.test
*.out
go.work
go.work.sum

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
venv/
.venv/
*.egg-info/
dist/
build/

# Node
node_modules/
.next/
out/
.turbo/
# TypeScript incremental-build cache. `incremental: true` with no
# tsBuildInfoFile override makes tsc write <tsconfig dir>/tsconfig.tsbuildinfo,
# so any local `tsc --noEmit -p tsconfig.json` in platform/console or
# platform/admin dirties the tree. Build output, not source: already excluded
# from the images via .dockerignore.
*.tsbuildinfo
# `npm pack` output. The publish path and scripts/verify-npm-entrypoints.mjs
# both write a real tarball next to the manifest; none of them belong in git.
*.tgz

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

# Docker
docker-compose.override.yml

# Logs
*.log
logs/

# Coverage
coverage/
*.cover
htmlcov/

# Playwright
platform/console/playwright-report/
platform/console/test-results/
platform/admin/playwright-report/
platform/admin/test-results/
node_modules

# serverless provider test keys (never commit)
*provider-keys*.local.*
.serverless-secrets.local*

# slgateway load-harness reports (scripts/slgateway-load-harness.sh writes here)
services/slgateway-service/.harness-reports/

# Live-replay scratch tests: env-injected diagnostics, NEVER committed
# (AGENTS.md "Live ops"). Local copies keep working; git stops seeing them.
*_scratch_test.go

# Terraform (deploy/azure) — state lives remotely; plans and provider caches are local artifacts
**/.terraform/
*.tfplan
*.tfstate
*.tfstate.*
