ox-alpha-free · opencode

opencode
config
ox-alpha-free--cli--opencode--dev
batch
2026-07-19--unified
transport
opencode-cli-isolated-xdg-go-subscription
protocol
cli · plan
served model
ox-alpha-free
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
ox-alpha-free · 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 neighborsNo similarity data for this session — this batch has no computed pairs.

Fidelity — does the card show the right data?

  • namematch
  • conditionmatch
  • datematch
  • max tempmismatchshown: 17
  • min tempmatchshown: 16
  • 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
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Weather</title>
<link rel="icon" href="data:,">
<style>
  :root{
    --g1:#3f5470; --g2:#6b83a3; --accent:#bcd7f5; --icon-c:#eef3f8;
    color-scheme:dark;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{
    font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    background:linear-gradient(168deg,var(--g1) 0%,var(--g2) 100%);
    min-height:100vh;display:grid;place-items:center;
    color:#fff;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
    overflow-x:hidden;position:relative;
  }
  .blob{position:fixed;border-radius:50%;filter:blur(70px);pointer-events:none;z-index:0}
  .b1{width:520px;height:520px;top:-160px;left:-120px;background:radial-gradient(closest-side,var(--accent),transparent 70%);opacity:.22}
  .b2{width:460px;height:460px;bottom:-150px;right:-100px;background:radial-gradient(closest-side,var(--accent),transparent 70%);opacity:.16}
  .card{
    position:relative;z-index:1;width:min(720px,calc(100vw - 48px));
    background:rgba(9,16,31,.44);
    border:1px solid rgba(255,255,255,.14);
    border-radius:28px;padding:42px 46px 36px;
    backdrop-filter:blur(26px) saturate(150%);
    -webkit-backdrop-filter:blur(26px) saturate(150%);
    box-shadow:0 34px 70px -24px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.08);
    animation:rise .7s cubic-bezier(.22,.8,.3,1) both;
  }
  @keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
  .hidden{display:none!important}
  .state{min-height:340px;display:grid;place-content:center;justify-items:center;gap:16px;text-align:center}
  .ring{width:36px;height:36px;border-radius:50%;border:3px solid rgba(255,255,255,.22);border-top-color:#fff;animation:spin 1s linear infinite}
  @keyframes spin{to{transform:rotate(360deg)}}
  #loading p,#error .hint{font-size:14px;color:rgba(255,255,255,.65)}
  #error h2{font-size:21px;font-weight:600;letter-spacing:-.2px}
  #error svg{color:rgba(255,255,255,.85)}
  #retry{
    margin-top:6px;font:inherit;font-size:14px;font-weight:500;color:#fff;cursor:pointer;
    padding:10px 26px;border-radius:999px;border:1px solid rgba(255,255,255,.35);
    background:rgba(255,255,255,.08);transition:background .2s,border-color .2s;
  }
  #retry:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.5)}
  #retry:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
  h1{font-size:34px;font-weight:650;letter-spacing:-.5px;line-height:1.1}
  .sub{margin-top:8px;font-size:15px;color:rgba(255,255,255,.62)}
  .sub .cond{color:rgba(255,255,255,.94);font-weight:550}
  .icon{color:var(--icon-c);flex-shrink:0;margin-top:2px;filter:drop-shadow(0 8px 18px rgba(0,0,0,.28))}
  .rule{border:none;border-top:1px solid rgba(255,255,255,.13);margin:28px 0 26px}
  .hero{display:flex;align-items:flex-end;margin-bottom:32px}
  .cell .cap{margin-bottom:10px}
  .cap{font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.52)}
  .num{display:flex;align-items:flex-start;font-weight:200;line-height:.92}
  .num.big{font-size:96px;letter-spacing:-3.5px}
  .num.small{font-size:46px;letter-spacing:-1.5px;color:rgba(255,255,255,.88)}
  .unit{font-size:19px;font-weight:450;color:rgba(255,255,255,.68);margin-left:7px;letter-spacing:0}
  .num.small .unit{font-size:14px;margin-top:4px}
  .vr{width:1px;height:66px;background:rgba(255,255,255,.18);margin:0 36px 6px}
  .hours .cap{margin-bottom:12px}
  #chart{display:block;width:100%;height:auto;aspect-ratio:600/176;font-family:inherit;overflow:visible}
  #chart .tl{font-size:12px;font-weight:600;fill:#fff}
  #chart .hl{font-size:10.5px;fill:rgba(255,255,255,.55);letter-spacing:.4px}
  .foot{margin-top:14px;text-align:right;font-size:11px;letter-spacing:.06em;color:rgba(255,255,255,.38)}
  @media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
</style>
</head>
<body>
<div class="blob b1"></div>
<div class="blob b2"></div>

