# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
*.egg-info/
.eggs/
*.egg

# Virtual environments
.venv/
venv/
env/

# uv
.python-version

# Tooling caches
.pytest_cache/
.ruff_cache/
.mypy_cache/
.tox/
.coverage
.coverage.*
htmlcov/
coverage.xml
*.cover

# IDE
.idea/
.vscode/
*.swp
*.swo
.DS_Store

# Editor backups
*~
*.bak

# Project-specific
tmp/

# UI frontend build artifacts — the bundle is built into
# src/tripwire/ui/static/ on release (hatch_build.py hook) and is not
# checked in. The server tolerates a missing static/ dir at runtime.
src/tripwire/ui/static/
web/node_modules
web/node_modules/
web/dist/
web/coverage/

# Vitest occasionally writes a top-level node_modules/.vite cache
# when invoked outside the frontend dir; the anchor below keeps the
# ignore narrow to the repo root only. The frontend's own .gitignore
# owns `.vite/` inside `web/`.
/node_modules/

# Worktrees
.worktrees/

# Tripwire session-local files (gitignored per project convention)
.claude/
.tripwire/
CLAUDE.md

# v0.9 workflow events log (KUI-123) — per-project, dev-time emission
# only. Each `tripwire validate` writes one row per check; we don't
# want that churn in the code-repo history. Root-anchored so it
# doesn't accidentally match the FE feature directory at `web/src/features/events/`.
/events/
