From fe2f28ab4998cb907f1266a8ec2eae8b38814c51 Mon Sep 17 00:00:00 2001 From: Oseltamivir <58582368+Oseltamivir@users.noreply.github.com> Date: Mon, 26 Oct 2026 18:45:49 +0800 Subject: [PATCH] revert: remove four models from profit estimators MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert 8cb48c6f (#1487): drop Muse Spark Open, MiniMax M3.1 Flash, Qwen3.5, and Qwen3.8 Flash Next from both profit estimators, including their default targets, the Muse OpenRouter mapping, docs, skills, and tests. Keep the later 2026-10-25 retargets of the five original models and the Firefox quick-filter Done-button test fix. 中文:从利润估算中移除四个模型 回滚 8cb48c6f(#1487):从两个利润估算页面移除 Muse Spark Open、MiniMax M3.1 Flash、Qwen3.5 和 Qwen3.8 Flash Next,包括其默认目标、Muse 的 OpenRouter 映射、文档、skill 与测试。保留之后 2026-10-25 对原有五个模型的目标调整,以及 Firefox quick-filter Done 按钮的测试修复。 --- docs/tco-calculator.md | 24 +------- .../app/cypress/e2e/profit-estimator.cy.ts | 56 +++---------------- .../app/cypress/support/profit-fixtures.ts | 4 -- .../src/app/api/v1/views/extensions.test.ts | 4 -- .../calculator/profit-estimator.test.ts | 13 ----- .../components/calculator/profit-estimator.ts | 26 +-------- packages/app/src/lib/api/api-route-catalog.ts | 2 +- .../app/src/lib/catalog/data-mappings.test.ts | 7 ++- packages/app/src/lib/catalog/data-mappings.ts | 1 - .../app/src/lib/routing/model-routes.test.ts | 11 +--- packages/app/src/lib/routing/model-routes.ts | 4 -- .../app/src/lib/views-api/docs/extensions.ts | 4 +- .../skills/inferencex-api/integrity.json | 2 +- .../references/dashboard-views.md | 20 ++----- 14 files changed, 26 insertions(+), 152 deletions(-) diff --git a/docs/tco-calculator.md b/docs/tco-calculator.md index 0d214f107..5abf89264 100644 --- a/docs/tco-calculator.md +++ b/docs/tco-calculator.md @@ -460,31 +460,11 @@ gigawatt-year buys for that SKU (`gw-year`). Both tabs offer the same model list. A model needs AgentX (`agentic_traces`) measurements with an interpolable operating point and a token price source. The page intersects its supported routes with live AgentX availability, so a -model without current trace data disappears from the selector. Muse Spark Open, -Qwen3.5, Qwen3.8 Flash Next, and MiniMax M3.1 Flash use OpenRouter pricing by -default; users can supply custom prices. GLM-5 currently has too little trace -data to interpolate a profit row. +model without current trace data disappears from the selector. The public profit view APIs accept any known model and may return empty rows; their `model` parameter is not restricted to the dashboard's list. -The four additions use model-specific default P90 interactivity targets. On -2026-10-24, a sweep of the public profit view API at every 5 tok/s/user from 5 -to 150 found these lowest targets that maximize priced official SKU rows in -that range (using custom token prices to keep price availability independent of -curve coverage): - -| Model | Rows at 45 | Default target (tok/s/user) | Rows at default | -| ------------------ | ---------: | --------------------------: | --------------: | -| Muse Spark Open | 1 | 85 | 7 | -| MiniMax M3.1 Flash | 2 | 125 | 7 | -| Qwen3.5 | 2 | 115 | 10 | -| Qwen3.8 Flash Next | 3 | 90 | 6 | - -Both per-chip-hour and per-GW-year views returned the same row counts at these -targets. New benchmark runs can change the coverage. The target remains an -editable operating-point assumption, not a hosted API speed claim. - -The five earlier models now follow the same rule. A 2026-10-25 public API sweep +Each model uses a default P90 interactivity target. A 2026-10-25 public API sweep at every 5 tok/s/user from 5 to 300 found these lowest targets that maximize priced official SKU rows in that range, again using custom token prices to isolate curve coverage: diff --git a/packages/app/cypress/e2e/profit-estimator.cy.ts b/packages/app/cypress/e2e/profit-estimator.cy.ts index e1779eed7..95103ec9d 100644 --- a/packages/app/cypress/e2e/profit-estimator.cy.ts +++ b/packages/app/cypress/e2e/profit-estimator.cy.ts @@ -13,10 +13,6 @@ import { const OPENROUTER_MODELS = { data: [ - { - id: 'meta/muse-spark-open', - pricing: { prompt: '0.00000125', completion: '0.00000425', input_cache_read: '0.00000015' }, - }, { id: 'moonshotai/kimi-k3', pricing: { prompt: '0.0000006', completion: '0.0000025', input_cache_read: '0.0000001' }, @@ -37,18 +33,6 @@ const OPENROUTER_MODELS = { id: 'deepseek/deepseek-v4.1-flash', pricing: { prompt: '0.00000015', completion: '0.0000006', input_cache_read: '0.000000003' }, }, - { - id: 'minimax/minimax-m3.1-flash', - pricing: { prompt: '0.00000015', completion: '0.0000006', input_cache_read: '0.00000003' }, - }, - { - id: 'qwen/qwen3.5-397b-a17b', - pricing: { prompt: '0.0000005', completion: '0.0000036', input_cache_read: '0.00000005' }, - }, - { - id: 'qwen/qwen3.8-flash', - pricing: { prompt: '0.00000015', completion: '0.00000047', input_cache_read: '0.00000002' }, - }, ], }; @@ -85,31 +69,6 @@ function coverageRows(dbKey: string, target: number) { }); } -describe('New agentic models on profit estimators', () => { - for (const [slug, label, dbKey, target] of [ - ['muse-spark-open', 'Muse Spark Open', 'musespark', 85], - ['minimax-m31-flash', 'MiniMax M3.1 Flash', 'minimaxm31flash', 125], - ['qwen-3-5', 'Qwen3.5', 'qwen3.5', 115], - ['qwen-3-8-flash-next', 'Qwen3.8 Flash Next', 'qwen3.8next', 90], - ] as const) { - for (const basis of ['profit-estimator', 'profit-estimator-per-gigawatt'] as const) { - it(`opens ${label} on ${basis} with more measured SKUs than target 45`, () => { - stubOpenRouter(); - cy.intercept('GET', '/api/v1/benchmarks*', { body: coverageRows(dbKey, target) }); - cy.visit(`/${basis}/${slug}`, { onBeforeLoad: suppressNudges }); - cy.location('pathname').should('eq', `/${basis}/${slug}`); - cy.get('[data-testid="profit-model-selector"]').should('contain.text', label); - cy.get('button#profit-price-source').should('contain.text', 'OpenRouter'); - cy.get('[data-testid="profit-target-input"]').should('have.value', String(target)); - chart().find('text.revenue-label').should('have.length', 4); - - cy.get('[data-testid="profit-target-input"]').clear().type('45').blur(); - chart().find('text.revenue-label').should('have.length', 1); - }); - } - } -}); - describe('Earlier agentic models on profit estimators', () => { for (const [slug, label, dbKey, previousTarget, target, previousBars] of [ ['kimi-k3', 'Kimi K3', 'kimik3', 45, 60, 1], @@ -639,16 +598,12 @@ describe('Profit Estimator per GW', () => { cy.get('[data-testid="profit-precision-selector"]').should('not.exist'); cy.get('[data-testid="profit-model-selector"]').should('contain.text', 'Kimi K3').click(); cy.get('[role="option"]') - .should('have.length', 9) - .and('contain.text', 'Muse Spark Open') + .should('have.length', 5) .and('contain.text', 'Kimi K3') .and('contain.text', 'GLM5.2/GLM5.3') .and('contain.text', 'MiniMax M3') .and('contain.text', 'DeepSeek V4 Pro') - .and('contain.text', 'DeepSeek V4.1 Flash') - .and('contain.text', 'MiniMax M3.1 Flash') - .and('contain.text', 'Qwen3.5') - .and('contain.text', 'Qwen3.8 Flash Next'); + .and('contain.text', 'DeepSeek V4.1 Flash'); cy.get('body').type('{esc}'); cy.get('button#profit-price-source').click(); cy.get('[role="option"]') @@ -1148,9 +1103,12 @@ describe('Profit Estimator per GW — per-model route', () => { cy.get('[data-testid="profit-scenario-selector"]').should('not.exist'); cy.get('[data-testid="profit-fixed-workload-note"]').should('not.exist'); }); - cy.request(`${prefix}/profit-estimator-per-gigawatt/qwen-3-5`) + cy.request({ + url: `${prefix}/profit-estimator-per-gigawatt/qwen-3-5`, + failOnStatusCode: false, + }) .its('status') - .should('eq', 200); + .should('eq', 404); }); } }); diff --git a/packages/app/cypress/support/profit-fixtures.ts b/packages/app/cypress/support/profit-fixtures.ts index 3045bfde4..3595bea8c 100644 --- a/packages/app/cypress/support/profit-fixtures.ts +++ b/packages/app/cypress/support/profit-fixtures.ts @@ -6,15 +6,11 @@ export const PROFIT_MINIMAX_DB_KEY = 'minimaxm3'; export const PROFIT_DEEPSEEK_DB_KEY = 'dsv4'; export const PROFIT_DEEPSEEK_FLASH_DB_KEY = 'dsv41flash'; const PROFIT_DB_KEY_BY_DISPLAY_MODEL: Record = { - 'Muse-Spark-Open': 'musespark', 'Kimi-K3': PROFIT_MODEL_DB_KEY, 'GLM-5.2': PROFIT_GLM_DB_KEY, 'MiniMax-M3': PROFIT_MINIMAX_DB_KEY, 'DeepSeek-V4-Pro': PROFIT_DEEPSEEK_DB_KEY, 'DeepSeek-V4.1-Flash': PROFIT_DEEPSEEK_FLASH_DB_KEY, - 'MiniMax-M3.1-Flash': 'minimaxm31flash', - 'Qwen-3.5-397B-A17B': 'qwen3.5', - 'Qwen3.8-Flash-Next': 'qwen3.8next', }; const PROFIT_DB_KEYS = Object.values(PROFIT_DB_KEY_BY_DISPLAY_MODEL); export const PROFIT_DATE = '2026-08-31'; diff --git a/packages/app/src/app/api/v1/views/extensions.test.ts b/packages/app/src/app/api/v1/views/extensions.test.ts index 8afe9fe7b..eecc59a2c 100644 --- a/packages/app/src/app/api/v1/views/extensions.test.ts +++ b/packages/app/src/app/api/v1/views/extensions.test.ts @@ -327,10 +327,6 @@ describe('new dashboard projections', () => { [Model.MiniMax_M3, 'minimaxm3', 115], [Model.DeepSeek_V4_Pro, 'dsv4', 170], [Model.DeepSeek_V4_1_Flash, 'dsv41flash', 150], - [Model.Muse_Spark_Open, 'musespark', 85], - [Model.MiniMax_M3_1_Flash, 'minimaxm31flash', 125], - [Model.Qwen3_5, 'qwen3.5', 115], - [Model.Qwen3_8_Flash_Next, 'qwen3.8next', 90], ] as const)( 'prices supported agentic model %s at its default through both public profit views', async (model, dbKey, target) => { diff --git a/packages/app/src/components/calculator/profit-estimator.test.ts b/packages/app/src/components/calculator/profit-estimator.test.ts index 2122a115e..5d1c8c515 100644 --- a/packages/app/src/components/calculator/profit-estimator.test.ts +++ b/packages/app/src/components/calculator/profit-estimator.test.ts @@ -333,19 +333,6 @@ describe('parseTokenPriceInput', () => { }); describe('profitModelDefaults', () => { - it.each([ - [Model.Muse_Spark_Open, 85], - [Model.MiniMax_M3_1_Flash, 125], - [Model.Qwen3_5, 115], - [Model.Qwen3_8_Flash_Next, 90], - ] as const)('opens %s at a 5-step target chosen for broader SKU coverage', (model, target) => { - const defaults = profitModelDefaults(model); - expect(defaults.interactivity).toBe(target); - expect(defaults.interactivity % 5).toBe(0); - expect(defaults.listPricing).toBeNull(); - expect(defaults.labCutPct).toBe(DEFAULT_LAB_CUT_PCT); - }); - it.each([ [Model.Kimi_K3, 60], [Model.GLM_5_2, 135], diff --git a/packages/app/src/components/calculator/profit-estimator.ts b/packages/app/src/components/calculator/profit-estimator.ts index 27450b374..61241f70b 100644 --- a/packages/app/src/components/calculator/profit-estimator.ts +++ b/packages/app/src/components/calculator/profit-estimator.ts @@ -61,10 +61,8 @@ export interface ProfitModelDefaults { } /** - * Per-model defaults. On 2026-10-24, the four newest models took the first - * 5-tok/s/user step that maximized priced AgentX SKU coverage in a 5–150 sweep: - * Muse Spark Open 85, MiniMax M3.1 Flash 125, Qwen3.5 115, Qwen3.8 Flash Next 90. - * On 2026-10-25, the same rule over 5–300 selected Kimi K3 60, GLM 5.2/5.3 + * Per-model defaults. On 2026-10-25, the first 5-tok/s/user step that + * maximized priced AgentX SKU coverage in a 5–300 sweep selected Kimi K3 60, GLM 5.2/5.3 * 135, MiniMax M3 115, DeepSeek V4 Pro 170, and DeepSeek V4.1 Flash 150. * These editable P90 targets show measured configurations; they are not claims * about hosted API speeds. Curves outside the target range stay unpriced. @@ -77,26 +75,6 @@ export interface ProfitModelDefaults { * list prices and a 0% fee because their weights ship under the MIT license. */ const PROFIT_MODEL_DEFAULTS: Partial> = { - [Model.Muse_Spark_Open]: { - interactivity: 85, - labCutPct: DEFAULT_LAB_CUT_PCT, - listPricing: null, - }, - [Model.MiniMax_M3_1_Flash]: { - interactivity: 125, - labCutPct: DEFAULT_LAB_CUT_PCT, - listPricing: null, - }, - [Model.Qwen3_5]: { - interactivity: 115, - labCutPct: DEFAULT_LAB_CUT_PCT, - listPricing: null, - }, - [Model.Qwen3_8_Flash_Next]: { - interactivity: 90, - labCutPct: DEFAULT_LAB_CUT_PCT, - listPricing: null, - }, [Model.DeepSeek_V4_Pro]: { interactivity: 170, labCutPct: 0, diff --git a/packages/app/src/lib/api/api-route-catalog.ts b/packages/app/src/lib/api/api-route-catalog.ts index 2f26033a8..96a7d18d8 100644 --- a/packages/app/src/lib/api/api-route-catalog.ts +++ b/packages/app/src/lib/api/api-route-catalog.ts @@ -1361,7 +1361,7 @@ export const apiContractSourceDigests = [ }, { source: 'src/components/calculator/profit-estimator.ts', - sourceSha256: '7ccc4a040faef875fef299bd4c29f33645a914efc69f9b73b53cda676d7b4aa7', + sourceSha256: '0eeaaed822068e9aa782e6b40ad1bb9ae31f70ef755f67622767f3b89ade4d1a', reviewArea: { en: 'Shared profit-estimator defaults and calculation parity, including model-specific target assumptions.', zh: '利润估算器的共享默认值与计算一致性,包括各模型的目标假设。', diff --git a/packages/app/src/lib/catalog/data-mappings.test.ts b/packages/app/src/lib/catalog/data-mappings.test.ts index 1599ab5dd..b61d7ad83 100644 --- a/packages/app/src/lib/catalog/data-mappings.test.ts +++ b/packages/app/src/lib/catalog/data-mappings.test.ts @@ -396,12 +396,15 @@ describe('getModelLabel', () => { }); describe('getOpenRouterModelId', () => { - it('maps catalog models to exact OpenRouter ids', () => { + it('maps catalog models to exact OpenRouter ids without inventing one for Muse', () => { for (const model of MODEL_OPTIONS) { + if (model === Model.Muse_Spark_Open) { + expect(getOpenRouterModelId(model)).toBeNull(); + continue; + } expect(getOpenRouterModelId(model), model).toMatch(/^[^/]+\/[^/]+$/u); } expect(getOpenRouterModelId(Model.DeepSeek_V4_Pro)).toBe('deepseek/deepseek-v4-pro-0813'); - expect(getOpenRouterModelId(Model.Muse_Spark_Open)).toBe('meta/muse-spark-open'); }); }); diff --git a/packages/app/src/lib/catalog/data-mappings.ts b/packages/app/src/lib/catalog/data-mappings.ts index f8f69131d..b7eee9bf1 100644 --- a/packages/app/src/lib/catalog/data-mappings.ts +++ b/packages/app/src/lib/catalog/data-mappings.ts @@ -74,7 +74,6 @@ const MODEL_CONFIG: Record = { label: 'Muse Spark Open 816B', prefix: 'musespark', category: 'default', - openRouterModelId: 'meta/muse-spark-open', logo: 'muse-mascot.webp', }, [Model.DeepSeek_V4_Pro]: { diff --git a/packages/app/src/lib/routing/model-routes.test.ts b/packages/app/src/lib/routing/model-routes.test.ts index 125c809db..c90128f87 100644 --- a/packages/app/src/lib/routing/model-routes.test.ts +++ b/packages/app/src/lib/routing/model-routes.test.ts @@ -175,23 +175,16 @@ describe('modelRoutePathnameRewrite', () => { }); describe('modelRoutesForTab', () => { - it('serves agentic models with priced interpolation on both profit estimators and every model elsewhere', () => { + it('serves Kimi K3, GLM 5.2/5.3, MiniMax M3, DeepSeek V4 Pro and DeepSeek V4.1 Flash on the profit estimators and every model elsewhere', () => { for (const tab of ['profit-estimator', 'profit-estimator-per-gigawatt'] as const) { expect(modelRoutesForTab(tab).map((route) => route.model)).toEqual([ - Model.Muse_Spark_Open, Model.DeepSeek_V4_Pro, Model.DeepSeek_V4_1_Flash, Model.Kimi_K3, Model.MiniMax_M3, - Model.MiniMax_M3_1_Flash, Model.GLM_5_2, - Model.Qwen3_5, - Model.Qwen3_8_Flash_Next, ]); - expect(modelRouteAvailableForTab(tab, Model.Qwen3_5)).toBe(true); - expect(modelRouteAvailableForTab(tab, Model.Qwen3_8_Flash_Next)).toBe(true); - expect(modelRouteAvailableForTab(tab, Model.MiniMax_M3_1_Flash)).toBe(true); - expect(modelRouteAvailableForTab(tab, Model.Muse_Spark_Open)).toBe(true); + expect(modelRouteAvailableForTab(tab, Model.Qwen3_5)).toBe(false); expect(modelRouteAvailableForTab(tab, Model.GLM_5_2)).toBe(true); expect(modelRouteAvailableForTab(tab, Model.MiniMax_M3)).toBe(true); expect(modelRoutesForTab(tab).find((route) => route.model === Model.MiniMax_M3)?.slug).toBe( diff --git a/packages/app/src/lib/routing/model-routes.ts b/packages/app/src/lib/routing/model-routes.ts index 96b69ac7d..52d9c12f2 100644 --- a/packages/app/src/lib/routing/model-routes.ts +++ b/packages/app/src/lib/routing/model-routes.ts @@ -34,15 +34,11 @@ export function defaultRouteModel(tab: ModelRouteTab): Model { } const PROFIT_ESTIMATOR_MODELS: readonly Model[] = [ - Model.Muse_Spark_Open, Model.Kimi_K3, Model.GLM_5_2, Model.MiniMax_M3, - Model.MiniMax_M3_1_Flash, Model.DeepSeek_V4_Pro, Model.DeepSeek_V4_1_Flash, - Model.Qwen3_5, - Model.Qwen3_8_Flash_Next, ]; const MODEL_ROUTE_TAB_MODELS: Partial> = { 'profit-estimator': PROFIT_ESTIMATOR_MODELS, diff --git a/packages/app/src/lib/views-api/docs/extensions.ts b/packages/app/src/lib/views-api/docs/extensions.ts index 42775c276..8866d32e6 100644 --- a/packages/app/src/lib/views-api/docs/extensions.ts +++ b/packages/app/src/lib/views-api/docs/extensions.ts @@ -72,8 +72,8 @@ const PARAMETER_NOTES: Record = { '比较范围结束日期 YYYY-MM-DD,不得早于 start。历史视图将其用作含终点的数据范围。', ], target: [ - 'Positive operating-point target, tok/s/user in interactivity-to-throughput mode. Both profit views use model-specific defaults: Kimi K3 60, GLM-5.2/5.3 135, MiniMax M3 115, DeepSeek V4 Pro 170, DeepSeek V4.1 Flash 150, Muse Spark Open 85, MiniMax M3.1 Flash 125, Qwen3.5 115, and Qwen3.8 Flash Next 90 tok/s/user. Dashboard links use //target/ route segments; this API continues to accept the target query parameter. These are editable SKU-coverage assumptions, not OpenRouter P90-equivalent measurements.', - '正数工作点目标;交互性转吞吐量模式下单位为 tok/s/user。两个利润视图按模型设置默认值:Kimi K3 为 60、GLM-5.2/5.3 为 135、MiniMax M3 为 115、DeepSeek V4 Pro 为 170、DeepSeek V4.1 Flash 为 150、Muse Spark Open 为 85、MiniMax M3.1 Flash 为 125、Qwen3.5 为 115、Qwen3.8 Flash Next 为 90 tok/s/user。仪表板链接通过 //target/ 路径片段传递目标值;本 API 仍使用 target 查询参数。这些默认值是用于扩大 SKU 覆盖范围的可修改假设,并非与 OpenRouter P90 等价的实测值。', + 'Positive operating-point target, tok/s/user in interactivity-to-throughput mode. Both profit views use model-specific defaults: Kimi K3 60, GLM-5.2/5.3 135, MiniMax M3 115, DeepSeek V4 Pro 170 and DeepSeek V4.1 Flash 150 tok/s/user. Dashboard links use //target/ route segments; this API continues to accept the target query parameter. These are editable SKU-coverage assumptions, not OpenRouter P90-equivalent measurements.', + '正数工作点目标;交互性转吞吐量模式下单位为 tok/s/user。两个利润视图按模型设置默认值:Kimi K3 为 60、GLM-5.2/5.3 为 135、MiniMax M3 为 115、DeepSeek V4 Pro 为 170、DeepSeek V4.1 Flash 为 150 tok/s/user。仪表板链接通过 //target/ 路径片段传递目标值;本 API 仍使用 target 查询参数。这些默认值是用于扩大 SKU 覆盖范围的可修改假设,并非与 OpenRouter P90 等价的实测值。', ], costProvider: [ 'costh = owning, costr = renting. Profit views additionally accept custom with customCosts. No costn provider.', diff --git a/packages/skills/skills/inferencex-api/integrity.json b/packages/skills/skills/inferencex-api/integrity.json index 7dd040c1c..8f9eddf82 100644 --- a/packages/skills/skills/inferencex-api/integrity.json +++ b/packages/skills/skills/inferencex-api/integrity.json @@ -9,7 +9,7 @@ "references/cli-contract.md": "4f070877eeefffad2860c58f79f68432fbe27aa21fc578a1c696f0309a3d7d7b", "references/cli.md": "11e1183f7ed70d669019e8435ac16a6a9f873de027507b8850a9943f6659bfd9", "references/collectivex.md": "f79cf8e2779a9289ab69f79f4a4b338e0b9a5f76a3750a3e969f33a744e726a1", - "references/dashboard-views.md": "333e4473a6027a45992a01bc2e908437dc6b5c43542dd481b0929ba95027f506", + "references/dashboard-views.md": "db9ba48896f75acf6531bd49d26062ee09307c6348f1e10b055cf62e093df85d", "references/offline-exports.md": "95aa565dcd4c9e592159baa560a9a58217bc61e395de1c6daf0576795c7f4ec9", "references/pareto.md": "1b4d2d163f982e3f2d97addce310789eae9c1e5badd82dd7501708c9e0385027", "references/powerx.md": "5af5527d54a7e6191a5769080c122638b333b1ceb59e19fdee7df662a5cd3c8f", diff --git a/packages/skills/skills/inferencex-api/references/dashboard-views.md b/packages/skills/skills/inferencex-api/references/dashboard-views.md index f2ad25963..6515340c6 100644 --- a/packages/skills/skills/inferencex-api/references/dashboard-views.md +++ b/packages/skills/skills/inferencex-api/references/dashboard-views.md @@ -95,21 +95,9 @@ unavailable. Pass `cacheHitMode=actual` for measured cache behavior; dashboard links preserve that choice as `/cache-hit-mode/actual`. Report the resolved `params.cacheHitMode` alongside the pricing assumptions. -The four newly supported models use separate defaults on both views. They are -the lowest multiples of 5 tok/s/user that reached each model's maximum priced -official SKU count in a 5–150 sweep of the public view API on 2026-10-24: - -| Model | Default `target` | Priced rows at 45 → default | -| ------------------ | ---------------: | --------------------------: | -| Muse Spark Open | 85 | 1 → 7 | -| MiniMax M3.1 Flash | 125 | 2 → 7 | -| Qwen3.5 | 115 | 2 → 10 | -| Qwen3.8 Flash Next | 90 | 3 → 6 | - -These are editable P90 operating-point assumptions. Always report the resolved -`params.target`; newly ingested runs can change SKU coverage. - -The other five models use the same rule in a 5–300 sweep on 2026-10-25: +Both views use model-specific defaults: the lowest multiples of 5 tok/s/user +that reached each model's maximum priced official SKU count in a 5–300 sweep +of the public view API on 2026-10-25: | Model | Previous `target` | Default `target` | Priced rows before → default | | ------------------- | ----------------: | ---------------: | ---------------------------: | @@ -192,7 +180,7 @@ which API selectors belong together. | `calculator` | Model/sequence/run/date, precisions/GPUs, percentile, target/mode, token type, owning/renting cost, TCO, power budget, cost cap, hide-above-limit and public unofficial runs. JSON or CSV. | | `first-token` | Benchmark selection plus 1–8 positive TTFT caps in seconds, minimum interactivity, cost provider and token type. Shared dashboard winner selection. | | `cache-reuse` | AgentX selection plus exact `config` from returned configurations and `recipe` from data.recipes. Cache-reuse curves retain official versus unofficial evidence. | -| `profit-estimator` | AgentX selection, comparison dates/runs, target, utilization, lab revenue share, list/OpenRouter/custom token prices, own/rent/custom chip costs, TCO, actual/theoretical cache-hit mode and provisioned/modeled/compare power. USD/chip-hour. The dashboard offers models with usable AgentX curves and a price source, including Muse Spark Open, Qwen3.5, Qwen3.8 Flash Next, and MiniMax M3.1 Flash; the API accepts other known models and may return empty rows. | +| `profit-estimator` | AgentX selection, comparison dates/runs, target, utilization, lab revenue share, list/OpenRouter/custom token prices, own/rent/custom chip costs, TCO, actual/theoretical cache-hit mode and provisioned/modeled/compare power. USD/chip-hour. | | `profit-estimator-per-gigawatt` | Same selectors; USD/GW-year basis and owning-cost default. | | `fleet` | Model/sequence/precision/GPUs, target/percentile, TCO/token type/cost provider, MW, input/output prices, ramp, cache discount, MTBI, recovery, horizon and metric. JSON or CSV. | | `evaluation` | Model, task, date, precision and GPU selection; public unofficial runs remain separately labeled and independent of the official date cutoff. JSON or CSV. |