deepseek-v4-flash-0731 @ minimal · api
apiminimal
- config
- deepseek-v4-flash-0731-eff-minimal--api--official--dev
- batch
- 2026-07-19--unified
- transport
- deepseek-official-api
- protocol
- api · metered
- served model
- deepseek-v4-flash
- 采集于
- 2026年7月18日 11:54 · N=4
variant
live
slot 0 · P-q · sandboxed iframe

输出带 markdown 围栏 — 模型把 HTML 包在代码围栏里返回,提取时已剥离;记录在此以便追溯。
截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
claude-opus-4-6 @medium · kiro0.72deepseek-v4-flash @high · api0.71mimo-v2.5-pro · go0.71claude-opus-4-6 @high · kiro0.71glm-5 · kiro0.70最远
north-mini-code-free · api0.50gpt-5.4 @high · codex-oauth0.53gpt-5.5 @low · codex-oauth0.54gpt-5.6-luna @medium · codex-oauth0.54qwen3.5-plus · go0.55限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmatch展示值:25.3
- min tempmatch展示值:16
- hourlymatchcoverage 24/24 · 24 命中 · 0 不符 · 0 未展示
- request sidematch0 处违规
extractor fidelity-extractor-v1+Berlin-2026-07-15
源码 —— 原始模型输出,一字节未改
下载 card.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Weather Card</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #0b0c10, #1f2833, #131b2a);
padding: 32px;
}
.page {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
min-height: 100vh;
}
.weather-card {
width: 740px;
border-radius: 32px;
padding: 36px;
color: #fff;
box-shadow: 0 25px 80px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.06);
position: relative;
overflow: hidden;
transition: background 0.6s ease, transform 0.3s ease, box-shadow 0.3s ease;
}
.weather-card:hover {
transform: translateY(-4px);
box-shadow: 0 32px 90px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.08);
}
.weather-card::before {
content: '';
position: absolute;
top: -60%;
right: -30%;
width: 60%;
height: 60%;
background: radial-gradient(circle, rgba(255, 255, 255, 0.12) 0%, transparent 70%);
border-radius: 50%;
pointer-events: none;
}
.card-top {
display: flex;
justify-content: space-between;
align-items: center;
background: rgba(255, 255, 255, 0.12);
border-radius: 20px;
padding: 14px 22px;
backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.08);
margin-bottom: 28px;
}
.location {
display: flex;
align-items: center;
gap: 8px;
font-size: 18px;
font-weight: 600;
}
.location-icon {
font-size: 20px;
}
.date {
font-size: 14px;
opacity: 0.85;
font-weight: 500;
}
.weather-main {
text-align: center;
margin: 20px 0 24px;
}
.weather-icon {
font-size: 88px;
display: block;
line-height: 1.1;
margin-bottom: 10px;
filter: drop-shadow(0 6px 20px rgba(0, 0, 0, 0.25));
transition: transform 0.3s ease;
}
.weather-card:hover .weather-icon {
transform: scale(1.05);
}
.weather-condition {
font-size: 24px;
font-weight: 500;
letter-spacing: 0.3px;
text-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
}
.temp-range {
display: flex;
justify-content: center;
align-items: center;
gap: 32px;
margin: 10px 0 28px;
}
.temp-item {
display: flex;
flex-direction: column;
align-items: center;
background: rgba(255, 255, 255, 0.1);
border-radius: 20px;
padding: 14px 30px;
backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.06);
min-width: 130px;
}
.temp-label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 1.5px;
opacity: 0.7;
font-weight: 600;
margin-bottom: 4px;
}
.temp-value {
font-size: 32px;
font-weight: 700;
line-height: 1.2;
}
.temp-divider {
font-size: 24px;
opacity: 0.4;
font-weight: 300;
}
.hourly-section {
background: rgba(255, 255, 255, 0.09);
border-radius: 24px;
padding: 24px;
backdrop-filter: blur(14px);
border: 1px solid rgba(255, 255, 255, 0.07);
}
.hourly-title {
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1.5px;
opacity: 0.8;
margin-bottom: 16px;
display: flex;
align-items: center;
gap: 8px;
}
.hourly-title::after {
content: '';
flex: 1;
height: 1px;
background: rgba(255, 255, 255, 0.15);
}
.hourly-chart {
margin-bottom: 20px;
}
.hourly-chart svg {
width: 100%;
height: auto;
display: block;
}
.hourly-grid {
display: grid;
grid-template-columns: repeat(8, 1fr);
gap: 6px;
}
.hourly-item {
background: rgba(255, 255, 255, 0.06);
border-radius: 10px;
padding: 6px 2px;
text-align: center;
transition: background 0.2s, transform 0.2s;
cursor: default;
}
.hourly-item:hover {
background: rgba(255, 255, 255, 0.18);
transform: scale(1.04);
}
.hourly-item .hour {
font-size: 10px;
opacity: 0.6;
display: block;
font-weight: 600;
letter-spacing: 0.5px;
}
.hourly-item .temp {
font-size: 13px;
font-weight: 600;
display: block;
margin-top: 2px;
}
.bg-cold {
background: rgba(20, 80, 200, 0.28) !important;
}
.bg-cool {
background: rgba(0, 130, 220, 0.22) !important;
}
.bg-mild {
background: rgba(0, 170, 100, 0.18) !important;
}
.bg-warm {
background: rgba(220, 170, 0, 0.2) !important;
}
.bg-hot {
background: rgba(220, 90, 0, 0.24) !important;
}
.bg-very-hot {
background: rgba(220, 40, 0, 0.3) !important;
}
.error-message {
display: none;
text-align: center;
background: rgba(0, 0, 0, 0.35);
border-radius: 16px;
padding: 20px;
margin-top: 20px;
font-size: 16px;
line-height: 1.5;
color: #fff;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.error-message .error-icon {
font-size: 32px;
display: block;
margin-bottom: 8px;
}
.loading {
text-align: center;
padding: 60px 20px;
color: rgba(255, 255, 255, 0.6);
}
.loading-spinner {
width: 40px;
height: 40px;
border: 3px solid rgba(255, 255, 255, 0.2);
border-top-color: rgba(255, 255, 255, 0.8);
border-radius: 50%;
margin: 0 auto 16px;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.chart-tooltip {
fill: rgba(255, 255, 255, 0.85);
font-size: 10px;
font-weight: 600;
text-anchor: middle;
}
</style>
</head>
<body>
<div class="page">
<div class="weather-card" id="weatherCard">
<div id="cardContent">
<div class="loading">
<div class="loading-spinner"></div>
Loading weather data…
</div>
</div>
<div class="error-message" id="error">
<span class="error-icon">⚠️</span>
Weather data is currently unavailable.<br>Please try again later.
</div>
</div>
</div>
<script>
(function() {
'use strict';
// ── Parse URL params ──
const params = new URLSearchParams(window.location.search);
const lat = params.get('lat') || '52.52';
const lon = params.get('lon') || '13.405';
const name = params.get('name') || 'Berlin';
let dateParam = params.get('date') || new Date().toISOString().split('T')[0];
dateParam = dateParam.substring(0, 10);
// Validate date format
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
if (!dateRegex.test(dateParam)) {
dateParam = new Date().toISOString().split('T')[0];
}
// ── Determine API endpoint ──
const todayStr = new Date().toISOString().split('T')[0];
const isPast = dateParam < todayStr;
const apiBase = isPast ? '/api/om/archive' : '/api/om/forecast';
const apiUrl = apiBase +
'?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=' + dateParam +
'&end_date=' + dateParam;
// ── Weather condition mapping ──
const weatherCodes = {
0: { label: 'Clear sky', emoji: '☀️', gradient: 'linear-gradient(135deg, #0a8ea8, #3ec6e0)' },
1: { label: 'Mainly clear', emoji: '🌤️', gradient: 'linear-gradient(135deg, #0a8ea8, #3ec6e0)' },
2: { label: 'Partly cloudy', emoji: '⛅', gradient: 'linear-gradient(135deg, #4a6c8e, #7a9aae)' },
3: { label: 'Overcast', emoji: '☁️', gradient: 'linear-gradient(135deg, #3a5068, #64788c)' },
45: { label: 'Foggy', emoji: '🌫️', gradient: 'linear-gradient(135deg, #4a5568, #718096)' },
48: { label: 'Rime fog', emoji: '🌫️', gradient: 'linear-gradient(135deg, #4a5568, #718096)' },
51: { label: 'Light drizzle', emoji: '🌦️', gradient: 'linear-gradient(135deg, #1a3a5c, #2d5a8a)' },
53: { label: 'Moderate drizzle', emoji: '🌦️', gradient: 'linear-gradient(135deg, #1a3a5c, #2d5a8a)' },
55: { label: 'Dense drizzle', emoji: '🌧️', gradient: 'linear-gradient(135deg, #152838, #1a3a5c)' },
56: { label: 'Freezing drizzle', emoji: '🌧️', gradient: 'linear-gradient(135deg, #152838, #1a3a5c)' },
57: { label: 'Freezing drizzle', emoji: '🌧️', gradient: 'linear-gradient(135deg, #152838, #1a3a5c)' },
61: { label: 'Light rain', emoji: '🌦️', gradient: 'linear-gradient(135deg, #1a3a5c, #2d5a8a)' },
63: { label: 'Moderate rain', emoji: '🌧️', gradient: 'linear-gradient(135deg, #1a3a5c, #2d5a8a)' },
65: { label: 'Heavy rain', emoji: '🌧️', gradient: 'linear-gradient(135deg, #0f1e2e, #1a3a5c)' },
66: { label: 'Freezing rain', emoji: '🌧️', gradient: 'linear-gradient(135deg, #0f1e2e, #1a3a5c)' },
67: { label: 'Heavy freezing rain', emoji: '🌧️', gradient: 'linear-gradient(135deg, #0f1e2e, #1a3a5c)' },
71: { label: 'Light snow', emoji: '🌨️', gradient: 'linear-gradient(135deg, #3a5a7a, #6a8a9e)' },
73: { label: 'Moderate snow', emoji: '🌨️', gradient: 'linear-gradient(135deg, #3a5a7a, #6a8a9e)' },
75: { label: 'Heavy snow', emoji: '❄️', gradient: 'linear-gradient(135deg, #2a3a4a, #4a6a7a)' },
77: { label: 'Snow grains', emoji: '❄️', gradient: 'linear-gradient(135deg, #2a3a4a, #4a6a7a)' },
80: { label: 'Light showers', emoji: '🌦️', gradient: 'linear-gradient(135deg, #1a3a5c, #2d5a8a)' },
81: { label: 'Rain showers', emoji: '🌧️', gradient: 'linear-gradient(135deg, #1a3a5c, #2d5a8a)' },
82: { label: 'Violent showers', emoji: '⛈️', gradient: 'linear-gradient(135deg, #0f1e2e, #1a3a5c)' },
85: { label: 'Snow showers', emoji: '🌨️', gradient: 'linear-gradient(135deg, #3a5a7a, #6a8a9e)' },
86: { label: 'Heavy snow showers', emoji: '❄️', gradient: 'linear-gradient(135deg, #2a3a4a, #4a6a7a)' },
95: { label: 'Thunderstorm', emoji: '⛈️', gradient: 'linear-gradient(135deg, #1a1a2e, #2d2d4a)' },
96: { label: 'Thunderstorm w/ hail', emoji: '⛈️', gradient: 'linear-gradient(135deg, #1a1a2e, #2d2d4a)' },
99: { label: 'Thunderstorm w/ hail', emoji: '⛈️', gradient: 'linear-gradient(135deg, #1a1a2e, #2d2d4a)' }
};
function getWeatherInfo(code) {
return weatherCodes[code] || { label: 'Unknown', emoji: '🌡️', gradient: 'linear-gradient(135deg, #4a5568, #718096)' };
}
// ── Helpers ──
function formatTemp(temp) {
if (temp === null || temp === undefined) return '—';
return temp.toFixed(1) + '°C';
}
function formatDate(dateStr) {
const d = new Date(dateStr + 'T00:00:00Z');
return d.toLocaleDateString('en-US', {
weekday: 'long',
month: 'long',
day: 'numeric',
year: 'numeric',
timeZone: 'UTC'
});
}
function tempColorClass(temp) {
if (temp < -5) return 'bg-cold';
if (temp < 0) return 'bg-cool';
if (temp < 10) return 'bg-mild';
if (temp < 18) return 'bg-warm';
if (temp < 25) return 'bg-hot';
return 'bg-very-hot';
}
// ── Render functions ──
function renderWeather(data) {
const daily = data.daily;
const hourly = data.hourly;
if (!daily || !hourly) {
showError();
return;
}
const maxTemp = daily.temperature_2m_max[0];
const minTemp = daily.temperature_2m_min[0];
const weatherCode = daily.weather_code[0];
const weather = getWeatherInfo(weatherCode);
const card = document.getElementById('weatherCard');
card.style.background = weather.gradient;
// Build hourly data
const hourlyData = [];
if (hourly.time && hourly.temperature_2m) {
for (let i = 0; i < hourly.time.length; i++) {
if (hourly.time[i].startsWith(dateParam)) {
const hour = parseInt(hourly.time[i].substring(11, 13));
hourlyData.push({ hour: hour, temp: hourly.temperature_2m[i] });
}
}
}
// Build HTML
let html = '';
html += '<div class="card-top">';
html += ' <div class="location"><span class="location-icon">📍</span><span>' + escapeHtml(name) + '</span></div>';
html += ' <div class="date">' + formatDate(dateParam) + '</div>';
html += '</div>';
html += '<div class="weather-main">';
html += ' <span class="weather-icon">' + weather.emoji + '</span>';
html += ' <div class="weather-condition">' + weather.label + '</div>';
html += '</div>';
html += '<div class="temp-range">';
html += ' <div class="temp-item">';
html += ' <span class="temp-label">Min</span>';
html += ' <span class="temp-value">' + formatTemp(minTemp) + '</span>';
html += ' </div>';
html += ' <div class="temp-divider">·</div>';
html += ' <div class="temp-item">';
html += ' <span class="temp-label">Max</span>';
html += ' <span class="temp-value">' + formatTemp(maxTemp) + '</span>';
html += ' </div>';
html += '</div>';
html += '<div class="hourly-section">';
html += ' <div class="hourly-title">Hourly Temperatures</div>';
html += ' <div class="hourly-chart" id="hourlyChart"></div>';
html += ' <div class="hourly-grid" id="hourlyGrid"></div>';
html += '</div>';
document.getElementById('cardContent').innerHTML = html;
// Render chart
renderChart(hourlyData);
// Render grid
renderGrid(hourlyData);
}
function renderChart(hourlyData) {
const chartEl = document.getElementById('hourlyChart');
if (!chartEl) return;
if (hourlyData.length === 0) {
chartEl.innerHTML = '<p style="text-align:center;opacity:0.6;font-size:14px;padding:20px;">No hourly data available.</p>';
return;
}
const width = 600;
const height = 150;
const pad = { top: 18, right: 18, bottom: 18, left: 18 };
const temps = hourlyData.map(d => d.temp);
let minTemp = Math.min(...temps);
let maxTemp = Math.max(...temps);
if (minTemp === maxTemp) { minTemp -= 1;
maxTemp += 1; }
const range = maxTemp - minTemp || 1;
const padding = range * 0.15;
minTemp -= padding;
maxTemp += padding;
const expandedRange = maxTemp - minTemp;
const chartW = width - pad.left - pad.right;
const chartH = height - pad.top - pad.bottom;
const points = hourlyData.map((d, i) => {
const x = pad.left + (i / (hourlyData.length - 1)) * chartW;
const y = pad.top + (1 - (d.temp - minTemp) / expandedRange) * chartH;
return { x: x, y: y, hour: d.hour, temp: d.temp };
});
const path = points.map((p, i) => {
return (i === 0 ? 'M' : 'L') + ' ' + p.x.toFixed(1) + ' ' + p.y.toFixed(1);
}).join(' ');
const areaPath = path +
' L ' + points[points.length - 1].x.toFixed(1) + ' ' + (height - pad.bottom).toFixed(1) +
' L ' + pad.left + ' ' + (height - pad.bottom).toFixed(1) + ' Z';
let svg = '<svg viewBox="0 0 ' + width + ' ' + height + '" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">';
svg += '<defs>';
svg += '<linearGradient id="areaGrad" x1="0" y1="0" x2="0" y2="1">';
svg += '<stop offset="0%" stop-color="rgba(255,255,255,0.45)"/>';
svg += '<stop offset="100%" stop-color="rgba(255,255,255,0)"/>';
svg += '</linearGradient>';
svg += '<filter id="glow"><feGaussianBlur stdDeviation="2" result="blur"/><feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge></filter>';
svg += '</defs>';
// Grid lines
for (let i = 0; i <= 4; i++) {
const gy = pad.top + (i / 4) * chartH;
svg += '<line x1="' + pad.left + '" y1="' + gy.toFixed(1) + '" x2="' + (width - pad.right) + '" y2="' + gy
.toFixed(1) + '" stroke="rgba(255,255,255,0.12)" stroke-width="1" stroke-dasharray="4,4"/>';
}
// Area
svg += '<path d="' + areaPath + '" fill="url(#areaGrad)"/>';
// Main line
svg += '<path d="' + path + '" fill="none" stroke="rgba(255,255,255,0.9)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" filter="url(#glow)"/>';
// Points
points.forEach((p, i) => {
if (i % 2 === 0 || i === points.length - 1) {
svg += '<circle cx="' + p.x.toFixed(1) + '" cy="' + p.y.toFixed(1) + '" r="3.5" fill="rgba(255,255,255,0.85)" stroke="rgba(255,255,255,0.3)" stroke-width="1.5"/>';
}
});
// Labels (show every 3rd hour)
points.forEach((p, i) => {
if (i % 4 === 0 || i === points.length - 1) {
const hourLabel = String(p.hour).padStart(2, '0') + ':00';
svg += '<text x="' + p.x.toFixed(1) + '" y="' + (height - 2).toFixed(1) +
'" text-anchor="middle" fill="rgba(255,255,255,0.5)" font-size="9" font-weight="600">' + hourLabel + '</text>';
}
});
svg += '</svg>';
chartEl.innerHTML = svg;
}
function renderGrid(hourlyData) {
const gridEl = document.getElementById('hourlyGrid');
if (!gridEl) return;
if (hourlyData.length === 0) {
gridEl.innerHTML = '<p style="text-align:center;opacity:0.6;font-size:14px;">No hourly data available.</p>';
return;
}
let html = '';
hourlyData.forEach(d => {
const hourLabel = String(d.hour).padStart(2, '0') + ':00';
const tempLabel = d.temp !== null && d.temp !== undefined ? d.temp.toFixed(1) + '°' : '—';
const bgClass = tempColorClass(d.temp);
html += '<div class="hourly-item ' + bgClass + '">';
html += '<span class="hour">' + hourLabel + '</span>';
html += '<span class="temp">' + tempLabel + '</span>';
html += '</div>';
});
gridEl.innerHTML = html;
}
function escapeHtml(str) {
const div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
function showError() {
document.getElementById('cardContent').style.display = 'none';
const error = document.getElementById('error');
error.style.display = 'block';
error.textContent = 'Weather data is currently unavailable. Please try again later.';
}
// ── Fetch ──
async function fetchWeather() {
try {
const response = await fetch(apiUrl);
if (!response.ok) {
throw new Error('API request failed: ' + response.status);
}
const data = await response.json();
if (!data || !data.daily || !data.hourly) {
throw new Error('Invalid API response');
}
renderWeather(data);
} catch (err) {
console.error('Weather fetch error:', err);
showError();
}
}
// ── Init ──
fetchWeather();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 23,857 | html / css / js | 695 / 7,545 / 15,617 |
|---|---|---|---|
| dom 节点 | 15 | dom 深度 | 7 |
| css 规则 | 42 | 含 js | 是 |
| brightness | 59.1 | contrast | 33.8 |
| colorfulness | 38.1 | 留白 | 44.4% |
该 slot 的 telemetry
| prompt tokens | 321 | completion tokens | 22,940 |
|---|---|---|---|
| total tokens | 23,261 | wall | 149.5 s |
| cost | — | request id | — |
config.json603 B
{
"N": 4,
"auth": {
"credential_ref": "WCB_DEEPSEEK_KEY",
"method": "api-key"
},
"billing": "metered",
"config_id": "deepseek-v4-flash-0731-eff-minimal--api--official--dev",
"effort": "minimal",
"family": "deepseek",
"m": {
"min": 4,
"q": 4
},
"model_id": "deepseek-v4-flash-0731",
"protocol": "api",
"served_model": "deepseek-v4-flash",
"telemetry": {
"completion_tokens": 149715,
"cost_usd": null,
"prompt_tokens": 2536,
"total_tokens": 152251,
"wall_ms": 988291
},
"transport": "deepseek-official-api",
"vendor_sanction_ref": null
}send-log4.7 KB
{
"N": 4,
"batch_id": "2026-07-31--official-deepseek-flash-0731",
"config_id": "deepseek-v4-flash-0731-eff-minimal--api--official--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-31T06:29:40.548036+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:27:54.863315+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-31T06:32:15.554549+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:29:46.033194+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-31T06:34:37.755637+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:32:19.284968+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-31T06:36:30.595544+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:34:41.501990+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-31T06:38:40.216475+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:36:34.426382+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-31T06:40:46.110430+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:38:44.015843+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-31T06:42:38.883249+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:40:49.384271+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-31T06:44:50.252860+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-31T06:42:42.095968+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-q"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}