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

# Tooling caches
.mypy_cache/
.ruff_cache/
.pytest_cache/
# import-linter's (Grimp's) cache. Grimp writes a `.gitignore` INSIDE the directory,
# so git already ignores it — but hatchling reads only THIS file when it selects sdist
# contents, and on 2026-09-05 the cache rode into the v0.5.0 sdist built on the bench
# (CHANGELOG, [0.5.0] release record). Named here so the sdist selector sees it too.
.import_linter_cache/
.coverage
# parallel coverage data files — `[tool.coverage.run] patch = ["subprocess"]` makes
# `coverage run` write `.coverage.<host>.<pid>.<rand>` per process before `combine`.
/.coverage.*
htmlcov/
coverage.xml

# Local secrets / operator data
my_stuff/

# mgf-fed catch-up backups
**/*.bak.[0-9]*

# Editor / OS
.idea/
.DS_Store

# fed-resources: live/ is ephemeral telemetry (gitignored, never gated)
fed-resources/live/

# Gate output — mtest writes here; it is not source (was committed by mistake,
# including .gates/quarantine.json, which would carry test-suppression state into CI).
.gates/
# A root-level catalog dump only — ANCHORED. Unanchored, this line also matched the
# tracked src/mgf/fedres/examples/test_catalog.json and, because hatchling reads this
# file as its sdist selector, dropped it from the sdist (CHANGELOG [0.5.1]).
# `fed-resources/generated/` used to be listed here as well: that directory is COMMITTED
# and gated by `fedres check` (`fedres generate` writes it for you to commit), so the
# line contradicted the tool and dropped six tracked files from the sdist.
/test_catalog.json
# MGF standardized ignores (AG-18) — local secrets, IDE, Claude-local
.vscode/
.claude/settings.local.json
.claude/state/
.claude/mgf-hooks-disabled
