helloadhavan/github_issues huggingface dataset:
Repository: electron/electron
Pull request: fix: destroy url loader wrapper when JS env exits

Backport of #44574

See that PR for details.


Notes: fix crash in net api when utility process exits.

Changed files:
filename: shell/common/api/electron_api_url_loader.cc
patch: @@ -379,13 +379,13 @@ void SimpleURLLoaderWrapper::Start() {
   loader_->SetAllowHttpErrorResults(true);
   loader_->SetURLLoaderFactoryOptions(request_options_);
   loader_->SetOnResponseStartedCallback(base::BindOnce(
-      &SimpleURLLoaderWrapper::OnResponseStarted, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnResponseStarted, weak_factory_.GetWeakPtr()));
   loader_->SetOnRedirectCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnRedirect, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnRedirect, weak_factory_.GetWeakPtr()));
   loader_->SetOnUploadProgressCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnUploadProgress, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnUploadProgress, weak_factory_.GetWeakPtr()));
   loader_->SetOnDownloadProgressCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnDownloadProgress, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnDownloadProgress, weak_factory_.GetWeakPtr()));
 
   url_loader_factory_ = GetURLLoaderFactoryForURL(request_ref->url);
   loader_->DownloadAsStream(url_loader_factory_.get(), this);
@@ -716,14 +716,19 @@ void SimpleURLLoaderWrapper::OnDataReceived(std::string_view string_piece,
 }
 
 void SimpleURLLoaderWrapper::OnComplete(bool success) {
+  auto self = weak_factory_.GetWeakPtr();
   if (success) {
     Emit("complete");
   } else {
     Emit("error", net::ErrorToString(loader_->NetError()));
   }
-  loader_.reset();
-  pinned_wrapper_.Reset();
-  pinned_chunk_pipe_getter_.Reset();
+  // If users initiate process shutdown when the event is emitted, then
+  // we would perform cleanup of the wrapper and we should bail out below.
+  if (self) {
+    loader_.reset();
+    pinned_wrapper_.Reset();
+    pinned_chunk_pipe_getter_.Reset();
+  }
 }
 
 void SimpleURLLoaderWrapper::OnRetry(base::OnceClosure start_retry) {}

filename: shell/common/api/electron_api_url_loader.h
patch: @@ -22,6 +22,7 @@
 #include "services/network/public/mojom/url_loader_network_service_observer.mojom.h"
 #include "services/network/public/mojom/url_response_head.mojom.h"
 #include "shell/browser/event_emitter_mixin.h"
+#include "shell/common/gin_helper/cleaned_up_at_exit.h"
 #include "url/gurl.h"
 #include "v8/include/v8.h"
 
