claude-opus-5 @ xhigh · CC
- config
- claude-opus-5-eff-xhigh--cli--claude-code--dev
- batch
- 2026-07-19--unified
- transport
- claude-code-cli-headless
- protocol
- cli · plan
- served model
- claude-opus-5
- captured
- Jul 18, 2026, 11:54 AM · N=2
— wcb-render-census (Claude Opus 5 agent), Jul 25, 2026, 12:00 AM

metrics refer to the original output
content never populated — at capture time this card was still in its placeholder state and the real content never arrived. The screenshot is exactly what the page showed; its own code is in Source below.
The screenshot is the exact frozen pixels the similarity channels measured. Run live re-executes the raw output in a sandboxed iframe; its rendering depends on your browser and fonts and is not guaranteed to match the measured pixels.
similarity neighbors
within session 2026-07-19--unified
similarity measures convergence within this session — not quality.
Fidelity — does the card show the right data?
Every content field is not-found — not an extractor failure, but a card that rendered no content for it to read. The rows below are the evidence.
- namenot-foundtext-present-no-name-hit
- conditionnot-foundno-condition-text
- datenot-foundno-parseable-date
- max tempnot-foundno-temperature-candidate
- min tempnot-foundno-temperature-candidate
- hourlynot-foundcoverage · 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=1280, initial-scale=1">
<title>Weather</title>
<link rel="icon" href="data:,">
<style>
*, *::before, *::after { box-sizing: border-box; }
:root{
--bg: #07090F;
--surface: #10151F;
--surface-2: #161C28;
--line: rgba(255,255,255,.075);
--line-strong: rgba(255,255,255,.14);
--ink: #F1F4F9;
--ink-2: #A9B4C6;
--ink-3: #78849A;
--accent: #9DC6F5;
--accent-rgb: 157,198,245;
--glow-a: rgba(157,198,245,.30);
--glow-b: rgba(120,110,255,.20);
--radius: 26px;
--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Helvetica Neue", Arial, sans-serif;
}
html, body { height: 100%; }
body{
margin:0;
background: var(--bg);
color: var(--ink);
font-family: var(--font);
font-size:15px;
line-height:1.5;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
display:flex;
align-items:center;
justify-content:center;
padding:40px;
min-height:100vh;
overflow:hidden;
}
/* ── ambient background ─────────────────────────────────────────── */
.bg{ position:fixed; inset:0; z-index:0; overflow:hidden; pointer-events:none; }
.bg::after{
content:""; position:absolute; inset:-10%;
background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/><feColorMatrix type='saturate' values='0'/></filter><rect width='140' height='140' filter='url(%23n)' opacity='.5'/></svg>");
opacity:.030; mix-blend-mode:overlay;
}
.blob{ position:absolute; border-radius:50%; filter: blur(90px); will-change: transform; }
.blob-1{ width:820px; height:820px; top:-320px; left:-180px; background: var(--glow-a); animation: drift1 34s ease-in-out infinite; }
.blob-2{ width:700px; height:700px; bottom:-300px; right:-140px; background: var(--glow-b); animation: drift2 42s ease-in-out infinite; }
.blob-3{ width:520px; height:520px; top:38%; left:46%; background: rgba(var(--accent-rgb),.13); animation: drift1 50s ease-in-out infinite reverse; }
@keyframes drift1{ 50%{ transform: translate3d(70px,50px,0) scale(1.09); } }
@keyframes drift2{ 50%{ transform: translate3d(-80px,-40px,0) scale(1.06); } }
/* ── card shell ────────────────────────────────────────────────── */
.card{
position:relative; z-index:1;
width:1180px; min-height:672px;
display:grid; grid-template-columns: 386px 1fr; gap:0;
background: linear-gradient(155deg, rgba(28,35,49,.80), rgba(13,17,25,.86));
border:1px solid var(--line-strong);
border-radius: var(--radius);
box-shadow:
0 1px 0 0 rgba(255,255,255,.06) inset,
0 40px 90px -30px rgba(0,0,0,.85),
0 0 0 1px rgba(0,0,0,.35);
backdrop-filter: blur(28px) saturate(130%);
-webkit-backdrop-filter: blur(28px) saturate(130%);
overflow:hidden;
animation: rise .55s cubic-bezier(.2,.8,.3,1) both;
}
@keyframes rise{ from{ opacity:0; transform: translateY(14px); } }
.card::before{
content:""; position:absolute; inset:0; pointer-events:none;
background: radial-gradient(120% 90% at 8% 0%, rgba(var(--accent-rgb),.13), transparent 55%);
}
/* ── left panel ────────────────────────────────────────────────── */
.pane-l{
position:relative; padding:40px 36px 34px;
display:flex; flex-direction:column; gap:0;
border-right:1px solid var(--line);
background: linear-gradient(180deg, rgba(255,255,255,.028), rgba(255,255,255,0));
}
.eyebrow{
font-size:11px; font-weight:650; letter-spacing:.16em; text-transform:uppercase;
color: var(--accent); display:flex; align-items:center; gap:9px;
}
.eyebrow .dot{ width:6px; height:6px; border-radius:50%; background: currentColor; box-shadow:0 0 12px currentColor; }
h1{
margin:14px 0 0; font-size:42px; line-height:1.08; font-weight:600; letter-spacing:-.025em;
color:var(--ink);
}
.datel{ margin-top:9px; font-size:15px; color:var(--ink-2); letter-spacing:-.005em; }
.datel .tz{
display:inline-block; margin-left:8px; padding:2px 7px; border-radius:6px;
background: rgba(255,255,255,.06); border:1px solid var(--line);
font-size:10.5px; font-weight:600; letter-spacing:.08em; color:var(--ink-3); vertical-align:2px;
}
.cond{ margin-top:auto; padding-top:26px; display:flex; align-items:center; gap:18px; }
.cond svg{ width:78px; height:78px; flex:none; filter: drop-shadow(0 6px 16px rgba(0,0,0,.45)); }
.cond-txt{ min-width:0; }
.cond-txt .label{ font-size:11px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3); }
.cond-txt .value{ font-size:21px; font-weight:550; letter-spacing:-.015em; color:var(--ink); margin-top:3px; }
.temps{ margin-top:28px; display:flex; align-items:flex-end; gap:30px; }
.t-block .k{
font-size:11px; font-weight:650; letter-spacing:.15em; text-transform:uppercase;
color:var(--ink-3); display:flex; align-items:center; gap:6px;
}
.t-block .k svg{ width:11px; height:11px; }
.hero{
display:flex; align-items:flex-start; margin-top:2px;
font-variant-numeric: tabular-nums; font-feature-settings:"tnum" 1;
}
.hero .int{ font-size:92px; line-height:.94; font-weight:300; letter-spacing:-.05em; color:var(--ink); }
.hero .dec{ font-size:30px; line-height:1; font-weight:400; letter-spacing:-.02em; color:var(--ink-2); margin-top:6px; }
.hero .deg{ font-size:30px; line-height:1; font-weight:300; color:var(--accent); margin-top:6px; margin-left:2px; }
.lo{
display:flex; align-items:flex-start; margin-top:2px; padding-bottom:9px;
font-variant-numeric: tabular-nums;
}
.lo .int{ font-size:44px; line-height:1; font-weight:300; letter-spacing:-.035em; color:var(--ink-2); }
.lo .dec{ font-size:17px; line-height:1; font-weight:400; color:var(--ink-3); margin-top:2px; }
.lo .deg{ font-size:17px; line-height:1; color:var(--ink-3); margin-top:2px; margin-left:1px; }
.meta{
margin-top:28px; padding-top:18px; border-top:1px solid var(--line);
display:flex; justify-content:space-between; align-items:center; gap:14px;
font-size:12px; color:var(--ink-3); font-variant-numeric: tabular-nums;
}
.meta .coords{ letter-spacing:.01em; }
.meta .unit{
padding:3px 8px; border-radius:6px; background:rgba(var(--accent-rgb),.10);
border:1px solid rgba(var(--accent-rgb),.22); color:var(--accent); font-weight:600; letter-spacing:.04em;
}
/* ── right panel ───────────────────────────────────────────────── */
.pane-r{ padding:40px 36px 32px; display:flex; flex-direction:column; min-width:0; }
.sec-head{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; }
.sec-head h2{ margin:0; font-size:17px; font-weight:600; letter-spacing:-.015em; color:var(--ink); }
.sec-head .sub{ font-size:12px; color:var(--ink-3); letter-spacing:.02em; font-variant-numeric: tabular-nums; }
.chart-wrap{
position:relative; margin-top:14px; flex:1 1 auto; min-height:266px;
border-radius:14px; outline:none;
}
.chart-wrap:focus-visible{ box-shadow:0 0 0 2px rgba(var(--accent-rgb),.55); }
.chart-wrap svg{ display:block; width:100%; height:100%; }
.chart-wrap .empty{
position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
color:var(--ink-3); font-size:13.5px;
}
.tip{
position:absolute; z-index:4; pointer-events:none; opacity:0;
transform: translate(-50%,-124%); transition: opacity .12s ease;
background: rgba(10,13,20,.94); border:1px solid var(--line-strong);
box-shadow:0 12px 28px -8px rgba(0,0,0,.8);
border-radius:10px; padding:7px 11px; white-space:nowrap;
font-variant-numeric: tabular-nums;
}
.tip.on{ opacity:1; }
.tip .h{ font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); font-weight:600; }
.tip .v{ font-size:16px; font-weight:600; color:var(--ink); letter-spacing:-.02em; margin-top:1px; }
/* hourly readout */
.hours{
list-style:none; margin:22px 0 0; padding:0;
display:grid; grid-template-columns: repeat(12, 1fr); gap:6px;
}
.hours li{
position:relative; padding:8px 4px 9px; border-radius:9px; text-align:center;
border:1px solid var(--line); background: rgba(255,255,255,.02);
transition: transform .16s ease, border-color .16s ease;
font-variant-numeric: tabular-nums;
}
.hours li .hh{ font-size:10.5px; font-weight:600; letter-spacing:.05em; color:var(--ink-3); }
.hours li .tt{ font-size:14.5px; font-weight:550; letter-spacing:-.02em; color:var(--ink); margin-top:2px; }
.hours li.peak{ border-color: rgba(var(--accent-rgb),.6); }
.hours li.trough{ border-color: rgba(255,255,255,.24); }
.hours li.peak .tt, .hours li.trough .tt{ font-weight:650; }
.hours li.hot{ transform: translateY(-2px); border-color: rgba(var(--accent-rgb),.75); }
/* ── loading ───────────────────────────────────────────────────── */
.sk{ background: rgba(255,255,255,.055); border-radius:8px; position:relative; overflow:hidden; }
.sk::after{
content:""; position:absolute; inset:0; transform:translateX(-100%);
background: linear-gradient(90deg, transparent, rgba(255,255,255,.07), transparent);
animation: shimmer 1.5s infinite;
}
@keyframes shimmer{ to{ transform: translateX(100%); } }
/* ── error ─────────────────────────────────────────────────────── */
.err{
grid-column: 1 / -1; padding:56px 60px;
display:flex; flex-direction:column; align-items:flex-start; justify-content:center;
max-width:760px; margin:0 auto; text-align:left;
}
.err .badge{
width:52px; height:52px; border-radius:14px; display:grid; place-items:center;
background: rgba(255,138,128,.11); border:1px solid rgba(255,138,128,.28); color:#FF9E92;
}
.err h2{ margin:22px 0 0; font-size:27px; font-weight:600; letter-spacing:-.025em; }
.err p{ margin:11px 0 0; color:var(--ink-2); font-size:15px; max-width:56ch; }
.err code{
display:block; margin-top:18px; padding:12px 14px; border-radius:10px;
background: rgba(0,0,0,.35); border:1px solid var(--line);
font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size:12.5px;
color:var(--ink-3); white-space:pre-wrap; word-break:break-word; max-width:100%;
}
.err .ctx{ margin-top:16px; font-size:13px; color:var(--ink-3); }
.btn{
margin-top:26px; appearance:none; cursor:pointer; font-family:inherit;
padding:10px 20px; border-radius:10px; font-size:14px; font-weight:600; letter-spacing:-.005em;
color:#0A0D14; background: var(--accent); border:1px solid transparent;
transition: transform .14s ease, filter .14s ease;
}
.btn:hover{ filter: brightness(1.08); transform: translateY(-1px); }
.btn:active{ transform: translateY(0); }
.btn:focus-visible{ outline:2px solid var(--ink); outline-offset:3px; }
.sr{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
@media (prefers-reduced-motion: reduce){
.blob, .sk::after, .card{ animation:none !important; }
*{ transition:none !important; }
}
</style>
</head>
<body>
<div class="bg" aria-hidden="true">
<div class="blob blob-1"></div>
<div class="blob blob-2"></div>
<div class="blob blob-3"></div>
</div>
<main class="card" id="card" aria-live="polite" aria-busy="true">
<!-- rendered by script -->
<section class="pane-l">
<div class="sk" style="width:112px;height:12px;border-radius:6px"></div>
<div class="sk" style="width:70%;height:40px;margin-top:18px"></div>
<div class="sk" style="width:56%;height:15px;margin-top:12px"></div>
<div style="margin-top:auto"></div>
<div class="sk" style="width:78px;height:78px;border-radius:20px;margin-top:26px"></div>
<div class="sk" style="width:64%;height:78px;margin-top:26px"></div>
<div class="sk" style="width:100%;height:14px;margin-top:34px"></div>
</section>
<section class="pane-r">
<div class="sk" style="width:180px;height:16px"></div>
<div class="sk" style="flex:1;margin-top:18px;border-radius:14px;min-height:266px"></div>
<div class="sk" style="height:52px;margin-top:22px;border-radius:10px"></div>
</section>
</main>
<noscript>
<p style="position:fixed;inset:auto 0 24px;text-align:center;color:#A9B4C6">
This weather card requires JavaScript to load data.
</p>
</noscript>
<script>
(function(){
"use strict";
/* ─────────────────────────── weather codes ─────────────────────── */
var WMO = {
0:['Clear sky','sun'], 1:['Mainly clear','sun-cloud'],
2:['Partly cloudy','partly'], 3:['Overcast','cloud'],
45:['Fog','fog'], 48:['Depositing rime fog','fog'],
51:['Light drizzle','drizzle'], 53:['Moderate drizzle','drizzle'],
55:['Dense drizzle','drizzle'], 56:['Light freezing drizzle','sleet'],
57:['Dense freezing drizzle','sleet'],
61:['Slight rain','rain'], 63:['Moderate rain','rain'],
65:['Heavy rain','rain'], 66:['Light 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','thunder'], 96:['Thunderstorm with slight hail','thunder'],
99:['Thunderstorm with heavy hail','thunder']
};
/* one accent hue per condition family — the chart is a single series,
so it takes this hue alone; no categorical cycling anywhere. */
var THEME = {
'sun': { accent:'#FFC46B', a:'rgba(255,196,107,.26)', b:'rgba(255,122,89,.16)' },
'sun-cloud': { accent:'#FFD08A', a:'rgba(255,208,138,.22)', b:'rgba(126,140,255,.16)' },
'partly': { accent:'#9DC6F5', a:'rgba(157,198,245,.26)', b:'rgba(255,190,120,.13)' },
'cloud': { accent:'#B3C0D4', a:'rgba(179,192,212,.20)', b:'rgba(96,120,170,.20)' },
'fog': { accent:'#C0C8D4', a:'rgba(192,200,212,.18)', b:'rgba(110,125,155,.20)' },
'drizzle': { accent:'#84C3FF', a:'rgba(132,195,255,.24)', b:'rgba(80,110,200,.20)' },
'rain': { accent:'#63A9FF', a:'rgba(99,169,255,.26)', b:'rgba(60,80,190,.22)' },
'sleet': { accent:'#A9CDF0', a:'rgba(169,205,240,.22)', b:'rgba(90,120,190,.20)' },
'snow': { accent:'#CFE4FF', a:'rgba(207,228,255,.24)', b:'rgba(110,140,210,.18)' },
'thunder': { accent:'#B694FF', a:'rgba(182,148,255,.26)', b:'rgba(255,190,90,.14)' }
};
/* ─────────────────────────── icons ─────────────────────────────── */
function defs(){
return '<defs>'
+ '<linearGradient id="cg" x1="0" y1="0" x2="0" y2="1">'
+ '<stop offset="0" stop-color="#E4EBF6"/><stop offset="1" stop-color="#94A4BE"/>'
+ '</linearGradient>'
+ '<linearGradient id="sg" x1="0" y1="0" x2="0" y2="1">'
+ '<stop offset="0" stop-color="#FFDA9B"/><stop offset="1" stop-color="#FFB04E"/>'
+ '</linearGradient>'
+ '</defs>';
}
function rays(cx, cy, r0, r1, w, n){
var s = '', i, a;
for(i=0;i<(n||8);i++){
a = i * (Math.PI*2/(n||8)) + Math.PI/8;
s += '<line x1="'+(cx+Math.cos(a)*r0).toFixed(2)+'" y1="'+(cy+Math.sin(a)*r0).toFixed(2)
+ '" x2="'+(cx+Math.cos(a)*r1).toFixed(2)+'" y2="'+(cy+Math.sin(a)*r1).toFixed(2)
+ '" stroke="#FFC46B" stroke-width="'+w+'" stroke-linecap="round"/>';
}
return s;
}
function cloud(x, y, s){
return '<g fill="url(#cg)" transform="translate('+x+','+y+') scale('+s+')">'
+ '<circle cx="23" cy="34" r="9"/><circle cx="34" cy="28.5" r="12"/>'
+ '<circle cx="44" cy="36" r="8"/><rect x="17" y="34" width="30" height="10" rx="5"/></g>';
}
function drops(color, len, w, ys){
var s = '', xs = [24,32,40], i;
for(i=0;i<3;i++){
s += '<line x1="'+xs[i]+'" y1="'+ys+'" x2="'+(xs[i]-3)+'" y2="'+(ys+len)+'" stroke="'+color
+ '" stroke-width="'+w+'" stroke-linecap="round"/>';
}
return s;
}
function flakes(color){
var s = '', xs = [24,32,40], i, k, a;
for(i=0;i<3;i++){
for(k=0;k<3;k++){
a = k*Math.PI/3;
s += '<line x1="'+(xs[i]-Math.cos(a)*3.6).toFixed(2)+'" y1="'+(52-Math.sin(a)*3.6).toFixed(2)
+ '" x2="'+(xs[i]+Math.cos(a)*3.6).toFixed(2)+'" y2="'+(52+Math.sin(a)*3.6).toFixed(2)
+ '" stroke="'+color+'" stroke-width="2.1" stroke-linecap="round"/>';
}
}
return s;
}
function iconSVG(group){
var inner = '';
switch(group){
case 'sun':
inner = rays(32,32,17,23,3.6) + '<circle cx="32" cy="32" r="11.5" fill="url(#sg)"/>';
break;
case 'sun-cloud':
inner = rays(30,25,12,17,3,8) + '<circle cx="30" cy="25" r="9" fill="url(#sg)"/>'
+ cloud(11,12,.78);
break;
case 'partly':
inner = rays(41,21,11,15.5,2.8,8) + '<circle cx="41" cy="21" r="8.5" fill="url(#sg)"/>'
+ cloud(-2,9,.92);
break;
case 'cloud':
inner = '<g opacity=".5">' + cloud(-6,2,.72) + '</g>' + cloud(1,7,1);
break;
case 'fog':
inner = cloud(1,1,.98)
+ '<line x1="18" y1="50" x2="46" y2="50" stroke="#C0C8D4" stroke-width="3" stroke-linecap="round" opacity=".85"/>'
+ '<line x1="23" y1="57" x2="41" y2="57" stroke="#C0C8D4" stroke-width="3" stroke-linecap="round" opacity=".55"/>';
break;
case 'drizzle':
inner = cloud(1,1,.98) + drops('#84C3FF',5.5,2.6,49);
break;
case 'rain':
inner = cloud(1,1,.98) + drops('#63A9FF',9,3.2,48);
break;
case 'sleet':
inner = cloud(1,1,.98)
+ '<line x1="25" y1="48" x2="22" y2="56" stroke="#8FC0EE" stroke-width="3.2" stroke-linecap="round"/>'
+ '<line x1="41" y1="48" x2="38" y2="56" stroke="#8FC0EE" stroke-width="3.2" stroke-linecap="round"/>'
+ '<circle cx="32" cy="53" r="3" fill="#DCEBFF"/>';
break;
case 'snow':
inner = cloud(1,1,.98) + flakes('#DCEBFF');
break;
case 'thunder':
inner = cloud(1,1,.98)
+ '<path d="M33.5 45 L25 57.5 H30.5 L28 64 L39.5 51 H33 Z" fill="#FFD166"/>';
break;
default:
inner = cloud(1,7,1);
}
return '<svg viewBox="0 0 64 64" aria-hidden="true">' + defs() + inner + '</svg>';
}
/* ─────────────────────────── helpers ───────────────────────────── */
function esc(s){
return String(s).replace(/[&<>"']/g, function(c){
return {'&':'&','<':'<','>':'>','"':'"',"'":'''}[c];
});
}
function todayUTC(){
var d = new Date();
return d.getUTCFullYear() + '-' + pad(d.getUTCMonth()+1) + '-' + pad(d.getUTCDate());
}
function pad(n){ return (n < 10 ? '0' : '') + n; }
function isDate(s){
if(!/^\d{4}-\d{2}-\d{2}$/.test(s || '')) return false;
var d = new Date(s + 'T00:00:00Z');
return !isNaN(d.getTime()) && d.toISOString().slice(0,10) === s;
}
function num(v, min, max){
var n = parseFloat(v);
return (isFinite(n) && n >= min && n <= max) ? n : null;
}
function fin(v){ return typeof v === 'number' && isFinite(v); }
function hex2rgb(h){
var m = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(h);
return m ? [parseInt(m[1],16), parseInt(m[2],16), parseInt(m[3],16)] : [157,198,245];
}
function coord(v, pos, neg){
return Math.abs(v).toFixed(3).replace(/0+$/,'').replace(/\.$/,'') + '° ' + (v >= 0 ? pos : neg);
}
/* ─────────────────────────── params ────────────────────────────── */
var Q = new URLSearchParams(location.search);
var LAT = num(Q.get('lat'), -90, 90); if(LAT === null) LAT = 52.52;
var LON = num(Q.get('lon'), -180, 180); if(LON === null) LON = 13.405;
var NAME = (Q.get('name') || '').trim(); if(!NAME) NAME = 'Berlin';
if(NAME.length > 60) NAME = NAME.slice(0,60);
var DATE = Q.get('date'); if(!isDate(DATE)) DATE = todayUTC();
var TODAY = todayUTC();
var TENSE = DATE < TODAY ? 'past' : (DATE > TODAY ? 'future' : 'today');
document.title = NAME + ' · ' + DATE + ' · Weather';
/* ─────────────────────────── fetch ─────────────────────────────── */
function apiURL(kind){
var p = new URLSearchParams();
p.set('latitude', String(LAT));
p.set('longitude', String(LON));
p.set('daily', 'temperature_2m_max,temperature_2m_min,weather_code');
p.set('hourly', 'temperature_2m');
p.set('timezone', 'UTC');
p.set('temperature_unit', 'celsius');
p.set('start_date', DATE);
p.set('end_date', DATE);
return '/api/om/' + kind + '?' + p.toString().replace(/%2C/g, ',');
}
function getJSON(kind){
return fetch(apiURL(kind), { headers: { 'Accept':'application/json' } })
.then(function(res){
return res.text().then(function(txt){
var data = null;
try { data = JSON.parse(txt); } catch(e){}
if(!res.ok){
var why = (data && (data.reason || data.error_message)) || ('HTTP ' + res.status + ' ' + res.statusText);
throw new Error(String(why));
}
if(!data) throw new Error('The API returned a response that is not valid JSON.');
if(data.error) throw new Error(String(data.reason || 'The API reported an error.'));
return data;
});
});
}
function normalize(raw){
var d = raw && raw.daily, h = raw && raw.hourly;
var codeArr = d && (d.weather_code || d.weathercode);
var out = {
max: d && d.temperature_2m_max ? d.temperature_2m_max[0] : null,
min: d && d.temperature_2m_min ? d.temperature_2m_min[0] : null,
code: codeArr && codeArr.length ? codeArr[0] : null,
hours: []
};
if(h && h.time && h.temperature_2m){
for(var i = 0; i < h.time.length; i++){
var t = String(h.time[i]);
if(t.slice(0,10) !== DATE) continue;
var hh = parseInt(t.slice(11,13), 10);
if(!isFinite(hh)) continue;
var v = h.temperature_2m[i];
out.hours.push({ h: hh, t: fin(v) ? v : null });
}
out.hours.sort(function(a,b){ return a.h - b.h; });
}
var known = out.hours.filter(function(x){ return x.t !== null; });
if(!fin(out.max) && known.length) out.max = Math.max.apply(null, known.map(function(x){ return x.t; }));
if(!fin(out.min) && known.length) out.min = Math.min.apply(null, known.map(function(x){ return x.t; }));
out.usable = fin(out.max) || fin(out.min) || known.length > 0;
return out;
}
function load(){
var primary = TENSE === 'past' ? 'archive' : 'forecast';
var secondary = TENSE === 'past' ? 'forecast' : 'archive';
var firstErr = null;
return getJSON(primary).then(function(raw){
var d = normalize(raw);
if(d.usable) return d;
throw new Error('The API returned no temperature data for ' + DATE + '.');
}).catch(function(err){
firstErr = err;
/* boundary case: the other archive/forecast endpoint may still hold it */
return getJSON(secondary).then(function(raw){
var d = normalize(raw);
if(d.usable) return d;
throw firstErr;
}).catch(function(){ throw firstErr; });
});
}
/* ─────────────────────────── render ────────────────────────────── */
var card = document.getElementById('card');
function dateParts(){
var d = new Date(DATE + 'T12:00:00Z');
var long = new Intl.DateTimeFormat('en-GB', {
weekday:'long', day:'numeric', month:'long', year:'numeric', timeZone:'UTC'
}).format(d);
var rel = TENSE === 'today' ? 'Today'
: (DATE === offsetDay(-1) ? 'Yesterday' : (DATE === offsetDay(1) ? 'Tomorrow' : null));
return { long: long, rel: rel };
}
function offsetDay(n){
var d = new Date(TODAY + 'T12:00:00Z');
d.setUTCDate(d.getUTCDate() + n);
return d.toISOString().slice(0,10);
}
function splitTemp(v){
if(!fin(v)) return null;
var s = v.toFixed(1).split('.');
return { int: s[0], dec: '.' + s[1] };
}
function renderError(message){
card.setAttribute('aria-busy','false');
card.style.minHeight = '440px';
card.innerHTML =
'<div class="err">'
+ '<div class="badge" aria-hidden="true">'
+ '<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round">'
+ '<path d="M12 8.5v5"/><circle cx="12" cy="16.6" r="1.05" fill="currentColor" stroke="none"/>'
+ '<path d="M10.3 3.6 1.9 18.2A1.9 1.9 0 0 0 3.6 21h16.8a1.9 1.9 0 0 0 1.7-2.8L13.7 3.6a1.95 1.95 0 0 0-3.4 0Z"/>'
+ '</svg>'
+ '</div>'
+ '<h2>Weather data could not be loaded</h2>'
+ '<p>The request to the weather API did not return usable data for this location and date. '
+ 'Check your connection and try again.</p>'
+ '<div class="ctx">' + esc(NAME) + ' · ' + esc(dateParts().long) + ' (UTC) · '
+ esc(coord(LAT,'N','S')) + ', ' + esc(coord(LON,'E','W')) + '</div>'
+ '<code>' + esc(message || 'Unknown error') + '</code>'
+ '<button class="btn" type="button" id="retry">Try again</button>'
+ '</div>';
document.getElementById('retry').addEventListener('click', boot);
}
function renderCard(d){
var wc = WMO[d.code] || ['Condition unavailable','cloud'];
var group = wc[1];
var theme = THEME[group] || THEME.partly;
var rgb = hex2rgb(theme.accent);
var root = document.documentElement.style;
root.setProperty('--accent', theme.accent);
root.setProperty('--accent-rgb', rgb.join(','));
root.setProperty('--glow-a', theme.a);
root.setProperty('--glow-b', theme.b);
var dp = dateParts();
var hi = splitTemp(d.max);
var lo = splitTemp(d.min);
var eyeb = TENSE === 'past' ? 'Observed' : (TENSE === 'future' ? 'Forecast' : 'Today');
var known = d.hours.filter(function(x){ return x.t !== null; });
var vals = known.map(function(x){ return x.t; });
var hMax = vals.length ? Math.max.apply(null, vals) : null;
var hMin = vals.length ? Math.min.apply(null, vals) : null;
var hoursHTML = '';
if(d.hours.length){
hoursHTML = d.hours.map(function(x){
var cls = '', tint = 0;
if(x.t !== null && hMax !== null){
var span = (hMax - hMin) || 1;
tint = (x.t - hMin) / span; /* single-hue sequential tint */
if(x.t === hMax) cls = ' class="peak"';
else if(x.t === hMin) cls = ' class="trough"';
}
var bg = 'rgba(' + rgb.join(',') + ',' + (0.035 + tint * 0.135).toFixed(3) + ')';
var label = pad(x.h) + ':00 UTC, '
+ (x.t === null ? 'no data' : x.t.toFixed(1) + ' degrees Celsius');
return '<li' + cls + ' style="background:' + bg + '" data-h="' + x.h + '" aria-label="' + esc(label) + '">'
+ '<span class="hh" aria-hidden="true">' + pad(x.h) + '</span>'
+ '<span class="tt" aria-hidden="true">' + (x.t === null ? '–' : Math.round(x.t) + '°') + '</span>'
+ '</li>';
}).join('');
}
card.setAttribute('aria-busy','false');
card.innerHTML =
'<section class="pane-l">'
+ '<div class="eyebrow"><span class="dot"></span>' + esc(eyeb) + '</div>'
+ '<h1>' + esc(NAME) + '</h1>'
+ '<div class="datel">' + esc(dp.long) + '<span class="tz">UTC</span></div>'
+ '<div class="cond">'
+ iconSVG(group)
+ '<div class="cond-txt"><div class="label">Condition</div>'
+ '<div class="value">' + esc(wc[0]) + '</div></div>'
+ '</div>'
+ '<div class="temps">'
+ '<div class="t-block">'
+ '<div class="k"><svg viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M6 10V2M2.5 5.5 6 2l3.5 3.5"/></svg>Maximum</div>'
+ '<div class="hero">'
+ (hi ? '<span class="int">' + hi.int + '</span><span class="dec">' + hi.dec + '</span>'
+ : '<span class="int">–</span>')
+ '<span class="deg">°C</span></div>'
+ '</div>'
+ '<div class="t-block">'
+ '<div class="k"><svg viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M6 2v8M2.5 6.5 6 10l3.5-3.5"/></svg>Minimum</div>'
+ '<div class="lo">'
+ (lo ? '<span class="int">' + lo.int + '</span><span class="dec">' + lo.dec + '</span>'
+ : '<span class="int">–</span>')
+ '<span class="deg">°C</span></div>'
+ '</div>'
+ '</div>'
+ '<div class="meta">'
+ '<span class="coords">' + esc(coord(LAT,'N','S')) + ' · ' + esc(coord(LON,'E','W')) + '</span>'
+ '<span class="unit">°C</span>'
+ '</div>'
+ '</section>'
+ '<section class="pane-r">'
+ '<div class="sec-head">'
+ '<h2>Hourly temperature</h2>'
+ '<span class="sub">' + (known.length ? known.length + ' readings · °C · UTC' : '°C · UTC') + '</span>'
+ '</div>'
+ '<div class="chart-wrap" id="chartWrap" tabindex="0" role="img" aria-label="' + esc(chartAlt(known, hMin, hMax)) + '">'
+ '<div class="tip" id="tip"><div class="h"></div><div class="v"></div></div>'
+ '</div>'
+ (hoursHTML
? '<ul class="hours" id="hours">' + hoursHTML + '</ul>'
: '<p style="margin:22px 0 0;color:var(--ink-3);font-size:13.5px">Hourly temperatures are not available for this date.</p>')
+ '</section>';
Chart.init(known, theme.accent, rgb);
}
function chartAlt(known, lo, hi){
if(!known.length) return 'Hourly temperature chart. No hourly data available.';
return 'Line chart of hourly temperature in degrees Celsius for ' + NAME + ' on ' + DATE
+ ' UTC, ranging from ' + lo.toFixed(1) + '° to ' + hi.toFixed(1) + '°.';
}
/* ─────────────────────────── chart ─────────────────────────────── */
var Chart = (function(){
var data = [], accent = '#9DC6F5', rgb = [157,198,245];
var wrap, tip, geo = null, hoverIdx = -1, raf = 0;
var PAD = { t: 26, r: 18, b: 26, l: 44 };
function niceStep(range, count){
var raw = range / count;
if(!(raw > 0)) return 1;
var mag = Math.pow(10, Math.floor(Math.log10(raw)));
var n = raw / mag;
var s = n <= 1 ? 1 : n <= 2 ? 2 : n <= 5 ? 5 : 10;
return s * mag;
}
/* monotone cubic — smooth without inventing peaks the data doesn't have */
function path(pts){
var n = pts.length, i;
if(n === 0) return '';
if(n === 1) return 'M' + pts[0].x + ',' + pts[0].y;
var dx = [], dy = [], m = [];
for(i = 0; i < n - 1; i++){
dx.push(pts[i+1].x - pts[i].x);
dy.push(pts[i+1].y - pts[i].y);
m.push(dy[i] / (dx[i] || 1));
}
var t = [m[0]];
for(i = 1; i < n - 1; i++){
if(m[i-1] * m[i] <= 0) t.push(0);
else {
var v = (m[i-1] + m[i]) / 2;
var lim = 3 * Math.min(Math.abs(m[i-1]), Math.abs(m[i]));
t.push(Math.sign(v) * Math.min(Math.abs(v), lim));
}
}
t.push(m[n-2]);
var d = 'M' + pts[0].x.toFixed(2) + ',' + pts[0].y.toFixed(2);
for(i = 0; i < n - 1; i++){
var h = dx[i] / 3;
d += 'C' + (pts[i].x + h).toFixed(2) + ',' + (pts[i].y + t[i]*h).toFixed(2)
+ ' ' + (pts[i+1].x - h).toFixed(2) + ',' + (pts[i+1].y - t[i+1]*h).toFixed(2)
+ ' ' + pts[i+1].x.toFixed(2) + ',' + pts[i+1].y.toFixed(2);
}
return d;
}
function draw(){
if(!wrap) return;
var W = wrap.clientWidth, H = wrap.clientHeight;
if(W < 40 || H < 40) return;
if(!data.length){
wrap.querySelectorAll('svg, .empty').forEach(function(n){ n.remove(); });
var e = document.createElement('div');
e.className = 'empty';
e.textContent = 'No hourly temperature data for this date.';
wrap.appendChild(e);
return;
}
var vals = data.map(function(d){ return d.t; });
var lo = Math.min.apply(null, vals), hi = Math.max.apply(null, vals);
if(hi - lo < 0.5){ hi += 1; lo -= 1; }
var step = niceStep(hi - lo, 4);
var y0 = Math.floor(lo / step) * step;
var y1 = Math.ceil(hi / step) * step;
if(y1 - y0 < step){ y1 = y0 + step; }
/* breathing room so the curve never kisses the frame */
var padY = (y1 - y0) * 0.06;
var iw = W - PAD.l - PAD.r, ih = H - PAD.t - PAD.b;
var hSpan = 23;
var X = function(h){ return PAD.l + (h / hSpan) * iw; };
var Y = function(v){ return PAD.t + ih - ((v - (y0 - padY)) / ((y1 + padY) - (y0 - padY))) * ih; };
var pts = data.map(function(d){ return { x: X(d.h), y: Y(d.t), h: d.h, t: d.t }; });
var line = path(pts);
var area = line
+ 'L' + pts[pts.length-1].x.toFixed(2) + ',' + (PAD.t + ih).toFixed(2)
+ 'L' + pts[0].x.toFixed(2) + ',' + (PAD.t + ih).toFixed(2) + 'Z';
/* recessive grid + axis labels */
var grid = '', v;
for(v = y0; v <= y1 + 1e-9; v += step){
var gy = Y(v);
grid += '<line x1="' + PAD.l + '" y1="' + gy.toFixed(2) + '" x2="' + (W - PAD.r)
+ '" y2="' + gy.toFixed(2) + '" stroke="rgba(255,255,255,.055)" stroke-width="1"/>'
+ '<text x="' + (PAD.l - 11) + '" y="' + (gy + 4).toFixed(2)
+ '" text-anchor="end" fill="#78849A" font-size="11" font-family="inherit"'
+ ' style="font-variant-numeric:tabular-nums">' + Math.round(v) + '°</text>';
}
var xt = '', k;
for(k = 0; k <= 21; k += 3){
xt += '<text x="' + X(k).toFixed(2) + '" y="' + (H - 6)
+ '" text-anchor="middle" fill="#78849A" font-size="11" font-family="inherit"'
+ ' style="font-variant-numeric:tabular-nums">' + pad(k) + '</text>';
}
/* direct labels: extremes only — never a number on every point */
var iHi = 0, iLo = 0, i;
for(i = 1; i < pts.length; i++){
if(pts[i].t > pts[iHi].t) iHi = i;
if(pts[i].t < pts[iLo].t) iLo = i;
}
function marker(p, above, txt){
var ty = above ? p.y - 15 : p.y + 23;
var anchor = 'middle', tx = p.x;
if(p.x < PAD.l + 24){ anchor = 'start'; tx = p.x - 6; }
else if(p.x > W - PAD.r - 24){ anchor = 'end'; tx = p.x + 6; }
return '<circle cx="' + p.x.toFixed(2) + '" cy="' + p.y.toFixed(2) + '" r="4" fill="' + accent
+ '" stroke="#10151F" stroke-width="2"/>'
+ '<text x="' + tx.toFixed(2) + '" y="' + ty.toFixed(2) + '" text-anchor="' + anchor
+ '" fill="#F1F4F9" font-size="12" font-weight="600" font-family="inherit"'
+ ' style="font-variant-numeric:tabular-nums">' + txt + '</text>';
}
var svg =
'<svg width="' + W + '" height="' + H + '" viewBox="0 0 ' + W + ' ' + H + '" aria-hidden="true">'
+ '<defs>'
+ '<linearGradient id="fill" x1="0" y1="0" x2="0" y2="1">'
+ '<stop offset="0" stop-color="' + accent + '" stop-opacity=".34"/>'
+ '<stop offset="1" stop-color="' + accent + '" stop-opacity="0"/>'
+ '</linearGradient>'
+ '</defs>'
+ grid + xt
+ '<line x1="' + PAD.l + '" y1="' + (PAD.t + ih) + '" x2="' + (W - PAD.r) + '" y2="' + (PAD.t + ih)
+ '" stroke="rgba(255,255,255,.13)" stroke-width="1"/>'
+ '<path d="' + area + '" fill="url(#fill)"/>'
+ '<path d="' + line + '" fill="none" stroke="' + accent
+ '" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>'
+ marker(pts[iHi], true, pts[iHi].t.toFixed(1) + '°')
+ (iLo !== iHi ? marker(pts[iLo], false, pts[iLo].t.toFixed(1) + '°') : '')
+ '<g id="cross" style="opacity:0">'
+ '<line id="crossLine" x1="0" y1="' + PAD.t + '" x2="0" y2="' + (PAD.t + ih)
+ '" stroke="rgba(255,255,255,.28)" stroke-width="1"/>'
+ '<circle id="crossDot" cx="0" cy="0" r="5.5" fill="' + accent + '" stroke="#10151F" stroke-width="2"/>'
+ '</g>'
+ '</svg>';
wrap.querySelectorAll('svg, .empty').forEach(function(n){ n.remove(); });
wrap.insertAdjacentHTML('afterbegin', svg);
geo = { pts: pts, W: W, H: H };
if(hoverIdx >= 0) show(hoverIdx); else hide();
}
function nearest(clientX){
if(!geo) return -1;
var r = wrap.getBoundingClientRect();
var x = clientX - r.left, best = -1, bd = Infinity;
geo.pts.forEach(function(p, i){
var d = Math.abs(p.x - x);
if(d < bd){ bd = d; best = i; }
});
return best;
}
function show(i){
if(!geo || i < 0 || i >= geo.pts.length) return;
hoverIdx = i;
var p = geo.pts[i];
var g = wrap.querySelector('#cross');
if(g){
g.style.opacity = '1';
var ln = wrap.querySelector('#crossLine');
ln.setAttribute('x1', p.x.toFixed(2)); ln.setAttribute('x2', p.x.toFixed(2));
var dt = wrap.querySelector('#crossDot');
dt.setAttribute('cx', p.x.toFixed(2)); dt.setAttribute('cy', p.y.toFixed(2));
}
tip.querySelector('.h').textContent = pad(p.h) + ':00 UTC';
tip.querySelector('.v').textContent = p.t.toFixed(1) + ' °C';
tip.classList.add('on');
var tw = tip.offsetWidth;
var left = Math.min(Math.max(p.x, tw/2 + 4), geo.W - tw/2 - 4);
tip.style.left = left + 'px';
tip.style.top = Math.max(p.y, 34) + 'px';
var list = document.getElementById('hours');
if(list){
list.querySelectorAll('.hot').forEach(function(n){ n.classList.remove('hot'); });
var cell = list.querySelector('[data-h="' + p.h + '"]');
if(cell) cell.classList.add('hot');
}
}
function hide(){
hoverIdx = -1;
var g = wrap && wrap.querySelector('#cross');
if(g) g.style.opacity = '0';
if(tip) tip.classList.remove('on');
var list = document.getElementById('hours');
if(list) list.querySelectorAll('.hot').forEach(function(n){ n.classList.remove('hot'); });
}
function init(series, accentHex, accentRGB){
data = series; accent = accentHex; rgb = accentRGB;
wrap = document.getElementById('chartWrap');
tip = document.getElementById('tip');
hoverIdx = -1;
draw();
if(!data.length) return;
wrap.addEventListener('pointermove', function(e){ show(nearest(e.clientX)); });
wrap.addEventListener('pointerleave', hide);
wrap.addEventListener('focus', function(){ if(hoverIdx < 0) show(Math.floor(data.length/2)); });
wrap.addEventListener('blur', hide);
wrap.addEventListener('keydown', function(e){
if(e.key === 'ArrowRight' || e.key === 'ArrowLeft'){
e.preventDefault();
var n = hoverIdx < 0 ? 0 : hoverIdx + (e.key === 'ArrowRight' ? 1 : -1);
show(Math.max(0, Math.min(data.length - 1, n)));
} else if(e.key === 'Escape'){ hide(); }
});
var list = document.getElementById('hours');
if(list){
list.addEventListener('pointerover', function(e){
var li = e.target.closest('li[data-h]');
if(!li) return;
var h = parseInt(li.getAttribute('data-h'), 10);
for(var i = 0; i < data.length; i++){ if(data[i].h === h){ show(i); return; } }
});
list.addEventListener('pointerleave', hide);
}
window.addEventListener('resize', function(){
cancelAnimationFrame(raf);
raf = requestAnimationFrame(draw);
});
}
return { init: init };
})();
/* ─────────────────────────── boot ──────────────────────────────── */
function boot(){
card.setAttribute('aria-busy','true');
card.style.minHeight = '672px';
card.innerHTML =
'<section class="pane-l">'
+ '<div class="sk" style="width:112px;height:12px;border-radius:6px"></div>'
+ '<div class="sk" style="width:70%;height:40px;margin-top:18px"></div>'
+ '<div class="sk" style="width:56%;height:15px;margin-top:12px"></div>'
+ '<div style="margin-top:auto"></div>'
+ '<div class="sk" style="width:78px;height:78px;border-radius:20px;margin-top:26px"></div>'
+ '<div class="sk" style="width:64%;height:78px;margin-top:26px"></div>'
+ '<div class="sk" style="width:100%;height:14px;margin-top:34px"></div>'
+ '</section>'
+ '<section class="pane-r">'
+ '<div class="sk" style="width:180px;height:16px"></div>'
+ '<div class="sk" style="flex:1;margin-top:18px;border-radius:14px;min-height:266px"></div>'
+ '<div class="sk" style="height:52px;margin-top:22px;border-radius:10px"></div>'
+ '</section>';
load().then(renderCard).catch(function(err){
renderError(err && err.message ? err.message : String(err));
});
}
boot();
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 42,925 | html / css / js | 1,479 / 11,801 / 29,645 |
|---|---|---|---|
| dom nodes | 28 | dom depth | 5 |
| css rules | 81 | js present | yes |
| brightness | 34.0 | contrast | 13.3 |
| colorfulness | 11.0 | whitespace | 85.1% |
This slot's telemetry
| prompt tokens | 4 | completion tokens | 31,780 |
|---|---|---|---|
| total tokens | 31,784 | wall | 365.6 s |
| cost | — | request id | — |
config.json573 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-opus-5-eff-xhigh--cli--claude-code--dev",
"effort": "xhigh",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-opus-5",
"protocol": "cli",
"served_model": "claude-opus-5",
"telemetry": {
"completion_tokens": 108763,
"cost_usd": null,
"prompt_tokens": 22,
"total_tokens": 108785,
"wall_ms": 1200280
},
"transport": "claude-code-cli-headless",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-25--cc-opus5-xhigh",
"config_id": "claude-opus-5-eff-xhigh--cli--claude-code--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-24T17:56:41.228684+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-24T17:50:35.606397+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-24T18:04:11.566344+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-24T17:57:30.650854+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-24T18:06:25.317201+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-24T18:04:16.285095+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-24T18:11:33.455821+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-24T18:06:28.735118+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
}
}
}