# Dependencies
node_modules/
web/node_modules/
__pycache__/
*.pyc
.venv/
venv/
env/

# Environment
.env
.env.local
.env.production

# Next.js
web/.next/
web/out/

# Build
dist/

# Built mkdocs output — regenerate with `cd docs-site && mkdocs build`.
# Source of truth is docs-site/docs/. Built site/ should not be tracked.
docs-site/site/
build/
*.egg-info/

.ruff_cache/

# IDE
.vscode/
.idea/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

.gstack/

# Logs
*.log
npm-debug.log*

# Testing
.coverage
htmlcov/
.pytest_cache/

# Docker
docker-compose.override.yml

# Database. The audit-log examples in the docs write SQLite files into the
# working directory when you run them, so ignore those too.
*.db
*.sqlite
*.sqlite3

/data/docs
demo/outputs/

datasets/compliance/


/scripts

/docs/*


/workbook

uv.lock
pyproject.toml
# ...but never a workspace member's manifest. The two rules above are
# unanchored, so they match `pyproject.toml` and `uv.lock` at EVERY depth. The
# root and arche-core manifests are unaffected only because gitignore does not
# apply to files already in the index — they were tracked before these rules
# existed.
#
# Anything new is not so lucky. `packages/arche-mcp/pyproject.toml` was written,
# the package was committed, and the manifest was silently skipped. Nothing
# reported it. CI failed on a clean checkout with "Workspace member ... is
# missing a pyproject.toml", which is a long way from the cause.
#
# A workspace member without its manifest is not a package, so these are
# re-included explicitly rather than relying on nobody adding another one.
!/pyproject.toml
!/uv.lock
!/packages/*/pyproject.toml

/docs-site/docs/concepts/arche-direction-and-5-year-vision.md
/docs-site/docs/concepts/arche-6month-roadmap-h2-2026.md
/docs-site/docs/concepts/arche-phase0-mining-plan.md
/docs-site/docs/concepts/roadmap_old.md
/docs-site/docs/concepts/roadmap.md
/docs-site/docs/concepts/drafts/
/docs-site/docs/concepts/

.tmp/
/notebooks

/examples/notebooks/08_inside_the_one_call.ipynb

# Local AI assistant configuration and scratch notes. Not part of the project;
# contributors are free to use any tooling they like without it landing here.
.claude/
CLAUDE.md

DESIGN.md

# Provider pulls (Overture, geocoder caches). Evidence, never packs — the
# provenance firewall means these must not be committed alongside the data
# packs they would otherwise encumber.
/overture_*.csv
/review_queue.csv
/headtohead.json
datasets/data/_cache/

# Every fetched-not-vendored source lands here: NCVR voter records, Febrl,
# GIAS establishments, OSM pulls. Some of it is real people's names and
# addresses, all of it is large, and none of it belongs in the repo. The
# scripts that fetch it re-fetch on a cold cache.
data/_cache/

# Local production extracts and any derived resolution artefacts. These files
# may contain personal or commercially sensitive data and must never be added
# to the public repository.
data/confidential/

# A local revealed review pack may be opened by arche studio, but it must never
# be staged with the example packs that live under data/review_packs/.
data/review_packs/confidential/
data/review_packs/confidential_*/

# arche studio writes a labelled copy beside the pack it reviewed.
data/review_packs/**/*_reviewed.csv

# arche studio's private state directory: adjudication database, signing key and
# hash key. None of it is ever committed.
#
# The whole directory rather than three filenames, because these rules used to
# name files under `data/review_packs/` and stayed there after the state moved to
# `data/_studio/` -- which left both keys unignored and nobody noticed, since
# nothing under the new path had been added yet. A rule that names a path it no
# longer covers reads as protection and provides none.
data/_studio/

# Agent working context and project skills. Untracked on purpose: CLAUDE.md
# rule 4 keeps agent config and workflow documentation out of the tracked tree,
# because a contributor should not have to read internal tooling to understand
# an open-source project. `agent/` rather than `.claude/` so the knowledge
# belongs to the project rather than to one vendor's tool.
agent/
.agents/
.codex/

outputs/

examples/notebooks/20_a_supplier_ledger_at_scale.ipynb
examples/notebooks/20_local_confidential_resolution.ipynb
examples/notebooks/21_one_thing_two_identifiers.ipynb

examples/notebooks/build_20.py
examples/notebooks/build_21.py

# Written by examples/identity_knowledge_graph.py on every run.
examples/identity_graph.html
