You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maka.apache.org by wy...@apache.org on 2026/09/22 20:46:26 UTC

(maka) branch feat/runtime-host-rust updated: refactor(models): remove OpenCode Free and anonymous bootstrap

This is an automated email from the ASF dual-hosted git repository.

M4n5ter pushed a commit to branch feat/runtime-host-rust
in repository https://gitbox.apache.org/repos/asf/maka.git


The following commit(s) were added to refs/heads/feat/runtime-host-rust by this push:
     new 1a9b889f6b refactor(models): remove OpenCode Free and anonymous bootstrap
1a9b889f6b is described below

commit 1a9b889f6bc2f8f47b8a68f64163400d2b95f2d7
Author: Wang <m4...@gmail.com>
AuthorDate: Wed Sep 23 04:46:21 2026 +0800

    refactor(models): remove OpenCode Free and anonymous bootstrap
    
    Adapt the relevant provider retirement changes from upstream #5544 without retaining obsolete connection compatibility.
    
    Generated-by: Codex
---
 .../__tests__/app-shell-first-send-cleanup.test.ts |   4 +-
 .../main/__tests__/model-catalog-choices.test.ts   |   2 +-
 .../runtime-host-connections-ipc-main.test.ts      |  29 +-
 .../src/main/runtime-host-connections-ipc-main.ts  |   2 -
 .../src/renderer/onboarding-provider-types.ts      |   1 -
 .../src/renderer/settings/provider-brand-marks.tsx |   1 -
 .../src/renderer/settings/provider-display-copy.ts |   5 -
 .../src/renderer/settings/use-connection-detail.ts |   2 +-
 .../stories/settings/provider-settings.stories.tsx |   2 +-
 crates/config/src/model_catalog.rs                 |  16 +-
 crates/runtime-host/src/execution/provider.rs      |   2 +-
 crates/runtime/src/configuration/providers.rs      |   3 +-
 .../core/src/__tests__/llm-connections.test.ts     |  40 ---
 packages/core/src/__tests__/model-catalog.test.ts  |  20 +-
 .../__tests__/provider-catalog-contract.test.ts    |  37 +-
 packages/core/src/llm-connections.ts               |  24 +-
 packages/core/src/model-catalog.ts                 |  28 +-
 packages/core/src/model-metadata.ts                |  14 +-
 packages/core/src/models-dev-projection.ts         |   1 -
 packages/core/src/provider-registry.ts             |  93 +----
 packages/core/src/runtime-policy.ts                |  16 -
 .../src/__tests__/bootstrap-runtime-policy.test.ts | 258 ++------------
 .../__tests__/execution-model-composition.test.ts  |  11 +-
 .../src/server/bootstrap-runtime-policy.ts         | 147 ++------
 .../src/__tests__/opencode-free-anonymous.test.ts  | 384 ---------------------
 .../src/__tests__/opencode-session-header.test.ts  |  12 +-
 .../src/__tests__/provider-conformance.test.ts     |  30 --
 .../src/__tests__/responses-wire-contract.test.ts  |  12 +-
 packages/runtime/src/opencode-session-header.ts    |   7 +-
 packages/runtime/src/test-connection.ts            |  82 +----
 packages/storage/src/runtime-policy-stores.ts      |   3 -
 .../runtime-policy/connection-catalog-document.ts  |  78 -----
 packages/storage/src/runtime-policy/coordinator.ts |   5 -
 .../model-metadata/models-dev-api.snapshot.json    | 306 +---------------
 scripts/rust/catalog-facts-entry.mjs               |   9 -
 scripts/sync-model-metadata.mjs                    |   1 -
 36 files changed, 123 insertions(+), 1564 deletions(-)

