claude-fable-5-thinking @ high · cursor-xl

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

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

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

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

  • namematch
  • conditionmatch
  • datematch
  • max tempambiguousno-remaining-candidate
  • min tempmatch展示值:16
  • 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">
<meta name="viewport" content="width=1280, initial-scale=1">
<title>Weather</title>
<style>
  :root {
    --ink: #1b2733;
    --ink-soft: #5b6b7b;
    --ink-faint: #8fa0b0;
    --card: rgba(255, 255, 255, 0.82);
    --accent: #f5a623;
    --bg1: #cfe8ff;
    --bg2: #eef6ff;
  }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  html, body { width: 100%; height: 100%; }
  body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    color: var(--ink);
    background: linear-gradient(150deg, var(--bg1) 0%, var(--bg2) 55%, var(--bg3, #ffffff) 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    transition: background 0.6s ease;
  }
  .orb {
    position: fixed;
    border-radius: 50%;
    filter: blur(70px);
    opacity: 0.55;
    pointer-events: none;
    z-index: 0;
  }
  #orb1 { width: 460px; height: 460px; top: -140px; left: -120px; background: var(--orb1, #ffd98a); }
  #orb2 { width: 520px; height: 520px; bottom: -200px; right: -140px; background: var(--orb2, #9cc9ff); }

  .card {
    position: relative;
    z-index: 1;
    width: 1120px;
    max-width: calc(100vw - 80px);
    background: var(--card);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border: 1px solid rgba(255, 255, 255, 0.7);
    border-radius: 28px;
    box-shadow:
      0 30px 60px -20px rgba(30, 55, 90, 0.28),
      0 2px 6px rgba(30, 55, 90, 0.06),
      inset 0 1px 0 rgba(255, 255, 255, 0.9);
    padding: 44px 52px 38px;
  }

  .top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 32px;
  }
  .place h1 {
    font-size: 40px;
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.1;
  }
  .place .date {
    margin-top: 8px;
    font-size: 17px;
    color: var(--ink-soft);
    font-weight: 500;
  }
  .place .coords {
    margin-top: 6px;
    font-size: 13px;
    color: var(--ink-faint);
    font-variant-numeric: tabular-nums;
  }
  .badge {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: 16px;
    padding: 7px 14px;
    border-radius: 999px;
    background: rgba(27, 39, 51, 0.06);
    border: 1px solid rgba(27, 39, 51, 0.08);
    font-size: 13px;
    font-weight: 600;
    color: var(--ink-soft);
    letter-spacing: 0.02em;
  }
  .badge .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }

  .now {
    display: flex;
    align-items: center;
    gap: 28px;
    text-align: right;
  }
  .now .icon { width: 128px; height: 128px; flex: none; filter: drop-shadow(0 10px 18px rgba(30, 55, 90, 0.18)); }
  .now .temps .hi {
    font-size: 74px;
    font-weight: 700;
    letter-spacing: -0.04em;
    line-height: 1;
    font-variant-numeric: tabular-nums;
  }
  .now .temps .hi sup { font-size: 30px; font-weight: 500; color: var(--ink-soft); vertical-align: 26px; }
  .now .temps .lo {
    margin-top: 6px;
    font-size: 21px;
    font-weight: 600;
    color: var(--ink-soft);
    font-variant-numeric: tabular-nums;
  }
  .now .temps .cond {
    margin-top: 10px;
    font-size: 17px;
    font-weight: 600;
    color: var(--accent-text, var(--ink));
  }

  .divider {
    height: 1px;
    margin: 34px 0 26px;
    background: linear-gradient(90deg, transparent, rgba(27, 39, 51, 0.14), transparent);
  }

  .section-title {
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin-bottom: 6px;
  }
  .chart-wrap { width: 100%; }
  .chart-wrap svg { width: 100%; height: auto; display: block; }

  .state {
    min-height: 420px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 18px;
    text-align: center;
  }
  .state .big { font-size: 22px; font-weight: 700; }
  .state .sub { font-size: 15px; color: var(--ink-soft); max-width: 480px; line-height: 1.5; }
  .spinner {
    width: 44px; height: 44px;
    border-radius: 50%;
    border: 4px solid rgba(27, 39, 51, 0.12);
    border-top-color: var(--accent);
    animation: spin 0.9s linear infinite;
  }
  @keyframes spin { to { transform: rotate(360deg); } }
  .err-icon { font-size: 46px; line-height: 1; }

  .fade-in { animation: fadeUp 0.55s cubic-bezier(0.22, 0.8, 0.3, 1) both; }
  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(14px); }
    to { opacity: 1; transform: translateY(0); }
  }
