Skip to content

FE-1688: Remove the Optimizations tab and run optimization inside Experiments - #9685

Open
kube wants to merge 15 commits into
claude/opt-proto-metric-view-menufrom
claude/opt-proto-experiments-only-optimization
Open

FE-1688: Remove the Optimizations tab and run optimization inside Experiments#9685
kube wants to merge 15 commits into
claude/opt-proto-metric-view-menufrom
claude/opt-proto-experiments-only-optimization

Conversation

@kube

@kube kube commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Important

Experimental
Behind the Parameter sweeps and In-browser optimization feature flags.

Summary

Before this PR, the Simulate panel had an Optimizations tab beside Experiments and Scenarios. A study was created there from its own drawer, with the objective, the parameter bindings and the constraints, and ran through a channel of its own with a detached objective, Pause and Resume, a full view and a website route. A sweep could also hand its Parameters card to the optimizer, so the same search existed twice, in two places, with two sets of results.

This PR keeps one path. The Optimizations tab, its drawers, the full view, the standalone study channel and the website's /optimization route are deleted. Constraints become a property of the experiment: with both flags on, the first Sweep toggle on a saved scenario's parameter adds a Constraints section to the Create Experiment drawer, one list of parameter and state rows with a pass threshold, checked as you type, recorded with the experiment and listed behind a fold in the sweep's Parameters card. A study started from the card enforces them exactly: a parameter constraint prunes a step before anything simulates, a state constraint runs as a 0/1 indicator metric on every batch so a step's pass share is its run count. The experiment drawer shows the study's displays only once a study exists, and holds that shape through running, stopped, failed and later studies: a headline over the header, Steps and Steps clear columns, the Constraints and Sensitivity analysis cards after the metric charts and the steps table under them. Objective by step stays under the sliders.

9685.mp4

Links

Changes

Constraints on the experiment

  • Constraints section in the Create Experiment drawer

    Appears with the first Sweep toggle on a saved scenario when both flags are on, between Scenario and Metrics. One list of parameter and state rows with a kind chip, a reserved diagnostic line per row and the Pass threshold in the header once a State row exists.
    Rows compile through the constraint language session as you type; Create sweep stays disabled with the first failing row named in the footer.

  • Constraints ride the experiment record

    CreateExperimentInput takes lowered constraints and a constraintPolicy; ExperimentRecord carries them with the scenario values it was created with.
    The sweep's Parameters card lists them behind a Show N constraints fold in its footer.

  • Exact enforcement through the sweep-driven study

    A parameter constraint is judged at the snapped grid point before the sweep navigates; an infeasible draw costs one step and no simulation.
    A state constraint runs as a precompiled 0/1 indicator metric under a constraint:<id> id on every batch, so a step's pass share is runsPassed / runsTotal over the runs that reported.
    A step whose point measured no verdict for a declared state constraint is pruned with that constraint named.
    A sweep with state constraints computes on the CPU; the drawer's WebGPU switch greys out while a State row is drafted.

  • GPU availability re-lowers the net after a pause in typing

    The drawer's WebGPU gate waits 250 ms after the last metric or constraint edit and keeps the previous reason meanwhile.

The study in the experiment drawer

  • Study displays appear once a study exists and keep their shape

    Headline at the right of the title line, Steps and Steps clear columns after Compute, the Constraints and Sensitivity analysis cards in the metric grid at the metric plot height, the steps table under both columns.
    The drawer changes shape once, at the first Optimize, and holds it across running, stopped, failed and later studies.

  • Stop is the only study control

    Pause and Resume go with the standalone study; Stop ends the search where it stands and the point refines to the run budget.

  • One wording for the study's progress

    describeStudyProgress reads the study alone and no longer prints Cancelled for every sweep study.

  • Optimize prompt and objective strip are keyed per experiment

    Swapping two sweeps in the same drawer resets the prompt's metric picker and the strip.