<main class="card">
  <section id="loading" class="state">
    <div class="ring"></div>
    <p>Loading weather…</p>
  </section>

  <section id="error" class="state hidden">
    <svg width="44" height="44" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
    <h2>Unable to load weather data</h2>
    <p class="hint" id="errmsg"></p>
    <button id="retry" type="button">Try again</button>
  </section>

  <section id="view" class="hidden">
    <header class="head">
      <div>
        <h1 id="loc"></h1>
        <p class="sub"><span id="date"></span> · <span class="cond" id="cond"></span></p>
      </div>
      <div class="icon" id="icon"></div>
    </header>

    <hr class="rule">

    <div class="hero">
      <div class="cell">
        <div class="cap">High</div>
        <div class="num big"><span id="hi"></span><span class="unit">°C</span></div>
      </div>
      <div class="vr"></div>
      <div class="cell">
        <div class="cap">Low</div>
        <div class="num small"><span id="lo"></span><span class="unit">°C</span></div>
      </div>
    </div>

    <div class="hours">
      <div class="cap">Hourly temperature</div>
      <svg id="chart" viewBox="0 0 600 176" preserveAspectRatio="xMidYMid meet" aria-label="Hourly temperatures"></svg>
      <div class="foot">UTC · Open-Meteo</div>
    </div>
  </section>
</main>