</style>
</head>
<body>
  <div class="orb" id="orb1"></div>
  <div class="orb" id="orb2"></div>

  <div class="card" id="card">
    <div class="state" id="content">
      <div class="spinner"></div>
      <div class="big">Loading weather…</div>
    </div>
  </div>

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

  /* ---------- Query params ---------- */
  var qs = new URLSearchParams(location.search);
  function numParam(key, fallback) {
    var v = parseFloat(qs.get(key));
    return isFinite(v) ? v : fallback;
  }
  var lat = numParam("lat", 52.52);
  var lon = numParam("lon", 13.405);
  var name = qs.get("name") || "Berlin";
  var todayUTC = new Date().toISOString().slice(0, 10);
  var date = qs.get("date");
  if (!date || !/^\d{4}-\d{2}-\d{2}$/.test(date)) date = todayUTC;

  /* ---------- Weather code mapping ---------- */
  function describe(code) {
    var c = Number(code);
    if (c === 0) return { label: "Clear sky", kind: "sun" };
    if (c === 1) return { label: "Mainly clear", kind: "sun" };
    if (c === 2) return { label: "Partly cloudy", kind: "partly" };
    if (c === 3) return { label: "Overcast", kind: "cloud" };
    if (c === 45 || c === 48) return { label: "Fog", kind: "fog" };
    if (c >= 51 && c <= 57) return { label: "Drizzle", kind: "drizzle" };
    if (c >= 61 && c <= 67) return { label: "Rain", kind: "rain" };
    if (c >= 71 && c <= 77) return { label: "Snowfall", kind: "snow" };
    if (c === 80 || c === 81 || c === 82) return { label: "Rain showers", kind: "rain" };
    if (c === 85 || c === 86) return { label: "Snow showers", kind: "snow" };
    if (c >= 95) return { label: "Thunderstorm", kind: "storm" };
    return { label: "Unknown conditions", kind: "cloud" };
  }

  /* ---------- Themes per condition ---------- */
  var themes = {
    sun:     { bg1: "#ffe9b8", bg2: "#fff7e6", bg3: "#e8f4ff", orb1: "#ffd06e", orb2: "#8ecbff", accent: "#f0930f", accentText: "#b56a00" },
    partly:  { bg1: "#d8ecff", bg2: "#f2f8ff", bg3: "#fff4dd", orb1: "#ffd98a", orb2: "#8fc4ff", accent: "#3f8fe0", accentText: "#2c6cb0" },
    cloud:   { bg1: "#dbe3ec", bg2: "#eef2f7", bg3: "#f7f9fb", orb1: "#b9c7d6", orb2: "#9fb4c9", accent: "#6b7f94", accentText: "#54687d" },
    fog:     { bg1: "#e0e5e9", bg2: "#f0f3f5", bg3: "#f9fafb", orb1: "#c4ccd3", orb2: "#aebbc6", accent: "#7c8b98", accentText: "#5e6d7a" },
    drizzle: { bg1: "#cfe1f2", bg2: "#e8f1fa", bg3: "#f4f9ff", orb1: "#9ec2e6", orb2: "#7fa9d6", accent: "#4a86c8", accentText: "#33689f" },
    rain:    { bg1: "#bcd3ea", bg2: "#dfeaf5", bg3: "#eef4fb", orb1: "#84aed8", orb2: "#5e8fc4", accent: "#2f6cb3", accentText: "#265a94" },
    snow:    { bg1: "#e3edf9", bg2: "#f3f8fe", bg3: "#ffffff", orb1: "#c0d8f2", orb2: "#a3c5e8", accent: "#5f93c9", accentText: "#41729f" },
    storm:   { bg1: "#c9c8e6", bg2: "#e4e2f3", bg3: "#f2f0fa", orb1: "#a49ee0", orb2: "#7d74c9", accent: "#5b4fb8", accentText: "#473c96" }
  };
  function applyTheme(kind) {
    var t = themes[kind] || themes.cloud;
    var r = document.documentElement.style;
    r.setProperty("--bg1", t.bg1);
    r.setProperty("--bg2", t.bg2);
    r.setProperty("--bg3", t.bg3);
    r.setProperty("--orb1", t.orb1);
    r.setProperty("--orb2", t.orb2);
    r.setProperty("--accent", t.accent);
    r.setProperty("--accent-text", t.accentText);
  }

  /* ---------- Inline SVG icons ---------- */
  var SUN_CORE = '<circle cx="32" cy="32" r="13" fill="#FFB824"/><g stroke="#FFB824" stroke-width="4" stroke-linecap="round">' +
    '<line x1="32" y1="8" x2="32" y2="14"/><line x1="32" y1="50" x2="32" y2="56"/>' +
    '<line x1="8" y1="32" x2="14" y2="32"/><line x1="50" y1="32" x2="56" y2="32"/>' +
    '<line x1="15" y1="15" x2="19.3" y2="19.3"/><line x1="44.7" y1="44.7" x2="49" y2="49"/>' +
    '<line x1="15" y1="49" x2="19.3" y2="44.7"/><line x1="44.7" y1="19.3" x2="49" y2="15"/></g>';
  function cloudShape(fill, x, y, s) {
    return '<g transform="translate(' + x + ',' + y + ') scale(' + s + ')">' +
      '<path fill="' + fill + '" d="M20 38a10 10 0 0 1 1.2-19.93A14 14 0 0 1 48.2 21.4 9 9 0 0 1 46 38Z"/></g>';
  }
  function drops(color, dashes) {
    var out = '<g stroke="' + color + '" stroke-width="3.4" stroke-linecap="round">';
    for (var i = 0; i < dashes.length; i++) {
      var d = dashes[i];
      out += '<line x1="' + d[0] + '" y1="' + d[1] + '" x2="' + (d[0] - 2.5) + '" y2="' + (d[1] + 7) + '"/>';
    }
    return out + "</g>";
  }
  function flakes(color, pts) {
    var out = '<g fill="' + color + '">';
    for (var i = 0; i < pts.length; i++) out += '<circle cx="' + pts[i][0] + '" cy="' + pts[i][1] + '" r="2.6"/>';
    return out + "</g>";
  }
  var icons = {
    sun: SUN_CORE,
    partly: '<g transform="translate(6,-4) scale(0.72)">' + SUN_CORE + "</g>" + cloudShape("#DCE7F2", 4, 14, 1) +
      cloudShape("#F4F8FC", 8, 18, 0.9),
    cloud: cloudShape("#C3D2E2", 2, 8, 1.05) + cloudShape("#EAF1F8", 6, 15, 0.95),
    fog: cloudShape("#D8E2EC", 6, 4, 0.9) +
      '<g stroke="#AABCCD" stroke-width="4" stroke-linecap="round">' +
      '<line x1="14" y1="46" x2="50" y2="46"/><line x1="20" y1="54" x2="44" y2="54"/></g>',
    drizzle: cloudShape("#B9CBDD", 4, 2, 1) + drops("#69A8E0", [[22, 46], [32, 46], [42, 46]]),
    rain: cloudShape("#9FB6CC", 4, 0, 1) + drops("#3E7FC1", [[20, 44], [29, 48], [38, 44], [47, 48]]),
    snow: cloudShape("#CBD9E7", 4, 0, 1) + flakes("#7FA8CE", [[21, 47], [31, 52], [41, 47], [26, 56], [36, 58]]),
    storm: cloudShape("#8E9AC9", 4, 0, 1) +
      '<path fill="#FFC531" d="M34 36 24 52h8l-4 12 14-18h-9l5-10z"/>'
  };
  function iconSvg(kind, cls) {
    return '<svg class="' + cls + '" viewBox="0 0 64 64" aria-hidden="true">' + (icons[kind] || icons.cloud) + "</svg>";
  }

  /* ---------- Helpers ---------- */
  function esc(s) {
    return String(s).replace(/[&<>"']/g, function (ch) {
      return { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }[ch];
    });
  }
  function fmtDate(d) {
    try {
      return new Date(d + "T00:00:00Z").toLocaleDateString("en-US", {
        weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
      });
    } catch (e) { return d; }
  }
  function round1(v) { return Math.round(v * 10) / 10; }
  function fmtTemp(v) {
    var r = round1(v);
    return (r > 0 ? "" : "") + (Number.isInteger(r) ? r : r.toFixed(1));
  }

  /* ---------- Chart ---------- */
  function buildChart(times, temps, accent) {
    var pts = [];
    for (var i = 0; i < times.length && i < 24; i++) {
      if (temps[i] === null || temps[i] === undefined || !isFinite(temps[i])) continue;
      pts.push({ hour: i, t: temps[i] });
    }
    if (pts.length < 2) {
      return '<div class="sub" style="color:var(--ink-soft);font-size:15px;padding:30px 0;">Hourly data is not available for this date.</div>';
    }
    var W = 1020, H = 290, padL = 26, padR = 26, padT = 52, padB = 40;
    var lo = Infinity, hi = -Infinity;
    pts.forEach(function (p) { lo = Math.min(lo, p.t); hi = Math.max(hi, p.t); });
    var span = Math.max(hi - lo, 2);
    lo -= span * 0.12; hi += span * 0.12;
    function X(h) { return padL + (h / 23) * (W - padL - padR); }
    function Y(t) { return padT + (1 - (t - lo) / (hi - lo)) * (H - padT - padB); }

    // smooth path (Catmull-Rom -> cubic Bezier)
    var P = pts.map(function (p) { return [X(p.hour), Y(p.t)]; });
    var d = "M" + P[0][0].toFixed(1) + "," + P[0][1].toFixed(1);
    for (var j = 0; j < P.length - 1; j++) {
      var p0 = P[Math.max(j - 1, 0)], p1 = P[j], p2 = P[j + 1], p3 = P[Math.min(j + 2, P.length - 1)];
      var c1x = p1[0] + (p2[0] - p0[0]) / 6, c1y = p1[1] + (p2[1] - p0[1]) / 6;
      var c2x = p2[0] - (p3[0] - p1[0]) / 6, c2y = p2[1] - (p3[1] - p1[1]) / 6;
      d += "C" + c1x.toFixed(1) + "," + c1y.toFixed(1) + " " + c2x.toFixed(1) + "," + c2y.toFixed(1) + " " + p2[0].toFixed(1) + "," + p2[1].toFixed(1);
    }
    var baseY = H - padB + 4;
    var area = d + "L" + P[P.length - 1][0].toFixed(1) + "," + baseY + "L" + P[0][0].toFixed(1) + "," + baseY + "Z";

    var svg = '<svg viewBox="0 0 ' + W + " " + H + '" role="img" aria-label="Hourly temperatures">';
    svg += '<defs><linearGradient id="areaGrad" x1="0" y1="0" x2="0" y2="1">' +
      '<stop offset="0%" stop-color="' + accent + '" stop-opacity="0.28"/>' +
      '<stop offset="100%" stop-color="' + accent + '" stop-opacity="0.02"/></linearGradient></defs>';

    // subtle horizontal gridlines
    for (var g = 0; g < 4; g++) {
      var gy = padT + (g / 3) * (H - padT - padB);
      svg += '<line x1="' + padL + '" y1="' + gy.toFixed(1) + '" x2="' + (W - padR) + '" y2="' + gy.toFixed(1) +
        '" stroke="rgba(27,39,51,0.07)" stroke-width="1"/>';
    }

    svg += '<path d="' + area + '" fill="url(#areaGrad)"/>';
    svg += '<path d="' + d + '" fill="none" stroke="' + accent + '" stroke-width="3" stroke-linecap="round"/>';

    // dots + temperature labels for every hourly value
    pts.forEach(function (p) {
      var x = X(p.hour), y = Y(p.t);
      svg += '<circle cx="' + x.toFixed(1) + '" cy="' + y.toFixed(1) + '" r="3.4" fill="#fff" stroke="' + accent + '" stroke-width="2.2"/>';
      svg += '<text x="' + x.toFixed(1) + '" y="' + (y - 11).toFixed(1) +
        '" text-anchor="middle" font-size="11.5" font-weight="600" fill="#41505f" font-family="inherit">' +
        fmtTemp(p.t) + "\u00B0</text>";
    });

    // hour axis labels
    pts.forEach(function (p) {
      if (p.hour % 3 !== 0 && p.hour !== 23) return;
      svg += '<text x="' + X(p.hour).toFixed(1) + '" y="' + (H - 12) +
        '" text-anchor="middle" font-size="12" font-weight="500" fill="#8fa0b0" font-family="inherit">' +
        String(p.hour).padStart(2, "0") + ":00</text>";
    });

    svg += "</svg>";
    return svg;
  }

  /* ---------- Render ---------- */
  var content = document.getElementById("content");

  function renderError(msg) {
    content.className = "state fade-in";
    content.innerHTML =
      '<div class="err-icon">&#9888;&#65039;</div>' +
      '<div class="big">Weather data could not be loaded</div>' +
      '<div class="sub">' + esc(msg) + "</div>" +
      '<div class="sub" style="font-size:13px;color:var(--ink-faint);">' +
      esc(name) + " &middot; " + esc(date) + "</div>";
  }

  function renderWeather(data, source) {
    var daily = data.daily || {};
    var hourly = data.hourly || {};
    var tmax = daily.temperature_2m_max && daily.temperature_2m_max[0];
    var tmin = daily.temperature_2m_min && daily.temperature_2m_min[0];
    var code = daily.weather_code && daily.weather_code[0];
    var hTimes = hourly.time || [];
    var hTemps = hourly.temperature_2m || [];

    if (tmax === null || tmax === undefined || tmin === null || tmin === undefined) {
      renderError("The service responded, but no temperature data exists for this date and location.");
      return;
    }

    var cond = describe(code);
    applyTheme(cond.kind);
    var accent = (themes[cond.kind] || themes.cloud).accent;
    var sourceLabel = source === "archive" ? "Historical &middot; Open-Meteo archive" : "Forecast &middot; Open-Meteo";

    content.className = "fade-in";
    content.innerHTML =
      '<div class="top">' +
        '<div class="place">' +
          "<h1>" + esc(name) + "</h1>" +
          '<div class="date">' + esc(fmtDate(date)) + " &middot; UTC</div>" +
          '<div class="coords">' + lat.toFixed(3) + "&deg;, " + lon.toFixed(3) + "&deg;</div>" +
          '<div class="badge"><span class="dot"></span>' + sourceLabel + "</div>" +
        "</div>" +
        '<div class="now">' +
          '<div class="temps">' +
            '<div class="hi">' + fmtTemp(tmax) + "<sup>&deg;C</sup></div>" +
            '<div class="lo">Low ' + fmtTemp(tmin) + "&deg;C</div>" +
            '<div class="cond">' + esc(cond.label) + "</div>" +
          "</div>" +
          iconSvg(cond.kind, "icon") +
        "</div>" +
      "</div>" +
      '<div class="divider"></div>' +
      '<div class="section-title">Hourly temperature (&deg;C)</div>' +
      '<div class="chart-wrap">' + buildChart(hTimes, hTemps, accent) + "</div>";
  }

  /* ---------- Fetch ---------- */
  var isPast = date < todayUTC;
  var endpoint = isPast ? "/api/om/archive" : "/api/om/forecast";
  var params = 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
  });

  fetch(endpoint + "?" + params.toString())
    .then(function (res) {
      if (!res.ok) throw new Error("The weather service returned HTTP " + res.status + ".");
      return res.json();
    })
    .then(function (data) {
      if (data && data.error) throw new Error(data.reason || "The weather service reported an error.");
      renderWeather(data, isPast ? "archive" : "forecast");
    })
    .catch(function (err) {
      renderError(err && err.message ? err.message : "An unexpected network error occurred.");
    });
})();
</script>
</body>
</html>

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

bytes 总计17,643html / css / js455 / 4,401 / 12,787
dom 节点14dom 深度5
css 规则35含 js
brightness236.7contrast20.1
colorfulness17.9留白89.2%

该 slot 的 telemetry

prompt tokens2completion tokens10,828
total tokens10,830wall133.5 s
costrequest id
config.json606 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "claude-fable-5-thinking-eff-high--cli--cursor-xl--dev",
  "effort": "high",
  "family": "claude",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "claude-fable-5-thinking",
  "protocol": "cli",
  "served_model": "claude-fable-5-thinking-high",
  "telemetry": {
    "completion_tokens": 31151,
    "cost_usd": null,
    "prompt_tokens": 8,
    "total_tokens": 31159,
    "wall_ms": 377986
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-xl-s2",
  "config_id": "claude-fable-5-thinking-eff-high--cli--cursor-xl--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T08:52:22.998679+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:50:09.516598+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:20.559238+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:52:26.480060+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:17.077049+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:53:24.096152+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:37.975123+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:54:20.523120+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
    }
  }
}