gpt-5.6-sol @ medium · codex-oauth
codex-oauthmedium
- config
- gpt-5.6-sol-eff-medium--cli--codex-oauth--dev
- batch
- 2026-07-19--unified
- transport
- codex-cli-oauth-chatgpt
- 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-luna @medium · kiro0.72gpt-5.6-sol @low · kiro0.72claude-opus-4-8 @max · kiro0.70gpt-5.6-terra @low · kiro0.70qwen3.8-max-preview · qoder0.70farthest
kimi-k2.6 · go0.38gpt-5.6-luna @high · kiro0.38gpt-5.5 @low · codex-oauth0.39gpt-5.6-luna @low · codex-oauth0.41gpt-5.6-luna @medium · 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 tempmismatchshown: 28
- min tempmismatchshown: 23
- 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">
<title>Weather Card</title>
<style>
:root {
color-scheme: dark;
font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--ink: #f7fbff;
--muted: rgba(235, 245, 255, .66);
--line: rgba(255, 255, 255, .12);
--glass: rgba(9, 25, 49, .62);
--accent: #ffc86b;
--cool: #80d8ff;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-width: 320px;
min-height: 100vh;
overflow: hidden;
color: var(--ink);
background:
radial-gradient(circle at 78% 8%, rgba(85, 189, 255, .33), transparent 34%),
radial-gradient(circle at 13% 84%, rgba(112, 84, 255, .27), transparent 38%),
linear-gradient(135deg, #07142b 0%, #102b50 48%, #0b3155 100%);
}
body::before,
body::after {
content: "";
position: fixed;
border-radius: 50%;
filter: blur(1px);
pointer-events: none;
}
body::before {
width: 420px;
height: 420px;
right: -110px;
top: -170px;
background: rgba(255, 207, 112, .10);
box-shadow: 0 0 100px rgba(255, 198, 88, .13);
}
body::after {
width: 310px;
height: 310px;
left: -130px;
bottom: -130px;
background: rgba(84, 213, 255, .09);
}
.stage {
width: 100vw;
height: 100vh;
min-height: 620px;
display: grid;
place-items: center;
padding: 42px;
}
.card {
position: relative;
width: min(1160px, calc(100vw - 84px));
height: min(700px, calc(100vh - 84px));
min-height: 620px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, .15);
border-radius: 34px;
background:
linear-gradient(145deg, rgba(255,255,255,.11), transparent 38%),
var(--glass);
box-shadow:
0 34px 90px rgba(0, 5, 20, .46),
inset 0 1px 0 rgba(255, 255, 255, .12);
backdrop-filter: blur(28px);
}
.card::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background: linear-gradient(100deg, transparent 45%, rgba(255,255,255,.025));
}
.content {
position: relative;
z-index: 2;
height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
gap: 22px;
padding: 44px 48px 38px;
}
header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 30px;
}
.eyebrow {
margin: 0 0 10px;
color: var(--cool);
font-size: 11px;
font-weight: 750;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
max-width: 680px;
margin: 0;
overflow: hidden;
font-size: clamp(34px, 4vw, 54px);
font-weight: 560;
letter-spacing: -.045em;
line-height: 1;
text-overflow: ellipsis;
white-space: nowrap;
}
.date {
margin: 13px 0 0;
color: var(--muted);
font-size: 15px;
letter-spacing: .01em;
}
.utc {
margin-top: 3px;
color: rgba(235,245,255,.42);
font-size: 11px;
letter-spacing: .12em;
text-transform: uppercase;
}
.condition-pill {
display: flex;
align-items: center;
gap: 10px;
margin-top: 4px;
padding: 10px 15px 10px 11px;
border: 1px solid var(--line);
border-radius: 999px;
color: rgba(247,251,255,.86);
background: rgba(255,255,255,.055);
font-size: 13px;
font-weight: 600;
white-space: nowrap;
}
.condition-pill span:first-child {
display: grid;
width: 29px;
height: 29px;
place-items: center;
border-radius: 50%;
background: rgba(255, 200, 107, .15);
font-size: 17px;
}
.overview {
min-height: 225px;
display: grid;
grid-template-columns: 1fr 1.08fr;
align-items: center;
gap: 50px;
}
.weather-main {
display: flex;
align-items: center;
gap: 34px;
padding-left: 8px;
}
.art {
position: relative;
width: 184px;
height: 160px;
flex: 0 0 184px;
}
.sun {
position: absolute;
top: 3px;
left: 52px;
width: 105px;
height: 105px;
border-radius: 50%;
background: linear-gradient(145deg, #ffe59c, #ffad45);
box-shadow:
0 0 38px rgba(255, 191, 84, .38),
0 0 90px rgba(255, 174, 67, .17);
}
.sun::after {
content: "";
position: absolute;
inset: 13px;
border: 1px solid rgba(255,255,255,.28);
border-radius: inherit;
}
.cloud {
position: absolute;
left: 12px;
bottom: 17px;
width: 149px;
height: 61px;
border-radius: 34px;
background: linear-gradient(150deg, #f7fbff 10%, #a7c5dc 92%);
box-shadow: 0 16px 27px rgba(0, 8, 25, .28);
}
.cloud::before,
.cloud::after {
content: "";
position: absolute;
border-radius: 50%;
background: inherit;
}
.cloud::before {
width: 75px;
height: 75px;
left: 21px;
bottom: 20px;
}
.cloud::after {
width: 58px;
height: 58px;
right: 20px;
bottom: 18px;
}
.art.clear .cloud { display: none; }
.art.clear .sun { left: 38px; top: 23px; width: 122px; height: 122px; }
.art.cloudy .sun { opacity: .38; filter: saturate(.45); }
.art.cloudy .cloud { transform: scale(1.07); transform-origin: bottom left; }
.art.precip .sun { opacity: .3; filter: saturate(.4); }
.rain,
.snow {
position: absolute;
left: 42px;
bottom: -6px;
display: none;
gap: 22px;
}
.precip.rainy .rain { display: flex; }
.precip.snowy .snow { display: flex; }
.rain i {
width: 4px;
height: 20px;
border-radius: 10px;
background: #78d8ff;
transform: rotate(18deg);
box-shadow: 0 0 10px rgba(120,216,255,.35);
}
.snow i {
color: #dff6ff;
font-style: normal;
font-size: 20px;
}
.temperature {
display: flex;
align-items: flex-start;
line-height: .82;
}
.temperature strong {
font-size: clamp(82px, 8.4vw, 116px);
font-weight: 350;
letter-spacing: -.075em;
}
.temperature sup {
margin: 4px 0 0 8px;
color: var(--accent);
font-size: 25px;
font-weight: 550;
}
.temperature-label {
margin-top: 17px;
color: var(--muted);
font-size: 13px;
}
.metrics {
display: grid;
grid-template-columns: 1fr 1fr;
overflow: hidden;
border: 1px solid var(--line);
border-radius: 25px;
background: rgba(255,255,255,.04);
}
.metric {
min-height: 150px;
padding: 25px 28px;
}
.metric + .metric { border-left: 1px solid var(--line); }
.metric-label {
display: flex;
align-items: center;
gap: 8px;
color: var(--muted);
font-size: 12px;
font-weight: 650;
letter-spacing: .11em;
text-transform: uppercase;
}
.metric-label i {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--accent);
box-shadow: 0 0 12px rgba(255,200,107,.45);
}
.metric:last-child .metric-label i {
background: var(--cool);
box-shadow: 0 0 12px rgba(128,216,255,.42);
}
.metric-value {
margin-top: 20px;
font-size: 53px;
font-weight: 380;
letter-spacing: -.055em;
}
.metric-value span {
margin-left: 3px;
color: var(--muted);
font-size: 20px;
vertical-align: top;
}
.chart-panel {
min-height: 245px;
padding: 22px 24px 15px;
border: 1px solid var(--line);
border-radius: 26px;
background: rgba(2, 14, 32, .26);
}
.chart-heading {
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 3px 10px;
}
.chart-heading h2 {
margin: 0;
font-size: 14px;
font-weight: 650;
letter-spacing: .02em;
}
.chart-heading span {
color: rgba(235,245,255,.46);
font-size: 11px;
letter-spacing: .12em;
text-transform: uppercase;
}
#chart {
display: block;
width: 100%;
height: 190px;
overflow: visible;
}
.grid-line {
stroke: rgba(255,255,255,.075);
stroke-width: 1;
}
.axis-label {
fill: rgba(235,245,255,.42);
font-size: 10px;
font-family: inherit;
}
.area { fill: url(#areaGradient); }
.curve {
fill: none;
stroke: #84ddff;
stroke-width: 3;
stroke-linecap: round;
stroke-linejoin: round;
filter: drop-shadow(0 0 6px rgba(92,207,255,.38));
}
.point {
fill: #e9faff;
stroke: #47c8ff;
stroke-width: 2;
}
.point-label {
fill: rgba(247,251,255,.82);
font-size: 10px;
font-weight: 650;
font-family: inherit;
text-anchor: middle;
}
.status {
position: absolute;
z-index: 5;
inset: 0;
display: grid;
place-items: center;
background: rgba(5, 18, 38, .76);
backdrop-filter: blur(18px);
transition: opacity .35s ease, visibility .35s ease;
}
.status.hidden {
opacity: 0;
visibility: hidden;
}
.status-inner {
max-width: 440px;
padding: 36px;
text-align: center;
}
.spinner {
width: 42px;
height: 42px;
margin: 0 auto 20px;
border: 3px solid rgba(255,255,255,.12);
border-top-color: var(--cool);
border-radius: 50%;
animation: spin .85s linear infinite;
}
.status.error .spinner {
display: grid;
place-items: center;
border: 1px solid rgba(255,130,130,.35);
border-radius: 50%;
color: #ffb1b1;
background: rgba(255,90,90,.08);
animation: none;
}
.status.error .spinner::after {
content: "!";
font-size: 22px;
font-weight: 750;
}
.status-title {
margin: 0;
font-size: 21px;
font-weight: 600;
}
.status-copy {
margin: 9px 0 0;
color: var(--muted);
font-size: 14px;
line-height: 1.55;
}
@keyframes spin { to { transform: rotate(360deg); } }
@media (max-width: 900px), (max-height: 700px) {
body { overflow: auto; }
.stage { height: auto; min-height: 100vh; padding: 24px; }
.card { width: 100%; height: auto; min-height: 0; }
.content { padding: 32px; }
.overview { grid-template-columns: 1fr; gap: 22px; }
.weather-main { justify-content: center; }
}
</style>
</head>
<body>
<main class="stage">
<article class="card" aria-label="Daily weather">
<div class="status" id="status" role="status" aria-live="polite">
<div class="status-inner">
<div class="spinner"></div>
<p class="status-title" id="statusTitle">Loading the forecast</p>
<p class="status-copy" id="statusCopy">Gathering the day’s temperatures…</p>
</div>
</div>
<div class="content">
<header>
<div>
<p class="eyebrow">Daily weather</p>
<h1 id="location">Berlin</h1>
<p class="date" id="dateLabel"></p>
<div class="utc">Coordinated Universal Time</div>
</div>
<div class="condition-pill">
<span id="conditionIcon" aria-hidden="true">◐</span>
<span id="condition">Loading</span>
</div>
</header>
<section class="overview">
<div class="weather-main">
<div class="art precip" id="weatherArt" aria-hidden="true">
<div class="sun"></div>
<div class="cloud"></div>
<div class="rain"><i></i><i></i><i></i></div>
<div class="snow"><i>✦</i><i>✦</i><i>✦</i></div>
</div>
<div>
<div class="temperature">
<strong id="headlineTemp">—</strong><sup>°C</sup>
</div>
<div class="temperature-label">Daily high</div>
</div>
</div>
<div class="metrics">
<div class="metric">
<div class="metric-label"><i></i>Maximum</div>
<div class="metric-value"><b id="maxTemp">—</b><span>°C</span></div>
</div>
<div class="metric">
<div class="metric-label"><i></i>Minimum</div>
<div class="metric-value"><b id="minTemp">—</b><span>°C</span></div>
</div>
</div>
</section>
<section class="chart-panel" aria-labelledby="hourlyTitle">
<div class="chart-heading">
<h2 id="hourlyTitle">Hourly temperature</h2>
<span>00:00–23:00 UTC</span>
</div>
<svg id="chart" role="img" aria-label="Hourly temperature chart" viewBox="0 0 1040 190" preserveAspectRatio="none"></svg>
</section>
</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 numericParam = (key, fallback, min, max) => {
const value = Number(params.get(key));
return Number.isFinite(value) && value >= min && value <= max ? value : fallback;
};
const validDate = value => {
if (!/^\d{4}-\d{2}-\d{2}$/.test(value || "")) return false;
const parsed = new Date(value + "T00:00:00Z");
return !Number.isNaN(parsed.getTime()) &&
parsed.toISOString().slice(0, 10) === value;
};
const latitude = numericParam("lat", 52.52, -90, 90);
const longitude = numericParam("lon", 13.405, -180, 180);
const requestedName = (params.get("name") || "Berlin").trim().slice(0, 90) || "Berlin";
const requestedDate = validDate(params.get("date")) ? params.get("date") : todayUTC;
const $ = id => document.getElementById(id);
$("location").textContent = requestedName;
$("dateLabel").textContent = new Intl.DateTimeFormat(undefined, {
weekday: "long",
day: "numeric",
month: "long",
year: "numeric",
timeZone: "UTC"
}).format(new Date(requestedDate + "T12:00:00Z"));
document.title = requestedName + " weather";
const conditionFor = code => {
const conditions = {
0: ["Clear sky", "☀", "clear"],
1: ["Mainly clear", "◐", ""],
2: ["Partly cloudy", "◒", ""],
3: ["Overcast", "☁", "cloudy"],
45: ["Fog", "≋", "cloudy"],
48: ["Rime fog", "≋", "cloudy"],
51: ["Light drizzle", "⌁", "precip rainy"],
53: ["Drizzle", "⌁", "precip rainy"],
55: ["Heavy drizzle", "⌁", "precip rainy"],
56: ["Freezing drizzle", "❄", "precip snowy"],
57: ["Freezing drizzle", "❄", "precip snowy"],
61: ["Light rain", "☂", "precip rainy"],
63: ["Rain", "☂", "precip rainy"],
65: ["Heavy rain", "☂", "precip rainy"],
66: ["Freezing rain", "❄", "precip snowy"],
67: ["Heavy freezing rain", "❄", "precip snowy"],
71: ["Light snow", "❄", "precip snowy"],
73: ["Snow", "❄", "precip snowy"],
75: ["Heavy snow", "❄", "precip snowy"],
77: ["Snow grains", "❄", "precip snowy"],
80: ["Light showers", "☂", "precip rainy"],
81: ["Rain showers", "☂", "precip rainy"],
82: ["Heavy showers", "☂", "precip rainy"],
85: ["Snow showers", "❄", "precip snowy"],
86: ["Heavy snow showers", "❄", "precip snowy"],
95: ["Thunderstorm", "ϟ", "precip rainy"],
96: ["Thunderstorm with hail", "ϟ", "precip rainy"],
99: ["Severe thunderstorm", "ϟ", "precip rainy"]
};
return conditions[code] || ["Unknown conditions", "◌", "cloudy"];
};
const createSVG = (tag, attrs = {}, text = "") => {
const node = document.createElementNS("http://www.w3.org/2000/svg", tag);
Object.entries(attrs).forEach(([key, value]) => node.setAttribute(key, value));
if (text) node.textContent = text;
return node;
};
function renderChart(values, times) {
const svg = $("chart");
svg.replaceChildren();
const width = 1040;
const height = 190;
const left = 34;
const right = 18;
const top = 24;
const bottom = 31;
const chartW = width - left - right;
const chartH = height - top - bottom;
const minValue = Math.floor(Math.min(...values) - 2);
const maxValue = Math.ceil(Math.max(...values) + 2);
const range = Math.max(4, maxValue - minValue);
const defs = createSVG("defs");
const gradient = createSVG("linearGradient", {
id: "areaGradient", x1: "0", y1: "0", x2: "0", y2: "1"
});
gradient.append(
createSVG("stop", { offset: "0%", "stop-color": "#6bd5ff", "stop-opacity": ".28" }),
createSVG("stop", { offset: "100%", "stop-color": "#6bd5ff", "stop-opacity": "0" })
);
defs.appendChild(gradient);
svg.appendChild(defs);
for (let i = 0; i < 4; i++) {
const y = top + chartH * i / 3;
const value = maxValue - range * i / 3;
svg.appendChild(createSVG("line", {
x1: left, y1: y, x2: width - right, y2: y, class: "grid-line"
}));
svg.appendChild(createSVG("text", {
x: 0, y: y + 4, class: "axis-label"
}, Math.round(value) + "°"));
}
const points = values.map((value, i) => ({
x: left + chartW * i / Math.max(1, values.length - 1),
y: top + (maxValue - value) / range * chartH,
value
}));
const linePath = points.map((p, i) =>
(i ? "L" : "M") + p.x.toFixed(2) + " " + p.y.toFixed(2)
).join(" ");
const areaPath = linePath +
" L " + points[points.length - 1].x + " " + (top + chartH) +
" L " + points[0].x + " " + (top + chartH) + " Z";
svg.appendChild(createSVG("path", { d: areaPath, class: "area" }));
svg.appendChild(createSVG("path", { d: linePath, class: "curve" }));
const labelIndexes = new Set([0, 6, 12, 18, values.length - 1].filter(i => i < values.length));
points.forEach((point, i) => {
if (labelIndexes.has(i)) {
svg.appendChild(createSVG("circle", {
cx: point.x, cy: point.y, r: 4, class: "point"
}));
svg.appendChild(createSVG("text", {
x: point.x,
y: Math.max(12, point.y - 11),
class: "point-label"
}, Math.round(point.value) + "°"));
}
});
labelIndexes.forEach(i => {
const hour = (times[i] || "").slice(11, 16) || String(i).padStart(2, "0") + ":00";
svg.appendChild(createSVG("text", {
x: points[i].x,
y: height - 5,
class: "axis-label",
"text-anchor": i === 0 ? "start" : i === values.length - 1 ? "end" : "middle"
}, hour));
});
}
function fail(message) {
const status = $("status");
status.classList.add("error");
$("statusTitle").textContent = "Weather unavailable";
$("statusCopy").textContent = message || "The data could not be loaded. Please try again.";
}
async function loadWeather() {
const endpoint = requestedDate < 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: requestedDate,
end_date: requestedDate
});
try {
const response = await fetch(endpoint + "?" + query.toString(), {
headers: { Accept: "application/json" }
});
if (!response.ok) throw new Error("Weather service returned " + response.status + ".");
const data = await response.json();
const dailyIndex = data.daily?.time?.indexOf(requestedDate);
if (dailyIndex == null || dailyIndex < 0) throw new Error("No daily data was returned for this date.");
const high = Number(data.daily.temperature_2m_max?.[dailyIndex]);
const low = Number(data.daily.temperature_2m_min?.[dailyIndex]);
const code = Number(data.daily.weather_code?.[dailyIndex]);
if (![high, low, code].every(Number.isFinite)) throw new Error("The daily weather data is incomplete.");
const hourlyTimes = data.hourly?.time || [];
const temperatures = data.hourly?.temperature_2m || [];
const entries = hourlyTimes
.map((time, index) => ({ time, value: Number(temperatures[index]) }))
.filter(entry => entry.time.startsWith(requestedDate) && Number.isFinite(entry.value));
if (!entries.length) throw new Error("No hourly temperatures were returned for this date.");
const [condition, icon, artClass] = conditionFor(code);
$("condition").textContent = condition;
$("conditionIcon").textContent = icon;
$("headlineTemp").textContent = Math.round(high);
$("maxTemp").textContent = high.toFixed(1);
$("minTemp").textContent = low.toFixed(1);
$("weatherArt").className = "art " + artClass;
renderChart(entries.map(entry => entry.value), entries.map(entry => entry.time));
requestAnimationFrame(() => $("status").classList.add("hidden"));
} catch (error) {
fail(error instanceof Error ? error.message : "");
}
}
loadWeather();
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 22,575 | html / css / js | 2,617 / 10,767 / 9,191 |
|---|---|---|---|
| dom nodes | 61 | dom depth | 10 |
| css rules | 76 | js present | yes |
| brightness | 42.7 | contrast | 27.6 |
| colorfulness | 23.6 | whitespace | 53.8% |
This slot's telemetry
| prompt tokens | 0 | completion tokens | 12,520 |
|---|---|---|---|
| total tokens | 0 | wall | 122 s |
| cost | — | request id | — |
config.json563 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.6-sol-eff-medium--cli--codex-oauth--dev",
"effort": "medium",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.6-sol",
"protocol": "cli",
"served_model": "gpt-5.6-sol",
"telemetry": {
"completion_tokens": 45846,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 417751
},
"transport": "codex-cli-oauth-chatgpt",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-17--dev-codex-oauth-gpt-5.6-sol",
"config_id": "gpt-5.6-sol-eff-medium--cli--codex-oauth--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T14:02:45.345059+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:00:43.350207+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-17T14:04:42.919217+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:02:48.991847+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-17T14:06:22.192903+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:04:46.276957+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-17T14:07:51.764852+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:06:25.841017+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
}
}
}