# venvs
.venv/
venv/

# node — build-time only (frontend/ has its own ignore; this catches strays at
# the root, e.g. a vitest cache from a run invoked with the wrong cwd)
/node_modules/

# devweb/ — the dev panels' server and its app (python -m devweb). Its bundle is
# NOT committed, unlike the viewer's: nothing ships it, so there is no install
# that needs a pre-built copy, and a committed bundle in a dev directory is diff
# noise on every frontend edit. `cd devweb/frontend && npm run build` makes it,
# and the server says so if it is missing. Declared at the root rather than in a
# nested ignore because hatchling only reads this one.
/devweb/static/
/devweb/frontend/node_modules/
/devweb/frontend/dist/
/devweb/frontend/.e2e-dist/
/devweb/frontend/playwright-report/
/devweb/frontend/test-results/

# python
__pycache__/
*.py[cod]
*.egg-info/
/dist/
.pytest_cache/
.ruff_cache/
.mypy_cache/
# hypothesis's example database (tests/test_search_fuzz.py) — a local replay
# cache of falsifying examples, regenerated on demand.
.hypothesis/

# Xcode/SwiftPM DerivedData. Archive has no native build of its own; a `.build/`
# here only appears when a sibling mac Makefile is invoked with the wrong cwd —
# ignored so that stray output never clutters this repo's status.
.build/

# Archive data lives in the user's home (~/.thread/archive), NEVER in the repo.
# These are belt-and-suspenders in case a run is pointed at the repo by mistake.
# All anchored to the repo root so they can't shadow the source tree (e.g. the
# `src/thread_archive/truth/` module must stay tracked).
/data/
/index.db
/index.db-*
/truth/
/*.sqlite

# Machine-specific MCP client config — generated at install time with absolute paths
# to this clone's venv (see the README's from-source install). The tracked
# template is .mcp.json.example.
/.mcp.json

# coverage data (pytest --cov; the CI pytest row reports coverage per run,
# and writes coverage.json for the coverage-gate row). Unanchored — a pytest
# run from any subdirectory drops its .coverage there, not just at the root.
# coverage-*.json catches sharded/per-run coverage dumps tools leave at the root.
.coverage
.coverage.*
coverage.json
coverage-*.json

# BEIR calibration cache (search_lab/beir_eval.py, the `beir` test lane): downloaded
# datasets + the built archive/embeddings, kept so re-runs skip the rebuild.
/.beir-cache/

# env files — none exist today; forward-looking guard so a local secrets file
# can never be committed by accident.
.env
.env.*
.envrc

# os
.DS_Store
