# Environments / secrets
.env
.env.*
!.env.example

# Installer-generated, per-host GPU sizing (issue #96); regenerated on install.
compose.hardware.yaml

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

# Natively-built review-console islands: the Dockerfile builds the Vite output
# inside the image, but the native launcher (scripts/native/voxint-native.sh)
# stages it into this tracked assets dir on the host -- ignore the build output,
# keep the .gitkeep so the directory still ships.
/src/voxint/api/static/app/*
!/src/voxint/api/static/app/.gitkeep

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

# Local data (repo-root media dir only — not src/voxint/media)
/media/
*.wav
*.mp3
*.mp4
*.mkv
*.flac
*.m4a
# Except the bundled guided-tutorial sample (package data, must ship in the wheel).
!src/voxint/tutorial/assets/*.wav
!tests/parity/fixtures/corpus/*.wav
# Except the synthetic (CC0) whisper-bakeoff fixtures — silence/bait/short-clean
# audio IS committed (like the parity corpus); AMI/TED audio never is (the global
# *.wav rule keeps it out even if it lands in the tree).
!tests/parity/fixtures/bakeoff/synthetic/*.wav
# ONNX export artifacts (regenerated via tools/export_titanet_onnx.py; sha256 in
# tests/parity/fixtures/onnx/provenance.json).
services/titanet/models/
# Vendored pyannote checkpoints (fetched from the pyannote-models-v1 asset
# release; sha256s in services/pyannote/models/provenance.json — the config
# and provenance files ARE tracked, only the checkpoints stay out of git)
services/pyannote/models/*.bin
# Vendored bundled-LLM GGUF (fetched from the qwen3-4b-instruct-2507-q5-v1
# asset release; sha256 in services/llama-cpp/provenance.json — the Dockerfile,
# provenance, and NOTICE ARE tracked, only the 2.89 GB weight stays out of git)
services/llama-cpp/models/*.gguf
# Vendored MiniLM text-embedding weights for the semantic-search spine (#121;
# fetched from the minilm-onnx-v1 asset release; sha256s in
# src/voxint/embeddings/models/provenance.json — provenance IS tracked, the
# ~470 MB FP32 model.onnx + tokenizer.json stay out of git). vendor/minilm is
# the maintainer dev/test location the embedder + equivalence gate point at.
vendor/minilm/
src/voxint/embeddings/models/*.onnx
src/voxint/embeddings/models/*.json
!src/voxint/embeddings/models/provenance.json

# Maintainer-internal notes: a SEPARATE private repo nested here (never part
# of this public repo; see CLAUDE.md "Internal notes").
/internal/
# Session prompts symlink into internal/ — session tooling writes here.
/docs/session-prompts

# Browser E2E lane scratch: Playwright MCP writes snapshots/logs here, and the
# lifecycle tool's disposable media root. Both are per-run, never committed.
/.playwright-mcp/
/media-e2e/

# Claude Code local worktree scratch (the committed skill under .claude/skills
# IS tracked; this is per-session working space).
/.claude/worktrees/
