anchor.diff:                      % Failure occurs during streamed data processing
                       process_streamed_task_data = #atm_step_mock_spec{
                           before_step_hook = fun atm_workflow_execution_test_utils:pause_workflow_execution/1,
  -
  -                        before_step_exp_state_diff = fun(#atm_mock_call_ctx{workflow_execution_exp_state = ExpState0}) ->
  -                            {true, expect_execution_stopping_while_processing_lane2(ExpState0, pause)}
  -                        end,
  -                        %% already stopped task2 changes status from paused to interrupted due to task1 failure
  -                        after_step_exp_state_diff = build_expect_task2_stopped_exp_state_diff(<<"interrupted">>)
  +                        before_step_exp_state_diff = lists:flatten([
  +                            ?PB1_TASK1_STATUS_EXPECTATIONS(stopping),
  +                            ?PB2_TASK2_STATUS_EXPECTATIONS(paused),
  +                            {lane_run, {2, 1}, stopping},
  +                            workflow_stopping
  +                        ]),
  +                        % Already stopped task2 changes status from paused to interrupted due to task1 failure
  +                        after_step_exp_state_diff = ?PB2_TASK2_STATUS_EXPECTATIONS(interrupted)
                       },
                       handle_task_execution_stopped = #atm_step_mock_spec{
                           % Ensure failure prevails against pause
                           before_step_hook = fun atm_workflow_execution_test_utils:pause_workflow_execution/1,
   
  -                        after_step_exp_state_diff = build_lane2_task_execution_stopped_after_step_diff(<<"failed">>)
  -                    },
  -                    handle_lane_execution_stopped = #atm_step_mock_spec{
  -                        after_step_exp_state_diff = fun(#atm_mock_call_ctx{workflow_execution_exp_state = ExpState0}) ->
  -                            {true, atm_workflow_execution_exp_state_builder:expect_lane_run_failed({2, 1}, ExpState0)}
  -                        end
  +                        after_step_exp_state_diff = atm_workflow_execution_test_utils:build_task_step_exp_state_diff(#{
  +                            <<"task1">> => ?PB1_TASK1_STATUS_EXPECTATIONS(failed)
  +                        })
  +                    },
  +                    handle_lane_execution_stopped = #atm_step_mock_spec{
  +                        after_step_exp_state_diff = [{lane_run, {2, 1}, failed}]
                       }
                   }
               ],
               handle_workflow_execution_stopped = #atm_step_mock_spec{
  -                after_step_exp_state_diff = fun(#atm_mock_call_ctx{workflow_execution_exp_state = ExpState0}) ->
  -                    ExpState1 = expect_lane_runs_rerunable([{1, 1}, {2, 1}], ExpState0),
  -                    {true, atm_workflow_execution_exp_state_builder:expect_workflow_execution_failed(ExpState1)}
  -                end
  +                after_step_exp_state_diff = [
  +                    {lane_runs, [{1, 1}, {2, 1}], rerunable},
  +                    workflow_failed
  +                ]
               }
           }]
       }).
  
positive.code:                     selector = {2, 1},
                      process_task_result_for_item = #atm_step_mock_spec{
                          before_step_hook = fun atm_workflow_execution_test_utils:pause_workflow_execution/1,
  
                          before_step_exp_state_diff = fun(#atm_mock_call_ctx{workflow_execution_exp_state = ExpState0}) ->
                              {true, expect_execution_stopping_while_processing_lane2(ExpState0, pause)}
                          end
                      },
                      handle_task_execution_stopped = #atm_step_mock_spec{
                          % Ensure cancel prevails against pause
                          before_step_hook = fun atm_workflow_execution_test_utils:cancel_workflow_execution/1,
                          %% already stopped task2 changes status from paused to cancelled
                          before_step_exp_state_diff = build_expect_task2_stopped_exp_state_diff(<<"cancelled">>),
                          after_step_hook = fun atm_workflow_execution_test_utils:pause_workflow_execution/1,
                          after_step_exp_state_diff = build_lane2_task_execution_stopped_after_step_diff(<<"cancelled">>)
                      },
                      handle_lane_execution_stopped = #atm_step_mock_spec{
                          after_step_exp_state_diff = fun(#atm_mock_call_ctx{workflow_execution_exp_state = ExpState0}) ->
                              {true, atm_workflow_execution_exp_state_builder:expect_lane_run_cancelled({2, 1}, ExpState0)}
                          end
                      }
                  }
              ],
              handle_workflow_execution_stopped = #atm_step_mock_spec{
                  after_step_exp_state_diff = fun(#atm_mock_call_ctx{workflow_execution_exp_state = ExpState0}) ->
                      ExpState1 = expect_lane_runs_rerunable([{1, 1}, {2, 1}], ExpState0),
                      {true, atm_workflow_execution_exp_state_builder:expect_workflow_execution_cancelled(ExpState1)}
                  end
              }
          }]
      }).
  
negative.code: 
  stopping_reason_interrupt_overrides_pause() ->
      DelayedMeasurementName = <<"delayed">>,
      ContainsDelayedMeasurementPred = fun(Measurements) ->
          lists:any(fun(#{<<"tsName">> := TSName}) -> TSName == DelayedMeasurementName end, Measurements)
      end,
  
      atm_workflow_execution_test_runner:run(#atm_workflow_execution_test_spec{
          workflow_schema_dump_or_draft = ?ATM_WORKFLOW_SCHEMA_DRAFT(
  