Skip to content

feat(eval-view): add run comparison dashboard UI (3/3) - #1010

Open
psiarkiewicz wants to merge 14 commits into
feat/cli-eval-comparefrom
dashboard-skill-compare
Open

feat(eval-view): add run comparison dashboard UI (3/3)#1010
psiarkiewicz wants to merge 14 commits into
feat/cli-eval-comparefrom
dashboard-skill-compare

Conversation

@psiarkiewicz

@psiarkiewicz psiarkiewicz commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Part 3 of 3 (stacked on #1187 ).

Adds interactive web UI for side-by-side run comparisons in eval-view.

  • Compare UI: Interactive side-by-side viewer (/compare.html) showing trajectory divergence, code diffs, Playwright outputs, and metric charts.
  • Guide View: Multi-run selection badges and compare modal in eval-view/guide.html.
  • Server Endpoints: /api/compare, /api/download-run, and on-demand /api/trajectory-summary.

@micahjo7 micahjo7 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our evals execute 1 run per task, and 1 task per guide. In the future, if we expand this (multiple runs per task, or multiple tasks per guide, or both), there are some things to consider:

What does the guide view show for these scenarios? IIUC it shows an aggregate of everything for that guide run on that day?
Given this^, should you be able to compare between different “runs” within the same suite? What about comparing guided vs unguided from the same run? In the guide view UI, you have to click on two separate data points (from separate suites), so not sure if it is possible.
For multiple tasks that run per guide, what will the guide comparison page show? Should you be able to select which task you want to compare (or which run?) similar to how you can select guided vs unguided? It looks like there might be some functionality for this currently, but from my testing it doesn’t look like it is working.

Another (less important) scenario is having multiple suite runs on the same day- I believe the guide view shows only the latest- should it aggregate instead? Or show two separate arrows?

In general, there is some aggregation that occurs for these scenarios when converting to the guide view- in the comparison view, we should be able to fully disaggregate into the specific permutations.

Comment thread bin/gd.ts Outdated
Comment thread harness/lib/gcs-downloader.ts
Comment thread eval-view/guide.js
Comment thread eval-view/server.js
Comment thread harness/lib/trajectory-parser.ts Outdated
Comment thread harness/lib/gcs-downloader.ts Outdated
Comment thread harness/lib/gcs-downloader.ts Outdated
Comment thread results/compare_work/response_debug.json Outdated
Comment thread .gitignore Outdated
Comment thread tsconfig.json Outdated
@micahjo7

Copy link
Copy Markdown
Collaborator

General comment for the PR:

there is a lot of code here, and several different components. I'm thinking it might be a better idea to separate this into multiple PRs- the first thought that comes to mind is that the trajectory parsing / summary is a feature in itself. then there is the gd compare workflow, then the UI component which presents and visualizes it all (and runs agent analysis). wdyt?

@psiarkiewicz

Copy link
Copy Markdown
Collaborator Author

General comment for the PR:

there is a lot of code here, and several different components. I'm thinking it might be a better idea to separate this into multiple PRs- the first thought that comes to mind is that the trajectory parsing / summary is a feature in itself. then there is the gd compare workflow, then the UI component which presents and visualizes it all (and runs agent analysis). wdyt?

That makes sense.

@psiarkiewicz

Copy link
Copy Markdown
Collaborator Author

Our evals execute 1 run per task, and 1 task per guide. In the future, if we expand this (multiple runs per task, or multiple tasks per guide, or both), there are some things to consider:

Added multi-guide view. For now, you can selected different versions on the same day, but the arrow shows the latest one. Can fix later when we know what's useful. Blending daily scores doesn't seem right.

@psiarkiewicz

Copy link
Copy Markdown
Collaborator Author

General comment for the PR:

there is a lot of code here, and several different components. I'm thinking it might be a better idea to separate this into multiple PRs- the first thought that comes to mind is that the trajectory parsing / summary is a feature in itself. then there is the gd compare workflow, then the UI component which presents and visualizes it all (and runs agent analysis). wdyt?

Agreed.
Splitting this into 3 chained PRs:

  1. Trajectory Normalization Framework: trajectory-parser.ts, viewer updates, and agent hooks emitting trajectory_summary.json.
  2. gd compare CLI & AI Variance Diagnosis: CLI command, lazy GCS downloader, prompt modules, and multi-stage subagent synthesis.
  3. Dashboard Comparison UI: Side-by-side web comparison interface, guide view integration, and server endpoints.

@psiarkiewicz
psiarkiewicz force-pushed the dashboard-skill-compare branch from 5ff6dfd to 56da4dc Compare August 4, 2026 01:12
@psiarkiewicz
psiarkiewicz changed the base branch from main to feat/cli-eval-compare August 4, 2026 01:16
@psiarkiewicz psiarkiewicz changed the title Dashboard skill compare feat(eval-view): add run comparison dashboard and visualize Aug 4, 2026
@psiarkiewicz

psiarkiewicz commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator Author

Split complete into 3 stacked PRs:

@psiarkiewicz
psiarkiewicz force-pushed the dashboard-skill-compare branch from 56da4dc to 2085f2f Compare August 5, 2026 20:38
@paulirish
paulirish force-pushed the dashboard-skill-compare branch from 36138a5 to 8bd11ee Compare August 11, 2026 04:32
@paulirish paulirish changed the title feat(eval-view): add run comparison dashboard and visualize feat(eval-view): add run comparison dashboard UI (3/3) Aug 12, 2026
@paulirish
paulirish force-pushed the dashboard-skill-compare branch from 8bd11ee to b4e13e6 Compare August 30, 2026 00:08
@paulirish

Copy link
Copy Markdown
Member

my tweaks:

  • deferred the ai variance diagnosis behind an explicit button click instead of auto-firing on page load, saving api tokens and keeping initial navigation fast.
  • streamlined trajectory streaming: simplified the sse streaming, date grouping, and auto-scroll handling in compare.js.
  • server & schema cleanup: updated eval-view/server.js to read directly from the normalized trajectory summary, removing redundant parsing logic and dropping schemaVersion.
  • added eval-view/utils.test.ts to test shared helper utils (url param handling, date formatting).

@paulirish
paulirish force-pushed the dashboard-skill-compare branch from b4e13e6 to e2326b6 Compare August 31, 2026 20:28
@paulirish
paulirish force-pushed the dashboard-skill-compare branch from f1b310d to ac1725d Compare September 1, 2026 00:02
@paulirish
paulirish force-pushed the dashboard-skill-compare branch 2 times, most recently from 33208f4 to 7327d44 Compare September 1, 2026 21:33
@paulirish
paulirish force-pushed the dashboard-skill-compare branch 2 times, most recently from 9e0e7e3 to 7929f8a Compare September 3, 2026 18:27
@paulirish
paulirish force-pushed the dashboard-skill-compare branch 10 times, most recently from fe05c59 to d0916ae Compare September 8, 2026 18:36
@paulirish
paulirish force-pushed the dashboard-skill-compare branch from d0916ae to ffa8690 Compare September 8, 2026 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants