.PHONY: setup-hooks check-secrets docs-check links-check verify-design backend-sync \
	backend-format backend-lint backend-type backend-test backend-check compose-check \
	verify-ci verify

setup-hooks:
	git config core.hooksPath .githooks
	chmod +x .githooks/pre-commit scripts/check-secrets.sh

check-secrets:
	./scripts/check-secrets.sh --all

docs-check:
	test -f docs/00-overall-design.md
	test -f docs/01-data-and-evaluation.md
	test -f docs/02-deployment-and-security.md
	test -f docs/03-implementation-plan.md
	test -f docs/04-project-todo.md
	test -f docs/05-stage1-runbook.md

links-check:
	python3 scripts/check_markdown_links.py

verify-design: check-secrets docs-check links-check
	git diff --check
	git diff --cached --check

backend-sync:
	cd backend && UV_CACHE_DIR=.uv-cache uv sync --all-groups --frozen

backend-format:
	backend/.venv/bin/ruff format --check backend/app backend/tests backend/migrations

backend-lint:
	backend/.venv/bin/ruff check backend/app backend/tests backend/migrations

backend-type:
	cd backend && .venv/bin/mypy app tests

backend-test:
	cd backend && .venv/bin/pytest

backend-check: backend-sync backend-format backend-lint backend-type backend-test

compose-check:
	docker compose --env-file .env.example config --quiet

# CI does not assume its runner exposes a Docker daemon. Schema and Compose
# security contracts still run in backend-test; local verification also asks the
# Docker CLI to render the real Compose model.
verify-ci: verify-design backend-check

verify: verify-ci compose-check
