From 18003004fe58c9ac8e12c50160f72eb89675e387 Mon Sep 17 00:00:00 2001 From: Codex Date: Sat, 20 Jun 2026 19:18:49 +0000 Subject: [PATCH] fix(web-probe): isolate turn timing columns by round --- scripts/src/hwlab-node-web-observe-runner-source.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/src/hwlab-node-web-observe-runner-source.ts b/scripts/src/hwlab-node-web-observe-runner-source.ts index c6b57709..35b9cccc 100644 --- a/scripts/src/hwlab-node-web-observe-runner-source.ts +++ b/scripts/src/hwlab-node-web-observe-runner-source.ts @@ -1414,6 +1414,8 @@ function detectTurnTimingNonMonotonic(columns, rows) { function turnMetricItems(sample, timelineItem) { const promptIndex = timelineItem.promptIndex ?? 0; + const sessionKey = sample?.routeSessionId || sample?.activeSessionId || "unknown-session"; + const roundKey = String(promptIndex); const items = []; if (Array.isArray(sample?.turns) && sample.turns.length > 0) { for (const turn of sample.turns) { @@ -1423,7 +1425,7 @@ function turnMetricItems(sample, timelineItem) { const traceId = turn.traceId || firstTraceId(texts); const messageId = turn.messageId || null; const domIndex = Number.isFinite(Number(turn.index)) ? Number(turn.index) : items.length; - const key = "turn:dom-index-" + String(domIndex); + const key = "turn:" + sessionKey + ":round-" + roundKey + ":dom-index-" + String(domIndex); items.push({ key, source: "turn", @@ -1447,7 +1449,7 @@ function turnMetricItems(sample, timelineItem) { if (totalElapsedValues.length === 0 && recentUpdateValues.length === 0) continue; const domIndex = Number.isFinite(Number(message.index)) ? Number(message.index) : items.length; items.push({ - key: "message:" + String(domIndex), + key: "message:" + sessionKey + ":round-" + roundKey + ":dom-index-" + String(domIndex), source: "message", promptIndex, traceId: firstTraceId([text]), @@ -1463,7 +1465,7 @@ function turnMetricItems(sample, timelineItem) { } if (timelineItem.totalElapsedSeconds !== null || timelineItem.recentUpdateSeconds !== null) { return [{ - key: "aggregate-prompt:" + String(promptIndex), + key: "aggregate:" + sessionKey + ":round-" + roundKey, source: "aggregate", promptIndex, traceId: null,