diff --git a/package_manager/src/EventSubscriber/UpdateDataSubscriber.php b/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
index 5b422b4be7621b56306dfc1d7678cf7aa3633b26..8d6490bccaf05dca79140b9ff9fe7912ff7abb33 100644
--- a/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
+++ b/package_manager/src/EventSubscriber/UpdateDataSubscriber.php
@@ -8,8 +8,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Clears stale update data once staged changes have been applied.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class UpdateDataSubscriber implements EventSubscriberInterface {
+final class UpdateDataSubscriber implements EventSubscriberInterface {
 
   /**
    * The update manager service.
diff --git a/package_manager/src/ExecutableFinder.php b/package_manager/src/ExecutableFinder.php
index 05c03183d5fe0d991ffe36242d0a1d942ec2b7a7..24da0ee57c027901ba8114439e938e4a3356b7fc 100644
--- a/package_manager/src/ExecutableFinder.php
+++ b/package_manager/src/ExecutableFinder.php
@@ -9,8 +9,13 @@ use Symfony\Component\Process\ExecutableFinder as SymfonyExecutableFinder;
 
 /**
  * An executable finder which looks for executable paths in configuration.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ExecutableFinder implements ExecutableFinderInterface {
+final class ExecutableFinder implements ExecutableFinderInterface {
 
   /**
    * The decorated executable finder.
diff --git a/package_manager/src/FileSyncerFactory.php b/package_manager/src/FileSyncerFactory.php
index 98a28f545c1a14219d23e502adff595f84b7203c..6d2d928206cc068eebca4be540536e96e7219f4b 100644
--- a/package_manager/src/FileSyncerFactory.php
+++ b/package_manager/src/FileSyncerFactory.php
@@ -11,8 +11,13 @@ use Symfony\Component\Process\ExecutableFinder;
 
 /**
  * A file syncer factory which creates a file syncer according to configuration.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class FileSyncerFactory {
+final class FileSyncerFactory {
 
   /**
    * The decorated file syncer factory.
diff --git a/package_manager/src/PackageManagerServiceProvider.php b/package_manager/src/PackageManagerServiceProvider.php
index 3d74d54d355c2bd60c9115d47a3af4a8805167dc..8e28cca14c7e2fcb4e959b5afa88cbf25d9f2319 100644
--- a/package_manager/src/PackageManagerServiceProvider.php
+++ b/package_manager/src/PackageManagerServiceProvider.php
@@ -9,8 +9,13 @@ use Symfony\Component\DependencyInjection\Reference;
 
 /**
  * Defines dynamic container services for Package Manager.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PackageManagerServiceProvider extends ServiceProviderBase {
+final class PackageManagerServiceProvider extends ServiceProviderBase {
 
   /**
    * {@inheritdoc}
diff --git a/package_manager/src/PackageManagerUninstallValidator.php b/package_manager/src/PackageManagerUninstallValidator.php
index dd9ab876071ed9f8669e22c0daf1a7c3a437fb44..ac3321dcccc2fb1a20781ced339b8e32e635bc60 100644
--- a/package_manager/src/PackageManagerUninstallValidator.php
+++ b/package_manager/src/PackageManagerUninstallValidator.php
@@ -9,8 +9,13 @@ use Symfony\Component\DependencyInjection\ContainerAwareTrait;
 
 /**
  * Prevents any module from being uninstalled if update is in process.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PackageManagerUninstallValidator implements ModuleUninstallValidatorInterface, ContainerAwareInterface {
+final class PackageManagerUninstallValidator implements ModuleUninstallValidatorInterface, ContainerAwareInterface {
 
   use ContainerAwareTrait;
   use StringTranslationTrait;
diff --git a/package_manager/src/PathExcluder/GitExcluder.php b/package_manager/src/PathExcluder/GitExcluder.php
index b684a3af563d09dd6680c5d76da496d5323b81cf..c713ddd03e62833acdda7175dbc9c3b3d4ca16d2 100644
--- a/package_manager/src/PathExcluder/GitExcluder.php
+++ b/package_manager/src/PathExcluder/GitExcluder.php
@@ -11,8 +11,13 @@ use Symfony\Component\Finder\Finder;
 
 /**
  * Excludes .git directories from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class GitExcluder implements EventSubscriberInterface {
+final class GitExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/PathExcluder/SiteConfigurationExcluder.php b/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
index 68aa30831e278972fe7916ea0ec80bf7723e3dc3..9b626df17e0be6514da5e165533e0297a71c0d48 100644
--- a/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
+++ b/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
@@ -10,6 +10,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes site configuration files from staging areas.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class SiteConfigurationExcluder implements EventSubscriberInterface {
 
diff --git a/package_manager/src/PathExcluder/SiteFilesExcluder.php b/package_manager/src/PathExcluder/SiteFilesExcluder.php
index b15870195c86849b760d89b3de48da2e0a2b4812..13b8ac640beb62561279b64909a5edd3cdfec49e 100644
--- a/package_manager/src/PathExcluder/SiteFilesExcluder.php
+++ b/package_manager/src/PathExcluder/SiteFilesExcluder.php
@@ -13,8 +13,13 @@ use Symfony\Component\Filesystem\Filesystem;
 
 /**
  * Excludes public and private files from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class SiteFilesExcluder implements EventSubscriberInterface {
+final class SiteFilesExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php b/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php
index e182383c511d97df561adc2390d829998a2cddd0..cd8ba76f3df6e90beb36f10b3c95238306b4ad32 100644
--- a/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php
+++ b/package_manager/src/PathExcluder/SqliteDatabaseExcluder.php
@@ -11,6 +11,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes SQLite database files from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class SqliteDatabaseExcluder implements EventSubscriberInterface {
 
diff --git a/package_manager/src/PathExcluder/TestSiteExcluder.php b/package_manager/src/PathExcluder/TestSiteExcluder.php
index 3fbae39016fd9da2862c950da49f52d0ddb7a6c9..d796e07e5c0fe3a3c942b3f13d84d6128a878f8d 100644
--- a/package_manager/src/PathExcluder/TestSiteExcluder.php
+++ b/package_manager/src/PathExcluder/TestSiteExcluder.php
@@ -10,8 +10,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes 'sites/simpletest' from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class TestSiteExcluder implements EventSubscriberInterface {
+final class TestSiteExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/PathExcluder/VendorHardeningExcluder.php b/package_manager/src/PathExcluder/VendorHardeningExcluder.php
index 11248732bd2091d0110561b6158d54100b6d23ba..e54ff986f51f3f7022ad14abd26c7973e6425ff4 100644
--- a/package_manager/src/PathExcluder/VendorHardeningExcluder.php
+++ b/package_manager/src/PathExcluder/VendorHardeningExcluder.php
@@ -10,8 +10,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * Excludes vendor hardening files from staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class VendorHardeningExcluder implements EventSubscriberInterface {
+final class VendorHardeningExcluder implements EventSubscriberInterface {
 
   use PathExclusionsTrait;
 
diff --git a/package_manager/src/ProcessFactory.php b/package_manager/src/ProcessFactory.php
index 7530b3721176982e94d01071eaf12e1a6bb7897d..e3cfd03514c523f8174fc3fbf19ff12da3973640 100644
--- a/package_manager/src/ProcessFactory.php
+++ b/package_manager/src/ProcessFactory.php
@@ -10,6 +10,11 @@ use Symfony\Component\Process\Process;
 
 /**
  * Defines a process factory which sets the COMPOSER_HOME environment variable.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 final class ProcessFactory implements ProcessFactoryInterface {
 
diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php
index 7651548eddad405436595452917caaa1e1203d27..ddfa728715c5718705d72232937808799a6761d4 100644
--- a/package_manager/src/ValidationResult.php
+++ b/package_manager/src/ValidationResult.php
@@ -8,7 +8,7 @@ use Drupal\system\SystemManager;
 /**
  * A value object to contain the results of a validation.
  */
-class ValidationResult {
+final class ValidationResult {
 
   /**
    * A succinct summary of the results.
diff --git a/package_manager/src/Validator/ComposerExecutableValidator.php b/package_manager/src/Validator/ComposerExecutableValidator.php
index b6252e5bf887acf5da194df5d92f4ed982abed35..3600876e41bf4f66c7802f61d40a8db987c492dc 100644
--- a/package_manager/src/Validator/ComposerExecutableValidator.php
+++ b/package_manager/src/Validator/ComposerExecutableValidator.php
@@ -15,8 +15,13 @@ use PhpTuf\ComposerStager\Domain\Service\ProcessRunner\ComposerRunnerInterface;
 
 /**
  * Validates the Composer executable is the correct version.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ComposerExecutableValidator implements PreOperationStageValidatorInterface, ProcessOutputCallbackInterface {
+final class ComposerExecutableValidator implements PreOperationStageValidatorInterface, ProcessOutputCallbackInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/ComposerSettingsValidator.php b/package_manager/src/Validator/ComposerSettingsValidator.php
index 0ad1c7c254f7b92923b39d74b8c85567e351d3ca..d906b572bf4a8538968fe28731b5f77148c3e851 100644
--- a/package_manager/src/Validator/ComposerSettingsValidator.php
+++ b/package_manager/src/Validator/ComposerSettingsValidator.php
@@ -9,8 +9,13 @@ use Drupal\package_manager\Event\PreOperationStageEvent;
 
 /**
  * Validates certain Composer settings.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ComposerSettingsValidator implements PreOperationStageValidatorInterface {
+final class ComposerSettingsValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/DiskSpaceValidator.php b/package_manager/src/Validator/DiskSpaceValidator.php
index 7a0a97dc4e7f60703fbb64226a3459541b448e18..31d78ddf621f26c9cfdf290f75117ce45b4604f5 100644
--- a/package_manager/src/Validator/DiskSpaceValidator.php
+++ b/package_manager/src/Validator/DiskSpaceValidator.php
@@ -12,6 +12,11 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Validates that there is enough free disk space to do staging operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class DiskSpaceValidator implements PreOperationStageValidatorInterface {
 
diff --git a/package_manager/src/Validator/LockFileValidator.php b/package_manager/src/Validator/LockFileValidator.php
index a1676f3e74b218684d44e82fe86e9a47a1cb7483..819a6589b059e545c2a106dd40a34a025d78e8c1 100644
--- a/package_manager/src/Validator/LockFileValidator.php
+++ b/package_manager/src/Validator/LockFileValidator.php
@@ -14,8 +14,13 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Checks that the active lock file is unchanged during stage operations.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class LockFileValidator implements PreOperationStageValidatorInterface {
+final class LockFileValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/MultisiteValidator.php b/package_manager/src/Validator/MultisiteValidator.php
index b739c0a0b0021bb9e679da6b936127f2402a1669..720f4d3f1b17d93b03d5535eea76d83454055fa1 100644
--- a/package_manager/src/Validator/MultisiteValidator.php
+++ b/package_manager/src/Validator/MultisiteValidator.php
@@ -10,8 +10,13 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Checks that the current site is not part of a multisite.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class MultisiteValidator implements PreOperationStageValidatorInterface {
+final class MultisiteValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/PendingUpdatesValidator.php b/package_manager/src/Validator/PendingUpdatesValidator.php
index 5dd4f300e2aaf262a487d50971fb20d2c2c180da..afd76227619f49407713b407ab2785b003cd9127 100644
--- a/package_manager/src/Validator/PendingUpdatesValidator.php
+++ b/package_manager/src/Validator/PendingUpdatesValidator.php
@@ -11,8 +11,13 @@ use Drupal\Core\Url;
 
 /**
  * Validates that there are no pending database updates.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PendingUpdatesValidator implements PreOperationStageValidatorInterface {
+final class PendingUpdatesValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/SettingsValidator.php b/package_manager/src/Validator/SettingsValidator.php
index 19192334f97c0731ba8787064aadc702d18ff866..607e2008922f15d45cf13ddef7a9da75a6798c15 100644
--- a/package_manager/src/Validator/SettingsValidator.php
+++ b/package_manager/src/Validator/SettingsValidator.php
@@ -10,8 +10,13 @@ use Drupal\package_manager\Event\PreOperationStageEvent;
 
 /**
  * Checks that Drupal's settings are valid for Package Manager.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class SettingsValidator implements PreOperationStageValidatorInterface {
+final class SettingsValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/package_manager/src/Validator/SymlinkValidator.php b/package_manager/src/Validator/SymlinkValidator.php
index c90190b1a20bd55b5d8ff96e64b2e85cec09682d..1e9fd18627f8da14da49daf9c7665bf90a0e054b 100644
--- a/package_manager/src/Validator/SymlinkValidator.php
+++ b/package_manager/src/Validator/SymlinkValidator.php
@@ -14,6 +14,11 @@ use Symfony\Component\Finder\Finder;
  *
  * @todo Remove this when Composer Stager's PHP file copier handles symlinks
  *   without issues.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class SymlinkValidator implements PreOperationStageValidatorInterface {
 
diff --git a/package_manager/src/Validator/WritableFileSystemValidator.php b/package_manager/src/Validator/WritableFileSystemValidator.php
index 4b60c0cb7b5a10de6570800dc4a1fe1e33f8c2e0..4b4ce66add001525f5c0c3d800a9895fd0bf4b07 100644
--- a/package_manager/src/Validator/WritableFileSystemValidator.php
+++ b/package_manager/src/Validator/WritableFileSystemValidator.php
@@ -10,6 +10,11 @@ use Drupal\package_manager\PathLocator;
 
 /**
  * Checks that the file system is writable.
+ *
+ * @internal
+ *   This is an internal part of Package Manager and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class WritableFileSystemValidator implements PreOperationStageValidatorInterface {
 
diff --git a/src/BatchProcessor.php b/src/BatchProcessor.php
index 8b94d08c61e050bbd153efe9fda99f9703db7cd0..e37fafce452a77e78e54de73724102c0087a9230 100644
--- a/src/BatchProcessor.php
+++ b/src/BatchProcessor.php
@@ -9,8 +9,13 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
 
 /**
  * A batch processor for updates.
+ *
+ * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class BatchProcessor {
+final class BatchProcessor {
 
   /**
    * The session key under which the stage ID is stored.
diff --git a/src/Controller/ReadinessCheckerController.php b/src/Controller/ReadinessCheckerController.php
index fbc14ba7f389f0c292c9d57d3c7d20c977c8262b..e6a13f0f117968c61de4fd8737baec1df9370820 100644
--- a/src/Controller/ReadinessCheckerController.php
+++ b/src/Controller/ReadinessCheckerController.php
@@ -16,7 +16,7 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
  * @internal
  *   Controller classes are internal.
  */
-class ReadinessCheckerController extends ControllerBase {
+final class ReadinessCheckerController extends ControllerBase {
 
   use ReadinessTrait;
 
diff --git a/src/Controller/UpdateController.php b/src/Controller/UpdateController.php
index a15c18424e91bb56ecb8e592da5d344a9e6f637b..e3ad0625f1a8693892d430fd86026a702df7e86b 100644
--- a/src/Controller/UpdateController.php
+++ b/src/Controller/UpdateController.php
@@ -18,7 +18,7 @@ use Symfony\Component\HttpFoundation\Request;
  * @internal
  *   Controller classes are internal.
  */
-class UpdateController extends ControllerBase {
+final class UpdateController extends ControllerBase {
 
   /**
    * The pending updates validator.
diff --git a/src/EventSubscriber/ConfigSubscriber.php b/src/EventSubscriber/ConfigSubscriber.php
index de06544a536b7edd0c40adaa76aa09cc8cdea912..4d8781f42b59c2a279816bc9dee182e941219256 100644
--- a/src/EventSubscriber/ConfigSubscriber.php
+++ b/src/EventSubscriber/ConfigSubscriber.php
@@ -11,8 +11,13 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  *
  * @todo Move this functionality into ReadinessValidationManager when
  *   https://www.drupal.org/i/3275317#comment-14482995 is resolved.
+ *
+ * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ConfigSubscriber implements EventSubscriberInterface {
+final class ConfigSubscriber implements EventSubscriberInterface {
 
   /**
    * {@inheritdoc}
diff --git a/src/Form/UpdateReady.php b/src/Form/UpdateReady.php
index abc4caa53feb52df996ddf3de7a6e20723c65157..2fa0ca77f4f09ef867211fd33e4ef1c770aeb97d 100644
--- a/src/Form/UpdateReady.php
+++ b/src/Form/UpdateReady.php
@@ -19,9 +19,9 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  * Defines a form to commit staged updates.
  *
  * @internal
- *   Form classes are internal.
+ *   Form classes are internal and the form structure may change at any time.
  */
-class UpdateReady extends FormBase {
+final class UpdateReady extends FormBase {
 
   /**
    * The updater service.
diff --git a/src/LegacyVersionUtility.php b/src/LegacyVersionUtility.php
index f6b2a553449c031b79380d64cecd2013331407ff..6536f5db55b703ec97d6480d5ab061b89e3ab1c2 100644
--- a/src/LegacyVersionUtility.php
+++ b/src/LegacyVersionUtility.php
@@ -8,8 +8,8 @@ use Drupal\Core\Extension\ExtensionVersion;
  * A utility class for dealing with legacy version numbers.
  *
  * @internal
- *    This is an internal utility class that could change in any release and
- *    should not be used by external code.
+ *   This is an internal utility class that could be changed or removed in any
+ *   release and should not be used by external code.
  */
 final class LegacyVersionUtility {
 
diff --git a/src/ProjectInfo.php b/src/ProjectInfo.php
index 075940b791eaddc92428654c9dfe066e5a96f59e..c725d7ca39aafe5c33f6707b2e23794dd2ffb466 100644
--- a/src/ProjectInfo.php
+++ b/src/ProjectInfo.php
@@ -11,9 +11,11 @@ use Drupal\update\UpdateManagerInterface;
  * Defines a class for retrieving project information from Update module.
  *
  * @internal
- *   External code should use the Update API directly.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should use the Update API
+ *   directly.
  */
-class ProjectInfo {
+final class ProjectInfo {
 
   /**
    * The project name.
diff --git a/src/ReleaseChooser.php b/src/ReleaseChooser.php
index 8bd89ac1eaf2125850ae30f6bd29dea37f5d72ff..04050af1aa02994157290f910539b1b433ea53c7 100644
--- a/src/ReleaseChooser.php
+++ b/src/ReleaseChooser.php
@@ -10,7 +10,7 @@ use Drupal\Core\Extension\ExtensionVersion;
 /**
  * Defines a class to choose a release of Drupal core to update to.
  */
-class ReleaseChooser {
+final class ReleaseChooser {
 
   use VersionParsingTrait;
 
diff --git a/src/Routing/RouteSubscriber.php b/src/Routing/RouteSubscriber.php
index 5cc5465d577a6654f73b4ce9c2f2e0031d13d2e9..de0069bf430d988d7bcd7b4bc99bb97d9b478917 100644
--- a/src/Routing/RouteSubscriber.php
+++ b/src/Routing/RouteSubscriber.php
@@ -9,8 +9,11 @@ use Symfony\Component\Routing\RouteCollection;
  * Modifies route definitions.
  *
  * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class RouteSubscriber extends RouteSubscriberBase {
+final class RouteSubscriber extends RouteSubscriberBase {
 
   /**
    * {@inheritdoc}
diff --git a/src/Validation/ReadinessTrait.php b/src/Validation/ReadinessTrait.php
index a01906bd5450e2f3b82b4aac7fd4e6c37e87192d..53b5842b6dd0813ae3cbf16f006f6b32b151d606 100644
--- a/src/Validation/ReadinessTrait.php
+++ b/src/Validation/ReadinessTrait.php
@@ -12,7 +12,7 @@ use Drupal\system\SystemManager;
  * Common methods for working with readiness checkers.
  *
  * @internal
- *   This class implements logic to output the messages from readiness checkers
+ *   This trait implements logic to output the messages from readiness checkers
  *   on admin pages. It may be changed or removed at any time without warning
  *   and should not be used by external code.
  */
diff --git a/src/Validation/ReadinessValidationManager.php b/src/Validation/ReadinessValidationManager.php
index f6292bd5cd3db999edf766c5d46814154475cda6..3486bcddc739f1e17bf603065e1dd92755861027 100644
--- a/src/Validation/ReadinessValidationManager.php
+++ b/src/Validation/ReadinessValidationManager.php
@@ -14,7 +14,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 /**
  * Defines a manager to run readiness validation.
  */
-class ReadinessValidationManager implements EventSubscriberInterface {
+final class ReadinessValidationManager implements EventSubscriberInterface {
 
   /**
    * The key/value expirable storage.
@@ -44,7 +44,6 @@ class ReadinessValidationManager implements EventSubscriberInterface {
    */
   protected $resultsTimeToLive;
 
-
   /**
    * The updater service.
    *
diff --git a/src/Validator/CronFrequencyValidator.php b/src/Validator/CronFrequencyValidator.php
index e431158047e2d46e9be358f1225e518e60cad280..d3c34655733faf20d6a7441d13af926dafc3e356 100644
--- a/src/Validator/CronFrequencyValidator.php
+++ b/src/Validator/CronFrequencyValidator.php
@@ -17,8 +17,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates that cron runs frequently enough to perform automatic updates.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 class CronFrequencyValidator implements EventSubscriberInterface {
 
diff --git a/src/Validator/PackageManagerReadinessCheck.php b/src/Validator/PackageManagerReadinessCheck.php
index 960e97b2ea896c16b32af760e1078e17eac98199..c26f05cd6b2f5dd485bef51c104cdb6bee9d3342 100644
--- a/src/Validator/PackageManagerReadinessCheck.php
+++ b/src/Validator/PackageManagerReadinessCheck.php
@@ -14,10 +14,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * subscribe to.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class PackageManagerReadinessCheck implements EventSubscriberInterface {
+final class PackageManagerReadinessCheck implements EventSubscriberInterface {
 
   /**
    * The validator to run.
diff --git a/src/Validator/ScaffoldFilePermissionsValidator.php b/src/Validator/ScaffoldFilePermissionsValidator.php
index 307ccb940cfbe6bc5d07197d09d6709ed30f4fde..681ca0c2ef8437fcf43474bf20cc9fb386fa78fe 100644
--- a/src/Validator/ScaffoldFilePermissionsValidator.php
+++ b/src/Validator/ScaffoldFilePermissionsValidator.php
@@ -13,8 +13,13 @@ use Drupal\package_manager\Validator\PreOperationStageValidatorInterface;
 
 /**
  * Validates that scaffold files have appropriate permissions.
+ *
+ * @internal
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class ScaffoldFilePermissionsValidator implements PreOperationStageValidatorInterface {
+final class ScaffoldFilePermissionsValidator implements PreOperationStageValidatorInterface {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/StagedDatabaseUpdateValidator.php b/src/Validator/StagedDatabaseUpdateValidator.php
index 647d9c0cf4585b363469e3cb0bab7ce3b9b7c3b0..d7ed7ecf4c635ec4baa6cb2bd96a8126b4f5b78e 100644
--- a/src/Validator/StagedDatabaseUpdateValidator.php
+++ b/src/Validator/StagedDatabaseUpdateValidator.php
@@ -17,10 +17,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates that there are no database updates in a staged update.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class StagedDatabaseUpdateValidator implements EventSubscriberInterface {
+final class StagedDatabaseUpdateValidator implements EventSubscriberInterface {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/StagedProjectsValidator.php b/src/Validator/StagedProjectsValidator.php
index 44e130bf30891a782e4b3392989d5e7d3dd51818..1e379c1a06168fb611cb845d3e53f8d7910208d2 100644
--- a/src/Validator/StagedProjectsValidator.php
+++ b/src/Validator/StagedProjectsValidator.php
@@ -13,8 +13,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates the staged Drupal projects.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 final class StagedProjectsValidator implements EventSubscriberInterface {
 
diff --git a/src/Validator/VersionPolicy/ForbidDevSnapshot.php b/src/Validator/VersionPolicy/ForbidDevSnapshot.php
index ca6842a650d6e35de57d6d3b0cbbb998ee2fd7fe..6e5fa5b5d4021eb883557af09e74cc5b53f47da4 100644
--- a/src/Validator/VersionPolicy/ForbidDevSnapshot.php
+++ b/src/Validator/VersionPolicy/ForbidDevSnapshot.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class ForbidDevSnapshot {
+final class ForbidDevSnapshot {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/ForbidDowngrade.php b/src/Validator/VersionPolicy/ForbidDowngrade.php
index 93f05e0fc9e83311ac14a225d869bd6d997639e8..c71fc54fbeabfd78a5954610032bb4a8c476a256 100644
--- a/src/Validator/VersionPolicy/ForbidDowngrade.php
+++ b/src/Validator/VersionPolicy/ForbidDowngrade.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class ForbidDowngrade {
+final class ForbidDowngrade {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/ForbidMinorUpdates.php b/src/Validator/VersionPolicy/ForbidMinorUpdates.php
index 83e5cfe6de0965637587ab974942acf703d84e08..7b030aa84f2e840ccb37fc6522f0364664b9ae8d 100644
--- a/src/Validator/VersionPolicy/ForbidMinorUpdates.php
+++ b/src/Validator/VersionPolicy/ForbidMinorUpdates.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class ForbidMinorUpdates {
+final class ForbidMinorUpdates {
 
   use StringTranslationTrait;
   use VersionParsingTrait;
diff --git a/src/Validator/VersionPolicy/MajorVersionMatch.php b/src/Validator/VersionPolicy/MajorVersionMatch.php
index 378251ac1846dc03b875ecaca87b56fe4818562a..56828ab1808a508b6f846cd2ecff47d91578daf5 100644
--- a/src/Validator/VersionPolicy/MajorVersionMatch.php
+++ b/src/Validator/VersionPolicy/MajorVersionMatch.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class MajorVersionMatch {
+final class MajorVersionMatch {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/MinorUpdatesEnabled.php b/src/Validator/VersionPolicy/MinorUpdatesEnabled.php
index 6ce2042cab8dfc84745f5d3bfbb3eeb13f091d48..54f848c8b60ec2a4df4790a5b665895c144abfc0 100644
--- a/src/Validator/VersionPolicy/MinorUpdatesEnabled.php
+++ b/src/Validator/VersionPolicy/MinorUpdatesEnabled.php
@@ -16,7 +16,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class MinorUpdatesEnabled implements ContainerInjectionInterface {
+final class MinorUpdatesEnabled implements ContainerInjectionInterface {
 
   use StringTranslationTrait;
   use VersionParsingTrait;
diff --git a/src/Validator/VersionPolicy/StableReleaseInstalled.php b/src/Validator/VersionPolicy/StableReleaseInstalled.php
index f1f019bbce9c6f3af3f1a3d4d1a8a3c39ea79f11..a41012d64a02803c13e26c74b1e0628687b7862c 100644
--- a/src/Validator/VersionPolicy/StableReleaseInstalled.php
+++ b/src/Validator/VersionPolicy/StableReleaseInstalled.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class StableReleaseInstalled {
+final class StableReleaseInstalled {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/SupportedBranchInstalled.php b/src/Validator/VersionPolicy/SupportedBranchInstalled.php
index b3f16a020460c91b2a94626f515b60907f064019..247793a1a007ae4a0599ce765b9c7a13cce19a6e 100644
--- a/src/Validator/VersionPolicy/SupportedBranchInstalled.php
+++ b/src/Validator/VersionPolicy/SupportedBranchInstalled.php
@@ -17,7 +17,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class SupportedBranchInstalled implements ContainerInjectionInterface {
+final class SupportedBranchInstalled implements ContainerInjectionInterface {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/TargetSecurityRelease.php b/src/Validator/VersionPolicy/TargetSecurityRelease.php
index 61d2f0e3f45eee69e2b5a80e596e12dc146881ec..a9e71b3229074c6dc5b6b9bb8a1886f85d9c10c5 100644
--- a/src/Validator/VersionPolicy/TargetSecurityRelease.php
+++ b/src/Validator/VersionPolicy/TargetSecurityRelease.php
@@ -12,7 +12,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class TargetSecurityRelease {
+final class TargetSecurityRelease {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/TargetVersionInstallable.php b/src/Validator/VersionPolicy/TargetVersionInstallable.php
index 586dd2a8f117fd4c12dad6a40279df32de934b26..6727cc1a111f0b62f09d5beb62c21e1e4e6b5b98 100644
--- a/src/Validator/VersionPolicy/TargetVersionInstallable.php
+++ b/src/Validator/VersionPolicy/TargetVersionInstallable.php
@@ -12,7 +12,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class TargetVersionInstallable {
+final class TargetVersionInstallable {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicy/TargetVersionStable.php b/src/Validator/VersionPolicy/TargetVersionStable.php
index 3e0c9de1e8331e7a9ee3fd2f59b3fbe3dc01cd35..d55111ce5d0ceaafa8fff0c1e8779ab3093d92cc 100644
--- a/src/Validator/VersionPolicy/TargetVersionStable.php
+++ b/src/Validator/VersionPolicy/TargetVersionStable.php
@@ -13,7 +13,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   Drupal core. It may be changed or removed at any time without warning.
  *   External code should not interact with this class.
  */
-class TargetVersionStable {
+final class TargetVersionStable {
 
   use StringTranslationTrait;
 
diff --git a/src/Validator/VersionPolicyValidator.php b/src/Validator/VersionPolicyValidator.php
index b8f2feddfc4466722165cc46f74734ac24a661a7..e7bed65b642eb173cde95b12d4d41ef3b525bbe6 100644
--- a/src/Validator/VersionPolicyValidator.php
+++ b/src/Validator/VersionPolicyValidator.php
@@ -26,8 +26,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Validates the installed and target versions of Drupal before an update.
  *
  * @internal
- *   This class is an internal part of the module's update handling and should
- *   not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
 final class VersionPolicyValidator implements EventSubscriberInterface {
 
diff --git a/src/Validator/XdebugValidator.php b/src/Validator/XdebugValidator.php
index ef46b7c200c0f559fc87262aef316028c4281705..84fa455bb16a593a1dbb569ee415901962be6eaf 100644
--- a/src/Validator/XdebugValidator.php
+++ b/src/Validator/XdebugValidator.php
@@ -10,10 +10,11 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * Flags a warning if Xdebug is enabled.
  *
  * @internal
- *   This class is an internal part of the module's update handling and
- *   should not be used by external code.
+ *   This is an internal part of Automatic Updates and may be changed or removed
+ *   at any time without warning. External code should not interact with this
+ *   class.
  */
-class XdebugValidator implements EventSubscriberInterface {
+final class XdebugValidator implements EventSubscriberInterface {
 
   use StringTranslationTrait;