.PHONY: install fix lint type test coverage check

install:           ## bootstrap: sync deps + install the git hook
	uv sync
	uv run pre-commit install

fix:               ## auto-fix + format
	uv run ruff check --fix .
	uv run ruff format .

lint:              ## check only, no writes
	uv run ruff check .
	uv run ruff format --check .

type:              ## strict mypy over the source packages (tests are runtime-verified by pytest)
	uv run mypy src

test:
	uv run pytest

coverage:           ## test coverage, printed to the terminal
	uv run pytest --cov --cov-report=term-missing

check: lint type test   ## the full gate
