gpt-5.2-codex @ xhigh · api
apixhigh
- config
- gpt-5.2-codex-eff-xhigh--api--official--dev
- batch
- 2026-07-19--unified
- transport
- openai-official-api
- protocol
- api · metered
- served model
- gpt-5.2-codex
- captured
- Jul 18, 2026, 11:54 AM · N=4
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
qwen3.8-max-preview · qoder0.69claude-opus-4-8 @low · kiro0.67claude-opus-4-7 @low · kiro0.66claude-opus-4-8 @xhigh · kiro0.66claude-sonnet-4-6 @max · kiro0.66farthest
gpt-5.6-luna @high · kiro0.42gpt-5.5 @medium · codex-oauth0.42gpt-5.6-luna @medium · codex-oauth0.44gpt-5.6-terra @ultra · codex-oauth0.45north-mini-code-free · api0.47within 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 tempambiguousno-remaining-candidate
- min tempmismatchshown: 25.3
- 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,height=device-height,initial-scale=1.0">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3C/svg%3E">
<title>Weather Card</title>
<style>
* { box-sizing: border-box; }
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
color: #fff;
}
body {
display: flex;
align-items: center;
justify-content: center;
background:
radial-gradient(circle at 20% 20%, rgba(72,118,255,0.35), transparent 55%),
radial-gradient(circle at 80% 80%, rgba(0,214,255,0.25), transparent 55%),
linear-gradient(135deg, #0f172a 0%, #1e293b 45%, #0f172a 100%);
}
.app {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
padding: 24px;
}
.card {
width: min(1040px, 95vw);
height: min(680px, 90vh);
background: rgba(255,255,255,0.12);
border: 1px solid rgba(255,255,255,0.25);
border-radius: 32px;
padding: 28px 32px;
box-shadow: 0 30px 80px rgba(0,0,0,0.45);
backdrop-filter: blur(20px);
display: flex;
flex-direction: column;
gap: 14px;
position: relative;
overflow: hidden;
}
.card::before {
content: "";
position: absolute;
top: -120px;
right: -120px;
width: 280px;
height: 280px;
background: radial-gradient(circle, var(--accent, #6dd5fa), transparent 70%);
opacity: 0.35;
pointer-events: none;
}
.card::after {
content: "";
position: absolute;
bottom: -150px;
left: -150px;
width: 320px;
height: 320px;
background: radial-gradient(circle, rgba(255,255,255,0.25), transparent 70%);
opacity: 0.2;
pointer-events: none;
}
.header, .summary, .hourly, .divider, .status { position: relative; z-index: 1; }
.header {
display: flex;
align-items: center;
justify-content: space-between;
}
.location {
font-size: 32px;
font-weight: 600;
letter-spacing: 0.5px;
}
.coords {
margin-top: 4px;
font-size: 13px;
opacity: 0.7;
}
.date {
font-size: 13px;
font-weight: 500;
padding: 8px 16px;
border-radius: 999px;
background: rgba(255,255,255,0.15);
border: 1px solid rgba(255,255,255,0.25);
letter-spacing: 0.4px;
white-space: nowrap;
}
.divider {
height: 1px;
background: rgba(255,255,255,0.15);
border-radius: 2px;
}
.summary {
display: flex;
align-items: center;
gap: 20px;
}
.icon {
font-size: 64px;
width: 96px;
height: 96px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(255,255,255,0.14);
border-radius: 22px;
box-shadow: inset 0 0 30px rgba(255,255,255,0.12);
}
.summary-text {
display: flex;
flex-direction: column;
gap: 6px;
}
.max-temp {
font-size: 58px;
font-weight: 700;
line-height: 1;
background: linear-gradient(90deg, #ffffff, var(--accent, #6dd5fa));
-webkit-background-clip: text;
color: transparent;
}
.min-temp {
font-size: 17px;
opacity: 0.85;
}
.condition-text {
font-size: 19px;
font-weight: 600;
text-transform: capitalize;
letter-spacing: 0.3px;
}
.badge {
margin-left: auto;
text-align: right;
background: rgba(255,255,255,0.15);
padding: 12px 16px;
border-radius: 16px;
border: 1px solid rgba(255,255,255,0.2);
min-width: 140px;
}
.badge .label {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 1.5px;
opacity: 0.7;
}
.badge .value {
font-size: 22px;
font-weight: 600;
margin-top: 4px;
display: block;
}
.hourly {
flex: 1;
display: flex;
flex-direction: column;
}
.section-title {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 2px;
opacity: 0.7;
}
.hourly-grid {
margin-top: 12px;
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 12px;
overflow-y: auto;
padding-right: 6px;
}
.hour {
background: rgba(255,255,255,0.12);
border-radius: 16px;
padding: 6px 6px 8px;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
height: 82px;
border: 1px solid rgba(255,255,255,0.12);
}
.hour .time {
font-size: 12px;
opacity: 0.75;
letter-spacing: 0.4px;
}
.bar-container {
height: 28px;
width: 100%;
display: flex;
align-items: flex-end;
justify-content: center;
}
.bar {
width: 60%;
border-radius: 8px 8px 4px 4px;
box-shadow: 0 6px 14px rgba(0,0,0,0.25);
}
.hour .temp {
font-size: 14px;
font-weight: 600;
margin-top: 2px;
}
.hourly-grid::-webkit-scrollbar {
width: 6px;
}
.hourly-grid::-webkit-scrollbar-thumb {
background: rgba(255,255,255,0.3);
border-radius: 10px;
}
.hourly-grid::-webkit-scrollbar-track {
background: rgba(255,255,255,0.08);
border-radius: 10px;
}
.status {
text-align: center;
font-size: 14px;
opacity: 0.7;
margin-top: 4px;
align-self: center;
}
.status.error {
opacity: 1;
color: #ffdada;
background: rgba(255, 88, 88, 0.2);
padding: 10px 14px;
border-radius: 10px;
border: 1px solid rgba(255, 88, 88, 0.4);
display: inline-block;
}
@media (max-width: 1024px) {
.card { width: 95vw; height: auto; }
.hourly-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
</style>
</head>
<body>
<div class="app">
<div class="card" id="card">
<div class="header">
<div>
<div class="location" id="locationName">--</div>
<div class="coords" id="coords">--</div>
</div>
<div class="date" id="dateDisplay">--</div>
</div>
<div class="divider"></div>
<div class="summary">
<div class="icon" id="conditionIcon">⛅</div>
<div class="summary-text">
<div class="max-temp" id="maxTemp">--°C</div>
<div class="min-temp">Low <span id="minTemp">--°C</span></div>
<div class="condition-text" id="conditionText">--</div>
</div>
<div class="badge">
<span class="label">Daily Range</span>
<span class="value" id="rangeDisplay">--°C</span>
</div>
</div>
<div class="divider"></div>
<div class="hourly">
<div class="section-title">Hourly Temperatures (UTC)</div>
<div class="hourly-grid" id="hourlyGrid"></div>
</div>
<div class="status" id="status">Loading weather data…</div>
</div>
</div>
<script>
(() => {
const params = new URLSearchParams(window.location.search);
const defaultLat = 52.52;
const defaultLon = 13.405;
const defaultName = 'Berlin';
const todayStr = new Date().toISOString().slice(0, 10);
let lat = parseFloat(params.get('lat'));
if (isNaN(lat)) lat = defaultLat;
let lon = parseFloat(params.get('lon'));
if (isNaN(lon)) lon = defaultLon;
const name = params.get('name') ? params.get('name') : defaultName;
let date = params.get('date');
if (!date || !/^\d{4}-\d{2}-\d{2}$/.test(date) || isNaN(Date.parse(date + 'T00:00:00Z'))) {
date = todayStr;
}
const locationNameEl = document.getElementById('locationName');
const coordsEl = document.getElementById('coords');
const dateDisplayEl = document.getElementById('dateDisplay');
const maxTempEl = document.getElementById('maxTemp');
const minTempEl = document.getElementById('minTemp');
const conditionTextEl = document.getElementById('conditionText');
const conditionIconEl = document.getElementById('conditionIcon');
const hourlyGridEl = document.getElementById('hourlyGrid');
const statusEl = document.getElementById('status');
const rangeDisplayEl = document.getElementById('rangeDisplay');
locationNameEl.textContent = name;
coordsEl.textContent = `Lat ${lat.toFixed(2)}° · Lon ${lon.toFixed(2)}°`;
dateDisplayEl.textContent = formatDate(date);
const reqDate = new Date(date + 'T00:00:00Z');
const now = new Date();
const todayUTC = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
const endpoint = reqDate < todayUTC ? '/api/om/archive' : '/api/om/forecast';
const query = new URLSearchParams({
latitude: lat,
longitude: lon,
daily: 'temperature_2m_max,temperature_2m_min,weather_code',
hourly: 'temperature_2m',
timezone: 'UTC',
temperature_unit: 'celsius',
start_date: date,
end_date: date
});
fetch(endpoint + '?' + query.toString())
.then(res => {
if (!res.ok) throw new Error('Network response was not ok');
return res.json();
})
.then(data => {
if (!data || !data.daily || !data.hourly) throw new Error('Invalid data');
const max = data.daily.temperature_2m_max?.[0];
const min = data.daily.temperature_2m_min?.[0];
const code = data.daily.weather_code?.[0];
if (max === undefined || min === undefined || code === undefined) throw new Error('Missing daily data');
const cond = conditionFromCode(code);
conditionIconEl.textContent = cond.icon;
conditionTextEl.textContent = cond.text;
document.documentElement.style.setProperty('--accent', cond.accent);
maxTempEl.textContent = `${formatTemp(max)}°C`;
minTempEl.textContent = `${formatTemp(min)}°C`;
if (rangeDisplayEl) {
rangeDisplayEl.textContent = `${formatTemp(max - min)}°C`;
}
const times = data.hourly.time || [];
const temps = data.hourly.temperature_2m || [];
const hourly = [];
for (let i = 0; i < times.length; i++) {
if (times[i].startsWith(date)) {
hourly.push({ time: times[i], temp: temps[i] });
}
}
if (!hourly.length) throw new Error('No hourly data');
renderHourly(hourly);
statusEl.style.display = 'none';
})
.catch(err => {
console.error(err);
statusEl.textContent = 'Unable to load weather data.';
statusEl.classList.add('error');
});
function renderHourly(hourly) {
hourlyGridEl.innerHTML = '';
const temps = hourly.map(h => h.temp);
const minT = Math.min(...temps);
const maxT = Math.max(...temps);
const range = maxT - minT;
hourly.forEach(h => {
const hour = h.time.slice(11, 13);
const temp = h.temp;
const ratio = range === 0 ? 0.5 : (temp - minT) / range;
const barHeight = 8 + ratio * 20;
const hue = 210 - ratio * 160;
const cell = document.createElement('div');
cell.className = 'hour';
const timeEl = document.createElement('div');
timeEl.className = 'time';
timeEl.textContent = `${hour}:00`;
const barContainer = document.createElement('div');
barContainer.className = 'bar-container';
const bar = document.createElement('div');
bar.className = 'bar';
bar.style.height = `${barHeight}px`;
bar.style.background = `linear-gradient(180deg, hsla(${hue}, 85%, 70%, 1), hsla(${hue}, 85%, 50%, 1))`;
barContainer.appendChild(bar);
const tempEl = document.createElement('div');
tempEl.className = 'temp';
tempEl.textContent = `${formatTemp(temp)}°`;
cell.appendChild(timeEl);
cell.appendChild(barContainer);
cell.appendChild(tempEl);
hourlyGridEl.appendChild(cell);
});
}
function formatDate(d) {
const dateObj = new Date(d + 'T00:00:00Z');
return dateObj.toLocaleDateString('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
timeZone: 'UTC'
}) + ' · UTC';
}
function formatTemp(t) {
const v = Math.round(t * 10) / 10;
return v % 1 === 0 ? v.toFixed(0) : v.toFixed(1);
}
function conditionFromCode(code) {
const list = [
{ codes: [0], text: 'Clear sky', icon: '☀️', accent: '#f6d365' },
{ codes: [1], text: 'Mainly clear', icon: '🌤️', accent: '#f6d365' },
{ codes: [2], text: 'Partly cloudy', icon: '⛅', accent: '#b0bec5' },
{ codes: [3], text: 'Overcast', icon: '☁️', accent: '#90a4ae' },
{ codes: [45, 48], text: 'Fog', icon: '🌫️', accent: '#b0bec5' },
{ codes: [51, 53, 55], text: 'Drizzle', icon: '🌦️', accent: '#7ec8e3' },
{ codes: [56, 57], text: 'Freezing drizzle', icon: '🌧️', accent: '#9ec9f0' },
{ codes: [61, 63, 65], text: 'Rain', icon: '🌧️', accent: '#6dd5fa' },
{ codes: [66, 67], text: 'Freezing rain', icon: '🌧️', accent: '#9ec9f0' },
{ codes: [71, 73, 75], text: 'Snow', icon: '❄️', accent: '#e0f7ff' },
{ codes: [77], text: 'Snow grains', icon: '❄️', accent: '#e0f7ff' },
{ codes: [80, 81, 82], text: 'Rain showers', icon: '🌧️', accent: '#6dd5fa' },
{ codes: [85, 86], text: 'Snow showers', icon: '🌨️', accent: '#e0f7ff' },
{ codes: [95], text: 'Thunderstorm', icon: '⛈️', accent: '#c084fc' },
{ codes: [96, 99], text: 'Thunderstorm with hail', icon: '⛈️', accent: '#c084fc' }
];
for (const entry of list) {
if (entry.codes.includes(code)) return entry;
}
return { text: 'Unknown', icon: '❔', accent: '#6dd5fa' };
}
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 12,925 | html / css / js | 1,384 / 4,924 / 6,617 |
|---|---|---|---|
| dom nodes | 32 | dom depth | 8 |
| css rules | 38 | js present | yes |
| brightness | 78.5 | contrast | 33.7 |
| colorfulness | 47.4 | whitespace | 28.2% |
This slot's telemetry
| prompt tokens | 312 | completion tokens | 60,919 |
|---|---|---|---|
| total tokens | 61,231 | wall | 197.5 s |
| cost | — | request id | — |
config.json578 B
{
"N": 4,
"auth": {
"credential_ref": "WCB_OPENAI_OFFICIAL_KEY",
"method": "api-key"
},
"billing": "metered",
"config_id": "gpt-5.2-codex-eff-xhigh--api--official--dev",
"effort": "xhigh",
"family": "gpt",
"m": {
"min": 4,
"q": 4
},
"model_id": "gpt-5.2-codex",
"protocol": "api",
"served_model": "gpt-5.2-codex",
"telemetry": {
"completion_tokens": 430931,
"cost_usd": null,
"prompt_tokens": 2464,
"total_tokens": 433395,
"wall_ms": 1571149
},
"transport": "openai-official-api",
"vendor_sanction_ref": null
}send-log4.7 KB
{
"N": 4,
"batch_id": "2026-07-18--official-gpt",
"config_id": "gpt-5.2-codex-eff-xhigh--api--official--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T15:58:13.549501+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T15:54:56.028341+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-17T16:01:57.594720+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T15:58:17.353878+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-17T16:04:06.247156+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T16:02:01.477804+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-17T16:08:39.409470+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T16:04:09.433335+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-17T16:12:20.282161+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T16:08:42.895315+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T16:14:39.754722+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T16:12:24.445994+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T16:16:48.297045+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T16:14:43.301871+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T16:21:32.637938+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T16:16:51.667757+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-q"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}