feat(models): expand provider-native capability readers#5576
Draft
RaresKeY wants to merge 13 commits into
Draft
Conversation
This was referenced Jul 17, 2026
RaresKeY
marked this pull request as ready for review
July 17, 2026 13:40
15 tasks
RaresKeY
marked this pull request as draft
July 18, 2026 11:13
RaresKeY
force-pushed
the
feature/model-capability-catalog
branch
from
July 18, 2026 14:11
9d4d182 to
0f19339
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Expand the canonical model-capability bootstrap from #2739 with provider-native catalog detection and readers while making the general fallback strictly inventory-only. The serialized record is reduced to one versioned shape, provider identity remains separate from per-model capability, and unrecognized configured providers can still list stable model identities without inferring tasks, modalities, features, controls, or limits.
This also adds bounded normalization diagnostics to Odysseus's existing
LOG_LEVEL=DEBUGtoggle. The event reports canonical version, provider source, detected catalog shape, fallback status, record count, and normalized capability names; it omits model IDs and raw payload values.Stack / Review Boundary
This PR is stacked on #2739 at
d8627fcd. Because #2739's head is on a fork, this upstream PR targetsdevand temporarily includes the parent commits in its comparison.The follow-up-only review range is
d8627fcd..9d4d182b, containing three commits. After #2739 lands, this branch will be rebased onto currentdevso the PR comparison contains only the follow-up.Target branch
dev, notmain. All PRs land indev;mainis curated by the maintainer at each release.Linked Issue
Fixes #5575
Part of #2737.
Depends on #4145 / #2739.
Type of Change
Checklist
dev.docker compose uporuvicorn app:app) and verified the change end-to-end. The catalog normalization layer is not yet wired into runtime model discovery, so this PR is validated through native-shape and fallback fixtures rather than a user-facing runtime path.How to Test
Run:
Expected result: 50 tests pass.
Inspect the fallback regression containing
type, modalities,capabilities,supported_parameters, andmax_model_len; verify its canonical result remains unknown with empty features, limits, and controls.Set
LOG_LEVEL=DEBUG, normalize a native and a fallback fixture, and verify the log includes canonical/shape/fallback metadata but not the model ID or raw payload values.Run
git diff --checkand Python compilation for the changed modules.Exact stacked-head adjacent validation also passes:
A current-
devintegration replay completed with 4,659 passing tests and 12 unrelated failures. The same 12 failures reproduced on the unchanged current-devbaseline; focused capability/diagnostic tests are green on this exact stacked branch.Visual / UI changes
N/A — backend normalization, logging configuration, and tests only; no UI rendering changed.
Screenshots / clips
N/A — no visual changes.