# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
.venv/
venv/
ENV/

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

# OS
.DS_Store

# Whisper models (downloaded on first run)
models/
*.bin

# Test fixtures (large audio files)
tests/fixtures/*.wav
tests/fixtures/*.mp3
# Exception: the small (~93 KB) committed core-path smoke fixture (HS-32-04).
# Both CI environments read this fixed WAV — see test_core_path_smoke.py.
!tests/fixtures/core_path_smoke_16k.wav

# pmo-roadmap pre-commit contract scratch
.tmp/

# Web frontend build artifacts (HS-10-01)
web/node_modules/
web/dist/
web/.astro/
holdspeak/static/_built/

# AIPI-Lite local firmware/bridge runtime state
aipi-lite/bridge.env
aipi-lite/secrets.yaml
aipi-lite/.esphome/
aipi-lite/.venv/
aipi-lite/__pycache__/
aipi-lite/**/__pycache__/
aipi-lite/.pytest_cache/
aipi-lite/.ruff_cache/
aipi-lite/.coverage
aipi-lite/htmlcov/
aipi-lite/*.log
aipi-lite/debug_mic.wav

# Local Claude Code state + vendored design tooling (ui-ux-pro-max skill).
# Kept local on purpose — not part of the product repo.
.claude/

# Route screenshot harness output (web/scripts/shoot.mjs → `npm run shots`).
web/.shots/
