helloadhavan/github_issues huggingface dataset:
Repository: ggml-org/llama.cpp
Pull request: server : use lambda instead of std::bind

This commit replaces the two usages of `std::bind` in favor of lambdas for the callback functions for `callback_new_task` and `callback_update_slots`.

The motivation for this changes is consistency with the rest of the code in server.cpp (lambdas are used for all other callbacks/handlers). Also lambdas are more readable (perhaps this is subjective) but also they are recommended over `std::bind` in modern C++.

Ref: https://github.com/LithoCoders/dailycpp/blob/master/EffectiveModernC%2B%2B/chapter6/Item34_Prefer_lambdas_to_std::bind.md


Changed files:
filename: examples/server/server.cpp
patch: @@ -4387,11 +4387,13 @@ int main(int argc, char ** argv) {
         ctx_server.chat_templates.template_default->source().c_str(),
         common_chat_format_example(*ctx_server.chat_templates.template_default, ctx_server.params_base.use_jinja).c_str());
 
-    ctx_server.queue_tasks.on_new_task(std::bind(
-                &server_context::process_single_task, &ctx_server, std::placeholders::_1));
+    ctx_server.queue_tasks.on_new_task([&ctx_server](const server_task & task) {
+        ctx_server.process_single_task(task);
+    });
 
