From b520e7ac389c33ae756cac240a117bd249c205af Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 21 Feb 2026 15:36:14 +0100 Subject: [PATCH] fix: stabilize docker live model and doctor-switch tests --- scripts/e2e/doctor-install-switch-docker.sh | 6 +++--- src/agents/live-model-filter.test.ts | 14 ++++++++++++++ src/agents/live-model-filter.ts | 5 +++++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/agents/live-model-filter.test.ts diff --git a/scripts/e2e/doctor-install-switch-docker.sh b/scripts/e2e/doctor-install-switch-docker.sh index d5a48c909a2..bb63ab684c8 100755 --- a/scripts/e2e/doctor-install-switch-docker.sh +++ b/scripts/e2e/doctor-install-switch-docker.sh @@ -8,7 +8,7 @@ echo "Building Docker image..." docker build -t "$IMAGE_NAME" -f "$ROOT_DIR/scripts/e2e/Dockerfile" "$ROOT_DIR" echo "Running doctor install switch E2E..." -docker run --rm -t "$IMAGE_NAME" bash -lc ' +docker run --rm -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 "$IMAGE_NAME" bash -lc ' set -euo pipefail # Keep logs focused; the npm global install step can emit noisy deprecation warnings. @@ -146,13 +146,13 @@ LOGINCTL "npm-to-git" \ "$npm_bin daemon install --force" \ "$npm_entry" \ - "node $git_cli doctor --repair --force" \ + "node $git_cli doctor --repair --force --yes" \ "$git_entry" run_flow \ "git-to-npm" \ "node $git_cli daemon install --force" \ "$git_entry" \ - "$npm_bin doctor --repair --force" \ + "$npm_bin doctor --repair --force --yes" \ "$npm_entry" ' diff --git a/src/agents/live-model-filter.test.ts b/src/agents/live-model-filter.test.ts new file mode 100644 index 00000000000..d0b2bca8edb --- /dev/null +++ b/src/agents/live-model-filter.test.ts @@ -0,0 +1,14 @@ +import { describe, expect, it } from "vitest"; +import { isModernModelRef } from "./live-model-filter.js"; + +describe("isModernModelRef", () => { + it("excludes opencode minimax variants from modern selection", () => { + expect(isModernModelRef({ provider: "opencode", id: "minimax-m2.1" })).toBe(false); + expect(isModernModelRef({ provider: "opencode", id: "minimax-m2.5" })).toBe(false); + }); + + it("keeps non-minimax opencode modern models", () => { + expect(isModernModelRef({ provider: "opencode", id: "claude-opus-4-6" })).toBe(true); + expect(isModernModelRef({ provider: "opencode", id: "gemini-3-pro" })).toBe(true); + }); +}); diff --git a/src/agents/live-model-filter.ts b/src/agents/live-model-filter.ts index dbaba0c7df1..48bbc3424c8 100644 --- a/src/agents/live-model-filter.ts +++ b/src/agents/live-model-filter.ts @@ -82,6 +82,11 @@ export function isModernModelRef(ref: ModelRef): boolean { if (provider === "opencode" && id === "alpha-glm-4.7") { return false; } + // Opencode MiniMax variants have been intermittently unstable in live runs; + // prefer the rest of the modern catalog for deterministic smoke coverage. + if (provider === "opencode" && matchesPrefix(id, MINIMAX_PREFIXES)) { + return false; + } if (provider === "openrouter" || provider === "opencode") { return matchesAny(id, [