.PHONY: help install lint format test test-all smoke up down logs clean help: @echo "Targets: install lint format test test-all smoke up down logs clean" install: pip install -r core/requirements.txt -r dashboard/requirements.txt pip install pytest pytest-asyncio ruff mypy freezegun lint: ruff check core/src dashboard/src tests mypy core/src format: ruff format core/src dashboard/src tests ruff check --fix core/src dashboard/src tests test: pytest tests/unit -v test-all: pytest -v smoke: docker compose up -d @sleep 5 curl -fsS http://localhost:8000/health || (docker compose down && exit 1) docker compose down up: docker compose up down: docker compose down logs: docker compose logs -f clean: rm -rf .pytest_cache .mypy_cache .ruff_cache __pycache__ data/*.sqlite data/*.jsonl