# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
build/
dist/
.venv/
.venv-*/
venv/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/

# uv
uv.lock

# Node
node_modules/
.pnpm-store/
*.tsbuildinfo

# Playwright (conformance e2e) artifacts
test-results/
playwright-report/
blob-report/
playwright/.cache/
.last-run.json

# Local frontend template render checks
apps/example/_frontend_tpl_check/

# Editor / OS
.DS_Store
.idea/
*.local

# Local environment overrides — never commit (a real .env may hold SECRET_KEY).
# The tracked template is `.env.example`.
.env
.env.*
!.env.example
!.env.example.jinja
# Rendered app-declared variables (environment.schema.json) — may hold secrets.
.app.env
# `terp smoke`'s throwaway database. Left in place deliberately after a failure — it is
# the state the chain died on — so it must not show up as an untracked file.
.terp-smoke.db

# graphify: a knowledge graph an agent builds FROM this repository. Derived
# data that is rebuilt on demand and goes stale the moment the code moves.
graphify-out/

# Playwright browsers recorded to a repo-local path. Needed rather than optional on
# Windows: the default location under %LOCALAPPDATA% is refused execution by Group
# Policy on a managed machine ("spawn UNKNOWN" with the binary present and complete),
# so recording the win32 half of a baseline pair requires PLAYWRIGHT_BROWSERS_PATH
# pointing somewhere policy allows. 700MB, and nothing in the repo should ever carry it.
apps/workbench/.playwright-browsers/
