mimo-v2.5 · opencode

opencode
config
mimo-v2.5--cli--opencode--dev
batch
2026-07-19--unified
transport
opencode-cli-isolated-xdg-go-subscription
protocol
cli · plan
served model
mimo-v2.5
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
mimo-v2.5 · opencode 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 tempmatchshown: 25.3
  • min tempmatchshown: 16
  • hourlymatchcoverage 24/24 · 24 match · 0 mismatch · 0 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">
<title>Weather Card</title>
<style>
  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
  :root{
    --bg:#0f172a;--card:#1e293b;--card-accent:#334155;
    --text:#f1f5f9;--text-dim:#94a3b8;--text-muted:#64748b;
    --accent:#38bdf8;--accent-glow:rgba(56,189,248,.15);
    --warm:#fb923c;--cool:#38bdf8;--danger:#f87171;
    --radius:20px;--shadow:0 25px 60px -12px rgba(0,0,0,.5);
  }
  html,body{height:100%;width:100%}
  body{
    font-family:'SF Pro Display',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
    background:var(--bg);color:var(--text);
    display:flex;align-items:center;justify-content:center;
    overflow:hidden;
  }
  body::before{
    content:'';position:fixed;inset:0;
    background:radial-gradient(ellipse 80% 60% at 50% -10%,rgba(56,189,248,.08),transparent 70%),
               radial-gradient(ellipse 60% 50% at 80% 90%,rgba(251,146,60,.05),transparent 60%);
    pointer-events:none;z-index:0;
  }

  .card{
    position:relative;z-index:1;
    width:720px;min-height:520px;
    background:var(--card);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    border:1px solid rgba(255,255,255,.06);
    overflow:hidden;
    display:flex;flex-direction:column;
  }

  /* top hero */
  .hero{
    position:relative;padding:40px 44px 32px;
    background:linear-gradient(135deg,rgba(56,189,248,.12) 0%,rgba(251,146,60,.08) 100%);
    border-bottom:1px solid rgba(255,255,255,.06);
  }
  .hero::after{
    content:'';position:absolute;top:-60px;right:-60px;width:200px;height:200px;
    background:radial-gradient(circle,rgba(56,189,248,.15),transparent 70%);
    border-radius:50%;pointer-events:none;
  }
  .location{font-size:28px;font-weight:700;letter-spacing:-.3px;line-height:1.2}
  .date-label{
    font-size:14px;color:var(--text-dim);margin-top:6px;
    font-weight:500;letter-spacing:.3px;text-transform:uppercase;
  }
  .temp-hero{
    display:flex;align-items:flex-end;gap:20px;margin-top:28px;
  }
  .temp-now{font-size:72px;font-weight:200;line-height:1;letter-spacing:-3px}
  .temp-now .unit{font-size:28px;font-weight:400;vertical-align:super;margin-left:2px;color:var(--text-dim)}
  .temp-range{padding-bottom:10px;display:flex;flex-direction:column;gap:4px}
  .temp-range span{font-size:15px;font-weight:500;display:flex;align-items:center;gap:6px}
  .temp-range .hi{color:var(--warm)}
  .temp-range .lo{color:var(--cool)}
  .temp-range svg{width:16px;height:16px;flex-shrink:0}

  /* weather condition */
  .condition{
    display:flex;align-items:center;gap:10px;margin-top:4px;
  }
  .condition-icon{font-size:32px;line-height:1}
  .condition-text{font-size:15px;color:var(--text-dim);font-weight:500}

  /* hourly section */
  .hourly{padding:28px 44px 36px;flex:1;display:flex;flex-direction:column}
  .hourly-title{
    font-size:13px;font-weight:600;text-transform:uppercase;
    letter-spacing:1.2px;color:var(--text-muted);margin-bottom:18px;
  }
  .hourly-scroll{
    display:flex;gap:6px;overflow-x:auto;flex:1;align-items:flex-end;
    padding-bottom:4px;
    scrollbar-width:thin;scrollbar-color:var(--card-accent) transparent;
  }
  .hourly-scroll::-webkit-scrollbar{height:5px}
  .hourly-scroll::-webkit-scrollbar-track{background:transparent}
  .hourly-scroll::-webkit-scrollbar-thumb{background:var(--card-accent);border-radius:3px}
  .hour-col{
    display:flex;flex-direction:column;align-items:center;gap:6px;
    min-width:48px;flex-shrink:0;
  }
  .hour-col .val{font-size:13px;font-weight:600;color:var(--text)}
  .hour-col .bar-wrap{
    width:6px;border-radius:3px;background:var(--card-accent);
    position:relative;overflow:hidden;
    min-height:60px;
  }
  .hour-col .bar{
    position:absolute;bottom:0;left:0;right:0;border-radius:3px;
    background:linear-gradient(to top,var(--cool),var(--warm));
    transition:height .6s cubic-bezier(.22,1,.36,1);
  }
  .hour-col .lbl{font-size:11px;color:var(--text-muted);font-weight:500}

  /* error state */
  .error{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    padding:80px 44px;text-align:center;flex:1;gap:16px;
  }
  .error-icon{font-size:48px;opacity:.6}
  .error-msg{font-size:18px;font-weight:600;color:var(--text-dim)}
  .error-detail{font-size:14px;color:var(--text-muted);max-width:400px;line-height:1.5}

  /* loading */
  .loading{
    display:flex;align-items:center;justify-content:center;flex:1;
    gap:12px;padding:80px 0;
  }
  .spinner{
    width:28px;height:28px;border:3px solid var(--card-accent);
    border-top-color:var(--accent);border-radius:50%;
    animation:spin .8s linear infinite;
  }
  @keyframes spin{to{transform:rotate(360deg)}}
  .loading-text{font-size:15px;color:var(--text-dim);font-weight:500}

  /* WMO weather codes */
  .wmo-icon{font-size:32px;line-height:1}
