__pycache__/
*.py[cod]
.env
.venv/
*.egg-info/
.DS_Store

# Terraform files
.terraform/
*.tfstate*
.terraform.lock.hcl
*.tfvars
!terraform.tfvars
!terraform-*.tfvars
.terraform/
.terraform.lock.hcl
crash.log
override.tf
override.tf.json
*_override.tf
*_override.tf.json

# Backend configs (bucket names only; no secrets in these files)
backend-*.tfbackend
!mvp-infra/backend-dev.tfbackend
!mvp-infra/backend-prod.tfbackend
!mvp-infra/backend-prod.example.tfbackend
!mvp-infra/backend-member-dev.example.tfbackend
!mvp-infra/backend-member-prod.example.tfbackend
!infra/org/org-backend.example.tfbackend

# Python virtual environments and test artifacts
mvp-infra/scripts/.venv/
mvp-infra/downloads/
mvp-infra/test-env/

TODO.md

# Generated PDF exports from HTML docs
docs/output/

# pnpm (created by pnpm install at repo root; do not commit)
node_modules/
.pnpm-store
**/node_modules/

# uv can create a file named "-" when -o - is used; ignore it
-

# Cursor agent plans (ephemeral; operational docs belong under docs/)
.cursor/plans/

# Agent skills installed locally via `npx skills add` (not part of the product tree)
.agents/skills/
skills-lock.json

# Local scratch (nested clones, experiments); not part of the product tree
.work/

# Literal "~" dir created when shell paths are written without tilde expansion
/~

# One-off scripts (not part of the product tree)
scripts/adhoc/

# scan-bench output (CI uploads it as an artifact)
backend/metrics.json

# Terraform-generated Lambda deployment zips
mvp-infra/lambda/*.zip
.playwright-mcp/

# Generated registry name-reservation stubs (just reserve-names-build)
/dist/
