mimo-v2.5-pro · go

go
config
mimo-v2.5-pro--opencode-go--dev
batch
2026-07-19--unified
transport
opencode-go-gateway
protocol
api · plan
served model
mimo-v2.5-pro
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
mimo-v2.5-pro · 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,height=800">
<title>Weather Card</title>
<style>
  *{margin:0;padding:0;box-sizing:border-box}
  body{
    width:1280px;height:800px;
    font-family:'Segoe UI',system-ui,-apple-system,sans-serif;
    background:linear-gradient(135deg,#0f0c29,#302b63,#24243e);
    display:flex;align-items:center;justify-content:center;
    color:#fff;overflow:hidden;
  }
  .card{
    width:820px;min-height:520px;
    background:rgba(255,255,255,0.07);
    backdrop-filter:blur(24px);
    border:1px solid rgba(255,255,255,0.12);
    border-radius:28px;
    padding:48px 52px;
    box-shadow:0 32px 64px rgba(0,0,0,0.35),inset 0 1px 0 rgba(255,255,255,0.08);
    position:relative;
    overflow:hidden;
    animation:fadeUp .7s cubic-bezier(.22,1,.36,1) both;
  }
  @keyframes fadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
  .card::before{
    content:'';position:absolute;top:-80px;right:-80px;
    width:280px;height:280px;
    background:radial-gradient(circle,rgba(139,92,246,0.25),transparent 70%);
    pointer-events:none;
  }
  .card::after{
    content:'';position:absolute;bottom:-60px;left:-60px;
    width:220px;height:220px;
    background:radial-gradient(circle,rgba(56,189,248,0.18),transparent 70%);
    pointer-events:none;
  }
  .error-card{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    min-height:300px;text-align:center;
  }
  .error-card .error-icon{font-size:64px;margin-bottom:20px;opacity:.7}
  .error-card h2{font-size:22px;font-weight:600;margin-bottom:8px}
  .error-card p{font-size:15px;color:rgba(255,255,255,0.55)}
  .header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:10px;position:relative;z-index:1}
  .location{font-size:32px;font-weight:700;letter-spacing:-.5px}
  .date-display{
    font-size:15px;color:rgba(255,255,255,0.55);margin-top:4px;
    font-weight:400;letter-spacing:.3px;
  }
  .weather-icon-block{text-align:center;position:relative;z-index:1}
  .weather-emoji{font-size:80px;line-height:1;filter:drop-shadow(0 8px 24px rgba(0,0,0,0.3))}
  .weather-desc{
    font-size:15px;color:rgba(255,255,255,0.6);margin-top:8px;
    font-weight:500;text-transform:capitalize;letter-spacing:.2px;
  }
  .temp-section{
    display:flex;align-items:flex-end;gap:40px;
    margin:28px 0 12px;position:relative;z-index:1;
  }
  .temp-block{text-align:center}
  .temp-label{font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:rgba(255,255,255,0.4);margin-bottom:6px;font-weight:600}
  .temp-value{font-size:56px;font-weight:300;letter-spacing:-2px;line-height:1}
  .temp-unit{font-size:20px;vertical-align:super;font-weight:400;color:rgba(255,255,255,0.5)}
  .temp-max .temp-value{color:#fbbf24}
  .temp-min .temp-value{color:#60a5fa}
  .divider{
    width:1px;height:70px;
    background:linear-gradient(180deg,transparent,rgba(255,255,255,0.15),transparent);
    align-self:center;
  }
  .current-temp-block .temp-value{font-size:72px;font-weight:200}
  .hourly-section{margin-top:24px;position:relative;z-index:1}
  .hourly-title{
    font-size:13px;text-transform:uppercase;letter-spacing:1.8px;
    color:rgba(255,255,255,0.35);margin-bottom:16px;font-weight:600;
  }
  .hourly-scroll{
    display:flex;gap:8px;
    overflow-x:auto;padding-bottom:8px;
    scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.15) transparent;
  }
  .hourly-scroll::-webkit-scrollbar{height:4px}
  .hourly-scroll::-webkit-scrollbar-track{background:transparent}
  .hourly-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:2px}
  .hour-item{
    flex-shrink:0;
    background:rgba(255,255,255,0.04);
    border:1px solid rgba(255,255,255,0.06);
    border-radius:14px;
    padding:14px 16px;
    text-align:center;
    min-width:72px;
    transition:background .2s,border-color .2s,transform .2s;
    cursor:default;
  }
  .hour-item:hover{
    background:rgba(255,255,255,0.1);
    border-color:rgba(255,255,255,0.15);
    transform:translateY(-2px);
  }
  .hour-time{font-size:12px;color:rgba(255,255,255,0.4);margin-bottom:8px;font-weight:600;letter-spacing:.3px}
  .hour-temp{font-size:18px;font-weight:600;letter-spacing:-.3px}
  .hour-bar-wrap{margin-top:8px;height:4px;border-radius:2px;background:rgba(255,255,255,0.06);overflow:hidden}
  .hour-bar{height:100%;border-radius:2px;transition:width .6s cubic-bezier(.22,1,.36,1)}
  .loading{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    min-height:300px;
  }
  .spinner{
    width:48px;height:48px;
    border:3px solid rgba(255,255,255,0.1);
    border-top-color:rgba(139,92,246,0.8);
    border-radius:50%;
    animation:spin .8s linear infinite;
    margin-bottom:20px;
  }
  @keyframes spin{to{transform:rotate(360deg)}}
  .loading p{color:rgba(255,255,255,0.4);font-size:14px;font-weight:500}