Deletions

  • Optimizations tab, its list, create and view drawers, full view and study results view

    SimulateViewMode loses optimizations; the drawer state loses create-optimization; Simulate shows Experiments and Scenarios.

  • Standalone study path

    The channel, the connected study, point refinement, the detached objective, the sampler of detached objectives, Pause, Resume, Continue, Refine and Retry, the remote-run re-attach and reconnect machinery.
    The pause path goes end to end: pauseOptimizationRun leaves the optimization capability, the paused event leaves the browser runtime's schema and worker messages.
    OptimizationStatus loses paused; OptimizationRecord loses errorCategory, errorDiagnostics, connectionState, computeBackend and axes; OptimizationConnectionState and the error taxonomy types are gone.
    The surface grid sampler, its quad-tree helpers and the changesets of the deleted features go with them.

  • Navigation and website

    The optimization resource, the create-optimization overlay, the simulate presentation and openPetrinautOptimizationFullView leave the navigation contract; old URLs carrying view=optimizations, overlay=create-optimization or present= normalise to the baseline.
    The website drops its /optimization route, the optimizer-service provider, the VITE_PETRINAUT_OPT_PROVIDER variable and the --with-optimizer-service flag of its dev script.

  • Docs

    The optimization guide folds into the experiments guide; the Optimizations tab and connected-study architecture pages are deleted, the browser runtime, sweep orchestration, sweep surface and ad-hoc form pages describe the folded product.

Review fixes

  • Constraint indicators sample every run that did not error

    sampleRuns: "all" also sampled errored runs, so an errored run was binned as passed or failed against the documented contract that it counts in neither runsPassed nor runsTotal.
    petrinaut-core gains a sampleRuns: "notErrored" mode, the indicator specs use it, and a user-defined metric test with an errored run in the batch pins the counts.

  • Core gets its own changeset

    One changeset bumped both packages with a UI sentence while the core's pause API removal was never released, so core had nothing to announce there.
    fold-optimization-into-experiments bumps @hashintel/petrinaut alone and metric-sample-not-errored-runs bumps @hashintel/petrinaut-core for the new sampling mode.

  • drawer-frame.tsx is the frame parts' one public door again

    Results view, results model, the stories, the objective strip and the same-shaped bypasses imported from the drawer-frame/ subtree.
    The root file re-exports the parts and every adopter imports from it; lint:tsc and the arch-docs lint pin it.

  • Sweep evaluator binds scenario.* by each scenario parameter's type in its constraint check

    It bound the snapped values' 0/1 transport while == compares by identity, so scenario.flag == true held for no draw.
    resolveTrialScenarioBindings decodes the snapped values as the scenario compiler binds them, and a create-sweep-trial-evaluator.test.ts case pins scenario.isolation == true pruning a draw with the switch off and holding for one with it on.

  • Failed study parks the sweep on the best step it tried

    Both failure paths settled the sweep with no best, so it parked uncapped on the point whose batch had just rejected.
    runAttachLoop carries the best step beside the sequence number and hands it to both failure paths; two provider.test.tsx cases pin a rejected batch and a study_failed event parking on the best step.

Known issues

  • Parameter constraints read parameters.* at the net's defaults

    The sweep path cannot lower the scenario's overrides on the main thread, so a constraint over an overridden net parameter is judged at the default value. Routing through the sweep session's compiled scenario is the follow-up.

  • Remote optimizer hosts have no optimization surface

    The HASH embed's optimization bridge and the With real optimizer story still mount a remote capability, but Optimize and Constraints require an optimizer that runs in the browser. A remote sweep evaluator, or deleting that wiring, is the follow-up.

  • Story fixtures mix models

    The drawer stories put a supply-chain study over the SIR sweep, so the steps table's parameter names do not match the sliders.

  • @local/petrinaut-optimizer-client is an unused dependency of the website

    Its last importer went with the route; removing it needs a lockfile change and a regenerated task-dependencies document.

Test coverage

  • create-experiment-drawer.test.tsx:

    Constraints section gating, row authoring and diagnostics, the pass threshold, the WebGPU switch under a State row, lowering at submit.

  • lower-constraint-drafts.test.ts, constraint-lsp.test.ts, constraint-indicators.test.ts:

    Drafts lower to constraints, blank rows are ignored, indicator specs per state constraint.

  • create-experiment.test.ts, sweep-optimizer.test.ts, create-sweep-trial-evaluator.test.ts:

    The record carries constraints and scenario values, the manifest fixes non-swept parameters at the record's values, an infeasible draw is pruned before navigation, state verdicts come from the indicator's pass share.

  • user-defined.test.ts in petrinaut-core:

    A min-over-time indicator sampled over the runs that did not error bins to the 0/1 pass counts the evaluator reads, and a batch with an errored run counts it in neither bin.

  • compile-net-shader.test.ts:

    The notErrored mode emits the same sampling guard as all, since the shader never samples a halted run.

  • experiment-results.test.tsx, view-experiment-drawer.test.tsx, study-header.test.tsx, describe-study-progress.test.ts, the study card tests under experiment-results/:

    Headline, Steps columns, cards and table appear only with a study, the layout signature is equal across study states, the constraints fold, Stop while driving, the prompt resets when the drawer swaps experiments.

  • use-gpu-availability.test.tsx:

    One lowering for a burst of metric edits, the previous reason kept while pending.

  • navigation/index.test.tsx, editor-provider.test.tsx, simulate-view.test.tsx, simulation-creation-drawer.test.tsx, provider.test.tsx:

    No optimization resource, overlay or presentation; two Simulate tabs; a study needs a sweep origin; a failed study parks the sweep on the best step it tried.

  • Website example-search.test.ts, navigation-search.test.ts:

    Legacy optimization params normalise to the baseline.

