.NOTPARALLEL:
.PHONY: bootstrap deps migrate seed dev preview stop restart status build test demo validate contracts parser-models parser-verify research-demo evaluate-research evaluate-retrieval
export UV_CACHE_DIR ?= /tmp/trace-uv-cache

bootstrap:
	uv sync --frozen
	npm ci

deps:
	bash scripts/services.sh up

migrate:
	uv run alembic upgrade head

seed:
	uv run python -m trace_app.seed

dev: deps migrate seed
	bash scripts/dev.sh up

# Prepare once: npm run build:web && .venv/bin/python scripts/package_web.py
# Restart only app processes; a missing package leaves the current apps running.
preview:
	bash scripts/dev.sh restart --web-mode standalone

stop:
	bash scripts/dev.sh down
	bash scripts/services.sh down

restart:
	$(MAKE) stop
	$(MAKE) dev

status:
	bash scripts/services.sh status
	bash scripts/dev.sh status

build:
	npm run build:web

test:
	uv run pytest

demo:
	uv run python scripts/demo.py

validate:
	uv run python scripts/validate_handoff.py --extended

contracts:
	npm run contracts:generate

parser-models:
	uv run --frozen python -m trace_app.parser_assets download

parser-verify:
	uv run --frozen python -m trace_app.parser_assets verify

research-demo:
	uv run python scripts/demo_research.py --release-fixture-memo

evaluate-research:
	uv run python scripts/evaluate_research.py

evaluate-retrieval:
	uv run python scripts/evaluate_retrieval.py
