deepseek-v4-flash-vision-exp @ medium · api
apimedium
- config
- deepseek-v4-flash-vision-exp-eff-medium--api--official--dev
- batch
- 2026-07-19--unified
- transport
- deepseek-official-api
- protocol
- api · metered
- served model
- deepseek-v4-flash-vision-exp
- captured
- Jul 18, 2026, 11:54 AM · N=4
variant
live
slot 0 · P-q · sandboxed iframe

delivered in a markdown fence — the model wrapped its HTML in a code fence; extraction stripped it. Recorded here for traceability.
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
- datenot-foundno-parseable-date
- max tempambiguousinsufficient-distinct-temperature-nodes
- min tempambiguousinsufficient-distinct-temperature-nodes
- 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 lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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;
background: linear-gradient(135deg, #0b0e14 0%, #1a1a2e 50%, #16213e 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
color: #e8e8f0;
padding: 24px;
overflow-x: hidden;
}
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: radial-gradient(ellipse at 30% 20%, rgba(108, 99, 255, 0.15), transparent 50%),
radial-gradient(ellipse at 80% 80%, rgba(0, 180, 255, 0.1), transparent 50%);
pointer-events: none;
z-index: 0;
}
.weather-card {
position: relative;
z-index: 1;
width: 720px;
max-width: 100%;
border-radius: 32px;
background: linear-gradient(145deg, rgba(22, 22, 35, 0.92), rgba(15, 15, 30, 0.96));
border: 1px solid rgba(255, 255, 255, 0.08);
box-shadow: 0 8px 40px rgba(0, 0, 0, 0.45), 0 1px 0 rgba(255, 255, 255, 0.06) inset;
padding: 36px 40px 40px;
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
animation: fadeIn 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.weather-card::after {
content: '';
position: absolute;
top: -80px;
right: -80px;
width: 240px;
height: 240px;
background: radial-gradient(circle, rgba(255, 255, 255, 0.04), transparent 70%);
border-radius: 50%;
pointer-events: none;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(16px) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 28px;
position: relative;
z-index: 2;
}
.location-info {
display: flex;
align-items: center;
gap: 10px;
}
.location-icon {
font-size: 20px;
opacity: 0.85;
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}
.location-name {
font-size: 22px;
font-weight: 600;
letter-spacing: -0.3px;
background: linear-gradient(90deg, #fff, #c9d4ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.date-badge {
background: rgba(255, 255, 255, 0.07);
border-radius: 22px;
padding: 6px 16px;
font-size: 13px;
font-weight: 500;
letter-spacing: 0.6px;
text-transform: uppercase;
color: rgba(255, 255, 255, 0.8);
border: 1px solid rgba(255, 255, 255, 0.06);
backdrop-filter: blur(8px);
display: flex;
align-items: center;
gap: 6px;
}
.date-badge .calendar-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: #6ee7b7;
display: inline-block;
}
.weather-main {
display: flex;
align-items: center;
margin-bottom: 28px;
position: relative;
z-index: 2;
gap: 32px;
}
.weather-icon-large {
font-size: 88px;
line-height: 1;
filter: drop-shadow(0 8px 20px rgba(0, 0, 0, 0.3));
background: linear-gradient(145deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02));
border-radius: 24px;
padding: 20px;
display: flex;
align-items: center;
justify-content: center;
width: 120px;
height: 120px;
border: 1px solid rgba(255, 255, 255, 0.05);
}
.temperature-section {
flex: 1;
}
.temp-label {
font-size: 13px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: rgba(255, 255, 255, 0.55);
font-weight: 600;
margin-bottom: 4px;
}
.current-temp {
font-size: 72px;
font-weight: 200;
line-height: 1.1;
letter-spacing: -3px;
color: #fff;
}
.condition {
font-size: 16px;
color: rgba(255, 255, 255, 0.75);
letter-spacing: 0.3px;
margin-top: 4px;
display: flex;
align-items: center;
gap: 8px;
}
.condition-dot {
width: 6px;
height: 6px;
border-radius: 50%;
display: inline-block;
background: #6ee7b7;
}
.temp-range {
display: flex;
gap: 16px;
margin-bottom: 28px;
position: relative;
z-index: 2;
}
.temp-range-item {
flex: 1;
background: linear-gradient(145deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.03));
border-radius: 20px;
padding: 14px 18px;
display: flex;
align-items: center;
gap: 10px;
border: 1px solid rgba(255, 255, 255, 0.04);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.temp-range-item:hover {
transform: translateY(-2px);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}
.temp-range-icon {
font-size: 18px;
opacity: 0.8;
}
.temp-range-label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 1px;
color: rgba(255, 255, 255, 0.55);
font-weight: 600;
}
.temp-range-value {
font-size: 22px;
font-weight: 600;
margin-left: auto;
color: #fff;
letter-spacing: -0.5px;
}
.divider {
height: 1px;
background: linear-gradient(90deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.08));
margin: 4px 0 24px;
position: relative;
z-index: 2;
}
.hourly-section {
position: relative;
z-index: 2;
}
.hourly-title {
font-size: 13px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: rgba(255, 255, 255, 0.55);
margin-bottom: 16px;
font-weight: 600;
display: flex;
align-items: center;
gap: 8px;
}
.hourly-title .icon {
font-size: 14px;
}
.hourly-chart-wrap {
background: rgba(0, 0, 0, 0.15);
border-radius: 20px;
padding: 16px 12px 8px;
border: 1px solid rgba(255, 255, 255, 0.04);
}
.hourly-chart-wrap svg {
width: 100%;
height: auto;
display: block;
}
.loading,
.error-message {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 360px;
text-align: center;
}
.loading-spinner {
width: 36px;
height: 36px;
border: 3px solid rgba(255, 255, 255, 0.15);
border-top-color: rgba(255, 255, 255, 0.7);
border-radius: 50%;
animation: spin 0.8s linear infinite;
margin-bottom: 20px;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.error-message {
padding: 40px;
}
.error-message .error-icon {
font-size: 56px;
margin-bottom: 16px;
}
.error-message h3 {
font-size: 18px;
margin-bottom: 8px;
color: #e8e8f0;
}
.error-message p {
font-size: 14px;
color: rgba(255, 255, 255, 0.5);
line-height: 1.5;
max-width: 340px;
}
.temp-grid {
display: grid;
grid-template-columns: 1fr auto;
gap: 4px 20px;
margin-top: 12px;
font-size: 14px;
color: rgba(255, 255, 255, 0.6);
}
</style>
</head>
<body>
<div class="weather-card" id="weatherCard">
<div id="cardContent">
<div class="loading">
<div class="loading-spinner"></div>
<p style="color:rgba(255,255,255,0.6); font-size:15px;">Loading weather data…</p>
</div>
</div>
</div>
<script>
(function() {
// ---- Parse query parameters ----
const params = new URLSearchParams(window.location.search);
let lat = parseFloat(params.get('lat'));
let lon = parseFloat(params.get('lon'));
let name = params.get('name') || 'Berlin';
let date = params.get('date') || '';
// Validate lat/lon
if (isNaN(lat)) lat = 52.52;
if (isNaN(lon)) lon = 13.405;
// Validate date format YYYY-MM-DD
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
if (!date || !dateRegex.test(date)) {
date = new Date().toISOString().slice(0, 10);
}
// Sanitize name to prevent HTML injection
function escapeHtml(str) {
const div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
// ---- Determine API path ----
const today = new Date().toISOString().slice(0, 10);
const apiPath = (date < today) ? '/api/om/archive' : '/api/om/forecast';
// ---- Build API URL ----
const url = new URL(apiPath, window.location.origin);
url.searchParams.set('latitude', lat);
url.searchParams.set('longitude', lon);
url.searchParams.set('daily', 'temperature_2m_max,temperature_2m_min,weather_code');
url.searchParams.set('hourly', 'temperature_2m');
url.searchParams.set('timezone', 'UTC');
url.searchParams.set('temperature_unit', 'celsius');
url.searchParams.set('start_date', date);
url.searchParams.set('end_date', date);
const cardContent = document.getElementById('cardContent');
const card = document.getElementById('weatherCard');
// ---- Weather code mapping ----
const weatherMap = {
0: { desc: 'Clear Sky', icon: '☀️' },
1: { desc: 'Mainly Clear', icon: '🌤️' },
2: { desc: 'Partly Cloudy', icon: '⛅' },
3: { desc: 'Overcast', icon: '☁️' },
45: { desc: 'Foggy', icon: '🌫️' },
48: { desc: 'Rime Fog', icon: '🌫️' },
51: { desc: 'Light Drizzle', icon: '🌦️' },
53: { desc: 'Drizzle', icon: '🌦️' },
55: { desc: 'Heavy Drizzle', icon: '🌧️' },
56: { desc: 'Freezing Drizzle', icon: '🌧️' },
57: { desc: 'Freezing Drizzle', icon: '🌧️' },
61: { desc: 'Light Rain', icon: '🌧️' },
63: { desc: 'Rain', icon: '🌧️' },
65: { desc: 'Heavy Rain', icon: '🌧️' },
66: { desc: 'Freezing Rain', icon: '🌧️' },
67: { desc: 'Freezing Rain', icon: '🌧️' },
71: { desc: 'Light Snow', icon: '🌨️' },
73: { desc: 'Snow', icon: '🌨️' },
75: { desc: 'Heavy Snow', icon: '❄️' },
77: { desc: 'Snow Grains', icon: '🌨️' },
80: { desc: 'Light Rain Showers', icon: '🌦️' },
81: { desc: 'Rain Showers', icon: '🌧️' },
82: { desc: 'Violent Showers', icon: '🌧️' },
85: { desc: 'Light Snow Showers', icon: '🌨️' },
86: { desc: 'Snow Showers', icon: '❄️' },
95: { desc: 'Thunderstorm', icon: '⛈️' },
96: { desc: 'Thunderstorm + Hail', icon: '⛈️' },
99: { desc: 'Thunderstorm + Hail', icon: '⛈️' }
};
function getWeatherInfo(code) {
return weatherMap[code] || { desc: 'Unknown', icon: '🌡️' };
}
// ---- Format date ----
function formatDate(dateStr) {
try {
const d = new Date(dateStr + 'T00:00:00Z');
return d.toLocaleDateString('en-US', {
weekday: 'short',
month: 'short',
day: 'numeric',
timeZone: 'UTC'
});
} catch (e) {
return dateStr;
}
}
// ---- Build hourly SVG chart ----
function renderChart(hourlyTimes, hourlyTemps, dailyMin, dailyMax) {
if (hourlyTemps.length === 0) {
return '<div style="text-align:center; color:rgba(255,255,255,0.5); padding:20px;">No hourly data available</div>';
}
const width = 640;
const height = 140;
const padding = { top: 14, right: 16, bottom: 28, left: 44 };
const chartWidth = width - padding.left - padding.right;
const chartHeight = height - padding.top - padding.bottom;
// Extract hours
const hours = hourlyTimes.map(function(t) {
const parts = t.split('T');
return parseInt(parts[1].split(':')[0]);
});
// Temperature range for chart
const allTemps = hourlyTemps.slice();
const tempMin = Math.min(dailyMin, Math.min.apply(null, allTemps));
const tempMax = Math.max(dailyMax, Math.max.apply(null, allTemps));
const paddedMin = tempMin - 2;
const paddedMax = tempMax + 2;
const paddedRange = Math.max(paddedMax - paddedMin, 1);
function mapY(temp) {
const ratio = (temp - paddedMin) / paddedRange;
return padding.top + chartHeight - ratio * chartHeight;
}
function mapX(hour) {
return padding.left + (hour / 23) * chartWidth;
}
let svg = '';
svg += '<svg viewBox="0 0 ' + width + ' ' + height + '" preserveAspectRatio="xMidYMid meet" style="width:100%;height:auto;">';
// Defs
svg += '<defs>';
svg += '<linearGradient id="tempArea" x1="0" y1="0" x2="0" y2="1">';
svg += '<stop offset="0%" stop-color="rgba(255,255,255,0.25)"/>';
svg += '<stop offset="100%" stop-color="rgba(255,255,255,0)"/>';
svg += '</linearGradient>';
svg += '</defs>';
// Grid lines
for (let i = 0; i <= 4; i++) {
const gy = padding.top + (i / 4) * chartHeight;
svg += '<line x1="' + padding.left + '" y1="' + gy + '" x2="' + (width - padding.right) + '" y2="' + gy +
'" stroke="rgba(255,255,255,0.07)" stroke-width="1" stroke-dasharray="4,4"/>';
const tempVal = paddedMax - (i / 4) * paddedRange;
svg += '<text x="' + (padding.left - 8) + '" y="' + (gy + 4) + '" fill="rgba(255,255,255,0.45)" font-size="10" text-anchor="end" font-family="monospace">' +
Math.round(tempVal) + '°</text>';
}
// Build line path
let linePath = '';
let areaPath = '';
for (let i = 0; i < hourlyTemps.length; i++) {
const xi = mapX(hours[i]);
const yi = mapY(hourlyTemps[i]);
if (i === 0) {
linePath += 'M ' + xi + ' ' + yi;
areaPath += 'M ' + xi + ' ' + (padding.top + chartHeight) + ' L ' + xi + ' ' + yi;
} else {
linePath += ' L ' + xi + ' ' + yi;
areaPath += ' L ' + xi + ' ' + yi;
}
}
const firstX = mapX(hours[0]);
const lastX = mapX(hours[hours.length - 1]);
areaPath += ' L ' + lastX + ' ' + (padding.top + chartHeight) + ' L ' + firstX + ' ' + (padding.top + chartHeight) + ' Z';
// Draw area
svg += '<path d="' + areaPath + '" fill="url(#tempArea)" stroke="none"/>';
// Draw line
svg += '<path d="' + linePath + '" fill="none" stroke="rgba(255,255,255,0.85)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>';
// Draw dots
for (let i = 0; i < hourlyTemps.length; i++) {
const xi = mapX(hours[i]);
const yi = mapY(hourlyTemps[i]);
const isMax = hourlyTemps[i] === dailyMax;
const isMin = hourlyTemps[i] === dailyMin;
if (isMax || isMin) {
svg += '<circle cx="' + xi + '" cy="' + yi + '" r="5" fill="#fff" stroke="rgba(0,0,0,0.3)" stroke-width="2"/>';
svg += '<text x="' + xi + '" y="' + (yi - 10) + '" fill="#fff" font-size="10" text-anchor="middle" font-weight="bold" font-family="sans-serif">' +
Math.round(hourlyTemps[i]) + '°</text>';
} else {
svg += '<circle cx="' + xi + '" cy="' + yi + '" r="3" fill="rgba(255,255,255,0.7)" stroke="rgba(0,0,0,0.2)" stroke-width="1"/>';
}
}
// X-axis labels
const labelHours = [0, 6, 12, 18, 23];
for (let j = 0; j < labelHours.length; j++) {
const h = labelHours[j];
const xi = mapX(h);
svg += '<text x="' + xi + '" y="' + (height - 6) + '" fill="rgba(255,255,255,0.55)" font-size="10" text-anchor="middle" font-family="sans-serif">' +
h + ':00</text>';
}
svg += '</svg>';
return svg;
}
// ---- Fetch and render ----
fetch(url)
.then(function(response) {
if (!response.ok) {
throw new Error('HTTP ' + response.status);
}
return response.json();
})
.then(function(data) {
// Validate response
if (!data.daily || !data.daily.temperature_2m_max || data.daily.temperature_2m_max.length === 0) {
throw new Error('No weather data available for this date.');
}
const maxTemp = data.daily.temperature_2m_max[0];
const minTemp = data.daily.temperature_2m_min[0];
const weatherCode = data.daily.weather_code[0];
const weatherInfo = getWeatherInfo(weatherCode);
// Extract hourly data for the requested date
const hourlyTimes = [];
const hourlyTemps = [];
if (data.hourly && data.hourly.temperature_2m && data.hourly.time) {
for (let i = 0; i < data.hourly.time.length; i++) {
if (data.hourly.time[i].startsWith(date) && data.hourly.temperature_2m[i] !== null) {
hourlyTimes.push(data.hourly.time[i]);
hourlyTemps.push(data.hourly.temperature_2m[i]);
}
}
}
// Build HTML
const safeName = escapeHtml(name);
const formattedDate = escapeHtml(formatDate(date));
let html = '';
html += '<div class="card-header">';
html += ' <div class="location-info">';
html += ' <span class="location-icon">📍</span>';
html += ' <span class="location-name">' + safeName + '</span>';
html += ' </div>';
html += ' <div class="date-badge"><span class="calendar-dot"></span>' + formattedDate + '</div>';
html += '</div>';
html += '<div class="weather-main">';
html += ' <div class="weather-icon-large">' + weatherInfo.icon + '</div>';
html += ' <div class="temperature-section">';
html += ' <div class="temp-label">Daily Maximum</div>';
html += ' <div class="current-temp">' + Math.round(maxTemp) + '°</div>';
html += ' <div class="condition"><span class="condition-dot"></span>' + weatherInfo.desc + '</div>';
html += ' </div>';
html += '</div>';
html += '<div class="temp-range">';
html += ' <div class="temp-range-item">';
html += ' <span class="temp-range-icon">▲</span>';
html += ' <span class="temp-range-label">Max</span>';
html += ' <span class="temp-range-value">' + Math.round(maxTemp) + '°C</span>';
html += ' </div>';
html += ' <div class="temp-range-item">';
html += ' <span class="temp-range-icon">▼</span>';
html += ' <span class="temp-range-label">Min</span>';
html += ' <span class="temp-range-value">' + Math.round(minTemp) + '°C</span>';
html += ' </div>';
html += '</div>';
html += '<div class="divider"></div>';
html += '<div class="hourly-section">';
html += ' <div class="hourly-title"><span class="icon">⏱</span> Hourly Temperatures</div>';
html += ' <div class="hourly-chart-wrap">';
html += renderChart(hourlyTimes, hourlyTemps, minTemp, maxTemp);
html += ' </div>';
html += '</div>';
cardContent.innerHTML = html;
})
.catch(function(error) {
cardContent.innerHTML =
'<div class="error-message">' +
' <div class="error-icon">😔</div>' +
' <h3>Couldn\'t Load Weather</h3>' +
' <p>' + escapeHtml(error.message || 'Unknown error') + '</p>' +
'</div>';
});
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 24,281 | html / css / js | 557 / 9,169 / 14,555 |
|---|---|---|---|
| dom nodes | 13 | dom depth | 6 |
| css rules | 42 | js present | yes |
| brightness | 29.5 | contrast | 15.5 |
| colorfulness | 18.0 | whitespace | 85.0% |
This slot's telemetry
| prompt tokens | 400 | completion tokens | 24,713 |
|---|---|---|---|
| total tokens | 25,113 | wall | 211.1 s |
| cost | — | request id | — |
config.json625 B
{
"N": 4,
"auth": {
"credential_ref": "WCB_DEEPSEEK_KEY",
"method": "api-key"
},
"billing": "metered",
"config_id": "deepseek-v4-flash-vision-exp-eff-medium--api--official--dev",
"effort": "medium",
"family": "deepseek",
"m": {
"min": 4,
"q": 4
},
"model_id": "deepseek-v4-flash-vision-exp",
"protocol": "api",
"served_model": "deepseek-v4-flash-vision-exp",
"telemetry": {
"completion_tokens": 186039,
"cost_usd": null,
"prompt_tokens": 3168,
"total_tokens": 189207,
"wall_ms": 1591172
},
"transport": "deepseek-official-api",
"vendor_sanction_ref": null
}send-log4.7 KB
{
"N": 4,
"batch_id": "2026-08-22--deepseek-vision-exp",
"config_id": "deepseek-v4-flash-vision-exp-eff-medium--api--official--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-09-02T01:38:41.160008+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:34:51.369460+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-09-02T01:42:15.819065+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:38:44.721337+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-09-02T01:45:17.975110+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:42:19.885934+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-09-02T01:49:37.303644+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:45:21.770907+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-09-02T01:54:01.109796+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:49:40.875072+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-09-02T01:55:39.185002+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:54:04.490663+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-09-02T01:58:18.606507+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:55:42.186344+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-09-02T02:01:47.595091+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-09-02T01:58:22.285209+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
}
}
}