How to test

  • Open Petrinaut preview on Vercel
  • Viewport controls > Settings > Simulation > Parameter sweeps on, In-browser optimization on
  • Menu > Load example > SIR Epidemic Model
  • Switch to Simulate

    Expect two tabs, Experiments and Scenarios

  • Experiments > Create
    • Scenario > Seasonal Flu
    • Flip Sweep on infected_ratio

      Expect a Constraints section between Scenario and Metrics

    • Add parameter constraint > type scenario.infected_ratio < 0.5

      Expect the row to compile with no diagnostic line

    • Add state constraint > type return state.places.Infected.count <= 900;

      Expect the Pass threshold in the section header and the WebGPU switch greyed

    • Add a metric on Infected, then Create sweep
  • Parameters card > Show 2 constraints

    Expect both rows with their kind, label and code, the threshold under them

  • Parameters card > Optimize > Start

    Expect the headline on the title line, Steps and Steps clear columns, the Constraints and Sensitivity analysis cards after the metric chart, the steps table under them, Objective by step under the sliders

  • Stop

    Expect the same cards and table in place, sliders unlocked, the outcome on the headline

  • Open /?view=optimizations

    Expect the URL to settle on the baseline with the Experiments tab shown

@kube kube self-assigned this Sep 11, 2026
@vercel

vercel Bot commented Sep 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
hash Ready Ready Preview Sep 12, 2026 4:33pm UTC
petrinaut Ready Ready Preview Sep 12, 2026 4:33pm UTC
petrinaut-docs Ready Ready Preview Sep 12, 2026 4:33pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
hashdotdesign-tokens Ignored Ignored Preview Sep 12, 2026 4:33pm UTC

Request Review

@github-actions github-actions Bot added area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team type/eng > backend Owned by the @backend team area/apps area/apps > hash.design Affects the `hash.design` design site (app) labels Sep 11, 2026
@kube
kube added this pull request to stack #9549 September 11, 2026 19:25
@cursor

cursor Bot commented Sep 11, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Large product and API surface change (navigation, experiments context, optimizer protocol) though largely behind experimental flags; constraint enforcement and sweep-orchestration paths need careful review.

Overview
Removes the standalone Optimizations workflow and makes parameter sweeps the only place to run in-browser studies. The Simulate Optimizations tab, create/view drawers, full-view presentation, detached objective APIs, and Pause/Resume on the browser optimizer are deleted; legacy URLs (view=optimizations, present=, etc.) normalize to Simulate on Experiments.

Optimization now starts from a sweep’s Parameters card (Optimize / Stop), with study UI living in the experiment drawer (headline, Steps / Steps clear, Objective by step, Constraints and Sensitivity analysis cards, steps table). Constraints move onto the experiment: the create-sweep drawer gains a Constraints section (parameter + state rows, pass threshold), stored on the record and enforced by the sweep-driven study (parameter constraints prune before simulate; state constraints run as hidden constraint:<id> indicator metrics).

Website/dev cleanup: /optimization, VITE_PETRINAUT_OPT_PROVIDER, optimizer dev proxy, and --with-optimizer-service are removed; only the in-browser optimizer path remains.

Core: adds metric sampling mode sampleRuns: "notErrored" (used for state-constraint pass counts; WebGPU guard matches all for halted runs) and drops the paused optimization event / pauseOptimizationRun API end-to-end.

Reviewed by Cursor Bugbot for commit d06c633. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Comment thread libs/@hashintel/petrinaut/src/react/optimizations/provider.tsx

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

State-constraint rates currently include errored runs, and the package changeset and new module boundaries need correction.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Moves optimization into parameter-sweep experiments, removes standalone optimization surfaces and navigation, adds constraints and study results to experiment drawers, and updates browser-runtime behavior and documentation.

