refactor(models): keep release dates in one table / 模型发布日期统一到单一数据表 - #738
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
c95e386 to
9b20c87
Compare
This comment has been minimized.
This comment has been minimized.
9b20c87 to
7657fbe
Compare
7657fbe to
37df170
Compare
|
Rebased onto #742, which fixes the pre-existing One addition while restacking: Unit suite at this commit: 3367 app + 39 constants, all passing. 中文:已 rebase 到 #742(修复此前 |
0b03fd9 to
76f6f4f
Compare
#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。
76f6f4f to
6094873
Compare
`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` 尚无来源日期,测试将其显式列出。
37df170 to
5f0c09e
Compare
Summary
model-architectures.tscarried areleaseDateon each entry, and the unmergedfleet-lifecycle-sectionbranch adds aMODEL_RELEASE_DATEStable 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.ModelArchitectureloses the field;ModelArchitectureDiagramreadsgetModelReleaseDate(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:
releaseDateDeepSeek_R1'DeepSeek-V4-Pro'→dsv4Modelvalue'2026-01-27'→'2026-02-30''2026-01-27'→'2027-01-27'The typo guards matter because a bad key never throws: the lookup returns
nulland every caller silently falls back to its own default, so the Fleet Lifecycle axis would just quietly anchor to the wrong date.MiniMax-M3has adeveloperbut no sourced date, so its caption does not render at all. A test names it rather than leaving that invisible.Verification
packages/constantsunit: 39/39model-architectures.test.ts: 66/66bun run lint,bun run fmt,bun run typecheck: cleanmaster, untouched by this PR (confirmed by stashing and re-running on a clean tree):api-route-catalogshared-source digest,overview-dataAgentX frontier,useThroughputDataagentic 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.ts66/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-entryreleaseDateonMODEL_ARCHITECTURESand a duplicate table on an unmerged branch.ModelArchitecturedropsreleaseDate;ModelArchitectureDiagramnow callsgetModelReleaseDate(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 matchingModelenum values; dates must be valid calendar days and not in the future;MiniMax-M3is explicitly listed as developer-without-sourced-date.api-route-catalogdigest formodels.tsis 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.