Skip to content

refactor(models): keep release dates in one table / 模型发布日期统一到单一数据表 - #738

Merged
Oseltamivir merged 2 commits into
masterfrom
models/single-release-date-table
Aug 15, 2026
Merged

refactor(models): keep release dates in one table / 模型发布日期统一到单一数据表#738
Oseltamivir merged 2 commits into
masterfrom
models/single-release-date-table

Conversation

@Oseltamivir

@Oseltamivir Oseltamivir commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Summary

model-architectures.ts carried a releaseDate on each entry, and the unmerged fleet-lifecycle-section branch adds a MODEL_RELEASE_DATES table of its own. They disagree, and the disagreement is user-visible: the architecture table has DeepSeek-V4-Pro releasing 2026-06-08, six weeks after its own first InferenceX sweep on 2026-04-25, and that is the value rendered in the "Released by DeepSeek on …" caption.

Two copies of one fact drift. This PR leaves one table, on master, before the second copy can arrive.

No dates change here, and nothing users see changes. All eight move verbatim into MODEL_RELEASE_DATES — the wrong ones included — so the corrections land in a follow-up as reviewable data changes with sources, rather than buried inside a refactor. ModelArchitecture loses the field; ModelArchitectureDiagram reads getModelReleaseDate(model) and renders exactly what it rendered before.

What keeps them from diverging again

Structurally there is no second table, so the tests guard the ways this can still go wrong. Each was verified by mutation — mutant applied, named test observed failing, then reverted:

Guard Mutation that kills it
An architecture entry may not carry releaseDate re-add the field to DeepSeek_R1
Keys are display names, not DB keys 'DeepSeek-V4-Pro'dsv4
Keys match a Model value same
Dates are real calendar days '2026-01-27''2026-02-30'
No date in the future '2026-01-27''2027-01-27'

The typo guards matter because a bad key never throws: the lookup returns null and every caller silently falls back to its own default, so the Fleet Lifecycle axis would just quietly anchor to the wrong date.

MiniMax-M3 has a developer but no sourced date, so its caption does not render at all. A test names it rather than leaving that invisible.

Verification

  • packages/constants unit: 39/39
  • model-architectures.test.ts: 66/66
  • bun run lint, bun run fmt, bun run typecheck: clean
  • Pre-existing failures on master, untouched by this PR (confirmed by stashing and re-running on a clean tree): api-route-catalog shared-source digest, overview-data AgentX frontier, useThroughputData agentic interpolation.

中文说明

模型发布日期原本由 model-architectures.ts 每条架构自带,而未合并的 fleet-lifecycle-section 分支又新增了一张 MODEL_RELEASE_DATES,两者互相矛盾:架构表将 DeepSeek-V4-Pro 记为 2026-06-08,比其首次 InferenceX 基准测试(2026-04-25)还晚六周,而这个错误值正是页面上 "Released by DeepSeek on …" 所显示的内容。

本 PR 在第二张表出现之前,先在 master 上完成合并,只保留一张表。本 PR 不改动任何日期,也不改变任何界面:八个日期原样迁入 MODEL_RELEASE_DATES(含错误值),修正工作交由后续 PR 以「附来源的数据变更」形式单独审阅,而非夹在重构中。ModelArchitecture 移除该字段,架构图改为调用 getModelReleaseDate(model),渲染结果与此前完全一致。

由于结构上已不存在第二张表,测试转而守卫其余出错方式,并逐一用变异测试验证:架构条目不得再自带 releaseDate;键必须是显示名而非数据库键,且必须对应 Model 枚举值;日期必须是真实存在的日历日,且不得为未来。键名写错不会抛错,只会返回 null 并让调用方静默回退,因此这类守卫尤为必要。MiniMax-M3 有 developer 但无来源日期,其说明文字不会渲染,测试将其显式列出。

验证:constants 单测 39/39,model-architectures.test.ts 66/66,lint/fmt/typecheck 均通过。另有三项单测在 master 上即为失败,与本 PR 无关(已通过 stash 后在干净工作区复现确认)。


Note

Low Risk
Structural refactor with no API or user-visible date changes; risk is mainly wrong keys silently returning null, which the new tests target.

Overview
Consolidates model release dates into a single canonical table in @semianalysisai/inferencex-constants (MODEL_RELEASE_DATES + getModelReleaseDate), instead of per-entry releaseDate on MODEL_ARCHITECTURES and a duplicate table on an unmerged branch.