Changes:

  • Adds parameter/state constraints and sweep-driven optimization.
  • Integrates study progress, results, and controls into experiment drawers.
  • Removes standalone optimization UI, routing, pause handling, and service-demo wiring.
File summaries
File Description
libs/@local/petrinaut-arch-docs/content/website/router-integration.mdx Documents retired URL normalization.
libs/@local/petrinaut-arch-docs/content/ui/ad-hoc-form.mdx Updates experiment/sweep architecture.
libs/@local/petrinaut-arch-docs/content/experiments/sweep-surface.mdx Documents optimizer-driven sweep surfaces.
libs/@local/petrinaut-arch-docs/content/diagrams/browser-optimization-loop.d2 Revises optimization flow diagram.
libs/@hashintel/petrinaut/src/ui/views/SDCPN/components/viewport-settings-dialog.tsx Removes optimization-surface setting.
libs/@hashintel/petrinaut/src/ui/views/SDCPN/components/viewport-settings-dialog.test.tsx Updates default-setting test.
libs/@hashintel/petrinaut/src/ui/views/Editor/simulation-creation-drawer.tsx Removes optimization drawer routing.
libs/@hashintel/petrinaut/src/ui/views/Editor/simulation-creation-drawer.test.tsx Removes optimization drawer case.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/simulate-view.tsx Removes Optimizations tab.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/use-gpu-availability.ts Debounces GPU analysis.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/use-gpu-availability.test.tsx Tests debounced analysis.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/surface-sampling.ts Removes standalone surface sampling.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/surface-sampling.test.ts Removes obsolete sampling tests.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/surface-frame.tsx Narrows surface helpers to sweeps.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/results-view.tsx Specializes results rendering for experiments.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/results-model.ts Updates experiment study model.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/objective-history-chart.tsx Updates chart documentation.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/format-value.ts Makes scalar formatter private.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/drawer-frame/README.md Declares drawer-frame layer.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/drawer-frame/frame-header.tsx Removes full-view leading control.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/drawer-frame.test.tsx Updates frame imports.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/drawer-frame.stories.tsx Updates story imports.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/describe-study-progress.ts Simplifies statuses and adds step progress.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/shared/describe-study-progress.test.ts Tests study progress wording.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/view-optimization-drawer.tsx Deletes standalone study drawer.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/study-results/study-progress.ts Deletes connected-study progress helper.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/study-results/parameter-values.tsx Deletes standalone parameter display.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/study-results/objective-history-card.tsx Deletes standalone objective card.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/study-results/continue-control.tsx Deletes Continue control.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-surface/use-study-surface-walk.ts Deletes detached surface walk.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-surface/sample-study-cell.test.ts Deletes detached sampling tests.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-surface/navigation-slice.ts Deletes optimization surface navigation.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-status.ts Deletes standalone status mapping.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-status.test.ts Deletes status tests.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-seed.ts Deletes standalone seed helper.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-parameter-row.test.tsx Deletes optimization-form tests.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-full-view.tsx Deletes full study view.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/optimization-full-view.stories.tsx Deletes full-view stories.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/optimizations/create-optimization-drawer/constraint-lsp.ts Removes old constraint authoring helper.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/sweep-surface/visited-field.test.ts Updates visited-cell fixtures.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/sweep-objective-strip.tsx Updates fold import.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-steps/steps-table.tsx Relocates steps-table imports.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-steps.tsx Uses relocated steps table.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-header/convergence.ts Adds convergence assessment.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-header/convergence.test.ts Tests convergence assessment.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-header.tsx Integrates convergence status.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-header.test.tsx Tests study headline states.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-constraints-card.tsx Moves constraints card into experiments.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/study-constraints-card.test.ts Tests latest-step description.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/parameter-importance-panel/importance-view.ts Updates parameter-binding source.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/parameter-importance-panel/importance-view.test.ts Updates fixture import.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-results/parameter-importance-panel.tsx Uses relocated importance helper.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-metric-timeline/README.md Declares metric-timeline layer.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiment-metric-timeline.tsx Updates architecture documentation.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/create-experiment-drawer/constraints-section/use-constraint-lsp-session.ts Supports readonly scenario parameters.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/create-experiment-drawer/constraint-lsp.ts Adds mixed-list constraint diagnostics.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/create-experiment-drawer/constraint-lsp.test.ts Tests constraint diagnostics.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/create-experiment-drawer/constraint-drafts.ts Adds constraint draft state.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel/petrinaut-docs-content.ts Removes optimization guide registration.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel.test.tsx Updates editor context fixture.
libs/@hashintel/petrinaut/src/ui/petrinaut.stories.tsx Updates remote optimizer story guidance.
libs/@hashintel/petrinaut/src/ui/index.ts Removes presentation type export.
libs/@hashintel/petrinaut/src/ui/components/contour-surface/README.md Narrows contour surface ownership.
libs/@hashintel/petrinaut/src/react/state/user-settings-provider.tsx Migrates removed surface setting.
libs/@hashintel/petrinaut/src/react/state/user-settings-context.ts Removes surface setting contract.
libs/@hashintel/petrinaut/src/react/state/editor-provider.tsx Removes simulation presentation state.
libs/@hashintel/petrinaut/src/react/state/editor-provider.test.tsx Removes presentation navigation test.
libs/@hashintel/petrinaut/src/react/state/editor-context.ts Removes optimization view/drawer types.
libs/@hashintel/petrinaut/src/react/optimizations/use-optimization-source.ts Updates optimization-source semantics.
libs/@hashintel/petrinaut/src/react/optimizations/provider/point-refinement/objective-estimate.ts Deletes point-refinement estimation.
libs/@hashintel/petrinaut/src/react/optimizations/provider/create-sweep-trial-evaluator/pruned-trial-outcome.ts Adds shared prune outcome helper.
libs/@hashintel/petrinaut/src/react/optimizations/provider/create-sweep-trial-evaluator/parameter-constraints.ts Adds pre-navigation constraint evaluation.
libs/@hashintel/petrinaut/src/react/optimizations/provider/create-sweep-trial-evaluator/parameter-constraints.test.ts Retains parameter-constraint tests.
libs/@hashintel/petrinaut/src/react/optimizations/parameter-bindings.ts Extracts binding partitioning.
libs/@hashintel/petrinaut/src/react/optimizations/parameter-bindings.test.ts Tests binding partitioning.
libs/@hashintel/petrinaut/src/react/optimizations/fake-detached-objective-runs.fixtures.ts Deletes detached-run fixtures.
libs/@hashintel/petrinaut/src/react/optimizations/channel/create-optimization-channel/trial-outcome.ts Deletes detached trial outcome logic.
libs/@hashintel/petrinaut/src/react/optimizations/channel/create-optimization-channel/trial-constraints.ts Deletes detached constraint evaluation.
libs/@hashintel/petrinaut/src/react/navigation/index.tsx Removes optimization navigation contract.
libs/@hashintel/petrinaut/src/react/navigation/index.test.tsx Updates navigation tests.
libs/@hashintel/petrinaut/src/react/index.ts Removes retired public exports.
libs/@hashintel/petrinaut/src/react/hooks/use-petrinaut-mutations.test.tsx Updates editor fixture.
libs/@hashintel/petrinaut/src/react/hooks/use-petrinaut-commands.test.tsx Updates editor fixture.
libs/@hashintel/petrinaut/src/react/experiments/sweep-session/README.md Updates sweep-session architecture.
libs/@hashintel/petrinaut/src/react/experiments/sweep-session.ts Records metric sample counts.
libs/@hashintel/petrinaut/src/react/experiments/sweep-session.test.ts Tests sample-count publication.
libs/@hashintel/petrinaut/src/react/experiments/sweep-cell-objective.ts Returns values with sampled runs.
libs/@hashintel/petrinaut/src/react/experiments/sweep-cell-objective.test.ts Tests sampled-run counts.
libs/@hashintel/petrinaut/src/react/experiments/provider.tsx Stores fixed scenario values and removes detached sampling.
libs/@hashintel/petrinaut/src/react/experiments/context.test.ts Updates experiment fixtures.
libs/@hashintel/petrinaut/src/react/experiments/constraint-indicators.ts Adds state-constraint metrics and verdict counts.
libs/@hashintel/petrinaut/src/main.ts Removes presentation type export.
libs/@hashintel/petrinaut/README.md Updates optimization story instructions.
libs/@hashintel/petrinaut/docs/visual-settings.md Documents new optimization controls.
libs/@hashintel/petrinaut/docs/simulation.md Redirects search guidance to experiments.
libs/@hashintel/petrinaut/docs/README.md Folds optimization into experiments.
libs/@hashintel/petrinaut/docs/preview.md Removes standalone optimization wording.
libs/@hashintel/petrinaut/docs/petri-net-extensions.md Updates metric documentation link.
libs/@hashintel/petrinaut/docs/examples.md Updates optimization walkthrough.
libs/@hashintel/petrinaut/docs/drawing-a-net.md Updates Simulate workspace documentation.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/metrics/user-defined.test.ts Tests terminal indicator aggregation.
libs/@hashintel/petrinaut-core/src/optimization/optimization.test.ts Removes paused-event fixture.
libs/@hashintel/petrinaut-core/src/optimization/index.ts Removes pause event and capability API.
libs/@hashintel/petrinaut-core/src/optimization/browser/worker/study-runner.ts Removes pause callback handling.
libs/@hashintel/petrinaut-core/src/optimization/browser/worker/study-runner.pyodide.test.ts Updates runner callbacks.
libs/@hashintel/petrinaut-core/src/optimization/browser/worker/attach-optimizer-worker.ts Removes pause worker protocol.
libs/@hashintel/petrinaut-core/src/optimization/browser/worker/attach-optimizer-worker.test.ts Removes pause protocol test.
libs/@hashintel/petrinaut-core/src/optimization/browser/run-log.ts Removes paused terminal state.
libs/@hashintel/petrinaut-core/src/optimization/browser/run-log.test.ts Removes paused log test.
libs/@hashintel/petrinaut-core/src/optimization/browser/README.md Updates browser-runtime lifecycle.
libs/@hashintel/petrinaut-core/src/optimization/browser/messages.ts Removes pause messages.
libs/@hashintel/petrinaut-core/src/optimization/browser/browser-optimization.ts Removes pause capability implementation.
libs/@hashintel/petrinaut-core/src/optimization/browser/browser-optimization.test.ts Removes browser pause tests.
libs/@hashintel/petrinaut-core/src/ai.ts Folds optimization guidance into experiments.
apps/petrinaut-website/vite.config.ts Removes optimizer-service proxy.
apps/petrinaut-website/turbo.json Removes optimizer environment input.
apps/petrinaut-website/src/vite-env.d.ts Removes optimizer environment type.
apps/petrinaut-website/src/routes/optimization.tsx Deletes optimization route.
apps/petrinaut-website/src/main/app/optimization-demo/README.md Documents browser-only host.
apps/petrinaut-website/src/main/app/optimization-demo/petrinaut-opt-optimization.ts Deletes service client adapter.
apps/petrinaut-website/src/main/app/optimization-demo/petrinaut-opt-optimization-provider.tsx Deletes service provider.
apps/petrinaut-website/src/examples/use-shared-search-navigation.ts Removes presentation search state.
apps/petrinaut-website/src/examples/navigation-search.ts Removes presentation projection.
apps/petrinaut-website/src/examples/navigation-search.test.ts Tests remaining URL contract.
apps/petrinaut-website/src/examples/example-search.ts Removes optimization URL values.
apps/petrinaut-website/src/examples/example-search.test.ts Tests legacy URL normalization.
apps/petrinaut-website/scripts/dev.sh Removes optimizer-service startup.
apps/petrinaut-website/README.md Documents browser optimization only.
apps/petrinaut-website/docs/task-dependencies.json Removes optimizer environment dependency.
apps/petrinaut-website/.env.example Removes optimizer-service variable.
.changeset/simulate-drawer-frame.md Updates drawer-frame release note.
.changeset/optimization-dedicated-view.md Removes obsolete release note.
.changeset/fold-optimization-into-experiments.md Adds fold-in release note.
Review details
  • Files reviewed: 129/204 changed files
  • Comments generated: 3
  • Review effort level: Balanced

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread libs/@hashintel/petrinaut/src/react/experiments/constraint-indicators.ts Outdated
Comment thread .changeset/fold-optimization-into-experiments.md
TimDiekmann
TimDiekmann previously approved these changes Sep 12, 2026
@kube
kube added this pull request to the merge queue Sep 12, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue because a pull request earlier in the stack was removed Sep 12, 2026
@kube
kube added this pull request to the merge queue Sep 12, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue because a pull request earlier in the stack was removed Sep 12, 2026
@kube
kube added this pull request to the merge queue Sep 12, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue because a pull request earlier in the stack was removed Sep 12, 2026
kube added 15 commits September 12, 2026 18:23
… parameter-constraint helper out of the Optimizations folder
… columns, constraint and sensitivity cards and steps table
…lit the core changeset and reopen the drawer-frame door
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps > hash.design Affects the `hash.design` design site (app) area/apps area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > backend Owned by the @backend team type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

6 participants