fix(combo): restore default same-model retry semantics after #10217

#10217 wired config.failoverBeforeRetry into the same-model retry guard in
both the priority/auto and round-robin loops, but DEFAULT_COMBO_CONFIG
defaulted the flag to true — flipping same-model retry off for every combo
that never touched the setting, not just the opt-in case. Round-4 bisect
(06f41cda63 vs d2fd88dfbc) reproduced this against
tests/unit/combo-499-abort.test.ts, tests/unit/combo-quota-exhaustion-only-fallback.test.ts
and tests/unit/combo-stream-readiness-fallback.test.ts. Flip the default to
false so the historical retry-before-failover behavior returns for combos
that never set the flag, while explicit opt-in (the two new tests #10217
added to combo-routing-engine.test.ts) still works.
This commit is contained in:
diegosouzapw
2026-08-13 13:23:33 -03:00
committed by Xiangzhe
parent edb3741b50
commit 652efb552a

View File

@@ -126,7 +126,12 @@ const DEFAULT_COMBO_CONFIG = {
resetAwareWeeklyWeight: 0.65,
resetAwareTieBandPercent: 5,
resetAwareExhaustionGuardPercent: 10,
failoverBeforeRetry: true,
// Opt-in (#2417/#10217): when unset, transient errors retry the same model
// up to maxRetries before falling over to the next target — the historical
// default. Defaulting this to true silently flipped that behavior for every
// combo that never touched the setting, breaking same-model retry semantics
// (round 4 base-red bisect: 06f41cda63 vs d2fd88dfbc).
failoverBeforeRetry: false,
// Feature 4985: configurable response-body validation predicate (per-combo). When set,
// a 200 OK whose body fails the predicate fails over to the next target.
responseValidation: undefined as ResponseValidationConfig | undefined,