# Workspace
node_modules/
.pnpm-store/
.turbo/
dist/
build/
coverage/
# The generic `build/` rule above ignores any directory of that name. The v2
# surface for the Build developer page lives at frontend/shell/src/v2/build/
# and is TypeScript source — not a build artifact.
!frontend/shell/src/v2/build/
.tsbuildinfo
*.tsbuildinfo

# Generated
packages/contracts/generated/

# Env
.env
.env.local
.env.*.local
.env.local.deploy-hidden
!.env.example

# PyPI publish tokens (see packages/sdk-python/.py-credentials.example)
.py-credentials
**/.py-credentials

# OS
.DS_Store
Thumbs.db

# Editor
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
.idea/

# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Local dev
tools/dev/.tmp/

.claude/
.cursor/**
!.cursor/rules/
.cursor/rules/*
!.cursor/rules/event-bus-index.mdc
!.cursor/rules/event-bus-producers.mdc
!.cursor/rules/event-bus-consumers.mdc
!.cursor/rules/async-lifecycle-sagas.mdc
!.cursor/rules/hot-path-index.mdc
!.cursor/rules/no-side-effects-on-get.mdc
!.cursor/rules/internal-skip-audit.mdc
!.cursor/rules/shell-fetch-budget.mdc
docs/*/2026*

# cognito-local writes runtime state (one local_<random>.json per user pool
# created in a dev session) to this dir. Only the baseline pool + client
# config should be tracked.
tools/dev/cognito-seed/local_*.json
!tools/dev/cognito-seed/local_dev_pool.json

# Python bytecode caches produced by local `pytest` runs in backend/services/ml-service
__pycache__/
*.pyc
*.pyo

# Local artifacts from the synthetic shadow generator
# (`backend/services/ml-service/scripts/synthetic_shadow_run.py`).
# The script writes a JSON report to whatever path the operator passes
# via --out. The default `shadow-report.json` lives at the ml-service
# root and is operator-local; never check it in. See
# `docs/runbooks/poll-shadow-promotion.md`.
shadow-report-*.json
# Python coverage database written by pytest-cov (binary, not the JSON summary)
.coverage

# Terraform — provider plugins / local state (keep *.tf and .terraform.lock.hcl tracked)
**/.terraform/
*.tfstate
*.tfstate.*
*.tfstate.backup
crash.log
crash.*.log
override.tf
override.tf.json
*_override.tf
*_override.tf.json
.terraform.tfstate.lock.info

# Operator-local demo / testing scratch (not product docs)
docs/demo/grouphug-*
docs/testing/*.xlsx
docs/testing/generate_features_vs_tiers.py
