### Summary

I have a top-level include like so:

```
- include: foo.yml
```

This worked fine in 2.11, but after updating to 2.12.1, I get:

~~~
ERROR! 'include' is not a valid attribute for a Play
~~~

I know `include` is deprecated and going away, but per the doc this shouldn't happen until 2.16.

### Issue Type

Bug Report

### Component Name

ansible-playbook

### Ansible Version

```console
$ ansible --version
ansible [core 2.12.1]
  config file = /home/tdowns/.ansible.cfg
  configured module search path = ['/home/tdowns/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/tdowns/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.7 (default, Sep 10 2021, 14:59:43) [GCC 11.2.0]
  jinja version = 2.11.3
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
(no output)
```


### OS / Environment

Ubuntu 21.10

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- include: foo.yml
```


### Expected Results

No error, perhaps a deprecation warning depending on your deprecation warnings setting.

### Actual Results

```console
ansible-playbook bar.yml 
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
ERROR! 'include' is not a valid attribute for a Play

The error appears to be in '.../bar.yml': line 1, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- include: foo.yml
  ^ here
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
inherited task.
  - Since Ansible 2.0, task includes are dynamic and behave more like real tasks. This means they can be looped,
    skipped and use variables from any source. Ansible tries to auto detect this, but you can use the C(static)
    directive (which was added in Ansible 2.1) to bypass autodetection.
  - This module is also supported for Windows targets.
version_added: "0.6"
deprecated:
    why: it has too many conflicting behaviours depending on keyword combinations and it was unclear how it should behave in each case.
        new actions were developed that were specific about each case and related behaviours.
    alternative: include_tasks, import_tasks, import_playbook
    removed_in: "2.16"
    removed_from_collection: 'ansible.builtin'
options:
  free-form:
    description:
      - This module allows you to specify the name of the file directly without any other options.
notes:
  - This is a core feature of Ansible, rather than a module, and cannot be overridden like a module.
  - Include has some unintuitive behaviours depending on if it is running in a static or dynamic in play or in playbook context,
    in an effort to clarify behaviours we are moving to a new set modules (M(ansible.builtin.include_tasks),
    M(ansible.builtin.include_role), M(ansible.builtin.import_playbook), M(ansible.builtin.import_tasks))
    that have well established and clear behaviours.
  - B(This module will still be supported for some time but we are looking at deprecating it in the near future.)
seealso:
- module: ansible.builtin.import_playbook
- module: ansible.builtin.import_role
- module: ansible.builtin.import_tasks
- module: ansible.builtin.include_role
- module: ansible.builtin.include_tasks
- ref: playbooks_reuse_includes