claude-fable-5-thinking @ low · cursor-xl

cursor-xllow
config
claude-fable-5-thinking-eff-low--cli--cursor-xl--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
claude-fable-5-thinking-low
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
claude-fable-5-thinking @low · 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 neighborsNo similarity data for this session — this batch has no computed pairs.

Fidelity — does the card show the right data?

  • namematch
  • conditionmatch
  • datematch
  • max tempambiguousshown: 16max-equals-min
  • min tempambiguousshown: 16max-equals-min
  • 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 {
    --card-bg: rgba(255,255,255,0.08);
    --border: rgba(255,255,255,0.14);
    --text: #f2f5fa;
    --muted: rgba(242,245,250,0.62);
    --accent: #ffd166;
  }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  html, body { height: 100%; }
  body {
    font-family: "Avenir Next", "Segoe UI", system-ui, -apple-system, sans-serif;
    background: radial-gradient(1200px 700px at 15% -10%, #3d5a94 0%, transparent 55%),
                radial-gradient(1000px 800px at 110% 110%, #2a4b6e 0%, transparent 60%),
                linear-gradient(160deg, #101a2e 0%, #17263e 50%, #0c1424 100%);
    color: var(--text);
    display: flex; align-items: center; justify-content: center;
    min-height: 100vh; overflow: hidden;
  }
  .stars {
    position: fixed; inset: 0; pointer-events: none;
    background-image:
      radial-gradient(1.5px 1.5px at 12% 22%, rgba(255,255,255,.5), transparent),
      radial-gradient(1px 1px at 32% 68%, rgba(255,255,255,.35), transparent),
      radial-gradient(1.5px 1.5px at 58% 14%, rgba(255,255,255,.4), transparent),
      radial-gradient(1px 1px at 74% 48%, rgba(255,255,255,.3), transparent),
      radial-gradient(1.5px 1.5px at 88% 78%, rgba(255,255,255,.45), transparent),
      radial-gradient(1px 1px at 44% 88%, rgba(255,255,255,.3), transparent);
  }
  .card {
    position: relative;
    width: 880px;
    border-radius: 28px;
    background: var(--card-bg);
    border: 1px solid var(--border);
    backdrop-filter: blur(24px);
    box-shadow: 0 30px 80px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.12);
    padding: 44px 48px 40px;
  }
  .top {
    display: flex; justify-content: space-between; align-items: flex-start;
    margin-bottom: 8px;
  }
  .location {
    font-size: 34px; font-weight: 600; letter-spacing: 0.3px;
  }
  .date {
    color: var(--muted); font-size: 15px; margin-top: 6px;
    text-transform: uppercase; letter-spacing: 2px;
  }
  .icon { font-size: 76px; line-height: 1; filter: drop-shadow(0 6px 18px rgba(0,0,0,0.35)); }
  .main {
    display: flex; align-items: baseline; gap: 28px; margin: 18px 0 6px;
  }
  .temp-max {
    font-size: 96px; font-weight: 200; letter-spacing: -3px;
  }
  .temp-max sup { font-size: 36px; font-weight: 300; color: var(--muted); }
  .temp-min {
    font-size: 30px; font-weight: 400; color: var(--muted);
  }
  .condition {
    font-size: 20px; color: var(--accent); font-weight: 500;
    letter-spacing: 0.5px; margin-bottom: 30px;
  }
  .divider {
    height: 1px; background: linear-gradient(90deg, transparent, var(--border), transparent);
    margin-bottom: 26px;
  }
  .hourly-title {
    font-size: 12px; text-transform: uppercase; letter-spacing: 2.5px;
    color: var(--muted); margin-bottom: 16px;
  }
  .hourly {
    display: flex; gap: 4px; overflow-x: auto; padding-bottom: 8px;
    scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.25) transparent;
  }
  .hour {
    flex: 0 0 62px; display: flex; flex-direction: column; align-items: center;
    gap: 8px; padding: 12px 4px; border-radius: 14px;
    transition: background 0.2s;
  }
  .hour:hover { background: rgba(255,255,255,0.07); }
  .hour .h-time { font-size: 12px; color: var(--muted); }
  .hour .h-bar-wrap {
    height: 70px; width: 6px; background: rgba(255,255,255,0.08);
    border-radius: 3px; display: flex; align-items: flex-end;
  }
  .hour .h-bar {
    width: 100%; border-radius: 3px;
    background: linear-gradient(180deg, #ffd166, #ef8354);
  }
  .hour .h-temp { font-size: 14px; font-weight: 600; }
  .status {
    text-align: center; padding: 80px 20px; font-size: 20px; color: var(--muted);
  }
  .status.error { color: #ff9b9b; }
  .spinner {
    width: 34px; height: 34px; margin: 0 auto 18px;
    border: 3px solid rgba(255,255,255,0.15); border-top-color: var(--accent);
    border-radius: 50%; animation: spin 0.9s linear infinite;
  }
  @keyframes spin { to { transform: rotate(360deg); } }
</style>
</head>
<body>
<div class="stars"></div>
<div class="card" id="card">
  <div class="status" id="status"><div class="spinner"></div>Loading weather…</div>
</div>
<script>
(function () {
  const params = new URLSearchParams(location.search);
  const lat = parseFloat(params.get("lat")) || 52.52;
  const lon = parseFloat(params.get("lon")) || 13.405;
  const name = params.get("name") || "Berlin";
  const todayUTC = new Date().toISOString().slice(0, 10);
  const dateStr = /^\d{4}-\d{2}-\d{2}$/.test(params.get("date") || "") ? params.get("date") : todayUTC;

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

  function fmtDate(d) {
    return new Date(d + "T00:00:00Z").toLocaleDateString("en-GB", {
      weekday: "long", day: "numeric", month: "long", year: "numeric", timeZone: "UTC"
    });
  }

  function showError(msg) {
    document.getElementById("card").innerHTML =
      '<div class="status error">⚠️ ' + msg + "</div>";
  }

  const base = dateStr < todayUTC ? "/api/om/archive" : "/api/om/forecast";
  const qs = new URLSearchParams({
    latitude: lat, longitude: lon,
    daily: "temperature_2m_max,temperature_2m_min,weather_code",
    hourly: "temperature_2m",
    timezone: "UTC", temperature_unit: "celsius",
    start_date: dateStr, end_date: dateStr
  });

  fetch(base + "?" + qs)
    .then(r => { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); })
    .then(data => {
      const d = data.daily, h = data.hourly;
      if (!d || !d.time || !d.time.length) throw new Error("No data");
      const max = d.temperature_2m_max[0], min = d.temperature_2m_min[0];
      const code = d.weather_code[0];
      if (max == null || min == null) throw new Error("No data");
      const [condText, icon] = WMO[code] || ["Unknown conditions", "❔"];

      const hours = [];
      if (h && h.time) {
        for (let i = 0; i < h.time.length; i++) {
          if (h.time[i].startsWith(dateStr) && h.temperature_2m[i] != null)
            hours.push({ t: h.time[i].slice(11, 16), v: h.temperature_2m[i] });
        }
      }
      let hourlyHtml = "";
      if (hours.length) {
        const vs = hours.map(x => x.v);
        const lo = Math.min(...vs), hi = Math.max(...vs), span = hi - lo || 1;
        hourlyHtml = hours.map(x => {
          const pct = 25 + 75 * (x.v - lo) / span;
          return '<div class="hour"><div class="h-time">' + x.t +
            '</div><div class="h-bar-wrap"><div class="h-bar" style="height:' + pct.toFixed(0) +
            '%"></div></div><div class="h-temp">' + Math.round(x.v) + '°</div></div>';
        }).join("");
      } else {
        hourlyHtml = '<div class="status">No hourly data available.</div>';
      }

      const esc = s => String(s).replace(/[&<>"]/g, c => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;" }[c]));

      document.getElementById("card").innerHTML =
        '<div class="top"><div><div class="location">' + esc(name) +
        '</div><div class="date">' + fmtDate(dateStr) + ' · UTC</div></div>' +
        '<div class="icon">' + icon + '</div></div>' +
        '<div class="main"><div class="temp-max">' + Math.round(max) + '<sup>°C</sup></div>' +
        '<div class="temp-min">↓ ' + Math.round(min) + '°C</div></div>' +
        '<div class="condition">' + condText + '</div>' +
        '<div class="divider"></div>' +
        '<div class="hourly-title">Hourly temperature</div>' +
        '<div class="hourly">' + hourlyHtml + '</div>';
    })
    .catch(err => showError("Weather data could not be loaded. (" + err.message + ")"));
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total8,640html / css / js303 / 3,928 / 4,409
dom nodes11dom depth5
css rules29js presentyes
brightness46.2contrast16.9
colorfulness20.5whitespace55.0%

This slot's telemetry

prompt tokens2completion tokens4,088
total tokens4,090wall47 s
costrequest id
config.json603 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "claude-fable-5-thinking-eff-low--cli--cursor-xl--dev",
  "effort": "low",
  "family": "claude",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "claude-fable-5-thinking",
  "protocol": "cli",
  "served_model": "claude-fable-5-thinking-low",
  "telemetry": {
    "completion_tokens": 14901,
    "cost_usd": null,
    "prompt_tokens": 8,
    "total_tokens": 14909,
    "wall_ms": 185232
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-xl-s1",
  "config_id": "claude-fable-5-thinking-eff-low--cli--cursor-xl--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T11:47:14.472727+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T11:46:27.473206+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-13T11:47:57.904420+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T11:47:18.273078+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-13T11:48:44.327101+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T11:48:01.879722+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-13T11:49:44.069780+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T11:48:47.910670+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
    }
  }
}