Skip to content

Nest Early abort under Optimization and list CE model above it - #614

Merged
erikdarlingdata merged 1 commit into
devfrom
fix/613-nest-early-abort
Sep 29, 2026
Merged

erikdarlingdata merged 1 commit into
devfrom
fix/613-nest-early-abort

Conversation

@erikdarlingdata

Copy link
Copy Markdown
Owner

Summary

  • In the App's Runtime Summary, "Early abort" now sits on the row under "Optimization", with its label indented 12px. The early abort reason is part of the optimization result, so it reads as a detail of that row. The value stays in the same column.
  • "CE model" moves up above "Optimization", as the issue suggested. Optimization and its early abort reason now end the list.
  • The web Runtime card and the HTML export use the same [FEATURE] Add system to assign a "maximum benefit" for plan analysis rules #215 E11 order, so "CE Model" also moves above "Optimization" there. Neither one shows an early abort row, so there is nothing to nest.
  • If a plan has an early abort reason but no optimization level, the row is not indented.

Closes #613

Changes

  • src/PlanViewer.App/Controls/PlanViewerControl.RuntimeSummary.cs: AddRow takes a nested flag that indents the label. The CE model row comes before the Optimization row.
  • src/PlanViewer.Web/Pages/InsightsPanel.razor and src/PlanViewer.Core/Output/HtmlExporter.cs: the CE Model row comes before the Optimization row. The E11 order comments show the new order.
  • tests/PlanViewer.Core.Tests/RuntimeSummaryEarlyAbortTests.cs (new): a headless test of the row order and the indent. A second test checks that the row is not indented when there is no Optimization row.
  • tests/PlanViewer.Core.Tests/HtmlExporterTests.cs: a test that the HTML runtime card lists CE Model above Optimization.

Test Plan

Generated with Claude Code

https://claude.ai/code/session_019tS6P95Dtzs4aeMpb1xqzX

The early abort reason is part of the optimization result, so the App's
Runtime Summary now shows it on the row under Optimization with its label
indented. CE model moves up above Optimization, so Optimization and its
reason end the list, as in the issue's mockup.

The web Runtime card and the HTML export follow the same #215 E11 order,
so CE Model moves above Optimization there too. They have no Early abort
row, so there is nothing to nest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019tS6P95Dtzs4aeMpb1xqzX
@claude

claude Bot commented Sep 29, 2026

Copy link
Copy Markdown

Reviewed: no correctness, untrusted-input, or convention issues found. The App, HTML export, and Blazor orderings are consistent. The nested-label logic handles the case where there is no Optimization row. The new tests cover both the nested and non-nested cases plus the HTML ordering. No version, NoWarn, or Web csproj changes are needed.

@erikdarlingdata
erikdarlingdata merged commit ad0e6e4 into dev Sep 29, 2026
4 checks passed
@erikdarlingdata
erikdarlingdata deleted the fix/613-nest-early-abort branch September 29, 2026 16:08
erikdarlingdata added a commit to erikdarlingdata/PerformanceMonitor that referenced this pull request Sep 29, 2026
…under it, as in PerformanceStudio (#4836) (#4849)

The plan viewer's Runtime Summary listed Optimization, then Early abort, then CE model. PerformanceStudio moved CE model above Optimization and nests the early abort reason under Optimization (erikdarlingdata/PerformanceStudio#613, fixed by erikdarlingdata/PerformanceStudio#614). The reason is part of the optimization result. The two plan viewers showed the same plan's summary in a different order.

- PlanDisplayText.BuildRuntimeSummaryRows lists Cached plan size, Memory grant, Branches and Threads, then CE model, Optimization and Early abort.
- RuntimeSummaryRow gains Nested. The Early abort row is nested when an Optimization row is present, and a plain row when there is none.
- PlanViewerControl indents a nested row's label by 12 pixels, and its value stays in the same column as every other value. Lite and the Darling viewer share the control.
- Tests pin the order, the nesting rule and the label-only indent.
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.

1 participant