diff --git a/apps/ui/src/app/dashboard/[orgId]/[projectId]/activity/[logId]/log-detail-client.tsx b/apps/ui/src/app/dashboard/[orgId]/[projectId]/activity/[logId]/log-detail-client.tsx index 5144981501..f676894f91 100644 --- a/apps/ui/src/app/dashboard/[orgId]/[projectId]/activity/[logId]/log-detail-client.tsx +++ b/apps/ui/src/app/dashboard/[orgId]/[projectId]/activity/[logId]/log-detail-client.tsx @@ -205,16 +205,19 @@ function formatDuration(ms: number) { // Selection reasons where the weighted-score formula is bypassed entirely, so // every provider's score is a hardcoded 0 placeholder rather than a real value. +// "session-sticky" is intentionally excluded: it scores providers with the +// normal weighted algorithm and pins the result for the session, so the logged +// scores are real values worth surfacing. The all-zero fallback below hides +// those scores when they couldn't be computed (no metrics available). const SCORE_BYPASSED_SELECTION_REASONS = new Set([ - "session-sticky", "random-exploration", "price-only-no-metrics", ]); // The per-provider score only carries information when scoring actually ran. -// Sticky/exploration/price-only paths emit 0 for every provider, and -// "stable-preferred" can layer on top of a sticky pick (also all zeros), so -// treat an all-zero set as "scoring did not run" regardless of the reason. +// Exploration/price-only paths emit 0 for every provider, and "stable-preferred" +// can layer on top of a sticky pick, so treat an all-zero set as "scoring did +// not run" regardless of the reason. function isProviderScoreMeaningful( selectionReason: string | null | undefined, providerScores: { score: number }[],