gpt-5.2-codex @ medium · api

apimedium
config
gpt-5.2-codex-eff-medium--api--official--dev
batch
2026-07-19--unified
transport
openai-official-api
protocol
api · metered
served model
gpt-5.2-codex
captured
Jul 18, 2026, 11:54 AM · N=4
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.2-codex @medium · api 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 tempambiguousno-remaining-candidate
  • min tempmismatchshown: 25.3
  • 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">
<title>Weather Card</title>
<style>
    :root{
        --bg1:#0f2027;
        --bg2:#203a43;
        --bg3:#2c5364;
        --card:#ffffffee;
        --accent:#3b82f6;
        --text:#0f172a;
        --muted:#6b7280;
    }
    html,body{
        margin:0;
        padding:0;
        width:100%;
        height:100%;
        font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
        color:var(--text);
    }
    body{
        background: linear-gradient(135deg,var(--bg1),var(--bg2),var(--bg3));
        display:flex;
        align-items:center;
        justify-content:center;
    }
    .card{
        width:880px;
        max-width:90vw;
        background:var(--card);
        border-radius:28px;
        padding:36px 44px;
        box-shadow:0 25px 60px rgba(0,0,0,0.35);
        backdrop-filter: blur(8px);
    }
    .header{
        display:flex;
        justify-content:space-between;
        align-items:flex-start;
        margin-bottom:18px;
    }
    .title h1{
        font-size:36px;
        margin:0;
        letter-spacing:0.5px;
    }
    .title .date{
        font-size:18px;
        color:var(--muted);
        margin-top:4px;
    }
    .temp{
        text-align:right;
    }
    .temp .max{
        font-size:42px;
        font-weight:700;
        color:var(--accent);
        line-height:1;
    }
    .temp .min{
        font-size:20px;
        color:var(--muted);
        margin-top:4px;
    }
    .condition{
        display:flex;
        align-items:center;
        gap:12px;
        margin:14px 0 24px;
        font-size:20px;
        font-weight:600;
    }
    .condition .icon{
        font-size:34px;
    }
    .hourly{
        margin-top:16px;
    }
    .hourly h3{
        margin:0 0 12px;
        font-size:16px;
        letter-spacing:0.8px;
        text-transform:uppercase;
        color:var(--muted);
    }
    .hours{
        display:flex;
        overflow-x:auto;
        gap:10px;
        padding-bottom:8px;
    }
    .hour{
        flex:0 0 auto;
        background:#f3f4f6;
        border-radius:14px;
        padding:10px 14px;
        text-align:center;
        min-width:72px;
        box-shadow:inset 0 0 0 1px rgba(0,0,0,0.04);
    }
    .hour .t{
        font-size:12px;
        color:var(--muted);
        margin-bottom:4px;
    }
    .hour .v{
        font-size:16px;
        font-weight:600;
    }
    .error{
        text-align:center;
        font-size:20px;
        color:#fee2e2;
        background:rgba(239,68,68,0.2);
        padding:18px;
        border-radius:16px;
    }
</style>
</head>
<body>
<div id="app" class="card">
    <div class="loading">Loading weather...</div>
</div>

