### Summary

When calling `debug` with `var: ansible_facts`, the unprefixed keys of `ansible_facts` are injected as variables and override at least some other variable precedences (host vars at least) within ansibles precedence order.

I believe the issue occurs in [ansible/executor/task_executor.py](https://github.com/ansible/ansible/blob/devel/lib/ansible/executor/task_executor.py#L715) as `ansible_facts` would be in results, but without `ansible_` prefixes in keys at this point. I think this issue may have been previously masked by the behavior of `AnsibleJ2Vars.__getitem__`, which changed in [this commit](https://github.com/ansible/ansible/commit/a2af8432f36ec8cc5368a747f1211d2b9ba01f2e#diff-5671ace2a63ef6117ee1fb489c22b1d1a3a0a0d6352b10a0f18d02ee89faa57aL84).

### Issue Type

Bug Report

### Component Name

- lib/ansible/executor/task_executor
- lib/ansible/template/vars

### Ansible Version

```console (paste below)
$ ansible --version
 ansible 2.9.19
  config file = omitted
  configured module search path = [u'/omitted/library']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Feb 27 2021, 15:10:58) [GCC 7.5.0]
```

### Configuration

```console (paste below)
$ ansible-config dump --only-changed
CACHE_PLUGIN(/omitted/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/omitted/ansible.cfg) = .fact_cache/
CACHE_PLUGIN_TIMEOUT(/omitted/ansible.cfg) = 86400
DEFAULT_FILTER_PLUGIN_PATH(env: ANSIBLE_FILTER_PLUGINS) = [u'/omitted/filter_plugins']
DEFAULT_GATHERING(/omitted/ansible.cfg) = implicit
DEFAULT_HOST_LIST(/omitted/ansible.cfg) = [u'/omitted/hosts']
DEFAULT_LOG_PATH(/omitted/ansible.cfg) = /omitted/ansible.log
DEFAULT_MODULE_PATH(/omitted/ansible.cfg) = [u'/omitted/library']
DEFAULT_REMOTE_USER(/omitted/ansible.cfg) = omitted
DEFAULT_ROLES_PATH(/omitted/ansible.cfg) = [u'/omitted/roles']
DEFAULT_VAULT_IDENTITY_LIST(/omitted/ansible.cfg) = omitted
RETRY_FILES_ENABLED(/omitted/ansible.cfg) = False
```

### OS / Environment

Ubuntu 18.04 LTS (bionic) using the ansible/ansible PPA

### Steps to Reproduce

Remove fact cache of hostname first.

```yaml (paste below)
- hosts: hostname
  tasks:
  - debug:
      var: system_vendor
  - debug:
      var: interfaces
  - debug:
      var: ansible_facts
  - debug:
      var: system_vendor
  - debug:
      var: interfaces
  - fail:

```

### Expected Results

I expected to be able to access the `interfaces` variable provided in my host vars. I did not expect to have a variable `system_vendor` in any scope.

In playbook order, I expected
1. Successful `setup`
1. not defined error
1. my `interfaces` variable
1. contents of `ansible_facts`
1. not defined error
1. my `interfaces` variable
1. fail as requested

### Actual Results

After calling debug with `var: ansible_facts`, non-prefixed keys of `ansible_facts` are injected into variables and appear to have a higher priority than host vars at least.

```console (paste below)
PLAY [groups] **********************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [hostname]

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "system_vendor": "VARIABLE IS NOT DEFINED!"
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "interfaces": {
        "dict_key1": "val1", 
        "dict_key2": "val2"
    }
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "ansible_facts": {
        [... not relevant ...], 
        "interfaces": [
            "lo", 
            "eth0", 
            "eth1"
        ], 
        [... not relevant ...], 
        "system_vendor": "VMware, Inc.", 
        [... not relevant ...]
    }
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "system_vendor": "VMware, Inc."
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "interfaces": [
        "lo", 
        "eth0", 
        "eth1"
    ]
}

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

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
hostname : ok=7    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
```
#
#
#
#
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import cmd
import functools
import os
import pprint
import sys
import threading
import time
from collections import deque
from multiprocessing import Lock
from jinja2.exceptions import UndefinedError
from ansible import constants as C
from ansible import context
from ansible.errors import AnsibleError, AnsibleFileNotFound, AnsibleParserError, AnsibleUndefinedVariable
from ansible.executor import action_write_locks
from ansible.executor.process.worker import WorkerProcess
from ansible.executor.task_result import TaskResult
from ansible.executor.task_queue_manager import CallbackSend
from ansible.module_utils.six.moves import queue as Queue
from ansible.module_utils.six import iteritems, itervalues, string_types
from ansible.module_utils._text import to_text
from ansible.module_utils.connection import Connection, ConnectionError
from ansible.playbook.conditional import Conditional