gpt-5.6-sol @ high · cursor-xl

cursor-xlhigh
config
gpt-5.6-sol-eff-high--cli--cursor-xl--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
gpt-5.6-sol-high
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.6-sol @high · cursor-xl 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
  • hourlymatchcoverage 9/24 · 9 match · 0 mismatch · 15 not shown
  • request sidematch0 violation(s)

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

Source — raw model output, one byte unchanged

download card.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Weather</title>
  <style>
    :root {
      color-scheme: dark;
      --ink: #f8fbff;
      --muted: rgba(235, 244, 255, 0.64);
      --line: rgba(255, 255, 255, 0.12);
      --glass: rgba(17, 38, 67, 0.54);
      --accent: #ffcb73;
      --cool: #85d7ff;
    }

    * {
      box-sizing: border-box;
    }

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

    body {
      min-width: 1000px;
      min-height: 700px;
      overflow: hidden;
      color: var(--ink);
      font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      background:
        radial-gradient(circle at 76% 14%, rgba(255, 202, 113, 0.32), transparent 20%),
        radial-gradient(circle at 12% 88%, rgba(75, 168, 218, 0.28), transparent 28%),
        linear-gradient(135deg, #0b1a30 0%, #173e65 51%, #2a5b75 100%);
    }

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

    body::before {
      top: -160px;
      right: -90px;
      width: 520px;
      height: 520px;
      border: 1px solid rgba(255, 255, 255, 0.08);
      box-shadow:
        0 0 0 70px rgba(255, 255, 255, 0.018),
        0 0 0 150px rgba(255, 255, 255, 0.014);
    }

    body::after {
      bottom: -240px;
      left: -150px;
      width: 580px;
      height: 580px;
      background: rgba(50, 144, 194, 0.12);
      filter: blur(60px);
    }

    main {
      position: relative;
      z-index: 1;
      display: grid;
      grid-template-columns: 330px 1fr;
      width: calc(100% - 96px);
      max-width: 1184px;
      height: calc(100% - 80px);
      max-height: 720px;
      margin: 40px auto;
      overflow: hidden;
      border: 1px solid rgba(255, 255, 255, 0.15);
      border-radius: 32px;
      background: rgba(9, 25, 46, 0.38);
      box-shadow: 0 34px 90px rgba(3, 12, 25, 0.38);
      backdrop-filter: blur(28px);
      -webkit-backdrop-filter: blur(28px);
    }

    aside {
      position: relative;
      display: flex;
      flex-direction: column;
      padding: 38px 34px 34px;
      overflow: hidden;
      border-right: 1px solid var(--line);
      background:
        radial-gradient(circle at 25% 16%, rgba(255, 209, 127, 0.2), transparent 25%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.065), rgba(255, 255, 255, 0.012));
    }

    .brand {
      display: flex;
      align-items: center;
      gap: 11px;
      color: rgba(255, 255, 255, 0.76);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.18em;
      text-transform: uppercase;
    }

    .brand-mark {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background: var(--accent);
      box-shadow: 0 0 22px rgba(255, 203, 115, 0.85);
    }

    .weather-art {
      position: relative;
      width: 190px;
      height: 170px;
      margin: 52px auto 24px;
    }

    .sun {
      position: absolute;
      top: 5px;
      right: 9px;
      width: 94px;
      height: 94px;
      border-radius: 50%;
      background: linear-gradient(145deg, #fff1bc, #ffb653);
      box-shadow: 0 0 55px rgba(255, 193, 91, 0.44);
    }

    .cloud {
      position: absolute;
      right: 23px;
      bottom: 27px;
      width: 145px;
      height: 66px;
      border-radius: 40px;
      background: linear-gradient(155deg, rgba(255,255,255,0.98), rgba(198,225,241,0.88));
      box-shadow: 0 18px 35px rgba(4, 22, 41, 0.2);
    }

    .cloud::before,
    .cloud::after {
      position: absolute;
      content: "";
      border-radius: 50%;
      background: inherit;
    }

    .cloud::before {
      left: 24px;
      bottom: 22px;
      width: 70px;
      height: 70px;
    }

    .cloud::after {
      right: 20px;
      bottom: 25px;
      width: 51px;
      height: 51px;
    }

    .location-label {
      margin-top: 2px;
      color: var(--muted);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.15em;
      text-transform: uppercase;
    }

    h1 {
      margin: 9px 0 7px;
      font-size: clamp(30px, 3vw, 43px);
      font-weight: 580;
      line-height: 1.06;
      letter-spacing: -0.045em;
      overflow-wrap: anywhere;
    }

    .date {
      color: var(--muted);
      font-size: 15px;
    }

    .aside-bottom {
      margin-top: auto;
      padding-top: 26px;
      border-top: 1px solid var(--line);
    }

    .condition {
      margin-bottom: 8px;
      font-size: 20px;
      font-weight: 600;
    }

    .coordinates {
      color: rgba(235, 244, 255, 0.48);
      font-size: 12px;
      letter-spacing: 0.04em;
    }

    .content {
      display: flex;
      min-width: 0;
      flex-direction: column;
      padding: 44px 48px 38px;
    }

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

    .eyebrow {
      margin: 4px 0 15px;
      color: var(--muted);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.17em;
      text-transform: uppercase;
    }

    .temperature {
      display: flex;
      align-items: flex-start;
      min-height: 120px;
      font-size: clamp(82px, 9vw, 118px);
      font-weight: 250;
      line-height: 0.84;
      letter-spacing: -0.075em;
    }

    .temperature .degree {
      margin: 3px 0 0 7px;
      color: var(--accent);
      font-size: 29px;
      font-weight: 500;
      letter-spacing: -0.02em;
    }

    .metrics {
      display: grid;
      grid-template-columns: repeat(2, 128px);
      gap: 12px;
    }

    .metric {
      padding: 18px 18px 16px;
      border: 1px solid var(--line);
      border-radius: 19px;
      background: rgba(255, 255, 255, 0.045);
    }

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

    .metric-dot {
      width: 7px;
      height: 7px;
      border-radius: 50%;
      background: var(--accent);
    }

    .metric:last-child .metric-dot {
      background: var(--cool);
    }

    .metric-value {
      font-size: 29px;
      font-weight: 500;
      letter-spacing: -0.035em;
    }

    .chart-panel {
      display: flex;
      min-height: 0;
      flex: 1;
      flex-direction: column;
      margin-top: 34px;
      padding-top: 28px;
      border-top: 1px solid var(--line);
    }

    .chart-heading {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 7px;
    }

    .chart-heading h2 {
      margin: 0;
      font-size: 17px;
      font-weight: 600;
      letter-spacing: -0.02em;
    }

    .chart-heading span {
      color: var(--muted);
      font-size: 12px;
    }

    #chart {
      width: 100%;
      min-height: 230px;
      flex: 1;
    }

    .loading {
      display: flex;
      height: 100%;
      align-items: center;
      justify-content: center;
      color: var(--muted);
      font-size: 14px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .loading::before {
      width: 9px;
      height: 9px;
      margin-right: 12px;
      border-radius: 50%;
      background: var(--accent);
      box-shadow: 0 0 16px var(--accent);
      content: "";
      animation: pulse 1.3s ease-in-out infinite;
    }

    .error {
      display: none;
      height: 100%;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      text-align: center;
    }

    .error strong {
      margin-bottom: 9px;
      font-size: 24px;
      font-weight: 600;
    }

    .error span {
      max-width: 360px;
      color: var(--muted);
      font-size: 14px;
      line-height: 1.6;
    }

    @keyframes pulse {
      50% { opacity: 0.32; transform: scale(0.72); }
    }

    @media (max-height: 730px) {
      main { height: calc(100% - 40px); margin: 20px auto; }
      .weather-art { margin-top: 28px; transform: scale(0.86); }
      .content { padding-top: 32px; }
      .chart-panel { margin-top: 22px; }
    }
  </style>
</head>
<body>
  <main aria-live="polite">
    <aside>
      <div class="brand"><span class="brand-mark"></span>Atmosphere</div>

      <div class="weather-art" aria-hidden="true">
        <div class="sun"></div>
        <div class="cloud"></div>
      </div>

      <div class="location-label">Weather in</div>
      <h1 id="location">Berlin</h1>
      <div class="date" id="dateLabel">—</div>

      <div class="aside-bottom">
        <div class="condition" id="condition">Loading weather…</div>
        <div class="coordinates" id="coordinates">52.520° N · 13.405° E</div>
      </div>
    </aside>

    <section class="content">
      <div id="weatherContent">
        <div class="overview">
          <div>
            <div class="eyebrow">Daily high</div>
            <div class="temperature">
              <span id="highMain">—</span><span class="degree">°C</span>
            </div>
          </div>

          <div class="metrics">
            <div class="metric">
              <div class="metric-name"><span class="metric-dot"></span>High</div>
              <div class="metric-value" id="highMetric">—°</div>
            </div>
            <div class="metric">
              <div class="metric-name"><span class="metric-dot"></span>Low</div>
              <div class="metric-value" id="lowMetric">—°</div>
            </div>
          </div>
        </div>

        <div class="chart-panel">
          <div class="chart-heading">
            <h2>Temperature by hour</h2>
            <span>UTC · Celsius</span>
          </div>
          <div id="chart">
            <div class="loading">Loading forecast</div>
          </div>
        </div>
      </div>

      <div class="error" id="error">
        <strong>Weather unavailable</strong>
        <span>We couldn’t load the weather data for this date. Please check the location and try again.</span>
      </div>
    </section>
  </main>

  <script>
    (() => {
      const params = new URLSearchParams(location.search);
      const today = new Date().toISOString().slice(0, 10);
      const datePattern = /^\d{4}-\d{2}-\d{2}$/;

      const isValidDate = value => {
        if (!datePattern.test(value || "")) return false;
        const parsed = new Date(value + "T00:00:00Z");
        return !Number.isNaN(parsed.getTime()) && parsed.toISOString().slice(0, 10) === value;
      };

      const numberParam = (key, fallback, min, max) => {
        const value = Number(params.get(key));
        return Number.isFinite(value) && value >= min && value <= max ? value : fallback;
      };

      const lat = numberParam("lat", 52.52, -90, 90);
      const lon = numberParam("lon", 13.405, -180, 180);
      const requestedName = (params.get("name") || "").trim();
      const name = requestedName || "Berlin";
      const requestedDate = params.get("date");
      const date = isValidDate(requestedDate) ? requestedDate : today;

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

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

      const coordinateText = (value, positive, negative) =>
        `${Math.abs(value).toFixed(3)}° ${value >= 0 ? positive : negative}`;

      document.getElementById("location").textContent = name;
      document.getElementById("dateLabel").textContent = formatDate(date);
      document.getElementById("coordinates").textContent =
        `${coordinateText(lat, "N", "S")} · ${coordinateText(lon, "E", "W")}`;

      const round = value => Math.round(Number(value));
      const svgNS = "http://www.w3.org/2000/svg";

      function renderChart(times, temperatures) {
        const valid = temperatures
          .map((temperature, index) => ({
            temperature: Number(temperature),
            time: times[index]
          }))
          .filter(item => Number.isFinite(item.temperature) && item.time);

        if (!valid.length) throw new Error("No hourly temperatures");

        const width = 820;
        const height = 260;
        const padding = { top: 35, right: 18, bottom: 42, left: 18 };
        const innerWidth = width - padding.left - padding.right;
        const innerHeight = height - padding.top - padding.bottom;
        const values = valid.map(item => item.temperature);
        const rawMin = Math.min(...values);
        const rawMax = Math.max(...values);
        const spread = Math.max(rawMax - rawMin, 4);
        const min = rawMin - spread * 0.18;
        const max = rawMax + spread * 0.2;

        const x = index => padding.left + (index / Math.max(valid.length - 1, 1)) * innerWidth;
        const y = value => padding.top + ((max - value) / (max - min)) * innerHeight;
        const points = valid.map((item, index) => `${x(index)},${y(item.temperature)}`).join(" ");
        const areaPoints = `${padding.left},${height - padding.bottom} ${points} ${padding.left + innerWidth},${height - padding.bottom}`;

        const svg = document.createElementNS(svgNS, "svg");
        svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
        svg.setAttribute("role", "img");
        svg.setAttribute("aria-label", "Hourly temperature chart");
        svg.style.width = "100%";
        svg.style.height = "100%";
        svg.innerHTML = `
          <defs>
            <linearGradient id="areaFill" x1="0" y1="0" x2="0" y2="1">
              <stop offset="0%" stop-color="#ffcb73" stop-opacity=".34"/>
              <stop offset="100%" stop-color="#ffcb73" stop-opacity="0"/>
            </linearGradient>
            <linearGradient id="lineStroke" x1="0" y1="0" x2="1" y2="0">
              <stop offset="0%" stop-color="#85d7ff"/>
              <stop offset="55%" stop-color="#f6e4ae"/>
              <stop offset="100%" stop-color="#ffbd5b"/>
            </linearGradient>
            <filter id="glow">
              <feGaussianBlur stdDeviation="3.5" result="blur"/>
              <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
            </filter>
          </defs>
        `;

        [0, 0.5, 1].forEach(fraction => {
          const line = document.createElementNS(svgNS, "line");
          const lineY = padding.top + innerHeight * fraction;
          line.setAttribute("x1", padding.left);
          line.setAttribute("x2", width - padding.right);
          line.setAttribute("y1", lineY);
          line.setAttribute("y2", lineY);
          line.setAttribute("stroke", "rgba(255,255,255,.09)");
          line.setAttribute("stroke-dasharray", "3 7");
          svg.appendChild(line);
        });

        const area = document.createElementNS(svgNS, "polygon");
        area.setAttribute("points", areaPoints);
        area.setAttribute("fill", "url(#areaFill)");
        svg.appendChild(area);

        const line = document.createElementNS(svgNS, "polyline");
        line.setAttribute("points", points);
        line.setAttribute("fill", "none");
        line.setAttribute("stroke", "url(#lineStroke)");
        line.setAttribute("stroke-width", "3");
        line.setAttribute("stroke-linecap", "round");
        line.setAttribute("stroke-linejoin", "round");
        line.setAttribute("filter", "url(#glow)");
        svg.appendChild(line);

        valid.forEach((item, index) => {
          const showLabel = index % 3 === 0 || index === valid.length - 1;
          if (!showLabel) return;

          const group = document.createElementNS(svgNS, "g");
          const cx = x(index);
          const cy = y(item.temperature);

          const dot = document.createElementNS(svgNS, "circle");
          dot.setAttribute("cx", cx);
          dot.setAttribute("cy", cy);
          dot.setAttribute("r", "4");
          dot.setAttribute("fill", "#fff4d6");
          dot.setAttribute("stroke", "#dca954");
          dot.setAttribute("stroke-width", "2");
          group.appendChild(dot);

          const valueLabel = document.createElementNS(svgNS, "text");
          valueLabel.setAttribute("x", cx);
          valueLabel.setAttribute("y", cy - 14);
          valueLabel.setAttribute("text-anchor", "middle");
          valueLabel.setAttribute("fill", "rgba(255,255,255,.88)");
          valueLabel.setAttribute("font-size", "12");
          valueLabel.setAttribute("font-weight", "600");
          valueLabel.textContent = `${round(item.temperature)}°`;
          group.appendChild(valueLabel);

          const timeLabel = document.createElementNS(svgNS, "text");
          timeLabel.setAttribute("x", cx);
          timeLabel.setAttribute("y", height - 13);
          timeLabel.setAttribute("text-anchor", "middle");
          timeLabel.setAttribute("fill", "rgba(235,244,255,.54)");
          timeLabel.setAttribute("font-size", "11");
          timeLabel.textContent = item.time.slice(11, 16);
          group.appendChild(timeLabel);

          svg.appendChild(group);
        });

        document.getElementById("chart").replaceChildren(svg);
      }

      function showError() {
        document.getElementById("weatherContent").style.display = "none";
        document.getElementById("error").style.display = "flex";
        document.getElementById("condition").textContent = "Data unavailable";
      }

      async function loadWeather() {
        const endpoint = date < today ? "/api/om/archive" : "/api/om/forecast";
        const query = 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
        });

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

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

          if (!Number.isFinite(high) || !Number.isFinite(low) ||
              !Array.isArray(times) || !Array.isArray(temperatures)) {
            throw new Error("Incomplete weather data");
          }

          document.getElementById("highMain").textContent = round(high);
          document.getElementById("highMetric").textContent = `${round(high)}°`;
          document.getElementById("lowMetric").textContent = `${round(low)}°`;
          document.getElementById("condition").textContent = conditions[code] || "Unknown conditions";
          renderChart(times, temperatures);
        } catch (error) {
          showError();
        }
      }

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

L1 — cheap deterministic descriptors

bytes total20,084html / css / js2,136 / 8,127 / 9,821
dom nodes47dom depth10
css rules51js presentyes
brightness56.6contrast27.1
colorfulness32.2whitespace64.1%

This slot's telemetry

prompt tokens3completion tokens5,803
total tokens5,806wall75.5 s
cost—request id—
config.json568 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.6-sol-eff-high--cli--cursor-xl--dev",
  "effort": "high",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.6-sol",
  "protocol": "cli",
  "served_model": "gpt-5.6-sol-high",
  "telemetry": {
    "completion_tokens": 22298,
    "cost_usd": null,
    "prompt_tokens": 12,
    "total_tokens": 22310,
    "wall_ms": 293572
  },
  "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.6-sol-eff-high--cli--cursor-xl--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T08:46:13.240649+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:44:57.906380+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-13T08:47:32.743327+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:46:17.262439+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-13T08:49:01.451340+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:47:36.170697+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-13T08:50:02.358186+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T08:49:04.872803+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
    }
  }
}