fix(inference): let unofficial run overlays win the cross-engine AgentX guard / 修复:让非官方 run 的 overlay 在跨引擎 AgentX 互斥中优先显示#575
Conversation
…tX guard The cross-engine AgentX STP exclusion (#549) resolved conflicts with the official selection as the sticky set, so an unofficial run loaded via `?unofficialrun=` whose engine family conflicted with the active official family was silently deselected — the overlay never rendered, and the run's legend entry offers no toggle to bring it back. ChartDisplay's reconciliation effect then stripped the run's hw types from the provider entirely. An unofficial run is loaded to be seen: make the run's engine family the sticky set in both resolution sites (ScatterGraph's unified selection and ChartDisplay's overlay scoping / table rows) whenever overlay hw types are in scope, falling back to the official selection otherwise. Conflicting official series deselect instead (restorable by dismissing the run or re-toggling same-family officials); explicit conflicting adds still hit the block toast. 中文:跨引擎 AgentX STP 互斥规则(#549)在解决冲突时以官方选择作为粘性集合, 导致通过 `?unofficialrun=` 加载的非官方 run 若引擎家族与当前官方家族冲突, 会被静默取消选择——overlay 永远不渲染,且 run 的图例项没有开关可以恢复。 ChartDisplay 的同步 effect 还会把该 run 的硬件类型从 provider 中彻底剥离。 本修复让 run 的引擎家族在两处解析(ScatterGraph 统一选择与 ChartDisplay 的 overlay 作用域/表格行)中优先作为粘性集合;无 overlay 时回退到官方选择。 冲突的官方系列改为被取消选择(可通过关闭 run 或重新点选同家族官方配置恢复), 显式添加冲突配置仍会触发拦截提示。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Note: the Vercel preview deployment is protected by Vercel Authentication and a share link could not be generated, so the |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2b38d36. Configure here.
Address Bugbot review: visibleComparisonRows derived its overlay-preferring sticky set from the provider's activeOverlayHwTypes, which lags one render behind after an overlay scope change — the fallback to officials could drop the overlay row from table mode even though the upstream resolver kept it. Use the already-resolved overlayKeys (from resolvedScopedOverlayHwTypes) instead, matching the other resolution site. 中文:响应 Bugbot 审查意见:visibleComparisonRows 原先基于 provider 的 activeOverlayHwTypes 构建 overlay 优先的粘性集合,而该状态在 overlay 作用域 切换后会滞后一次渲染,回退到官方选择时可能把 overlay 行从表格模式中丢弃。 现改用已解析的 overlayKeys(来自 resolvedScopedOverlayHwTypes),与另一处 解析逻辑保持一致。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Summary
Fixes
?unofficialrun=<id>overlays never rendering on agentic (AgentX) charts when the run's engine family conflicts with the active official selection — reported for run 29272097721 (benchmark PR SemiAnalysisAI/InferenceX#2153,lmcache/agentix, vLLM).Root cause
The cross-engine AgentX STP exclusion (#549) resolves engine-family conflicts with a sticky set (
resolveExclusionGroups(proposed, prev, …, 'keep-sticky')), and both resolution sites passed the official selection asprev:ChartDisplay—resolvedScopedOverlayHwTypesresolved with officials-firstprevious, and its reconciliation effect then stripped the run's hw types from theUnofficialRunProvider(setActiveOverlayHwTypes), so the overlay was gone before the chart rendered.ScatterGraph— the unified official+overlay selection usedrawOfficialHwTypesas the sticky set, droppingoverlay:*keys at render time.The run's legend entry is not a toggle, so there was no UI affordance to recover — the loaded run was permanently invisible (its "Points" dialog reported "No visible points for this series under the current filters").
Fix
An unofficial run is loaded to be seen: whenever overlay hw types are in scope, use the run's engine family as the sticky set in both resolution sites, falling back to the official selection otherwise. Consequences:
Tests
exclusion.test.ts: extended the sticky-resolution unit test to cover both official-sticky and overlay-stickyprev(documents the new caller contract).scatter-graph.cy.tsxcomponent specs:opacity: 0), with no reconciliation write-back;ChartDisplaytable-mode test — the overlay row survives, the conflicting official row drops, andsetActiveOverlayHwTypesis not called (guards the provider-strip regression).tsc --noEmit,oxlint,oxfmt, vitest (2568 tests), and the full Cypress component suite (178 tests) all pass locally.Overlay support
This change is entirely about the
?unofficialrun=overlay path — verified manually against a local dev server with the real run?unofficialrun=29272097721: thelmcache/agentixvLLM roofline renders on the DeepSeek V4 Pro agentic chart, same-family official re-enable works, conflicting-family click shows the block toast. Will re-verify on the Vercel preview once it builds.中文说明
修复当非官方 run(
?unofficialrun=<id>)的引擎家族与当前官方选择冲突时,agentic(AgentX)图表上 overlay 永远不渲染的问题——由 run 29272097721(基准测试 PR SemiAnalysisAI/InferenceX#2153,lmcache/agentix分支,vLLM)报告。根因:#549 引入的跨引擎 AgentX STP 互斥规则在解析冲突时以官方选择作为粘性集合。
ChartDisplay的同步 effect 会把 run 的硬件类型从 provider 中剥离,ScatterGraph的统一选择解析也会在渲染时丢弃overlay:*键;而 run 的图例项不是开关,用户没有任何方式恢复显示。修复:只要 overlay 硬件类型在作用域内,两处解析均以 run 的引擎家族作为粘性集合,否则回退到官方选择。overlay 加载后立即渲染;冲突的官方系列被取消选择(图例中变暗),同家族官方配置可通过点击图例恢复,点击冲突家族仍会触发原有的拦截提示;关闭 run 即可恢复官方选择。无 overlay 时行为与之前完全一致。
测试:扩展了
exclusion.test.ts的粘性解析单元测试;翻转了 #549 的组件测试预期并新增同家族用例;新增ChartDisplay表格模式测试,验证 overlay 行保留、冲突官方行剔除、且不会向 provider 写回剥离后的选择。本地tsc、oxlint、oxfmt、vitest(2568 项)与 Cypress 组件套件(178 项)全部通过,并已用真实 run?unofficialrun=29272097721在本地手动验证。🤖 Generated with Claude Code
Note
Medium Risk
Changes legend/comparison selection and provider sync on agentic charts with unofficial overlays; behavior is unchanged when no overlay is in scope, but cross-engine conflicts now prefer overlays over officials.
Overview
Fixes unofficial run overlays never showing on agentic charts when the loaded run’s engine family conflicts with the active official selection (e.g. vLLM overlay vs SGLang official).
ScatterGraphaddsexclusionStickySet: if any overlay hw types are in scope,resolveComparisonSelectionusesoverlay:*keys as the stickyprevinstead of the official selection, so the run’s family wins and conflicting officials are deselected (dimmed) rather than dropping the overlay. Reset filter uses the same sticky preference so it does not flip back to officials and hide the run.ChartDisplaymirrors that logic inresolvedScopedOverlayHwTypesandvisibleComparisonRows, preventing the reconciliation effect from callingsetActiveOverlayHwTypesto strip overlay keys before render. Table mode follows the same resolution (overlay row kept, conflicting official dropped).Tests:
exclusion.test.tsdocuments both official-sticky and overlay-stickyprev; Cypress specs flip the cross-engine guard expectation, add same-family coexistence, and guard the provider write-back regression.Reviewed by Cursor Bugbot for commit 986e355. Bugbot is set up for automated code reviews on this repo. Configure here.