This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new e386b821844 Fix typos, grammar, and broken references across the docs 
(#73146)
e386b821844 is described below

commit e386b821844e736c026d162c9cde26e6b5325305
Author: Andrii Roiko <[email protected]>
AuthorDate: Fri Sep 18 23:31:30 2026 +0300

    Fix typos, grammar, and broken references across the docs (#73146)
    
    * Fix typos, grammar, and broken references across the docs
    
    Cleans up a batch of documentation issues found across airflow-core,
    task-sdk, airflow-ctl, and chart docs: misspellings and grammar errors,
    malformed RST directives and broken cross-references, stale/incorrect
    code examples (a wrong module path, a missing import, an off-by-one in
    a random.randint example), and a couple of factual inaccuracies (a
    stale REST API version reference, an incorrect docker-compose service
    name).
    
    Co-Authored-By: Claude Sonnet 5 <[email protected]>
    
    * Revert task-sdk API reference doc dedup
    
    Leaving the autofunction/autoapifunction duplicate entries for task,
    setup, and teardown as-is per request.
    
    Co-Authored-By: Claude Sonnet 5 <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Sonnet 5 <[email protected]>
---
 .../administration-and-deployment/cluster-policies.rst   |  4 ++--
 .../docs/administration-and-deployment/dag-bundles.rst   |  6 +++---
 .../administration-and-deployment/dag-serialization.rst  |  4 ++--
 .../administration-and-deployment/dagfile-processing.rst | 10 +++++-----
 .../docs/administration-and-deployment/kubernetes.rst    |  4 ++--
 .../docs/administration-and-deployment/listeners.rst     |  4 ++--
 .../logging-monitoring/check-health.rst                  |  2 +-
 .../logging-monitoring/errors.rst                        |  2 +-
 .../administration-and-deployment/modules_management.rst |  2 +-
 .../administration-and-deployment/priority-weight.rst    |  2 +-
 .../production-deployment.rst                            | 10 +++++-----
 .../docs/administration-and-deployment/scheduler.rst     |  6 ++++--
 .../task-and-asset-state-store.rst                       |  2 +-
 airflow-core/docs/authoring-and-scheduling/assets.rst    | 16 ++++++++--------
 .../docs/authoring-and-scheduling/connections.rst        |  2 +-
 airflow-core/docs/authoring-and-scheduling/cron.rst      |  2 +-
 airflow-core/docs/authoring-and-scheduling/deferring.rst |  2 +-
 .../authoring-and-scheduling/dynamic-task-mapping.rst    |  8 ++++----
 .../docs/authoring-and-scheduling/serializers.rst        |  4 ++--
 airflow-core/docs/authoring-and-scheduling/timetable.rst |  8 ++++----
 airflow-core/docs/best-practices.rst                     |  6 +++---
 airflow-core/docs/core-concepts/backfill.rst             |  2 +-
 airflow-core/docs/core-concepts/dag-run.rst              |  2 +-
 airflow-core/docs/core-concepts/dags.rst                 |  4 ++--
 airflow-core/docs/core-concepts/debug.rst                |  2 +-
 airflow-core/docs/core-concepts/params.rst               |  7 +++----
 airflow-core/docs/core-concepts/sensors.rst              |  2 +-
 airflow-core/docs/core-concepts/task-state-store.rst     |  2 +-
 airflow-core/docs/core-concepts/taskflow.rst             |  4 ++--
 airflow-core/docs/core-concepts/xcoms.rst                |  2 +-
 airflow-core/docs/extra-packages-ref.rst                 |  2 +-
 airflow-core/docs/faq.rst                                | 10 +++++-----
 airflow-core/docs/howto/connection.rst                   |  2 +-
 airflow-core/docs/howto/custom-operator.rst              |  2 +-
 airflow-core/docs/howto/custom-view-plugin.rst           |  2 +-
 airflow-core/docs/howto/define-extra-link.rst            |  2 +-
 airflow-core/docs/howto/docker-compose/index.rst         |  4 ++--
 airflow-core/docs/howto/export-more-env-vars.rst         |  2 +-
 airflow-core/docs/howto/memory-profiling.rst             |  2 +-
 airflow-core/docs/howto/run-behind-proxy.rst             |  2 +-
 airflow-core/docs/howto/set-config.rst                   |  2 +-
 airflow-core/docs/howto/set-up-database.rst              |  4 ++--
 airflow-core/docs/howto/setup-and-teardown.rst           |  4 ++--
 airflow-core/docs/howto/sla-to-deadlines.rst             |  2 +-
 airflow-core/docs/howto/timetable.rst                    |  6 +++---
 airflow-core/docs/installation/dependencies.rst          | 14 +++++++-------
 airflow-core/docs/installation/index.rst                 |  4 ++--
 .../docs/installation/installing-from-sources.rst        | 10 +++++-----
 airflow-core/docs/installation/upgrading.rst             |  2 +-
 airflow-core/docs/installation/upgrading_to_airflow3.rst |  2 +-
 airflow-core/docs/public-airflow-interface.rst           |  7 +++----
 airflow-core/docs/security/audit_logs.rst                | 14 +++++++-------
 airflow-core/docs/security/kerberos.rst                  |  4 ++--
 airflow-core/docs/security/security_model.rst            |  8 ++++----
 airflow-core/docs/security/sql.rst                       |  2 +-
 .../vulnerabilities-in-3rd-party-dependencies.rst        |  2 +-
 airflow-core/docs/start.rst                              |  2 +-
 airflow-core/docs/templates-ref.rst                      | 10 ++++++----
 airflow-core/docs/tutorial/fundamentals.rst              |  2 +-
 airflow-core/docs/tutorial/hitl.rst                      |  4 ++--
 airflow-core/docs/ui.rst                                 |  4 ++--
 airflow-ctl/docs/cli-and-env-variables-ref.rst           |  2 +-
 airflow-ctl/docs/howto/index.rst                         |  4 ++--
 airflow-ctl/docs/installation/index.rst                  |  2 +-
 .../docs/installation/installing-from-sources.rst        | 14 +++++++-------
 airflow-ctl/docs/installation/prerequisites.rst          |  5 +----
 chart/docs/extending-the-chart.rst                       |  2 +-
 chart/docs/manage-dag-files.rst                          |  2 +-
 chart/docs/parameters-ref.rst                            |  2 +-
 chart/docs/production-guide.rst                          | 12 ++++++------
 chart/docs/setting-resources-for-containers.rst          |  2 +-
 task-sdk/docs/deferred-vs-async-operators.rst            |  2 +-
 task-sdk/docs/examples.rst                               |  2 +-
 task-sdk/docs/executable-bundle-spec.rst                 |  1 +
 74 files changed, 162 insertions(+), 162 deletions(-)

diff --git 
a/airflow-core/docs/administration-and-deployment/cluster-policies.rst 
b/airflow-core/docs/administration-and-deployment/cluster-policies.rst
index 7bc1ba5a377..1a09f69916b 100644
--- a/airflow-core/docs/administration-and-deployment/cluster-policies.rst
+++ b/airflow-core/docs/administration-and-deployment/cluster-policies.rst
@@ -66,7 +66,7 @@ cluster policy's value will take precedence.
 
 .. _administration-and-deployment:cluster-policies-define:
 
-How do define a policy function
+How to define a policy function
 -------------------------------
 
 There are two ways to configure cluster policies:
@@ -165,7 +165,7 @@ Here's an example of enforcing a maximum timeout policy on 
every task:
         :start-after: [START example_task_cluster_policy]
         :end-before: [END example_task_cluster_policy]
 
-You could also implement to protect against common errors, rather than as 
technical security controls. For example, don't run tasks without Airflow 
owners:
+You could also implement cluster policies to protect against common errors, 
rather than as technical security controls. For example, don't run tasks 
without Airflow owners:
 
 .. literalinclude:: /../tests/unit/cluster_policies/__init__.py
         :language: python
diff --git a/airflow-core/docs/administration-and-deployment/dag-bundles.rst 
b/airflow-core/docs/administration-and-deployment/dag-bundles.rst
index 57a91a36c0c..fb0e56bfb62 100644
--- a/airflow-core/docs/administration-and-deployment/dag-bundles.rst
+++ b/airflow-core/docs/administration-and-deployment/dag-bundles.rst
@@ -18,7 +18,7 @@
 Dag Bundles
 ===========
 
-A Dag bundle is a collection of one or more Dags, files along with their 
associated files, such as other
+A Dag bundle is a collection of one or more Dag files along with their 
associated files, such as other
 Python scripts, configuration files, or other resources. Dag bundles can 
source the Dags from various
 locations, such as local directories, Git repositories, or other external 
systems. Deployment administrators
 can also write their own Dag bundle classes to support custom sources. You can 
also define more than one Dag
@@ -217,7 +217,7 @@ The url is verified for safety, and if it is not safe, the 
view url for the bund
 You can also override the :ref:`config:dag_processor__refresh_interval` per 
Dag bundle by passing it in kwargs.
 This controls how often the Dag processor refreshes, or looks for new files, 
in the Dag bundles.
 
-Starting Airflow 3.0.2 git is pre installed in the base image. However, if you 
are using versions prior 3.0.2, you would need to install git in your docker 
image.
+Starting with Airflow 3.0.2, git is pre-installed in the base image. However, 
if you are using versions prior to 3.0.2, you would need to install git in your 
docker image.
 
 .. code-block:: Dockerfile
 
@@ -446,7 +446,7 @@ Other Considerations
 
 - **Versioning**: If your bundle supports versioning, ensure that 
``initialize``, ``get_current_version`` and ``refresh`` are implemented to 
handle version-specific logic.
 
-- **Concurrency**: Workers may create many bundles simultaneously, and does 
nothing to serialize calls to the bundle objects. Thus, the bundle class must 
handle locking if
+- **Concurrency**: Workers may create many bundles simultaneously, and Airflow 
does nothing to serialize calls to the bundle objects. Thus, the bundle class 
must handle locking if
   that is problematic for the underlying technology. For example, if you are 
cloning a git repo, the bundle class is responsible for locking to ensure only 
1 bundle
   object is cloning at a time. There is a ``lock`` method in the base class 
that can be used for this purpose, if necessary.
 
diff --git 
a/airflow-core/docs/administration-and-deployment/dag-serialization.rst 
b/airflow-core/docs/administration-and-deployment/dag-serialization.rst
index 6ad5b47864f..75bcb2ba379 100644
--- a/airflow-core/docs/administration-and-deployment/dag-serialization.rst
+++ b/airflow-core/docs/administration-and-deployment/dag-serialization.rst
@@ -53,8 +53,8 @@ You can enable the source code to be stored in the database 
to make the Webserve
 This is not necessary if your files are embedded in the Docker image or you 
can otherwise provide
 them to the Webserver. The data is stored in the 
:class:`~airflow.models.dagcode.DagCode` model.
 
-The last element is rendering template fields. When serialization is enabled, 
templates are not rendered
-to requests, but a copy of the field contents is saved before the task is 
executed on worker.
+The last element is rendering template fields. When serialization is enabled, 
templates are not re-rendered
+on request, but a copy of the field contents is saved before the task is 
executed on worker.
 The data is stored in the 
:class:`~airflow.models.renderedtifields.RenderedTaskInstanceFields` model.
 To limit the excessive growth of the database, only the most recent entries 
are kept and older entries
 are purged.
diff --git 
a/airflow-core/docs/administration-and-deployment/dagfile-processing.rst 
b/airflow-core/docs/administration-and-deployment/dagfile-processing.rst
index 2fcb3ca6346..5fead75ef95 100644
--- a/airflow-core/docs/administration-and-deployment/dagfile-processing.rst
+++ b/airflow-core/docs/administration-and-deployment/dagfile-processing.rst
@@ -24,7 +24,7 @@ Dag File Processing refers to the process of reading the 
python files that defin
 There are two primary components involved in Dag file processing.  The 
``DagFileProcessorManager`` is a process executing an infinite loop that 
determines which files need
 to be processed, and the ``DagFileProcessorProcess`` is a separate process 
that is started to convert an individual file into one or more Dag objects.
 
-The ``DagFileProcessorManager`` coordinates this work but never runs user code 
itself; it runs as a standalone process by running the ``airflow 
dag-processor`` CLI command.
+The ``DagFileProcessorManager`` coordinates this work but never runs user code 
itself; it is started as a standalone process via the ``airflow dag-processor`` 
CLI command.
 
 .. image:: /img/dag_file_processing_diagram.png
 
@@ -51,7 +51,7 @@ Fine-tuning your Dag processor performance
 What impacts Dag processor's performance
 """"""""""""""""""""""""""""""""""""""""
 
-The Dag processor is responsible for continuously parsing Dag files and 
synchronizing with the Dag in the database
+The Dag processor is responsible for continuously parsing Dag files and 
synchronizing with the Dag in the database.
 In order to fine-tune your Dag processor, you need to include a number of 
factors:
 
 * The kind of deployment you have
@@ -103,8 +103,8 @@ to observe and monitor your systems):
 * based on your expectations and observations - decide what is your next 
improvement and go back to
   the observation of your performance, bottlenecks. Performance improvement is 
an iterative process.
 
-What resources might limit Dag processors's performance
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""
+What resources might limit Dag processor's performance
+""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 There are several areas of resource usage that you should pay attention to:
 
@@ -134,7 +134,7 @@ There are several areas of resource usage that you should 
pay attention to:
   `PGBouncer <https://www.pgbouncer.org/>`_ as a proxy to your database. The 
:doc:`helm-chart:index`
   supports PGBouncer out-of-the-box.
 * CPU usage is most important for FileProcessors - those are the processes 
that parse and execute
-  Python Dag files. Since Dag processors typically triggers such parsing 
continuously, when you have a lot of Dags,
+  Python Dag files. Since Dag processors typically trigger such parsing 
continuously, when you have a lot of Dags,
   the processing might take a lot of CPU. You can mitigate it by increasing the
   :ref:`config:dag_processor__min_file_process_interval`, but this is one of 
the mentioned trade-offs,
   result of this is that changes to such files will be picked up slower and 
you will see delays between
diff --git a/airflow-core/docs/administration-and-deployment/kubernetes.rst 
b/airflow-core/docs/administration-and-deployment/kubernetes.rst
index 3a4be87280d..de5ec5e2207 100644
--- a/airflow-core/docs/administration-and-deployment/kubernetes.rst
+++ b/airflow-core/docs/administration-and-deployment/kubernetes.rst
@@ -48,8 +48,8 @@ Pod Mutation Hook
 
 The Airflow local settings file (``airflow_local_settings.py``) can define a 
``pod_mutation_hook`` function
 that has the ability to mutate pod objects before sending them to the 
Kubernetes client
-for scheduling. It receives a single argument as a reference to pod objects, 
and
-are expected to alter its attributes.
+for scheduling. It receives a single argument as a reference to the pod 
object, and
+is expected to alter its attributes.
 
 This could be used, for instance, to add sidecar or init containers
 to every worker pod launched by KubernetesExecutor or KubernetesPodOperator.
diff --git a/airflow-core/docs/administration-and-deployment/listeners.rst 
b/airflow-core/docs/administration-and-deployment/listeners.rst
index 70dde0b7fd2..cf653f2fbe5 100644
--- a/airflow-core/docs/administration-and-deployment/listeners.rst
+++ b/airflow-core/docs/administration-and-deployment/listeners.rst
@@ -34,7 +34,7 @@ Lifecycle Events
 - ``on_starting``
 - ``before_stopping``
 
-Lifecycle events allow you to react to start and stop events for an Airflow 
``Job``, like  ``SchedulerJob``.
+Lifecycle events allow you to react to start and stop events for an Airflow 
``Job``, like ``SchedulerJob``.
 
 DagRun State Change Events
 --------------------------
@@ -119,7 +119,7 @@ Dag Import Error Events
 - ``on_new_dag_import_error``
 - ``on_existing_dag_import_error``
 
-Dag import error events occur when Dag processor finds import error in the Dag 
code and update the metadata database table.
+Dag import error events occur when Dag processor finds an import error in the 
Dag code and updates the metadata database table.
 
 
 |experimental|
diff --git 
a/airflow-core/docs/administration-and-deployment/logging-monitoring/check-health.rst
 
b/airflow-core/docs/administration-and-deployment/logging-monitoring/check-health.rst
index 5289e7f042c..878f9496867 100644
--- 
a/airflow-core/docs/administration-and-deployment/logging-monitoring/check-health.rst
+++ 
b/airflow-core/docs/administration-and-deployment/logging-monitoring/check-health.rst
@@ -24,7 +24,7 @@ Airflow has two methods to check the health of components - 
HTTP checks and CLI
 accessible through the CLI, but only some are accessible through HTTP due to 
the role of the component being checked
 and the tools being used to monitor the deployment.
 
-For example, when running on Kubernetes, use `a Liveness probes 
<https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/>`__
 (``livenessProbe`` property)
+For example, when running on Kubernetes, use `a Liveness probe 
<https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/>`__
 (``livenessProbe`` property)
 with :ref:`CLI checks <check-health/cli-checks-for-scheduler>` on the 
scheduler deployment to restart it when it fails.
 For the webserver, you can configure the readiness probe (``readinessProbe`` 
property) using :ref:`check-health/http-endpoint`.
 
diff --git 
a/airflow-core/docs/administration-and-deployment/logging-monitoring/errors.rst 
b/airflow-core/docs/administration-and-deployment/logging-monitoring/errors.rst
index f2f04405382..bee43b756ba 100644
--- 
a/airflow-core/docs/administration-and-deployment/logging-monitoring/errors.rst
+++ 
b/airflow-core/docs/administration-and-deployment/logging-monitoring/errors.rst
@@ -79,7 +79,7 @@ in favor of ``data_interval_start``.
 Breadcrumbs
 ------------
 
-When a task fails with an error `breadcrumbs 
<https://docs.sentry.io/platforms/python/enriching-events/breadcrumbs/>`__ will 
be added for the other tasks in the current Dag run.
+When a task fails with an error, `breadcrumbs 
<https://docs.sentry.io/platforms/python/enriching-events/breadcrumbs/>`__ will 
be added for the other tasks in the current Dag run.
 
 ======================================= 
==============================================================
 Name                                    Description
diff --git 
a/airflow-core/docs/administration-and-deployment/modules_management.rst 
b/airflow-core/docs/administration-and-deployment/modules_management.rst
index 69c40932940..f5125d05ffe 100644
--- a/airflow-core/docs/administration-and-deployment/modules_management.rst
+++ b/airflow-core/docs/administration-and-deployment/modules_management.rst
@@ -118,7 +118,7 @@ In the case above, these are the ways you could import the 
python files:
 
 You can see the ``.airflowignore`` file at the root of your folder. This is a 
file that you can put in your
 ``dags`` folder to tell Airflow which files from the folder should be ignored 
when the Airflow
-scheduler looks for Dags. It should contain either regular expressions (the 
default) or glob expressions
+scheduler looks for Dags. It should contain either glob expressions (the 
default) or regular expressions
 for the paths that should be ignored. You do not need to have that file in any 
other folder in
 ``PYTHONPATH`` (and also you can only keep shared code in the other folders, 
not the actual Dags).
 
diff --git 
a/airflow-core/docs/administration-and-deployment/priority-weight.rst 
b/airflow-core/docs/administration-and-deployment/priority-weight.rst
index 3e8ed11cd4c..90e4c0b5c32 100644
--- a/airflow-core/docs/administration-and-deployment/priority-weight.rst
+++ b/airflow-core/docs/administration-and-deployment/priority-weight.rst
@@ -58,7 +58,7 @@ Below are the weighting methods. By default, Airflow's 
weighting method is ``dow
     without additional weighting. You may want to do this when you
     know exactly what priority weight each task should have.
     Additionally, when set to ``absolute``, there is bonus effect of
-    significantly speeding up the task creation process as for very
+    significantly speeding up the task creation process, especially for very
     large Dags.
 
 
diff --git 
a/airflow-core/docs/administration-and-deployment/production-deployment.rst 
b/airflow-core/docs/administration-and-deployment/production-deployment.rst
index 8e1258bb9da..56fe3ed3cc5 100644
--- a/airflow-core/docs/administration-and-deployment/production-deployment.rst
+++ b/airflow-core/docs/administration-and-deployment/production-deployment.rst
@@ -157,7 +157,7 @@ Make sure to test such live upgrade procedure in a staging 
environment before yo
 to avoid any surprises and side-effects.
 
 When it comes to live-upgrading the ``Webserver``, ``Triggerer`` components, 
if you run them in separate
-environments and have more than one instances for each of them, you can 
rolling-restart them one by one,
+environments and have more than one instance for each of them, you can 
rolling-restart them one by one,
 without any downtime. This should usually be done as the first step in your 
upgrade procedure.
 
 When you are running a deployment with separate ``Dag processor``, in a
@@ -182,7 +182,7 @@ of the executor you use:
   of running tasks going down to zero. Once the workers are upgraded, they 
will be automatically put in online
   mode and start picking up new tasks. You can then upgrade the ``Scheduler`` 
in a rolling restart mode.
 
-* For the :doc:`Kubernetes executor 
<apache-airflow-providers-cncf-kubernetes:kubernetes_executor>`, you can 
upgrade the scheduler
+* For the :doc:`Kubernetes executor 
<apache-airflow-providers-cncf-kubernetes:kubernetes_executor>`, you can 
upgrade the scheduler,
   triggerer, webserver in a rolling restart mode, and generally you should not 
worry about the workers, as they
   are managed by the Kubernetes cluster and will be automatically adopted by 
``Schedulers`` when they are
   upgraded and restarted.
@@ -254,8 +254,8 @@ Impersonate Service Accounts
 ----------------------------
 
 If you need access to other service accounts, you can
-:ref:`impersonate other service accounts 
<howto/connection:google_cloud_platform:impersonation>` to exchange the token 
with
-the default identity to another service account. Thus, the account keys are 
still managed by Google
+:ref:`impersonate other service accounts 
<howto/connection:google_cloud_platform:impersonation>` to exchange the token of
+the default identity for that of another service account. Thus, the account 
keys are still managed by Google
 and cannot be read by your workload.
 
 It is not recommended to generate service account keys and store them in the 
metadata database or the
@@ -270,7 +270,7 @@ of this instance and credentials to access it. To simplify 
this task, you can us
 :class:`~airflow.providers.google.cloud.hooks.compute.ComputeEngineHook`
 instead of :class:`~airflow.providers.ssh.hooks.ssh.SSHHook`
 
-The :class:`~airflow.providers.google.cloud.hooks.compute.ComputeEngineHook` 
support authorization with
+The :class:`~airflow.providers.google.cloud.hooks.compute.ComputeEngineHook` 
supports authorization with
 Google OS Login service. It is an extremely robust way to manage Linux access 
properly as it stores
 short-lived ssh keys in the metadata service, offers PAM modules for access 
and sudo privilege checking
 and offers the ``nsswitch`` user lookup into the metadata service as well.
diff --git a/airflow-core/docs/administration-and-deployment/scheduler.rst 
b/airflow-core/docs/administration-and-deployment/scheduler.rst
index 2bb447c0774..db329bfe5cc 100644
--- a/airflow-core/docs/administration-and-deployment/scheduler.rst
+++ b/airflow-core/docs/administration-and-deployment/scheduler.rst
@@ -61,7 +61,7 @@ In the UI, it appears as if Airflow is running your tasks a 
day **late**
 
 .. note::
     The scheduler is designed for high throughput. This is an informed design 
decision to achieve scheduling
-    tasks as soon as possible. The scheduler checks how many free slots 
available in a pool and schedule at most that number of tasks instances in one 
iteration.
+    tasks as soon as possible. The scheduler checks how many free slots are 
available in a pool and schedules at most that number of task instances in one 
iteration.
     This means that task priority will only come into effect when there are 
more scheduled tasks
     waiting than the queue slots. Thus there can be cases where low priority 
tasks will be scheduled before high priority tasks if they share the same batch.
     For more read about that you can reference `this GitHub discussion 
<https://github.com/apache/airflow/discussions/28809>`__.
@@ -71,7 +71,7 @@ In the UI, it appears as if Airflow is running your tasks a 
day **late**
 Running More Than One Scheduler
 -------------------------------
 
-.. versionadded: 2.0.0
+.. versionadded:: 2.0.0
 
 Airflow supports running more than one scheduler concurrently -- both for 
performance reasons and for
 resiliency.
@@ -283,6 +283,7 @@ However, you can also look at other non-performance-related 
scheduler configurat
   monitored by this scheduler instead.
 
 - :ref:`config:scheduler__max_tis_per_query`
+
   The batch size of queries in the scheduling main loop. This should not be 
greater than
   ``core.parallelism``. If this is too high then SQL query performance may be 
impacted by
   complexity of query predicate, and/or excessive locking.
@@ -291,6 +292,7 @@ However, you can also look at other non-performance-related 
scheduler configurat
   Set this to 0 to use the value of ``core.parallelism``.
 
 - :ref:`config:scheduler__scheduler_idle_sleep_time`
+
   Controls how long the scheduler will sleep between loops, but if there was 
nothing to do
   in the loop. i.e. if it scheduled something then it will start the next loop
   iteration straight away. This parameter is badly named (historical reasons) 
and it will be
diff --git 
a/airflow-core/docs/administration-and-deployment/task-and-asset-state-store.rst
 
b/airflow-core/docs/administration-and-deployment/task-and-asset-state-store.rst
index e17e8985567..706d5576679 100644
--- 
a/airflow-core/docs/administration-and-deployment/task-and-asset-state-store.rst
+++ 
b/airflow-core/docs/administration-and-deployment/task-and-asset-state-store.rst
@@ -105,7 +105,7 @@ The cleanup task, also known as "garbage collection" is 
triggered using the Airf
   Rows whose ``expires_at < now()`` are deleted. ``expires_at`` is computed on 
the *worker* at write time, not by the server.
 
 **``default_retention_days`` fallback (task state store only)**
-  Keys written with no explicit retention get an ``expires_at`` of now + 
default_retention_days computed at write time. Garbage collection deletes rows 
where ``expires_at < now()``."
+  Keys written with no explicit retention get an ``expires_at`` of now + 
default_retention_days computed at write time. Garbage collection deletes rows 
where ``expires_at < now()``.
 
 **``NEVER_EXPIRE`` keys**
   Keys set with ``retention=NEVER_EXPIRE`` are stored with ``expires_at = 
NULL`` and a flag that tells the garbage collection to skip them 
unconditionally. They are never deleted by time-based cleanup, regardless of 
``default_retention_days``.
diff --git a/airflow-core/docs/authoring-and-scheduling/assets.rst 
b/airflow-core/docs/authoring-and-scheduling/assets.rst
index 10d8e341776..45d1a5753a5 100644
--- a/airflow-core/docs/authoring-and-scheduling/assets.rst
+++ b/airflow-core/docs/authoring-and-scheduling/assets.rst
@@ -31,7 +31,7 @@ What is an "Asset"?
 
 An Airflow asset is a logical grouping of data. Upstream producer tasks can 
update assets, and asset updates contribute to scheduling downstream consumer 
Dags.
 
-`Uniform Resource Identifier (URI) 
<https://en.wikipedia.org/wiki/Uniform_Resource_Identifier>`_ define assets:
+`Uniform Resource Identifiers (URI) 
<https://en.wikipedia.org/wiki/Uniform_Resource_Identifier>`_ define assets:
 
 .. code-block:: python
 
@@ -56,7 +56,7 @@ Technically, the URI must conform to the valid character set 
in RFC 3986, which
 
 The URI is also case sensitive, so ``s3://example/asset`` and 
``s3://Example/asset`` are considered different. Note that the *host* part of 
the URI is also case sensitive, which differs from RFC 3986.
 
-For pre-defined schemes (e.g., ``file``, ``postgres``, and ``s3``), you must 
provide a meaning URI. If you can't provide one, use another scheme altogether 
that don't have the semantic restrictions. Airflow will never require a 
semantic for user-defined URI schemes  (with a prefix x-), so that can be a 
good alternative. If you have a URI that can only be obtained later (e.g., 
during task execution), consider using ``AssetAlias`` instead and update the 
URI later.
+For pre-defined schemes (e.g., ``file``, ``postgres``, and ``s3``), you must 
provide a meaningful URI. If you can't provide one, use another scheme 
altogether that doesn't have the semantic restrictions. Airflow will never 
require a semantic for user-defined URI schemes  (with a prefix x-), so that 
can be a good alternative. If you have a URI that can only be obtained later 
(e.g., during task execution), consider using ``AssetAlias`` instead and update 
the URI later.
 
 .. code-block:: python
 
@@ -65,7 +65,7 @@ For pre-defined schemes (e.g., ``file``, ``postgres``, and 
``s3``), you must pro
 
 Do not use the ``airflow`` scheme, which is reserved for Airflow's internals.
 
-Airflow always prefers using lower cases in schemes, and case sensitivity is 
needed in the host part of the URI to correctly distinguish between resources.
+Airflow always prefers using lowercase in schemes, and case sensitivity is 
needed in the host part of the URI to correctly distinguish between resources.
 
 .. code-block:: python
 
@@ -103,9 +103,9 @@ If needed, you can include an additional dictionary in an 
asset using the ``extr
     )
 
 This allows you to provide custom metadata about the asset, such as ownership 
information or the purpose of the file. The ``extra`` field does **NOT** affect 
the identity of an asset.
-Thus, maintaining the uniqueness of the ``extra`` value is the user 
responsibility. It suggested to have only one single set of ``extra`` value per 
asset.
+Thus, maintaining the uniqueness of the ``extra`` value is the user's 
responsibility. It is suggested to have only one single set of ``extra`` value 
per asset.
 
-For example, in the following snippet, only one of the ``extra`` dictionaries 
will ultimately be stored, but it does guaranteed which one will be stored.
+For example, in the following snippet, only one of the ``extra`` dictionaries 
will ultimately be stored, but it is not guaranteed which one will be stored.
 
 .. code-block:: python
 
@@ -234,7 +234,7 @@ Fetching information from previously emitted asset events
 
 .. versionadded:: 2.10.0
 
-Events of an asset defined in a task's ``outlets``, as described in the 
previous section, can be read by a task that declares the same asset in its 
``inlets``. A asset event entry contains ``extra`` (see previous section for 
details), ``timestamp`` indicating when the event was emitted from a task, and 
``source_task_instance`` linking the event back to its source.
+Events of an asset defined in a task's ``outlets``, as described in the 
previous section, can be read by a task that declares the same asset in its 
``inlets``. An asset event entry contains ``extra`` (see previous section for 
details), ``timestamp`` indicating when the event was emitted from a task, and 
``source_task_instance`` linking the event back to its source.
 
 Inlet asset events can be read with the ``inlet_events`` accessor in the 
execution context. Continuing from the ``write_to_s3`` asset in the previous 
section:
 
@@ -282,7 +282,7 @@ Each ``extra`` value uses ``key=value`` format. Multiple 
entries are combined wi
 Dependency between ``@asset``, ``@task``, and classic operators
 ---------------------------------------------------------------
 
-Since an ``@asset`` is simply a wrapper around a Dag with a task and an asset, 
it is quite easy to read and ``@asset`` in a ``@task`` or a classic operator. 
For example, the above ``post_process_s3_file`` can also be written as a task 
(inside a Dag, omitted here for brevity):
+Since an ``@asset`` is simply a wrapper around a Dag with a task and an asset, 
it is quite easy to read from an ``@asset`` in a ``@task`` or a classic 
operator. For example, the above ``post_process_s3_file`` can also be written 
as a task (inside a Dag, omitted here for brevity):
 
 .. code-block:: python
 
@@ -538,7 +538,7 @@ Asset partitions
 
 .. versionadded:: 3.2.0
 
-Asset events can include a ``partition_key`` to make it _partitioned__. This 
lets you model
+Asset events can include a ``partition_key`` to make it *partitioned*. This 
lets you model
 the same asset at partition granularity (for example, ``2026-03-10T09:00:00`` 
for an
 hourly partition).
 
diff --git a/airflow-core/docs/authoring-and-scheduling/connections.rst 
b/airflow-core/docs/authoring-and-scheduling/connections.rst
index 7f9cbaa443e..1df51ee8806 100644
--- a/airflow-core/docs/authoring-and-scheduling/connections.rst
+++ b/airflow-core/docs/authoring-and-scheduling/connections.rst
@@ -43,7 +43,7 @@ You can view a :ref:`full list of Airflow hooks 
<pythonapi:hooks>` in our API do
 Custom connections
 ------------------
 
-Airflow allows to define custom connection types. This is what is described in 
detail in
+Airflow allows you to define custom connection types. This is what is 
described in detail in
 :doc:`apache-airflow-providers:index` - providers give you the capability of 
defining your own connections.
 The connection customization can be done by any provider, but also
 many of the providers managed by the community define custom connection types.
diff --git a/airflow-core/docs/authoring-and-scheduling/cron.rst 
b/airflow-core/docs/authoring-and-scheduling/cron.rst
index 5683daeedf9..b5d1e65ce27 100644
--- a/airflow-core/docs/authoring-and-scheduling/cron.rst
+++ b/airflow-core/docs/authoring-and-scheduling/cron.rst
@@ -53,7 +53,7 @@ For example, you can create a Dag schedule to run at 12AM on 
the first Monday of
 
+----------------+--------------------------------------------------------------------+-----------------+
 | ``@continuous``| Run as soon as the previous run finishes                    
       |                 |
 
+----------------+--------------------------------------------------------------------+-----------------+
-| ``@hourly``    | Run once an hour at the end of the hour                     
       | ``0 * * * *``   |
+| ``@hourly``    | Run once an hour at the beginning of the hour               
       | ``0 * * * *``   |
 
+----------------+--------------------------------------------------------------------+-----------------+
 | ``@daily``     | Run once a day at midnight (24:00)                          
       | ``0 0 * * *``   |
 
+----------------+--------------------------------------------------------------------+-----------------+
diff --git a/airflow-core/docs/authoring-and-scheduling/deferring.rst 
b/airflow-core/docs/authoring-and-scheduling/deferring.rst
index 3e56c843ce2..f767cde9867 100644
--- a/airflow-core/docs/authoring-and-scheduling/deferring.rst
+++ b/airflow-core/docs/authoring-and-scheduling/deferring.rst
@@ -589,7 +589,7 @@ queue values are set to either ``"team_A"`` or 
``"team_B"``):
 Difference between Mode='reschedule' and Deferrable=True in Sensors
 -------------------------------------------------------------------
 
-In Airflow, sensors wait for specific conditions to be met before proceeding 
with downstream tasks. Sensors have two options for managing idle periods: 
``mode='reschedule'`` and ``deferrable=True``. Because ``mode='reschedule'`` is 
a parameter specific to the BaseSensorOperator in Airflow, it allows the sensor 
to reschedule itself if the condition is not met. ``'deferrable=True'`` is a 
convention used by some operators to indicate that the task can be retried (or 
deferred) later, but it  [...]
+In Airflow, sensors wait for specific conditions to be met before proceeding 
with downstream tasks. Sensors have two options for managing idle periods: 
``mode='reschedule'`` and ``deferrable=True``. Because ``mode='reschedule'`` is 
a parameter specific to the BaseSensorOperator in Airflow, it allows the sensor 
to reschedule itself if the condition is not met. ``deferrable=True`` is a 
parameter supported by individual deferrable operators and sensors to indicate 
that the task should suspe [...]
 
 
+--------------------------------------------------------+--------------------------------------------------------+
 |           mode='reschedule'                            |          
deferrable=True                               |
diff --git 
a/airflow-core/docs/authoring-and-scheduling/dynamic-task-mapping.rst 
b/airflow-core/docs/authoring-and-scheduling/dynamic-task-mapping.rst
index d3a3f9cfa1d..3e2a9e09e80 100644
--- a/airflow-core/docs/authoring-and-scheduling/dynamic-task-mapping.rst
+++ b/airflow-core/docs/authoring-and-scheduling/dynamic-task-mapping.rst
@@ -364,7 +364,7 @@ In the above example, task ``convert_to_yaml`` is expanded 
into two task instanc
 Value references in a task group function
 -----------------------------------------
 
-One important distinction between a task function (``@task``) and a task 
*group* function (``@task_group``) is, since a task group does not have an 
associated worker, code in a task group function cannot resolve arguments 
passed into it; the real value and is only resolved when the reference is 
passed into a task.
+One important distinction between a task function (``@task``) and a task 
*group* function (``@task_group``) is, since a task group does not have an 
associated worker, code in a task group function cannot resolve arguments 
passed into it; the real value is only resolved when the reference is passed 
into a task.
 
 For example, this code will *not* work:
 
@@ -388,7 +388,7 @@ For example, this code will *not* work:
 
 When code in ``my_task_group`` is executed, ``value`` would still only be a 
reference, not the real value, so the ``if not value`` branch will not work as 
you likely want. However, if you pass that reference into a task, it will 
become resolved when the task is executed, and the three ``my_task`` instances 
will therefore receive 1, 2, and 3, respectively.
 
-It is, therefore, important to remember that, if you intend to perform any 
logic to a value passed into a task group function, you must always use a task 
to run the logic, such as  ``@task.branch`` (or ``BranchPythonOperator``) for 
conditions, and task mapping methods for loops.
+It is, therefore, important to remember that, if you intend to perform any 
logic on a value passed into a task group function, you must always use a task 
to run the logic, such as ``@task.branch`` (or ``BranchPythonOperator``) for 
conditions, and task mapping methods for loops.
 
 .. note:: Task-mapping in a mapped task group is not permitted
 
@@ -648,8 +648,8 @@ Placing limits on mapped tasks
 
 There are two limits that you can place on a task:
 
-  #. the number of mapped task instances can be created as the result of 
expansion.
-  #. The number of the mapped task can run at once.
+  #. the number of mapped task instances that can be created as the result of 
expansion.
+  #. The number of the mapped task instances that can run at once.
 
 - **Limiting number of mapped task**
 
diff --git a/airflow-core/docs/authoring-and-scheduling/serializers.rst 
b/airflow-core/docs/authoring-and-scheduling/serializers.rst
index 400b394267e..1fadde9a932 100644
--- a/airflow-core/docs/authoring-and-scheduling/serializers.rst
+++ b/airflow-core/docs/authoring-and-scheduling/serializers.rst
@@ -46,7 +46,7 @@ Airflow resolves custom serialization in the following order:
 
 If you are looking to extend Airflow with a new serializer, it is good to know 
when to choose what way of serialization.
 Objects that are under the control of Airflow, i.e. residing under the 
namespace of ``airflow.*`` like
-``airflow.model.dag.DAG`` or under control of the developer e.g. 
``my.company.Foo`` should first be examined to see
+``airflow.models.dag.DAG`` or under control of the developer e.g. 
``my.company.Foo`` should first be examined to see
 whether they can be decorated with ``@attr.define`` or ``@dataclass``. If that 
is not possible then the ``serialize``
 and ``deserialize`` methods should be implemented. The ``serialize`` method 
should return a primitive or a dict.
 It does not need to serialize the values in the dict, that will be taken care 
of, but the keys should be of a primitive
@@ -85,7 +85,7 @@ Airflow Object
 
         @staticmethod
         def deserialize(data: dict[str, Any], version: int):
-            f = Foo(a=data["a"], v=data["b"])
+            f = Foo(a=data["a"], v=data["b"]["x"])
             return f
 
 
diff --git a/airflow-core/docs/authoring-and-scheduling/timetable.rst 
b/airflow-core/docs/authoring-and-scheduling/timetable.rst
index 525b975db16..2deefe9429c 100644
--- a/airflow-core/docs/authoring-and-scheduling/timetable.rst
+++ b/airflow-core/docs/authoring-and-scheduling/timetable.rst
@@ -29,7 +29,7 @@ internally converted to always use a timetable.
 If a cron expression or ``timedelta`` is sufficient for your use case, you 
don't need
 to worry about writing a custom timetable because Airflow has default 
timetables that handle those cases.
 But for more complicated scheduling requirements,
-you can create your own timetable class and pass that to the Dags ``schedule`` 
argument.
+you can create your own timetable class and pass that to the Dag's 
``schedule`` argument.
 
 Some examples of when custom timetable implementations are useful:
 
@@ -48,7 +48,7 @@ Some examples of when custom timetable implementations are 
useful:
 
 .. _`Traditional Chinese Calendar`: 
https://en.wikipedia.org/wiki/Chinese_calendar
 
-Airflow allows you to write custom timetables in plugins and used by
+Airflow allows you to write custom timetables in plugins and use them in
 Dags. You can find an example demonstrating a custom timetable in the
 :doc:`/howto/timetable` how-to guide.
 
@@ -409,7 +409,7 @@ data interval that they cover, depending on 3 arguments: 
``schedule``, ``start_d
      - ``True``
      - * 00:00 - 00:30
        * 00:30 - 01:00
-     - Same behavior than using the timedelta object.
+     - Same behavior as using the timedelta object.
 
    * - ``*/30 * * * *``
      - ``year-02-01``
@@ -434,7 +434,7 @@ data interval that they cover, depending on 3 arguments: 
``schedule``, ``start_d
      - ``True``
      - * 00:00 - 00:30
        * 00:30 - 01:00
-     - Same behavior than using the cron expression.
+     - Same behavior as using the cron expression.
 
    * - ``datetime.timedelta(minutes=30)``
      - ``year-02-01``
diff --git a/airflow-core/docs/best-practices.rst 
b/airflow-core/docs/best-practices.rst
index 881564be186..a7b34a9fa51 100644
--- a/airflow-core/docs/best-practices.rst
+++ b/airflow-core/docs/best-practices.rst
@@ -1048,7 +1048,7 @@ Using ExternalPythonOperator
 .. versionadded:: 2.4
 
 A bit more involved but with significantly less overhead, security, stability 
problems is to use the
-:class:`airflow.providers.standard.operators.python.ExternalPythonOperator``. 
In the modern
+:class:`airflow.providers.standard.operators.python.ExternalPythonOperator`. 
In the modern
 TaskFlow approach described in :doc:`/tutorial/taskflow`. this also can be 
done with decorating
 your callable with ``@task.external_python`` decorator (recommended way of 
using the operator).
 It requires, however, that you have a pre-existing, immutable Python 
environment, that is prepared upfront.
@@ -1131,7 +1131,7 @@ As of version 2.2 of Airflow you can use ``@task.docker`` 
decorator to run your
 
 .. versionadded:: 2.4
 
-As of version 2.2 of Airflow you can use ``@task.kubernetes`` decorator to run 
your functions with ``KubernetesPodOperator``.
+As of version 2.4 of Airflow you can use ``@task.kubernetes`` decorator to run 
your functions with ``KubernetesPodOperator``.
 
 
 The benefits of using those operators are:
@@ -1172,7 +1172,7 @@ The drawbacks:
   provided by those two are "leaky", so you need to understand a bit more 
about resources, networking,
   containers etc. in order to author a Dag that uses those operators.
 
-You can see detailed examples of using 
:class:`airflow.operators.providers.Docker` in
+You can see detailed examples of using 
:class:`airflow.providers.docker.operators.docker.DockerOperator` in
 :ref:`TaskFlow Docker example <taskflow-docker_environment>`
 and 
:class:`airflow.providers.cncf.kubernetes.operators.pod.KubernetesPodOperator`
 :ref:`TaskFlow Kubernetes example <tasfklow-kpo>`
diff --git a/airflow-core/docs/core-concepts/backfill.rst 
b/airflow-core/docs/core-concepts/backfill.rst
index e8ecf675e1a..d28a1d60dbf 100644
--- a/airflow-core/docs/core-concepts/backfill.rst
+++ b/airflow-core/docs/core-concepts/backfill.rst
@@ -39,7 +39,7 @@ Concurrency control
 -------------------
 
 You can set ``max_active_runs`` on a backfill and it will control how many Dag 
runs in
-the backfill can run concurrently. Backfill ``max_active_runs`` is applied 
independently
+the backfill can run concurrently. Backfill ``max_active_runs`` is applied 
independently of
 the Dag ``max_active_runs`` setting.
 
 Once a backfill's Dag runs are actually running, the scheduler does not 
otherwise
diff --git a/airflow-core/docs/core-concepts/dag-run.rst 
b/airflow-core/docs/core-concepts/dag-run.rst
index f72dd8d6ac0..dad6eb51147 100644
--- a/airflow-core/docs/core-concepts/dag-run.rst
+++ b/airflow-core/docs/core-concepts/dag-run.rst
@@ -28,7 +28,7 @@ Dag Run Status
 
 A Dag Run status is determined when the execution of the Dag is finished.
 The execution of the Dag depends on its containing tasks and their 
dependencies.
-The status is assigned to the Dag Run when all of the tasks are in the one of 
the terminal states (i.e. if there is no possible transition to another state) 
like ``success``, ``failed`` or ``skipped``.
+The status is assigned to the Dag Run when all of the tasks are in one of the 
terminal states (i.e. if there is no possible transition to another state) like 
``success``, ``failed`` or ``skipped``.
 The Dag Run is having the status assigned based on the so-called "leaf nodes" 
or simply "leaves". Leaf nodes are the tasks with no children.
 
 There are two possible terminal states for the Dag Run:
diff --git a/airflow-core/docs/core-concepts/dags.rst 
b/airflow-core/docs/core-concepts/dags.rst
index b08c1dc5538..18acf9bbdec 100644
--- a/airflow-core/docs/core-concepts/dags.rst
+++ b/airflow-core/docs/core-concepts/dags.rst
@@ -699,7 +699,7 @@ This is especially useful if your tasks are built 
dynamically from configuration
 
         t = EmptyOperator(task_id="foo")
         t.doc_md = """\
-        #Title"
+        # Title
         Here's a [url](www.airbnb.com)
         """
 
@@ -865,7 +865,7 @@ Here's a simple example using the existing email Notifier:
 .. code-block:: python
 
     from datetime import timedelta
-    from airflow import DAG
+    from airflow.sdk import DAG
     from airflow.providers.smtp.notifications.smtp import SmtpNotifier
     from airflow.sdk.definitions.deadline import DeadlineAlert, 
DeadlineReference
 
diff --git a/airflow-core/docs/core-concepts/debug.rst 
b/airflow-core/docs/core-concepts/debug.rst
index f6b1b7fa2e7..4d298a00e21 100644
--- a/airflow-core/docs/core-concepts/debug.rst
+++ b/airflow-core/docs/core-concepts/debug.rst
@@ -52,7 +52,7 @@ To set up ``dag.test``, add these two lines to the bottom of 
your Dag file:
 and that's it! You can add optional arguments to fine tune the testing but 
otherwise you can run or debug Dags as
 needed. Here are some examples of arguments:
 
-* ``execution_date`` if you want to test argument-specific Dag runs
+* ``logical_date`` if you want to test argument-specific Dag runs
 * ``use_executor`` if you want to test the Dag using an executor. By default 
``dag.test`` runs the Dag without an
   executor, it just runs all the tasks locally.
   By providing this argument, the Dag is executed using the executor 
configured in the Airflow environment.
diff --git a/airflow-core/docs/core-concepts/params.rst 
b/airflow-core/docs/core-concepts/params.rst
index 47502db86ad..c192ee639ec 100644
--- a/airflow-core/docs/core-concepts/params.rst
+++ b/airflow-core/docs/core-concepts/params.rst
@@ -349,8 +349,8 @@ The following features are supported in the Trigger UI Form:
             | input - because of JSON validation.
             | If you want to have a field value being
             | added optional only, you must allow
-            | JSON schema validation allowing null
-            | values.
+            | the null type in the JSON schema
+            | validation.
           -
           - ``Param(None, type=["null", "string"])``
 
@@ -400,7 +400,6 @@ The following features are supported in the Trigger UI Form:
 - On the bottom of the form the generated JSON configuration can be expanded.
   If you want to change values manually, the JSON configuration can be 
adjusted. Changes in the JSON will be reflected in the form fields.
 - Fields can be required or optional. Typed fields are required by default to 
ensure they pass JSON schema validation. To make typed fields optional, you 
must allow the "null" type.
-- Fields without a "section" will be rendered in the default area. Additional 
sections will be collapsed by default.
 
 .. note::
     If the field is required the default value must be valid according to the 
schema as well. If the Dag is defined with
@@ -450,7 +449,7 @@ Finally the fourth section shows advanced form elements.
 
 .. versionchanged:: 3.0.0
     By default custom HTML is not allowed to prevent injection of scripts or 
other malicious HTML code. The previous field named
-    ``description_html`` is now super-seeded with the attribute 
``description_md``. ``description_html`` is not supported anymore.
+    ``description_html`` is now superseded with the attribute 
``description_md``. ``description_html`` is not supported anymore.
     Custom form elements using the attribute ``custom_html_form`` was 
deprecated in version 2.8.0 and support was removed in 3.0.0.
 
 Disabling Runtime Param Modification
diff --git a/airflow-core/docs/core-concepts/sensors.rst 
b/airflow-core/docs/core-concepts/sensors.rst
index 9a2e9b9633f..21c0c5d9353 100644
--- a/airflow-core/docs/core-concepts/sensors.rst
+++ b/airflow-core/docs/core-concepts/sensors.rst
@@ -19,7 +19,7 @@ Sensors
 ========
 
 Sensors are a special type of :doc:`Operator <operators>` that are designed to 
do exactly one thing - wait for something to occur. It can be time-based, or 
waiting for a file, or an external event, but all they do is wait until 
something happens, and then *succeed* so their downstream tasks can run.
-Or, in the case when that thing does _not_ happen within the configured 
timeout, *fails* so that you can be alerted to the failure through the usual 
mechanisms.
+Or, in the case when that thing does *not* happen within the configured 
timeout, *fails* so that you can be alerted to the failure through the usual 
mechanisms.
 
 Because they are primarily idle, Sensors have two different modes of running 
so you can be a bit more efficient about using them:
 
diff --git a/airflow-core/docs/core-concepts/task-state-store.rst 
b/airflow-core/docs/core-concepts/task-state-store.rst
index 783a9c0a825..46bd2c88f4c 100644
--- a/airflow-core/docs/core-concepts/task-state-store.rst
+++ b/airflow-core/docs/core-concepts/task-state-store.rst
@@ -56,7 +56,7 @@ Inside any ``@task``-decorated function or 
``BaseOperator.execute()`` method, ta
         my_value = task_state_store.get("my_key", default="my_default_key")
 
         # Set the new value
-        new_value = f"It is {random.randint(1, 12 + 1)} o'clock"
+        new_value = f"It is {random.randint(1, 12)} o'clock"
         task_state_store.set("my_key", new_value)
 
         # Delete the value
diff --git a/airflow-core/docs/core-concepts/taskflow.rst 
b/airflow-core/docs/core-concepts/taskflow.rst
index 2e91649a381..c96e5c04186 100644
--- a/airflow-core/docs/core-concepts/taskflow.rst
+++ b/airflow-core/docs/core-concepts/taskflow.rst
@@ -102,7 +102,7 @@ a ``Asset``, which is ``@attr.define`` decorated, together 
with TaskFlow.
 
 .. note::
 
-    An additional benefit of using ``Asset`` is that it automatically 
registers as an ``inlet`` in case it is used as an input argument. It also auto 
registers as an ``outlet`` if the return value of your task is a ``Asset`` or a 
``list[Asset]]``.
+    An additional benefit of using ``Asset`` is that it automatically 
registers as an ``inlet`` in case it is used as an input argument. It also auto 
registers as an ``outlet`` if the return value of your task is a ``Asset`` or a 
``list[Asset]``.
 
 
 .. code-block:: python
@@ -177,7 +177,7 @@ yourself. To do so add the ``serialize()`` method to your 
class and the staticme
         @staticmethod
         def deserialize(data: dict, version: int):
             if version > 1:
-                raise TypeError(f"version > {MyCustom.version}")
+                raise TypeError(f"version > {MyCustom.__version__}")
             return MyCustom(data["x"])
 
 Object Versioning
diff --git a/airflow-core/docs/core-concepts/xcoms.rst 
b/airflow-core/docs/core-concepts/xcoms.rst
index b61ee9e1744..d1d8fe75ee3 100644
--- a/airflow-core/docs/core-concepts/xcoms.rst
+++ b/airflow-core/docs/core-concepts/xcoms.rst
@@ -23,7 +23,7 @@ XComs
 
 XComs (short for "cross-communications") are a mechanism that let :doc:`tasks` 
talk to each other, as by default Tasks are entirely isolated and may be 
running on entirely different machines.
 
-An XCom is identified by a ``key`` (essentially its name), as well as the 
``task_id`` and ``dag_id`` it came from. They can have any serializable value 
(including objects that are decorated with ``@dataclass`` or ``@attr.define``, 
see :ref:`TaskFlow arguments <concepts:arbitrary-arguments>`:), but they are 
only designed for small amounts of data; do not use them to pass around large 
values, like dataframes.
+An XCom is identified by a ``key`` (essentially its name), as well as the 
``task_id`` and ``dag_id`` it came from. They can have any serializable value 
(including objects that are decorated with ``@dataclass`` or ``@attr.define``, 
see :ref:`TaskFlow arguments <concepts:arbitrary-arguments>`), but they are 
only designed for small amounts of data; do not use them to pass around large 
values, like dataframes.
 
 XCom operations should be performed through the Task Context using
 :func:`~airflow.sdk.get_current_context`. Directly updating using XCom 
database model is not possible.
diff --git a/airflow-core/docs/extra-packages-ref.rst 
b/airflow-core/docs/extra-packages-ref.rst
index 5c285ebb7d6..bb00925002a 100644
--- a/airflow-core/docs/extra-packages-ref.rst
+++ b/airflow-core/docs/extra-packages-ref.rst
@@ -118,7 +118,7 @@ other packages that can be used by airflow or some of its 
providers.
 
+---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+
 | amazon-aws-auth     | ``pip install apache-airflow[amazon-aws-auth]``     | 
Amazon-aws-auth AWS authentication                                         |
 
+---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+
-| cloudpickle         | ``pip install apache-airflow[cloudpickle]``         | 
Cloudpickle hooks and operators                                            |
+| cloudpickle         | ``pip install apache-airflow[cloudpickle]``         | 
Cloudpickle serialization support                                          |
 
+---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+
 | github-enterprise   | ``pip install 'apache-airflow[github-enterprise]'`` | 
GitHub Enterprise auth backend                                             |
 
+---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+
diff --git a/airflow-core/docs/faq.rst b/airflow-core/docs/faq.rst
index 2719f463416..e9104117042 100644
--- a/airflow-core/docs/faq.rst
+++ b/airflow-core/docs/faq.rst
@@ -73,7 +73,7 @@ There are very many reasons why your task might not be 
getting scheduled. Here a
   running. You can bulk view the list of DagRuns and alter states by clicking
   on the schedule tag for a Dag.
 
-- Is the ``concurrency`` parameter of your Dag reached? ``concurrency`` defines
+- Is the ``max_active_tasks`` parameter of your Dag reached? 
``max_active_tasks`` defines
   how many ``running`` task instances a Dag is allowed to have, beyond which
   point things get queued.
 
@@ -87,18 +87,18 @@ sure you fully understand how the scheduler cycle works.
 How to improve Dag performance?
 -------------------------------
 
-There are some Airflow configuration to allow for a larger scheduling capacity 
and frequency:
+There are some Airflow configurations to allow for a larger scheduling 
capacity and frequency:
 
 - :ref:`config:core__parallelism`
 - :ref:`config:core__max_active_tasks_per_dag`
 - :ref:`config:core__max_active_runs_per_dag`
 
-Dags have configurations that improves efficiency:
+Dags have configurations that improve efficiency:
 
 - ``max_active_tasks``: Overrides :ref:`config:core__max_active_tasks_per_dag`.
 - ``max_active_runs``: Overrides :ref:`config:core__max_active_runs_per_dag`.
 
-Operators or tasks also have configurations that improves efficiency and 
scheduling priority:
+Operators or tasks also have configurations that improve efficiency and 
scheduling priority:
 
 - ``max_active_tis_per_dag``: This parameter controls the number of concurrent 
running task instances across ``dag_runs``
   per task.
@@ -585,7 +585,7 @@ and eventually cause Dag file processing to fail.
 Refer to :ref:`Dag writing best practices<best_practice:writing_a_dag>` for 
more information.
 
 
-Do Macros resolves in another Jinja template?
+Do Macros resolve in another Jinja template?
 ---------------------------------------------
 
 It is not possible to render :ref:`Macros<macros>` or any Jinja template 
within another Jinja template. This is
diff --git a/airflow-core/docs/howto/connection.rst 
b/airflow-core/docs/howto/connection.rst
index ced1baa6aa9..9253442b550 100644
--- a/airflow-core/docs/howto/connection.rst
+++ b/airflow-core/docs/howto/connection.rst
@@ -200,7 +200,7 @@ You can add a connection using JSON format (from version 
2.3.0):
             }
         }'
 
-Alternatively you may use Airflow' Connection URI format (see :ref:`Generating 
a Connection URI <generating_connection_uri>`).
+Alternatively you may use Airflow's Connection URI format (see 
:ref:`Generating a Connection URI <generating_connection_uri>`).
 
 .. code-block:: bash
 
diff --git a/airflow-core/docs/howto/custom-operator.rst 
b/airflow-core/docs/howto/custom-operator.rst
index f6793d4e8d0..d12892355b1 100644
--- a/airflow-core/docs/howto/custom-operator.rst
+++ b/airflow-core/docs/howto/custom-operator.rst
@@ -450,7 +450,7 @@ that your sensor is not suitable for use with reschedule 
mode.
 An example of a sensor that keeps internal state and cannot be used with 
reschedule mode
 is 
:class:`airflow.providers.google.cloud.sensors.gcs.GCSUploadSessionCompleteSensor`.
 It polls the number of objects at a prefix (this number is the internal state 
of the sensor)
-and succeeds when there a certain amount of time has passed without the number 
of objects changing.
+and succeeds when there has been a certain amount of time passed without the 
number of objects changing.
 
 Testing your operator
 ---------------------
diff --git a/airflow-core/docs/howto/custom-view-plugin.rst 
b/airflow-core/docs/howto/custom-view-plugin.rst
index 024c32f9613..dcab538833e 100644
--- a/airflow-core/docs/howto/custom-view-plugin.rst
+++ b/airflow-core/docs/howto/custom-view-plugin.rst
@@ -42,7 +42,7 @@ in the Airflow UI. This is useful for integrating external 
applications or custo
 In this object reference, the list of dictionaries with the view name, href 
(templatable), destination and
 optional parameters like the icon and url_route are passed on.
 
-Using react_apps  in Airflow plugin, allows to register custom React 
applications that can be rendered
+Using react_apps in Airflow plugin, allows to register custom React 
applications that can be rendered
 in the Airflow UI. This is useful for integrating custom React components or 
applications into the Airflow UI.
 In this object reference, the list of dictionaries with the app name, 
bundle_url (where to load the js assets, templatable), destination and
 optional parameters like the icon and url_route are passed on.
diff --git a/airflow-core/docs/howto/define-extra-link.rst 
b/airflow-core/docs/howto/define-extra-link.rst
index 39991759300..92bafba2aea 100644
--- a/airflow-core/docs/howto/define-extra-link.rst
+++ b/airflow-core/docs/howto/define-extra-link.rst
@@ -74,7 +74,7 @@ You can see all the extra links available via 
community-managed providers in
 Add or override Links to Existing Operators
 -------------------------------------------
 
-You can also add (or override) an extra link to an existing operators
+You can also add (or override) an extra link to existing operators
 through an Airflow plugin or custom provider.
 
 For example, the following Airflow plugin will add an Operator Link on all
diff --git a/airflow-core/docs/howto/docker-compose/index.rst 
b/airflow-core/docs/howto/docker-compose/index.rst
index aa61ed3a8bd..e83e45df5b9 100644
--- a/airflow-core/docs/howto/docker-compose/index.rst
+++ b/airflow-core/docs/howto/docker-compose/index.rst
@@ -247,7 +247,7 @@ You can also run :doc:`CLI commands <../usage-cli>`, but 
you have to do it in on
 
     docker compose run airflow-worker airflow info
 
-If you have Linux or Mac OS, you can make your work easier and download a 
optional wrapper scripts that will allow you to run commands with a simpler 
command.
+If you have Linux or Mac OS, you can make your work easier and download an 
optional wrapper script that will allow you to run commands with a simpler 
command.
 
 .. jinja:: quick_start_ctx
 
@@ -472,7 +472,7 @@ runtime user id which is unknown at the time of building 
the image.
 |                                | it should be set to result of ``id -u`` 
call.       |                          |
 |                                | When it is changed, a user with the UID is  
        |                          |
 |                                | created with ``default`` name inside the 
container  |                          |
-|                                | and home of the use is set to 
``/airflow/home/``    |                          |
+|                                | and home of the user is set to 
``/airflow/home/``   |                          |
 |                                | in order to share Python libraries 
installed there. |                          |
 |                                | This is in order to achieve the  OpenShift  
        |                          |
 |                                | compatibility. See more in the              
        |                          |
diff --git a/airflow-core/docs/howto/export-more-env-vars.rst 
b/airflow-core/docs/howto/export-more-env-vars.rst
index a35b3be6fb5..4cbc55c593a 100644
--- a/airflow-core/docs/howto/export-more-env-vars.rst
+++ b/airflow-core/docs/howto/export-more-env-vars.rst
@@ -25,7 +25,7 @@ Export dynamic environment variables available for operators 
to use
 The key value pairs returned in ``get_airflow_context_vars`` defined in
 ``airflow_local_settings.py`` are injected to default Airflow context 
environment variables,
 which are available as environment variables when running tasks. Note, both 
key and
-value are must be string.
+value must be strings.
 
 ``dag_id``, ``task_id``, ``execution_date``, ``dag_run_id``,
 ``dag_owner``, ``dag_email`` are reserved keys.
diff --git a/airflow-core/docs/howto/memory-profiling.rst 
b/airflow-core/docs/howto/memory-profiling.rst
index 83f6e976f79..197f9249c73 100644
--- a/airflow-core/docs/howto/memory-profiling.rst
+++ b/airflow-core/docs/howto/memory-profiling.rst
@@ -240,7 +240,7 @@ Precautions
 
 1. **Profile in Non-Production Environments**
    Memory profiling adds significant overhead, including increased memory 
usage and performance
-   degradation. Use it in development that mirror your production setup.
+   degradation. Use it in a development environment that mirrors your 
production setup.
 
 2. **Use Representative Workloads**
    Ensure the workload you're profiling is representative of your actual use 
case.
diff --git a/airflow-core/docs/howto/run-behind-proxy.rst 
b/airflow-core/docs/howto/run-behind-proxy.rst
index 419b8506d4b..ae28cb23b33 100644
--- a/airflow-core/docs/howto/run-behind-proxy.rst
+++ b/airflow-core/docs/howto/run-behind-proxy.rst
@@ -33,7 +33,7 @@ To do so, you need to set the following setting in your 
``airflow.cfg``::
 
     base_url = http://my_host/myorg/airflow
 
-- Configure your reverse  proxy (e.g. nginx) to pass the url and http header 
as it for the Airflow webserver, without any rewrite, for example::
+- Configure your reverse proxy (e.g. nginx) to pass the url and http header 
as-is to the Airflow webserver, without any rewrite, for example::
 
       server {
         listen 80;
diff --git a/airflow-core/docs/howto/set-config.rst 
b/airflow-core/docs/howto/set-config.rst
index 7a982584593..b4fcf0559c2 100644
--- a/airflow-core/docs/howto/set-config.rst
+++ b/airflow-core/docs/howto/set-config.rst
@@ -181,7 +181,7 @@ Some Airflow configuration is configured via local setting, 
because they require
 code that is executed when Airflow is initialized. Usually it is mentioned in 
the detailed documentation
 where you can configure such local settings - This is usually done in the 
``airflow_local_settings.py`` file.
 
-You should create a ``airflow_local_settings.py`` file and put it in a 
directory in ``sys.path`` or
+You should create an ``airflow_local_settings.py`` file and put it in a 
directory in ``sys.path`` or
 in the ``$AIRFLOW_HOME/config`` folder. (Airflow adds ``$AIRFLOW_HOME/config`` 
to ``sys.path`` when
 Airflow is initialized)
 Starting from Airflow 2.10.1, the $AIRFLOW_HOME/dags folder is no longer 
included in sys.path at initialization, so any local settings in that folder 
will not be imported. Ensure that airflow_local_settings.py is located in a 
path that is part of sys.path during initialization, like $AIRFLOW_HOME/config.
diff --git a/airflow-core/docs/howto/set-up-database.rst 
b/airflow-core/docs/howto/set-up-database.rst
index 4fd02a5fc75..af99862839a 100644
--- a/airflow-core/docs/howto/set-up-database.rst
+++ b/airflow-core/docs/howto/set-up-database.rst
@@ -159,7 +159,7 @@ Setting up a PostgreSQL Database
 --------------------------------
 
 You need to create a database and a database user that Airflow will use to 
access this database.
-In the example below, a database ``airflow_db`` and user  with username 
``airflow_user`` with password ``airflow_pass`` will be created
+In the example below, a database ``airflow_db`` and a user with username 
``airflow_user`` with password ``airflow_pass`` will be created
 
 .. code-block:: sql
 
@@ -341,7 +341,7 @@ Setting up a MySQL Database
 ---------------------------
 
 You need to create a database and a database user that Airflow will use to 
access this database.
-In the example below, a database ``airflow_db`` and user  with username 
``airflow_user`` with password ``airflow_pass`` will be created
+In the example below, a database ``airflow_db`` and a user with username 
``airflow_user`` with password ``airflow_pass`` will be created
 
 .. code-block:: sql
 
diff --git a/airflow-core/docs/howto/setup-and-teardown.rst 
b/airflow-core/docs/howto/setup-and-teardown.rst
index cc7ec1c9c95..813297295da 100644
--- a/airflow-core/docs/howto/setup-and-teardown.rst
+++ b/airflow-core/docs/howto/setup-and-teardown.rst
@@ -131,8 +131,8 @@ Implicit ALL_SUCCESS constraint
 
 Any task in the scope of a setup has an implicit "all_success" constraint on 
its setups.
 This is necessary to ensure that if a task with indirect setups is cleared, it 
will
-wait for them to complete.  If a setup fails or is skipped, the work tasks 
which depend
-them will be marked ask failures or skips.  We also require that any 
non-teardown directly
+wait for them to complete.  If a setup fails or is skipped, the work tasks 
which depend on
+them will be marked as failures or skips.  We also require that any 
non-teardown directly
 downstream of a setup must have trigger rule ALL_SUCCESS.
 
 Controlling Dag run state
diff --git a/airflow-core/docs/howto/sla-to-deadlines.rst 
b/airflow-core/docs/howto/sla-to-deadlines.rst
index ccfe602360b..7e5b4dd6f3c 100644
--- a/airflow-core/docs/howto/sla-to-deadlines.rst
+++ b/airflow-core/docs/howto/sla-to-deadlines.rst
@@ -21,7 +21,7 @@ Migrating from SLA to Deadline Alerts
 Two Different Paradigms
 -----------------------
 
-While the goal of the **SLA** and **Deadline Alerts** features are very 
similar, they use two very different approaches.
+While the goals of the **SLA** and **Deadline Alerts** features are very 
similar, they use two very different approaches.
 This guide will lay out the major differences and help you decide on the best 
approach for your use case.
 
 To begin with, we'll start by explaining the two approaches then go into how 
to find the right Deadline for your use case.
diff --git a/airflow-core/docs/howto/timetable.rst 
b/airflow-core/docs/howto/timetable.rst
index 38e28cc0cd3..062be319a13 100644
--- a/airflow-core/docs/howto/timetable.rst
+++ b/airflow-core/docs/howto/timetable.rst
@@ -269,7 +269,7 @@ serialized Dag is accessed by the scheduler to reconstruct 
the timetable.
 Timetable Display in UI
 -----------------------
 
-By default, a custom timetable is displayed by their class name in the UI (e.g.
+By default, a custom timetable is displayed by its class name in the UI (e.g.
 the *Schedule* column in the "dags" table). It is possible to customize this
 by overriding the ``summary`` property. This is especially useful for
 parameterized timetables to include arguments provided in ``__init__``. For
@@ -321,7 +321,7 @@ You can also wrap this inside ``__init__``, if you want to 
derive description.
         self.description = f"Schedule: after each workday, at 
{self._schedule_at}"
 
 
-This is specially useful when you want to provide comprehensive description 
which is different from ``summary`` property.
+This is especially useful when you want to provide comprehensive description 
which is different from ``summary`` property.
 
 So for a Dag declared like this:
 
@@ -347,7 +347,7 @@ Changing generated ``run_id``
 
 Since Airflow 2.4, Timetables are also responsible for generating the 
``run_id`` for DagRuns.
 
-For example to have the Run ID show a "human friendly" date of when the run 
started (that is, the end of the data interval, rather then the start which is 
the date currently used) you could add a method like this to a custom timetable:
+For example to have the Run ID show a "human friendly" date of when the run 
started (that is, the end of the data interval, rather than the start which is 
the date currently used) you could add a method like this to a custom timetable:
 
 .. code-block:: python
 
diff --git a/airflow-core/docs/installation/dependencies.rst 
b/airflow-core/docs/installation/dependencies.rst
index 8e209869abb..64b9e1dc1ca 100644
--- a/airflow-core/docs/installation/dependencies.rst
+++ b/airflow-core/docs/installation/dependencies.rst
@@ -39,8 +39,8 @@ Provider distributions
 ''''''''''''''''''''''
 
 Airflow is delivered in multiple, separate, but connected packages. There is 
the main ``apache-airflow``
-package, ``airflow-core`` package (which is a dependency of 
``apache-airflow``) which implements
-main airflow functionality, ``airflow-task-sdk`` package that is used by Dag 
authors to implement Dags,
+package, ``apache-airflow-core`` package (which is a dependency of 
``apache-airflow``) which implements
+main airflow functionality, ``apache-airflow-task-sdk`` package that is used 
by Dag authors to implement Dags,
 and multiple so called ``Airflow providers`` packages.
 
 The default Airflow installation doesn't have many integrations and you have 
to install them yourself.
@@ -62,12 +62,12 @@ packages, but not all optional features of Apache Airflow 
have corresponding pro
 
 We are using the ``extras`` setuptools features to also install providers.
 Most of the extras are also linked (same name) with providers - for example 
using ``apache-airflow[google]``
-extra installs ``airflow-core`` and adds ``apache-airflow-providers-google`` 
as dependency.
-However, there are some extras that do not install providers (examples 
``github_enterprise``, ``kerberos`` -
+extra installs ``apache-airflow-core`` and adds 
``apache-airflow-providers-google`` as dependency.
+However, there are some extras that do not install providers (examples 
``github_enterprise``, ``kerberos``) -
 they add some extra dependencies which are needed for those ``extra`` features 
of
-Airflow mentioned. The three examples above add respectively GitHub Enterprise 
OAuth authentication,
-Kerberos integration . None of those have providers, they are just extending 
Apache Airflow
-``airflow-core`` package with new functionalities.
+Airflow mentioned. The two examples above add respectively GitHub Enterprise 
OAuth authentication and
+Kerberos integration. None of those have providers, they are just extending 
Apache Airflow
+``apache-airflow-core`` package with new functionalities.
 
 System dependencies
 '''''''''''''''''''
diff --git a/airflow-core/docs/installation/index.rst 
b/airflow-core/docs/installation/index.rst
index c3737c15bd6..87fd0b52420 100644
--- a/airflow-core/docs/installation/index.rst
+++ b/airflow-core/docs/installation/index.rst
@@ -59,7 +59,7 @@ you can install Airflow directly from PyPI with the command 
below:
 
     pipx run apache-airflow standalone
 
-Alternatively similar with Astral ``uv``:
+Alternatively, you can do something similar with Astral ``uv``:
 
 .. code-block:: bash
 
@@ -395,7 +395,7 @@ control theory - where there are two types of systems:
    the system and adjust the knobs continuously to make sure the system is 
running smoothly.
 
 Airflow (and generally any modern systems running usually on cloud services, 
with multiple layers responsible
-for resources as well multiple parameters to control their behaviour) is a 
complex system and it fall
+for resources as well multiple parameters to control their behaviour) is a 
complex system and it falls
 much more in the second category. If you decide to run Airflow in production 
on your own, you should be
 prepared for the monitor/observe/adjust feedback loop to make sure the system 
is running smoothly.
 
diff --git a/airflow-core/docs/installation/installing-from-sources.rst 
b/airflow-core/docs/installation/installing-from-sources.rst
index f807fa96ec1..627d1831d4b 100644
--- a/airflow-core/docs/installation/installing-from-sources.rst
+++ b/airflow-core/docs/installation/installing-from-sources.rst
@@ -29,14 +29,14 @@ Released packages
     the top-left of the page.
 
 The Source packages are official packages of the Apache Software Foundation - 
and the ones that you can
-use is you want to build the packages yourself from the source code and be 
sure that the provenance of
+use if you want to build the packages yourself from the source code and be 
sure that the provenance of
 the packages is verified and matches the source code from the repository and 
you can verify the
 checksums and signatures of the packages.
 
-The ``sdist`` and ``whl`` packages released are the convenience packages - of 
installation also installed from
+The ``sdist`` and ``whl`` packages released are the convenience packages - for 
installation, also built from
 the same sources and you can still verify the origin of the packages and want 
to verify checksums and
-signatures of the packages. The packages are available via the Official Apache 
Software Foundations Downloads
-`Official Apache Software Foundations Downloads <https://dlcdn.apache.org/>`_
+signatures of the packages. The packages are available via the
+`Official Apache Software Foundation Downloads <https://dlcdn.apache.org/>`_
 
 The ``|version|`` downloads of Airflow® are available at:
 
@@ -51,7 +51,7 @@ The ``|version|`` downloads of Airflow® are available at:
     * `Whl package for airflow task-sdk distribution <{{ 
closer_lua_url_task_sdk }}/apache_airflow_task_sdk-{{ task_sdk_version 
}}-py3-none-any.whl>`__ (`asc <{{ base_url_task_sdk 
}}/apache_airflow_task_sdk-{{ task_sdk_version }}-py3-none-any.whl.asc>`__, 
`sha512 <{{ base_url_task_sdk }}/apache_airflow_task_sdk-{{ task_sdk_version 
}}-py3-none-any.whl.sha512>`__)
 
 If you want to install from the source code, you can download from the sources 
link above, it will contain
-a ``INSTALL`` file containing details on how you can build and install Airflow.
+an ``INSTALL`` file containing details on how you can build and install 
Airflow.
 
 Release integrity
 '''''''''''''''''
diff --git a/airflow-core/docs/installation/upgrading.rst 
b/airflow-core/docs/installation/upgrading.rst
index 50822bae775..8e91f80b5c7 100644
--- a/airflow-core/docs/installation/upgrading.rst
+++ b/airflow-core/docs/installation/upgrading.rst
@@ -89,7 +89,7 @@ Handling migration problems
 Wrong Encoding in MySQL database
 ................................
 
-If you are using old Airflow 1.10 as a database created initially either 
manually or with previous version of MySQL,
+If you have an old Airflow 1.10 database that was created initially either 
manually or with a previous version of MySQL,
 depending on the original character set of your database, you might have 
problems with migrating to a newer
 version of Airflow and your migration might fail with strange errors ("key 
size too big", "missing indexes" etc).
 The next chapter describes how to fix the problem manually.
diff --git a/airflow-core/docs/installation/upgrading_to_airflow3.rst 
b/airflow-core/docs/installation/upgrading_to_airflow3.rst
index 91e86cb3ccb..cd32d05d629 100644
--- a/airflow-core/docs/installation/upgrading_to_airflow3.rst
+++ b/airflow-core/docs/installation/upgrading_to_airflow3.rst
@@ -119,7 +119,7 @@ To trigger these fixes, run the following command:
 .. note::
 
     In AIR rules, unsafe fixes involve changing import paths while keeping the 
name of the imported member the same. For instance, changing the import from 
``from airflow.sensors.base_sensor_operator import BaseSensorOperator`` to 
``from airflow.sdk.bases.sensor import BaseSensorOperator`` requires ruff to 
remove the original import before adding the new one. In contrast, safe fixes 
include changes to both the member name and the import path, such as changing 
``from airflow.datasets impo [...]
-    These adjustments do not require ruff to remove the old import. To remove 
unused legacy imports, it is necessary to enable the ``unused-import`` rule 
(F401) <https://docs.astral.sh/ruff/rules/unused-import/#unused-import-f401>`_
+    These adjustments do not require ruff to remove the old import. To remove 
unused legacy imports, it is necessary to enable the `unused-import rule (F401) 
<https://docs.astral.sh/ruff/rules/unused-import/#unused-import-f401>`_
 
 You can also configure these flags through configuration files. See 
`Configuring Ruff <https://docs.astral.sh/ruff/configuration/>`_ for details.
 
diff --git a/airflow-core/docs/public-airflow-interface.rst 
b/airflow-core/docs/public-airflow-interface.rst
index 3d9dccf577c..756ea2e8bc0 100644
--- a/airflow-core/docs/public-airflow-interface.rst
+++ b/airflow-core/docs/public-airflow-interface.rst
@@ -33,8 +33,7 @@ and extending Airflow capabilities by writing new executors, 
plugins, operators
 Public Interface can be useful for building custom tools and integrations with 
other systems,
 and for automating certain aspects of the Airflow workflow.
 
-The primary public interface for Dag authors and task execution is using task 
SDK
-Airflow task SDK is the primary public interface for Dag authors and for task 
execution
+The primary public interface for Dag authors and for task execution is the 
Airflow Task SDK, via the
 :doc:`airflow.sdk namespace <core-concepts/taskflow>`. Direct access to the 
metadata database
 from task code is no longer allowed. Instead, use the :doc:`Stable REST API 
<stable-rest-api-ref>`,
 `Python Client <https://github.com/apache/airflow-client-python>`_, or Task 
Context methods.
@@ -61,7 +60,7 @@ Using Airflow Public Interfaces
 
 The following are some examples of the public interface of Airflow:
 
-* When you are writing your own operators or hooks. This is commonly done when 
no hook or operator exists for your use case, or when perhaps when one exists 
but you need to customize the behavior.
+* When you are writing your own operators or hooks. This is commonly done when 
no hook or operator exists for your use case, or perhaps when one exists but 
you need to customize the behavior.
 * When writing new :doc:`Plugins <administration-and-deployment/plugins>` that 
extend Airflow's functionality beyond
   Dag building blocks. Secrets, Timetables, Triggers, Listeners are all 
examples of such functionality. This
   is usually done by users who manage Airflow instances.
@@ -71,7 +70,7 @@ The following are some examples of the public interface of 
Airflow:
 * Using the taskflow API to write tasks
 * Relying on the consistent behavior of Airflow objects
 
-One aspect of "public interface" is  extending or using Airflow Python classes 
and functions. The classes
+One aspect of "public interface" is extending or using Airflow Python classes 
and functions. The classes
 and functions mentioned below can be relied on to maintain 
backwards-compatible signatures and behaviours within
 MAJOR version of Airflow. On the other hand, classes and methods starting with 
``_`` (also known
 as protected Python methods) and ``__`` (also known as private Python methods) 
are not part of the Public
diff --git a/airflow-core/docs/security/audit_logs.rst 
b/airflow-core/docs/security/audit_logs.rst
index 3c7df803cb0..947c0c0eee4 100644
--- a/airflow-core/docs/security/audit_logs.rst
+++ b/airflow-core/docs/security/audit_logs.rst
@@ -89,7 +89,7 @@ While both logging systems are crucial for system management, 
they serve distinc
      - Short to medium-term (days to weeks)
    * - **Query Patterns**
      - "Who cleared the task instance for re-execution?"
-     - No query made except is a log aggregation framework is used. Usually 
logs are read on a per task execution basis and will describe: "Why did this 
task execution fail?"
+     - No query is made unless a log aggregation framework is used. Usually 
logs are read on a per task execution basis and will describe: "Why did this 
task execution fail?"
 
 
 Accessing Audit Logs
@@ -486,16 +486,16 @@ Effective audit log analysis requires understanding the 
various methods availabl
 .. code-block:: bash
 
     # Get all audit logs
-    curl -X GET "http://localhost:8080/api/v1/eventLogs";
+    curl -X GET "http://localhost:8080/api/v2/eventLogs";
 
     # Filter by event type
-    curl -X GET "http://localhost:8080/api/v1/eventLogs?event=trigger_dag_run";
+    curl -X GET "http://localhost:8080/api/v2/eventLogs?event=trigger_dag_run";
 
     # Filter by DAG
-    curl -X GET "http://localhost:8080/api/v1/eventLogs?dag_id=example_dag";
+    curl -X GET "http://localhost:8080/api/v2/eventLogs?dag_id=example_dag";
 
     # Filter by date range
-    curl -X GET 
"http://localhost:8080/api/v1/eventLogs?after=2024-01-01T00:00:00Z&before=2024-12-31T23:59:59Z";
+    curl -X GET 
"http://localhost:8080/api/v2/eventLogs?after=2024-01-01T00:00:00Z&before=2024-12-31T23:59:59Z";
 
 **Database Query Examples**:
 
@@ -544,10 +544,10 @@ Event logs (operational logs) are typically accessed 
through different methods d
 .. code-block:: bash
 
     # Get task instance logs
-    curl -X GET 
"http://localhost:8080/api/v1/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{try_number}";
+    curl -X GET 
"http://localhost:8080/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{try_number}";
 
     # Get task logs with metadata
-    curl -X GET 
"http://localhost:8080/api/v1/dags/example_dag/dagRuns/2024-01-01T00:00:00+00:00/taskInstances/example_task/logs/1?full_content=true";
+    curl -X GET 
"http://localhost:8080/api/v2/dags/example_dag/dagRuns/2024-01-01T00:00:00+00:00/taskInstances/example_task/logs/1?full_content=true";
 
 **Python Logging Integration**:
 
diff --git a/airflow-core/docs/security/kerberos.rst 
b/airflow-core/docs/security/kerberos.rst
index 6de9b65e161..7c6be7a2f21 100644
--- a/airflow-core/docs/security/kerberos.rst
+++ b/airflow-core/docs/security/kerberos.rst
@@ -101,7 +101,7 @@ If you need more granular options for your Kerberos ticket 
the following options
     with mode ``0700`` and owned by the Airflow user. Apply the same principle 
as the keytab, which
     should already be ``chmod 600``.
 
-Keep in mind that Kerberos ticket are generated via ``kinit`` and will your 
use your local ``krb5.conf`` by default.
+Keep in mind that Kerberos tickets are generated via ``kinit`` and will use 
your local ``krb5.conf`` by default.
 
 Launch the ticket renewer by
 
@@ -136,7 +136,7 @@ For one time mode:
 Hadoop
 ^^^^^^
 
-If want to use impersonation this needs to be enabled in ``core-site.xml`` of 
your hadoop config.
+If you want to use impersonation, this needs to be enabled in 
``core-site.xml`` of your hadoop config.
 
 .. code-block:: xml
 
diff --git a/airflow-core/docs/security/security_model.rst 
b/airflow-core/docs/security/security_model.rst
index c9a0b91b932..f59abe1bcbc 100644
--- a/airflow-core/docs/security/security_model.rst
+++ b/airflow-core/docs/security/security_model.rst
@@ -116,7 +116,7 @@ to abuse these privileges. They have access to sensitive 
credentials
 and can modify them. By default, they don't have access to
 system-level configuration. They should be trusted not to misuse
 sensitive information accessible through connection configuration.
-They also have the ability to create a API Server Denial of Service
+They also have the ability to create an API Server Denial of Service
 situation and should be trusted not to misuse this capability.
 
 Only admin users have access to audit logs by default.
@@ -138,7 +138,7 @@ required to prevent misuse of these privileges. They have 
full write-only access
 to sensitive credentials stored in connections and can modify them, but cannot 
view them.
 Access to write sensitive information through connection configuration
 should be trusted not to be abused. They also have the ability to configure 
connections wrongly
-that might create a API Server Denial of Service situations and specify 
insecure connection options
+that might create an API Server Denial of Service situation and specify 
insecure connection options
 which might create situations where executing Dags will lead to arbitrary 
Remote Code Execution
 for some providers - either community released or custom ones.
 
@@ -898,7 +898,7 @@ up to the Deployment Manager - Airflow does not provide any 
tooling or mechanism
 expects that the Deployment Manager will provide the tooling to protect access 
to Dag bundles and
 make sure that only trusted code is submitted there.
 
-Airflow does not implement any of those feature natively, and delegates it to 
the deployment managers
+Airflow does not implement any of those features natively, and delegates it to 
the deployment managers
 to deploy all the necessary infrastructure to protect the deployment - as 
external infrastructure components.
 
 Limiting access for authenticated UI users
@@ -1208,7 +1208,7 @@ Supported deployment platforms
 Apache Airflow officially supports Linux-based deployment environments only. 
The reference
 deployment, the CI matrix, and the official Docker image are all 
Linux-targeted (Debian Bookworm).
 macOS is supported for local development but is not a deployment platform. 
Windows is not supported
-for deployment - except WSL2 for develop (buy only with POSIX filesystem which 
is the same as Linux).
+for deployment - except WSL2 for development (but only with POSIX filesystem 
which is the same as Linux).
 
 Vulnerability reports that only manifest on a non-Linux platform — behavior 
that depends on Windows
 path separators, macOS-specific filesystem semantics, etc. — are **out of 
scope** for the security
diff --git a/airflow-core/docs/security/sql.rst 
b/airflow-core/docs/security/sql.rst
index b6b81d2180c..fed3981f5fd 100644
--- a/airflow-core/docs/security/sql.rst
+++ b/airflow-core/docs/security/sql.rst
@@ -19,7 +19,7 @@ SQL Injection
 =============
 
 Previously, Airflow issued CVE like `CVE-2025-27018 SQL injection in MySQL 
provider core function <https://www.cve.org/CVERecord?id=CVE-2025-27018/>`_.
-The CVE were about the ability to inject SQL without considering the actor 
performing it.
+The CVE was about the ability to inject SQL without considering the actor 
performing it.
 Airflow will no longer issue CVE for cases of SQL Injection unless the 
reporter can demonstrate a scenario of exploitation.
 For example, if in a security report the only actor that can operate the 
injection is Actor who has access to Dags folder the report will be rejected.
 When submitting a security report of SQL injection the reporter must explain 
who is the user that can utilize the injection and how the user gained access 
to be able to perform it.
diff --git 
a/airflow-core/docs/security/vulnerabilities-in-3rd-party-dependencies.rst 
b/airflow-core/docs/security/vulnerabilities-in-3rd-party-dependencies.rst
index 6247a4032df..810a0b3621f 100644
--- a/airflow-core/docs/security/vulnerabilities-in-3rd-party-dependencies.rst
+++ b/airflow-core/docs/security/vulnerabilities-in-3rd-party-dependencies.rst
@@ -91,7 +91,7 @@ used by Airflow and you would like to get rid of those. There 
are a few things y
   dependency. That helps other community members to be more confident about 
upgrading and might make them
   aware of some of 3rd-party vulnerabilities that they were not aware of.
 
-* In case your version of Airflow or some of it's providers, prevent you from 
upgrading to a non-vulnerable version of the
+* In case your version of Airflow or some of its providers prevent you from 
upgrading to a non-vulnerable version of the
   dependency, you can see if latest versions of Airflow or providers removed 
any limitations - you can check
   constraint files and :doc:`sbom` we publish for all Airflow versions 
(industry-standard way of capturing
   inventory of dependencies). If you see that you can upgrade, upgrade - 
ideally - to latest versions of
diff --git a/airflow-core/docs/start.rst b/airflow-core/docs/start.rst
index c155662a600..7768fa153fc 100644
--- a/airflow-core/docs/start.rst
+++ b/airflow-core/docs/start.rst
@@ -113,7 +113,7 @@ before running ``pip install`` commands:
       PYTHON_VERSION="$(python -c 'import sys; 
print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
 
       
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt";
-      # For example this would install 3.0.0 with python 3.10: 
https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt
+      # For example this would install 3.1.1 with python 3.10: 
https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt
 
       uv pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint 
"${CONSTRAINT_URL}"
 
diff --git a/airflow-core/docs/templates-ref.rst 
b/airflow-core/docs/templates-ref.rst
index aeb907dbe47..7012b439979 100644
--- a/airflow-core/docs/templates-ref.rst
+++ b/airflow-core/docs/templates-ref.rst
@@ -20,7 +20,8 @@
 Templates reference
 ===================
 
-Variables, macros and filters can be used in templates (see the 
:ref:`concepts:jinja-templating` section)
+Variables, macros and filters can be used in templates (see the 
:ref:`concepts:jinja-templating` section).
+
 Asset-triggered DAGs
 --------------------
 
@@ -60,9 +61,10 @@ Variable                                    Type             
     Description
 ``{{ logical_date }}``                      `pendulum.DateTime`_  | A 
date-time that logically identifies the current Dag run. This value does not 
contain any semantics, but is simply a value for identification.
                                                                   | Use 
``data_interval_start`` and ``data_interval_end`` instead if you want a value 
that has real-world semantics,
                                                                   | such as to 
get a slice of rows from the database based on timestamps.
-``{{ exception }}``                         None | str |          | Error 
occurred while running task instance.
-                                            Exception             |
-                                            KeyboardInterrupt     |
+``{{ exception }}``                         None                  Error 
occurred while running task instance.
+                                            | str
+                                            | Exception
+                                            | KeyboardInterrupt
 ``{{ prev_data_interval_start_success }}``  `pendulum.DateTime`_  | Start of 
the data interval of the prior successful 
:class:`~airflow.models.dagrun.DagRun`.
                                             | ``None``            | Added in 
version 2.2.
 ``{{ prev_data_interval_end_success }}``    `pendulum.DateTime`_  | End of the 
data interval of the prior successful :class:`~airflow.models.dagrun.DagRun`.
diff --git a/airflow-core/docs/tutorial/fundamentals.rst 
b/airflow-core/docs/tutorial/fundamentals.rst
index 14ecb5bf77c..d2ea578dff1 100644
--- a/airflow-core/docs/tutorial/fundamentals.rst
+++ b/airflow-core/docs/tutorial/fundamentals.rst
@@ -213,7 +213,7 @@ Working with Time Zones
 
 Creating a time zone aware Dag is straightforward. Just ensure you use time 
zone aware dates
 with `pendulum <https://github.com/python-pendulum/pendulum>`_. Avoid using 
the standard library
-`timezone <https://docs.python.org/3/library/datetime.html#timezone-objects>`_ 
as they have known limitations.
+`timezone <https://docs.python.org/3/library/datetime.html#timezone-objects>`_ 
as it has known limitations.
 
 Recap
 -----
diff --git a/airflow-core/docs/tutorial/hitl.rst 
b/airflow-core/docs/tutorial/hitl.rst
index aea843486f4..cc09ef7d5b3 100644
--- a/airflow-core/docs/tutorial/hitl.rst
+++ b/airflow-core/docs/tutorial/hitl.rst
@@ -34,7 +34,7 @@ This powerful feature enables workflows to pause and wait for 
human input, makin
    A waiting ``awaiting_input`` task does not occupy a pool slot. This differs 
from the older deferral
    path, where a deferred HITL task counted against a pool that had 
``include_deferred`` enabled.
 
-In this tutorial, we will explore how to use the HITL operators in workflows 
and demonstrate how it would look like in Airflow UI.
+In this tutorial, we will explore how to use the HITL operators in workflows 
and demonstrate what it would look like in the Airflow UI.
 
 An HITL Example Dag
 -------------------
@@ -107,7 +107,7 @@ Approval or Rejection
 
 A specialized form of option selection, which has only 'Approval' and 
'Rejection' as options.
 You can also set the ``assigned_users`` to restrict the users allowed to 
respond for a HITL operator.
-It should be a list of user ids and user names (both needed) (e.g., ``[{"id": 
"1", "name": "user1"}, {"id": "2", "name": "user2"}]``.
+It should be a list of user ids and user names (both needed) (e.g., ``[{"id": 
"1", "name": "user1"}, {"id": "2", "name": "user2"}]``).
 ONLY the users within this list will be allowed to respond.
 
 .. exampleinclude:: 
/../../providers/standard/src/airflow/providers/standard/example_dags/example_hitl_operator.py
diff --git a/airflow-core/docs/ui.rst b/airflow-core/docs/ui.rst
index 23df5ce29b3..867322f91ec 100644
--- a/airflow-core/docs/ui.rst
+++ b/airflow-core/docs/ui.rst
@@ -482,12 +482,12 @@ The Asset List shows all known assets, grouped by name. 
For each asset, you can
 Hovering over a count of Dags or tasks shows a tooltip with the full list of 
producers or consumers.
 
 .. image:: img/ui-dark/asset_list_consuming_dags.png
-  :alt: Asset Graph View (dark mode)
+  :alt: Asset List (dark mode)
 
 |
 
 .. image:: img/ui-light/asset_list_consuming_dags.png
-  :alt: Asset Graph View (light mode)
+  :alt: Asset List (light mode)
 
 Clicking on the link takes you to the Asset Graph View.
 
diff --git a/airflow-ctl/docs/cli-and-env-variables-ref.rst 
b/airflow-ctl/docs/cli-and-env-variables-ref.rst
index dd60bfd5323..0df55ae9f12 100644
--- a/airflow-ctl/docs/cli-and-env-variables-ref.rst
+++ b/airflow-ctl/docs/cli-and-env-variables-ref.rst
@@ -44,7 +44,7 @@ Environment Variables
 
     The token used to authenticate with the Airflow API. This is only
     required if you are using the Airflow API and have not set up
-    authentication using a different method. If username and password hasn't 
been used.
+    authentication using a different method, such as a username and password.
 
 .. envvar:: AIRFLOW_CLI_ENVIRONMENT
 
diff --git a/airflow-ctl/docs/howto/index.rst b/airflow-ctl/docs/howto/index.rst
index 92f92443215..a8efd3a602e 100644
--- a/airflow-ctl/docs/howto/index.rst
+++ b/airflow-ctl/docs/howto/index.rst
@@ -93,7 +93,7 @@ The token can be acquired from the Airflow API or generated 
using a username and
 Parameter Details for airflowctl auth login
 ```````````````````````````````````````````
 
-**--api-url**: This parameter is required. (e.g. ``http://localhost:8080``)
+**--api-url**: This parameter is optional. (e.g. ``http://localhost:8080``)
 The default value is ``http://localhost:8080``. Full URL of the Airflow API. 
Without any ``/api/*`` suffixes.
 If you are running the ``airflowctl`` in ``breeze`` container, it is optional.
 
@@ -101,7 +101,7 @@ If you are running the ``airflowctl`` in ``breeze`` 
container, it is optional.
 If you are setting the token via the environment variable 
``AIRFLOW_CLI_TOKEN``, you can skip using this parameter.
 
 **--username**: This parameter is optional.
-If you are not using ``--api-token`` or the environment variable 
``AIRFLOW_CLI_TOKEN``, you must provide a username to authentication along with 
``--password``.
+If you are not using ``--api-token`` or the environment variable 
``AIRFLOW_CLI_TOKEN``, you must provide a username to authenticate along with 
``--password``.
 
 **--password**: This parameter is optional.
 If you provide a username via ``--username`` this is the required password to 
authenticate.
diff --git a/airflow-ctl/docs/installation/index.rst 
b/airflow-ctl/docs/installation/index.rst
index d3f2062c297..97170bb00b7 100644
--- a/airflow-ctl/docs/installation/index.rst
+++ b/airflow-ctl/docs/installation/index.rst
@@ -30,7 +30,7 @@ Installation of airflowctl
     Installing from sources <installing-from-sources>
     Installing from PyPI <installing-from-pypi>
 
-This page describes installations options that you might use when considering 
how to install Airflow®.
+This page describes installation options that you might use when considering 
how to install Airflow®.
 Airflow consists of many components, often distributed among many physical or 
virtual machines, therefore
 installation of Airflow might be quite complex, depending on the options you 
choose.
 
diff --git a/airflow-ctl/docs/installation/installing-from-sources.rst 
b/airflow-ctl/docs/installation/installing-from-sources.rst
index ebf02712350..43ba3e5e368 100644
--- a/airflow-ctl/docs/installation/installing-from-sources.rst
+++ b/airflow-ctl/docs/installation/installing-from-sources.rst
@@ -29,14 +29,14 @@ Released packages
     the top-left of the page.
 
 The Source packages are official packages of the Apache Software Foundation - 
and the ones that you can
-use is you want to build the packages yourself from the source code and be 
sure that the provenance of
+use if you want to build the packages yourself from the source code and be 
sure that the provenance of
 the packages is verified and matches the source code from the repository and 
you can verify the
 checksums and signatures of the packages.
 
-The ``sdist`` and ``whl`` packages released are the convenience packages - of 
installation also installed from
+The ``sdist`` and ``whl`` packages released are the convenience packages - for 
installation, also built from
 the same sources and you can still verify the origin of the packages and want 
to verify checksums and
-signatures of the packages. The packages are available via the Official Apache 
Software Foundations Downloads
-`Official Apache Software Foundations Downloads <https://dlcdn.apache.org/>`_
+signatures of the packages. The packages are available via the
+`Official Apache Software Foundation Downloads <https://dlcdn.apache.org/>`_
 
 The ``|version|`` downloads of Airflow Ctl are available at:
 
@@ -47,7 +47,7 @@ The ``|version|`` downloads of Airflow Ctl are available at:
     * `Whl package for airflow-ctl distribution <{{ closer_lua_url 
}}/apache_airflow_ctl-{{ airflowctl_version }}-py3-none-any.whl>`__ (`asc <{{ 
base_url }}/apache_airflow_ctl-{{ airflowctl_version 
}}-py3-none-any.whl.asc>`__, `sha512 <{{ base_url }}/apache_airflow_ctl-{{ 
airflowctl_version }}-py3-none-any.whl.sha512>`__)
 
 If you want to install from the source code, you can download from the sources 
link above, it will contain
-a ``INSTALL`` file containing details on how you can build and install 
airflowctl.
+an ``INSTALL`` file containing details on how you can build and install 
airflowctl.
 
 Release integrity
 '''''''''''''''''
@@ -92,7 +92,7 @@ or
 
 .. code-block:: bash
 
-    pgp apache-airflow-********.asc
+    pgp apache-airflow-ctl-********.asc
 
 Example:
 
@@ -118,7 +118,7 @@ For SHA512 sum check, download the relevant ``sha512`` and 
run the following:
 
 .. code-block:: bash
 
-    shasum -a 512 apache-airflow-ctl--********  | diff - 
apache-airflow-ctl--********.sha512
+    shasum -a 512 apache-airflow-ctl-********  | diff - 
apache-airflow-ctl-********.sha512
 
 The ``SHASUM`` of the file should match the one provided in ``.sha512`` file.
 
diff --git a/airflow-ctl/docs/installation/prerequisites.rst 
b/airflow-ctl/docs/installation/prerequisites.rst
index 9d2efa3641c..4777b662476 100644
--- a/airflow-ctl/docs/installation/prerequisites.rst
+++ b/airflow-ctl/docs/installation/prerequisites.rst
@@ -18,10 +18,7 @@
 Prerequisites
 -------------
 
-airflowctl is tested with:
-
-
-The minimum memory required we recommend airflowctl to run with is 200MB, but 
the actual requirements depend
+The minimum memory we recommend for airflowctl to run with is 200MB, but the 
actual requirements depend
 wildly on the deployment options you have.
 The Keyring backend needs to be installed separately into your operating 
system. This will enhance security. See :doc:`/security` for more information.
 
diff --git a/chart/docs/extending-the-chart.rst 
b/chart/docs/extending-the-chart.rst
index e368e019c20..172dbb59acc 100644
--- a/chart/docs/extending-the-chart.rst
+++ b/chart/docs/extending-the-chart.rst
@@ -28,7 +28,7 @@ You can extend the official Airflow chart by applying the 
following steps.
 Create your custom Helm Chart
 -----------------------------
 
-First, you will need to create you own chart directory. You can do it by 
running the following command:
+First, you will need to create your own chart directory. You can do it by 
running the following command:
 
 .. code-block:: bash
 
diff --git a/chart/docs/manage-dag-files.rst b/chart/docs/manage-dag-files.rst
index d4fb3eb08cd..94e08ed13a5 100644
--- a/chart/docs/manage-dag-files.rst
+++ b/chart/docs/manage-dag-files.rst
@@ -214,7 +214,7 @@ To configure mounting Dags from private GitHub repository, 
follow below steps:
       ssh-keygen -t rsa -b 4096 -C "[email protected]"
 
 3. Add the public key to your private repo under ``Settings > Deploy keys``.
-4. Convert the private ssh key to a base64 string and save it's value.
+4. Convert the private ssh key to a base64 string and save its value.
 
    .. note::
 
diff --git a/chart/docs/parameters-ref.rst b/chart/docs/parameters-ref.rst
index e460515f0fc..78955c10a96 100644
--- a/chart/docs/parameters-ref.rst
+++ b/chart/docs/parameters-ref.rst
@@ -81,7 +81,7 @@ and install the chart:
 Deprecated Parameters
 =====================
 
-The following table contains all deprecated configuration parameters of the 
Airflow chart with their default values. All values defined in below table with 
be removed
+The following table contains all deprecated configuration parameters of the 
Airflow chart with their default values. All values defined in below table will 
be removed
 in the next Helm Chart major release.
 
 .. jinja:: params_ctx
diff --git a/chart/docs/production-guide.rst b/chart/docs/production-guide.rst
index 029a71e7478..9d5fcd88533 100644
--- a/chart/docs/production-guide.rst
+++ b/chart/docs/production-guide.rst
@@ -49,7 +49,7 @@ To provide the database credentials to Airflow, you have 2 
options - in your val
 Values file
 ^^^^^^^^^^^
 
-This is the simpler options, as the chart will create a Kubernetes Secret for 
you. However, keep in mind your credentials will be in your values file.
+This is the simpler option, as the chart will create a Kubernetes Secret for 
you. However, keep in mind your credentials will be in your values file.
 
 .. code-block:: yaml
    :caption: values.yaml
@@ -128,8 +128,8 @@ If you are using PostgreSQL as your database, you will 
likely want to enable `Pg
 Due to distributed nature of Airflow, it can open a lot of database 
connections. Using a connection pooler can significantly
 reduce the number of open connections on the database.
 
-Database credentials stored Values file
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Database credentials stored in Values file
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. code-block:: yaml
    :caption: values.yaml
@@ -138,8 +138,8 @@ Database credentials stored Values file
      enabled: true
 
 
-Database credentials stored Kubernetes Secret
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Database credentials stored in Kubernetes Secret
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 The default connection string in this case will not work. You need to modify 
accordingly the Kubernetes secret:
 
@@ -633,7 +633,7 @@ Security Context
 Constraints
 ^^^^^^^^^^^
 
-A ``Security Context Constraint`` (SCC) is a OpenShift construct that works as 
a RBAC rule. However, it targets Pods instead of users.
+A ``Security Context Constraint`` (SCC) is an OpenShift construct that works 
as an RBAC rule. However, it targets Pods instead of users.
 When defining a SCC, one can control actions and resources a POD can perform 
or access during startup and runtime.
 
 The SCCs are split into different levels or categories with the ``restricted`` 
SCC being the default one assigned to Pods.
diff --git a/chart/docs/setting-resources-for-containers.rst 
b/chart/docs/setting-resources-for-containers.rst
index 397d032052c..7c1398c62a4 100644
--- a/chart/docs/setting-resources-for-containers.rst
+++ b/chart/docs/setting-resources-for-containers.rst
@@ -50,4 +50,4 @@ For example, specifying resources for scheduler container:
          memory: 1Gi
        requests:
          cpu: 500m
-         memory: 512Gi
+         memory: 512Mi
diff --git a/task-sdk/docs/deferred-vs-async-operators.rst 
b/task-sdk/docs/deferred-vs-async-operators.rst
index a2a0df16054..9d1e1f00579 100644
--- a/task-sdk/docs/deferred-vs-async-operators.rst
+++ b/task-sdk/docs/deferred-vs-async-operators.rst
@@ -65,7 +65,7 @@ When to Use Deferred Operators
 Prefer a deferred operator when:
 
 - There is an existing deferrable operator that covers your use case (e.g., 
HttpOperator deferrable mode).
-- The task waits for a single or limited external events.
+- The task waits for a single external event or a limited number of events.
 - You want to free worker resources while waiting for triggers.
 - You don't need to loop over the same operator multiple times (e.g. 
multiplexing).
 
diff --git a/task-sdk/docs/examples.rst b/task-sdk/docs/examples.rst
index 727c15b3e5f..a3115d79a90 100644
--- a/task-sdk/docs/examples.rst
+++ b/task-sdk/docs/examples.rst
@@ -100,7 +100,7 @@ TaskFlow API Tutorial
 ---------------------
 
 This section provides a concise, code-first view. For the full tutorial and 
context,
-see the `core TaskFlow tutorial 
<../../airflow-core/docs/tutorial/taskflow.rst>`_.
+see the :doc:`core TaskFlow tutorial <apache-airflow:tutorial/taskflow>`.
 
 Step 1: Define the Dag
 ----------------------
diff --git a/task-sdk/docs/executable-bundle-spec.rst 
b/task-sdk/docs/executable-bundle-spec.rst
index 281e398cb14..856aeca94e9 100644
--- a/task-sdk/docs/executable-bundle-spec.rst
+++ b/task-sdk/docs/executable-bundle-spec.rst
@@ -78,6 +78,7 @@ for SDK users. Go SDK's ``airflow-go-pack`` is a good example.
     #!/usr/bin/env python3
 
     import hashlib
+    import pathlib
     import shutil
     import struct
 

Reply via email to