gpt-5.4-mini @ medium · cursor-xl

cursor-xlmedium
config
gpt-5.4-mini-eff-medium--cli--cursor-xl--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
gpt-5.4-mini-medium
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.4-mini @medium · cursor-xl P-q slot 0 screenshot

content never populated — at capture time this card was still in its placeholder state and the real content never arrived. The screenshot is exactly what the page showed; its own code is in Source below.

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 tempnot-foundno-temperature-candidate
  • min tempnot-foundno-temperature-candidate
  • 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">
  <title>Weather Card</title>
  <style>
    :root {
      --bg0: #07111f;
      --bg1: #0b1730;
      --bg2: #13274a;
      --card: rgba(10, 18, 34, 0.78);
      --card-2: rgba(18, 29, 54, 0.82);
      --text: #edf4ff;
      --muted: rgba(237, 244, 255, 0.72);
      --soft: rgba(237, 244, 255, 0.12);
      --soft-2: rgba(237, 244, 255, 0.08);
      --accent: #7dd3fc;
      --accent-2: #c084fc;
      --good: #86efac;
      --warn: #fde68a;
      --shadow: 0 30px 90px rgba(0, 0, 0, 0.42);
    }

    * { box-sizing: border-box; }

    html, body {
      width: 100%;
      height: 100%;
      margin: 0;
      overflow: hidden;
      background:
        radial-gradient(1200px 700px at 20% 12%, rgba(125, 211, 252, 0.22), transparent 55%),
        radial-gradient(900px 580px at 82% 18%, rgba(192, 132, 252, 0.18), transparent 58%),
        radial-gradient(700px 500px at 50% 82%, rgba(59, 130, 246, 0.12), transparent 60%),
        linear-gradient(160deg, var(--bg0) 0%, var(--bg1) 44%, var(--bg2) 100%);
      color: var(--text);
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }

    body::before {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      background-image:
        linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.04) 1px, transparent 1px);
      background-size: 72px 72px;
      mask-image: radial-gradient(circle at center, black 42%, transparent 88%);
      opacity: 0.22;
    }

    .frame {
      width: 1280px;
      height: 800px;
      margin: 0 auto;
      display: grid;
      place-items: center;
      position: relative;
    }

    .card {
      width: 1120px;
      height: 620px;
      border-radius: 34px;
      background:
        linear-gradient(180deg, rgba(255,255,255,0.10), rgba(255,255,255,0.04)),
        linear-gradient(160deg, rgba(10, 18, 34, 0.86), rgba(11, 23, 48, 0.72));
      border: 1px solid rgba(255,255,255,0.10);
      box-shadow: var(--shadow);
      overflow: hidden;
      position: relative;
      backdrop-filter: blur(24px);
      -webkit-backdrop-filter: blur(24px);
    }

    .card::after {
      content: "";
      position: absolute;
      inset: 0;
      background:
        radial-gradient(900px 360px at 10% 0%, rgba(125, 211, 252, 0.18), transparent 58%),
        radial-gradient(700px 320px at 100% 100%, rgba(192, 132, 252, 0.14), transparent 58%);
      pointer-events: none;
    }

    .layout {
      position: relative;
      z-index: 1;
      display: grid;
      grid-template-columns: 1.15fr 0.85fr;
      gap: 0;
      width: 100%;
      height: 100%;
    }

    .hero {
      padding: 42px 42px 36px;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      min-width: 0;
    }

    .topline {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 24px;
    }

    .location {
      min-width: 0;
    }

    .label {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      padding: 8px 14px;
      border-radius: 999px;
      background: rgba(125, 211, 252, 0.14);
      border: 1px solid rgba(125, 211, 252, 0.16);
      color: #d9f4ff;
      font-size: 13px;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      font-weight: 700;
    }

    .title {
      margin: 18px 0 6px;
      font-size: 56px;
      line-height: 0.98;
      letter-spacing: -0.04em;
      font-weight: 800;
      text-wrap: balance;
      overflow-wrap: anywhere;
    }

    .subtitle {
      font-size: 18px;
      color: var(--muted);
      line-height: 1.45;
      margin: 0;
    }

    .meta-row {
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
      margin-top: 22px;
    }

    .chip {
      padding: 10px 14px;
      border-radius: 999px;
      background: rgba(255,255,255,0.08);
      border: 1px solid rgba(255,255,255,0.08);
      color: rgba(237,244,255,0.88);
      font-size: 14px;
      line-height: 1;
    }

    .weather-hero {
      display: grid;
      grid-template-columns: 148px 1fr;
      align-items: center;
      gap: 24px;
      margin-top: 22px;
      padding: 24px;
      border-radius: 28px;
      background: linear-gradient(145deg, rgba(255,255,255,0.10), rgba(255,255,255,0.04));
      border: 1px solid rgba(255,255,255,0.10);
    }

    .icon-wrap {
      width: 148px;
      height: 148px;
      border-radius: 34px;
      display: grid;
      place-items: center;
      background:
        radial-gradient(circle at 30% 25%, rgba(255,255,255,0.25), transparent 38%),
        linear-gradient(160deg, rgba(125, 211, 252, 0.26), rgba(192, 132, 252, 0.18));
      border: 1px solid rgba(255,255,255,0.10);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.10);
      position: relative;
      overflow: hidden;
    }

    .icon-wrap::after {
      content: "";
      position: absolute;
      inset: auto -20px -20px auto;
      width: 82px;
      height: 82px;
      border-radius: 50%;
      background: rgba(255,255,255,0.10);
      filter: blur(10px);
    }

    .weather-icon {
      position: relative;
      z-index: 1;
      font-size: 64px;
      line-height: 1;
      filter: drop-shadow(0 10px 20px rgba(0,0,0,0.2));
    }

    .condition {
      display: flex;
      flex-direction: column;
      gap: 10px;
      min-width: 0;
    }

    .condition-name {
      font-size: 38px;
      line-height: 1.03;
      letter-spacing: -0.03em;
      font-weight: 800;
      margin: 0;
    }

    .condition-desc {
      margin: 0;
      font-size: 17px;
      color: var(--muted);
      line-height: 1.55;
    }

    .stats {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 14px;
      margin-top: 22px;
    }

    .stat {
      padding: 18px 20px;
      border-radius: 22px;
      background: rgba(8, 13, 26, 0.32);
      border: 1px solid rgba(255,255,255,0.08);
    }

    .stat .k {
      display: block;
      font-size: 13px;
      text-transform: uppercase;
      letter-spacing: 0.08em;
      color: rgba(237,244,255,0.60);
      margin-bottom: 8px;
    }

    .stat .v {
      display: flex;
      align-items: baseline;
      gap: 8px;
      font-size: 42px;
      line-height: 1;
      font-weight: 800;
      letter-spacing: -0.04em;
    }

    .stat .unit {
      font-size: 16px;
      font-weight: 700;
      color: rgba(237,244,255,0.66);
      letter-spacing: 0;
    }

    .right {
      padding: 34px 34px 34px 0;
      display: flex;
      align-items: stretch;
    }

    .panel {
      width: 100%;
      border-radius: 28px 0 0 28px;
      background: linear-gradient(180deg, rgba(6, 11, 23, 0.50), rgba(16, 24, 44, 0.70));
      border-left: 1px solid rgba(255,255,255,0.08);
      padding: 26px 24px 24px 24px;
      display: grid;
      grid-template-rows: auto auto 1fr;
      gap: 18px;
      min-width: 0;
    }

    .panel-head {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 16px;
    }

    .panel-title {
      margin: 0;
      font-size: 20px;
      letter-spacing: -0.02em;
      font-weight: 800;
    }

    .panel-subtitle {
      margin: 8px 0 0;
      color: var(--muted);
      font-size: 14px;
      line-height: 1.45;
    }

    .legend {
      display: flex;
      align-items: center;
      gap: 10px;
      color: rgba(237,244,255,0.68);
      font-size: 13px;
      white-space: nowrap;
    }

    .legend-swatch {
      width: 10px;
      height: 10px;
      border-radius: 999px;
      background: linear-gradient(135deg, var(--accent), var(--accent-2));
      box-shadow: 0 0 0 4px rgba(125, 211, 252, 0.12);
    }

    .hourly {
      min-width: 0;
      display: flex;
      flex-direction: column;
      gap: 14px;
    }

    .hourly-grid {
      flex: 1;
      display: grid;
      grid-template-columns: repeat(6, minmax(0, 1fr));
      gap: 12px;
      align-content: start;
      min-width: 0;
    }

    .hour {
      height: 98px;
      padding: 12px 10px 10px;
      border-radius: 18px;
      background:
        linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02)),
        rgba(255,255,255,0.02);
      border: 1px solid rgba(255,255,255,0.07);
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      gap: 6px;
      min-width: 0;
      overflow: hidden;
    }

    .hour .t {
      font-size: 13px;
      color: rgba(237,244,255,0.72);
      font-weight: 700;
    }

    .hour .temp {
      font-size: 26px;
      line-height: 1;
      font-weight: 800;
      letter-spacing: -0.04em;
      margin-top: auto;
    }

    .bar {
      height: 7px;
      border-radius: 999px;
      background: rgba(255,255,255,0.08);
      overflow: hidden;
      position: relative;
    }

    .bar > span {
      display: block;
      height: 100%;
      border-radius: inherit;
      background: linear-gradient(90deg, rgba(125, 211, 252, 0.85), rgba(192, 132, 252, 0.95));
      box-shadow: 0 0 18px rgba(125, 211, 252, 0.28);
    }

    .footer-note {
      align-self: end;
      color: rgba(237,244,255,0.58);
      font-size: 13px;
      line-height: 1.45;
      padding-top: 4px;
    }

    .loading, .error {
      width: 100%;
      height: 100%;
      display: grid;
      place-items: center;
      color: var(--text);
      text-align: center;
      padding: 30px;
    }

    .status-card {
      max-width: 560px;
      padding: 36px 32px;
      border-radius: 28px;
      background: rgba(9, 15, 28, 0.54);
      border: 1px solid rgba(255,255,255,0.10);
      box-shadow: var(--shadow);
      backdrop-filter: blur(18px);
      -webkit-backdrop-filter: blur(18px);
    }

    .status-title {
      margin: 0 0 12px;
      font-size: 34px;
      line-height: 1.05;
      letter-spacing: -0.04em;
      font-weight: 800;
    }

    .status-copy {
      margin: 0;
      color: var(--muted);
      font-size: 17px;
      line-height: 1.6;
    }

    .spinner {
      width: 52px;
      height: 52px;
      margin: 0 auto 18px;
      border-radius: 50%;
      border: 4px solid rgba(255,255,255,0.12);
      border-top-color: rgba(125, 211, 252, 0.95);
      animation: spin 0.9s linear infinite;
    }

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

    @media (max-width: 1290px) {
      .frame {
        width: 100vw;
        height: 100vh;
      }
      .card {
        width: min(1120px, calc(100vw - 48px));
        height: min(620px, calc(100vh - 48px));
      }
    }

    .hidden { display: none !important; }
  </style>
