Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
6f724a1
fix(combo): fallback on provider moderation refusal
omar391 Nov 9, 2026
92b7299
fix(combo): harden moderation classification against reflections and …
omar391 Nov 9, 2026
200cdc7
fix(combo): address CodeRabbit review feedback on moderation fallbacks
omar391 Nov 9, 2026
ea19710
fix(combo): address CodeRabbit review feedback on malformed envelopes…
omar391 Nov 9, 2026
f4ae8b9
fix(combo): scope malformed parameter checks and allow explicit moder…
omar391 Nov 9, 2026
c1916f4
fix(combo): prioritize error envelope in truncated responses and rest…
omar391 Nov 9, 2026
d57cd6e
fix(combo): require unquoted verdict evidence for moderation refusals
omar391 Nov 10, 2026
66faad6
Merge upstream/dev into fix/combo-moderation-refusal-fallback
omar391 Nov 10, 2026
9255d6a
Merge upstream/dev into fix/combo-moderation-refusal-fallback
omar391 Nov 10, 2026
c18cff2
Merge remote-tracking branch 'origin/dev' into pr-8428
lidge-jun Nov 11, 2026
0a61dac
fix(combo): never let a moderation verdict outrank a hard refusal
lidge-jun Nov 11, 2026
abbcb4d
fix(combo): keep root verdict codes terminal beside a moderation verdict
lidge-jun Nov 11, 2026
3ae4fc3
fix(combo): read the parsed root verdict when only the nested code is…
lidge-jun Nov 11, 2026
a10e647
fix(combo): judge a moderation hop on the whole body
lidge-jun Nov 11, 2026
3baed00
fix(combo): keep provider cooldown and native-preflight parity for mo…
lidge-jun Nov 11, 2026
9ed7dc5
fix(combo): stop on type-only verdicts and nested quoted echoes besid…
lidge-jun Nov 11, 2026
0201c39
fix(combo): veto a moderation hop on any spelling or classifier verdict
lidge-jun Nov 12, 2026
c36d2b5
fix(combo): close escaped-whitespace spellings and restore 422 modera…
lidge-jun Nov 12, 2026
e18e4c7
fix(combo): keep response_format, subscription and type verdicts term…
lidge-jun Nov 12, 2026
98c670d
refactor(combo): grant a moderation hop on structured evidence only
lidge-jun Nov 12, 2026
6e69414
fix(combo): carry the whole-event moderation verdict past rebuilt pre…
lidge-jun Nov 12, 2026
30583a1
fix(combo): veto safety-system wording and keep a framed native status
lidge-jun Nov 12, 2026
be3c279
fix(combo): keep vetoes and framed statuses through rebuilt preflight…
lidge-jun Nov 12, 2026
4a51df9
fix(combo): read a Responses event discriminator as a carrier, not a …
lidge-jun Nov 12, 2026
ab8ece9
fix(combo): veto stated statuses and safety flags inside the moderati…
lidge-jun Nov 12, 2026
5ca4cac
Merge remote-tracking branch 'upstream/dev' into fix/combo-moderation…
omar391 Nov 12, 2026
8b1d33e
Merge remote-tracking branch 'upstream/dev' into fix/combo-moderation…
omar391 Nov 12, 2026
e8bfa5a
fix(combo): veto provider-state wording and read status-less response…
lidge-jun Nov 12, 2026
4ed0194
Merge remote-tracking branch 'pr/8428-new' into pr-8428
lidge-jun Nov 12, 2026
ee834ae
fix(combo): require moderation prose beside a coded verdict and fold …
lidge-jun Nov 12, 2026
f7fcc51
fix(combo): check prose under any key and read only the error record …
lidge-jun Nov 12, 2026
c2a7c88
fix(combo): read a response.failed carrier without its request echoes…
lidge-jun Nov 12, 2026
8826e2c
fix(combo): check params on every record, array prose, mixed clauses …
lidge-jun Nov 12, 2026
f6210ff
fix(combo): admit only the known shape of a moderation refusal
lidge-jun Nov 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs-site/src/content/docs/guides/combos.md
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,7 @@ provider, see [Fallback off](/guides/fallback-off/).
| HTTP 410 with an explicit model end-of-life, retired, deprecated, sunset, decommissioned, or no-longer-available signal | Cool that target and hop. Unrelated 410 responses remain terminal. |
| Classified authentication, subscription, quota, rate-limit, overload, or upstream-server error | Cool the target and hop, even when the status alone is not sufficient. |
| Confirmed context-window overflow before output, including HTTP 400 | Try the next untried eligible target without cooling this target; another model may have a larger window. Exhaustion returns the first confirmed HTTP 400 context-length error; a context refusal sent with another status still advances but is not retained. |
| HTTP 400 or 422 moderation verdict from the provider or a gateway (a structured `moderation_refusal` or `content_filter` code; moderation wording without such a code still stops) | Try the next target without cooling this one; another provider's filter may accept the prompt. A body that also carries a terminal refusal (cyber or bio policy, `invalid_prompt`, `content_policy_violation`, safety-system wording) still stops. |
| Client cancellation (499), `origin_rejected`, cyber-policy refusal, or other invalid request | Stop and return the error; another target would not make the request valid. |
| Exact HTTP 400 saying a model is not supported when using Codex with a ChatGPT account | Try the next declared target before output commitment. The message must be the whole refusal in `detail`, `error.message`, or bare text; competing `detail` and `error` envelopes stay terminal. This does not quarantine the account or cool every model on the provider. |
| Structured HTTP 400 rejecting optional `user`, an unsupported reasoning effort, model-scoped image input, or input media the route cannot read (`unsupported_input_modality`) | For an effort refusal, try the next lower published rung on the same target while the send budget allows; if no rung works, hop before output commitment without cooling if the refusal matches a recognized compatibility shape, otherwise stay terminal. Other listed mismatches hop without cooling; see request-local target compatibility below. |
Expand Down
1 change: 1 addition & 0 deletions docs-site/src/content/docs/ja/guides/combos.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ ocx combo set balanced \
| HTTP 401、403、404、408、429、または任意の 5xx |ターゲットを冷却し、次の適格なターゲットに移動します。 |
|モデルのサポート終了、retired、deprecated、sunset、decommissioned、または利用不可を明示する HTTP 410 |そのターゲットをクールダウンし、次へ進みます。無関係な 410 はターミナル エラーのままです。 |
|機密認証、サブスクリプション、クォータ、レート制限、過負荷、またはアップストリーム サーバー エラー |ステータスだけでは物足りない場合でもターゲットを冷やしてホップさせましょう。 |
| プロバイダーまたはゲートウェイの HTTP 400 / 422 モデレーション判定(構造化された `moderation_refusal` または `content_filter` コード。コードのないモデレーションの文言だけでは停止します) |このターゲットを冷却せずに次のターゲットを試行します。別のプロバイダーのフィルターはプロンプトを受け入れる可能性があります。同じ本文に終了扱いの拒否(サイバーまたはバイオポリシー、`invalid_prompt`、`content_policy_violation`、安全システムの文言)が含まれる場合は停止します。 |
|クライアントのキャンセル (499)、`origin_rejected`、サイバー ポリシーの拒否、またはその他の無効なリクエスト |停止してエラーを返します。別のターゲットではリクエストは有効になりません。 |
| 出力前に確認したコンテキスト超過(HTTP 400 を含む) | クールダウンせず次の未試行の適格な対象へ進み、使い切った場合は最初に確認した HTTP 400 のコンテキストエラーを返します(他のステータスのコンテキスト拒否も次へ進みますが、保持されません)。 |
| ChatGPT アカウントで Codex を使う際に、そのモデルをサポートしないことを示す正確な HTTP 400 の拒否 | 出力を確定する前に、次の設定済みターゲットを試します。拒否文全体が `detail`、`error.message`、または本文そのものにある場合に限ります。`detail` と `error` が競合する応答は終了扱いです。この拒否だけでアカウントを再認証待ちにしたり、プロバイダーの全モデルをクールダウンしたりしません。 |
Expand Down
1 change: 1 addition & 0 deletions docs-site/src/content/docs/ko/guides/combos.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ ocx combo set balanced \
| HTTP 401, 403, 404, 408, 429, 또는 모든 5xx | 대상을 쿨다운으로 보내고 다음 적합한 대상으로 넘어갑니다. |
| 모델 수명 종료, retired, deprecated, sunset, decommissioned, 또는 더 이상 사용할 수 없다는 신호가 명시된 HTTP 410 | 해당 대상만 쿨다운으로 보내고 다음 대상으로 넘어갑니다. 관련 없는 410은 종결 오류로 유지합니다. |
| 인증, 구독, 쿼터, 속도 제한, 과부하, 또는 상위 서버 오류로 분류됨 | 상태 코드만으로는 충분하지 않더라도 대상을 쿨다운으로 보내고 넘어갑니다. |
| 제공자나 게이트웨이의 HTTP 400 또는 422 moderation 판정(구조화된 `moderation_refusal` 또는 `content_filter` 코드. 코드 없이 moderation 문구만 있으면 계속 멈춥니다) | 이 대상을 쿨다운하지 않고 다음 대상을 시도합니다. 다른 제공자의 필터는 프롬프트를 받아들일 수 있습니다. 같은 본문에 종결 거부(cyber 또는 bio 정책, `invalid_prompt`, `content_policy_violation`, 안전 시스템 문구)가 함께 있으면 계속 멈춥니다. |
| 클라이언트 취소(499), `origin_rejected`, cyber-policy refusal, 또는 기타 invalid request | 멈추고 오류를 반환합니다. 다른 대상을 써도 요청이 유효해지지 않기 때문입니다. |
| 출력 전 확인된 컨텍스트 초과 오류(HTTP 400 포함) | 쿨다운 없이 다음 미시도 적격 대상을 시도합니다. 모두 실패하면 처음 확인된 HTTP 400 컨텍스트 오류를 반환합니다(다른 상태 코드의 컨텍스트 거부도 다음 대상으로 넘어가지만 보관되지 않습니다). |
| ChatGPT 계정으로 Codex를 사용할 때 해당 모델을 지원하지 않는다는 정확한 HTTP 400 거부 | 출력이 시작되기 전에 다음 설정 대상으로 넘어갑니다. 거부 문장 전체가 `detail`, `error.message` 또는 일반 텍스트에 있어야 하며, `detail`과 `error`가 충돌하면 중단합니다. 이 사유만으로 계정을 재인증 상태로 바꾸거나 공급자의 모든 모델에 쿨다운을 걸지는 않습니다. |
Expand Down
1 change: 1 addition & 0 deletions docs-site/src/content/docs/zh-cn/guides/combos.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ combo 失败分为 **跳转** 失败和 **终止** 失败。
| HTTP 401、403、404、408、429,或任何 5xx | 使该目标进入冷却,并跳转到下一个合格目标。 |
| HTTP 410,并明确表明模型已到生命周期终点、retired、deprecated、sunset、decommissioned 或不再可用 | 仅冷却该目标并继续跳转。无关的 410 仍然是终止错误。 |
| 被分类为认证、订阅、配额、速率限制、过载或上游服务器错误 | 即使仅凭状态码不足以判断,也会使该目标进入冷却并跳转。 |
| 提供方或网关的 HTTP 400 或 422 审核判定(结构化的 `moderation_refusal` 或 `content_filter` 代码;只有审核文字而没有该代码时仍会停止) | 不冷却该目标,尝试下一个目标;其他提供方的过滤器可能接受该提示。若同一响应体中还带有终止性拒绝(cyber 或 bio 策略、`invalid_prompt`、`content_policy_violation`、安全系统文字),仍会停止。 |
| 客户端取消(499)、`origin_rejected`、cyber-policy 拒绝、或其他无效请求 | 停止并返回错误;换其他目标也无法让请求变得有效。 |
| 输出前确认的上下文超限(包括 HTTP 400) | 不冷却该目标,尝试下一个尚未尝试的合格目标;耗尽后返回第一个确认的 HTTP 400 上下文错误(其他状态码的上下文拒绝也会切换到下一个目标,但不会被保留)。 |
| HTTP 400 明确表示使用 ChatGPT 账户运行 Codex 时不支持该模型 | 在输出提交前尝试下一个已配置目标。完整拒绝句必须位于 `detail`、`error.message` 或纯文本中;同时包含 `detail` 与 `error` 的混合封装仍会终止请求。此原因本身不会将账户标为需要重新登录,也不会让供应商的所有模型进入冷却。 |
Expand Down
Loading
Loading