</style>
</head>
<body>
<div class="card" id="card">
  <div class="loading" id="loading">
    <div class="spinner"></div>
    <span class="loading-text">Loading weather…</span>
  </div>
</div>

<script>
(function(){
  var params=new URLSearchParams(window.location.search);
  var lat=parseFloat(params.get('lat'))||52.52;
  var lon=parseFloat(params.get('lon'))||13.405;
  var name=params.get('name')||'Berlin';
  var dateParam=params.get('date');
  var today=new Date();
  var yyyy=today.getUTCFullYear();
  var mm=String(today.getUTCMonth()+1).padStart(2,'0');
  var dd=String(today.getUTCDate()).padStart(2,'0');
  var todayStr=yyyy+'-'+mm+'-'+dd;
  var date=dateParam||todayStr;

  function isPast(d){return d<todayStr}
  function isToday(d){return d===todayStr}

  var endpoint=isPast(date)?'/api/om/archive':'/api/om/forecast';
  var qs='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;

  var wmoIcons={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:'⛈️'};
  var wmoDesc={0:'Clear sky',1:'Mainly clear',2:'Partly cloudy',3:'Overcast',
    45:'Foggy',48:'Rime fog',51:'Light drizzle',53:'Moderate drizzle',55:'Dense drizzle',
    56:'Freezing drizzle',57:'Heavy freezing drizzle',
    61:'Light rain',63:'Moderate rain',65:'Heavy rain',
    66:'Freezing rain',67:'Heavy freezing rain',
    71:'Light snow',73:'Moderate snow',75:'Heavy snow',77:'Snow grains',
    80:'Light showers',81:'Moderate showers',82:'Violent showers',
    85:'Light snow showers',86:'Heavy snow showers',
    95:'Thunderstorm',96:'Thunderstorm w/ hail',99:'Severe thunderstorm w/ hail'};

  function fmtDate(d){
    var p=d.split('-');
    var dt=new Date(Date.UTC(+p[0],+p[1]-1,+p[2]));
    var days=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
    var months=['January','February','March','April','May','June','July','August','September','October','November','December'];
    return days[dt.getUTCDay()]+', '+months[dt.getUTCMonth()]+' '+dt.getUTCDate()+', '+dt.getUTCFullYear();
  }

  function render(data){
    var card=document.getElementById('card');
    var daily=data.daily;
    var hourly=data.hourly;
    var idx=0;
    var hi=daily.temperature_2m_max[idx];
    var lo=daily.temperature_2m_min[idx];
    var code=daily.weather_code[idx];
    var icon=wmoIcons[code]||'🌡️';
    var desc=wmoDesc[code]||'Unknown';
    var temps=hourly.temperature_2m;

    var tMin=Math.min.apply(null,temps);
    var tMax=Math.max.apply(null,temps);
    var tRange=tMax-tMin||1;

    var hourlyHTML='';
    for(var i=0;i<temps.length;i++){
      var t=temps[i];
      var pct=Math.max(8,((t-tMin)/tRange)*100);
      var h=i;
      var lbl=String(h).padStart(2,'0')+':00';
      hourlyHTML+='<div class="hour-col">'
        +'<span class="val">'+t.toFixed(1)+'°</span>'
        +'<div class="bar-wrap"><div class="bar" style="height:'+pct+'%"></div></div>'
        +'<span class="lbl">'+lbl+'</span>'
        +'</div>';
    }

    card.innerHTML=''
      +'<div class="hero">'
      +  '<div class="location">'+esc(name)+'</div>'
      +  '<div class="date-label">'+fmtDate(date)+(isToday(date)?' — Today':'')+'</div>'
      +  '<div class="temp-hero">'
      +    '<div class="temp-now">'+hi.toFixed(1)+'<span class="unit">°C</span></div>'
      +    '<div class="temp-range">'
      +      '<span class="hi">'
      +        '<svg viewBox="0 0 16 16" fill="none"><path d="M8 3v8M4.5 7.5L8 4l3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>'
      +        'High '+hi.toFixed(1)+'°'
      +      '</span>'
      +      '<span class="lo">'
      +        '<svg viewBox="0 0 16 16" fill="none"><path d="M8 11V3M4.5 6.5L8 10l3.5-3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>'
      +        'Low '+lo.toFixed(1)+'°'
      +      '</span>'
      +    '</div>'
      +  '</div>'
      +  '<div class="condition">'
      +    '<span class="condition-icon">'+icon+'</span>'
      +    '<span class="condition-text">'+desc+'</span>'
      +  '</div>'
      +'</div>'
      +'<div class="hourly">'
      +  '<div class="hourly-title">Hourly Temperature</div>'
      +  '<div class="hourly-scroll">'+hourlyHTML+'</div>'
      +'</div>';

    // animate bars
    requestAnimationFrame(function(){
      var bars=card.querySelectorAll('.bar');
      bars.forEach(function(b){
        var h=b.style.height;b.style.height='0%';
        requestAnimationFrame(function(){b.style.height=h});
      });
    });
  }

  function showError(msg,detail){
    var card=document.getElementById('card');
    card.innerHTML=''
      +'<div class="error">'
      +  '<div class="error-icon">⚠️</div>'
      +  '<div class="error-msg">'+esc(msg)+'</div>'
      +  '<div class="error-detail">'+esc(detail||'')+'</div>'
      +'</div>';
  }

  function esc(s){return s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')}

  fetch(endpoint+'?'+qs)
    .then(function(r){
      if(!r.ok)throw new Error('HTTP '+r.status);
      return r.json();
    })
    .then(function(data){
      if(data.error)throw new Error(data.reason||'API error');
      render(data);
    })
    .catch(function(e){
      showError('Unable to load weather data',
        'Could not fetch weather for '+esc(name)+' on '+date+'. '+esc(e.message));
    });
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total10,786html / css / js371 / 4,772 / 5,643
dom nodes12dom depth5
css rules42js presentyes
brightness33.7contrast16.2
colorfulness13.7whitespace79.8%

This slot's telemetry

prompt tokens0completion tokens0
total tokens0wall45.5 s
costrequest id
config.json565 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_OPENCODE_KEY",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "mimo-v2.5--cli--opencode--dev",
  "effort": null,
  "family": "mimo",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "mimo-v2.5",
  "protocol": "cli",
  "served_model": "mimo-v2.5",
  "telemetry": {
    "completion_tokens": null,
    "cost_usd": null,
    "prompt_tokens": null,
    "total_tokens": null,
    "wall_ms": 157483
  },
  "transport": "opencode-cli-isolated-xdg-go-subscription",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-07-20--refill2-oc-mimo-v2.5",
  "config_id": "mimo-v2.5--cli--opencode--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-20T10:57:07.036246+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T10:56:21.494340+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-20T10:57:27.334333+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T10:57:11.566062+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-20T10:57:49.990713+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T10:57:31.044165+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-07-20T10:59:11.095795+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T10:57:53.865350+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
    }
  }
}