gemini-3.6-flash @ low · api

apilow
config
gemini-3.6-flash-eff-low--api--official--dev
batch
2026-07-19--unified
transport
google-gemini-developer-api-openai-compat
protocol
api · metered
served model
gemini-3.6-flash
采集于
2026年7月18日 11:54 · N=4
variant
live
slot 0 · P-q · sandboxed iframe
gemini-3.6-flash @low · api P-q slot 0 截图

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。

similarity 邻居

限于 session 2026-07-19--unified

similarity 衡量本 session 内的趋同程度 —— 不是质量。

Fidelity —— 卡片展示的数据对不对?

  • namematch
  • conditionmatch
  • datematch
  • max tempambiguousinsufficient-distinct-temperature-nodes
  • min tempambiguousinsufficient-distinct-temperature-nodes
  • hourlyambiguouscoverage · 0 命中 · 0 不符 · 24 未展示
  • request sidematch0 处违规

extractor fidelity-extractor-v1+Berlin-2026-07-15

源码 —— 原始模型输出,一字节未改

下载 card.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Weather Card</title>
  <style>
    :root {
      --bg-gradient: linear-gradient(135deg, #0f172a 0%, #1e1b4b 50%, #311042 100%);
      --card-bg: rgba(255, 255, 255, 0.06);
      --card-border: rgba(255, 255, 255, 0.12);
      --card-hover: rgba(255, 255, 255, 0.09);
      --text-main: #f8fafc;
      --text-muted: #94a3b8;
      --text-dim: #64748b;
      --accent: #38bdf8;
      --accent-glow: rgba(56, 189, 248, 0.25);
      --temp-max: #fb923c;
      --temp-min: #38bdf8;
      --error-bg: rgba(239, 68, 68, 0.1);
      --error-border: rgba(239, 68, 68, 0.3);
      --error-text: #fca5a5;
    }

    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    }

    body {
      width: 1280px;
      height: 800px;
      background: var(--bg-gradient);
      color: var(--text-main);
      display: flex;
      justify-content: center;
      align-items: center;
      overflow: hidden;
      position: relative;
    }

    /* Ambient background glow elements */
    .glow-orb-1 {
      position: absolute;
      width: 600px;
      height: 600px;
      background: radial-gradient(circle, rgba(56, 189, 248, 0.12) 0%, rgba(0,0,0,0) 70%);
      top: -100px;
      left: -100px;
      pointer-events: none;
    }

    .glow-orb-2 {
      position: absolute;
      width: 700px;
      height: 700px;
      background: radial-gradient(circle, rgba(168, 85, 247, 0.12) 0%, rgba(0,0,0,0) 70%);
      bottom: -200px;
      right: -100px;
      pointer-events: none;
    }

    .container {
      width: 1080px;
      height: 640px;
      background: var(--card-bg);
      border: 1px solid var(--card-border);
      backdrop-filter: blur(24px);
      -webkit-backdrop-filter: blur(24px);
      border-radius: 32px;
      padding: 48px;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      box-shadow: 0 30px 60px rgba(0, 0, 0, 0.4),
                  inset 0 1px 0 rgba(255, 255, 255, 0.1);
      position: relative;
      z-index: 1;
    }

    /* Loading State */
    .skeleton-overlay {
      position: absolute;
      inset: 0;
      background: rgba(15, 23, 42, 0.8);
      backdrop-filter: blur(12px);
      border-radius: 32px;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      gap: 16px;
      z-index: 10;
      transition: opacity 0.4s ease, visibility 0.4s;
    }

    .spinner {
      width: 48px;
      height: 48px;
      border: 4px solid rgba(255, 255, 255, 0.1);
      border-left-color: var(--accent);
      border-radius: 50%;
      animation: spin 1s linear infinite;
    }

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

    /* Error State */
    .error-container {
      display: none;
      position: absolute;
      inset: 0;
      background: rgba(15, 23, 42, 0.95);
      border-radius: 32px;
      z-index: 20;
      padding: 48px;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      text-align: center;
    }

    .error-box {
      background: var(--error-bg);
      border: 1px solid var(--error-border);
      border-radius: 20px;
      padding: 32px 48px;
      max-width: 500px;
    }

    .error-icon {
      font-size: 48px;
      margin-bottom: 16px;
    }

    .error-title {
      font-size: 20px;
      font-weight: 600;
      color: var(--error-text);
      margin-bottom: 8px;
    }

    .error-message {
      color: var(--text-muted);
      font-size: 14px;
      line-height: 1.5;
    }

    /* Top Layout Section */
    .header {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
    }

    .location-meta {
      display: flex;
      flex-direction: column;
      gap: 6px;
    }

    .location-name {
      font-size: 44px;
      font-weight: 700;
      letter-spacing: -0.02em;
      color: #ffffff;
      display: flex;
      align-items: center;
      gap: 12px;
    }

    .location-icon {
      width: 32px;
      height: 32px;
      fill: var(--accent);
    }

    .date-display {
      font-size: 18px;
      color: var(--text-muted);
      font-weight: 500;
      letter-spacing: 0.01em;
    }

    .coords-tag {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      background: rgba(255, 255, 255, 0.05);
      padding: 4px 12px;
      border-radius: 20px;
      font-size: 12px;
      color: var(--text-dim);
      width: fit-content;
      margin-top: 4px;
      border: 1px solid rgba(255, 255, 255, 0.05);
    }

    /* Main Weather Highlight */
    .main-weather {
      display: flex;
      align-items: center;
      gap: 32px;
    }

    .weather-icon-wrapper {
      width: 100px;
      height: 100px;
      background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.02) 100%);
      border-radius: 24px;
      display: flex;
      align-items: center;
      justify-content: center;
      border: 1px solid rgba(255, 255, 255, 0.1);
      box-shadow: 0 12px 24px rgba(0,0,0,0.2);
    }

    .weather-icon-svg {
      width: 60px;
      height: 60px;
      filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3));
    }

    .weather-text-group {
      display: flex;
      flex-direction: column;
    }

    .condition-label {
      font-size: 32px;
      font-weight: 600;
      color: #ffffff;
      line-height: 1.2;
    }

    .temp-range-pills {
      display: flex;
      gap: 16px;
      margin-top: 8px;
    }

    .pill {
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: 16px;
      font-weight: 600;
      padding: 6px 14px;
      border-radius: 12px;
      background: rgba(0, 0, 0, 0.2);
      border: 1px solid rgba(255, 255, 255, 0.05);
    }

    .pill.max { color: var(--temp-max); }
    .pill.min { color: var(--temp-min); }

    .pill svg {
      width: 14px;
      height: 14px;
      fill: currentColor;
    }

    /* Hourly Forecast Strip */
    .hourly-section {
      display: flex;
      flex-direction: column;
      gap: 16px;
    }

    .section-title {
      font-size: 14px;
      text-transform: uppercase;
      letter-spacing: 0.1em;
      color: var(--text-dim);
      font-weight: 700;
    }

    .hourly-scroll {
      display: flex;
      gap: 12px;
      overflow-x: auto;
      padding-bottom: 8px;
      scrollbar-width: thin;
      scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
    }

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

    .hourly-scroll::-webkit-scrollbar-thumb {
      background: rgba(255, 255, 255, 0.2);
      border-radius: 3px;
    }

    .hourly-card {
      min-width: 72px;
      flex: 1;
      background: rgba(255, 255, 255, 0.03);
      border: 1px solid rgba(255, 255, 255, 0.05);
      border-radius: 16px;
      padding: 14px 8px;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 10px;
      transition: all 0.2s ease;
    }

    .hourly-card:hover {
      background: var(--card-hover);
      border-color: rgba(255, 255, 255, 0.15);
      transform: translateY(-2px);
    }

    .hourly-card.is-now {
      background: rgba(56, 189, 248, 0.1);
      border-color: var(--accent);
      box-shadow: 0 0 12px var(--accent-glow);
    }

    .hourly-time {
      font-size: 13px;
      color: var(--text-muted);
      font-weight: 500;
    }

    .hourly-temp {
      font-size: 16px;
      font-weight: 600;
      color: #ffffff;
    }

    /* Visual Graph Bar inside Hourly Card */
    .temp-bar-wrapper {
      width: 4px;
      height: 36px;
      background: rgba(255, 255, 255, 0.08);
      border-radius: 2px;
      position: relative;
      overflow: hidden;
      display: flex;
      align-items: flex-end;
    }

    .temp-bar-fill {
      width: 100%;
      background: linear-gradient(to top, var(--accent), var(--temp-max));
      border-radius: 2px;
    }
  </style>
</head>
<body>

  <div class="glow-orb-1"></div>
  <div class="glow-orb-2"></div>

  <div class="container">
    <!-- Loading Overlay -->
    <div id="loading" class="skeleton-overlay">
      <div class="spinner"></div>
      <div style="color: var(--text-muted); font-size: 14px; font-weight: 500;">Fetching weather data...</div>
    </div>

    <!-- Error Message -->
    <div id="error" class="error-container">
      <div class="error-box">
        <div class="error-icon">⚠️</div>
        <div class="error-title">Unable to load weather data</div>
        <div class="error-message" id="error-text">We couldn't retrieve the forecast for this location and date. Please check the network connection or query parameters.</div>
      </div>
    </div>

    <!-- Header Section -->
    <div class="header">
      <div class="location-meta">
        <div class="location-name">
          <svg class="location-icon" viewBox="0 0 24 24">
            <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>
          </svg>
          <span id="loc-display">--</span>
        </div>
        <div class="date-display" id="date-display">--</div>
        <div class="coords-tag" id="coords-display">Lat: -- | Lon: --</div>
      </div>

      <!-- Main Overview -->
      <div class="main-weather">
        <div class="weather-icon-wrapper" id="weather-icon-container">
          <!-- SVG injected via JS -->
        </div>
        <div class="weather-text-group">
          <div class="condition-label" id="condition-display">--</div>
          <div class="temp-range-pills">
            <div class="pill max" title="High Temperature">
              <svg viewBox="0 0 24 24"><path d="M12 4l-6 6h4v8h4v-8h4z"/></svg>
              <span id="temp-max-display">--°C</span>
            </div>
            <div class="pill min" title="Low Temperature">
              <svg viewBox="0 0 24 24"><path d="M12 20l6-6h-4V8h-4v6H8z"/></svg>
              <span id="temp-min-display">--°C</span>
            </div>
          </div>
        </div>
      </div>
    </div>

    <!-- Hourly Forecast Section -->
    <div class="hourly-section">
      <div class="section-title">24-Hour Hourly Temperature Pattern</div>
      <div class="hourly-scroll" id="hourly-container">
        <!-- Hourly cards injected via JS -->
      </div>
    </div>
  </div>

  <script>
    // WMO Weather Interpretation Codes Map
    const WMO_CODES = {
      0: { label: 'Clear Sky', icon: 'sun' },
      1: { label: 'Mainly Clear', icon: 'sun-cloud' },
      2: { label: 'Partly Cloudy', icon: 'sun-cloud' },
      3: { label: 'Overcast', icon: 'cloud' },
      45: { label: 'Fog', icon: 'fog' },
      48: { label: 'Depositing Rime Fog', icon: 'fog' },
      51: { label: 'Light Drizzle', icon: 'drizzle' },
      53: { label: 'Moderate Drizzle', icon: 'drizzle' },
      55: { label: 'Dense Drizzle', icon: 'drizzle' },
      56: { label: 'Light Freezing Drizzle', icon: 'drizzle' },
      57: { label: 'Dense Freezing Drizzle', icon: 'drizzle' },
      61: { label: 'Slight Rain', icon: 'rain' },
      63: { label: 'Moderate Rain', icon: 'rain' },
      65: { label: 'Heavy Rain', icon: 'rain' },
      66: { label: 'Light Freezing Rain', icon: 'rain' },
      67: { label: 'Heavy Freezing Rain', icon: 'rain' },
      71: { label: 'Slight Snow', icon: 'snow' },
      73: { label: 'Moderate Snow', icon: 'snow' },
      75: { label: 'Heavy Snow', icon: 'snow' },
      77: { label: 'Snow Grains', icon: 'snow' },
      80: { label: 'Slight Rain Showers', icon: 'rain' },
      81: { label: 'Moderate Rain Showers', icon: 'rain' },
      82: { label: 'Violent Rain Showers', icon: 'rain' },
      85: { label: 'Slight 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' }
    };

    // Vector Weather Icons
    const SVGS = {
      'sun': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#facc15" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>`,
      'sun-cloud': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#38bdf8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="M20 12h2"/><path d="m19.07 4.93-1.41 1.41"/><path d="M15.94 15.94A5.001 5.001 0 0 0 12 7c-2.76 0-5 2.24-5 5 0 .43.06.84.16 1.24"/><path d="M17 18a5 5 0 0 0-1-9.9 5 5 0 0 0-9.8 1.7A3.5 3.5 0 0 0 7 18h10z" fill="rgba(255,255,255,0.1)"/></svg>`,
      'cloud': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.5 19 certainty-2 0-3.05-1.41-3.5-3A6 6 0 0 0 3 13a4.5 4.5 0 0 0 4.5 4.5h10z"/><path d="M17.5 19a4.5 4.5 0 0 0 0-9h-1.79A7.002 7.002 0 0 0 2 12a5 5 0 0 0 5 5h10.5z" fill="rgba(255,255,255,0.1)"/></svg>`,
      'fog': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#cbd5e1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 9h14"/><path d="M3 12h18"/><path d="M4 15h16"/><path d="M6 18h12"/></svg>`,
      'drizzle': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#38bdf8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"/><path d="M8 19v.01"/><path d="M8 22v.01"/><path d="M12 19v.01"/><path d="M12 22v.01"/><path d="M16 19v.01"/><path d="M16 22v.01"/></svg>`,
      'rain': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#60a5fa" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 13v6"/><path d="M8 13v6"/><path d="M12 15v6"/><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"/></svg>`,
      'snow': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#e0f2fe" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25"/><path d="M8 16h.01"/><path d="M8 20h.01"/><path d="M12 18h.01"/><path d="M12 22h.01"/><path d="M16 16h.01"/><path d="M16 20h.01"/></svg>`,
      'thunder': `<svg class="weather-icon-svg" viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"/><polyline points="13 11 9 17 15 17 11 23"/></svg>`
    };

    function getQueryParams() {
      const params = new URLSearchParams(window.location.search);
      const today = new Date().toISOString().split('T')[0];
      
      return {
        lat: parseFloat(params.get('lat')) || 52.52,
        lon: parseFloat(params.get('lon')) || 13.405,
        name: params.get('name') || 'Berlin',
        date: params.get('date') || today
      };
    }

    function formatDate(dateStr) {
      try {
        const [year, month, day] = dateStr.split('-').map(Number);
        const date = new Date(Date.UTC(year, month - 1, day));
        return date.toLocaleDateString('en-US', {
          weekday: 'long',
          year: 'numeric',
          month: 'long',
          day: 'numeric',
          timeZone: 'UTC'
        });
      } catch (e) {
        return dateStr;
      }
    }

    function showError(msg) {
      document.getElementById('loading').style.display = 'none';
      const errEl = document.getElementById('error');
      if (msg) document.getElementById('error-text').textContent = msg;
      errEl.style.display = 'flex';
    }

    async function fetchWeatherData() {
      const { lat, lon, name, date } = getQueryParams();

      // UI basic initial binding
      document.getElementById('loc-display').textContent = name;
      document.getElementById('date-display').textContent = formatDate(date);
      document.getElementById('coords-display').textContent = `Lat: ${lat.toFixed(2)} | Lon: ${lon.toFixed(2)}`;

      const todayStr = new Date().toISOString().split('T')[0];
      const isPast = date < todayStr;
      const endpoint = isPast ? '/api/om/archive' : '/api/om/forecast';

      const url = new URL(endpoint, window.location.origin);
      url.searchParams.append('latitude', lat);
      url.searchParams.append('longitude', lon);
      url.searchParams.append('daily', 'temperature_2m_max,temperature_2m_min,weather_code');
      url.searchParams.append('hourly', 'temperature_2m');
      url.searchParams.append('timezone', 'UTC');
      url.searchParams.append('temperature_unit', 'celsius');
      url.searchParams.append('start_date', date);
      url.searchParams.append('end_date', date);

      try {
        const response = await fetch(url.toString());
        if (!response.ok) {
          throw new Error(`Server returned HTTP status ${response.status}`);
        }
        const data = await response.json();

        if (!data || !data.daily || !data.hourly) {
          throw new Error('Malformed API response');
        }

        renderWeather(data);
      } catch (err) {
        console.error('Weather fetch error:', err);
        showError(`Failed to load weather data for ${name} (${date}). ${err.message}`);
      }
    }

    function renderWeather(data) {
      // Extract Daily Data
      const maxTemp = Math.round(data.daily.temperature_2m_max[0]);
      const minTemp = Math.round(data.daily.temperature_2m_min[0]);
      const code = data.daily.weather_code[0];

      const conditionInfo = WMO_CODES[code] || { label: 'Unknown', icon: 'sun-cloud' };

      document.getElementById('temp-max-display').textContent = `${maxTemp}°C`;
      document.getElementById('temp-min-display').textContent = `${minTemp}°C`;
      document.getElementById('condition-display').textContent = conditionInfo.label;
      document.getElementById('weather-icon-container').innerHTML = SVGS[conditionInfo.icon] || SVGS['sun-cloud'];

      // Extract Hourly Data
      const hourlyContainer = document.getElementById('hourly-container');
      hourlyContainer.innerHTML = '';

      const temps = data.hourly.temperature_2m;
      const times = data.hourly.time;

      if (temps && temps.length) {
        const minH = Math.min(...temps);
        const maxH = Math.max(...temps);
        const range = (maxH - minH) || 1;

        temps.forEach((temp, idx) => {
          const val = Math.round(temp);
          const timeRaw = times[idx];
          const hourNum = new Date(timeRaw).getUTCHours();
          const hourLabel = `${hourNum.toString().padStart(2, '0')}:00`;

          // Relative height % for graph bar (clamped 15% to 100%)
          const pct = Math.max(15, Math.round(((temp - minH) / range) * 100));

          const card = document.createElement('div');
          card.className = 'hourly-card';
          
          card.innerHTML = `
            <span class="hourly-time">${hourLabel}</span>
            <span class="hourly-temp">${val}°</span>
            <div class="temp-bar-wrapper">
              <div class="temp-bar-fill" style="height: ${pct}%;"></div>
            </div>
          `;

          hourlyContainer.appendChild(card);
        });
      }

      // Hide Loader
      document.getElementById('loading').style.opacity = '0';
      setTimeout(() => {
        document.getElementById('loading').style.display = 'none';
      }, 400);
    }

    // Initialize on page load
    window.addEventListener('DOMContentLoaded', fetchWeatherData);
  </script>
