You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| GLM-5.1 | 744B | 40B |`zai-org/GLM-5.1-FP8`| HF model card (same base as GLM-5) |
@@ -161,7 +162,7 @@ Authoritative total / active parameter counts for every model in the dashboard.
161
162
-**GLM-5 ≠ 355B.** 355B is GLM-4.5. GLM-5 jumped to 744B / 40B active (256-expert MoE with DSA).
162
163
-**MiniMax-M2.5/M2.7 ≠ 456B.** 456B is the older MiniMax-Text-01 / M1 (32 large experts). The M2 series is a different architecture: 230B / 10B active, 256 small experts.
163
164
-**DeepSeek-R1 is 671B, not 685B.** HF metadata shows 685B because the bundled MTP head adds ~14B; the core MoE is 671B / 37B active.
164
-
-**Kimi K2.5and K2.6 are post-training refinements**, not new pre-trained sizes. Same 1T / 32B / 384-expert backbone as the original K2.
165
+
-**Kimi K2.5, K2.6, and K2.7-Code are post-training refinements**, not new pre-trained sizes. Same 1T / 32B / 384-expert backbone as the original K2. K2.7-Code is a coding-focused refinement of the same backbone.
**`packages/app/src/lib/compare-slug.ts`** (easy to miss — the /compare and /compare-per-dollar pages do NOT derive from `MODEL_CONFIG`):
75
+
76
+
-`COMPARE_MODEL_SLUGS` — add an entry with `{ slug, displayName, dbKeys, label }`. `displayName` must match the `Model` enum value; `dbKeys` lists the DB buckets to query. Place it per the ordering comment (Chinese-lab flagships first, newer family member leads). Without this entry the model is absent from /compare, /compare-per-dollar, the sitemap, and their OG images.
77
+
-`COMPARE_MODEL_ALIASES` — only if a family-level or older-version slug should 308 to the new entry.
78
+
79
+
**`packages/app/src/lib/compare-ssr.ts`**:
80
+
81
+
-`KNOWN_MODELS` — add the display name so `?g_model=` URL overrides validate on compare pages.
82
+
83
+
**`packages/app/src/app/compare/page.tsx`** and **`packages/app/src/app/compare-per-dollar/page.tsx`**:
84
+
85
+
-`DESCRIPTION` — these SEO meta strings hardcode a sample model list ("…, Qwen 3.5 397B-A17B, and more"). Add the new model if it should appear in the catalog blurb.
86
+
87
+
**`packages/app/src/lib/model-architectures.ts`** (optional — powers the per-model architecture diagram on the inference tab):
88
+
89
+
-`MODEL_ARCHITECTURES` — add a `[Model.X]` entry with verified config.json values. Omitted models simply render no diagram (`getModelArchitecture` returns `undefined`), so this is non-blocking but expected for parity with other models.
90
+
91
+
`/about` needs no change — its model list derives from `DB_MODEL_TO_DISPLAY` and includes the new key automatically once `models.ts` is updated.
92
+
93
+
---
94
+
95
+
## Featuring a Day-0 Model
96
+
97
+
When a new model launches and we want to give it the headline treatment, swap the **promotion surfaces** to it. This is separate from [Adding a New Model](#adding-a-new-model) above — the model must **already exist** (`Model.*` enum, `MODEL_CONFIG`, DB mapping) before it can be featured. The promotion surfaces are:
98
+
99
+
-**Launch banner** — the dismissible bar at the top of the landing page
100
+
-**Launch modal** — the "X is live" popup on the landing page
101
+
-**Quick Comparisons preset** — the "X — First Look" card (first entry in `FAVORITE_PRESETS`)
102
+
-**Default model** (optional) — the model the dashboard opens on (`g_model`)
103
+
104
+
### The "retire old, new IDs" pattern
105
+
106
+
Each launch **replaces** the previous day-0 model's surfaces rather than editing them in place. This is deliberate:
107
+
108
+
-**New storage keys** (`inferencex-<slug>-{banner,modal}-dismissed`) so users who dismissed the _previous_ launch banner/modal still see the new one.
109
+
-**Keep the old preset, hide it** (`hidden: true`) instead of deleting it — existing `?preset=<old-slug>-launch` links (old banners, modals, external shares, blog `DashboardCTA`s) must keep resolving.
110
+
-**Generic testIds** (`launch-banner`, `launch-modal`) — launch-agnostic so Cypress selectors don't change every launch.
111
+
112
+
> The current day-0 model is **whatever the single visible (`hidden` unset) `*-launch` preset points to** — detect it, don't assume. As of MiniMax M3 it was DeepSeek V4 Pro.
113
+
114
+
### Derive the identifiers
115
+
116
+
From the model name, derive (MiniMax M3 shown as the worked example):
1. On the outgoing visible `*-launch` preset, add `hidden: true` and update its comment (retired, kept for link compat — same pattern as the existing `dsv4-launch-nvidia` entry).
131
+
2. Prepend a new visible preset as the **first** element of `FAVORITE_PRESETS`:
132
+
```ts
133
+
{
134
+
id: 'SLUG-launch',
135
+
title: 'DISPLAY — First Look',
136
+
description:
137
+
'First benchmarks of DISPLAY across every available GPU. New configurations appear here as they come online.',
138
+
tags: ['<Vendor>', '<Version>', 'New'], // e.g. ['MiniMax', 'M3', 'New']
Narrow `hwFilter` only for a restricted launch (e.g. NVIDIA-only). The broad filter + "as they come online" copy is the intended self-filling behavior even when data is still partial at launch.
151
+
152
+
**`packages/app/src/lib/nudges/registry.tsx`** — rewrite the two launch nudges (only one banner + one modal exist at a time):
-**Banner** (under "Landing banner"): `id: 'SLUG-launch-banner'`, `storageKey: 'inferencex-SLUG-banner-dismissed'`, `title: 'DISPLAY benchmarks are live'`, `testId: 'launch-banner'`, `href`/`onLinkClick` → `/inference?preset=SLUG-launch`, keep the generic `launch_banner_*` analytics events but set `properties: { banner_id: 'SLUG-launch', preset_id: 'SLUG-launch' }`.
156
+
157
+
**`packages/app/src/lib/url-state.ts`**_(only if making it the site default)_:
158
+
159
+
- Set `PARAM_DEFAULTS.g_model` to `'G_MODEL'`. Most launches **leave this unchanged** — only change it for a true flagship (DeepSeek V4 Pro got it; MiniMax M3 did not).
160
+
161
+
### Sync tests
162
+
163
+
-**`packages/app/src/lib/nudges/registry.test.ts`** — update the **sorted** expected-ids array ("contains the expected set of migrated nudges") to the new `SLUG-launch-banner`/`SLUG-launch-modal` ids.
164
+
-**`packages/app/cypress/e2e/nudge-system.cy.ts`** and **`navigation.cy.ts`** — replace the old `inferencex-<old-slug>-{modal,banner}-dismissed` storage keys with the new ones. TestId selectors stay generic (`launch-modal`, `launch-banner`); update any `it(...)` titles that name the old model.
165
+
-**`packages/app/src/lib/url-state.test.ts`**_(only if the default changed)_ — two specs hardcode the default `g_model`; update both.
166
+
167
+
> **Don't touch:** blog MDX `?g_model=…` / `?preset=<old-slug>-launch` links (historical, correct), `packages/constants/src/models.ts` DB-key maps, or the outgoing model's data-mapping / architecture entries — it still exists, it's just no longer the headline.
168
+
169
+
### Verify
170
+
171
+
`pnpm typecheck && pnpm lint && pnpm fmt && pnpm test:unit`, then `rg` for the old slug to confirm only the intentional hidden preset + blog links remain. Final gate: `pnpm test:e2e` and a manual `pnpm dev` check that the banner/modal/preset read `DISPLAY` and `/inference?preset=SLUG-launch` renders data.
-[Data Transforms](./data-transforms.md) — Full pipeline from BenchmarkRow to RenderableGraph: type hierarchy, hardware key construction, derived metrics, memoization strategy
16
16
-[State Ownership](./state-ownership.md) — Which context owns which state, availability filtering cascade, comparison date mechanics, URL param sync
0 commit comments