# OS
.DS_Store

# Python
__pycache__/
*.pyc
.venv/
.pytest_cache/
.ruff_cache/

# Node
node_modules/
dist/
build/

# Env & secrets
.env
.env.*
!.env.example

# Local data
uploads/
*.log

# Claude Code (personal overrides stay local; settings.json is shared)
**/.claude/settings.local.json

# Local compose override (e.g. publishing db:5432 for the migration test harness);
# never committed — docker-compose.yml stays the single source of truth (§15).
docker-compose.override.yml

# Playwright MCP artifacts (review screenshots etc.)
.playwright-mcp/

# Demo-seeder run manifest (scripts/seed_demo.py) — carries credentials, never committed
.rindo-demo-manifest.json

# KB1 golden corpus — REAL CUSTOMER FILES. scripts/kb_sweep.py and the `kbcorpus`
# test arm read this directory; nothing in it may ever be committed (real-corpus
# projections are never goldens either — tests/goldens/kb/* is synthetic-only).
# This lives here, not in .git/info/exclude, because that file is local-only: a
# fresh clone inherits nothing from it and the next machine would be unprotected.
sample/

# KB2 bench outputs — page renders + model transcriptions OF the sample/ decks
# carry the same client content. The harness defaults its output outside the
# repo ($RINDO_CONVERT_BENCH_OUT → ~/.cache/rindo-convert-bench/); this entry
# is the belt-and-braces guard for anyone pointing it inside the tree.
agents/converter/bench/out/
