gpt-5.1 @ high · cursor-xl

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

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

similarity 邻居本 session 没有 similarity 数据 —— 这个 batch 没有计算 pairs。

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

  • namematch
  • conditionmatch
  • datematch
  • max tempambiguousinsufficient-distinct-temperature-nodes
  • min tempambiguousinsufficient-distinct-temperature-nodes
  • hourlyambiguouscoverage · 0 命中 · 0 不符 · 24 未展示
  • request sidematch0 处违规

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

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

下载 card.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Weather card</title>
  <meta name="viewport" content="width=1280, height=800, initial-scale=1.0">
  <meta name="color-scheme" content="dark">
  <link rel="icon" href="data:,">
  <style>
    :root {
      --bg: #020617;
      --card-bg: rgba(15, 23, 42, 0.94);
      --card-border: rgba(148, 163, 184, 0.35);
      --accent: #38bdf8;
      --accent-soft: rgba(56, 189, 248, 0.2);
      --accent-strong: #0ea5e9;
      --text-main: #e5e7eb;
      --text-muted: #9ca3af;
      --danger: #f97373;
      --radius-xl: 24px;
      --shadow-soft: 0 24px 70px rgba(15, 23, 42, 0.9);
    }

    * {
      box-sizing: border-box;
    }

    body {
      margin: 0;
      min-height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
      background:
        radial-gradient(circle at top left, #0f172a 0, #020617 45%),
        radial-gradient(circle at bottom right, #0369a1 0, #020617 55%);
      color: var(--text-main);
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif;
      -webkit-font-smoothing: antialiased;
    }

    .app-shell {
      width: 100%;
      max-width: 1280px;
      padding: 40px 24px;
    }

    .weather-card {
      position: relative;
      max-width: 640px;
      margin: 0 auto;
      background:
        radial-gradient(circle at top left, rgba(56, 189, 248, 0.18), transparent 55%),
        radial-gradient(circle at bottom right, rgba(129, 140, 248, 0.18), transparent 55%),
        var(--card-bg);
      border-radius: var(--radius-xl);
      border: 1px solid var(--card-border);
      box-shadow: var(--shadow-soft);
      padding: 26px 26px 22px;
      overflow: hidden;
      backdrop-filter: blur(22px);
    }

    .weather-card::before {
      content: "";
      position: absolute;
      inset: -1px;
      background:
        radial-gradient(circle at top, rgba(248, 250, 252, 0.06), transparent 62%);
      mix-blend-mode: screen;
      opacity: 0.65;
      pointer-events: none;
    }

    .weather-card-inner {
      position: relative;
      z-index: 1;
    }

    .card-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 18px;
      margin-bottom: 18px;
    }

    .card-eyebrow {
      text-transform: uppercase;
      letter-spacing: 0.18em;
      font-size: 11px;
      color: var(--accent);
      margin: 0 0 6px;
    }

    .location {
      font-size: 26px;
      line-height: 1.2;
      font-weight: 600;
      letter-spacing: 0.02em;
      margin: 0 0 4px;
    }

    .date-label {
      margin: 0;
      font-size: 13px;
      color: var(--text-muted);
    }

    .temp-pill {
      align-self: flex-start;
      padding: 10px 14px;
      border-radius: 999px;
      background:
        linear-gradient(135deg, rgba(56, 189, 248, 0.18), rgba(59, 130, 246, 0.12));
      border: 1px solid rgba(148, 163, 184, 0.5);
      box-shadow:
        0 12px 32px rgba(15, 23, 42, 0.9),
        0 0 0 1px rgba(15, 23, 42, 0.8) inset;
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      gap: 2px;
      min-width: 88px;
    }

    .temp-pill-main {
      font-size: 24px;
      line-height: 1;
      font-weight: 600;
    }

    .temp-pill-caption {
      font-size: 11px;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: rgba(226, 232, 240, 0.82);
    }

    .card-main {
      display: grid;
      grid-template-columns: minmax(0, 1.3fr) minmax(0, 1.7fr);
      gap: 20px;
      align-items: stretch;
    }

    .summary {
      padding-right: 10px;
      border-right: 1px solid rgba(148, 163, 184, 0.32);
      display: flex;
      flex-direction: column;
      gap: 14px;
    }

    .summary-temps {
      display: flex;
      gap: 12px;
    }

    .temp-stat {
      flex: 1;
      padding: 9px 10px;
      border-radius: 16px;
      background: rgba(15, 23, 42, 0.92);
      border: 1px solid rgba(148, 163, 184, 0.5);
      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.8);
      display: flex;
      flex-direction: column;
      gap: 2px;
    }

    .temp-stat-label {
      font-size: 10px;
      text-transform: uppercase;
      letter-spacing: 0.16em;
      color: rgba(148, 163, 184, 0.95);
    }

    .temp-stat-value {
      font-size: 20px;
      font-weight: 600;
      line-height: 1.1;
    }

    .temp-stat-hint {
      font-size: 11px;
      color: var(--text-muted);
    }

    .summary-meta {
      display: flex;
      flex-direction: column;
      gap: 8px;
      padding: 9px 10px 9px 0;
    }

    .summary-row {
      display: flex;
      justify-content: space-between;
      align-items: baseline;
      gap: 10px;
      font-size: 12px;
    }

    .summary-label {
      text-transform: uppercase;
      letter-spacing: 0.16em;
      color: rgba(148, 163, 184, 0.9);
      font-size: 10px;
    }

    .summary-value {
      font-size: 13px;
      font-weight: 500;
      color: var(--text-main);
    }

    .summary-description {
      font-size: 13px;
      color: var(--text-muted);
    }

    .badge {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 2px 8px 3px;
      border-radius: 999px;
      border: 1px solid rgba(148, 163, 184, 0.5);
      background: radial-gradient(circle at top left, rgba(56, 189, 248, 0.24), rgba(15, 23, 42, 0.96));
      font-size: 11px;
      color: rgba(226, 232, 240, 0.94);
      margin-top: 2px;
      align-self: flex-start;
    }

    .badge-dot {
      width: 7px;
      height: 7px;
      border-radius: 999px;
      background: radial-gradient(circle, var(--accent-strong), var(--accent));
      box-shadow: 0 0 12px rgba(56, 189, 248, 0.9);
    }

    .hourly-section {
      display: flex;
      flex-direction: column;
      gap: 10px;
    }

    .section-header {
      display: flex;
      justify-content: space-between;
      align-items: baseline;
      gap: 12px;
    }

    .section-title {
      font-size: 13px;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      color: rgba(148, 163, 184, 0.96);
    }

    .section-subtitle {
      font-size: 11px;
      color: var(--text-muted);
    }

    .hourly-scroller {
      display: flex;
      gap: 8px;
      padding: 4px 2px 2px;
      overflow-x: auto;
      scrollbar-width: thin;
      scrollbar-color: rgba(148, 163, 184, 0.7) transparent;
    }

    .hourly-scroller::-webkit-scrollbar {
      height: 6px;
    }

    .hourly-scroller::-webkit-scrollbar-track {
      background: transparent;
    }

    .hourly-scroller::-webkit-scrollbar-thumb {
      background: rgba(148, 163, 184, 0.65);
      border-radius: 999px;
    }

    .hour-chip {
      min-width: 64px;
      padding: 7px 8px 6px;
      border-radius: 14px;
      background: rgba(15, 23, 42, 0.95);
      border: 1px solid rgba(148, 163, 184, 0.55);
      display: flex;
      flex-direction: column;
      gap: 3px;
      font-size: 11px;
      color: var(--text-main);
      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.85);
    }

    .hour-label {
      font-weight: 500;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: rgba(148, 163, 184, 0.96);
    }

    .hour-temp {
      font-size: 13px;
      font-weight: 500;
    }

    .hour-temp-bar {
      position: relative;
      height: 4px;
      border-radius: 999px;
      background: rgba(30, 64, 175, 0.75);
      overflow: hidden;
      margin-top: 1px;
    }

    .hour-temp-fill {
      display: block;
      height: 100%;
      border-radius: inherit;
      background: linear-gradient(90deg, rgba(56, 189, 248, 0.1), rgba(56, 189, 248, 0.95));
      box-shadow: 0 0 12px rgba(56, 189, 248, 0.85);
      transform-origin: left;
    }

    .placeholder {
      font-size: 12px;
      color: var(--text-muted);
    }

    .card-footer {
      margin-top: 18px;
      display: flex;
      justify-content: space-between;
      align-items: baseline;
      gap: 12px;
      font-size: 11px;
      color: var(--text-muted);
    }

    .status-text {
      white-space: nowrap;
    }

    .status-text.status-error {
      color: var(--danger);
      font-weight: 500;
    }

    .coords {
      text-align: right;
      white-space: nowrap;
    }

    .coords strong {
      color: rgba(226, 232, 240, 0.92);
      font-weight: 500;
    }

    @media (max-width: 900px) {
      .card-main {
        grid-template-columns: minmax(0, 1fr);
      }
      .summary {
        border-right: none;
        border-bottom: 1px solid rgba(148, 163, 184, 0.32);
        padding-right: 0;
        padding-bottom: 14px;
      }
    }

    @media (max-width: 640px) {
      body {
        align-items: stretch;
      }
      .app-shell {
        padding: 16px;
      }
      .weather-card {
        max-width: 100%;
        padding: 20px 18px 18px;
      }
      .location {
        font-size: 22px;
      }
      .card-main {
        gap: 16px;
      }
      .card-footer {
        flex-direction: column-reverse;
        align-items: flex-start;
      }
      .coords {
        text-align: left;
      }
    }
  </style>