<script>
(function(){
    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 todayUTC = new Date().toISOString().slice(0,10);
    const date = params.get('date') || todayUTC;

    function isPast(dateStr){
        return dateStr < todayUTC;
    }

    const endpoint = isPast(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 codeToText(code){
        const map = {
            0: ["Clear sky","☀️"],
            1: ["Mainly clear","🌤️"],
            2: ["Partly cloudy","⛅"],
            3: ["Overcast","☁️"],
            45:["Fog","🌫️"],48:["Depositing rime fog","🌫️"],
            51:["Light drizzle","🌦️"],53:["Moderate drizzle","🌦️"],55:["Dense drizzle","🌧️"],
            56:["Light freezing drizzle","🌧️"],57:["Dense freezing drizzle","🌧️"],
            61:["Slight rain","🌧️"],63:["Moderate rain","🌧️"],65:["Heavy rain","🌧️"],
            66:["Light freezing rain","🌧️"],67:["Heavy freezing rain","🌧️"],
            71:["Slight snow fall","🌨️"],73:["Moderate snow fall","🌨️"],75:["Heavy snow fall","🌨️"],
            77:["Snow grains","🌨️"],
            80:["Slight rain showers","🌦️"],81:["Moderate rain showers","🌧️"],82:["Violent rain showers","⛈️"],
            85:["Slight snow showers","🌨️"],86:["Heavy snow showers","🌨️"],
            95:["Thunderstorm","⛈️"],96:["Thunderstorm with slight hail","⛈️"],99:["Thunderstorm with heavy hail","⛈️"]
        };
        return map[code] || ["Unknown","❓"];
    }

    function render(data){
        const daily = data.daily;
        const hourly = data.hourly;
        if(!daily || !hourly){
            throw new Error("Missing data");
        }
        const max = daily.temperature_2m_max[0];
        const min = daily.temperature_2m_min[0];
        const code = daily.weather_code[0];
        const [cond, icon] = codeToText(code);

        const hours = hourly.time;
        const temps = hourly.temperature_2m;
        const hourCards = hours.map((t, i)=>{
            const hour = t.slice(11,16);
            return `<div class="hour"><div class="t">${hour}</div><div class="v">${temps[i].toFixed(1)}°C</div></div>`;
        }).join("");

        document.getElementById("app").innerHTML = `
            <div class="header">
                <div class="title">
                    <h1>${name}</h1>
                    <div class="date">${date} (UTC)</div>
                </div>
                <div class="temp">
                    <div class="max">${max.toFixed(1)}°C</div>
                    <div class="min">Min ${min.toFixed(1)}°C</div>
                </div>
            </div>
            <div class="condition">
                <div class="icon">${icon}</div>
                <div>${cond}</div>
            </div>
            <div class="hourly">
                <h3>Hourly temperatures</h3>
                <div class="hours">${hourCards}</div>
            </div>
        `;
    }

    fetch(url)
        .then(res => {
            if(!res.ok) throw new Error("Network error");
            return res.json();
        })
        .then(render)
        .catch(()=>{
            document.getElementById("app").innerHTML = `<div class="error">Weather data could not be loaded.</div>`;
        });
})();
</script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total6,549html / css / js241 / 2,506 / 3,802
dom nodes9dom depth4
css rules19js presentyes
brightness107.0contrast86.4
colorfulness24.1whitespace30.4%

This slot's telemetry

prompt tokens312completion tokens2,356
total tokens2,668wall21.3 s
costrequest id
config.json577 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_OPENAI_OFFICIAL_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "gpt-5.2-codex-eff-medium--api--official--dev",
  "effort": "medium",
  "family": "gpt",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "gpt-5.2-codex",
  "protocol": "api",
  "served_model": "gpt-5.2-codex",
  "telemetry": {
    "completion_tokens": 17217,
    "cost_usd": null,
    "prompt_tokens": 2464,
    "total_tokens": 19681,
    "wall_ms": 163334
  },
  "transport": "openai-official-api",
  "vendor_sanction_ref": null
}
send-log4.7 KB
{
  "N": 4,
  "batch_id": "2026-07-18--official-gpt",
  "config_id": "gpt-5.2-codex-eff-medium--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T15:52:08.530025+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:51:47.243792+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-17T15:52:33.452416+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:52:12.205477+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-17T15:52:49.633967+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:52:36.164530+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-17T15:53:14.349642+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:52:52.433120+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T15:53:39.148222+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:53:18.058570+00:00"
        }
      ],
      "block_index": 2,
      "model_reaching_attempt_index": 0,
      "slot_index": 2,
      "terminal_state": "valid",
      "variant": "P-min"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T15:54:03.206073+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:53:41.921250+00:00"
        }
      ],
      "block_index": 2,
      "model_reaching_attempt_index": 0,
      "slot_index": 2,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T15:54:28.107810+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:54:06.491933+00:00"
        }
      ],
      "block_index": 3,
      "model_reaching_attempt_index": 0,
      "slot_index": 3,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T15:54:53.048197+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:54:31.617617+00:00"
        }
      ],
      "block_index": 3,
      "model_reaching_attempt_index": 0,
      "slot_index": 3,
      "terminal_state": "valid",
      "variant": "P-min"
    }
  ],
  "retry_policy": {
    "max_unreachable_retries": 5,
    "rate_limit_backoff": {
      "max_attempts": 4,
      "max_total_ms": 60000
    }
  }
}