execute is async-first and follows a defined sequence:
- Parse source into a document when needed.
- Select the requested operation.
- Validate the document against the schema.
- Coerce variables using GraphQL input rules.
- Collect fields across selections, fragments, aliases, and directives.
- Resolve sibling fields concurrently.
- Complete scalar, object, list, interface, and union values.
- Capture field errors and apply non-null propagation.
Info, and registered dependencies.
Permissions run before extension wrappers and the resolver.
The result preserves partial data where GraphQL nullability allows it. Pre-execution
errors return executed=False; runtime errors remain attached to an executed response.