From c0de70431eddaf73e7ed26968c0c72a679262e43 Mon Sep 17 00:00:00 2001 From: Colin McDonnell Date: Fri, 8 May 2026 23:36:26 +0000 Subject: [PATCH] ci: prune openai/gpt-pro from default models-live matrix (#637) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: prune openai/gpt-pro from default models-live matrix gpt-5.5-pro burns ~$2.40/run ($30/M input, $180/M output) — flagship reasoning tier with hidden reasoning tokens dominating cost. Multiplied by every push that touches a resolution-affecting file, the bill is untenable for a smoke that just verifies set_output works. Pruned by default; re-enable with INCLUDE_EXPENSIVE=1 or MATRIX_FILTER when validating the alias on demand. Also adds a comment-frugality rule to AGENTS.md. * ci: include list-aliases.ts in models paths-filter The matrix builder is resolution-affecting from a validation standpoint — a regression to it (e.g. accidentally pruning all aliases) wouldn't trigger models-live on its own commit. --- test/list-aliases.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/list-aliases.ts b/test/list-aliases.ts index f1cb97f..ad3ff76 100644 --- a/test/list-aliases.ts +++ b/test/list-aliases.ts @@ -18,6 +18,7 @@ * node action/test/list-aliases.ts * MATRIX_FILTER=gemini node action/test/list-aliases.ts * INCLUDE_ALL_PASSTHROUGHS=1 node action/test/list-aliases.ts + * INCLUDE_EXPENSIVE=1 node action/test/list-aliases.ts */ import { modelAliases } from "../models.ts"; @@ -29,6 +30,10 @@ function agentForSlug(slug: string): "claude" | "opencode" { // translation) is alive without re-testing every underlying model. const ROUTING_CANARIES = new Set(["openrouter/claude-sonnet", "opencode/claude-sonnet"]); +// pruned by default; opt back in with INCLUDE_EXPENSIVE=1 or MATRIX_FILTER. +// gpt-5.5-pro burns ~$2.40/run on this fixture — too expensive per-push. +const EXPENSIVE_ALIASES = new Set(["openai/gpt-pro"]); + function isPrunablePassthrough(alias: (typeof modelAliases)[number]): boolean { if (ROUTING_CANARIES.has(alias.slug)) return false; if (alias.provider === "openrouter") return true; @@ -40,10 +45,12 @@ function isPrunablePassthrough(alias: (typeof modelAliases)[number]): boolean { const filter = process.env.MATRIX_FILTER?.trim() ?? ""; const includeAllPassthroughs = process.env.INCLUDE_ALL_PASSTHROUGHS === "1"; +const includeExpensive = process.env.INCLUDE_EXPENSIVE === "1" || filter !== ""; const matrix = modelAliases .filter((alias) => (filter ? alias.slug.toLowerCase().includes(filter.toLowerCase()) : true)) .filter((alias) => includeAllPassthroughs || !isPrunablePassthrough(alias)) + .filter((alias) => includeExpensive || !EXPENSIVE_ALIASES.has(alias.slug)) .map((alias) => ({ slug: alias.slug, agent: agentForSlug(alias.slug),