docs: prep for 7.11.1
diff --git a/CHANGES.rst b/CHANGES.rst
index bfd0118..8fe4f9f 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -20,8 +20,12 @@
     ..  Version 9.8.1 — 2027-07-27
     ..  --------------------------
 
-Unreleased
-----------
+.. start-releases
+
+.. _changes_7-11-1:
+
+Version 7.11.1 — 2025-11-07
+---------------------------
 
 - Fix: if the measurement core defaults to "sysmon" (the default for Python
   3.14+ since v7.9.1), but sysmon can't support some aspect of your
@@ -47,13 +51,14 @@
   debug <cmd_debug>` and :ref:`cmd_run_debug` options since it's bulky and not
   very useful.
 
+- Updated the :ref:`howitworks` page to better describe the three different
+  measurement cores.
+
 .. _issue 1420: https://github.com/nedbat/coveragepy/issues/1420
 .. _issue 2064: https://github.com/nedbat/coveragepy/issues/2064
 .. _issue 2070: https://github.com/nedbat/coveragepy/issues/2070
 
 
-.. start-releases
-
 .. _changes_7-11-0:
 
 Version 7.11.0 — 2025-10-15
diff --git a/coverage/version.py b/coverage/version.py
index 992d671..9b07e6a 100644
--- a/coverage/version.py
+++ b/coverage/version.py
@@ -8,8 +8,8 @@
 
 # version_info: same semantics as sys.version_info.
 # _dev: the .devN suffix if any.
-version_info = (7, 11, 1, "alpha", 0)
-_dev = 1
+version_info = (7, 11, 1, "final", 0)
+_dev = 0
 
 
 def _make_version(
diff --git a/doc/conf.py b/doc/conf.py
index aa56f05..37cf1f1 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -68,11 +68,11 @@
 # @@@ editable
 copyright = "2009–2025, Ned Batchelder"  # pylint: disable=redefined-builtin
 # The short X.Y.Z version.
-version = "7.11.0"
+version = "7.11.1"
 # The full version, including alpha/beta/rc tags.
-release = "7.11.0"
+release = "7.11.1"
 # The date of release, in "monthname day, year" format.
-release_date = "October 15, 2025"
+release_date = "November 7, 2025"
 # @@@ end
 
 rst_epilog = f"""