</head>
<body>
  <div class="app-shell">
    <div class="weather-card" id="weatherCard">
      <div class="weather-card-inner">
        <header class="card-header">
          <div>
            <p class="card-eyebrow">Daily snapshot</p>
            <h1 class="location" id="locationName">Berlin</h1>
            <p class="date-label" id="dateLabel">Today · UTC</p>
          </div>
          <div class="temp-pill">
            <span class="temp-pill-main" id="tempMaxValue">--°</span>
            <span class="temp-pill-caption">Daytime high</span>
          </div>
        </header>

        <main class="card-main">
          <section class="summary" aria-label="Daily summary">
            <div class="summary-temps">
              <div class="temp-stat">
                <span class="temp-stat-label">High</span>
                <span class="temp-stat-value" id="tempMaxValueSecondary">--°</span>
                <span class="temp-stat-hint">Peak temperature</span>
              </div>
              <div class="temp-stat">
                <span class="temp-stat-label">Low</span>
                <span class="temp-stat-value" id="tempMinValue">--°</span>
                <span class="temp-stat-hint">Overnight minimum</span>
              </div>
            </div>

            <div class="summary-meta">
              <div class="summary-row">
                <span class="summary-label">Conditions</span>
                <span class="summary-value" id="weatherDescription">Waiting for data…</span>
              </div>
              <div class="summary-row">
                <span class="summary-label">Range</span>
                <span class="summary-value" id="tempRangeLabel">—</span>
              </div>
              <p class="summary-description" id="summaryHint">
                Hourly temperatures are shown for the selected day in UTC.
              </p>
              <div class="badge">
                <span class="badge-dot" aria-hidden="true"></span>
                <span id="badgeText">Live daily forecast</span>
              </div>
            </div>
          </section>

          <section class="hourly-section" aria-label="Hourly temperatures">
            <div class="section-header">
              <h2 class="section-title">Hourly temperatures</h2>
              <span class="section-subtitle" id="timezoneLabel">All times in UTC</span>
            </div>
            <div class="hourly-scroller" id="hourlyList">
              <p class="placeholder">Loading hourly data…</p>
            </div>
          </section>
        </main>

        <footer class="card-footer">
          <span class="status-text" id="statusMessage">Loading weather data…</span>
          <span class="coords" id="coordinatesLabel">
            <strong>lat</strong> 52.52,&nbsp;<strong>lon</strong> 13.41
          </span>
        </footer>
      </div>
    </div>
  </div>

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

      var DEFAULT_LAT = 52.52;
      var DEFAULT_LON = 13.405;
      var DEFAULT_NAME = "Berlin";

      var weatherCard = document.getElementById("weatherCard");
      var locationNameEl = document.getElementById("locationName");
      var dateLabelEl = document.getElementById("dateLabel");
      var tempMaxPillEl = document.getElementById("tempMaxValue");
      var tempMaxSecondaryEl = document.getElementById("tempMaxValueSecondary");
      var tempMinEl = document.getElementById("tempMinValue");
      var tempRangeEl = document.getElementById("tempRangeLabel");
      var weatherDescEl = document.getElementById("weatherDescription");
      var hourlyListEl = document.getElementById("hourlyList");
      var statusEl = document.getElementById("statusMessage");
      var coordsEl = document.getElementById("coordinatesLabel");
      var timezoneLabelEl = document.getElementById("timezoneLabel");
      var badgeTextEl = document.getElementById("badgeText");

      function getTodayUtcString() {
        return new Date().toISOString().slice(0, 10);
      }

      function safeParseFloat(value, fallback) {
        if (value == null || value === "") return fallback;
        var n = parseFloat(value);
        return isFinite(n) ? n : fallback;
      }

      function parseQueryParams() {
        var params = new URLSearchParams(window.location.search || "");
        var lat = safeParseFloat(params.get("lat"), DEFAULT_LAT);
        var lon = safeParseFloat(params.get("lon"), DEFAULT_LON);

        var rawName = params.get("name");
        var name = rawName && rawName.trim() ? rawName.trim() : DEFAULT_NAME;

        var todayUtc = getTodayUtcString();
        var date = params.get("date");
        if (!date || !/^\d{4}-\d{2}-\d{2}$/.test(date)) {
          date = todayUtc;
        }

        return {
          lat: lat,
          lon: lon,
          name: name,
          date: date,
          todayUtc: todayUtc
        };
      }

      function formatDateLabel(dateStr) {
        try {
          var date = new Date(dateStr + "T00:00:00Z");
          var formatted = date.toLocaleDateString(undefined, {
            weekday: "long",
            year: "numeric",
            month: "short",
            day: "numeric",
            timeZone: "UTC"
          });
          return formatted + " · UTC";
        } catch (e) {
          return dateStr + " · UTC";
        }
      }

      function setStatus(message, isError) {
        if (!statusEl) return;
        statusEl.textContent = message;
        if (isError) {
          statusEl.classList.add("status-error");
        } else {
          statusEl.classList.remove("status-error");
        }
      }

      function mapWeatherCodeToDescription(code) {
        if (typeof code !== "number") return "Conditions unavailable";
        var mapping = {
          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 snowfall",
          73: "Moderate snowfall",
          75: "Heavy snowfall",
          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 slight hail",
          99: "Thunderstorm with heavy hail"
        };
        return mapping.hasOwnProperty(code) ? mapping[code] : "Unknown conditions";
      }

      function formatTemp(value) {
        if (typeof value !== "number" || !isFinite(value)) return "--°";
        return Math.round(value) + "°";
      }

      function buildApiUrl(meta) {
        var isPast = meta.date < meta.todayUtc;
        var baseUrl = isPast ? "/api/om/archive" : "/api/om/forecast";

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

        return {
          url: baseUrl + "?" + params.toString(),
          isArchive: isPast
        };
      }

      function renderHourly(hourly, dateStr) {
        hourlyListEl.innerHTML = "";

        if (
          !hourly ||
          !Array.isArray(hourly.time) ||
          !Array.isArray(hourly.temperature_2m)
        ) {
          hourlyListEl.innerHTML =
            '<p class="placeholder">Hourly data is not available.</p>';
          return;
        }

        var times = hourly.time;
        var temps = hourly.temperature_2m;
        var items = [];

        for (var i = 0; i < times.length; i++) {
          var t = times[i];
          if (typeof t !== "string") continue;
          if (t.slice(0, 10) !== dateStr) continue;
          var temp = temps[i];
          if (typeof temp !== "number" || !isFinite(temp)) continue;
          items.push({ time: t, temp: temp });
        }

        if (!items.length) {
          hourlyListEl.innerHTML =
            '<p class="placeholder">Hourly temperature data is not available for this date.</p>';
          return;
        }

        var minTemp = Infinity;
        var maxTemp = -Infinity;
        for (var j = 0; j < items.length; j++) {
          var v = items[j].temp;
          if (v < minTemp) minTemp = v;
          if (v > maxTemp) maxTemp = v;
        }

        if (!isFinite(minTemp) || !isFinite(maxTemp)) {
          hourlyListEl.innerHTML =
            '<p class="placeholder">Hourly temperature data is not available.</p>';
          return;
        }

        var range = maxTemp - minTemp;
        if (range === 0) range = 1;

        for (var k = 0; k < items.length; k++) {
          var item = items[k];
          var chip = document.createElement("div");
          chip.className = "hour-chip";

          var label = document.createElement("div");
          label.className = "hour-label";
          label.textContent = item.time.slice(11, 16);

          var tempEl = document.createElement("div");
          tempEl.className = "hour-temp";
          tempEl.textContent = Math.round(item.temp) + "°";

          var bar = document.createElement("div");
          bar.className = "hour-temp-bar";

          var fill = document.createElement("span");
          fill.className = "hour-temp-fill";

          var pct = (item.temp - minTemp) / range;
          var width = 30 + pct * 70; // keep within 30–100%
          fill.style.width = width.toFixed(0) + "%";

          bar.appendChild(fill);
          chip.appendChild(label);
          chip.appendChild(tempEl);
          chip.appendChild(bar);
          hourlyListEl.appendChild(chip);
        }
      }

      function render(meta, data) {
        var daily = data && data.daily;
        if (
          !daily ||
          !Array.isArray(daily.time) ||
          !daily.time.length ||
          !daily.temperature_2m_max ||
          !daily.temperature_2m_min ||
          !daily.weather_code
        ) {
          throw new Error("Invalid daily data");
        }

        var max = daily.temperature_2m_max[0];
        var min = daily.temperature_2m_min[0];
        var code = daily.weather_code[0];

        locationNameEl.textContent = meta.name;
        dateLabelEl.textContent = formatDateLabel(meta.date);
        timezoneLabelEl.textContent = "All times in UTC";
        coordsEl.innerHTML =
          "<strong>lat</strong> " +
          meta.lat.toFixed(2) +
          ",&nbsp;<strong>lon</strong> " +
          meta.lon.toFixed(2);

        document.title = meta.name + " · " + meta.date + " weather";

        var maxDisplay = formatTemp(max);
        var minDisplay = formatTemp(min);

        tempMaxPillEl.textContent = maxDisplay;
        tempMaxSecondaryEl.textContent = maxDisplay;
        tempMinEl.textContent = minDisplay;

        if (typeof max === "number" && isFinite(max) && typeof min === "number" && isFinite(min)) {
          tempRangeEl.textContent =
            Math.round(min) + "° / " + Math.round(max) + "°C";
        } else {
          tempRangeEl.textContent = "—";
        }

        var desc = mapWeatherCodeToDescription(typeof code === "number" ? code : NaN);
        weatherDescEl.textContent = desc;

        if (typeof code === "number" && meta.date < meta.todayUtc) {
          badgeTextEl.textContent = "Historical daily archive";
        } else if (meta.date === meta.todayUtc) {
          badgeTextEl.textContent = "Today’s live snapshot";
        } else {
          badgeTextEl.textContent = "Future daily forecast";
        }

        if (data && data.hourly) {
          renderHourly(data.hourly, meta.date);
        } else {
          hourlyListEl.innerHTML =
            '<p class="placeholder">Hourly data is not available.</p>';
        }
      }

      function loadWeather() {
        var meta = parseQueryParams();

        locationNameEl.textContent = meta.name;
        dateLabelEl.textContent = formatDateLabel(meta.date);
        timezoneLabelEl.textContent = "All times in UTC";
        coordsEl.innerHTML =
          "<strong>lat</strong> " +
          meta.lat.toFixed(2) +
          ",&nbsp;<strong>lon</strong> " +
          meta.lon.toFixed(2);

        setStatus("Loading weather data…", false);

        var api = buildApiUrl(meta);

        if (meta.date < meta.todayUtc) {
          badgeTextEl.textContent = "Historical daily archive";
        } else if (meta.date === meta.todayUtc) {
          badgeTextEl.textContent = "Today’s live snapshot";
        } else {
          badgeTextEl.textContent = "Future daily forecast";
        }

        fetch(api.url)
          .then(function (response) {
            if (!response.ok) {
              throw new Error("HTTP " + response.status);
            }
            return response.json();
          })
          .then(function (data) {
            render(meta, data);
            setStatus("Updated just now.", false);
          })
          .catch(function (error) {
            console.error(error);
            hourlyListEl.innerHTML =
              '<p class="placeholder">Unable to load hourly data.</p>';
            setStatus("Unable to load weather data.", true);
          });
      }

      loadWeather();
    })();
  </script>