</style>
</head>
<body>
<div class="card" id="card">
  <div class="loading" id="loading">
    <div class="spinner"></div>
    <p>Fetching weather data…</p>
  </div>
</div>

<script>
(function(){
  const params = new URLSearchParams(location.search);
  const lat = params.get('lat') || 52.52;
  const lon = params.get('lon') || 13.405;
  const name = params.get('name') || 'Berlin';
  const now = new Date();
  const todayUTC = now.toISOString().slice(0,10);
  const dateStr = params.get('date') || todayUTC;

  const dateObj = new Date(dateStr + 'T12:00:00Z');
  const isPast = dateObj < new Date(todayUTC + 'T00:00:00Z');
  const endpoint = isPast ? '/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
  });

  const url = endpoint + '?' + qs.toString();

  const weatherCodes = {
    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 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'
  };
  const weatherIcons = {
    0:'☀️',1:'🌤️',2:'⛅',3:'☁️',
    45:'🌫️',48:'🌫️',
    51:'🌦️',53:'🌧️',55:'🌧️',
    56:'🌧️',57:'🌧️',
    61:'🌧️',63:'🌧️',65:'🌧️',
    66:'🌧️',67:'🌧️',
    71:'🌨️',73:'🌨️',75:'❄️',
    77:'🌨️',
    80:'🌦️',81:'🌧️',82:'🌧️',
    85:'🌨️',86:'❄️',
    95:'⛈️',96:'⛈️',99:'⛈️'
  };

  function formatDisplayDate(ds){
    const d = new Date(ds+'T12:00:00Z');
    return d.toLocaleDateString('en-US',{weekday:'long',year:'numeric',month:'long',day:'numeric',timeZone:'UTC'});
  }

  function showError(msg){
    document.getElementById('card').innerHTML=
      '<div class="error-card"><div class="error-icon">⚠️</div><h2>Weather Data Unavailable</h2><p>'+msg+'</p></div>';
  }

  fetch(url).then(function(r){
    if(!r.ok) throw new Error('API returned '+r.status);
    return r.json();
  }).then(function(data){
    const card = document.getElementById('card');
    const daily = data.daily;
    const hourly = data.hourly;

    if(!daily || !daily.time || daily.time.length===0) throw new Error('No daily data');

    const maxT = daily.temperature_2m_max[0];
    const minT = daily.temperature_2m_min[0];
    const wmo = daily.weather_code[0];
    const desc = weatherCodes[wmo] || 'Unknown';
    const icon = weatherIcons[wmo] || '🌡️';

    let currentTemp = null;
    if(hourly && hourly.temperature_2m){
      const hourTimes = hourly.time;
      const hourTemps = hourly.temperature_2m;
      // find closest hour to now if today
      let bestIdx = 0;
      if(dateStr === todayUTC){
        const nowHour = now.getUTCHours();
        let bestDiff = 99;
        for(let i=0;i<hourTimes.length;i++){
          const h = parseInt(hourTimes[i].slice(11,13));
          if(Math.abs(h-nowHour)<bestDiff){bestDiff=Math.abs(h-nowHour);bestIdx=i;}
        }
      }
      currentTemp = hourTemps[bestIdx];
    }

    // Build hourly items
    let hourlyHTML = '';
    if(hourly && hourly.time){
      const tArr = hourly.temperature_2m;
      const allTemps = tArr.filter(function(v){return v!==null});
      const tMin = Math.min.apply(null, allTemps);
      const tMax = Math.max.apply(null, allTemps);
      const tRange = tMax - tMin || 1;

      for(let i=0;i<hourly.time.length;i++){
        const t = hourly.time[i];
        const h = t.slice(11,16);
        const temp = tArr[i];
        if(temp===null||temp===undefined) continue;
        const pct = ((temp - tMin)/tRange)*100;
        const barColor = temp >= (tMin+tMax)/2
          ? 'linear-gradient(90deg,#f59e0b,#ef4444)'
          : 'linear-gradient(90deg,#3b82f6,#6366f1)';
        hourlyHTML +=
          '<div class="hour-item">' +
            '<div class="hour-time">'+h+'</div>' +
            '<div class="hour-temp">'+Math.round(temp)+'°</div>' +
            '<div class="hour-bar-wrap"><div class="hour-bar" style="width:'+pct+'%;background:'+barColor+'"></div></div>' +
          '</div>';
      }
    }

    let mainTempBlock = '';
    if(currentTemp!==null){
      mainTempBlock =
        '<div class="temp-block current-temp-block">' +
          '<div class="temp-label">Now</div>' +
          '<div class="temp-value">'+Math.round(currentTemp)+'<span class="temp-unit">°C</span></div>' +
        '</div>' +
        '<div class="divider"></div>';
    }

    card.innerHTML =
      '<div class="header">' +
        '<div>' +
          '<div class="location">'+name+'</div>' +
          '<div class="date-display">'+formatDisplayDate(dateStr)+'</div>' +
        '</div>' +
        '<div class="weather-icon-block">' +
          '<div class="weather-emoji">'+icon+'</div>' +
          '<div class="weather-desc">'+desc+'</div>' +
        '</div>' +
      '</div>' +
      '<div class="temp-section">' +
        mainTempBlock +
        '<div class="temp-block temp-max">' +
          '<div class="temp-label">High</div>' +
          '<div class="temp-value">'+Math.round(maxT)+'<span class="temp-unit">°C</span></div>' +
        '</div>' +
        '<div class="divider"></div>' +
        '<div class="temp-block temp-min">' +
          '<div class="temp-label">Low</div>' +
          '<div class="temp-value">'+Math.round(minT)+'<span class="temp-unit">°C</span></div>' +
        '</div>' +
      '</div>' +
      '<div class="hourly-section">' +
        '<div class="hourly-title">Hourly Temperatures</div>' +
        '<div class="hourly-scroll">'+hourlyHTML+'</div>' +
      '</div>';
  }).catch(function(err){
    showError(err.message || 'Could not load weather data.');
  });
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total11,304html / css / js361 / 4,807 / 6,136
dom nodes12dom depth5
css rules44js presentyes
brightness50.7contrast18.3
colorfulness22.0whitespace79.7%

This slot's telemetry

prompt tokens566completion tokens3,840
total tokens4,406wall48.5 s
costrequest id
config.json549 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_OPENCODE_KEY",
    "method": "oauth"
  },
  "billing": "plan",
  "config_id": "mimo-v2.5-pro--opencode-go--dev",
  "effort": null,
  "family": "mimo",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "mimo-v2.5-pro",
  "protocol": "api",
  "served_model": "mimo-v2.5-pro",
  "telemetry": {
    "completion_tokens": 16074,
    "cost_usd": null,
    "prompt_tokens": 2248,
    "total_tokens": 18322,
    "wall_ms": 204289
  },
  "transport": "opencode-go-gateway",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-07-19--go-requeue2",
  "config_id": "mimo-v2.5-pro--opencode-go--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-18T20:48:15.339038+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:47:10.982152+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-18T20:49:07.523757+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:48:18.985706+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-18T20:50:09.907511+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:49:11.428769+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-18T20:50:46.518973+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:50:13.603776+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
    }
  }
}