gpt-5.4 @ low · cursor-xl
cursor-xllow
- config
- gpt-5.4-eff-low--cli--cursor-xl--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- gpt-5.4-low
- captured
- Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe

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
- datematch
- 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>
:root {
--bg-1: #09111f;
--bg-2: #13233f;
--bg-3: #284f7d;
--card: rgba(10, 18, 34, 0.68);
--card-border: rgba(255, 255, 255, 0.14);
--text: #f6f8fc;
--muted: rgba(246, 248, 252, 0.72);
--soft: rgba(246, 248, 252, 0.12);
--accent: #8fd3ff;
--accent-2: #b7a6ff;
--good: #ffe083;
--shadow: 0 30px 80px rgba(0, 0, 0, 0.35);
}
* {
box-sizing: border-box;
}
html, body {
width: 100%;
height: 100%;
margin: 0;
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
color: var(--text);
background:
radial-gradient(circle at 15% 20%, rgba(143, 211, 255, 0.20), transparent 28%),
radial-gradient(circle at 80% 15%, rgba(183, 166, 255, 0.18), transparent 24%),
radial-gradient(circle at 85% 80%, rgba(120, 184, 255, 0.10), transparent 22%),
linear-gradient(135deg, var(--bg-1), var(--bg-2) 45%, var(--bg-3));
overflow: hidden;
}
body::before,
body::after {
content: "";
position: fixed;
inset: auto;
border-radius: 999px;
filter: blur(14px);
pointer-events: none;
opacity: 0.9;
}
body::before {
width: 320px;
height: 320px;
left: -60px;
top: 80px;
background: radial-gradient(circle, rgba(255,255,255,0.18), rgba(255,255,255,0.02) 62%, transparent 70%);
}
body::after {
width: 220px;
height: 220px;
right: 90px;
bottom: 70px;
background: radial-gradient(circle, rgba(143, 211, 255, 0.22), rgba(143, 211, 255, 0.02) 62%, transparent 72%);
}
.frame {
width: 1280px;
height: 800px;
margin: 0 auto;
display: grid;
place-items: center;
padding: 40px;
}
.card {
position: relative;
width: 100%;
height: 100%;
border-radius: 36px;
background:
linear-gradient(180deg, rgba(255,255,255,0.10), rgba(255,255,255,0.02)),
var(--card);
border: 1px solid var(--card-border);
box-shadow: var(--shadow);
backdrop-filter: blur(18px) saturate(140%);
-webkit-backdrop-filter: blur(18px) saturate(140%);
overflow: hidden;
}
.card::before {
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(135deg, rgba(255,255,255,0.12), transparent 28%),
linear-gradient(225deg, rgba(255,255,255,0.05), transparent 20%);
pointer-events: none;
}
.content {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: 1.05fr 1.2fr;
gap: 28px;
height: 100%;
padding: 34px;
}
.panel {
border-radius: 28px;
background: rgba(255,255,255,0.05);
border: 1px solid rgba(255,255,255,0.08);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);
}
.hero {
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 30px;
min-width: 0;
background:
radial-gradient(circle at 85% 18%, rgba(255,255,255,0.12), transparent 22%),
linear-gradient(180deg, rgba(255,255,255,0.09), rgba(255,255,255,0.03));
}
.topline {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 20px;
}
.eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 12px;
border-radius: 999px;
background: rgba(255,255,255,0.07);
border: 1px solid rgba(255,255,255,0.09);
color: var(--muted);
font-size: 13px;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.dot {
width: 8px;
height: 8px;
border-radius: 999px;
background: linear-gradient(180deg, #bff0ff, #77c5ff);
box-shadow: 0 0 14px rgba(143, 211, 255, 0.6);
}
.location {
margin: 20px 0 8px;
font-size: 54px;
line-height: 1;
font-weight: 700;
letter-spacing: -0.03em;
}
.date {
color: var(--muted);
font-size: 19px;
font-weight: 500;
letter-spacing: 0.01em;
}
.condition-block {
margin-top: 24px;
}
.condition {
font-size: 30px;
font-weight: 600;
letter-spacing: -0.02em;
margin-bottom: 8px;
}
.condition-detail {
color: var(--muted);
font-size: 15px;
line-height: 1.45;
max-width: 34ch;
}
.temp-row {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 20px;
margin-top: 28px;
}
.temp-max {
font-size: 112px;
line-height: 0.9;
letter-spacing: -0.06em;
font-weight: 700;
white-space: nowrap;
text-shadow: 0 10px 34px rgba(0,0,0,0.22);
}
.range {
display: grid;
gap: 14px;
min-width: 170px;
}
.range-item {
padding: 14px 16px;
border-radius: 20px;
background: rgba(255,255,255,0.06);
border: 1px solid rgba(255,255,255,0.08);
}
.range-label {
color: var(--muted);
font-size: 12px;
letter-spacing: 0.08em;
text-transform: uppercase;
margin-bottom: 8px;
}
.range-value {
font-size: 28px;
font-weight: 650;
letter-spacing: -0.03em;
}
.meta {
display: flex;
gap: 12px;
flex-wrap: wrap;
margin-top: 22px;
}
.chip {
padding: 10px 14px;
border-radius: 999px;
background: rgba(255,255,255,0.06);
border: 1px solid rgba(255,255,255,0.09);
color: var(--muted);
font-size: 14px;
}
.hourly-panel {
display: grid;
grid-template-rows: auto 1fr;
padding: 24px;
min-width: 0;
overflow: hidden;
background:
linear-gradient(180deg, rgba(255,255,255,0.08), rgba(255,255,255,0.03));
}
.hourly-header {
display: flex;
justify-content: space-between;
align-items: flex-end;
gap: 18px;
margin-bottom: 18px;
}
.hourly-title {
font-size: 28px;
font-weight: 650;
letter-spacing: -0.02em;
}
.hourly-subtitle {
color: var(--muted);
font-size: 14px;
}
.hourly-grid-wrap {
min-width: 0;
overflow: hidden;
border-radius: 24px;
background: rgba(0,0,0,0.10);
border: 1px solid rgba(255,255,255,0.06);
padding: 18px;
}
.hourly-grid {
height: 100%;
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 12px;
align-content: start;
}
.hour {
display: grid;
gap: 12px;
align-content: start;
min-width: 0;
padding: 14px 12px;
border-radius: 20px;
background: linear-gradient(180deg, rgba(255,255,255,0.08), rgba(255,255,255,0.04));
border: 1px solid rgba(255,255,255,0.06);
transition: transform 160ms ease, background 160ms ease, border-color 160ms ease;
}
.hour:hover {
transform: translateY(-2px);
background: linear-gradient(180deg, rgba(255,255,255,0.11), rgba(255,255,255,0.05));
border-color: rgba(255,255,255,0.12);
}
.hour-time {
color: var(--muted);
font-size: 13px;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.hour-temp {
font-size: 26px;
font-weight: 650;
letter-spacing: -0.04em;
white-space: nowrap;
}
.bar-track {
position: relative;
height: 112px;
display: flex;
align-items: flex-end;
}
.bar {
width: 100%;
border-radius: 14px 14px 8px 8px;
min-height: 12px;
background: linear-gradient(180deg, var(--good), var(--accent));
box-shadow: 0 8px 18px rgba(143, 211, 255, 0.22);
}
.bar-label {
color: rgba(246, 248, 252, 0.56);
font-size: 12px;
line-height: 1.3;
}
.status {
position: absolute;
inset: 0;
display: grid;
place-items: center;
padding: 40px;
z-index: 2;
text-align: center;
background: rgba(7, 12, 23, 0.26);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
}
.status.hidden {
display: none;
}
.status-card {
max-width: 560px;
padding: 28px 30px;
border-radius: 28px;
background: rgba(8, 15, 30, 0.72);
border: 1px solid rgba(255,255,255,0.10);
box-shadow: 0 20px 50px rgba(0,0,0,0.32);
}
.status-title {
font-size: 28px;
font-weight: 650;
letter-spacing: -0.03em;
margin-bottom: 10px;
}
.status-text {
color: var(--muted);
font-size: 16px;
line-height: 1.5;
}
.loading-shimmer {
position: relative;
overflow: hidden;
}
.loading-shimmer::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(110deg, transparent 20%, rgba(255,255,255,0.12) 50%, transparent 80%);
transform: translateX(-120%);
animation: shimmer 1.8s infinite;
}
@keyframes shimmer {
100% {
transform: translateX(120%);
}
}
@media (max-width: 1279px), (max-height: 799px) {
.frame {
width: 100vw;
height: 100vh;
}
}
</style>
</head>
<body>
<div class="frame">
<main class="card">
<div class="status loading-shimmer" id="status">
<div class="status-card">
<div class="status-title" id="status-title">Loading weather</div>
<div class="status-text" id="status-text">Fetching the selected date and location.</div>
</div>
</div>
<div class="content" id="content" aria-live="polite">
<section class="panel hero">
<div>
<div class="topline">
<div class="eyebrow">
<span class="dot"></span>
<span>Weather Card</span>
</div>
</div>
<div class="location" id="location">Berlin</div>
<div class="date" id="date">Loading date...</div>
<div class="condition-block">
<div class="condition" id="condition">Loading condition...</div>
<div class="condition-detail" id="condition-detail">
Daily summary and hourly temperatures for the selected UTC date.
</div>
</div>
<div class="meta">
<div class="chip" id="coords">52.52, 13.405</div>
<div class="chip">Units: Celsius</div>
<div class="chip" id="source">Source: Open-Meteo compatible API</div>
</div>
</div>
<div>
<div class="temp-row">
<div class="temp-max" id="temp-max">--°</div>
<div class="range">
<div class="range-item">
<div class="range-label">Maximum</div>
<div class="range-value" id="temp-max-small">--°C</div>
</div>
<div class="range-item">
<div class="range-label">Minimum</div>
<div class="range-value" id="temp-min">--°C</div>
</div>
</div>
</div>
</div>
</section>
<section class="panel hourly-panel">
<div class="hourly-header">
<div>
<div class="hourly-title">Hourly Temperatures</div>
<div class="hourly-subtitle" id="hourly-subtitle">24-hour view for the selected date in UTC</div>
</div>
</div>
<div class="hourly-grid-wrap">
<div class="hourly-grid" id="hourly-grid"></div>
</div>
</section>
</div>
</main>
</div>
<script>
(function () {
const statusEl = document.getElementById("status");
const statusTitleEl = document.getElementById("status-title");
const statusTextEl = document.getElementById("status-text");
const locationEl = document.getElementById("location");
const dateEl = document.getElementById("date");
const conditionEl = document.getElementById("condition");
const conditionDetailEl = document.getElementById("condition-detail");
const coordsEl = document.getElementById("coords");
const sourceEl = document.getElementById("source");
const tempMaxEl = document.getElementById("temp-max");
const tempMaxSmallEl = document.getElementById("temp-max-small");
const tempMinEl = document.getElementById("temp-min");
const hourlySubtitleEl = document.getElementById("hourly-subtitle");
const hourlyGridEl = document.getElementById("hourly-grid");
function showStatus(title, text, loading) {
statusTitleEl.textContent = title;
statusTextEl.textContent = text;
statusEl.classList.remove("hidden");
statusEl.classList.toggle("loading-shimmer", !!loading);
}
function hideStatus() {
statusEl.classList.add("hidden");
statusEl.classList.remove("loading-shimmer");
}
function getUtcTodayString() {
return new Date().toISOString().slice(0, 10);
}
function isValidDateString(value) {
return /^\d{4}-\d{2}-\d{2}$/.test(value);
}
function formatDisplayDate(yyyyMmDd) {
const date = new Date(yyyyMmDd + "T00:00:00Z");
return new Intl.DateTimeFormat("en-US", {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
timeZone: "UTC"
}).format(date);
}
function parseQuery() {
const params = new URLSearchParams(window.location.search);
const lat = Number(params.get("lat") ?? "52.52");
const lon = Number(params.get("lon") ?? "13.405");
const name = (params.get("name") || "Berlin").trim() || "Berlin";
const rawDate = params.get("date");
const date = isValidDateString(rawDate || "") ? rawDate : getUtcTodayString();
return {
lat: Number.isFinite(lat) ? lat : 52.52,
lon: Number.isFinite(lon) ? lon : 13.405,
name,
date
};
}
function chooseEndpoint(date) {
const today = getUtcTodayString();
return date < today ? "/api/om/archive" : "/api/om/forecast";
}
function weatherCodeInfo(code) {
const map = {
0: ["Clear sky", "Crisp, bright, and calm conditions."],
1: ["Mainly clear", "Mostly sunny with only a few passing clouds."],
2: ["Partly cloudy", "A balanced sky with sun and cloud cover."],
3: ["Overcast", "Dense cloud cover through most of the day."],
45: ["Fog", "Visibility may be reduced by mist or fog."],
48: ["Depositing rime fog", "Cold fog with icy deposits in places."],
51: ["Light drizzle", "Fine, light drizzle in the air."],
53: ["Moderate drizzle", "Steady drizzle with damp conditions."],
55: ["Dense drizzle", "Persistent drizzle with stronger intensity."],
56: ["Light freezing drizzle", "Icy drizzle possible in colder air."],
57: ["Dense freezing drizzle", "Freezing drizzle with slick conditions."],
61: ["Slight rain", "Light rain showers or steady rain possible."],
63: ["Moderate rain", "Consistent rainfall across the day."],
65: ["Heavy rain", "Heavier rainfall likely at times."],
66: ["Light freezing rain", "Rain may freeze on colder surfaces."],
67: ["Heavy freezing rain", "Freezing rain with hazardous surfaces possible."],
71: ["Slight snow fall", "Light snowfall or flurries possible."],
73: ["Moderate snow fall", "Steadier snowfall through parts of the day."],
75: ["Heavy snow fall", "Heavier snowfall with wintry conditions."],
77: ["Snow grains", "Fine icy grains may be present."],
80: ["Slight rain showers", "Passing showers with lighter intensity."],
81: ["Moderate rain showers", "Intermittent showers through the day."],
82: ["Violent rain showers", "Intense showers with bursts of heavy rain."],
85: ["Slight snow showers", "Light snow showers moving through."],
86: ["Heavy snow showers", "Stronger snow showers expected."],
95: ["Thunderstorm", "Storm activity possible with thunder."],
96: ["Thunderstorm with slight hail", "Storms may include small hail."],
99: ["Thunderstorm with heavy hail", "Severe storm conditions with hail risk."]
};
return map[code] || ["Unknown conditions", "Weather code not recognized."];
}
function conditionTheme(code) {
if (code === 0 || code === 1) {
return {
bg1: "#0f1e38",
bg2: "#20446e",
bg3: "#f08f49",
accent: "#ffd278",
accent2: "#8fd3ff"
};
}
if (code === 2 || code === 3) {
return {
bg1: "#0a1323",
bg2: "#213652",
bg3: "#536c86",
accent: "#b8cffd",
accent2: "#8ec5ff"
};
}
if ((code >= 51 && code <= 67) || (code >= 80 && code <= 82) || code >= 95) {
return {
bg1: "#08111f",
bg2: "#1c2e4f",
bg3: "#324c7f",
accent: "#7dd3ff",
accent2: "#b19bff"
};
}
if ((code >= 71 && code <= 77) || code === 85 || code === 86) {
return {
bg1: "#09131d",
bg2: "#314962",
bg3: "#7e9ab6",
accent: "#dff3ff",
accent2: "#a8d3ff"
};
}
if (code === 45 || code === 48) {
return {
bg1: "#11161f",
bg2: "#374150",
bg3: "#637285",
accent: "#d9e4ee",
accent2: "#a3b8d0"
};
}
return {
bg1: "#09111f",
bg2: "#13233f",
bg3: "#284f7d",
accent: "#8fd3ff",
accent2: "#b7a6ff"
};
}
function applyTheme(code) {
const theme = conditionTheme(code);
document.documentElement.style.setProperty("--bg-1", theme.bg1);
document.documentElement.style.setProperty("--bg-2", theme.bg2);
document.documentElement.style.setProperty("--bg-3", theme.bg3);
document.documentElement.style.setProperty("--accent", theme.accent);
document.documentElement.style.setProperty("--accent-2", theme.accent2);
}
function buildApiUrl(config) {
const endpoint = chooseEndpoint(config.date);
const url = new URL(endpoint, window.location.origin);
url.searchParams.set("latitude", String(config.lat));
url.searchParams.set("longitude", String(config.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", config.date);
url.searchParams.set("end_date", config.date);
return url.toString();
}
function ensureDataShape(data) {
const ok =
data &&
data.daily &&
Array.isArray(data.daily.time) &&
Array.isArray(data.daily.temperature_2m_max) &&
Array.isArray(data.daily.temperature_2m_min) &&
Array.isArray(data.daily.weather_code) &&
data.hourly &&
Array.isArray(data.hourly.time) &&
Array.isArray(data.hourly.temperature_2m);
if (!ok) {
throw new Error("Unexpected weather response format.");
}
}
function fmtTemp(value) {
return `${Math.round(value)}°C`;
}
function fmtHeroTemp(value) {
return `${Math.round(value)}°`;
}
function renderHourly(times, temps) {
hourlyGridEl.innerHTML = "";
if (!times.length || !temps.length) {
const empty = document.createElement("div");
empty.className = "hour";
empty.innerHTML = '<div class="hour-time">No data</div><div class="hour-temp">--°</div><div class="bar-track"><div class="bar" style="height:12px"></div></div><div class="bar-label">Hourly data unavailable.</div>';
hourlyGridEl.appendChild(empty);
return;
}
const min = Math.min.apply(null, temps);
const max = Math.max.apply(null, temps);
const span = Math.max(1, max - min);
times.forEach(function (time, index) {
const hour = time.slice(11, 16);
const temp = temps[index];
const barHeight = 12 + ((temp - min) / span) * 88;
const cell = document.createElement("div");
cell.className = "hour";
const timeEl = document.createElement("div");
timeEl.className = "hour-time";
timeEl.textContent = hour + " UTC";
const tempEl = document.createElement("div");
tempEl.className = "hour-temp";
tempEl.textContent = `${Math.round(temp)}°`;
const trackEl = document.createElement("div");
trackEl.className = "bar-track";
const barEl = document.createElement("div");
barEl.className = "bar";
barEl.style.height = `${barHeight}px`;
const labelEl = document.createElement("div");
labelEl.className = "bar-label";
labelEl.textContent = index === 0 ? "Start of day" : index === times.length - 1 ? "End of day" : "Hourly reading";
trackEl.appendChild(barEl);
cell.appendChild(timeEl);
cell.appendChild(tempEl);
cell.appendChild(trackEl);
cell.appendChild(labelEl);
hourlyGridEl.appendChild(cell);
});
}
async function loadWeather() {
const config = parseQuery();
locationEl.textContent = config.name;
dateEl.textContent = formatDisplayDate(config.date);
coordsEl.textContent = `${config.lat.toFixed(3)}, ${config.lon.toFixed(3)}`;
sourceEl.textContent = chooseEndpoint(config.date) === "/api/om/archive"
? "Source: Archive weather API"
: "Source: Forecast weather API";
hourlySubtitleEl.textContent = `24-hour view for ${config.date} in UTC`;
showStatus("Loading weather", "Fetching the selected date and location.", true);
try {
const response = await fetch(buildApiUrl(config), {
method: "GET",
headers: { "Accept": "application/json" }
});
if (!response.ok) {
throw new Error(`Request failed with status ${response.status}.`);
}
const data = await response.json();
ensureDataShape(data);
const dayIndex = data.daily.time.indexOf(config.date);
if (dayIndex === -1) {
throw new Error("No daily data returned for the requested date.");
}
const maxTemp = data.daily.temperature_2m_max[dayIndex];
const minTemp = data.daily.temperature_2m_min[dayIndex];
const weatherCode = data.daily.weather_code[dayIndex];
const info = weatherCodeInfo(weatherCode);
const hourlyTimes = [];
const hourlyTemps = [];
for (let i = 0; i < data.hourly.time.length; i += 1) {
const time = data.hourly.time[i];
if (typeof time === "string" && time.slice(0, 10) === config.date) {
hourlyTimes.push(time);
hourlyTemps.push(data.hourly.temperature_2m[i]);
}
}
applyTheme(weatherCode);
conditionEl.textContent = info[0];
conditionDetailEl.textContent = info[1];
tempMaxEl.innerHTML = fmtHeroTemp(maxTemp);
tempMaxSmallEl.textContent = fmtTemp(maxTemp);
tempMinEl.textContent = fmtTemp(minTemp);
renderHourly(hourlyTimes, hourlyTemps);
hideStatus();
} catch (error) {
conditionEl.textContent = "Weather unavailable";
conditionDetailEl.textContent = "The requested weather data could not be loaded.";
tempMaxEl.innerHTML = "--°";
tempMaxSmallEl.textContent = "--°C";
tempMinEl.textContent = "--°C";
hourlyGridEl.innerHTML = "";
showStatus(
"Weather data could not be loaded",
error && error.message ? error.message : "The page could not fetch weather information for this date and location.",
false
);
}
}
loadWeather();
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 25,076 | html / css / js | 2,697 / 9,397 / 12,982 |
|---|---|---|---|
| dom nodes | 47 | dom depth | 11 |
| css rules | 52 | js present | yes |
| brightness | 63.9 | contrast | 33.0 |
| colorfulness | 22.4 | whitespace | 55.3% |
This slot's telemetry
| prompt tokens | 16,079 | completion tokens | 6,794 |
|---|---|---|---|
| total tokens | 22,873 | wall | 59.8 s |
| cost | — | request id | — |
config.json556 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.4-eff-low--cli--cursor-xl--dev",
"effort": "low",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.4",
"protocol": "cli",
"served_model": "gpt-5.4-low",
"telemetry": {
"completion_tokens": 21808,
"cost_usd": null,
"prompt_tokens": 50470,
"total_tokens": 72278,
"wall_ms": 194919
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-xl-s2",
"config_id": "gpt-5.4-eff-low--cli--cursor-xl--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T15:14:51.391667+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T15:13:51.550243+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-08-13T15:15:37.868902+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T15:14:55.118148+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-08-13T15:17:03.038047+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T15:16:24.805935+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-08-13T15:18:44.454559+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T15:17:50.354120+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-q"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}