</head>
<body>
  <div class="frame">
    <main class="card" id="app">
      <div class="loading" id="loading">
        <div class="status-card">
          <div class="spinner"></div>
          <h1 class="status-title">Loading weather</h1>
          <p class="status-copy">Fetching forecast data for the requested location and date.</p>
        </div>
      </div>

      <div class="error hidden" id="error">
        <div class="status-card">
          <h1 class="status-title">Weather unavailable</h1>
          <p class="status-copy" id="errorText">The weather data could not be loaded.</p>
        </div>
      </div>

      <section class="layout hidden" id="content" aria-live="polite">
        <div class="hero">
          <div>
            <div class="topline">
              <div class="location">
                <div class="label">Weather card</div>
                <h1 class="title" id="locationName">Berlin</h1>
                <p class="subtitle" id="dateLine">Friday, 14 August 2026</p>
              </div>
              <div class="chip" id="sourceChip">Open-Meteo compatible</div>
            </div>

            <div class="weather-hero">
              <div class="icon-wrap">
                <div class="weather-icon" id="weatherIcon">☀️</div>
              </div>
              <div class="condition">
                <h2 class="condition-name" id="conditionName">Clear sky</h2>
                <p class="condition-desc" id="conditionDesc">A clean, minimal summary of the selected day’s weather.</p>
              </div>
            </div>

            <div class="stats">
              <div class="stat">
                <span class="k">Maximum temperature</span>
                <div class="v"><span id="tempMax">--</span><span class="unit">°C</span></div>
              </div>
              <div class="stat">
                <span class="k">Minimum temperature</span>
                <div class="v"><span id="tempMin">--</span><span class="unit">°C</span></div>
              </div>
            </div>

            <div class="meta-row">
              <div class="chip" id="coordsChip">52.5200, 13.4050</div>
              <div class="chip" id="rangeChip">Selected day: UTC</div>
              <div class="chip" id="endpointChip">forecast</div>
            </div>
          </div>

          <div class="footer-note">
            Temperatures shown in Celsius. Hourly values are for the selected UTC day.
          </div>
        </div>

        <div class="right">
          <section class="panel">
            <div class="panel-head">
              <div>
                <h2 class="panel-title">Hourly temperatures</h2>
                <p class="panel-subtitle">A full 24-hour view for the chosen date.</p>
              </div>
              <div class="legend"><span class="legend-swatch"></span><span id="hourlyRange">Range</span></div>
            </div>

            <div class="hourly">
              <div class="hourly-grid" id="hourlyGrid"></div>
            </div>
          </section>
        </div>
      </section>
    </main>
  </div>

  <script>
    (function () {
      const qs = new URLSearchParams(location.search);
      const todayUTC = new Date().toISOString().slice(0, 10);

      const lat = parseFloat(qs.get("lat") || "52.52");
      const lon = parseFloat(qs.get("lon") || "13.405");
      const name = (qs.get("name") || "Berlin").trim() || "Berlin";
      const requestedDate = /^\d{4}-\d{2}-\d{2}$/.test(qs.get("date") || "") ? qs.get("date") : todayUTC;

      const endpoint = requestedDate < todayUTC ? "/api/om/archive" : "/api/om/forecast";

      const els = {
        loading: document.getElementById("loading"),
        error: document.getElementById("error"),
        errorText: document.getElementById("errorText"),
        content: document.getElementById("content"),
        locationName: document.getElementById("locationName"),
        dateLine: document.getElementById("dateLine"),
        weatherIcon: document.getElementById("weatherIcon"),
        conditionName: document.getElementById("conditionName"),
        conditionDesc: document.getElementById("conditionDesc"),
        tempMax: document.getElementById("tempMax"),
        tempMin: document.getElementById("tempMin"),
        coordsChip: document.getElementById("coordsChip"),
        rangeChip: document.getElementById("rangeChip"),
        endpointChip: document.getElementById("endpointChip"),
        hourlyGrid: document.getElementById("hourlyGrid"),
        hourlyRange: document.getElementById("hourlyRange")
      };

      const weatherMap = {
        0:  { label: "Clear sky", icon: "☀️", desc: "Bright and mostly cloud-free conditions." },
        1:  { label: "Mainly clear", icon: "🌤️", desc: "Mostly clear with a few clouds around." },
        2:  { label: "Partly cloudy", icon: "⛅", desc: "A mix of sun and cloud cover." },
        3:  { label: "Overcast", icon: "☁️", desc: "Clouds dominate the sky throughout the day." },
        45: { label: "Fog", icon: "🌫️", desc: "Visibility may be reduced by fog or mist." },
        48: { label: "Depositing rime fog", icon: "🌫️", desc: "Fog with ice crystal deposition." },
        51: { label: "Light drizzle", icon: "🌦️", desc: "A light, steady drizzle is possible." },
        53: { label: "Moderate drizzle", icon: "🌦️", desc: "Persistent drizzle with a damp feel." },
        55: { label: "Dense drizzle", icon: "🌧️", desc: "Heavier drizzle and a wetter day overall." },
        56: { label: "Light freezing drizzle", icon: "🌧️", desc: "Drizzle with freezing conditions." },
        57: { label: "Dense freezing drizzle", icon: "🌧️", desc: "Persistent freezing drizzle." },
        61: { label: "Slight rain", icon: "🌦️", desc: "Light rain showers or steady rain." },
        63: { label: "Moderate rain", icon: "🌧️", desc: "Rain is expected for parts of the day." },
        65: { label: "Heavy rain", icon: "🌧️", desc: "Heavy rain and a more unsettled feel." },
        66: { label: "Light freezing rain", icon: "🌧️", desc: "Rain with freezing conditions." },
        67: { label: "Heavy freezing rain", icon: "🌧️", desc: "Significant freezing rain possible." },
        71: { label: "Slight snow fall", icon: "🌨️", desc: "Light snow showers or flurries." },
        73: { label: "Moderate snow fall", icon: "🌨️", desc: "Snow may accumulate during the day." },
        75: { label: "Heavy snow fall", icon: "❄️", desc: "Heavy snow with reduced visibility." },
        77: { label: "Snow grains", icon: "❄️", desc: "Small, granular snow particles." },
        80: { label: "Slight rain showers", icon: "🌦️", desc: "Brief passing showers are possible." },
        81: { label: "Moderate rain showers", icon: "🌧️", desc: "More frequent showers through the day." },
        82: { label: "Violent rain showers", icon: "⛈️", desc: "Sharp bursts of heavy rain showers." },
        85: { label: "Slight snow showers", icon: "🌨️", desc: "Short snow showers may occur." },
        86: { label: "Heavy snow showers", icon: "❄️", desc: "Intense snow showers are possible." },
        95: { label: "Thunderstorm", icon: "⛈️", desc: "Thunderstorms may develop." },
        96: { label: "Thunderstorm with hail", icon: "⛈️", desc: "Thunderstorms with hail are possible." },
        99: { label: "Thunderstorm with heavy hail", icon: "⛈️", desc: "A more intense storm with hail is possible." }
      };

      function formatDateUTC(iso) {
        const d = new Date(iso + "T00:00:00Z");
        return new Intl.DateTimeFormat("en-US", {
          weekday: "long",
          day: "numeric",
          month: "long",
          year: "numeric",
          timeZone: "UTC"
        }).format(d);
      }

      function showError(message) {
        els.loading.classList.add("hidden");
        els.content.classList.add("hidden");
        els.error.classList.remove("hidden");
        els.errorText.textContent = message || "The weather data could not be loaded.";
      }

      function showContent() {
        els.loading.classList.add("hidden");
        els.error.classList.add("hidden");
        els.content.classList.remove("hidden");
      }

      function safeNum(value) {
        return Number.isFinite(value) ? value.toFixed(1).replace(/\.0$/, "") : "--";
      }

      function buildHourlyGrid(times, temps) {
        els.hourlyGrid.innerHTML = "";
        if (!Array.isArray(times) || !Array.isArray(temps) || !times.length || !temps.length) {
          const empty = document.createElement("div");
          empty.className = "status-copy";
          empty.style.gridColumn = "1 / -1";
          empty.style.textAlign = "center";
          empty.textContent = "Hourly temperatures are unavailable for this date.";
          els.hourlyGrid.appendChild(empty);
          return;
        }

        const min = Math.min.apply(null, temps.filter(Number.isFinite));
        const max = Math.max.apply(null, temps.filter(Number.isFinite));
        const span = Math.max(1, max - min);

        times.forEach((t, i) => {
          const temp = temps[i];
          const hour = new Date(t).toLocaleTimeString("en-US", {
            timeZone: "UTC",
            hour: "numeric",
            hour12: true
          }).replace(/^0/, "");

          const item = document.createElement("div");
          item.className = "hour";

          const timeEl = document.createElement("div");
          timeEl.className = "t";
          timeEl.textContent = hour;

          const tempEl = document.createElement("div");
          tempEl.className = "temp";
          tempEl.textContent = safeNum(temp);

          const bar = document.createElement("div");
          bar.className = "bar";

          const fill = document.createElement("span");
          const width = Number.isFinite(temp) ? (18 + ((temp - min) / span) * 82) : 18;
          fill.style.width = Math.max(18, Math.min(100, width)).toFixed(0) + "%";
          bar.appendChild(fill);

          item.appendChild(timeEl);
          item.appendChild(tempEl);
          item.appendChild(bar);
          els.hourlyGrid.appendChild(item);
        });
      }

      async function loadWeather() {
        try {
          if (!Number.isFinite(lat) || !Number.isFinite(lon)) {
            throw new Error("Invalid latitude or longitude.");
          }

          els.locationName.textContent = name;
          els.dateLine.textContent = formatDateUTC(requestedDate);
          els.coordsChip.textContent = lat.toFixed(4) + ", " + lon.toFixed(4);
          els.rangeChip.textContent = "Selected day: " + requestedDate + " UTC";
          els.endpointChip.textContent = endpoint.includes("archive") ? "archive" : "forecast";
          els.hourlyRange.textContent = requestedDate + " UTC";

          const url = new URL(endpoint, location.origin);
          url.searchParams.set("latitude", String(lat));
          url.searchParams.set("longitude", String(lon));
          url.searchParams.set("daily", "temperature_2m_max,temperature_2m_min,weather_code");
          url.searchParams.set("hourly", "temperature_2m");
          url.searchParams.set("timezone", "UTC");
          url.searchParams.set("temperature_unit", "celsius");
          url.searchParams.set("start_date", requestedDate);
          url.searchParams.set("end_date", requestedDate);

          const res = await fetch(url.toString(), { credentials: "same-origin" });
          if (!res.ok) {
            throw new Error("Request failed with status " + res.status + ".");
          }

          const data = await res.json();
          const daily = data && data.daily ? data.daily : null;
          const hourly = data && data.hourly ? data.hourly : null;

          if (!daily || !Array.isArray(daily.time) || !daily.time.length) {
            throw new Error("Missing daily weather data.");
          }

          const idx = Math.max(0, daily.time.indexOf(requestedDate));
          const dailyMax = daily.temperature_2m_max && daily.temperature_2m_max[idx];
          const dailyMin = daily.temperature_2m_min && daily.temperature_2m_min[idx];
          const code = daily.weather_code && daily.weather_code[idx];
          const condition = weatherMap[code] || {
            label: "Unknown conditions",
            icon: "🌡️",
            desc: "Weather conditions for this day are not recognized."
          };

          els.weatherIcon.textContent = condition.icon;
          els.conditionName.textContent = condition.label;
          els.conditionDesc.textContent = condition.desc;
          els.tempMax.textContent = safeNum(dailyMax);
          els.tempMin.textContent = safeNum(dailyMin);

          const hours = Array.isArray(hourly.time) ? hourly.time.filter((t) => t.startsWith(requestedDate)) : [];
          const temps = Array.isArray(hourly.temperature_2m) ? hourly.temperature_2m.slice(0, hours.length) : [];
          buildHourlyGrid(hours, temps);

          showContent();
        } catch (err) {
          showError("The weather data could not be loaded.");
        }
      }

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

L1 — cheap deterministic descriptors

bytes total23,999html / css / js3,301 / 10,616 / 10,082
dom nodes61dom depth11
css rules54js presentyes
brightness45.8contrast27.2
colorfulness17.5whitespace52.0%

This slot's telemetry

prompt tokens8,420completion tokens7,308
total tokens15,728wall47 s
cost—request id—
config.json580 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.4-mini-eff-medium--cli--cursor-xl--dev",
  "effort": "medium",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.4-mini",
  "protocol": "cli",
  "served_model": "gpt-5.4-mini-medium",
  "telemetry": {
    "completion_tokens": 26639,
    "cost_usd": null,
    "prompt_tokens": 37757,
    "total_tokens": 64396,
    "wall_ms": 181519
  },
  "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": "gpt-5.4-mini-eff-medium--cli--cursor-xl--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T16:32:17.199490+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T16:31:30.181348+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-13T16:32:58.297619+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T16:32:22.009645+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-13T16:33:40.131040+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T16:33:01.909167+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-13T16:34:44.307868+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T16:33:44.292517+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
    }
  }
}