<script>
(function(){
  "use strict";
  var $=function(s){return document.querySelector(s)};
  var params=new URLSearchParams(location.search);

  function pval(k,d){var v=params.get(k);return v===null||v.trim()===""?d:v.trim()}
  function todayUTC(){return new Date().toISOString().slice(0,10)}

  var latRaw=pval("lat","52.52"),lonRaw=pval("lon","13.405");
  var lat=parseFloat(latRaw),lon=parseFloat(lonRaw);
  if(isNaN(lat))lat=52.52; if(isNaN(lon))lon=13.405;
  var place=pval("name","Berlin");
  var dateStr=pval("date",todayUTC());
  if(!/^\d{4}-\d{2}-\d{2}$/.test(dateStr)||isNaN(Date.parse(dateStr+"T00:00:00Z")))dateStr=todayUTC();

  document.title=place+" — Weather";

  var WMO={
    0:["Clear sky","sun"],1:["Mainly clear","partly"],2:["Partly cloudy","partly"],3:["Overcast","cloud"],
    45:["Fog","fog"],48:["Depositing rime fog","fog"],
    51:["Light drizzle","drizzle"],53:["Drizzle","drizzle"],55:["Dense drizzle","drizzle"],
    56:["Light freezing drizzle","drizzle"],57:["Freezing drizzle","drizzle"],
    61:["Slight rain","rain"],63:["Rain","rain"],65:["Heavy rain","rain"],
    66:["Light freezing rain","rain"],67:["Freezing rain","rain"],
    71:["Slight snowfall","snow"],73:["Snowfall","snow"],75:["Heavy snowfall","snow"],77:["Snow grains","snow"],
    80:["Slight rain showers","rain"],81:["Rain showers","rain"],82:["Violent rain showers","rain"],
    85:["Slight snow showers","snow"],86:["Heavy snow showers","snow"],
    95:["Thunderstorm","thunder"],96:["Thunderstorm with hail","thunder"],99:["Severe thunderstorm with hail","thunder"]
  };

  var THEMES={
    sun:{g:["#1a6bb8","#4aa8e0"],a:"#ffd166",i:"#ffdf8f"},
    partly:{g:["#2a6da6","#5b9bd5"],a:"#ffe08a",i:"#ffedb8"},
    cloud:{g:["#54677d","#8395a9"],a:"#e8eef4",i:"#f2f6fa"},
    fog:{g:["#5d6b78","#93a1ad"],a:"#e5eaee",i:"#eef2f5"},
    drizzle:{g:["#3f5470","#6b83a3"],a:"#bcd7f5",i:"#dcebfa"},
    rain:{g:["#2c3e57","#506b8c"],a:"#a9cdf2",i:"#d5e7f8"},
    snow:{g:["#5f7a96","#9db4c9"],a:"#eaf3fb",i:"#f4f9fd"},
    thunder:{g:["#3b2f63","#6b5ca5"],a:"#ffe066",i:"#ffe58f"}
  };

  function svg(inner,s,vb){
    return '<svg width="'+s+'" height="'+s+'" viewBox="'+(vb||"0 0 24 24")+'" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">'+inner+"</svg>";
  }

  var ICONS={
    sun:function(s){return svg('<circle cx="12" cy="12" r="4.6"/><path d="M12 2.4v2.3M12 19.3v2.3M2.4 12h2.3M19.3 12h2.3M5.2 5.2l1.7 1.7M17.1 17.1l1.7 1.7M18.8 5.2l-1.7 1.7M6.9 17.1l-1.7 1.7"/>',s)},
    partly:function(s){return svg('<circle cx="7" cy="6.5" r="3.6"/><path d="M7 1.7V.5M1.7 6.5H.5M3.4 2.9l-.9-.9M3.4 10.1l-.9.9"/><path d="M18.6 20.5H10a5.2 5.2 0 1 1 4.98-6.69h1.33a3.87 3.87 0 1 1 0 7.74z" transform="translate(2.6 2.4) scale(0.82)"/>',s)},
    cloud:function(s){return svg('<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',s)},
    fog:function(s){return svg('<path d="M17.5 15H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z" transform="translate(0.6 -3.4) scale(0.94)"/><path d="M4.5 18h15M7.5 21.4h9"/>',s)},
    drizzle:function(s){return svg('<path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"/><path d="M8 19v1.6M8 13.6v1.6M16 19v1.6M16 13.6v1.6M12 21v1.6M12 15.6v1.6"/>',s)},
    rain:function(s){return svg('<path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"/><path d="M16 13.5v6M8 13.5v6M12 15.5v6"/>',s)},
    snow:function(s){return svg('<path d="M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25"/><path stroke-width="2.2" d="M8 16h.01M8 20h.01M12 18h.01M12 22h.01M16 16h.01M16 20h.01"/>',s)},
    thunder:function(s){return svg('<path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9"/><polyline points="13 11 9 17 15 17 11 23"/>',s)}
  };

  function applyTheme(g){
    var t=THEMES[g]||THEMES.cloud,r=document.documentElement.style;
    r.setProperty("--g1",t.g[0]);r.setProperty("--g2",t.g[1]);
    r.setProperty("--accent",t.a);r.setProperty("--icon-c",t.i);
  }

  function fmtDate(ds){
    var d=new Date(ds+"T00:00:00Z");
    var s=d.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric",timeZone:"UTC"});
    var diff=Math.round((d-new Date(todayUTC()+"T00:00:00Z"))/864e5);
    if(diff===0)s+=" · Today";else if(diff===1)s+=" · Tomorrow";else if(diff===-1)s+=" · Yesterday";
    return s;
  }

  function smooth(P){
    if(P.length<2)return"";
    var d="M "+P[0][0]+","+P[0][1];
    for(var i=0;i<P.length-1;i++){
      var p0=P[Math.max(0,i-1)],p1=P[i],p2=P[i+1],p3=P[Math.min(P.length-1,i+2)];
      d+=" C "+(p1[0]+(p2[0]-p0[0])/6).toFixed(2)+","+(p1[1]+(p2[1]-p0[1])/6).toFixed(2)
        +" "+(p2[0]-(p3[0]-p1[0])/6).toFixed(2)+","+(p2[1]-(p3[1]-p1[1])/6).toFixed(2)
        +" "+p2[0].toFixed(2)+","+p2[1].toFixed(2);
    }
    return d;
  }

  function buildChart(hours,temps){
    var W=600,H=176,L=16,R=16,T=30,B=34,n=hours.length;
    var mn=Math.min.apply(null,temps),mx=Math.max.apply(null,temps),span=(mx-mn)||1;
    function X(i){return L+i*(W-L-R)/Math.max(n-1,1)}
    function Y(v){return T+(1-(v-mn)/span)*(H-T-B)}
    var P=temps.map(function(v,i){return[X(i),Y(v)]});
    var line=smooth(P),out="";
    if(line){
      var base=H-B+8;
      out+='<path d="'+line+" L "+P[n-1][0].toFixed(2)+" "+base+" L "+P[0][0].toFixed(2)+" "+base+' Z" fill="url(#ag)"/>';
      out+='<path d="'+line+'" fill="none" stroke="var(--accent)" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" style="filter:drop-shadow(0 6px 10px rgba(0,0,0,.28))"/>';
    }
    var marks="";
    for(var i=0;i<n;i++){
      var x=P[i][0].toFixed(2),y=P[i][1].toFixed(2);
      if(i%3===0){
        marks+='<circle cx="'+x+'" cy="'+y+'" r="3.4" fill="var(--accent)" stroke="rgba(9,16,31,.6)" stroke-width="1.5"/>';
        marks+='<text x="'+x+'" y="'+(P[i][1]-11).toFixed(2)+'" text-anchor="middle" class="tl">'+Math.round(temps[i])+"°</text>";
        marks+='<text x="'+x+'" y="'+(H-10)+'" text-anchor="middle" class="hl">'+String(parseInt(hours[i],10))+"</text>";
      }else{
        marks+='<circle cx="'+x+'" cy="'+y+'" r="2" fill="rgba(255,255,255,.5)"/>';
      }
    }
    return '<defs><linearGradient id="ag" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="var(--accent)" stop-opacity=".3"/><stop offset="1" stop-color="var(--accent)" stop-opacity="0"/></linearGradient></defs>'+out+marks;
  }

  function show(id){
    ["loading","error","view"].forEach(function(s){
      $("#"+s).classList.toggle("hidden",s!==id);
    });
  }

  function fail(msg){
    $("#errmsg").textContent=msg;
    show("error");
  }

  function load(){
    show("loading");
    var today=todayUTC();
    var base=dateStr<today?"/api/om/archive":"/api/om/forecast";
    var url=base+"?latitude="+encodeURIComponent(lat)+"&longitude="+encodeURIComponent(lon)
      +"&daily=temperature_2m_max,temperature_2m_min,weather_code"
      +"&hourly=temperature_2m&timezone=UTC&temperature_unit=celsius"
      +"&start_date="+dateStr+"&end_date="+dateStr;

    var ctl=new AbortController();
    var timer=setTimeout(function(){ctl.abort()},12000);

    fetch(url,{signal:ctl.signal}).then(function(res){
      clearTimeout(timer);
      if(!res.ok)throw new Error("Service responded with HTTP "+res.status);
      return res.json();
    }).then(function(data){
      var d=data&&data.daily,h=data&&data.hourly;
      if(!d||!d.time||!d.time.length||!h||!h.time||!h.temperature_2m||h.time.length!==h.temperature_2m.length){
        throw new Error("The service returned incomplete data for this date.");
      }
      var tmax=d.temperature_2m_max[0],tmin=d.temperature_2m_min[0],code=d.weather_code[0];
      if(tmax==null||tmin==null||code==null){
        throw new Error("No weather records available for this date.");
      }
      var info=WMO[code]||["Unknown conditions","cloud"];
      applyTheme(info[1]);

      $("#loc").textContent=place;
      $("#date").textContent=fmtDate(dateStr);
      $("#cond").textContent=info[0];
      $("#hi").textContent=Math.round(tmax);
      $("#lo").textContent=Math.round(tmin);
      $("#icon").innerHTML=ICONS[info[1]](104);

      var hours=[],temps=[];
      for(var i=0;i<h.time.length;i++){
        if(typeof h.time[i]==="string"&&h.time[i].indexOf(dateStr)===0){
          hours.push(h.time[i].slice(11,13));
          temps.push(h.temperature_2m[i]);
        }
      }
      if(!hours.length)throw new Error("No hourly data available for this date.");
      $("#chart").innerHTML=buildChart(hours,temps);
      show("view");
    }).catch(function(err){
      clearTimeout(timer);
      var msg=err&&err.name==="AbortError"?"The request timed out.":(err&&err.message?err.message:"Network error.");
      fail(msg);
    });
  }

  $("#retry").addEventListener("click",load);
  load();
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total14,688html / css / js1,922 / 4,006 / 8,760
dom nodes48dom depth8
css rules44js presentyes
brightness88.6contrast20.7
colorfulness17.2whitespace37.7%

This slot's telemetry

prompt tokens0completion tokens0
total tokens0wall395.1 s
costrequest id
config.json576 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_OPENCODE_KEY",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "ox-alpha-free--cli--opencode--dev",
  "effort": null,
  "family": "glm",
  "m": {
    "min": 1,
    "q": 1
  },
  "model_id": "ox-alpha-free",
  "protocol": "cli",
  "served_model": "ox-alpha-free",
  "telemetry": {
    "completion_tokens": null,
    "cost_usd": null,
    "prompt_tokens": null,
    "total_tokens": null,
    "wall_ms": 760948
  },
  "transport": "opencode-cli-isolated-xdg-go-subscription",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-22--opencode-cli-new",
  "config_id": "ox-alpha-free--cli--opencode--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-21T14:44:38.651518+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T14:38:03.577382+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-21T14:50:49.325901+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T14:44:43.443596+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-21T14:55:00.259598+00:00",
          "http_status": null,
          "outcome": "infra-failed",
          "reached_model": true,
          "reason": "mid-stream-death",
          "request_id": null,
          "started_at": "2026-08-21T14:50:52.884301+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "infra-failed",
      "variant": "P-min"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-21T14:59:01.901026+00:00",
          "http_status": null,
          "outcome": "infra-failed",
          "reached_model": true,
          "reason": "mid-stream-death",
          "request_id": null,
          "started_at": "2026-08-21T14:55:00.356215+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "infra-failed",
      "variant": "P-q"
    }
  ],
  "retry_policy": {
    "max_unreachable_retries": 5,
    "rate_limit_backoff": {
      "max_attempts": 4,
      "max_total_ms": 60000
    }
  }
}