gpt-5.6-terra @ high · kiro
kirohigh
- config
- gpt-5.6-terra-eff-high--cli--kiro--dev
- batch
- 2026-07-19--unified
- transport
- kiro-cli-isolated-home-github-social
- protocol
- cli · plan
- served model
- gpt-5.6-terra
- 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.72gpt-5.6-sol @low · kiro0.72gpt-5.6-sol @medium · codex-oauth0.69claude-opus-4-7 @xhigh · kiro0.67glm-5 · kiro0.67farthest
minimax-m2.7 · go0.41gpt-5.6-luna @medium · codex-oauth0.42gpt-5.5 @medium · codex-oauth0.42qwen3.7-max · qoder0.44gpt-5.6-luna @low · codex-oauth0.44within session 2026-07-19--unified
similarity measures convergence within this session — not quality.
Fidelity — does the card show the right data?
- namematch
- conditionmatch
- datematch
- max tempmismatchshown: 52.52
- min tempmismatchshown: 13.405
- 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">
<title>Weather</title>
<style>
:root {
color-scheme: dark;
--ink: #f7f9ff;
--muted: #b9c4d9;
--line: rgba(255, 255, 255, .13);
--card: rgba(13, 24, 52, .68);
--accent: #82d5ff;
--warm: #ffc66d;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-width: 1000px;
min-height: 800px;
overflow: hidden;
color: var(--ink);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background:
radial-gradient(circle at 14% 14%, rgba(84, 166, 255, .28), transparent 29%),
radial-gradient(circle at 88% 83%, rgba(151, 89, 255, .24), transparent 30%),
linear-gradient(135deg, #071225 0%, #10244b 50%, #16143e 100%);
}
.orb {
position: fixed;
border-radius: 50%;
filter: blur(2px);
pointer-events: none;
opacity: .7;
}
.orb.one {
width: 430px;
height: 430px;
left: -190px;
bottom: -185px;
background: radial-gradient(circle, rgba(86, 215, 255, .34), rgba(86, 215, 255, 0) 68%);
}
.orb.two {
width: 350px;
height: 350px;
right: -90px;
top: -100px;
background: radial-gradient(circle, rgba(255, 190, 81, .22), rgba(255, 190, 81, 0) 68%);
}
main {
width: 1280px;
height: 800px;
display: grid;
place-items: center;
padding: 58px 72px;
position: relative;
}
.weather-card {
position: relative;
width: 100%;
max-width: 1136px;
min-height: 650px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, .17);
border-radius: 30px;
background: var(--card);
box-shadow: 0 28px 90px rgba(0, 0, 0, .34), inset 0 1px rgba(255, 255, 255, .09);
backdrop-filter: blur(18px);
}
.weather-card::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background:
linear-gradient(112deg, rgba(255,255,255,.10), transparent 27%),
repeating-linear-gradient(90deg, transparent 0, transparent 74px, rgba(255,255,255,.018) 75px);
}
.content {
position: relative;
z-index: 1;
padding: 43px 48px 38px;
}
header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 30px;
padding-bottom: 31px;
border-bottom: 1px solid var(--line);
}
.eyebrow {
margin: 0 0 9px;
color: var(--accent);
font-size: 11px;
font-weight: 800;
letter-spacing: .17em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: 39px;
line-height: 1.05;
letter-spacing: -.055em;
font-weight: 750;
}
.date {
display: inline-flex;
align-items: center;
gap: 9px;
margin-top: 12px;
color: var(--muted);
font-size: 15px;
font-weight: 500;
}
.date::before {
content: "";
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--accent);
box-shadow: 0 0 12px var(--accent);
}
.condition {
display: flex;
align-items: center;
gap: 14px;
min-width: 255px;
justify-content: flex-end;
text-align: right;
}
.condition-icon {
width: 63px;
height: 63px;
display: grid;
place-items: center;
flex: 0 0 auto;
border-radius: 20px;
color: #ffdd80;
background: rgba(255, 202, 99, .12);
border: 1px solid rgba(255, 220, 132, .2);
font-size: 34px;
line-height: 1;
}
.condition-label {
display: block;
font-size: 18px;
font-weight: 700;
letter-spacing: -.02em;
}
.condition-detail {
display: block;
margin-top: 4px;
color: var(--muted);
font-size: 12px;
letter-spacing: .08em;
text-transform: uppercase;
}
.summary {
display: grid;
grid-template-columns: 1.1fr .9fr;
align-items: stretch;
gap: 44px;
padding: 34px 0 32px;
}
.temperature {
display: flex;
align-items: center;
min-height: 142px;
}
.current-max {
font-size: 116px;
line-height: .78;
letter-spacing: -.095em;
font-weight: 260;
background: linear-gradient(135deg, #ffffff 22%, #9be5ff 100%);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.degree {
vertical-align: top;
display: inline-block;
margin: 8px 0 0 5px;
font-size: .37em;
font-weight: 450;
letter-spacing: -.04em;
}
.max-copy {
margin: 32px 0 0 22px;
color: var(--muted);
font-size: 12px;
font-weight: 700;
line-height: 1.45;
letter-spacing: .1em;
text-transform: uppercase;
}
.range {
display: grid;
grid-template-columns: 1fr 1fr;
align-self: center;
border-left: 1px solid var(--line);
}
.metric {
padding: 13px 27px;
}
.metric + .metric {
border-left: 1px solid var(--line);
}
.metric-label {
display: block;
margin-bottom: 9px;
color: var(--muted);
font-size: 11px;
font-weight: 750;
letter-spacing: .12em;
text-transform: uppercase;
}
.metric-value {
font-size: 36px;
font-weight: 620;
letter-spacing: -.055em;
}
.metric-value .unit {
margin-left: 2px;
color: var(--muted);
font-size: 17px;
font-weight: 550;
letter-spacing: -.02em;
}
.hourly-section {
padding-top: 26px;
border-top: 1px solid var(--line);
}
.section-heading {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 19px;
}
.section-heading h2 {
margin: 0;
font-size: 13px;
font-weight: 750;
letter-spacing: .1em;
text-transform: uppercase;
}
.section-heading span {
color: var(--muted);
font-size: 12px;
}
.hourly {
display: grid;
grid-template-columns: repeat(24, minmax(0, 1fr));
gap: 7px;
align-items: end;
height: 160px;
}
.hour {
position: relative;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
min-width: 0;
height: 100%;
padding: 0 1px;
}
.bar-track {
display: flex;
align-items: flex-end;
width: 100%;
height: 94px;
padding: 0 1px;
border-radius: 7px;
background: rgba(255,255,255,.045);
overflow: hidden;
}
.bar {
width: 100%;
min-height: 8px;
border-radius: 6px 6px 2px 2px;
background: linear-gradient(180deg, #9ae7ff, #5a9eff);
box-shadow: 0 0 14px rgba(104, 207, 255, .23);
}
.hour:nth-child(4n+1) .bar {
background: linear-gradient(180deg, #ffd584, #ff9d6a);
box-shadow: 0 0 14px rgba(255, 180, 112, .2);
}
.hour-temp {
margin-top: 9px;
color: #eef5ff;
font-size: 10px;
font-weight: 700;
white-space: nowrap;
}
.hour-time {
margin-top: 5px;
color: #9daac3;
font-size: 9px;
font-weight: 600;
white-space: nowrap;
}
.footer {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 24px;
color: #94a4c0;
font-size: 11px;
}
.source {
display: inline-flex;
align-items: center;
gap: 7px;
}
.source::before {
content: "";
width: 7px;
height: 7px;
border: 1px solid #71dfa7;
border-radius: 50%;
background: #71dfa7;
box-shadow: 0 0 10px rgba(113, 223, 167, .8);
}
.loading, .error {
min-height: 568px;
display: grid;
place-items: center;
text-align: center;
}
.loading-copy, .error-copy {
max-width: 430px;
}
.loader {
width: 44px;
height: 44px;
margin: 0 auto 20px;
border: 3px solid rgba(255,255,255,.14);
border-top-color: var(--accent);
border-radius: 50%;
animation: spin .8s linear infinite;
}
.loading h2, .error h2 {
margin: 0 0 9px;
font-size: 22px;
letter-spacing: -.035em;
}
.loading p, .error p {
margin: 0;
color: var(--muted);
font-size: 14px;
line-height: 1.55;
}
.error-mark {
width: 52px;
height: 52px;
margin: 0 auto 18px;
display: grid;
place-items: center;
border: 1px solid rgba(255, 151, 151, .32);
border-radius: 17px;
color: #ffabab;
background: rgba(255, 113, 113, .1);
font-size: 27px;
font-weight: 300;
}
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</head>
<body>
<div class="orb one"></div>
<div class="orb two"></div>
<main>
<article class="weather-card" aria-live="polite">
<div class="content" id="app">
<div class="loading">
<div class="loading-copy">
<div class="loader"></div>
<h2>Gathering the forecast</h2>
<p>Retrieving weather observations and hourly temperatures.</p>
</div>
</div>
</div>
</article>
</main>
<script>
(() => {
const app = document.getElementById("app");
const params = new URLSearchParams(location.search);
const utcToday = new Date().toISOString().slice(0, 10);
const validCoordinate = (value, min, max, fallback) => {
const number = Number(value);
return value !== null && value.trim() !== "" && Number.isFinite(number) && number >= min && number <= max
? number
: fallback;
};
const lat = validCoordinate(params.get("lat"), -90, 90, 52.52);
const lon = validCoordinate(params.get("lon"), -180, 180, 13.405);
const name = (params.get("name") || "Berlin").trim() || "Berlin";
const requestedDate = /^\d{4}-\d{2}-\d{2}$/.test(params.get("date") || "")
? params.get("date")
: utcToday;
const weatherCodes = {
0: ["Clear sky", "☀"],
1: ["Mainly clear", "☀"],
2: ["Partly cloudy", "⛅"],
3: ["Overcast", "☁"],
45: ["Fog", "≋"],
48: ["Rime fog", "≋"],
51: ["Light drizzle", "☂"],
53: ["Moderate drizzle", "☂"],
55: ["Dense drizzle", "☂"],
56: ["Freezing drizzle", "☂"],
57: ["Heavy freezing drizzle", "☂"],
61: ["Slight rain", "☂"],
63: ["Moderate rain", "☂"],
65: ["Heavy rain", "☂"],
66: ["Freezing rain", "☂"],
67: ["Heavy freezing rain", "☂"],
71: ["Slight snowfall", "❄"],
73: ["Moderate snowfall", "❄"],
75: ["Heavy snowfall", "❄"],
77: ["Snow grains", "❄"],
80: ["Rain showers", "☂"],
81: ["Moderate showers", "☂"],
82: ["Violent showers", "☂"],
85: ["Snow showers", "❄"],
86: ["Heavy snow showers", "❄"],
95: ["Thunderstorm", "ϟ"],
96: ["Thunderstorm with hail", "ϟ"],
99: ["Heavy thunderstorm", "ϟ"]
};
const formatDate = (iso) => {
const [year, month, day] = iso.split("-").map(Number);
return new Intl.DateTimeFormat("en-US", {
weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
}).format(new Date(Date.UTC(year, month - 1, day)));
};
const round = (value) => Math.round(Number(value));
const temperature = (value) => `${round(value)}°`;
const renderError = () => {
app.replaceChildren();
const wrap = document.createElement("div");
wrap.className = "error";
wrap.innerHTML = `
<div class="error-copy">
<div class="error-mark">!</div>
<h2>Weather data is unavailable</h2>
<p>We couldn’t load weather information for this location and date. Please try again shortly.</p>
</div>`;
app.append(wrap);
};
const renderWeather = (data) => {
const daily = data && data.daily;
const hourly = data && data.hourly;
const max = daily && daily.temperature_2m_max && daily.temperature_2m_max[0];
const min = daily && daily.temperature_2m_min && daily.temperature_2m_min[0];
const code = daily && daily.weather_code && daily.weather_code[0];
const allTimes = hourly && hourly.time;
const allTemps = hourly && hourly.temperature_2m;
if (!Number.isFinite(Number(max)) || !Number.isFinite(Number(min)) ||
!Array.isArray(allTimes) || !Array.isArray(allTemps)) {
throw new Error("Incomplete weather response");
}
const condition = weatherCodes[code] || ["Unknown conditions", "○"];
const entries = allTimes
.map((time, index) => ({ time, temp: allTemps[index] }))
.filter(entry => entry.time && entry.time.slice(0, 10) === requestedDate && Number.isFinite(Number(entry.temp)));
if (!entries.length) throw new Error("No hourly data");
const values = entries.map(entry => Number(entry.temp));
const low = Math.min(...values);
const high = Math.max(...values);
const spread = Math.max(high - low, 1);
app.replaceChildren();
const header = document.createElement("header");
const heading = document.createElement("div");
const eyebrow = document.createElement("p");
eyebrow.className = "eyebrow";
eyebrow.textContent = "Daily weather";
const title = document.createElement("h1");
title.textContent = name;
const date = document.createElement("div");
date.className = "date";
date.textContent = formatDate(requestedDate);
heading.append(eyebrow, title, date);
const conditionEl = document.createElement("div");
conditionEl.className = "condition";
const icon = document.createElement("div");
icon.className = "condition-icon";
icon.setAttribute("aria-hidden", "true");
icon.textContent = condition[1];
const conditionText = document.createElement("div");
const label = document.createElement("span");
label.className = "condition-label";
label.textContent = condition[0];
const detail = document.createElement("span");
detail.className = "condition-detail";
detail.textContent = "Weather condition";
conditionText.append(label, detail);
conditionEl.append(icon, conditionText);
header.append(heading, conditionEl);
const summary = document.createElement("section");
summary.className = "summary";
summary.setAttribute("aria-label", "Temperature summary");
const display = document.createElement("div");
display.className = "temperature";
const current = document.createElement("div");
current.className = "current-max";
current.innerHTML = `${round(max)}<span class="degree">°C</span>`;
const maxCopy = document.createElement("div");
maxCopy.className = "max-copy";
maxCopy.textContent = "Daily high";
display.append(current, maxCopy);
const range = document.createElement("div");
range.className = "range";
[["Maximum", max], ["Minimum", min]].forEach(([labelText, value]) => {
const metric = document.createElement("div");
metric.className = "metric";
metric.innerHTML = `<span class="metric-label">${labelText}</span><span class="metric-value">${round(value)}<span class="unit">°C</span></span>`;
range.append(metric);
});
summary.append(display, range);
const hourlySection = document.createElement("section");
hourlySection.className = "hourly-section";
hourlySection.setAttribute("aria-label", "Hourly temperatures");
const sectionHeading = document.createElement("div");
sectionHeading.className = "section-heading";
sectionHeading.innerHTML = "<h2>Hourly temperature</h2><span>UTC</span>";
const bars = document.createElement("div");
bars.className = "hourly";
entries.forEach(entry => {
const hour = document.createElement("div");
hour.className = "hour";
const height = 18 + ((Number(entry.temp) - low) / spread) * 82;
const time = entry.time.slice(11, 16);
hour.innerHTML = `
<div class="bar-track"><div class="bar" style="height:${height.toFixed(1)}%"></div></div>
<div class="hour-temp">${temperature(entry.temp)}</div>
<div class="hour-time">${time}</div>`;
bars.append(hour);
});
hourlySection.append(sectionHeading, bars);
const footer = document.createElement("footer");
footer.className = "footer";
footer.innerHTML = `<span class="source">Open-Meteo compatible data</span><span>${lat.toFixed(3)}°, ${lon.toFixed(3)}°</span>`;
app.append(header, summary, hourlySection, footer);
};
const endpoint = requestedDate < utcToday ? "/api/om/archive" : "/api/om/forecast";
const query = new URLSearchParams({
latitude: String(lat),
longitude: String(lon),
daily: "temperature_2m_max,temperature_2m_min,weather_code",
hourly: "temperature_2m",
timezone: "UTC",
temperature_unit: "celsius",
start_date: requestedDate,
end_date: requestedDate
});
fetch(`${endpoint}?${query.toString()}`)
.then(response => {
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
return response.json();
})
.then(renderWeather)
.catch(renderError);
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 18,224 | html / css / js | 686 / 8,923 / 8,615 |
|---|---|---|---|
| dom nodes | 18 | dom depth | 8 |
| css rules | 52 | js present | yes |
| brightness | 41.2 | contrast | 33.3 |
| colorfulness | 34.4 | whitespace | 53.3% |
This slot's telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 32.6 s |
| cost | — | request id | — |
config.json570 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.6-terra-eff-high--cli--kiro--dev",
"effort": "high",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.6-terra",
"protocol": "cli",
"served_model": "gpt-5.6-terra",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 120486
},
"transport": "kiro-cli-isolated-home-github-social",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-18--kiro-cli",
"config_id": "gpt-5.6-terra-eff-high--cli--kiro--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-18T18:47:18.657003+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:46:54.841131+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-18T18:47:55.602662+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:47:22.987433+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-18T18:48:27.465583+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:47:59.322803+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-18T18:49:07.792601+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:48:31.683086+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-min"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}