gpt-5.6-sol @ xhigh · cursor

cursorxhigh
config
gpt-5.6-sol-eff-xhigh--cli--cursor--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
gpt-5.6-sol-xhigh
采集于
2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.6-sol @xhigh · cursor 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 8/24 · 8 命中 · 0 不符 · 16 未展示
  • 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.0">
<title>Weather</title>
<style>
  :root {
    color-scheme: dark;
    --ink: #f5f9ff;
    --muted: #94a9c4;
    --line: rgba(255,255,255,.1);
    --panel: rgba(11,29,50,.78);
    --accent: #73d5ff;
    --warm: #ffd273;
  }

  * { box-sizing: border-box; }

  html, body {
    width: 100%;
    min-height: 100%;
    margin: 0;
  }

  body {
    display: grid;
    place-items: center;
    overflow: hidden;
    background:
      radial-gradient(circle at 14% 15%, rgba(34,152,214,.2), transparent 31%),
      radial-gradient(circle at 86% 80%, rgba(55,96,184,.22), transparent 31%),
      linear-gradient(135deg, #06111e, #0a1d32 52%, #071321);
    color: var(--ink);
    font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  }

  body::before {
    position: fixed;
    inset: 0;
    pointer-events: none;
    content: "";
    opacity: .25;
    background-image:
      linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: linear-gradient(to bottom, black, transparent 85%);
  }

  .weather-card {
    position: relative;
    width: min(1180px, calc(100vw - 64px));
    height: min(700px, calc(100vh - 64px));
    min-height: 620px;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 34px;
    background: linear-gradient(145deg, rgba(15,39,65,.92), rgba(7,23,40,.94));
    box-shadow: 0 40px 100px rgba(0,0,0,.45), inset 0 1px rgba(255,255,255,.08);
  }

  .weather-card::after {
    position: absolute;
    top: -180px;
    left: -120px;
    width: 540px;
    height: 540px;
    border-radius: 50%;
    content: "";
    pointer-events: none;
    background: radial-gradient(circle, rgba(61,190,245,.18), transparent 68%);
  }

  header {
    position: relative;
    z-index: 2;
    height: 104px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 42px;
    border-bottom: 1px solid var(--line);
  }

  .location-wrap {
    display: flex;
    align-items: center;
    gap: 16px;
    min-width: 0;
  }

  .pin {
    width: 42px;
    height: 42px;
    display: grid;
    flex: 0 0 auto;
    place-items: center;
    border: 1px solid rgba(115,213,255,.22);
    border-radius: 14px;
    background: rgba(115,213,255,.09);
    color: var(--accent);
  }

  .pin svg { width: 21px; }

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

  h1 {
    max-width: 650px;
    margin: 0;
    overflow: hidden;
    font-size: 25px;
    font-weight: 650;
    letter-spacing: -.02em;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .date-block {
    text-align: right;
  }

  .date-block strong {
    display: block;
    font-size: 16px;
    font-weight: 600;
  }

  .date-block span {
    display: block;
    margin-top: 5px;
    color: var(--muted);
    font-size: 12px;
    letter-spacing: .08em;
    text-transform: uppercase;
  }

  main {
    position: relative;
    z-index: 2;
    height: calc(100% - 104px);
    display: grid;
    grid-template-columns: 380px 1fr;
  }

  .summary {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 38px 40px 36px 42px;
    border-right: 1px solid var(--line);
    background: linear-gradient(145deg, rgba(68,169,221,.08), transparent 60%);
  }

  .icon {
    width: 116px;
    height: 116px;
    filter: drop-shadow(0 15px 18px rgba(0,0,0,.2));
  }

  .icon svg {
    display: block;
    width: 100%;
    height: 100%;
  }

  .condition {
    margin-top: 18px;
    font-size: 24px;
    font-weight: 600;
    letter-spacing: -.025em;
  }

  .condition-note {
    margin-top: 7px;
    color: var(--muted);
    font-size: 13px;
  }

  .temperature {
    display: flex;
    align-items: flex-start;
    margin-top: 18px;
    font-size: 88px;
    font-weight: 300;
    line-height: .92;
    letter-spacing: -.075em;
  }

  .temperature sup {
    margin: 7px 0 0 8px;
    color: var(--accent);
    font-size: 23px;
    font-weight: 500;
    letter-spacing: 0;
  }

  .range {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }

  .range-card {
    padding: 16px 17px;
    border: 1px solid var(--line);
    border-radius: 18px;
    background: rgba(255,255,255,.035);
  }

  .range-label {
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--muted);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .11em;
    text-transform: uppercase;
  }

  .range-label i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--warm);
    box-shadow: 0 0 10px var(--warm);
  }

  .range-card:last-child i {
    background: var(--accent);
    box-shadow: 0 0 10px var(--accent);
  }

  .range-value {
    margin-top: 9px;
    font-size: 25px;
    font-weight: 600;
  }

  .hourly {
    min-width: 0;
    display: flex;
    flex-direction: column;
    padding: 34px 38px 31px;
  }

  .section-head {
    display: flex;
    align-items: end;
    justify-content: space-between;
    margin-bottom: 22px;
  }

  .section-head h2 {
    margin: 0;
    font-size: 19px;
    font-weight: 600;
    letter-spacing: -.01em;
  }

  .section-head p {
    margin: 5px 0 0;
    color: var(--muted);
    font-size: 12px;
  }

  .utc {
    padding: 8px 11px;
    border: 1px solid var(--line);
    border-radius: 10px;
    color: var(--muted);
    background: rgba(255,255,255,.035);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .13em;
  }

  .chart-wrap {
    position: relative;
    flex: 1;
    min-height: 300px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 24px;
    background:
      linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px),
      rgba(4,18,32,.35);
    background-size: 100% 25%, calc(100% / 8) 100%;
  }

  #chart {
    width: 100%;
    height: 100%;
    display: block;
  }

  .timeline {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    margin-top: 20px;
  }

  .time {
    text-align: center;
    color: var(--muted);
    font-size: 11px;
    font-weight: 600;
  }

  .time strong {
    display: block;
    margin-bottom: 6px;
    color: #d9e7f5;
    font-size: 13px;
    font-weight: 600;
  }

  .status {
    position: absolute;
    z-index: 10;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 32px;
    text-align: center;
    background: #091a2b;
    transition: opacity .35s ease, visibility .35s ease;
  }

  .status.hidden {
    opacity: 0;
    visibility: hidden;
  }

  .loader {
    width: 44px;
    height: 44px;
    margin: 0 auto 18px;
    border: 3px solid rgba(115,213,255,.16);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin .8s linear infinite;
  }

  .status h2 {
    margin: 0;
    font-size: 20px;
  }

  .status p {
    max-width: 380px;
    margin: 10px auto 0;
    color: var(--muted);
    font-size: 14px;
    line-height: 1.6;
  }

  .error-mark {
    width: 50px;
    height: 50px;
    display: none;
    margin: 0 auto 18px;
    place-items: center;
    border: 1px solid rgba(255,125,125,.25);
    border-radius: 50%;
    color: #ff9292;
    background: rgba(255,100,100,.08);
    font-size: 23px;
  }

  .status.error .loader { display: none; }
  .status.error .error-mark { display: grid; }

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

  @media (max-width: 900px) {
    body { overflow: auto; }
    .weather-card { height: auto; min-height: 760px; margin: 32px; }
    main { height: auto; grid-template-columns: 1fr; }
    .summary { border-right: 0; border-bottom: 1px solid var(--line); }
  }