</body>
</html>

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

bytes 总计22,910html / css / js3,200 / 8,899 / 10,811
dom 节点54dom 深度10
css 规则58含 js
brightness16.3contrast13.3
colorfulness13.4留白92.7%

该 slot 的 telemetry

prompt tokens17,616completion tokens15,598
total tokens33,214wall146.9 s
costrequest id
config.json560 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.1-eff-high--cli--cursor-xl--dev",
  "effort": "high",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.1",
  "protocol": "cli",
  "served_model": "gpt-5.1-high",
  "telemetry": {
    "completion_tokens": 55574,
    "cost_usd": null,
    "prompt_tokens": 57121,
    "total_tokens": 112695,
    "wall_ms": 554484
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-xl-s0",
  "config_id": "gpt-5.1-eff-high--cli--cursor-xl--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T15:52:49.577371+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T15:50:11.021613+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-13T15:55:20.910893+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T15:52:54.012444+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-13T15:57:54.470080+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T15:55:24.472603+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T15:59:37.945391+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T15:57:58.898878+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "valid",
      "variant": "P-min"
    }
  ],
  "retry_policy": {
    "max_unreachable_retries": 5,
    "rate_limit_backoff": {
      "max_attempts": 4,
      "max_total_ms": 60000
    }
  }
}