claude-opus-4-7 @ medium · cursor-xl
cursor-xlmedium
- config
- claude-opus-4-7-eff-medium--cli--cursor-xl--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- claude-opus-4-7-medium
- 采集于
- 2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
claude-opus-4-7-thinking @high · cursor0.74claude-opus-4-7 @high · cursor0.73claude-opus-4-7 @medium · kiro0.73claude-opus-4-7-thinking @low · cursor0.73claude-opus-4-7-thinking @high · cursor-xl0.72最远
north-mini-code-free · api0.50claude-sonnet-4 · cursor0.53qwen3.5-plus · go0.53deepseek-v4-pro @high · api0.53minimax-m2.5 · go0.53限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmismatch展示值:13.405
- min tempmismatch展示值:52.52
- 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</title>
<style>
:root {
--bg-0: #0b1020;
--bg-1: #131a35;
--ink: #eef2ff;
--ink-dim: #9aa4c7;
--ink-soft: #c7cee6;
--line: rgba(255,255,255,0.08);
--card: rgba(255,255,255,0.045);
--card-strong: rgba(255,255,255,0.08);
--accent: #ffd166;
--cool: #7cc4ff;
--warm: #ff8f6b;
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
width: 1280px;
min-height: 800px;
font-family: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
color: var(--ink);
background:
radial-gradient(1200px 700px at 85% -10%, rgba(255,209,102,0.10), transparent 60%),
radial-gradient(900px 700px at -10% 110%, rgba(124,196,255,0.12), transparent 60%),
linear-gradient(160deg, #0a0f24 0%, #0d1430 40%, #121a3b 100%);
-webkit-font-smoothing: antialiased;
letter-spacing: -0.005em;
}
.stage {
width: 1280px;
height: 800px;
padding: 56px 64px;
display: flex;
flex-direction: column;
gap: 28px;
}
header.top {
display: flex;
align-items: flex-end;
justify-content: space-between;
}
.brand {
display: flex;
align-items: center;
gap: 12px;
color: var(--ink-dim);
font-size: 13px;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.brand .dot {
width: 8px; height: 8px; border-radius: 50%;
background: var(--accent);
box-shadow: 0 0 12px rgba(255,209,102,0.7);
}
.meta {
text-align: right;
color: var(--ink-dim);
font-size: 13px;
letter-spacing: 0.06em;
}
.meta .coords { font-variant-numeric: tabular-nums; }
.card {
flex: 1;
display: grid;
grid-template-columns: 1.05fr 1.35fr;
gap: 40px;
padding: 40px;
border-radius: 28px;
background:
linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02));
border: 1px solid var(--line);
box-shadow:
0 30px 80px rgba(0,0,0,0.45),
inset 0 1px 0 rgba(255,255,255,0.06);
backdrop-filter: blur(20px);
position: relative;
overflow: hidden;
}
.card::before {
content: "";
position: absolute; inset: 0;
background: radial-gradient(600px 300px at 90% 0%, rgba(255,209,102,0.08), transparent 60%);
pointer-events: none;
}
.left { display: flex; flex-direction: column; gap: 24px; position: relative; z-index: 1; }
.place {
font-size: 14px;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--ink-dim);
}
h1.name {
margin: 4px 0 0 0;
font-size: 56px;
line-height: 1.02;
font-weight: 600;
letter-spacing: -0.02em;
}
.date {
margin-top: 6px;
font-size: 17px;
color: var(--ink-soft);
}
.hero {
display: flex;
align-items: center;
gap: 24px;
margin-top: 8px;
}
.icon-wrap {
width: 132px; height: 132px;
display: grid; place-items: center;
border-radius: 28px;
background: linear-gradient(160deg, rgba(255,255,255,0.10), rgba(255,255,255,0.02));
border: 1px solid var(--line);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.08);
}
.icon-wrap svg { width: 96px; height: 96px; display: block; }
.temps { display: flex; flex-direction: column; gap: 6px; }
.big-temp {
font-size: 96px;
line-height: 0.95;
font-weight: 500;
letter-spacing: -0.045em;
font-variant-numeric: tabular-nums;
}
.big-temp .deg { font-size: 44px; color: var(--ink-dim); font-weight: 400; margin-left: 4px; vertical-align: super; }
.condition {
font-size: 20px;
color: var(--ink-soft);
}
.stats {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
margin-top: auto;
}
.stat {
padding: 18px 20px;
border-radius: 18px;
background: var(--card);
border: 1px solid var(--line);
}
.stat .k {
font-size: 11px;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--ink-dim);
display: flex; align-items: center; gap: 8px;
}
.stat .k .pill {
width: 8px; height: 8px; border-radius: 50%;
}
.stat.max .pill { background: var(--warm); box-shadow: 0 0 8px rgba(255,143,107,0.7); }
.stat.min .pill { background: var(--cool); box-shadow: 0 0 8px rgba(124,196,255,0.7); }
.stat .v {
margin-top: 8px;
font-size: 36px;
font-weight: 500;
letter-spacing: -0.02em;
font-variant-numeric: tabular-nums;
}
.stat .v .deg { color: var(--ink-dim); font-weight: 400; font-size: 22px; margin-left: 2px; }
.right { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.right-head {
display: flex; align-items: baseline; justify-content: space-between;
}
.right-title {
font-size: 14px;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--ink-dim);
}
.range {
color: var(--ink-soft);
font-size: 13px;
font-variant-numeric: tabular-nums;
}
.chart-wrap {
flex: 1;
padding: 20px 8px 8px 8px;
border-radius: 20px;
background: var(--card);
border: 1px solid var(--line);
min-height: 260px;
display: flex; flex-direction: column;
}
.chart-wrap svg { width: 100%; height: 100%; display: block; }
.hours {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 6px;
}
.hour {
padding: 10px 6px;
border-radius: 12px;
background: rgba(255,255,255,0.03);
border: 1px solid var(--line);
text-align: center;
}
.hour .h { font-size: 10px; color: var(--ink-dim); letter-spacing: 0.06em; }
.hour .t { font-size: 13px; margin-top: 4px; font-variant-numeric: tabular-nums; }
.footer {
display: flex; justify-content: space-between; color: var(--ink-dim); font-size: 12px; letter-spacing: 0.08em;
}
.error {
margin: auto;
text-align: center;
padding: 40px;
}
.error .title { font-size: 28px; margin-bottom: 8px; }
.error .msg { color: var(--ink-dim); font-size: 15px; }
.loading { color: var(--ink-dim); font-size: 14px; }
</style>
</head>
<body>
<div class="stage" id="stage">
<div class="loading">Loading…</div>
</div>
<script>
(function () {
const qs = new URLSearchParams(location.search);
const lat = parseFloat(qs.get("lat") ?? "52.52");
const lon = parseFloat(qs.get("lon") ?? "13.405");
const name = qs.get("name") ?? "Berlin";
const todayUTC = new Date().toISOString().slice(0, 10);
const date = qs.get("date") ?? todayUTC;
const isPast = date < todayUTC;
const endpoint = isPast ? "/api/om/archive" : "/api/om/forecast";
const params = 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,
});
const WMO = {
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 w/ slight hail", 99: "Thunderstorm w/ heavy hail",
};
function iconFor(code) {
// Returns inline SVG string
const sun = `
<defs>
<radialGradient id="sg" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#ffe08a"/>
<stop offset="70%" stop-color="#ffb43a"/>
<stop offset="100%" stop-color="#ff8f2e"/>
</radialGradient>
</defs>
<g stroke="#ffd166" stroke-width="3" stroke-linecap="round">
<line x1="48" y1="6" x2="48" y2="18"/>
<line x1="48" y1="78" x2="48" y2="90"/>
<line x1="6" y1="48" x2="18" y2="48"/>
<line x1="78" y1="48" x2="90" y2="48"/>
<line x1="17" y1="17" x2="26" y2="26"/>
<line x1="70" y1="70" x2="79" y2="79"/>
<line x1="17" y1="79" x2="26" y2="70"/>
<line x1="70" y1="26" x2="79" y2="17"/>
</g>
<circle cx="48" cy="48" r="20" fill="url(#sg)"/>`;
const cloud = (fill = "#e6ecff", stroke = "#c9d3f7") => `
<g>
<path d="M24 62 Q10 62 12 48 Q14 36 28 36 Q30 24 44 24 Q60 24 62 38 Q78 38 78 52 Q78 66 62 66 L26 66 Z"
fill="${fill}" stroke="${stroke}" stroke-width="2"/>
</g>`;
const sunSmall = `
<g>
<circle cx="34" cy="34" r="14" fill="#ffd166"/>
<g stroke="#ffd166" stroke-width="2.5" stroke-linecap="round">
<line x1="34" y1="10" x2="34" y2="16"/>
<line x1="34" y1="52" x2="34" y2="58"/>
<line x1="10" y1="34" x2="16" y2="34"/>
<line x1="52" y1="34" x2="58" y2="34"/>
<line x1="17" y1="17" x2="21" y2="21"/>
<line x1="47" y1="47" x2="51" y2="51"/>
<line x1="17" y1="51" x2="21" y2="47"/>
<line x1="47" y1="21" x2="51" y2="17"/>
</g>
</g>`;
const rain = `
<g fill="#7cc4ff">
<path d="M30 74 l-4 8" stroke="#7cc4ff" stroke-width="3" stroke-linecap="round"/>
<path d="M46 74 l-4 10" stroke="#7cc4ff" stroke-width="3" stroke-linecap="round"/>
<path d="M62 74 l-4 8" stroke="#7cc4ff" stroke-width="3" stroke-linecap="round"/>
</g>`;
const snow = `
<g stroke="#dbe7ff" stroke-width="2.5" stroke-linecap="round">
<g transform="translate(30,80)"><line x1="-4" y1="0" x2="4" y2="0"/><line x1="0" y1="-4" x2="0" y2="4"/></g>
<g transform="translate(48,84)"><line x1="-4" y1="0" x2="4" y2="0"/><line x1="0" y1="-4" x2="0" y2="4"/></g>
<g transform="translate(66,80)"><line x1="-4" y1="0" x2="4" y2="0"/><line x1="0" y1="-4" x2="0" y2="4"/></g>
</g>`;
const bolt = `
<path d="M46 60 L58 60 L48 82 L64 56 L52 56 L60 40 Z" fill="#ffd166" stroke="#ffb020" stroke-width="1.5" stroke-linejoin="round"/>`;
const fog = `
<g stroke="#c9d3f7" stroke-width="4" stroke-linecap="round" opacity="0.85">
<line x1="14" y1="72" x2="82" y2="72"/>
<line x1="20" y1="82" x2="76" y2="82"/>
</g>`;
let svg = `<svg viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">`;
if (code === 0) svg += sun;
else if (code === 1 || code === 2) svg += sunSmall + cloud();
else if (code === 3) svg += cloud();
else if (code === 45 || code === 48) svg += cloud("#dfe6fb", "#b8c3ee") + fog;
else if ((code >= 51 && code <= 57) || (code >= 61 && code <= 67) || (code >= 80 && code <= 82)) svg += cloud() + rain;
else if ((code >= 71 && code <= 77) || code === 85 || code === 86) svg += cloud() + snow;
else if (code >= 95) svg += cloud("#c9d3f7", "#8fa1d8") + bolt;
else svg += cloud();
svg += `</svg>`;
return svg;
}
function fmtDate(iso) {
const d = new Date(iso + "T00:00:00Z");
return d.toLocaleDateString("en-US", {
weekday: "long", year: "numeric", month: "long", day: "numeric", timeZone: "UTC",
});
}
function esc(s) {
return String(s).replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }[c]));
}
function renderError(msg) {
document.getElementById("stage").innerHTML = `
<div class="card">
<div class="error">
<div class="title">Weather unavailable</div>
<div class="msg">${esc(msg)}</div>
</div>
</div>`;
}
function buildChart(hours, temps) {
const W = 720, H = 240, P = { t: 24, r: 24, b: 34, l: 40 };
const iw = W - P.l - P.r;
const ih = H - P.t - P.b;
const n = temps.length;
if (!n) return "";
const min = Math.min(...temps);
const max = Math.max(...temps);
const pad = Math.max(1, (max - min) * 0.15);
const y0 = min - pad, y1 = max + pad;
const x = (i) => P.l + (iw * i) / Math.max(1, n - 1);
const y = (v) => P.t + ih - ((v - y0) / (y1 - y0)) * ih;
// grid
const ticks = 4;
let grid = "";
for (let i = 0; i <= ticks; i++) {
const v = y0 + ((y1 - y0) * i) / ticks;
const yy = y(v);
grid += `<line x1="${P.l}" x2="${W - P.r}" y1="${yy}" y2="${yy}" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>`;
grid += `<text x="${P.l - 8}" y="${yy + 4}" text-anchor="end" fill="#9aa4c7" font-size="10" font-family="inherit">${v.toFixed(0)}°</text>`;
}
// x labels every 3h
let xl = "";
for (let i = 0; i < n; i += 3) {
const label = hours[i].slice(11, 13) + ":00";
xl += `<text x="${x(i)}" y="${H - 10}" text-anchor="middle" fill="#9aa4c7" font-size="10" font-family="inherit">${label}</text>`;
}
// area + line path
let d = "";
for (let i = 0; i < n; i++) d += (i ? " L " : "M ") + x(i).toFixed(1) + " " + y(temps[i]).toFixed(1);
const area = `M ${x(0).toFixed(1)} ${(P.t + ih).toFixed(1)} L ` +
temps.map((v, i) => x(i).toFixed(1) + " " + y(v).toFixed(1)).join(" L ") +
` L ${x(n - 1).toFixed(1)} ${(P.t + ih).toFixed(1)} Z`;
// dots at min/max
const iMax = temps.indexOf(max);
const iMin = temps.indexOf(min);
return `
<svg viewBox="0 0 ${W} ${H}" preserveAspectRatio="none">
<defs>
<linearGradient id="area" x1="0" x2="0" y1="0" y2="1">
<stop offset="0%" stop-color="#ffb86b" stop-opacity="0.55"/>
<stop offset="55%" stop-color="#ff8f6b" stop-opacity="0.18"/>
<stop offset="100%" stop-color="#7cc4ff" stop-opacity="0.02"/>
</linearGradient>
<linearGradient id="line" x1="0" x2="1" y1="0" y2="0">
<stop offset="0%" stop-color="#7cc4ff"/>
<stop offset="50%" stop-color="#ffd166"/>
<stop offset="100%" stop-color="#ff8f6b"/>
</linearGradient>
</defs>
${grid}
<path d="${area}" fill="url(#area)"/>
<path d="${d}" fill="none" stroke="url(#line)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="${x(iMax)}" cy="${y(max)}" r="4" fill="#ff8f6b" stroke="#1a1f3a" stroke-width="2"/>
<text x="${x(iMax)}" y="${y(max) - 10}" text-anchor="middle" fill="#ffd7c2" font-size="11" font-family="inherit">${max.toFixed(1)}°</text>
<circle cx="${x(iMin)}" cy="${y(min)}" r="4" fill="#7cc4ff" stroke="#1a1f3a" stroke-width="2"/>
<text x="${x(iMin)}" y="${y(min) + 16}" text-anchor="middle" fill="#c2ddff" font-size="11" font-family="inherit">${min.toFixed(1)}°</text>
${xl}
</svg>`;
}
function render(data) {
const daily = data.daily || {};
const hourly = data.hourly || {};
const idx = 0;
const tmax = daily.temperature_2m_max?.[idx];
const tmin = daily.temperature_2m_min?.[idx];
const code = daily.weather_code?.[idx];
const times = hourly.time || [];
const temps = hourly.temperature_2m || [];
if (tmax == null || tmin == null || code == null || times.length === 0) {
renderError("The API returned no data for this date.");
return;
}
const condition = WMO[code] ?? "Unknown conditions";
const dayTemp = ((tmax + tmin) / 2);
// Hour strip: pick every 2nd hour (12 items)
const strip = [];
for (let i = 0; i < times.length && strip.length < 12; i += 2) {
strip.push({ h: times[i].slice(11, 16), t: temps[i] });
}
const html = `
<header class="top">
<div class="brand"><span class="dot"></span><span>Weather Report</span></div>
<div class="meta">
<div>${esc(fmtDate(date))}</div>
<div class="coords">${lat.toFixed(3)}°, ${lon.toFixed(3)}° · UTC</div>
</div>
</header>
<div class="card">
<section class="left">
<div>
<div class="place">Location</div>
<h1 class="name">${esc(name)}</h1>
<div class="date">${esc(fmtDate(date))}</div>
</div>
<div class="hero">
<div class="icon-wrap">${iconFor(code)}</div>
<div class="temps">
<div class="big-temp">${dayTemp.toFixed(1)}<span class="deg">°C</span></div>
<div class="condition">${esc(condition)}</div>
</div>
</div>
<div class="stats">
<div class="stat max">
<div class="k"><span class="pill"></span>High</div>
<div class="v">${tmax.toFixed(1)}<span class="deg">°C</span></div>
</div>
<div class="stat min">
<div class="k"><span class="pill"></span>Low</div>
<div class="v">${tmin.toFixed(1)}<span class="deg">°C</span></div>
</div>
</div>
</section>
<section class="right">
<div class="right-head">
<div class="right-title">Hourly Temperature</div>
<div class="range">00:00 – 23:00 UTC</div>
</div>
<div class="chart-wrap">${buildChart(times, temps)}</div>
<div class="hours">
${strip.map((s) => `
<div class="hour">
<div class="h">${esc(s.h)}</div>
<div class="t">${s.t.toFixed(1)}°</div>
</div>`).join("")}
</div>
</section>
</div>
<div class="footer">
<div>Data · Open-Meteo compatible</div>
<div>Rendered for 1280 × 800</div>
</div>
`;
document.getElementById("stage").innerHTML = html;
}
fetch(endpoint + "?" + params.toString(), { headers: { accept: "application/json" } })
.then((r) => {
if (!r.ok) throw new Error("HTTP " + r.status);
return r.json();
})
.then((data) => {
if (data && data.error) throw new Error(data.reason || "API error");
render(data);
})
.catch((err) => {
renderError("Could not load weather data. " + (err && err.message ? err.message : ""));
});
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 18,329 | html / css / js | 293 / 6,017 / 12,019 |
|---|---|---|---|
| dom 节点 | 10 | dom 深度 | 4 |
| css 规则 | 46 | 含 js | 是 |
| brightness | 38.0 | contrast | 23.0 |
| colorfulness | 19.3 | 留白 | 64.2% |
该 slot 的 telemetry
| prompt tokens | 13 | completion tokens | 9,038 |
|---|---|---|---|
| total tokens | 9,051 | wall | 96 s |
| cost | — | request id | — |
config.json589 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-opus-4-7-eff-medium--cli--cursor-xl--dev",
"effort": "medium",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-opus-4-7",
"protocol": "cli",
"served_model": "claude-opus-4-7-medium",
"telemetry": {
"completion_tokens": 28130,
"cost_usd": null,
"prompt_tokens": 46,
"total_tokens": 28176,
"wall_ms": 299501
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-xl-s2",
"config_id": "claude-opus-4-7-eff-medium--cli--cursor-xl--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T14:51:54.940536+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T14:50:18.967032+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-13T14:52:47.297973+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T14:51:58.291233+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-13T14:53:42.193048+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T14:52:50.840504+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-13T14:55:28.878715+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T14:53:45.701887+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
}
}
}