# Python
__pycache__/
*.py[cod]
*.egg-info/
*.egg
.eggs/
build/
dist/
*.whl

# Virtual environments
.venv/
venv/
env/

# Test / coverage / tool caches
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.hypothesis/
.mypy_cache/
.ruff_cache/

# Phase reports: matplotlib PdfPages output. `reports/` holds ONLY PDFs, is
# gitignored, and is NEVER referenced from README (see CLAUDE.md engineering
# rules). Regenerate with `python tools/phase0_report.py`.
reports/

# Session / dataset artifacts
*.aldic3d
datasets/
test_data/

# ---------------------------------------------------------------------------
# examples/ — LOCAL EXPERIMENTAL DATA. NEVER COMMITTED. NO EXCEPTIONS.
#
# This directory holds the author's curated stereo-DIC datasets (~40 GB of raw
# 16-bit TIFFs). Most of it is NOT publishable:
#
#   example1, example2  Stereo-DIC Challenge 1.0 — public benchmark data, but
#                       redistribution is the challenge organizers' call, not
#                       ours; they are ignored here alongside everything else.
#   example3..example7  NOT PUBLIC. Challenge 2.0 / 2.1 data under the
#                       organizers' terms, plus unpublished lab experiments
#                       (pig heart valve, bulge test). Author's personal use
#                       only.
#
# The rule is deliberately unconditional — there is NO negation/whitelist for
# any subpath. A `git add -A` on this repo must never be able to stage a single
# byte of it. If a small public sample dataset is wanted later, put it in a
# NEW top-level directory and whitelist that directory explicitly; do not poke
# a hole in this rule.
# ---------------------------------------------------------------------------
examples/

# quickstart/ IS committed: the public sample dataset (Stereo-DIC Challenge 1.0,
# Sample 3, three frames), published with the author's approval in 1.2.0. Only
# the output of running it stays local: results/ from the command line, out/
# from the application (its default output folder, holding the ROI mask).
quickstart/results/
quickstart/out/

# IDE / editor
.vscode/
.idea/
.cspell/

# OS junk
Thumbs.db
.DS_Store
desktop.ini

# Git worktrees
.worktrees/

# Claude Code: the settings.json (cross-repo read-only boundary + permissions)
# and CLAUDE.md (session bootstrap / invariants) ARE versioned on purpose — they
# are this repo's operating contract. Ignore only transient local .claude state.
.claude/*
!.claude/settings.json

# Read-only reference clones of third-party repos (never committed)
reference/
