gpt-5.5 @ high · cursor-xl

cursor-xlhigh
config
gpt-5.5-eff-high--cli--cursor-xl--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
gpt-5.5-high
采集于
2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.5 @high · cursor-xl P-q slot 0 截图

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。

similarity 邻居

限于 session 2026-07-19--unified

similarity 衡量本 session 内的趋同程度 —— 不是质量。

Fidelity —— 卡片展示的数据对不对?

  • namematch
  • conditionmatch
  • datematch
  • max tempmatch展示值:25
  • min tempmatch展示值:16
  • hourlymatchcoverage 2/24 · 2 命中 · 0 不符 · 22 未展示
  • request sidematch0 处违规

extractor fidelity-extractor-v1+Berlin-2026-07-15

源码 —— 原始模型输出,一字节未改

下载 card.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Weather Card</title>
  <style>
    :root {
      --bg-1: #07111f;
      --bg-2: #102a43;
      --card: rgba(255, 255, 255, 0.14);
      --card-strong: rgba(255, 255, 255, 0.22);
      --stroke: rgba(255, 255, 255, 0.24);
      --text: #f7fbff;
      --muted: rgba(247, 251, 255, 0.72);
      --soft: rgba(247, 251, 255, 0.1);
      --accent: #8bd3ff;
      --warm: #ffd08a;
      --cool: #9bd8ff;
      --danger: #ffb4a8;
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }

    * {
      box-sizing: border-box;
    }

    body {
      margin: 0;
      min-height: 100vh;
      color: var(--text);
      background:
        radial-gradient(circle at 18% 18%, rgba(116, 207, 255, 0.35), transparent 28%),
        radial-gradient(circle at 82% 20%, rgba(255, 198, 109, 0.28), transparent 26%),
        radial-gradient(circle at 50% 105%, rgba(76, 111, 255, 0.28), transparent 38%),
        linear-gradient(135deg, var(--bg-1), var(--bg-2) 58%, #1f3850);
      overflow: hidden;
    }

    .sky {
      position: fixed;
      inset: 0;
      pointer-events: none;
      overflow: hidden;
    }

    .orb {
      position: absolute;
      width: 260px;
      height: 260px;
      right: 108px;
      top: 66px;
      border-radius: 50%;
      background: radial-gradient(circle at 35% 32%, #fff7c7, #ffd16e 48%, rgba(255, 183, 76, 0.16) 72%, transparent 73%);
      filter: blur(0.2px);
      opacity: 0.92;
      box-shadow: 0 0 90px rgba(255, 202, 103, 0.36);
    }

    .cloud {
      position: absolute;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.13);
      box-shadow: 0 22px 70px rgba(4, 13, 26, 0.18);
      backdrop-filter: blur(8px);
    }

    .cloud:before,
    .cloud:after {
      content: "";
      position: absolute;
      border-radius: 50%;
      background: inherit;
    }

    .cloud.one {
      width: 310px;
      height: 82px;
      left: 78px;
      top: 112px;
    }

    .cloud.one:before {
      width: 132px;
      height: 132px;
      left: 42px;
      bottom: 18px;
    }

    .cloud.one:after {
      width: 166px;
      height: 166px;
      right: 38px;
      bottom: 8px;
    }

    .cloud.two {
      width: 220px;
      height: 60px;
      right: 236px;
      bottom: 88px;
      opacity: 0.72;
    }

    .cloud.two:before {
      width: 96px;
      height: 96px;
      left: 26px;
      bottom: 12px;
    }

    .cloud.two:after {
      width: 124px;
      height: 124px;
      right: 26px;
      bottom: 4px;
    }

    main {
      position: relative;
      z-index: 1;
      min-height: 100vh;
      display: grid;
      place-items: center;
      padding: 48px;
    }

    .card {
      width: min(1120px, calc(100vw - 96px));
      min-height: 660px;
      display: grid;
      grid-template-columns: 0.92fr 1.08fr;
      gap: 28px;
      padding: 30px;
      border: 1px solid var(--stroke);
      border-radius: 38px;
      background:
        linear-gradient(145deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.08)),
        rgba(8, 21, 38, 0.42);
      box-shadow: 0 34px 110px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.24);
      backdrop-filter: blur(24px);
    }

    .panel {
      border: 1px solid rgba(255, 255, 255, 0.16);
      border-radius: 30px;
      background: rgba(255, 255, 255, 0.09);
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14);
    }

    .hero {
      position: relative;
      overflow: hidden;
      padding: 34px;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
    }

    .hero:after {
      content: "";
      position: absolute;
      width: 360px;
      height: 360px;
      right: -128px;
      bottom: -128px;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(139, 211, 255, 0.34), transparent 68%);
    }

    .eyebrow {
      margin: 0 0 12px;
      color: var(--muted);
      font-size: 14px;
      font-weight: 700;
      letter-spacing: 0.18em;
      text-transform: uppercase;
    }

    h1 {
      margin: 0;
      max-width: 390px;
      font-size: 52px;
      line-height: 0.98;
      letter-spacing: -0.055em;
    }

    .date {
      margin-top: 18px;
      color: var(--muted);
      font-size: 18px;
      font-weight: 600;
    }

    .condition-art {
      position: relative;
      width: 230px;
      height: 190px;
      margin: 28px auto 20px;
    }

    .sun {
      position: absolute;
      right: 16px;
      top: 4px;
      width: 126px;
      height: 126px;
      border-radius: 50%;
      background: radial-gradient(circle at 34% 31%, #fff8cc, #ffd36f 54%, #ffad49);
      box-shadow: 0 0 52px rgba(255, 195, 85, 0.54);
    }

    .art-cloud {
      position: absolute;
      left: 4px;
      bottom: 24px;
      width: 188px;
      height: 70px;
      border-radius: 999px;
      background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(215, 236, 255, 0.88));
      box-shadow: 0 20px 42px rgba(7, 18, 32, 0.24);
    }

    .art-cloud:before,
    .art-cloud:after {
      content: "";
      position: absolute;
      border-radius: 50%;
      background: inherit;
    }

    .art-cloud:before {
      width: 94px;
      height: 94px;
      left: 26px;
      bottom: 22px;
    }

    .art-cloud:after {
      width: 112px;
      height: 112px;
      right: 20px;
      bottom: 12px;
    }

    .temp-row {
      position: relative;
      z-index: 1;
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 14px;
    }

    .temp-box {
      padding: 22px;
      border-radius: 24px;
      background: rgba(255, 255, 255, 0.12);
      border: 1px solid rgba(255, 255, 255, 0.16);
    }

    .temp-box span {
      display: block;
      color: var(--muted);
      font-size: 13px;
      font-weight: 800;
      letter-spacing: 0.15em;
      text-transform: uppercase;
    }

    .temp-box strong {
      display: block;
      margin-top: 8px;
      font-size: 42px;
      line-height: 1;
      letter-spacing: -0.06em;
    }

    .details {
      padding: 28px;
      display: grid;
      grid-template-rows: auto auto 1fr;
      gap: 22px;
    }

    .status {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
      padding: 24px;
      border-radius: 26px;
      background: linear-gradient(135deg, rgba(139, 211, 255, 0.2), rgba(255, 255, 255, 0.09));
      border: 1px solid rgba(255, 255, 255, 0.16);
    }

    .status h2 {
      margin: 0;
      font-size: 30px;
      letter-spacing: -0.04em;
    }

    .status p {
      margin: 8px 0 0;
      color: var(--muted);
      font-size: 15px;
      line-height: 1.5;
    }

    .badge {
      flex: 0 0 auto;
      padding: 12px 16px;
      border-radius: 999px;
      color: #082136;
      background: linear-gradient(135deg, #d8f2ff, #8bd3ff);
      font-size: 13px;
      font-weight: 900;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      box-shadow: 0 14px 32px rgba(67, 177, 237, 0.25);
    }

    .metrics {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 14px;
    }

    .metric {
      min-height: 112px;
      padding: 18px;
      border-radius: 24px;
      background: rgba(255, 255, 255, 0.1);
      border: 1px solid rgba(255, 255, 255, 0.14);
    }

    .metric span {
      display: block;
      color: var(--muted);
      font-size: 12px;
      font-weight: 800;
      letter-spacing: 0.14em;
      text-transform: uppercase;
    }

    .metric strong {
      display: block;
      margin-top: 13px;
      font-size: 28px;
      line-height: 1.05;
      letter-spacing: -0.045em;
    }

    .hourly {
      min-height: 310px;
      padding: 22px;
      border-radius: 28px;
      background: rgba(3, 12, 23, 0.22);
      border: 1px solid rgba(255, 255, 255, 0.14);
    }

    .hourly-head {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      gap: 18px;
      margin-bottom: 18px;
    }

    .hourly-head h3 {
      margin: 0;
      font-size: 22px;
      letter-spacing: -0.035em;
    }

    .hourly-head span {
      color: var(--muted);
      font-size: 13px;
      font-weight: 700;
    }

    .chart {
      height: 230px;
      display: grid;
      grid-template-columns: repeat(24, minmax(12px, 1fr));
      align-items: end;
      gap: 6px;
    }

    .bar-wrap {
      min-width: 0;
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      align-items: center;
      gap: 7px;
    }

    .bar-value {
      color: rgba(247, 251, 255, 0.82);
      font-size: 11px;
      font-weight: 800;
      opacity: 0;
      transform: translateY(4px);
      transition: 160ms ease;
      white-space: nowrap;
    }

    .bar {
      width: 100%;
      min-height: 8px;
      border-radius: 999px 999px 8px 8px;
      background: linear-gradient(180deg, var(--warm), var(--accent));
      box-shadow: 0 10px 22px rgba(46, 168, 231, 0.2);
    }

    .bar-hour {
      color: rgba(247, 251, 255, 0.58);
      font-size: 10px;
      font-weight: 800;
    }

    .bar-wrap:hover .bar-value {
      opacity: 1;
      transform: translateY(0);
    }

    .message {
      grid-column: 1 / -1;
      display: grid;
      place-items: center;
      min-height: 590px;
      padding: 40px;
      text-align: center;
    }

    .message-box {
      max-width: 560px;
      padding: 36px;
      border-radius: 30px;
      background: rgba(255, 255, 255, 0.12);
      border: 1px solid rgba(255, 255, 255, 0.18);
    }

    .spinner {
      width: 54px;
      height: 54px;
      margin: 0 auto 22px;
      border-radius: 50%;
      border: 4px solid rgba(255, 255, 255, 0.18);
      border-top-color: var(--accent);
      animation: spin 900ms linear infinite;
    }

    .message h2 {
      margin: 0;
      font-size: 34px;
      letter-spacing: -0.045em;
    }

    .message p {
      margin: 12px 0 0;
      color: var(--muted);
      font-size: 17px;
      line-height: 1.55;
    }

    .error .message-box {
      border-color: rgba(255, 180, 168, 0.4);
      background: rgba(120, 30, 24, 0.18);
    }

    @keyframes spin {
      to {
        transform: rotate(360deg);
      }
    }

    @media (max-width: 900px) {
      body {
        overflow: auto;
      }

      main {
        padding: 24px;
      }

      .card {
        width: 100%;
        grid-template-columns: 1fr;
        min-height: auto;
      }

      .chart {
        grid-template-columns: repeat(12, 1fr);
        height: 330px;
      }
    }
  </style>
</head>
<body>
  <div class="sky" aria-hidden="true">
    <div class="orb"></div>
    <div class="cloud one"></div>
    <div class="cloud two"></div>
  </div>

  <main>
    <section id="app" class="card" aria-live="polite">
      <div class="message">
        <div class="message-box">
          <div class="spinner" aria-hidden="true"></div>
          <h2>Loading weather</h2>
          <p>Fetching the requested day from the local weather API.</p>
        </div>
      </div>
    </section>
  </main>

  <script>
    (function () {
      "use strict";

      var weatherCodes = {
        0: "Clear sky",
        1: "Mainly clear",
        2: "Partly cloudy",
        3: "Overcast",
        45: "Fog",
        48: "Depositing rime fog",
        51: "Light drizzle",
        53: "Moderate drizzle",
        55: "Dense drizzle",
        56: "Light freezing drizzle",
        57: "Dense freezing drizzle",
        61: "Slight rain",
        63: "Moderate rain",
        65: "Heavy rain",
        66: "Light freezing rain",
        67: "Heavy freezing rain",
        71: "Slight snow",
        73: "Moderate snow",
        75: "Heavy snow",
        77: "Snow grains",
        80: "Slight rain showers",
        81: "Moderate rain showers",
        82: "Violent rain showers",
        85: "Slight snow showers",
        86: "Heavy snow showers",
        95: "Thunderstorm",
        96: "Thunderstorm with hail",
        99: "Thunderstorm with heavy hail"
      };

      var app = document.getElementById("app");
      var params = new URLSearchParams(window.location.search);
      var today = new Date().toISOString().slice(0, 10);

      var lat = parseNumber(params.get("lat"), 52.52);
      var lon = parseNumber(params.get("lon"), 13.405);
      var name = cleanText(params.get("name") || "Berlin");
      var date = isDate(params.get("date")) ? params.get("date") : today;

      loadWeather();

      function parseNumber(value, fallback) {
        var number = Number(value);
        return Number.isFinite(number) ? number : fallback;
      }

      function isDate(value) {
        return typeof value === "string" && /^\d{4}-\d{2}-\d{2}$/.test(value) && !Number.isNaN(Date.parse(value + "T00:00:00Z"));
      }

      function cleanText(value) {
        return String(value).replace(/\s+/g, " ").trim().slice(0, 80) || "Berlin";
      }

      function formatDate(value) {
        return new Intl.DateTimeFormat("en", {
          weekday: "long",
          month: "long",
          day: "numeric",
          year: "numeric",
          timeZone: "UTC"
        }).format(new Date(value + "T00:00:00Z"));
      }

      function formatTemp(value) {
        return Number.isFinite(value) ? Math.round(value) + "°C" : "Unavailable";
      }

      function endpointFor(value) {
        return value < today ? "/api/om/archive" : "/api/om/forecast";
      }

      function buildUrl() {
        var query = new URLSearchParams({
          latitude: String(lat),
          longitude: String(lon),
          daily: "temperature_2m_max,temperature_2m_min,weather_code",
          hourly: "temperature_2m",
          timezone: "UTC",
          temperature_unit: "celsius",
          start_date: date,
          end_date: date
        });

        return endpointFor(date) + "?" + query.toString();
      }

      async function loadWeather() {
        try {
          var response = await fetch(buildUrl(), { credentials: "same-origin" });
          if (!response.ok) {
            throw new Error("Weather service returned " + response.status);
          }

          var data = await response.json();
          var daily = data && data.daily;
          var hourly = data && data.hourly;

          if (!daily || !hourly || !Array.isArray(daily.time) || daily.time.length === 0) {
            throw new Error("Weather data was incomplete");
          }

          var dayIndex = daily.time.indexOf(date);
          if (dayIndex === -1) {
            dayIndex = 0;
          }

          var max = Number(daily.temperature_2m_max && daily.temperature_2m_max[dayIndex]);
          var min = Number(daily.temperature_2m_min && daily.temperature_2m_min[dayIndex]);
          var code = Number(daily.weather_code && daily.weather_code[dayIndex]);
          var hours = extractHours(hourly);

          if (!hours.length || !Number.isFinite(max) || !Number.isFinite(min)) {
            throw new Error("Weather data was incomplete");
          }

          render({
            location: name,
            date: date,
            dateLabel: formatDate(date),
            max: max,
            min: min,
            code: code,
            condition: weatherCodes[code] || "Weather code " + code,
            hours: hours
          });
        } catch (error) {
          renderError();
        }
      }

      function extractHours(hourly) {
        var times = Array.isArray(hourly.time) ? hourly.time : [];
        var temps = Array.isArray(hourly.temperature_2m) ? hourly.temperature_2m : [];

        return times.map(function (time, index) {
          return {
            time: time,
            hour: time.slice(11, 16),
            temp: Number(temps[index])
          };
        }).filter(function (item) {
          return item.time.indexOf(date + "T") === 0 && Number.isFinite(item.temp);
        });
      }

      function render(model) {
        var highHour = model.hours.reduce(function (best, item) {
          return item.temp > best.temp ? item : best;
        }, model.hours[0]);

        var lowHour = model.hours.reduce(function (best, item) {
          return item.temp < best.temp ? item : best;
        }, model.hours[0]);

        app.className = "card";
        app.innerHTML =
          '<section class="panel hero">' +
            '<div>' +
              '<p class="eyebrow">Weather card</p>' +
              '<h1>' + escapeHtml(model.location) + '</h1>' +
              '<div class="date">' + escapeHtml(model.dateLabel) + '</div>' +
            '</div>' +
            '<div class="condition-art" aria-hidden="true">' +
              '<div class="sun"></div>' +
              '<div class="art-cloud"></div>' +
            '</div>' +
            '<div class="temp-row">' +
              '<div class="temp-box"><span>Maximum</span><strong>' + formatTemp(model.max) + '</strong></div>' +
              '<div class="temp-box"><span>Minimum</span><strong>' + formatTemp(model.min) + '</strong></div>' +
            '</div>' +
          '</section>' +
          '<section class="panel details">' +
            '<div class="status">' +
              '<div>' +
                '<h2>' + escapeHtml(model.condition) + '</h2>' +
                '<p>Daily summary and hourly temperatures for ' + escapeHtml(model.date) + ' in UTC.</p>' +
              '</div>' +
              '<div class="badge">Celsius</div>' +
            '</div>' +
            '<div class="metrics">' +
              '<div class="metric"><span>Location</span><strong>' + escapeHtml(model.location) + '</strong></div>' +
              '<div class="metric"><span>Warmest hour</span><strong>' + escapeHtml(highHour.hour) + ' · ' + formatTemp(highHour.temp) + '</strong></div>' +
              '<div class="metric"><span>Coolest hour</span><strong>' + escapeHtml(lowHour.hour) + ' · ' + formatTemp(lowHour.temp) + '</strong></div>' +
            '</div>' +
            '<div class="hourly">' +
              '<div class="hourly-head">' +
                '<h3>Hourly Temperatures</h3>' +
                '<span>' + model.hours.length + ' readings</span>' +
              '</div>' +
              '<div class="chart" role="img" aria-label="Hourly temperatures for ' + escapeHtml(model.date) + '">' +
                model.hours.map(renderBar).join("") +
              '</div>' +
            '</div>' +
          '</section>';
      }

      function renderBar(item, index, list) {
        var temps = list.map(function (entry) { return entry.temp; });
        var min = Math.min.apply(Math, temps);
        var max = Math.max.apply(Math, temps);
        var range = Math.max(1, max - min);
        var height = 22 + ((item.temp - min) / range) * 78;
        var labelHour = item.hour.slice(0, 2);
        var showHour = index % 3 === 0 ? labelHour : "";

        return '<div class="bar-wrap" title="' + escapeHtml(item.hour + " · " + formatTemp(item.temp)) + '">' +
          '<div class="bar-value">' + formatTemp(item.temp) + '</div>' +
          '<div class="bar" style="height:' + height.toFixed(2) + '%"></div>' +
          '<div class="bar-hour">' + escapeHtml(showHour) + '</div>' +
        '</div>';
      }

      function renderError() {
        app.className = "card error";
        app.innerHTML =
          '<div class="message">' +
            '<div class="message-box">' +
              '<h2>Weather data could not be loaded</h2>' +
              '<p>Please check the requested location, date, and local API availability, then reload the page.</p>' +
            '</div>' +
          '</div>';
      }

      function escapeHtml(value) {
        return String(value).replace(/[&<>"']/g, function (char) {
          return {
            "&": "&amp;",
            "<": "&lt;",
            ">": "&gt;",
            '"': "&quot;",
            "'": "&#39;"
          }[char];
        });
      }
    })();
  </script>
</body>
</html>

L1 —— 廉价的确定性描述量

bytes 总计20,068html / css / js723 / 10,558 / 8,787
dom 节点19dom 深度7
css 规则63含 js是
brightness89.5contrast43.9
colorfulness27.6留白34.8%

该 slot 的 telemetry

prompt tokens2,703completion tokens6,346
total tokens9,049wall68 s
cost—request id—
config.json559 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.5-eff-high--cli--cursor-xl--dev",
  "effort": "high",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.5",
  "protocol": "cli",
  "served_model": "gpt-5.5-high",
  "telemetry": {
    "completion_tokens": 21683,
    "cost_usd": null,
    "prompt_tokens": 52280,
    "total_tokens": 73963,
    "wall_ms": 246323
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-xl-s1",
  "config_id": "gpt-5.5-eff-high--cli--cursor-xl--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T08:52:52.446559+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:51:44.473745+00:00"
        }
      ],
      "block_index": 0,
      "model_reaching_attempt_index": 0,
      "slot_index": 0,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T08:53:42.407116+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:52:56.609700+00:00"
        }
      ],
      "block_index": 0,
      "model_reaching_attempt_index": 0,
      "slot_index": 0,
      "terminal_state": "valid",
      "variant": "P-min"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T08:54:40.695737+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:53:46.119864+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "valid",
      "variant": "P-min"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T08:56:01.980047+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:54:43.998356+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "valid",
      "variant": "P-q"
    }
  ],
  "retry_policy": {
    "max_unreachable_retries": 5,
    "rate_limit_backoff": {
      "max_attempts": 4,
      "max_total_ms": 60000
    }
  }
}