gpt-5.6-terra @ xhigh · codex-oauth

codex-oauthxhigh
config
gpt-5.6-terra-eff-xhigh--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 @xhigh · 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=1280, initial-scale=1">
  <title>Weather Card</title>
  <style>
    :root {
      color-scheme: dark;
      --ink: #f7f9ff;
      --muted: #aab7d8;
      --line: rgba(211, 226, 255, .16);
      --card: rgba(12, 25, 56, .76);
      --accent: #ffca70;
      --blue: #82c9ff;
    }

    * { box-sizing: border-box; }

    body {
      min-width: 1280px;
      min-height: 800px;
      margin: 0;
      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 12% 8%, rgba(98, 161, 255, .35), transparent 29%),
        radial-gradient(circle at 88% 88%, rgba(70, 100, 214, .36), transparent 32%),
        linear-gradient(132deg, #081126 0%, #142d60 49%, #151a46 100%);
    }

    .orb {
      position: absolute;
      border-radius: 50%;
      pointer-events: none;
      filter: blur(1px);
      opacity: .7;
    }

    .orb.one {
      width: 380px;
      height: 380px;
      top: -175px;
      right: 80px;
      background: radial-gradient(circle at 45% 48%, rgba(255, 220, 125, .8) 0 7%, rgba(255, 207, 102, .25) 8%, transparent 61%);
    }

    .orb.two {
      width: 520px;
      height: 520px;
      bottom: -330px;
      left: -120px;
      background: radial-gradient(circle, rgba(78, 191, 255, .27), transparent 66%);
    }

    main {
      width: 1280px;
      height: 800px;
      display: grid;
      place-items: center;
      position: relative;
    }

    .card {
      width: 1080px;
      min-height: 622px;
      position: relative;
      overflow: hidden;
      padding: 45px 52px 37px;
      border: 1px solid rgba(255, 255, 255, .19);
      border-radius: 30px;
      background: linear-gradient(135deg, rgba(32, 58, 111, .78), rgba(11, 22, 51, .83));
      box-shadow: 0 32px 80px rgba(1, 8, 28, .42), inset 0 1px 0 rgba(255,255,255,.1);
      backdrop-filter: blur(14px);
    }

    .card::before {
      content: "";
      position: absolute;
      width: 550px;
      height: 550px;
      top: -330px;
      right: -120px;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(102, 198, 255, .22), transparent 64%);
      pointer-events: none;
    }

    .topline, .overview, .hourly-heading, .hourly {
      position: relative;
      z-index: 1;
    }

    .topline {
      display: flex;
      align-items: center;
      justify-content: space-between;
      letter-spacing: .11em;
      text-transform: uppercase;
      font-size: 11px;
      font-weight: 700;
      color: var(--muted);
    }

    .live {
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .live i {
      width: 7px;
      height: 7px;
      border-radius: 50%;
      background: #89e7bc;
      box-shadow: 0 0 12px #89e7bc;
    }

    .overview {
      min-height: 293px;
      display: grid;
      grid-template-columns: 1fr 385px;
      align-items: center;
      padding: 12px 0 24px;
    }

    h1 {
      margin: 0 0 10px;
      max-width: 550px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      font-size: 54px;
      line-height: 1.03;
      letter-spacing: -.055em;
      font-weight: 650;
    }

    .date {
      color: var(--muted);
      font-size: 17px;
      letter-spacing: .01em;
    }

    .temperature {
      display: flex;
      align-items: flex-end;
      gap: 19px;
      margin-top: 27px;
    }

    .temperature strong {
      font-size: 112px;
      font-weight: 300;
      line-height: .76;
      letter-spacing: -.09em;
    }

    .temperature strong span {
      font-size: 48px;
      vertical-align: top;
      letter-spacing: -.08em;
    }

    .range {
      display: grid;
      gap: 9px;
      padding-bottom: 1px;
      color: var(--muted);
      font-size: 15px;
    }

    .range b {
      margin-left: 7px;
      color: var(--ink);
      font-size: 17px;
      font-weight: 600;
    }

    .condition-panel {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 20px;
      min-height: 188px;
      padding: 25px;
      border: 1px solid rgba(213, 233, 255, .13);
      border-radius: 23px;
      background: linear-gradient(135deg, rgba(255,255,255,.105), rgba(255,255,255,.035));
    }

    .weather-symbol {
      width: 90px;
      height: 90px;
      flex: none;
      filter: drop-shadow(0 8px 13px rgba(0,0,0,.17));
    }

    .weather-symbol .sun {
      fill: #ffd16e;
    }

    .weather-symbol .cloud {
      fill: #dceeff;
    }

    .weather-symbol .rain {
      stroke: #81c7ff;
      stroke-width: 5;
      stroke-linecap: round;
    }

    .condition-copy {
      min-width: 0;
    }

    .condition-label {
      display: block;
      margin-bottom: 7px;
      color: var(--muted);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: .12em;
      text-transform: uppercase;
    }

    .condition {
      display: block;
      font-size: 25px;
      font-weight: 600;
      letter-spacing: -.035em;
    }

    .hourly-heading {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding-top: 19px;
      margin-bottom: 14px;
      border-top: 1px solid var(--line);
    }

    .hourly-heading h2 {
      margin: 0;
      font-size: 15px;
      font-weight: 650;
      letter-spacing: -.01em;
    }

    .hourly-heading span {
      color: var(--muted);
      font-size: 12px;
    }

    .hourly {
      display: grid;
      grid-template-columns: repeat(12, 1fr);
      gap: 9px;
    }

    .hour {
      min-width: 0;
      padding: 13px 7px 11px;
      text-align: center;
      border: 1px solid transparent;
      border-radius: 14px;
      background: rgba(255,255,255,.045);
    }

    .hour.now {
      border-color: rgba(144, 211, 255, .46);
      background: rgba(108, 190, 255, .14);
    }

    .hour time {
      display: block;
      margin-bottom: 8px;
      color: var(--muted);
      font-size: 11px;
    }

    .hour b {
      font-size: 15px;
      font-weight: 600;
      letter-spacing: -.035em;
    }

    .loading, .error {
      position: absolute;
      inset: 0;
      display: grid;
      place-items: center;
      z-index: 10;
      border-radius: inherit;
      background: rgba(11, 23, 53, .75);
      font-size: 18px;
      backdrop-filter: blur(10px);
    }

    .error {
      display: none;
      padding: 50px;
      text-align: center;
      color: #ffd0cc;
    }

    body.loaded .loading { display: none; }
    body.failed .loading { display: none; }
    body.failed .error { display: grid; }
  </style>
</head>
<body>
  <div class="orb one"></div>
  <div class="orb two"></div>

  <main>
    <section class="card" aria-live="polite">
      <div class="loading">Loading weather…</div>
      <div class="error">Weather data could not be loaded. Please try again.</div>

      <header class="topline">
        <span>Daily outlook</span>
        <span class="live"><i></i> Open-Meteo</span>
      </header>

      <div class="overview">
        <div>
          <h1 id="location">Berlin</h1>
          <div class="date" id="date">—</div>
          <div class="temperature">
            <strong id="maximum">—<span>°</span></strong>
            <div class="range">
              <span>High <b id="high">—</b></span>
              <span>Low <b id="low">—</b></span>
            </div>
          </div>
        </div>

        <div class="condition-panel">
          <svg class="weather-symbol" viewBox="0 0 120 120" aria-hidden="true">
            <g class="sun" id="sun-icon">
              <circle cx="46" cy="43" r="19"></circle>
              <g stroke="currentColor" stroke-width="5" stroke-linecap="round" fill="none">
                <path d="M46 11v-7M46 82v-7M14 43H7M85 43h-7M23 20l-5-5M74 70l-5-5M23 66l-5 5M74 16l-5 5"></path>
              </g>
            </g>
            <path class="cloud" d="M30 91h57c13 0 22-8 22-19 0-12-9-20-21-20-4-15-16-24-32-24-17 0-30 11-33 26-13 0-23 9-23 20 0 10 9 17 30 17z"></path>
            <g class="rain" id="rain-icon" opacity="0">
              <path d="M45 99l-3 10M65 99l-3 10M85 99l-3 10"></path>
            </g>
          </svg>
          <div class="condition-copy">
            <span class="condition-label">Conditions</span>
            <span class="condition" id="condition">Loading</span>
          </div>
        </div>
      </div>

      <div class="hourly-heading">
        <h2>Hourly temperatures</h2>
        <span>UTC · Celsius</span>
      </div>
      <div class="hourly" id="hourly"></div>
    </section>
  </main>

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

      const weather = {
        0: ["Clear sky", "clear"],
        1: ["Mainly clear", "clear"],
        2: ["Partly cloudy", "cloud"],
        3: ["Overcast", "cloud"],
        45: ["Foggy", "cloud"],
        48: ["Rime fog", "cloud"],
        51: ["Light drizzle", "rain"],
        53: ["Drizzle", "rain"],
        55: ["Dense drizzle", "rain"],
        56: ["Freezing drizzle", "rain"],
        57: ["Freezing drizzle", "rain"],
        61: ["Slight rain", "rain"],
        63: ["Rain", "rain"],
        65: ["Heavy rain", "rain"],
        66: ["Freezing rain", "rain"],
        67: ["Freezing rain", "rain"],
        71: ["Light snow", "cloud"],
        73: ["Snowfall", "cloud"],
        75: ["Heavy snow", "cloud"],
        77: ["Snow grains", "cloud"],
        80: ["Rain showers", "rain"],
        81: ["Rain showers", "rain"],
        82: ["Heavy showers", "rain"],
        85: ["Snow showers", "cloud"],
        86: ["Heavy snow showers", "cloud"],
        95: ["Thunderstorm", "rain"],
        96: ["Thunderstorm with hail", "rain"],
        99: ["Thunderstorm with hail", "rain"]
      };

      const displayDate = new Date(requestedDate + "T12:00:00Z").toLocaleDateString(undefined, {
        weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
      });

      document.getElementById("location").textContent = name;
      document.getElementById("date").textContent = displayDate;
      document.title = `${name} weather`;

      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: requestedDate,
        end_date: requestedDate
      });

      const endpoint = requestedDate < today ? "/api/om/archive" : "/api/om/forecast";

      function setIcon(kind) {
        const sun = document.getElementById("sun-icon");
        const rain = document.getElementById("rain-icon");
        if (kind === "clear") {
          sun.style.opacity = "1";
          sun.setAttribute("transform", "translate(24,19)");
          rain.style.opacity = "0";
        } else if (kind === "rain") {
          sun.style.opacity = ".45";
          sun.setAttribute("transform", "translate(0,0)");
          rain.style.opacity = "1";
        } else {
          sun.style.opacity = ".55";
          sun.setAttribute("transform", "translate(0,0)");
          rain.style.opacity = "0";
        }
      }

      function formatTemp(value) {
        return `${Math.round(value)}°`;
      }

      function renderHours(times, temps) {
        const slots = [];
        for (let hour = 0; hour < 24; hour += 2) {
          const index = times.findIndex(time => time === `${requestedDate}T${String(hour).padStart(2, "0")}:00`);
          if (index >= 0 && temps[index] !== null) {
            slots.push({ hour, temp: temps[index] });
          }
        }

        const container = document.getElementById("hourly");
        container.innerHTML = slots.map(({ hour, temp }) => `
          <div class="hour${hour === new Date().getUTCHours() && requestedDate === today ? " now" : ""}">
            <time>${String(hour).padStart(2, "0")}:00</time>
            <b>${formatTemp(temp)}</b>
          </div>
        `).join("");
      }

      fetch(`${endpoint}?${query}`)
        .then(response => {
          if (!response.ok) throw new Error("Request failed");
          return response.json();
        })
        .then(data => {
          const daily = data.daily || {};
          const hourly = data.hourly || {};
          const max = daily.temperature_2m_max && daily.temperature_2m_max[0];
          const min = daily.temperature_2m_min && daily.temperature_2m_min[0];
          const code = daily.weather_code && daily.weather_code[0];

          if (max === undefined || min === undefined || !hourly.time || !hourly.temperature_2m) {
            throw new Error("Incomplete weather data");
          }

          const [condition, icon] = weather[code] || ["Variable conditions", "cloud"];
          document.getElementById("maximum").innerHTML = `${Math.round(max)}<span>°</span>`;
          document.getElementById("high").textContent = formatTemp(max);
          document.getElementById("low").textContent = formatTemp(min);
          document.getElementById("condition").textContent = condition;
          setIcon(icon);
          renderHours(hourly.time, hourly.temperature_2m);
          document.body.classList.add("loaded");
        })
        .catch(() => document.body.classList.add("failed"));
    })();
  </script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total13,954html / css / js2,202 / 6,550 / 5,202
dom nodes46dom depth10
css rules42js presentyes
brightness45.6contrast20.4
colorfulness25.2whitespace93.1%

This slot's telemetry

prompt tokens0completion tokens9,952
total tokens0wall79.8 s
costrequest id
config.json567 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "gpt-5.6-terra-eff-xhigh--cli--codex-oauth--dev",
  "effort": "xhigh",
  "family": "gpt",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "gpt-5.6-terra",
  "protocol": "cli",
  "served_model": "gpt-5.6-terra",
  "telemetry": {
    "completion_tokens": 33700,
    "cost_usd": null,
    "prompt_tokens": null,
    "total_tokens": null,
    "wall_ms": 300341
  },
  "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-xhigh--cli--codex-oauth--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T14:00:14.657585+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T13:58:54.843656+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-17T14:01:34.938766+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T14:00:18.977431+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-17T14:02:37.953534+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T14:01:38.985369+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-17T14:04:07.163300+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T14:02:41.557104+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
    }
  }
}