mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
a32e81c8e8
* fix(model-fallback): treat empty non-GPT completions as failed candidates (#120132) Empty and whitespace-only completions from non-GPT models were counted as candidate_succeeded, silently dropping the turn on visible channels. Apply the empty/reasoning-only classification to every model; deliberate silent replies and committed outbound deliveries remain successful. * fix(model-fallback): classify mixed reasoning-plus-blank completions as failed (#120148) A completion like [{ isReasoning: true, text: "thinking" }, { text: " " }] carries no user-visible reply: reasoning text is invisible to the shared visibility test (includeReasoningPayloads: false), so counting it as visible made the run look successful and silently ended visible-channel turns. Filter reasoning payloads out of the empty/whitespace predicate so mixed reasoning-plus-blank results classify as empty_result (fallback-worthy), while mixed reasoning-plus-visible-text results stay successful. Regression tests: mixed reasoning+blank -> empty_result; mixed reasoning+visible -> success. * fix(model-fallback): require deliverable assistant results Use one owner-boundary deliverability predicate for fallback classification, preserve intentional terminal outcomes, and add a mock-channel Gateway scenario for mixed reasoning-plus-blank recovery.\n\nCo-authored-by: 李琪0668001400 <li.qi16@xydigit.com> * chore: preserve contributor credit Co-authored-by: 李琪0668001400 <li.qi16@xydigit.com> * test(qa): cover default model fallback scenario Make the mixed reasoning-plus-blank fixture recover through both the catalog default alternate and the explicit proof model. Co-authored-by: 李琪0668001400 <li.qi16@xydigit.com> --------- Co-authored-by: licheer-zte <licheer-zte@users.noreply.github.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>