</style>
</head>
<body>
<article class="weather-card" aria-label="Weather details">
  <div id="status" class="status" role="status" aria-live="polite">
    <div>
      <div class="loader"></div>
      <div class="error-mark">!</div>
      <h2 id="status-title">Loading weather</h2>
      <p id="status-message">Retrieving the selected day’s forecast.</p>
    </div>
  </div>

  <header>
    <div class="location-wrap">
      <div class="pin" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none">
          <path d="M20 10c0 5-8 12-8 12S4 15 4 10a8 8 0 1 1 16 0Z" stroke="currentColor" stroke-width="1.7"/>
          <circle cx="12" cy="10" r="2.7" stroke="currentColor" stroke-width="1.7"/>
        </svg>
      </div>
      <div>
        <p class="eyebrow">Selected location</p>
        <h1 id="location">Berlin</h1>
      </div>
    </div>
    <div class="date-block">
      <strong id="date-long"></strong>
      <span id="date-iso"></span>
    </div>
  </header>

  <main>
    <section class="summary">
      <div>
        <div id="weather-icon" class="icon" aria-hidden="true"></div>
        <div id="condition" class="condition">—</div>
        <div class="condition-note">Daily outlook in Celsius</div>
        <div class="temperature"><span id="temp-max">—</span><sup>°C</sup></div>
      </div>

      <div class="range">
        <div class="range-card">
          <div class="range-label"><i></i>High</div>
          <div id="high" class="range-value">—</div>
        </div>
        <div class="range-card">
          <div class="range-label"><i></i>Low</div>
          <div id="low" class="range-value">—</div>
        </div>
      </div>
    </section>

    <section class="hourly">
      <div class="section-head">
        <div>
          <h2>Hourly temperature</h2>
          <p>Temperature changes throughout the day</p>
        </div>
        <div class="utc">UTC</div>
      </div>

      <div class="chart-wrap">
        <svg id="chart" viewBox="0 0 720 340" preserveAspectRatio="none" role="img" aria-label="Hourly temperature chart"></svg>
      </div>
      <div id="timeline" class="timeline"></div>
    </section>
  </main>