</body>
</html>

L1 —— 廉价的确定性描述量

bytes 总计20,158html / css / js2,670 / 7,939 / 9,549
dom 节点43dom 深度9
css 规则43含 js
brightness44.4contrast15.4
colorfulness24.2留白76.9%

该 slot 的 telemetry

prompt tokens348completion tokens7,661
total tokens8,009wall31.5 s
costrequest id
config.json596 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_GEMINI_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "gemini-3.6-flash-eff-low--api--official--dev",
  "effort": "low",
  "family": "gemini",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "gemini-3.6-flash",
  "protocol": "api",
  "served_model": "gemini-3.6-flash",
  "telemetry": {
    "completion_tokens": 36981,
    "cost_usd": null,
    "prompt_tokens": 2748,
    "total_tokens": 39729,
    "wall_ms": 153309
  },
  "transport": "google-gemini-developer-api-openai-compat",
  "vendor_sanction_ref": null
}
send-log4.7 KB
{
  "N": 4,
  "batch_id": "2026-07-22--gemini-36flash",
  "config_id": "gemini-3.6-flash-eff-low--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-22T07:40:58.633245+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:40:27.145334+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-22T07:41:15.590004+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:41:03.189197+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-22T07:41:39.734114+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:41:19.039485+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-22T07:41:53.130207+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:41:43.204029+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-22T07:42:07.835780+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:41:56.512443+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-22T07:42:34.126863+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:42:11.351116+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-22T07:42:47.327061+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:42:37.704351+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-22T07:43:25.841285+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-22T07:42:50.758578+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
    }
  }
}