ModelArchitecture drops releaseDate; ModelArchitectureDiagram now calls getModelReleaseDate(model) for the “Released by … on …” caption. Displayed dates are unchanged in this PR (eight entries moved verbatim, including known bad values slated for a follow-up).

Tests guard against re-divergence: architecture entries must not carry releaseDate; release-date keys must be display names matching Model enum values; dates must be valid calendar days and not in the future; MiniMax-M3 is explicitly listed as developer-without-sourced-date. api-route-catalog digest for models.ts is updated with a review note that no published API contract changed.

Reviewed by Cursor Bugbot for commit 5f0c09e. Bugbot is set up for automated code reviews on this repo. Configure here.

@Oseltamivir
Oseltamivir requested a review from adibarra as a code owner August 14, 2026 15:27
@vercel

vercel Bot commented Aug 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
inferencemax-app Ready Ready Preview Aug 15, 2026 6:03am

Request Review

@blacksmith-sh

This comment has been minimized.

@Oseltamivir

Copy link
Copy Markdown
Contributor Author

Rebased onto #742, which fixes the pre-existing master breakage that was failing this PR's checks. Base retargeted to fix/agentx-frontier-test-drift; please merge #742 first, then this retargets to master.

One addition while restacking: ../constants/src/models.ts is itself under the API-doc digest gate (review area "Published benchmark and TCO model names, aliases, and parameter enums"), and this PR edits that file. That failure had been masked because the overview-data.ts mismatch aborted the same test first. Reviewed: the change adds MODEL_RELEASE_DATES and getModelReleaseDate and touches no published model name, alias, or parameter enum — no endpoint exposes a release date — so the docs stand and only the digest moved. The reasoning sits next to it in api-route-catalog.ts.

Unit suite at this commit: 3367 app + 39 constants, all passing.

中文:已 rebase 到 #742(修复此前 master 上导致本 PR 检查失败的问题),base 暂改为 fix/agentx-frontier-test-drift,请先合并 #742。另外补充一处:../constants/src/models.ts 本身也在 API 文档摘要闸门内(审查范围为"已发布基准与 TCO 模型名称、别名和参数枚举"),而本 PR 修改了该文件;此前该失败被 overview-data.ts 的不匹配提前中断而掩盖。经复核:本次仅新增 MODEL_RELEASE_DATESgetModelReleaseDate,未触碰任何已发布的模型名称、别名或参数枚举,也没有任何端点暴露发布日期,故文档无需变更,仅更新摘要,理由已记录在 api-route-catalog.ts 中。当前提交单测:app 3367 项 + constants 39 项,全部通过。

#736 removed E2E normalized-interactivity gating on purpose — "compute each
Pareto frontier from its selected axes without E2E normalized-interactivity
gating" — and shipped with "full checks intentionally skipped for this focused
change". Master went red: unit tests and e2e suites still asserted the gating.
This updates the tests to the behaviour that was chosen. No src behaviour
changes.

Unit:

- overview-data: an agentic point dominated on total tokens and slower on E2E is
  no longer dropped, so the tier-50 read lands on it (8100) instead of coming
  back null.
- useThroughputData: buildGpuGroups keeps an e2e-dominated point, because
  eligibility is now decided downstream from the selected axes.

The api-route-catalog digest for overview-data.ts was part of this fix until the
rebase onto #743, which changed that file again and re-reviewed the entry. It is
no longer touched here.

E2E:

- The "Advanced" x-axis popover is gone and all four modes are flat tabs, so the
  four specs that opened it now click the tab. Agentic also defaults to
  Interactivity rather than E2E Normalized Interactivity.
- The derived-metrics stub moves to beforeEach. Cypress clears intercepts
  between tests, and these specs relied on the old default fetching during
  `before` while the stub was alive; React Query then held the result for the
  spec. Nothing fetches on load now, so a later switch into that mode issued a
  live request and rendered no chart.
- The URL-restored-mode regression test now restores TTFT. It asked for
  Interactivity, which is the new default, so it could no longer fail.
- overlay-optimal-only asserted that overlay points are hidden because
  trace-less rows cannot join the canonical frontier. They now stand or fall on
  the selected axes like any other point, and all five fixture configs are
  non-dominated there — throughput falls monotonically as interactivity rises —
  so the suite would have asserted five visible either way. It gets a sixth,
  deliberately dominated overlay config, so Optimal Only has something to drop;
  making that point non-dominated fails the test.

