gpt-5.4-mini @ medium · cursor

cursormedium
config
gpt-5.4-mini-eff-medium--cli--cursor--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 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 tempambiguousinsufficient-distinct-temperature-nodes
  • min tempambiguousinsufficient-distinct-temperature-nodes
  • 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=device-width, initial-scale=1">
  <title>Weather Card</title>
  <style>
    :root {
      color-scheme: dark;
      --bg1: #07111f;
      --bg2: #0b1b33;
      --bg3: #102846;
      --card: rgba(9, 18, 34, 0.72);
      --card-2: rgba(16, 29, 53, 0.66);
      --line: rgba(255, 255, 255, 0.10);
      --line-2: rgba(255, 255, 255, 0.14);
      --text: #f4f8ff;
      --muted: rgba(244, 248, 255, 0.72);
      --soft: rgba(244, 248, 255, 0.12);
      --accent: #7dd3fc;
      --accent2: #a78bfa;
      --hot: #fb7185;
      --cold: #38bdf8;
      --good: #86efac;
      --shadow: 0 30px 100px rgba(0, 0, 0, 0.38);
      --radius: 28px;
    }

    * {
      box-sizing: border-box;
    }

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

    body {
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      color: var(--text);
      overflow: hidden;
      background:
        radial-gradient(1200px 700px at 20% 20%, rgba(125, 211, 252, 0.22), transparent 60%),
        radial-gradient(900px 600px at 82% 18%, rgba(167, 139, 250, 0.20), transparent 55%),
        radial-gradient(1100px 800px at 50% 100%, rgba(56, 189, 248, 0.10), transparent 60%),
        linear-gradient(135deg, var(--bg1), var(--bg2) 48%, var(--bg3));
      display: grid;
      place-items: center;
    }

    .shell {
      width: min(1180px, calc(100vw - 48px));
      height: min(720px, calc(100vh - 48px));
      position: relative;
      border: 1px solid rgba(255, 255, 255, 0.08);
      border-radius: 34px;
      background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.02)),
        rgba(4, 10, 22, 0.35);
      box-shadow: var(--shadow);
      backdrop-filter: blur(22px);
      -webkit-backdrop-filter: blur(22px);
      overflow: hidden;
    }

    .shell::before,
    .shell::after {
      content: "";
      position: absolute;
      inset: auto;
      pointer-events: none;
      filter: blur(30px);
      opacity: 0.55;
    }

    .shell::before {
      width: 340px;
      height: 340px;
      right: -90px;
      top: -90px;
      background: radial-gradient(circle, rgba(167, 139, 250, 0.36), transparent 68%);
    }

    .shell::after {
      width: 400px;
      height: 400px;
      left: -120px;
      bottom: -140px;
      background: radial-gradient(circle, rgba(125, 211, 252, 0.28), transparent 70%);
    }

    .content {
      position: relative;
      z-index: 1;
      width: 100%;
      height: 100%;
      padding: 28px;
      display: grid;
      grid-template-rows: auto 1fr;
      gap: 22px;
    }

    .topbar {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 24px;
      padding: 6px 2px 0;
    }

    .brand {
      display: flex;
      flex-direction: column;
      gap: 6px;
      min-width: 0;
    }

    .eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      width: fit-content;
      padding: 8px 12px;
      border-radius: 999px;
      border: 1px solid var(--line);
      background: rgba(255, 255, 255, 0.04);
      color: var(--muted);
      font-size: 12px;
      letter-spacing: 0.12em;
      text-transform: uppercase;
    }

    .eyebrow .dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: linear-gradient(135deg, var(--accent), var(--accent2));
      box-shadow: 0 0 18px rgba(125, 211, 252, 0.75);
    }

    .title {
      font-size: clamp(30px, 3vw, 44px);
      line-height: 1.02;
      letter-spacing: -0.04em;
      margin: 0;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

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

    .meta {
      display: flex;
      align-items: center;
      gap: 12px;
      flex-wrap: wrap;
      justify-content: flex-end;
      color: var(--muted);
      font-size: 14px;
    }

    .pill {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      padding: 10px 14px;
      border-radius: 999px;
      border: 1px solid var(--line);
      background: rgba(255, 255, 255, 0.04);
      color: var(--text);
      backdrop-filter: blur(12px);
    }

    .pill .tiny {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: var(--good);
      box-shadow: 0 0 14px rgba(134, 239, 172, 0.65);
    }

    .main {
      display: grid;
      grid-template-columns: 1.05fr 0.95fr;
      gap: 20px;
      min-height: 0;
    }

    .panel {
      border-radius: var(--radius);
      border: 1px solid var(--line);
      background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.03)),
        var(--card);
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
      overflow: hidden;
      position: relative;
      min-height: 0;
    }

    .hero {
      padding: 28px;
      display: grid;
      grid-template-rows: auto auto 1fr;
      gap: 22px;
    }

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

    .condition {
      display: inline-flex;
      align-items: center;
      gap: 12px;
      padding: 12px 16px;
      border-radius: 18px;
      border: 1px solid var(--line);
      background: rgba(255, 255, 255, 0.04);
      max-width: 100%;
    }

    .condition-icon {
      width: 44px;
      height: 44px;
      border-radius: 14px;
      display: grid;
      place-items: center;
      background: linear-gradient(135deg, rgba(125, 211, 252, 0.18), rgba(167, 139, 250, 0.18));
      border: 1px solid rgba(255, 255, 255, 0.08);
      font-size: 22px;
      flex: none;
    }

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

    .condition-label {
      font-size: 12px;
      color: var(--muted);
      text-transform: uppercase;
      letter-spacing: 0.12em;
    }

    .condition-value {
      font-size: 18px;
      font-weight: 700;
      line-height: 1.1;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .temp {
      display: flex;
      align-items: baseline;
      gap: 12px;
    }

    .temp-main {
      font-size: clamp(72px, 8vw, 116px);
      line-height: 0.9;
      font-weight: 800;
      letter-spacing: -0.08em;
      margin: 0;
      background: linear-gradient(180deg, #ffffff, #b9dfff 72%, #8fd4ff);
      -webkit-background-clip: text;
      background-clip: text;
      color: transparent;
      text-shadow: 0 10px 50px rgba(125, 211, 252, 0.08);
    }

    .temp-sub {
      display: flex;
      flex-direction: column;
      gap: 8px;
      padding-bottom: 14px;
    }

    .temp-range {
      font-size: 18px;
      color: var(--muted);
    }

    .temp-range strong {
      color: var(--text);
      font-weight: 700;
    }

    .summary {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 14px;
      align-content: end;
    }

    .stat {
      padding: 16px 16px 15px;
      border-radius: 20px;
      border: 1px solid var(--line);
      background: rgba(255, 255, 255, 0.04);
      min-width: 0;
    }

    .stat-label {
      color: var(--muted);
      font-size: 12px;
      letter-spacing: 0.11em;
      text-transform: uppercase;
      margin-bottom: 10px;
    }

    .stat-value {
      font-size: 26px;
      line-height: 1;
      font-weight: 750;
      letter-spacing: -0.05em;
    }

    .stat-note {
      margin-top: 7px;
      color: var(--muted);
      font-size: 13px;
      line-height: 1.35;
    }

    .details {
      padding: 24px;
      display: grid;
      grid-template-rows: auto 1fr;
      gap: 18px;
      min-height: 0;
    }

    .section-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
    }

    .section-title {
      margin: 0;
      font-size: 15px;
      text-transform: uppercase;
      letter-spacing: 0.14em;
      color: var(--muted);
    }

    .section-hint {
      color: var(--muted);
      font-size: 13px;
    }

    .hourly {
      min-height: 0;
      overflow: hidden;
      display: flex;
      flex-direction: column;
      gap: 12px;
    }

    .hourly-track {
      display: grid;
      grid-auto-flow: column;
      grid-auto-columns: minmax(88px, 1fr);
      gap: 12px;
      overflow-x: auto;
      overflow-y: hidden;
      padding-bottom: 6px;
      scrollbar-width: thin;
      scrollbar-color: rgba(255, 255, 255, 0.25) transparent;
    }

    .hour-card {
      padding: 14px 12px 12px;
      border-radius: 18px;
      border: 1px solid var(--line);
      background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.03)),
        rgba(12, 20, 36, 0.72);
      min-width: 0;
      text-align: center;
    }

    .hour-time {
      color: var(--muted);
      font-size: 12px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      margin-bottom: 12px;
    }

    .hour-temp {
      font-size: 26px;
      font-weight: 800;
      letter-spacing: -0.05em;
      margin-bottom: 10px;
    }

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

    .hour-bar > span {
      display: block;
      height: 100%;
      border-radius: inherit;
      background: linear-gradient(90deg, rgba(56, 189, 248, 0.95), rgba(167, 139, 250, 0.95));
      box-shadow: 0 0 18px rgba(125, 211, 252, 0.25);
    }

    .hour-meta {
      margin-top: 10px;
      color: var(--muted);
      font-size: 12px;
      line-height: 1.2;
    }

    .loading,
    .error {
      position: absolute;
      inset: 0;
      display: grid;
      place-items: center;
      background: rgba(4, 10, 22, 0.42);
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px);
      z-index: 5;
    }

    .message {
      width: min(520px, calc(100% - 48px));
      padding: 26px;
      border-radius: 24px;
      border: 1px solid var(--line);
      background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.03)),
        rgba(8, 14, 28, 0.88);
      box-shadow: var(--shadow);
      text-align: center;
    }

    .message h1,
    .message h2 {
      margin: 0 0 10px;
      font-size: 28px;
      letter-spacing: -0.04em;
    }

    .message p {
      margin: 0;
      color: var(--muted);
      line-height: 1.6;
      font-size: 15px;
    }

    .hidden {
      display: none !important;
    }

    .mono {
      font-variant-numeric: tabular-nums;
    }

    @media (max-width: 980px) {
      body {
        overflow: auto;
      }

      .shell {
        width: calc(100vw - 24px);
        height: auto;
        min-height: calc(100vh - 24px);
      }

      .main {
        grid-template-columns: 1fr;
      }

      .summary {
        grid-template-columns: 1fr;
      }

      .topbar,
      .hero-top {
        flex-direction: column;
        align-items: flex-start;
      }

      .meta {
        justify-content: flex-start;
      }
    }
  </style>
</head>
<body>
  <div class="shell">
    <div class="content">
      <header class="topbar">
        <div class="brand">
          <div class="eyebrow"><span class="dot"></span> Weather Card</div>
          <h1 class="title" id="locationName">Loading...</h1>
          <p class="subtitle" id="locationSubtitle">Fetching forecast data for the selected day.</p>
        </div>
        <div class="meta">
          <div class="pill"><span class="tiny"></span><span id="apiSource">API</span></div>
          <div class="pill mono" id="coords">52.5200, 13.4050</div>
        </div>
      </header>

      <main class="main">
        <section class="panel hero">
          <div class="hero-top">
            <div class="condition">
              <div class="condition-icon" id="conditionIcon">--</div>
              <div class="condition-text">
                <div class="condition-label">Weather condition</div>
                <div class="condition-value" id="conditionText">Loading weather...</div>
              </div>
            </div>
            <div class="pill mono" id="dateLabel">--</div>
          </div>

          <div class="temp">
            <div class="temp-main mono" id="maxTemp">--</div>
            <div class="temp-sub">
              <div class="temp-range mono" id="tempRange">Min --&deg;C</div>
              <div class="subtitle" id="daySummary">Preparing your card.</div>
            </div>
          </div>

          <div class="summary">
            <div class="stat">
              <div class="stat-label">Maximum</div>
              <div class="stat-value mono" id="maxStat">--&deg;C</div>
              <div class="stat-note" id="maxNote">Daily high for the requested date.</div>
            </div>
            <div class="stat">
              <div class="stat-label">Minimum</div>
              <div class="stat-value mono" id="minStat">--&deg;C</div>
              <div class="stat-note" id="minNote">Daily low for the requested date.</div>
            </div>
            <div class="stat">
              <div class="stat-label">Location</div>
              <div class="stat-value" id="locStat">Berlin</div>
              <div class="stat-note" id="locNote">Using UTC day boundaries for hourly values.</div>
            </div>
          </div>
        </section>

        <section class="panel details">
          <div class="section-head">
            <h2 class="section-title">Hourly Temperatures</h2>
            <div class="section-hint" id="hourHint">24 hours in UTC</div>
          </div>
          <div class="hourly">
            <div class="hourly-track" id="hourlyTrack"></div>
          </div>
        </section>
      </main>
    </div>

    <div class="loading" id="loading">
      <div class="message">
        <h2>Loading weather data</h2>
        <p id="loadingText">Please wait while the card fetches temperatures and conditions.</p>
      </div>
    </div>

    <div class="error hidden" id="errorBox">
      <div class="message">
        <h2>Weather data could not be loaded</h2>
        <p id="errorText">The requested data is unavailable right now.</p>
      </div>
    </div>
  </div>

  <script>
    (() => {
      const $ = (id) => document.getElementById(id);

      const els = {
        loading: $("loading"),
        loadingText: $("loadingText"),
        errorBox: $("errorBox"),
        errorText: $("errorText"),
        locationName: $("locationName"),
        locationSubtitle: $("locationSubtitle"),
        apiSource: $("apiSource"),
        coords: $("coords"),
        conditionIcon: $("conditionIcon"),
        conditionText: $("conditionText"),
        dateLabel: $("dateLabel"),
        maxTemp: $("maxTemp"),
        tempRange: $("tempRange"),
        daySummary: $("daySummary"),
        maxStat: $("maxStat"),
        minStat: $("minStat"),
        locStat: $("locStat"),
        maxNote: $("maxNote"),
        minNote: $("minNote"),
        locNote: $("locNote"),
        hourlyTrack: $("hourlyTrack"),
        hourHint: $("hourHint")
      };

      const params = new URLSearchParams(location.search);
      const todayUTC = new Date().toISOString().slice(0, 10);

      const latRaw = params.get("lat");
      const lonRaw = params.get("lon");
      const nameRaw = params.get("name");
      const dateRaw = params.get("date");

      const lat = Number.isFinite(Number(latRaw)) ? Number(latRaw) : 52.52;
      const lon = Number.isFinite(Number(lonRaw)) ? Number(lonRaw) : 13.405;
      const name = (nameRaw && nameRaw.trim()) ? nameRaw.trim() : "Berlin";
      const date = /^\d{4}-\d{2}-\d{2}$/.test(dateRaw || "") ? dateRaw : todayUTC;

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

      const weatherMap = {
        0:  { label: "Clear sky", icon: "☀" },
        1:  { label: "Mainly clear", icon: "🌤" },
        2:  { label: "Partly cloudy", icon: "⛅" },
        3:  { label: "Overcast", icon: "☁" },
        45: { label: "Fog", icon: "🌫" },
        48: { label: "Depositing rime fog", icon: "🌫" },
        51: { label: "Light drizzle", icon: "🌦" },
        53: { label: "Moderate drizzle", icon: "🌦" },
        55: { label: "Dense drizzle", icon: "🌧" },
        56: { label: "Freezing drizzle", icon: "🌧" },
        57: { label: "Freezing drizzle", icon: "🌧" },
        61: { label: "Slight rain", icon: "🌧" },
        63: { label: "Moderate rain", icon: "🌧" },
        65: { label: "Heavy rain", icon: "🌧" },
        66: { label: "Freezing rain", icon: "🌧" },
        67: { label: "Freezing rain", icon: "🌧" },
        71: { label: "Slight snow fall", icon: "🌨" },
        73: { label: "Moderate snow fall", icon: "🌨" },
        75: { label: "Heavy snow fall", icon: "❄" },
        77: { label: "Snow grains", icon: "🌨" },
        80: { label: "Slight rain showers", icon: "🌦" },
        81: { label: "Moderate rain showers", icon: "🌧" },
        82: { label: "Violent rain showers", icon: "⛈" },
        85: { label: "Slight snow showers", icon: "🌨" },
        86: { label: "Heavy snow showers", icon: "❄" },
        95: { label: "Thunderstorm", icon: "⛈" },
        96: { label: "Thunderstorm with hail", icon: "⛈" },
        99: { label: "Thunderstorm with hail", icon: "⛈" }
      };

      const formatTemp = (n) => `${Math.round(Number(n))}&deg;C`;
      const formatHour = (iso) => {
        const d = new Date(iso);
        return new Intl.DateTimeFormat("en", {
          timeZone: "UTC",
          hour: "numeric",
          hour12: false
        }).format(d).padStart(2, "0") + ":00";
      };

      const formatDateHuman = (isoDate) => {
        const d = new Date(`${isoDate}T00:00:00Z`);
        return new Intl.DateTimeFormat("en", {
          timeZone: "UTC",
          weekday: "long",
          year: "numeric",
          month: "long",
          day: "numeric"
        }).format(d);
      };

      const prettyLatLon = (x) => Number(x).toFixed(4);

      function showError(msg) {
        els.loading.classList.add("hidden");
        els.errorText.textContent = msg || "The requested data is unavailable right now.";
        els.errorBox.classList.remove("hidden");
      }

      function setLoading(text) {
        els.loadingText.textContent = text;
        els.loading.classList.remove("hidden");
        els.errorBox.classList.add("hidden");
      }

      function weatherInfo(code) {
        return weatherMap[code] || { label: `Weather code ${code}`, icon: "◌" };
      }

      function buildUrl() {
        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", date);
        url.searchParams.set("end_date", date);
        return url.toString();
      }

      function renderHourly(times, temps) {
        els.hourlyTrack.innerHTML = "";
        const nums = temps.map((v) => Number(v)).filter((v) => Number.isFinite(v));
        const min = Math.min(...nums);
        const max = Math.max(...nums);
        const span = Math.max(1, max - min);

        for (let i = 0; i < times.length && i < temps.length; i++) {
          const t = Number(temps[i]);
          if (!Number.isFinite(t)) continue;
          const w = ((t - min) / span) * 100;

          const card = document.createElement("div");
          card.className = "hour-card";
          card.innerHTML = `
            <div class="hour-time">${formatHour(times[i])}</div>
            <div class="hour-temp mono">${Math.round(t)}&deg;C</div>
            <div class="hour-bar"><span style="width:${Math.max(8, w)}%"></span></div>
            <div class="hour-meta">UTC</div>
          `;
          els.hourlyTrack.appendChild(card);
        }
      }

      async function load() {
        els.locationName.textContent = name;
        els.locationSubtitle.textContent = `Coordinates ${prettyLatLon(lat)}, ${prettyLatLon(lon)}. Showing data for ${formatDateHuman(date)}.`;
        els.apiSource.textContent = isPast ? "Archive" : "Forecast";
        els.coords.textContent = `${prettyLatLon(lat)}, ${prettyLatLon(lon)}`;
        els.dateLabel.textContent = date;
        els.locStat.textContent = name;
        els.hourHint.textContent = `${date} in UTC`;

        setLoading("Fetching weather data for the selected day.");

        try {
          const res = await fetch(buildUrl(), {
            headers: { "Accept": "application/json" }
          });

          if (!res.ok) {
            throw new Error(`Request failed with status ${res.status}`);
          }

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

          const dayIndex = daily && Array.isArray(daily.time)
            ? daily.time.findIndex((t) => t === date)
            : -1;

          const hourlyTimes = hourly && Array.isArray(hourly.time) ? hourly.time : [];
          const hourlyTemps = hourly && Array.isArray(hourly.temperature_2m) ? hourly.temperature_2m : [];

          const filteredTimes = [];
          const filteredTemps = [];
          for (let i = 0; i < hourlyTimes.length && i < hourlyTemps.length; i++) {
            if (String(hourlyTimes[i]).slice(0, 10) === date) {
              filteredTimes.push(hourlyTimes[i]);
              filteredTemps.push(hourlyTemps[i]);
            }
          }

          if (dayIndex === -1 || !daily.temperature_2m_max || !daily.temperature_2m_min || !filteredTimes.length) {
            throw new Error("Requested date is missing from the returned weather data.");
          }

          const max = daily.temperature_2m_max[dayIndex];
          const min = daily.temperature_2m_min[dayIndex];
          const code = daily.weather_code ? daily.weather_code[dayIndex] : undefined;
          const info = weatherInfo(code);

          els.conditionIcon.textContent = info.icon;
          els.conditionText.textContent = info.label;
          els.maxTemp.innerHTML = formatTemp(max);
          els.tempRange.innerHTML = `Min <strong>${Math.round(min)}&deg;C</strong>`;
          els.daySummary.textContent = `${info.label} expected on ${formatDateHuman(date)}. Hourly values are shown below in UTC.`;
          els.maxStat.innerHTML = formatTemp(max);
          els.minStat.innerHTML = formatTemp(min);
          els.maxNote.textContent = `Daily high on ${formatDateHuman(date)}.`;
          els.minNote.textContent = `Daily low on ${formatDateHuman(date)}.`;
          els.locNote.textContent = `Querying ${endpoint} with latitude and longitude parameters.`;

          renderHourly(filteredTimes, filteredTemps);

          els.loading.classList.add("hidden");
        } catch (err) {
          showError("The page could not load weather data for the requested location and date.");
        }
      }

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

L1 — cheap deterministic descriptors

bytes total23,518html / css / js3,359 / 11,135 / 9,024
dom nodes62dom depth10
css rules62js presentyes
brightness42.6contrast23.3
colorfulness16.1whitespace66.8%

This slot's telemetry

prompt tokens8,449completion tokens7,199
total tokens15,648wall45.2 s
cost—request id—
config.json577 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.4-mini-eff-medium--cli--cursor--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": 28873,
    "cost_usd": null,
    "prompt_tokens": 33771,
    "total_tokens": 62644,
    "wall_ms": 204769
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-s2",
  "config_id": "gpt-5.4-mini-eff-medium--cli--cursor--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-12T22:25:05.418977+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T22:24:25.240797+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-12T22:25:54.127776+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T22:25:08.953809+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-12T22:26:42.846060+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T22:25:57.569610+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-12T22:28:00.673606+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T22:26:46.527007+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
    }
  }
}