[PR #12] [MERGED] Show regression history from the published run index #13

Closed
opened 2026-10-31 22:06:00 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Comfy-Org/comfyci-dashboard/pull/12
Author: @marawan206
Created: 10/5/2026
Status: ✅ Merged
Merged: 10/8/2026
Merged by: @alexisrolland

Base: regression-run-details ← Head: regression-history


📝 Commits (10+)

  • 953f41a feat(regression): add lane and run-index data contract
  • 84aac26 feat(regression): turn the overview into a run history page
  • 35e0093 fix(regression): drop the unused shard hook and blessed type
  • e552bd1 fix(regression): say which lane is shown for an unknown ?lane=
  • e340551 fix(regression): report failed fetches instead of an empty state
  • df86854 fix(regression): relax lane staleness and name unlisted branches
  • fc7063b fix(regression): count execution errors as open regressions
  • 9754f8e fix(regression): share the overall badge and first-bad line
  • 93183ca fix(regression): build compare links from the commit range
  • d63b8b7 fix(regression): close first-bad banners once the latest run passes

📊 Changes

13 files changed (+1348 additions, -130 deletions)

View changed files

➕ components/FetchError.tsx (+36 -0)
➕ components/FirstBadLine.tsx (+83 -0)
➕ components/HistoryTable.tsx (+170 -0)
➕ components/LaneSelect.tsx (+56 -0)
📝 components/RegressionBadge.tsx (+81 -14)
➕ components/Sparkline.tsx (+56 -0)
➕ components/StaleBanner.tsx (+76 -0)
📝 components/StatsDashboard.tsx (+1 -1)
📝 components/StatusButton.tsx (+16 -2)
📝 pages/regression/index.tsx (+469 -80)
📝 src/regression/client.ts (+136 -33)
📝 src/regression/types.ts (+144 -0)
➕ utils/time.ts (+24 -0)

📄 Description

Why

The Regression page showed one run (the latest pointer) and nothing else, although the results branch holds 230 runs for master. Finding the first bad commit of the current FLUX regression meant walking previous_commit links by hand. The worker now publishes a run index (comfyci-runpod-worker #3; the backfilled index for the legacy lane is already live on the results branch), and this PR reads it.

What

  • src/regression/types.ts, src/regression/client.ts: types for index/lanes.json, the per-branch head index, monthly shards and the additive v2 run metadata; hooks for the lanes index, head index, shards, golden metadata and the noise floor; path resolution per lane layout (legacy root vs lanes/<id>/). Existing callers keep working (the lane argument is optional and defaults to the legacy layout).
  • pages/regression/index.tsx becomes a history page: lane selector (kept in ?lane=), freshness banner with per-cadence thresholds, "failing since" banner per open regression (commit, PR, author, run count; closes when the latest run passes or the drift is accepted), KPI strip over the last 30 runs, per-workflow MSE sparklines, a paged newest-first table (commit subject/author/PR, overall badge, per-workflow pills, exec time, "+N commits" compare link built from the tested range) with "Load older" over monthly shards.
  • Badges learn two client-side states: inherited drift (outlined) and accepted drift (amber, when the output sha matches the lane's current golden). Failed fetches (429/5xx/network) are reported with the status and URL and a Retry button instead of being shown as "not published".
  • New presentational components: HistoryTable, Sparkline, StaleBanner, LaneSelect, FirstBadLine, FetchError; utils/time.ts for relative times.
  • When no index exists for a lane the page falls back to the latest-pointer card as before and keeps the empty state when nothing is published.

Stacked on #9 (shares types.ts); followed by #13.

Verification

  • pnpm lint: no warnings; pnpm build: all routes compile (checked from a clean worktree).
  • Vercel preview against the live results branch: /regression lists the 230 master runs newest first, the banner reads "flux_dev_t2i failing since b5cc8830 (#16488, comfyanonymous), 67 runs", the sparkline shows the MSE step on 2026-09-23, "Load older" walks the 2026-09 and 2026-08 shards, and the per-workflow pills mark the 66 later runs as inherited.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Comfy-Org/comfyci-dashboard/pull/12 **Author:** [@marawan206](https://github.com/marawan206) **Created:** 10/5/2026 **Status:** ✅ Merged **Merged:** 10/8/2026 **Merged by:** [@alexisrolland](https://github.com/alexisrolland) **Base:** `regression-run-details` ← **Head:** `regression-history` --- ### 📝 Commits (10+) - [`953f41a`](https://github.com/Comfy-Org/comfyci-dashboard/commit/953f41ae4804331c1bfb0ea5c2df504d6b4fff7e) feat(regression): add lane and run-index data contract - [`84aac26`](https://github.com/Comfy-Org/comfyci-dashboard/commit/84aac265573e0911b70d3bbe2ead971dbcf24de2) feat(regression): turn the overview into a run history page - [`35e0093`](https://github.com/Comfy-Org/comfyci-dashboard/commit/35e00932d95ba65a0b696f75e9519c543e5a9e94) fix(regression): drop the unused shard hook and blessed type - [`e552bd1`](https://github.com/Comfy-Org/comfyci-dashboard/commit/e552bd1b24ff0a37c768714f292f5a2093c0bb88) fix(regression): say which lane is shown for an unknown ?lane= - [`e340551`](https://github.com/Comfy-Org/comfyci-dashboard/commit/e340551557e596f0e333d0b1a7263869ad3a773d) fix(regression): report failed fetches instead of an empty state - [`df86854`](https://github.com/Comfy-Org/comfyci-dashboard/commit/df8685466414656d49c3427d6cd3bf307ece59ec) fix(regression): relax lane staleness and name unlisted branches - [`fc7063b`](https://github.com/Comfy-Org/comfyci-dashboard/commit/fc7063bf50f7c7d63f40d830699fd78ccbd3fb16) fix(regression): count execution errors as open regressions - [`9754f8e`](https://github.com/Comfy-Org/comfyci-dashboard/commit/9754f8e73138f57adf8961cb2ef8337e9d6d5106) fix(regression): share the overall badge and first-bad line - [`93183ca`](https://github.com/Comfy-Org/comfyci-dashboard/commit/93183cab7cb8810214fceeac3bfe834db73bf424) fix(regression): build compare links from the commit range - [`d63b8b7`](https://github.com/Comfy-Org/comfyci-dashboard/commit/d63b8b7a73e1c466eadd5bc7cb180983ca26cfc5) fix(regression): close first-bad banners once the latest run passes ### 📊 Changes **13 files changed** (+1348 additions, -130 deletions) <details> <summary>View changed files</summary> ➕ `components/FetchError.tsx` (+36 -0) ➕ `components/FirstBadLine.tsx` (+83 -0) ➕ `components/HistoryTable.tsx` (+170 -0) ➕ `components/LaneSelect.tsx` (+56 -0) 📝 `components/RegressionBadge.tsx` (+81 -14) ➕ `components/Sparkline.tsx` (+56 -0) ➕ `components/StaleBanner.tsx` (+76 -0) 📝 `components/StatsDashboard.tsx` (+1 -1) 📝 `components/StatusButton.tsx` (+16 -2) 📝 `pages/regression/index.tsx` (+469 -80) 📝 `src/regression/client.ts` (+136 -33) 📝 `src/regression/types.ts` (+144 -0) ➕ `utils/time.ts` (+24 -0) </details> ### 📄 Description ## Why The Regression page showed one run (the latest pointer) and nothing else, although the results branch holds 230 runs for master. Finding the first bad commit of the current FLUX regression meant walking `previous_commit` links by hand. The worker now publishes a run index (comfyci-runpod-worker #3; the backfilled index for the legacy lane is already live on the results branch), and this PR reads it. ## What - `src/regression/types.ts`, `src/regression/client.ts`: types for `index/lanes.json`, the per-branch head index, monthly shards and the additive v2 run metadata; hooks for the lanes index, head index, shards, golden metadata and the noise floor; path resolution per lane layout (legacy root vs `lanes/<id>/`). Existing callers keep working (the lane argument is optional and defaults to the legacy layout). - `pages/regression/index.tsx` becomes a history page: lane selector (kept in `?lane=`), freshness banner with per-cadence thresholds, "failing since" banner per open regression (commit, PR, author, run count; closes when the latest run passes or the drift is accepted), KPI strip over the last 30 runs, per-workflow MSE sparklines, a paged newest-first table (commit subject/author/PR, overall badge, per-workflow pills, exec time, "+N commits" compare link built from the tested range) with "Load older" over monthly shards. - Badges learn two client-side states: inherited drift (outlined) and accepted drift (amber, when the output sha matches the lane's current golden). Failed fetches (429/5xx/network) are reported with the status and URL and a Retry button instead of being shown as "not published". - New presentational components: `HistoryTable`, `Sparkline`, `StaleBanner`, `LaneSelect`, `FirstBadLine`, `FetchError`; `utils/time.ts` for relative times. - When no index exists for a lane the page falls back to the latest-pointer card as before and keeps the empty state when nothing is published. Stacked on #9 (shares `types.ts`); followed by #13. ## Verification - `pnpm lint`: no warnings; `pnpm build`: all routes compile (checked from a clean worktree). - Vercel preview against the live results branch: `/regression` lists the 230 master runs newest first, the banner reads "flux_dev_t2i failing since b5cc8830 (#16488, comfyanonymous), 67 runs", the sparkline shows the MSE step on 2026-09-23, "Load older" walks the 2026-09 and 2026-08 shards, and the per-workflow pills mark the 66 later runs as inherited. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 22:06:00 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/comfyci-dashboard#13
No description provided.