Verified on b367003: 3372 unit tests, 600/602 e2e locally, and the four repaired
specs 30/30 at retries=0. The two local e2e failures are inference-replay, which
asserts a scrubber advances after a wall-clock cy.wait(800); it imports nothing
touched here and passes in CI.

中文:#736 有意移除了端到端归一化交互性的前沿门控,并"刻意跳过完整检查",导致 master
转红:单测与 e2e 套件仍在断言已被移除的门控。本提交只把测试对齐到既定行为,不改动任何
源码行为。单测:概览档位读数不再因总 token 被支配而丢弃该点(改为 8100);
buildGpuGroups 保留被 e2e 支配的点。overview-data.ts 的 API 文档摘要原本也在本次修复
范围内,但在 rebase 到 #743 后,该 PR 已再次修改此文件并重新复核了该条目,故此处不再
改动。E2E:Advanced 弹出菜单已移除,四个模式改为平铺标签页;派生指标 stub 移至
beforeEach(Cypress 会在测试间清除拦截);URL 恢复模式的回归测试改用 TTFT(原用
Interactivity 已与新默认值相同而无法失败);overlay-optimal-only 新增一个刻意被支配的
配置,否则该断言无论过滤器如何都会通过。已在 b367003 上验证:单测 3372 项通过,本地
e2e 600/602,四个修复套件在 retries=0 下 30/30。
@Oseltamivir
Oseltamivir force-pushed the fix/agentx-frontier-test-drift branch from 76f6f4f to 6094873 Compare August 15, 2026 06:01
`model-architectures.ts` carried a `releaseDate` per entry, and the unmerged
`fleet-lifecycle-section` branch adds a `MODEL_RELEASE_DATES` table of its own.
They disagree: the architecture table has DeepSeek-V4-Pro releasing 2026-06-08,
six weeks after its own first InferenceX sweep on 2026-04-25, and that is the
value rendered in the "Released by DeepSeek on ..." caption.

Two copies of one fact drift, so there is now one table, on master, before the
second copy can arrive.

This commit changes no dates and nothing users see. All eight move verbatim into
`MODEL_RELEASE_DATES`, wrong ones included, so that the corrections are
reviewable as data changes with sources rather than buried in a refactor.

Guards, each verified by mutation:

- an architecture entry carrying its own `releaseDate` fails the test, so the
  field cannot come back and start diverging again;
- keys must be display names, not DB keys, and must match a `Model` value — a
  mistyped key never throws, it just returns null and the caller silently falls
  back to its own default;
- dates must be real calendar days (`new Date` rolls 2026-02-30 into March) and
  must not be in the future.

`MiniMax-M3` has a developer and no sourced date, so its caption does not
render. The test names it rather than leaving it invisible.

Pre-existing on master and untouched here: three unit tests fail
(api-route-catalog digest, overview-data AgentX frontier, useThroughputData
agentic interpolation).

中文:模型发布日期原本由 `model-architectures.ts` 每条架构自带,而未合并的
`fleet-lifecycle-section` 分支又新增了一张 `MODEL_RELEASE_DATES`,两者互相矛盾:
架构表将 DeepSeek-V4-Pro 记为 2026-06-08,比其首次基准测试还晚六周,而这个错误值
正是页面上"Released by ……"所显示的。本提交在第二张表出现之前先在 master 上完成
合并:不改动任何日期、不改变任何界面,八个日期原样迁入(含错误值),以便后续 PR
以「附来源的数据修正」形式单独审阅。新增四项守卫测试并逐一用变异测试验证:架构条目
不得再自带 `releaseDate`;键必须是显示名且能对应 `Model`;日期必须是真实存在的日历日
且不得为未来。`MiniMax-M3` 尚无来源日期,测试将其显式列出。
@Oseltamivir
Oseltamivir force-pushed the models/single-release-date-table branch from 37df170 to 5f0c09e Compare August 15, 2026 06:02
Base automatically changed from fix/agentx-frontier-test-drift to master August 15, 2026 06:09
@Oseltamivir
Oseltamivir merged commit 70147e5 into master Aug 15, 2026
7 checks passed
@Oseltamivir
Oseltamivir deleted the models/single-release-date-table branch August 15, 2026 06:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant