__pycache__/
*.py[cod]
.venv/
venv/
dist/
build/
*.egg-info/
.pytest_cache/
.ruff_cache/
.DS_Store
.env

# Campaign output is hundreds of megabytes of `.eval` transcripts, and it is
# regenerated by anyone who runs the harness. The two summaries below are the
# exception: docs/guarantees/measured-results.mdx is built from them and cites
# them by path, and tests/test_measured_results.py recomputes every figure on
# that page against them. Cited evidence nobody can open is not evidence, and a
# number with no artifact behind it drifts — both of which happened here before
# these four files were tracked.
harness/results/*
!harness/results/stage2-final/
!harness/results/stage3-final-all/
harness/results/stage2-final/*
harness/results/stage3-final-all/*
!harness/results/stage2-final/summary.json
!harness/results/stage2-final/summary.md
!harness/results/stage3-final-all/summary.json
!harness/results/stage3-final-all/summary.md

# A library declares dependency ranges; it does not pin them. CI installs from
# pyproject.toml, so a committed lock would never be exercised and would rot
# quietly — and pinning here would say nothing about what a consumer resolves.
uv.lock

# Mintlify writes a Next.js build cache here when `mint dev` runs in docs/.
docs/.next/
