gpt-5-mini · cursor
cursor
- config
- gpt-5-mini--cli--cursor--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- gpt-5-mini
- 采集于
- 2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居本 session 没有 similarity 数据 —— 这个 batch 没有计算 pairs。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempambiguousinsufficient-distinct-temperature-nodes
- min tempambiguousinsufficient-distinct-temperature-nodes
- hourlyambiguouscoverage · 0 命中 · 0 不符 · 24 未展示
- request sidematch0 处违规
extractor fidelity-extractor-v1+Berlin-2026-07-15
源码 —— 原始模型输出,一字节未改
下载 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{
--bg1:#0f1724; --bg2:#071028;
--card:#0b1220; --muted:#9aa7b3; --accent:#63b3ff;
--glass: rgba(255,255,255,0.03);
--soft-shadow: 0 10px 30px rgba(2,6,23,0.6);
--radius:18px;
--glass-border: rgba(255,255,255,0.04);
}
html,body{height:100%;margin:0;font-family:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; background:linear-gradient(180deg,var(--bg1),var(--bg2)); color:#e6eef6;}
.stage{width:1280px;height:800px;margin:28px auto;display:flex;align-items:center;justify-content:center}
.card{
width:1050px; max-width:95%; background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));
border-radius:var(--radius); box-shadow:var(--soft-shadow); padding:28px; display:grid; grid-template-columns:360px 1fr; gap:28px; border:1px solid var(--glass-border);
backdrop-filter: blur(6px) saturate(120%); position:relative; overflow:hidden;
}
.brand {
position:absolute; right:18px; top:18px; font-size:12px; color:var(--muted);
display:flex; gap:8px; align-items:center; opacity:0.9;
}
.left {
display:flex; flex-direction:column; gap:20px; align-items:center; justify-content:flex-start; padding:10px 6px;
}
.place { text-align:center; }
.place h1{margin:0;font-size:22px;letter-spacing:-0.2px}
.place p{margin:6px 0 0;font-size:13px;color:var(--muted)}
.big-temp{
margin-top:6px; display:flex; align-items:center; gap:14px;
}
.icon-wrap{width:92px;height:92px;background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01)); border-radius:16px; display:flex; align-items:center; justify-content:center; box-shadow:inset 0 -6px 18px rgba(0,0,0,0.35);}
.temp-value{font-size:44px;font-weight:600}
.minmax{display:flex; gap:12px; color:var(--muted); font-size:14px; margin-top:8px;}
.condition { margin-top:6px; font-size:15px; color:#d8eefc; opacity:0.95}
.sunline{height:1px;background:linear-gradient(90deg, transparent, rgba(255,255,255,0.03), transparent); width:100%; margin-top:12px; border-radius:2px}
.right { display:flex; flex-direction:column; gap:16px; padding:6px 2px; }
.meta-row{display:flex; align-items:center; justify-content:space-between; gap:12px}
.date { font-weight:600; color:#dff2ff; letter-spacing:0.2px }
.source { font-size:13px; color:var(--muted) }
.chart-card{ background:linear-gradient(180deg, rgba(255,255,255,0.012), rgba(255,255,255,0.01)); border-radius:12px; padding:12px; display:flex; gap:10px; align-items:center; justify-content:flex-start; border:1px solid var(--glass-border);}
.svg-wrap{flex:1; min-width:360px; height:190px; display:flex; align-items:center; justify-content:center; position:relative}
.svg-wrap svg { width:100%; height:100%; overflow:visible; }
.y-labels{width:52px; color:var(--muted); font-size:13px; display:flex; flex-direction:column; justify-content:space-between; align-items:flex-end; padding:6px 0;}
.hour-list{display:flex; gap:8px; overflow:auto; padding:10px 6px 6px; scrollbar-width:none}
.hour-item{min-width:88px;background:var(--glass); border-radius:10px; padding:8px; color:#cfe9ff; font-size:13px; display:flex; flex-direction:column; align-items:center; gap:6px; border:1px solid rgba(255,255,255,0.02);}
.hour-item .hr{font-size:12px;color:var(--muted)}
.hour-item .t{font-weight:600;font-size:16px}
.empty { text-align:center; color:var(--muted); padding:40px 20px; font-size:15px }
.spinner{width:46px;height:46px;border-radius:50%;border:4px solid rgba(255,255,255,0.06); border-top-color:var(--accent); animation:spin 1s linear infinite; margin:22px auto}
@keyframes spin{to{transform:rotate(360deg)}}
.error{background:linear-gradient(180deg, rgba(255,58,58,0.06), rgba(255,58,58,0.02)); color:#ffdede; padding:18px;border-radius:12px;border:1px solid rgba(255,58,58,0.12)}
.footer{margin-top:auto; font-size:12px; color:var(--muted); display:flex; justify-content:space-between; gap:12px}
/* responsive-ish for the fixed canvas */
@media (max-width:1100px){
.card{grid-template-columns:1fr; width:92%}
.left{flex-direction:row; justify-content:space-between}
.svg-wrap{height:170px}
}
</style>
</head>
<body>
<div class="stage">
<div class="card" role="region" aria-label="Weather card">
<div class="brand">Weather • Local API</div>
<section class="left" id="left">
<div class="place">
<h1 id="placeName">—</h1>
<p id="placeCoords">lat — lon —</p>
</div>
<div class="big-temp" id="summary">
<div class="icon-wrap" id="iconWrap" aria-hidden="true">
<!-- svg icon inserted here -->
</div>
<div style="display:flex;flex-direction:column;align-items:flex-start;">
<div class="temp-value" id="mainTemp">—°</div>
<div class="condition" id="conditionLabel">—</div>
<div class="minmax" id="minmax"> <span id="tmax">Max —°</span> <span id="tmin">Min —°</span> </div>
</div>
</div>
<div class="sunline" aria-hidden="true"></div>
<div style="width:100%; text-align:center;">
<div id="loader" class="spinner" style="display:none" role="status" aria-label="loading"></div>
<div id="errorMsg" class="error" style="display:none"></div>
</div>
</section>
<section class="right" id="right">
<div class="meta-row">
<div>
<div class="date" id="dateLabel">—</div>
<div class="source" id="sourceLabel">Data source: /api/om/forecast</div>
</div>
<div style="text-align:right;">
<div style="font-weight:700; color:var(--muted); font-size:13px;">Hourly overview</div>
<div style="color:var(--muted); font-size:12px;">Temperatures (°C) — UTC</div>
</div>
</div>
<div class="chart-card" id="chartCard" aria-hidden="false">
<div class="y-labels" id="yLabels">
<div id="yTop">—°</div>
<div id="yMid">—°</div>
<div id="yBot">—°</div>
</div>
<div class="svg-wrap" id="svgWrap" aria-hidden="false">
<!-- SVG chart inserted here -->
</div>
</div>
<div style="display:flex; flex-direction:column; gap:8px;">
<div style="display:flex; justify-content:space-between; align-items:center;">
<div style="font-weight:700">Hourly temperatures</div>
<div style="color:var(--muted); font-size:13px" id="hoursCount">—</div>
</div>
<div class="hour-list" id="hourList" aria-live="polite">
<!-- hour items -->
</div>
</div>
<div class="footer">
<div id="notice" style="color:var(--muted)">Showing weather for the chosen date</div>
<div id="attribution" style="color:var(--muted)">Open-Meteo compatible</div>
</div>
</section>
</div>
</div>
<script>
(() => {
// Utilities
const qs = new URLSearchParams(location.search);
const toFloat = v => Number.parseFloat(v);
const clamp = (v,min,max)=>Math.min(max,Math.max(min,v));
// Defaults
const defaultLat = 52.52, defaultLon = 13.405, defaultName = 'Berlin';
function utcTodayString(){
const d = new Date();
const y = d.getUTCFullYear(), m = String(d.getUTCMonth()+1).padStart(2,'0'), day = String(d.getUTCDate()).padStart(2,'0');
return `${y}-${m}-${day}`;
}
const lat = qs.get('lat') ?? qs.get('latitude') ?? defaultLat;
const lon = qs.get('lon') ?? qs.get('longitude') ?? defaultLon;
const name = qs.get('name') ?? defaultName;
const dateParam = qs.get('date') ?? utcTodayString();
const requestedDate = (() => { const s = dateParam; if(!/^\d{4}-\d{2}-\d{2}$/.test(s)) return utcTodayString(); return s; })();
// elements
const placeNameEl = document.getElementById('placeName');
const placeCoordsEl = document.getElementById('placeCoords');
const mainTempEl = document.getElementById('mainTemp');
const tmaxEl = document.getElementById('tmax');
const tminEl = document.getElementById('tmin');
const conditionEl = document.getElementById('conditionLabel');
const iconWrap = document.getElementById('iconWrap');
const dateLabel = document.getElementById('dateLabel');
const sourceLabel = document.getElementById('sourceLabel');
const svgWrap = document.getElementById('svgWrap');
const hourList = document.getElementById('hourList');
const hoursCount = document.getElementById('hoursCount');
const yTop = document.getElementById('yTop');
const yMid = document.getElementById('yMid');
const yBot = document.getElementById('yBot');
const loader = document.getElementById('loader');
const errorMsg = document.getElementById('errorMsg');
// Weather code mapping (Open-Meteo)
function weatherMap(code){
// returns {label, iconSvg}
if(code === 0) return {label:'Clear sky', icon:svgSun()};
if(code === 1) return {label:'Mainly clear', icon:svgSunCloud()};
if(code === 2) return {label:'Partly cloudy', icon:svgPartly()};
if(code === 3) return {label:'Overcast', icon:svgCloud()};
if(code === 45 || code === 48) return {label:'Fog', icon:svgFog()};
if([51,53,55].includes(code)) return {label:'Drizzle', icon:svgRain()};
if([61,63,65,66,67].includes(code)) return {label:'Rain', icon:svgRain()};
if([71,73,75,77,85,86].includes(code)) return {label:'Snow', icon:svgSnow()};
if([80,81,82].includes(code)) return {label:'Showers', icon:svgRain()};
if([95,96,99].includes(code)) return {label:'Thunderstorm', icon:svgStorm()};
return {label:'Unknown', icon:svgCloud()};
}
// SVG icon helpers
function svgWrapRaw(inner){
return `<svg viewBox="0 0 64 64" width="72" height="72" fill="none" xmlns="http://www.w3.org/2000/svg">${inner}</svg>`;
}
function svgSun(){
return svgWrapRaw(`<circle cx="32" cy="28" r="10" fill="#FFD166" /><g stroke="#FFD166" stroke-width="2" stroke-linecap="round">${sunRays()}</g>`);
}
function sunRays(){
const rays = [0,45,90,135,180,225,270,315].map(a=>{
const r = Math.PI*a/180;
const x1 = 32 + Math.cos(r)*18, y1 = 28 + Math.sin(r)*18;
const x2 = 32 + Math.cos(r)*26, y2 = 28 + Math.sin(r)*26;
return `<line x1="${x1}" y1="${y1}" x2="${x2}" y2="${y2}" />`;
}).join('');
return rays;
}
function svgCloud(){ return svgWrapRaw(`
<g fill="#E6F3FF" opacity="0.95">
<ellipse cx="40" cy="34" rx="16" ry="10"/>
<ellipse cx="26" cy="34" rx="12" ry="8"/>
</g>`); }
function svgSunCloud(){ return svgWrapRaw(`
<g><circle cx="18" cy="14" r="8" fill="#FFD166" opacity="0.95"/></g>
<g fill="#E6F3FF" opacity="0.95"><ellipse cx="42" cy="36" rx="16" ry="10"/><ellipse cx="28" cy="36" rx="12" ry="8"/></g>`); }
function svgPartly(){ return svgWrapRaw(`
<g><circle cx="18" cy="14" r="6" fill="#FFD166" opacity="0.95"/></g>
<g fill="#D9EEF9" opacity="0.95" transform="translate(8,8)"><ellipse cx="30" cy="22" rx="18" ry="11"/></g>`); }
function svgRain(){ return svgWrapRaw(`
<g fill="#E6F3FF"><ellipse cx="36" cy="28" rx="18" ry="10"/><ellipse cx="22" cy="28" rx="12" ry="8"/></g>
<g fill="#9FD0FF"><path d="M22 40c0 2.8-3 5-3 5s-3-2.2-3-5c0-2.8 2.2-5 3-5s3 2.2 3 5zM32 40c0 2.8-3 5-3 5s-3-2.2-3-5c0-2.8 2.2-5 3-5s3 2.2 3 5zM42 40c0 2.8-3 5-3 5s-3-2.2-3-5c0-2.8 2.2-5 3-5s3 2.2 3 5z"/></g>`); }
function svgSnow(){ return svgWrapRaw(`
<g fill="#E6F3FF"><ellipse cx="36" cy="28" rx="18" ry="10"/><ellipse cx="22" cy="28" rx="12" ry="8"/></g>
<g stroke="#BCE7FF" stroke-width="2" stroke-linecap="round"><line x1="22" y1="40" x2="22" y2="46"/><line x1="19" y1="43" x2="25" y2="43"/></g>`); }
function svgStorm(){ return svgWrapRaw(`
<g fill="#E6F3FF"><ellipse cx="34" cy="28" rx="18" ry="10"/><ellipse cx="20" cy="28" rx="12" ry="8"/></g>
<path d="M30 36 L24 48 L34 44 L30 56" fill="#FFD166" stroke="#FFD166" stroke-linejoin="round"/>`); }
function svgFog(){ return svgWrapRaw(`<g fill="#E6F3FF" opacity="0.85"><ellipse cx="32" cy="30" rx="20" ry="9"/></g><rect x="10" y="38" width="44" height="3" rx="1" fill="#CFE9FF" opacity="0.55"/><rect x="8" y="44" width="46" height="3" rx="1" fill="#CFE9FF" opacity="0.45"/>`); }
// Chart rendering
function drawChart(times, temps){
// times: array of ISO strings, temps: numbers
svgWrap.innerHTML = '';
if(!temps.length) return svgWrap.innerHTML = '<div class="empty">No hourly data</div>';
// compute bounds
const min = Math.min(...temps), max = Math.max(...temps);
const pad = Math.max(1, Math.round((max - min)*0.12));
const top = max + pad, bot = min - pad;
yTop.textContent = `${Math.round(top)}°`;
yMid.textContent = `${Math.round((top+bot)/2)}°`;
yBot.textContent = `${Math.round(bot)}°`;
const w = svgWrap.clientWidth - 8, h = svgWrap.clientHeight - 10;
const leftPad = 10, rightPad = 10, topPad = 10, bottomPad = 18;
const innerW = Math.max(100, w - leftPad - rightPad), innerH = Math.max(60, h - topPad - bottomPad);
// normalize points
const n = temps.length;
const stepX = innerW / Math.max(1, n-1);
const points = temps.map((t,i)=>{
const x = leftPad + (i*stepX);
const y = topPad + ((top - t) / (top - bot)) * innerH;
return {x,y,t,i};
});
// create svg
const svgns = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgns,'svg');
svg.setAttribute('width','100%');
svg.setAttribute('height','100%');
svg.setAttribute('viewBox',`0 0 ${w} ${h}`);
svg.setAttribute('preserveAspectRatio','none');
// defs gradient
const defs = document.createElementNS(svgns,'defs');
defs.innerHTML = `
<linearGradient id="g1" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#63b3ff" stop-opacity="0.18"/>
<stop offset="100%" stop-color="#63b3ff" stop-opacity="0.02"/>
</linearGradient>
<filter id="blurEdge" x="-50%" y="-50%" width="200%" height="200%"><feGaussianBlur in="SourceGraphic" stdDeviation="6"/></filter>
`;
svg.appendChild(defs);
// area path
const areaD = [];
points.forEach((p,i)=>{
areaD.push((i===0?'M':'L') + p.x + ' ' + p.y);
});
const areaPath = document.createElementNS(svgns,'path');
const last = points[points.length-1];
areaPath.setAttribute('d', areaD.join(' ') + ` L ${last.x} ${topPad+innerH} L ${points[0].x} ${topPad+innerH} Z`);
areaPath.setAttribute('fill','url(#g1)');
svg.appendChild(areaPath);
// line path
const line = document.createElementNS(svgns,'path');
line.setAttribute('d', points.map((p,i)=> (i===0?'M':'L') + p.x + ' ' + p.y).join(' '));
line.setAttribute('stroke','#63b3ff');
line.setAttribute('stroke-width','2.4');
line.setAttribute('fill','none');
line.setAttribute('stroke-linejoin','round');
line.setAttribute('stroke-linecap','round');
svg.appendChild(line);
// area soft glow
const glow = document.createElementNS(svgns,'path');
glow.setAttribute('d', line.getAttribute('d'));
glow.setAttribute('stroke','#63b3ff');
glow.setAttribute('stroke-width','10');
glow.setAttribute('stroke-opacity','0.08');
glow.setAttribute('fill','none');
glow.setAttribute('filter','url(#blurEdge)');
svg.appendChild(glow);
// point circles & interactive tooltip
const tooltip = document.createElement('div');
tooltip.style.position='absolute';
tooltip.style.pointerEvents='none';
tooltip.style.background='linear-gradient(180deg,#0b1726,#071122)';
tooltip.style.border='1px solid rgba(255,255,255,0.04)';
tooltip.style.padding='8px 10px';
tooltip.style.borderRadius='8px';
tooltip.style.color='#eaffff';
tooltip.style.fontSize='13px';
tooltip.style.display='none';
tooltip.style.transform='translate(-50%, -120%)';
tooltip.style.whiteSpace='nowrap';
svgWrap.appendChild(tooltip);
points.forEach(p=>{
const c = document.createElementNS(svgns,'circle');
c.setAttribute('cx',p.x);
c.setAttribute('cy',p.y);
c.setAttribute('r',3.6);
c.setAttribute('fill','#eaffff');
c.setAttribute('opacity',0.96);
svg.appendChild(c);
// invisible hit area
const hit = document.createElementNS(svgns,'circle');
hit.setAttribute('cx',p.x);
hit.setAttribute('cy',p.y);
hit.setAttribute('r',12);
hit.setAttribute('fill','transparent');
hit.style.cursor='pointer';
hit.addEventListener('mouseenter', (ev)=>{
const hour = new Date(times[p.i]).toISOString().slice(11,16);
tooltip.innerHTML = `<strong>${Math.round(p.t)}°C</strong> — ${hour} UTC`;
tooltip.style.left = (p.x / w * svgWrap.clientWidth) + 'px';
tooltip.style.top = (p.y / h * svgWrap.clientHeight) + 'px';
tooltip.style.display='block';
});
hit.addEventListener('mouseleave', ()=> tooltip.style.display='none');
svg.appendChild(hit);
});
svgWrap.appendChild(svg);
}
// Fill hour list
function populateHourList(times, temps){
hourList.innerHTML = '';
if(!times.length) { hourList.innerHTML = '<div class="empty">No hourly data for this date.</div>'; hoursCount.textContent = '0 hours'; return; }
hoursCount.textContent = `${times.length} hour${times.length>1?'s':''}`;
times.forEach((t,i)=>{
const dt = new Date(t);
const hh = dt.toISOString().slice(11,16);
const item = document.createElement('div');
item.className = 'hour-item';
item.innerHTML = `<div class="hr">${hh}</div><div class="t">${Math.round(temps[i])}°</div><div style="font-size:12px;color:var(--muted)">${formatTrend(temps,i)}</div>`;
hourList.appendChild(item);
});
}
function formatTrend(temps,i){
if(i===0) return '—';
const d = Math.round(temps[i] - temps[i-1]);
return d>0?`+${d}° vs prev`:`${d}° vs prev`;
}
// Orchestrator
async function load(){
placeNameEl.textContent = name;
placeCoordsEl.textContent = `lat ${parseFloat(lat).toFixed(3)} · lon ${parseFloat(lon).toFixed(3)}`;
dateLabel.textContent = (new Date(requestedDate + 'T00:00:00Z')).toISOString().slice(0,10);
// choose endpoint (archive for past dates)
const todayUTC = utcTodayString();
const useArchive = requestedDate < todayUTC;
const endpoint = useArchive ? '/api/om/archive' : '/api/om/forecast';
sourceLabel.textContent = `Data source: ${endpoint}`;
const params = 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 url = `${endpoint}?${params.toString()}`;
// show loader
loader.style.display = 'block';
errorMsg.style.display = 'none';
try {
const res = await fetch(url, {cache:'no-store'});
if(!res.ok) throw new Error('Network error: ' + res.status + ' ' + res.statusText);
const json = await res.json();
// validate presence
const d = json.daily;
const h = json.hourly;
if(!d || !h) throw new Error('Malformed API response');
// daily arrays should be single element
const tmax = Array.isArray(d.temperature_2m_max)? d.temperature_2m_max[0] : null;
const tmin = Array.isArray(d.temperature_2m_min)? d.temperature_2m_min[0] : null;
const wcode = Array.isArray(d.weather_code)? d.weather_code[0] : null;
// hourly arrays: may include many times; filter those that start with requestedDate
const times = Array.isArray(h.time)? h.time.filter(ts => ts.startsWith(requestedDate)) : [];
const temps = Array.isArray(h.temperature_2m)? h.temperature_2m.filter((_,i)=> String(h.time[i]).startsWith(requestedDate)) : [];
if(tmax==null || tmin==null || wcode==null || !times.length){
// allow partial: if hourly missing but daily exists, still show daily
if(tmax==null || tmin==null){
throw new Error('Incomplete data for this date');
}
}
// Update UI
loader.style.display = 'none';
mainTempEl.textContent = `${Math.round((tmax+tmin)/2)}°`;
tmaxEl.textContent = `Max ${Math.round(tmax)}°`;
tminEl.textContent = `Min ${Math.round(tmin)}°`;
const wc = weatherMap(Number(wcode));
conditionEl.textContent = wc.label;
iconWrap.innerHTML = wc.icon;
// Chart and list
drawChart(times, temps);
populateHourList(times, temps);
errorMsg.style.display = 'none';
} catch(err){
loader.style.display = 'none';
errorMsg.style.display = 'block';
errorMsg.textContent = 'Could not load weather data — ' + (err.message || 'Unknown error');
// clear main visual data
mainTempEl.textContent = '—°';
tmaxEl.textContent = `Max —°`;
tminEl.textContent = `Min —°`;
conditionEl.textContent = '—';
iconWrap.innerHTML = svgCloud();
svgWrap.innerHTML = '<div class="empty">Data unavailable</div>';
hourList.innerHTML = '';
yTop.textContent = '—°';
yMid.textContent = '—°';
yBot.textContent = '—°';
}
}
// Kick off
load();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 21,484 | html / css / js | 2,889 / 4,207 / 14,388 |
|---|---|---|---|
| dom 节点 | 49 | dom 深度 | 9 |
| css 规则 | 37 | 含 js | 是 |
| brightness | 23.9 | contrast | 13.2 |
| colorfulness | 12.7 | 留白 | 96.1% |
该 slot 的 telemetry
| prompt tokens | 16,848 | completion tokens | 7,153 |
|---|---|---|---|
| total tokens | 24,001 | wall | 82.5 s |
| cost | — | request id | — |
config.json549 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5-mini--cli--cursor--dev",
"effort": null,
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5-mini",
"protocol": "cli",
"served_model": "gpt-5-mini",
"telemetry": {
"completion_tokens": 26336,
"cost_usd": null,
"prompt_tokens": 53561,
"total_tokens": 79897,
"wall_ms": 332203
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-s0",
"config_id": "gpt-5-mini--cli--cursor--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T01:31:50.916805+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T01:30:28.424140+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-08-13T01:33:10.001965+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T01:31:53.704267+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-08-13T01:34:22.326514+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T01:33:15.603927+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-08-13T01:36:11.641461+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T01:34:24.949231+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
}
}
}