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

# Secrets / local config
.env
connections.json
kb_server.json

# IDE
.vscode/
.idea/
.DS_Store

# Snapshot dumps (business data)
snapshots/

# Playwright debug screenshots
playwright/shots/

# Credential files — the bare name was not enough. A connections.json.bak-<date>
# backup (written by the config editor) slipped past `connections.json` and was
# committed to a PUBLIC repo on 2026-07-27. Match every variant, not the one name.
connections.json*
kb_server.json*
*.bak
*.bak-*
.env

# graphify build output — ~8 MB of generated artifacts (graph.json, graph.html,
# GRAPH_REPORT.md) rebuilt from the corpus on every run, so committing it stores
# a stale copy of what the source already says. Ignored as a DIRECTORY: the *.bak
# rule above already covers the repair-pass backups, but graph.json/.html carry no
# extension that any existing rule matches, and `git status` collapses the whole
# untracked directory to one line — which is exactly how a 2.8 MB file gets swept
# into a `git add -A` unnoticed.
graphify-out/
