# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# Dependencies
node_modules
.pnp
.pnp.js

# Local env files
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# Testing
coverage

# Turbo
.turbo

# Vercel
.vercel

# Build Outputs
.next/
out/
build
dist


# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Python
__pycache__/
*.pyc
.pytest_cache/

# Misc
.DS_Store
*.pem
# Local Claude Code state stays ignored, but PROJECT SKILLS are shared
# repo content — .claude/skills/ must be tracked or a skill silently
# never ships (git add -A skips ignored paths without a word; the
# update-api-docs skill was lost to exactly that).
.claude/*
!.claude/skills/

# ANES raw microdata — research-use license prohibits redistribution.
# The ingestion script reads these files locally; only derived,
# anonymized JSONL lands in benchmark_results/interview_seeds_pool.jsonl
# (which IS committed). See scripts/ingest_anes.py.
anes_*_raw/
anes_2020_raw/
*.dta
anes_timeseries_*.csv
anes_timeseries_*.pdf

# MatrAIx Persona 8B working clone (Phase 0, BUILDPLAN_MATRAIX.md).
# Never committed: 69M and carries human-grounded persona records whose
# upstream terms are unresolved (see docs/LEGAL_NOTES_MATRAIX.md).
# Only the schema definition files are vendored, under
# apps/api/persona_bridge/schema/vendor/ (anchored with a leading slash —
# a bare `vendor/` also matches that nested path and would silently
# un-commit the one artifact Phase 0.4 requires).
/vendor/

# Persona 1M parquet pull (fetch_p8b.py). Not committed: dataset-card
# license unverified, and human-grounded rows are offline-only.
apps/api/persona_bridge/data/p8b/

# Coverage artifacts
.coverage
.coverage.*
htmlcov/

# Pew benchmark run outputs. scripts/benchmark_pew.py writes
# benchmark_pew_report_<ts>.md + benchmark_pew_results_<ts>.json with
# RELATIVE paths, so they land in whatever directory the operator ran it
# from and accumulate — ~40 of them on a benchmarking box, tripping every
# clean-tree gate before a release. Unanchored on purpose: ignore them at
# any depth.
#
# This does NOT hide the curated writeups, which are committed under a
# different name in apps/api/benchmark_results/ (pew_<date>_<run>.md,
# sg_*.md/.log/.json, *_benchmark_battery.json, public_ledger.json) — none
# of those match these two patterns.
#
# Two of these were once tracked
# (apps/api/benchmark_pew_{report,results}_20260421_103432.*): swept into
# PR #233, an org-invoicing change, by a `git add -A` — exactly the
# accident this rule prevents. Removed once the rule landed; the run
# itself is the curated Run 7 writeup + public_ledger row — the record.
benchmark_pew_report_*.md
benchmark_pew_results_*.json

# Virtualenvs and Supabase CLI scratch — same clean-tree noise, never
# committed. (`.log` is deliberately NOT ignored: benchmark_results/
# tracks real run logs, sg_v05_a.log and friends.)
.venv/
venv/
supabase/.temp/

# Playwright E2E artifacts
apps/web/test-results/
apps/web/playwright-report/
apps/web/blob-report/
apps/web/.playwright/

# PDF font build inputs (scripts/build_pdf_fonts.py --download); the built
# subsets in apps/api/assets/fonts are what ships
apps/api/.font-sources/
