# Local-only working areas. paper/ and scratch/ never ship and never commit; the sdist
# excludes them a second time as a fence (pyproject [tool.hatch.build.targets.sdist]).
/paper/
/scratch/

# Virtualenv and caches.
/.venv/
__pycache__/
*.pyc
.pytest_cache/
.mypy_cache/
.ruff_cache/

# Docs build output.
/site/

# Build artifacts.
/dist/
*.egg-info/

# NOTE: CLAUDE.md is deliberately tracked (project instructions are part of the tree);
# it is excluded from the sdist, not from git.

# Angle C purchased archives are local-only; never committed (PMK-COR-002).
/validation/angle_c/archives/

# Superseded Angle C collections hold completion text too, so the same rule applies to
# them. Their READMEs are the reason each batch was set aside and ARE committed, so the
# contents are excluded rather than the directory: git cannot re-include a file whose
# parent directory has been excluded.
/validation/angle_c/discarded_width1/*
!/validation/angle_c/discarded_width1/README.md
/validation/angle_c/width75_throttled/*
!/validation/angle_c/width75_throttled/README.md

# Angle C credentials: real API keys, never committed.
/validation/angle_c/credentials.json
