# ---------------------------------------------------------------------------
# HACKATHON RULE COMPLIANCE
#
# The .kiro/ directory MUST be committed at the repository root and MUST NOT be
# excluded by .gitignore or any similar mechanism. The negation below is here
# deliberately, as a guard against a future careless pattern. Do not remove it.
# See: hackathon rules, "Kiro Project Files".
# ---------------------------------------------------------------------------
!.kiro/
!.kiro/**

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

# Environments
.venv/
venv/
env/

# Tooling caches
.pytest_cache/
.mypy_cache/
.ruff_cache/
.hypothesis/

# Coverage artefacts. Note: kept's *ledger* (.kept/ledger.json) IS committed on
# purpose, because the repository attests to its own verdicts. Only the raw
# coverage databases are transient.
.coverage
.coverage.*
coverage.xml
htmlcov/

# kept scratch space. The ledger, bindings, and badge are committed on purpose;
# the mutation cache and per-run working data are not.
#
# The `**/` prefix is load-bearing. A pattern containing a slash is anchored to
# this file's directory, so a bare `.kept/cache/` would silently fail to match a
# nested project such as fixtures/refund_engine/.kept/cache/.
**/.kept/cache/
**/.kept/runs/

# Local scratch: helper scripts and captured command output at the repository
# root. Anchored with a leading slash: unanchored `_*.py` also matches every
# `__init__.py`, which silently left new packages out of the commit and broke a
# clean clone while the working tree kept running.
/_*.sh
/_*.py
*.log

# Editors and OS
.idea/
*.swp
.DS_Store
