Score unified test run
Kick off a background scoring pass, non-blocking.
Requires status=COMPLETED. Transitions the run to status=SCORING and returns the updated UnifiedTestRun row immediately; the actual structural-diff + evaluation-criteria pass runs as an asyncio task in the API process. Poll GET /{id}/progress (or refetch the run) until status flips back to COMPLETED, at that point the aggregate scoring result lives at run.meta["score_summary"] (same UnifiedTestRunScoreSummary shape this endpoint used to return inline).
Idempotent-ish: safe to re-invoke on a COMPLETED run to force a re-score (e.g. after adding a response_sub override). Returns 400 if the run is already in SCORING, wait for it to settle and try again.