diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0c6d46643e050f2438ed07fdabe8cf41514fffd9..50dea40a2dca4c37460adcbec5367a1d4aae9a1d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -39,7 +39,7 @@ include:
     # - Minor or Major latests - `ref: 1.x-latest` or `ref: 1.0.x-latest` - Get the latest additions within a minor (mostly bugfixes) or major (bugs and new features).
     # - Fixed tag - `ref: 1.0.1` - Set the value to a known tag. This will not get any updates.
     # If you change the default value of ref, you should set the _CURL_TEMPLATES_REF variable in the variables section to be the same as set here.
-    ref: main
+    ref: $_GITLAB_TEMPLATES_REF
     file:
       - '/includes/include.drupalci.main.yml'
       # EXPERIMENTAL: For Drupal 7, remove the above line and uncomment the below.
diff --git a/automatic_updates_extensions/src/Form/UpdateReady.php b/automatic_updates_extensions/src/Form/UpdateReady.php
index e24a550fff52b08c754fa7e23604af95b5e64892..bb0f456d12890a4a845f0f6c7a09591203f0c800 100644
--- a/automatic_updates_extensions/src/Form/UpdateReady.php
+++ b/automatic_updates_extensions/src/Form/UpdateReady.php
@@ -94,7 +94,7 @@ final class UpdateReady extends UpdateFormBase {
   /**
    * {@inheritdoc}
    */
-  public function buildForm(array $form, FormStateInterface $form_state, string $stage_id = NULL) {
+  public function buildForm(array $form, FormStateInterface $form_state, ?string $stage_id = NULL) {
     try {
       $this->stage->claim($stage_id);
     }
diff --git a/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php b/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php
index c483f0c8bc66e2506ca9d18e77beebd07c8c6e81..de56238833f27c70780043442bcaba5003d2e618 100644
--- a/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php
+++ b/automatic_updates_extensions/src/Validator/UpdateReleaseValidator.php
@@ -36,7 +36,7 @@ final class UpdateReleaseValidator implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly ComposerInspector $composerInspector,
-    private readonly PathLocator $pathLocator
+    private readonly PathLocator $pathLocator,
   ) {}
 
   /**
diff --git a/automatic_updates_extensions/tests/src/Build/ModuleUpdateTest.php b/automatic_updates_extensions/tests/src/Build/ModuleUpdateTest.php
index 8813b104cb71b58b2e2bff030b8f9541b8eae22a..dbf13c73b44613f059c8b6d3cc8ebc27e80b18e2 100644
--- a/automatic_updates_extensions/tests/src/Build/ModuleUpdateTest.php
+++ b/automatic_updates_extensions/tests/src/Build/ModuleUpdateTest.php
@@ -144,7 +144,7 @@ END;
   /**
    * {@inheritdoc}
    */
-  public function copyCodebase(\Iterator $iterator = NULL, $working_dir = NULL): void {
+  public function copyCodebase(?\Iterator $iterator = NULL, $working_dir = NULL): void {
     parent::copyCodebase($iterator, $working_dir);
 
     // Ensure that we will install Drupal 9.8.0 (a fake version that should
diff --git a/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php b/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php
index 46f496d6bd51f91e4f24d3e49b8a4f942099ef27..700c2701ceb499d46cbb9921059b056ca0ef47f2 100644
--- a/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php
+++ b/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php
@@ -84,7 +84,7 @@ abstract class AutomaticUpdatesExtensionsKernelTestBase extends AutomaticUpdates
    *   (optional) The class of the event which should return the results. Must
    *   be passed if $expected_results is not empty.
    */
-  protected function assertUpdateResults(array $project_versions, array $expected_results, string $event_class = NULL): void {
+  protected function assertUpdateResults(array $project_versions, array $expected_results, ?string $event_class = NULL): void {
     $stage = $this->container->get(ExtensionUpdateStage::class);
 
     try {
diff --git a/automatic_updates_extensions/tests/src/Kernel/Validator/ForbidCoreChangesValidatorTest.php b/automatic_updates_extensions/tests/src/Kernel/Validator/ForbidCoreChangesValidatorTest.php
index a8e71ef51f8b2024ab3f1646ce5dfc2b60c13a9d..c9417032e2e7467bee2e27b2b097a7c5f204d9cd 100644
--- a/automatic_updates_extensions/tests/src/Kernel/Validator/ForbidCoreChangesValidatorTest.php
+++ b/automatic_updates_extensions/tests/src/Kernel/Validator/ForbidCoreChangesValidatorTest.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Drupal\Tests\automatic_updates_extensions\Kernel\Validator;
 
 use Drupal\automatic_updates_extensions\ExtensionUpdateStage;
diff --git a/package_manager/src/ComposerInspector.php b/package_manager/src/ComposerInspector.php
index b8e165321f9adeefc785fff907345059521363a1..0c8d099e07f850c4c226c683e80814c116d57bd7 100644
--- a/package_manager/src/ComposerInspector.php
+++ b/package_manager/src/ComposerInspector.php
@@ -69,7 +69,7 @@ class ComposerInspector implements LoggerAwareInterface {
   public function __construct(
     private readonly ComposerProcessRunnerInterface $runner,
     private readonly ComposerIsAvailableInterface $composerIsAvailable,
-    private readonly PathFactoryInterface $pathFactory
+    private readonly PathFactoryInterface $pathFactory,
   ) {
     $this->processCallback = new ProcessOutputCallback();
     $this->setLogger(new NullLogger());
@@ -456,7 +456,7 @@ class ComposerInspector implements LoggerAwareInterface {
     foreach (['composer.json', 'composer.lock'] as $filename) {
       $known_hash = $known_hashes[$working_dir][$filename] ?? '';
       // If the file doesn't exist, hash_file() will return FALSE.
-      $current_hash = @hash_file('sha256', $working_dir . DIRECTORY_SEPARATOR . $filename);
+      $current_hash = @hash_file('xxh64', $working_dir . DIRECTORY_SEPARATOR . $filename);
 
       if ($known_hash && $current_hash && hash_equals($known_hash, $current_hash)) {
         continue;
diff --git a/package_manager/src/ExecutableFinder.php b/package_manager/src/ExecutableFinder.php
index 0f786410aadc059885eb94775e95ab068d33091a..49d47f58fd9f24f96ee887d784167003ef57d9ac 100644
--- a/package_manager/src/ExecutableFinder.php
+++ b/package_manager/src/ExecutableFinder.php
@@ -27,7 +27,7 @@ final class ExecutableFinder implements ExecutableFinderInterface {
    */
   public function __construct(
     private readonly ExecutableFinderInterface $decorated,
-    private readonly ConfigFactoryInterface $configFactory
+    private readonly ConfigFactoryInterface $configFactory,
   ) {}
 
   /**
diff --git a/package_manager/src/FailureMarker.php b/package_manager/src/FailureMarker.php
index 2510c85960638904672b077395beff6ec6b9eaff..01b7a20b870630c4c9b4c44a9b66137a7198f4e2 100644
--- a/package_manager/src/FailureMarker.php
+++ b/package_manager/src/FailureMarker.php
@@ -60,10 +60,10 @@ final class FailureMarker implements EventSubscriberInterface {
    *   The stage.
    * @param \Drupal\Core\StringTranslation\TranslatableMarkup $message
    *   Failure message to be added.
-   * @param \Throwable $throwable
+   * @param \Throwable|null $throwable
    *   (optional) The throwable that caused the failure.
    */
-  public function write(StageBase $stage, TranslatableMarkup $message, \Throwable $throwable = NULL): void {
+  public function write(StageBase $stage, TranslatableMarkup $message, ?\Throwable $throwable = NULL): void {
     $data = [
       'stage_class' => get_class($stage),
       'stage_type' => $stage->getType(),
diff --git a/package_manager/src/InstalledPackage.php b/package_manager/src/InstalledPackage.php
index ad47b2b0ee37d3e63f02ba5c6f3d79304dfad68d..e0aa3fd1f7ca59303b28f7ad6bed87de684098c9 100644
--- a/package_manager/src/InstalledPackage.php
+++ b/package_manager/src/InstalledPackage.php
@@ -27,7 +27,7 @@ final class InstalledPackage {
     public readonly string $name,
     public readonly string $version,
     public readonly ?string $path,
-    public readonly string $type
+    public readonly string $type,
   ) {}
 
   /**
diff --git a/package_manager/src/PackageManagerUninstallValidator.php b/package_manager/src/PackageManagerUninstallValidator.php
index fef93da4d9506da6c3504d46aa21ec46cd553960..55991045d3c5a92c5463645b1c5f0c6c250ac528 100644
--- a/package_manager/src/PackageManagerUninstallValidator.php
+++ b/package_manager/src/PackageManagerUninstallValidator.php
@@ -61,7 +61,7 @@ final class PackageManagerUninstallValidator implements ModuleUninstallValidator
     private readonly SharedTempStoreFactory $sharedTempStoreFactory,
     private readonly TimeInterface $time,
     private readonly PathFactoryInterface $pathFactory,
-    private readonly FailureMarker $failureMarker
+    private readonly FailureMarker $failureMarker,
   ) {}
 
   /**
diff --git a/package_manager/src/PathExcluder/GitExcluder.php b/package_manager/src/PathExcluder/GitExcluder.php
index dd42d50352d3fee1101a2802756d5732c5088774..18af16cf2d614450d9f6dcd8399ca7f339b9df83 100644
--- a/package_manager/src/PathExcluder/GitExcluder.php
+++ b/package_manager/src/PathExcluder/GitExcluder.php
@@ -29,7 +29,7 @@ final class GitExcluder implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly PathLocator $pathLocator,
-    private readonly ComposerInspector $composerInspector
+    private readonly ComposerInspector $composerInspector,
   ) {}
 
   /**
diff --git a/package_manager/src/PathExcluder/SiteConfigurationExcluder.php b/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
index 0ea9f0c66cad9c8f15656afb3f68b852ff6237a1..1e7ac49deb35c907e7f0d81a57f5976341be79aa 100644
--- a/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
+++ b/package_manager/src/PathExcluder/SiteConfigurationExcluder.php
@@ -35,7 +35,7 @@ class SiteConfigurationExcluder implements EventSubscriberInterface {
   public function __construct(
     protected string $sitePath,
     private readonly PathLocator $pathLocator,
-    private readonly FileSystemInterface $fileSystem
+    private readonly FileSystemInterface $fileSystem,
   ) {}
 
   /**
diff --git a/package_manager/src/PathExcluder/SiteFilesExcluder.php b/package_manager/src/PathExcluder/SiteFilesExcluder.php
index fe9c6302eba1edde1d20a5ad2469560b2182e35c..3c50364ddfc0fa633c6c727623b9327b26b873e9 100644
--- a/package_manager/src/PathExcluder/SiteFilesExcluder.php
+++ b/package_manager/src/PathExcluder/SiteFilesExcluder.php
@@ -30,7 +30,7 @@ final class SiteFilesExcluder implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly StreamWrapperManagerInterface $streamWrapperManager,
-    private readonly Filesystem $fileSystem
+    private readonly Filesystem $fileSystem,
   ) {}
 
   /**
diff --git a/package_manager/src/StageBase.php b/package_manager/src/StageBase.php
index 9b8d57f2c602783a42bea4fc6089e575bcb159fa..fd7b62925e744fcf28244029a232d07cf1337d64 100644
--- a/package_manager/src/StageBase.php
+++ b/package_manager/src/StageBase.php
@@ -606,14 +606,14 @@ abstract class StageBase implements LoggerAwareInterface {
    *
    * @param \Drupal\package_manager\Event\StageEvent $event
    *   The event object.
-   * @param callable $on_error
+   * @param callable|null $on_error
    *   (optional) A callback function to call if an error occurs, before any
    *   exceptions are thrown.
    *
    * @throws \Drupal\package_manager\Exception\StageEventException
    *   If the event collects any validation errors.
    */
-  protected function dispatch(StageEvent $event, callable $on_error = NULL): void {
+  protected function dispatch(StageEvent $event, ?callable $on_error = NULL): void {
     try {
       $this->eventDispatcher->dispatch($event);
 
diff --git a/package_manager/src/StatusCheckTrait.php b/package_manager/src/StatusCheckTrait.php
index fa48d4bc2727ce6405335c4feeabf6ca509ef305..97c136a2870936143a1041317e92ff2fd480e3c7 100644
--- a/package_manager/src/StatusCheckTrait.php
+++ b/package_manager/src/StatusCheckTrait.php
@@ -24,18 +24,18 @@ trait StatusCheckTrait {
    *
    * @param \Drupal\package_manager\StageBase $stage
    *   The stage to run the status check for.
-   * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher
+   * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface|null $event_dispatcher
    *   (optional) The event dispatcher service.
-   * @param \Drupal\package_manager\PathLocator $path_locator
+   * @param \Drupal\package_manager\PathLocator|null $path_locator
    *   (optional) The path locator service.
-   * @param \PhpTuf\ComposerStager\API\Path\Factory\PathFactoryInterface $path_factory
+   * @param \PhpTuf\ComposerStager\API\Path\Factory\PathFactoryInterface|null $path_factory
    *   (optional) The path factory service.
    *
    * @return \Drupal\package_manager\ValidationResult[]
    *   The results of the status check. If a readiness check was also done,
    *   its results will be included.
    */
-  protected function runStatusCheck(StageBase $stage, EventDispatcherInterface $event_dispatcher = NULL, PathLocator $path_locator = NULL, PathFactoryInterface $path_factory = NULL): array {
+  protected function runStatusCheck(StageBase $stage, ?EventDispatcherInterface $event_dispatcher = NULL, ?PathLocator $path_locator = NULL, ?PathFactoryInterface $path_factory = NULL): array {
     $event_dispatcher ??= \Drupal::service('event_dispatcher');
     $path_locator ??= \Drupal::service(PathLocator::class);
     $path_factory ??= \Drupal::service(PathFactoryInterface::class);
diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php
index 45236be25cbe9e37b4dde5e601f2563f12f77ee6..59cf2a07a0280d19df6b0121bca81e2bdc87e77f 100644
--- a/package_manager/src/ValidationResult.php
+++ b/package_manager/src/ValidationResult.php
@@ -37,7 +37,7 @@ final class ValidationResult {
     public readonly int $severity,
     private array $messages,
     public readonly ?TranslatableMarkup $summary,
-    bool $assert_translatable
+    bool $assert_translatable,
   ) {
     if ($assert_translatable) {
       assert(Inspector::assertAll(fn ($message) => $message instanceof TranslatableMarkup, $messages));
diff --git a/package_manager/src/Validator/ComposerMinimumStabilityValidator.php b/package_manager/src/Validator/ComposerMinimumStabilityValidator.php
index 8791ed12ce799f06c6e8058509940e1773bdc7fe..aa5f2fe4a8b55894a18b064efd7f680f64dac05f 100644
--- a/package_manager/src/Validator/ComposerMinimumStabilityValidator.php
+++ b/package_manager/src/Validator/ComposerMinimumStabilityValidator.php
@@ -34,7 +34,7 @@ final class ComposerMinimumStabilityValidator implements EventSubscriberInterfac
    */
   public function __construct(
     private readonly PathLocator $pathLocator,
-    private readonly ComposerInspector $inspector
+    private readonly ComposerInspector $inspector,
   ) {}
 
   /**
diff --git a/package_manager/src/Validator/ComposerPatchesValidator.php b/package_manager/src/Validator/ComposerPatchesValidator.php
index c66a82f2209ffb4f7c791994537506e9eac8d32f..87348a99f50b44bdb1f266117042d2390e3a8792 100644
--- a/package_manager/src/Validator/ComposerPatchesValidator.php
+++ b/package_manager/src/Validator/ComposerPatchesValidator.php
@@ -61,7 +61,7 @@ final class ComposerPatchesValidator implements EventSubscriberInterface {
   public function __construct(
     private readonly ModuleHandlerInterface $moduleHandler,
     private readonly ComposerInspector $composerInspector,
-    private readonly PathLocator $pathLocator
+    private readonly PathLocator $pathLocator,
   ) {}
 
   /**
diff --git a/package_manager/src/Validator/EnabledExtensionsValidator.php b/package_manager/src/Validator/EnabledExtensionsValidator.php
index a3e38f7f6d868b4ced963e4f3a007b9399d56802..4fb27e7fcc9e523db9b31646bab308b7310e0216 100644
--- a/package_manager/src/Validator/EnabledExtensionsValidator.php
+++ b/package_manager/src/Validator/EnabledExtensionsValidator.php
@@ -40,7 +40,7 @@ final class EnabledExtensionsValidator implements EventSubscriberInterface {
     private readonly PathLocator $pathLocator,
     private readonly ModuleHandlerInterface $moduleHandler,
     private readonly ComposerInspector $composerInspector,
-    private readonly ThemeHandlerInterface $themeHandler
+    private readonly ThemeHandlerInterface $themeHandler,
   ) {}
 
   /**
diff --git a/package_manager/src/Validator/LockFileValidator.php b/package_manager/src/Validator/LockFileValidator.php
index f7b0fd442172e8804c1cfaf8a2e67be3701e9d9b..64cd9db2c0a57b5048ee38227dd286389475c260 100644
--- a/package_manager/src/Validator/LockFileValidator.php
+++ b/package_manager/src/Validator/LockFileValidator.php
@@ -44,7 +44,7 @@ final class LockFileValidator implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly StateInterface $state,
-    private readonly PathLocator $pathLocator
+    private readonly PathLocator $pathLocator,
   ) {}
 
   /**
@@ -67,7 +67,7 @@ final class LockFileValidator implements EventSubscriberInterface {
    */
   private function getHash(string $path): string|false {
     try {
-      return @hash_file('sha256', $path);
+      return @hash_file('xxh64', $path);
     }
     catch (\Throwable) {
       return FALSE;
diff --git a/package_manager/src/Validator/OverwriteExistingPackagesValidator.php b/package_manager/src/Validator/OverwriteExistingPackagesValidator.php
index ab9f4f7b0bd7178dd03fa22393912e75abd4c528..1f0d734bdd98d0e88929c01fdc429e275e6ad325 100644
--- a/package_manager/src/Validator/OverwriteExistingPackagesValidator.php
+++ b/package_manager/src/Validator/OverwriteExistingPackagesValidator.php
@@ -43,7 +43,7 @@ final class OverwriteExistingPackagesValidator implements EventSubscriberInterfa
    */
   public function __construct(
     private readonly PathLocator $pathLocator,
-    private readonly ComposerInspector $composerInspector
+    private readonly ComposerInspector $composerInspector,
   ) {}
 
   /**
diff --git a/package_manager/src/Validator/PendingUpdatesValidator.php b/package_manager/src/Validator/PendingUpdatesValidator.php
index b84c74ba40c8f52c894839d233b0b7af0480fbc7..597ad07845691a0eca73428be4016457a1f7b0c5 100644
--- a/package_manager/src/Validator/PendingUpdatesValidator.php
+++ b/package_manager/src/Validator/PendingUpdatesValidator.php
@@ -35,7 +35,7 @@ final class PendingUpdatesValidator implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly string $appRoot,
-    private readonly UpdateRegistry $updateRegistry
+    private readonly UpdateRegistry $updateRegistry,
   ) {}
 
   /**
diff --git a/package_manager/src/Validator/SupportedReleaseValidator.php b/package_manager/src/Validator/SupportedReleaseValidator.php
index 56f3a25ccb1a22f91f2475295ad826f73cebbe7e..e943e09191e7ede314b602b455a132640af78ddf 100644
--- a/package_manager/src/Validator/SupportedReleaseValidator.php
+++ b/package_manager/src/Validator/SupportedReleaseValidator.php
@@ -33,7 +33,7 @@ final class SupportedReleaseValidator implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly ComposerInspector $composerInspector,
-    private readonly PathLocator $pathLocator
+    private readonly PathLocator $pathLocator,
   ) {}
 
   /**
diff --git a/package_manager/tests/modules/fixture_manipulator/src/ActiveFixtureManipulator.php b/package_manager/tests/modules/fixture_manipulator/src/ActiveFixtureManipulator.php
index 889e18c8e94a41af04b1a849c8785510a2c17934..d486eb2b5aa1066ac7c8b9909634ccdf08dd3550 100644
--- a/package_manager/tests/modules/fixture_manipulator/src/ActiveFixtureManipulator.php
+++ b/package_manager/tests/modules/fixture_manipulator/src/ActiveFixtureManipulator.php
@@ -14,7 +14,7 @@ final class ActiveFixtureManipulator extends FixtureManipulator {
   /**
    * {@inheritdoc}
    */
-  public function commitChanges(string $dir = NULL): void {
+  public function commitChanges(?string $dir = NULL): void {
     if ($dir) {
       throw new \UnexpectedValueException("$dir cannot be specific for a ActiveFixtureManipulator instance");
     }
diff --git a/package_manager/tests/modules/package_manager_test_validation/src/CollectPathsToExcludeFailValidator.php b/package_manager/tests/modules/package_manager_test_validation/src/CollectPathsToExcludeFailValidator.php
index 4810682330e7299326a7a4b7f004a74e82fc3251..7273e96c196667ea1da5ecd7074d43a7ba8eaa08 100644
--- a/package_manager/tests/modules/package_manager_test_validation/src/CollectPathsToExcludeFailValidator.php
+++ b/package_manager/tests/modules/package_manager_test_validation/src/CollectPathsToExcludeFailValidator.php
@@ -24,7 +24,7 @@ class CollectPathsToExcludeFailValidator implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly ComposerInspector $composerInspector,
-    private readonly PathLocator $pathLocator
+    private readonly PathLocator $pathLocator,
   ) {}
 
   /**
diff --git a/package_manager/tests/src/Build/TemplateProjectTestBase.php b/package_manager/tests/src/Build/TemplateProjectTestBase.php
index 92f196f80df89868f0cd8fd060e15540a94e3c80..606d1082b0918dacd45924c54c57d2f0eef5c189 100644
--- a/package_manager/tests/src/Build/TemplateProjectTestBase.php
+++ b/package_manager/tests/src/Build/TemplateProjectTestBase.php
@@ -379,9 +379,8 @@ END;
 
     // Ensure Package Manager logs Composer Stager's process output to a file
     // named for the current test.
-    $this->assertArrayHasKey('BROWSERTEST_OUTPUT_DIRECTORY', $_ENV);
-    $log = $_ENV['BROWSERTEST_OUTPUT_DIRECTORY'];
-    $this->assertNotEmpty($log);
+    $log = $this->getDrupalRoot() . '/sites/simpletest/browser_output';
+    @mkdir($log, recursive: TRUE);
     $this->assertDirectoryIsWritable($log);
     // CORE_MR_ONLY:$log .= '/' . str_replace('\\', '_', static::class) . '-' . $this->name();
     // BEGIN: DELETE FROM CORE MERGE REQUEST
@@ -543,7 +542,7 @@ END;
    *
    * @param string $command
    *   The command to execute, including the `composer` invocation.
-   * @param string $working_dir
+   * @param string|null $working_dir
    *   (optional) A working directory relative to the workspace, within which to
    *   execute the command. Defaults to the workspace directory.
    * @param bool $json
@@ -553,7 +552,7 @@ END;
    * @return mixed|string|null
    *   The command's output, optionally parsed as JSON.
    */
-  protected function runComposer(string $command, string $working_dir = NULL, bool $json = FALSE) {
+  protected function runComposer(string $command, ?string $working_dir = NULL, bool $json = FALSE) {
     $process = $this->executeCommand($command, $working_dir);
     $this->assertCommandSuccessful();
 
@@ -766,7 +765,7 @@ END;
   /**
    * {@inheritdoc}
    */
-  public function copyCodebase(\Iterator $iterator = NULL, $working_dir = NULL) {
+  public function copyCodebase(?\Iterator $iterator = NULL, $working_dir = NULL) {
     // BEGIN: DELETE FROM CORE MERGE REQUEST
     // Remove this section when we drop support for Drupal 10.1.x.
     $working_path = $this->getWorkingPath($working_dir);
diff --git a/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php b/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php
index adc9f155ccddd363d3eccaec4cee9bfd6369168b..56c8984388b3d482dc72167d9fb46be296eb34a5 100644
--- a/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php
+++ b/package_manager/tests/src/Kernel/BaseRequirementsFulfilledValidatorTest.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\package_manager\Event\PreApplyEvent;
diff --git a/package_manager/tests/src/Kernel/ChangeLoggerTest.php b/package_manager/tests/src/Kernel/ChangeLoggerTest.php
index f4e4c8f5c22613d15891eca58ce1e66e08be1cff..b9aa9543fd35404c1f57b606b83df4a1b97c63dd 100644
--- a/package_manager/tests/src/Kernel/ChangeLoggerTest.php
+++ b/package_manager/tests/src/Kernel/ChangeLoggerTest.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Drupal\Tests\package_manager\Kernel;
 
 use ColinODell\PsrTestLogger\TestLogger;
diff --git a/package_manager/tests/src/Kernel/InstalledPackagesListTest.php b/package_manager/tests/src/Kernel/InstalledPackagesListTest.php
index 6a9fffd534a712a707d3b21233b004799c3931ad..d0fb6b37827a3da583851cc4390ec423a6a270c2 100644
--- a/package_manager/tests/src/Kernel/InstalledPackagesListTest.php
+++ b/package_manager/tests/src/Kernel/InstalledPackagesListTest.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\Component\Serialization\Yaml;
diff --git a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
index 81b60de0b54868d376d1fc6661f72eaf6f392669..a6d292b82a35b32759092d44f7ca472fd6b1d45e 100644
--- a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
+++ b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php
@@ -207,7 +207,7 @@ abstract class PackageManagerKernelTestBase extends KernelTestBase {
    * @return \Drupal\package_manager\StageBase
    *   The stage that was used to collect the validation results.
    */
-  protected function assertResults(array $expected_results, string $event_class = NULL): StageBase {
+  protected function assertResults(array $expected_results, ?string $event_class = NULL): StageBase {
     $stage = $this->createStage();
 
     try {
@@ -237,7 +237,7 @@ abstract class PackageManagerKernelTestBase extends KernelTestBase {
    *   (optional) The test stage to use to create the status check event. If
    *   none is provided a new stage will be created.
    */
-  protected function assertStatusCheckResults(array $expected_results, StageBase $stage = NULL): void {
+  protected function assertStatusCheckResults(array $expected_results, ?StageBase $stage = NULL): void {
     $actual_results = $this->runStatusCheck($stage ?? $this->createStage(), $this->container->get('event_dispatcher'));
     $this->assertValidationResultsEqual($expected_results, $actual_results);
   }
diff --git a/package_manager/tests/src/Kernel/TranslatableStringTest.php b/package_manager/tests/src/Kernel/TranslatableStringTest.php
index d05e3043fe23e86c400b7bead3a06332ee2d532e..4f7aaecec154843eb4b151472382009163a74678 100644
--- a/package_manager/tests/src/Kernel/TranslatableStringTest.php
+++ b/package_manager/tests/src/Kernel/TranslatableStringTest.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\package_manager\TranslatableStringAdapter;
diff --git a/package_manager/tests/src/Unit/InstalledPackageTest.php b/package_manager/tests/src/Unit/InstalledPackageTest.php
index cc3f7c6207c2f10f9193617c1d99c63a2cdd3943..5cd31fc3e0390df32a0479d86c2e434c8e08fe3c 100644
--- a/package_manager/tests/src/Unit/InstalledPackageTest.php
+++ b/package_manager/tests/src/Unit/InstalledPackageTest.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Drupal\Tests\package_manager\Unit;
 
 use Drupal\package_manager\InstalledPackage;
diff --git a/package_manager/tests/src/Unit/InstalledPackagesListTest.php b/package_manager/tests/src/Unit/InstalledPackagesListTest.php
index 3bd49e8ec5e9860bfa88903b88614223f3e38d1d..ca8c40212228ec122831d483663c0b87decacd5f 100644
--- a/package_manager/tests/src/Unit/InstalledPackagesListTest.php
+++ b/package_manager/tests/src/Unit/InstalledPackagesListTest.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Drupal\Tests\package_manager\Unit;
 
 use Drupal\package_manager\InstalledPackage;
diff --git a/scripts/src/ConverterCommand.php b/scripts/src/ConverterCommand.php
index 61d41c31bba4b3b7c8aa61e86f86339d7da3a2ee..808bbb1795bbc562708e7e1ca492fbe9c052998d 100644
--- a/scripts/src/ConverterCommand.php
+++ b/scripts/src/ConverterCommand.php
@@ -1,5 +1,7 @@
 <?php
 
+// phpcs:ignoreFile
+
 declare(strict_types=1);
 
 namespace Drupal\automatic_updates\Development;
diff --git a/src/CommandExecutor.php b/src/CommandExecutor.php
index d6c7d39fe2d58e7644f40c189bf76bb5cc3b7909..5bf22cddbeb1883798673f1422b6634126799f07 100644
--- a/src/CommandExecutor.php
+++ b/src/CommandExecutor.php
@@ -35,7 +35,7 @@ final class CommandExecutor {
     private readonly PathLocator $pathLocator,
     private readonly FileSystemInterface $fileSystem,
     private readonly TimeInterface $time,
-    private readonly string $appRoot
+    private readonly string $appRoot,
   ) {}
 
   /**
@@ -49,7 +49,7 @@ final class CommandExecutor {
    *   A process to invoke the `auto-update` terminal command in a consistent
    *   way, with the `--host` and `--site-path` options always set.
    */
-  public function create(string $arguments = NULL): Process {
+  public function create(?string $arguments = NULL): Process {
     $script = $this->appRoot . '/core/scripts/auto-update';
     // BEGIN: DELETE FROM CORE MERGE REQUEST
     $script = __DIR__ . '/../auto-update';
diff --git a/src/Form/UpdateReady.php b/src/Form/UpdateReady.php
index c815afabd69abd111f7aeff4ced70999f9277c95..62380c30fcd4b996bec9c279c638dad9cec46cee 100644
--- a/src/Form/UpdateReady.php
+++ b/src/Form/UpdateReady.php
@@ -47,7 +47,7 @@ final class UpdateReady extends UpdateFormBase {
     private readonly StateInterface $state,
     private readonly RendererInterface $renderer,
     private readonly EventDispatcherInterface $eventDispatcher,
-    private readonly ComposerInspector $composerInspector
+    private readonly ComposerInspector $composerInspector,
   ) {}
 
   /**
@@ -73,7 +73,7 @@ final class UpdateReady extends UpdateFormBase {
   /**
    * {@inheritdoc}
    */
-  public function buildForm(array $form, FormStateInterface $form_state, string $stage_id = NULL) {
+  public function buildForm(array $form, FormStateInterface $form_state, ?string $stage_id = NULL) {
     try {
       $this->stage->claim($stage_id);
     }
diff --git a/src/Validation/AdminStatusCheckMessages.php b/src/Validation/AdminStatusCheckMessages.php
index b9136e24fc2b85612448f9d3560faabb1ace7137..303d41d829c058cf49fb8f8cbe9ba06daa6edd17 100644
--- a/src/Validation/AdminStatusCheckMessages.php
+++ b/src/Validation/AdminStatusCheckMessages.php
@@ -60,7 +60,7 @@ final class AdminStatusCheckMessages implements ContainerInjectionInterface {
     private readonly CurrentRouteMatch $currentRouteMatch,
     private readonly CronUpdateRunner $runner,
     private readonly RendererInterface $renderer,
-    private readonly ConfigFactoryInterface $configFactory
+    private readonly ConfigFactoryInterface $configFactory,
   ) {}
 
   /**
diff --git a/src/Validator/StagedProjectsValidator.php b/src/Validator/StagedProjectsValidator.php
index bb8eae1c620af887ebca546e8b286436742c6c2b..6c7cab88c650acd3de75c52cf5f23adbfe7b5c42 100644
--- a/src/Validator/StagedProjectsValidator.php
+++ b/src/Validator/StagedProjectsValidator.php
@@ -34,7 +34,7 @@ final class StagedProjectsValidator implements EventSubscriberInterface {
    */
   public function __construct(
     private readonly PathLocator $pathLocator,
-    private readonly ComposerInspector $composerInspector
+    private readonly ComposerInspector $composerInspector,
   ) {}
 
   /**
diff --git a/tests/src/Build/CoreUpdateTest.php b/tests/src/Build/CoreUpdateTest.php
index 58c29e7b652237bce94a93280c59cb02c21dfc62..a2d636e626f547c49e3358a312759ddd83c30842 100644
--- a/tests/src/Build/CoreUpdateTest.php
+++ b/tests/src/Build/CoreUpdateTest.php
@@ -43,7 +43,7 @@ class CoreUpdateTest extends UpdateTestBase {
   /**
    * {@inheritdoc}
    */
-  public function copyCodebase(\Iterator $iterator = NULL, $working_dir = NULL): void {
+  public function copyCodebase(?\Iterator $iterator = NULL, $working_dir = NULL): void {
     parent::copyCodebase($iterator, $working_dir);
 
     // Ensure that we will install Drupal 9.8.0 (a fake version that should
diff --git a/tests/src/Kernel/UpdateStageTest.php b/tests/src/Kernel/UpdateStageTest.php
index 2b3d2c49be1c5022ad5155ff15fb99d75bebdf56..12a5a3b34d9b29265ddee20ff95cb3e64cc30484 100644
--- a/tests/src/Kernel/UpdateStageTest.php
+++ b/tests/src/Kernel/UpdateStageTest.php
@@ -176,7 +176,7 @@ class UpdateStageTest extends AutomaticUpdatesKernelTestBase {
    *
    * @dataProvider providerCommitException
    */
-  public function testCommitException(string $thrown_class, string $expected_class = NULL): void {
+  public function testCommitException(string $thrown_class, ?string $expected_class = NULL): void {
     $this->getStageFixtureManipulator()->setCorePackageVersion('9.8.1');
 
     $stage = $this->container->get(UpdateStage::class);