claude-opus-4-6 @ high · kiro
kirohigh
- config
- claude-opus-4-6-eff-high--cli--kiro--dev
- batch
- 2026-07-19--unified
- transport
- kiro-cli-isolated-home-github-social
- protocol
- cli · plan
- served model
- claude-opus-4.6
- 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-6 @max · kiro0.81claude-opus-4-6 @medium · kiro0.75claude-opus-4-6 @low · kiro0.73kimi-k2.6 · opencode0.73minimax-m2.5 · kiro0.72farthest
minimax-m2.5 · go0.38claude-haiku-4-5 @max · CC0.38glm-5.2-eff-enabled--api--official--dev0.39qwen3.5-plus · go0.41gpt-5.6-sol @xhigh · kiro0.41within 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=1280">
<title>Weather Card</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
color: #fff;
padding: 40px;
}
.card {
width: 680px;
background: rgba(255, 255, 255, 0.06);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 28px;
padding: 48px;
box-shadow: 0 32px 64px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.card-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 36px;
}
.location {
font-size: 28px;
font-weight: 700;
letter-spacing: -0.5px;
}
.date {
font-size: 15px;
color: rgba(255, 255, 255, 0.55);
margin-top: 6px;
font-weight: 400;
}
.weather-icon {
font-size: 56px;
line-height: 1;
}
.condition {
font-size: 18px;
color: rgba(255, 255, 255, 0.7);
margin-bottom: 32px;
font-weight: 500;
}
.temps-main {
display: flex;
align-items: baseline;
gap: 24px;
margin-bottom: 40px;
}
.temp-max {
font-size: 64px;
font-weight: 700;
letter-spacing: -2px;
line-height: 1;
}
.temp-min {
font-size: 36px;
font-weight: 400;
color: rgba(255, 255, 255, 0.5);
letter-spacing: -1px;
}
.temp-label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 1px;
color: rgba(255, 255, 255, 0.4);
display: block;
margin-bottom: 4px;
}
.divider {
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
margin-bottom: 32px;
}
.hourly-title {
font-size: 13px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: rgba(255, 255, 255, 0.4);
margin-bottom: 16px;
font-weight: 600;
}
.hourly-container {
display: flex;
gap: 0;
overflow-x: auto;
padding-bottom: 8px;
}
.hourly-container::-webkit-scrollbar {
height: 4px;
}
.hourly-container::-webkit-scrollbar-track {
background: rgba(255,255,255,0.05);
border-radius: 2px;
}
.hourly-container::-webkit-scrollbar-thumb {
background: rgba(255,255,255,0.2);
border-radius: 2px;
}
.hour-item {
display: flex;
flex-direction: column;
align-items: center;
min-width: 44px;
padding: 12px 6px;
border-radius: 12px;
transition: background 0.2s;
}
.hour-item:hover {
background: rgba(255,255,255,0.08);
}
.hour-time {
font-size: 11px;
color: rgba(255, 255, 255, 0.45);
margin-bottom: 8px;
font-weight: 500;
}
.hour-temp {
font-size: 14px;
font-weight: 600;
}
.hour-bar-wrap {
width: 3px;
height: 40px;
background: rgba(255,255,255,0.08);
border-radius: 2px;
margin: 8px 0;
position: relative;
overflow: hidden;
}
.hour-bar {
position: absolute;
bottom: 0;
width: 100%;
border-radius: 2px;
background: linear-gradient(to top, #4facfe, #00f2fe);
transition: height 0.3s;
}
.error-msg {
text-align: center;
padding: 80px 40px;
font-size: 18px;
color: rgba(255, 255, 255, 0.6);
}
.error-msg .error-icon {
font-size: 48px;
margin-bottom: 16px;
display: block;
}
.loading {
text-align: center;
padding: 80px 40px;
font-size: 16px;
color: rgba(255, 255, 255, 0.5);
}
@keyframes pulse {
0%, 100% { opacity: 0.4; }
50% { opacity: 1; }
}
.loading::after {
content: '...';
animation: pulse 1.5s infinite;
}
</style>
</head>
<body>
<div class="card" id="card">
<div class="loading" id="loading">Loading weather data</div>
</div>
<script>
(function() {
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';
function getTodayUTC() {
const d = new Date();
return d.toISOString().split('T')[0];
}
const date = params.get('date') || getTodayUTC();
function isPastDate(dateStr) {
const today = getTodayUTC();
return dateStr < today;
}
const endpoint = isPastDate(date) ? '/api/om/archive' : '/api/om/forecast';
const url = endpoint + '?' + 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
}).toString();
function weatherCondition(code) {
const map = {
0: { text: 'Clear sky', icon: '☀️' },
1: { text: 'Mainly clear', icon: '🌤️' },
2: { text: 'Partly cloudy', icon: '⛅' },
3: { text: 'Overcast', icon: '☁️' },
45: { text: 'Foggy', icon: '🌫️' },
48: { text: 'Depositing rime fog', icon: '🌫️' },
51: { text: 'Light drizzle', icon: '🌦️' },
53: { text: 'Moderate drizzle', icon: '🌦️' },
55: { text: 'Dense drizzle', icon: '🌧️' },
56: { text: 'Freezing drizzle', icon: '🌧️' },
57: { text: 'Dense freezing drizzle', icon: '🌧️' },
61: { text: 'Slight rain', icon: '🌦️' },
63: { text: 'Moderate rain', icon: '🌧️' },
65: { text: 'Heavy rain', icon: '🌧️' },
66: { text: 'Freezing rain', icon: '🌧️' },
67: { text: 'Heavy freezing rain', icon: '🌧️' },
71: { text: 'Slight snowfall', icon: '🌨️' },
73: { text: 'Moderate snowfall', icon: '🌨️' },
75: { text: 'Heavy snowfall', icon: '❄️' },
77: { text: 'Snow grains', icon: '❄️' },
80: { text: 'Slight rain showers', icon: '🌦️' },
81: { text: 'Moderate rain showers', icon: '🌧️' },
82: { text: 'Violent rain showers', icon: '⛈️' },
85: { text: 'Slight snow showers', icon: '🌨️' },
86: { text: 'Heavy snow showers', icon: '❄️' },
95: { text: 'Thunderstorm', icon: '⛈️' },
96: { text: 'Thunderstorm with hail', icon: '⛈️' },
99: { text: 'Thunderstorm with heavy hail', icon: '⛈️' }
};
return map[code] || { text: 'Unknown', icon: '🌡️' };
}
function formatDate(dateStr) {
const d = new Date(dateStr + 'T00:00:00Z');
return d.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' });
}
function render(data) {
const card = document.getElementById('card');
const tMax = data.daily.temperature_2m_max[0];
const tMin = data.daily.temperature_2m_min[0];
const wCode = data.daily.weather_code[0];
const hourlyTemps = data.hourly.temperature_2m;
const weather = weatherCondition(wCode);
const minHourly = Math.min(...hourlyTemps);
const maxHourly = Math.max(...hourlyTemps);
const range = maxHourly - minHourly || 1;
let hourlyHTML = '';
for (let i = 0; i < 24; i++) {
const temp = hourlyTemps[i];
const barHeight = ((temp - minHourly) / range) * 100;
const h = i.toString().padStart(2, '0') + ':00';
hourlyHTML += '<div class="hour-item">' +
'<span class="hour-time">' + h + '</span>' +
'<span class="hour-temp">' + Math.round(temp) + '°</span>' +
'<div class="hour-bar-wrap"><div class="hour-bar" style="height:' + barHeight + '%"></div></div>' +
'</div>';
}
card.innerHTML =
'<div class="card-header">' +
'<div>' +
'<div class="location">' + escapeHtml(name) + '</div>' +
'<div class="date">' + formatDate(date) + '</div>' +
'</div>' +
'<div class="weather-icon">' + weather.icon + '</div>' +
'</div>' +
'<div class="condition">' + weather.text + '</div>' +
'<div class="temps-main">' +
'<div><span class="temp-label">High</span><span class="temp-max">' + Math.round(tMax) + '°C</span></div>' +
'<div><span class="temp-label">Low</span><span class="temp-min">' + Math.round(tMin) + '°C</span></div>' +
'</div>' +
'<div class="divider"></div>' +
'<div class="hourly-title">Hourly Temperature</div>' +
'<div class="hourly-container">' + hourlyHTML + '</div>';
}
function showError(msg) {
var card = document.getElementById('card');
card.innerHTML = '<div class="error-msg"><span class="error-icon">⚠️</span>' + escapeHtml(msg) + '</div>';
}
function escapeHtml(str) {
var div = document.createElement('div');
div.appendChild(document.createTextNode(str));
return div.innerHTML;
}
fetch(url)
.then(function(res) {
if (!res.ok) throw new Error('Failed to load weather data (HTTP ' + res.status + ')');
return res.json();
})
.then(function(data) {
if (!data.daily || !data.hourly) throw new Error('Invalid weather data received');
render(data);
})
.catch(function(err) {
showError(err.message || 'Unable to load weather data. Please try again later.');
});
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 9,150 | html / css / js | 299 / 3,520 / 5,331 |
|---|---|---|---|
| dom nodes | 10 | dom depth | 4 |
| css rules | 31 | js present | yes |
| brightness | 40.7 | contrast | 16.0 |
| colorfulness | 24.0 | whitespace | 60.6% |
This slot's telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 53 s |
| cost | — | request id | — |
config.json579 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-opus-4-6-eff-high--cli--kiro--dev",
"effort": "high",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-opus-4-6",
"protocol": "cli",
"served_model": "claude-opus-4.6",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 210294
},
"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": "claude-opus-4-6-eff-high--cli--kiro--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-18T14:41:14.584954+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T14:40:21.591590+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-18T14:42:16.388658+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T14:41:18.212693+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-18T14:43:06.918118+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T14:42:21.144069+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-18T14:44:03.934452+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-18T14:43:10.469337+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
}
}
}