gpt-5.6-sol @ low · kiro
kirolow
- config
- gpt-5.6-sol-eff-low--cli--kiro--dev
- batch
- 2026-07-19--unified
- transport
- kiro-cli-isolated-home-github-social
- protocol
- cli · plan
- served model
- gpt-5.6-sol
- 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 neighbors
nearest
gpt-5.6-sol @low · codex-oauth0.72gpt-5.6-sol @medium · codex-oauth0.72gpt-5.6-terra @high · kiro0.72gpt-5.6-terra @low · codex-oauth0.72grok-4.5 @high · grok-cli0.72farthest
gpt-5.5 @xhigh · codex-oauth0.41gpt-5.5 @medium · codex-oauth0.41north-mini-code-free · api0.42gpt-5.6-luna @medium · codex-oauth0.42gpt-5.6-luna @low · codex-oauth0.42within 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 tempmatchshown: 25
- min tempmatchshown: 16
- 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</title>
<style>
:root {
color-scheme: dark;
--text: #f8fbff;
--muted: rgba(231, 241, 255, .66);
--line: rgba(255, 255, 255, .12);
--glass: rgba(15, 28, 49, .58);
--accent: #ffc966;
--blue: #73c9ff;
}
* { box-sizing: border-box; }
html, body {
width: 100%;
min-height: 100%;
margin: 0;
}
body {
min-width: 900px;
min-height: 700px;
overflow: hidden;
color: var(--text);
font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background:
radial-gradient(circle at 15% 5%, rgba(101, 190, 255, .38), transparent 30%),
radial-gradient(circle at 85% 95%, rgba(116, 88, 214, .32), transparent 34%),
linear-gradient(135deg, #102b45 0%, #15233b 44%, #20203a 100%);
}
body::before,
body::after {
content: "";
position: fixed;
border-radius: 50%;
filter: blur(2px);
pointer-events: none;
}
body::before {
width: 440px;
height: 440px;
top: -230px;
right: 80px;
background: rgba(255, 202, 105, .12);
}
body::after {
width: 360px;
height: 360px;
bottom: -190px;
left: 80px;
background: rgba(91, 191, 255, .12);
}
.page {
width: 100vw;
height: 100vh;
padding: 38px;
display: grid;
place-items: center;
}
.weather-card {
position: relative;
width: min(1180px, calc(100vw - 76px));
height: min(724px, calc(100vh - 76px));
min-height: 620px;
padding: 38px 42px 30px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, .17);
border-radius: 34px;
background:
linear-gradient(145deg, rgba(255, 255, 255, .10), rgba(255, 255, 255, .025)),
var(--glass);
box-shadow:
0 35px 80px rgba(2, 10, 25, .42),
inset 0 1px 0 rgba(255, 255, 255, .16);
backdrop-filter: blur(28px);
}
.weather-card::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(115deg, rgba(255,255,255,.08), transparent 28%);
pointer-events: none;
}
header {
position: relative;
z-index: 1;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 30px;
}
.eyebrow {
display: flex;
align-items: center;
gap: 9px;
margin-bottom: 10px;
color: var(--blue);
font-size: 12px;
font-weight: 750;
letter-spacing: .17em;
text-transform: uppercase;
}
.eyebrow::before {
content: "";
width: 7px;
height: 7px;
border-radius: 50%;
background: currentColor;
box-shadow: 0 0 14px currentColor;
}
h1 {
max-width: 650px;
margin: 0;
overflow: hidden;
font-size: clamp(36px, 4vw, 54px);
font-weight: 650;
line-height: 1.03;
letter-spacing: -.045em;
text-overflow: ellipsis;
white-space: nowrap;
}
.date {
margin-top: 10px;
color: var(--muted);
font-size: 16px;
font-weight: 450;
}
.utc-badge {
flex: none;
margin-top: 2px;
padding: 10px 14px;
border: 1px solid rgba(255,255,255,.12);
border-radius: 999px;
color: rgba(240,247,255,.72);
background: rgba(255,255,255,.055);
font-size: 11px;
font-weight: 700;
letter-spacing: .12em;
}
.summary {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: minmax(340px, .92fr) minmax(380px, 1.08fr);
gap: 34px;
align-items: center;
min-height: 246px;
margin-top: 16px;
}
.current {
display: flex;
align-items: center;
gap: 25px;
}
.weather-icon {
position: relative;
flex: 0 0 126px;
width: 126px;
height: 126px;
filter: drop-shadow(0 13px 20px rgba(0,0,0,.2));
}
.weather-icon svg {
width: 100%;
height: 100%;
overflow: visible;
}
.condition {
margin-bottom: 10px;
color: rgba(247,250,255,.94);
font-size: 21px;
font-weight: 540;
}
.temperature-row {
display: flex;
align-items: baseline;
gap: 18px;
}
.high {
font-size: clamp(66px, 7vw, 91px);
font-weight: 300;
line-height: .92;
letter-spacing: -.075em;
}
.high .unit {
position: relative;
top: -27px;
margin-left: 6px;
font-size: 24px;
font-weight: 550;
letter-spacing: -.03em;
}
.low-block {
padding-left: 17px;
border-left: 1px solid rgba(255,255,255,.16);
}
.label {
margin-bottom: 4px;
color: var(--muted);
font-size: 11px;
font-weight: 750;
letter-spacing: .13em;
text-transform: uppercase;
}
.low {
color: #cfeeff;
font-size: 28px;
font-weight: 540;
}
.range-panel {
padding: 25px 26px 23px;
border: 1px solid rgba(255,255,255,.105);
border-radius: 24px;
background: rgba(5, 16, 33, .2);
}
.range-title {
display: flex;
justify-content: space-between;
margin-bottom: 18px;
color: var(--muted);
font-size: 12px;
font-weight: 700;
letter-spacing: .11em;
text-transform: uppercase;
}
.range-values {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
font-size: 14px;
font-weight: 650;
}
.range-track {
position: relative;
height: 9px;
overflow: hidden;
border-radius: 20px;
background: rgba(255,255,255,.085);
}
.range-fill {
position: absolute;
inset: 0;
border-radius: inherit;
background: linear-gradient(90deg, #68c6ff, #aae3e7 45%, #ffd16e 100%);
box-shadow: 0 0 20px rgba(106,197,255,.25);
}
.range-note {
margin-top: 16px;
color: rgba(225,237,251,.52);
font-size: 13px;
line-height: 1.5;
}
.hourly {
position: relative;
z-index: 1;
padding-top: 22px;
border-top: 1px solid var(--line);
}
.section-header {
display: flex;
align-items: end;
justify-content: space-between;
margin-bottom: 14px;
}
h2 {
margin: 0;
font-size: 16px;
font-weight: 650;
letter-spacing: -.01em;
}
.section-subtitle {
color: var(--muted);
font-size: 12px;
}
.chart-wrap {
position: relative;
height: 194px;
overflow: hidden;
border: 1px solid rgba(255,255,255,.09);
border-radius: 22px;
background:
repeating-linear-gradient(to bottom, transparent 0, transparent 48px, rgba(255,255,255,.055) 49px),
rgba(4, 14, 29, .18);
}
#chart {
display: block;
width: 100%;
height: 100%;
}
.chart-empty {
height: 100%;
display: grid;
place-items: center;
color: var(--muted);
font-size: 14px;
}
.loading,
.error-state {
position: absolute;
z-index: 5;
inset: 0;
display: grid;
place-items: center;
padding: 50px;
text-align: center;
background: rgba(11, 24, 42, .82);
backdrop-filter: blur(18px);
}
.loading-inner,
.error-inner {
max-width: 460px;
}
.spinner {
width: 42px;
height: 42px;
margin: 0 auto 20px;
border: 3px solid rgba(255,255,255,.14);
border-top-color: var(--blue);
border-radius: 50%;
animation: spin .8s linear infinite;
}
.state-title {
margin: 0 0 9px;
font-size: 24px;
font-weight: 620;
}
.state-copy {
margin: 0;
color: var(--muted);
font-size: 14px;
line-height: 1.6;
}
.error-state { display: none; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (max-height: 730px) {
.page { padding: 24px; }
.weather-card {
height: calc(100vh - 48px);
min-height: 0;
padding-top: 28px;
}
.summary { min-height: 215px; }
.chart-wrap { height: 165px; }
}
</style>
</head>
<body>
<main class="page">
<article class="weather-card" aria-live="polite">
<header>
<div>
<div class="eyebrow">Daily forecast</div>
<h1 id="location">Berlin</h1>
<div class="date" id="displayDate">—</div>
</div>
<div class="utc-badge">UTC · CELSIUS</div>
</header>
<section class="summary">
<div class="current">
<div class="weather-icon" id="weatherIcon" aria-hidden="true"></div>
<div>
<div class="condition" id="condition">—</div>
<div class="temperature-row">
<div class="high"><span id="maxTemp">—</span><span class="unit">°C</span></div>
<div class="low-block">
<div class="label">Low</div>
<div class="low"><span id="minTemp">—</span>°</div>
</div>
</div>
</div>
</div>
<div class="range-panel">
<div class="range-title"><span>Daily range</span><span id="rangeAmount">—</span></div>
<div class="range-values">
<span id="rangeLow">—°</span>
<span id="rangeHigh">—°</span>
</div>
<div class="range-track"><div class="range-fill"></div></div>
<div class="range-note" id="rangeNote">Hourly temperatures are shown below in Coordinated Universal Time.</div>
</div>
</section>
<section class="hourly">
<div class="section-header">
<h2>Hourly temperature</h2>
<div class="section-subtitle">00:00–23:00 UTC</div>
</div>
<div class="chart-wrap" id="chartWrap">
<svg id="chart" role="img" aria-label="Hourly temperature chart"></svg>
</div>
</section>
<div class="loading" id="loading">
<div class="loading-inner">
<div class="spinner"></div>
<h2 class="state-title">Loading weather</h2>
<p class="state-copy">Preparing the daily outlook and hourly temperatures.</p>
</div>
</div>
<div class="error-state" id="error">
<div class="error-inner">
<h2 class="state-title">Weather data could not be loaded</h2>
<p class="state-copy" id="errorMessage">Please check the requested location and date, then try again.</p>
</div>
</div>
</article>
</main>
<script>
(() => {
"use strict";
const params = new URLSearchParams(location.search);
const now = new Date();
const todayUTC = [
now.getUTCFullYear(),
String(now.getUTCMonth() + 1).padStart(2, "0"),
String(now.getUTCDate()).padStart(2, "0")
].join("-");
const rawLat = Number(params.get("lat"));
const rawLon = Number(params.get("lon"));
const latitude = Number.isFinite(rawLat) && rawLat >= -90 && rawLat <= 90 ? rawLat : 52.52;
const longitude = Number.isFinite(rawLon) && rawLon >= -180 && rawLon <= 180 ? rawLon : 13.405;
const name = (params.get("name") || "Berlin").trim().slice(0, 100) || "Berlin";
const requestedDate = /^\d{4}-\d{2}-\d{2}$/.test(params.get("date") || "")
? params.get("date")
: todayUTC;
const parseDateUTC = value => {
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
if (!match) return null;
const date = new Date(Date.UTC(+match[1], +match[2] - 1, +match[3]));
return date.getUTCFullYear() === +match[1] &&
date.getUTCMonth() === +match[2] - 1 &&
date.getUTCDate() === +match[3] ? date : null;
};
const requestedDateObject = parseDateUTC(requestedDate);
const effectiveDate = requestedDateObject ? requestedDate : todayUTC;
const endpoint = effectiveDate < todayUTC ? "/api/om/archive" : "/api/om/forecast";
const query = new URLSearchParams({
latitude: String(latitude),
longitude: String(longitude),
daily: "temperature_2m_max,temperature_2m_min,weather_code",
hourly: "temperature_2m",
timezone: "UTC",
temperature_unit: "celsius",
start_date: effectiveDate,
end_date: effectiveDate
});
const $ = id => document.getElementById(id);
$("location").textContent = name;
document.title = `${name} · Weather`;
const dateObject = parseDateUTC(effectiveDate);
$("displayDate").textContent = dateObject
? new Intl.DateTimeFormat("en-US", {
weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
}).format(dateObject)
: effectiveDate;
const conditions = {
0: ["Clear sky", "sun"],
1: ["Mainly clear", "partly"],
2: ["Partly cloudy", "partly"],
3: ["Overcast", "cloud"],
45: ["Fog", "fog"],
48: ["Depositing rime fog", "fog"],
51: ["Light drizzle", "rain"],
53: ["Moderate drizzle", "rain"],
55: ["Dense drizzle", "rain"],
56: ["Freezing drizzle", "sleet"],
57: ["Dense freezing drizzle", "sleet"],
61: ["Slight rain", "rain"],
63: ["Moderate rain", "rain"],
65: ["Heavy rain", "rain"],
66: ["Freezing rain", "sleet"],
67: ["Heavy freezing rain", "sleet"],
71: ["Slight snowfall", "snow"],
73: ["Moderate snowfall", "snow"],
75: ["Heavy snowfall", "snow"],
77: ["Snow grains", "snow"],
80: ["Slight rain showers", "rain"],
81: ["Moderate rain showers", "rain"],
82: ["Violent rain showers", "rain"],
85: ["Slight snow showers", "snow"],
86: ["Heavy snow showers", "snow"],
95: ["Thunderstorm", "storm"],
96: ["Thunderstorm with hail", "storm"],
99: ["Severe thunderstorm with hail", "storm"]
};
const iconSVG = type => {
const sun = `<circle cx="46" cy="45" r="19" fill="#FFD36B"/>
<g stroke="#FFD36B" stroke-width="5" stroke-linecap="round">
<path d="M46 8v9M46 73v9M9 45h9M74 45h9M20 19l7 7M65 64l7 7M72 19l-7 7M27 64l-7 7"/>
</g>`;
const cloud = `<path d="M34 89h55c16 0 27-10 27-24 0-13-10-23-23-24C89 25 76 15 59 15 38 15 23 31 22 51 9 54 2 62 2 71c0 10 9 18 32 18Z"
fill="url(#cloudGradient)" stroke="rgba(255,255,255,.34)" stroke-width="1.5"/>`;
const defs = `<defs>
<linearGradient id="cloudGradient" x1="18" y1="18" x2="91" y2="92" gradientUnits="userSpaceOnUse">
<stop stop-color="#F4FAFF"/><stop offset="1" stop-color="#A9C9E3"/>
</linearGradient>
<linearGradient id="rainGradient" x1="0" y1="0" x2="0" y2="1">
<stop stop-color="#78D5FF"/><stop offset="1" stop-color="#438DFF"/>
</linearGradient>
</defs>`;
let content = "";
if (type === "sun") content = sun;
else if (type === "partly") content = `<g transform="translate(3 0)">${sun}</g><g transform="translate(10 26) scale(.86)">${cloud}</g>`;
else if (type === "cloud") content = `<g transform="translate(4 16)">${cloud}</g>`;
else if (type === "fog") content = `<g transform="translate(5 5) scale(.92)">${cloud}</g>
<g stroke="#B9D8E9" stroke-width="6" stroke-linecap="round" opacity=".9">
<path d="M13 96h76"/><path d="M27 111h77"/>
</g>`;
else if (type === "rain" || type === "sleet") content = `<g transform="translate(5 0) scale(.92)">${cloud}</g>
<g stroke="url(#rainGradient)" stroke-width="6" stroke-linecap="round">
<path d="M34 92l-7 13M61 92l-7 13M88 92l-7 13"/>
</g>${type === "sleet" ? `<g fill="#EAF8FF"><circle cx="34" cy="114" r="3"/><circle cx="67" cy="113" r="3"/></g>` : ""}`;
else if (type === "snow") content = `<g transform="translate(5 0) scale(.92)">${cloud}</g>
<g fill="#E5F7FF"><circle cx="27" cy="99" r="4"/><circle cx="54" cy="108" r="4"/><circle cx="84" cy="99" r="4"/></g>`;
else if (type === "storm") content = `<g transform="translate(5 0) scale(.92)">${cloud}</g>
<path d="M66 85H49l-9 22h14l-5 17 28-29H62Z" fill="#FFD05C"/>`;
else content = `<g transform="translate(4 16)">${cloud}</g>`;
return `<svg viewBox="0 0 126 126" xmlns="http://www.w3.org/2000/svg">${defs}${content}</svg>`;
};
const formatTemp = value => Number.isFinite(Number(value)) ? Math.round(Number(value)) : "—";
function renderChart(times, values) {
const points = values.map((value, index) => ({
value: Number(value),
time: times[index] || "",
index
})).filter(point => Number.isFinite(point.value));
if (!points.length) {
$("chartWrap").innerHTML = '<div class="chart-empty">Hourly temperatures are unavailable.</div>';
return;
}
const svg = $("chart");
const width = 1060;
const height = 194;
const pad = { left: 30, right: 30, top: 25, bottom: 38 };
const minValue = Math.floor(Math.min(...points.map(p => p.value)) - 2);
const maxValue = Math.ceil(Math.max(...points.map(p => p.value)) + 2);
const span = Math.max(4, maxValue - minValue);
const x = index => pad.left + (index / Math.max(1, values.length - 1)) * (width - pad.left - pad.right);
const y = value => pad.top + ((maxValue - value) / span) * (height - pad.top - pad.bottom);
const line = points.map((p, i) => `${i ? "L" : "M"}${x(p.index).toFixed(1)},${y(p.value).toFixed(1)}`).join(" ");
const area = `${line} L${x(points[points.length - 1].index).toFixed(1)},${height - pad.bottom} L${x(points[0].index).toFixed(1)},${height - pad.bottom} Z`;
const tickIndexes = [0, 3, 6, 9, 12, 15, 18, 21, 23].filter(i => i < values.length);
const ticks = tickIndexes.map(i => {
const value = Number(values[i]);
const hour = (times[i] && times[i].includes("T")) ? times[i].split("T")[1].slice(0, 5) : `${String(i).padStart(2, "0")}:00`;
return `<g>
<line x1="${x(i)}" y1="${height - pad.bottom}" x2="${x(i)}" y2="${height - pad.bottom + 5}" stroke="rgba(255,255,255,.22)"/>
<text x="${x(i)}" y="${height - 13}" text-anchor="middle" fill="rgba(231,241,255,.56)" font-size="10">${hour}</text>
${Number.isFinite(value) ? `<circle cx="${x(i)}" cy="${y(value)}" r="4" fill="#EAF8FF" stroke="#68C6FF" stroke-width="2"/>
<text x="${x(i)}" y="${Math.max(12, y(value) - 11)}" text-anchor="middle" fill="rgba(248,251,255,.88)" font-size="11" font-weight="650">${Math.round(value)}°</text>` : ""}
</g>`;
}).join("");
svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
svg.setAttribute("preserveAspectRatio", "none");
svg.innerHTML = `
<defs>
<linearGradient id="areaGradient" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#67C9FF" stop-opacity=".35"/>
<stop offset="1" stop-color="#67C9FF" stop-opacity="0"/>
</linearGradient>
<linearGradient id="lineGradient" x1="0" y1="0" x2="1" y2="0">
<stop stop-color="#62C7FF"/><stop offset=".58" stop-color="#A7E3E6"/><stop offset="1" stop-color="#FFD06A"/>
</linearGradient>
</defs>
<path d="${area}" fill="url(#areaGradient)"/>
<path d="${line}" fill="none" stroke="url(#lineGradient)" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"/>
${ticks}`;
}
async function loadWeather() {
try {
if (!requestedDateObject && params.has("date")) throw new Error("The requested date is invalid. Use the format YYYY-MM-DD.");
const response = await fetch(`${endpoint}?${query}`, {
method: "GET",
headers: { "Accept": "application/json" }
});
if (!response.ok) throw new Error(`The weather service returned an error (${response.status}).`);
const data = await response.json();
if (data.error) throw new Error(data.reason || "The weather service could not process this request.");
const max = Number(data?.daily?.temperature_2m_max?.[0]);
const min = Number(data?.daily?.temperature_2m_min?.[0]);
const code = Number(data?.daily?.weather_code?.[0]);
const times = Array.isArray(data?.hourly?.time) ? data.hourly.time : [];
const temperatures = Array.isArray(data?.hourly?.temperature_2m) ? data.hourly.temperature_2m : [];
if (!Number.isFinite(max) || !Number.isFinite(min)) {
throw new Error("No daily weather data is available for this date.");
}
const condition = conditions[code] || ["Weather conditions unavailable", "cloud"];
$("condition").textContent = condition[0];
$("weatherIcon").innerHTML = iconSVG(condition[1]);
$("maxTemp").textContent = formatTemp(max);
$("minTemp").textContent = formatTemp(min);
$("rangeLow").textContent = `${formatTemp(min)}°`;
$("rangeHigh").textContent = `${formatTemp(max)}°`;
$("rangeAmount").textContent = `${Math.round((max - min) * 10) / 10}° span`;
$("rangeNote").textContent = max - min >= 10
? "A broad temperature swing is expected across the day."
: "Temperatures are expected to remain relatively steady through the day.";
renderChart(times, temperatures);
$("loading").style.display = "none";
} catch (error) {
$("loading").style.display = "none";
$("error").style.display = "grid";
$("errorMessage").textContent = error?.message || "Please check the requested location and date, then try again.";
}
}
loadWeather();
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 20,747 | html / css / js | 2,484 / 7,607 / 10,656 |
|---|---|---|---|
| dom nodes | 54 | dom depth | 11 |
| css rules | 53 | js present | yes |
| brightness | 51.7 | contrast | 23.3 |
| colorfulness | 21.4 | whitespace | 57.1% |
This slot's telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 48.1 s |
| cost | — | request id | — |
config.json562 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.6-sol-eff-low--cli--kiro--dev",
"effort": "low",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.6-sol",
"protocol": "cli",
"served_model": "gpt-5.6-sol",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 169853
},
"transport": "kiro-cli-isolated-home-github-social",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-18--kiro-cli",
"config_id": "gpt-5.6-sol-eff-low--cli--kiro--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-18T18:29:16.600033+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:28:36.703697+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-18T18:30:09.257316+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:29:21.094320+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-18T18:30:57.197621+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:30:12.968704+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-18T18:31:38.851179+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:31:00.999328+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-min"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}