cursor-grok-4.6 @ medium · cursor

cursormedium
config
cursor-grok-4.6-eff-medium--cli--cursor--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
cursor-grok-4.6-medium
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
cursor-grok-4.6 @medium · 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 neighbors

within session 2026-07-19--unified

similarity measures convergence within this session — not quality.

Fidelity — does the card show the right data?

  • namematch
  • conditionmatch
  • datematch
  • max tempmatchshown: 25
  • min tempmatchshown: 16
  • hourlyambiguouscoverage · 0 match · 0 mismatch · 24 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, height=800, initial-scale=1" />
  <title>Weather</title>
  <style>
    :root {
      --ink: #f4efe6;
      --ink-soft: rgba(244, 239, 230, 0.72);
      --ink-mute: rgba(244, 239, 230, 0.46);
      --line: rgba(244, 239, 230, 0.14);
      --glass: rgba(12, 16, 28, 0.28);
      --accent: #e8c37a;
    }

    * { box-sizing: border-box; margin: 0; padding: 0; }

    html, body {
      width: 1280px;
      height: 800px;
      overflow: hidden;
      background: #0b1020;
      color: var(--ink);
      font-family: "Avenir Next", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
    }

    body {
      display: grid;
      place-items: center;
    }

    .stage {
      position: relative;
      width: 1280px;
      height: 800px;
      overflow: hidden;
      isolation: isolate;
    }

    .sky {
      position: absolute;
      inset: 0;
      background:
        radial-gradient(1200px 640px at 18% -10%, var(--glow-a, #3a4a7a) 0%, transparent 58%),
        radial-gradient(900px 520px at 92% 18%, var(--glow-b, #1a2a48) 0%, transparent 55%),
        linear-gradient(165deg, var(--sky-top, #1c2744) 0%, var(--sky-mid, #12182c) 48%, var(--sky-bot, #0a0e18) 100%);
      transition: background 0.8s ease;
    }

    .grain {
      position: absolute;
      inset: 0;
      opacity: 0.09;
      pointer-events: none;
      background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
      mix-blend-mode: overlay;
    }

    .orb {
      position: absolute;
      width: 420px;
      height: 420px;
      border-radius: 50%;
      right: 90px;
      top: 70px;
      background: radial-gradient(circle at 38% 34%, var(--orb-core, #f3d7a1) 0%, var(--orb-mid, #d08a4a) 32%, transparent 68%);
      filter: blur(8px);
      opacity: 0.55;
      pointer-events: none;
    }

    .card {
      position: relative;
      z-index: 2;
      height: 100%;
      padding: 56px 72px 48px;
      display: grid;
      grid-template-rows: auto 1fr auto;
      gap: 28px;
    }

    header {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
    }

    .place {
      font-size: 15px;
      letter-spacing: 0.38em;
      text-transform: uppercase;
      color: var(--ink-soft);
      font-weight: 600;
    }

    .place strong {
      display: block;
      margin-top: 10px;
      font-family: Georgia, "Iowan Old Style", "Palatino Linotype", Palatino, serif;
      font-size: 54px;
      letter-spacing: -0.03em;
      line-height: 0.95;
      font-weight: 500;
      color: var(--ink);
      text-transform: none;
    }

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

    .date-kicker {
      font-size: 12px;
      letter-spacing: 0.28em;
      text-transform: uppercase;
      color: var(--ink-mute);
    }

    .date-main {
      margin-top: 10px;
      font-size: 22px;
      font-weight: 500;
      letter-spacing: 0.02em;
      color: var(--ink-soft);
    }

    .hero {
      display: grid;
      grid-template-columns: 1.15fr 0.85fr;
      align-items: center;
      gap: 40px;
      min-height: 0;
    }

    .condition-row {
      display: flex;
      align-items: center;
      gap: 22px;
    }

    .icon-wrap {
      width: 92px;
      height: 92px;
      border-radius: 28px;
      background: var(--glass);
      border: 1px solid var(--line);
      display: grid;
      place-items: center;
      backdrop-filter: blur(16px);
      box-shadow: 0 18px 50px rgba(0, 0, 0, 0.22);
    }

    .icon-wrap svg {
      width: 54px;
      height: 54px;
    }

    .condition-copy .label {
      font-size: 13px;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: var(--ink-mute);
    }

    .condition-copy h2 {
      margin-top: 8px;
      font-family: Georgia, "Iowan Old Style", Palatino, serif;
      font-size: 36px;
      font-weight: 500;
      letter-spacing: -0.02em;
    }

    .temps {
      display: flex;
      align-items: flex-end;
      gap: 36px;
      justify-self: end;
    }

    .temp-hero {
      font-family: Georgia, "Iowan Old Style", Palatino, serif;
      font-size: 168px;
      line-height: 0.78;
      letter-spacing: -0.055em;
      font-weight: 400;
    }

    .temp-hero span {
      font-size: 52px;
      vertical-align: super;
      letter-spacing: 0;
      margin-left: 4px;
      color: var(--accent);
    }

    .minmax {
      display: flex;
      flex-direction: column;
      gap: 14px;
      padding-bottom: 10px;
    }

    .mm {
      min-width: 132px;
      padding: 12px 16px;
      border-radius: 16px;
      background: var(--glass);
      border: 1px solid var(--line);
    }

    .mm small {
      display: block;
      font-size: 11px;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--ink-mute);
    }

    .mm b {
      display: block;
      margin-top: 4px;
      font-size: 28px;
      font-weight: 500;
    }

    .hourly {
      border-top: 1px solid var(--line);
      padding-top: 22px;
    }

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

    .hourly-head h3 {
      font-size: 12px;
      letter-spacing: 0.28em;
      text-transform: uppercase;
      color: var(--ink-mute);
      font-weight: 600;
    }

    .hourly-head p {
      font-size: 13px;
      color: var(--ink-soft);
    }

    .chart {
      width: 100%;
      height: 196px;
      display: block;
    }

    .error, .loading {
      position: relative;
      z-index: 3;
      height: 100%;
      display: grid;
      place-items: center;
      text-align: center;
      padding: 80px;
    }

    .error h1, .loading h1 {
      font-family: Georgia, Palatino, serif;
      font-size: 42px;
      font-weight: 500;
      margin-bottom: 14px;
    }

    .error p, .loading p {
      font-size: 18px;
      color: var(--ink-soft);
      max-width: 520px;
      line-height: 1.5;
    }

    .hidden { display: none; }

    .tick { fill: var(--ink-mute); font-size: 12px; font-family: "Avenir Next", "Segoe UI", sans-serif; }
    .val { fill: var(--ink); font-size: 13px; font-weight: 600; font-family: "Avenir Next", "Segoe UI", sans-serif; }
  </style>
</head>
<body>
  <div class="stage" id="stage">
    <div class="sky" id="sky"></div>
    <div class="orb" id="orb"></div>
    <div class="grain"></div>

    <div class="loading" id="loading">
      <div>
        <h1>Reading the sky</h1>
        <p>Fetching temperatures for this place and date.</p>
      </div>
    </div>

    <div class="error hidden" id="error">
      <div>
        <h1>Weather data could not be loaded</h1>
        <p id="error-detail">The forecast for this location and date is unavailable. Check the date and try again.</p>
      </div>
    </div>

    <div class="card hidden" id="card">
      <header>
        <div class="place">Location<strong id="place-name">Berlin</strong></div>
        <div class="date-block">
          <div class="date-kicker">Selected day · UTC</div>
          <div class="date-main" id="date-label"></div>
        </div>
      </header>

      <section class="hero">
        <div class="condition-row">
          <div class="icon-wrap" id="icon"></div>
          <div class="condition-copy">
            <div class="label">Condition</div>
            <h2 id="condition">—</h2>
          </div>
        </div>
        <div class="temps">
          <div class="temp-hero" id="mid-temp">—<span>°</span></div>
          <div class="minmax">
            <div class="mm"><small>Maximum</small><b id="tmax">—</b></div>
            <div class="mm"><small>Minimum</small><b id="tmin">—</b></div>
          </div>
        </div>
      </section>

      <section class="hourly">
        <div class="hourly-head">
          <h3>Hourly temperature</h3>
          <p id="hourly-range"></p>
        </div>
        <svg class="chart" id="chart" viewBox="0 0 1136 196" preserveAspectRatio="none"></svg>
      </section>
    </div>
  </div>

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

      const THEMES = {
        clear: { top: "#2a3d6a", mid: "#1a2744", bot: "#0c1220", a: "#f0c27a", b: "#3d5a9a", orb: "#f6d9a4", midc: "#e08a3c" },
        cloud: { top: "#3a455c", mid: "#222a3a", bot: "#10141c", a: "#8aa0c4", b: "#4a5568", orb: "#c9d4e4", midc: "#7b8798" },
        rain:  { top: "#1b3a4a", mid: "#122430", bot: "#081018", a: "#3aa0b8", b: "#1a4a68", orb: "#7ec8d8", midc: "#2a7a90" },
        snow:  { top: "#4a5c78", mid: "#2a3648", bot: "#141a24", a: "#d8e6f4", b: "#6a88b0", orb: "#f2f7fc", midc: "#a8c4dc" },
        storm: { top: "#2a2458", mid: "#16122e", bot: "#0a0816", a: "#8a6ad0", b: "#3a2068", orb: "#c4a8f0", midc: "#6a40b8" },
        fog:   { top: "#4a4a58", mid: "#2c2c36", bot: "#16161c", a: "#c0b8b0", b: "#6a6864", orb: "#e8e0d4", midc: "#9a948c" }
      };

      function themeFor(code) {
        if ([95, 96, 99].includes(code)) return THEMES.storm;
        if ([71, 73, 75, 77, 85, 86].includes(code)) return THEMES.snow;
        if ([51, 53, 55, 56, 57, 61, 63, 65, 66, 67, 80, 81, 82].includes(code)) return THEMES.rain;
        if ([45, 48].includes(code)) return THEMES.fog;
        if ([2, 3].includes(code)) return THEMES.cloud;
        return THEMES.clear;
      }

      function iconSvg(code) {
        const stroke = "#f4efe6";
        const fill = "rgba(244,239,230,0.18)";
        if ([0, 1].includes(code)) {
          return `<svg viewBox="0 0 64 64" fill="none"><circle cx="32" cy="32" r="12" fill="${fill}" stroke="${stroke}" stroke-width="2"/><g stroke="${stroke}" stroke-width="2" stroke-linecap="round"><path d="M32 8v6M32 50v6M8 32h6M50 32h6M14.2 14.2l4.2 4.2M45.6 45.6l4.2 4.2M14.2 49.8l4.2-4.2M45.6 18.4l4.2-4.2"/></g></svg>`;
        }
        if (code === 2) {
          return `<svg viewBox="0 0 64 64" fill="none"><circle cx="24" cy="24" r="9" fill="${fill}" stroke="${stroke}" stroke-width="2"/><path d="M20 44h22a10 10 0 0 0 1-20 13 13 0 0 0-24 4 9 9 0 0 0 1 16z" fill="${fill}" stroke="${stroke}" stroke-width="2"/></svg>`;
        }
        if (code === 3 || code === 45 || code === 48) {
          return `<svg viewBox="0 0 64 64" fill="none"><path d="M18 40h26a11 11 0 0 0 1.2-22 14 14 0 0 0-26.4 4.4A10 10 0 0 0 18 40z" fill="${fill}" stroke="${stroke}" stroke-width="2"/><path d="M16 48h32M20 54h24" stroke="${stroke}" stroke-width="2" stroke-linecap="round" opacity="${code >= 45 ? 1 : 0}"/></svg>`;
        }
        if ([71, 73, 75, 77, 85, 86].includes(code)) {
          return `<svg viewBox="0 0 64 64" fill="none"><path d="M18 32h26a11 11 0 0 0 1.2-22 14 14 0 0 0-26.4 4.4A10 10 0 0 0 18 32z" fill="${fill}" stroke="${stroke}" stroke-width="2"/><g stroke="${stroke}" stroke-width="2" stroke-linecap="round"><path d="M22 40v6M32 38v8M42 40v6M22 52l2 3M32 52l2 3M42 52l2 3"/></g></svg>`;
        }
        if ([95, 96, 99].includes(code)) {
          return `<svg viewBox="0 0 64 64" fill="none"><path d="M18 30h26a11 11 0 0 0 1.2-22 14 14 0 0 0-26.4 4.4A10 10 0 0 0 18 30z" fill="${fill}" stroke="${stroke}" stroke-width="2"/><path d="M30 34l-8 12h8l-4 12 16-16h-8l6-8z" fill="${fill}" stroke="${stroke}" stroke-width="2" stroke-linejoin="round"/></svg>`;
        }
        return `<svg viewBox="0 0 64 64" fill="none"><path d="M18 30h26a11 11 0 0 0 1.2-22 14 14 0 0 0-26.4 4.4A10 10 0 0 0 18 30z" fill="${fill}" stroke="${stroke}" stroke-width="2"/><g stroke="${stroke}" stroke-width="2" stroke-linecap="round"><path d="M24 40v8M32 38v12M40 40v8"/></g></svg>`;
      }

      function utcToday() {
        const n = new Date();
        const y = n.getUTCFullYear();
        const m = String(n.getUTCMonth() + 1).padStart(2, "0");
        const d = String(n.getUTCDate()).padStart(2, "0");
        return y + "-" + m + "-" + d;
      }

      function parseParams() {
        const q = new URLSearchParams(location.search);
        const lat = q.has("lat") ? Number(q.get("lat")) : 52.52;
        const lon = q.has("lon") ? Number(q.get("lon")) : 13.405;
        const name = (q.get("name") || "Berlin").trim() || "Berlin";
        const date = q.get("date") || utcToday();
        return { lat, lon, name, date };
      }

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

      function formatDate(iso) {
        const dt = new Date(iso + "T00:00:00Z");
        return dt.toLocaleDateString("en-GB", {
          weekday: "long",
          day: "numeric",
          month: "long",
          year: "numeric",
          timeZone: "UTC"
        });
      }

      function fmt(n) {
        if (n == null || Number.isNaN(n)) return "—";
        const r = Math.round(n);
        return (r > 0 ? "+" : "") + r + "°";
      }

      function applyTheme(code) {
        const t = themeFor(code);
        const sky = document.getElementById("sky");
        sky.style.setProperty("--sky-top", t.top);
        sky.style.setProperty("--sky-mid", t.mid);
        sky.style.setProperty("--sky-bot", t.bot);
        sky.style.setProperty("--glow-a", t.a);
        sky.style.setProperty("--glow-b", t.b);
        document.getElementById("orb").style.setProperty("--orb-core", t.orb);
        document.getElementById("orb").style.setProperty("--orb-mid", t.midc);
      }

      function showError(msg) {
        document.getElementById("loading").classList.add("hidden");
        document.getElementById("card").classList.add("hidden");
        document.getElementById("error").classList.remove("hidden");
        if (msg) document.getElementById("error-detail").textContent = msg;
      }

      function drawChart(hours, temps) {
        const svg = document.getElementById("chart");
        const W = 1136, H = 196;
        const padL = 8, padR = 8, padT = 28, padB = 36;
        const innerW = W - padL - padR;
        const innerH = H - padT - padB;
        const vals = temps.map(Number);
        let min = Math.min.apply(null, vals);
        let max = Math.max.apply(null, vals);
        if (min === max) { min -= 1; max += 1; }
        const span = max - min;
        const n = vals.length;
        const xAt = (i) => padL + (n === 1 ? innerW / 2 : (i / (n - 1)) * innerW);
        const yAt = (v) => padT + (1 - (v - min) / span) * innerH;

        const pts = vals.map((v, i) => [xAt(i), yAt(v)]);
        let d = "";
        pts.forEach((p, i) => {
          if (i === 0) d += "M " + p[0] + " " + p[1];
          else {
            const prev = pts[i - 1];
            const cpx = (prev[0] + p[0]) / 2;
            d += " C " + cpx + " " + prev[1] + ", " + cpx + " " + p[1] + ", " + p[0] + " " + p[1];
          }
        });
        const area = d + " L " + pts[pts.length - 1][0] + " " + (H - padB) + " L " + pts[0][0] + " " + (H - padB) + " Z";

        const labels = [];
        const step = n > 12 ? 3 : 1;
        for (let i = 0; i < n; i += step) {
          const hh = hours[i].slice(11, 13);
          labels.push(`<text class="tick" x="${xAt(i)}" y="${H - 10}" text-anchor="middle">${hh}</text>`);
          if (i % (step * 2) === 0 || i === 0 || i === n - 1) {
            labels.push(`<text class="val" x="${xAt(i)}" y="${yAt(vals[i]) - 10}" text-anchor="middle">${Math.round(vals[i])}°</text>`);
          }
        }

        const dots = pts.map((p) => `<circle cx="${p[0]}" cy="${p[1]}" r="3.2" fill="#f4efe6" opacity="0.9"/>`).join("");

        svg.innerHTML =
          `<defs>
            <linearGradient id="fillG" x1="0" y1="0" x2="0" y2="1">
              <stop offset="0%" stop-color="#e8c37a" stop-opacity="0.35"/>
              <stop offset="100%" stop-color="#e8c37a" stop-opacity="0"/>
            </linearGradient>
          </defs>
          <path d="${area}" fill="url(#fillG)"/>
          <path d="${d}" fill="none" stroke="#e8c37a" stroke-width="2.4" stroke-linecap="round"/>
          ${dots}${labels.join("")}`;
      }

      async function load() {
        const { lat, lon, name, date } = parseParams();
        if (!Number.isFinite(lat) || !Number.isFinite(lon) || !validDate(date)) {
          showError("The location or date in the URL is not valid.");
          return;
        }

        const today = utcToday();
        const endpoint = date < today ? "/api/om/archive" : "/api/om/forecast";
        const qs = 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
        });

        let data;
        try {
          const res = await fetch(endpoint + "?" + qs.toString());
          if (!res.ok) throw new Error("bad status");
          data = await res.json();
        } catch (e) {
          showError("Weather data could not be loaded.");
          return;
        }

        const daily = data && data.daily;
        const hourly = data && data.hourly;
        if (!daily || !daily.time || !daily.time.length || !hourly || !hourly.time) {
          showError("Weather data could not be loaded.");
          return;
        }

        const idx = daily.time.indexOf(date);
        const di = idx >= 0 ? idx : 0;
        const tmax = daily.temperature_2m_max[di];
        const tmin = daily.temperature_2m_min[di];
        const code = Number(daily.weather_code[di]);
        if (tmax == null || tmin == null || Number.isNaN(code)) {
          showError("Weather data could not be loaded.");
          return;
        }

        const hours = [];
        const temps = [];
        for (let i = 0; i < hourly.time.length; i++) {
          if (String(hourly.time[i]).slice(0, 10) === date && hourly.temperature_2m[i] != null) {
            hours.push(hourly.time[i]);
            temps.push(hourly.temperature_2m[i]);
          }
        }
        if (!temps.length) {
          showError("Weather data could not be loaded.");
          return;
        }

        applyTheme(code);
        document.getElementById("place-name").textContent = name;
        document.getElementById("date-label").textContent = formatDate(date);
        document.getElementById("condition").textContent = CODES[code] || ("Weather code " + code);
        document.getElementById("icon").innerHTML = iconSvg(code);
        const mid = (Number(tmax) + Number(tmin)) / 2;
        document.getElementById("mid-temp").innerHTML = Math.round(mid) + "<span>°</span>";
        document.getElementById("tmax").textContent = fmt(tmax);
        document.getElementById("tmin").textContent = fmt(tmin);
        const lo = Math.round(Math.min.apply(null, temps));
        const hi = Math.round(Math.max.apply(null, temps));
        document.getElementById("hourly-range").textContent = lo + "° to " + hi + "° across 24 hours";
        drawChart(hours, temps);

        document.getElementById("loading").classList.add("hidden");
        document.getElementById("error").classList.add("hidden");
        document.getElementById("card").classList.remove("hidden");
      }

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

L1 — cheap deterministic descriptors

bytes total20,439html / css / js2,007 / 6,449 / 11,983
dom nodes48dom depth9
css rules39js presentyes
brightness48.4contrast27.8
colorfulness35.8whitespace59.0%

This slot's telemetry

prompt tokens50,241completion tokens14,942
total tokens65,183wall131.8 s
cost—request id—
config.json589 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "cursor-grok-4.6-eff-medium--cli--cursor--dev",
  "effort": "medium",
  "family": "grok",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "cursor-grok-4.6",
  "protocol": "cli",
  "served_model": "cursor-grok-4.6-medium",
  "telemetry": {
    "completion_tokens": 42032,
    "cost_usd": null,
    "prompt_tokens": 148314,
    "total_tokens": 190346,
    "wall_ms": 347851
  },
  "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": "cursor-grok-4.6-eff-medium--cli--cursor--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-12T17:26:07.028236+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:23:55.240501+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:27:03.145020+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:26:11.931186+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:28:17.634190+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:27:06.658625+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:29:56.002252+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T17:28:22.123757+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
    }
  }
}