deepseek-v4-pro @ high · api

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

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

within 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 tempambiguousshown: 25max-equals-min
  • min tempambiguousshown: 25max-equals-min
  • 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>
        :root {
            --bg-start: #dce8f0;
            --bg-mid: #c8dae8;
            --bg-end: #b8ccdc;
            --card-bg: rgba(255, 255, 255, 0.75);
            --card-border: rgba(255, 255, 255, 0.6);
            --text-primary: #1a1d28;
            --text-secondary: #4a5568;
            --text-muted: #718096;
            --accent: #5b7fa5;
            --accent-warm: #e8914a;
            --accent-cool: #4a8bc2;
            --accent-hot: #d4684a;
            --accent-cold: #5b8def;
            --divider: rgba(0, 0, 0, 0.08);
            --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
            --shadow-md: 0 8px 32px rgba(0, 0, 0, 0.1), 0 2px 8px rgba(0, 0, 0, 0.06);
            --shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.12), 0 4px 16px rgba(0, 0, 0, 0.06);
            --radius-lg: 22px;
            --radius-md: 14px;
            --radius-sm: 8px;
            --font-sans: 'Inter', 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
            --font-mono: 'SF Mono', 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            width: 1280px;
            height: 800px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: var(--font-sans);
            background: linear-gradient(160deg, #e8eef4 0%, #d5dfe9 25%, #c4d4e2 50%, #bcccdb 75%, #c0d0df 100%);
            background-attachment: fixed;
            overflow: hidden;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
            transition: background 1.2s ease;
        }

        body.cold-bg {
            background: linear-gradient(160deg, #e0e8f4 0%, #cdd9ec 25%, #b8c9e4 50%, #aec0dc 75%, #b4c6e0 100%);
        }

        body.cool-bg {
            background: linear-gradient(160deg, #e2ecf3 0%, #d0dfeb 25%, #bdd0e2 50%, #b4c8db 75%, #bacddc 100%);
        }

        body.mild-bg {
            background: linear-gradient(160deg, #eaf0ee 0%, #dce6e2 25%, #cddbd5 50%, #c4d4ce 75%, #c8d8d2 100%);
        }

        body.warm-bg {
            background: linear-gradient(160deg, #f3ede4 0%, #ece2d5 25%, #e5d7c4 50%, #decfbc 75%, #e0d2c0 100%);
        }

        body.hot-bg {
            background: linear-gradient(160deg, #f5e8de 0%, #f0dcd0 25%, #ebd0c0 50%, #e5c8b6 75%, #e8ccbc 100%);
        }

        .weather-card {
            background: var(--card-bg);
            backdrop-filter: blur(20px);
            -webkit-backdrop-filter: blur(20px);
            border: 1px solid var(--card-border);
            border-radius: var(--radius-lg);
            box-shadow: var(--shadow-lg);
            padding: 40px 44px 36px;
            width: 720px;
            min-height: 520px;
            display: flex;
            flex-direction: column;
            gap: 0;
            transition: all 0.5s ease;
            position: relative;
            overflow: hidden;
        }

        .weather-card::before {
            content: '';
            position: absolute;
            top: -60px;
            right: -60px;
            width: 180px;
            height: 180px;
            border-radius: 50%;
            background: radial-gradient(circle, rgba(180, 200, 220, 0.25) 0%, transparent 70%);
            pointer-events: none;
            transition: background 0.8s ease;
        }

        .weather-card::after {
            content: '';
            position: absolute;
            bottom: -40px;
            left: -40px;
            width: 140px;
            height: 140px;
            border-radius: 50%;
            background: radial-gradient(circle, rgba(190, 210, 230, 0.2) 0%, transparent 70%);
            pointer-events: none;
            transition: background 0.8s ease;
        }

        .card-header {
            display: flex;
            align-items: baseline;
            justify-content: space-between;
            margin-bottom: 8px;
            position: relative;
            z-index: 1;
        }

        .location-name {
            font-size: 28px;
            font-weight: 700;
            color: var(--text-primary);
            letter-spacing: -0.3px;
            line-height: 1.2;
        }

        .location-date {
            font-size: 16px;
            font-weight: 500;
            color: var(--text-secondary);
            letter-spacing: 0.1px;
        }

        .main-display {
            display: flex;
            align-items: center;
            gap: 28px;
            padding: 20px 0 16px;
            position: relative;
            z-index: 1;
        }

        .weather-emoji {
            font-size: 72px;
            line-height: 1;
            filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.08));
            transition: transform 0.4s ease;
            animation: gentleFloat 3s ease-in-out infinite;
        }

        @keyframes gentleFloat {
            0%,
            100% {
                transform: translateY(0);
            }
            50% {
                transform: translateY(-6px);
            }
        }

        .weather-condition {
            font-size: 18px;
            font-weight: 600;
            color: var(--text-primary);
            letter-spacing: 0.1px;
            margin-bottom: 2px;
        }

        .temp-summary {
            display: flex;
            align-items: baseline;
            gap: 16px;
        }

        .temp-max {
            font-size: 48px;
            font-weight: 700;
            color: var(--text-primary);
            letter-spacing: -1px;
            line-height: 1;
        }

        .temp-min {
            font-size: 22px;
            font-weight: 500;
            color: var(--text-muted);
            letter-spacing: -0.2px;
        }

        .temp-separator {
            color: #cbd5e0;
            font-size: 22px;
            font-weight: 300;
            margin: 0 2px;
        }

        .divider {
            height: 1px;
            background: var(--divider);
            margin: 8px 0 20px;
            position: relative;
            z-index: 1;
            border-radius: 1px;
        }

        .hourly-section {
            position: relative;
            z-index: 1;
            flex: 1;
            display: flex;
            flex-direction: column;
        }

        .hourly-label {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-muted);
            text-transform: uppercase;
            letter-spacing: 0.8px;
            margin-bottom: 12px;
        }

        .hourly-scroll {
            display: flex;
            gap: 6px;
            overflow-x: auto;
            padding-bottom: 8px;
            scroll-behavior: smooth;
            -ms-overflow-style: none;
            scrollbar-width: thin;
            scrollbar-color: #cbd5e0 transparent;
        }

        .hourly-scroll::-webkit-scrollbar {
            height: 4px;
        }

        .hourly-scroll::-webkit-scrollbar-track {
            background: transparent;
            border-radius: 4px;
        }

        .hourly-scroll::-webkit-scrollbar-thumb {
            background: #cbd5e0;
            border-radius: 4px;
        }

        .hourly-scroll::-webkit-scrollbar-thumb:hover {
            background: #a0aec0;
        }

        .hourly-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            min-width: 46px;
            flex-shrink: 0;
            gap: 6px;
            padding: 8px 6px;
            border-radius: var(--radius-sm);
            cursor: default;
            transition: background 0.2s ease, transform 0.2s ease;
            position: relative;
        }

        .hourly-item:hover {
            background: rgba(0, 0, 0, 0.03);
            transform: translateY(-2px);
        }

        .hourly-time {
            font-size: 11px;
            font-weight: 500;
            color: var(--text-muted);
            font-family: var(--font-mono);
            letter-spacing: 0.2px;
        }

        .hourly-bar-wrap {
            height: 40px;
            display: flex;
            align-items: flex-end;
            justify-content: center;
            width: 100%;
            position: relative;
        }

        .hourly-bar {
            width: 60%;
            min-width: 14px;
            max-width: 22px;
            border-radius: 6px 6px 3px 3px;
            background: var(--accent-cool);
            transition: height 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), background 0.5s ease;
            position: relative;
            min-height: 4px;
        }

        .hourly-bar.cold-bar {
            background: linear-gradient(180deg, #7eb4f2 0%, #4a80d9 100%);
        }

        .hourly-bar.cool-bar {
            background: linear-gradient(180deg, #7cb8d4 0%, #4a8fb5 100%);
        }

        .hourly-bar.mild-bar {
            background: linear-gradient(180deg, #8cc4a8 0%, #5a9a78 100%);
        }

        .hourly-bar.warm-bar {
            background: linear-gradient(180deg, #e8b87a 0%, #d4944a 100%);
        }

        .hourly-bar.hot-bar {
            background: linear-gradient(180deg, #e8946a 0%, #d4683a 100%);
        }

        .hourly-temp {
            font-size: 11px;
            font-weight: 600;
            color: var(--text-secondary);
            letter-spacing: 0.1px;
        }

        .error-state {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 16px;
            padding: 40px 20px;
            text-align: center;
            position: relative;
            z-index: 1;
            flex: 1;
        }

        .error-icon {
            font-size: 48px;
            opacity: 0.7;
        }

        .error-message {
            font-size: 16px;
            font-weight: 500;
            color: var(--text-secondary);
            line-height: 1.5;
        }

        .loading-state {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 18px;
            padding: 40px 20px;
            position: relative;
            z-index: 1;
            flex: 1;
        }

        .loading-spinner {
            width: 40px;
            height: 40px;
            border: 3px solid #e2e8f0;
            border-top-color: var(--accent-cool);
            border-radius: 50%;
            animation: spin 0.8s linear infinite;
        }

        @keyframes spin {
            to {
                transform: rotate(360deg);
            }
        }

        .loading-text {
            font-size: 14px;
            color: var(--text-muted);
            font-weight: 500;
            letter-spacing: 0.2px;
        }

        .accent-dot {
            display: inline-block;
            width: 8px;
            height: 8px;
            border-radius: 50%;
            margin-right: 6px;
            vertical-align: middle;
            position: relative;
            top: -1px;
        }

        .accent-dot.dot-cold {
            background: #5b8def;
        }
        .accent-dot.dot-cool {
            background: #4a8bc2;
        }
        .accent-dot.dot-mild {
            background: #5a9a78;
        }
        .accent-dot.dot-warm {
            background: #d4944a;
        }
        .accent-dot.dot-hot {
            background: #d4684a;
        }
    </style>
</head>
<body>
    <div class="weather-card" id="weatherCard">
        <div class="loading-state" id="loadingState">
            <div class="loading-spinner"></div>
            <div class="loading-text">Loading weather data…</div>
        </div>
        <div id="contentState" style="display:none;flex-direction:column;flex:1;">
            <div class="card-header">
                <span class="location-name" id="locationName"></span>
                <span class="location-date" id="locationDate"></span>
            </div>
            <div class="main-display">
                <span class="weather-emoji" id="weatherEmoji"></span>
                <div>
                    <div class="weather-condition" id="weatherCondition"></div>
                    <div class="temp-summary">
                        <span class="temp-max" id="tempMax"></span>
                        <span class="temp-separator">/</span>
                        <span class="temp-min" id="tempMin"></span>
                    </div>
                </div>
            </div>
            <div class="divider"></div>
            <div class="hourly-section">
                <div class="hourly-label">Hourly temperatures</div>
                <div class="hourly-scroll" id="hourlyScroll"></div>
            </div>
        </div>
        <div class="error-state" id="errorState" style="display:none;">
            <span class="error-icon">⚠️</span>
            <span class="error-message" id="errorMessage">Unable to load weather data.<br>Please check the location and date, then try again.</span>
        </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 locationName = params.get('name') || 'Berlin';
            const dateParam = params.get('date');

            let requestedDate;
            if (dateParam && /^\d{4}-\d{2}-\d{2}$/.test(dateParam)) {
                requestedDate = dateParam;
            } else {
                const now = new Date();
                const yyyy = now.getUTCFullYear();
                const mm = String(now.getUTCMonth() + 1).padStart(2, '0');
                const dd = String(now.getUTCDate()).padStart(2, '0');
                requestedDate = `${yyyy}-${mm}-${dd}`;
            }

            const todayUTC = (() => {
                const n = new Date();
                const y = n.getUTCFullYear();
                const m = String(n.getUTCMonth() + 1).padStart(2, '0');
                const d = String(n.getUTCDate()).padStart(2, '0');
                return `${y}-${m}-${d}`;
            })();

            const isPastDate = requestedDate < todayUTC;
            const apiPath = isPastDate ? '/api/om/archive' : '/api/om/forecast';

            const apiUrl = `${apiPath}?latitude=${lat}&longitude=${lon}&daily=temperature_2m_max,temperature_2m_min,weather_code&hourly=temperature_2m&timezone=UTC&temperature_unit=celsius&start_date=${requestedDate}&end_date=${requestedDate}`;

            const weatherMap = {
                0: { desc: 'Clear sky', emoji: '☀️' },
                1: { desc: 'Mainly clear', emoji: '🌤️' },
                2: { desc: 'Partly cloudy', emoji: '⛅' },
                3: { desc: 'Overcast', emoji: '☁️' },
                45: { desc: 'Fog', emoji: '🌫️' },
                48: { desc: 'Depositing rime fog', emoji: '🌫️' },
                51: { desc: 'Light drizzle', emoji: '🌧️' },
                53: { desc: 'Moderate drizzle', emoji: '🌧️' },
                55: { desc: 'Dense drizzle', emoji: '🌧️' },
                61: { desc: 'Slight rain', emoji: '🌧️' },
                63: { desc: 'Moderate rain', emoji: '🌧️' },
                65: { desc: 'Heavy rain', emoji: '🌧️' },
                71: { desc: 'Slight snowfall', emoji: '❄️' },
                73: { desc: 'Moderate snowfall', emoji: '❄️' },
                75: { desc: 'Heavy snowfall', emoji: '❄️' },
                77: { desc: 'Snow grains', emoji: '🌨️' },
                80: { desc: 'Slight rain showers', emoji: '🌦️' },
                81: { desc: 'Moderate rain showers', emoji: '🌦️' },
                82: { desc: 'Violent rain showers', emoji: '🌦️' },
                85: { desc: 'Slight snow showers', emoji: '🌨️' },
                86: { desc: 'Heavy snow showers', emoji: '🌨️' },
                95: { desc: 'Thunderstorm', emoji: '⛈️' },
                96: { desc: 'Thunderstorm with slight hail', emoji: '⛈️' },
                99: { desc: 'Thunderstorm with heavy hail', emoji: '⛈️' },
            };

            function getWeatherInfo(code) {
                return weatherMap[code] || { desc: 'Unknown', emoji: '🌈' };
            }

            function getTempCategory(maxTemp) {
                if (maxTemp < 2) return 'cold';
                if (maxTemp < 12) return 'cool';
                if (maxTemp < 22) return 'mild';
                if (maxTemp < 30) return 'warm';
                return 'hot';
            }

            function formatDate(dateStr) {
                const parts = dateStr.split('-');
                const d = new Date(Date.UTC(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2])));
                const options = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', timeZone: 'UTC' };
                return d.toLocaleDateString('en-US', options);
            }

            function showError(message) {
                document.getElementById('loadingState').style.display = 'none';
                document.getElementById('contentState').style.display = 'none';
                const errorState = document.getElementById('errorState');
                errorState.style.display = 'flex';
                if (message) {
                    document.getElementById('errorMessage').textContent = message;
                }
            }

            function showContent() {
                document.getElementById('loadingState').style.display = 'none';
                document.getElementById('errorState').style.display = 'none';
                const contentState = document.getElementById('contentState');
                contentState.style.display = 'flex';
                contentState.style.flex = '1';
            }

            function buildHourlyBars(hourlyTimes, hourlyTemps, dateStr, maxTemp, minTemp, category) {
                const scrollContainer = document.getElementById('hourlyScroll');
                scrollContainer.innerHTML = '';

                const matchingIndices = [];
                for (let i = 0; i < hourlyTimes.length; i++) {
                    if (hourlyTimes[i].startsWith(dateStr)) {
                        matchingIndices.push(i);
                    }
                }

                if (matchingIndices.length === 0) {
                    const emptyMsg = document.createElement('div');
                    emptyMsg.style.cssText =
                        'font-size:13px;color:#a0aec0;padding:12px 0;font-style:italic;';
                    emptyMsg.textContent = 'No hourly data available for this date.';
                    scrollContainer.appendChild(emptyMsg);
                    return;
                }

                const tempRange = maxTemp - minTemp;
                const effectiveRange = tempRange > 0.5 ? tempRange : 2;
                const effectiveMin = tempRange > 0.5 ? minTemp : minTemp - 1;

                const barClassMap = {
                    cold: 'cold-bar',
                    cool: 'cool-bar',
                    mild: 'mild-bar',
                    warm: 'warm-bar',
                    hot: 'hot-bar',
                };
                const barClass = barClassMap[category] || 'cool-bar';

                matchingIndices.forEach(idx => {
                    const timeStr = hourlyTimes[idx];
                    const temp = hourlyTemps[idx];
                    const hourPart = timeStr.split('T')[1];
                    const hourLabel = hourPart ? hourPart.substring(0, 2) : '--';

                    const fraction = Math.max(0, Math.min(1, (temp - effectiveMin) / effectiveRange));
                    const barHeight = Math.round(6 + fraction * 34);

                    const item = document.createElement('div');
                    item.className = 'hourly-item';

                    const timeEl = document.createElement('span');
                    timeEl.className = 'hourly-time';
                    timeEl.textContent = hourLabel;

                    const barWrap = document.createElement('div');
                    barWrap.className = 'hourly-bar-wrap';

                    const bar = document.createElement('div');
                    bar.className = `hourly-bar ${barClass}`;
                    bar.style.height = barHeight + 'px';
                    bar.title = `${hourLabel}:00 — ${temp.toFixed(1)}°C`;

                    barWrap.appendChild(bar);

                    const tempEl = document.createElement('span');
                    tempEl.className = 'hourly-temp';
                    tempEl.textContent = Math.round(temp) + '°';

                    item.appendChild(timeEl);
                    item.appendChild(barWrap);
                    item.appendChild(tempEl);
                    scrollContainer.appendChild(item);
                });
            }

            function applyBackgroundTheme(category) {
                document.body.className = category + '-bg';
            }

            fetch(apiUrl)
                .then(response => {
                    if (!response.ok) {
                        throw new Error(`HTTP ${response.status}: ${response.statusText}`);
                    }
                    return response.json();
                })
                .then(data => {
                    if (!data || !data.daily || !data.daily.time || data.daily.time.length === 0) {
                        throw new Error('No daily data returned from the API.');
                    }

                    const dailyTimes = data.daily.time;
                    let dayIndex = dailyTimes.indexOf(requestedDate);
                    if (dayIndex === -1 && dailyTimes.length === 1) {
                        dayIndex = 0;
                    }
                    if (dayIndex === -1) {
                        throw new Error(`Date ${requestedDate} not found in the API response.`);
                    }

                    const maxTemp = data.daily.temperature_2m_max?.[dayIndex];
                    const minTemp = data.daily.temperature_2m_min?.[dayIndex];
                    const weatherCode = data.daily.weather_code?.[dayIndex];

                    if (maxTemp === undefined || minTemp === undefined || weatherCode === undefined) {
                        throw new Error('Incomplete daily data in the API response.');
                    }

                    const weatherInfo = getWeatherInfo(weatherCode);
                    const category = getTempCategory(maxTemp);

                    document.getElementById('locationName').textContent = locationName;
                    document.getElementById('locationDate').textContent = formatDate(requestedDate);
                    document.getElementById('weatherEmoji').textContent = weatherInfo.emoji;
                    document.getElementById('weatherCondition').textContent = weatherInfo.desc;
                    document.getElementById('tempMax').textContent = Math.round(maxTemp) + '°C';
                    document.getElementById('tempMin').textContent = Math.round(minTemp) + '°C';

                    const hourlyTimes = data.hourly?.time || [];
                    const hourlyTemps = data.hourly?.temperature_2m || [];

                    buildHourlyBars(hourlyTimes, hourlyTemps, requestedDate, maxTemp, minTemp, category);
                    applyBackgroundTheme(category);
                    showContent();
                })
                .catch(err => {
                    console.error('Weather fetch error:', err);
                    let msg = 'Unable to load weather data.';
                    if (err.message.includes('HTTP')) {
                        msg = `Server error (${err.message}). Please try again later.`;
                    } else if (err.message.includes('not found')) {
                        msg = `Weather data for ${requestedDate} is not available.`;
                    } else if (err.message.includes('Incomplete')) {
                        msg = 'Received incomplete data from the weather service.';
                    } else if (err.name === 'TypeError' && err.message.includes('fetch')) {
                        msg = 'Network error. Please check your connection and try again.';
                    }
                    showError(msg);
                });
        })();
    </script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total24,754html / css / js1,834 / 11,539 / 11,381
dom nodes32dom depth8
css rules57js presentyes
brightness226.6contrast16.2
colorfulness17.4whitespace76.1%

This slot's telemetry

prompt tokens321completion tokens11,521
total tokens11,842wall152.2 s
costrequest id
config.json580 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_DEEPSEEK_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "deepseek-v4-pro-eff-high--api--official--dev",
  "effort": "high",
  "family": "deepseek",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "deepseek-v4-pro",
  "protocol": "api",
  "served_model": "deepseek-v4-pro",
  "telemetry": {
    "completion_tokens": 95387,
    "cost_usd": null,
    "prompt_tokens": 2536,
    "total_tokens": 97923,
    "wall_ms": 1313232
  },
  "transport": "deepseek-official-api",
  "vendor_sanction_ref": null
}
send-log4.7 KB
{
  "N": 4,
  "batch_id": "2026-07-19--official-deepseek",
  "config_id": "deepseek-v4-pro-eff-high--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-19T07:44:45.993436+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T07:42:30.240834+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-19T07:47:23.461945+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T07:44:51.253437+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-19T07:50:19.738853+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T07:47:27.045315+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-19T07:52:39.031102+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T07:50:23.660354+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-19T07:55:49.212891+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T07:52:42.115345+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-19T07:58:56.283820+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T07:55:52.802719+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-19T08:01:47.270769+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T07:58:59.871564+00:00"
        }
      ],
      "block_index": 3,
      "model_reaching_attempt_index": 0,
      "slot_index": 3,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-19T08:04:50.027056+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-19T08:01:50.783698+00:00"
        }
      ],
      "block_index": 3,
      "model_reaching_attempt_index": 0,
      "slot_index": 3,
      "terminal_state": "valid",
      "variant": "P-min"
    }
  ],
  "retry_policy": {
    "max_unreachable_retries": 5,
    "rate_limit_backoff": {
      "max_attempts": 4,
      "max_total_ms": 60000
    }
  }
}