diff --git a/automatic_updates_extensions/src/Form/UpdateReady.php b/automatic_updates_extensions/src/Form/UpdateReady.php
index 9613500f1594b95b44c4334addbce313352d16e3..6a5d072c85b2f3de5cc4c6c727ec4dc1d462556b 100644
--- a/automatic_updates_extensions/src/Form/UpdateReady.php
+++ b/automatic_updates_extensions/src/Form/UpdateReady.php
@@ -179,7 +179,7 @@ final class UpdateReady extends FormBase {
       $this->displayResults($results, $this->messenger(), $this->renderer);
       // If any errors occurred, return the form early so the user cannot
       // continue.
-      if ($this->getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
+      if (ValidationResult::getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
         return $form;
       }
     }
diff --git a/automatic_updates_extensions/src/Form/UpdaterForm.php b/automatic_updates_extensions/src/Form/UpdaterForm.php
index ffc0f9281f025e9bd03c32a5e10ff009e28ac8dd..48d384629cc2fa5e1d7be5c900898d996185fb66 100644
--- a/automatic_updates_extensions/src/Form/UpdaterForm.php
+++ b/automatic_updates_extensions/src/Form/UpdaterForm.php
@@ -16,6 +16,7 @@ use Drupal\Core\Url;
 use Drupal\package_manager\Exception\ApplyFailedException;
 use Drupal\package_manager\FailureMarker;
 use Drupal\package_manager\ProjectInfo;
+use Drupal\package_manager\ValidationResult;
 use Drupal\system\SystemManager;
 use Drupal\update\UpdateManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -170,7 +171,7 @@ final class UpdaterForm extends FormBase {
       $results = $event->getResults();
     }
     $this->displayResults($results, $this->messenger(), $this->renderer);
-    $security_level = $this->getOverallSeverity($results);
+    $security_level = ValidationResult::getOverallSeverity($results);
 
     if ($update_projects && $security_level !== SystemManager::REQUIREMENT_ERROR) {
       $form['actions'] = $this->actions($form_state);
diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php
index f5c9b51c023b7eef24dc2e2ec2839ac035339b8c..b7a5ce8a14820a4ce8e59e480ac39d7173b4164d 100644
--- a/package_manager/src/ValidationResult.php
+++ b/package_manager/src/ValidationResult.php
@@ -113,4 +113,24 @@ final class ValidationResult {
     return $this->severity;
   }
 
+  /**
+   * Returns the overall severity for a set of validation results.
+   *
+   * @param \Drupal\package_manager\ValidationResult[] $results
+   *   The validation results.
+   *
+   * @return int
+   *   The overall severity of the results. Will be be one of the
+   *   SystemManager::REQUIREMENT_* constants.
+   */
+  public static function getOverallSeverity(array $results): int {
+    foreach ($results as $result) {
+      if ($result->getSeverity() === SystemManager::REQUIREMENT_ERROR) {
+        return SystemManager::REQUIREMENT_ERROR;
+      }
+    }
+    // If there were no errors, then any remaining results must be warnings.
+    return $results ? SystemManager::REQUIREMENT_WARNING : SystemManager::REQUIREMENT_OK;
+  }
+
 }
diff --git a/package_manager/tests/src/Unit/ValidationResultTest.php b/package_manager/tests/src/Unit/ValidationResultTest.php
index 67f08161fb7810beb89a1bbe669bed426a96513d..3ae93eacc8575f292d7c84f44513ad03e5de1e8d 100644
--- a/package_manager/tests/src/Unit/ValidationResultTest.php
+++ b/package_manager/tests/src/Unit/ValidationResultTest.php
@@ -25,6 +25,27 @@ class ValidationResultTest extends UnitTestCase {
     $this->assertResultValid($result, $messages, $summary, SystemManager::REQUIREMENT_WARNING);
   }
 
+  /**
+   * @covers ::getOverallSeverity
+   */
+  public function testOverallSeverity(): void {
+    // An error and a warning should be counted as an error.
+    $results = [
+      ValidationResult::createError(['Boo!']),
+      ValidationResult::createWarning(['Moo!']),
+    ];
+    $this->assertSame(SystemManager::REQUIREMENT_ERROR, ValidationResult::getOverallSeverity($results));
+
+    // If there are no results, but no errors, the results should be counted as
+    // a warning.
+    array_shift($results);
+    $this->assertSame(SystemManager::REQUIREMENT_WARNING, ValidationResult::getOverallSeverity($results));
+
+    // If there are just plain no results, we should get REQUIREMENT_OK.
+    array_shift($results);
+    $this->assertSame(SystemManager::REQUIREMENT_OK, ValidationResult::getOverallSeverity($results));
+  }
+
   /**
    * @covers ::createError
    *
diff --git a/src/Form/UpdateReady.php b/src/Form/UpdateReady.php
index 2923d72ce18791d016067a63ee5ef0913dbd7a80..d8df87994eb63a9297877decdaf9b195e9dd2346 100644
--- a/src/Form/UpdateReady.php
+++ b/src/Form/UpdateReady.php
@@ -226,7 +226,7 @@ final class UpdateReady extends FormBase {
       $this->displayResults($results, $this->messenger(), $this->renderer);
       // If any errors occurred, return the form early so the user cannot
       // continue.
-      if ($this->getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
+      if (ValidationResult::getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) {
         return $form;
       }
     }
diff --git a/src/Form/UpdaterForm.php b/src/Form/UpdaterForm.php
index 1a07169d11a4bbba46919c5d423cb8ab399af149..b169e475a2bcb54043ea1e18510fc3b760ad0c40 100644
--- a/src/Form/UpdaterForm.php
+++ b/src/Form/UpdaterForm.php
@@ -245,7 +245,7 @@ final class UpdaterForm extends FormBase {
         $release_status = $this->t('Available update');
         $type = 'update-recommended';
     }
-    $create_update_buttons = !$stage_exists && $this->getOverallSeverity($results) !== SystemManager::REQUIREMENT_ERROR;
+    $create_update_buttons = !$stage_exists && ValidationResult::getOverallSeverity($results) !== SystemManager::REQUIREMENT_ERROR;
     if ($installed_minor_release) {
       $installed_version = ExtensionVersion::createFromVersionString($project_info->getInstalledVersion());
       $form['installed_minor'] = $this->createReleaseTable(
diff --git a/src/Validation/ReadinessTrait.php b/src/Validation/ReadinessTrait.php
index 53b5842b6dd0813ae3cbf16f006f6b32b151d606..92d2f4dd0a906dd811d7425519b94f49c63bf80a 100644
--- a/src/Validation/ReadinessTrait.php
+++ b/src/Validation/ReadinessTrait.php
@@ -39,26 +39,6 @@ trait ReadinessTrait {
       $this->t('Your site does not pass some readiness checks for automatic updates. It cannot be automatically updated until further action is performed.');
   }
 
-  /**
-   * Returns the overall severity for a set of validation results.
-   *
-   * @param \Drupal\package_manager\ValidationResult[] $results
-   *   The validation results.
-   *
-   * @return int
-   *   The overall severity of the results. Will be be one of the
-   *   SystemManager::REQUIREMENT_* constants.
-   */
-  protected function getOverallSeverity(array $results): int {
-    foreach ($results as $result) {
-      if ($result->getSeverity() === SystemManager::REQUIREMENT_ERROR) {
-        return SystemManager::REQUIREMENT_ERROR;
-      }
-    }
-    // If there were no errors, then any remaining results must be warnings.
-    return $results ? SystemManager::REQUIREMENT_WARNING : SystemManager::REQUIREMENT_OK;
-  }
-
   /**
    * Adds a set of validation results to the messages.
    *
@@ -70,7 +50,7 @@ trait ReadinessTrait {
    *   The renderer service.
    */
   protected function displayResults(array $results, MessengerInterface $messenger, RendererInterface $renderer): void {
-    $severity = $this->getOverallSeverity($results);
+    $severity = ValidationResult::getOverallSeverity($results);
 
     if ($severity === SystemManager::REQUIREMENT_OK) {
       return;
diff --git a/tests/src/Kernel/ReadinessTraitTest.php b/tests/src/Kernel/ReadinessTraitTest.php
index 6fb6c3423dab5bebbcaebb69261f0a0db618fb8b..ba1937f5d20da0cec4001d2db9e8e828160d5a9f 100644
--- a/tests/src/Kernel/ReadinessTraitTest.php
+++ b/tests/src/Kernel/ReadinessTraitTest.php
@@ -18,27 +18,6 @@ class ReadinessTraitTest extends AutomaticUpdatesKernelTestBase {
   use ReadinessTrait;
   use StringTranslationTrait;
 
-  /**
-   * @covers ::getOverallSeverity
-   */
-  public function testOverallSeverity(): void {
-    // An error and a warning should be counted as an error.
-    $results = [
-      ValidationResult::createError(['Boo!']),
-      ValidationResult::createWarning(['Moo!']),
-    ];
-    $this->assertSame(SystemManager::REQUIREMENT_ERROR, $this->getOverallSeverity($results));
-
-    // If there are no results, but no errors, the results should be counted as
-    // a warning.
-    array_shift($results);
-    $this->assertSame(SystemManager::REQUIREMENT_WARNING, $this->getOverallSeverity($results));
-
-    // If there are just plain no results, we should get REQUIREMENT_OK.
-    array_shift($results);
-    $this->assertSame(SystemManager::REQUIREMENT_OK, $this->getOverallSeverity($results));
-  }
-
   /**
    * @covers ::displayResults
    */