Skip to content

Split workflow eval run detail into independent streaming sections#6091

Open
simeonlee wants to merge 2 commits intosimeonlee/workflow-eval-streamingfrom
simeonlee/workflow-eval-run-detail-split
Open

Split workflow eval run detail into independent streaming sections#6091
simeonlee wants to merge 2 commits intosimeonlee/workflow-eval-streamingfrom
simeonlee/workflow-eval-run-detail-split

Conversation

@simeonlee
Copy link
Member

@simeonlee simeonlee commented Feb 3, 2026

Summary

  • Splits /workflow-evaluations/runs/$run_id data fetching into two independent promises
  • basicInfoData: run metadata + episode count (for header/BasicInfo)
  • episodesData: episodes + statistics + count (for table/pagination)
  • This allows the header and basic info to appear immediately while the episodes table loads

Changes

  • fetchBasicInfoData: fetches run info and count
  • fetchEpisodesData: fetches episodes, statistics, and count (duplicated for pagination independence)
  • Separate <Suspense> boundaries for each section
  • PageHeader shows run_id immediately (from URL params)

Stacked on #6088


Note

Medium Risk
Moderate risk because it changes the route loader’s data-fetching shape and streaming boundaries, which can affect rendering/error states and pagination behavior, though it’s confined to a single UI route.

Overview
Splits the /workflow-evaluations/runs/$run_id route into two independently streamed loader promises: basicInfoData (run metadata + episode count) and episodesData (episodes + statistics + count for pagination).

Moves PageHeader to render immediately from the URL run_id, and adds separate Suspense/Await boundaries with dedicated skeletons and error notices so the basic info can appear while the episodes table continues loading.

Written by Cursor Bugbot for commit 12aadf2. This will update automatically on new commits. Configure here.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

title="Error loading episodes"
description={message}
/>
);
Copy link

Choose a reason for hiding this comment

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

Duplicate error handling replicates existing utility component

Medium Severity

BasicInfoError and EpisodesError duplicate the error handling logic that already exists in SectionAsyncErrorState from ~/components/ui/error/ErrorContentPrimitives.tsx. Both use identical patterns: useAsyncError(), checking isRouteErrorResponse(error) and error instanceof Error, then rendering SectionErrorNotice. The only difference is the title/message strings.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant