FE-1552: Make the sweep drawer a live control with rastered, eased distribution views - #9478
Merged
kube merged 44 commits intoSep 3, 2026
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
3 tasks
kube
changed the base branch from
claude/fe-1552-parallel-orchestration
to
claude/fe-1552-sweep-view-fixes
September 1, 2026 23:16
3 tasks
kube
force-pushed
the
claude/fe-1552-frame-popover-raster
branch
from
September 1, 2026 23:17
eb92d31 to
9b9cbd8
Compare
kube
force-pushed
the
claude/fe-1552-frame-popover-raster
branch
from
September 2, 2026 16:12
299e365 to
77425b0
Compare
… and close the cross-area seams
The compute activity list sits under the summary that renders it, the range-draw translator under the batch instantiator, pair selection inside the shader generator, and the bin-value summary under the plot hook that reads it. The session stops re-exporting the cell helpers only its own modules use, and the translator's random-draw oracle test becomes a fixed two-run fixture.
Seeded batches no longer expand their plan into run records in the provider with a second boolean encoding; the plan carries the seeds and the core expander attaches them.
…erimental settings Both are off by default. Without the sweeps setting the experiment form offers no Sweep toggle, so every experiment takes fixed values and no sweep session, navigator, surface or batch list can appear. Without the surface setting a study drawer shows no Surface section and runs no local compute.
A batch failure now rides on the session update, so the idle publish that follows it no longer overwrites the error status. Disposing a session cancels its background batches through their handles instead of letting them run to completion. A draw-build failure and an error before the first frame both release the surface's waiters, and a stale generation's error no longer marks the replacement selection failed. The surface gate opens on in-flight frames, not only on completed runs.
…bodies The surface is keyed by study id, so axis choices, slider positions and the sample cache no longer carry over to another study; its parameter records are prototype-free and its refinement effect depends on the study's id and input rather than the whole streamed record. Both result drawers hide overflow on the overlay body so only their lists scroll.
Axis readouts derive their precision from the axis step, so adjacent positions of a narrow interval never display the same value. Integer axes draw one equal-width bucket per value instead of rounding a continuous draw, which gave the endpoints half the share of interior values.
… by the pool The provider keeps the backends an experiment chose and disposes them when the experiment's handle or sweep session goes, so a finished GPU experiment releases its device. A wide background lane takes at least one worker, never two, so three lanes do not exceed the pool on small machines.
CiaranMn
approved these changes
Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Important
Experimental
Adds the Parameter sweeps and Optimization surface feature flags.
Frame inspector histogram and heatmap bin extents ship for everyone.
Summary
Before this PR, sweep drawer visuals lagged its compute. Frame inspector listed one DOM row per bin behind a scrollbar, the contour surface was click-only, the summary showed one inherited progress bar, and distribution heatmaps striped and flashed where GPU-binned frames met exact frames. Sweep session, provider, GPU backend and timeline code sat in multi-concern files, and no setting gated the sweep or surface features.
This PR draws the inspector's distribution as a canvas raster, makes the surface a drag control, lists every computing batch in the summary, paints heatmap bins by their declared extent with eased updates, and keeps the drawer's layout still while runs stream. It splits that code into single-concern modules documented in the architecture docs and adds the Parameter sweeps and Optimization surface settings.
9478.mp4
Measured on the
Bench / SweepDrawerstories after a slider commit:Links
Changes
Frame inspector and heatmap
binExtentin coreSimulate / FramePopoverandSimulate / ExperimentMetricTimeline → Mixed bin latticesstoriesSurface drag
use-surface-dragSummary, batches and layout stillness
sweepBatchesSettings
Module split
shared/foldersBehaviour changes carried on purpose
Review fixes
Known issues
Next steps
stringanduuidattributes and for transitions with several input or output places. Shader split keeps each in one file:compile-net-shader/token-layout.ts,transition-firing.tsandoutput-emission.tsTest coverage
bin-histogram-raster.test.ts:distribution-heatmap.test.ts,density-grid.test.tsanddisplay-easing.test.ts:sweep-session.test.ts:batch-registry.test.ts:create-experiment-drawer.test.tsx:viewport-settings-dialog.test.tsx:expand-run-plan.test.ts:frame-merge.test.ts:Bench / SweepDrawerstories driven with Playwright:How to test
/optimizationrouteturbo run dev --filter @apps/petrinaut-website -- --with-optimizer-serviceDemo
Screenshots pending (will be handed over for drag-drop).