Skip to content

B6b: fix E1's half-migrated export-scope and UI-action-status callers (run_datasets broken on main) - #1212

Merged
trissim merged 1 commit into
mainfrom
fix/B6b-e1-boundaries
Oct 12, 2026
Merged

trissim merged 1 commit into
mainfrom
fix/B6b-e1-boundaries

Conversation

@trissim

@trissim trissim commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator

Main is broken since E1 (#1203): every run_datasets call is rejected, the measured CLI cannot build its run request, and the installed GUI smoke raises. This PR is only that fix and its tests.

What fails on main (a751b0eba, observed)

E1 made the export scope and the UI action status class families and left three callers on the old shape:

Caller Failure on main
RunDatasets.run passes the request's name member to Session.observation_export_params, which calls scope-class methods AttributeError: 'ZMQRuntimeObservationExportScope' object has no attribute 'check_export_path'; the operation returns rejected (run_datasets_failed)
openhcs-benchmark run-measured passes the scope class into DatasetRunRequest, whose field is the name view TypeError: DatasetRunRequest.runtime_observation_export_scope must be ZMQRuntimeObservationExportScope; got AutoRegisterMeta.
scripts/smoke_installed_gui.py reads UiActionInvocationStatus.ACCEPTED AttributeError: type object 'UiActionInvocationStatus' has no attribute 'ACCEPTED'

On main, tests/integration/test_agent_observation_export_zmq.py, test_session_journey.py and test_measured_cli_session.py give 10 failed, 21 passed (with tests/unit/test_smoke_installed_gui.py); 8 of the 10 are these boundaries. The GUI journey waits out its 300 s stage timeout.

Fix

  • RunDatasets.run hands the session request.runtime_observation_export_scope.scope (the class).
  • The measured CLI builds the request with RuntimeObservationExportScopeName(args.observation_scope).
  • The GUI smoke checks action_result.status is ActionAccepted, in require_ui_action_accepted so a test can call it.

Tests (fail on main, pass here)

  • tests/unit/test_run_request_export_scope.py: for every registered scope, RunDatasets.run gives the real Session.observation_export_params the scope class.
  • tests/unit/test_benchmark_control.py::test_measured_cli_builds_its_run_request_for_every_observation_scope.
  • tests/unit/test_smoke_installed_gui.py::test_gui_smoke_accepts_only_an_accepted_ui_action, over the status family.

Observed: on main's sources 5 failed plus a collection error for the smoke module; with the fix 64 passed. The three integration files with the fix: 3 failed, 12 passed.

Still failing after this PR (not this boundary; fixed in the B6b follow-up)

  • test_ordinary_execution_can_export_outcomes_without_value_observation: KeyError: 'well_count' (stale test).
  • test_read_only_dataset_initializes_in_a_mirrored_workspace: PipelineOrchestrator has no plate_path (stale test).
  • test_stopped_run_is_cancelled_and_refuses_finalization: timing-dependent. A stop that lands during compile-before-execution ends as failed, not cancelled. It passed alone (1 passed) and failed in the full file under load.

B6b · guards 3/3 · guardrails rc=0 · production −12 +21 · tests −2 +158

🤖 Generated with Claude Code

…s; GUI smoke reads the action status class

E1 (#1203) made the export scope and the UI action status class families but
left three callers on the old shape:

- the measured CLI passed the scope class into DatasetRunRequest, whose field
  is the name view (TypeError in validation);
- RunDatasets passed the name member to Session.observation_export_params,
  which calls scope-class methods (AttributeError, every run rejected);
- scripts/smoke_installed_gui.py read UiActionInvocationStatus.ACCEPTED.

Tests: one per caller, parametrized over the registered family.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 12, 2026 02:45

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@trissim
trissim merged commit ebbbb8f into main Oct 12, 2026
4 of 37 checks passed
trissim added a commit that referenced this pull request Oct 12, 2026
The installed-GUI smoke keeps formbridge's bridge DTO paths and the
datasets widget identity, and reads the action status as the
UiActionInvocationStatus class family from formbridge.bridge.dto.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants