claude-fable-5 @ high · cursor

cursorhigh
config
claude-fable-5-eff-high--cli--cursor--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
claude-fable-5-high
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
claude-fable-5 @high · cursor P-q slot 0 screenshot

The screenshot is the exact frozen pixels the similarity channels measured. Run live re-executes the raw output in a sandboxed iframe; its rendering depends on your browser and fonts and is not guaranteed to match the measured pixels.

similarity neighborsNo similarity data for this session — this batch has no computed pairs.

Fidelity — does the card show the right data?

  • namematch
  • conditionmatch
  • datematch
  • max tempmatchshown: 25.3
  • min tempmatchshown: 16
  • hourlymatchcoverage 9/24 · 9 match · 0 mismatch · 15 not shown
  • request sidematch0 violation(s)

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

Source — raw model output, one byte unchanged

download card.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=1280">
<title>Weather</title>
<style>
  :root{
    --bg1:#0e1a2f; --bg2:#1c2f52; --accent:#7fb4ff;
    --glow:rgba(127,180,255,.28);
    --ink:#eaf2ff; --ink-dim:rgba(234,242,255,.62); --ink-faint:rgba(234,242,255,.38);
    --card:rgba(255,255,255,.055); --card-border:rgba(255,255,255,.12);
    --chart-line:#8fc1ff; --chart-fill-top:rgba(143,193,255,.28); --chart-fill-bot:rgba(143,193,255,0);
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html,body{height:100%}
  body{
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    color:var(--ink);
    background:radial-gradient(1200px 700px at 20% -10%, var(--bg2) 0%, transparent 60%),
               radial-gradient(1000px 800px at 90% 110%, var(--bg2) 0%, transparent 55%),
               var(--bg1);
    min-height:100vh; display:flex; align-items:center; justify-content:center;
    overflow:hidden; position:relative;
    -webkit-font-smoothing:antialiased;
  }
  .orb{position:absolute; border-radius:50%; filter:blur(90px); opacity:.5; pointer-events:none}
  .orb.a{width:520px;height:520px; background:var(--glow); top:-160px; left:-120px}
  .orb.b{width:420px;height:420px; background:var(--glow); bottom:-180px; right:-100px; opacity:.35}

  .card{
    width:1080px; max-width:calc(100vw - 80px);
    background:var(--card);
    border:1px solid var(--card-border);
    border-radius:28px;
    backdrop-filter:blur(24px); -webkit-backdrop-filter:blur(24px);
    box-shadow:0 30px 80px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.08);
    padding:44px 52px 40px;
    position:relative; z-index:1;
  }

  .top{display:flex; justify-content:space-between; align-items:flex-start; gap:32px}
  .loc h1{font-size:34px; font-weight:600; letter-spacing:-.02em; line-height:1.15}
  .loc .date{margin-top:6px; font-size:15px; color:var(--ink-dim); font-weight:500}
  .loc .coords{margin-top:4px; font-size:12px; color:var(--ink-faint); letter-spacing:.06em}
  .cond{display:flex; align-items:center; gap:16px; text-align:right}
  .cond .label{font-size:17px; font-weight:600; color:var(--ink)}
  .cond .sub{font-size:12.5px; color:var(--ink-dim); margin-top:3px}
  .cond .icon svg{width:76px; height:76px; display:block; filter:drop-shadow(0 6px 18px rgba(0,0,0,.35))}

  .temps{display:flex; align-items:baseline; gap:28px; margin:26px 0 8px}
  .temps .max{font-size:104px; font-weight:200; letter-spacing:-.04em; line-height:1}
  .temps .max sup{font-size:38px; font-weight:300; color:var(--ink-dim); vertical-align:super}
  .hilo{display:flex; gap:22px; padding-bottom:12px}
  .hilo .pill{
    display:flex; align-items:center; gap:8px; font-size:15px; font-weight:600;
    padding:8px 16px; border-radius:999px;
    background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.09);
  }
  .hilo .k{color:var(--ink-faint); font-weight:500; font-size:12.5px; letter-spacing:.08em; text-transform:uppercase}

  .divider{height:1px; background:linear-gradient(90deg, transparent, rgba(255,255,255,.14), transparent); margin:26px 0 22px}

  .hourly h2{font-size:12.5px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:14px}
  .chart-wrap{width:100%}
  .chart-wrap svg{width:100%; height:auto; display:block}

  .state{min-height:340px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; text-align:center}
  .spinner{width:38px; height:38px; border-radius:50%; border:3px solid rgba(255,255,255,.15); border-top-color:var(--accent); animation:spin .9s linear infinite}
  @keyframes spin{to{transform:rotate(360deg)}}
  .state .msg{font-size:16px; color:var(--ink-dim)}
  .state .err-title{font-size:22px; font-weight:600}
  .state .err-icon{font-size:0}
  .state .err-icon svg{width:56px; height:56px; opacity:.8}

  .fade-in{animation:fade .5s ease both}
  @keyframes fade{from{opacity:0; transform:translateY(8px)} to{opacity:1; transform:none}}
</style>
</head>
<body>
<div class="orb a"></div>
<div class="orb b"></div>

<main class="card" id="card">
  <div class="state" id="state">
    <div class="spinner"></div>
    <div class="msg">Loading weather…</div>
  </div>
  <div id="content" style="display:none"></div>
</main>

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

  /* ---------- params ---------- */
  const q = new URLSearchParams(location.search);
  const num = (v, d) => { const n = parseFloat(v); return Number.isFinite(n) ? n : d; };
  const lat = num(q.get("lat"), 52.52);
  const lon = num(q.get("lon"), 13.405);
  const name = (q.get("name") || "Berlin").trim() || "Berlin";
  const todayUTC = new Date().toISOString().slice(0, 10);
  let date = q.get("date") || "";
  if (!/^\d{4}-\d{2}-\d{2}$/.test(date)) date = todayUTC;

  /* ---------- weather code metadata ---------- */
  const WMO = {
    0:["Clear sky","sun"],1:["Mainly clear","sun"],2:["Partly cloudy","suncloud"],3:["Overcast","cloud"],
    45:["Fog","fog"],48:["Depositing rime fog","fog"],
    51:["Light drizzle","drizzle"],53:["Drizzle","drizzle"],55:["Dense drizzle","drizzle"],
    56:["Freezing drizzle","drizzle"],57:["Dense freezing drizzle","drizzle"],
    61:["Light rain","rain"],63:["Rain","rain"],65:["Heavy rain","rain"],
    66:["Freezing rain","rain"],67:["Heavy freezing rain","rain"],
    71:["Light snowfall","snow"],73:["Snowfall","snow"],75:["Heavy snowfall","snow"],77:["Snow grains","snow"],
    80:["Light rain showers","rain"],81:["Rain showers","rain"],82:["Violent rain showers","rain"],
    85:["Snow showers","snow"],86:["Heavy snow showers","snow"],
    95:["Thunderstorm","storm"],96:["Thunderstorm with hail","storm"],99:["Thunderstorm with heavy hail","storm"]
  };

  const THEMES = {
    sun:      {bg1:"#241d0c", bg2:"#4a3a14", glow:"rgba(255,203,96,.30)",  line:"#ffd479", ftop:"rgba(255,212,121,.28)"},
    suncloud: {bg1:"#1a2030", bg2:"#3a3a2e", glow:"rgba(255,215,140,.22)", line:"#f2cf8d", ftop:"rgba(242,207,141,.26)"},
    cloud:    {bg1:"#151b26", bg2:"#2b3547", glow:"rgba(170,190,220,.22)", line:"#a9c0e0", ftop:"rgba(169,192,224,.26)"},
    fog:      {bg1:"#181c22", bg2:"#333a44", glow:"rgba(200,210,225,.18)", line:"#b9c4d4", ftop:"rgba(185,196,212,.24)"},
    drizzle:  {bg1:"#101a28", bg2:"#22364f", glow:"rgba(120,175,235,.26)", line:"#8fc1ff", ftop:"rgba(143,193,255,.28)"},
    rain:     {bg1:"#0d1726", bg2:"#1e3350", glow:"rgba(105,165,235,.28)", line:"#7fb4ff", ftop:"rgba(127,180,255,.28)"},
    snow:     {bg1:"#131a26", bg2:"#2c3d55", glow:"rgba(200,225,255,.26)", line:"#cfe4ff", ftop:"rgba(207,228,255,.30)"},
    storm:    {bg1:"#150f24", bg2:"#312350", glow:"rgba(170,140,255,.28)", line:"#b9a4ff", ftop:"rgba(185,164,255,.28)"}
  };

  const ICONS = {
    sun: '<svg viewBox="0 0 64 64" fill="none"><circle cx="32" cy="32" r="13" fill="#FFD479"/><g stroke="#FFD479" stroke-width="3.4" stroke-linecap="round"><line x1="32" y1="6" x2="32" y2="13"/><line x1="32" y1="51" x2="32" y2="58"/><line x1="6" y1="32" x2="13" y2="32"/><line x1="51" y1="32" x2="58" y2="32"/><line x1="13.6" y1="13.6" x2="18.6" y2="18.6"/><line x1="45.4" y1="45.4" x2="50.4" y2="50.4"/><line x1="13.6" y1="50.4" x2="18.6" y2="45.4"/><line x1="45.4" y1="18.6" x2="50.4" y2="13.6"/></g></svg>',
    suncloud: '<svg viewBox="0 0 64 64" fill="none"><circle cx="24" cy="24" r="10" fill="#FFD479"/><g stroke="#FFD479" stroke-width="3" stroke-linecap="round"><line x1="24" y1="6" x2="24" y2="11"/><line x1="6" y1="24" x2="11" y2="24"/><line x1="11.3" y1="11.3" x2="14.8" y2="14.8"/><line x1="33.2" y1="14.8" x2="36.7" y2="11.3"/></g><path d="M20 50h26a9 9 0 0 0 1.5-17.9A13 13 0 0 0 22.4 36 8 8 0 0 0 20 50z" fill="#DCE7F5"/></svg>',
    cloud: '<svg viewBox="0 0 64 64" fill="none"><path d="M18 48h29a10 10 0 0 0 1.7-19.9A15 15 0 0 0 19.5 32 9 9 0 0 0 18 48z" fill="#C9D8EC"/><path d="M12 54h20a6 6 0 0 0 .9-11.9 9 9 0 0 0-17.4 2.3A5.5 5.5 0 0 0 12 54z" fill="#9FB4D0"/></svg>',
    fog: '<svg viewBox="0 0 64 64" fill="none"><path d="M18 36h29a10 10 0 0 0 1.7-19.9A15 15 0 0 0 19.5 20 9 9 0 0 0 18 36z" fill="#C9D8EC"/><g stroke="#9FB4D0" stroke-width="3.6" stroke-linecap="round"><line x1="14" y1="45" x2="50" y2="45"/><line x1="20" y1="53" x2="44" y2="53"/></g></svg>',
    drizzle: '<svg viewBox="0 0 64 64" fill="none"><path d="M18 40h29a10 10 0 0 0 1.7-19.9A15 15 0 0 0 19.5 24 9 9 0 0 0 18 40z" fill="#C9D8EC"/><g stroke="#8FC1FF" stroke-width="3.2" stroke-linecap="round"><line x1="24" y1="47" x2="22.8" y2="52"/><line x1="34" y1="47" x2="32.8" y2="52"/><line x1="44" y1="47" x2="42.8" y2="52"/></g></svg>',
    rain: '<svg viewBox="0 0 64 64" fill="none"><path d="M18 38h29a10 10 0 0 0 1.7-19.9A15 15 0 0 0 19.5 22 9 9 0 0 0 18 38z" fill="#C9D8EC"/><g stroke="#7FB4FF" stroke-width="3.4" stroke-linecap="round"><line x1="23" y1="45" x2="20.5" y2="55"/><line x1="33" y1="45" x2="30.5" y2="55"/><line x1="43" y1="45" x2="40.5" y2="55"/></g></svg>',
    snow: '<svg viewBox="0 0 64 64" fill="none"><path d="M18 38h29a10 10 0 0 0 1.7-19.9A15 15 0 0 0 19.5 22 9 9 0 0 0 18 38z" fill="#DCE7F5"/><g fill="#CFE4FF"><circle cx="23" cy="48" r="2.6"/><circle cx="33" cy="53" r="2.6"/><circle cx="43" cy="48" r="2.6"/></g></svg>',
    storm: '<svg viewBox="0 0 64 64" fill="none"><path d="M18 36h29a10 10 0 0 0 1.7-19.9A15 15 0 0 0 19.5 20 9 9 0 0 0 18 36z" fill="#B9C6DB"/><path d="M34 38l-9 12h7l-3.5 10L40 47h-7l4-9z" fill="#FFD479"/></svg>'
  };

  /* ---------- helpers ---------- */
  const esc = s => String(s).replace(/[&<>"']/g, c => ({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[c]));
  const fmt1 = v => (Math.round(v * 10) / 10).toLocaleString("en-US", {minimumFractionDigits:0, maximumFractionDigits:1});

  function prettyDate(iso){
    try{
      return new Date(iso + "T00:00:00Z").toLocaleDateString("en-GB",
        {weekday:"long", day:"numeric", month:"long", year:"numeric", timeZone:"UTC"});
    }catch(e){ return iso; }
  }

  function applyTheme(kind){
    const t = THEMES[kind] || THEMES.drizzle;
    const r = document.documentElement.style;
    r.setProperty("--bg1", t.bg1);
    r.setProperty("--bg2", t.bg2);
    r.setProperty("--glow", t.glow);
    r.setProperty("--chart-line", t.line);
    r.setProperty("--chart-fill-top", t.ftop);
  }

  function showError(msg){
    document.getElementById("content").style.display = "none";
    const st = document.getElementById("state");
    st.style.display = "flex";
    st.innerHTML =
      '<div class="err-icon"><svg viewBox="0 0 64 64" fill="none"><circle cx="32" cy="32" r="26" stroke="rgba(234,242,255,.35)" stroke-width="3"/><line x1="32" y1="18" x2="32" y2="36" stroke="rgba(234,242,255,.7)" stroke-width="4" stroke-linecap="round"/><circle cx="32" cy="45" r="2.6" fill="rgba(234,242,255,.7)"/></svg></div>' +
      '<div class="err-title">Weather data could not be loaded</div>' +
      '<div class="msg">' + esc(msg) + '</div>';
  }

  /* ---------- hourly chart (SVG) ---------- */
  function buildChart(hours, temps){
    const W = 976, H = 250, padL = 16, padR = 16, padT = 44, padB = 40;
    const n = temps.length;
    const vals = temps.filter(v => v != null && Number.isFinite(v));
    if (n < 2 || vals.length < 2) return '<div class="msg" style="color:var(--ink-dim);font-size:14px">Hourly temperatures unavailable for this date.</div>';

    let lo = Math.min(...vals), hi = Math.max(...vals);
    if (hi - lo < 1) { hi += .5; lo -= .5; }
    const span = hi - lo;
    const x = i => padL + i * (W - padL - padR) / (n - 1);
    const y = v => padT + (1 - (v - lo) / span) * (H - padT - padB);

    const pts = [];
    for (let i = 0; i < n; i++) if (temps[i] != null && Number.isFinite(temps[i])) pts.push([x(i), y(temps[i]), i, temps[i]]);

    // smooth cubic path through points
    let d = "M" + pts[0][0].toFixed(1) + " " + pts[0][1].toFixed(1);
    for (let i = 1; i < pts.length; i++){
      const p0 = pts[i-1], p1 = pts[i];
      const cx = ((p0[0] + p1[0]) / 2).toFixed(1);
      d += " C" + cx + " " + p0[1].toFixed(1) + " " + cx + " " + p1[1].toFixed(1) + " " + p1[0].toFixed(1) + " " + p1[1].toFixed(1);
    }
    const area = d + " L" + pts[pts.length-1][0].toFixed(1) + " " + (H - padB + 6) + " L" + pts[0][0].toFixed(1) + " " + (H - padB + 6) + " Z";

    let iMax = 0, iMin = 0;
    pts.forEach((p, k) => { if (p[3] > pts[iMax][3]) iMax = k; if (p[3] < pts[iMin][3]) iMin = k; });

    let s = '<svg viewBox="0 0 ' + W + ' ' + H + '" role="img" aria-label="Hourly temperature chart">';
    s += '<defs><linearGradient id="fill" x1="0" y1="0" x2="0" y2="1">' +
         '<stop offset="0" stop-color="var(--chart-fill-top)"/><stop offset="1" stop-color="var(--chart-fill-bot)"/>' +
         '</linearGradient></defs>';

    // baseline grid
    s += '<line x1="' + padL + '" y1="' + (H - padB + 6) + '" x2="' + (W - padR) + '" y2="' + (H - padB + 6) + '" stroke="rgba(255,255,255,.10)" stroke-width="1"/>';

    s += '<path d="' + area + '" fill="url(#fill)"/>';
    s += '<path d="' + d + '" fill="none" stroke="var(--chart-line)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>';

    // hour ticks + value labels every 3h
    for (const p of pts){
      const i = p[2];
      if (i % 3 === 0 || i === n - 1){
        s += '<text x="' + p[0].toFixed(1) + '" y="' + (H - 12) + '" text-anchor="middle" font-size="12" fill="rgba(234,242,255,.42)">' +
             hours[i] + '</text>';
        s += '<circle cx="' + p[0].toFixed(1) + '" cy="' + p[1].toFixed(1) + '" r="3" fill="var(--chart-line)"/>';
        s += '<text x="' + p[0].toFixed(1) + '" y="' + (p[1] - 12).toFixed(1) + '" text-anchor="middle" font-size="12.5" font-weight="600" fill="rgba(234,242,255,.85)">' +
             fmt1(p[3]) + '°</text>';
      }
    }

    // max / min markers
    for (const [k, tag] of [[iMax, "H"], [iMin, "L"]]){
      const p = pts[k];
      if (p[2] % 3 === 0 || p[2] === n - 1) continue; // already labelled
      s += '<circle cx="' + p[0].toFixed(1) + '" cy="' + p[1].toFixed(1) + '" r="3.6" fill="var(--chart-line)" stroke="rgba(0,0,0,.35)" stroke-width="1"/>';
      s += '<text x="' + p[0].toFixed(1) + '" y="' + (p[1] + (tag === "L" ? 20 : -12)).toFixed(1) + '" text-anchor="middle" font-size="12.5" font-weight="600" fill="rgba(234,242,255,.85)">' +
           fmt1(p[3]) + '°</text>';
    }

    s += '</svg>';
    return s;
  }

  /* ---------- render ---------- */
  function render(data){
    const daily = data.daily || {};
    const hourly = data.hourly || {};
    const tMax = daily.temperature_2m_max && daily.temperature_2m_max[0];
    const tMin = daily.temperature_2m_min && daily.temperature_2m_min[0];
    const code = daily.weather_code && daily.weather_code[0];
    const hTimes = hourly.time || [];
    const hTemps = hourly.temperature_2m || [];

    const hasDaily = tMax != null && tMin != null;
    const hasHourly = Array.isArray(hTemps) && hTemps.some(v => v != null && Number.isFinite(v));
    if (!hasDaily && !hasHourly){
      showError("No weather data is available for " + name + " on " + date + ".");
      return;
    }

    const meta = WMO[code] || [code != null ? "Weather code " + code : "Condition unavailable", "cloud"];
    applyTheme(meta[1]);

    const hourLabels = hTimes.map(t => {
      const m = /T(\d{2}):/.exec(t);
      return m ? m[1] + ":00" : "";
    });

    const html =
      '<div class="fade-in">' +
        '<div class="top">' +
          '<div class="loc">' +
            '<h1>' + esc(name) + '</h1>' +
            '<div class="date">' + esc(prettyDate(date)) + ' · UTC</div>' +
            '<div class="coords">' + lat.toFixed(2) + '°, ' + lon.toFixed(2) + '°</div>' +
          '</div>' +
          '<div class="cond">' +
            '<div>' +
              '<div class="label">' + esc(meta[0]) + '</div>' +
              '<div class="sub">' + (date < todayUTC ? "Historical" : (date === todayUTC ? "Today" : "Forecast")) + '</div>' +
            '</div>' +
            '<div class="icon">' + (ICONS[meta[1]] || ICONS.cloud) + '</div>' +
          '</div>' +
        '</div>' +
        '<div class="temps">' +
          '<div class="max">' + (tMax != null ? fmt1(tMax) + '<sup>°C</sup>' : '—') + '</div>' +
          '<div class="hilo">' +
            '<div class="pill"><span class="k">High</span> ' + (tMax != null ? fmt1(tMax) + '°' : '—') + '</div>' +
            '<div class="pill"><span class="k">Low</span> ' + (tMin != null ? fmt1(tMin) + '°' : '—') + '</div>' +
          '</div>' +
        '</div>' +
        '<div class="divider"></div>' +
        '<div class="hourly">' +
          '<h2>Hourly temperature</h2>' +
          '<div class="chart-wrap">' + buildChart(hourLabels, hTemps) + '</div>' +
        '</div>' +
      '</div>';

    document.getElementById("state").style.display = "none";
    const c = document.getElementById("content");
    c.innerHTML = html;
    c.style.display = "block";
    document.title = name + " · " + date + " · Weather";
  }

  /* ---------- fetch ---------- */
  const base = date < todayUTC ? "/api/om/archive" : "/api/om/forecast";
  const url = base + "?" + new URLSearchParams({
    latitude: lat, longitude: lon,
    daily: "temperature_2m_max,temperature_2m_min,weather_code",
    hourly: "temperature_2m",
    timezone: "UTC",
    temperature_unit: "celsius",
    start_date: date, end_date: date
  }).toString();

  fetch(url)
    .then(r => {
      if (!r.ok) throw new Error("The weather service responded with status " + r.status + ".");
      return r.json();
    })
    .then(data => {
      if (data && data.error) throw new Error(data.reason || "The weather service returned an error.");
      render(data);
    })
    .catch(e => showError(e && e.message ? e.message : "An unexpected error occurred while fetching weather data."));
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total17,870html / css / js454 / 3,924 / 13,492
dom nodes15dom depth5
css rules38js presentyes
brightness41.8contrast16.6
colorfulness14.2whitespace69.7%

This slot's telemetry

prompt tokens2completion tokens10,875
total tokens10,877wall121.2 s
costrequest id
config.json576 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "claude-fable-5-eff-high--cli--cursor--dev",
  "effort": "high",
  "family": "claude",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "claude-fable-5",
  "protocol": "cli",
  "served_model": "claude-fable-5-high",
  "telemetry": {
    "completion_tokens": 28354,
    "cost_usd": null,
    "prompt_tokens": 8,
    "total_tokens": 28362,
    "wall_ms": 325952
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-s0",
  "config_id": "claude-fable-5-eff-high--cli--cursor--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-12T19:22:23.272401+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T19:21:38.379960+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-12T19:25:11.745943+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T19:23:10.500010+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-12T19:27:03.178380+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T19:25:14.952393+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-12T19:27:58.303380+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T19:27:06.707052+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
    }
  }
}