kimi-k3 · opencode
opencode
- config
- kimi-k3--cli--opencode--dev
- batch
- 2026-07-19--unified
- transport
- opencode-cli-isolated-xdg-go-subscription
- protocol
- cli · plan
- served model
- kimi-k3
- captured
- Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe

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
nearest
claude-opus-4-8 @xhigh · kiro0.67kimi-k3 @high · api0.67claude-sonnet-4-6 @max · kiro0.66claude-fable-5 @max · CC0.64claude-fable-5 @xhigh · CC0.64farthest
gpt-5.5 @low · codex-oauth0.39claude-fable-5 @low · CC0.41qwen3.5-plus · go0.42gpt-5.6-terra @xhigh · kiro0.42kimi-k3 @disabled · api0.44within 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
- 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=device-width, initial-scale=1">
<title>Weather Card</title>
<style>
:root{
--c1:#2b6cb0;
--c2:#63b3ed;
--c3:#f6d365;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
color:#fff;
min-height:100vh;
display:grid;
place-items:center;
padding:40px;
background:linear-gradient(155deg,var(--c1) 0%,var(--c2) 55%,var(--c3) 125%);
transition:background .8s ease;
}
body::before{
content:"";
position:fixed;inset:0;pointer-events:none;
background:
radial-gradient(1100px 620px at 18% -12%, rgba(255,255,255,.28), transparent 62%),
radial-gradient(900px 540px at 92% 112%, rgba(8,22,44,.34), transparent 62%);
}
body::after{
content:"";
position:fixed;inset:0;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}
.card{
position:relative;z-index:1;
width:min(940px,94vw);
background:linear-gradient(180deg,rgba(255,255,255,.17),rgba(255,255,255,.08));
border:1px solid rgba(255,255,255,.26);
border-radius:30px;
box-shadow:0 30px 80px rgba(10,25,47,.35), inset 0 1px 0 rgba(255,255,255,.35);
backdrop-filter:blur(22px) saturate(1.35);
-webkit-backdrop-filter:blur(22px) saturate(1.35);
padding:34px 40px 24px;
}
.head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.loc{display:flex;align-items:center;gap:10px;font-size:27px;font-weight:650;letter-spacing:.2px}
.loc svg{width:23px;height:23px;opacity:.9;flex:0 0 auto}
.badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.24);border:1px solid rgba(255,255,255,.35)}
.datebox{text-align:right;font-size:14px;line-height:1.5;opacity:.9}
.datebox .d1{font-weight:600}
.datebox .d2{font-size:12px;opacity:.7;font-variant-numeric:tabular-nums}
.main{display:flex;align-items:center;gap:38px;margin-top:24px}
.wicon{width:132px;height:132px;flex:0 0 auto;filter:drop-shadow(0 12px 26px rgba(0,0,0,.28))}
.wicon svg{width:100%;height:100%}
.bigtemp{font-size:102px;font-weight:250;line-height:.95;letter-spacing:-3px;font-variant-numeric:tabular-nums}
.bigtemp sup{font-size:42px;font-weight:300;letter-spacing:0}
.cond{font-size:20px;font-weight:550;opacity:.95;margin-top:8px}
.divider{width:1px;align-self:stretch;background:linear-gradient(180deg,transparent,rgba(255,255,255,.38),transparent)}
.stats{display:flex;flex-direction:column;gap:15px;min-width:178px}
.stat{display:flex;align-items:center;gap:12px}
.stat .ic{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border-radius:10px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.18)}
.stat .ic svg{width:17px;height:17px}
.stat .t{font-size:11px;text-transform:uppercase;letter-spacing:.11em;opacity:.7}
.stat .v{font-size:19px;font-weight:650;font-variant-numeric:tabular-nums}
.hourly{margin-top:28px;padding-top:20px;border-top:1px solid rgba(255,255,255,.17)}
.hourly h2{font-size:12.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;opacity:.72;margin-bottom:4px}
.chart{width:100%;height:auto;display:block}
.strip{display:flex;gap:8px;overflow-x:auto;padding:12px 2px 4px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.35) transparent}
.strip::-webkit-scrollbar{height:6px}
.strip::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3);border-radius:3px}
.strip::-webkit-scrollbar-track{background:transparent}
.chip{flex:0 0 auto;min-width:62px;text-align:center;padding:9px 6px;border-radius:14px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13)}
.chip.now{background:rgba(255,255,255,.25);border-color:rgba(255,255,255,.55);box-shadow:0 4px 14px rgba(10,25,47,.25)}
.chip .h{font-size:11px;opacity:.72;font-variant-numeric:tabular-nums}
.chip .t{font-size:15px;font-weight:650;margin-top:3px;font-variant-numeric:tabular-nums}
.foot{margin-top:14px;font-size:11.5px;opacity:.62;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.sk{border-radius:14px;background:linear-gradient(100deg,rgba(255,255,255,.10) 40%,rgba(255,255,255,.24) 50%,rgba(255,255,255,.10) 60%);background-size:200% 100%;animation:sh 1.4s infinite linear}
@keyframes sh{to{background-position:-200% 0}}
.error{display:flex;flex-direction:column;align-items:center;text-align:center;padding:48px 20px;gap:14px}
.error .eic{width:64px;height:64px}
.error .eic svg{width:100%;height:100%}
.error .msg{font-size:22px;font-weight:650}
.error .sub{font-size:14px;opacity:.82;max-width:440px;line-height:1.55}
</style>
</head>
<body>
<noscript><div class="card"><div class="error"><div class="msg">JavaScript is required to load weather data.</div></div></div></noscript>
<div class="card" id="card" aria-live="polite">
<div class="sk" style="width:230px;height:28px"></div>
<div style="display:flex;gap:38px;margin-top:26px;align-items:center">
<div class="sk" style="width:132px;height:132px;border-radius:50%"></div>
<div style="flex:1">
<div class="sk" style="width:200px;height:88px"></div>
<div class="sk" style="width:150px;height:20px;margin-top:12px"></div>
</div>
</div>
<div class="sk" style="height:196px;margin-top:30px"></div>
</div>
<script>
(function(){
"use strict";
var card = document.getElementById('card');
/* ---------- parameters ---------- */
var qp = new URLSearchParams(location.search);
function num(v,d){ var n = parseFloat(v); return Number.isFinite(n) ? n : d; }
var lat = num(qp.get('lat'), 52.52);
var lon = num(qp.get('lon'), 13.405);
var name = (qp.get('name') || 'Berlin').trim() || 'Berlin';
var today = new Date().toISOString().slice(0,10); // UTC today
var date = qp.get('date') || today;
if(!/^\d{4}-\d{2}-\d{2}$/.test(date)) date = today;
var endpoint = date < today ? '/api/om/archive' : '/api/om/forecast';
var q = new URLSearchParams({
latitude: String(lat),
longitude: String(lon),
daily: 'temperature_2m_max,temperature_2m_min,weather_code',
hourly: 'temperature_2m',
timezone: 'UTC',
temperature_unit: 'celsius',
start_date: date,
end_date: date
});
fetch(endpoint + '?' + q.toString())
.then(function(r){ if(!r.ok) throw new Error('HTTP ' + r.status); return r.json(); })
.then(render)
.catch(showError);
/* ---------- WMO weather codes ---------- */
var WMO = {
0:['Clear sky','clear'], 1:['Mainly clear','clear'], 2:['Partly cloudy','partly'], 3:['Overcast','cloudy'],
45:['Fog','fog'], 48:['Rime fog','fog'],
51:['Light drizzle','rain'], 53:['Drizzle','rain'], 55:['Dense drizzle','rain'],
56:['Freezing drizzle','rain'],57:['Freezing drizzle','rain'],
61:['Light rain','rain'], 63:['Rain','rain'], 65:['Heavy rain','rain'],
66:['Freezing rain','rain'], 67:['Freezing rain','rain'],
71:['Light snow','snow'], 73:['Snow','snow'], 75:['Heavy snow','snow'], 77:['Snow grains','snow'],
80:['Light showers','rain'], 81:['Rain showers','rain'], 82:['Violent showers','rain'],
85:['Snow showers','snow'], 86:['Snow showers','snow'],
95:['Thunderstorm','thunder'],96:['Thunderstorm, hail','thunder'],99:['Thunderstorm, hail','thunder']
};
var THEMES = {
clear: ['#2f6fb4','#6cb3ee','#f6d365'],
partly: ['#3a6073','#5f8ea8','#a8c8da'],
cloudy: ['#475a68','#6b7f8f','#97aab8'],
fog: ['#57636e','#7c8894','#adb8c1'],
rain: ['#2a3c4f','#3f5872','#61809b'],
snow: ['#6789ad','#9db8d2','#e0ecf7'],
thunder:['#282838','#3d3d56','#5b5b78']
};
/* ---------- inline SVG artwork ---------- */
var SUN_CORE = '<circle cx="32" cy="32" r="11" fill="#FFD66B"/>';
var SUN_RAYS = '<g stroke="#FFD66B" stroke-width="3.4" stroke-linecap="round">' +
'<line x1="32" y1="16" x2="32" y2="10.5"/><line x1="43.3" y1="20.7" x2="47.2" y2="16.8"/>' +
'<line x1="48" y1="32" x2="53.5" y2="32"/><line x1="43.3" y1="43.3" x2="47.2" y2="47.2"/>' +
'<line x1="32" y1="48" x2="32" y2="53.5"/><line x1="20.7" y1="43.3" x2="16.8" y2="47.2"/>' +
'<line x1="16" y1="32" x2="10.5" y2="32"/><line x1="20.7" y1="20.7" x2="16.8" y2="16.8"/></g>';
var CLOUD = '<g fill="#FFFFFF"><circle cx="25" cy="36" r="9.5"/><circle cx="36" cy="29" r="12"/>' +
'<circle cx="45" cy="37" r="8"/><rect x="16" y="35" width="37" height="10" rx="5"/></g>';
var CLOUD_S = '<g fill="#FFFFFF"><circle cx="28" cy="40" r="8"/><circle cx="38" cy="33" r="10.5"/>' +
'<circle cx="46" cy="40" r="7"/><rect x="20" y="39" width="32" height="9" rx="4.5"/></g>';
var DROPS = '<g stroke="#9CD0FF" stroke-width="3.2" stroke-linecap="round">' +
'<line x1="24" y1="51" x2="21" y2="58"/><line x1="33" y1="51" x2="30" y2="58"/><line x1="42" y1="51" x2="39" y2="58"/></g>';
var FLAKES = '<g fill="#EAF6FF"><circle cx="23" cy="53" r="2.6"/><circle cx="32" cy="57" r="2.6"/><circle cx="41" cy="53" r="2.6"/></g>';
var BOLT = '<polygon points="34,45 26,55 31.5,55 28,63 39,52 33.5,52 37,45" fill="#FFD66B"/>';
var FOGLN = '<g stroke="rgba(255,255,255,.85)" stroke-width="3" stroke-linecap="round">' +
'<line x1="20" y1="50" x2="44" y2="50"/><line x1="24" y1="55" x2="48" y2="55"/><line x1="20" y1="60" x2="44" y2="60"/></g>';
function icon(kind){
var inner = {
clear: SUN_CORE + SUN_RAYS,
partly: '<circle cx="21" cy="21" r="7.5" fill="#FFD66B"/>' +
'<g stroke="#FFD66B" stroke-width="2.6" stroke-linecap="round">' +
'<line x1="21" y1="10" x2="21" y2="6.5"/><line x1="28.8" y1="13.2" x2="31.3" y2="10.7"/>' +
'<line x1="32" y1="21" x2="35.5" y2="21"/><line x1="13.2" y1="13.2" x2="10.7" y2="10.7"/>' +
'<line x1="10" y1="21" x2="6.5" y2="21"/></g>' + CLOUD_S,
cloudy: CLOUD,
fog: CLOUD + FOGLN,
rain: CLOUD + DROPS,
snow: CLOUD + FLAKES,
thunder: CLOUD + BOLT
}[kind] || CLOUD;
return '<svg viewBox="0 0 64 64" role="img" aria-label="' + kind + '">' + inner + '</svg>';
}
var PIN = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21s-7-5.5-7-11a7 7 0 0 1 14 0c0 5.5-7 11-7 11z"/><circle cx="12" cy="10" r="2.6"/></svg>';
var UP = '<svg viewBox="0 0 24 24" fill="none" stroke="#FFB84D" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5"/><path d="M5 12l7-7 7 7"/></svg>';
var DN = '<svg viewBox="0 0 24 24" fill="none" stroke="#9CD0FF" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14"/><path d="M19 12l-7 7-7-7"/></svg>';
var WARN= '<svg viewBox="0 0 24 24" fill="none" stroke="#FFD66B" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>';
function esc(s){
return String(s).replace(/[&<>"']/g, function(c){
return {'&':'&','<':'<','>':'>','"':'"',"'":'''}[c];
});
}
function fmtDate(d){
var dt = new Date(d + 'T00:00:00Z');
return new Intl.DateTimeFormat('en-US',{weekday:'long',month:'long',day:'numeric',year:'numeric',timeZone:'UTC'}).format(dt);
}
/* ---------- chart ---------- */
function smooth(pts){
var d = 'M ' + pts[0].x.toFixed(1) + ',' + pts[0].y.toFixed(1);
for(var i=0;i<pts.length-1;i++){
var p0 = pts[Math.max(0,i-1)], p1 = pts[i], p2 = pts[i+1], p3 = pts[Math.min(pts.length-1,i+2)];
var c1x = p1.x + (p2.x-p0.x)/6, c1y = p1.y + (p2.y-p0.y)/6;
var c2x = p2.x - (p3.x-p1.x)/6, c2y = p2.y - (p3.y-p1.y)/6;
d += ' C ' + c1x.toFixed(1) + ',' + c1y.toFixed(1) + ' ' + c2x.toFixed(1) + ',' + c2y.toFixed(1) + ' ' + p2.x.toFixed(1) + ',' + p2.y.toFixed(1);
}
return d;
}
function buildChart(hours, temps){
var W=860, H=196, pl=36, pr=20, pt=32, pb=28, n=temps.length;
var lo = Math.min.apply(null,temps), hi = Math.max.apply(null,temps);
var pad = Math.max((hi-lo)*0.15, 1.2); hi += pad; lo -= pad;
function X(i){ return pl + (n===1 ? (W-pl-pr)/2 : (W-pl-pr)*i/(n-1)); }
function Y(t){ return pt + (H-pt-pb)*(1-(t-lo)/(hi-lo)); }
var pts = temps.map(function(t,i){ return {x:X(i), y:Y(t), t:t}; });
var grid = '';
for(var g=0; g<3; g++){
var tv = lo + (hi-lo)*g/2, yy = Y(tv);
grid += '<line x1="'+pl+'" y1="'+yy.toFixed(1)+'" x2="'+(W-pr)+'" y2="'+yy.toFixed(1)+'" stroke="rgba(255,255,255,.14)" stroke-dasharray="3 5"/>' +
'<text x="'+(pl-8)+'" y="'+(yy+3.5).toFixed(1)+'" text-anchor="end" font-size="10" fill="rgba(255,255,255,.55)">'+Math.round(tv)+'°</text>';
}
var xl = '';
pts.forEach(function(p,i){
if(i % 3 === 0){
xl += '<text x="'+p.x.toFixed(1)+'" y="'+(H-8)+'" text-anchor="middle" font-size="11" fill="rgba(255,255,255,.62)">'+hours[i]+'</text>';
}
});
var dots = '';
pts.forEach(function(p){
dots += '<circle cx="'+p.x.toFixed(1)+'" cy="'+p.y.toFixed(1)+'" r="2.3" fill="rgba(255,255,255,.85)"/>';
});
var iMax=0, iMin=0;
pts.forEach(function(p,i){ if(p.t>pts[iMax].t) iMax=i; if(p.t<pts[iMin].t) iMin=i; });
function marker(p, dy){
return '<circle cx="'+p.x.toFixed(1)+'" cy="'+p.y.toFixed(1)+'" r="4.6" fill="#fff" stroke="rgba(20,40,70,.35)" stroke-width="2"/>' +
'<text x="'+p.x.toFixed(1)+'" y="'+(p.y+dy).toFixed(1)+'" text-anchor="middle" font-size="12.5" font-weight="700" fill="#fff" stroke="rgba(20,40,70,.3)" stroke-width="3" paint-order="stroke">'+Math.round(p.t)+'°</text>';
}
var line = smooth(pts);
var area = line + ' L ' + pts[n-1].x.toFixed(1) + ',' + (H-pb) + ' L ' + pts[0].x.toFixed(1) + ',' + (H-pb) + ' Z';
return '<svg class="chart" viewBox="0 0 '+W+' '+H+'" role="img" aria-label="Hourly temperature chart">' +
'<defs><linearGradient id="areaG" x1="0" y1="0" x2="0" y2="1">' +
'<stop offset="0" stop-color="#ffffff" stop-opacity=".32"/>' +
'<stop offset="1" stop-color="#ffffff" stop-opacity="0"/></linearGradient></defs>' +
grid +
'<path d="'+area+'" fill="url(#areaG)"/>' +
'<path d="'+line+'" fill="none" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round"/>' +
dots + marker(pts[iMax],-12) + marker(pts[iMin],-12) + xl +
'</svg>';
}
/* ---------- render ---------- */
function render(data){
if(!data || !data.daily || !data.daily.time || !data.daily.time.length){
throw new Error('No daily data returned for this date');
}
var tmax = data.daily.temperature_2m_max[0];
var tmin = data.daily.temperature_2m_min[0];
var code = data.daily.weather_code[0];
if(tmax == null || tmin == null) throw new Error('Temperature data missing for this date');
var hours = [], temps = [];
if(data.hourly && data.hourly.time){
for(var i=0;i<data.hourly.time.length;i++){
if(data.hourly.time[i].indexOf(date) === 0 && data.hourly.temperature_2m[i] != null){
hours.push(data.hourly.time[i].slice(11,13));
temps.push(data.hourly.temperature_2m[i]);
}
}
}
if(!temps.length) throw new Error('No hourly data returned for this date');
var w = WMO[code] || ['Unknown','cloudy'];
var label = w[0], kind = w[1];
var th = THEMES[kind];
var rs = document.documentElement.style;
rs.setProperty('--c1', th[0]); rs.setProperty('--c2', th[1]); rs.setProperty('--c3', th[2]);
var isToday = (date === today);
var curHour = new Date().getUTCHours();
card.innerHTML =
'<div class="head">' +
'<div class="loc">' + PIN + '<span>' + esc(name) + '</span>' + (isToday ? '<span class="badge">Today</span>' : '') + '</div>' +
'<div class="datebox"><div class="d1">' + fmtDate(date) + '</div><div class="d2">' + date + ' · UTC</div></div>' +
'</div>' +
'<div class="main">' +
'<div class="wicon">' + icon(kind) + '</div>' +
'<div><div class="bigtemp">' + Math.round(tmax) + '<sup>°C</sup></div><div class="cond">' + esc(label) + '</div></div>' +
'<div class="divider"></div>' +
'<div class="stats">' +
'<div class="stat"><div class="ic">' + UP + '</div><div><div class="t">Day high</div><div class="v">' + Math.round(tmax) + '°C</div></div></div>' +
'<div class="stat"><div class="ic">' + DN + '</div><div><div class="t">Day low</div><div class="v">' + Math.round(tmin) + '°C</div></div></div>' +
'<div class="stat"><div class="ic">' + PIN + '</div><div><div class="t">Coordinates</div><div class="v">' + lat.toFixed(2) + ', ' + lon.toFixed(2) + '</div></div></div>' +
'</div>' +
'</div>' +
'<div class="hourly"><h2>Hourly temperature</h2>' +
buildChart(hours, temps) +
'<div class="strip" id="strip">' +
temps.map(function(t,i){
var now = (isToday && i === curHour) ? ' now' : '';
return '<div class="chip' + now + '"><div class="h">' + hours[i] + ':00</div><div class="t">' + Math.round(t) + '°</div></div>';
}).join('') +
'</div>' +
'</div>' +
'<div class="foot"><span>Source: Open-Meteo (' + (date < today ? 'archive' : 'forecast') + ')</span><span>All times UTC</span></div>';
var strip = document.getElementById('strip');
var active = strip.querySelector('.now');
if(active) strip.scrollLeft = active.offsetLeft - strip.clientWidth/2 + active.clientWidth/2;
}
function showError(err){
card.innerHTML =
'<div class="error">' +
'<div class="eic">' + WARN + '</div>' +
'<div class="msg">Weather data could not be loaded</div>' +
'<div class="sub">' + esc((err && err.message) || 'Unknown error') + '. Please check your connection, or try a different location or date.</div>' +
'</div>';
}
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 18,632 | html / css / js | 871 / 5,012 / 12,749 |
|---|---|---|---|
| dom nodes | 20 | dom depth | 6 |
| css rules | 47 | js present | yes |
| brightness | 98.8 | contrast | 20.4 |
| colorfulness | 21.8 | whitespace | 48.3% |
This slot's telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 508 s |
| cost | — | request id | — |
config.json560 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_OPENCODE_KEY",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "kimi-k3--cli--opencode--dev",
"effort": null,
"family": "kimi",
"m": {
"min": 2,
"q": 2
},
"model_id": "kimi-k3",
"protocol": "cli",
"served_model": "kimi-k3",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 1584342
},
"transport": "opencode-cli-isolated-xdg-go-subscription",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-20--refill-oc-kimi-k3",
"config_id": "kimi-k3--cli--opencode--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-20T08:09:20.441358+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T08:05:05.138066+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-20T08:17:53.512273+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T08:09:25.443953+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-20T08:27:37.321599+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T08:17:57.542659+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-20T08:31:42.222218+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T08:27:40.952329+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
}
}
}