-    ctx_server.queue_tasks.on_update_slots(std::bind(
-                &server_context::update_slots, &ctx_server));
+    ctx_server.queue_tasks.on_update_slots([&ctx_server]() {
+        ctx_server.update_slots();
+    });
 
     shutdown_handler = [&](int) {
         ctx_server.queue_tasks.terminate();
Repository: nodejs/node
Pull request: win: fix SIGQUIT on ClangCL

This PR fixes the cause of the failure when killing the process with `SIGQUIT` on Windows on a ClangCL-produced binary. Since it is fixed now, the test is reenabled.

Changed files:
filename: src/node.h
patch: @@ -67,7 +67,8 @@
 #endif
 
 #ifdef _WIN32
-# define SIGKILL 9
+#define SIGQUIT 3
+#define SIGKILL 9
 #endif
 
 #include "v8.h"  // NOLINT(build/include_order)

filename: test/parallel/test-child-process-kill.js
patch: @@ -42,9 +42,7 @@ assert.strictEqual(cat.killed, true);
 
 // Test different types of kill signals on Windows.
 if (common.isWindows) {
-  // SIGQUIT is not supported on Windows 2022, Visual Studio 2022 ClangCL-produced node.exe.
-  // TODO(StefanStojanovic): Investigate this and re-enable it when the issue is fixed.
-  for (const sendSignal of ['SIGTERM', 'SIGKILL', /* 'SIGQUIT', */'SIGINT']) {
+  for (const sendSignal of ['SIGTERM', 'SIGKILL', 'SIGQUIT', 'SIGINT']) {
     const process = spawn('cmd');
     process.on('exit', (code, signal) => {
       assert.strictEqual(code, null);
Repository: ggml-org/llama.cpp
Pull request: server : remove CPPHTTPLIB_NO_EXCEPTIONS define

This commit removes the `CPPHTTPLIB_NO_EXCEPTIONS` define from the server code.

The motivation for this is that when using a debug build the server would crash when an exception was throws and terminate the server process, as it was unhandled. When `CPPHTTPLIB_NO_EXCEPTIONS` is set cpp_httplib will not call the exception handler, which would normally return a 500 error to the client. This caused tests to fail when using a debug build.

Fixes: https://github.com/ggerganov/llama.cpp/issues/11613


Changed files:
filename: examples/server/utils.hpp
patch: @@ -5,10 +5,6 @@
 #include "llama.h"
 #include "common/base64.hpp"
 
-#ifndef NDEBUG
-// crash the server in debug mode, otherwise send an http 500 error
-#define CPPHTTPLIB_NO_EXCEPTIONS 1
-#endif
 // increase max payload length to allow use of larger context size
 #define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 1048576
 #include "httplib.h"
Repository: facebook/react
Pull request: Add useFormStatus to Flight fixture


Changed files:
filename: fixtures/flight/src/Button.js
patch: @@ -1,29 +1,30 @@
 'use client';
 
 import * as React from 'react';
-import {flushSync} from 'react-dom';
+import {experimental_useFormStatus as useFormStatus} from 'react-dom';
 import ErrorBoundary from './ErrorBoundary.js';
 
-export default function Button({action, children}) {
-  const [isPending, setIsPending] = React.useState(false);
+function ButtonDisabledWhilePending({action, children}) {
+  const {pending} = useFormStatus();
+  return (
+    <button
+      disabled={pending}
+      formAction={async () => {
+        const result = await action();
+        console.log(result);
+      }}>
+      {children}
+    </button>
+  );
+}
 
+export default function Button({action, children}) {
   return (
     <ErrorBoundary>
       <form>
-        <button
-          disabled={isPending}
-          formAction={async () => {
-            // TODO: Migrate to useFormPending once that exists
-            flushSync(() => setIsPending(true));
-            try {
-              const result = await action();
-              console.log(result);
-            } finally {
-              React.startTransition(() => setIsPending(false));
-            }
-          }}>
+        <ButtonDisabledWhilePending action={action}>
           {children}
-        </button>
+        </ButtonDisabledWhilePending>
       </form>
     </ErrorBoundary>
   );

filename: fixtures/flight/src/Form.js
patch: @@ -1,24 +1,23 @@
 'use client';
 
 import * as React from 'react';
-import {flushSync} from 'react-dom';
+import {experimental_useFormStatus as useFormStatus} from 'react-dom';
 import ErrorBoundary from './ErrorBoundary.js';
 
+function Status() {
+  const {pending} = useFormStatus();
+  return pending ? 'Saving...' : null;
+}
+
 export default function Form({action, children}) {
   const [isPending, setIsPending] = React.useState(false);
 
   return (
     <ErrorBoundary>
       <form
         action={async formData => {
-          // TODO: Migrate to useFormPending once that exists
-          flushSync(() => setIsPending(true));
-          try {
-            const result = await action(formData);
-            alert(result);
-          } finally {
-            React.startTransition(() => setIsPending(false));
-          }
+          const result = await action(formData);
+          alert(result);
         }}>
         <label>
           Name: <input name="name" />
@@ -27,7 +26,7 @@ export default function Form({action, children}) {
           File: <input type="file" name="file" />
         </label>
         <button>Say Hi</button>
-        {isPending ? 'Saving...' : null}
+        <Status />
       </form>
     </ErrorBoundary>
   );
Repository: huggingface/transformers
Pull request: Update attention_visualizer.py

# What does this PR do?

Fixes #37851,
This PR (Pull Request) removes the hardcoded sliding_window = 5 value in the AttentionMaskVisualizer and instead makes the sliding window configurable.

Changed files:
filename: src/transformers/utils/attention_visualizer.py
patch: @@ -151,7 +151,7 @@ def __init__(self, model_name: str):
         config = AutoConfig.from_pretrained(model_name)
         self.image_token = "<img>"
         if hasattr(config.get_text_config(), "sliding_window"):
-            config.sliding_window = 5
+            self.sliding_window = getattr(config.get_text_config(), "sliding_window", None)
         try:
             mapped_cls = _get_model_class(config, MODEL_MAPPING)
         except Exception:
Repository: electron/electron
Pull request: fix: custom spell-checker stuck in infinite loop

Backport of #45001

See that PR for details.


Notes: Fix custom spell checker getting stuck in infinite loop using 100% CPU.

Changed files:
filename: shell/renderer/api/electron_api_spell_check_client.cc
patch: @@ -31,7 +31,9 @@ namespace {
 
 bool HasWordCharacters(const std::u16string& text, size_t index) {
   base_icu::UChar32 code;
-  while (base::ReadUnicodeCharacter(text.c_str(), text.size(), &index, &code)) {
+  while (index < text.size() &&
+         base::ReadUnicodeCharacter(text.c_str(), text.size(), &index, &code)) {
+    ++index;
     UErrorCode error = U_ZERO_ERROR;
     if (uscript_getScript(code, &error) != USCRIPT_COMMON)
       return true;
Repository: denoland/deno
Pull request: test: remove one of 'node_unit_tests::tls_test' tests

It will be moved to `npm_smoke_tests` repo instead

Changed files:
filename: tests/unit_node/tls_test.ts
patch: @@ -12,7 +12,6 @@ import { fromFileUrl, join } from "@std/path";
 import * as tls from "node:tls";
 import * as net from "node:net";
 import * as stream from "node:stream";
-import { text } from "node:stream/consumers";
 import { execCode } from "../unit/test_util.ts";
 
 const tlsTestdataDir = fromFileUrl(
@@ -98,18 +97,6 @@ Connection: close
   assertEquals(bodyText, "hello");
 });
 
-// Regression at https://github.com/denoland/deno/issues/27652
-Deno.test("tls.connect makes tls connection to example.com", async () => {
-  const socket = tls.connect(443, "example.com");
-  await new Promise((resolve) => {
-    socket.on("secureConnect", resolve);
-  });
-  socket.write(
-    "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n",
-  );
-  assertStringIncludes(await text(socket), "<title>Example Domain</title>");
-});
-
 // https://github.com/denoland/deno/pull/20120
 Deno.test("tls.connect mid-read tcp->tls upgrade", async () => {
   const { promise, resolve } = Promise.withResolvers<void>();
Repository: facebook/react
Pull request: mark react-events as private so the publish script skips it (for now)

we don't have this package just yet, and aren't ready to publish anything to it, so marking it as private so it doesn't interfere with our publish process. 

Changed files:
filename: packages/react-events/package.json
patch: @@ -1,5 +1,6 @@
 {
   "name": "react-events",
+  "private": true,
   "description": "React is a JavaScript library for building user interfaces.",
   "keywords": [
     "react"
Repository: ggml-org/llama.cpp
Pull request: server : use common_token_to_piece instead of common_detokenize

TThis commit replaces the call to `common_detokenize` with
`common_token_to_piece` in the populate_token_probs.

The motivation for this change is to avoid an issue where
common_detokenize would remove the word boundary character for tokens,
which caused a regression in the server generated token probabilities.
    
Resolves: https://github.com/ggerganov/llama.cpp/issues/11728


Changed files:
filename: examples/server/server.cpp
patch: @@ -2279,7 +2279,7 @@ struct server_context {
             for (size_t i = 0; i < std::min(max_probs, n_probs); i++) {
                 result.probs.push_back({
                     cur_p->data[i].id,
-                    common_detokenize(ctx, {cur_p->data[i].id}, special),
+                    common_token_to_piece(ctx, cur_p->data[i].id, special),
                     cur_p->data[i].p
                 });
             }
@@ -2301,7 +2301,7 @@ struct server_context {
             for (size_t i = 0; i < std::min(n_vocab, n_probs); i++) {
                 result.probs.push_back({
                     cur[i].id,
-                    common_detokenize(ctx, {cur[i].id}, special),
+                    common_token_to_piece(ctx, cur[i].id, special),
                     cur[i].p
                 });
             }
Repository: electron/electron
Pull request: fix: custom spell-checker stuck in infinite loop

#### Description of Change

As reported in #44336, commit 478defb15c036eb749617ad65633b4eecd02cc66 now causes electron to freezes when using a custom spell checker.

`ReadUnicodeCharacter` updates index to the last character read, and not after it. We need to manually increment it to move to the next character.

It also doesn't validate that the index is valid, so we need to check that index is within bounds.

Refs: #44336


#### Checklist

- [x] PR description included and stakeholders cc'd

#### Release Notes

Notes: Fix custom spell checker getting stuck in infinite loop using 100% CPU.

Changed files:
filename: shell/renderer/api/electron_api_spell_check_client.cc
patch: @@ -32,7 +32,9 @@ namespace {
 
 bool HasWordCharacters(const std::u16string& text, size_t index) {
   base_icu::UChar32 code;
-  while (base::ReadUnicodeCharacter(text.c_str(), text.size(), &index, &code)) {
+  while (index < text.size() &&
+         base::ReadUnicodeCharacter(text.c_str(), text.size(), &index, &code)) {
+    ++index;
     UErrorCode error = U_ZERO_ERROR;
     if (uscript_getScript(code, &error) != USCRIPT_COMMON)
       return true;
Repository: nodejs/node
Pull request: doc: process.execve is only unavailable for Windows

execve() call is available on Android as well. When process.execve was first added, it seems like no one checked if that is actually available on Android as well and works out of the box as `__POSIX__` is defined on Android. process.execve call seems to behave just as fine as on Linux environment in my testing, so just make the docs specify it.


Changed files:
filename: doc/api/process.md
patch: @@ -3374,7 +3374,7 @@ any exit or close events and without running any cleanup handler.
 
 This function will never return, unless an error occurred.
 
-This function is only available on POSIX platforms (i.e. not Windows or Android).
+This function is not available on Windows.
 
 ## `process.report`
Repository: vercel/next.js
Pull request: [devtools] panel ui responsiveness



https://github.com/user-attachments/assets/a15165f2-e340-4ec6-a3e1-a895bfac1531



Closes NEXT-4548

Changed files:
filename: packages/next/src/next-devtools/dev-overlay/components/devtools-panel/devtools-panel.tsx
patch: @@ -72,6 +72,7 @@ export function DevToolsPanel({
         onClick={onCloseDevToolsPanel}
       />
       <Draggable
+        data-nextjs-devtools-panel-draggable
         padding={INDICATOR_PADDING}
         onDragStart={() => {}}
         position={state.devToolsPosition}
@@ -160,13 +161,35 @@ export const DEVTOOLS_PANEL_STYLES = css`
     margin: auto;
     /* TODO: This is for fullscreen mode. */
     /* top: 10vh; */
+
+    @media (max-width: 575px) {
+      left: 20px !important;
+      right: 20px !important;
+    }
+
+    @media (min-width: 576px) {
+      max-width: 540px;
+    }
+
+    @media (min-width: 768px) {
+      max-width: 720px;
+    }
+
+    @media (min-width: 992px) {
+      max-width: 960px;
+    }
   }
 
   [data-nextjs-devtools-panel-overlay-backdrop] {
     /* TODO: Blur on fullscreen mode. */
     opacity: 0;
   }
 
+  [data-nextjs-devtools-panel-draggable] {
+    /* For responsiveness */
+    width: 100%;
+  }
+
   [data-nextjs-devtools-panel-dialog] {
     -webkit-font-smoothing: antialiased;
     display: flex;
@@ -178,12 +201,9 @@ export const DEVTOOLS_PANEL_STYLES = css`
     box-shadow: var(--shadow-lg);
     position: relative;
     overflow-y: auto;
-
-    /* TODO: Remove once the content is filled. */
-    min-width: 800px;
-    min-height: 500px;
-    /* This is handled from dialog/styles.ts */
-    max-width: var(--next-dialog-max-width);
+    width: 100%;
+    max-height: 50vh;
+    min-height: 450px;
   }
 
   [data-nextjs-devtools-panel-header] {

filename: packages/next/src/next-devtools/dev-overlay/components/errors/dev-tools-indicator/draggable.tsx
patch: @@ -17,6 +17,7 @@ export function Draggable({
   position: currentCorner,
   setPosition: setCurrentCorner,
   onDragStart,
+  ...props
 }: {
   children: React.ReactElement
   position: Corners
@@ -121,7 +122,7 @@ export function Draggable({
   }
 
   return (
-    <div ref={ref} {...drag} style={{ touchAction: 'none' }}>
+    <div {...props} ref={ref} {...drag} style={{ touchAction: 'none' }}>
       {children}
     </div>
   )
Repository: denoland/deno
Pull request: fix(otel): custom span start + end times are fractional ms

Previously they were treated as fractional seconds.

<!--
Before submitting a PR, please read https://docs.deno.com/runtime/manual/references/contributing

1. Give the PR a descriptive title.

  Examples of good title:
    - fix(std/http): Fix race condition in server
    - docs(console): Update docstrings
    - feat(doc): Handle nested reexports

  Examples of bad title:
    - fix #7123
    - update docs
    - fix bugs

2. Ensure there is a related issue and it is referenced in the PR text.
3. Ensure there are tests that cover the changes.
4. Ensure `cargo test` passes.
5. Ensure `./tools/format.js` passes without changing files.
6. Ensure `./tools/lint.js` passes.
7. Open as a draft PR if your work is still in progress. The CI won't run
   all steps, but you can add '[ci]' to a commit message to force it to.
8. If you would like to run the benchmarks on the CI, add the 'ci-bench' label.
-->


Changed files:
filename: ext/telemetry/lib.rs
patch: @@ -1184,7 +1184,7 @@ impl OtelTracer {
     let start_time = start_time
       .map(|start_time| {
         SystemTime::UNIX_EPOCH
-          .checked_add(std::time::Duration::from_secs_f64(start_time))
+          .checked_add(std::time::Duration::from_secs_f64(start_time / 1000.0))
           .ok_or_else(|| JsErrorBox::generic("invalid start time"))
       })
       .unwrap_or_else(|| Ok(SystemTime::now()))?;
@@ -1251,7 +1251,7 @@ impl OtelTracer {
     let start_time = start_time
       .map(|start_time| {
         SystemTime::UNIX_EPOCH
-          .checked_add(std::time::Duration::from_secs_f64(start_time))
+          .checked_add(std::time::Duration::from_secs_f64(start_time / 1000.0))
           .ok_or_else(|| JsErrorBox::generic("invalid start time"))
       })
       .unwrap_or_else(|| Ok(SystemTime::now()))?;
@@ -1366,7 +1366,7 @@ impl OtelSpan {
       SystemTime::now()
     } else {
       SystemTime::UNIX_EPOCH
-        .checked_add(Duration::from_secs_f64(end_time))
+        .checked_add(Duration::from_secs_f64(end_time / 1000.0))
         .unwrap()
     };
 

filename: ext/telemetry/telemetry.ts
patch: @@ -139,8 +139,8 @@ interface IKeyValue {
   value: IAnyValue;
 }
 
-function hrToSecs(hr: [number, number]): number {
-  return (hr[0] * 1e3 + hr[1] / 1e6) / 1000;
+function hrToMs(hr: [number, number]): number {
+  return (hr[0] * 1e3 + hr[1] / 1e6);
 }
 
 export function enterSpan(span: Span): Context | undefined {
@@ -276,7 +276,7 @@ class Tracer {
 
     let startTime = options?.startTime;
     if (startTime && ArrayIsArray(startTime)) {
-      startTime = hrToSecs(startTime);
+      startTime = hrToMs(startTime);
     } else if (startTime && isDate(startTime)) {
       startTime = DatePrototypeGetTime(startTime);
     }
@@ -383,7 +383,7 @@ class Span {
 
   end(endTime?: TimeInput): void {
     if (endTime && ArrayIsArray(endTime)) {
-      endTime = hrToSecs(endTime);
+      endTime = hrToMs(endTime);
     } else if (endTime && isDate(endTime)) {
       endTime = DatePrototypeGetTime(endTime);
     }
Repository: facebook/react
Pull request: Add "canary" to list of allowed npm dist tags

Forgot this allowlist existed. It's an extra safeguard, in case we mess up the configuration somehow.

Changed files:
filename: scripts/release/publish-commands/parse-params.js
patch: @@ -41,6 +41,7 @@ module.exports = () => {
   params.tags.forEach(tag => {
     switch (tag) {
       case 'latest':
+      case 'canary':
       case 'next':
       case 'experimental':
       case 'alpha':
Repository: electron/electron
Pull request: fix: custom spell-checker stuck in infinite loop

Backport of #45001

See that PR for details.


Notes: Fix custom spell checker getting stuck in infinite loop using 100% CPU.

Changed files:
filename: shell/renderer/api/electron_api_spell_check_client.cc
patch: @@ -32,7 +32,9 @@ namespace {
 
 bool HasWordCharacters(const std::u16string& text, size_t index) {
   base_icu::UChar32 code;
-  while (base::ReadUnicodeCharacter(text.c_str(), text.size(), &index, &code)) {
+  while (index < text.size() &&
+         base::ReadUnicodeCharacter(text.c_str(), text.size(), &index, &code)) {
+    ++index;
     UErrorCode error = U_ZERO_ERROR;
     if (uscript_getScript(code, &error) != USCRIPT_COMMON)
       return true;
Repository: ggml-org/llama.cpp
Pull request: ci : set GITHUB_ACTIONS to true for server tests

This commit tries to address an issue with the server tests which are failing with a timeout. Looking at the logs it seems like they are timing out after 12 seconds:
```
FAILED unit/test_chat_completion.py::test_completion_with_json_schema[False-json_schema0-6-"42"] - TimeoutError: Server did not start within 12 seconds
```

This is somewhat strange as in utils.py we have the following values:
```python
DEFAULT_HTTP_TIMEOUT = 12

if "LLAMA_SANITIZE" in os.environ or "GITHUB_ACTION" in os.environ:
    DEFAULT_HTTP_TIMEOUT = 30

    def start(self, timeout_seconds: int | None = DEFAULT_HTTP_TIMEOUT) -> None:
```
It should be the case that a test running in a github action should have a timeout of 30 seconds. However, it seems like this is not the case. Inspecting the logs from the CI job we can see the following environment variables:
```console
Run cd examples/server/tests
2 cd examples/server/tests
3 ./tests.sh
4 shell: /usr/bin/bash -e {0}
5 env:
6 LLAMA_LOG_COLORS: 1
7 LLAMA_LOG_PREFIX: 1
8 LLAMA_LOG_TIMESTAMPS: 1
9 LLAMA_LOG_VERBOSITY: 10
10 pythonLocation: /opt/hostedtoolcache/Python/3.11.11/x64
```


Changed files:
filename: .github/workflows/server.yml
patch: @@ -161,6 +161,8 @@ jobs:
       - name: Tests
         id: server_integration_tests
         if: ${{ matrix.sanitizer == '' }}
+        env:
+          GITHUB_ACTIONS: "true"
         run: |
           cd examples/server/tests
           ./tests.sh
Repository: huggingface/transformers
Pull request: [`Attention`] Small fix on output attentions

Currently, anytime a user sets `output_attentions` in the config it errors out when not using eager. However, it should only error if the value is actually invalid (ie `True`).

cc @ArthurZucker 

Changed files:
filename: src/transformers/configuration_utils.py
patch: @@ -338,7 +338,7 @@ def output_attentions(self):
 
     @output_attentions.setter
     def output_attentions(self, value):
-        if self._attn_implementation != "eager":
+        if value is True and self._attn_implementation != "eager":
             raise ValueError(
                 "The `output_attentions` attribute is not supported when using the `attn_implementation` set to "
                 f"{self._attn_implementation}. Please set it to 'eager' instead."
Repository: denoland/deno
Pull request: feat(unstable): add test for lint plugin destroy hook

Noticed that we didn't test the `destroy()` hook of lint plugins. This PR adds a test for that.

Changed files:
filename: tests/specs/lint/lint_plugin_lifecycle/__test__.jsonc
patch: @@ -0,0 +1,8 @@
+{
+  "steps": [
+    {
+      "args": "lint a.ts",
+      "output": "lint.out"
+    }
+  ]
+}

filename: tests/specs/lint/lint_plugin_lifecycle/a.ts
patch: @@ -0,0 +1 @@
+const _a = "foo";

filename: tests/specs/lint/lint_plugin_lifecycle/deno.json
patch: @@ -0,0 +1,5 @@
+{
+  "lint": {
+    "plugins": ["./plugin.ts"]
+  }
+}

filename: tests/specs/lint/lint_plugin_lifecycle/lint.out
patch: @@ -0,0 +1,5 @@
+create: test-plugin/my-rule
+create: test-plugin/my-rule-2
+destroy: test-plugin/my-rule
+destroy: test-plugin/my-rule-2
+Checked 1 file

filename: tests/specs/lint/lint_plugin_lifecycle/plugin.ts
patch: @@ -0,0 +1,23 @@
+export default {
+  name: "test-plugin",
+  rules: {
+    "my-rule": {
+      create(ctx) {
+        console.log(`create: ${ctx.id}`);
+        return {};
+      },
+      destroy(ctx) {
+        console.log(`destroy: ${ctx.id}`);
+      },
+    },
+    "my-rule-2": {
+      create(ctx) {
+        console.log(`create: ${ctx.id}`);
+        return {};
+      },
+      destroy(ctx) {
+        console.log(`destroy: ${ctx.id}`);
+      },
+    },
+  },
+};
Repository: facebook/react
Pull request: Remove deprecated workflow key from Circle config

This key was only valid during the 2.0 beta period so we can remove it.

Changed files:
filename: .circleci/config.yml
patch: @@ -426,7 +426,6 @@ jobs:
             scripts/release/publish.js --ci --tags << parameters.dist_tag >>
 
 workflows:
-  version: 2
 
   build_and_test:
     unless: << pipeline.parameters.prerelease_commit_sha >>