fix: models.dev last-segment match + official-vendor disambiguation - #1047
Conversation
Update upstream tests that assumed release-stamp stripping, deployment marker fallbacks, or majority/consensus borrowing so they match the approved vastsa#1047 matcher and official/shared-capabilities disambiguation.
ddbe127 to
9069108
Compare
|
Thanks — I reviewed commit 9069108 and ran the targeted suites (desktop 116/116; shared 22/22). The core last-segment matching and official/shared-capability disambiguation look implemented, and the PR CI is green. Before merge, I found a few completeness/regression concerns:
Could you address these before merge? |
Keep the existing highest-enabled fallback for catalog-known bindings while applying the PR's off-by-default behavior only to unmatched models. Treat empty unknown-model bindings as generic seeds, and synchronize the model catalog and Composer specifications with the conservative matching contract.
# Conflicts: # docs/spec/08-meta/decisions-log.md
|
Follow-up on my earlier review: I verified that the alias chip is intentional and the exact wire ID remains the model identity and list-row value. The empty thinkingLevels: [] case was a real gap for the PR's unmatched-model contract, and the global default-off change also affected known catalog models. I pushed a minimal landing fix on top of the contributor commits: known catalog matches retain the highest-enabled fallback; unmatched models, including empty generic bindings, start at off while exposing the full thinking ladder; explicit non-empty bindings remain authoritative. Specs and regression tests are synchronized. Relevant candidate checks pass: shared tests 23/23, desktop typecheck, and targeted model/Composer/MCP tests 135/135. The branch also includes the latest origin/main. |
Keep the source-contract assertion aligned with the attachment history variable introduced on the latest main line. This removes a stale test failure without changing runtime behavior.
|
The first post-fix CI run exposed one unrelated latest-main regression: the attachment-history source-contract test still expected the old local name after main changed it to . I synchronized that test in 328eab2 without changing runtime behavior. Local full desktop suite now passes 2971/2971 with the repository loader; the PR branch remains based on the latest origin/main. |
|
Correction to the previous note: the stale attachment-history source-contract test expected the old local name 'shouldInline' after latest main changed it to 'canInline'. I synchronized that test in 328eab2 without changing runtime behavior. Local full desktop suite now passes 2971/2971 with the repository loader, and the PR branch remains based on the latest origin/main. |
Use explicit TypeScript extensions for the composer model module graph so the native desktop test runner can load the new model capability regression tests. Runtime behavior is unchanged.
|
The second CI failure was the native Node test runner unable to resolve extensionless TypeScript imports inside composer model.ts, reached by the new regression test. I added explicit .ts extensions in 5067a90; this is test-loading hygiene only and leaves runtime behavior unchanged. The exact CI command now passes locally: 2971/2971 desktop tests. |
Summary
route/model-leaf): match by case-insensitive exact last/segment only.anthropic/openai/google*/xai/x-ai) whose provider key agrees with the model’s source vendor (so a gateway listing likegoogle-vertex/xai/grok-*does not count as xAI).plugin-mcpchild teardown (process group + SIGKILL + stdio destroy) so desktop tests no longer hang.Test plan
*-latest)