diff --git a/apps/desktop/src/main/__tests__/app-shell-first-send-cleanup.test.ts b/apps/desktop/src/main/__tests__/app-shell-first-send-cleanup.test.ts
index 5c250442bb..2eaa9c38a4 100644
--- a/apps/desktop/src/main/__tests__/app-shell-first-send-cleanup.test.ts
+++ b/apps/desktop/src/main/__tests__/app-shell-first-send-cleanup.test.ts
@@ -208,7 +208,7 @@ describe('composer first-send cleanup', () => {
         ...createActionsDeps(),
         newChatModel: {
           llmConnectionId: 'connection-1',
-          llmConnectionSlug: 'opencode-free',
+          llmConnectionSlug: 'configured-model',
           model: 'mimo-v2.5-free',
         },
       };
@@ -219,7 +219,7 @@ describe('composer first-send cleanup', () => {
 
     assert.equal(
       (createInput as { llmConnectionSlug?: unknown }).llmConnectionSlug,
-      'opencode-free',
+      'configured-model',
     );
     assert.equal((createInput as { model?: unknown }).model, 'mimo-v2.5-free');
     // Ordinary creation carries no permission mode: the Host applies its own
diff --git a/apps/desktop/src/main/__tests__/model-catalog-choices.test.ts b/apps/desktop/src/main/__tests__/model-catalog-choices.test.ts
index 8f2deeba3b..827756db06 100644
--- a/apps/desktop/src/main/__tests__/model-catalog-choices.test.ts
+++ b/apps/desktop/src/main/__tests__/model-catalog-choices.test.ts
@@ -74,7 +74,7 @@ describe('model catalog picker helpers', () => {
           {
             connectionId: 'connection-ready',
             connectionSlug: 'ready-second',
-            providerType: 'opencode-free',
+            providerType: 'opencode-go',
             providerLabel: 'OpenCode Zen',
             model: 'ready-model',
             label: 'Ready',
diff --git a/apps/desktop/src/main/__tests__/runtime-host-connections-ipc-main.test.ts b/apps/desktop/src/main/__tests__/runtime-host-connections-ipc-main.test.ts
index f133f1d8ca..083394ca28 100644
--- a/apps/desktop/src/main/__tests__/runtime-host-connections-ipc-main.test.ts
+++ b/apps/desktop/src/main/__tests__/runtime-host-connections-ipc-main.test.ts
@@ -27,7 +27,6 @@ import { openInteractiveRuntimePolicyStoresForWrite } from '@maka/storage/runtim
 import { resolveConnectionModelCatalog } from '@maka/core/model-catalog';
 import type { UpdateCatalogConnectionInput } from '@maka/core/runtime-policy';
 import { createDesktopConnectionSettingsServices } from '../../renderer/platform/desktop/create-connection-settings-services.js';
-import { defaultEnabledModelIdsWhenOmitted } from '@maka/core/llm-connections';
 import type {
   RuntimeHostConnectionCatalogEntry as ConnectionCatalogEntry,
   RuntimeHostConnectionCatalogSnapshot as ConnectionCatalogSnapshot,
@@ -43,12 +42,7 @@ import {
 } from '../runtime-host-connections-ipc-main.js';
 import { normalizeCreateConnectionInputForIpc } from '../connections-ipc-validation.js';
 
-const OPENCODE_FREE_ENABLED_MODEL_IDS: readonly string[] =
-  defaultEnabledModelIdsWhenOmitted('opencode-free') ?? [];
 
-// `providerType in PROVIDER_REGISTRY` traverses the prototype chain, so an
-// inherited member named a provider the build does not register. The renderer
-// reaches this boundary, and what it admits is persisted.
 test('refuses a prototype member posing as a provider type', () => {
   for (const providerType of ['__proto__', 'toString', 'constructor', 'hasOwnProperty']) {
     assert.throws(
@@ -477,7 +471,7 @@ test('keeps saved custom header values out of the renderer and preserves them by
   ]);
 });
 
-test('preserves the provider default inventory beside the recommended model', async () => {
+test('creates a connection with only the explicitly selected model', async () => {
   const handlers = new Map<string, (...args: unknown[]) => unknown>();
   let createdModels: readonly string[] = [];
   const emptyCatalog: ConnectionCatalogSnapshot = {
@@ -500,11 +494,11 @@ test('preserves the provider default inventory beside the recommended model', as
               defaultTarget: null,
               connections: [
                 {
-                  connectionId: 'connection-free',
+                  connectionId: 'connection-go',
                   revision: 1,
-                  slug: 'opencode-free',
-                  name: 'OpenCode Free',
-                  providerType: 'opencode-free',
+                  slug: 'opencode-go',
+                  name: 'OpenCode Go',
+                  providerType: 'opencode-go',
                   enabled: true,
                   enabledModelIds: createdModels,
                   catalogEntries: [],
@@ -519,7 +513,7 @@ test('preserves the provider default inventory beside the recommended model', as
         createdModels = draft.enabledModelIds;
         return {
           kind: 'committed',
-          connection: { connectionId: 'connection-free', revision: 1 },
+          connection: { connectionId: 'connection-go', revision: 1 },
         };
       },
     } as never,
@@ -527,14 +521,13 @@ test('preserves the provider default inventory beside the recommended model', as
   });
 
   await handlers.get('connections:create')?.({}, {
-    slug: 'opencode-free',
-    name: 'OpenCode Free',
-    providerType: 'opencode-free',
-    defaultModel: 'nemotron-3-ultra-free',
+    slug: 'opencode-go',
+    name: 'OpenCode Go',
+    providerType: 'opencode-go',
+    defaultModel: 'minimax-m3',
   });
 
-  // Snapshot-derived set; assert the contract, not today's ids.
-  assert.deepEqual(createdModels, [...OPENCODE_FREE_ENABLED_MODEL_IDS]);
+  assert.deepEqual(createdModels, ['minimax-m3']);
 });
 
 test('projects the Host default target without inventing a second Connection authority', () => {
diff --git a/apps/desktop/src/main/runtime-host-connections-ipc-main.ts b/apps/desktop/src/main/runtime-host-connections-ipc-main.ts
index 771e65b77f..a9d974f7ec 100644
--- a/apps/desktop/src/main/runtime-host-connections-ipc-main.ts
+++ b/apps/desktop/src/main/runtime-host-connections-ipc-main.ts
@@ -29,7 +29,6 @@ import { buildChatModelChoices } from '@maka/core/chat-model-choice';
 import type { ProjectedLlmConnection } from '@maka/core/llm-connections';
 import {
   connectionEnabledModelIds,
-  defaultEnabledModelIdsWhenOmitted,
   PROVIDER_REGISTRY,
   providerAuthRequiresSecret,
 } from '@maka/core/llm-connections';
@@ -211,7 +210,6 @@ export function registerRuntimeHostConnectionsIpc(
       enabled: true,
       enabledModelIds: connectionEnabledModelIds({
         defaultModel: input.defaultModel,
-        enabledModelIds: defaultEnabledModelIdsWhenOmitted(input.providerType),
       }),
       ...(modelOverrides === undefined ? {} : { modelOverrides }),
       ...(input.requestBodyOverlay === undefined
diff --git a/apps/desktop/src/renderer/onboarding-provider-types.ts b/apps/desktop/src/renderer/onboarding-provider-types.ts
index b669728e36..711974f6c3 100644
--- a/apps/desktop/src/renderer/onboarding-provider-types.ts
+++ b/apps/desktop/src/renderer/onboarding-provider-types.ts
@@ -20,7 +20,6 @@
 import type { ProviderType } from '@maka/core/llm-connections';
 
 export const FIRST_RUN_PROVIDER_TYPES = [
-  'opencode-free',
   'opencode-go',
   'openai',
   'anthropic',
diff --git a/apps/desktop/src/renderer/settings/provider-brand-marks.tsx b/apps/desktop/src/renderer/settings/provider-brand-marks.tsx
index 67e1aa18e8..48ade33679 100644
--- a/apps/desktop/src/renderer/settings/provider-brand-marks.tsx
+++ b/apps/desktop/src/renderer/settings/provider-brand-marks.tsx
@@ -393,7 +393,6 @@ export function ProviderBrandMark({ type }: { type: ProviderType }): ReactElemen
       return <ProviderAssetMask src={vercelBrandMark} />;
     case 'opencode':
     case 'opencode-go':
-    case 'opencode-free':
       return <ProviderAssetMask src={opencodeBrandMark} />;
     case 'anthropic':
     case 'anthropic-compatible':
diff --git a/apps/desktop/src/renderer/settings/provider-display-copy.ts b/apps/desktop/src/renderer/settings/provider-display-copy.ts
index 6730ffdee1..85d1e69f84 100644
--- a/apps/desktop/src/renderer/settings/provider-display-copy.ts
+++ b/apps/desktop/src/renderer/settings/provider-display-copy.ts
@@ -294,11 +294,6 @@ export const PROVIDER_DISPLAY_COPY = {
     'zh-TW': { name: 'OpenCode Go', description: '低價訂閱制的開源編碼模型精選', badge: 'Plan' },
     en: { name: 'OpenCode Go', description: 'Low-cost subscription to curated open coding models.', badge: 'Plan' },
   },
-  'opencode-free': {
-    'zh-CN': { name: 'OpenCode Free', description: '免费匿名 OpenCode Zen 模型,无需密钥,按 IP 限速', badge: 'Free' },
-    'zh-TW': { name: 'OpenCode Free', description: '免費匿名 OpenCode Zen 模型,無需金鑰,按 IP 限速', badge: 'Free' },
-    en: { name: 'OpenCode Free', description: 'Free anonymous OpenCode Zen models — no API key, IP-limited.', badge: 'Free' },
-  },
   commandcode: {
     'zh-CN': { name: 'Command Code', description: '使用 Command Code 套餐额度,连接后自动获取模型。', badge: 'Coding' },
     'zh-TW': { name: 'Command Code', description: '使用 Command Code 方案額度,連線後自動取得模型。', badge: 'Coding' },
diff --git a/apps/desktop/src/renderer/settings/use-connection-detail.ts b/apps/desktop/src/renderer/settings/use-connection-detail.ts
index d40257f0e4..8c57144ffe 100644
--- a/apps/desktop/src/renderer/settings/use-connection-detail.ts
+++ b/apps/desktop/src/renderer/settings/use-connection-detail.ts
@@ -516,7 +516,7 @@ export function useConnectionDetail(props: ConnectionDetailProps) {
       if (!isConnectionDetailCurrent(lifecycle)) return;
       if (result.ok) {
         // The backend probes the enabled models first, then the provider
-        // fallbacks (opencode-free tries each in turn until one answers). When
+        // fallback. When
         // the model that actually answered isn't one the user enabled, a plain
         // "connection succeeded · <model>" reads as if their selection never
         // took — and hides that their chosen model is currently down. Name both
diff --git a/apps/desktop/stories/settings/provider-settings.stories.tsx b/apps/desktop/stories/settings/provider-settings.stories.tsx
index 8586079cc6..57b5f4f289 100644
--- a/apps/desktop/stories/settings/provider-settings.stories.tsx
+++ b/apps/desktop/stories/settings/provider-settings.stories.tsx
@@ -774,7 +774,7 @@ export const EmptyProviders: Story = {
   render: () => <ProviderStory bridge={createBridge({ connections: [] })} />,
   play: async ({ canvasElement }) => {
     await waitFor(() => {
-      expect(canvasElement.querySelector('.providerCatalogRow[data-provider="opencode-free"]')).not.toBeNull();
+      expect(canvasElement.querySelector('.providerCatalogRow[data-provider="openai-codex"]')).not.toBeNull();
     }, { timeout: 5_000 });
     expect(canvasElement.querySelector('[data-maka-contract="provider-catalog"]')).toBeNull();
   },
diff --git a/crates/config/src/model_catalog.rs b/crates/config/src/model_catalog.rs
index a638a5fa32..e7a10eeda7 100644
--- a/crates/config/src/model_catalog.rs
+++ b/crates/config/src/model_catalog.rs
@@ -47,7 +47,6 @@ pub struct ProviderFacts {
     pub runtime_adapter: RuntimeAdapter,
     pub protocol_adapters: BTreeMap<ApiProtocol, RuntimeAdapter>,
     pub retired: bool,
-    pub broken_model_ids: Vec<String>,
     pub supports_model_discovery: bool,
     pub model_discovery: ModelDiscovery,
     pub fallback_models: Vec<String>,
@@ -140,16 +139,8 @@ pub fn resolve(
     let Some(provider) = facts()?.get(&row.provider_type) else {
         return Ok(vec![]);
     };
-    let broken = |id: &str| provider.broken_model_ids.iter().any(|item| item == id);
-    let default = default
-        .map(str::trim)
-        .filter(|id| !id.is_empty() && !broken(id));
-    let mut models: Vec<ModelInfo> = row
-        .models
-        .iter()
-        .filter(|model| !broken(&model.id))
-        .cloned()
-        .collect();
+    let default = default.map(str::trim).filter(|id| !id.is_empty());
+    let mut models = row.models.clone();
     if !provider.supports_model_discovery {
         let mut baseline: Vec<ModelInfo> = provider
             .fallback_models
@@ -191,9 +182,6 @@ pub fn resolve(
         .iter()
         .chain(row.model_overrides.iter().flat_map(|values| values.keys()))
     {
-        if broken(id) {
-            continue;
-        }
         let id = id.trim();
         if !id.is_empty() && seen.insert(id.to_owned()) {
             models.push(ModelInfo::new(id));
diff --git a/crates/runtime-host/src/execution/provider.rs b/crates/runtime-host/src/execution/provider.rs
index f3e4089cfc..156c167eb9 100644
--- a/crates/runtime-host/src/execution/provider.rs
+++ b/crates/runtime-host/src/execution/provider.rs
@@ -117,7 +117,7 @@ pub(super) async fn observe_binding(
         })?;
     let facts = model_catalog::provider_facts(&row.provider_type)
         .map_err(|_| unavailable("Provider facts are unavailable"))?;
-    if facts.retired || facts.broken_model_ids.contains(&target.model) {
+    if facts.retired {
         return Err(unavailable("Provider or model is retired or unavailable"));
     }
     let models = model_catalog::resolve(row, None)
diff --git a/crates/runtime/src/configuration/providers.rs b/crates/runtime/src/configuration/providers.rs
index 1ad89ade1b..e308aa262c 100644
--- a/crates/runtime/src/configuration/providers.rs
+++ b/crates/runtime/src/configuration/providers.rs
@@ -61,7 +61,6 @@ pub fn provider_default_base_url(provider: &str) -> Result<&'static str, String>
         "zenmux" => Ok("https://zenmux.ai/api/v1"),
         "opencode" => Ok("https://opencode.ai/zen/v1"),
         "opencode-go" => Ok("https://opencode.ai/zen/go/v1"),
-        "opencode-free" => Ok("https://opencode.ai/zen/v1"),
         "togetherai" => Ok("https://api.together.ai/v1"),
         "fireworks-ai" => Ok("https://api.fireworks.ai/inference/v1/"),
         "nvidia" => Ok("https://integrate.api.nvidia.com/v1"),
@@ -105,7 +104,7 @@ pub fn provider_auth_kind(provider: &str) -> Result<ProviderAuthKind, String> {
         "xai-oauth" | "github-copilot" | "claude-subscription" | "openai-codex" => {
             ProviderAuthKind::OauthToken
         }
-        "ollama" | "lm-studio" | "opencode-free" => ProviderAuthKind::None,
+        "ollama" | "lm-studio" => ProviderAuthKind::None,
         "localai" => ProviderAuthKind::OptionalApiKey,
         _ => ProviderAuthKind::ApiKey,
     })
diff --git a/packages/core/src/__tests__/llm-connections.test.ts b/packages/core/src/__tests__/llm-connections.test.ts
index 207903aad4..9ac5a8e479 100644
--- a/packages/core/src/__tests__/llm-connections.test.ts
+++ b/packages/core/src/__tests__/llm-connections.test.ts
@@ -26,7 +26,6 @@ import {
 } from '../model-metadata.js';
 import { PROVIDER_REGISTRY, providerFallbackModelIds } from '../provider-registry.js';
 import {
-  authorizeConnectionModel,
   effectiveBaseUrl,
   normalizeConnectionBaseUrl,
   providerAuthRequiresSecret,
@@ -414,42 +413,3 @@ test('provider recognition does not resolve inherited object members', () => {
     );
   }
 });
-
-test('a quarantined model id is vetoed even when enabled and present in the inventory', () => {
-  const connection = {
-    providerType: 'opencode-free' as ProviderType,
-    enabledModelIds: ['nemotron-3-ultra-free', 'muse-spark-1.2-contributor-free'],
-    models: [{ id: 'nemotron-3-ultra-free' }, { id: 'muse-spark-1.2-contributor-free' }],
-  };
-  assert.equal(authorizeConnectionModel(connection, 'muse-spark-1.2-contributor-free'), undefined);
-  assert.deepEqual(authorizeConnectionModel(connection, 'nemotron-3-ultra-free'), {
-    id: 'nemotron-3-ultra-free',
-  });
-});
-
-test('a quarantined stored default is dropped from the picker, not re-added as a missing-default row', () => {
-  // The retired `x-preview-f-free` was picker-visible before the quarantine, so
-  // an upgrade connection can carry it as `defaultModel` and enabled. `models`
-  // and `enabledModelIds` are filtered against `brokenModelIds`, but the raw
-  // `defaultModel` used to pass through unfiltered and `makeMissingDefaultEntry`
-  // re-added it as a selectable `provider_default` row — visible and pickable
-  // while `authorizeConnectionModel` vetoed the same id. The picker and the send
-  // authority must agree: neither offers it, and the live model still renders.
-  const connection = {
-    connectionId: 'connection-opencode-free',
-    slug: 'opencode-free',
-    name: 'OpenCode Free',
-    providerType: 'opencode-free' as ProviderType,
-    enabled: true,
-    defaultModel: 'x-preview-f-free',
-    enabledModelIds: ['x-preview-f-free', 'nemotron-3-ultra-free'],
-    models: [{ id: 'x-preview-f-free' }, { id: 'nemotron-3-ultra-free' }],
-    modelSource: 'fetched' as const,
-    createdAt: 1,
-    updatedAt: 1,
-  };
-  const models = chatModelChoicesFor([connection]).map(({ model }) => model);
-  assert.ok(!models.includes('x-preview-f-free'), 'quarantined default must not be offered');
-  assert.ok(models.includes('nemotron-3-ultra-free'), 'live enabled model still renders');
-  assert.equal(authorizeConnectionModel(connection, 'x-preview-f-free'), undefined);
-});
diff --git a/packages/core/src/__tests__/model-catalog.test.ts b/packages/core/src/__tests__/model-catalog.test.ts
index 2c0887f5b3..0523c2dbeb 100644
--- a/packages/core/src/__tests__/model-catalog.test.ts
+++ b/packages/core/src/__tests__/model-catalog.test.ts
@@ -349,31 +349,31 @@ test('catalog provenance follows the projected model facts marker used in produc
 test('fallback provider catalogs include projected facts-backed models', () => {
   const entries = buildConnectionModelCatalogEntries({
     connection: {
-      slug: 'opencode-free-facts',
-      providerType: 'opencode-free',
-      defaultModel: 'custom-free-model',
+      slug: 'ark-facts',
+      providerType: 'volcengine-ark',
+      defaultModel: 'custom-model',
       models: [
         {
-          id: 'custom-free-model',
+          id: 'custom-model',
           contextWindow: 128_000,
         },
       ],
       modelSource: 'fallback',
     },
   });
-  const entry = entries.find((candidate) => candidate.id === 'custom-free-model');
+  const entry = entries.find((candidate) => candidate.id === 'custom-model');
   assert.equal(entry?.contextWindow, 128_000);
 });
 
 test('fallback provider catalogs apply facts to known fallback models', () => {
   const entries = buildConnectionModelCatalogEntries({
     connection: {
-      slug: 'opencode-free-known-facts',
-      providerType: 'opencode-free',
-      defaultModel: 'nemotron-3-ultra-free',
+      slug: 'ark-known-facts',
+      providerType: 'volcengine-ark',
+      defaultModel: 'doubao-seed-2-0-pro-260215',
       models: [
         {
-          id: 'nemotron-3-ultra-free',
+          id: 'doubao-seed-2-0-pro-260215',
           contextWindow: 200_000,
           inputLimit: 200_000,
           capabilities: { chat: true },
@@ -382,7 +382,7 @@ test('fallback provider catalogs apply facts to known fallback models', () => {
       modelSource: 'fallback',
     },
   });
-  const entry = entries.find((candidate) => candidate.id === 'nemotron-3-ultra-free');
+  const entry = entries.find((candidate) => candidate.id === 'doubao-seed-2-0-pro-260215');
   assert.equal(entry?.contextWindow, 200_000);
 });
 
diff --git a/packages/core/src/__tests__/provider-catalog-contract.test.ts b/packages/core/src/__tests__/provider-catalog-contract.test.ts
index fef332b3bc..5a5529d1d6 100644
--- a/packages/core/src/__tests__/provider-catalog-contract.test.ts
+++ b/packages/core/src/__tests__/provider-catalog-contract.test.ts
@@ -20,7 +20,6 @@
 import assert from 'node:assert/strict';
 import { describe, it } from 'node:test';
 import {
-  defaultEnabledModelIdsWhenOmitted,
   deriveConnectionSlug,
   validateConnectionBaseUrl,
   validateSlug,
@@ -283,8 +282,9 @@ describe('retired provider contract', () => {
         connection: {
           slug: `${type}-stored`,
           providerType: type,
-          defaultModel: PROVIDER_REGISTRY[type].fallbackModels[0] ?? '',
-          models: undefined,
+          defaultModel: 'stored-model',
+          enabledModelIds: ['stored-model'],
+          models: [{ id: 'stored-model' }],
           modelSource: 'fallback',
         },
       });
@@ -331,34 +331,3 @@ describe('provider catalog contract — fallback lifecycle', () => {
     assert.deepEqual(regressed, []);
   });
 });
-
-describe('opencode-free retired-model quarantine', () => {
-  const opencodeFree = PROVIDER_REGISTRY['opencode-free'];
-
-  // Ox Alpha Free (x-preview-f-free) was retired upstream on OpenCode Zen while
-  // models.dev still snapshots it free+active, so the derivation would keep
-  // offering it as a default-enabled, picker-visible row. Remove this assertion
-  // together with the OPENCODE_FREE_BROKEN_MODEL_IDS entry once the snapshot
-  // marks it deprecated (or upstream serves it again).
-  it('quarantines x-preview-f-free out of the offered free models', () => {
-    assert.ok(opencodeFree.brokenModelIds?.includes('x-preview-f-free'));
-    assert.ok(!providerFallbackModelIds(opencodeFree).includes('x-preview-f-free'));
-    assert.ok(
-      !(defaultEnabledModelIdsWhenOmitted('opencode-free') ?? []).includes('x-preview-f-free'),
-    );
-  });
-
-  // Mechanism guard, independent of which ids the deny-list holds: a quarantined
-  // id must never leak back into the offered candidates through either path.
-  it('never offers a quarantined broken id as a free candidate', () => {
-    const broken = new Set(opencodeFree.brokenModelIds ?? []);
-    const offered = [
-      ...providerFallbackModelIds(opencodeFree),
-      ...(defaultEnabledModelIdsWhenOmitted('opencode-free') ?? []),
-    ];
-    assert.deepEqual(
-      offered.filter((id) => broken.has(id)),
-      [],
-    );
-  });
-});
diff --git a/packages/core/src/llm-connections.ts b/packages/core/src/llm-connections.ts
index ca1aebfb08..cdff09a1c9 100644
--- a/packages/core/src/llm-connections.ts
+++ b/packages/core/src/llm-connections.ts
@@ -37,7 +37,6 @@ import type {
 import { CODEX_SUBSCRIPTION_UNSUPPORTED_CHATGPT_MODELS } from './codex-model-compatibility.js';
 import {
   CATALOG_PROVIDER_TYPES,
-  OPENCODE_FREE_DEFAULT_MODEL,
   PROVIDER_REGISTRY,
   RECOMMENDED_PROVIDER_TYPES,
   providerDefaultsOf,
@@ -56,7 +55,6 @@ import {
 export { CODEX_SUBSCRIPTION_UNSUPPORTED_CHATGPT_MODELS };
 export {
   CATALOG_PROVIDER_TYPES,
-  OPENCODE_FREE_DEFAULT_MODEL,
   PROVIDER_REGISTRY,
   RECOMMENDED_PROVIDER_TYPES,
   providerDefaultsOf,
@@ -236,7 +234,7 @@ export function connectionEnabledModelIds(connection: {
  *   3. the Host's entry says the connection can hold a chat on it.
  *
  * (3) already subsumes what clients used to re-derive locally: a retired
- * provider, a quarantined `brokenModelIds` id, and a model whose metadata says
+ * provider and a model whose metadata says
  * it cannot chat are all non-offerable before a client sees them. A client
  * re-testing any of those against its OWN registry answers for a build that is
  * not the one running the send.
@@ -327,12 +325,6 @@ export function authorizeConnectionModel(
 ): ModelInfo | undefined {
   const model = modelId.trim();
   if (!model || !connectionEnabledModelIds(connection).includes(model)) return undefined;
-  // The one veto: quarantined ids fail in a shape the send cannot surface
-  // (e.g. a billed 200 with an empty completion), so the request settling it
-  // is not available as the arbiter. See ProviderDefaults.brokenModelIds.
-  if (providerDefaultsOf(connection.providerType)?.brokenModelIds?.includes(model)) {
-    return undefined;
-  }
   // The observed row wins wherever it exists: it carries wire metadata such as
   // `apiProtocol`, and capabilities, which a synthesized entry cannot. Absent
   // capabilities already mean "unknown", not "unsupported".
@@ -522,20 +514,6 @@ export interface ConnectionTestResult {
   errorClass?: ConnectionTestErrorClass;
 }
 
-/**
- * The models a connection created without an explicit selection starts with,
- * or undefined when the provider seeds nothing. Derived from the provider's
- * shipped baseline rather than listed a second time: the two can then never
- * disagree about what "all of them" means.
- */
-export function defaultEnabledModelIdsWhenOmitted(
-  providerType: ProviderType,
-): readonly string[] | undefined {
-  const defaults = providerDefaultsOf(providerType);
-  if (!defaults?.enableShippedModelsByDefault) return undefined;
-  return providerFallbackModelIds(defaults);
-}
-
 export function providerAuthRequiresSecret(providerType: ProviderType): boolean {
   const authKind = providerDefaultsOf(providerType)?.authKind;
   return authKind === 'api_key' || authKind === 'oauth_token';
diff --git a/packages/core/src/model-catalog.ts b/packages/core/src/model-catalog.ts
index 6e8e3475c9..9482c97686 100644
--- a/packages/core/src/model-catalog.ts
+++ b/packages/core/src/model-catalog.ts
@@ -203,32 +203,16 @@ export function buildConnectionModelCatalogEntries(
   // Mirrors `isRealConnection` in connection-readiness.ts.
   if (!defaults) return [];
   const supportsModelDiscovery = providerSupportsModelDiscovery(connection.providerType);
-  // Quarantined ids never surface as offerable entries — from any source,
-  // including inventories stored or selections made before the quarantine —
-  // mirroring the `authorizeConnectionModel` veto.
-  const broken = new Set(defaults.brokenModelIds ?? []);
   const fallbackModels = providerFallbackModelIds(defaults);
-  // A quarantined id persisted as this connection's `defaultModel` must not
-  // re-enter the catalog either. `models` and `enabledModelIds` are filtered
-  // below, but a broken default reaches `makeMissingDefaultEntry` unfiltered and
-  // would be re-added as a selectable `provider_default` row — picker-visible
-  // and default-capable while `authorizeConnectionModel` vetoes the same id. A
-  // reachable persisted state: the id was picker-visible before the quarantine.
-  // Dropping it leaves the connection with no valid default (readiness reports
-  // `missing_model`), which is what a model that can no longer send warrants.
-  const defaultModel = broken.has((connection.defaultModel ?? '').trim())
-    ? undefined
-    : connection.defaultModel;
+  const defaultModel = connection.defaultModel;
   const fallbackModelIds = new Set(fallbackModels);
-  const projectedModelsById = new Map(
-    (connection.models ?? []).filter(({ id }) => !broken.has(id)).map((model) => [model.id, model]),
-  );
+  const projectedModelsById = new Map((connection.models ?? []).map((model) => [model.id, model]));
   // Fallback providers have no live inventory, but a projected connection can
   // still carry enabled model-facts entries that are absent from the static
   // list. Keep both sets in the catalog so those user-declared models retain
   // their metadata.
   const models = supportsModelDiscovery
-    ? connection.models?.filter(({ id }) => !broken.has(id))
+    ? connection.models
     : [
         ...fallbackModels.map(
           (id) =>
@@ -237,9 +221,7 @@ export function buildConnectionModelCatalogEntries(
               ...displayNameForKnownModel(connection.providerType, id),
             },
         ),
-        ...(connection.models ?? []).filter(
-          (model) => !broken.has(model.id) && !fallbackModelIds.has(model.id),
-        ),
+        ...(connection.models ?? []).filter((model) => !fallbackModelIds.has(model.id)),
       ];
   return buildModelCatalogEntries({
     providerType: connection.providerType,
@@ -258,7 +240,7 @@ export function buildConnectionModelCatalogEntries(
     savedModelIds: [
       ...(connection.enabledModelIds ?? []),
       ...Object.keys(connection.modelOverrides ?? {}),
-    ].filter((id) => !broken.has(id)),
+    ],
   });
 }
 
diff --git a/packages/core/src/model-metadata.ts b/packages/core/src/model-metadata.ts
index e283d71672..a4968840e8 100644
--- a/packages/core/src/model-metadata.ts
+++ b/packages/core/src/model-metadata.ts
@@ -34,12 +34,6 @@ export interface ModelMetadata {
   knowledgeCutoff?: string;
   structuredOutput?: boolean;
   lastUpdated?: string;
-  /**
-   * models.dev prices the model at zero input cost. Marks free-tier
-   * candidates (e.g. opencode-free); display names are not a contract for
-   * this, several free models carry no "Free" suffix.
-   */
-  isFree?: boolean;
   capabilities?: ModelInfo['capabilities'];
   modalities?: ModelInfo['modalities'];
   /**
@@ -103,7 +97,6 @@ function activeMetadata(): ModelsDevMetadata {
 /** Access paths that serve a canonical provider's model catalog. */
 const GENERATED_METADATA_PROVIDER_ALIASES: Partial<Record<ProviderType, ProviderType>> = {
   'xai-oauth': 'xai',
-  'opencode-free': 'opencode',
   'openai-codex': 'openai',
 };
 
@@ -133,12 +126,7 @@ export function lookupModelMetadata(providerType: ProviderType, modelId: string)
     providerType === 'openai-codex' ? withoutInputLimit(generated) : generated;
   const statics = staticModelMetadata();
   const override =
-    statics[providerType]?.[id] ??
-    (providerType === 'xai-oauth'
-      ? statics.xai?.[id]
-      : providerType === 'opencode-free'
-        ? statics.opencode?.[id]
-        : undefined);
+    statics[providerType]?.[id] ?? (providerType === 'xai-oauth' ? statics.xai?.[id] : undefined);
   if (!providerMetadata) return override ?? {};
   if (!override) return providerMetadata;
   return {
diff --git a/packages/core/src/models-dev-projection.ts b/packages/core/src/models-dev-projection.ts
index 5a6d1bee9b..a2dc05e981 100644
--- a/packages/core/src/models-dev-projection.ts
+++ b/packages/core/src/models-dev-projection.ts
@@ -278,7 +278,6 @@ export function projectModelsDevModel(
     ...(model.knowledge !== undefined ? { knowledgeCutoff: model.knowledge } : {}),
     ...(model.structured_output !== undefined ? { structuredOutput: model.structured_output } : {}),
     ...(model.last_updated !== undefined ? { lastUpdated: model.last_updated } : {}),
-    ...(model.cost?.input === 0 ? { isFree: true } : {}),
     capabilities: {
       ...(modalities ? { vision: modalities.input.includes('image') } : {}),
       reasoning: model.reasoning === true,
diff --git a/packages/core/src/provider-registry.ts b/packages/core/src/provider-registry.ts
index b7019983ae..9c416e60d0 100644
--- a/packages/core/src/provider-registry.ts
+++ b/packages/core/src/provider-registry.ts
@@ -23,8 +23,6 @@ import {
   GENERATED_MODELS_DEV_PROVIDER_FACTS,
 } from './model-metadata.generated.js';
 
-export const OPENCODE_FREE_DEFAULT_MODEL = 'nemotron-3-ultra-free';
-
 export type ProviderCategory = 'oauth' | 'domestic' | 'overseas' | 'local' | 'custom';
 export type ProviderCatalogGroup = 'recommended' | 'plans' | 'api' | 'aggregators' | 'local';
 
@@ -131,16 +129,9 @@ export interface ProviderDefaults {
   authKind: 'api_key' | 'optional_api_key' | 'oauth_token' | 'none';
   /**
    * The baseline this provider ships: what it offers with no live list to go
-   * on. Read it through `providerFallbackModelIds`, never directly — the
-   * accessor subtracts `brokenModelIds`.
+   * on.
    */
   fallbackModels: string[];
-  /**
-   * A new connection to this provider starts with its whole shipped baseline
-   * enabled instead of nothing. Set where a provider costs the user nothing to
-   * call, so the models are on the moment the connection exists.
-   */
-  enableShippedModelsByDefault?: true;
   status: 'ready' | 'phase3-experimental';
   runtimeAdapter: ProviderRuntimeAdapter;
   /** Additional request protocols; omitted models still use runtimeAdapter. */
@@ -152,13 +143,6 @@ export interface ProviderDefaults {
    * registered so stored connections still decode; it just cannot be used.
    */
   retired?: true;
-  /**
-   * Models with dated evidence of persistent breakage whose failure shape the
-   * send itself cannot surface (e.g. empty completions that still bill).
-   * Vetoed in `authorizeConnectionModel` and omitted from catalog offers —
-   * the one exception to "the user's selection is the authorization".
-   */
-  brokenModelIds?: readonly string[];
   modelDiscovery: ProviderModelDiscovery;
   category: ProviderCategory;
   catalogGroup?: ProviderCatalogGroup;
@@ -693,48 +677,6 @@ const opencodeGoModelIds = toolCallingModelIds(
   GENERATED_MODELS_DEV_METADATA['opencode-go'],
   ['minimax-m3'],
 ).filter((id) => GENERATED_MODELS_DEV_METADATA['opencode-go'][id]?.lifecycle !== 'deprecated');
-// opencode-free is Maka's first-class free anonymous default. It shares the
-// OpenCode Zen endpoint and model ids, exposing the active tool-capable
-// models the models.dev snapshot marks `isFree` (zero input cost). Deriving
-// the set from the snapshot lets routine metadata refreshes rotate free
-// models in and out instead of letting a hardcoded pin rot (#3409).
-//
-// Persistently broken free models, excluded with dated evidence. Deny-only:
-// a stale entry hides at most one healthy model, the opposite failure mode of
-// the allow-list pin this replaced. Entries should be re-probed on snapshot
-// refreshes and removed once the model produces content again.
-// 2026-08-21 muse-spark-1.2-contributor-free: anonymous completions return
-// 200 with an empty message and bill the full token budget (4 consecutive
-// probes, max_tokens 8–200) — a failure shape that even "the send settles it"
-// cannot surface, which is why these ids are also vetoed in
-// `authorizeConnectionModel` rather than merely dropped from this derivation.
-// 2026-08-30 x-preview-f-free (Ox Alpha Free): retired upstream — dropped from
-// the anonymous /models listing and every completion returns HTTP 401
-// {"type":"ModelError","message":"Model x-preview-f-free is not supported"}.
-// models.dev still snapshots it as free+active, so the derivation kept offering
-// it as a default-enabled, picker-visible row until this quarantine. Remove
-// once the snapshot marks it deprecated (or upstream serves it again).
-const OPENCODE_FREE_BROKEN_MODEL_IDS = new Set([
-  'muse-spark-1.2-contributor-free',
-  'x-preview-f-free',
-]);
-const opencodeFreeModelIds = toolCallingModelIds(
-  'OpenCode Free',
-  Object.fromEntries(
-    Object.entries(GENERATED_MODELS_DEV_METADATA.opencode).filter(
-      ([id, model]) =>
-        model.isFree === true &&
-        model.lifecycle !== 'deprecated' &&
-        !OPENCODE_FREE_BROKEN_MODEL_IDS.has(id),
-    ),
-  ),
-  [OPENCODE_FREE_DEFAULT_MODEL],
-);
-if (opencodeFreeModelIds[0] !== OPENCODE_FREE_DEFAULT_MODEL) {
-  throw new Error(
-    `models.dev opencode snapshot no longer serves ${OPENCODE_FREE_DEFAULT_MODEL} as an active tool-capable free model; pick a new OPENCODE_FREE_DEFAULT_MODEL`,
-  );
-}
 const githubCopilot = GENERATED_MODELS_DEV_PROVIDER_FACTS['github-copilot'];
 if (githubCopilot.id !== 'github-copilot') {
   throw new Error('models.dev GitHub Copilot provider facts are missing stable id github-copilot');
@@ -1258,28 +1200,6 @@ const providerRegistry = {
     catalogOrder: 38,
     recommendedOrder: 1,
   },
-  'opencode-free': {
-    label: 'OpenCode Free',
-    baseUrl: opencode.api,
-    authKind: 'none',
-    fallbackModels: [...opencodeFreeModelIds],
-    // Free and keyless: nothing is spent by having every shipped model on, and
-    // a user who just added the connection can send immediately.
-    enableShippedModelsByDefault: true,
-    brokenModelIds: [...OPENCODE_FREE_BROKEN_MODEL_IDS],
-    status: 'ready',
-    runtimeAdapter: { kind: 'openai-compatible', name: 'provider' },
-    modelDiscovery: {
-      kind: 'fallback',
-      reason:
-        'The anonymous /models listing describes the full Zen catalog with no cost facts; which models are FREE is a models.dev fact, so the derived candidates are the inventory and the send settles availability.',
-    },
-    category: 'overseas',
-    catalogGroup: 'plans',
-    signupUrl: 'https://opencode.ai/zen',
-    catalogOrder: 0,
-    recommendedOrder: 0,
-  },
   togetherai: {
     label: together.name,
     baseUrl: 'https://api.together.ai/v1',
@@ -1758,18 +1678,13 @@ export function providerDefaultsOf(providerType: string): ProviderDefaults | und
 
 /**
  * The models a provider offers with no live list to go on: the baseline it
- * ships, minus anything quarantined. This is the only reader of
+ * ships. This is the only reader of
  * `fallbackModels` — a provider's offline offer has exactly one authority.
- *
- * `brokenModelIds` subtracts here rather than being pruned from the baseline at
- * the source because the ids it names are ones a stored connection may still
- * carry from an older shipped list.
  */
 export function providerFallbackModelIds(
-  defaults: Pick<ProviderDefaults, 'fallbackModels' | 'brokenModelIds'>,
+  defaults: Pick<ProviderDefaults, 'fallbackModels'>,
 ): string[] {
-  const broken = new Set(defaults.brokenModelIds ?? []);
-  return defaults.fallbackModels.filter((id) => !broken.has(id));
+  return [...defaults.fallbackModels];
 }
 
 /**
diff --git a/packages/core/src/runtime-policy.ts b/packages/core/src/runtime-policy.ts
index 382a5fca27..fc9933eed7 100644
--- a/packages/core/src/runtime-policy.ts
+++ b/packages/core/src/runtime-policy.ts
@@ -356,22 +356,6 @@ export interface RemoveCatalogConnectionInput {
   readonly expected: ConnectionVersionBasis;
 }
 
-/**
- * Built-in seed evolution as one atomic catalog mutation: a row still exactly
- * matching a historical system seed follows the current seed — enabled ids AND
- * the static inventory — and a system default the migration removes is
- * retargeted in the same document write. Any other inventory is a user
- * selection and is never touched; an already-null default stays null.
- */
-export interface MigrateSystemSeedInput {
-  readonly slug: string;
-  readonly providerType: ProviderType;
-  readonly legacyEnabledModelIds: readonly (readonly string[])[];
-  readonly enabledModelIds: readonly string[];
-  readonly defaultModelId: string;
-  readonly retiredModelIds: readonly string[];
-}
-
 export interface SetDefaultConnectionTargetInput {
   readonly expectedCatalogRevision: Revision;
   readonly target: ConnectionTarget | null;
diff --git a/packages/runtime-host/src/__tests__/bootstrap-runtime-policy.test.ts b/packages/runtime-host/src/__tests__/bootstrap-runtime-policy.test.ts
index 96d072d059..f0a88fafb2 100644
--- a/packages/runtime-host/src/__tests__/bootstrap-runtime-policy.test.ts
+++ b/packages/runtime-host/src/__tests__/bootstrap-runtime-policy.test.ts
@@ -22,10 +22,6 @@ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
 import { tmpdir } from 'node:os';
 import { join } from 'node:path';
 import { test } from 'node:test';
-import {
-  OPENCODE_FREE_DEFAULT_MODEL,
-  defaultEnabledModelIdsWhenOmitted,
-} from '@maka/core/llm-connections';
 import {
   openInteractiveRuntimePolicyStoresForWrite,
   type RuntimePolicyStoresWriter,
@@ -33,9 +29,6 @@ import {
 import { resolveStorageRoot, tryAcquireInteractiveRootOwner } from '@maka/storage/root-authority';
 import { ensureBootstrapRuntimePolicy } from '../server/bootstrap-runtime-policy.js';
 
-const OPENCODE_FREE_ENABLED_MODEL_IDS: readonly string[] =
-  defaultEnabledModelIdsWhenOmitted('opencode-free') ?? [];
-
 test('hosted initialization retries invalid input and rotates proxy credentials through the store', async () => {
   await withFixture(async ({ root, stores }) => {
     const initialize = (proxyUrl: string) =>
@@ -65,122 +58,69 @@ test('hosted initialization retries invalid input and rotates proxy credentials
   });
 });
 
-test('a fresh Host starts with one anonymous runnable target', async () => {
+test('a fresh Host without a user API key leaves provider selection to onboarding', async () => {
   await withFixture(async ({ root, stores }) => {
     await ensureBootstrapRuntimePolicy({ workspaceRoot: root, stores, environment: {} });
-
     const catalog = await stores.connectionCatalog.getSnapshot();
-    assert.equal(catalog.connections.length, 1);
-    const free = catalog.connections[0];
-    assert.equal(free?.slug, 'opencode-free');
-    assert.equal(free?.enabled, true);
-    // The free set is derived from the models.dev snapshot and rotates with
-    // refreshes; assert the structural contract, not today's ids.
-    assert.deepEqual(free?.enabledModelIds, [...OPENCODE_FREE_ENABLED_MODEL_IDS]);
-    assert.ok(free.enabledModelIds.length > 0);
-    assert.equal(free.enabledModelIds[0], OPENCODE_FREE_DEFAULT_MODEL);
-    assert.deepEqual(catalog.defaultTarget, {
-      connectionId: free?.connectionId,
-      modelId: OPENCODE_FREE_DEFAULT_MODEL,
-    });
-    assert.deepEqual(
-      catalog.connections.map(({ slug }) => slug),
-      ['opencode-free'],
-    );
-  });
-});
-
-test('reconciles retired OpenCode Free models without removing user models', async () => {
-  await withFixture(async ({ root, stores }) => {
-    const created = await stores.connectionCatalog.create({
-      expectedCatalogRevision: 0,
-      connection: {
-        slug: 'opencode-free',
-        name: 'OpenCode Free',
-        providerType: 'opencode-free',
-        enabled: true,
-        enabledModelIds: ['nemotron-3-ultra-free', 'deepseek-v4-flash-free', 'user-model'],
-      },
-    });
-    assert.equal(created.kind, 'committed');
-    const connection = created.snapshot.connections[0]!;
-    const updated = await stores.connectionCatalog.update({
-      expected: { connectionId: connection.connectionId, revision: connection.revision },
-      changes: {
-        name: connection.name,
-        enabled: true,
-        enabledModelIds: connection.enabledModelIds,
-      },
-    });
-    assert.equal(updated.kind, 'committed');
-    const updatedConnection = updated.snapshot.connections[0]!;
-    const defaulted = await stores.connectionCatalog.setDefaultTarget({
-      expectedCatalogRevision: updated.snapshot.revision,
-      target: { connectionId: updatedConnection.connectionId, modelId: 'deepseek-v4-flash-free' },
-    });
-    assert.equal(defaulted.kind, 'committed');
-
-    await ensureBootstrapRuntimePolicy({ workspaceRoot: root, stores, environment: {} });
-
-    const migrated = (await stores.connectionCatalog.getSnapshot()).connections.find(
-      ({ slug }) => slug === 'opencode-free',
-    );
-    assert.deepEqual(migrated?.enabledModelIds, ['nemotron-3-ultra-free', 'user-model']);
-    // The row stores no inventory of its own: this provider ships one, and the
-    // resolver prepends the current build's list to whatever the row holds.
-    assert.deepEqual(migrated?.models, []);
-    assert.deepEqual((await stores.connectionCatalog.getSnapshot()).defaultTarget, {
-      connectionId: migrated?.connectionId,
-      modelId: 'nemotron-3-ultra-free',
-    });
+    assert.deepEqual(catalog.connections, []);
+    assert.equal(catalog.defaultTarget, null);
   });
 });
 
-test('bootstrap resumes after interruption and prefers the supported environment key', async () => {
+test('an interrupted environment import resumes credential setup before selecting a default', async () => {
   await withFixture(async ({ root, stores }) => {
     const created = await stores.connectionCatalog.create({
       expectedCatalogRevision: 0,
       connection: {
-        slug: 'opencode-free',
-        name: 'OpenCode Free',
-        providerType: 'opencode-free',
+        slug: 'env-anthropic',
+        name: 'Anthropic (env)',
+        providerType: 'anthropic',
         enabled: true,
-        enabledModelIds: ['nemotron-3-ultra-free'],
+        enabledModelIds: ['claude-sonnet-4-5-20250929'],
       },
     });
     assert.equal(created.kind, 'committed');
     await writeFile(
       join(root, '.runtime-host-bootstrap.json'),
       '{"version":1,"state":"initializing"}\n',
-      'utf8',
     );
-
+    await assert.rejects(
+      ensureBootstrapRuntimePolicy({
+        workspaceRoot: root,
+        environment: { ANTHROPIC_API_KEY: 'anthropic-secret' },
+        stores: {
+          ...stores,
+          connectionCatalog: {
+            ...stores.connectionCatalog,
+            setDefaultTarget: async () => {
+              throw new Error('Interrupted default write');
+            },
+          },
+        },
+      }),
+      /Interrupted default write/,
+    );
     await ensureBootstrapRuntimePolicy({
       workspaceRoot: root,
       stores,
-      environment: {
-        ANTHROPIC_API_KEY: 'anthropic-secret',
-        OPENAI_API_KEY: 'openai-secret',
-      },
+      environment: { ANTHROPIC_API_KEY: 'anthropic-secret', OPENAI_API_KEY: 'unused' },
     });
-
     const catalog = await stores.connectionCatalog.getSnapshot();
-    assert.deepEqual(
-      catalog.connections.map(({ slug }) => slug),
-      ['opencode-free', 'env-anthropic'],
-    );
-    const anthropic = catalog.connections[1];
+    assert.equal(catalog.connections.length, 1);
+    const connection = catalog.connections[0]!;
     assert.deepEqual(catalog.defaultTarget, {
-      connectionId: anthropic?.connectionId,
+      connectionId: connection.connectionId,
       modelId: 'claude-sonnet-4-5-20250929',
     });
     const status = await stores.credentialVault.getStatus({
       scope: 'connection',
-      connectionId: anthropic!.connectionId,
+      connectionId: connection.connectionId,
       kind: 'api_key',
     });
     assert.equal(status.kind, 'status');
     if (status.kind === 'status') assert.equal(status.status.configured, true);
+    await ensureBootstrapRuntimePolicy({ workspaceRoot: root, stores, environment: {} });
+    assert.deepEqual(await stores.connectionCatalog.getSnapshot(), catalog);
   });
 });
 
@@ -233,7 +173,7 @@ test('bootstrap does not alter an existing user catalog', async () => {
   });
 });
 
-test('an invalid optional environment credential does not keep bootstrap active', async () => {
+test('a failed environment credential leaves no unusable default and can be retried', async () => {
   await withFixture(async ({ root, stores }) => {
     const errors: unknown[] = [];
     await ensureBootstrapRuntimePolicy({
@@ -242,145 +182,23 @@ test('an invalid optional environment credential does not keep bootstrap active'
       environment: { OPENAI_API_KEY: 'x'.repeat(64 * 1024 + 1) },
       onDeferredError: (error) => errors.push(error),
     });
-
     assert.equal(errors.length, 1);
-    const catalog = await stores.connectionCatalog.getSnapshot();
-    const free = catalog.connections.find(({ slug }) => slug === 'opencode-free');
-    assert.deepEqual(catalog.defaultTarget, {
-      connectionId: free?.connectionId,
-      modelId: 'nemotron-3-ultra-free',
-    });
+    const failed = await stores.connectionCatalog.getSnapshot();
+    assert.deepEqual(failed.connections, []);
+    assert.equal(failed.defaultTarget, null);
     await ensureBootstrapRuntimePolicy({
       workspaceRoot: root,
       stores,
-      environment: { OPENAI_API_KEY: 'x'.repeat(64 * 1024 + 1) },
-      onDeferredError: (error) => errors.push(error),
+      environment: { OPENAI_API_KEY: 'valid-key' },
     });
-    assert.equal(errors.length, 1);
-  });
-});
-
-test('a historical persisted seed migrates atomically, inventory and default included', async () => {
-  await withFixture(async ({ root, stores }) => {
-    // An actual pre-#3409 persisted document: the three-model seed, the
-    // pinned four-model fallback inventory of that build, and a default
-    // target on a model the migration removes.
-    const connectionId = '00000000-0000-4000-8000-000000000001';
-    await writeFile(
-      join(root, 'connection-catalog.json'),
-      `${JSON.stringify({
-        schemaVersion: 1,
-        revision: 7,
-        defaultTarget: { connectionId, modelId: 'deepseek-v4-flash-free' },
-        connections: [
-          {
-            connectionId,
-            revision: 3,
-            slug: 'opencode-free',
-            name: 'OpenCode Free',
-            providerType: 'opencode-free',
-            enabled: true,
-            enabledModelIds: ['nemotron-3-ultra-free', 'mimo-v2.5-free', 'deepseek-v4-flash-free'],
-            models: [
-              { id: 'nemotron-3-ultra-free' },
-              { id: 'mimo-v2.5-free' },
-              { id: 'big-pickle' },
-              { id: 'deepseek-v4-flash-free' },
-            ],
-            modelSource: 'fallback',
-            modelsFetchedAt: 0,
-          },
-        ],
-      })}\n`,
-    );
-
-    await ensureBootstrapRuntimePolicy({ workspaceRoot: root, stores, environment: {} });
-
-    // One document write carried all three: enabled ids, the dropped static
-    // inventory, and the retargeted default.
     const catalog = await stores.connectionCatalog.getSnapshot();
-    const migrated = catalog.connections.find(({ slug }) => slug === 'opencode-free');
-    assert.deepEqual(migrated?.enabledModelIds, [...OPENCODE_FREE_ENABLED_MODEL_IDS]);
-    // The pinned copy goes rather than being re-pinned to this build's list:
-    // the resolver prepends the shipped inventory on every read, so a row that
-    // stores one can only go stale again.
-    assert.deepEqual(migrated?.models, []);
     assert.deepEqual(catalog.defaultTarget, {
-      connectionId,
-      modelId: OPENCODE_FREE_DEFAULT_MODEL,
+      connectionId: catalog.connections[0]!.connectionId,
+      modelId: 'gpt-4o-mini',
     });
-
-    // Restart on the far side of the commit boundary: a second bootstrap is a
-    // byte-identical no-op. (On the near side the single write never happened,
-    // so the original document simply migrates on the next start.)
-    await ensureBootstrapRuntimePolicy({ workspaceRoot: root, stores, environment: {} });
-    assert.deepEqual(await stores.connectionCatalog.getSnapshot(), catalog);
   });
 });
 
-test('a historical seed with a user-cleared default migrates without inventing one', async () => {
-  await withFixture(async ({ root, stores }) => {
-    const connectionId = '00000000-0000-4000-8000-000000000002';
-    await writeFile(
-      join(root, 'connection-catalog.json'),
-      `${JSON.stringify({
-        schemaVersion: 1,
-        revision: 4,
-        defaultTarget: null,
-        connections: [
-          {
-            connectionId,
-            revision: 2,
-            slug: 'opencode-free',
-            name: 'OpenCode Free',
-            providerType: 'opencode-free',
-            enabled: true,
-            enabledModelIds: ['nemotron-3-ultra-free'],
-            models: [{ id: 'nemotron-3-ultra-free' }],
-            modelSource: 'fallback',
-            modelsFetchedAt: 0,
-          },
-        ],
-      })}\n`,
-    );
-
-    await ensureBootstrapRuntimePolicy({ workspaceRoot: root, stores, environment: {} });
-
-    const catalog = await stores.connectionCatalog.getSnapshot();
-    const migrated = catalog.connections.find(({ slug }) => slug === 'opencode-free');
-    assert.deepEqual(migrated?.enabledModelIds, [...OPENCODE_FREE_ENABLED_MODEL_IDS]);
-    assert.equal(catalog.defaultTarget, null);
-  });
-});
-
-test('a user-modified opencode-free inventory is never migrated', async () => {
-  // A reordered seed counts as user-modified too: exact sequence equality is
-  // the (documented, lossy) proof a row is still system-owned.
-  for (const enabledModelIds of [
-    ['nemotron-3-ultra-free', 'big-pickle'],
-    ['mimo-v2.5-free', 'nemotron-3-ultra-free', 'user-model'],
-  ]) {
-    await withFixture(async ({ root, stores }) => {
-      const created = await stores.connectionCatalog.create({
-        expectedCatalogRevision: 0,
-        connection: {
-          slug: 'opencode-free',
-          name: 'OpenCode Free',
-          providerType: 'opencode-free',
-          enabled: true,
-          enabledModelIds,
-        },
-      });
-      assert.equal(created.kind, 'committed');
-      const before = await stores.connectionCatalog.getSnapshot();
-
-      await ensureBootstrapRuntimePolicy({ workspaceRoot: root, stores, environment: {} });
-
-      assert.deepEqual(await stores.connectionCatalog.getSnapshot(), before);
-    });
-  }
-});
-
 async function withFixture(
   run: (fixture: { root: string; stores: RuntimePolicyStoresWriter }) => Promise<void>,
 ): Promise<void> {
diff --git a/packages/runtime-host/src/__tests__/execution-model-composition.test.ts b/packages/runtime-host/src/__tests__/execution-model-composition.test.ts
index a9fbc9d522..f26dd1e987 100644
--- a/packages/runtime-host/src/__tests__/execution-model-composition.test.ts
+++ b/packages/runtime-host/src/__tests__/execution-model-composition.test.ts
@@ -921,12 +921,7 @@ test('backend creation admits an enabled model a live list omits', async () => {
 });
 
 test('backend creation admits an enabled model a snapshot never listed', async () => {
-  // `opencode-free` has no model-list endpoint, so its discovery run replays
-  // the array this build shipped and records `modelSource: 'fallback'`. The
-  // user enabled this id; a release snapshot cannot rule on what an account
-  // serves (#1584). Until now the only id that could get through an absent
-  // inventory was a hardcoded `deepseek` / `deepseek-v4-flash` pair (#2896) —
-  // the same situation, conceded for one provider.
+  // User-selected models remain usable when a fallback catalog has not listed them.
   const modelId = 'claude-opus-5';
   const backend = await createHostAiSdkBackend(
     backendCreationFixture({
@@ -936,10 +931,10 @@ test('backend creation admits an enabled model a snapshot never listed', async (
         kind: 'ready',
         connection: {
           slug: 'backend-creation-connection',
-          providerType: 'opencode-free',
+          providerType: 'volcengine-ark',
           enabledModelIds: [modelId],
           models: [{ id: 'grok-code' }],
-          modelSource: 'fetched' as const,
+          modelSource: 'fallback' as const,
         },
         networkProxy: { enabled: false },
         secretMaterial: {},
diff --git a/packages/runtime-host/src/server/bootstrap-runtime-policy.ts b/packages/runtime-host/src/server/bootstrap-runtime-policy.ts
index 7aff9c4bec..991c8a9f13 100644
--- a/packages/runtime-host/src/server/bootstrap-runtime-policy.ts
+++ b/packages/runtime-host/src/server/bootstrap-runtime-policy.ts
@@ -20,11 +20,7 @@
 import { randomUUID } from 'node:crypto';
 import { readFile, rename, rm, writeFile } from 'node:fs/promises';
 import { join } from 'node:path';
-import {
-  OPENCODE_FREE_DEFAULT_MODEL,
-  defaultEnabledModelIdsWhenOmitted,
-  type ProviderType,
-} from '@maka/core/llm-connections';
+import type { ProviderType } from '@maka/core/llm-connections';
 import type { ConnectionCatalogEntry } from '@maka/core/runtime-policy';
 import type { RuntimePolicyStoresWriter } from '@maka/storage/runtime-policy-stores';
 
@@ -42,23 +38,15 @@ interface BootstrapSeed {
   readonly providerType: ProviderType;
   readonly enabledModelIds: readonly string[];
   readonly baseUrl?: string;
-  readonly secret?: string;
+  readonly secret: string;
 }
 
-/**
- * What the seeded OpenCode Free connection starts with — the provider's own
- * declaration of the models a fresh connection to it enables, so the seed and
- * a hand-added connection cannot drift apart.
- */
-const OPENCODE_FREE_SEED_MODEL_IDS: readonly string[] =
-  defaultEnabledModelIdsWhenOmitted('opencode-free') ?? [];
-
 interface BootstrapJournal {
   readonly version: 1;
   readonly state: 'initializing';
 }
 
-/** Establishes a usable first target before Runtime Host accepts clients. */
+/** Imports a user's environment credential on first start, before accepting clients. */
 export async function ensureBootstrapRuntimePolicy(input: {
   readonly workspaceRoot: string;
   readonly stores: RuntimePolicyStoresWriter;
@@ -70,52 +58,30 @@ export async function ensureBootstrapRuntimePolicy(input: {
   const journalPath = join(input.workspaceRoot, JOURNAL_FILE);
   const resuming = await readJournal(journalPath);
   const initialCatalog = await input.stores.connectionCatalog.getSnapshot();
-  if (initialCatalog.connections.length > 0) {
-    // One atomic catalog mutation: enabled ids, static inventory, and a
-    // retarget of a system default the migration removes all land in the same
-    // document write, so no restart can observe a half-migrated row.
-    try {
-      await input.stores.connectionCatalog.migrateSystemSeed({
-        slug: 'opencode-free',
-        providerType: 'opencode-free',
-        legacyEnabledModelIds: LEGACY_OPENCODE_FREE_SEEDS,
-        enabledModelIds: OPENCODE_FREE_SEED_MODEL_IDS,
-        defaultModelId: OPENCODE_FREE_DEFAULT_MODEL,
-        retiredModelIds: retiredOpencodeFreeModelIds(),
-      });
-    } catch (error) {
-      input.onDeferredError?.(error);
-    }
-  }
-  if (!resuming) {
-    if (initialCatalog.connections.length > 0) return;
-    await writeJournal(journalPath);
+  if (!resuming && initialCatalog.connections.length > 0) return;
+  const seed = bootstrapSeed(input.environment ?? process.env);
+  if (!seed || initialCatalog.connections.some((connection) => connection.slug !== seed.slug)) {
+    await rm(journalPath, { force: true });
+    return;
   }
-
-  const seeds = bootstrapSeeds(input.environment ?? process.env);
-  const { connection: free } = await ensureConnection(input.stores, seeds[0]!);
-  await setDefaultIfMissing(input.stores, free);
-  await rm(journalPath, { force: true });
-
+  if (!resuming) await writeJournal(journalPath);
+  let connection: ConnectionCatalogEntry;
   try {
-    let preferred = free;
-    for (const seed of seeds.slice(1)) {
-      const ensured = await ensureConnection(input.stores, seed);
-      const connection = ensured.connection;
-      if (seed.secret) {
-        try {
-          await ensureCredential(input.stores, connection, seed.secret);
-        } catch (error) {
-          if (ensured.created) await removeFailedBootstrapConnection(input.stores, connection);
-          throw error;
-        }
-      }
-      preferred = connection;
+    const ensured = await ensureConnection(input.stores, seed);
+    connection = ensured.connection;
+    try {
+      await ensureCredential(input.stores, connection, seed.secret);
+    } catch (error) {
+      if (ensured.created) await removeFailedBootstrapConnection(input.stores, ensured.connection);
+      throw error;
     }
-    await replaceBootstrapDefault(input.stores, free, preferred);
   } catch (error) {
     input.onDeferredError?.(error);
+    await rm(journalPath, { force: true });
+    return;
   }
+  await setDefaultIfMissing(input.stores, connection);
+  await rm(journalPath, { force: true });
 }
 
 async function initializeHostedPolicy(
@@ -182,45 +148,37 @@ async function initializeHostedPolicy(
   if (result.kind !== 'committed') throw new Error('Hosted proxy initialization failed');
 }
 
-function bootstrapSeeds(environment: BootstrapEnvironment): readonly BootstrapSeed[] {
-  const seeds: BootstrapSeed[] = [
-    {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      enabledModelIds: OPENCODE_FREE_SEED_MODEL_IDS,
-    },
-  ];
+function bootstrapSeed(environment: BootstrapEnvironment): BootstrapSeed | undefined {
   const deepseek = environment.DEEPSEEK_API_KEY?.trim();
   const anthropic = environment.ANTHROPIC_API_KEY?.trim();
   const openai = environment.OPENAI_API_KEY?.trim();
   if (deepseek) {
-    seeds.push({
+    return {
       slug: 'env-deepseek',
       name: 'DeepSeek (env)',
       providerType: 'deepseek',
       enabledModelIds: ['deepseek-v4-flash'],
       baseUrl: environment.DEEPSEEK_BASE_URL?.trim() || 'https://api.deepseek.com',
       secret: deepseek,
-    });
+    };
   } else if (anthropic) {
-    seeds.push({
+    return {
       slug: 'env-anthropic',
       name: 'Anthropic (env)',
       providerType: 'anthropic',
       enabledModelIds: ['claude-sonnet-4-5-20250929'],
       secret: anthropic,
-    });
+    };
   } else if (openai) {
-    seeds.push({
+    return {
       slug: 'env-openai',
       name: 'OpenAI (env)',
       providerType: 'openai',
       enabledModelIds: ['gpt-4o-mini'],
       secret: openai,
-    });
+    };
   }
-  return seeds;
+  return undefined;
 }
 
 async function ensureConnection(
@@ -256,26 +214,6 @@ async function ensureConnection(
   throw new Error(`Bootstrap Connection could not be created: ${seed.slug}`);
 }
 
-/**
- * Every opencode-free inventory a past release seeded, verbatim. A row still
- * equal to one of these is provably system-owned and may follow the current
- * seed; any other value is a user selection and is never touched. Every
- * release that changes the derived seed must append the previous value here,
- * or rows it planted read as user selections forever. (This exact-match
- * enumeration is deliberately lossy; the versioned seed policy discussed in
- * #3354 is the durable replacement.)
- */
-const LEGACY_OPENCODE_FREE_SEEDS: readonly (readonly string[])[] = [
-  ['big-pickle'],
-  ['nemotron-3-ultra-free'],
-  ['nemotron-3-ultra-free', 'mimo-v2.5-free', 'deepseek-v4-flash-free'],
-];
-
-function retiredOpencodeFreeModelIds(): readonly string[] {
-  const current = new Set(OPENCODE_FREE_SEED_MODEL_IDS);
-  return [...new Set(LEGACY_OPENCODE_FREE_SEEDS.flat())].filter((id) => !current.has(id));
-}
-
 async function removeFailedBootstrapConnection(
   stores: RuntimePolicyStoresWriter,
   connection: ConnectionCatalogEntry,
@@ -319,7 +257,7 @@ async function setDefaultIfMissing(
     expectedCatalogRevision: catalog.revision,
     target: {
       connectionId: connection.connectionId,
-      modelId: OPENCODE_FREE_DEFAULT_MODEL,
+      modelId: connection.enabledModelIds[0]!,
     },
   });
   if (committed.kind !== 'committed') {
@@ -327,31 +265,6 @@ async function setDefaultIfMissing(
   }
 }
 
-async function replaceBootstrapDefault(
-  stores: RuntimePolicyStoresWriter,
-  free: ConnectionCatalogEntry,
-  preferred: ConnectionCatalogEntry,
-): Promise<void> {
-  if (preferred.connectionId === free.connectionId || !preferred.enabled) return;
-  const catalog = await stores.connectionCatalog.getSnapshot();
-  const current = catalog.defaultTarget;
-  if (
-    current !== null &&
-    (current.connectionId !== free.connectionId || current.modelId !== OPENCODE_FREE_DEFAULT_MODEL)
-  ) {
-    return;
-  }
-  const modelId = preferred.enabledModelIds[0];
-  if (!modelId) return;
-  const committed = await stores.connectionCatalog.setDefaultTarget({
-    expectedCatalogRevision: catalog.revision,
-    target: { connectionId: preferred.connectionId, modelId },
-  });
-  if (committed.kind !== 'committed') {
-    throw new Error(`Bootstrap preferred target could not be stored: ${committed.kind}`);
-  }
-}
-
 async function readJournal(path: string): Promise<BootstrapJournal | null> {
   let contents: string;
   try {
diff --git a/packages/runtime/src/__tests__/opencode-free-anonymous.test.ts b/packages/runtime/src/__tests__/opencode-free-anonymous.test.ts
deleted file mode 100644
index 2f5e9ff1c9..0000000000
--- a/packages/runtime/src/__tests__/opencode-free-anonymous.test.ts
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * opencode-free anonymous runtime — the invariant the free tier depends on.
- *
- * opencode-free is Maka's zero-credential default. Its free-tier access works
- * ONLY because the request carries no Authorization header and the OpenCode
- * Zen server treats that as anonymous (per-IP rate-limited). This invariant is
- * the whole point of the provider, so it must be locked directly against
- * opencode-free, not inferred from "the code path looks like Ollama's".
- *
- * If @ai-sdk/openai-compatible ever stops omitting the header on an empty key,
- * or someone later "improves" opencode-free by injecting a placeholder key,
- * this test must fail before the anonymous free path silently breaks.
- */
-import assert from 'node:assert/strict';
-import { describe, test } from 'node:test';
-import { generateText } from 'ai';
-import type { LlmConnection } from '@maka/core/llm-connections';
-import { PROVIDER_REGISTRY } from '@maka/core/provider-registry';
-import { getAIModel } from '@maka/runtime/model-factory';
-
-import { testConnection } from '@maka/runtime/test-connection';
-
-describe('opencode-free anonymous runtime', () => {
-  test('omits Authorization and posts to zen/v1 with the model id (empty key, no secret)', async () => {
-    const baseUrl = 'https://opencode.ai/zen/v1';
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      baseUrl,
-      defaultModel: 'big-pickle',
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-
-    let captured: { url: string; authorization: string | null; model: unknown } | undefined;
-    const fakeFetch: typeof globalThis.fetch = async (input, init) => {
-      const request = new Request(input, init);
-      const body = JSON.parse(await request.text()) as Record<string, unknown>;
-      captured = {
-        url: request.url,
-        authorization: request.headers.get('authorization'),
-        model: body.model,
-      };
-      return new Response(
-        JSON.stringify({
-          id: 'chatcmpl-opencode-free',
-          object: 'chat.completion',
-          created: 1,
-          model: 'big-pickle',
-          choices: [
-            {
-              index: 0,
-              message: { role: 'assistant', content: 'ok' },
-              finish_reason: 'stop',
-            },
-          ],
-          usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 },
-        }),
-        { status: 200, headers: { 'content-type': 'application/json' } },
-      );
-    };
-
-    const model = getAIModel({
-      connection,
-      apiKey: '',
-      modelId: 'big-pickle',
-      fetch: fakeFetch,
-    });
-
-    const result = await generateText({ model, prompt: 'hi' });
-
-    assert.ok(captured, 'opencode-free request was issued');
-    assert.equal(
-      captured?.authorization,
-      null,
-      'opencode-free must send NO Authorization header (anonymous free tier)',
-    );
-    assert.equal(captured?.url, 'https://opencode.ai/zen/v1/chat/completions');
-    assert.equal(captured?.model, 'big-pickle');
-    assert.equal(result.text, 'ok');
-  });
-
-  test('rejects a 200 error envelope and probes the next free model', async () => {
-    const requestedModels: string[] = [];
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      defaultModel: 'big-pickle',
-      enabledModelIds: ['big-pickle'],
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async (_input, init) => {
-      const body = JSON.parse(String(init?.body)) as { model: string };
-      requestedModels.push(body.model);
-      if (body.model === 'big-pickle') {
-        return new Response(JSON.stringify({ error: { type: 'server_error' } }), {
-          status: 200,
-          headers: { 'content-type': 'application/json' },
-        });
-      }
-      return new Response(
-        JSON.stringify({
-          choices: [{ message: { role: 'assistant', content: 'ok' }, finish_reason: 'stop' }],
-        }),
-        { status: 200, headers: { 'content-type': 'application/json' } },
-      );
-    };
-
-    const result = await testConnection(connection, '', undefined, { fetch: fakeFetch });
-
-    assert.equal(result.ok, true);
-    assert.equal(result.modelTested, 'nemotron-3-ultra-free');
-    assert.deepEqual(requestedModels, ['big-pickle', 'nemotron-3-ultra-free']);
-  });
-
-  test('probes a healthy fallback for a customized connection without hiding the model tested', async () => {
-    const requestedModels: string[] = [];
-    const connection: LlmConnection = {
-      slug: 'my-opencode-free',
-      name: 'My free connection',
-      providerType: 'opencode-free',
-      baseUrl: 'https://custom.example/v1',
-      defaultModel: 'custom-broken-free',
-      enabledModelIds: ['custom-broken-free'],
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async (_input, init) => {
-      const body = JSON.parse(String(init?.body)) as { model: string };
-      requestedModels.push(body.model);
-      return new Response(
-        JSON.stringify(
-          body.model === 'custom-broken-free'
-            ? { error: { type: 'server_error' } }
-            : { choices: [{ message: { role: 'assistant', content: 'ok' } }] },
-        ),
-        { status: 200, headers: { 'content-type': 'application/json' } },
-      );
-    };
-
-    const result = await testConnection(connection, '', undefined, { fetch: fakeFetch });
-
-    assert.equal(result.ok, true);
-    assert.equal(result.modelTested, 'nemotron-3-ultra-free');
-    assert.deepEqual(requestedModels, ['custom-broken-free', 'nemotron-3-ultra-free']);
-  });
-
-  test('does not probe a quarantined enabled model', async () => {
-    const requestedModels: string[] = [];
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      defaultModel: 'muse-spark-1.2-contributor-free',
-      enabledModelIds: ['muse-spark-1.2-contributor-free'],
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async (_input, init) => {
-      const body = JSON.parse(String(init?.body)) as { model: string };
-      requestedModels.push(body.model);
-      return new Response(
-        JSON.stringify({ choices: [{ message: { role: 'assistant', content: 'ok' } }] }),
-        { status: 200, headers: { 'content-type': 'application/json' } },
-      );
-    };
-
-    const result = await testConnection(connection, '', undefined, { fetch: fakeFetch });
-
-    assert.equal(result.ok, true);
-    assert.equal(result.modelTested, 'nemotron-3-ultra-free');
-    assert.deepEqual(requestedModels, ['nemotron-3-ultra-free']);
-  });
-
-  test('keeps a quarantined default from blocking the healthy fallback', async () => {
-    const requestedModels: string[] = [];
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      defaultModel: 'x-preview-f-free',
-      enabledModelIds: ['x-preview-f-free'],
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async (_input, init) => {
-      const body = JSON.parse(String(init?.body)) as { model: string };
-      requestedModels.push(body.model);
-      return new Response(
-        JSON.stringify({ choices: [{ message: { role: 'assistant', content: 'ok' } }] }),
-        { status: 200, headers: { 'content-type': 'application/json' } },
-      );
-    };
-
-    const result = await testConnection(connection, '', undefined, { fetch: fakeFetch });
-
-    assert.equal(result.ok, true);
-    assert.equal(result.modelTested, 'nemotron-3-ultra-free');
-    assert.deepEqual(requestedModels, ['nemotron-3-ultra-free']);
-  });
-
-  test('returns no model to test when every candidate is quarantined', async () => {
-    const defaults = PROVIDER_REGISTRY['opencode-free'];
-    const originalFallbackModels = defaults.fallbackModels;
-    const originalBrokenModelIds = defaults.brokenModelIds;
-    defaults.fallbackModels = [];
-    defaults.brokenModelIds = ['muse-spark-1.2-contributor-free'];
-
-    try {
-      const connection: LlmConnection = {
-        slug: 'opencode-free',
-        name: 'OpenCode Free',
-        providerType: 'opencode-free',
-        defaultModel: 'muse-spark-1.2-contributor-free',
-        enabledModelIds: ['muse-spark-1.2-contributor-free'],
-        enabled: true,
-        createdAt: 0,
-        updatedAt: 0,
-      };
-      const fakeFetch: typeof globalThis.fetch = async () => {
-        throw new Error('no request expected');
-      };
-
-      const result = await testConnection(connection, '', undefined, { fetch: fakeFetch });
-
-      assert.equal(result.ok, false);
-      assert.equal(result.errorMessage, 'No model to test');
-    } finally {
-      defaults.fallbackModels = originalFallbackModels;
-      defaults.brokenModelIds = originalBrokenModelIds;
-    }
-  });
-
-  test('tests an explicit model once without probing fallbacks', async () => {
-    const requestedModels: string[] = [];
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      defaultModel: 'nemotron-3-ultra-free',
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async (_input, init) => {
-      const body = JSON.parse(String(init?.body)) as { model: string };
-      requestedModels.push(body.model);
-      return new Response(JSON.stringify({ error: { type: 'server_error' } }), {
-        status: 200,
-        headers: { 'content-type': 'application/json' },
-      });
-    };
-
-    const result = await testConnection(connection, '', 'explicit-free', { fetch: fakeFetch });
-
-    assert.equal(result.ok, false);
-    assert.equal(result.modelTested, 'explicit-free');
-    assert.deepEqual(requestedModels, ['explicit-free']);
-  });
-
-  test('rejects malformed completion choices before accepting a fallback', async () => {
-    const requestedModels: string[] = [];
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      defaultModel: 'big-pickle',
-      enabledModelIds: ['big-pickle'],
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async (_input, init) => {
-      const body = JSON.parse(String(init?.body)) as { model: string };
-      requestedModels.push(body.model);
-      return new Response(
-        JSON.stringify(
-          body.model === 'big-pickle'
-            ? { choices: [{}] }
-            : { choices: [{ message: { role: 'assistant', content: 'ok' } }] },
-        ),
-        { status: 200, headers: { 'content-type': 'application/json' } },
-      );
-    };
-
-    const result = await testConnection(connection, '', undefined, { fetch: fakeFetch });
-
-    assert.equal(result.ok, true);
-    assert.equal(result.modelTested, 'nemotron-3-ultra-free');
-    assert.deepEqual(requestedModels, ['big-pickle', 'nemotron-3-ultra-free']);
-  });
-
-  test('accepts a reasoning completion whose final content is null', async () => {
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      defaultModel: 'mimo-v2.5-free',
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async () =>
-      new Response(
-        JSON.stringify({
-          choices: [
-            {
-              message: {
-                role: 'assistant',
-                content: null,
-                reasoning_content: 'The answer was truncated before final text.',
-              },
-              finish_reason: 'length',
-            },
-          ],
-        }),
-        { status: 200, headers: { 'content-type': 'application/json' } },
-      );
-
-    const result = await testConnection(connection, '', 'mimo-v2.5-free', { fetch: fakeFetch });
-
-    assert.equal(result.ok, true);
-    assert.equal(result.modelTested, 'mimo-v2.5-free');
-  });
-
-  test('bounds all fallback probes by one shared deadline', async () => {
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      defaultModel: 'big-pickle',
-      enabledModelIds: ['big-pickle'],
-      enabled: true,
-      createdAt: 0,
-      updatedAt: 0,
-    };
-    const fakeFetch: typeof globalThis.fetch = async (_input, init) => {
-      return await new Promise<Response>((_resolve, reject) => {
-        const signal = init?.signal;
-        assert.ok(signal);
-        const rejectFromAbort = () => reject(signal.reason);
-        if (signal.aborted) rejectFromAbort();
-        else signal.addEventListener('abort', rejectFromAbort, { once: true });
-      });
-    };
-    const startedAt = Date.now();
-
-    const result = await testConnection(connection, '', undefined, {
-      fetch: fakeFetch,
-      timeoutMs: 40,
-    });
-
-    assert.equal(result.ok, false);
-    assert.equal(result.errorClass, 'timeout');
-    assert.ok(Date.now() - startedAt < 1_000);
-  });
-});
diff --git a/packages/runtime/src/__tests__/opencode-session-header.test.ts b/packages/runtime/src/__tests__/opencode-session-header.test.ts
index 2ce11a8e5b..73611a7b18 100644
--- a/packages/runtime/src/__tests__/opencode-session-header.test.ts
+++ b/packages/runtime/src/__tests__/opencode-session-header.test.ts
@@ -22,15 +22,12 @@ import { describe, test } from 'node:test';
 import { OPENCODE_SESSION_HEADER, withOpenCodeSessionHeader } from '../opencode-session-header.js';
 
 describe('OpenCode session header', () => {
-  test('adds a trimmed stable session identity for OpenCode Go and Free', () => {
+  test('adds a trimmed stable session identity for OpenCode Go', () => {
     assert.deepEqual(withOpenCodeSessionHeader('opencode-go', '  session-a  '), {
       [OPENCODE_SESSION_HEADER]: 'session-a',
     });
     assert.equal(withOpenCodeSessionHeader('opencode', 'session-a'), undefined);
     assert.equal(withOpenCodeSessionHeader('openai', 'session-a'), undefined);
-    assert.deepEqual(withOpenCodeSessionHeader('opencode-free', '  session-a  '), {
-      [OPENCODE_SESSION_HEADER]: 'session-a',
-    });
   });
 
   test('preserves an explicitly configured header case-insensitively', () => {
@@ -43,16 +40,11 @@ describe('OpenCode session header', () => {
       withOpenCodeSessionHeader('opencode-go', 'automatic-session', explicitHeaders),
       explicitHeaders,
     );
-    assert.equal(
-      withOpenCodeSessionHeader('opencode-free', 'automatic-session', explicitHeaders),
-      explicitHeaders,
-    );
   });
 
   test('does not add an empty session identity', () => {
     const headers = { 'X-Maka-Test': 'preserved' };
     assert.equal(withOpenCodeSessionHeader('opencode-go', '   ', headers), headers);
-    assert.equal(withOpenCodeSessionHeader('opencode-free', '   ', headers), headers);
-    assert.equal(withOpenCodeSessionHeader('opencode-free', undefined, headers), headers);
+    assert.equal(withOpenCodeSessionHeader('opencode-go', undefined, headers), headers);
   });
 });
diff --git a/packages/runtime/src/__tests__/provider-conformance.test.ts b/packages/runtime/src/__tests__/provider-conformance.test.ts
index d29f32033d..d91f9ff219 100644
--- a/packages/runtime/src/__tests__/provider-conformance.test.ts
+++ b/packages/runtime/src/__tests__/provider-conformance.test.ts
@@ -1419,36 +1419,6 @@ describe('models.dev provider conformance', () => {
     assert.deepEqual(requests[2]?.body.contents, [{ role: 'user', parts: [{ text: 'Hi' }] }]);
   });
 
-  test('OpenCode Free probes reuse identity across candidates and renew it per operation', async () => {
-    const sessions: Array<string | undefined> = [];
-    const server = await startJsonServer(async (request, response) => {
-      sessions.push(request.headers['x-opencode-session'] as string | undefined);
-      respondJson(response, sessions.length % 2 === 1 ? 429 : 200, {
-        choices: [{ message: { role: 'assistant', content: 'ok' } }],
-      });
-    });
-    const connection: LlmConnection = {
-      slug: 'opencode-free',
-      name: 'OpenCode Free',
-      providerType: 'opencode-free',
-      baseUrl: `${server.url}/zen/v1`,
-      defaultModel: 'nemotron-3-ultra-free',
-      enabledModelIds: ['nemotron-3-ultra-free', 'mimo-v2.5-free'],
-      enabled: true,
-      createdAt: 1,
-      updatedAt: 1,
-    };
-    assert.equal((await testConnection(connection, '')).ok, true);
-    assert.equal((await testConnection(connection, '')).ok, true);
-    assert.equal(sessions.length, 4);
-    for (const session of sessions) {
-      assert.match(session ?? '', /^[0-9a-f-]{36}$/);
-    }
-    assert.equal(sessions[0], sessions[1]);
-    assert.equal(sessions[2], sessions[3]);
-    assert.notEqual(sessions[0], sessions[2]);
-  });
-
   test('OpenCode Go connection probes identify every supported wire request', async () => {
     const requests: Array<{
       url: string;
diff --git a/packages/runtime/src/__tests__/responses-wire-contract.test.ts b/packages/runtime/src/__tests__/responses-wire-contract.test.ts
index bdf98b796f..3c7cbf5287 100644
--- a/packages/runtime/src/__tests__/responses-wire-contract.test.ts
+++ b/packages/runtime/src/__tests__/responses-wire-contract.test.ts
@@ -192,7 +192,7 @@ describe('responses wire contract', () => {
     assert.deepEqual(sessionHeaders, ['session-opencode-go']);
   });
 
-  test('sends OpenCode Go and Free session identities through their model adapters', async () => {
+  test('sends OpenCode Go session identities through their model adapters', async () => {
     const requests: Array<{ url: string; sessionHeader: string | null }> = [];
     const fetch = (async (url: string | URL | Request, init?: RequestInit) => {
       const request = new Request(url, init);
@@ -231,8 +231,6 @@ describe('responses wire contract', () => {
     for (const [providerType, modelId] of [
       ['opencode-go', 'kimi-k2.7-code'],
       ['opencode-go', 'minimax-m3'],
-      ['opencode-free', 'nemotron-3-ultra-free'],
-      ['opencode-free', 'nemotron-3-ultra-free'],
     ] as const) {
       const model = getAIModel({
         connection: conn(providerType),
@@ -255,14 +253,6 @@ describe('responses wire contract', () => {
         url: 'https://opencode.ai/zen/go/v1/messages',
         sessionHeader: 'session-opencode-go',
       },
-      {
-        url: 'https://opencode.ai/zen/v1/chat/completions',
-        sessionHeader: 'session-opencode-free',
-      },
-      {
-        url: 'https://opencode.ai/zen/v1/chat/completions',
-        sessionHeader: 'session-opencode-free',
-      },
     ]);
   });
 
diff --git a/packages/runtime/src/opencode-session-header.ts b/packages/runtime/src/opencode-session-header.ts
index 8ae20f3f2b..360aa4cbfe 100644
--- a/packages/runtime/src/opencode-session-header.ts
+++ b/packages/runtime/src/opencode-session-header.ts
@@ -21,17 +21,14 @@ import type { ProviderType } from '@maka/core/llm-connections';
 
 export const OPENCODE_SESSION_HEADER = 'x-opencode-session';
 
-/** Adds OpenCode Go/Free session identity without overriding an explicit header. */
+/** Adds OpenCode Go session identity without overriding an explicit header. */
 export function withOpenCodeSessionHeader(
   providerType: ProviderType,
   sessionId: string | undefined,
   headers?: Readonly<Record<string, string>>,
 ): Readonly<Record<string, string>> | undefined {
   const normalizedSessionId = sessionId?.trim();
-  if (
-    (providerType !== 'opencode-go' && providerType !== 'opencode-free') ||
-    !normalizedSessionId
-  ) {
+  if (providerType !== 'opencode-go' || !normalizedSessionId) {
     return headers;
   }
   if (Object.keys(headers ?? {}).some((name) => name.toLowerCase() === OPENCODE_SESSION_HEADER)) {
diff --git a/packages/runtime/src/test-connection.ts b/packages/runtime/src/test-connection.ts
index 6558519076..67e9bf890c 100644
--- a/packages/runtime/src/test-connection.ts
+++ b/packages/runtime/src/test-connection.ts
@@ -161,10 +161,8 @@ async function testConnectionStrict(
   if (!defaults) {
     return { ok: false, errorMessage: `Unknown provider type "${connection.providerType}"` };
   }
-  const sessionId =
-    connection.providerType === 'opencode-go' || connection.providerType === 'opencode-free'
-      ? randomUUID()
-      : undefined;
+  if (defaults.retired) return retiredProviderTestResult(connection.providerType);
+  const sessionId = connection.providerType === 'opencode-go' ? randomUUID() : undefined;
   const auth = defaults.authKind;
   const secret = auth === 'none' ? '' : apiKey;
   const testModel = resolveConnectionTestModel(
@@ -176,44 +174,6 @@ async function testConnectionStrict(
   if (!testModel) {
     return { ok: false, errorMessage: 'No model to test' };
   }
-  if (connection.providerType === 'opencode-free' && !model?.trim()) {
-    const brokenModelIds = new Set(defaults.brokenModelIds ?? []);
-    const candidates = [
-      ...new Set([
-        ...connectionEnabledModelIds(connection).filter((id) => !brokenModelIds.has(id)),
-        ...providerFallbackModelIds(defaults),
-      ]),
-    ];
-    if (candidates.length === 0) {
-      return { ok: false, errorMessage: 'No model to test' };
-    }
-    let lastFailure: ConnectionTestResult | undefined;
-    for (let index = 0; index < candidates.length; index += 1) {
-      const candidate = candidates[index]!;
-      const remainingMs = timeoutMs - (Date.now() - t0);
-      if (remainingMs <= 0) {
-        return connectionTestFailure(new ConnectionEffectFetchError('timeout'), t0);
-      }
-      const remainingCandidates = candidates.length - index;
-      const attemptTimeoutMs = Math.max(1, Math.floor(remainingMs / remainingCandidates));
-      try {
-        const result = await testConnectionModel(
-          connection,
-          secret,
-          candidate,
-          fetchFn,
-          t0,
-          attemptTimeoutMs,
-          sessionId,
-        );
-        if (result.ok) return result;
-        lastFailure = result;
-      } catch (error) {
-        lastFailure = connectionTestFailure(error, t0, true);
-      }
-    }
-    return lastFailure ?? connectionTestFailure(new ConnectionEffectFetchError('timeout'), t0);
-  }
 
   return await testConnectionModel(
     connection,
@@ -439,48 +399,10 @@ async function probeOpenAI(
     timeoutMs,
   });
   if (!r.ok) return httpFailure(r, t0);
-  if (connection.providerType === 'opencode-free') {
-    const body = await r.readJson<unknown>();
-    if (!isOpenAIChatCompletion(body)) {
-      return {
-        ok: false,
-        errorMessage: 'OpenCode Free returned no valid chat completion',
-        errorClass: 'provider_unavailable',
-        latencyMs: Date.now() - t0,
-        modelTested: model,
-      };
-    }
-    return { ok: true, latencyMs: Date.now() - t0, modelTested: model };
-  }
   await r.cancel();
   return { ok: true, latencyMs: Date.now() - t0, modelTested: model };
 }
 
-function isOpenAIChatCompletion(value: unknown): boolean {
-  if (!value || typeof value !== 'object') return false;
-  const choices = (value as { choices?: unknown }).choices;
-  return (
-    Array.isArray(choices) &&
-    choices.some((choice) => {
-      if (!choice || typeof choice !== 'object') return false;
-      const message = (choice as { message?: unknown }).message;
-      if (!message || typeof message !== 'object') return false;
-      const completion = message as {
-        content?: unknown;
-        reasoning?: unknown;
-        reasoning_content?: unknown;
-        tool_calls?: unknown;
-      };
-      return (
-        typeof completion.content === 'string' ||
-        typeof completion.reasoning === 'string' ||
-        typeof completion.reasoning_content === 'string' ||
-        (Array.isArray(completion.tool_calls) && completion.tool_calls.length > 0)
-      );
-    })
-  );
-}
-
 async function probeGoogle(
   baseUrl: string,
   apiKey: string,
diff --git a/packages/storage/src/runtime-policy-stores.ts b/packages/storage/src/runtime-policy-stores.ts
index a2adec78f8..1bf8cf9d65 100644
--- a/packages/storage/src/runtime-policy-stores.ts
+++ b/packages/storage/src/runtime-policy-stores.ts
@@ -31,7 +31,6 @@ import type {
   RemoveCatalogConnectionInput,
   RuntimePolicySnapshot,
   SetCredentialInput,
-  MigrateSystemSeedInput,
   SetDefaultConnectionTargetInput,
   UpdateCatalogConnectionInput,
 } from '@maka/core/runtime-policy';
@@ -112,7 +111,6 @@ export interface ConnectionCatalogWriter extends ConnectionCatalogReader {
   setDefaultTarget(
     input: SetDefaultConnectionTargetInput,
   ): Promise<ConnectionCatalogMutationResult>;
-  migrateSystemSeed(input: MigrateSystemSeedInput): Promise<ConnectionCatalogMutationResult>;
 }
 
 export interface CredentialVaultReader {
@@ -226,7 +224,6 @@ function createWriterFacade(coordinator: RuntimePolicyCoordinator): RuntimePolic
       update: (input) => coordinator.updateConnection(input),
       remove: (input) => coordinator.removeConnection(input),
       setDefaultTarget: (input) => coordinator.setDefaultTarget(input),
-      migrateSystemSeed: (input) => coordinator.migrateSystemSeed(input),
     },
     credentialVault: {
       getSnapshot: () => coordinator.getVaultSnapshot(),
diff --git a/packages/storage/src/runtime-policy/connection-catalog-document.ts b/packages/storage/src/runtime-policy/connection-catalog-document.ts
index d26ffd4863..7a4b1dea84 100644
--- a/packages/storage/src/runtime-policy/connection-catalog-document.ts
+++ b/packages/storage/src/runtime-policy/connection-catalog-document.ts
@@ -49,7 +49,6 @@ import {
   type CreateCatalogConnectionInput,
   type RemoveCatalogConnectionInput,
   type SetDefaultConnectionTargetInput,
-  type MigrateSystemSeedInput,
   type UpdateCatalogConnectionInput,
 } from '@maka/core/runtime-policy';
 import { PROVIDER_REGISTRY, reconcileConnectionAfterModelFetch } from '@maka/core/llm-connections';
@@ -412,83 +411,6 @@ export class ConnectionCatalogDocumentOwner {
     return committed(next);
   }
 
-  /**
-   * Built-in seed evolution as ONE atomic catalog mutation. A row whose
-   * `enabledModelIds` still exactly match a historical system seed is provably
-   * system-owned: it follows the current seed, its static inventory is
-   * re-derived from the current build, and a default target the migration
-   * removes is retargeted inside the same document write — so no restart can
-   * observe enabled ids without their inventory, or a nulled default awaiting
-   * a second write. Any other inventory (including a reordering) is a user
-   * selection and is never touched; an already-null default stays null.
-   */
-  async migrateSystemSeed(
-    root: string,
-    input: MigrateSystemSeedInput,
-  ): Promise<ConnectionCatalogMutationResult> {
-    if (!input.enabledModelIds.includes(input.defaultModelId)) {
-      throw codecError('invalid_connection_input', 'Seed default must be in the seed selection');
-    }
-    const current = await this.read(root);
-    const index = current.connections.findIndex(
-      (item) => item.slug === input.slug && item.providerType === input.providerType,
-    );
-    const previous = current.connections[index];
-    const retired = new Set(input.retiredModelIds);
-    const sameIds = (left: readonly string[], right: readonly string[]) =>
-      left.length === right.length && left.every((id, position) => id === right[position]);
-    const isLegacySeed = previous
-      ? input.legacyEnabledModelIds.some((seed) => sameIds(previous.enabledModelIds, seed))
-      : false;
-    const hasRetiredModels = previous
-      ? previous.enabledModelIds.some((id) => retired.has(id)) ||
-        previous.models.some((model) => retired.has(model.id))
-      : false;
-    if (!previous || (!isLegacySeed && !hasRetiredModels)) {
-      return committed(current);
-    }
-    // A legacy seed's stored inventory was the registry's shipped list copied
-    // in at write time. Clearing it is the migration: the resolver prepends
-    // that list from the current build, so the row stops carrying a stale
-    // second copy of it. Any other row keeps its own inventory, minus the
-    // retired ids.
-    const models = isLegacySeed ? [] : previous.models.filter((model) => !retired.has(model.id));
-    const {
-      lastTest: _lastTest,
-      modelSource: _modelSource,
-      modelsFetchedAt: _modelsFetchedAt,
-      ...retained
-    } = previous;
-    const migratedEnabledModelIds = isLegacySeed
-      ? [...input.enabledModelIds]
-      : previous.enabledModelIds.filter((id) => !retired.has(id));
-    const connections = [...current.connections];
-    const modelOverrides = pruneModelOverrides(
-      previous.modelOverrides,
-      Object.keys(previous.modelOverrides ?? {}).filter((id) => !retired.has(id)),
-    );
-    connections[index] = {
-      ...retained,
-      revision: nextRevision(previous.revision),
-      enabledModelIds: migratedEnabledModelIds,
-      models,
-      ...(isLegacySeed || previous.modelSource === undefined
-        ? {}
-        : { modelSource: previous.modelSource, modelsFetchedAt: previous.modelsFetchedAt }),
-      ...(modelOverrides === undefined ? {} : { modelOverrides }),
-    };
-    const target = current.defaultTarget;
-    const defaultTarget =
-      target !== null &&
-      target.connectionId === previous.connectionId &&
-      !migratedEnabledModelIds.includes(target.modelId)
-        ? { connectionId: previous.connectionId, modelId: input.defaultModelId }
-        : target;
-    const next = this.nextDocument(current, connections, defaultTarget);
-    await this.write(root, next);
-    return committed(next);
-  }
-
   async setDefaultTarget(
     root: string,
     rawInput: SetDefaultConnectionTargetInput,
diff --git a/packages/storage/src/runtime-policy/coordinator.ts b/packages/storage/src/runtime-policy/coordinator.ts
index 0d4aff9fe0..8f8b46f350 100644
--- a/packages/storage/src/runtime-policy/coordinator.ts
+++ b/packages/storage/src/runtime-policy/coordinator.ts
@@ -58,7 +58,6 @@ import {
   type RequestHeaderUpdate,
   type SavedRequestHeaders,
   type SetCredentialInput,
-  type MigrateSystemSeedInput,
   type SetDefaultConnectionTargetInput,
   type UpdateCatalogConnectionInput,
   type UpdateNetworkProxyInput,
@@ -469,10 +468,6 @@ export class RuntimePolicyCoordinator {
     );
   }
 
-  migrateSystemSeed(input: MigrateSystemSeedInput) {
-    return this.inLane((root) => this.catalog.migrateSystemSeed(root, input));
-  }
-
   setCredential(rawInput: SetCredentialInput) {
     return this.setCredentialWithAuthority(rawInput, 'client');
   }
diff --git a/scripts/model-metadata/models-dev-api.snapshot.json b/scripts/model-metadata/models-dev-api.snapshot.json
index ea9518ee54..6bc4b3f7c9 100644
--- a/scripts/model-metadata/models-dev-api.snapshot.json
+++ b/scripts/model-metadata/models-dev-api.snapshot.json
@@ -7,7 +7,7 @@
     "etag": "W/\"153362e16f62e2c0b4bbb4d66949e9c5\"",
     "responseSha256": "153362e16f62e2c0b4bbb4d66949e9c5ccc050e0dd7dbd325bbf434f2a8fcbf1"
   },
-  "projectionSha256": "be5b78501eb764e135c9a7c66b609ccb366fb383d5b4f7f532e78974c2ff0e51",
+  "projectionSha256": "da65200d9c31e4883f25bd3e4e6fe5fabe15b803472e85662761ba6950ef7ae8",
   "projection": {
     "metadata": {
       "anthropic": {
@@ -1437,7 +1437,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-01-01",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -1455,7 +1454,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-01-01",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3040,7 +3038,6 @@
           "maxOutputTokens": 16384,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-12-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3061,7 +3058,6 @@
           "contextWindow": 202752,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-02-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3083,7 +3079,6 @@
           "maxOutputTokens": 32768,
           "knowledgeCutoff": "2025-01",
           "lastUpdated": "2026-01-27",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3104,7 +3099,6 @@
           "contextWindow": 196608,
           "maxOutputTokens": 24576,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3123,7 +3117,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": true,
           "lastUpdated": "2026-02-03",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3142,7 +3135,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-07-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3161,7 +3153,6 @@
           "maxOutputTokens": 32768,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-01-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3180,7 +3171,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-02-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3223,7 +3213,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3265,7 +3254,6 @@
           "maxOutputTokens": 64000,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-06-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3289,7 +3277,6 @@
           "maxOutputTokens": 16384,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-12-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3310,7 +3297,6 @@
           "contextWindow": 202752,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-02-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3332,7 +3318,6 @@
           "maxOutputTokens": 32768,
           "knowledgeCutoff": "2025-01",
           "lastUpdated": "2026-01-27",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3354,7 +3339,6 @@
           "inputLimit": 196601,
           "maxOutputTokens": 24576,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3373,7 +3357,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": true,
           "lastUpdated": "2026-02-03",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3392,7 +3375,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-07-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3411,7 +3393,6 @@
           "maxOutputTokens": 32768,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-01-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3430,7 +3411,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-02-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3473,7 +3453,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3515,7 +3494,6 @@
           "maxOutputTokens": 64000,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-06-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3540,7 +3518,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2025-12-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3563,7 +3540,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-04-24",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3587,7 +3563,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-07-31",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3611,7 +3586,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-04-24",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3634,7 +3608,6 @@
           "maxOutputTokens": 384000,
           "structuredOutput": true,
           "lastUpdated": "2026-08-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3658,7 +3631,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-09-10",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3681,7 +3653,6 @@
           "maxOutputTokens": 16384,
           "structuredOutput": true,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3703,7 +3674,6 @@
           "maxOutputTokens": 128000,
           "structuredOutput": true,
           "lastUpdated": "2026-04-07",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3725,7 +3695,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-06-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3744,7 +3713,6 @@
           "description": "Video model for image-to-video generation",
           "lifecycle": "active",
           "lastUpdated": "2026-07-17",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -3760,7 +3728,6 @@
           "description": "Video model for reference-guided video generation",
           "lifecycle": "active",
           "lastUpdated": "2026-07-17",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -3776,7 +3743,6 @@
           "description": "Video model for prompt-driven text-to-video generation",
           "lifecycle": "active",
           "lastUpdated": "2026-07-17",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3796,7 +3762,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-01",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3819,7 +3784,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-04-21",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3842,7 +3806,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3864,7 +3827,6 @@
           "inputLimit": 196601,
           "maxOutputTokens": 32768,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3881,7 +3843,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-03-03",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3898,7 +3859,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-03-03",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -3917,7 +3877,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": true,
           "lastUpdated": "2026-04-27",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3940,7 +3899,6 @@
           "knowledgeCutoff": "2025-04",
           "structuredOutput": true,
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -3962,7 +3920,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-05-21",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -3985,7 +3942,6 @@
           "knowledgeCutoff": "2025-04",
           "structuredOutput": true,
           "lastUpdated": "2026-06-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4007,7 +3963,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-26",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4030,7 +3985,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-03",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4053,7 +4007,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-07-19",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4073,7 +4026,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-05-29",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -4090,7 +4042,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-05-29",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -4112,7 +4063,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2025-12-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4135,7 +4085,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-04-24",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4159,7 +4108,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-07-31",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4183,7 +4131,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-04-24",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4206,7 +4153,6 @@
           "maxOutputTokens": 384000,
           "structuredOutput": true,
           "lastUpdated": "2026-08-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4229,7 +4175,6 @@
           "maxOutputTokens": 16384,
           "structuredOutput": true,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4251,7 +4196,6 @@
           "maxOutputTokens": 128000,
           "structuredOutput": true,
           "lastUpdated": "2026-04-07",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4273,7 +4217,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-06-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4292,7 +4235,6 @@
           "description": "Video model for image-to-video generation",
           "lifecycle": "active",
           "lastUpdated": "2026-07-17",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -4308,7 +4250,6 @@
           "description": "Video model for reference-guided video generation",
           "lifecycle": "active",
           "lastUpdated": "2026-07-17",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -4324,7 +4265,6 @@
           "description": "Video model for prompt-driven text-to-video generation",
           "lifecycle": "active",
           "lastUpdated": "2026-07-17",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -4344,7 +4284,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-01",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4367,7 +4306,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-04-21",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4390,7 +4328,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4412,7 +4349,6 @@
           "inputLimit": 196601,
           "maxOutputTokens": 32768,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4429,7 +4365,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-03-03",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -4446,7 +4381,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-03-03",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -4465,7 +4399,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": true,
           "lastUpdated": "2026-04-27",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4488,7 +4421,6 @@
           "knowledgeCutoff": "2025-04",
           "structuredOutput": true,
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4510,7 +4442,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-05-21",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -4533,7 +4464,6 @@
           "knowledgeCutoff": "2025-04",
           "structuredOutput": true,
           "lastUpdated": "2026-06-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4555,7 +4485,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-26",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4578,7 +4507,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-03",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4601,7 +4529,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-07-19",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -4621,7 +4548,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-05-29",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -4638,7 +4564,6 @@
           "lifecycle": "active",
           "contextWindow": 8192,
           "lastUpdated": "2026-05-29",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -4941,7 +4866,6 @@
           "knowledgeCutoff": "2025-09-23",
           "structuredOutput": true,
           "lastUpdated": "2026-06-09",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -8739,7 +8663,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": false,
           "lastUpdated": "2026-03-25",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -8758,7 +8681,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": false,
           "lastUpdated": "2026-03-25",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -8829,7 +8751,6 @@
           "contextWindow": 4096,
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-01-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -10472,7 +10393,6 @@
           "maxOutputTokens": 128000,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-08-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -10587,7 +10507,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-07-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -10610,7 +10529,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-07-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -10631,7 +10549,6 @@
           "contextWindow": 1048576,
           "maxOutputTokens": 32768,
           "lastUpdated": "2026-09-11",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -10655,7 +10572,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -10923,7 +10839,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 131072,
           "lastUpdated": "2025-10-27",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -10941,7 +10856,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 131072,
           "lastUpdated": "2025-12-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -10959,7 +10873,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 131072,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -10977,7 +10890,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 131072,
           "lastUpdated": "2026-02-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -10995,7 +10907,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 131072,
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -11013,7 +10924,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 131072,
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -11031,7 +10941,6 @@
           "contextWindow": 1048576,
           "maxOutputTokens": 512000,
           "lastUpdated": "2026-06-25",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -11181,7 +11090,6 @@
           "maxOutputTokens": 256000,
           "knowledgeCutoff": "2025-12",
           "lastUpdated": "2025-12-09",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -11844,7 +11752,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-05-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -11862,7 +11769,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 1024,
           "lastUpdated": "2026-04-30",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -11880,7 +11786,6 @@
           "contextWindow": 40960,
           "maxOutputTokens": 40960,
           "lastUpdated": "2025-08-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -11900,7 +11805,6 @@
           "knowledgeCutoff": "2024-07",
           "structuredOutput": false,
           "lastUpdated": "2026-02-04",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -11919,7 +11823,6 @@
           "maxOutputTokens": 40960,
           "knowledgeCutoff": "2025-06",
           "lastUpdated": "2026-01-31",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -11937,7 +11840,6 @@
           "contextWindow": 4096,
           "knowledgeCutoff": "2024-08",
           "lastUpdated": "2025-09-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -11956,7 +11858,6 @@
           "maxOutputTokens": 262000,
           "structuredOutput": true,
           "lastUpdated": "2025-11-25",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -11998,7 +11899,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-07-31",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -12042,7 +11942,6 @@
           "maxOutputTokens": 384000,
           "structuredOutput": true,
           "lastUpdated": "2026-08-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -12064,7 +11963,6 @@
           "maxOutputTokens": 4096,
           "structuredOutput": true,
           "lastUpdated": "2024-07-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12082,7 +11980,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-03-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12100,7 +11997,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-03-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12120,7 +12016,6 @@
           "knowledgeCutoff": "2024-06",
           "structuredOutput": true,
           "lastUpdated": "2025-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12140,7 +12035,6 @@
           "knowledgeCutoff": "2024-06",
           "structuredOutput": true,
           "lastUpdated": "2025-06-03",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12159,7 +12053,6 @@
           "maxOutputTokens": 16384,
           "knowledgeCutoff": "2025-01",
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12180,7 +12073,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2024-08-26",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12198,7 +12090,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-03-10",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12216,7 +12107,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12235,7 +12125,6 @@
           "maxOutputTokens": 4096,
           "structuredOutput": true,
           "lastUpdated": "2024-07-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12254,7 +12143,6 @@
           "maxOutputTokens": 4096,
           "knowledgeCutoff": "2023-12",
           "lastUpdated": "2025-01-01",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12274,7 +12162,6 @@
           "knowledgeCutoff": "2023-12",
           "structuredOutput": true,
           "lastUpdated": "2024-09-18",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12294,7 +12181,6 @@
           "knowledgeCutoff": "2023-12",
           "structuredOutput": true,
           "lastUpdated": "2024-09-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12313,7 +12199,6 @@
           "maxOutputTokens": 32000,
           "structuredOutput": true,
           "lastUpdated": "2024-09-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12332,7 +12217,6 @@
           "maxOutputTokens": 8192,
           "knowledgeCutoff": "2023-12",
           "lastUpdated": "2024-09-25",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12351,7 +12235,6 @@
           "maxOutputTokens": 4096,
           "structuredOutput": true,
           "lastUpdated": "2024-11-26",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12371,7 +12254,6 @@
           "knowledgeCutoff": "2024-02",
           "structuredOutput": true,
           "lastUpdated": "2025-04-01",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12389,7 +12271,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-04-30",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12409,7 +12290,6 @@
           "knowledgeCutoff": "2026-01-04",
           "structuredOutput": true,
           "lastUpdated": "2026-08-10",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12431,7 +12311,6 @@
           "maxOutputTokens": 8192,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2025-09-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12451,7 +12330,6 @@
           "maxOutputTokens": 16384,
           "structuredOutput": false,
           "lastUpdated": "2025-07-26",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12469,7 +12347,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 131072,
           "lastUpdated": "2026-04-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -12487,7 +12364,6 @@
           "contextWindow": 1000000,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-06-01",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12510,7 +12386,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2025-09-25",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12528,7 +12403,6 @@
           "contextWindow": 262144,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-12-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12547,7 +12421,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": true,
           "lastUpdated": "2025-04-01",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12567,7 +12440,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2025-12-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12587,7 +12459,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2025-09-25",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12606,7 +12477,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": true,
           "lastUpdated": "2026-04-29",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12627,7 +12497,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12646,7 +12515,6 @@
           "maxOutputTokens": 8192,
           "structuredOutput": true,
           "lastUpdated": "2026-03-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12667,7 +12535,6 @@
           "contextWindow": 65536,
           "maxOutputTokens": 13108,
           "lastUpdated": "2024-04-17",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12685,7 +12552,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-03-15",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12704,7 +12570,6 @@
           "maxOutputTokens": 262144,
           "knowledgeCutoff": "2024-10",
           "lastUpdated": "2025-09-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12724,7 +12589,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-04-21",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12746,7 +12610,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-07-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12767,7 +12630,6 @@
           "lifecycle": "active",
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-04-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12785,7 +12647,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-07-20",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12802,7 +12663,6 @@
           "lifecycle": "active",
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12820,7 +12680,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-12-01",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12837,7 +12696,6 @@
           "lifecycle": "active",
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-06-30",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12854,7 +12712,6 @@
           "lifecycle": "active",
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-02-26",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -12872,7 +12729,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-03-03",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12890,7 +12746,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 2048,
           "lastUpdated": "2025-07-24",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12908,7 +12763,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-04-15",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12926,7 +12780,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -12947,7 +12800,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-04-10",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -12965,7 +12817,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-10-28",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -12983,7 +12834,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 16384,
           "lastUpdated": "2025-04-07",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13004,7 +12854,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 65536,
           "lastUpdated": "2025-04-07",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13025,7 +12874,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 65536,
           "lastUpdated": "2025-07-25",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13046,7 +12894,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 2048,
           "lastUpdated": "2026-02-10",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -13064,7 +12911,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-03-31",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -13081,7 +12927,6 @@
           "lifecycle": "active",
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13099,7 +12944,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-04-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13118,7 +12962,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-09",
           "lastUpdated": "2024-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13140,7 +12983,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": true,
           "lastUpdated": "2026-04-28",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -13204,7 +13046,6 @@
           "maxOutputTokens": 262144,
           "structuredOutput": true,
           "lastUpdated": "2026-08-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13225,7 +13066,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-01-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13243,7 +13083,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2024-08-26",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13261,7 +13100,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 128000,
           "lastUpdated": "2025-10-28",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -13279,7 +13117,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-03-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13297,7 +13134,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 2048,
           "lastUpdated": "2025-07-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13315,7 +13151,6 @@
           "contextWindow": 32768,
           "maxOutputTokens": 2048,
           "lastUpdated": "2025-05-29",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13334,7 +13169,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-09",
           "lastUpdated": "2025-08-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13355,7 +13189,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-01-17",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13373,7 +13206,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-12-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13391,7 +13223,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-07-20",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13409,7 +13240,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-11-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13427,7 +13257,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-06-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13444,7 +13273,6 @@
           "lifecycle": "active",
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-04-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13462,7 +13290,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 4096,
           "lastUpdated": "2026-01-01",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13479,7 +13306,6 @@
           "lifecycle": "active",
           "maxOutputTokens": 4096,
           "lastUpdated": "2025-01-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13499,7 +13325,6 @@
           "knowledgeCutoff": "2025-08",
           "structuredOutput": true,
           "lastUpdated": "2025-08-14",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13521,7 +13346,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": true,
           "lastUpdated": "2025-08-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13542,7 +13366,6 @@
           "maxOutputTokens": 4096,
           "knowledgeCutoff": "2023-09",
           "lastUpdated": "2025-09-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13561,7 +13384,6 @@
           "maxOutputTokens": 16384,
           "structuredOutput": false,
           "lastUpdated": "2026-07-02",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13578,7 +13400,6 @@
           "lifecycle": "active",
           "structuredOutput": false,
           "lastUpdated": "2025-08-07",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -13595,7 +13416,6 @@
           "lifecycle": "active",
           "structuredOutput": false,
           "lastUpdated": "2025-08-19",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -13614,7 +13434,6 @@
           "maxOutputTokens": 4096,
           "structuredOutput": true,
           "lastUpdated": "2024-11-06",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13633,7 +13452,6 @@
           "maxOutputTokens": 66536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-07-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13652,7 +13470,6 @@
           "maxOutputTokens": 16384,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2025-09-05",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13671,7 +13488,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": true,
           "lastUpdated": "2026-02-23",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -13694,7 +13510,6 @@
           "knowledgeCutoff": "2026-01",
           "structuredOutput": true,
           "lastUpdated": "2026-02-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -13715,7 +13530,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-07-25",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13733,7 +13547,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-02-02",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13754,7 +13567,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-05-28",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -13775,7 +13587,6 @@
           "contextWindow": 1048576,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-07-15",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -13793,7 +13604,6 @@
           "contextWindow": 128000,
           "maxOutputTokens": 8192,
           "lastUpdated": "2025-04-10",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -13812,7 +13622,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-06-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -13834,7 +13643,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-26",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -15353,7 +15161,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2025-10-17",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -15675,7 +15482,6 @@
           "knowledgeCutoff": "2025-05",
           "structuredOutput": true,
           "lastUpdated": "2026-07-31",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -15959,7 +15765,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-12-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16002,7 +15807,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-02-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16651,7 +16455,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 256000,
           "lastUpdated": "2025-08-20",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16671,7 +16474,6 @@
           "maxOutputTokens": 64000,
           "structuredOutput": true,
           "lastUpdated": "2026-07-06",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16694,7 +16496,6 @@
           "maxOutputTokens": 64000,
           "knowledgeCutoff": "2025-06",
           "lastUpdated": "2026-04-20",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16770,7 +16571,6 @@
           "maxOutputTokens": 262144,
           "knowledgeCutoff": "2024-10",
           "lastUpdated": "2026-01-27",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -16853,7 +16653,6 @@
           "maxOutputTokens": 32000,
           "structuredOutput": false,
           "lastUpdated": "2026-07-21",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16875,7 +16674,6 @@
           "maxOutputTokens": 32800,
           "knowledgeCutoff": "2025-06",
           "lastUpdated": "2026-04-21",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -16894,7 +16692,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-08-27",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16916,7 +16713,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-07-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16938,7 +16734,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-08-06",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16956,7 +16751,6 @@
           "contextWindow": 1000000,
           "maxOutputTokens": 131072,
           "lastUpdated": "2026-06-30",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16978,7 +16772,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2025-12-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -16997,7 +16790,6 @@
           "maxOutputTokens": 64000,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -17016,7 +16808,6 @@
           "maxOutputTokens": 64000,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17035,7 +16826,6 @@
           "maxOutputTokens": 32000,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-04-24",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -17072,7 +16862,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2025-01",
           "lastUpdated": "2025-12-23",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17109,7 +16898,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2025-01",
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17163,7 +16951,6 @@
           "maxOutputTokens": 32000,
           "knowledgeCutoff": "2025-01",
           "lastUpdated": "2026-05-31",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -17206,7 +16993,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-05",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -17249,7 +17035,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-09-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -17271,7 +17056,6 @@
           "maxOutputTokens": 128000,
           "knowledgeCutoff": "2026-02",
           "lastUpdated": "2026-03-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17290,7 +17074,6 @@
           "maxOutputTokens": 128000,
           "knowledgeCutoff": "2026-02",
           "lastUpdated": "2026-06-04",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17309,7 +17092,6 @@
           "maxOutputTokens": 262144,
           "structuredOutput": true,
           "lastUpdated": "2026-08-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17329,7 +17111,6 @@
           "knowledgeCutoff": "2025-09-23",
           "structuredOutput": true,
           "lastUpdated": "2026-06-09",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17411,7 +17192,6 @@
           "maxOutputTokens": 65536,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -17433,7 +17213,6 @@
           "maxOutputTokens": 66000,
           "knowledgeCutoff": "2025-06",
           "lastUpdated": "2026-05-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -17452,7 +17231,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2025-06",
           "lastUpdated": "2026-01-28",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -17471,7 +17249,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-21",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -18077,7 +17854,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-21",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -19422,7 +19198,6 @@
           "maxOutputTokens": 64000,
           "structuredOutput": false,
           "lastUpdated": "2026-06-17",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -19766,7 +19541,6 @@
           "maxOutputTokens": 460800,
           "structuredOutput": true,
           "lastUpdated": "2026-08-14",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -20315,7 +20089,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -20358,7 +20131,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-04-02",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -20380,7 +20152,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": false,
           "lastUpdated": "2026-03-25",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -20399,7 +20170,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": false,
           "lastUpdated": "2026-03-25",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -20560,7 +20330,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-08-27",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -20582,7 +20351,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-09-04",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -20625,7 +20393,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-09-10",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -20719,7 +20486,6 @@
           "maxOutputTokens": 8192,
           "structuredOutput": true,
           "lastUpdated": "2026-08-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -21787,7 +21553,6 @@
           "maxOutputTokens": 235929,
           "structuredOutput": true,
           "lastUpdated": "2026-09-08",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -21809,7 +21574,6 @@
           "maxOutputTokens": 235929,
           "structuredOutput": true,
           "lastUpdated": "2026-09-08",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -21912,7 +21676,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": false,
           "lastUpdated": "2026-04-28",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -21956,7 +21719,6 @@
           "maxOutputTokens": 235929,
           "structuredOutput": true,
           "lastUpdated": "2026-03-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -22001,7 +21763,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": false,
           "lastUpdated": "2026-06-04",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -22045,7 +21806,6 @@
           "maxOutputTokens": 8192,
           "structuredOutput": false,
           "lastUpdated": "2026-06-04",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -22088,7 +21848,6 @@
           "maxOutputTokens": 65536,
           "structuredOutput": false,
           "lastUpdated": "2026-08-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -23399,7 +23158,6 @@
           "maxOutputTokens": 8000,
           "structuredOutput": true,
           "lastUpdated": "2026-02-01",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -23592,7 +23350,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-07-21",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -23635,7 +23392,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-07-02",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -25181,7 +24937,6 @@
           "maxOutputTokens": 262144,
           "structuredOutput": false,
           "lastUpdated": "2026-07-30",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -25203,7 +24958,6 @@
           "maxOutputTokens": 262144,
           "structuredOutput": false,
           "lastUpdated": "2026-07-15",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -27916,7 +27670,6 @@
           "contextWindow": 202752,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-02-11",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -27937,7 +27690,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-03-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -27955,7 +27707,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-03-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -27973,7 +27724,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-03-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -27991,7 +27741,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-03-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -28010,7 +27759,6 @@
           "maxOutputTokens": 32768,
           "knowledgeCutoff": "2025-01",
           "lastUpdated": "2026-01-27",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -28031,7 +27779,6 @@
           "contextWindow": 204800,
           "maxOutputTokens": 32768,
           "lastUpdated": "2026-02-12",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -28049,7 +27796,6 @@
           "contextWindow": 131072,
           "maxOutputTokens": 16384,
           "lastUpdated": "2026-03-08",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -28070,7 +27816,6 @@
           "inputLimit": 192000,
           "maxOutputTokens": 128000,
           "lastUpdated": "2026-07-06",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -28116,7 +27861,6 @@
           "inputLimit": 192000,
           "maxOutputTokens": 128000,
           "lastUpdated": "2026-07-06",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -28138,7 +27882,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 64000,
           "lastUpdated": "2026-04-20",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -30877,7 +30620,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 32000,
           "lastUpdated": "2026-08-27",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -30898,7 +30640,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 32000,
           "lastUpdated": "2026-08-27",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -30919,7 +30660,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 32000,
           "lastUpdated": "2026-09-04",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -30937,7 +30677,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 32000,
           "lastUpdated": "2026-09-04",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -30955,7 +30694,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 32000,
           "lastUpdated": "2026-09-08",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -30976,7 +30714,6 @@
           "contextWindow": 256000,
           "maxOutputTokens": 32000,
           "lastUpdated": "2026-09-08",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -31243,7 +30980,6 @@
           "maxOutputTokens": 4096,
           "knowledgeCutoff": "2023-12",
           "lastUpdated": "2024-12-06",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -31262,7 +30998,6 @@
           "maxOutputTokens": 4096,
           "knowledgeCutoff": "2024-08",
           "lastUpdated": "2025-04-05",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -31281,7 +31016,6 @@
           "maxOutputTokens": 4096,
           "knowledgeCutoff": "2024-08",
           "lastUpdated": "2025-04-05",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": false,
@@ -33861,7 +33595,6 @@
           "maxOutputTokens": 32768,
           "structuredOutput": false,
           "lastUpdated": "2026-07-21",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -35556,7 +35289,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -35577,7 +35309,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35596,7 +35327,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -35618,7 +35348,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -35639,7 +35368,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35657,7 +35385,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35675,7 +35402,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35696,7 +35422,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -35717,7 +35442,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35736,7 +35460,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -35758,7 +35481,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -35779,7 +35501,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35797,7 +35518,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35815,7 +35535,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35836,7 +35555,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -35857,7 +35575,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-03-18",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35876,7 +35593,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -35898,7 +35614,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2024-12",
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -35919,7 +35634,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35937,7 +35651,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -35955,7 +35668,6 @@
           "contextWindow": 8192,
           "maxOutputTokens": 8192,
           "lastUpdated": "2026-04-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": false,
@@ -36018,7 +35730,6 @@
           "maxOutputTokens": 98304,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-07-28",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36124,7 +35835,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2026-01-19",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36314,7 +36024,6 @@
           "maxOutputTokens": 131072,
           "knowledgeCutoff": "2025-04",
           "lastUpdated": "2025-12-22",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36336,7 +36045,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-03-16",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36358,7 +36066,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-06-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36380,7 +36087,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-06-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36402,7 +36108,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-14",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36424,7 +36129,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-26",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -36446,7 +36150,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-08-14",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -36758,7 +36461,6 @@
           "maxOutputTokens": 128000,
           "knowledgeCutoff": "2026-01-31",
           "lastUpdated": "2026-06-30",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -37382,7 +37084,6 @@
           "knowledgeCutoff": "2025-01",
           "structuredOutput": true,
           "lastUpdated": "2026-06-12",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -37423,7 +37124,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-07-16",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -38116,7 +37816,6 @@
           "maxOutputTokens": 256000,
           "knowledgeCutoff": "2026-03-01",
           "lastUpdated": "2026-05-29",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -38674,7 +38373,6 @@
           "maxOutputTokens": 64000,
           "knowledgeCutoff": "2025-01-01",
           "lastUpdated": "2025-12-08",
-          "isFree": true,
           "capabilities": {
             "vision": true,
             "reasoning": true,
@@ -38711,7 +38409,6 @@
           "maxOutputTokens": 64000,
           "knowledgeCutoff": "2025-01-01",
           "lastUpdated": "2026-01-19",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
@@ -38826,7 +38523,6 @@
           "maxOutputTokens": 131072,
           "structuredOutput": true,
           "lastUpdated": "2026-06-13",
-          "isFree": true,
           "capabilities": {
             "vision": false,
             "reasoning": true,
diff --git a/scripts/rust/catalog-facts-entry.mjs b/scripts/rust/catalog-facts-entry.mjs
index 26b8968fc0..6fd7551073 100644
--- a/scripts/rust/catalog-facts-entry.mjs
+++ b/scripts/rust/catalog-facts-entry.mjs
@@ -47,7 +47,6 @@ export function outputProviderFacts() {
           runtimeAdapter: defaults.runtimeAdapter,
           protocolAdapters: defaults.protocolAdapters ?? {},
           retired: defaults.retired === true,
-          brokenModelIds: defaults.brokenModelIds ?? [],
           supportsModelDiscovery: providerSupportsModelDiscovery(providerType),
           modelDiscovery: defaults.modelDiscovery,
           fallbackModels,
@@ -138,14 +137,6 @@ export function oracleFixtures() {
       ],
     },
     ...Object.keys(PROVIDER_REGISTRY).map((providerType) => ({ providerType, models: [] })),
-    ...Object.entries(PROVIDER_REGISTRY).flatMap(([providerType, defaults]) =>
-      (defaults.brokenModelIds ?? []).map((id) => ({
-        providerType,
-        models: [{ id }],
-        defaultModel: id,
-        enabledModelIds: [id],
-      })),
-    ),
     {
       providerType: 'openai',
       models: [{ id: ' custom ' }, { id: 'custom', displayName: 'ignored' }],
diff --git a/scripts/sync-model-metadata.mjs b/scripts/sync-model-metadata.mjs
index 1045b5764e..7f65d646f9 100644
--- a/scripts/sync-model-metadata.mjs
+++ b/scripts/sync-model-metadata.mjs
@@ -53,7 +53,6 @@ export const PRICING_EXCLUDED_PROVIDER_TYPES = new Set([
   'kimi-coding-plan',
   'minimax-coding-plan',
   'MiniMax-cn',
-  'opencode-free',
   'opencode-go',
   'stepfun-ai-step-plan',
   'stepfun-step-plan',


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org