# Keep the TSan build context small and reproducible.
# The image builds from source; it needs no build trees, no binary fixtures and
# no local caches. modules/cuttag_profiler/data alone is ~100 MB of BAM.
**/build
**/build-*
build-tsan
.git
**/.git
**/__pycache__
**/*.pyc
**/.DS_Store
**/.claude

# Large binary test fixtures. cuttag_profiler's suites synthesise their own BAMs
# via TempBam, so these are only needed for manual benchmarking.
# modules/cuttag_profiler/data  (kept: deploy/ seeds demo fixtures from it)
modules/cuttag_profiler/results
modules/cuttag_profiler/docs/*.pdf

# Notebook outputs and generated docs.
**/*.ipynb_checkpoints

# Demo outputs (regenerated by scripts/run_demo.sh).
demo-out

# Virtualenvs. Never needed in an image (both Dockerfiles install their own
# dependencies) and easily the largest thing in a developer's tree after the
# build directories -- pto-core/venv alone is ~165 MB.
venv
.venv
**/venv
**/.venv

# Terraform provider binaries. `terraform init` leaves ~1.4 GB under
# pto-cloud/infra/.terraform, and the MVP image builds with the REPOSITORY
# ROOT as its context (mvp/docker-compose.yml sets `context: ../..`, because
# it needs pto-core/ and pto-cloud/mvp/ which are siblings). Without this the
# daemon is handed the whole provider cache on every build.
#
# State files are excluded for a different reason: the callback token is
# generated by `random_password` and lives in state, so a state file must
# never reach an image layer.
**/.terraform
**/*.tfstate
**/*.tfstate.*

# Test caches.
**/.pytest_cache
