qwen3.6-plus · opencode
opencode
- config
- qwen3.6-plus--cli--opencode--dev
- batch
- 2026-07-19--unified
- transport
- opencode-cli-isolated-xdg-go-subscription
- protocol
- cli · plan
- served model
- qwen3.6-plus
- 采集于
- 2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
deepseek-v4-flash · opencode0.77claude-opus-4-6 @max · kiro0.73claude-opus-4-6 @high · kiro0.69claude-opus-4-6 @low · kiro0.67claude-opus-4-8 @low · CC0.67最远
gpt-5.6-sol @max · codex-oauth0.44gpt-5.5 @high · codex-oauth0.44gpt-5.6-terra @high · kiro0.45gpt-5.4-mini @high · codex-oauth0.45gpt-5.4 @medium · codex-oauth0.45限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmismatch展示值:17.4
- min tempmismatch展示值:17.2
- hourlymatchcoverage 22/24 · 22 命中 · 0 不符 · 2 未展示
- 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, initial-scale=1.0">
<title>Weather Card</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg: #0f172a;
--card-bg: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);
--surface: rgba(255,255,255,0.06);
--surface-hover: rgba(255,255,255,0.10);
--text-primary: #f1f5f9;
--text-secondary: #94a3b8;
--text-muted: #64748b;
--accent: #38bdf8;
--accent-glow: rgba(56,189,248,0.15);
--warm: #f97316;
--cool: #6366f1;
--border: rgba(255,255,255,0.08);
--radius: 20px;
--radius-sm: 12px;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background: var(--bg);
color: var(--text-primary);
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 40px;
background-image:
radial-gradient(ellipse 80% 60% at 50% 0%, rgba(56,189,248,0.08) 0%, transparent 60%),
radial-gradient(ellipse 60% 50% at 80% 100%, rgba(99,102,241,0.06) 0%, transparent 50%);
}
.card {
width: 640px;
background: var(--card-bg);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow:
0 4px 6px -1px rgba(0,0,0,0.3),
0 20px 50px -12px rgba(0,0,0,0.5),
0 0 0 1px rgba(255,255,255,0.03) inset;
overflow: hidden;
position: relative;
}
.card::before {
content: "";
position: absolute;
top: 0; left: 0; right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
}
.header {
padding: 32px 36px 24px;
border-bottom: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.location {
display: flex;
align-items: center;
gap: 10px;
}
.location-icon {
width: 20px; height: 20px;
color: var(--accent);
flex-shrink: 0;
}
.location-name {
font-size: 22px;
font-weight: 600;
letter-spacing: -0.3px;
}
.date {
font-size: 14px;
color: var(--text-secondary);
font-weight: 500;
margin-top: 4px;
}
.weather-icon {
width: 56px; height: 56px;
flex-shrink: 0;
}
.summary {
padding: 28px 36px;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
}
.stat {
background: var(--surface);
border-radius: var(--radius-sm);
padding: 18px 20px;
border: 1px solid var(--border);
transition: background 0.2s;
}
.stat:hover { background: var(--surface-hover); }
.stat-label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.8px;
color: var(--text-muted);
font-weight: 600;
margin-bottom: 8px;
}
.stat-value {
font-size: 28px;
font-weight: 700;
letter-spacing: -0.5px;
display: flex;
align-items: baseline;
gap: 4px;
}
.stat-value .unit {
font-size: 16px;
font-weight: 500;
color: var(--text-secondary);
}
.stat-max .stat-value { color: var(--warm); }
.stat-min .stat-value { color: var(--cool); }
.stat-condition .stat-value {
font-size: 15px;
font-weight: 500;
color: var(--text-primary);
letter-spacing: -0.2px;
}
.hourly-section {
padding: 0 36px 32px;
}
.hourly-header {
font-size: 13px;
text-transform: uppercase;
letter-spacing: 0.8px;
color: var(--text-muted);
font-weight: 600;
margin-bottom: 16px;
}
.hourly-scroll {
display: flex;
gap: 8px;
overflow-x: auto;
padding-bottom: 8px;
scrollbar-width: thin;
scrollbar-color: var(--text-muted) transparent;
}
.hourly-scroll::-webkit-scrollbar { height: 4px; }
.hourly-scroll::-webkit-scrollbar-track { background: transparent; }
.hourly-scroll::-webkit-scrollbar-thumb { background: var(--text-muted); border-radius: 2px; }
.hour-item {
flex: 0 0 auto;
width: 52px;
text-align: center;
padding: 12px 6px;
border-radius: var(--radius-sm);
background: var(--surface);
border: 1px solid var(--border);
transition: all 0.2s;
}
.hour-item:hover {
background: var(--accent-glow);
border-color: rgba(56,189,248,0.2);
}
.hour-time {
font-size: 11px;
color: var(--text-muted);
font-weight: 600;
margin-bottom: 8px;
}
.hour-temp {
font-size: 14px;
font-weight: 600;
color: var(--text-primary);
}
.hourly-chart {
margin-top: 20px;
height: 80px;
position: relative;
background: var(--surface);
border-radius: var(--radius-sm);
border: 1px solid var(--border);
overflow: hidden;
}
.chart-svg { width: 100%; height: 100%; }
.error-state {
padding: 60px 36px;
text-align: center;
}
.error-icon {
width: 48px; height: 48px;
color: #ef4444;
margin: 0 auto 16px;
opacity: 0.8;
}
.error-title {
font-size: 18px;
font-weight: 600;
margin-bottom: 8px;
}
.error-message {
font-size: 14px;
color: var(--text-secondary);
line-height: 1.6;
}
.loading {
padding: 80px 36px;
text-align: center;
}
.spinner {
width: 32px; height: 32px;
border: 3px solid var(--border);
border-top-color: var(--accent);
border-radius: 50%;
animation: spin 0.8s linear infinite;
margin: 0 auto 16px;
}
@keyframes spin { to { transform: rotate(360deg); } }
.loading-text {
font-size: 14px;
color: var(--text-secondary);
}
.temp-bar {
display: flex;
align-items: center;
gap: 8px;
margin-top: 8px;
}
.temp-bar-track {
flex: 1;
height: 4px;
background: rgba(255,255,255,0.08);
border-radius: 2px;
overflow: hidden;
position: relative;
}
.temp-bar-fill {
height: 100%;
border-radius: 2px;
background: linear-gradient(90deg, var(--cool), var(--warm));
}
</style>
</head>
<body>
<div class="card" id="card">
<div class="loading" id="loading">
<div class="spinner"></div>
<div class="loading-text">Fetching weather data...</div>
</div>
</div>
<script>
(function() {
const params = new URLSearchParams(window.location.search);
const lat = parseFloat(params.get('lat') || '52.52');
const lon = parseFloat(params.get('lon') || '13.405');
const name = params.get('name') || 'Berlin';
const dateParam = params.get('date');
const today = new Date();
const dateStr = dateParam || today.toISOString().slice(0, 10);
const isPast = dateStr < today.toISOString().slice(0, 10);
const apiPath = isPast ? '/api/om/archive' : '/api/om/forecast';
const url = `${apiPath}?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 weatherCodes = {
0: { label: 'Clear sky', icon: 'clear' },
1: { label: 'Mainly clear', icon: 'partly-cloudy' },
2: { label: 'Partly cloudy', icon: 'partly-cloudy' },
3: { label: 'Overcast', icon: 'cloudy' },
45: { label: 'Foggy', icon: 'fog' },
48: { label: 'Rime fog', icon: 'fog' },
51: { label: 'Light drizzle', icon: 'drizzle' },
53: { label: 'Drizzle', icon: 'drizzle' },
55: { label: 'Heavy drizzle', icon: 'drizzle' },
56: { label: 'Freezing drizzle', icon: 'drizzle' },
57: { label: 'Heavy freezing drizzle', icon: 'drizzle' },
61: { label: 'Light rain', icon: 'rain' },
63: { label: 'Rain', icon: 'rain' },
65: { label: 'Heavy rain', icon: 'rain' },
66: { label: 'Freezing rain', icon: 'rain' },
67: { label: 'Heavy freezing rain', icon: 'rain' },
71: { label: 'Light snow', icon: 'snow' },
73: { label: 'Snow', icon: 'snow' },
75: { label: 'Heavy snow', icon: 'snow' },
77: { label: 'Snow grains', icon: 'snow' },
80: { label: 'Light showers', icon: 'rain' },
81: { label: 'Showers', icon: 'rain' },
82: { label: 'Heavy showers', icon: 'rain' },
85: { label: 'Light snow showers', icon: 'snow' },
86: { label: 'Heavy snow showers', icon: 'snow' },
95: { label: 'Thunderstorm', icon: 'thunder' },
96: { label: 'Thunderstorm with hail', icon: 'thunder' },
99: { label: 'Thunderstorm with heavy hail', icon: 'thunder' }
};
function getWeatherInfo(code) {
return weatherCodes[code] || { label: 'Unknown', icon: 'unknown' };
}
function weatherIconSVG(type, size = 56) {
const icons = {
'clear': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<circle cx="28" cy="28" r="12" fill="#fbbf24"/>
<g stroke="#fbbf24" stroke-width="2.5" stroke-linecap="round">
<line x1="28" y1="8" x2="28" y2="12"/>
<line x1="28" y1="44" x2="28" y2="48"/>
<line x1="8" y1="28" x2="12" y2="28"/>
<line x1="44" y1="28" x2="48" y2="28"/>
<line x1="13.86" y1="13.86" x2="16.69" y2="16.69"/>
<line x1="39.31" y1="39.31" x2="42.14" y2="42.14"/>
<line x1="13.86" y1="42.14" x2="16.69" y2="39.31"/>
<line x1="39.31" y1="16.69" x2="42.14" y2="13.86"/>
</g>
</svg>`,
'partly-cloudy': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<circle cx="22" cy="22" r="10" fill="#fbbf24"/>
<g stroke="#fbbf24" stroke-width="2" stroke-linecap="round">
<line x1="22" y1="6" x2="22" y2="9"/>
<line x1="22" y1="35" x2="22" y2="38"/>
<line x1="6" y1="22" x2="9" y2="22"/>
<line x1="10.34" y1="10.34" x2="12.46" y2="12.46"/>
<line x1="31.54" y1="31.54" x2="33.66" y2="33.66"/>
<line x1="10.34" y1="33.66" x2="12.46" y2="31.54"/>
</g>
<path d="M20 38c-4.42 0-8-3.13-8-7 0-3.31 2.54-6.06 5.83-6.86C18.6 20.56 21.96 18 26 18c4.97 0 9 3.58 9 8 0 .34-.02.67-.07 1H38c5.52 0 10 4.03 10 9s-4.48 9-10 9H20z" fill="#94a3b8" opacity="0.9"/>
</svg>`,
'cloudy': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<path d="M16 36c-4.42 0-8-3.13-8-7 0-3.31 2.54-6.06 5.83-6.86C14.6 18.56 17.96 16 22 16c4.97 0 9 3.58 9 8 0 .34-.02.67-.07 1H34c5.52 0 10 4.03 10 9s-4.48 9-10 9H16z" fill="#94a3b8"/>
<path d="M24 28c-3.31 0-6-2.24-6-5 0-2.37 1.9-4.33 4.37-4.9C23.05 15.76 25.56 14 28.5 14c3.73 0 6.75 2.69 6.75 6 0 .25-.02.5-.05.75H37c4.14 0 7.5 3.02 7.5 6.75S41.14 34.25 37 34.25H24z" fill="#cbd5e1" opacity="0.6"/>
</svg>`,
'rain': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<path d="M16 26c-4.42 0-8-3.13-8-7 0-3.31 2.54-6.06 5.83-6.86C14.6 8.56 17.96 6 22 6c4.97 0 9 3.58 9 8 0 .34-.02.67-.07 1H34c5.52 0 10 4.03 10 9s-4.48 9-10 9H16z" fill="#94a3b8"/>
<g stroke="#38bdf8" stroke-width="2" stroke-linecap="round">
<line x1="18" y1="38" x2="16" y2="46"/>
<line x1="28" y1="38" x2="26" y2="48"/>
<line x1="38" y1="38" x2="36" y2="46"/>
</g>
</svg>`,
'snow': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<path d="M16 26c-4.42 0-8-3.13-8-7 0-3.31 2.54-6.06 5.83-6.86C14.6 8.56 17.96 6 22 6c4.97 0 9 3.58 9 8 0 .34-.02.67-.07 1H34c5.52 0 10 4.03 10 9s-4.48 9-10 9H16z" fill="#94a3b8"/>
<g fill="#e2e8f0">
<circle cx="18" cy="40" r="2"/>
<circle cx="28" cy="44" r="2"/>
<circle cx="38" cy="40" r="2"/>
<circle cx="23" cy="50" r="2"/>
<circle cx="33" cy="50" r="2"/>
</g>
</svg>`,
'thunder': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<path d="M16 24c-4.42 0-8-3.13-8-7 0-3.31 2.54-6.06 5.83-6.86C14.6 6.56 17.96 4 22 4c4.97 0 9 3.58 9 8 0 .34-.02.67-.07 1H34c5.52 0 10 4.03 10 9s-4.48 9-10 9H16z" fill="#64748b"/>
<polygon points="30,28 22,40 28,40 24,52 36,36 30,36 34,28" fill="#fbbf24"/>
</svg>`,
'fog': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<g stroke="#94a3b8" stroke-width="3" stroke-linecap="round">
<line x1="10" y1="20" x2="46" y2="20"/>
<line x1="12" y1="28" x2="44" y2="28"/>
<line x1="8" y1="36" x2="48" y2="36"/>
</g>
</svg>`,
'drizzle': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<path d="M16 26c-4.42 0-8-3.13-8-7 0-3.31 2.54-6.06 5.83-6.86C14.6 8.56 17.96 6 22 6c4.97 0 9 3.58 9 8 0 .34-.02.67-.07 1H34c5.52 0 10 4.03 10 9s-4.48 9-10 9H16z" fill="#94a3b8"/>
<g fill="#38bdf8" opacity="0.7">
<circle cx="20" cy="40" r="1.5"/>
<circle cx="28" cy="44" r="1.5"/>
<circle cx="36" cy="40" r="1.5"/>
</g>
</svg>`,
'unknown': `<svg viewBox="0 0 56 56" width="${size}" height="${size}" fill="none">
<circle cx="28" cy="28" r="16" fill="#475569"/>
<text x="28" y="34" text-anchor="middle" fill="#94a3b8" font-size="20" font-weight="600">?</text>
</svg>`
};
return icons[type] || icons['unknown'];
}
function formatDate(dateStr) {
const d = new Date(dateStr + 'T00:00:00Z');
return d.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' });
}
function renderError(message) {
document.getElementById('card').innerHTML = `
<div class="error-state">
<svg class="error-icon" viewBox="0 0 48 48" fill="none">
<circle cx="24" cy="24" r="20" stroke="currentColor" stroke-width="2"/>
<line x1="16" y1="16" x2="32" y2="32" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"/>
<line x1="32" y1="16" x2="16" y2="32" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"/>
</svg>
<div class="error-title">Unable to Load Weather Data</div>
<div class="error-message">${message}</div>
</div>
`;
}
function renderChart(hourlyTemps) {
if (!hourlyTemps || hourlyTemps.length === 0) return '';
const temps = hourlyTemps.map(t => t !== null && t !== undefined ? parseFloat(t) : null).filter(t => t !== null);
if (temps.length === 0) return '';
const minT = Math.min(...temps);
const maxT = Math.max(...temps);
const range = maxT - minT || 1;
const padding = 8;
const width = 568;
const height = 64;
const chartH = height - padding * 2;
const points = hourlyTemps.map((t, i) => {
if (t === null || t === undefined) return null;
const x = (i / 23) * width;
const y = padding + chartH - ((parseFloat(t) - minT) / range) * chartH;
return { x, y, temp: parseFloat(t) };
}).filter(p => p !== null);
if (points.length < 2) return '';
const linePath = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(' ');
const areaPath = linePath + ` L${points[points.length-1].x.toFixed(1)},${height} L${points[0].x.toFixed(1)},${height} Z`;
const gradientId = 'chartGrad';
const strokeGradId = 'strokeGrad';
return `
<svg class="chart-svg" viewBox="0 0 ${width} ${height}" preserveAspectRatio="none">
<defs>
<linearGradient id="${gradientId}" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#38bdf8" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#38bdf8" stop-opacity="0"/>
</linearGradient>
<linearGradient id="${strokeGradId}" x1="0" y1="0" x2="1" y2="0">
<stop offset="0%" stop-color="#6366f1"/>
<stop offset="50%" stop-color="#38bdf8"/>
<stop offset="100%" stop-color="#f97316"/>
</linearGradient>
</defs>
<path d="${areaPath}" fill="url(#${gradientId})"/>
<path d="${linePath}" fill="none" stroke="url(#${strokeGradId})" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
${points.map(p => `<circle cx="${p.x.toFixed(1)}" cy="${p.y.toFixed(1)}" r="2.5" fill="#0f172a" stroke="#38bdf8" stroke-width="1.5"/>`).join('')}
</svg>
`;
}
fetch(url)
.then(res => {
if (!res.ok) throw new Error(`HTTP ${res.status}: ${res.statusText}`);
return res.json();
})
.then(data => {
if (!data.daily || !data.daily.time || data.daily.time.length === 0) {
throw new Error('No weather data returned for the requested date.');
}
const idx = 0;
const maxTemp = data.daily.temperature_2m_max[idx];
const minTemp = data.daily.temperature_2m_min[idx];
const weatherCode = data.daily.weather_code[idx];
const weather = getWeatherInfo(weatherCode);
const hourlyTemps = data.hourly ? data.hourly.temperature_2m : [];
const hourlyTimes = data.hourly ? data.hourly.time : [];
const card = document.getElementById('card');
card.innerHTML = `
<div class="header">
<div>
<div class="location">
<svg class="location-icon" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/>
</svg>
<span class="location-name">${name}</span>
</div>
<div class="date">${formatDate(dateStr)}</div>
</div>
<div class="weather-icon">${weatherIconSVG(weather.icon)}</div>
</div>
<div class="summary">
<div class="stat stat-max">
<div class="stat-label">High</div>
<div class="stat-value">${maxTemp.toFixed(1)}<span class="unit">°C</span></div>
</div>
<div class="stat stat-min">
<div class="stat-label">Low</div>
<div class="stat-value">${minTemp.toFixed(1)}<span class="unit">°C</span></div>
</div>
<div class="stat stat-condition">
<div class="stat-label">Condition</div>
<div class="stat-value">${weather.label}</div>
</div>
</div>
<div class="hourly-section">
<div class="hourly-header">Hourly Temperature</div>
<div class="hourly-scroll">
${hourlyTimes.map((t, i) => {
const temp = hourlyTemps[i];
const hour = new Date(t + 'Z').getUTCHours();
const tempVal = temp !== null && temp !== undefined ? `${parseFloat(temp).toFixed(1)}°` : '—';
return `<div class="hour-item"><div class="hour-time">${String(hour).padStart(2, '0')}:00</div><div class="hour-temp">${tempVal}</div></div>`;
}).join('')}
</div>
<div class="hourly-chart">
${renderChart(hourlyTemps)}
</div>
</div>
`;
})
.catch(err => {
console.error('Weather fetch error:', err);
renderError(`Could not retrieve weather data from the API.<br><span style="color: var(--text-muted); font-size: 12px; margin-top: 8px; display: inline-block;">${err.message}</span>`);
});
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 19,134 | html / css / js | 394 / 5,849 / 12,891 |
|---|---|---|---|
| dom 节点 | 12 | dom 深度 | 5 |
| css 规则 | 44 | 含 js | 是 |
| brightness | 29.3 | contrast | 12.2 |
| colorfulness | 14.1 | 留白 | 92.5% |
该 slot 的 telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 157.5 s |
| cost | — | request id | — |
config.json574 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_OPENCODE_KEY",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "qwen3.6-plus--cli--opencode--dev",
"effort": null,
"family": "qwen",
"m": {
"min": 2,
"q": 2
},
"model_id": "qwen3.6-plus",
"protocol": "cli",
"served_model": "qwen3.6-plus",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 398058
},
"transport": "opencode-cli-isolated-xdg-go-subscription",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-18--dev-opencode-cli",
"config_id": "qwen3.6-plus--cli--opencode--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T18:14:27.557480+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T18:13:19.854222+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-17T18:17:08.585192+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T18:14:31.097385+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-17T18:18:39.489516+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T18:17:12.151020+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-17T18:20:07.674802+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T18:18:42.138900+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
}
}
}