__pycache__/
.context/
# ...except the retrieval eval's committed fixtures, which ARE stores by design
# (real entries, synthesized supersedes edges) and have to travel with the repo
# or the history cases cannot run on a fresh clone. The `.context/` rule above
# is unanchored, so it matches at any depth and silently swallowed these.
!evals/fixtures/**/.context/
!evals/fixtures/**/.context/**
# Derived from the gitignored .context/ store, so it is per-machine too --
# committing it would let a fresh clone's first constraint write reap every
# file as belonging to a store it does not have. Regenerate with
# `context-keeper export_rules '{}'`.
.claude/rules/context-keeper/
.mcpregistry_*
.pytest_cache/
dist/
*.egg-info/

# scripts/survey_supersessions.py output. Gitignored deliberately: the survey
# reads every .context store on the machine, so its proposals quote projects
# that are private or have no remote at all. This repo is public.
.supersession_proposal.md

# retrieval-eval artifacts
evals/runs/*
# ...except the run the published page is built from. It has to travel with the
# repo or docs/index.html cannot be rebuilt or verified, and tests/test_page_data.py
# would skip in CI -- which is where a stale published number needs to be caught.
!evals/runs/page_data.json
evals/.emb_cache.json
# Store COPIES the retrieval eval runs against, so it never writes to a real
# .context (the embedding path caches embeddings.json next to the entries it
# embeds). Rebuilt on demand; the warm embedding cache lives here too.
evals/.snapshots/
