grok-4.5 @ low · grok-cli
grok-clilow
- config
- grok-4.5-eff-low--cli--grok--dev
- batch
- 2026-07-19--unified
- transport
- grok-cli-oauth-isolated-home
- protocol
- cli · plan
- served model
- grok-4.5
- 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
claude-opus-4-7 @low · kiro0.73claude-sonnet-5 @low · CC0.73grok-4.5 @high · grok-cli0.72claude-sonnet-4-6 @high · kiro0.70claude-sonnet-4-6 @max · kiro0.70farthest
gpt-5.6-luna @low · codex-oauth0.38gpt-5.6-luna @high · kiro0.39gpt-5.6-luna @medium · codex-oauth0.41gpt-5.5 @medium · codex-oauth0.41gpt-5.6-terra @medium · kiro0.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 tempambiguousshown: 17max-equals-min
- min tempambiguousshown: 17max-equals-min
- 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=1280, height=800">
<title>Weather Card</title>
<style>
:root {
--bg-deep: #0b1220;
--bg-mid: #121a2e;
--glass: rgba(255, 255, 255, 0.06);
--glass-border: rgba(255, 255, 255, 0.12);
--text: #f4f7fb;
--text-muted: rgba(244, 247, 251, 0.62);
--text-soft: rgba(244, 247, 251, 0.42);
--accent: #7dd3fc;
--accent-warm: #fbbf24;
--max: #f87171;
--min: #60a5fa;
--shadow: 0 32px 80px rgba(0, 0, 0, 0.45);
--radius: 28px;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html, body {
width: 1280px;
height: 800px;
overflow: hidden;
font-family: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;
background: var(--bg-deep);
color: var(--text);
-webkit-font-smoothing: antialiased;
}
body {
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.sky {
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 900px 500px at 18% 12%, rgba(56, 189, 248, 0.22), transparent 55%),
radial-gradient(ellipse 700px 480px at 88% 18%, rgba(167, 139, 250, 0.18), transparent 50%),
radial-gradient(ellipse 600px 400px at 70% 90%, rgba(251, 191, 36, 0.1), transparent 50%),
linear-gradient(165deg, #0b1220 0%, #121a2e 45%, #0f172a 100%);
z-index: 0;
}
.sky::after {
content: "";
position: absolute;
inset: 0;
background-image:
radial-gradient(1.5px 1.5px at 10% 20%, rgba(255,255,255,0.35), transparent),
radial-gradient(1px 1px at 25% 60%, rgba(255,255,255,0.25), transparent),
radial-gradient(1.5px 1.5px at 40% 15%, rgba(255,255,255,0.3), transparent),
radial-gradient(1px 1px at 55% 40%, rgba(255,255,255,0.2), transparent),
radial-gradient(1.5px 1.5px at 70% 75%, rgba(255,255,255,0.28), transparent),
radial-gradient(1px 1px at 85% 30%, rgba(255,255,255,0.22), transparent),
radial-gradient(1px 1px at 92% 55%, rgba(255,255,255,0.18), transparent),
radial-gradient(1.5px 1.5px at 15% 80%, rgba(255,255,255,0.2), transparent);
opacity: 0.7;
pointer-events: none;
}
.card {
position: relative;
z-index: 1;
width: 1120px;
height: 680px;
border-radius: var(--radius);
background: linear-gradient(145deg, rgba(255,255,255,0.09) 0%, rgba(255,255,255,0.03) 100%);
border: 1px solid var(--glass-border);
box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,0.1);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
display: flex;
flex-direction: column;
padding: 40px 48px 36px;
overflow: hidden;
}
.card::before {
content: "";
position: absolute;
top: -40%;
right: -15%;
width: 480px;
height: 480px;
border-radius: 50%;
background: radial-gradient(circle, rgba(125, 211, 252, 0.12), transparent 70%);
pointer-events: none;
}
.header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 28px;
flex-shrink: 0;
}
.location-block {
display: flex;
flex-direction: column;
gap: 8px;
}
.location-label {
font-size: 12px;
font-weight: 600;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--accent);
}
.location-name {
font-size: 42px;
font-weight: 700;
letter-spacing: -0.03em;
line-height: 1.1;
}
.date-line {
font-size: 16px;
color: var(--text-muted);
font-weight: 500;
letter-spacing: 0.02em;
}
.condition-badge {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 10px;
text-align: right;
}
.condition-icon {
width: 88px;
height: 88px;
display: flex;
align-items: center;
justify-content: center;
}
.condition-icon svg {
width: 88px;
height: 88px;
filter: drop-shadow(0 8px 20px rgba(0,0,0,0.25));
}
.condition-text {
font-size: 18px;
font-weight: 600;
color: var(--text);
letter-spacing: 0.01em;
}
.temps {
display: flex;
gap: 28px;
margin-bottom: 36px;
flex-shrink: 0;
}
.temp-pill {
flex: 0 0 auto;
min-width: 200px;
padding: 22px 28px;
border-radius: 20px;
background: var(--glass);
border: 1px solid var(--glass-border);
display: flex;
flex-direction: column;
gap: 6px;
}
.temp-pill .label {
font-size: 12px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--text-soft);
}
.temp-pill .value {
font-size: 48px;
font-weight: 700;
letter-spacing: -0.03em;
line-height: 1;
}
.temp-pill.max .value { color: var(--max); }
.temp-pill.min .value { color: var(--min); }
.temp-pill .unit {
font-size: 22px;
font-weight: 500;
opacity: 0.7;
margin-left: 2px;
}
.hourly-section {
flex: 1;
display: flex;
flex-direction: column;
min-height: 0;
}
.hourly-header {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 16px;
}
.hourly-title {
font-size: 13px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--text-muted);
}
.hourly-hint {
font-size: 13px;
color: var(--text-soft);
}
.hourly-scroll {
flex: 1;
display: flex;
align-items: stretch;
gap: 10px;
overflow: hidden;
padding-bottom: 4px;
}
.hour-cell {
flex: 1 1 0;
min-width: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 16px 4px 14px;
border-radius: 16px;
background: rgba(255,255,255,0.04);
border: 1px solid rgba(255,255,255,0.06);
transition: background 0.2s ease, border-color 0.2s ease;
}
.hour-cell.now {
background: rgba(125, 211, 252, 0.12);
border-color: rgba(125, 211, 252, 0.35);
}
.hour-label {
font-size: 12px;
font-weight: 600;
color: var(--text-soft);
letter-spacing: 0.04em;
}
.hour-cell.now .hour-label {
color: var(--accent);
}
.hour-bar-wrap {
flex: 1;
width: 100%;
display: flex;
align-items: flex-end;
justify-content: center;
padding: 12px 0 8px;
min-height: 100px;
}
.hour-bar {
width: 10px;
border-radius: 6px;
background: linear-gradient(180deg, var(--accent) 0%, rgba(96, 165, 250, 0.5) 100%);
min-height: 8px;
transition: height 0.4s ease;
}
.hour-cell.now .hour-bar {
background: linear-gradient(180deg, #bae6fd 0%, var(--accent) 100%);
box-shadow: 0 0 12px rgba(125, 211, 252, 0.45);
}
.hour-temp {
font-size: 14px;
font-weight: 700;
color: var(--text);
letter-spacing: -0.02em;
}
.state {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background: rgba(11, 18, 32, 0.72);
backdrop-filter: blur(12px);
z-index: 10;
border-radius: var(--radius);
}
.state.hidden {
display: none;
}
.spinner {
width: 44px;
height: 44px;
border: 3px solid rgba(255,255,255,0.12);
border-top-color: var(--accent);
border-radius: 50%;
animation: spin 0.85s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.state-msg {
font-size: 18px;
font-weight: 500;
color: var(--text-muted);
text-align: center;
max-width: 420px;
line-height: 1.5;
}
.state.error .state-msg {
color: #fca5a5;
}
.error-icon {
width: 56px;
height: 56px;
border-radius: 50%;
background: rgba(248, 113, 113, 0.15);
border: 1px solid rgba(248, 113, 113, 0.35);
display: flex;
align-items: center;
justify-content: center;
font-size: 28px;
color: #fca5a5;
}
.footer {
margin-top: 20px;
padding-top: 16px;
border-top: 1px solid rgba(255,255,255,0.06);
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
}
.footer-meta {
font-size: 12px;
color: var(--text-soft);
letter-spacing: 0.04em;
}
.footer-meta span {
color: var(--text-muted);
}
#content.hidden {
visibility: hidden;
}
</style>
</head>
<body>
<div class="sky" aria-hidden="true"></div>
<div class="card" id="card">
<div class="state" id="loading">
<div class="spinner"></div>
<p class="state-msg">Loading weather data…</p>
</div>
<div class="state error hidden" id="error">
<div class="error-icon">!</div>
<p class="state-msg" id="error-msg">Weather data could not be loaded.</p>
</div>
<div id="content" class="hidden">
<header class="header">
<div class="location-block">
<div class="location-label">Location</div>
<h1 class="location-name" id="loc-name">—</h1>
<p class="date-line" id="date-line">—</p>
</div>
<div class="condition-badge">
<div class="condition-icon" id="condition-icon"></div>
<div class="condition-text" id="condition-text">—</div>
</div>
</header>
<div class="temps">
<div class="temp-pill max">
<span class="label">High</span>
<div class="value"><span id="temp-max">—</span><span class="unit">°C</span></div>
</div>
<div class="temp-pill min">
<span class="label">Low</span>
<div class="value"><span id="temp-min">—</span><span class="unit">°C</span></div>
</div>
</div>
<section class="hourly-section">
<div class="hourly-header">
<h2 class="hourly-title">Hourly temperature</h2>
<span class="hourly-hint">UTC · 24 hours</span>
</div>
<div class="hourly-scroll" id="hourly"></div>
</section>
<footer class="footer">
<div class="footer-meta">Source · <span>Open-Meteo compatible</span></div>
<div class="footer-meta" id="coords">—</div>
</footer>
</div>
</div>
<script>
(function () {
"use strict";
var WMO = {
0: { label: "Clear sky", kind: "clear" },
1: { label: "Mainly clear", kind: "clear" },
2: { label: "Partly cloudy", kind: "partly" },
3: { label: "Overcast", kind: "cloud" },
45: { label: "Fog", kind: "fog" },
48: { label: "Depositing rime fog", kind: "fog" },
51: { label: "Light drizzle", kind: "drizzle" },
53: { label: "Moderate drizzle", kind: "drizzle" },
55: { label: "Dense drizzle", kind: "drizzle" },
56: { label: "Light freezing drizzle", kind: "drizzle" },
57: { label: "Dense freezing drizzle", kind: "drizzle" },
61: { label: "Slight rain", kind: "rain" },
63: { label: "Moderate rain", kind: "rain" },
65: { label: "Heavy rain", kind: "rain" },
66: { label: "Light freezing rain", kind: "rain" },
67: { label: "Heavy freezing rain", kind: "rain" },
71: { label: "Slight snow", kind: "snow" },
73: { label: "Moderate snow", kind: "snow" },
75: { label: "Heavy snow", kind: "snow" },
77: { label: "Snow grains", kind: "snow" },
80: { label: "Slight rain showers", kind: "rain" },
81: { label: "Moderate rain showers", kind: "rain" },
82: { label: "Violent rain showers", kind: "rain" },
85: { label: "Slight snow showers", kind: "snow" },
86: { label: "Heavy snow showers", kind: "snow" },
95: { label: "Thunderstorm", kind: "storm" },
96: { label: "Thunderstorm with slight hail", kind: "storm" },
99: { label: "Thunderstorm with heavy hail", kind: "storm" }
};
function icons(kind) {
var svg = {
clear:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="44" cy="44" r="16" fill="#FBBF24"/>' +
'<g stroke="#FBBF24" stroke-width="3.5" stroke-linecap="round">' +
'<path d="M44 12v8M44 68v8M12 44h8M68 44h8M22.3 22.3l5.7 5.7M60 60l5.7 5.7M22.3 65.7l5.7-5.7M60 28l5.7-5.7"/>' +
'</g></svg>',
partly:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="34" cy="34" r="12" fill="#FBBF24"/>' +
'<g stroke="#FBBF24" stroke-width="2.5" stroke-linecap="round">' +
'<path d="M34 14v5M14 34h5M20 20l3.5 3.5"/>' +
'</g>' +
'<path d="M30 58c0-8.8 7.2-16 16-16 6.5 0 12.1 3.9 14.6 9.5A12 12 0 0 1 72 64c0 6.6-5.4 12-12 12H34c-7.7 0-14-6.3-14-14 0-5.6 3.3-10.4 8-12.6.7 1.5 1.6 2.9 2.7 4.1A13.9 13.9 0 0 0 30 58z" fill="#E2E8F0"/>' +
'</svg>',
cloud:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<path d="M28 60c0-9.9 8.1-18 18-18 7.3 0 13.6 4.4 16.4 10.7A13.5 13.5 0 0 1 76 66c0 7.5-6 13.5-13.5 13.5H32C23.2 79.5 16 72.3 16 63.5 16 56.3 3.3-10.4 8-12.6.7 1.5 1.6 2.9 2.7 4.1A13.9 13.9 0 0 0 30 58z" fill="#CBD5E1"/>' +
'</svg>',
fog:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<path d="M28 48c0-9.9 8.1-18 18-18 7.3 0 13.6 4.4 16.4 10.7A13.5 13.5 0 0 1 76 54" stroke="#94A3B8" stroke-width="4" stroke-linecap="round" fill="none"/>' +
'<g stroke="#94A3B8" stroke-width="3.5" stroke-linecap="round">' +
'<path d="M18 62h52M22 70h44M26 78h36"/>' +
'</g></svg>',
drizzle:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<path d="M28 42c0-9.9 8.1-18 18-18 7.3 0 13.6 4.4 16.4 10.7A13.5 13.5 0 0 1 76 48c0 7.5-6 13.5-13.5 13.5H32C23.2 61.5 16 54.3 16 45.5 16 38.3 20.8 32.2 27 29.4c.5 1.9 1.3 3.7 2.3 5.3A16 16 0 0 0 28 42z" fill="#CBD5E1"/>' +
'<g stroke="#38BDF8" stroke-width="3" stroke-linecap="round">' +
'<path d="M32 70v6M44 68v8M56 70v6"/>' +
'</g></svg>',
rain:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<path d="M28 40c0-9.9 8.1-18 18-18 7.3 0 13.6 4.4 16.4 10.7A13.5 13.5 0 0 1 76 46c0 7.5-6 13.5-13.5 13.5H32C23.2 59.5 16 52.3 16 43.5 16 36.3 20.8 30.2 27 27.4c.5 1.9 1.3 3.7 2.3 5.3A16 16 0 0 0 28 40z" fill="#94A3B8"/>' +
'<g stroke="#38BDF8" stroke-width="3.5" stroke-linecap="round">' +
'<path d="M30 68l-3 10M44 66l-3 12M58 68l-3 10"/>' +
'</g></svg>',
snow:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<path d="M28 40c0-9.9 8.1-18 18-18 7.3 0 13.6 4.4 16.4 10.7A13.5 13.5 0 0 1 76 46c0 7.5-6 13.5-13.5 13.5H32C23.2 59.5 16 52.3 16 43.5 16 36.3 20.8 30.2 27 27.4c.5 1.9 1.3 3.7 2.3 5.3A16 16 0 0 0 28 40z" fill="#E2E8F0"/>' +
'<g fill="#BAE6FD">' +
'<circle cx="32" cy="70" r="3"/><circle cx="44" cy="74" r="3"/><circle cx="56" cy="70" r="3"/><circle cx="38" cy="80" r="2.5"/><circle cx="50" cy="80" r="2.5"/>' +
'</g></svg>',
storm:
'<svg viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">' +
'<path d="M28 38c0-9.9 8.1-18 18-18 7.3 0 13.6 4.4 16.4 10.7A13.5 13.5 0 0 1 76 44c0 7.5-6 13.5-13.5 13.5H32C23.2 57.5 16 50.3 16 41.5 16 34.3 20.8 28.2 27 25.4c.5 1.9 1.3 3.7 2.3 5.3A16 16 0 0 0 28 38z" fill="#64748B"/>' +
'<path d="M46 56l-10 16h10l-4 14 16-20H48l-2-10z" fill="#FBBF24"/>' +
'</svg>'
};
return svg[kind] || svg.cloud;
}
function pad(n) {
return n < 10 ? "0" + n : String(n);
}
function todayUTC() {
var d = new Date();
return d.getUTCFullYear() + "-" + pad(d.getUTCMonth() + 1) + "-" + pad(d.getUTCDate());
}
function parseParams() {
var q = new URLSearchParams(window.location.search);
var lat = parseFloat(q.get("lat"));
var lon = parseFloat(q.get("lon"));
if (isNaN(lat)) lat = 52.52;
if (isNaN(lon)) lon = 13.405;
var name = q.get("name");
if (name === null || name === "") name = "Berlin";
var date = q.get("date");
if (!date || !/^\d{4}-\d{2}-\d{2}$/.test(date)) date = todayUTC();
return { lat: lat, lon: lon, name: name, date: date };
}
function isPastDate(dateStr) {
return dateStr < todayUTC();
}
function formatDisplayDate(dateStr) {
var parts = dateStr.split("-");
var d = new Date(Date.UTC(+parts[0], +parts[1] - 1, +parts[2]));
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
return days[d.getUTCDay()] + ", " + months[d.getUTCMonth()] + " " + d.getUTCDate() + ", " + d.getUTCFullYear();
}
function showError(msg) {
document.getElementById("loading").classList.add("hidden");
document.getElementById("content").classList.add("hidden");
var err = document.getElementById("error");
err.classList.remove("hidden");
document.getElementById("error-msg").textContent = msg || "Weather data could not be loaded.";
}
function showContent() {
document.getElementById("loading").classList.add("hidden");
document.getElementById("error").classList.add("hidden");
document.getElementById("content").classList.remove("hidden");
}
function buildQuery(params) {
var sp = new URLSearchParams();
sp.set("latitude", String(params.lat));
sp.set("longitude", String(params.lon));
sp.set("daily", "temperature_2m_max,temperature_2m_min,weather_code");
sp.set("hourly", "temperature_2m");
sp.set("timezone", "UTC");
sp.set("temperature_unit", "celsius");
sp.set("start_date", params.date);
sp.set("end_date", params.date);
return sp.toString();
}
function findDateIndex(times, dateStr) {
if (!times || !times.length) return -1;
for (var i = 0; i < times.length; i++) {
if (times[i] === dateStr || String(times[i]).indexOf(dateStr) === 0) return i;
}
return 0;
}
function hourlyForDate(times, temps, dateStr) {
var out = [];
if (!times || !temps) return out;
for (var i = 0; i < times.length; i++) {
if (String(times[i]).indexOf(dateStr) === 0) {
out.push({ time: times[i], temp: temps[i] });
}
}
return out;
}
function render(params, data) {
var daily = data.daily || {};
var idx = findDateIndex(daily.time, params.date);
var tMax = daily.temperature_2m_max && daily.temperature_2m_max[idx];
var tMin = daily.temperature_2m_min && daily.temperature_2m_min[idx];
var code = daily.weather_code && daily.weather_code[idx];
if (tMax === undefined || tMax === null || tMin === undefined || tMin === null) {
showError("Weather data could not be loaded.");
return;
}
var meta = WMO[code] || { label: "Weather code " + code, kind: "cloud" };
document.getElementById("loc-name").textContent = params.name;
document.getElementById("date-line").textContent = formatDisplayDate(params.date);
document.getElementById("temp-max").textContent = Math.round(tMax);
document.getElementById("temp-min").textContent = Math.round(tMin);
document.getElementById("condition-text").textContent = meta.label;
document.getElementById("condition-icon").innerHTML = icons(meta.kind);
document.getElementById("coords").textContent =
params.lat.toFixed(2) + "°, " + params.lon.toFixed(2) + "° · " + params.date;
var hours = hourlyForDate(
(data.hourly && data.hourly.time) || [],
(data.hourly && data.hourly.temperature_2m) || [],
params.date
);
var container = document.getElementById("hourly");
container.innerHTML = "";
if (!hours.length) {
container.innerHTML = '<p class="state-msg" style="padding:24px">No hourly data available.</p>';
showContent();
return;
}
var tempsOnly = hours.map(function (h) { return h.temp; }).filter(function (t) {
return t !== null && t !== undefined && !isNaN(t);
});
var minH = Math.min.apply(null, tempsOnly);
var maxH = Math.max.apply(null, tempsOnly);
var range = maxH - minH || 1;
var now = new Date();
var nowHour = now.getUTCFullYear() + "-" + pad(now.getUTCMonth() + 1) + "-" +
pad(now.getUTCDate()) + "T" + pad(now.getUTCHours());
var display = hours;
if (hours.length > 24) {
display = [];
for (var s = 0; s < 24; s++) {
display.push(hours[Math.round(s * (hours.length - 1) / 23)]);
}
}
for (var i = 0; i < display.length; i++) {
var h = display[i];
var t = h.temp;
var cell = document.createElement("div");
var isNow = String(h.time).indexOf(nowHour) === 0;
cell.className = "hour-cell" + (isNow ? " now" : "");
var hourLabel = "—";
if (h.time && h.time.length >= 13) {
hourLabel = h.time.slice(11, 13);
}
var barH = 8;
if (t !== null && t !== undefined && !isNaN(t)) {
barH = 8 + Math.round(((t - minH) / range) * 92);
}
var tempStr = (t !== null && t !== undefined && !isNaN(t)) ? Math.round(t) + "°" : "—";
cell.innerHTML =
'<div class="hour-label">' + hourLabel + '</div>' +
'<div class="hour-bar-wrap"><div class="hour-bar" style="height:' + barH + 'px"></div></div>' +
'<div class="hour-temp">' + tempStr + '</div>';
container.appendChild(cell);
}
showContent();
}
function load() {
var params = parseParams();
var endpoint = isPastDate(params.date) ? "/api/om/archive" : "/api/om/forecast";
var url = endpoint + "?" + buildQuery(params);
fetch(url)
.then(function (res) {
if (!res.ok) throw new Error("HTTP " + res.status);
return res.json();
})
.then(function (data) {
if (!data || data.error) {
showError("Weather data could not be loaded.");
return;
}
render(params, data);
})
.catch(function () {
showError("Weather data could not be loaded.");
});
}
load();
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 22,148 | html / css / js | 1,991 / 8,293 / 11,864 |
|---|---|---|---|
| dom nodes | 45 | dom depth | 8 |
| css rules | 49 | js present | yes |
| brightness | 43.9 | contrast | 19.3 |
| colorfulness | 19.3 | whitespace | 64.0% |
This slot's telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 107.2 s |
| cost | — | request id | — |
config.json546 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "grok-4.5-eff-low--cli--grok--dev",
"effort": "low",
"family": "grok",
"m": {
"min": 2,
"q": 2
},
"model_id": "grok-4.5",
"protocol": "cli",
"served_model": "grok-4.5",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 300601
},
"transport": "grok-cli-oauth-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-17--dev-grok-cli",
"config_id": "grok-4.5-eff-low--cli--grok--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T13:51:39.321314+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:49:52.077816+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-17T13:52:35.975175+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:51:42.902524+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-17T13:53:27.305581+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:52:42.715630+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-17T13:55:06.216339+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:53:30.508452+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
}
}
}