gpt-5.6-luna @ low · kiro
kirolow
- config
- gpt-5.6-luna-eff-low--cli--kiro--dev
- batch
- 2026-07-19--unified
- transport
- kiro-cli-isolated-home-github-social
- protocol
- cli · plan
- served model
- gpt-5.6-luna
- 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-sonnet-4-6 @max · kiro0.63glm-5 · kiro0.63claude-opus-4-8 @low · kiro0.61gpt-5.6-sol @low · codex-oauth0.61gpt-5.6-sol @xhigh · codex-oauth0.61farthest
claude-opus-4-5 · kiro0.39minimax-m2.7 · go0.44gpt-5.5 @xhigh · codex-oauth0.44gpt-5.4 @xhigh · codex-oauth0.44glm-5.2 · opencode0.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 tempambiguousinsufficient-distinct-temperature-nodes
- min tempambiguousinsufficient-distinct-temperature-nodes
- 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, initial-scale=1.0">
<title>Weather Card</title>
<style>
:root {
--ink: #14233b;
--muted: #73819a;
--line: rgba(20, 35, 59, .1);
--blue: #426ff2;
--blue-dark: #2454dc;
--sky: #eaf2ff;
--card: rgba(255, 255, 255, .84);
--shadow: 0 28px 70px rgba(57, 78, 122, .18);
}
* { box-sizing: border-box; }
body {
min-width: 960px;
min-height: 100vh;
margin: 0;
color: var(--ink);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background:
radial-gradient(circle at 11% 13%, rgba(255,255,255,.95) 0 8%, transparent 27%),
radial-gradient(circle at 87% 18%, rgba(255,255,255,.62) 0 9%, transparent 29%),
linear-gradient(135deg, #dceaff 0%, #f4f7ff 52%, #d7e3ff 100%);
display: grid;
place-items: center;
overflow-x: auto;
}
body::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
opacity: .3;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.035'/%3E%3C/svg%3E");
}
.shell {
width: 1080px;
min-height: 650px;
position: relative;
padding: 34px;
border: 1px solid rgba(255,255,255,.72);
border-radius: 32px;
background: var(--card);
box-shadow: var(--shadow);
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
}
.topbar {
display: flex;
align-items: flex-start;
justify-content: space-between;
margin-bottom: 30px;
}
.eyebrow {
display: flex;
align-items: center;
gap: 9px;
color: var(--blue);
font-size: 11px;
font-weight: 800;
letter-spacing: .16em;
text-transform: uppercase;
}
.eyebrow span {
width: 8px;
height: 8px;
display: inline-block;
border-radius: 50%;
background: #53c89b;
box-shadow: 0 0 0 5px rgba(83,200,155,.14);
}
h1 {
margin: 9px 0 0;
font-size: 31px;
line-height: 1.1;
letter-spacing: -.045em;
}
.updated {
color: var(--muted);
font-size: 12px;
text-align: right;
}
.updated strong {
display: block;
margin-top: 5px;
color: var(--ink);
font-size: 13px;
font-weight: 700;
}
.summary {
min-height: 258px;
display: grid;
grid-template-columns: 1.08fr .92fr;
gap: 20px;
padding: 31px 34px;
overflow: hidden;
position: relative;
border-radius: 24px;
color: white;
background: linear-gradient(118deg, #3970ee 0%, #5c82ed 56%, #7599f1 100%);
box-shadow: 0 17px 32px rgba(50, 101, 225, .2);
}
.summary::after {
content: "";
width: 360px;
height: 360px;
position: absolute;
right: -72px;
top: -154px;
border: 1px solid rgba(255,255,255,.16);
border-radius: 50%;
box-shadow: 0 0 0 28px rgba(255,255,255,.04), 0 0 0 57px rgba(255,255,255,.035);
}
.date-label {
margin-bottom: 22px;
color: rgba(255,255,255,.76);
font-size: 14px;
font-weight: 600;
}
.condition {
display: flex;
align-items: center;
gap: 22px;
}
.weather-icon {
width: 94px;
height: 94px;
display: grid;
place-items: center;
border-radius: 26px;
background: rgba(255,255,255,.15);
font-size: 59px;
line-height: 1;
filter: drop-shadow(0 8px 11px rgba(27,66,163,.22));
}
.temperature {
font-size: 73px;
font-weight: 750;
letter-spacing: -.09em;
line-height: .9;
}
.temperature sup {
margin-left: 5px;
font-size: 28px;
vertical-align: top;
letter-spacing: -.02em;
}
.condition-name {
margin-top: 12px;
color: rgba(255,255,255,.84);
font-size: 15px;
font-weight: 650;
}
.range {
align-self: center;
justify-self: end;
position: relative;
z-index: 1;
width: 210px;
}
.range-title {
margin-bottom: 12px;
color: rgba(255,255,255,.68);
font-size: 11px;
font-weight: 800;
letter-spacing: .13em;
text-transform: uppercase;
}
.range-values {
display: flex;
align-items: baseline;
gap: 9px;
font-size: 29px;
font-weight: 750;
letter-spacing: -.05em;
}
.range-values .low {
color: rgba(255,255,255,.65);
font-size: 21px;
}
.range-bar {
height: 7px;
margin-top: 18px;
border-radius: 8px;
background: linear-gradient(90deg, rgba(255,255,255,.48), rgba(255,255,255,.98));
}
.range-caption {
display: flex;
justify-content: space-between;
margin-top: 9px;
color: rgba(255,255,255,.65);
font-size: 11px;
}
.section-head {
display: flex;
align-items: baseline;
justify-content: space-between;
margin: 29px 2px 14px;
}
.section-head h2 {
margin: 0;
font-size: 16px;
letter-spacing: -.02em;
}
.section-head p {
margin: 0;
color: var(--muted);
font-size: 12px;
}
.hourly {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 8px;
padding: 16px 13px;
border: 1px solid var(--line);
border-radius: 18px;
background: rgba(255,255,255,.56);
}
.hour {
min-width: 0;
padding: 8px 4px;
text-align: center;
border-radius: 12px;
}
.hour:first-child {
color: white;
background: var(--blue);
box-shadow: 0 7px 14px rgba(54,103,222,.2);
}
.hour-time {
color: var(--muted);
font-size: 10px;
font-weight: 700;
}
.hour:first-child .hour-time { color: rgba(255,255,255,.8); }
.hour-icon {
height: 30px;
display: grid;
place-items: center;
margin: 8px 0 4px;
color: #f3ad3d;
font-size: 20px;
}
.hour-temp {
font-size: 13px;
font-weight: 750;
}
.status {
display: none;
min-height: 220px;
place-items: center;
color: var(--muted);
font-size: 15px;
text-align: center;
}
.status.visible { display: grid; }
.content.hidden { display: none; }
@media (max-width: 1100px) {
.shell { transform: scale(.92); }
}
</style>
</head>
<body>
<main class="shell">
<div class="topbar">
<div>
<div class="eyebrow"><span></span> Live conditions</div>
<h1 id="location">Berlin</h1>
</div>
<div class="updated">Weather overview<strong id="dateTop">—</strong></div>
</div>
<div id="status" class="status">Weather data could not be loaded.<br>Please try again later.</div>
<div id="content" class="content">
<section class="summary">
<div>
<div class="date-label" id="dateLabel">—</div>
<div class="condition">
<div class="weather-icon" id="weatherIcon">☀</div>
<div>
<div class="temperature"><span id="high">—</span><sup>°C</sup></div>
<div class="condition-name" id="condition">—</div>
</div>
</div>
</div>
<div class="range">
<div class="range-title">Daily temperature</div>
<div class="range-values"><span id="max">—</span><span class="low" id="min">—</span></div>
<div class="range-bar"></div>
<div class="range-caption"><span>Maximum</span><span>Minimum</span></div>
</div>
</section>
<div class="section-head">
<h2>Hourly temperature</h2>
<p>UTC · 24 hour forecast</p>
</div>
<section class="hourly" id="hourly"></section>
</div>
</main>
<script>
(() => {
const params = new URLSearchParams(location.search);
const lat = params.get("lat") || "52.52";
const lon = params.get("lon") || "13.405";
const name = params.get("name") || "Berlin";
const today = new Date().toISOString().slice(0, 10);
const date = params.get("date") || today;
const requestedDate = new Date(date + "T00:00:00Z");
const api = requestedDate < new Date(today + "T00:00:00Z") ? "/api/om/archive" : "/api/om/forecast";
const conditions = {
0: ["Clear sky", "☀"], 1: ["Mainly clear", "🌤"], 2: ["Partly cloudy", "⛅"],
3: ["Overcast", "☁"], 45: ["Foggy", "〰"], 48: ["Rime fog", "〰"],
51: ["Light drizzle", "🌦"], 53: ["Drizzle", "🌦"], 55: ["Heavy drizzle", "🌧"],
56: ["Freezing drizzle", "🌧"], 57: ["Freezing drizzle", "🌧"],
61: ["Light rain", "🌦"], 63: ["Rain", "🌧"], 65: ["Heavy rain", "🌧"],
66: ["Freezing rain", "🌧"], 67: ["Freezing rain", "🌧"],
71: ["Light snow", "🌨"], 73: ["Snow", "🌨"], 75: ["Heavy snow", "❄"],
77: ["Snow grains", "❄"], 80: ["Rain showers", "🌦"], 81: ["Rain showers", "🌧"],
82: ["Heavy showers", "🌧"], 85: ["Snow showers", "🌨"], 86: ["Heavy snow showers", "❄"],
95: ["Thunderstorm", "⛈"], 96: ["Thunderstorm with hail", "⛈"], 99: ["Thunderstorm with hail", "⛈"]
};
const formatDate = value => new Intl.DateTimeFormat("en-US", {
weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
}).format(new Date(value + "T00:00:00Z"));
document.getElementById("location").textContent = name;
document.getElementById("dateTop").textContent = formatDate(date);
document.getElementById("dateLabel").textContent = formatDate(date);
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(api + "?" + query.toString())
.then(response => {
if (!response.ok) throw new Error("Request failed");
return response.json();
})
.then(data => {
if (!data.daily || !data.hourly || !data.daily.time.length) throw new Error("Incomplete data");
const daily = data.daily;
const high = daily.temperature_2m_max[0];
const low = daily.temperature_2m_min[0];
const code = daily.weather_code[0];
const info = conditions[code] || ["Weather conditions", "☁"];
document.getElementById("high").textContent = Math.round(high);
document.getElementById("max").textContent = Math.round(high) + "°";
document.getElementById("min").textContent = Math.round(low) + "°";
document.getElementById("condition").textContent = info[0];
document.getElementById("weatherIcon").textContent = info[1];
const hourly = document.getElementById("hourly");
const times = data.hourly.time || [];
const values = data.hourly.temperature_2m || [];
const step = Math.max(1, Math.ceil(times.length / 12));
for (let i = 0; i < times.length; i += step) {
const hour = new Date(times[i] + ":00Z").getUTCHours();
const item = document.createElement("div");
item.className = "hour";
item.innerHTML = `
<div class="hour-time">${String(hour).padStart(2, "0")}:00</div>
<div class="hour-icon">${hour >= 6 && hour < 18 ? "☀" : "☾"}</div>
<div class="hour-temp">${Math.round(values[i])}°</div>
`;
hourly.appendChild(item);
}
})
.catch(() => {
document.getElementById("content").classList.add("hidden");
document.getElementById("status").classList.add("visible");
});
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 12,352 | html / css / js | 1,621 / 6,669 / 4,062 |
|---|---|---|---|
| dom nodes | 42 | dom depth | 10 |
| css rules | 40 | js present | yes |
| brightness | 215.3 | contrast | 50.0 |
| colorfulness | 67.1 | whitespace | 72.3% |
This slot's telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 20.3 s |
| cost | — | request id | — |
config.json564 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.6-luna-eff-low--cli--kiro--dev",
"effort": "low",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.6-luna",
"protocol": "cli",
"served_model": "gpt-5.6-luna",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 78526
},
"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-luna-eff-low--cli--kiro--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-18T18:12:03.120174+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:11:42.800548+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:12:26.358782+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:12:07.289681+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:12:48.328706+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:12:29.722084+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-18T18:13:12.390507+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T18:12:51.712534+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
}
}
}