fix(model-metadata): follow the models.dev provider split and body-only override wave - #5643
Conversation
…ly override wave The weekly Model metadata upkeep workflow has failed three weeks in a row (2069716 / 3481615 / 3557136) before opening its review pull request: - models.dev split the kimi-for-coding provider into kimi-code-plan-cn and kimi-code-plan-global. The kimi-coding-plan access path now reads kimi-code-plan-cn, whose official endpoint is the kimi.com API URL the old provider carried, so configured connections keep their base URL. - fireworks-ai/models/minimax-m2p7 now ships a provider override with only a body member. Only npm selects a runtime adapter, so an override without npm projects to no row; unknown override keys still reject. Regenerating the snapshot surfaced the fallback-lifecycle contract: the deepseek and fireworks-ai fallback lists were serving models models.dev now marks deprecated, and the kimi-for-coding model row moved under the renamed provider. Fireworks derives its list, so it now filters deprecated ids like the zenmux derivation and anchors on the live kimi-k3; DeepSeek's hand list narrows to the current generation (deepseek-flash, deepseek-v4-pro). Offers change only; an id a user already chose still sends. The regenerated snapshot bundles the upstream wave this PR's registry edits reference (e.g. deepseek-flash only exists in the fresh catalog). Refs #4398 Generated-by: Maka (GLM-5.3-Flash)
cfa08b0 to
0c8da28
Compare
… predecessors The registry's DeepSeek fallback list now recommends deepseek-flash first, but APPLY_PATCH_MODELS did not carry the id, so new DeepSeek connections resolved to no ApplyPatch profile while the settings switch still offered the tool. Resolve and test the profile the same way the previous default was pinned. Found by an adversarial review of #5643. Generated-by: Maka (GLM-5.3-Flash)
jackwener
left a comment
There was a problem hiding this comment.
I reviewed 8e01030890705fe0c5642f8f026cc66ff3de1f7b.
No P0–P2.
The weekly refresh was failing on two upstream shape changes, so the snapshot could not update. Mapping kimi-coding-plan to kimi-code-plan-cn keeps the same https://api.kimi.com/coding/v1 URL. A provider override without npm (body-only) now projects to no adapter row; unknown keys still reject the refresh. DeepSeek and Fireworks offer lists move to the current generation; an id a user already chose still sends. deepseek-flash gets the same ApplyPatch default as the V4 Flash line.
Hosted test was not waited on.
简体中文
我审查了 8e01030890705fe0c5642f8f026cc66ff3de1f7b。没有 P0–P2。
kimi-coding-plan 跟到 kimi-code-plan-cn,API URL 没变。没有 npm 的 override 不再整次刷新失败。DeepSeek / Fireworks 新连接的默认列表换成当前代,已选 id 仍能发。本审查没有等 hosted test。
Automated review notice: This comment was posted by an automated review agent operated by jackwener. It is not an independent human review and does not replace one.
Summary
The weekly Model metadata upkeep workflow has failed at the refresh step three weeks in a row (runs 34093584258, 34816157578, 35571361577) before it could open its review pull request, so the committed snapshot trails models.dev by ~120 entries (claude-opus-5-5, GLM-5.3, GPT-6-Luna, …). Two upstream shape changes reject the whole refresh; this PR accepts them and ships the regenerated snapshot the changed mappings require.
Upstream changes accepted:
kimi-for-codingin favor ofkimi-code-plan-cnandkimi-code-plan-global. Thekimi-coding-planaccess path now readskimi-code-plan-cn, which serves the officialhttps://api.kimi.com/coding/v1endpoint — the same URL the old provider row carried — so configured connections keep their base URL and no new access path is introduced.fireworks-ai/accounts/fireworks/models/minimax-m2p7now ships a provider override whose only member isbody(request-body defaults). Onlynpmselects a runtime adapter, so an override withoutnpmnow projects to no row; unknown override keys still reject the refresh.Falling out of regenerating the snapshot, the fallback-lifecycle contract (
provider catalog contract — fallback lifecycle) caught two offer lists serving models models.dev now marks deprecated or removed: fireworks-ai's derived list now filters deprecated ids like the zenmux derivation and anchors on the livekimi-k3(was the deprecatedkimi-k2p6), and DeepSeek's hand-written list narrows to the current generationdeepseek-flash+deepseek-v4-pro. Offers change only; an id a user already chose still sends, and stored hand metadata for the retired ids stays for users who configure them manually.The regenerated snapshot is bundled because the registry edits reference ids that only exist in the fresh catalog (
deepseek-flash), while the workflow's own refresh PR needs the registry fix to pass the lifecycle contract on its own refresh either way — one intent, one PR.Refs #4398
Verification
npm run check:model-metadata-drift— zero projector rejections (was:kimi-for-coding is missing+ the m2p7 unsupported override).node scripts/sync-model-metadata.mjs --refresh --accept-upstream-removalsandnpm run check:model-metadata— both pass from the refreshed snapshot; the snapshot diff carries the new kimi provider facts (same API URL) plus the upstream model wave.@maka/core889 pass / 0 fail,@maka/runtime3396 pass / 0 fail / 14 skip,packages/runtime-hostsession-catalog-coordinator + execution-model-composition 107 pass / 0 fail.npm run formatandnpm run lintpass.Not run locally: full repository test suite, Desktop E2E, Windows.
Root cause
The upkeep job rejects a catalog whose configured providers cannot be found, which is correct — but its projection pinned a provider id upstream was free to rename (
kimi-for-coding), and an override shape it had never seen (body-only) aborted refresh before removal acceptance ever applied. Drift mode tolerated both as findings; refresh mode made them fatal.Breaking change
Offer lists change for DeepSeek and Fireworks AI new connections: defaults move to the current generation (
deepseek-flash,kimi-k3). Existing connections and manually typed ids keep working.AI use
Select exactly one:
Tool(s) and scope: Maka (agent), running the GLM-5.3-Flash model — diagnosed the CI failures against live models.dev data, implemented the projection/registry changes, regenerated the snapshot, and updated the pinned tests.
Checklist
Does this PR entail a change in behavior?