Skip to content

feat(models): migrate Models APIs to typed NemoClient#803

Draft
maxdubrinsky wants to merge 7 commits into
mainfrom
aircore-876-migrate-models-to-nemoclient/md
Draft

feat(models): migrate Models APIs to typed NemoClient#803
maxdubrinsky wants to merge 7 commits into
mainfrom
aircore-876-migrate-models-to-nemoclient/md

Conversation

@maxdubrinsky

@maxdubrinsky maxdubrinsky commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add typed sync and async Models clients covering the 42 genuine Models CRUD/status/version operations across models, adapters, providers, prompts, deployments, and deployment configs.
  • Replace the Stainless-backed packages/models resource implementation while preserving existing URL helpers, polling behavior, pagination, conflict handling, and delete status visibility; sync its vendored package copy without regenerating Stainless.
  • Migrate the Models controller, reconcilers, sidecars, model-spec task, workspace cleanup, customization/Data Designer/Automodel/Guardrails/platform-seed/RL/Unsloth consumers, and their tests.
  • Preserve the wrapped Stainless SDK retry contract in client_from_platform, including explicit retry headers, 408/409/429, server errors, and reasonable Retry-After values, without changing standalone NemoClient defaults.
  • Preserve complete provider metadata during replacement PUTs and omit unrelated partial-update fields so reconciliation cannot clear user-selected routing configuration.

Validation

  • 178 client/foundation tests passed.
  • 1,205 Models unit tests passed; 1 torch-dependent test skipped.
  • 251 downstream consumer tests passed; 1 optional training-image test skipped.
  • 49 nemo-unsloth plugin tests passed against typed Models/Files mocks.
  • Ruff and formatting passed across all non-generated changed Python files.
  • Focused ty, vendored-SDK/CLI sync lints, negative Stainless searches, warning-strict controller checks, and git diff --check passed.
  • Multiple independent adversarial review rounds found no remaining blocker or high-severity issue.

Intentional boundaries

  • Inference Gateway provider discovery remains on its IGW proxy operation.
  • VirtualModel CRUD is owned by AIRCORE-877.
  • Files list/download operations and their retry/error handling remain on Files clients or the existing SDK where not part of Models.
  • OpenAI proxy, readiness, SSE, and raw-byte operations are not modeled as Models CRUD endpoints.

Follow-up

Directly owned NemoClient transport teardown is tracked separately in AIRCORE-933.

Linear: https://linear.app/nvidia/issue/AIRCORE-876

Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
@github-actions github-actions Bot added the feat label Jul 20, 2026
Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 27211/34952 77.8% 61.7%
Integration Tests 15820/33577 47.1% 18.6%

Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant