# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
.venv/
venv/
ENV/

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

# Testing
.coverage
htmlcov/
.pytest_cache/

# Ruff
.ruff_cache/

# PyInstaller
*.manifest
*.spec.warn

# OS
.DS_Store
Thumbs.db

# gzkit
.gzkit.yaml.local
.claude/hooks/.instruction-state.json
.claude/settings.local.json
.claude/worktrees/
.gzkit/cache/
.gzkit/locks/
.antigravitycli/
artifacts/

# MkDocs
site/

# gzkit local sensor telemetry (ADR-0.0.70 — runtime-state, never committed)
.gzkit/sensors/

# Composer candidate intermediates (regenerable; committed rendition is the artifact)
.gzkit/renditions/**/*.candidate.md

# Test-health profiler runtime output (regenerated each run; CHORE-LOG.md is the tracked evidence)
.gzkit/chores/*/proofs/health-report.json

# Miner run telemetry (GHI #614 — per-run counts; runtime_state, never committed).
# Lives under proofs/ rather than .gzkit/sensors/ because ADR-0.0.70 Boundary
# Invariant 2 fences the miner to write only to its proofs directory.
.gzkit/chores/*/proofs/run-log.jsonl

# Ontology last-sweep diff-baseline cache (ADR-0.32.0 — Tier-B derived, regenerable, never authority)
.gzkit/ontology/last_sweep.json

# Closeout ceremony turn-lock (transient per-turn step-lock; the sibling
# .ceremony.json is the tracked ceremony state, the .turn-lock is not)
.gzkit/ceremonies/*.turn-lock
