claude-sonnet-4-6 @ low · kiro
kirolow
- config
- claude-sonnet-4-6-eff-low--cli--kiro--dev
- batch
- 2026-07-19--unified
- transport
- kiro-cli-isolated-home-github-social
- protocol
- cli · plan
- served model
- claude-sonnet-4.6
- 采集于
- 2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
claude-opus-4-8 @low · kiro0.67claude-sonnet-5 @medium · kiro0.67glm-5.1 · opencode0.67claude-opus-4-8 @high · kiro0.66claude-sonnet-4-6 @max · kiro0.64最远
gpt-5.6-sol @ultra · codex-oauth0.44gpt-5.6-luna @high · kiro0.44gpt-5.6-luna @low · codex-oauth0.45gpt-5.5 @medium · codex-oauth0.45gpt-5.6-sol @max · kiro0.47限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempambiguous展示值:17max-equals-min
- min tempambiguous展示值:17max-equals-min
- hourlyambiguouscoverage · 0 命中 · 0 不符 · 24 未展示
- request sidematch0 处违规
extractor fidelity-extractor-v1+Berlin-2026-07-15
源码 —— 原始模型输出,一字节未改
下载 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; }
body {
min-height: 100vh;
width: 1280px;
display: flex;
align-items: center;
justify-content: center;
background: #0f1923;
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
overflow-x: hidden;
}
.bg-gradient {
position: fixed;
inset: 0;
z-index: 0;
background: radial-gradient(ellipse at 20% 50%, #1a2a4a 0%, transparent 60%),
radial-gradient(ellipse at 80% 20%, #0d2137 0%, transparent 50%),
radial-gradient(ellipse at 60% 80%, #162035 0%, transparent 50%),
#0f1923;
}
.stars {
position: fixed;
inset: 0;
z-index: 0;
overflow: hidden;
}
.star {
position: absolute;
border-radius: 50%;
background: rgba(255,255,255,0.7);
animation: twinkle var(--dur, 3s) ease-in-out infinite var(--delay, 0s);
}
@keyframes twinkle {
0%, 100% { opacity: 0.2; transform: scale(1); }
50% { opacity: 1; transform: scale(1.3); }
}
.card-wrapper {
position: relative;
z-index: 1;
width: 900px;
padding: 20px 0 40px;
}
.card {
background: linear-gradient(135deg,
rgba(255,255,255,0.08) 0%,
rgba(255,255,255,0.04) 50%,
rgba(255,255,255,0.06) 100%);
border: 1px solid rgba(255,255,255,0.12);
border-radius: 32px;
backdrop-filter: blur(40px);
-webkit-backdrop-filter: blur(40px);
box-shadow:
0 32px 80px rgba(0,0,0,0.6),
0 0 0 1px rgba(255,255,255,0.05) inset,
0 1px 0 rgba(255,255,255,0.15) inset;
overflow: hidden;
position: relative;
}
.card-glow {
position: absolute;
top: -120px;
left: 50%;
transform: translateX(-50%);
width: 500px;
height: 300px;
background: radial-gradient(ellipse, rgba(96,165,250,0.15) 0%, transparent 70%);
pointer-events: none;
z-index: 0;
}
/* ── HEADER ── */
.header {
position: relative;
z-index: 1;
padding: 44px 52px 36px;
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.location-block {}
.location-name {
font-size: 38px;
font-weight: 700;
color: #fff;
letter-spacing: -0.5px;
line-height: 1;
text-shadow: 0 2px 20px rgba(96,165,250,0.4);
}
.location-date {
margin-top: 8px;
font-size: 15px;
color: rgba(255,255,255,0.45);
font-weight: 400;
letter-spacing: 0.5px;
text-transform: uppercase;
}
.condition-block {
text-align: right;
}
.condition-icon {
font-size: 72px;
line-height: 1;
filter: drop-shadow(0 4px 20px rgba(255,200,50,0.35));
}
.condition-text {
margin-top: 6px;
font-size: 14px;
color: rgba(255,255,255,0.55);
font-weight: 500;
letter-spacing: 0.3px;
text-transform: uppercase;
}
/* ── TEMP HERO ── */
.temp-hero {
position: relative;
z-index: 1;
padding: 0 52px 36px;
display: flex;
align-items: flex-end;
gap: 32px;
}
.temp-max {
font-size: 110px;
font-weight: 800;
line-height: 1;
color: #fff;
letter-spacing: -4px;
text-shadow:
0 0 60px rgba(96,165,250,0.3),
0 4px 20px rgba(0,0,0,0.4);
}
.temp-max .unit {
font-size: 48px;
font-weight: 400;
letter-spacing: 0;
color: rgba(255,255,255,0.5);
vertical-align: super;
margin-left: 2px;
}
.temp-range-block {
padding-bottom: 16px;
}
.temp-range-label {
font-size: 11px;
color: rgba(255,255,255,0.35);
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 6px;
}
.temp-range-pills {
display: flex;
flex-direction: column;
gap: 6px;
}
.temp-pill {
display: flex;
align-items: center;
gap: 8px;
font-size: 15px;
font-weight: 600;
}
.temp-pill .pill-label {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.8px;
font-weight: 500;
width: 24px;
}
.temp-pill.high { color: #fb923c; }
.temp-pill.low { color: #60a5fa; }
/* ── DIVIDER ── */
.divider {
position: relative;
z-index: 1;
margin: 0 52px;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.12), transparent);
}
/* ── HOURLY ── */
.hourly-section {
position: relative;
z-index: 1;
padding: 32px 52px 44px;
}
.section-title {
font-size: 11px;
color: rgba(255,255,255,0.35);
text-transform: uppercase;
letter-spacing: 1.5px;
margin-bottom: 20px;
font-weight: 600;
}
.hourly-scroll {
display: flex;
gap: 8px;
overflow-x: auto;
padding-bottom: 4px;
scrollbar-width: thin;
scrollbar-color: rgba(255,255,255,0.1) 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.1); border-radius: 2px; }
.hour-item {
flex: 0 0 auto;
width: 72px;
padding: 14px 8px;
border-radius: 16px;
background: rgba(255,255,255,0.04);
border: 1px solid rgba(255,255,255,0.07);
text-align: center;
cursor: default;
transition: background 0.2s, border-color 0.2s, transform 0.2s;
position: relative;
}
.hour-item:hover {
background: rgba(255,255,255,0.09);
border-color: rgba(255,255,255,0.15);
transform: translateY(-2px);
}
.hour-item.current {
background: linear-gradient(160deg, rgba(96,165,250,0.22), rgba(59,130,246,0.12));
border-color: rgba(96,165,250,0.4);
box-shadow: 0 0 20px rgba(96,165,250,0.15);
}
.hour-label {
font-size: 11px;
color: rgba(255,255,255,0.4);
font-weight: 500;
margin-bottom: 10px;
letter-spacing: 0.3px;
}
.hour-item.current .hour-label {
color: rgba(96,165,250,0.9);
}
.hour-temp {
font-size: 17px;
font-weight: 700;
color: #fff;
}
.hour-dot {
width: 4px;
height: 4px;
background: #60a5fa;
border-radius: 50%;
margin: 8px auto 0;
opacity: 0;
}
.hour-item.current .hour-dot { opacity: 1; }
/* ── CHART ── */
.chart-wrapper {
position: relative;
z-index: 1;
padding: 0 52px 32px;
}
.chart-canvas {
width: 100%;
height: 100px;
display: block;
}
/* ── LOADING / ERROR ── */
.state-overlay {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 340px;
gap: 20px;
}
.spinner {
width: 48px;
height: 48px;
border: 3px solid rgba(96,165,250,0.15);
border-top-color: #60a5fa;
border-radius: 50%;
animation: spin 0.9s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
.state-message {
font-size: 16px;
color: rgba(255,255,255,0.5);
font-weight: 400;
}
.error-icon { font-size: 48px; }
.error-title {
font-size: 20px;
font-weight: 600;
color: rgba(255,255,255,0.75);
}
.error-detail {
font-size: 14px;
color: rgba(255,255,255,0.35);
text-align: center;
max-width: 360px;
line-height: 1.6;
}
/* ── FOOTER ── */
.footer {
position: relative;
z-index: 1;
padding: 0 52px 36px;
display: flex;
gap: 28px;
}
.stat-chip {
display: flex;
flex-direction: column;
gap: 3px;
}
.stat-chip-label {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 1px;
color: rgba(255,255,255,0.3);
font-weight: 600;
}
.stat-chip-value {
font-size: 14px;
color: rgba(255,255,255,0.7);
font-weight: 600;
}
.stat-sep {
width: 1px;
background: rgba(255,255,255,0.08);
align-self: stretch;
margin: 2px 0;
}
</style>
</head>
<body>
<div class="bg-gradient"></div>
<div class="stars" id="stars"></div>
<div class="card-wrapper">
<div class="card" id="card">
<div class="card-glow"></div>
<div id="content">
<div class="state-overlay">
<div class="spinner"></div>
<div class="state-message">Fetching weather data…</div>
</div>
</div>
</div>
</div>
<script>
(function () {
/* ── STARS ── */
const starsEl = document.getElementById('stars');
for (let i = 0; i < 120; i++) {
const s = document.createElement('div');
s.className = 'star';
const size = Math.random() * 2.5 + 0.5;
s.style.cssText = `
width:${size}px; height:${size}px;
top:${Math.random()*100}%;
left:${Math.random()*100}%;
--dur:${(Math.random()*4+2).toFixed(1)}s;
--delay:-${(Math.random()*6).toFixed(1)}s;
opacity:${Math.random()*0.5+0.1};
`;
starsEl.appendChild(s);
}
/* ── PARAMS ── */
const params = new URLSearchParams(location.search);
const lat = parseFloat(params.get('lat') || '52.52');
const lon = parseFloat(params.get('lon') || '13.405');
const name = params.get('name') || 'Berlin';
function todayUTC() {
const d = new Date();
return `${d.getUTCFullYear()}-${String(d.getUTCMonth()+1).padStart(2,'0')}-${String(d.getUTCDate()).padStart(2,'0')}`;
}
const dateStr = params.get('date') || todayUTC();
/* ── DATE HELPERS ── */
function isPast(dateStr) {
const today = todayUTC();
return dateStr < today;
}
function formatDate(dateStr) {
const [y, m, d] = dateStr.split('-').map(Number);
const dt = new Date(Date.UTC(y, m-1, d));
return dt.toLocaleDateString('en-US', { weekday:'long', year:'numeric', month:'long', day:'numeric', timeZone:'UTC' });
}
/* ── WEATHER CODE MAP ── */
const WMO = {
0: { icon:'☀️', label:'Clear Sky' },
1: { icon:'🌤️', label:'Mainly Clear' },
2: { icon:'⛅', label:'Partly Cloudy' },
3: { icon:'☁️', label:'Overcast' },
45: { icon:'🌫️', label:'Foggy' },
48: { icon:'🌫️', label:'Icy Fog' },
51: { icon:'🌦️', label:'Light Drizzle' },
53: { icon:'🌦️', label:'Drizzle' },
55: { icon:'🌧️', label:'Heavy Drizzle' },
56: { icon:'🌨️', label:'Freezing Drizzle' },
57: { icon:'🌨️', label:'Heavy Freezing Drizzle' },
61: { icon:'🌧️', label:'Light Rain' },
63: { icon:'🌧️', label:'Rain' },
65: { icon:'🌧️', label:'Heavy Rain' },
66: { icon:'🌨️', label:'Freezing Rain' },
67: { icon:'🌨️', label:'Heavy Freezing Rain' },
71: { icon:'❄️', label:'Light Snow' },
73: { icon:'❄️', label:'Snow' },
75: { icon:'❄️', label:'Heavy Snow' },
77: { icon:'🌨️', label:'Snow Grains' },
80: { icon:'🌦️', label:'Light Showers' },
81: { icon:'🌧️', label:'Showers' },
82: { icon:'⛈️', label:'Violent Showers' },
85: { icon:'🌨️', label:'Snow Showers' },
86: { icon:'🌨️', label:'Heavy Snow Showers' },
95: { icon:'⛈️', label:'Thunderstorm' },
96: { icon:'⛈️', label:'Thunderstorm w/ Hail' },
99: { icon:'⛈️', label:'Heavy Thunderstorm w/ Hail' },
};
function getWMO(code) {
return WMO[code] || { icon:'🌡️', label:'Unknown' };
}
/* ── FETCH ── */
async function fetchWeather() {
const endpoint = isPast(dateStr) ? '/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 res = await fetch(`${endpoint}?${qs}`);
if (!res.ok) throw new Error(`HTTP ${res.status} from ${endpoint}`);
return res.json();
}
/* ── CHART ── */
function drawChart(canvas, temps) {
const dpr = window.devicePixelRatio || 1;
const w = canvas.offsetWidth;
const h = canvas.offsetHeight;
canvas.width = w * dpr;
canvas.height = h * dpr;
const ctx = canvas.getContext('2d');
ctx.scale(dpr, dpr);
const valid = temps.filter(t => t !== null && t !== undefined);
if (valid.length < 2) return;
const min = Math.min(...valid) - 1;
const max = Math.max(...valid) + 1;
const pad = { l: 8, r: 8, t: 14, b: 8 };
const gw = w - pad.l - pad.r;
const gh = h - pad.t - pad.b;
const xOf = i => pad.l + (i / (temps.length - 1)) * gw;
const yOf = v => pad.t + gh - ((v - min) / (max - min)) * gh;
/* gradient fill */
const grad = ctx.createLinearGradient(0, pad.t, 0, pad.t + gh);
grad.addColorStop(0, 'rgba(96,165,250,0.25)');
grad.addColorStop(1, 'rgba(96,165,250,0)');
ctx.beginPath();
ctx.moveTo(xOf(0), yOf(temps[0]));
for (let i = 1; i < temps.length; i++) {
const xp = xOf(i-1), x = xOf(i);
const yp = yOf(temps[i-1]), y = yOf(temps[i]);
const cpx = (xp + x) / 2;
ctx.bezierCurveTo(cpx, yp, cpx, y, x, y);
}
ctx.lineTo(xOf(temps.length-1), h);
ctx.lineTo(xOf(0), h);
ctx.closePath();
ctx.fillStyle = grad;
ctx.fill();
/* line */
ctx.beginPath();
ctx.moveTo(xOf(0), yOf(temps[0]));
for (let i = 1; i < temps.length; i++) {
const xp = xOf(i-1), x = xOf(i);
const yp = yOf(temps[i-1]), y = yOf(temps[i]);
const cpx = (xp + x) / 2;
ctx.bezierCurveTo(cpx, yp, cpx, y, x, y);
}
ctx.strokeStyle = 'rgba(96,165,250,0.75)';
ctx.lineWidth = 2.5;
ctx.lineJoin = 'round';
ctx.stroke();
/* dots at peaks */
const peak = temps.indexOf(Math.max(...temps));
const trough = temps.indexOf(Math.min(...temps));
[[peak, '#fb923c'], [trough, '#60a5fa']].forEach(([idx, color]) => {
ctx.beginPath();
ctx.arc(xOf(idx), yOf(temps[idx]), 4, 0, Math.PI*2);
ctx.fillStyle = color;
ctx.fill();
ctx.strokeStyle = 'rgba(255,255,255,0.5)';
ctx.lineWidth = 1.5;
ctx.stroke();
/* label */
ctx.fillStyle = color;
ctx.font = `600 11px 'Segoe UI', system-ui, sans-serif`;
ctx.textAlign = 'center';
const label = `${Math.round(temps[idx])}°`;
const ly = yOf(temps[idx]) - 8;
ctx.fillText(label, xOf(idx), ly);
});
}
/* ── RENDER ── */
function render(data) {
const daily = data.daily;
const hourly = data.hourly;
const tMax = daily.temperature_2m_max[0];
const tMin = daily.temperature_2m_min[0];
const code = daily.weather_code[0];
const wmo = getWMO(code);
/* hourly temps for this date (24 values) */
const hourTemps = (hourly.temperature_2m || []).slice(0, 24);
/* current hour highlight (only if today) */
const todayStr = todayUTC();
const nowHour = (dateStr === todayStr) ? new Date().getUTCHours() : -1;
/* avg for stat chip */
const avg = hourTemps.length ? (hourTemps.reduce((a,b) => a + (b||0), 0) / hourTemps.length) : null;
const spread = (tMax !== null && tMin !== null) ? (tMax - tMin).toFixed(1) : null;
const content = document.getElementById('content');
content.innerHTML = `
<div class="header">
<div class="location-block">
<div class="location-name">${escHtml(name)}</div>
<div class="location-date">${formatDate(dateStr)}</div>
</div>
<div class="condition-block">
<div class="condition-icon">${wmo.icon}</div>
<div class="condition-text">${wmo.label}</div>
</div>
</div>
<div class="temp-hero">
<div class="temp-max">${tMax !== null ? Math.round(tMax) : '—'}<span class="unit">°C</span></div>
<div class="temp-range-block">
<div class="temp-range-label">Today's Range</div>
<div class="temp-range-pills">
<div class="temp-pill high">
<span class="pill-label">High</span>
<span>${tMax !== null ? Math.round(tMax) + '°' : '—'}</span>
</div>
<div class="temp-pill low">
<span class="pill-label">Low</span>
<span>${tMin !== null ? Math.round(tMin) + '°' : '—'}</span>
</div>
</div>
</div>
</div>
<div class="divider"></div>
<div class="chart-wrapper">
<canvas class="chart-canvas" id="tempChart" style="height:90px;"></canvas>
</div>
<div class="hourly-section">
<div class="section-title">Hourly Temperature</div>
<div class="hourly-scroll" id="hourlyScroll">
${hourTemps.map((t, i) => {
const isCurrent = i === nowHour;
return `
<div class="hour-item${isCurrent ? ' current' : ''}">
<div class="hour-label">${String(i).padStart(2,'0')}:00</div>
<div class="hour-temp">${t !== null && t !== undefined ? Math.round(t) + '°' : '—'}</div>
<div class="hour-dot"></div>
</div>`;
}).join('')}
</div>
</div>
<div class="divider"></div>
<div class="footer">
<div class="stat-chip">
<div class="stat-chip-label">Avg Temp</div>
<div class="stat-chip-value">${avg !== null ? Math.round(avg) + ' °C' : '—'}</div>
</div>
<div class="stat-sep"></div>
<div class="stat-chip">
<div class="stat-chip-label">Spread</div>
<div class="stat-chip-value">${spread !== null ? spread + ' °C' : '—'}</div>
</div>
<div class="stat-sep"></div>
<div class="stat-chip">
<div class="stat-chip-label">Condition Code</div>
<div class="stat-chip-value">WMO ${code}</div>
</div>
<div class="stat-sep"></div>
<div class="stat-chip">
<div class="stat-chip-label">Coordinates</div>
<div class="stat-chip-value">${lat.toFixed(3)}°, ${lon.toFixed(3)}°</div>
</div>
</div>
`;
/* scroll to current hour */
if (nowHour > 0) {
requestAnimationFrame(() => {
const scroll = document.getElementById('hourlyScroll');
const items = scroll.querySelectorAll('.hour-item');
if (items[nowHour]) {
const offset = items[nowHour].offsetLeft - scroll.offsetWidth / 2 + items[nowHour].offsetWidth / 2;
scroll.scrollLeft = Math.max(0, offset);
}
});
}
/* draw chart */
requestAnimationFrame(() => {
const canvas = document.getElementById('tempChart');
if (canvas && hourTemps.length) drawChart(canvas, hourTemps);
});
}
function renderError(err) {
document.getElementById('content').innerHTML = `
<div class="state-overlay">
<div class="error-icon">⚠️</div>
<div class="error-title">Weather data unavailable</div>
<div class="error-detail">${escHtml(err.message || String(err))}</div>
</div>
`;
}
function escHtml(s) {
return String(s)
.replace(/&/g,'&')
.replace(/</g,'<')
.replace(/>/g,'>')
.replace(/"/g,'"');
}
/* ── BOOT ── */
fetchWeather().then(render).catch(renderError);
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 19,316 | html / css / js | 562 / 7,832 / 10,922 |
|---|---|---|---|
| dom 节点 | 17 | dom 深度 | 7 |
| css 规则 | 58 | 含 js | 是 |
| brightness | 40.1 | contrast | 21.8 |
| colorfulness | 16.9 | 留白 | 62.7% |
该 slot 的 telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 80.9 s |
| cost | — | request id | — |
config.json583 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-sonnet-4-6-eff-low--cli--kiro--dev",
"effort": "low",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-sonnet-4-6",
"protocol": "cli",
"served_model": "claude-sonnet-4.6",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 274626
},
"transport": "kiro-cli-isolated-home-github-social",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-18--kiro-cli",
"config_id": "claude-sonnet-4-6-eff-low--cli--kiro--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-18T16:52:59.411578+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T16:52:13.083706+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-18T16:54:24.113457+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T16:53:02.975933+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-18T16:55:58.307697+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T16:54:28.043332+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-18T16:56:59.781049+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T16:56:02.246936+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
}
}
}