### Summary

I might have found a bug, possibly in the debug module, possibly elsewhere.
This is a trivial playbook to reproduce the error:-

    - name: is this a bug?
      gather_facts: no
      hosts: localhost
      tasks:
      - ansible.builtin.debug:
          msg "this should be a syntax error"
      - ansible.builtin.debug:
          msg: "{{ inventory_hostname }} this should work"

When run this is the output (**Exactly as expected**)

    ERROR! this task 'ansible.builtin.debug' has extra params, which is only allowed in the following modules: ansible.builtin.raw, ansible.legacy.raw, ansible.builtin.import_role, set_fact, ansible.legacy.add_host, ansible.legacy.script, ansible.legacy.import_tasks, import_role, ansible.builtin.meta, win_shell, ansible.builtin.add_host, ansible.builtin.command, meta, ansible.windows.win_command, ansible.legacy.include_role, shell, import_tasks, add_host, ansible.legacy.win_shell, ansible.builtin.include_role, ansible.legacy.group_by, win_command, include_role, ansible.legacy.include_vars, ansible.legacy.include_tasks, raw, include_vars, group_by, ansible.builtin.set_fact, ansible.legacy.command, command, ansible.builtin.win_command, script, ansible.legacy.set_fact, ansible.legacy.win_command, ansible.legacy.meta, ansible.legacy.import_role, ansible.builtin.import_tasks, ansible.builtin.shell, include_tasks, ansible.builtin.include_vars, ansible.builtin.script, include, ansible.windows.win_shell, ansible.builtin.group_by, ansible.builtin.include_tasks, ansible.builtin.include, ansible.legacy.shell, ansible.legacy.include, ansible.builtin.win_shell

    The error appears to be in '/home/user/t.yml': line 5, column 5, but may
    be elsewhere in the file depending on the exact syntax problem.

    The offending line appears to be:

      tasks:
      - ansible.builtin.debug:
        ^ here



Note that the first call to debug has a badly formed msg line. (There is no ``` : ``` after ``` msg``` ) and so this syntax error is what I would expect.

This isn't the interesting part though. The interesting part is that if I add a jinja variable to the message (any defined variable will do) , Like this:-

    - name: is this a bug?
      gather_facts: no
      hosts: localhost
      tasks:
      - ansible.builtin.debug:
          msg "this should be also be a syntax error {{ inventory_hostname }}"
      - ansible.builtin.debug:
          msg: "{{ inventory_hostname }} this should work"


the code runs and gives this output:-

    PLAY [is this a bug?] **********************************************************

    TASK [ansible.builtin.debug] ***************************************************
    ok: [localhost] => {}

    MSG:

    Hello world!

    TASK [ansible.builtin.debug] ***************************************************
    ok: [localhost] => {}

    MSG:

    localhost this should work

    PLAY RECAP *********************************************************************
    localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0


i.e   the debug module does it's default behaviour and prints ``` Hello world! ``` instead of raising a syntax error. No mention of the malformed ``` msg ``` line is made at all.

I'm sure that is wrong, but I don't know how to check if it is an existing issue or a new one.

### Issue Type

Bug Report

### Component Name

ansible.builtin.debug

### Ansible Version

```console
$ ansible --version

ansible [core 2.13.3]
  config file = /home/adam/.ansible.cfg
  configured module search path = ['/home/adam/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/adam/.local/lib/python3.10/site-packages/ansible
  ansible collection location = /home/adam/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/adam/.local/bin/ansible
  python version = 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]
  jinja version = 3.0.3
  libyaml = True


And also:-

$ ansible --version
ansible 2.9.21
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/adam/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.10 (default, May  4 2021, 00:00:00) [GCC 10.2.1 20201125 (Red Hat 10.2.1-9)]
```


### 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

# I tested on a clean install, no output is generated.


# I also tested on an ansible 2.9.21 system and got this:-

$ ansible-config dump --only-changed
DEFAULT_STDOUT_CALLBACK(env: ANSIBLE_STDOUT_CALLBACK) = debug
GALAXY_SERVER_LIST(/etc/ansible/ansible.cfg) = ['automation_hub']
```


### OS / Environment

Core 2.13.3 was tested on Ubuntu 22.04.1 LTS 
ansible 2.9.21 was tested on Fedora 32

I was able to reproduce this behaviour on several other Linux distros and versions. 

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
    - name: is this a bug?
      gather_facts: no
      hosts: localhost
      tasks:
      - ansible.builtin.debug:
          msg "this should be also be a syntax error {{ inventory_hostname }}"
      - ansible.builtin.debug:
          msg: "{{ inventory_hostname }} this should work"

```


### Expected Results

As per the description I expected a syntax error as follows:-

`    ERROR! this task 'ansible.builtin.debug' has extra params, which is only allowed in the following modules: ansible.builtin.raw, ansible.legacy.raw, ansible.builtin.import_role, set_fact, ansible.legacy.add_host, ansible.legacy.script, ansible.legacy.import_tasks, import_role, ansible.builtin.meta, win_shell, ansible.builtin.add_host, ansible.builtin.command, meta, ansible.windows.win_command, ansible.legacy.include_role, shell, import_tasks, add_host, ansible.legacy.win_shell, ansible.builtin.include_role, ansible.legacy.group_by, win_command, include_role, ansible.legacy.include_vars, ansible.legacy.include_tasks, raw, include_vars, group_by, ansible.builtin.set_fact, ansible.legacy.command, command, ansible.builtin.win_command, script, ansible.legacy.set_fact, ansible.legacy.win_command, ansible.legacy.meta, ansible.legacy.import_role, ansible.builtin.import_tasks, ansible.builtin.shell, include_tasks, ansible.builtin.include_vars, ansible.builtin.script, include, ansible.windows.win_shell, ansible.builtin.group_by, ansible.builtin.include_tasks, ansible.builtin.include, ansible.legacy.shell, ansible.legacy.include, ansible.builtin.win_shell
`


### Actual Results

```console
$ ansible-playbook t.yml -i localhost,

PLAY [is this a bug?] ****************************************************************************************************************************************************************************

TASK [ansible.builtin.debug] *********************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "Hello world!"
}

TASK [ansible.builtin.debug] *********************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "localhost this should work"
}

PLAY RECAP ***************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
'''
    This is the main worker class for the executor pipeline, which
    handles loading an action plugin to actually dispatch the task to
    a given host. This class roughly corresponds to the old Runner()
    class.
    '''
    def __init__(self, host, task, job_vars, play_context, new_stdin, loader, shared_loader_obj, final_q):
        self._host = host
        self._task = task
        self._job_vars = job_vars
        self._play_context = play_context
        self._new_stdin = new_stdin
        self._loader = loader
        self._shared_loader_obj = shared_loader_obj
        self._connection = None
        self._final_q = final_q
        self._loop_eval_error = None
        self._task.squash()
    def run(self):