anchor.diff:          _ -> crash
       end,
       atm_lane_execution_handler:stop({current, current}, StoppingReason, AtmWorkflowExecutionCtx),
  -    end_workflow_execution(AtmWorkflowExecutionId, AtmWorkflowExecutionCtx),
  -
  -    ?END_EXECUTION.
  +
  +    ok.
  +
  +
  +-spec handle_workflow_interrupted(
  +    atm_workflow_execution:id(),
  +    atm_workflow_execution_env:record()
  +) ->
  +    workflow_handler:progress_data_persistence().
  +handle_workflow_interrupted(AtmWorkflowExecutionId, AtmWorkflowExecutionEnv) ->
  +    AtmWorkflowExecutionCtx = get_root_workflow_execution_ctx(
  +        AtmWorkflowExecutionId, AtmWorkflowExecutionEnv
  +    ),
  +
  +    infer_progress_data_persistence_policy(end_workflow_execution(
  +        AtmWorkflowExecutionId, AtmWorkflowExecutionCtx
  +    )).
   
   
   %%%===================================================================
  
positive.code: 
      handle_workflow_execution_stopped/2,
  
      handle_exception/5
  ]).
  
  
  
negative.code:     term(),
      list()
  ) ->
      ok.
  handle_exception(AtmWorkflowExecutionId, AtmWorkflowExecutionEnv, Type, Reason, Stacktrace) ->
      AtmWorkflowExecutionCtx = get_root_workflow_execution_ctx(
          AtmWorkflowExecutionId, AtmWorkflowExecutionEnv
      ),
  
      Logger = atm_workflow_execution_ctx:get_logger(AtmWorkflowExecutionCtx),
  