From 23244a7d9096236b2025bed7b155cf58cab0936d Mon Sep 17 00:00:00 2001
From: catch <6915-catch@users.noreply.drupalcode.org>
Date: Mon, 31 Mar 2025 12:03:51 +0100
Subject: [PATCH 01/13] Raise execution time to 30.

---
 .../package_manager/tests/src/Build/TemplateProjectTestBase.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
index 16cd486ad750..cbdd3f0ab88f 100644
--- a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
+++ b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
@@ -60,7 +60,7 @@ abstract class TemplateProjectTestBase extends QuickStartTestBase {
    *
    * @var int
    */
-  protected const MAX_EXECUTION_TIME = 20;
+  protected const MAX_EXECUTION_TIME = 30;
 
   /**
    * {@inheritdoc}
-- 
GitLab


From a45486dfcecabe1d0658075c6268b66d2b238322 Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 08:43:38 +1000
Subject: [PATCH 02/13] Assert response content

---
 .../modules/package_manager_test_api/src/ApiController.php     | 2 +-
 .../tests/src/Build/TemplateProjectTestBase.php                | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php b/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
index d2839be3947c..b51c3544167e 100644
--- a/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
+++ b/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
@@ -91,7 +91,7 @@ public function run(Request $request): RedirectResponse {
   public function finish(string $id): Response {
     $this->stage->claim($id)->postApply();
     $this->stage->destroy();
-    return new Response();
+    return new Response('Finished');
   }
 
   /**
diff --git a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
index cbdd3f0ab88f..ff4d47f486db 100644
--- a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
+++ b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
@@ -719,6 +719,9 @@ protected function makePackageManagerTestApiRequest(string $url, array $query_da
       $this->serverErrorLog,
     );
     $this->assertSame(200, $session->getStatusCode(), $message);
+    // Sometimes we get a 200 response after a PHP timeout or OOM error, so we
+    // also check the page content to ensure it's what we expect.
+    $this->assertSame('Finished', $session->getPage()->getText());
   }
 
   /**
-- 
GitLab


From fdb0368bbaee3984fbe3d080a59296945faa1ae8 Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 08:52:28 +1000
Subject: [PATCH 03/13] Revert MAX_EXECUTION_TIME to see if we catch any

---
 .../package_manager/tests/src/Build/TemplateProjectTestBase.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
index ff4d47f486db..3023d4aa56cb 100644
--- a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
+++ b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
@@ -60,7 +60,7 @@ abstract class TemplateProjectTestBase extends QuickStartTestBase {
    *
    * @var int
    */
-  protected const MAX_EXECUTION_TIME = 30;
+  protected const MAX_EXECUTION_TIME = 20;
 
   /**
    * {@inheritdoc}
-- 
GitLab


From 10ab5d6d317deaf0c44d0d648cfca5f6a7eefde5 Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 13:36:32 +1000
Subject: [PATCH 04/13] Patch composer-stager

---
 composer-stager-414.patch                     | 29 +++++++++++
 composer.json                                 |  9 +++-
 composer.lock                                 | 50 ++++++++++++++++++-
 .../Metapackage/DevDependencies/composer.json |  1 +
 .../PinnedDevDependencies/composer.json       |  1 +
 5 files changed, 88 insertions(+), 2 deletions(-)
 create mode 100644 composer-stager-414.patch

diff --git a/composer-stager-414.patch b/composer-stager-414.patch
new file mode 100644
index 000000000000..38172203d3d4
--- /dev/null
+++ b/composer-stager-414.patch
@@ -0,0 +1,29 @@
+diff --git a/src/Internal/FileSyncer/Service/FileSyncer.php b/src/Internal/FileSyncer/Service/FileSyncer.php
+index 25a9cfff..129f7413 100644
+--- a/src/Internal/FileSyncer/Service/FileSyncer.php
++++ b/src/Internal/FileSyncer/Service/FileSyncer.php
+@@ -55,7 +55,7 @@ public function sync(
+         $this->assertSourceAndDestinationAreDifferent($source, $destination);
+         $this->assertSourceIsValid($source);
+
+-        $this->runCommand($exclusions, $source, $destination, $callback);
++        $this->runCommand($exclusions, $source, $destination, $callback, $timeout);
+     }
+
+     /** @infection-ignore-all This only makes any difference on Windows, whereas Infection is only run on Linux. */
+@@ -113,6 +113,7 @@ private function runCommand(
+         PathInterface $source,
+         PathInterface $destination,
+         ?OutputCallbackInterface $callback,
++        int $timeout,
+     ): void {
+         $this->ensureDestinationDirectoryExists($destination);
+         $command = $this->buildCommand($source, $destination, $exclusions);
+@@ -123,6 +124,7 @@ private function runCommand(
+                 $this->pathFactory->create('/', $source),
+                 [],
+                 $callback,
++                $timeout,
+             );
+         } catch (ExceptionInterface $e) {
+             throw new IOException($e->getTranslatableMessage(), 0, $e);
diff --git a/composer.json b/composer.json
index 659cbf36d8f3..1f6460323e3f 100644
--- a/composer.json
+++ b/composer.json
@@ -19,6 +19,7 @@
         "behat/mink-browserkit-driver": "^2.2",
         "colinodell/psr-testlogger": "^1.2",
         "composer/composer": "^2.8.1",
+        "cweagans/composer-patches": "^1.7",
         "drupal/coder": "^8.3.10",
         "justinrainbow/json-schema": "^5.2",
         "lullabot/mink-selenium2-driver": "^1.7.3",
@@ -65,10 +66,16 @@
             "drupal/core-vendor-hardening": true,
             "php-http/discovery": true,
             "phpstan/extension-installer": true,
-            "tbachert/spi": false
+            "tbachert/spi": false,
+            "cweagans/composer-patches": true
         }
     },
     "extra": {
+        "patches": {
+            "php-tuf/composer-stager": {
+                "Pass FileSyncer timeout to AbstractProcessRunner::run": "./composer-stager-414.patch"
+            }
+        },
         "_readme": [
             "By default Drupal loads the autoloader from ./vendor/autoload.php.",
             "To change the autoloader you can edit ./autoload.php.",
diff --git a/composer.lock b/composer.lock
index 86e0d6df2327..241a9bf891b2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "a6a454e0a25ad4c4d26cd760d50eb4d0",
+    "content-hash": "37a7635547d62acc810e988795dd8c6e",
     "packages": [
         {
             "name": "asm89/stack-cors",
@@ -5325,6 +5325,54 @@
             ],
             "time": "2024-05-06T16:37:16+00:00"
         },
+        {
+            "name": "cweagans/composer-patches",
+            "version": "1.7.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/cweagans/composer-patches.git",
+                "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/e190d4466fe2b103a55467dfa83fc2fecfcaf2db",
+                "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0 || ^2.0",
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "composer/composer": "~1.0 || ~2.0",
+                "phpunit/phpunit": "~4.6"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "cweagans\\Composer\\Patches"
+            },
+            "autoload": {
+                "psr-4": {
+                    "cweagans\\Composer\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Cameron Eagans",
+                    "email": "me@cweagans.net"
+                }
+            ],
+            "description": "Provides a way to patch Composer packages.",
+            "support": {
+                "issues": "https://github.com/cweagans/composer-patches/issues",
+                "source": "https://github.com/cweagans/composer-patches/tree/1.7.3"
+            },
+            "time": "2022-12-20T22:53:13+00:00"
+        },
         {
             "name": "dealerdirect/phpcodesniffer-composer-installer",
             "version": "v1.0.0",
diff --git a/composer/Metapackage/DevDependencies/composer.json b/composer/Metapackage/DevDependencies/composer.json
index 023a65286fdd..71d922ee7190 100644
--- a/composer/Metapackage/DevDependencies/composer.json
+++ b/composer/Metapackage/DevDependencies/composer.json
@@ -11,6 +11,7 @@
         "behat/mink-browserkit-driver": "^2.2",
         "colinodell/psr-testlogger": "^1.2",
         "composer/composer": "^2.8.1",
+        "cweagans/composer-patches": "^1.7",
         "drupal/coder": "^8.3.10",
         "justinrainbow/json-schema": "^5.2",
         "lullabot/mink-selenium2-driver": "^1.7.3",
diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json
index ce382db15563..913cf72e1acc 100644
--- a/composer/Metapackage/PinnedDevDependencies/composer.json
+++ b/composer/Metapackage/PinnedDevDependencies/composer.json
@@ -19,6 +19,7 @@
         "composer/pcre": "3.3.2",
         "composer/spdx-licenses": "1.5.8",
         "composer/xdebug-handler": "3.0.5",
+        "cweagans/composer-patches": "1.7.3",
         "dealerdirect/phpcodesniffer-composer-installer": "v1.0.0",
         "doctrine/instantiator": "2.0.0",
         "drupal/coder": "8.3.26",
-- 
GitLab


From a2d1a62744b5f54b98b669567bbb64a933ffacb7 Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 14:27:37 +1000
Subject: [PATCH 05/13] Revert metapackages

---
 composer/Metapackage/DevDependencies/composer.json       | 1 -
 composer/Metapackage/PinnedDevDependencies/composer.json | 1 -
 2 files changed, 2 deletions(-)

diff --git a/composer/Metapackage/DevDependencies/composer.json b/composer/Metapackage/DevDependencies/composer.json
index 71d922ee7190..023a65286fdd 100644
--- a/composer/Metapackage/DevDependencies/composer.json
+++ b/composer/Metapackage/DevDependencies/composer.json
@@ -11,7 +11,6 @@
         "behat/mink-browserkit-driver": "^2.2",
         "colinodell/psr-testlogger": "^1.2",
         "composer/composer": "^2.8.1",
-        "cweagans/composer-patches": "^1.7",
         "drupal/coder": "^8.3.10",
         "justinrainbow/json-schema": "^5.2",
         "lullabot/mink-selenium2-driver": "^1.7.3",
diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json
index 913cf72e1acc..ce382db15563 100644
--- a/composer/Metapackage/PinnedDevDependencies/composer.json
+++ b/composer/Metapackage/PinnedDevDependencies/composer.json
@@ -19,7 +19,6 @@
         "composer/pcre": "3.3.2",
         "composer/spdx-licenses": "1.5.8",
         "composer/xdebug-handler": "3.0.5",
-        "cweagans/composer-patches": "1.7.3",
         "dealerdirect/phpcodesniffer-composer-installer": "v1.0.0",
         "doctrine/instantiator": "2.0.0",
         "drupal/coder": "8.3.26",
-- 
GitLab


From c0c59eafb9aa041f87310ecb45ac5155467c5bcf Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 14:28:21 +1000
Subject: [PATCH 06/13] Hardcode repeat test class

---
 .gitlab-ci/pipeline.yml | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/.gitlab-ci/pipeline.yml b/.gitlab-ci/pipeline.yml
index 3196e5078226..771721be17f0 100644
--- a/.gitlab-ci/pipeline.yml
+++ b/.gitlab-ci/pipeline.yml
@@ -274,10 +274,8 @@ variables:
 
 '🔁 Repeat Class Test':
   <<: [ *with-composer, *run-repeat-class-test, *default-job-settings ]
-  when: manual
-  allow_failure: true
   variables:
-    REPEAT_TEST_CLASS: 'Drupal\Tests\Change\Me'
+    REPEAT_TEST_CLASS: '\Drupal\Tests\package_manager\Build\PackageUpdateTest'
   services:
     - <<: *with-database
 
-- 
GitLab


From 40f6f578177b75eb7b4248689b0359c9464e2cef Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 15:06:59 +1000
Subject: [PATCH 07/13] Revert "Revert metapackages"

This reverts commit a2d1a62744b5f54b98b669567bbb64a933ffacb7.
---
 composer/Metapackage/DevDependencies/composer.json       | 1 +
 composer/Metapackage/PinnedDevDependencies/composer.json | 1 +
 2 files changed, 2 insertions(+)

diff --git a/composer/Metapackage/DevDependencies/composer.json b/composer/Metapackage/DevDependencies/composer.json
index 023a65286fdd..71d922ee7190 100644
--- a/composer/Metapackage/DevDependencies/composer.json
+++ b/composer/Metapackage/DevDependencies/composer.json
@@ -11,6 +11,7 @@
         "behat/mink-browserkit-driver": "^2.2",
         "colinodell/psr-testlogger": "^1.2",
         "composer/composer": "^2.8.1",
+        "cweagans/composer-patches": "^1.7",
         "drupal/coder": "^8.3.10",
         "justinrainbow/json-schema": "^5.2",
         "lullabot/mink-selenium2-driver": "^1.7.3",
diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json
index ce382db15563..913cf72e1acc 100644
--- a/composer/Metapackage/PinnedDevDependencies/composer.json
+++ b/composer/Metapackage/PinnedDevDependencies/composer.json
@@ -19,6 +19,7 @@
         "composer/pcre": "3.3.2",
         "composer/spdx-licenses": "1.5.8",
         "composer/xdebug-handler": "3.0.5",
+        "cweagans/composer-patches": "1.7.3",
         "dealerdirect/phpcodesniffer-composer-installer": "v1.0.0",
         "doctrine/instantiator": "2.0.0",
         "drupal/coder": "8.3.26",
-- 
GitLab


From 6b4f03c007140332f4886ea761b370e74d2f9f7a Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 15:09:13 +1000
Subject: [PATCH 08/13] Allow composer-patches

---
 .../package_manager/tests/src/Build/TemplateProjectTestBase.php  | 1 +
 1 file changed, 1 insertion(+)

diff --git a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
index 3023d4aa56cb..36e359b989fb 100644
--- a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
+++ b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
@@ -290,6 +290,7 @@ protected function createTestProject(string $template): void {
     // executable that might not exist while dependencies are being installed.
     // It adds no value to this test.
     $data['config']['allow-plugins']['dealerdirect/phpcodesniffer-composer-installer'] = FALSE;
+    $data['config']['allow-plugins']['cweagans/composer-patches'] = TRUE;
 
     // Always force Composer to mirror path repositories. This is necessary
     // because dependencies are installed from a Composer-type repository, which
-- 
GitLab


From 56363b40f0c31b4fd4b8bea205b1aac6537e0cc2 Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 15:23:53 +1000
Subject: [PATCH 09/13] Force composer patches in to project

---
 .../tests/src/Build/TemplateProjectTestBase.php                | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
index 36e359b989fb..5bee6ef0ad99 100644
--- a/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
+++ b/core/modules/package_manager/tests/src/Build/TemplateProjectTestBase.php
@@ -290,7 +290,10 @@ protected function createTestProject(string $template): void {
     // executable that might not exist while dependencies are being installed.
     // It adds no value to this test.
     $data['config']['allow-plugins']['dealerdirect/phpcodesniffer-composer-installer'] = FALSE;
+
+    $data['require']['cweagans/composer-patches'] = '^1.7';
     $data['config']['allow-plugins']['cweagans/composer-patches'] = TRUE;
+    $data['config']['extra']['composer-exit-on-patch-failure'] = TRUE;
 
     // Always force Composer to mirror path repositories. This is necessary
     // because dependencies are installed from a Composer-type repository, which
-- 
GitLab


From a0feea2eca4aa1890b162418c626ddcd89897bc5 Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Tue, 1 Apr 2025 15:24:42 +1000
Subject: [PATCH 10/13] Test 180 second timeout

---
 .../modules/package_manager_test_api/src/ApiController.php      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php b/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
index b51c3544167e..e15d3cb07626 100644
--- a/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
+++ b/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
@@ -108,7 +108,7 @@ public function finish(string $id): Response {
    *   as long as the stage needs to exist.
    */
   protected function createAndApplyStage(Request $request) : string {
-    $id = $this->stage->create();
+    $id = $this->stage->create(180);
     $this->stage->require(
       $request->get('runtime', []),
       $request->get('dev', [])
-- 
GitLab


From 21f981a376894f151637278316454068960c40de Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Wed, 2 Apr 2025 08:02:53 +1000
Subject: [PATCH 11/13] Repeat only 50 times so we definitely get test output

---
 .gitlab-ci/pipeline.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci/pipeline.yml b/.gitlab-ci/pipeline.yml
index 771721be17f0..06370dca2e87 100644
--- a/.gitlab-ci/pipeline.yml
+++ b/.gitlab-ci/pipeline.yml
@@ -113,7 +113,7 @@ variables:
         echo '   "Key" to "REPEAT_TEST_CLASS" and "Value" to "Drupal\Tests\ckeditor5\FunctionalJavascript\MediaLinkabilityTest"';
         exit 1;
       else
-        sudo -u www-data -E -H php ./core/scripts/run-tests.sh --color --keep-results --concurrency "$CONCURRENCY" --repeat "100" --sqlite "./sites/default/files/tests.sqlite" --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --verbose --non-html --class $REPEAT_TEST_CLASS
+        sudo -u www-data -E -H php ./core/scripts/run-tests.sh --color --keep-results --concurrency "$CONCURRENCY" --repeat "50" --sqlite "./sites/default/files/tests.sqlite" --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --verbose --non-html --class $REPEAT_TEST_CLASS
       fi
 
 ################
-- 
GitLab


From fb7e11684900308308c3e3e78250bd74d9dc14b5 Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Wed, 2 Apr 2025 15:42:43 +1000
Subject: [PATCH 12/13] Give standard profile another minute to complete

---
 core/tests/Drupal/BuildTests/Framework/BuildTestBase.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/tests/Drupal/BuildTests/Framework/BuildTestBase.php b/core/tests/Drupal/BuildTests/Framework/BuildTestBase.php
index 313c6f54fa9d..8ae2b1b3e49e 100644
--- a/core/tests/Drupal/BuildTests/Framework/BuildTestBase.php
+++ b/core/tests/Drupal/BuildTests/Framework/BuildTestBase.php
@@ -331,8 +331,8 @@ public function assertCommandExitCode($expected_code) {
   public function executeCommand($command_line, $working_dir = NULL) {
     $this->commandProcess = Process::fromShellCommandline($command_line);
     $this->commandProcess->setWorkingDirectory($this->getWorkingPath($working_dir))
-      ->setTimeout(300)
-      ->setIdleTimeout(300);
+      ->setTimeout(360)
+      ->setIdleTimeout(360);
     $this->commandProcess->run();
     return $this->commandProcess;
   }
-- 
GitLab


From 79a4571ca543e51992f0938036e8f6a9014bf2ea Mon Sep 17 00:00:00 2001
From: Michael Strelan <mstrelan@gmail.com>
Date: Thu, 3 Apr 2025 13:36:24 +1000
Subject: [PATCH 13/13] Remove 180 and fallback to 300 that should work now
 with the patch

---
 .../modules/package_manager_test_api/src/ApiController.php      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php b/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
index e15d3cb07626..b51c3544167e 100644
--- a/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
+++ b/core/modules/package_manager/tests/modules/package_manager_test_api/src/ApiController.php
@@ -108,7 +108,7 @@ public function finish(string $id): Response {
    *   as long as the stage needs to exist.
    */
   protected function createAndApplyStage(Request $request) : string {
-    $id = $this->stage->create(180);
+    $id = $this->stage->create();
     $this->stage->require(
       $request->get('runtime', []),
       $request->get('dev', [])
-- 
GitLab