Skip to content

feat(eval-view): optimize dashboard load time with GCS summary manifest - #1179

Merged
paulirish merged 6 commits into
mainfrom
feature/gcs-summary-manifest
Aug 5, 2026
Merged

feat(eval-view): optimize dashboard load time with GCS summary manifest#1179
paulirish merged 6 commits into
mainfrom
feature/gcs-summary-manifest

Conversation

@micahjo7

@micahjo7 micahjo7 commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Alternative to #902. Instead of speeding up by paginating results, I figured it'd be faster to store a suites.gen.json file in GCS which contains all the metadata needed to populate the landing page of the dashboard. This file gets updated whenever gd upload is called.

@paulirish let me know what you think of this approach!

Summary

Replaces individual per-suite evals.json fetches during remote results loading with a single compact summary manifest (suites.gen.json) stored in GCS.

Impact

  • Network Requests: Reduced from 156 requests down to 1 request when fetching remote results.
  • Load Time: Improved remote results fetch from ~4–5s to ~100–300ms.

Key Changes

  • eval-view/summary-extractor.js: Extracts compact suite summaries (guided/unguided stats, rates, per-guide breakdowns, and hover chartData) and metadata necessary for filtering (ID, agent, model, source, etc.).
  • eval-view/landing.js & guide.js: Refactored loadRemoteTests() to fetch suites.gen.json in a single request and consume pre-computed summary fields directly.
  • harness/upload_suite.ts: Automatically updates gs://guidance-evals/suites.gen.json in GCS on gd upload with prefix pagination and parallel backfilling.
  • eval-view/server.js & parity.test.ts: Updated /api/suites endpoint and parity tests for the summary manifest schema.

Verification

  • Ran pnpm preflight (build, typecheck, lint, and tests all passed).
  • Generated and uploaded initial suites.gen.json (156 suite summaries) to GCS.

micahjo7 added 4 commits July 31, 2026 12:03
… suites.gen.json

- Extract compact suite summaries containing guided/unguided stats, rates, guides breakdown, and chartData via extractSuiteSummary
- Refactor landing.js and guide.js to load remote suites in a single HTTP request
- Update upload_suite.ts to automatically reconcile and upload suites.gen.json to GCS on upload with prefix pagination
- Update server.js and parity.test.ts for SuiteSummary schema
@micahjo7
micahjo7 requested a review from paulirish as a code owner July 31, 2026 18:40
@micahjo7 micahjo7 linked an issue Jul 31, 2026 that may be closed by this pull request

@paulirish paulirish left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

yeah eval-view is the part of our codebase that's all untyped and it scares me. but.. thats more my fault and problem. so.. in the future ill be happy to have proper types across these objects. :)

but overall. .. agree on upgrading suites.gen.json to have all this data and solve the problem. the reconcile looks god

yup love it. thanks

# Conflicts:
#	eval-view/landing.js
@paulirish
paulirish enabled auto-merge (squash) August 5, 2026 21:45
@paulirish
paulirish merged commit be0bfdb into main Aug 5, 2026
10 checks passed
@paulirish
paulirish deleted the feature/gcs-summary-manifest branch August 5, 2026 21:50
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.

Eval dashboard is slow and loads 83 MB

2 participants