.claude/
node_modules/
dist/
*.db
*.db-journal
*.db-wal
*.db-shm
coverage/
.env
.env.*
data/
.DS_Store
*.tsbuildinfo
.mcpregistry_*
demo-video/
.agents/
skills-lock.json
# Next.js build cache (website is in /website, but a stray `next build` from root leaves traces here)
.next/
# Playwright E2E artifacts
playwright-report/
test-results/
.playwright/

# Storybook build output — regenerated by `npm run build-storybook`
storybook-static/

# Truthbase test-counts cache — regenerated by `npm run claims:capture-tests` in CI
.claims-cache/

# Private planning notes. This repo is PUBLIC; planning docs belong to the
# private parent repo and must never be committed here.
#
# This lived only in .git/info/exclude, which is local to one clone and is
# never committed — so the protection did not travel. A fresh clone, a
# different machine, or CI had no exclusion at all, and the standard commit
# recipe for this repo is `git add -A`. Belongs in the tracked ignore file.
plans/

# UAT harness scratch: per-run IRIS_HOMEs and the generated report. The
# harness is the gate; its output is an artifact of one run on one machine.
tests/uat/.work/
tests/uat/UAT-REPORT.md

# proof:judge human-readable report — regenerated by each measurement run and
# uploaded as a workflow artifact. The machine-readable proof/judge-results.json
# IS committed (pending placeholder, then the lead commits the measured file).
proof/judge/RESULTS.md

# The stranger harness writes its records to a private directory; never commit a run here.
tests/acceptance/stranger/records/
stranger-records/

# The Python client (packages/python): its virtual environment and build artefacts
packages/python/.venv/
packages/python/dist/
packages/python/**/__pycache__/
packages/python/.pytest_cache/
packages/python/**/*.egg-info/
