From 85fc6838aa9842044a75c77d6c46e279e2945860 Mon Sep 17 00:00:00 2001 From: aimock-drift-bot Date: Fri, 24 Jul 2026 07:04:25 +0000 Subject: [PATCH 1/2] fix(drift-sync): mechanical model-family sync (needs-human note file(s)) --- .../gemini-gemini-1.5-flash-deprecated-referenced.md | 7 +++++++ .../gemini-gemini-1.5-pro-deprecated-referenced.md | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 drift-proposals/gemini-gemini-1.5-flash-deprecated-referenced.md create mode 100644 drift-proposals/gemini-gemini-1.5-pro-deprecated-referenced.md diff --git a/drift-proposals/gemini-gemini-1.5-flash-deprecated-referenced.md b/drift-proposals/gemini-gemini-1.5-flash-deprecated-referenced.md new file mode 100644 index 00000000..257880e7 --- /dev/null +++ b/drift-proposals/gemini-gemini-1.5-flash-deprecated-referenced.md @@ -0,0 +1,7 @@ +# Deprecated-but-still-referenced model family: gemini-1.5-flash + +Provider: gemini +Detected: 2026-07-24 +Status: NEEDS HUMAN REVIEW + +This family no longer appears in the live /models listing, but aimock's own source still references it (builders, DEFAULT_MODELS, or fixtures). drift-sync never silently removes a still-referenced family. diff --git a/drift-proposals/gemini-gemini-1.5-pro-deprecated-referenced.md b/drift-proposals/gemini-gemini-1.5-pro-deprecated-referenced.md new file mode 100644 index 00000000..234fb984 --- /dev/null +++ b/drift-proposals/gemini-gemini-1.5-pro-deprecated-referenced.md @@ -0,0 +1,7 @@ +# Deprecated-but-still-referenced model family: gemini-1.5-pro + +Provider: gemini +Detected: 2026-07-24 +Status: NEEDS HUMAN REVIEW + +This family no longer appears in the live /models listing, but aimock's own source still references it (builders, DEFAULT_MODELS, or fixtures). drift-sync never silently removes a still-referenced family. From a3dc2500c123b757e06bb225f8ebd781668e8c83 Mon Sep 17 00:00:00 2001 From: Jordan Ritter Date: Fri, 24 Jul 2026 15:28:45 -0700 Subject: [PATCH 2/2] fix(drift): classify gemini-1.5-pro/flash in excludeFamilies (retired upstream, still mocked) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both families are gone from Gemini's live /models listing but are still legitimately referenced in aimock source, so the deprecation canary kept routing them to needs-human every run (see the two notes under drift-proposals/). The human decision is: keep mocking them. Move them out of includeFamilies.gemini into excludeFamilies.gemini's "Retired / legacy specialty" bucket, the established pattern for a retired-but-still-mocked family (gemini-pro, gpt-3.5, gemini-2.0-flash-exp; prior art in #315). excludeFamilies means "not counted as text-generation drift", not "not mocked" — every fixture, capability test and the isReasoningModel() === false verdict for gemini-1.5-* is untouched. Re-pin the two affected DATA_FROZEN membership hashes accordingly. Side effect: gemini's truncated-listing trust floor drops from 11 to 9 (floor = includeFamilies[provider].size). --- src/__tests__/drift/logic-pin.test.ts | 4 ++-- src/__tests__/drift/model-registry.ts | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/__tests__/drift/logic-pin.test.ts b/src/__tests__/drift/logic-pin.test.ts index 8e31bab9..74c41884 100644 --- a/src/__tests__/drift/logic-pin.test.ts +++ b/src/__tests__/drift/logic-pin.test.ts @@ -204,7 +204,7 @@ const DATA_FROZEN: Record = { }, "includeFamilies.gemini": { members: [...includeFamilies.gemini].sort(), - pin: "4a9428b64ffcff0fbb79878d88ed993ffac53e43d64e26bcf5d86509626f593d", + pin: "c2e2c56b8f8d5fc56152b4633e7d3782e95b7eeb9bc123da71f00e884a54a743", }, "excludeFamilies.openai": { members: [...excludeFamilies.openai].sort(), @@ -216,7 +216,7 @@ const DATA_FROZEN: Record = { }, "excludeFamilies.gemini": { members: [...excludeFamilies.gemini].sort(), - pin: "e3545138234ad782937f66760bef942fca7d4bd0934a87da30bf6e5816ba69b1", + pin: "c95dedab7588212bbba0bf9ab6434bfd43a449adbe7b35f81f48271ee849a9c2", }, }; diff --git a/src/__tests__/drift/model-registry.ts b/src/__tests__/drift/model-registry.ts index 5857a50c..b851336a 100644 --- a/src/__tests__/drift/model-registry.ts +++ b/src/__tests__/drift/model-registry.ts @@ -135,9 +135,7 @@ export const includeFamilies: Record> = { "claude-fable-5", ]), gemini: familySet("gemini", [ - // Gemini 1.5 / 2.0 / 2.5 text families - "gemini-1.5-pro", - "gemini-1.5-flash", + // Gemini 2.0 / 2.5 text families "gemini-2.0-flash", "gemini-2.5-flash", "gemini-2.5-pro", @@ -226,6 +224,14 @@ export const excludeFamilies: Record> = { // Retired / legacy specialty "gemini-pro", "aqa", + // Gemini 1.5 retired upstream 2026-07 (absent from the live /models listing) + // but aimock still mocks it for clients pinned to older SDKs, and + // `isReasoningModel()` must keep answering false for it (model-utils.ts's + // NONREASONING_FAMILIES). Same treatment as gemini-pro above: still + // referenced + still mocked, just not counted as text-generation drift. + // See drift-proposals/gemini-gemini-1.5-{pro,flash}-deprecated-referenced.md. + "gemini-1.5-pro", + "gemini-1.5-flash", // Embeddings (non-text-generation) "text-embedding-004", "gemini-embedding",