</article>

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

  const params = new URLSearchParams(location.search);
  const utcToday = new Date().toISOString().slice(0, 10);
  const validDate = value => {
    if (!/^\d{4}-\d{2}-\d{2}$/.test(value || "")) return false;
    const date = new Date(value + "T00:00:00Z");
    return !Number.isNaN(date.valueOf()) && date.toISOString().slice(0, 10) === value;
  };
  const numberParam = (key, fallback, min, max) => {
    const value = Number(params.get(key));
    return Number.isFinite(value) && value >= min && value <= max ? value : fallback;
  };

  const lat = numberParam("lat", 52.52, -90, 90);
  const lon = numberParam("lon", 13.405, -180, 180);
  const name = (params.get("name") || "Berlin").trim() || "Berlin";
  const requested = validDate(params.get("date")) ? params.get("date") : utcToday;

  const weather = code => {
    if (code === 0) return ["Clear sky", "clear"];
    if (code === 1) return ["Mainly clear", "partly"];
    if (code === 2) return ["Partly cloudy", "partly"];
    if (code === 3) return ["Overcast", "cloud"];
    if (code === 45 || code === 48) return ["Foggy", "fog"];
    if ([51, 53, 55, 56, 57].includes(code)) return ["Drizzle", "rain"];
    if ([61, 63, 65, 66, 67, 80, 81, 82].includes(code)) return ["Rain showers", "rain"];
    if ([71, 73, 75, 77, 85, 86].includes(code)) return ["Snow showers", "snow"];
    if ([95, 96, 99].includes(code)) return ["Thunderstorm", "storm"];
    return ["Weather unavailable", "cloud"];
  };

  const icons = {
    clear: `
      <svg viewBox="0 0 120 120">
        <defs><radialGradient id="sun"><stop stop-color="#fff4b1"/><stop offset="1" stop-color="#ffc65c"/></radialGradient></defs>
        <g stroke="#ffd776" stroke-width="5" stroke-linecap="round">
          <path d="M60 8v12M60 100v12M8 60h12M100 60h12M23 23l9 9M88 88l9 9M97 23l-9 9M32 88l-9 9"/>
        </g>
        <circle cx="60" cy="60" r="27" fill="url(#sun)"/>
      </svg>`,
    partly: `
      <svg viewBox="0 0 120 120">
        <circle cx="75" cy="40" r="24" fill="#ffd36d"/>
        <g stroke="#ffd36d" stroke-width="4" stroke-linecap="round">
          <path d="M75 8v8M75 64v8M43 40h8M99 40h9M52 17l6 6M92 57l6 6M98 17l-6 6"/>
        </g>
        <path d="M27 91h64c13 0 21-8 21-18s-8-18-19-18c-3 0-6 1-9 2-5-12-15-20-29-20-17 0-30 13-31 30C14 69 8 76 8 84c0 4 2 7 5 7h14Z" fill="#dbeeff"/>
        <path d="M25 91h66c12 0 20-7 21-17-7 7-17 9-29 9H19c-4 0-7-1-10-3 0 7 5 11 16 11Z" fill="#9fc9e8"/>
      </svg>`,
    cloud: `
      <svg viewBox="0 0 120 120">
        <path d="M26 91h67c13 0 22-9 22-20s-9-20-21-20c-4 0-7 1-10 2-6-15-18-24-34-24-19 0-35 15-36 34C5 66 1 73 1 81c0 6 5 10 12 10h13Z" fill="#dcecff"/>
        <path d="M14 91h79c11 0 20-7 22-17-9 7-20 9-34 9H7c1 5 3 8 7 8Z" fill="#92b9d5"/>
      </svg>`,
    fog: `
      <svg viewBox="0 0 120 120">
        <path d="M30 65h61c12 0 20-8 20-18s-8-18-19-18c-4 0-7 1-10 2-6-11-16-17-29-17-17 0-30 12-32 28C12 44 7 50 7 57c0 5 4 8 11 8h12Z" fill="#cfe2f1"/>
        <g stroke="#8db5ce" stroke-width="6" stroke-linecap="round"><path d="M15 79h76"/><path d="M29 95h77"/><path d="M12 110h64"/></g>
      </svg>`,
    rain: `
      <svg viewBox="0 0 120 120">
        <path d="M26 70h67c13 0 22-9 22-20s-9-20-21-20c-4 0-7 1-10 2C78 17 66 8 50 8 31 8 15 23 14 42 5 45 1 52 1 60c0 6 5 10 12 10h13Z" fill="#b9d4e8"/>
        <g stroke="#65c7f1" stroke-width="6" stroke-linecap="round"><path d="M30 82l-7 14"/><path d="M57 82l-8 20"/><path d="M85 82l-8 20"/></g>
      </svg>`,
    snow: `
      <svg viewBox="0 0 120 120">
        <path d="M26 66h67c13 0 22-9 22-20s-9-20-21-20c-4 0-7 1-10 2C78 13 66 4 50 4 31 4 15 19 14 38 5 41 1 48 1 56c0 6 5 10 12 10h13Z" fill="#dcecff"/>
        <g fill="#8edbff"><circle cx="27" cy="84" r="5"/><circle cx="58" cy="94" r="5"/><circle cx="89" cy="82" r="5"/><circle cx="35" cy="108" r="4"/><circle cx="82" cy="109" r="4"/></g>
      </svg>`,
    storm: `
      <svg viewBox="0 0 120 120">
        <path d="M26 65h67c13 0 22-9 22-20s-9-20-21-20c-4 0-7 1-10 2C78 12 66 3 50 3 31 3 15 18 14 37 5 40 1 47 1 55c0 6 5 10 12 10h13Z" fill="#9cb3c7"/>
        <path d="M59 66 42 94h15l-6 24 28-36H63l10-16Z" fill="#ffd563"/>
      </svg>`
  };

  const formatTemp = value => `${Math.round(value)}°`;
  document.getElementById("location").textContent = name;
  document.getElementById("date-iso").textContent = requested;
  document.getElementById("date-long").textContent = new Intl.DateTimeFormat("en", {
    weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
  }).format(new Date(requested + "T12:00:00Z"));

  function renderChart(times, values) {
    const svg = document.getElementById("chart");
    const width = 720, height = 340;
    const pad = { left: 28, right: 28, top: 45, bottom: 32 };
    const min = Math.min(...values);
    const max = Math.max(...values);
    const spread = Math.max(max - min, 4);
    const floor = min - spread * .22;
    const ceiling = max + spread * .22;
    const x = i => pad.left + i * ((width - pad.left - pad.right) / Math.max(values.length - 1, 1));
    const y = value => pad.top + (ceiling - value) / (ceiling - floor) * (height - pad.top - pad.bottom);

    const points = values.map((value, i) => [x(i), y(value)]);
    const line = points.map((point, i) => `${i ? "L" : "M"}${point[0].toFixed(1)},${point[1].toFixed(1)}`).join(" ");
    const area = `${line} L${points.at(-1)[0]},${height - pad.bottom} L${points[0][0]},${height - pad.bottom} Z`;

    const labels = values.map((value, i) => {
      if (i % 3 !== 0) return "";
      return `<g>
        <circle cx="${x(i)}" cy="${y(value)}" r="4.5" fill="#0b2137" stroke="#9ee4ff" stroke-width="2.5"/>
        <text x="${x(i)}" y="${y(value) - 15}" text-anchor="middle" fill="#eef9ff" font-size="12" font-weight="700">${Math.round(value)}°</text>
      </g>`;
    }).join("");

    svg.innerHTML = `
      <defs>
        <linearGradient id="areaFill" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0" stop-color="#67d3ff" stop-opacity=".32"/>
          <stop offset="1" stop-color="#67d3ff" stop-opacity=".01"/>
        </linearGradient>
        <filter id="glow"><feGaussianBlur stdDeviation="4" result="b"/><feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter>
      </defs>
      <path d="${area}" fill="url(#areaFill)"/>
      <path d="${line}" fill="none" stroke="#72d8ff" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" filter="url(#glow)"/>
      ${labels}
    `;

    const timeline = document.getElementById("timeline");
    timeline.innerHTML = "";
    for (let hour = 0; hour < 24; hour += 3) {
      const closest = times.findIndex(time => Number(time.slice(11, 13)) === hour);
      const item = document.createElement("div");
      item.className = "time";
      const temperature = closest >= 0 ? `${Math.round(values[closest])}°` : "—";
      item.innerHTML = `<strong>${temperature}</strong>${String(hour).padStart(2, "0")}:00`;
      timeline.appendChild(item);
    }
  }

  async function load() {
    const endpoint = requested < utcToday ? "/api/om/archive" : "/api/om/forecast";
    const 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: requested,
      end_date: requested
    });

    try {
      const response = await fetch(`${endpoint}?${query}`);
      if (!response.ok) throw new Error(`Request failed with status ${response.status}`);

      const data = await response.json();
      const dayIndex = data.daily?.time?.indexOf(requested) ?? -1;
      if (dayIndex < 0) throw new Error("The selected date was not returned");

      const high = Number(data.daily.temperature_2m_max?.[dayIndex]);
      const low = Number(data.daily.temperature_2m_min?.[dayIndex]);
      const code = Number(data.daily.weather_code?.[dayIndex]);
      if (![high, low, code].every(Number.isFinite)) throw new Error("Daily weather data is incomplete");

      const times = [];
      const values = [];
      (data.hourly?.time || []).forEach((time, index) => {
        const value = Number(data.hourly?.temperature_2m?.[index]);
        if (time.startsWith(requested) && Number.isFinite(value)) {
          times.push(time);
          values.push(value);
        }
      });
      if (!values.length) throw new Error("Hourly weather data is unavailable");

      const [label, icon] = weather(code);
      document.getElementById("condition").textContent = label;
      document.getElementById("weather-icon").innerHTML = icons[icon];
      document.getElementById("temp-max").textContent = Math.round(high);
      document.getElementById("high").textContent = formatTemp(high);
      document.getElementById("low").textContent = formatTemp(low);
      renderChart(times, values);

      document.getElementById("status").classList.add("hidden");
    } catch (error) {
      const status = document.getElementById("status");
      status.classList.add("error");
      document.getElementById("status-title").textContent = "Weather data could not be loaded";
      document.getElementById("status-message").textContent = "The weather service is unavailable or returned incomplete data. Please try again later.";
      console.error(error);
    }
  }

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

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

bytes 总计19,657html / css / js2,379 / 7,839 / 9,439
dom 节点54dom 深度9
css 规则55含 js是
brightness33.2contrast21.8
colorfulness21.9留白78.2%

该 slot 的 telemetry

prompt tokens3completion tokens7,077
total tokens7,080wall87.5 s
cost—request id—
config.json568 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.6-sol-eff-xhigh--cli--cursor--dev",
  "effort": "xhigh",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.6-sol",
  "protocol": "cli",
  "served_model": "gpt-5.6-sol-xhigh",
  "telemetry": {
    "completion_tokens": 24771,
    "cost_usd": null,
    "prompt_tokens": 12,
    "total_tokens": 24783,
    "wall_ms": 313291
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-s2",
  "config_id": "gpt-5.6-sol-eff-xhigh--cli--cursor--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-12T17:04:53.993029+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:03:26.507878+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-12T17:06:17.643479+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:04:57.888194+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-12T17:07:23.906264+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:06:21.514319+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-12T17:08:51.512742+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:07:27.844791+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
    }
  }
}