claude-sonnet-5-thinking @ low · cursor

cursorlow
config
claude-sonnet-5-thinking-eff-low--cli--cursor--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
claude-sonnet-5-thinking-low
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
claude-sonnet-5-thinking @low · 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" />
<title>Weather Card</title>
<style>
  :root {
    --bg1: #4a6fd4;
    --bg2: #7ea8e8;
    --card-bg: rgba(255, 255, 255, 0.14);
    --card-border: rgba(255, 255, 255, 0.35);
    --text: #ffffff;
    --text-dim: rgba(255, 255, 255, 0.75);
    --text-faint: rgba(255, 255, 255, 0.55);
  }

  * { box-sizing: border-box; }

  html, body {
    margin: 0;
    padding: 0;
    width: 1280px;
    height: 800px;
    overflow: hidden;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
    color: var(--text);
    background: linear-gradient(160deg, var(--bg1) 0%, var(--bg2) 55%, #a9cdf0 100%);
    position: relative;
  }

  .bg-decor {
    position: absolute;
    inset: 0;
    overflow: hidden;
    z-index: 0;
    pointer-events: none;
  }

  .bg-decor .circle {
    position: absolute;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
  }

  .bg-decor .c1 { width: 500px; height: 500px; top: -180px; right: -120px; }
  .bg-decor .c2 { width: 340px; height: 340px; bottom: -140px; left: -80px; background: rgba(255,255,255,0.06); }
  .bg-decor .c3 { width: 220px; height: 220px; top: 60%; right: 10%; background: rgba(255,255,255,0.05); }

  .stage {
    position: relative;
    z-index: 1;
    width: 1280px;
    height: 800px;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .card {
    width: 880px;
    height: 620px;
    border-radius: 32px;
    background: var(--card-bg);
    border: 1px solid var(--card-border);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    box-shadow: 0 30px 60px rgba(20, 40, 90, 0.35), inset 0 1px 0 rgba(255,255,255,0.4);
    padding: 44px 52px;
    display: flex;
    flex-direction: column;
    gap: 24px;
  }

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

  .location {
    font-size: 34px;
    font-weight: 700;
    letter-spacing: 0.2px;
    line-height: 1.15;
  }

  .date {
    margin-top: 6px;
    font-size: 16px;
    color: var(--text-dim);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
  }

  .coords {
    text-align: right;
    font-size: 13px;
    color: var(--text-faint);
    line-height: 1.6;
    font-weight: 500;
  }

  .main-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 6px 0 10px;
  }

  .temp-block {
    display: flex;
    align-items: center;
    gap: 26px;
  }

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

  .temp-main {
    font-size: 108px;
    font-weight: 300;
    line-height: 1;
    letter-spacing: -2px;
  }

  .temp-main .unit {
    font-size: 48px;
    font-weight: 300;
    vertical-align: super;
    margin-left: 4px;
    color: var(--text-dim);
  }

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

  .condition-label {
    font-size: 24px;
    font-weight: 600;
  }

  .minmax {
    margin-top: 10px;
    display: flex;
    gap: 18px;
    justify-content: flex-end;
    font-size: 17px;
    color: var(--text-dim);
    font-weight: 500;
  }

  .minmax span.hi { color: #ffdca8; }
  .minmax span.lo { color: #bfe1ff; }

  .divider {
    height: 1px;
    background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,0.4), rgba(255,255,255,0));
  }

  .hourly-title {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--text-dim);
    margin-bottom: 2px;
  }

  .hourly-scroll {
    flex: 1;
    overflow: hidden;
    position: relative;
  }

  .hourly-track {
    display: grid;
    grid-template-columns: repeat(24, 1fr);
    gap: 6px;
    height: 100%;
    align-items: end;
  }

  .hour-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    height: 100%;
    padding-bottom: 4px;
    border-radius: 10px;
    transition: background 0.15s ease;
  }

  .hour-item:hover {
    background: rgba(255, 255, 255, 0.08);
  }

  .hour-temp {
    font-size: 14px;
    font-weight: 600;
  }

  .hour-bar-track {
    width: 6px;
    flex: 1;
    max-height: 130px;
    background: rgba(255,255,255,0.15);
    border-radius: 4px;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
  }

  .hour-bar {
    width: 100%;
    border-radius: 4px;
    background: linear-gradient(180deg, #ffe6b0, #ff9f6b);
    min-height: 4px;
  }

  .hour-time {
    font-size: 12px;
    color: var(--text-faint);
    font-weight: 500;
  }

  .status-view {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 16px;
  }

  .spinner {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 4px solid rgba(255,255,255,0.25);
    border-top-color: #fff;
    animation: spin 0.9s linear infinite;
  }

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

  .status-text {
    font-size: 16px;
    color: var(--text-dim);
    font-weight: 500;
  }

  .error-view {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 14px;
    text-align: center;
  }

  .error-icon {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: rgba(255, 90, 90, 0.25);
    border: 1px solid rgba(255, 120, 120, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    font-weight: 700;
  }

  .error-title {
    font-size: 20px;
    font-weight: 700;
  }

  .error-detail {
    font-size: 14px;
    color: var(--text-dim);
    max-width: 460px;
  }

  .hidden { display: none !important; }
</style>
</head>
<body>

<div class="bg-decor">
  <div class="circle c1"></div>
  <div class="circle c2"></div>
  <div class="circle c3"></div>
</div>

<div class="stage">
  <div class="card" id="card">

    <div class="header-row">
      <div>
        <div class="location" id="location">—</div>
        <div class="date" id="date">—</div>
      </div>
      <div class="coords" id="coords"></div>
    </div>

    <div id="loadingView" class="status-view">
      <div class="spinner"></div>
      <div class="status-text">Loading weather data…</div>
    </div>

    <div id="errorView" class="error-view hidden">
      <div class="error-icon">!</div>
      <div class="error-title">Unable to load weather data</div>
      <div class="error-detail" id="errorDetail">Something went wrong while contacting the weather service.</div>
    </div>

    <div id="contentView" class="hidden" style="display:flex; flex-direction:column; gap:24px; flex:1;">
      <div class="main-row">
        <div class="temp-block">
          <svg class="weather-icon" id="weatherIcon" viewBox="0 0 64 64"></svg>
          <div class="temp-main"><span id="currentTemp">--</span><span class="unit">°C</span></div>
        </div>
        <div class="condition-block">
          <div class="condition-label" id="conditionLabel">—</div>
          <div class="minmax">
            <span class="hi">H: <span id="tempMax">--</span>°</span>
            <span class="lo">L: <span id="tempMin">--</span>°</span>
          </div>
        </div>
      </div>

      <div class="divider"></div>

      <div class="hourly-title">Hourly Temperature</div>
      <div class="hourly-scroll">
        <div class="hourly-track" id="hourlyTrack"></div>
      </div>
    </div>

  </div>
</div>

<script>
(function () {
  var params = new URLSearchParams(window.location.search);

  function todayUTC() {
    var d = new Date();
    return d.getUTCFullYear() + '-' + String(d.getUTCMonth() + 1).padStart(2, '0') + '-' + String(d.getUTCDate()).padStart(2, '0');
  }

  var lat = parseFloat(params.get('lat'));
  var lon = parseFloat(params.get('lon'));
  if (isNaN(lat)) lat = 52.52;
  if (isNaN(lon)) lon = 13.405;
  var name = params.get('name') || 'Berlin';
  var dateStr = params.get('date') || todayUTC();

  document.getElementById('location').textContent = name;
  document.getElementById('coords').innerHTML =
    Math.abs(lat).toFixed(2) + '°' + (lat >= 0 ? 'N' : 'S') + '<br>' +
    Math.abs(lon).toFixed(2) + '°' + (lon >= 0 ? 'E' : 'W');

  function formatDateLabel(str) {
    var parts = str.split('-').map(Number);
    var d = new Date(Date.UTC(parts[0], parts[1] - 1, parts[2]));
    var weekday = d.toLocaleDateString('en-US', { weekday: 'long', timeZone: 'UTC' });
    var month = d.toLocaleDateString('en-US', { month: 'long', timeZone: 'UTC' });
    return weekday + ', ' + month + ' ' + d.getUTCDate() + ', ' + d.getUTCFullYear();
  }
  document.getElementById('date').textContent = formatDateLabel(dateStr);

  var WMO = {
    0: ['Clear sky', 'sun'],
    1: ['Mainly clear', 'sun'],
    2: ['Partly cloudy', 'cloud-sun'],
    3: ['Overcast', 'cloud'],
    45: ['Fog', 'fog'],
    48: ['Freezing fog', 'fog'],
    51: ['Light drizzle', 'rain'],
    53: ['Drizzle', 'rain'],
    55: ['Dense drizzle', 'rain'],
    56: ['Light freezing drizzle', 'rain'],
    57: ['Freezing drizzle', 'rain'],
    61: ['Light rain', 'rain'],
    63: ['Rain', 'rain'],
    65: ['Heavy rain', 'rain'],
    66: ['Light freezing rain', 'rain'],
    67: ['Freezing rain', 'rain'],
    71: ['Light snow', 'snow'],
    73: ['Snow', 'snow'],
    75: ['Heavy snow', 'snow'],
    77: ['Snow grains', 'snow'],
    80: ['Light showers', 'rain'],
    81: ['Showers', 'rain'],
    82: ['Violent showers', 'rain'],
    85: ['Light snow showers', 'snow'],
    86: ['Snow showers', 'snow'],
    95: ['Thunderstorm', 'storm'],
    96: ['Thunderstorm w/ hail', 'storm'],
    99: ['Thunderstorm w/ hail', 'storm']
  };

  function weatherInfo(code) {
    return WMO[code] || ['Unknown', 'cloud'];
  }

  var ICONS = {
    sun: '<circle cx="32" cy="32" r="13" fill="#FFD65C"/>' +
      [0,45,90,135,180,225,270,315].map(function(a){
        var rad = a * Math.PI/180, x1=32+16*Math.cos(rad), y1=32+16*Math.sin(rad), x2=32+25*Math.cos(rad), y2=32+25*Math.sin(rad);
        return '<line x1="'+x1+'" y1="'+y1+'" x2="'+x2+'" y2="'+y2+'" stroke="#FFD65C" stroke-width="3.2" stroke-linecap="round"/>';
      }).join(''),
    'cloud-sun': '<circle cx="24" cy="24" r="10" fill="#FFD65C"/>' +
      [0,60,120,180,240,300].map(function(a){
        var rad = a*Math.PI/180, x1=24+13*Math.cos(rad), y1=24+13*Math.sin(rad), x2=24+19*Math.cos(rad), y2=24+19*Math.sin(rad);
        return '<line x1="'+x1+'" y1="'+y1+'" x2="'+x2+'" y2="'+y2+'" stroke="#FFD65C" stroke-width="2.6" stroke-linecap="round"/>';
      }).join('') +
      '<ellipse cx="36" cy="40" rx="18" ry="12" fill="#F2F6FC"/><ellipse cx="26" cy="42" rx="12" ry="9" fill="#F2F6FC"/>',
    cloud: '<ellipse cx="34" cy="38" rx="20" ry="13" fill="#F2F6FC"/><ellipse cx="22" cy="40" rx="13" ry="10" fill="#F2F6FC"/><ellipse cx="44" cy="42" rx="11" ry="8" fill="#E4EAF3"/>',
    fog: '<ellipse cx="32" cy="26" rx="18" ry="11" fill="#E4EAF3"/>' +
      [18,26,34,42].map(function(y){ return '<line x1="12" y1="'+y+'" x2="52" y2="'+y+'" stroke="#F2F6FC" stroke-width="4" stroke-linecap="round"/>'; }).join(''),
    rain: '<ellipse cx="32" cy="26" rx="19" ry="12" fill="#DCE6F2"/>' +
      [20,30,40].map(function(x){ return '<line x1="'+x+'" y1="40" x2="'+(x-5)+'" y2="54" stroke="#7EB8F0" stroke-width="3.4" stroke-linecap="round"/>'; }).join(''),
    snow: '<ellipse cx="32" cy="26" rx="19" ry="12" fill="#E7EEF7"/>' +
      [20,32,44].map(function(x){ return '<circle cx="'+x+'" cy="46" r="3" fill="#FFFFFF"/>'; }).join(''),
    storm: '<ellipse cx="32" cy="24" rx="19" ry="11" fill="#C9D3E0"/><polygon points="32,32 24,48 31,48 27,60 42,40 34,40 38,32" fill="#FFD65C"/>'
  };

  function setIcon(kind) {
    var svg = document.getElementById('weatherIcon');
    svg.innerHTML = ICONS[kind] || ICONS.cloud;
  }

  function show(view) {
    document.getElementById('loadingView').classList.add('hidden');
    document.getElementById('errorView').classList.add('hidden');
    document.getElementById('contentView').classList.add('hidden');
    document.getElementById(view).classList.remove('hidden');
  }

  function showError(msg) {
    document.getElementById('errorDetail').textContent = msg;
    show('errorView');
  }

  var isFuture = dateStr >= todayUTC();
  var base = isFuture ? '/api/om/forecast' : '/api/om/archive';

  var url = base +
    '?latitude=' + encodeURIComponent(lat) +
    '&longitude=' + encodeURIComponent(lon) +
    '&daily=temperature_2m_max,temperature_2m_min,weather_code' +
    '&hourly=temperature_2m' +
    '&timezone=UTC' +
    '&temperature_unit=celsius' +
    '&start_date=' + encodeURIComponent(dateStr) +
    '&end_date=' + encodeURIComponent(dateStr);

  fetch(url)
    .then(function (res) {
      if (!res.ok) throw new Error('Request failed with status ' + res.status);
      return res.json();
    })
    .then(function (data) {
      if (!data || !data.daily || !data.hourly) {
        throw new Error('Response did not contain expected weather data.');
      }

      var tMax = data.daily.temperature_2m_max && data.daily.temperature_2m_max[0];
      var tMin = data.daily.temperature_2m_min && data.daily.temperature_2m_min[0];
      var wCode = data.daily.weather_code && data.daily.weather_code[0];
      var hourlyTimes = data.hourly.time || [];
      var hourlyTemps = data.hourly.temperature_2m || [];

      if (tMax == null || tMin == null || hourlyTimes.length === 0) {
        throw new Error('Weather data was incomplete for the requested date.');
      }

      var info = weatherInfo(wCode);
      document.getElementById('conditionLabel').textContent = info[0];
      setIcon(info[1]);

      document.getElementById('tempMax').textContent = Math.round(tMax);
      document.getElementById('tempMin').textContent = Math.round(tMin);

      var midIdx = Math.min(12, hourlyTemps.length - 1);
      document.getElementById('currentTemp').textContent = Math.round(hourlyTemps[midIdx]);

      var track = document.getElementById('hourlyTrack');
      var frag = document.createDocumentFragment();
      var validTemps = hourlyTemps.filter(function (t) { return t != null; });
      var maxT = Math.max.apply(null, validTemps);
      var minT = Math.min.apply(null, validTemps);
      var range = Math.max(1, maxT - minT);

      hourlyTemps.forEach(function (t, i) {
        if (t == null) return;
        var pct = ((t - minT) / range) * 100;
        var barHeight = 20 + pct * 1.1;
        var timeLabel = hourlyTimes[i] ? hourlyTimes[i].slice(11, 16) : '';

        var item = document.createElement('div');
        item.className = 'hour-item';
        item.innerHTML =
          '<div class="hour-temp">' + Math.round(t) + '°</div>' +
          '<div class="hour-bar-track"><div class="hour-bar" style="height:' + barHeight + 'px;"></div></div>' +
          '<div class="hour-time">' + timeLabel + '</div>';
        frag.appendChild(item);
      });
      track.appendChild(frag);

      show('contentView');
    })
    .catch(function (err) {
      showError(err && err.message ? err.message : 'Unknown error while loading weather data.');
    });
})();
</script>

</body>
</html>

L1 — cheap deterministic descriptors

bytes total15,261html / css / js1,896 / 5,723 / 7,642
dom nodes43dom depth10
css rules44js presentyes
brightness165.0contrast20.6
colorfulness46.5whitespace50.7%

This slot's telemetry

prompt tokens4completion tokens14,500
total tokens14,504wall115.3 s
cost—request id—
config.json604 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "claude-sonnet-5-thinking-eff-low--cli--cursor--dev",
  "effort": "low",
  "family": "claude",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "claude-sonnet-5-thinking",
  "protocol": "cli",
  "served_model": "claude-sonnet-5-thinking-low",
  "telemetry": {
    "completion_tokens": 41319,
    "cost_usd": null,
    "prompt_tokens": 20,
    "total_tokens": 41339,
    "wall_ms": 350795
  },
  "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": "claude-sonnet-5-thinking-eff-low--cli--cursor--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-12T20:39:37.767305+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T20:38:52.281568+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:41:36.423379+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T20:39:41.153125+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-12T20:43:27.001457+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T20:41:39.995800+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-12T20:44:53.328186+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-12T20:43:30.292443+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
    }
  }
}