gpt-5.6-terra @ none · codex-oauth

codex-oauthnone
config
gpt-5.6-terra-eff-none--cli--codex-oauth--dev
batch
2026-07-19--unified
transport
codex-cli-oauth-chatgpt
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
gpt-5.6-terra @none · codex-oauth P-q slot 0 screenshot

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

within 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 12/24 · 12 match · 0 mismatch · 12 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 Card</title>
<style>
  :root {
    --ink: #f8fbff;
    --muted: #b9c8dd;
    --panel: rgba(12, 27, 52, .62);
    --line: rgba(255,255,255,.16);
    --accent: #ffd46a;
  }
  * { box-sizing: border-box; }
  body {
    margin: 0;
    min-width: 1280px;
    min-height: 800px;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--ink);
    background:
      radial-gradient(circle at 78% 14%, rgba(255, 211, 102, .30), transparent 20%),
      radial-gradient(circle at 16% 88%, rgba(55, 175, 255, .24), transparent 28%),
      linear-gradient(135deg, #183c75 0%, #10294f 46%, #08182f 100%);
    overflow: hidden;
  }
  .sky {
    position: fixed; inset: 0; pointer-events: none; opacity: .45;
    background-image: radial-gradient(circle, rgba(255,255,255,.72) 1px, transparent 1.7px);
    background-size: 83px 97px;
    mask-image: linear-gradient(to bottom, black, transparent 85%);
  }
  main {
    width: 1060px;
    margin: 54px auto;
    padding: 38px 42px 32px;
    border: 1px solid var(--line);
    border-radius: 32px;
    background: linear-gradient(145deg, rgba(30, 64, 112, .72), var(--panel));
    box-shadow: 0 28px 80px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.12);
    backdrop-filter: blur(16px);
  }
  header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding-bottom: 30px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    margin: 0 0 8px;
    color: #9fd5ff;
    font-size: 12px;
    letter-spacing: .16em;
    font-weight: 750;
    text-transform: uppercase;
  }
  h1 { margin: 0; font-size: 38px; line-height: 1.1; letter-spacing: -.045em; }
  .date { margin: 8px 0 0; color: var(--muted); font-size: 16px; }
  .unit {
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 999px;
    padding: 9px 15px;
    color: #dbeeff;
    font-weight: 700;
    font-size: 14px;
  }
  .summary {
    display: grid;
    grid-template-columns: 1.1fr .9fr;
    gap: 26px;
    align-items: center;
    padding: 32px 0;
  }
  .condition { display: flex; align-items: center; gap: 22px; }
  .icon {
    width: 112px; height: 112px; flex: 0 0 112px;
    display: grid; place-items: center;
    font-size: 70px;
    border-radius: 30px;
    background: linear-gradient(145deg, rgba(255,211,102,.22), rgba(255,255,255,.04));
    border: 1px solid rgba(255,255,255,.14);
    filter: drop-shadow(0 12px 20px rgba(0,0,0,.18));
  }
  .condition h2 { margin: 0 0 6px; font-size: 28px; letter-spacing: -.03em; }
  .condition p { margin: 0; color: var(--muted); font-size: 15px; }
  .temperatures {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-left: 1px solid var(--line);
  }
  .temp { padding: 8px 0 8px 31px; }
  .temp + .temp { border-left: 1px solid var(--line); margin-left: 22px; }
  .temp small { display: block; color: var(--muted); text-transform: uppercase; letter-spacing: .11em; font-weight: 700; font-size: 11px; }
  .temp strong { display: block; margin-top: 7px; font-size: 45px; letter-spacing: -.06em; line-height: 1; }
  .temp.low strong { color: #a9dcff; }
  .hourly-title { display: flex; align-items: center; justify-content: space-between; margin: 4px 0 16px; }
  .hourly-title h3 { margin: 0; font-size: 16px; letter-spacing: -.01em; }
  .hourly-title span { color: var(--muted); font-size: 13px; }
  .hours {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 9px;
  }
  .hour {
    min-height: 149px;
    padding: 13px 8px 11px;
    text-align: center;
    border-radius: 16px;
    border: 1px solid rgba(255,255,255,.10);
    background: rgba(255,255,255,.055);
  }
  .hour:nth-child(n+7) { background: rgba(4, 15, 35, .26); }
  .hour time { display: block; color: var(--muted); font-size: 11px; font-weight: 700; }
  .bar-space { height: 67px; display: flex; align-items: flex-end; justify-content: center; }
  .bar { width: 8px; border-radius: 99px; background: linear-gradient(to top, #67baff, var(--accent)); box-shadow: 0 0 12px rgba(255,212,106,.24); }
  .hour b { display: block; margin-top: 8px; font-size: 15px; letter-spacing: -.04em; }
  .status {
    min-height: 300px;
    display: grid;
    place-items: center;
    text-align: center;
    color: var(--muted);
    font-size: 17px;
  }
  .error { color: #ffd0ce; }
</style>
</head>
<body>
<div class="sky"></div>
<main>
  <header>
    <div>
      <p class="eyebrow">Daily forecast</p>
      <h1 id="location">Berlin</h1>
      <p class="date" id="date">Loading date…</p>
    </div>
    <div class="unit">°Celsius</div>
  </header>
  <div id="content" class="status">Loading weather data…</div>
</main>
<script>
(() => {
  const params = new URLSearchParams(location.search);
  const validDate = /^\d{4}-\d{2}-\d{2}$/;
  const today = new Date().toISOString().slice(0, 10);
  const lat = Number(params.get("lat") ?? 52.52);
  const lon = Number(params.get("lon") ?? 13.405);
  const name = params.get("name") || "Berlin";
  const date = validDate.test(params.get("date") || "") ? params.get("date") : today;
  const selected = new Date(date + "T00:00:00Z");
  const dateLabel = new Intl.DateTimeFormat("en", { weekday: "long", day: "numeric", month: "long", year: "numeric", timeZone: "UTC" }).format(selected);

  document.getElementById("location").textContent = name;
  document.getElementById("date").textContent = dateLabel;

  const weather = {
    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: ["Heavy freezing drizzle", "🌧️"],
    61: ["Light rain", "🌦️"], 63: ["Rain", "🌧️"], 65: ["Heavy rain", "🌧️"],
    66: ["Freezing rain", "🌧️"], 67: ["Heavy freezing rain", "🌧️"],
    71: ["Light snow", "🌨️"], 73: ["Snowfall", "🌨️"], 75: ["Heavy snowfall", "❄️"],
    77: ["Snow grains", "❄️"], 80: ["Rain showers", "🌦️"], 81: ["Rain showers", "🌧️"],
    82: ["Violent showers", "⛈️"], 85: ["Snow showers", "🌨️"], 86: ["Heavy snow showers", "❄️"],
    95: ["Thunderstorm", "⛈️"], 96: ["Thunderstorm with hail", "⛈️"], 99: ["Severe thunderstorm", "⛈️"]
  };

  const endpoint = date < today ? "/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: date, end_date: date
  });

  fetch(endpoint + "?" + query)
    .then(r => { if (!r.ok) throw new Error("Request failed"); return r.json(); })
    .then(data => {
      const daily = data.daily;
      const hourly = data.hourly;
      if (!daily || !hourly || !Array.isArray(hourly.temperature_2m)) throw new Error("Incomplete weather data");
      const max = Math.round(daily.temperature_2m_max[0]);
      const min = Math.round(daily.temperature_2m_min[0]);
      const [condition, icon] = weather[daily.weather_code[0]] || ["Weather unavailable", "🌡️"];
      const temps = hourly.temperature_2m.filter((_, i) => (hourly.time[i] || "").startsWith(date));
      const samples = Array.from({length: 12}, (_, i) => temps[Math.min(i * 2, temps.length - 1)]);
      const values = samples.filter(Number.isFinite);
      const low = Math.min(...values), high = Math.max(...values), range = Math.max(high - low, 1);
      const hours = samples.map((temp, i) => {
        const h = String(i * 2).padStart(2, "0") + ":00";
        const height = 19 + ((temp - low) / range) * 48;
        return `<div class="hour"><time>${h}</time><div class="bar-space"><i class="bar" style="height:${height}px"></i></div><b>${Math.round(temp)}°</b></div>`;
      }).join("");

      document.getElementById("content").className = "";
      document.getElementById("content").innerHTML = `
        <section class="summary">
          <div class="condition"><div class="icon">${icon}</div><div><h2>${condition}</h2><p>Expected conditions for ${name}</p></div></div>
          <div class="temperatures"><div class="temp"><small>High</small><strong>${max}°</strong></div><div class="temp low"><small>Low</small><strong>${min}°</strong></div></div>
        </section>
        <section><div class="hourly-title"><h3>Hourly temperature</h3><span>UTC · 2-hour intervals</span></div><div class="hours">${hours}</div></section>`;
    })
    .catch(() => {
      document.getElementById("content").className = "status error";
      document.getElementById("content").textContent = "Weather data could not be loaded. Please try again later.";
    });
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total9,018html / css / js541 / 4,320 / 4,157
dom nodes17dom depth6
css rules33js presentyes
brightness46.1contrast20.6
colorfulness30.8whitespace69.0%

This slot's telemetry

prompt tokens0completion tokens8,637
total tokens0wall57.7 s
costrequest id
config.json565 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.6-terra-eff-none--cli--codex-oauth--dev",
  "effort": "none",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.6-terra",
  "protocol": "cli",
  "served_model": "gpt-5.6-terra",
  "telemetry": {
    "completion_tokens": 28230,
    "cost_usd": null,
    "prompt_tokens": null,
    "total_tokens": null,
    "wall_ms": 204381
  },
  "transport": "codex-cli-oauth-chatgpt",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-07-19--codex-oauth-extra",
  "config_id": "gpt-5.6-terra-eff-none--cli--codex-oauth--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-18T22:51:47.954717+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T22:50:50.249607+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-18T22:52:34.444962+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T22:51:52.389181+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-18T22:53:24.657400+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T22:52:37.973391+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-18T22:54:26.224745+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T22:53:28.283362+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
    }
  }
}