### Summary

I have created a role that has two tasks files: main and validation. The main task file uses block/rescue to validate the health of a system, with the rescue block trying to recover a failed system and then re-running the validation tasks. If the system still reports failure after an attempted recovery, I expect the failed host to be removed from `ansible_play_hosts` and `ansible_play_batch`; however they persist. Interestingly, the failed host(s) are excluded from future tasks in the play, and are excluded from subsequent plays in a playbook. I was only able to reproduce this if the rescue block had a failure from an `include_tasks`.


### Issue Type

Bug Report

### Component Name

rescue

### Ansible Version

```console
$ ansible --version

ansible [core 2.13.3]
  config file = None
  python version = 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0]
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
```


### OS / Environment

ubuntu 22.04

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->

inventory:
```
[all]
a
b
```

roles/fail/tasks/validation.yml:
```yaml
- fail:
  when: "inventory_hostname == 'a'"
```

roles/fail/tasks/main.yml:
```yaml
- block:
    - include_tasks: "validation.yml"
  rescue:
    - debug:
        msg: "Failed for {{ inventory_hostname }}"
    - include_tasks: "validation.yml"
```

playbook:
```yaml
- hosts: "all"
  gather_facts: false
  tasks:
    - include_role:
        name: "fail"

    - debug:
        msg: "{{ item }} is: {{ lookup('vars', item) }}"
      loop:
        - "ansible_play_hosts_all"
        - "ansible_play_hosts"
        - "ansible_play_batch"

- hosts: "all"
  gather_facts: false
  tasks:
    - debug:
        msg: "second play for {{ inventory_hostname }}"
```


### Expected Results

I expected host a to be removed from ansible_play_hosts and ansible_play_batch

### Actual Results

```console
results:

PLAY [all] ***************************************************************************************************************************************************************************************************************************************************************************************************

TASK [include_role : fail] ***********************************************************************************************************************************************************************************************************************************************************************************

TASK [fail : include_tasks] **********************************************************************************************************************************************************************************************************************************************************************************
included: roles/fail/tasks/validation.yml for a, b

TASK [fail : fail] *******************************************************************************************************************************************************************************************************************************************************************************************
skipping: [b]
fatal: [a]: FAILED! => {"changed": false, "msg": "Failed as requested from task"}

TASK [fail : debug] ******************************************************************************************************************************************************************************************************************************************************************************************
ok: [a] => {
    "msg": "Failed for a"
}

TASK [fail : include_tasks] **********************************************************************************************************************************************************************************************************************************************************************************
included: roles/fail/tasks/validation.yml for a

TASK [fail : fail] *******************************************************************************************************************************************************************************************************************************************************************************************
fatal: [a]: FAILED! => {"changed": false, "msg": "Failed as requested from task"}

TASK [debug] *************************************************************************************************************************************************************************************************************************************************************************************************
ok: [b] => (item=ansible_play_hosts_all) => {
    "msg": "ansible_play_hosts_all is: ['a', 'b']"
}
ok: [b] => (item=ansible_play_hosts) => {
    "msg": "ansible_play_hosts is: ['a', 'b']"
}
ok: [b] => (item=ansible_play_batch) => {
    "msg": "ansible_play_batch is: ['a', 'b']"
}

PLAY [all] ***************************************************************************************************************************************************************************************************************************************************************************************************

TASK [debug] *************************************************************************************************************************************************************************************************************************************************************************************************
ok: [b] => {
    "msg": "second play for b"
}

PLAY RECAP ***************************************************************************************************************************************************************************************************************************************************************************************************
a                          : ok=3    changed=0    unreachable=0    failed=1    skipped=0    rescued=1    ignored=0   
b                          : ok=3    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
'''
    This is the base class for strategy plugins, which contains some common
    code useful to all strategies like running handlers, cleanup actions, etc.
    '''
    
    
    
    ALLOW_BASE_THROTTLING = True
    def __init__(self, tqm):