gpt-5.6-sol @ medium · cursor

cursormedium
config
gpt-5.6-sol-eff-medium--cli--cursor--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
gpt-5.6-sol-medium
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.6-sol @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
  • hourlynot-foundcoverage · 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=device-width, initial-scale=1.0">
  <title>Weather</title>
  <style>
    :root {
      color-scheme: dark;
      --text: #f7fbff;
      --muted: rgba(235, 245, 255, 0.68);
      --line: rgba(255, 255, 255, 0.12);
      --accent: #ffd36a;
      --accent-cool: #86d7ff;
    }

    * {
      box-sizing: border-box;
    }

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

    body {
      overflow: hidden;
      color: var(--text);
      font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      background:
        radial-gradient(circle at 15% 10%, rgba(86, 154, 255, 0.42), transparent 34%),
        radial-gradient(circle at 88% 18%, rgba(255, 192, 96, 0.24), transparent 29%),
        linear-gradient(145deg, #10294a 0%, #0b1b34 47%, #071426 100%);
    }

    body::before,
    body::after {
      position: fixed;
      content: "";
      border-radius: 50%;
      filter: blur(2px);
      pointer-events: none;
    }

    body::before {
      width: 430px;
      height: 430px;
      right: -140px;
      bottom: -190px;
      background: rgba(74, 129, 205, 0.14);
      border: 1px solid rgba(255, 255, 255, 0.08);
    }

    body::after {
      width: 210px;
      height: 210px;
      left: -80px;
      bottom: -60px;
      background: rgba(255, 211, 106, 0.08);
    }

    main {
      width: 100%;
      height: 100%;
      padding: 54px 70px;
      display: grid;
      place-items: center;
    }

    .weather-card {
      position: relative;
      width: min(1140px, 100%);
      height: min(692px, 100%);
      padding: 46px 50px 36px;
      overflow: hidden;
      border: 1px solid rgba(255, 255, 255, 0.16);
      border-radius: 34px;
      background:
        linear-gradient(135deg, rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.045)),
        rgba(7, 25, 48, 0.68);
      box-shadow:
        0 36px 90px rgba(0, 8, 24, 0.5),
        inset 0 1px 0 rgba(255, 255, 255, 0.16);
      backdrop-filter: blur(26px);
    }

    .weather-card::before {
      position: absolute;
      width: 380px;
      height: 380px;
      top: -190px;
      right: -70px;
      content: "";
      border-radius: 50%;
      background: radial-gradient(circle, rgba(255, 213, 116, 0.17), transparent 68%);
      pointer-events: none;
    }

    .topbar {
      position: relative;
      z-index: 1;
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      min-height: 62px;
    }

    .eyebrow {
      display: flex;
      align-items: center;
      gap: 9px;
      margin-bottom: 11px;
      color: var(--accent-cool);
      font-size: 12px;
      font-weight: 750;
      letter-spacing: 0.17em;
      text-transform: uppercase;
    }

    .eyebrow::before {
      width: 7px;
      height: 7px;
      content: "";
      border-radius: 50%;
      background: currentColor;
      box-shadow: 0 0 14px currentColor;
    }

    h1 {
      max-width: 700px;
      margin: 0;
      overflow: hidden;
      font-size: clamp(30px, 3.2vw, 45px);
      font-weight: 680;
      letter-spacing: -0.045em;
      line-height: 1.04;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .date-block {
      padding-top: 4px;
      text-align: right;
    }

    .date-block time {
      display: block;
      font-size: 16px;
      font-weight: 620;
    }

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

    .loading,
    .error {
      position: absolute;
      inset: 0;
      z-index: 5;
      display: grid;
      place-content: center;
      justify-items: center;
      gap: 17px;
      padding: 40px;
      text-align: center;
      background: linear-gradient(145deg, rgba(15, 43, 76, 0.96), rgba(7, 22, 42, 0.97));
      transition: opacity 300ms ease, visibility 300ms ease;
    }

    .loading.hidden,
    .error.hidden {
      visibility: hidden;
      opacity: 0;
      pointer-events: none;
    }

    .spinner {
      width: 44px;
      height: 44px;
      border: 3px solid rgba(255, 255, 255, 0.16);
      border-top-color: var(--accent);
      border-radius: 50%;
      animation: spin 0.9s linear infinite;
    }

    .state-title {
      margin: 0;
      font-size: 25px;
      font-weight: 650;
      letter-spacing: -0.025em;
    }

    .state-copy {
      max-width: 440px;
      margin: 0;
      color: var(--muted);
      line-height: 1.6;
    }

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

    .summary {
      position: relative;
      z-index: 1;
      display: grid;
      grid-template-columns: 1.08fr 0.92fr;
      align-items: center;
      height: 260px;
      margin-top: 10px;
    }

    .temperature-row {
      display: flex;
      align-items: center;
      gap: 32px;
    }

    .weather-icon {
      width: 148px;
      height: 148px;
      flex: 0 0 148px;
      filter: drop-shadow(0 18px 20px rgba(0, 8, 22, 0.2));
    }

    .temperature {
      display: flex;
      align-items: flex-start;
      line-height: 0.85;
    }

    .temperature strong {
      font-size: 112px;
      font-weight: 300;
      letter-spacing: -0.09em;
    }

    .temperature sup {
      margin: 8px 0 0 8px;
      color: var(--accent);
      font-size: 27px;
      font-weight: 600;
      letter-spacing: -0.03em;
    }

    .condition {
      margin: 13px 0 0 3px;
      color: rgba(247, 251, 255, 0.82);
      font-size: 19px;
      font-weight: 540;
    }

    .range {
      justify-self: end;
      min-width: 290px;
      display: grid;
      grid-template-columns: 1fr 1fr;
      overflow: hidden;
      border: 1px solid var(--line);
      border-radius: 22px;
      background: rgba(255, 255, 255, 0.055);
    }

    .range-item {
      padding: 24px 27px 22px;
    }

    .range-item + .range-item {
      border-left: 1px solid var(--line);
    }

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

    .range-label .arrow {
      font-size: 16px;
      line-height: 1;
    }

    .high .arrow {
      color: var(--accent);
    }

    .low .arrow {
      color: var(--accent-cool);
    }

    .range-value {
      display: block;
      margin-top: 11px;
      font-size: 35px;
      font-weight: 500;
      letter-spacing: -0.05em;
    }

    .hourly {
      position: relative;
      z-index: 1;
      height: 270px;
      padding: 23px 26px 12px;
      border: 1px solid var(--line);
      border-radius: 25px;
      background: linear-gradient(180deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.025));
    }

    .hourly-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0 3px;
    }

    .hourly-header h2 {
      margin: 0;
      font-size: 15px;
      font-weight: 680;
      letter-spacing: -0.01em;
    }

    .unit {
      color: var(--muted);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: 0.13em;
      text-transform: uppercase;
    }

    .chart-wrap {
      position: relative;
      height: 205px;
      margin-top: 10px;
    }

    #chart {
      width: 100%;
      height: 100%;
      overflow: visible;
    }

    .grid-line {
      stroke: rgba(255, 255, 255, 0.08);
      stroke-width: 1;
      stroke-dasharray: 3 6;
    }

    .axis-label {
      fill: rgba(235, 245, 255, 0.51);
      font-family: inherit;
      font-size: 10px;
      font-weight: 600;
    }

    .chart-line {
      fill: none;
      stroke: url(#lineGradient);
      stroke-width: 3;
      stroke-linecap: round;
      stroke-linejoin: round;
    }

    .chart-area {
      fill: url(#areaGradient);
    }

    .point {
      fill: #fff;
      stroke: #63c8ff;
      stroke-width: 2;
      opacity: 0;
      transition: opacity 120ms ease;
    }

    .hit {
      fill: transparent;
      cursor: crosshair;
    }

    .tooltip {
      position: absolute;
      z-index: 3;
      min-width: 76px;
      padding: 8px 10px;
      pointer-events: none;
      opacity: 0;
      transform: translate(-50%, -110%);
      border: 1px solid rgba(255, 255, 255, 0.17);
      border-radius: 11px;
      color: #fff;
      background: rgba(5, 19, 38, 0.92);
      box-shadow: 0 10px 24px rgba(0, 6, 20, 0.3);
      text-align: center;
      transition: opacity 100ms ease;
    }

    .tooltip.visible {
      opacity: 1;
    }

    .tooltip strong {
      display: block;
      font-size: 14px;
    }

    .tooltip span {
      display: block;
      margin-top: 2px;
      color: var(--muted);
      font-size: 10px;
    }

    .footer-note {
      position: absolute;
      right: 51px;
      bottom: 14px;
      color: rgba(235, 245, 255, 0.37);
      font-size: 9px;
      font-weight: 650;
      letter-spacing: 0.1em;
      text-transform: uppercase;
    }

    @media (max-width: 900px) {
      main {
        padding: 25px;
      }

      .weather-card {
        padding: 35px;
      }

      .temperature strong {
        font-size: 84px;
      }

      .weather-icon {
        width: 110px;
        height: 110px;
        flex-basis: 110px;
      }

      .range {
        min-width: 240px;
      }
    }
  </style>
</head>
<body>
  <main>
    <article class="weather-card" aria-live="polite">
      <div id="loading" class="loading">
        <div class="spinner" aria-hidden="true"></div>
        <p class="state-title">Reading the atmosphere</p>
        <p class="state-copy">Loading the weather for your selected location.</p>
      </div>

      <div id="error" class="error hidden" role="alert">
        <svg width="58" height="58" viewBox="0 0 58 58" aria-hidden="true">
          <circle cx="29" cy="29" r="27" fill="none" stroke="rgba(255,255,255,.18)" stroke-width="2"/>
          <path d="M29 15v18" stroke="#ffd36a" stroke-width="4" stroke-linecap="round"/>
          <circle cx="29" cy="42" r="2.5" fill="#ffd36a"/>
        </svg>
        <p class="state-title">Weather data unavailable</p>
        <p class="state-copy">The weather for this location and date could not be loaded. Please check the details and try again.</p>
      </div>

      <header class="topbar">
        <div>
          <div class="eyebrow">Daily forecast</div>
          <h1 id="location">Berlin</h1>
        </div>
        <div class="date-block">
          <time id="date"></time>
          <span id="date-kind">UTC</span>
        </div>
      </header>

      <section class="summary">
        <div class="temperature-row">
          <div id="weather-icon" class="weather-icon" aria-hidden="true"></div>
          <div>
            <div class="temperature">
              <strong id="main-temp">—</strong>
              <sup>°C</sup>
            </div>
            <p id="condition" class="condition">Loading conditions</p>
          </div>
        </div>

        <div class="range" aria-label="Daily temperature range">
          <div class="range-item high">
            <span class="range-label"><span class="arrow">↑</span>Maximum</span>
            <strong id="max-temp" class="range-value">—°</strong>
          </div>
          <div class="range-item low">
            <span class="range-label"><span class="arrow">↓</span>Minimum</span>
            <strong id="min-temp" class="range-value">—°</strong>
          </div>
        </div>
      </section>

      <section class="hourly">
        <div class="hourly-header">
          <h2>Hourly temperature</h2>
          <span class="unit">00:00–23:00 · UTC</span>
        </div>
        <div class="chart-wrap">
          <svg id="chart" viewBox="0 0 950 205" preserveAspectRatio="none" role="img" aria-label="Hourly temperature chart"></svg>
          <div id="tooltip" class="tooltip"></div>
        </div>
      </section>

      <div class="footer-note">Temperature · Celsius</div>
    </article>
  </main>

  <script>
    (() => {
      const params = new URLSearchParams(location.search);
      const utcToday = new Date().toISOString().slice(0, 10);
      const validDate = value => /^\d{4}-\d{2}-\d{2}$/.test(value || "") &&
        !Number.isNaN(Date.parse(value + "T00:00:00Z"));

      const latitude = finiteNumber(params.get("lat"), 52.52);
      const longitude = finiteNumber(params.get("lon"), 13.405);
      const locationName = (params.get("name") || "Berlin").trim() || "Berlin";
      const requestedDate = validDate(params.get("date")) ? params.get("date") : utcToday;

      function finiteNumber(value, fallback) {
        const number = Number(value);
        return Number.isFinite(number) ? number : fallback;
      }

      function formatDate(dateString) {
        return new Intl.DateTimeFormat("en", {
          weekday: "long",
          day: "numeric",
          month: "long",
          year: "numeric",
          timeZone: "UTC"
        }).format(new Date(dateString + "T12:00:00Z"));
      }

      function conditionFor(code) {
        const conditions = {
          0: ["Clear sky", "clear"],
          1: ["Mainly clear", "clear"],
          2: ["Partly cloudy", "cloudy"],
          3: ["Overcast", "cloudy"],
          45: ["Fog", "fog"],
          48: ["Rime fog", "fog"],
          51: ["Light drizzle", "rain"],
          53: ["Drizzle", "rain"],
          55: ["Heavy drizzle", "rain"],
          56: ["Freezing drizzle", "rain"],
          57: ["Heavy freezing drizzle", "rain"],
          61: ["Light rain", "rain"],
          63: ["Rain", "rain"],
          65: ["Heavy rain", "rain"],
          66: ["Freezing rain", "rain"],
          67: ["Heavy freezing rain", "rain"],
          71: ["Light snow", "snow"],
          73: ["Snow", "snow"],
          75: ["Heavy snow", "snow"],
          77: ["Snow grains", "snow"],
          80: ["Light rain showers", "rain"],
          81: ["Rain showers", "rain"],
          82: ["Heavy rain showers", "rain"],
          85: ["Snow showers", "snow"],
          86: ["Heavy snow showers", "snow"],
          95: ["Thunderstorm", "storm"],
          96: ["Thunderstorm with hail", "storm"],
          99: ["Severe thunderstorm", "storm"]
        };
        return conditions[code] || ["Unknown conditions", "cloudy"];
      }

      function icon(type) {
        const sun = `
          <circle cx="62" cy="57" r="25" fill="#FFD469"/>
          <g stroke="#FFD469" stroke-width="5" stroke-linecap="round">
            <path d="M62 15v9M62 90v9M20 57h9M95 57h9M32 27l7 7M85 80l7 7M32 87l7-7M85 34l7-7"/>
          </g>`;
        const cloud = `
          <path d="M39 111h67c17 0 29-11 29-26 0-14-11-25-25-26-5-17-20-28-38-28-21 0-38 15-41 35-14 2-24 11-24 23 0 13 13 22 32 22Z"
            fill="url(#cloudFill)" stroke="rgba(255,255,255,.6)" stroke-width="1.5"/>`;
        const drops = `
          <g stroke="#73D1FF" stroke-width="5" stroke-linecap="round">
            <path d="M47 121l-7 13M77 121l-7 13M107 121l-7 13"/>
          </g>`;
        const snow = `
          <g fill="#DFF5FF">
            <circle cx="42" cy="130" r="4"/><circle cx="72" cy="126" r="4"/><circle cx="103" cy="132" r="4"/>
          </g>`;
        const lightning = `<path d="M80 109H64l-7 20h13l-6 19 27-29H77Z" fill="#FFD469"/>`;
        const fog = `
          <g stroke="rgba(226,243,255,.75)" stroke-width="5" stroke-linecap="round">
            <path d="M22 76h90M34 96h96M18 116h86"/>
          </g>`;

        let content;
        if (type === "clear") content = sun;
        else if (type === "fog") content = `<g opacity=".45">${sun}</g>${fog}`;
        else if (type === "rain") content = `<g transform="translate(8 -8)" opacity=".62">${sun}</g>${cloud}${drops}`;
        else if (type === "snow") content = `<g transform="translate(8 -8)" opacity=".45">${sun}</g>${cloud}${snow}`;
        else if (type === "storm") content = `${cloud}${lightning}`;
        else content = `<g transform="translate(8 -8)">${sun}</g>${cloud}`;

        return `
          <svg viewBox="0 0 150 150" width="100%" height="100%">
            <defs>
              <linearGradient id="cloudFill" x1="0" y1="0" x2="0.9" y2="1">
                <stop offset="0" stop-color="#F8FCFF"/>
                <stop offset="1" stop-color="#A9C8E3"/>
              </linearGradient>
            </defs>
            ${content}
          </svg>`;
      }

      function renderChart(times, values) {
        const svg = document.getElementById("chart");
        const tooltip = document.getElementById("tooltip");
        const entries = values
          .map((value, index) => ({ value: Number(value), time: times[index] }))
          .filter(entry => Number.isFinite(entry.value));

        if (!entries.length) throw new Error("Hourly temperatures are missing");

        const width = 950;
        const height = 205;
        const left = 13;
        const right = 13;
        const top = 18;
        const bottom = 32;
        const innerWidth = width - left - right;
        const innerHeight = height - top - bottom;
        const rawMin = Math.min(...entries.map(entry => entry.value));
        const rawMax = Math.max(...entries.map(entry => entry.value));
        const padding = Math.max((rawMax - rawMin) * 0.3, 2);
        const min = rawMin - padding;
        const max = rawMax + padding;
        const x = index => left + index * innerWidth / Math.max(entries.length - 1, 1);
        const y = value => top + (max - value) * innerHeight / (max - min);
        const points = entries.map((entry, index) => `${x(index)},${y(entry.value)}`).join(" ");
        const area = `${left},${height - bottom} ${points} ${x(entries.length - 1)},${height - bottom}`;

        let markup = `
          <defs>
            <linearGradient id="lineGradient" x1="0" x2="1">
              <stop offset="0" stop-color="#71D1FF"/>
              <stop offset="1" stop-color="#FFD36A"/>
            </linearGradient>
            <linearGradient id="areaGradient" x1="0" y1="0" x2="0" y2="1">
              <stop offset="0" stop-color="#77D4FF" stop-opacity=".28"/>
              <stop offset="1" stop-color="#77D4FF" stop-opacity="0"/>
            </linearGradient>
          </defs>`;

        for (let i = 0; i < 3; i++) {
          const gy = top + i * innerHeight / 2;
          markup += `<line class="grid-line" x1="${left}" y1="${gy}" x2="${width - right}" y2="${gy}"/>`;
        }

        markup += `<polygon class="chart-area" points="${area}"/>`;
        markup += `<polyline class="chart-line" points="${points}"/>`;

        entries.forEach((entry, index) => {
          const hour = (entry.time || "").slice(11, 16) || `${String(index).padStart(2, "0")}:00`;
          if (index % 3 === 0 || index === entries.length - 1) {
            markup += `<text class="axis-label" x="${x(index)}" y="${height - 8}" text-anchor="${index === 0 ? "start" : index === entries.length - 1 ? "end" : "middle"}">${hour}</text>`;
          }
          markup += `<circle class="point" id="point-${index}" cx="${x(index)}" cy="${y(entry.value)}" r="4"/>`;
          markup += `<rect class="hit" data-index="${index}" x="${x(index) - innerWidth / entries.length / 2}" y="${top}" width="${innerWidth / entries.length}" height="${innerHeight + 8}"/>`;
        });

        svg.innerHTML = markup;

        svg.querySelectorAll(".hit").forEach(hit => {
          const show = event => {
            const index = Number(hit.dataset.index);
            const entry = entries[index];
            const point = svg.querySelector(`#point-${index}`);
            const hour = (entry.time || "").slice(11, 16) || `${String(index).padStart(2, "0")}:00`;
            point.style.opacity = "1";
            tooltip.innerHTML = `<strong>${Math.round(entry.value)}°C</strong><span>${hour} UTC</span>`;
            tooltip.style.left = `${x(index) / width * 100}%`;
            tooltip.style.top = `${y(entry.value) / height * 100}%`;
            tooltip.classList.add("visible");
          };
          const hide = () => {
            const point = svg.querySelector(`#point-${hit.dataset.index}`);
            point.style.opacity = "0";
            tooltip.classList.remove("visible");
          };
          hit.addEventListener("mouseenter", show);
          hit.addEventListener("mousemove", show);
          hit.addEventListener("mouseleave", hide);
        });
      }

      async function loadWeather() {
        document.getElementById("location").textContent = locationName;
        document.getElementById("date").textContent = formatDate(requestedDate);
        document.getElementById("date-kind").textContent =
          requestedDate < utcToday ? "Historical weather · UTC" :
          requestedDate === utcToday ? "Today · UTC" : "Forecast · UTC";

        const endpoint = requestedDate < utcToday ? "/api/om/archive" : "/api/om/forecast";
        const query = new URLSearchParams({
          latitude: String(latitude),
          longitude: String(longitude),
          daily: "temperature_2m_max,temperature_2m_min,weather_code",
          hourly: "temperature_2m",
          timezone: "UTC",
          temperature_unit: "celsius",
          start_date: requestedDate,
          end_date: requestedDate
        });

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

          const data = await response.json();
          const max = Number(data?.daily?.temperature_2m_max?.[0]);
          const min = Number(data?.daily?.temperature_2m_min?.[0]);
          const code = Number(data?.daily?.weather_code?.[0]);
          const times = data?.hourly?.time;
          const hourly = data?.hourly?.temperature_2m;

          if (!Number.isFinite(max) || !Number.isFinite(min) || !Array.isArray(times) || !Array.isArray(hourly)) {
            throw new Error("Incomplete weather response");
          }

          const [condition, type] = conditionFor(code);
          document.getElementById("main-temp").textContent = Math.round(max);
          document.getElementById("max-temp").textContent = `${Math.round(max)}°`;
          document.getElementById("min-temp").textContent = `${Math.round(min)}°`;
          document.getElementById("condition").textContent = condition;
          document.getElementById("weather-icon").innerHTML = icon(type);
          renderChart(times, hourly);

          document.getElementById("loading").classList.add("hidden");
        } catch (error) {
          console.error(error);
          document.getElementById("loading").classList.add("hidden");
          document.getElementById("error").classList.remove("hidden");
        }
      }

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

L1 — cheap deterministic descriptors

bytes total22,967html / css / js2,875 / 9,334 / 10,758
dom nodes53dom depth9
css rules62js presentyes
brightness52.5contrast24.4
colorfulness22.6whitespace60.8%

This slot's telemetry

prompt tokens3completion tokens6,825
total tokens6,828wall79.4 s
cost—request id—
config.json571 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.6-sol-eff-medium--cli--cursor--dev",
  "effort": "medium",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.6-sol",
  "protocol": "cli",
  "served_model": "gpt-5.6-sol-medium",
  "telemetry": {
    "completion_tokens": 21095,
    "cost_usd": null,
    "prompt_tokens": 12,
    "total_tokens": 21107,
    "wall_ms": 399447
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-s1",
  "config_id": "gpt-5.6-sol-eff-medium--cli--cursor--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-12T20:55:28.525719+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T20:54:27.475960+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-12T20:56:51.510672+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T20:55:32.068680+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-12T21:00:28.013015+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T20:56:55.057020+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-12T21:01:18.075580+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T21:00:32.068155+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
    }
  }
}