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
Make the model scanner work on machines that are not the author's
An audit across realistic model sets found the discovery layer filled every role
on the author's box and left roles empty nearly everywhere else. Three causes.
Undeclared size was treated as disqualifying. /v1/models states no parameter
count, so every OpenAI-compatible and cloud model arrived with param_b=None
against a rule reading `pb is not None and pb >= 18` — GPT-4o was Execution-only
while a local 8B held the same role. The asymmetry was accidental: three lines
above, unknown tool_calling is already ELIGIBLE-but-unproven, and _score gives an
unknown size no credit, so a measured model still outranks a maybe. A test pins
that ordering.
No threshold was loosened. A measured 8B still cannot be Council, because it
genuinely is not council-class and saying otherwise would be the flattering
answer. role_basis now records whether a role was held on measured grounds or
merely undeclared ones — a guess and a measurement should not be presented as
the same claim.
The role fallback was capability-blind: asked for Vision with no vision model
installed, it returned a code model, because the chain fell back to Execution
regardless of what was asked. That is not degradation — a text model handed an
image answers wrongly or errors. Vision and Embedding now refuse rather than
substitute, so a caller can say "no vision model installed" instead of relaying
confident nonsense. Quality-tier substitutions are still permitted and now
carry `substituted`, `requested_role`, and a reason; previously the only signal
was comparing the returned role against one the caller had to remember asking for.
A refusal was filed as an absence. The probes sent no Authorization header, so a
runtime behind `vllm serve --api-key` answered 401 and was reported offline —
sending the operator to restart a server that was running and had simply refused
an unauthenticated request. The key now travels with the probe, an HTTP error
proves reachability, and 401/403 reports authorized:false with the remedy.
15 new tests, including a property test that renaming a model to "frobozz-42x"
cannot change its classification. 687 tests pass.
0 commit comments