deepseek-v4-flash-0731 @ max · dsh

dshmax
config
deepseek-v4-flash-0731-eff-max--cli--dsh--dev
batch
2026-07-19--unified
transport
dsh-0.1.0-rc.8-headless-isolated-home
protocol
cli · api
served model
deepseek-v4-flash
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
deepseek-v4-flash-0731 @max · dsh 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
  • dateambiguousmulti-candidate-conflict
  • max tempmatchshown: 25
  • min tempmatchshown: 16
  • 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.0" />
<link rel="icon" href="data:," />
<title>Weather</title>
<style>
  :root {
    --text: #eef1fa;
    --muted: rgba(238, 241, 250, 0.58);
    --muted-2: rgba(238, 241, 250, 0.38);
    --line: rgba(255, 255, 255, 0.1);
  }
  * { box-sizing: border-box; margin: 0; padding: 0; }
  html, body { height: 100%; }
  body {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 48px;
    overflow: auto;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    color: var(--text);
    background-color: #0a0f1e;
    background-image:
      radial-gradient(1100px 700px at 12% -8%, rgba(56, 89, 199, 0.30), transparent 60%),
      radial-gradient(1000px 650px at 105% 112%, rgba(146, 64, 190, 0.22), transparent 60%),
      radial-gradient(820px 520px at 85% -10%, rgba(14, 165, 233, 0.15), transparent 55%);
    background-attachment: fixed;
    position: relative;
  }
  .blob {
    position: fixed;
    border-radius: 50%;
    filter: blur(110px);
    opacity: 0.5;
    pointer-events: none;
    z-index: 0;
  }
  .blob.a { width: 430px; height: 430px; left: -140px; top: -150px; background: #26418f; animation: drift 22s ease-in-out infinite alternate; }
  .blob.b { width: 390px; height: 390px; right: -110px; bottom: -170px; background: #5b2a86; animation: drift 26s ease-in-out infinite alternate-reverse; }
  @keyframes drift {
    from { transform: translate(0, 0) scale(1); }
    to   { transform: translate(56px, 38px) scale(1.12); }
  }

  .card {
    position: relative;
    z-index: 1;
    width: 660px;
    max-width: 100%;
    border-radius: 28px;
    padding: 44px 50px 34px;
    background: linear-gradient(165deg, rgba(255, 255, 255, 0.10), rgba(255, 255, 255, 0.035));
    border: 1px solid var(--line);
    -webkit-backdrop-filter: blur(22px);
    backdrop-filter: blur(22px);
    box-shadow: 0 40px 90px rgba(2, 6, 18, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.08);
    overflow: hidden;
    animation: rise 0.6s cubic-bezier(0.2, 0.7, 0.2, 1) both;
  }
  .card::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, #38bdf8, #818cf8 48%, #c084fc);
  }
  @keyframes rise {
    from { opacity: 0; transform: translateY(18px) scale(0.985); }
    to   { opacity: 1; transform: none; }
  }

  /* ---------- header ---------- */
  .head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
  .loc { display: flex; align-items: center; gap: 14px; }
  .loc-name { font-size: 23px; font-weight: 600; letter-spacing: 0.01em; }
  .pin {
    flex: none;
    width: 40px; height: 40px;
    border-radius: 13px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(248, 113, 113, 0.13);
    border: 1px solid rgba(248, 113, 113, 0.28);
    color: #fda4a4;
  }
  .pin svg { width: 20px; height: 20px; }
  .date { margin-top: 12px; display: flex; align-items: center; gap: 10px; font-size: 14.5px; color: var(--muted); font-weight: 500; }
  .rel {
    font-size: 10.5px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
    color: #93c5fd;
    background: rgba(147, 197, 253, 0.10);
    border: 1px solid rgba(147, 197, 253, 0.24);
    padding: 3px 9px;
    border-radius: 999px;
  }
  .pill {
    flex: none;
    display: inline-flex; align-items: center; gap: 7px;
    font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
    color: var(--muted);
    padding: 7px 13px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
  }
  .pill i { width: 7px; height: 7px; border-radius: 50%; }
  .pill.fcst i { background: #38bdf8; box-shadow: 0 0 8px #38bdf8; }
  .pill.arch i { background: #c084fc; box-shadow: 0 0 8px #c084fc; }

  /* ---------- main temp ---------- */
  .main { display: flex; align-items: center; gap: 40px; margin-top: 36px; }
  .temp-col { display: flex; flex-direction: column; gap: 20px; }
  .temp-wrap { display: flex; align-items: flex-start; }
  .temp-big {
    font-size: 116px; font-weight: 200; line-height: 0.85;
    letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums;
  }
  .deg { font-size: 50px; font-weight: 200; margin: 8px 0 0 4px; color: rgba(238, 241, 250, 0.72); }
  .stats { display: flex; gap: 12px; }
  .stat {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: 13.5px; font-weight: 600; color: var(--muted);
    padding: 8px 15px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.055);
    border: 1px solid rgba(255, 255, 255, 0.09);
  }
  .stat svg { width: 13px; height: 13px; }
  .stat b { color: var(--text); font-weight: 700; font-variant-numeric: tabular-nums; }
  .stat.hi svg { color: #fbbf24; }
  .stat.lo svg { color: #7dd3fc; }

  .cond { display: flex; flex-direction: column; align-items: center; margin-left: auto; }
  .cond .icon {
    width: 92px; height: 92px;
    border-radius: 26px;
    display: flex; align-items: center; justify-content: center;
    font-size: 46px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.11);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 18px 40px -18px rgba(0, 0, 0, 0.5);
  }
  .cond .label { margin-top: 14px; font-size: 17px; font-weight: 600; text-align: center; }
  .cond .sub { margin-top: 4px; font-size: 12.5px; color: var(--muted); }

  /* ---------- hourly ---------- */
  .divider {
    height: 1px;
    margin: 34px 0 26px;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.16), transparent);
  }
  .section-label {
    display: flex; align-items: center; justify-content: space-between;
    font-size: 12px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted-2);
    margin-bottom: 18px;
  }
  .section-label .unit { letter-spacing: 0.06em; font-weight: 500; text-transform: none; }
  .chart {
    display: flex; align-items: flex-end; gap: 6px;
    height: 168px;
    position: relative;
    padding-bottom: 2px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.07) 1px, transparent 1px);
    background-size: 100% 25%;
  }
  .col { flex: 1; height: 100%; min-width: 0; display: flex; flex-direction: column; justify-content: flex-end; position: relative; }
  .col.now { background: linear-gradient(to top, rgba(56, 189, 248, 0.14), rgba(56, 189, 248, 0) 75%); border-radius: 10px 10px 0 0; }
  .bar {
    width: 100%;
    border-radius: 6px 6px 2px 2px;
    min-height: 3px;
    opacity: 0.92;
    box-shadow: 0 0 14px -2px currentColor;
    transition: opacity 0.15s;
  }
  .col:hover .bar { opacity: 1; }
  .col.now .bar { opacity: 1; box-shadow: 0 0 18px -2px currentColor; }
  .tip {
    position: absolute;
    left: 50%; bottom: calc(100% - 6px);
    transform: translate(-50%, 6px);
    opacity: 0; pointer-events: none;
    transition: opacity 0.15s, transform 0.15s;
    background: rgba(10, 15, 32, 0.92);
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 10px;
    padding: 6px 10px;
    font-size: 12.5px; font-weight: 600; text-align: center;
    white-space: nowrap;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.4);
    z-index: 5;
    font-variant-numeric: tabular-nums;
  }
  .tip small { display: block; color: var(--muted); font-weight: 500; margin-bottom: 1px; }
  .col:hover .tip { opacity: 1; transform: translate(-50%, 0); }
  .axis { display: flex; margin-top: 12px; }
  .axis span {
    flex: 1; text-align: center;
    font-size: 11px; color: var(--muted-2);
    font-variant-numeric: tabular-nums;
  }
  .axis span.now { color: #7dd3fc; font-weight: 700; }
  .axis span.now::after {
    content: "";
    display: block;
    width: 4px; height: 4px;
    margin: 3px auto 0;
    border-radius: 50%;
    background: #38bdf8;
    box-shadow: 0 0 6px #38bdf8;
  }

  .foot {
    display: flex; justify-content: space-between;
    margin-top: 28px; padding-top: 18px;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
    font-size: 11.5px; color: var(--muted-2); letter-spacing: 0.03em;
  }

  /* ---------- loading / error ---------- */
  .status {
    min-height: 430px;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    text-align: center;
    padding: 40px 20px;
  }
  .spinner {
    width: 46px; height: 46px;
    border-radius: 50%;
    border: 3px solid rgba(255, 255, 255, 0.12);
    border-top-color: #818cf8;
    animation: spin 0.8s linear infinite;
    margin-bottom: 24px;
  }
  @keyframes spin { to { transform: rotate(360deg); } }
  .msg { font-size: 14.5px; color: var(--muted); }
  .err-ico {
    width: 74px; height: 74px;
    border-radius: 24px;
    display: flex; align-items: center; justify-content: center;
    font-size: 32px;
    background: rgba(248, 113, 113, 0.10);
    border: 1px solid rgba(248, 113, 113, 0.28);
    margin-bottom: 22px;
  }
  .err-title { font-size: 19px; font-weight: 700; }
  .err-sub { margin-top: 8px; font-size: 14px; color: var(--muted); line-height: 1.6; max-width: 400px; }
  .btn {
    appearance: none;
    margin-top: 26px;
    font: inherit; font-size: 14px; font-weight: 600;
    color: var(--text);
    padding: 11px 28px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    background: rgba(255, 255, 255, 0.08);
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
  }
  .btn:hover { background: rgba(255, 255, 255, 0.14); }
  .btn:active { transform: scale(0.97); }

  @media (prefers-reduced-motion: reduce) {
    .blob, .card, .spinner { animation: none; }
  }
</style>
</head>
<body>
  <div class="blob a" aria-hidden="true"></div>
  <div class="blob b" aria-hidden="true"></div>

  <main class="card" id="card" aria-live="polite">
    <div class="status" role="status">
      <div class="spinner"></div>
      <div class="msg">Loading weather…</div>
    </div>
  </main>

<script>
(function () {
  "use strict";

  var card = document.getElementById("card");
  var qs = new URLSearchParams(window.location.search);

  /* ---------------- query parameters ---------------- */
  var DEFAULT_LAT = 52.52, DEFAULT_LON = 13.405, DEFAULT_NAME = "Berlin";

  function readCoord(key, fallback, min, max) {
    var raw = qs.get(key);
    var n = raw == null ? NaN : Number(raw);
    return Number.isFinite(n) && n >= min && n <= max ? n : fallback;
  }

  var lat = readCoord("lat", DEFAULT_LAT, -90, 90);
  var lon = readCoord("lon", DEFAULT_LON, -180, 180);
  var rawName = (qs.get("name") || "").replace(/[\u0000-\u001f\u007f]/g, "").trim().slice(0, 60);
  var name = rawName || DEFAULT_NAME;

  function pad(n) { return String(n).padStart(2, "0"); }
  function toUTCDateStr(d) { return d.getUTCFullYear() + "-" + pad(d.getUTCMonth() + 1) + "-" + pad(d.getUTCDate()); }
  function parseUTC(s) {
    var p = s.split("-").map(Number);
    return new Date(Date.UTC(p[0], p[1] - 1, p[2]));
  }
  function shiftDate(s, delta) {
    var d = parseUTC(s);
    return toUTCDateStr(new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + delta)));
  }

  var today = new Date();
  var todayStr = toUTCDateStr(today);

  var dateStr = todayStr;
  var rawDate = qs.get("date") || "";
  if (/^\d{4}-\d{2}-\d{2}$/.test(rawDate)) {
    var p = rawDate.split("-").map(Number);
    if (p.every(function (n) { return Number.isInteger(n); }) && toUTCDateStr(parseUTC(rawDate)) === rawDate) {
      dateStr = rawDate;
    }
  }

  var isPast = dateStr < todayStr;
  var endpoint = isPast ? "/api/om/archive" : "/api/om/forecast";

  var url = endpoint + "?" + new URLSearchParams({
    latitude: String(Number(lat.toFixed(5))),
    longitude: String(Number(lon.toFixed(5))),
    daily: "temperature_2m_max,temperature_2m_min,weather_code",
    hourly: "temperature_2m",
    timezone: "UTC",
    temperature_unit: "celsius",
    start_date: dateStr,
    end_date: dateStr
  }).toString();

  /* ---------------- WMO weather codes ---------------- */
  var CODES = {
    0:  ["Clear sky", "☀️"],
    1:  ["Mainly clear", "🌤️"],
    2:  ["Partly cloudy", "⛅"],
    3:  ["Overcast", "☁️"],
    45: ["Fog", "🌫️"],
    48: ["Rime fog", "🌫️"],
    51: ["Light drizzle", "🌦️"],
    53: ["Drizzle", "🌦️"],
    55: ["Dense drizzle", "🌧️"],
    56: ["Freezing drizzle", "🌧️"],
    57: ["Freezing drizzle", "🌧️"],
    61: ["Light rain", "🌦️"],
    63: ["Rain", "🌧️"],
    65: ["Heavy rain", "🌧️"],
    66: ["Freezing rain", "🌧️"],
    67: ["Freezing rain", "🌧️"],
    71: ["Light snow", "🌨️"],
    73: ["Snow", "🌨️"],
    75: ["Heavy snow", "❄️"],
    77: ["Snow grains", "🌨️"],
    80: ["Light showers", "🌦️"],
    81: ["Rain showers", "🌧️"],
    82: ["Violent showers", "⛈️"],
    85: ["Snow showers", "🌨️"],
    86: ["Snow showers", "🌨️"],
    95: ["Thunderstorm", "⛈️"],
    96: ["Thunderstorm with hail", "⛈️"],
    99: ["Thunderstorm with hail", "⛈️"]
  };
  function condFor(code) { return CODES[code] || ["Unknown", "🌡️"]; }

  /* ---------------- UI helpers ---------------- */
  var PIN_SVG = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg>';
  var UP_SVG = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="18 15 12 9 6 15"/></svg>';
  var DOWN_SVG = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>';

  function escapeHtml(s) {
    return String(s).replace(/[&<>"']/g, function (c) {
      return { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }[c];
    });
  }

  function fmtTemp(v) { return Number.isFinite(v) ? String(Math.round(v)) : "–"; }

  function showLoading() {
    card.innerHTML =
      '<div class="status" role="status">' +
        '<div class="spinner"></div>' +
        '<div class="msg">Loading weather for ' + escapeHtml(name) + '…</div>' +
      '</div>';
    document.title = "Weather · " + name;
  }

  function showError(detail) {
    card.innerHTML =
      '<div class="status" role="alert">' +
        '<div class="err-ico">⚠️</div>' +
        '<div class="err-title">Weather data could not be loaded</div>' +
        '<div class="err-sub">' + escapeHtml(detail) + '</div>' +
        '<button type="button" class="btn" id="retry">Try again</button>' +
      '</div>';
    document.title = "Weather · unavailable";
    var btn = card.querySelector("#retry");
    if (btn) btn.addEventListener("click", init);
  }

  /* ---------------- render ---------------- */
  function render(data) {
    var daily = (data && data.daily) || {};
    var hourly = (data && data.hourly) || {};
    var dailyTime = Array.isArray(daily.time) ? daily.time : [];
    var di = Math.max(0, dailyTime.indexOf(dateStr));

    function numAt(arr) { return Array.isArray(arr) && arr[di] != null ? Number(arr[di]) : NaN; }

    var hi = numAt(daily.temperature_2m_max);
    var lo = numAt(daily.temperature_2m_min);
    var code = Array.isArray(daily.weather_code) && daily.weather_code[di] != null ? Number(daily.weather_code[di]) : NaN;

    /* hourly values for the requested date */
    var hours = [];
    if (Array.isArray(hourly.time)) {
      hourly.time.forEach(function (t, i) {
        if (typeof t === "string" && t.slice(0, 10) === dateStr &&
            Array.isArray(hourly.temperature_2m) && hourly.temperature_2m[i] != null) {
          hours.push({ t: t, v: Number(hourly.temperature_2m[i]) });
        }
      });
    }
    /* fallback: first 24 hourly entries, in case times are missing */
    if (!hours.length && Array.isArray(hourly.temperature_2m)) {
      for (var i = 0; i < 24 && i < hourly.temperature_2m.length; i++) {
        if (hourly.temperature_2m[i] != null) {
          hours.push({ t: hourly.time && hourly.time[i] ? hourly.time[i] : "", v: Number(hourly.temperature_2m[i]) });
        }
      }
    }

    if (!Number.isFinite(hi) || !Number.isFinite(lo)) {
      var vs = [];
      hours.forEach(function (h) { if (Number.isFinite(h.v)) vs.push(h.v); });
      if (vs.length) { hi = Math.max.apply(null, vs); lo = Math.min.apply(null, vs); }
      else { hi = NaN; lo = NaN; }
    }
    if (!hours.length || (!Number.isFinite(hi) && !Number.isFinite(lo))) {
      showError("The weather service returned incomplete data for " + dateStr + ".");
      return;
    }
    if (!Number.isFinite(code)) code = -1;
    var cond = condFor(code);

    var rel = dateStr === todayStr ? "Today"
      : dateStr === shiftDate(todayStr, 1) ? "Tomorrow"
      : dateStr === shiftDate(todayStr, -1) ? "Yesterday" : "";

    var prettyDate = parseUTC(dateStr).toLocaleDateString("en-US", {
      weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
    });

    card.innerHTML =
      '<div class="head">' +
        '<div>' +
          '<div class="loc"><span class="pin">' + PIN_SVG + '</span><span class="loc-name"></span></div>' +
          '<div class="date"><span class="rel"></span><span class="date-full"></span></div>' +
        '</div>' +
        '<span class="pill ' + (isPast ? "arch" : "fcst") + '"><i></i>' + (isPast ? "Archive" : "Forecast") + '</span>' +
      '</div>' +
      '<div class="main">' +
        '<div class="temp-col">' +
          '<div class="temp-wrap"><span class="temp-big"></span><span class="deg">°</span></div>' +
          '<div class="stats">' +
            '<span class="stat hi">' + UP_SVG + 'Max <b></b></span>' +
            '<span class="stat lo">' + DOWN_SVG + 'Min <b></b></span>' +
          '</div>' +
        '</div>' +
        '<div class="cond">' +
          '<div class="icon"></div>' +
          '<div class="label"></div>' +
          '<div class="sub"></div>' +
        '</div>' +
      '</div>' +
      '<div class="divider"></div>' +
      '<div class="section-label"><span>Hourly temperatures</span><span class="unit">24 h · °C · UTC</span></div>' +
      '<div class="chart"></div>' +
      '<div class="axis"></div>' +
      '<div class="foot"><span>Open-Meteo · ' + (isPast ? "historical data" : "forecast") + '</span><span class="updated"></span></div>';

    var displayT = Number.isFinite(hi) ? hi : lo;
    card.querySelector(".loc-name").textContent = name;
    card.querySelector(".rel").textContent = rel;
    if (!rel) card.querySelector(".rel").style.display = "none";
    card.querySelector(".date-full").textContent = prettyDate;
    card.querySelector(".temp-big").textContent = fmtTemp(displayT);
    card.querySelector(".stat.hi b").textContent = fmtTemp(hi) + "°";
    card.querySelector(".stat.lo b").textContent = fmtTemp(lo) + "°";
    card.querySelector(".cond .icon").textContent = cond[1];
    card.querySelector(".cond .label").textContent = cond[0];

    /* warmest hour */
    var peak = "";
    if (hours.length) {
      var bi = 0;
      hours.forEach(function (h, i) { if (h.v > hours[bi].v) bi = i; });
      if (hours[bi].t) peak = "High at " + hours[bi].t.slice(11, 16);
    }
    card.querySelector(".cond .sub").textContent = peak;

    /* hourly bar chart */
    var chart = card.querySelector(".chart");
    var axis = card.querySelector(".axis");
    var loV = Number.isFinite(lo) ? lo : hi;
    var hiV = Number.isFinite(hi) ? hi : lo;
    var loP = loV - 2, hiP = hiV + 2, range = Math.max(1, hiP - loP);
    var nowHour = dateStr === todayStr ? today.getUTCHours() : -1;

    hours.forEach(function (h, i) {
      var pct = Math.max(2, Math.min(100, ((h.v - loP) / range) * 100));
      var hue = Math.max(5, Math.min(225, Math.round(225 - (h.v + 10) * 5)));

      var col = document.createElement("div");
      col.className = "col" + (i === nowHour ? " now" : "");

      var tip = document.createElement("div");
      tip.className = "tip";
      var tipT = document.createElement("small");
      tipT.textContent = h.t ? h.t.slice(11, 16) : "—";
      tip.appendChild(tipT);
      tip.appendChild(document.createTextNode(fmtTemp(h.v) + "°"));

      var bar = document.createElement("div");
      bar.className = "bar";
      bar.style.height = pct.toFixed(1) + "%";
      bar.style.background = "linear-gradient(180deg, hsl(" + hue + " 92% 72%), hsl(" + hue + " 80% 50%))";
      bar.style.color = "hsl(" + hue + " 90% 64%)";

      col.appendChild(tip);
      col.appendChild(bar);
      chart.appendChild(col);

      var lab = document.createElement("span");
      if (i % 3 === 0 && h.t) lab.textContent = h.t.slice(11, 16);
      if (i === nowHour) lab.classList.add("now");
      axis.appendChild(lab);
    });

    card.querySelector(".updated").textContent =
      "Updated " + today.toISOString().slice(0, 16).replace("T", " ") + " UTC";
    document.title = fmtTemp(displayT) + "° " + name + " · " + cond[0];
  }

  /* ---------------- fetch ---------------- */
  function friendlyError(err) {
    if (!err) return "A network error occurred.";
    if (err.name === "AbortError") return "The request timed out.";
    if (/failed to fetch|load failed|network/i.test(err.message || "")) return "A network error occurred.";
    return err.message;
  }

  function init() {
    showLoading();
    var ctrl = new AbortController();
    var timer = setTimeout(function () { ctrl.abort(); }, 12000);
    fetch(url, { signal: ctrl.signal, headers: { Accept: "application/json" } })
      .then(function (res) {
        if (!res.ok) throw new Error("The server responded with HTTP " + res.status + ".");
        return res.json();
      })
      .then(function (data) { render(data); })
      .catch(function (err) { showError(friendlyError(err)); })
      .finally(function () { clearTimeout(timer); });
  }

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

L1 — cheap deterministic descriptors

bytes total22,383html / css / js550 / 9,720 / 12,113
dom nodes15dom depth5
css rules71js presentyes
brightness35.4contrast34.5
colorfulness38.8whitespace78.2%

This slot's telemetry

prompt tokens9,295completion tokens38,868
total tokens48,163wall225.9 s
cost—request id—
config.json603 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_DEEPSEEK_KEY",
    "method": "api-key"
  },
  "billing": "api",
  "config_id": "deepseek-v4-flash-0731-eff-max--cli--dsh--dev",
  "effort": "max",
  "family": "deepseek",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "deepseek-v4-flash-0731",
  "protocol": "cli",
  "served_model": "deepseek-v4-flash",
  "telemetry": {
    "completion_tokens": 145450,
    "cost_usd": null,
    "prompt_tokens": 48216,
    "total_tokens": 193666,
    "wall_ms": 848018
  },
  "transport": "dsh-0.1.0-rc.8-headless-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-21--dsh-s0",
  "config_id": "deepseek-v4-flash-0731-eff-max--cli--dsh--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-21T13:25:22.044802+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T13:23:19.777550+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-21T13:29:11.853372+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T13:25:25.929723+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-21T13:35:59.321883+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T13:29:15.619554+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-21T13:37:39.016633+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T13:36:02.877437+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
    }
  }
}