You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(admin): align upstream routing readiness with account lifecycle
Derive admin routing availability from identity lifecycle, assignment health, and quota readiness instead of treating quota readiness as the routing signal.
Show lifecycle-specific recovery copy for refresh failures and keep cockpit routing metrics aligned with gateway eligibility.
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/operators/upstreams.mdx
+14-3Lines changed: 14 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -75,7 +75,7 @@ The card body is split into status, token burn, quota windows, and footer metric
75
75
</tr>
76
76
<tr>
77
77
<td>Routing</td>
78
-
<td>Compact route posture such as quota ready or quota exhausted. It summarizes why this account is likely eligible or blocked before request-specific checks.</td>
78
+
<td>Compact lifecycle-aware runtime routing readiness summary. It separates identity lifecycle, Pool assignment, credential freshness, and quota evidence so operators can see why this account is likely eligible or blocked before request-specific checks.</td>
79
79
</tr>
80
80
<tr>
81
81
<td>Pools</td>
@@ -116,6 +116,10 @@ Common upstream states are:
116
116
<td>Refreshing</td>
117
117
<td>A background refresh is currently updating account evidence or credentials.</td>
118
118
</tr>
119
+
<tr>
120
+
<td>Refresh failed</td>
121
+
<td>`refresh_failed` means credential or auth lifecycle refresh failed. Treat it as identity recovery work first; quota readiness may still be unknown or stale until credentials are relinked or refreshed successfully.</td>
122
+
</tr>
119
123
<tr>
120
124
<td>Reauth required</td>
121
125
<td>The account needs operator recovery before it can route work again. Relink with OpenAI OAuth, import replacement credentials, or reinvite the account when those actions are available.</td>
@@ -176,6 +180,13 @@ authorization must be enabled for Codex on the OpenAI account or workspace. If
176
180
device authorization is unavailable or denied, use the browser workflow or ask
177
181
the workspace admin to enable Codex device-code login.
178
182
183
+
Immediately after a successful link, the new account is not guaranteed to route
184
+
traffic. Codex Pooler creates the initial Pool assignment and enqueues account
185
+
reconciliation to prime quota evidence. That quota refresh can require a token
186
+
refresh first. If token refresh fails, the account can move to `refresh_failed`
187
+
before any user request is routed, and runtime routing excludes it until token
188
+
refresh succeeds or the credentials are relinked.
189
+
179
190
Operators should never paste callback URLs, authorization codes, tokens, cookies,
180
191
raw auth.json, OpenAI provider payloads, or local credential files into docs,
181
192
tickets, logs, or evidence. The admin UI may show the one-time authorization URL
@@ -325,8 +336,8 @@ When an upstream is not routing as expected, check it in this order:
325
336
1. confirm the upstream state is `active`
326
337
2. confirm it is assigned to the Pool used by the client API key
327
338
3. confirm the Pool itself is active
328
-
4. inspect the routing footer for quota ready or quota exhausted posture
329
-
5. inspect quota bars for exhausted account-level or model-specific windows
339
+
4. inspect the routing footer for lifecycle-aware runtime routing readiness across identity state, Pool assignment, credential freshness, quota signals, and request posture
340
+
5. inspect quota bars for exhausted account-level or model-specific windows; quota readiness is only one input to routing readiness
330
341
6. confirm token freshness and quota freshness are recent enough to trust
331
342
7. open the upstream cockpit when the card shows degraded, stale, or recovery states
332
343
8. use Request logs filtered by Pool or upstream metadata to confirm whether traffic selected this account
0 commit comments