tests/acceptance/mcp/test_observer.py::test_valid_trial[visible] tests/acceptance/mcp/test_observer.py::test_valid_trial[hidden] tests/acceptance/mcp/test_observer.py::test_valid_trial[empty] tests/acceptance/mcp/test_observer.py::test_unusable_image_rejects_correct_answer[missing] tests/acceptance/mcp/test_observer.py::test_unusable_image_rejects_correct_answer[empty] tests/acceptance/mcp/test_observer.py::test_unusable_image_rejects_correct_answer[corrupt] tests/acceptance/mcp/test_observer.py::test_unusable_image_rejects_correct_answer[hidden] tests/acceptance/mcp/test_observer.py::test_unusable_image_rejects_correct_answer[mime] tests/acceptance/mcp/test_observer.py::test_unusable_image_rejects_correct_answer[dimensions] tests/acceptance/mcp/test_observer.py::test_invalid_evidence_rejected[text] tests/acceptance/mcp/test_observer.py::test_invalid_evidence_rejected[identifier] tests/acceptance/mcp/test_observer.py::test_invalid_evidence_rejected[missing_value] tests/acceptance/mcp/test_observer.py::test_invalid_evidence_rejected[early_answer] tests/acceptance/mcp/test_observer.py::test_invalid_evidence_rejected[wrong_answer] tests/acceptance/mcp/test_observer.py::test_invalid_evidence_rejected[extra_tool] tests/acceptance/mcp/test_observer.py::test_invalid_evidence_rejected[unfinished] tests/acceptance/mcp/test_observer.py::test_guess_rejected_without_image[hidden] tests/acceptance/mcp/test_observer.py::test_guess_rejected_without_image[empty] tests/acceptance/opm/test_evidence_checks.py::test_inspection_accepts_recorded_conversion_rounding tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[material-cell_depths_ft] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[material-cell_volumes_ft3] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[material-permx_millidarcy] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[missing-cell_depths_ft] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[missing-cell_volumes_ft3] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[missing-permx_millidarcy] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[extra-cell_depths_ft] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[extra-cell_volumes_ft3] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[extra-permx_millidarcy] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[nan-cell_depths_ft] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[nan-cell_volumes_ft3] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[nan-permx_millidarcy] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[infinity-cell_depths_ft] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[infinity-cell_volumes_ft3] tests/acceptance/opm/test_evidence_checks.py::test_inspection_rejects_changed_or_invalid_arrays[infinity-permx_millidarcy] tests/acceptance/opm/test_evidence_checks.py::test_inspection_keeps_grid_identity_exact[change0] tests/acceptance/opm/test_evidence_checks.py::test_inspection_keeps_grid_identity_exact[change1] tests/acceptance/opm/test_evidence_checks.py::test_inspection_keeps_grid_identity_exact[change2] tests/acceptance/opm/test_evidence_checks.py::test_inspection_keeps_grid_identity_exact[change3] tests/acceptance/opm/test_evidence_checks.py::test_well_targets_follow_the_inspected_completion_layer tests/acceptance/opm/test_evidence_checks.py::test_corner_check_rejects_geometry_that_keeps_the_same_cell_count tests/acceptance/opm/test_evidence_checks.py::test_completion_table_rejects_a_connection_in_another_cell tests/acceptance/opm/test_evidence_checks.py::test_applied_edit_without_image_does_not_pass_visual_acceptance tests/acceptance/opm/test_evidence_checks.py::test_failure_acceptance_requires_the_expected_public_error tests/acceptance/opm/test_evidence_checks.py::test_curve_check_rejects_wrong_source_or_pressure[change0] tests/acceptance/opm/test_evidence_checks.py::test_curve_check_rejects_wrong_source_or_pressure[change1] tests/acceptance/opm/test_evidence_checks.py::test_curve_check_rejects_wrong_source_or_pressure[change2] tests/acceptance/opm/test_evidence_checks.py::test_curve_check_rejects_wrong_source_or_pressure[change3] tests/acceptance/opm/test_evidence_checks.py::test_curve_check_rejects_wrong_source_or_pressure[change4] tests/acceptance/opm/test_evidence_checks.py::test_curve_check_rejects_wrong_source_or_pressure[change5] tests/acceptance/opm/test_evidence_checks.py::test_cleanup_continues_after_failed_poll_and_unknown_job tests/acceptance/opm/test_evidence_checks.py::test_capture_checks_requested_scene[change0-requested-camera] tests/acceptance/opm/test_evidence_checks.py::test_capture_checks_requested_scene[change1-None] tests/acceptance/opm/test_evidence_checks.py::test_capture_checks_requested_scene[change2-requested-legend] tests/acceptance/opm/test_evidence_checks.py::test_capture_checks_requested_scene[change3-requested-legend] tests/acceptance/opm/test_evidence_checks.py::test_capture_checks_requested_scene[change4-observed-scene] tests/acceptance/opm/test_evidence_checks.py::test_curve_comparison_rejects_wrong_source_with_correct_delta[baseline] tests/acceptance/opm/test_evidence_checks.py::test_curve_comparison_rejects_wrong_source_with_correct_delta[scenario] tests/acceptance/opm/test_evidence_checks.py::test_definition_accepts_recorded_project_rounding tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[material-targets-x_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[material-targets-y_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[material-targets-depth_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[material-perforations-start_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[material-perforations-end_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[material-perforations-diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[material-perforations-skin] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[nan-targets-x_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[nan-targets-y_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[nan-targets-depth_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[nan-perforations-start_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[nan-perforations-end_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[nan-perforations-diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[nan-perforations-skin] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[infinity-targets-x_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[infinity-targets-y_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[infinity-targets-depth_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[infinity-perforations-start_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[infinity-perforations-end_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[infinity-perforations-diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[infinity-perforations-skin] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[boolean-targets-x_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[boolean-targets-y_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[boolean-targets-depth_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[boolean-perforations-start_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[boolean-perforations-end_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[boolean-perforations-diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_definition_rejects_changed_numeric_fields[boolean-perforations-skin] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[name] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[unit] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[datum] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[direction] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[top_shape] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[target_count] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[perforation_count] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[target_field] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[perforation_field] tests/acceptance/opm/test_evidence_checks.py::test_definition_keeps_identity_and_shape_exact[missing_field] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_accept_only_recorded_endpoint_rounding tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[material-start_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[material-end_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[material-compdat_factor_field] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[material-permeability_length_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[material-diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[material-skin] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[nan-start_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[nan-end_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[nan-compdat_factor_field] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[nan-permeability_length_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[nan-diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[nan-skin] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[infinity-start_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[infinity-end_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[infinity-compdat_factor_field] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[infinity-permeability_length_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[infinity-diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_numeric_changes[infinity-skin] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_even_tiny_non_endpoint_changes[compdat_factor_field] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_even_tiny_non_endpoint_changes[permeability_length_md_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_even_tiny_non_endpoint_changes[diameter_ft] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_reject_even_tiny_non_endpoint_changes[skin] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_keep_identity_shape_and_order_exact[cell] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_keep_identity_shape_and_order_exact[status] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_keep_identity_shape_and_order_exact[direction] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_keep_identity_shape_and_order_exact[extra] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_keep_identity_shape_and_order_exact[missing] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_keep_identity_shape_and_order_exact[count] tests/acceptance/opm/test_evidence_checks.py::test_fresh_connections_keep_identity_shape_and_order_exact[order] tests/acceptance/views/test_observer.py::test_complete_images_pass_transport_gate_only tests/acceptance/views/test_observer.py::test_unusable_image_rejects_visual_claims[missing] tests/acceptance/views/test_observer.py::test_unusable_image_rejects_visual_claims[hidden] tests/acceptance/views/test_observer.py::test_unusable_image_rejects_visual_claims[empty] tests/acceptance/views/test_observer.py::test_unusable_image_rejects_visual_claims[dimensions] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[order] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[session] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[reference] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[duplicate_image] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[control_context] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[early_answer] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[extra_tool] tests/acceptance/views/test_observer.py::test_malformed_sequence_rejects_visual_claims[unfinished] tests/acceptance/views/test_observer.py::test_no_image_answer_cannot_pass_native_acceptance tests/acceptance/views/test_observer.py::test_wrong_native_camera_rejects_visual_claims tests/acceptance/views/test_observer.py::test_command_preserves_generated_native_client_path tests/acceptance/views/test_observer.py::test_command_limits_preapproval_to_owned_view_operations tests/contracts/test_engineering.py::test_model_identity_survives_json_without_accepting_other_identifier_kinds tests/contracts/test_engineering.py::test_pressure_rejects_nonfinite_or_coerced_values[nan] tests/contracts/test_engineering.py::test_pressure_rejects_nonfinite_or_coerced_values[inf] tests/contracts/test_engineering.py::test_pressure_rejects_nonfinite_or_coerced_values[-inf] tests/contracts/test_engineering.py::test_pressure_rejects_nonfinite_or_coerced_values[4800] tests/contracts/test_engineering.py::test_pressure_cannot_be_labeled_as_length tests/contracts/test_engineering.py::test_fixture_depth_interval_keeps_feet_and_explicit_direction tests/contracts/test_engineering.py::test_invalid_measured_depth_intervals[8424.0-8326.0-ft] tests/contracts/test_engineering.py::test_invalid_measured_depth_intervals[8326.0-8326.0-ft] tests/contracts/test_engineering.py::test_invalid_measured_depth_intervals[-1.0-1.0-ft] tests/contracts/test_engineering.py::test_invalid_measured_depth_intervals[0.0-1.0-day] tests/contracts/test_engineering.py::test_invalid_measured_depth_intervals[0.0-inf-ft] tests/contracts/test_engineering.py::test_active_array_order_is_explicit_and_can_skip_inactive_cells tests/contracts/test_engineering.py::test_mapping_rejects_duplicate_or_outside_cells[cells0] tests/contracts/test_engineering.py::test_mapping_rejects_duplicate_or_outside_cells[cells1] tests/contracts/test_engineering.py::test_cell_indices_do_not_accept_negative_or_boolean_indices tests/contracts/test_engineering.py::test_report_series_rejects_regressing_simulation_history[0-31.0-calendar0] tests/contracts/test_engineering.py::test_report_series_rejects_regressing_simulation_history[1-0.0-calendar1] tests/contracts/test_engineering.py::test_report_series_rejects_regressing_simulation_history[1-31.0-calendar2] tests/contracts/test_errors.py::test_error_codes_survive_public_json[busy] tests/contracts/test_errors.py::test_error_codes_survive_public_json[lost_connection] tests/contracts/test_errors.py::test_error_codes_survive_public_json[stale_object] tests/contracts/test_errors.py::test_error_codes_survive_public_json[invalid_model] tests/contracts/test_errors.py::test_error_codes_survive_public_json[unsupported_operation] tests/contracts/test_errors.py::test_lost_reply_can_preserve_unknown_mutation_effect tests/contracts/test_errors.py::test_failure_cannot_also_carry_a_success_value tests/contracts/test_job_execution.py::test_submission_rejects_ambiguous_command_and_time[change0] tests/contracts/test_job_execution.py::test_submission_rejects_ambiguous_command_and_time[change1] tests/contracts/test_job_execution.py::test_submission_rejects_ambiguous_command_and_time[change2] tests/contracts/test_job_execution.py::test_submission_rejects_ambiguous_command_and_time[change3] tests/contracts/test_job_execution.py::test_submission_rejects_ambiguous_command_and_time[change4] tests/contracts/test_job_execution.py::test_submission_rejects_ambiguous_command_and_time[change5] tests/contracts/test_job_execution.py::test_execution_metadata_round_trips tests/contracts/test_job_execution.py::test_job_rejects_wrong_process_group_and_log_lineage tests/contracts/test_job_execution.py::test_events_reject_blank_messages_and_backward_time tests/contracts/test_jobs_and_lineage.py::test_request_cancel_preserves_execution_until_confirmation tests/contracts/test_jobs_and_lineage.py::test_lost_execution_evidence_remains_unknown_until_reconciled tests/contracts/test_jobs_and_lineage.py::test_terminal_jobs_cannot_restart_or_receive_cancellation[succeeded] tests/contracts/test_jobs_and_lineage.py::test_terminal_jobs_cannot_restart_or_receive_cancellation[failed] tests/contracts/test_jobs_and_lineage.py::test_terminal_jobs_cannot_restart_or_receive_cancellation[canceled] tests/contracts/test_jobs_and_lineage.py::test_terminal_claims_require_outcome_evidence tests/contracts/test_jobs_and_lineage.py::test_result_import_keeps_exact_job_revision_and_separate_numerical_assessment tests/contracts/test_jobs_and_lineage.py::test_revision_lineage_is_immutable_and_session_local tests/contracts/test_jobs_and_lineage.py::test_model_entrypoint_must_identify_one_unique_input tests/contracts/test_jobs_and_lineage.py::test_interrupted_launch_can_be_unknown_without_claiming_it_never_started tests/contracts/test_observations.py::test_observation_preserves_simulator_date_separately_from_capture_instant tests/contracts/test_observations.py::test_result_view_state_retains_trusted_identity_and_observed_camera tests/contracts/test_observations.py::test_capture_timestamp_requires_explicit_utc[captured_at0] tests/contracts/test_observations.py::test_capture_timestamp_requires_explicit_utc[captured_at1] tests/contracts/test_observations.py::test_render_requires_exact_stored_result_context[result] tests/contracts/test_observations.py::test_render_requires_exact_stored_result_context[revision] tests/contracts/test_observations.py::test_render_requires_exact_stored_result_context[grid] tests/contracts/test_observations.py::test_render_requires_exact_stored_result_context[report] tests/contracts/test_observations.py::test_observation_cannot_use_another_sessions_image tests/contracts/test_observations.py::test_applied_edit_survives_failed_render_without_old_observation tests/contracts/test_observations.py::test_edit_observation_must_show_resulting_scene tests/contracts/test_observations.py::test_view_rejects_cross_session_case_handles tests/contracts/test_projects.py::test_project_records_round_trip_and_save_requires_explicit_overwrite tests/contracts/test_projects.py::test_project_request_rejects_relative_path[ProjectOpenRequest] tests/contracts/test_projects.py::test_project_request_rejects_relative_path[ProjectSaveRequest] tests/contracts/test_projects.py::test_project_state_rejects_mixed_context_and_duplicate_reference tests/contracts/test_run_results.py::test_manifest_requires_complete_distinct_session_local_outputs tests/contracts/test_run_results.py::test_dataset_preserves_units_active_order_and_rejects_shape_errors tests/contracts/test_run_results.py::test_docker_submission_preserves_command_and_rejects_ambiguous_mounts tests/contracts/test_run_results.py::test_older_result_and_job_records_remain_readable tests/contracts/test_sessions.py::test_handles_cannot_cross_sessions_reconnections_or_projects[session] tests/contracts/test_sessions.py::test_handles_cannot_cross_sessions_reconnections_or_projects[connection] tests/contracts/test_sessions.py::test_handles_cannot_cross_sessions_reconnections_or_projects[project] tests/contracts/test_sessions.py::test_busy_is_recoverable_but_lost_requires_new_connection tests/contracts/test_sessions.py::test_attached_close_defaults_to_detach_and_rejects_unapproved_termination tests/contracts/test_sessions.py::test_close_rejects_request_for_a_different_connection tests/contracts/test_sessions.py::test_owned_connection_requires_process_identity tests/contracts/test_sessions.py::test_termination_requires_fresh_matching_process_lifetime[owned] tests/contracts/test_sessions.py::test_termination_requires_fresh_matching_process_lifetime[attached] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields0-OPEN] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields0-SHUT] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields1-OPEN] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields1-SHUT] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields2-OPEN] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields2-SHUT] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields3-OPEN] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields3-SHUT] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields4-OPEN] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields4-SHUT] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields5-OPEN] tests/contracts/test_wells.py::test_controls_round_trip_through_discriminated_json[fields5-SHUT] tests/contracts/test_wells.py::test_rate_modes_require_matching_rates_and_allow_zero_only_when_shut[producer-oil_rate-None-stb/day] tests/contracts/test_wells.py::test_rate_modes_require_matching_rates_and_allow_zero_only_when_shut[injector-surface_rate-WATER-stb/day] tests/contracts/test_wells.py::test_rate_modes_require_matching_rates_and_allow_zero_only_when_shut[injector-surface_rate-GAS-Mscf/day] tests/contracts/test_wells.py::test_surface_rates_reject_invalid_numbers[nan] tests/contracts/test_wells.py::test_surface_rates_reject_invalid_numbers[inf] tests/contracts/test_wells.py::test_surface_rates_reject_invalid_numbers[-inf] tests/contracts/test_wells.py::test_surface_rates_reject_invalid_numbers[-1.0] tests/contracts/test_wells.py::test_surface_rates_reject_invalid_numbers[10] tests/contracts/test_wells.py::test_surface_rates_reject_invalid_numbers[True] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[producer-nan] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[producer-inf] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[producer--inf] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[producer-0.0] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[producer--1.0] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[producer-10] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[producer-True] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[injector-nan] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[injector-inf] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[injector--inf] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[injector-0.0] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[injector--1.0] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[injector-10] tests/contracts/test_wells.py::test_pressure_limits_require_positive_finite_numbers[injector-True] tests/contracts/test_wells.py::test_controls_reject_unknown_choices_and_fields[change0] tests/contracts/test_wells.py::test_controls_reject_unknown_choices_and_fields[change1] tests/contracts/test_wells.py::test_controls_reject_unknown_choices_and_fields[change2] tests/contracts/test_wells.py::test_controls_reject_unknown_choices_and_fields[change3] tests/contracts/test_wells.py::test_injector_rejects_oil_phase_and_surface_rate_rejects_unknown_fields tests/contracts/test_wells.py::test_authored_well_names_round_trip[A] tests/contracts/test_wells.py::test_authored_well_names_round_trip[Prod_123] tests/contracts/test_wells.py::test_authored_well_names_round_trip[abcdefgh] tests/contracts/test_wells.py::test_authored_well_names_round_trip[Z9] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[123] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[_PROD] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[ABCDEFGHI] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[A-B] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[\xc5] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[A\n] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[A*] tests/contracts/test_wells.py::test_authored_well_names_reject_invalid_names[1] tests/jobs/test_container.py::test_container_exit_is_durable[0-succeeded] tests/jobs/test_container.py::test_container_exit_is_durable[7-failed] tests/jobs/test_container.py::test_cancel_stops_container_and_keeps_evidence tests/jobs/test_container.py::test_foreign_label_blocks_stop tests/jobs/test_container.py::test_deadline_stops_daemon_work tests/jobs/test_container.py::test_uncertain_container_id_write_never_starts_work tests/jobs/test_container.py::test_recovery_stops_container_after_supervisor_loss tests/jobs/test_container.py::test_docker_failure_stops_local_log_reader tests/jobs/test_container.py::test_recovery_distinguishes_absence_from_unavailable_daemon tests/jobs/test_container.py::test_recovery_rejects_foreign_same_name_container tests/jobs/test_container.py::test_slow_start_inspection_cannot_launch_after_deadline tests/jobs/test_faults.py::test_cancel_during_supervisor_claim_preserves_intent tests/jobs/test_faults.py::test_failed_uncertainty_write_still_reports_committed_job tests/jobs/test_faults.py::test_wall_deadline_runs_during_blocked_state_publication tests/jobs/test_faults.py::test_lost_supervisor_preserves_unknown_and_never_relaunches tests/jobs/test_faults.py::test_stale_persisted_identity_never_authorizes_signal tests/jobs/test_faults.py::test_uncertain_update_is_not_retried tests/jobs/test_faults.py::test_recovery_after_interrupted_launch tests/jobs/test_faults.py::test_deadline_escalates_despite_unavailable_census tests/jobs/test_faults.py::test_failed_deadline_thread_cleans_owned_command tests/jobs/test_faults.py::test_failed_log_publication_never_reports_success tests/jobs/test_faults.py::test_failed_supervisor_waiter_retains_job_identity tests/jobs/test_mcp_acceptance.py::test_mcp_disconnect_restart_preserves_execution[complete] tests/jobs/test_mcp_acceptance.py::test_mcp_disconnect_restart_preserves_execution[cancel] tests/jobs/test_process.py::test_cancel_real_child_tree tests/jobs/test_process.py::test_exited_leader_retains_child_group tests/jobs/test_process.py::test_escalate_ignored_termination tests/jobs/test_process.py::test_stale_identity_never_signals_unrelated_process tests/jobs/test_process.py::test_reject_unsafe_sigchld_policy[1] tests/jobs/test_process.py::test_reject_unsafe_sigchld_policy[] tests/jobs/test_process.py::test_membership_access_failure_is_visible tests/jobs/test_process.py::test_changed_start_marker_blocks_group_signal tests/jobs/test_process.py::test_startup_inspection_failure_does_not_signal tests/jobs/test_process.py::test_missing_executable_reports_launch_failure tests/jobs/test_process.py::test_child_created_after_pid_snapshot_prevents_empty_result tests/jobs/test_process.py::test_changed_inventory_rejects_empty_confirmation tests/jobs/test_process.py::test_empty_command_argument_is_preserved tests/jobs/test_service.py::test_default_enforcement_rejected_before_launch tests/jobs/test_service.py::test_exit_status_logs_and_policy[0] tests/jobs/test_service.py::test_exit_status_logs_and_policy[7] tests/jobs/test_service.py::test_cancel_tree_and_preserve_terminal tests/jobs/test_service.py::test_wall_deadline_requires_confirmed_termination tests/jobs/test_service.py::test_service_process_disconnect_preserves_job tests/jobs/test_service.py::test_recovery_refuses_live_supervisor tests/jobs/test_service.py::test_concurrent_cancel_keeps_intent tests/jobs/test_service.py::test_missing_executable_records_failed_launch tests/jobs/test_service.py::test_supervisor_rejects_caller_module_shadowing tests/mcp/test_content.py::test_native_image_preserves_full_context tests/mcp/test_content.py::test_image_failure_returns_no_old_image[empty] tests/mcp/test_content.py::test_image_failure_returns_no_old_image[corrupt] tests/mcp/test_content.py::test_image_failure_returns_no_old_image[dimensions] tests/mcp/test_content.py::test_image_failure_returns_no_old_image[format] tests/mcp/test_content.py::test_image_failure_returns_no_old_image[missing] tests/mcp/test_content.py::test_applied_edit_survives_image_delivery_outcome[True] tests/mcp/test_content.py::test_applied_edit_survives_image_delivery_outcome[False] tests/mcp/test_content.py::test_failed_observation_preserves_applied_receipt tests/mcp/test_content.py::test_other_results_preserve_success_and_stable_failure tests/mcp/test_content.py::test_unexpected_image_read_failure_has_safe_error tests/mcp/test_content.py::test_geological_image_keeps_applied_edit_on_missing_image[True] tests/mcp/test_content.py::test_geological_image_keeps_applied_edit_on_missing_image[False] tests/mcp/test_general_compilation.py::test_public_compilation_preserves_sources_across_restart tests/mcp/test_general_launcher.py::test_general_launcher_reopens_artifacts_and_models tests/mcp/test_general_launcher.py::test_managed_general_models_follow_selection tests/mcp/test_general_launcher.py::test_invalid_authoring_configuration_leaves_no_workspace tests/mcp/test_general_launcher.py::test_authoring_policy_reaches_native_client_configuration tests/mcp/test_general_launcher.py::test_general_well_plans_survive_restart_and_workspace_selection tests/mcp/test_general_physics.py::test_physics_ownership_units_pages_and_parent_survive_mcp_restart tests/mcp/test_general_schedules.py::test_schedule_queries_and_differences_survive_managed_restart tests/mcp/test_job_bindings.py::test_job_tools_require_explicit_controller[False] tests/mcp/test_job_bindings.py::test_job_tools_require_explicit_controller[True] tests/mcp/test_job_bindings.py::test_typed_job_calls_dispatch_to_exact_controller_method tests/mcp/test_job_bindings.py::test_missing_session_prevents_all_job_dispatch tests/mcp/test_job_bindings.py::test_job_requests_require_explicit_session[job_submit] tests/mcp/test_job_bindings.py::test_job_requests_require_explicit_session[job_poll] tests/mcp/test_job_bindings.py::test_job_requests_require_explicit_session[job_cancel] tests/mcp/test_job_bindings.py::test_job_controller_errors_retain_stable_contract[job_submit] tests/mcp/test_job_bindings.py::test_job_controller_errors_retain_stable_contract[job_poll] tests/mcp/test_job_bindings.py::test_job_controller_errors_retain_stable_contract[job_cancel] tests/mcp/test_launcher.py::test_workspace_launcher_creates_and_reopens_without_native_import tests/mcp/test_launcher.py::test_managed_launcher_selects_isolated_workspaces_and_reopens tests/mcp/test_launcher.py::test_managed_launcher_rejects_fixed_mode_creation_flag tests/mcp/test_launcher.py::test_invalid_log_directory_does_not_create_workspace[relative] tests/mcp/test_launcher.py::test_invalid_log_directory_does_not_create_workspace[missing] tests/mcp/test_launcher.py::test_invalid_log_directory_does_not_create_workspace[file] tests/mcp/test_launcher.py::test_invalid_log_directory_does_not_create_workspace[unwritable] tests/mcp/test_launcher.py::test_missing_native_requirement_does_not_create_workspace[rips] tests/mcp/test_launcher.py::test_missing_native_requirement_does_not_create_workspace[lsof] tests/mcp/test_launcher.py::test_unknown_launcher_option_does_not_create_workspace tests/mcp/test_launcher.py::test_native_startup_output_uses_stderr_with_working_protocol tests/mcp/test_launcher.py::test_configured_launcher_launches_attaches_and_preserves_process_on_disconnect tests/mcp/test_model_launcher.py::test_model_launcher_creates_clones_and_prepares_after_reconnect tests/mcp/test_model_launcher.py::test_model_launcher_imports_inputs_and_rejects_invalid_models tests/mcp/test_model_launcher.py::test_model_dependency_failure_does_not_create_workspace tests/mcp/test_model_launcher.py::test_model_prepare_rejects_unsupported_backend[julia] tests/mcp/test_model_launcher.py::test_model_prepare_rejects_unsupported_backend[unknown] tests/mcp/test_protocol.py::test_discovery_matches_resource_catalog tests/mcp/test_protocol.py::test_explicit_sessions_survive_reconnect tests/mcp/test_protocol.py::test_service_errors_are_stable_and_sanitized[contract-busy-not_applied] tests/mcp/test_protocol.py::test_service_errors_are_stable_and_sanitized[broken-execution_failed-not_applied] tests/mcp/test_protocol.py::test_service_output_stays_off_protocol_stdout tests/mcp/test_protocol.py::test_image_response_preserves_context_and_decodes_png tests/mcp/test_session_bindings.py::test_requests_reach_session_service_as_typed_records tests/mcp/test_session_bindings.py::test_missing_session_is_resolved_before_service_invocation tests/mcp/test_session_bindings.py::test_select_does_not_supply_a_later_mutation_target tests/mcp/test_session_bindings.py::test_request_cannot_grant_attached_process_termination tests/mcp/test_session_bindings.py::test_protocol_reconnect_preserves_service_connection tests/mcp/test_session_bindings.py::test_stable_service_errors_cross_protocol_unchanged[busy] tests/mcp/test_session_bindings.py::test_stable_service_errors_cross_protocol_unchanged[lost_connection] tests/mcp/test_session_bindings.py::test_stable_service_errors_cross_protocol_unchanged[stale_object] tests/mcp/test_session_bindings.py::test_stable_service_errors_cross_protocol_unchanged[unsupported_operation] tests/mcp/test_summary_content.py::test_summary_delivery_preserves_edit_and_exact_curve[valid] tests/mcp/test_summary_content.py::test_summary_delivery_preserves_edit_and_exact_curve[missing] tests/mcp/test_summary_content.py::test_summary_delivery_preserves_edit_and_exact_curve[dimensions] tests/mcp/test_summary_content.py::test_summary_delivery_preserves_edit_and_exact_curve[native-failed] tests/mcp/test_workflow_launcher.py::test_full_launcher_uses_concrete_services_and_explicit_sessions tests/mcp/test_workflow_launcher.py::test_invalid_workflow_configuration_creates_no_workspace[missing-logs-requires a ResInsight log directory] tests/mcp/test_workflow_launcher.py::test_invalid_workflow_configuration_creates_no_workspace[docker-alone-requires the OPM workflow configuration] tests/mcp/test_workflow_launcher.py::test_invalid_workflow_configuration_creates_no_workspace[relative-docker-Docker executable must use an absolute path] tests/mcp/test_workflow_launcher.py::test_invalid_workflow_configuration_creates_no_workspace[missing-workflow-interface-Project.export_prepared_input_grid] tests/mcp/test_workflow_launcher.py::test_invalid_workflow_configuration_creates_no_workspace[workflow-docker-failure-Docker] tests/models/general/test_authoring.py::test_range_reads_only_intersecting_chunks tests/models/general/test_authoring.py::test_join_reuses_parts_and_reopens tests/models/general/test_authoring.py::test_fault_throw_layer_order_and_explicit_inputs tests/models/general/test_authoring.py::test_fold_channel_and_inactive_boundary tests/models/general/test_authoring.py::test_memory_policy_rejects_before_publication tests/models/general/test_authoring.py::test_cross_session_arrays_and_invalid_geometry_are_rejected tests/models/general/test_authoring.py::test_policy_limits_messages_but_not_total_array_size tests/models/general/test_compilation.py::test_preparation_preserves_model_tables_reports_and_native_values[0-m] tests/models/general/test_compilation.py::test_preparation_preserves_model_tables_reports_and_native_values[3-m] tests/models/general/test_compilation.py::test_preparation_preserves_model_tables_reports_and_native_values[3-ft] tests/models/general/test_compilation.py::test_incomplete_inputs_do_not_receive_prepared_receipts tests/models/general/test_compilation.py::test_compiler_requires_explicit_omission_of_non_simulator_fields tests/models/general/test_compilation_failures.py::test_multiple_regions_reuse_exact_exports tests/models/general/test_compilation_failures.py::test_changed_well_plan_requires_explicit_export_replacement tests/models/general/test_compilation_failures.py::test_parser_resource_limits_return_typed_failures[parser_timeout_seconds-0.001-deadline] tests/models/general/test_compilation_failures.py::test_parser_resource_limits_return_typed_failures[parser_memory_mib-1-memory budget] tests/models/general/test_compilation_failures.py::test_compilation_disk_budget_includes_generated_inputs tests/models/general/test_compilation_failures.py::test_opm_rejects_native_connections_outside_the_grid tests/models/general/test_compilation_failures.py::test_preparation_survives_memory_statistics_disappearing_during_exit tests/models/general/test_physics.py::test_complete_regions_are_explicit_and_children_preserve_parent tests/models/general/test_physics.py::test_arrays_and_sparse_high_region_numbers_do_not_create_hidden_defaults tests/models/general/test_physics.py::test_repeated_edits_and_multipart_columns_have_no_total_count_limit tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[PVTW-rows0-volume_factor must be positive] tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[DENSITY-rows1-water must be positive] tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[SWOF-rows2-within [0, 1]] tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[RSVD-rows3-increase strictly] tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[PVTO-rows4-increase within each branch] tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[PVTO-rows5-Bubble pressures] tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[PVTO-rows6-must not decrease] tests/models/general/test_physics.py::test_invalid_physics_does_not_publish_a_child[EQUIL-rows7-flags 1, 0, 0] tests/models/general/test_physics.py::test_invalid_column_units_counts_ownership_and_stream_boundary_fail tests/models/general/test_physics.py::test_missing_duplicate_and_invalid_region_maps_fail tests/models/general/test_physics.py::test_duplicate_table_edits_and_missing_removals_fail tests/models/general/test_physics.py::test_field_model_requires_field_columns_without_silent_conversion tests/models/general/test_physics.py::test_combined_column_memory_budget_rejects_before_table_validation tests/models/general/test_schedules.py::test_independent_controls_carry_forward_and_reopen tests/models/general/test_schedules.py::test_child_changes_only_requested_events_and_diff_is_semantic tests/models/general/test_schedules.py::test_inserted_reports_do_not_move_events_and_removed_event_times_fail tests/models/general/test_schedules.py::test_history_replacement_and_well_removal_are_explicit tests/models/general/test_schedules.py::test_many_wells_reports_and_events_survive_reopen_with_small_pages tests/models/general/test_schedules.py::test_invalid_history_fails_without_changing_parent[events0] tests/models/general/test_schedules.py::test_invalid_history_fails_without_changing_parent[events1] tests/models/general/test_schedules.py::test_invalid_history_fails_without_changing_parent[events2] tests/models/general/test_schedules.py::test_invalid_history_fails_without_changing_parent[events3] tests/models/general/test_schedules.py::test_invalid_history_fails_without_changing_parent[events4] tests/models/general/test_schedules.py::test_invalid_history_fails_without_changing_parent[events5] tests/models/general/test_schedules.py::test_duplicate_times_phase_units_and_control_modes_are_rejected tests/models/general/test_schedules.py::test_field_controls_and_exact_model_binding tests/models/general/test_schedules.py::test_configured_request_budget_can_be_exceeded_through_separate_edits tests/models/general/test_well_plans.py::test_multipart_plans_have_no_fixed_target_interval_or_well_count tests/models/general/test_well_plans.py::test_child_plan_preserves_parent_and_rejects_other_well tests/models/general/test_well_plans.py::test_wrong_units_and_foreign_model_fail_before_native_use tests/models/general/test_well_plans.py::test_invalid_interval_geometry_is_rejected[intervals0] tests/models/general/test_well_plans.py::test_invalid_interval_geometry_is_rejected[intervals1] tests/models/general/test_well_plans.py::test_invalid_interval_geometry_is_rejected[intervals2] tests/models/general/test_well_plans.py::test_native_samples_must_preserve_endpoints_and_measured_depth tests/models/imports/test_failures.py::test_model_files_cannot_run_as_python_modules[resinsight_mcp.py] tests/models/imports/test_failures.py::test_model_files_cannot_run_as_python_modules[resinsight_mcp/__init__.py] tests/models/imports/test_failures.py::test_model_files_cannot_run_as_python_modules[opm.py] tests/models/imports/test_failures.py::test_oversized_repetition_returns_a_model_error_without_publication tests/models/imports/test_failures.py::test_partial_publication_preserves_failure_and_reports_recovery_context[FailSecondArtifactStore-storage_failed-Injected artifact storage failure.-1] tests/models/imports/test_failures.py::test_partial_publication_preserves_failure_and_reports_recovery_context[FailRevisionStore-conflict-Injected revision conflict.-6] tests/models/imports/test_failures.py::test_leading_zero_repetition_does_not_trigger_integer_conversion_failure tests/models/imports/test_failures.py::test_cleanup_failure_reports_the_published_revision tests/models/imports/test_failures.py::test_derived_publication_failure_preserves_parent_and_reports_unknown tests/models/imports/test_failures.py::test_materialization_validates_the_stored_include_graph_before_yield tests/models/imports/test_failures.py::test_materialization_preserves_consumer_oserror tests/models/imports/test_failures.py::test_materialization_preserves_unknown_with_cleanup_failure tests/models/imports/test_failures.py::test_materialization_cleanup_failure_after_consumer_reports_unknown tests/models/imports/test_failures.py::test_materialization_cleanup_failure_inside_unrelated_exception_handler tests/models/imports/test_imports.py::test_persistent_sources_reopen_through_a_new_store tests/models/imports/test_imports.py::test_persistent_sources_reject_changed_values_and_redirected_files[property] tests/models/imports/test_imports.py::test_persistent_sources_reject_changed_values_and_redirected_files[control] tests/models/imports/test_imports.py::test_persistent_sources_reject_changed_values_and_redirected_files[source-link] tests/models/imports/test_imports.py::test_persistent_materialization_rejects_invalid_destinations_before_writes[relative] tests/models/imports/test_imports.py::test_persistent_materialization_rejects_invalid_destinations_before_writes[existing] tests/models/imports/test_imports.py::test_persistent_materialization_rejects_invalid_destinations_before_writes[linked-parent] tests/models/imports/test_imports.py::test_import_preserves_lineage_and_prepares_stored_inputs_after_reopen[modify] tests/models/imports/test_imports.py::test_import_preserves_lineage_and_prepares_stored_inputs_after_reopen[remove] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[SPE1.DATA-FIELD-FIELD\nMETRIC] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[SPE1.DATA-DISGAS-DISGAS\nVAPOIL] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[SPE1.DATA-UNIFOUT-UNIFOUT\nNOTAKEYWORD] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[SPE1.DATA-10 10 3 /-0 10 3 /] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[SPE1.DATA-10 10 3 /-ten 10 3 /] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-20000 4* 1000-1* 4* 1000] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-20000 4* 1000-20000 5*] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-100000 1* 9014-1* 1* 9014] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-100000 1* 9014-100000 2*] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-WCONPROD\n 'PROD' 'OPEN' 'ORAT' 20000 4* 1000 /\n/-] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-'PROD' 10 10 3 3-'PROD' 10 10 4 4] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-20000 4* 1000-20000 -100 3* 1000] tests/models/imports/test_imports.py::test_invalid_model_leaves_no_saved_artifacts_or_jobs[includes/schedule.inc-1 1 /-0 1 /] tests/models/imports/test_imports.py::test_nested_includes_use_source_root_and_preserve_empty_files tests/models/imports/test_imports.py::test_unsafe_include_graph_is_rejected[missing] tests/models/imports/test_imports.py::test_unsafe_include_graph_is_rejected[cycle] tests/models/imports/test_imports.py::test_unsafe_include_graph_is_rejected[traversal] tests/models/imports/test_imports.py::test_unsafe_include_graph_is_rejected[absolute] tests/models/imports/test_imports.py::test_unsafe_include_graph_is_rejected[symlink] tests/models/imports/test_imports.py::test_consumed_parser_directives_are_rejected[END] tests/models/imports/test_imports.py::test_consumed_parser_directives_are_rejected[ENDINC] tests/models/imports/test_imports.py::test_consumed_parser_directives_are_rejected[SKIP] tests/models/imports/test_imports.py::test_consumed_parser_directives_are_rejected[SKIP100] tests/models/imports/test_imports.py::test_consumed_parser_directives_are_rejected[SKIP300] tests/models/imports/test_imports.py::test_consumed_parser_directives_are_rejected[ENDSKIP] tests/models/imports/test_imports.py::test_comma_include_cannot_bypass_source_collection tests/models/imports/test_imports.py::test_repeated_include_expansion_is_bounded tests/models/imports/test_imports.py::test_unclosed_include_quotes_return_a_clear_failure tests/models/imports/test_imports.py::test_open_well_with_shut_completion_is_rejected_before_opm_can_close_it tests/models/imports/test_imports.py::test_materialization_inspects_stored_field_geometry_and_cleans_staging tests/models/imports/test_imports.py::test_materialize_rejects_missing_revision_before_yield tests/models/imports/test_imports.py::test_derived_revision_inherits_identity_and_preserves_parent_inputs tests/models/imports/test_imports.py::test_derived_invalid_input_does_not_publish_artifacts tests/models/imports/test_imports.py::test_explicit_connection_fields_use_current_profile_and_opm_units tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[-1 0.5 9500 0 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[0 0.5 9500 0 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[1e999 0.5 9500 0 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[10 0.5 -1 0 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[10 0.5 0 0 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[10 0.5 1e999 0 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[10 0.5 9500 -1 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[10 0.5 9500 1e999 1* 'Z'] tests/models/imports/test_imports.py::test_invalid_explicit_connection_fields_are_rejected[10 0.5 9500 0 1* 'A'] tests/models/imports/test_imports.py::test_completion_cannot_partly_overlap_or_default_outside_the_grid[10 10 2 4] tests/models/imports/test_imports.py::test_completion_cannot_partly_overlap_or_default_outside_the_grid[0 10 3 3] tests/models/imports/test_imports.py::test_completion_cannot_partly_overlap_or_default_outside_the_grid[10 10 3 2] tests/models/imports/test_imports.py::test_inactive_cell_deck_remains_outside_the_supported_profile tests/models/synthetic/test_grid.py::test_active_cell_order_and_parsed_layer_properties tests/models/synthetic/test_grid.py::test_invalid_grid_fails_before_generation[updates0] tests/models/synthetic/test_grid.py::test_invalid_grid_fails_before_generation[updates1] tests/models/synthetic/test_grid.py::test_invalid_grid_fails_before_generation[updates2] tests/models/synthetic/test_grid.py::test_invalid_grid_fails_before_generation[updates3] tests/models/synthetic/test_grid.py::test_invalid_rock_is_rejected[0] tests/models/synthetic/test_grid.py::test_invalid_rock_is_rejected[1] tests/models/synthetic/test_grid.py::test_invalid_rock_is_rejected[nan] tests/models/synthetic/test_grid.py::test_initial_contacts_require_positive_down_order tests/models/synthetic/test_grid.py::test_equilibrium_preserves_reference_values tests/models/synthetic/test_service.py::test_generated_revision_preserves_specification_and_prepares_after_reopen tests/models/synthetic/test_service.py::test_unknown_session_does_not_publish_inputs tests/models/synthetic/test_service.py::test_invalid_complete_model_is_rejected[same_name] tests/models/synthetic/test_service.py::test_invalid_complete_model_is_rejected[same_cell] tests/models/synthetic/test_service.py::test_invalid_complete_model_is_rejected[outside] tests/models/synthetic/test_service.py::test_invalid_complete_model_is_rejected[two_producers] tests/models/synthetic/test_service.py::test_invalid_complete_model_is_rejected[too_long] tests/models/synthetic/test_service.py::test_metadata_reader_rejects_missing_or_repeated_specifications[] tests/models/synthetic/test_service.py::test_metadata_reader_rejects_missing_or_repeated_specifications[-- synthetic-specification: {}\n-- synthetic-specification: {}\n] tests/models/synthetic/test_service.py::test_generated_controls_preserve_supported_modes[pressure] tests/models/synthetic/test_service.py::test_generated_controls_preserve_supported_modes[shut] tests/models/synthetic/test_service.py::test_generated_controls_preserve_supported_modes[water] tests/models/synthetic/test_service.py::test_import_publication_failure_retains_its_effect tests/models/synthetic/test_service.py::test_cleanup_failure_reports_the_published_revision tests/models/synthetic/test_service.py::test_cleanup_failure_preserves_delegated_publication_uncertainty tests/models/synthetic/test_service.py::test_cleanup_failure_preserves_unapplied_import_failure tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[parent] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[datum] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[cell] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[status] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[interval] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[diameter] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[skin] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[wellhead] tests/models/wells/test_failures.py::test_incompatible_completion_export_does_not_publish[name] tests/models/wells/test_failures.py::test_distinct_exports_for_same_well_are_rejected tests/models/wells/test_failures.py::test_unissued_export_retains_source_failure_without_publication tests/models/wells/test_failures.py::test_role_and_injection_phase_changes_are_rejected[GAS] tests/models/wells/test_failures.py::test_role_and_injection_phase_changes_are_rejected[WATER] tests/models/wells/test_failures.py::test_report_index_beyond_parent_reports_is_rejected tests/models/wells/test_failures.py::test_parent_with_later_injection_phase_change_is_rejected tests/models/wells/test_failures.py::test_parent_with_uninitialized_fluid_table_entry_is_rejected tests/models/wells/test_failures.py::test_partial_child_publication_retains_unknown_and_parent tests/models/wells/test_failures.py::test_materialization_cleanup_after_publication_retains_unknown_and_recovery_identity[False] tests/models/wells/test_failures.py::test_materialization_cleanup_after_publication_retains_unknown_and_recovery_identity[True] tests/models/wells/test_failures.py::test_well_introduced_after_report_zero_cannot_be_replaced tests/models/wells/test_failures.py::test_native_difference_beyond_tolerance_does_not_publish[start_md_ft] tests/models/wells/test_failures.py::test_native_difference_beyond_tolerance_does_not_publish[end_md_ft] tests/models/wells/test_failures.py::test_native_difference_beyond_tolerance_does_not_publish[diameter_ft] tests/models/wells/test_failures.py::test_native_difference_beyond_tolerance_does_not_publish[skin] tests/models/wells/test_records.py::test_observed_well_retains_positive_down_depth_and_measured_depth tests/models/wells/test_records.py::test_upward_frame_and_overlapping_perforations_are_rejected tests/models/wells/test_records.py::test_prepared_case_rejects_another_session tests/models/wells/test_records.py::test_schedule_has_one_ordered_control_per_report_and_matching_exports tests/models/wells/test_schedule_service.py::test_child_replaces_all_requested_completions_and_preserves_other_well_events tests/models/wells/test_schedule_service.py::test_completion_field_factors_and_control_units_survive_publication tests/models/wells/test_schedule_service.py::test_high_precision_untouched_properties_and_fluid_tables_are_preserved tests/models/wells/test_schedule_service.py::test_generated_reference_retains_fluids_and_original_generation_metadata tests/models/wells/test_schedule_service.py::test_native_default_reference_depth_uses_first_new_connection tests/models/wells/test_schedule_service.py::test_native_roundoff_is_accepted_without_changing_exported_values tests/resinsight/general_wells/test_service.py::test_public_well_load_export_and_restore_retain_lineage tests/resinsight/general_wells/test_service.py::test_foreign_plan_and_stale_grid_do_not_create_native_wells tests/resinsight/general_wells/test_service.py::test_mutated_native_result_reports_unknown_effect tests/resinsight/general_wells/test_service.py::test_invalid_cells_and_perforation_bounds_fail_export tests/resinsight/general_wells/test_service.py::test_native_unit_guard_rejects_missing_or_wrong_units[None] tests/resinsight/general_wells/test_service.py::test_native_unit_guard_rejects_missing_or_wrong_units[FIELD] tests/resinsight/modeled_wells/test_lifecycle.py::test_reconnect_restores_case_and_adopts_well_with_fresh_version tests/resinsight/modeled_wells/test_lifecycle.py::test_adoption_retires_the_old_version_zero_reference tests/resinsight/modeled_wells/test_lifecycle.py::test_restoring_a_case_requires_explicit_well_adoption[False] tests/resinsight/modeled_wells/test_lifecycle.py::test_restoring_a_case_requires_explicit_well_adoption[True] tests/resinsight/modeled_wells/test_lifecycle.py::test_adoption_rejects_changed_native_data[definition] tests/resinsight/modeled_wells/test_lifecycle.py::test_adoption_rejects_changed_native_data[trajectory] tests/resinsight/modeled_wells/test_lifecycle.py::test_adoption_rejects_changed_native_data[case] tests/resinsight/modeled_wells/test_lifecycle.py::test_restore_rejects_changed_case_and_wrong_model_receipt tests/resinsight/modeled_wells/test_lifecycle.py::test_clone_can_explicitly_adopt_an_existing_well_name tests/resinsight/modeled_wells/test_lifecycle.py::test_source_root_requires_an_explicit_canonical_path[False] tests/resinsight/modeled_wells/test_lifecycle.py::test_source_root_requires_an_explicit_canonical_path[True] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_selects_source_path_between_same_name_cases tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_unverified_cases_without_adoption[missing] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_unverified_cases_without_adoption[wrong] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_unverified_cases_without_adoption[ambiguous] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_unverified_cases_without_adoption[geometry] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_unverified_cases_without_adoption[grid] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_request_rejects_mixed_sessions[context] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_request_rejects_mixed_sessions[model] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_request_rejects_mixed_sessions[receipt] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_tampered_receipt_before_native_validation[artifact] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_tampered_receipt_before_native_validation[revision] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_tampered_receipt_before_native_validation[directory] tests/resinsight/modeled_wells/test_lifecycle.py::test_lookup_rejects_project_change_before_locked_access tests/resinsight/modeled_wells/test_prepared_backend.py::test_prepared_load_exports_then_loads_properties_and_creates_a_view tests/resinsight/modeled_wells/test_prepared_backend.py::test_restored_case_rejects_wrong_source_or_model_data[path] tests/resinsight/modeled_wells/test_prepared_backend.py::test_restored_case_rejects_wrong_source_or_model_data[active-order] tests/resinsight/modeled_wells/test_prepared_backend.py::test_restored_case_rejects_wrong_source_or_model_data[property] tests/resinsight/modeled_wells/test_prepared_backend.py::test_restored_case_rejects_wrong_source_or_model_data[missing-corner] tests/resinsight/modeled_wells/test_rips.py::test_completion_export_preserves_optional_native_reference_depth[-None] tests/resinsight/modeled_wells/test_rips.py::test_completion_export_preserves_optional_native_reference_depth[None-None] tests/resinsight/modeled_wells/test_rips.py::test_completion_export_preserves_optional_native_reference_depth[8335.0-8335.0] tests/resinsight/modeled_wells/test_rips.py::test_invalid_native_reference_depth_fails_before_mutation tests/resinsight/modeled_wells/test_service.py::test_create_update_and_export_preserve_fixed_model_and_snapshot tests/resinsight/modeled_wells/test_service.py::test_another_created_well_can_be_inspected_through_fresh_project_reference tests/resinsight/modeled_wells/test_service.py::test_invalid_name_and_changed_case_reject_before_native_mutation tests/resinsight/modeled_wells/test_service.py::test_reversed_native_depth_does_not_return_a_successful_well tests/resinsight/modeled_wells/test_service.py::test_invalid_completion_does_not_publish_an_export tests/resinsight/modeled_wells/test_service.py::test_changed_native_well_and_stale_version_reject tests/resinsight/modeled_wells/test_service.py::test_unknown_native_update_stays_unknown tests/resinsight/modeled_wells/test_service.py::test_unknown_export_artifact_is_not_trusted tests/resinsight/modeled_wells/test_service.py::test_persistent_sources_survive_explicit_service_close tests/resinsight/modeled_wells/test_service.py::test_service_close_is_idempotent tests/resinsight/modeled_wells/test_service.py::test_export_with_another_artifact_identity_is_not_trusted tests/resinsight/modeled_wells/test_service.py::test_missing_created_address_retires_the_connection tests/resinsight/modeled_wells/test_service.py::test_missing_loaded_address_retires_the_connection tests/resinsight/modeled_wells/test_service.py::test_close_waits_for_native_load_and_rejects_new_work tests/resinsight/modeled_wells/test_service.py::test_removed_case_address_cannot_reuse_an_old_reference tests/resinsight/sessions/test_native_mutations.py::test_empty_project_creation_returns_complete_fresh_mapping tests/resinsight/sessions/test_native_mutations.py::test_stale_context_rejects_before_callback tests/resinsight/sessions/test_native_mutations.py::test_changed_process_rejects_before_callback_and_retires_connection tests/resinsight/sessions/test_native_mutations.py::test_all_mutation_phases_exclude_same_session_without_blocking_another tests/resinsight/sessions/test_native_mutations.py::test_invisible_edit_invalidates_all_old_references tests/resinsight/sessions/test_native_mutations.py::test_known_unapplied_callback_failure_preserves_connection_and_references tests/resinsight/sessions/test_native_mutations.py::test_uncertain_callback_failure_retires_connection[False] tests/resinsight/sessions/test_native_mutations.py::test_uncertain_callback_failure_retires_connection[True] tests/resinsight/sessions/test_native_mutations.py::test_failed_observation_after_completed_mutation_reports_unknown[False] tests/resinsight/sessions/test_native_mutations.py::test_failed_observation_after_completed_mutation_reports_unknown[True] tests/resinsight/sessions/test_native_mutations.py::test_failed_final_mapping_validation_retires_completed_mutation[False] tests/resinsight/sessions/test_native_mutations.py::test_failed_final_mapping_validation_retires_completed_mutation[True] tests/resinsight/sessions/test_rips_backend.py::test_attach_observes_supported_objects_and_disconnect_preserves_process tests/resinsight/sessions/test_rips_backend.py::test_deadline_reports_uncertain_mutation_without_retry tests/resinsight/sessions/test_rips_backend.py::test_remote_failure_does_not_claim_project_was_unchanged tests/resinsight/sessions/test_rips_backend.py::test_termination_confirms_process_exit tests/resinsight/sessions/test_rips_backend.py::test_unproved_process_identity_is_rejected tests/resinsight/sessions/test_rips_backend.py::test_version_mismatch_refuses_attach_without_exiting[2025] tests/resinsight/sessions/test_rips_backend.py::test_dead_process_does_not_return_previous_observations tests/resinsight/sessions/test_rips_backend.py::test_launch_records_host_identity_and_output tests/resinsight/sessions/test_service.py::test_sessions_survive_a_new_controller_without_live_connections tests/resinsight/sessions/test_service.py::test_unknown_session_never_starts_or_attaches_an_application[False] tests/resinsight/sessions/test_service.py::test_unknown_session_never_starts_or_attaches_an_application[True] tests/resinsight/sessions/test_service.py::test_one_process_cannot_bind_two_sessions_and_selection_does_not_retarget tests/resinsight/sessions/test_service.py::test_external_inventory_change_rejects_old_and_forged_references tests/resinsight/sessions/test_service.py::test_explicit_project_operations_invalidate_even_an_identical_inventory tests/resinsight/sessions/test_service.py::test_invalid_paths_and_default_overwrite_reject_before_application_calls tests/resinsight/sessions/test_service.py::test_uncertain_mutation_loses_binding_and_reconnect_rejects_previous_refs[execution_failed-unknown] tests/resinsight/sessions/test_service.py::test_uncertain_mutation_loses_binding_and_reconnect_rejects_previous_refs[lost_connection-not_applied] tests/resinsight/sessions/test_service.py::test_busy_session_does_not_block_another_application_or_lose_connection tests/resinsight/sessions/test_service.py::test_owned_default_close_detaches_and_attached_termination_needs_trusted_permission tests/resinsight/sessions/test_service.py::test_termination_rejects_changed_process_lifetime tests/resinsight/sessions/test_service.py::test_detach_keeps_session_and_new_binding_rejects_old_references tests/resinsight/sessions/test_service.py::test_process_binding_spans_controllers_until_explicit_detach tests/resinsight/sessions/test_service.py::test_save_verification_failure_reports_uncertainty_and_loses_connection tests/resinsight/sessions/test_service.py::test_close_cleanup_failure_retires_connection_and_reports_uncertainty[detach] tests/resinsight/sessions/test_service.py::test_close_cleanup_failure_retires_connection_and_reports_uncertainty[terminate] tests/resinsight/sessions/test_service.py::test_blank_native_object_names_survive_inspection_and_resolution tests/resinsight/views/test_camera.py::test_camera_preserves_pose_and_projection[perspective] tests/resinsight/views/test_camera.py::test_camera_preserves_pose_and_projection[orthographic] tests/resinsight/views/test_camera.py::test_look_at_places_eye_at_origin_and_target_in_front tests/resinsight/views/test_camera.py::test_camera_detects_changed_projection_extent tests/resinsight/views/test_camera.py::test_camera_rejects_scaled_native_matrix tests/resinsight/views/test_camera.py::test_camera_rejects_orientation_that_disagrees_with_target tests/resinsight/views/test_camera.py::test_only_orthographic_depth_translation_preserves_projection[perspective] tests/resinsight/views/test_camera.py::test_only_orthographic_depth_translation_preserves_projection[orthographic] tests/resinsight/views/test_capture.py::test_capture_retains_context_and_distinct_decoded_images tests/resinsight/views/test_capture.py::test_missing_export_after_success_cannot_reuse_previous_image tests/resinsight/views/test_capture.py::test_invalid_export_does_not_publish_an_image[dimensions] tests/resinsight/views/test_capture.py::test_invalid_export_does_not_publish_an_image[corrupt] tests/resinsight/views/test_capture.py::test_invalid_export_does_not_publish_an_image[multiple] tests/resinsight/views/test_discovery.py::test_discovery_filters_actual_case_ownership_and_preserves_camera tests/resinsight/views/test_discovery.py::test_discovery_requires_trusted_binding tests/resinsight/views/test_discovery.py::test_sdk_discovers_current_views_and_rejects_a_replaced_project tests/resinsight/views/test_discovery.py::test_discovery_rejects_stale_or_cross_result_identity[stored_result] tests/resinsight/views/test_discovery.py::test_discovery_rejects_stale_or_cross_result_identity[other_result] tests/resinsight/views/test_discovery.py::test_discovery_rejects_stale_or_cross_result_identity[project] tests/resinsight/views/test_discovery.py::test_discovery_rejects_duplicate_or_unissued_native_addresses[addresses0] tests/resinsight/views/test_discovery.py::test_discovery_rejects_duplicate_or_unissued_native_addresses[addresses1] tests/resinsight/views/test_discovery.py::test_discovery_rejects_observable_project_change_during_read tests/resinsight/views/test_discovery.py::test_discovery_holds_session_access_during_native_read tests/resinsight/views/test_protocol.py::test_sdk_receives_view_receipt_and_fresh_image tests/resinsight/views/test_protocol.py::test_view_binding_is_optional_and_rejects_unknown_session tests/resinsight/views/test_rips.py::test_validate_accepts_supported_property_report_and_main_grid_bounds[SGAS] tests/resinsight/views/test_rips.py::test_validate_accepts_supported_property_report_and_main_grid_bounds[PORO] tests/resinsight/views/test_rips.py::test_validate_rejects_property_missing_from_its_native_category tests/resinsight/views/test_rips.py::test_validate_rejects_report_metadata_mismatch[calendar_date] tests/resinsight/views/test_rips.py::test_validate_rejects_report_metadata_mismatch[elapsed_days] tests/resinsight/views/test_rips.py::test_validate_rejects_filter_beyond_each_grid_boundary[i-3] tests/resinsight/views/test_rips.py::test_validate_rejects_filter_beyond_each_grid_boundary[j-4] tests/resinsight/views/test_rips.py::test_validate_rejects_filter_beyond_each_grid_boundary[k-5] tests/resinsight/views/test_rips.py::test_validate_rejects_missing_p06_capabilities tests/resinsight/views/test_rips.py::test_validate_retains_native_control_rejection_without_editing tests/resinsight/views/test_service.py::test_apply_requires_trusted_result_binding tests/resinsight/views/test_service.py::test_discovery_reports_existing_scene_version_without_advancing_it tests/resinsight/views/test_service.py::test_forged_object_references_fail_before_edit[case] tests/resinsight/views/test_service.py::test_forged_object_references_fail_before_edit[view] tests/resinsight/views/test_service.py::test_forged_object_references_fail_before_edit[well] tests/resinsight/views/test_service.py::test_next_edit_rejects_previous_observation_and_render tests/resinsight/views/test_service.py::test_expected_observation_must_belong_to_requested_view tests/resinsight/views/test_service.py::test_external_change_invalidates_observation_until_new_apply tests/resinsight/views/test_service.py::test_failed_export_preserves_edit_receipt_without_previous_image tests/resinsight/views/test_service.py::test_unknown_native_failure_retires_session[edit] tests/resinsight/views/test_service.py::test_unknown_native_failure_retires_session[export] tests/resinsight/views/test_service.py::test_busy_access_fails_promptly_and_releases_lock tests/resinsight/views/test_service.py::test_binding_rejects_result_that_differs_from_storage tests/resinsight/views/test_service.py::test_temporary_directory_failure_preserves_applied_view tests/resinsight/views/test_service.py::test_apply_rejects_untrusted_metadata[unit] tests/resinsight/views/test_service.py::test_apply_rejects_untrusted_metadata[coordinates] tests/resinsight/views/test_service.py::test_apply_rejects_untrusted_metadata[property] tests/resinsight/views/test_service.py::test_inspection_error_keeps_old_observation_invalid tests/resinsight/views/test_service.py::test_changed_scene_during_export_rejects_image tests/results/test_loading.py::test_load_and_reopen_issue_new_bindings tests/results/test_loading.py::test_wrong_native_values_do_not_bind tests/results/test_loading.py::test_rebinds_two_unsaved_results_after_loading_scenario tests/results/test_loading.py::test_summary_image_persists_exact_numerical_provenance tests/results/test_loading.py::test_missing_fresh_summary_image_preserves_completed_plot tests/results/test_loading.py::test_summary_persistence_failure_keeps_plot_receipt[image] tests/results/test_loading.py::test_summary_persistence_failure_keeps_plot_receipt[metadata] tests/results/test_loading.py::test_unconfirmed_native_plot_returns_unknown_without_receipt tests/results/test_loading.py::test_summary_observation_cannot_identify_a_different_completed_plot tests/results/test_native_plot.py::test_summary_export_targets_its_parent_among_multiple_windows tests/results/test_native_plot.py::test_summary_export_rejects_missing_target_or_changed_values[missing_parent] tests/results/test_native_plot.py::test_summary_export_rejects_missing_target_or_changed_values[all_windows_id] tests/results/test_native_plot.py::test_summary_export_rejects_missing_target_or_changed_values[changed_values] tests/results/test_native_readback.py::test_load_and_verify_with_native_summary_import_preferences[False] tests/results/test_native_readback.py::test_load_and_verify_with_native_summary_import_preferences[True] tests/results/test_native_readback.py::test_load_rejects_existing_result_paths_without_changing_them[grid] tests/results/test_native_readback.py::test_load_rejects_existing_result_paths_without_changing_them[summary] tests/results/test_native_readback.py::test_readback_matches_semantic_reference_with_extra_initial_report tests/results/test_native_readback.py::test_readback_rejects_semantic_mismatches[mapping] tests/results/test_native_readback.py::test_readback_rejects_semantic_mismatches[time] tests/results/test_native_readback.py::test_readback_rejects_semantic_mismatches[pressure] tests/results/test_native_readback.py::test_readback_rejects_semantic_mismatches[curve] tests/results/test_native_readback.py::test_readback_rejects_semantic_mismatches[dates] tests/results/test_native_readback.py::test_readback_rejects_semantic_mismatches[path] tests/results/test_native_readback.py::test_readback_rejects_semantic_mismatches[geometry] tests/results/test_queries.py::test_queries_and_known_scenario_difference tests/results/test_queries.py::test_comparison_rejects_misalignment[cells] tests/results/test_queries.py::test_comparison_rejects_misalignment[time] tests/results/test_queries.py::test_comparison_rejects_misalignment[geometry] tests/results/test_queries.py::test_missing_property_and_wrong_well_are_clear_failures tests/results/test_queries.py::test_bundles_persist_and_reject_replaced_links tests/results/test_queries.py::test_reused_bundle_requires_fresh_semantic_verification[EGRID] tests/results/test_queries.py::test_reused_bundle_requires_fresh_semantic_verification[INIT] tests/results/test_queries.py::test_reused_bundle_requires_fresh_semantic_verification[UNRST] tests/results/test_queries.py::test_reused_bundle_requires_fresh_semantic_verification[SMSPEC] tests/results/test_queries.py::test_reused_bundle_requires_fresh_semantic_verification[UNSMRY] tests/results/test_queries.py::test_verifier_cannot_return_another_dataset[identity] tests/results/test_queries.py::test_verifier_cannot_return_another_dataset[values] tests/simulators/opm/test_configuration.py::test_dependencies_check_versions_and_pinned_image_without_launch tests/simulators/opm/test_configuration.py::test_dependencies_reject_mismatched_local_image[change0-platform differs] tests/simulators/opm/test_configuration.py::test_dependencies_reject_mismatched_local_image[change1-matching pinned repository digest] tests/simulators/opm/test_configuration.py::test_dependencies_reject_unavailable_image tests/simulators/opm/test_configuration.py::test_dependencies_stop_after_daemon_failure tests/simulators/opm/test_reader.py::test_reader_preserves_reference_values_and_geometry tests/simulators/opm/test_reader.py::test_reader_rejects_wrong_values[INIT-PORO-0.4-PORO differs] tests/simulators/opm/test_reader.py::test_reader_rejects_wrong_values[INIT-PORV-1.0-PORV differs] tests/simulators/opm/test_reader.py::test_reader_rejects_wrong_values[UNRST-SGAS--0.001-saturation range] tests/simulators/opm/test_reader.py::test_reader_rejects_wrong_values[UNRST-SGAS-0.99-Combined phase saturations] tests/simulators/opm/test_reader.py::test_reader_rejects_wrong_values[UNRST-PRESSURE-0.0-Absolute cell pressures] tests/simulators/opm/test_reader.py::test_reader_rejects_missing_final_report tests/simulators/opm/test_reader.py::test_reader_rejects_summary_identity[WGNAMES-INJ-OTHER-well identities] tests/simulators/opm/test_reader.py::test_reader_rejects_summary_identity[UNITS-STB/DAY-SM3/DAY-STB/DAY] tests/simulators/opm/test_reader.py::test_reader_rejects_wrong_program_version[flow another-version] tests/simulators/opm/test_reader.py::test_reader_rejects_wrong_program_version[flow 2026.04-extra] tests/simulators/opm/test_reader.py::test_reader_rejects_nonpositive_absolute_well_pressure tests/simulators/opm/test_service.py::test_collection_survives_reopen_and_verifies_outputs tests/simulators/opm/test_service.py::test_verifier_rejects_changed_geometry_and_static_data[EGRID-COORD] tests/simulators/opm/test_service.py::test_verifier_rejects_changed_geometry_and_static_data[INIT-TRANX] tests/simulators/opm/test_service.py::test_collection_rejects_missing_output tests/simulators/opm/test_service.py::test_partial_publication_retry_preserves_consistency[False] tests/simulators/opm/test_service.py::test_partial_publication_retry_preserves_consistency[True] tests/simulators/opm/test_service.py::test_verifier_rejects_canonical_result_with_unrelated_identity[grid] tests/simulators/opm/test_service.py::test_verifier_rejects_canonical_result_with_unrelated_identity[outputs] tests/simulators/opm/test_service.py::test_collection_rejects_runtime_outside_pinned_configuration[completed0] tests/simulators/opm/test_service.py::test_collection_rejects_runtime_outside_pinned_configuration[completed1] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[../outside.json] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[/outside.json] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[include/../outside.json] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[include//file] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[./file] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[C:input] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[include\\file] tests/workspaces/test_artifacts.py::test_artifact_names_reject_traversal_and_nonportable_paths[line\nfile] tests/workspaces/test_artifacts.py::test_incomplete_producer_is_not_published tests/workspaces/test_artifacts.py::test_artifact_rewrite_is_rejected_without_changing_original_content tests/workspaces/test_artifacts.py::test_interrupted_process_leaves_no_manifest_and_stale_recovery_does_not_clean tests/workspaces/test_artifacts.py::test_replaced_input_links_are_rejected_without_reading_outside_data[symlink] tests/workspaces/test_artifacts.py::test_replaced_input_links_are_rejected_without_reading_outside_data[hardlink] tests/workspaces/test_artifacts.py::test_missing_input_is_reported_without_claiming_complete_revision tests/workspaces/test_artifacts.py::test_store_rejects_symlink_root_without_changing_target tests/workspaces/test_artifacts.py::test_artifact_parent_symlink_is_rejected tests/workspaces/test_artifacts.py::test_recovery_removes_only_the_requested_sessions_pending_files tests/workspaces/test_database_files.py::test_read_accepts_journal_deleted_during_metadata_check tests/workspaces/test_database_files.py::test_read_rejects_unlinked_main_database tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[hardlink-workspace.sqlite3] tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[hardlink-workspace.sqlite3-journal] tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[symlink-workspace.sqlite3] tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[symlink-workspace.sqlite3-journal] tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[directory-workspace.sqlite3] tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[directory-workspace.sqlite3-journal] tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[fifo-workspace.sqlite3] tests/workspaces/test_database_files.py::test_read_rejects_unsafe_database_entries[fifo-workspace.sqlite3-journal] tests/workspaces/test_job_execution.py::test_recovery_preserves_execution_metadata_and_appends_history tests/workspaces/test_job_execution.py::test_store_rejects_submission_and_history_replacement tests/workspaces/test_job_execution.py::test_logs_require_existing_log_artifacts_and_cannot_change tests/workspaces/test_job_execution.py::test_new_job_cannot_claim_execution_metadata tests/workspaces/test_job_execution.py::test_recorded_process_identities_cannot_be_replaced tests/workspaces/test_jobs.py::test_independent_process_writers_preserve_both_sessions tests/workspaces/test_jobs.py::test_competing_job_updates_accept_one_and_report_the_stale_snapshot tests/workspaces/test_jobs.py::test_job_changes_need_expected_snapshot_and_cannot_clear_cancellation tests/workspaces/test_jobs.py::test_open_does_not_reconcile_jobs_and_recovery_uses_explicit_snapshots tests/workspaces/test_jobs.py::test_recovery_rejects_all_stale_snapshots_before_changing_any_job tests/workspaces/test_jobs.py::test_result_requires_stored_success_and_exact_revision tests/workspaces/test_jobs.py::test_writer_timeout_reports_busy_without_applying_the_write tests/workspaces/test_observations.py::test_observation_metadata_requires_stored_result_and_image_manifest tests/workspaces/test_revisions.py::test_clone_and_checkpoint_preserve_parent_in_a_fresh_process tests/workspaces/test_revisions.py::test_revision_retries_are_equal_but_changed_content_conflicts tests/workspaces/test_revisions.py::test_revision_rejects_portable_name_collisions[A.DATA-a.data] tests/workspaces/test_revisions.py::test_revision_rejects_portable_name_collisions[caf\xe9.DATA-cafe\u0301.DATA] tests/workspaces/test_revisions.py::test_revision_rejects_portable_name_collisions[A-a/child.DATA] tests/workspaces/test_revisions.py::test_checkpoint_requires_a_saved_project_and_revision tests/workspaces/test_revisions.py::test_sessions_and_roots_keep_records_and_files_separate tests/workspaces/test_revisions.py::test_revision_requires_existing_input_artifacts tests/workspaces/test_run_results.py::test_result_manifest_requires_existing_artifacts_with_correct_kinds tests/workspaces/test_run_results.py::test_result_manifest_rejects_wrong_artifact_kinds[output] tests/workspaces/test_run_results.py::test_result_manifest_rejects_wrong_artifact_kinds[metadata] tests/workspaces/test_run_results.py::test_container_identity_is_append_once_and_submission_is_immutable tests/workspaces/test_run_results.py::test_comparison_checkpoint_keeps_results_from_multiple_revisions tests/workspaces/test_schema.py::test_unsupported_schema_is_rejected_without_migration[0] tests/workspaces/test_schema.py::test_unsupported_schema_is_rejected_without_migration[2] tests/workspaces/test_schema.py::test_unrelated_database_is_not_overwritten tests/workspaces/test_schema.py::test_open_missing_store_does_not_create_one tests/workspaces/test_schema.py::test_create_rejects_existing_workspace_without_erasing_records tests/workspaces/test_schema.py::test_invalid_timeout_does_not_create_partial_workspace[-1.0] tests/workspaces/test_schema.py::test_invalid_timeout_does_not_create_partial_workspace[nan] tests/workspaces/test_schema.py::test_invalid_timeout_does_not_create_partial_workspace[inf] tests/workspaces/test_schema.py::test_unrelated_v1_database_with_matching_table_names_is_rejected tests/workspaces/test_schema.py::test_valid_workspace_marker_does_not_hide_changed_schema 850 tests collected in 0.81s