.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 \
	frontend-sync frontend-format frontend-lint frontend-type frontend-test \
	frontend-build frontend-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
	test -f docs/06-frontend-demo-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

frontend-sync:
	cd frontend && npm ci

frontend-format:
	cd frontend && npm run format:check

frontend-lint:
	cd frontend && npm run lint

frontend-type:
	cd frontend && npm run typecheck

frontend-test:
	cd frontend && npm run test

frontend-build:
	cd frontend && npm run build

frontend-check: frontend-sync frontend-format frontend-lint frontend-type frontend-test frontend-build

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 frontend-check

verify: verify-ci compose-check
