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

# Virtual environments
.venv/
venv/
env/

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

# Editors / OS
.idea/
.vscode/
*.swp
.DS_Store

# vnx artifacts
vnx-baseline.json
# ...but OUR root baseline is committed on purpose: self-scan.yml dogfoods
# the action with --baseline vnx-baseline.json (fixtures are attack patterns).
!/vnx-baseline.json
.vnx-cache/

# Local engine binary bootstrap (taint runner prefers PATH; .bin is a
# maintainer-local convenience and must never be committed)
.bin/

# Generated malicious-fixture artifacts (rebuilt by BUILD.py per fixture docs)
tests/fixtures/malicious/evasion-truncation/server.py

# Comparative benchmark (PLAN §6.4): cloned scanners, venvs, raw outputs —
# the published artifacts are docs/comparison.{md,json}, regenerated by
# scripts/compare_benchmark.py
.bench/
