deepseek-v4-flash · go

go
config
deepseek-v4-flash--opencode-go--dev
batch
2026-07-19--unified
transport
opencode-go-gateway
protocol
api · plan
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 · go 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 tempambiguousshown: 17max-equals-min
  • min tempambiguousshown: 17max-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">
<meta name="viewport" content="width=1280, initial-scale=1.0">
<title>Weather Card</title>
<style>
  body {
    margin: 0;
    min-height: 100vh;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    display: flex;
    justify-content: center;
    align-items: center;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
  }
  .card {
    background: #ffffff;
    border-radius: 24px;
    padding: 40px;
    width: 480px;
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.35);
    transition: transform 0.2s ease;
  }
  .header {
    margin-bottom: 20px;
    border-bottom: 1px solid #f0f0f0;
    padding-bottom: 16px;
  }
  .location {
    font-size: 28px;
    font-weight: 700;
    margin: 0;
    color: #1e272e;
    letter-spacing: -0.3px;
  }
  .date {
    font-size: 16px;
    color: #636e72;
    margin: 6px 0 0 0;
    font-weight: 400;
  }
  .main-temps {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin: 24px 0;
  }
  .temp-high, .temp-low {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  .temp-high .value, .temp-low .value {
    font-size: 52px;
    font-weight: 600;
    line-height: 1;
  }
  .temp-high .value {
    color: #e74c3c;
  }
  .temp-low .value {
    color: #3498db;
  }
  .value .unit {
    font-size: 0.35em;
    vertical-align: super;
    font-weight: 400;
  }
  .temp-high .label, .temp-low .label {
    font-size: 14px;
    color: #b2bec3;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-top: 6px;
  }
  .condition {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 24px 0;
    gap: 16px;
  }
  .condition-emoji {
    font-size: 68px;
    line-height: 1;
  }
  .condition-text {
    font-size: 26px;
    font-weight: 500;
    color: #2d3436;
  }
  .hourly-section {
    margin-top: 28px;
  }
  .hourly-section h3 {
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: #b2bec3;
    margin: 0 0 12px 0;
  }
  .hourly-list {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 8px;
    scrollbar-width: thin;
    scrollbar-color: #b2bec3 transparent;
  }
  .hourly-list::-webkit-scrollbar {
    height: 5px;
  }
  .hourly-list::-webkit-scrollbar-track {
    background: transparent;
  }
  .hourly-list::-webkit-scrollbar-thumb {
    background: #b2bec3;
    border-radius: 8px;
  }
  .hour-item {
    flex: 0 0 auto;
    width: 64px;
    padding: 10px 6px;
    border-radius: 16px;
    background: #f1f2f6;
    text-align: center;
    font-size: 14px;
    color: #2d3436;
    transition: background 0.2s;
  }
  .hour-item:hover {
    background: #e0e0e5;
  }
  .hour-item .hour {
    font-weight: 600;
    margin-bottom: 6px;
    font-size: 13px;
    color: #636e72;
  }
  .hour-item .temp {
    font-size: 18px;
    font-weight: 500;
  }
  .no-data {
    color: #b2bec3;
    text-align: center;
    padding: 12px 0;
    font-size: 15px;
  }
  .error {
    color: #e74c3c;
    text-align: center;
    padding: 48px 12px;
    font-size: 18px;
    font-weight: 500;
  }
  .loading {
    text-align: center;
    font-size: 18px;
    color: #636e72;
    padding: 40px 0;
  }
</style>
</head>
<body>
<div class="card" id="card">
  <div id="content">
    <div class="loading">Loading weather data…</div>
  </div>
</div>
<script>
(function() {
  'use strict';

  function escapeHtml(unsafe) {
    return unsafe
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function getParams() {
    const params = new URLSearchParams(window.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 dateStr = params.get('date') || new Date().toISOString().split('T')[0];
    return { lat, lon, name: name, date: dateStr };
  }

  function formatDate(dateStr) {
    const parts = dateStr.split('-');
    const d = new Date(Date.UTC(parts[0], parts[1] - 1, parts[2]));
    return d.toLocaleDateString('en-US', {
      weekday: 'long',
      year: 'numeric',
      month: 'long',
      day: 'numeric'
    });
  }

  function weatherCodeToCondition(code) {
    const map = {
      0:  ['Clear sky', '☀️'],
      1:  ['Mainly clear', '🌤️'],
      2:  ['Partly cloudy', '⛅'],
      3:  ['Overcast', '☁️'],
      45: ['Foggy', '🌫️'],
      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 snow', '🌨️'],
      73: ['Moderate snow', '🌨️'],
      75: ['Heavy snow', '❄️'],
      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 slight hail', '⛈️'],
      99: ['Thunderstorm with heavy hail', '⛈️']
    };
    return map[code] || ['Unknown', '❓'];
  }

  async function fetchData(lat, lon, date) {
    const todayStr = new Date().toISOString().split('T')[0];
    const isPast = date < todayStr;
    const base = window.location.origin + (isPast ? '/api/om/archive' : '/api/om/forecast');
    const params = 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: date,
      end_date: date
    });
    const url = base + '?' + params.toString();
    const resp = await fetch(url);
    if (!resp.ok) throw new Error('Network response not OK');
    const data = await resp.json();
    if (!data.daily || !data.hourly ||
        !Array.isArray(data.daily.time) || data.daily.time.length === 0) {
      throw new Error('Invalid data from API');
    }
    return data;
  }

  function render(data, params) {
    const daily = data.daily;
    const hourly = data.hourly;

    const tempMax = daily.temperature_2m_max[0];
    const tempMin = daily.temperature_2m_min[0];
    const wCode = daily.weather_code[0];
    const [condText, condEmoji] = weatherCodeToCondition(wCode);

    const dateStr = params.date;
    const times = hourly.time || [];
    const temps = hourly.temperature_2m || [];
    const hourlyItems = [];
    for (let i = 0; i < times.length; i++) {
      if (times[i] && times[i].startsWith(dateStr)) {
        const timePart = times[i].substring(11, 16); // HH:MM
        hourlyItems.push({ time: timePart, temp: temps[i] });
      }
    }

    const safeName = escapeHtml(params.name);
    const safeCondText = escapeHtml(condText);
    const formattedDate = formatDate(params.date);

    let hourlyHtml;
    if (hourlyItems.length > 0) {
      hourlyHtml = `<div class="hourly-list">` +
        hourlyItems.map(item =>
          `<div class="hour-item">
            <div class="hour">${item.time}</div>
            <div class="temp">${Math.round(item.temp)}°</div>
          </div>`
        ).join('') +
        `</div>`;
    } else {
      hourlyHtml = `<p class="no-data">No hourly data available for this date.</p>`;
    }

    document.getElementById('content').innerHTML = `
      <div class="header">
        <div class="location">${safeName}</div>
        <div class="date">${formattedDate}</div>
      </div>
      <div class="main-temps">
        <div class="temp-high">
          <div class="label">High</div>
          <div class="value">${Math.round(tempMax)}<span class="unit">°C</span></div>
        </div>
        <div class="temp-low">
          <div class="label">Low</div>
          <div class="value">${Math.round(tempMin)}<span class="unit">°C</span></div>
        </div>
      </div>
      <div class="condition">
        <span class="condition-emoji">${condEmoji}</span>
        <span class="condition-text">${safeCondText}</span>
      </div>
      <div class="hourly-section">
        <h3>Hourly Temperatures</h3>
        ${hourlyHtml}
      </div>
    `;
  }

  function showError(message) {
    document.getElementById('content').innerHTML = `<div class="error">${escapeHtml(message)}</div>`;
  }

  async function init() {
    const params = getParams();
    try {
      const data = await fetchData(params.lat, params.lon, params.date);
      render(data, params);
    } catch (e) {
      console.error(e);
      showError('Sorry, weather data could not be loaded.');
    }
  }

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

L1 — cheap deterministic descriptors

bytes total9,205html / css / js339 / 3,188 / 5,678
dom nodes11dom depth5
css rules28js presentyes
brightness147.7contrast60.2
colorfulness64.5whitespace39.7%

This slot's telemetry

prompt tokens400completion tokens10,601
total tokens11,001wall106.5 s
costrequest id
config.json565 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_OPENCODE_KEY",
    "method": "oauth"
  },
  "billing": "plan",
  "config_id": "deepseek-v4-flash--opencode-go--dev",
  "effort": null,
  "family": "deepseek",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "deepseek-v4-flash",
  "protocol": "api",
  "served_model": "deepseek-v4-flash",
  "telemetry": {
    "completion_tokens": 54032,
    "cost_usd": null,
    "prompt_tokens": 1584,
    "total_tokens": 55616,
    "wall_ms": 466465
  },
  "transport": "opencode-go-gateway",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-07-19--go-requeue2",
  "config_id": "deepseek-v4-flash--opencode-go--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-18T19:26:53.168673+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T19:25:17.497686+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-07-18T19:28:44.497682+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T19:26:58.005017+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-07-18T19:31:04.544256+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T19:28:51.242482+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-07-18T19:33:18.942342+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T19:31:07.939377+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
    }
  }
}