gemini-3.6-flash @ low · cursor-xl
cursor-xllow
- config
- gemini-3.6-flash-eff-low--cli--cursor-xl--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- gemini-3.6-flash-low
- captured
- Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe

delivered in a markdown fence — the model wrapped its HTML in a code fence; extraction stripped it. Recorded here for traceability.
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
gemini-3.5-flash @low · api0.74gemini-3.8-flash @low · agy0.74gemini-3.6-flash @minimal · api0.73claude-sonnet-4-6 @medium · kiro0.73gemini-3.7-flash @medium · agy0.73farthest
grok-4.6 @medium · grok-cli0.52claude-fable-5 @max · cursor-xl0.52claude-fable-5-1 @max · CC0.53claude-opus-4-8 @max · CC0.53gpt-6-astra · codex0.53within session 2026-07-19--unified
similarity measures convergence within this session — not quality.
Fidelity — does the card show the right data?
- namematch
- conditionmatch
- datematch
- max tempmatchshown: 25
- min tempmatchshown: 16
- hourlymatchcoverage 24/24 · 24 match · 0 mismatch · 0 not shown
- request sidematch0 violation(s)
extractor fidelity-extractor-v1+Berlin-2026-07-15
Source — raw model output, one byte unchanged
download card.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather Card</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
width: 1280px;
height: 800px;
margin: 0 auto;
overflow: hidden;
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
background: #0d1117;
color: #f0f6fc;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.background-glow {
position: absolute;
width: 700px;
height: 700px;
border-radius: 50%;
filter: blur(120px);
opacity: 0.18;
pointer-events: none;
transition: background 1s ease;
background: radial-gradient(circle, #38bdf8, #818cf8);
}
.card {
width: 900px;
height: 560px;
background: rgba(22, 27, 34, 0.65);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 32px;
padding: 44px;
display: flex;
flex-direction: column;
justify-content: space-between;
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.1);
position: relative;
z-index: 1;
}
.header {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.location-info h1 {
font-size: 42px;
font-weight: 700;
letter-spacing: -0.5px;
color: #ffffff;
margin-bottom: 6px;
}
.location-info .date {
font-size: 16px;
color: #8b949e;
font-weight: 500;
display: flex;
align-items: center;
gap: 8px;
}
.location-info .coords {
font-size: 13px;
color: #484f58;
margin-top: 4px;
}
.condition-badge {
display: flex;
align-items: center;
gap: 16px;
background: rgba(255, 255, 255, 0.05);
padding: 12px 24px;
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.08);
}
.condition-icon {
width: 48px;
height: 48px;
}
.condition-text {
font-size: 18px;
font-weight: 600;
color: #e6edf3;
text-transform: capitalize;
}
.main-metrics {
display: flex;
align-items: baseline;
gap: 40px;
margin: 20px 0;
}
.temp-range-container {
display: flex;
gap: 32px;
align-items: center;
}
.temp-pill {
display: flex;
flex-direction: column;
}
.temp-pill .label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: #8b949e;
font-weight: 600;
margin-bottom: 4px;
}
.temp-pill .val {
font-size: 56px;
font-weight: 700;
letter-spacing: -1px;
line-height: 1;
}
.temp-max .val {
color: #ff7b72;
}
.temp-min .val {
color: #79c0ff;
}
.temp-divider {
width: 1px;
height: 48px;
background: rgba(255, 255, 255, 0.1);
}
.hourly-section {
display: flex;
flex-direction: column;
gap: 16px;
}
.section-title {
font-size: 13px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: #8b949e;
font-weight: 600;
}
.hourly-container {
display: flex;
gap: 12px;
overflow-x: auto;
padding-bottom: 4px;
scrollbar-width: none;
}
.hourly-container::-webkit-scrollbar {
display: none;
}
.hourly-card {
min-width: 68px;
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 16px;
padding: 14px 10px;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
transition: all 0.2s ease;
}
.hourly-card:hover {
background: rgba(255, 255, 255, 0.08);
transform: translateY(-2px);
}
.hourly-time {
font-size: 13px;
color: #8b949e;
font-weight: 500;
}
.hourly-temp {
font-size: 16px;
font-weight: 600;
color: #f0f6fc;
}
/* Loading & Error States */
.state-container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
gap: 16px;
text-align: center;
}
.spinner {
width: 48px;
height: 48px;
border: 4px solid rgba(255, 255, 255, 0.1);
border-left-color: #38bdf8;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.error-icon {
width: 56px;
height: 56px;
color: #ff7b72;
}
.error-title {
font-size: 20px;
font-weight: 600;
color: #f0f6fc;
}
.error-msg {
font-size: 14px;
color: #8b949e;
max-width: 360px;
line-height: 1.5;
}
.hidden {
display: none !important;
}
</style>
</head>
<body>
<div class="background-glow" id="bgGlow"></div>
<div class="card">
<!-- Loading State -->
<div class="state-container" id="loadingState">
<div class="spinner"></div>
<div style="color: #8b949e; font-size: 15px; font-weight: 500;">Fetching weather data...</div>
</div>
<!-- Error State -->
<div class="state-container hidden" id="errorState">
<svg class="error-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z" />
</svg>
<div class="error-title">Unable to Load Weather Data</div>
<div class="error-msg" id="errorMessage">The weather information for this location and date could not be retrieved. Please check your settings or try again later.</div>
</div>
<!-- Content State -->
<div id="contentState" class="hidden" style="display: flex; flex-direction: column; justify-content: space-between; height: 100%;">
<div class="header">
<div class="location-info">
<h1 id="locName">Berlin</h1>
<div class="date" id="dateStr">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
<span id="displayDate">2026-08-14</span>
</div>
<div class="coords" id="displayCoords">Lat: 52.52, Lon: 13.41</div>
</div>
<div class="condition-badge">
<svg class="condition-icon" id="condIcon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"></svg>
<span class="condition-text" id="condText">Clear Sky</span>
</div>
</div>
<div class="main-metrics">
<div class="temp-range-container">
<div class="temp-pill temp-max">
<span class="label">High</span>
<span class="val" id="tempMax">--°</span>
</div>
<div class="temp-divider"></div>
<div class="temp-pill temp-min">
<span class="label">Low</span>
<span class="val" id="tempMin">--°</span>
</div>
</div>
</div>
<div class="hourly-section">
<div class="section-title">Hourly Temperature (UTC)</div>
<div class="hourly-container" id="hourlyList"></div>
</div>
</div>
</div>
<script>
const weatherCodes = {
0: { name: 'Clear Sky', glow: 'radial-gradient(circle, #f59e0b, #ef4444)', icon: '<circle cx="12" cy="12" r="5" stroke="#f59e0b" stroke-width="2"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42" stroke="#f59e0b" stroke-width="2"/>' },
1: { name: 'Mainly Clear', glow: 'radial-gradient(circle, #38bdf8, #f59e0b)', icon: '<path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2" stroke="#f59e0b" stroke-width="2"/><path d="M16 16a4 4 0 00-7.78-1.3A5 5 0 105 19h11a4 4 0 000-8z" stroke="#38bdf8" stroke-width="2"/>' },
2: { name: 'Partly Cloudy', glow: 'radial-gradient(circle, #38bdf8, #6366f1)', icon: '<path d="M16 16a4 4 0 00-7.78-1.3A5 5 0 105 19h11a4 4 0 000-8z" stroke="#94a3b8" stroke-width="2"/><circle cx="8" cy="8" r="3" stroke="#f59e0b" stroke-width="2"/>' },
3: { name: 'Overcast', glow: 'radial-gradient(circle, #64748b, #475569)', icon: '<path d="M16 16a4 4 0 00-7.78-1.3A5 5 0 105 19h11a4 4 0 000-8z" stroke="#94a3b8" stroke-width="2"/>' },
45: { name: 'Fog', glow: 'radial-gradient(circle, #94a3b8, #475569)', icon: '<path d="M4 8h16M3 12h18M5 16h14" stroke="#94a3b8" stroke-width="2" stroke-linecap="round"/>' },
48: { name: 'Depositing Rime Fog', glow: 'radial-gradient(circle, #94a3b8, #38bdf8)', icon: '<path d="M4 8h16M3 12h18M5 16h14" stroke="#94a3b8" stroke-width="2" stroke-linecap="round"/>' },
51: { name: 'Light Drizzle', glow: 'radial-gradient(circle, #0284c7, #1e3a8a)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#38bdf8" stroke-width="2"/><path d="M8 19v2M12 19v2M16 19v2" stroke="#38bdf8" stroke-width="2" stroke-linecap="round"/>' },
53: { name: 'Moderate Drizzle', glow: 'radial-gradient(circle, #0284c7, #1e3a8a)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#38bdf8" stroke-width="2"/><path d="M8 19v2M12 19v2M16 19v2" stroke="#38bdf8" stroke-width="2" stroke-linecap="round"/>' },
55: { name: 'Dense Drizzle', glow: 'radial-gradient(circle, #0284c7, #1e3a8a)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#38bdf8" stroke-width="2"/><path d="M8 19v2M12 19v2M16 19v2" stroke="#38bdf8" stroke-width="2" stroke-linecap="round"/>' },
61: { name: 'Slight Rain', glow: 'radial-gradient(circle, #0284c7, #1e3a8a)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#38bdf8" stroke-width="2"/><path d="M10 19l-2 3M14 19l-2 3" stroke="#38bdf8" stroke-width="2" stroke-linecap="round"/>' },
63: { name: 'Moderate Rain', glow: 'radial-gradient(circle, #2563eb, #1e1b4b)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#60a5fa" stroke-width="2"/><path d="M8 19l-2 3M12 19l-2 3M16 19l-2 3" stroke="#60a5fa" stroke-width="2" stroke-linecap="round"/>' },
65: { name: 'Heavy Rain', glow: 'radial-gradient(circle, #2563eb, #1e1b4b)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#60a5fa" stroke-width="2"/><path d="M8 19l-2 3M12 19l-2 3M16 19l-2 3" stroke="#60a5fa" stroke-width="2" stroke-linecap="round"/>' },
71: { name: 'Slight Snow', glow: 'radial-gradient(circle, #818cf8, #312e81)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#a5b4fc" stroke-width="2"/><path d="M8 20h.01M12 20h.01M16 20h.01" stroke="#a5b4fc" stroke-width="3" stroke-linecap="round"/>' },
73: { name: 'Moderate Snow', glow: 'radial-gradient(circle, #818cf8, #312e81)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#a5b4fc" stroke-width="2"/><path d="M8 20h.01M12 20h.01M16 20h.01" stroke="#a5b4fc" stroke-width="3" stroke-linecap="round"/>' },
75: { name: 'Heavy Snow', glow: 'radial-gradient(circle, #818cf8, #312e81)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#a5b4fc" stroke-width="2"/><path d="M8 20h.01M12 20h.01M16 20h.01" stroke="#a5b4fc" stroke-width="3" stroke-linecap="round"/>' },
95: { name: 'Thunderstorm', glow: 'radial-gradient(circle, #7c3aed, #2e1065)', icon: '<path d="M16 13a4 4 0 00-7.78-1.3A5 5 0 105 16h11a4 4 0 000-8z" stroke="#c084fc" stroke-width="2"/><path d="M13 16l-3 4h4l-2 4" stroke="#facc15" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>' }
};
function getTodayUTC() {
const now = new Date();
return now.toISOString().split('T')[0];
}
function parseQueryParams() {
const params = new URLSearchParams(window.location.search);
const lat = params.get('lat') || '52.52';
const lon = params.get('lon') || '13.405';
const name = params.get('name') || 'Berlin';
const date = params.get('date') || getTodayUTC();
return { lat, lon, name, date };
}
function formatDateDisplay(dateStr) {
try {
const [y, m, d] = dateStr.split('-').map(Number);
const dateObj = new Date(Date.UTC(y, m - 1, d));
return dateObj.toLocaleDateString('en-US', {
weekday: 'long',
year: 'numeric',
month: 'short',
day: 'numeric',
timeZone: 'UTC'
});
} catch (e) {
return dateStr;
}
}
async function init() {
const { lat, lon, name, date } = parseQueryParams();
const todayStr = getTodayUTC();
const isPast = date < todayStr;
const apiEndpoint = isPast ? '/api/om/archive' : '/api/om/forecast';
const url = `${apiEndpoint}?latitude=${encodeURIComponent(lat)}&longitude=${encodeURIComponent(lon)}&daily=temperature_2m_max,temperature_2m_min,weather_code&hourly=temperature_2m&timezone=UTC&temperature_unit=celsius&start_date=${encodeURIComponent(date)}&end_date=${encodeURIComponent(date)}`;
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error ${response.status}`);
}
const data = await response.json();
if (!data || !data.daily || !data.hourly) {
throw new Error('Invalid data structure received.');
}
renderWeather(data, name, date, lat, lon);
} catch (err) {
showError(err.message);
}
}
function renderWeather(data, name, date, lat, lon) {
document.getElementById('loadingState').classList.add('hidden');
document.getElementById('contentState').classList.remove('hidden');
document.getElementById('locName').textContent = name;
document.getElementById('displayDate').textContent = formatDateDisplay(date);
document.getElementById('displayCoords').textContent = `Lat: ${parseFloat(lat).toFixed(2)}, Lon: ${parseFloat(lon).toFixed(2)}`;
const maxTemp = Math.round(data.daily.temperature_2m_max[0]);
const minTemp = Math.round(data.daily.temperature_2m_min[0]);
const code = data.daily.weather_code ? data.daily.weather_code[0] : 0;
document.getElementById('tempMax').textContent = `${maxTemp}°`;
document.getElementById('tempMin').textContent = `${minTemp}°`;
const cond = weatherCodes[code] || { name: 'Unknown', glow: 'radial-gradient(circle, #38bdf8, #818cf8)', icon: '<circle cx="12" cy="12" r="8" stroke="#94a3b8" stroke-width="2"/>' };
document.getElementById('condText').textContent = cond.name;
document.getElementById('condIcon').innerHTML = cond.icon;
document.getElementById('bgGlow').style.background = cond.glow;
const hourlyList = document.getElementById('hourlyList');
hourlyList.innerHTML = '';
const times = data.hourly.time || [];
const temps = data.hourly.temperature_2m || [];
times.forEach((tStr, index) => {
const hourTime = tStr.includes('T') ? tStr.split('T')[1].substring(0, 5) : `${String(index).padStart(2, '0')}:00`;
const tempVal = Math.round(temps[index]);
const item = document.createElement('div');
item.className = 'hourly-card';
item.innerHTML = `
<div class="hourly-time">${hourTime}</div>
<div class="hourly-temp">${tempVal}°</div>
`;
hourlyList.appendChild(item);
});
}
function showError(msg) {
document.getElementById('loadingState').classList.add('hidden');
document.getElementById('contentState').classList.add('hidden');
document.getElementById('errorState').classList.remove('hidden');
if (msg) {
document.getElementById('errorMessage').textContent = `Failed to load weather data (${msg}). Please verify parameters or API availability.`;
}
}
window.addEventListener('DOMContentLoaded', init);
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 16,592 | html / css / js | 2,835 / 5,033 / 8,724 |
|---|---|---|---|
| dom nodes | 45 | dom depth | 9 |
| css rules | 35 | js present | yes |
| brightness | 23.5 | contrast | 13.7 |
| colorfulness | 11.4 | whitespace | 97.1% |
This slot's telemetry
| prompt tokens | 19,166 | completion tokens | 6,640 |
|---|---|---|---|
| total tokens | 25,806 | wall | 37 s |
| cost | — | request id | — |
config.json586 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gemini-3.6-flash-eff-low--cli--cursor-xl--dev",
"effort": "low",
"family": "gemini",
"m": {
"min": 2,
"q": 2
},
"model_id": "gemini-3.6-flash",
"protocol": "cli",
"served_model": "gemini-3.6-flash-low",
"telemetry": {
"completion_tokens": 30559,
"cost_usd": null,
"prompt_tokens": 38861,
"total_tokens": 69420,
"wall_ms": 162463
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-xl-s2",
"config_id": "gemini-3.6-flash-eff-low--cli--cursor-xl--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T16:22:41.086607+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:22:04.103356+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-08-13T16:23:14.433349+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:22:44.152995+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-08-13T16:24:03.835093+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:23:17.546345+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-08-13T16:24:55.866484+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:24:06.950874+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
}
}
}