gpt-5.6-terra @ high · codex-oauth

codex-oauthhigh
config
gpt-5.6-terra-eff-high--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 @high · 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 tempambiguousshown: 17max-equals-min
  • min tempambiguousshown: 17max-equals-min
  • 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">
<title>Weather Card</title>
<style>
  :root {
    color-scheme: dark;
    --ink: #f7f9ff;
    --muted: #b6c1db;
    --soft: #8090b3;
    --line: rgba(255,255,255,.13);
    --panel: rgba(16, 28, 57, .64);
    --accent: #ffd56a;
  }

  * { box-sizing: border-box; }
  body {
    margin: 0;
    min-width: 980px;
    min-height: 800px;
    overflow: hidden;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--ink);
    background:
      radial-gradient(ellipse at 18% 20%, rgba(53, 130, 225, .35), transparent 37%),
      radial-gradient(ellipse at 87% 8%, rgba(126, 72, 200, .32), transparent 34%),
      linear-gradient(135deg, #07142e 0%, #111d4a 48%, #26326d 100%);
  }

  .orb {
    position: fixed;
    border-radius: 50%;
    filter: blur(2px);
    pointer-events: none;
  }
  .orb.one {
    width: 310px; height: 310px; right: 3%; bottom: -105px;
    background: rgba(111, 177, 255, .14);
    box-shadow: 0 0 85px 32px rgba(94, 116, 242, .17);
  }
  .orb.two {
    width: 125px; height: 125px; left: 4%; bottom: 8%;
    background: rgba(255, 213, 106, .09);
    box-shadow: 0 0 65px 20px rgba(255, 213, 106, .09);
  }

  main {
    width: min(1080px, calc(100vw - 96px));
    margin: 0 auto;
    padding-top: 62px;
  }

  .eyebrow {
    margin: 0 0 18px;
    color: #c3d0f0;
    font-size: 12px;
    font-weight: 750;
    letter-spacing: .16em;
    text-transform: uppercase;
  }

  .weather-card {
    position: relative;
    min-height: 614px;
    overflow: hidden;
    padding: 44px 48px 34px;
    border: 1px solid rgba(255,255,255,.17);
    border-radius: 30px;
    background: linear-gradient(125deg, rgba(37, 63, 120, .62), rgba(13, 24, 54, .72));
    box-shadow: 0 30px 80px rgba(0, 0, 20, .35), inset 0 1px 0 rgba(255,255,255,.08);
    backdrop-filter: blur(18px);
  }

  .weather-card::after {
    content: "";
    position: absolute;
    top: -180px; right: -100px;
    width: 440px; height: 440px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 218, 116, .21), rgba(255, 218, 116, 0) 66%);
    pointer-events: none;
  }

  .top, .current, .hours { position: relative; z-index: 1; }
  .top {
    display: flex;
    justify-content: space-between;
    gap: 30px;
    align-items: flex-start;
  }
  .place {
    margin: 0;
    max-width: 650px;
    font-size: 42px;
    line-height: 1.07;
    letter-spacing: -.045em;
    font-weight: 700;
    overflow-wrap: anywhere;
  }
  .date {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 11px 0 0;
    color: var(--muted);
    font-size: 15px;
    font-weight: 550;
  }
  .date::before {
    content: "";
    width: 7px; height: 7px;
    border-radius: 50%;
    background: #86a7ff;
    box-shadow: 0 0 11px #86a7ff;
  }
  .source {
    padding-top: 7px;
    color: rgba(214,225,250,.65);
    font-size: 12px;
    white-space: nowrap;
  }

  .current {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    min-height: 265px;
    padding: 25px 4px 19px;
  }
  .temperature {
    font-size: 139px;
    font-weight: 250;
    line-height: .83;
    letter-spacing: -.095em;
    text-shadow: 0 7px 35px rgba(0,0,0,.14);
  }
  .temperature sup {
    position: relative;
    top: -.78em;
    margin-left: 7px;
    font-size: 34px;
    font-weight: 500;
    letter-spacing: -.03em;
  }
  .condition {
    margin: 20px 0 0 8px;
    color: #e4eaff;
    font-size: 20px;
    font-weight: 560;
  }
  .high-low {
    display: flex;
    gap: 18px;
    margin: 13px 0 0 8px;
    color: var(--muted);
    font-size: 14px;
    font-weight: 600;
  }
  .high-low b { color: var(--ink); font-weight: 700; }

  .weather-icon {
    display: grid;
    place-items: center;
    width: 178px;
    height: 178px;
    margin-right: 23px;
    font-family: Arial, sans-serif;
    font-size: 121px;
    line-height: 1;
    filter: drop-shadow(0 10px 18px rgba(0,0,0,.18));
  }
  .weather-icon.sunny { color: var(--accent); text-shadow: 0 0 34px rgba(255,208,91,.42); }
  .weather-icon.cloudy { color: #e7eeff; text-shadow: 0 0 26px rgba(183,206,255,.26); }
  .weather-icon.rainy { color: #b9d8ff; }
  .weather-icon.snowy { color: #f4fbff; }
  .weather-icon.stormy { color: #ffd56a; }

  .hours {
    border-top: 1px solid var(--line);
    padding-top: 23px;
  }
  .hours-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 15px;
  }
  .hours h2 {
    margin: 0;
    font-size: 13px;
    font-weight: 750;
    letter-spacing: .13em;
    text-transform: uppercase;
  }
  .hours-note { color: var(--soft); font-size: 12px; }
  .hourly-scroll {
    overflow-x: auto;
    padding: 3px 0 8px;
    scrollbar-width: thin;
    scrollbar-color: rgba(180,205,255,.35) transparent;
  }
  .hourly {
    display: grid;
    grid-template-columns: repeat(24, minmax(55px, 1fr));
    gap: 8px;
    min-width: 900px;
  }
  .hour {
    min-height: 106px;
    padding: 12px 7px 9px;
    text-align: center;
    border: 1px solid transparent;
    border-radius: 16px;
    color: var(--muted);
  }
  .hour.now, .hour:hover {
    color: var(--ink);
    border-color: rgba(255,255,255,.14);
    background: rgba(163, 191, 255, .13);
  }
  .hour time {
    display: block;
    font-size: 11px;
    font-weight: 650;
  }
  .hour .dot {
    display: block;
    width: 5px;
    height: 5px;
    margin: 17px auto 12px;
    border-radius: 50%;
    background: #6680bf;
  }
  .hour.now .dot {
    background: var(--accent);
    box-shadow: 0 0 10px var(--accent);
  }
  .hour strong {
    display: block;
    font-size: 16px;
    font-weight: 650;
    letter-spacing: -.03em;
  }

  .loading, .error {
    display: grid;
    place-items: center;
    min-height: 500px;
    color: var(--muted);
    font-size: 17px;
  }
  .error {
    color: #ffd1d1;
    text-align: center;
    padding: 40px;
  }
  .error span {
    display: block;
    margin-top: 9px;
    color: var(--muted);
    font-size: 14px;
  }

  @media (max-width: 1050px) {
    main { width: calc(100vw - 48px); padding-top: 35px; }
    .weather-card { padding: 36px; }
  }
</style>
</head>
<body>
<div class="orb one"></div>
<div class="orb two"></div>
<main>
  <p class="eyebrow">Daily weather</p>
  <section class="weather-card" id="card" aria-live="polite">
    <div class="loading">Loading weather data…</div>
  </section>
</main>

<script>
(() => {
  const params = new URLSearchParams(location.search);
  const today = new Date().toISOString().slice(0, 10);
  const date = /^\d{4}-\d{2}-\d{2}$/.test(params.get("date") || "") ? params.get("date") : today;
  const lat = Number(params.get("lat") ?? 52.52);
  const lon = Number(params.get("lon") ?? 13.405);
  const name = (params.get("name") || "Berlin").trim() || "Berlin";
  const card = document.getElementById("card");

  const conditions = {
    0: ["Clear sky", "☀", "sunny"],
    1: ["Mainly clear", "☀", "sunny"],
    2: ["Partly cloudy", "⛅", "cloudy"],
    3: ["Overcast", "☁", "cloudy"],
    45: ["Fog", "≋", "cloudy"],
    48: ["Rime fog", "≋", "cloudy"],
    51: ["Light drizzle", "☔", "rainy"],
    53: ["Drizzle", "☔", "rainy"],
    55: ["Heavy drizzle", "☔", "rainy"],
    56: ["Freezing drizzle", "☔", "rainy"],
    57: ["Heavy freezing drizzle", "☔", "rainy"],
    61: ["Light rain", "☔", "rainy"],
    63: ["Rain", "☔", "rainy"],
    65: ["Heavy rain", "☔", "rainy"],
    66: ["Freezing rain", "☔", "rainy"],
    67: ["Heavy freezing rain", "☔", "rainy"],
    71: ["Light snow", "❄", "snowy"],
    73: ["Snowfall", "❄", "snowy"],
    75: ["Heavy snowfall", "❄", "snowy"],
    77: ["Snow grains", "❄", "snowy"],
    80: ["Rain showers", "☔", "rainy"],
    81: ["Rain showers", "☔", "rainy"],
    82: ["Violent showers", "☔", "rainy"],
    85: ["Snow showers", "❄", "snowy"],
    86: ["Heavy snow showers", "❄", "snowy"],
    95: ["Thunderstorm", "ϟ", "stormy"],
    96: ["Thunderstorm with hail", "ϟ", "stormy"],
    99: ["Thunderstorm with hail", "ϟ", "stormy"]
  };

  function esc(value) {
    return String(value).replace(/[&<>"']/g, c => ({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[c]));
  }

  function formatDate(value) {
    return new Intl.DateTimeFormat("en", {
      timeZone: "UTC", weekday: "long", month: "long", day: "numeric", year: "numeric"
    }).format(new Date(value + "T12:00:00Z"));
  }

  async function load() {
    if (!Number.isFinite(lat) || !Number.isFinite(lon)) throw new Error("Invalid coordinates.");
    const endpoint = date < today ? "/api/om/archive" : "/api/om/forecast";
    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
    });
    const response = await fetch(endpoint + "?" + query);
    if (!response.ok) throw new Error("The weather service did not return data.");
    const data = await response.json();

    const daily = data.daily || {};
    const max = daily.temperature_2m_max?.[0];
    const min = daily.temperature_2m_min?.[0];
    const code = daily.weather_code?.[0];
    const temps = data.hourly?.temperature_2m;
    const times = data.hourly?.time;

    if (![max, min, code].every(v => v !== undefined && v !== null) || !Array.isArray(temps) || !Array.isArray(times)) {
      throw new Error("Weather data for this date is unavailable.");
    }

    const [condition, icon, iconClass] = conditions[code] || ["Unknown conditions", "◌", "cloudy"];
    const hours = times.map((time, i) => {
      const hour = String(time).slice(11, 13);
      const label = hour === "00" ? "12 AM" : hour === "12" ? "12 PM" : `${Number(hour) % 12} ${Number(hour) < 12 ? "AM" : "PM"}`;
      return `<div class="hour${hour === new Date().toISOString().slice(11,13) && date === today ? " now" : ""}">
        <time>${label}</time><i class="dot"></i><strong>${Math.round(temps[i])}°</strong>
      </div>`;
    }).join("");

    card.innerHTML = `
      <div class="top">
        <div>
          <h1 class="place">${esc(name)}</h1>
          <p class="date">${formatDate(date)}</p>
        </div>
        <span class="source">Temperatures in °C</span>
      </div>
      <div class="current">
        <div>
          <div class="temperature">${Math.round(max)}<sup>°C</sup></div>
          <p class="condition">${condition}</p>
          <div class="high-low"><span>High <b>${Math.round(max)}°</b></span><span>Low <b>${Math.round(min)}°</b></span></div>
        </div>
        <div class="weather-icon ${iconClass}" aria-label="${condition}" role="img">${icon}</div>
      </div>
      <div class="hours">
        <div class="hours-header"><h2>Hourly forecast</h2><span class="hours-note">UTC</span></div>
        <div class="hourly-scroll"><div class="hourly">${hours}</div></div>
      </div>`;
  }

  load().catch(error => {
    card.innerHTML = `<div class="error"><div>Unable to load weather data.<span>${esc(error.message || "Please try again later.")}</span></div></div>`;
  });
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total11,355html / css / js465 / 6,118 / 4,772
dom nodes14dom depth5
css rules46js presentyes
brightness45.0contrast18.9
colorfulness28.7whitespace92.0%

This slot's telemetry

prompt tokens0completion tokens9,621
total tokens0wall73.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-high--cli--codex-oauth--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": 37811,
    "cost_usd": null,
    "prompt_tokens": null,
    "total_tokens": null,
    "wall_ms": 303842
  },
  "transport": "codex-cli-oauth-chatgpt",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-07-17--dev-codex-oauth-gpt-5.6-terra",
  "config_id": "gpt-5.6-terra-eff-high--cli--codex-oauth--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T13:46:10.140914+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T13:44:56.480779+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-17T13:47:58.775435+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T13:46:16.769068+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-17T13:49:08.115321+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T13:48:02.430711+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-17T13:50:13.992385+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T13:49:11.493713+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
    }
  }
}