anchor.diff:  
       executed_step_phases = [] :: [step_phase_selector()],
       pending_step_phases = [] :: [step_phase()],
  -    deferred_step_phases = #{} :: #{step_phase_selector() => [step_phase()]}
  +    deferred_step_phases = #{} :: #{step_phase_selector() => [step_phase()]},
  +
  +    test_hung_probes_left :: non_neg_integer()
   }).
   -type test_ctx() :: #test_ctx{}.
   
  -
  --define(PARALLEL_STEP_EXECUTIONS, 100).
  --define(TEST_HUNG_TIMEOUT, timer:seconds(30)).
  +-define(AWAIT_OTHER_PARALLEL_PIPELINES_NEXT_STEP_INTERVAL, 100).
  +-define(TEST_HUNG_MAX_PROBES_NUM, 10).
   
   -define(TEST_PROC_PID_KEY(__ATM_WORKFLOW_EXECUTION_ID),
       {atm_test_runner_process, __ATM_WORKFLOW_EXECUTION_ID}
  
positive.code: -spec monitor_workflow_execution(test_ctx()) -> ok | no_return().
  monitor_workflow_execution(TestCtx0) ->
      receive {ReplyTo, StepMockCallReport} ->
          {StepPhaseSelector, StepMockSpec} = get_step_mock_spec(StepMockCallReport, TestCtx0),
  
          StepPhase = #step_phase{
  
negative.code:         current_run_num = 1,
          ongoing_incarnations = Incarnations,
          workflow_execution_exp_state = ExpState,
          workflow_execution_exp_state_changed = false,
          test_hung_probes_left = ?TEST_HUNG_MAX_PROBES_NUM
      }).
  
  
  