@@ -47,6 +48,7 @@ namespace electron::api {
 class SimpleURLLoaderWrapper final
     : public gin::Wrappable<SimpleURLLoaderWrapper>,
       public gin_helper::EventEmitterMixin<SimpleURLLoaderWrapper>,
+      public gin_helper::CleanedUpAtExit,
       private network::SimpleURLLoaderStreamConsumer,
       private network::mojom::URLLoaderNetworkServiceObserver {
  public:
Repository: nodejs/node
Pull request: lib: avoid excluding symlinks in recursive fs.readdir with filetypes

Fixes: https://github.com/nodejs/node/issues/52663

Changed files:
filename: lib/fs.js
patch: @@ -1402,9 +1402,12 @@ function readdirSyncRecursive(basePath, options) {
       // of the first array within the result.
       const length = readdirResult[0].length;
       for (let i = 0; i < length; i++) {
+        // Avoid excluding symlinks, as they are not directories.
+        // Refs: https://github.com/nodejs/node/issues/52663
+        const stat = binding.internalModuleStat(binding, pathModule.join(path, readdirResult[0][i]));
         const dirent = getDirent(path, readdirResult[0][i], readdirResult[1][i]);
         ArrayPrototypePush(readdirResults, dirent);
-        if (dirent.isDirectory()) {
+        if (dirent.isDirectory() || stat === 1) {
           ArrayPrototypePush(pathsQueue, pathModule.join(dirent.parentPath, dirent.name));
         }
       }

filename: test/parallel/test-fs-readdir-types-symlinks.js
patch: @@ -0,0 +1,36 @@
+'use strict';
+
+// Refs: https://github.com/nodejs/node/issues/52663
+const common = require('../common');
+const assert = require('node:assert');
+const fs = require('node:fs');
+const path = require('node:path');
+
+if (!common.canCreateSymLink())
+  common.skip('insufficient privileges');
+
+const tmpdir = require('../common/tmpdir');
+const readdirDir = tmpdir.path;
+// clean up the tmpdir
+tmpdir.refresh();
+
+// a/1, a/2
+const a = path.join(readdirDir, 'a');
+fs.mkdirSync(a);
+fs.writeFileSync(path.join(a, '1'), 'irrelevant');
+fs.writeFileSync(path.join(a, '2'), 'irrelevant');
+
+// b/1
+const b = path.join(readdirDir, 'b');
+fs.mkdirSync(b);
+fs.writeFileSync(path.join(b, '1'), 'irrelevant');
+
+// b/c -> a
+const c = path.join(readdirDir, 'b', 'c');
+fs.symlinkSync(a, c, 'dir');
+
+// Just check that the number of entries are the same
+assert.strictEqual(
+  fs.readdirSync(b, { recursive: true, withFileTypes: true }).length,
+  fs.readdirSync(b, { recursive: true, withFileTypes: false }).length
+);
Repository: huggingface/transformers
Pull request: Prepare for TF+Jax deprecation

This PR removes a lot of TF + Jax testing in `repo-consistency` and `.circleci`. In a follow-up PR, I'll delete a lot of the test files, but this needs to be in a separate PR because repo-consistency checks run against the target branch, not the PR branch, and so they will fail if we remove other tests before merging this.

Changed files:
filename: .circleci/create_circleci_config.py
patch: @@ -230,22 +230,6 @@ def job_name(self):
     parallelism=8,
 )
 
-tf_job = CircleCIJob(
-    "tf",
-    docker_image=[{"image":"huggingface/transformers-tf-light"}],
-    parallelism=6,
-)
-
-
-flax_job = CircleCIJob(
-    "flax",
-    docker_image=[{"image":"huggingface/transformers-jax-light"}],
-    parallelism=6,
-    pytest_num_workers=16,
-    resource_class="2xlarge",
-)
-
-
 pipelines_torch_job = CircleCIJob(
     "pipelines_torch",
     additional_env={"RUN_PIPELINE_TESTS": True},
@@ -254,16 +238,6 @@ def job_name(self):
     parallelism=4,
 )
 
-
-pipelines_tf_job = CircleCIJob(
-    "pipelines_tf",
-    additional_env={"RUN_PIPELINE_TESTS": True},
-    docker_image=[{"image":"huggingface/transformers-tf-light"}],
-    marker="is_pipeline_test",
-    parallelism=4,
-)
-
-
 custom_tokenizers_job = CircleCIJob(
     "custom_tokenizers",
     additional_env={"RUN_CUSTOM_TOKENIZERS": True},
@@ -280,15 +254,6 @@ def job_name(self):
     pytest_num_workers=4,
 )
 
-
-examples_tensorflow_job = CircleCIJob(
-    "examples_tensorflow",
-    additional_env={"OMP_NUM_THREADS": 8},
-    docker_image=[{"image":"huggingface/transformers-examples-tf"}],
-    pytest_num_workers=2,
-)
-
-
 hub_job = CircleCIJob(
     "hub",
     additional_env={"HUGGINGFACE_CO_STAGING": True},
@@ -368,7 +333,7 @@ def job_name(self):
     pytest_num_workers=1,
 )
 
-REGULAR_TESTS = [torch_job, flax_job, hub_job, onnx_job, tokenization_job, processor_job, generate_job, non_model_job] # fmt: skip
+REGULAR_TESTS = [torch_job, hub_job, onnx_job, tokenization_job, processor_job, generate_job, non_model_job] # fmt: skip
 EXAMPLES_TESTS = [examples_torch_job]
 PIPELINE_TESTS = [pipelines_torch_job]
 REPO_UTIL_TESTS = [repo_utils_job]

filename: utils/check_repo.py
patch: @@ -682,7 +682,9 @@ def check_all_models_are_tested():
         # Matches a module to its test file.
         test_file = [file for file in test_files if f"test_{module.__name__.split('.')[-1]}.py" in file]
         if len(test_file) == 0:
-            failures.append(f"{module.__name__} does not have its corresponding test file {test_file}.")
+            # We do not test TF or Flax models anymore because they're deprecated.
+            if not (module.__name__.startswith("modeling_tf") or module.__name__.startswith("modeling_flax")):
+                failures.append(f"{module.__name__} does not have its corresponding test file {test_file}.")
         elif len(test_file) > 1:
             failures.append(f"{module.__name__} has several test files: {test_file}.")
         else:
Repository: huggingface/transformers
Pull request: Better check in `initialize_weights`

# What does this PR do?

This has no impact on Transformers itself, but should help with remote code, and makes a bit more sense in general (See https://github.com/huggingface/transformers/issues/38358 as well)


Changed files:
filename: src/transformers/modeling_utils.py
patch: @@ -2658,7 +2658,7 @@ def initialize_weights(self):
             def smart_apply(self, fn):
                 for module in self.children():
                     # We found a sub-model: recursively dispatch its own init function now!
-                    if hasattr(module, "_init_weights"):
+                    if isinstance(module, PreTrainedModel):
                         module.smart_apply(module._initialize_weights)
                     else:
                         module.smart_apply(fn)
Repository: vercel/next.js
Pull request: Discard `Infinity` expiration for implicit tags

When a cache handler returns `Infinity` from its `getExpiration` method, it signals to Next.js that soft/implicit tags are supposed to be passed into the `get` method instead to be checked for expiration. Documenting this in the `CacheHandlerV2` interface, and always passing in the soft tags was implemented in #79213. However, we missed handling the infinite expiration value, which led to regarding all cache entries returned from those cache handlers as stale.

The first commit provokes the error, the second commit fixes it.

We'll also soon (re-)add proper deploy tests that will verify scenarios like this one end-to-end when deployed to Vercel.

/cc @laugharn 

Changed files:
filename: packages/next/src/server/use-cache/use-cache-wrapper.ts
patch: @@ -867,10 +867,17 @@ export function cache(
               workUnitStore.implicitTags.expirationsByCacheKind.get(kind)
 
             if (lazyExpiration) {
-              if (isResolvedLazyResult(lazyExpiration)) {
-                implicitTagsExpiration = lazyExpiration.value
-              } else {
-                implicitTagsExpiration = await lazyExpiration
+              const expiration = isResolvedLazyResult(lazyExpiration)
+                ? lazyExpiration.value
+                : await lazyExpiration
+
+              // If a cache handler returns an expiration time of Infinity, it
+              // signals to Next.js that it handles checking cache entries for
+              // staleness based on the expiration of the implicit tags passed
+              // into the `get` method. In this case, we keep the default of 0,
+              // which means that the implicit tags are not considered expired.
+              if (expiration < Infinity) {
+                implicitTagsExpiration = expiration
               }
             }
           }

filename: test/e2e/app-dir/use-cache-custom-handler/handler.js
patch: @@ -24,7 +24,9 @@ const cacheHandler = {
 
   async getExpiration(...tags) {
     console.log('ModernCustomCacheHandler::getExpiration', JSON.stringify(tags))
-    return defaultCacheHandler.getExpiration(...tags)
+    // Expecting soft tags in `get` to be used by the cache handler for checking
+    // the expiration of a cache entry, instead of letting Next.js handle it.
+    return Infinity
   },
 
   async expireTags(...tags) {
Repository: electron/electron
Pull request: fix: destroy url loader wrapper when JS env exits

#### Description of Change

Similar fix to https://github.com/electron/electron/pull/39335
For https://github.com/microsoft/vscode/issues/232564

#### Release Notes

Notes: fix crash in net api when utility process exits.

Changed files:
filename: shell/common/api/electron_api_url_loader.cc
patch: @@ -383,13 +383,13 @@ void SimpleURLLoaderWrapper::Start() {
   loader_->SetAllowHttpErrorResults(true);
   loader_->SetURLLoaderFactoryOptions(request_options_);
   loader_->SetOnResponseStartedCallback(base::BindOnce(
-      &SimpleURLLoaderWrapper::OnResponseStarted, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnResponseStarted, weak_factory_.GetWeakPtr()));
   loader_->SetOnRedirectCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnRedirect, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnRedirect, weak_factory_.GetWeakPtr()));
   loader_->SetOnUploadProgressCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnUploadProgress, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnUploadProgress, weak_factory_.GetWeakPtr()));
   loader_->SetOnDownloadProgressCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnDownloadProgress, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnDownloadProgress, weak_factory_.GetWeakPtr()));
 
   url_loader_factory_ = GetURLLoaderFactoryForURL(request_ref->url);
   loader_->DownloadAsStream(url_loader_factory_.get(), this);
@@ -719,14 +719,19 @@ void SimpleURLLoaderWrapper::OnDataReceived(std::string_view string_view,
 }
 
 void SimpleURLLoaderWrapper::OnComplete(bool success) {
+  auto self = weak_factory_.GetWeakPtr();
   if (success) {
     Emit("complete");
   } else {
     Emit("error", net::ErrorToString(loader_->NetError()));
   }
-  loader_.reset();
-  pinned_wrapper_.Reset();
-  pinned_chunk_pipe_getter_.Reset();
+  // If users initiate process shutdown when the event is emitted, then
+  // we would perform cleanup of the wrapper and we should bail out below.
+  if (self) {
+    loader_.reset();
+    pinned_wrapper_.Reset();
+    pinned_chunk_pipe_getter_.Reset();
+  }
 }
 
 void SimpleURLLoaderWrapper::OnResponseStarted(

filename: shell/common/api/electron_api_url_loader.h
patch: @@ -21,6 +21,7 @@
 #include "services/network/public/mojom/url_loader_network_service_observer.mojom.h"
 #include "services/network/public/mojom/url_response_head.mojom.h"
 #include "shell/browser/event_emitter_mixin.h"
+#include "shell/common/gin_helper/cleaned_up_at_exit.h"
 #include "url/gurl.h"
 #include "v8/include/v8-forward.h"
 
@@ -50,6 +51,7 @@ namespace electron::api {
 class SimpleURLLoaderWrapper final
     : public gin::Wrappable<SimpleURLLoaderWrapper>,
       public gin_helper::EventEmitterMixin<SimpleURLLoaderWrapper>,
+      public gin_helper::CleanedUpAtExit,
       private network::SimpleURLLoaderStreamConsumer,
       private network::mojom::URLLoaderNetworkServiceObserver {
  public:
Repository: nodejs/node
Pull request: test: use --permission instead of --experimental-permission

This PR fixes main. I've cherry-picked the v23.x security release commits into main and I forgot we've removed `--experimental-permission` in main. 

Changed files:
filename: test/parallel/test-permission-dc-worker-threads.js
patch: @@ -1,4 +1,4 @@
-// Flags: --experimental-permission --allow-fs-read=* --experimental-test-module-mocks
+// Flags: --permission --allow-fs-read=* --experimental-test-module-mocks
 'use strict';
 
 const common = require('../common');

filename: test/parallel/test-runner-module-mocking.js
patch: @@ -655,7 +655,7 @@ test('should throw ERR_ACCESS_DENIED when permission model is enabled', async (t
   const cwd = fixtures.path('test-runner');
   const fixture = fixtures.path('test-runner', 'mock-nm.js');
   const args = [
-    '--experimental-permission',
+    '--permission',
     '--allow-fs-read=*',
     '--experimental-test-module-mocks',
     fixture,
@@ -674,7 +674,7 @@ test('should work when --allow-worker is passed and permission model is enabled'
   const cwd = fixtures.path('test-runner');
   const fixture = fixtures.path('test-runner', 'mock-nm.js');
   const args = [
-    '--experimental-permission',
+    '--permission',
     '--allow-fs-read=*',
     '--allow-worker',
     '--experimental-test-module-mocks',
Repository: vercel/next.js
Pull request: perf(turbopack): Optimize `Rope` correctly

### What?

Utilize _cheap clone_ of `bytes::Bytes`. I made an error in the previous pull request.

### Why?

 - In the name of the performance.
 - `bytes::Bytes` is cheap to clone.

Closes PACK-4806

Changed files:
filename: turbopack/crates/turbo-tasks-fs/src/rope.rs
patch: @@ -550,6 +550,10 @@ impl InnerRope {
                     return data.into_iter().next().unwrap().into_bytes(len);
                 }
                 Err(data) => {
+                    // If we have a single element, we can return it directly.
+                    if let Local(bytes) = &data[0] {
+                        return bytes.clone();
+                    }
                     self.0 = data;
                 }
             }
Repository: facebook/react
Pull request: [DevTools] remove script tag immediately

Fixes https://github.com/facebook/react/issues/25924 for React DevTools specifically.

## Summary

If we remove the script after it's loaded, it creates a race condition with other code. If some other code is searching for the first script tag or first element of the document, this might broke it.

## How did you test this change?

I've tested in my local build that even if we remove the script tag immediately, the code is still correctly executed.

Changed files:
filename: packages/react-devtools-extensions/src/contentScripts/prepareInjection.js
patch: @@ -26,10 +26,8 @@ function injectScriptSync(src) {
 function injectScriptAsync(src) {
   const script = document.createElement('script');
   script.src = src;
-  script.onload = function () {
-    script.remove();
-  };
   nullthrows(document.documentElement).appendChild(script);
+  nullthrows(script.parentNode).removeChild(script);
 }
 
 let lastDetectionResult;
Repository: vercel/next.js
Pull request: fix(turbopack): Restore `sources` field in the source map

### What?

Restore the `sources` field by picking up https://github.com/kdy1/rust-sourcemap/commit/27e1bf8b92498425fbc6e2f31d2f755b6ae94f19

### Why?

It's expected to be exist


Closes PACK-4807

Changed files:
filename: Cargo.lock
patch: @@ -6683,7 +6683,7 @@ dependencies = [
 [[package]]
 name = "sourcemap"
 version = "9.2.2"
-source = "git+https://github.com/kdy1/rust-sourcemap?branch=main#804d663521d6109b3746d800918d483b97e8e108"
+source = "git+https://github.com/kdy1/rust-sourcemap?branch=main#27e1bf8b92498425fbc6e2f31d2f755b6ae94f19"
 dependencies = [
  "base64-simd 0.8.0",
  "bitvec",
Repository: electron/electron
Pull request: fix: destroy url loader wrapper when JS env exits

Backport of #44574

See that PR for details.


Notes: fix crash in net api when utility process exits.

Changed files:
filename: shell/common/api/electron_api_url_loader.cc
patch: @@ -383,13 +383,13 @@ void SimpleURLLoaderWrapper::Start() {
   loader_->SetAllowHttpErrorResults(true);
   loader_->SetURLLoaderFactoryOptions(request_options_);
   loader_->SetOnResponseStartedCallback(base::BindOnce(
-      &SimpleURLLoaderWrapper::OnResponseStarted, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnResponseStarted, weak_factory_.GetWeakPtr()));
   loader_->SetOnRedirectCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnRedirect, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnRedirect, weak_factory_.GetWeakPtr()));
   loader_->SetOnUploadProgressCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnUploadProgress, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnUploadProgress, weak_factory_.GetWeakPtr()));
   loader_->SetOnDownloadProgressCallback(base::BindRepeating(
-      &SimpleURLLoaderWrapper::OnDownloadProgress, base::Unretained(this)));
+      &SimpleURLLoaderWrapper::OnDownloadProgress, weak_factory_.GetWeakPtr()));
 
   url_loader_factory_ = GetURLLoaderFactoryForURL(request_ref->url);
   loader_->DownloadAsStream(url_loader_factory_.get(), this);
@@ -719,14 +719,19 @@ void SimpleURLLoaderWrapper::OnDataReceived(std::string_view string_view,
 }
 
 void SimpleURLLoaderWrapper::OnComplete(bool success) {
+  auto self = weak_factory_.GetWeakPtr();
   if (success) {
     Emit("complete");
   } else {
     Emit("error", net::ErrorToString(loader_->NetError()));
   }
-  loader_.reset();
-  pinned_wrapper_.Reset();
-  pinned_chunk_pipe_getter_.Reset();
+  // If users initiate process shutdown when the event is emitted, then
+  // we would perform cleanup of the wrapper and we should bail out below.
+  if (self) {
+    loader_.reset();
+    pinned_wrapper_.Reset();
+    pinned_chunk_pipe_getter_.Reset();
+  }
 }
 
 void SimpleURLLoaderWrapper::OnResponseStarted(

filename: shell/common/api/electron_api_url_loader.h
patch: @@ -21,6 +21,7 @@
 #include "services/network/public/mojom/url_loader_network_service_observer.mojom.h"
 #include "services/network/public/mojom/url_response_head.mojom.h"
 #include "shell/browser/event_emitter_mixin.h"
+#include "shell/common/gin_helper/cleaned_up_at_exit.h"
 #include "url/gurl.h"
 #include "v8/include/v8-forward.h"
 
@@ -50,6 +51,7 @@ namespace electron::api {
 class SimpleURLLoaderWrapper final
     : public gin::Wrappable<SimpleURLLoaderWrapper>,
       public gin_helper::EventEmitterMixin<SimpleURLLoaderWrapper>,
+      public gin_helper::CleanedUpAtExit,
       private network::SimpleURLLoaderStreamConsumer,
       private network::mojom::URLLoaderNetworkServiceObserver {
  public:
Repository: denoland/deno
Pull request: Revert "ci: use self-hosted mac arm runner only on main branch (#27347)"

This reverts commit 3ddbea62c25891f832354134a2b24e738c45fe10.

Looks like VMs are now slightly different than before and require additional
setup. Reverting for now to unblock `main` branch.

Changed files:
filename: .github/workflows/ci.generate.ts
patch: @@ -42,7 +42,7 @@ const Runners = {
     os: "macos",
     arch: "aarch64",
     runner:
-      `\${{ github.repository == 'denoland/deno' && github.ref == 'refs/heads/main' && '${selfHostedMacosArmRunner}' || '${macosArmRunner}' }}`,
+      `\${{ github.repository == 'denoland/deno' && startsWith(github.ref, 'refs/tags/') && '${selfHostedMacosArmRunner}' || '${macosArmRunner}' }}`,
   },
   windowsX86: {
     os: "windows",

filename: .github/workflows/ci.yml
patch: @@ -68,12 +68,12 @@ jobs:
             skip: '${{ !contains(github.event.pull_request.labels.*.name, ''ci-full'') && (github.event_name == ''pull_request'') }}'
           - os: macos
             arch: aarch64
-            runner: '${{ github.repository == ''denoland/deno'' && github.ref == ''refs/heads/main'' && ''self-hosted'' || ''macos-14'' }}'
+            runner: '${{ github.repository == ''denoland/deno'' && startsWith(github.ref, ''refs/tags/'') && ''self-hosted'' || ''macos-14'' }}'
             job: test
             profile: debug
           - os: macos
             arch: aarch64
-            runner: '${{ (!contains(github.event.pull_request.labels.*.name, ''ci-full'') && (github.event_name == ''pull_request'')) && ''ubuntu-24.04'' || github.repository == ''denoland/deno'' && github.ref == ''refs/heads/main'' && ''self-hosted'' || ''macos-14'' }}'
+            runner: '${{ (!contains(github.event.pull_request.labels.*.name, ''ci-full'') && (github.event_name == ''pull_request'')) && ''ubuntu-24.04'' || github.repository == ''denoland/deno'' && startsWith(github.ref, ''refs/tags/'') && ''self-hosted'' || ''macos-14'' }}'
             job: test
             profile: release
             skip: '${{ !contains(github.event.pull_request.labels.*.name, ''ci-full'') && (github.event_name == ''pull_request'') }}'