Skip to content

feat(epp): support named policies in Runtime mode - #18189

Draft
andrewzyxing wants to merge 2 commits into
ai-dynamo:mainfrom
andrewzyxing:feat/runtime-epp-policy-catalog
Draft

andrewzyxing wants to merge 2 commits into
ai-dynamo:mainfrom
andrewzyxing:feat/runtime-epp-policy-catalog

Conversation

@andrewzyxing

@andrewzyxing andrewzyxing commented Nov 5, 2026 •

Copy link
Copy Markdown

Overview

Allow the Runtime EPP to install the worker-selection catalog supplied by its binary, including Dynamo's shipped named providers for the stock run(None) path. This extends the documented standalone-only catalog boundary; it was discovered while developing the Runtime EPP/Frontend conformance coverage in #17580.

The configured catalog reaches the existing native routers through their process registry and typed worker roles. Unconfigured routing retains the builtin default; duplicate shipped type names and repeated installation fail explicitly.

Key Changes

49 added production-code lines, excluding tests, comments and blank lines. No new dependency, shared router API, registry global or request-path synchronization.

  • Runtime bootstrap: prepare the complete supplied catalog, register shipped named providers, and install it once before discovery/router construction. run uses this mode dispatch; Standalone keeps its existing registry path.
  • Classifier boundary: reject configured Runtime request classifiers explicitly. Installing a catalog does not implement their request lifecycle.
  • Regression coverage and docs: cover named parameters/default/mode retention, invalid configuration, supplied providers, Standalone pass-through and a process-isolated Runtime bootstrap followed by a real ModelManager Prefill router. Update the custom-policy guides for the Runtime catalog contract.

Validation

Current head: ef340a91dccb1ac69cf7ae143cf9a86dd9e918c1, based on main 7e9dc291b12a8ae66459396725f727924eaa8029.

Fixed-head Linux validation is pending. Initial CI on f339b9e3 reported Rustfmt differences and two E0282 errors in the test-factory closures. Follow-up ef340a91 corrects all reported differences and gives both factories an explicit expected type. No fixed-head formatter, compilation, clippy or test pass is claimed yet. No project commands ran on the Mac mini. The official Linux Rust jobs will validate this public source; a separate CPU run is needed only if those results leave a gap.

Added coverage, not yet executed:

  • Shipped named-default parameter snapshots for Aggregated/Prefill/Decode, plus builtin-default and routing-mode controls, unknown types and invalid parameters.
  • Duplicate registration, caller-provider retention, Standalone bootstrap and unsupported classifier configuration.
  • An isolated libtest child checks an uninstalled UnknownType control, calls the actual Runtime mode bootstrap, constructs a native ModelManager router and observes the Prefill role/model partition, then checks repeated-install failure.

The uninstalled control is not a historical executable baseline run. The host-construction test is not a live Gateway or independent disaggregated routing test. Classifier lifecycle and live Gateway/disaggregated execution remain follow-up work.

Issues and Ongoing Work

Part of #16591 and #16595. This addresses the worker-selection catalog refusal described in #16591; that issue stays open for classifier and request-lifecycle work. Discovered while working on #17580; its conformance changes remain in their separate PR.

Pull Request Checklist
  • I used Dynamo's /pr-checklist skill.

Signed-off-by: zyxing <xingzheyuan16@gmail.com>
@copy-pr-bot

copy-pr-bot Bot commented Nov 5, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@andrewzyxing
andrewzyxing temporarily deployed to external_collaborator November 5, 2026 10:37 — with GitHub Actions Inactive
@andrewzyxing
andrewzyxing temporarily deployed to external_collaborator November 5, 2026 10:37 — with GitHub Actions Inactive
@github-actions github-actions Bot added the feat label Nov 5, 2026
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

👋 Hi andrewzyxing! Thank you for contributing to ai-dynamo/dynamo.

Just a reminder: The NVIDIA Test Github Validation CI runs an essential subset of the testing framework to quickly catch errors.Your PR reviewers may elect to test the changes comprehensively before approving your changes.

🚀

@github-actions github-actions Bot added external-contribution Pull request is from an external contributor documentation Improvements or additions to documentation labels Nov 5, 2026
@andrewzyxing

Copy link
Copy Markdown
Author

@ishandhanani @jthomson04 Discovered while developing the Runtime EPP/Frontend conformance coverage in #17580. Please review this Draft's one-time linked-registry installation, typed-role policy consumption and preservation of the builtin default, and confirm that this direction fits the separate RoutingHost work in #17293.

Request-classifier execution remains unsupported in this change. The PR description records the exact scope and validation status.

Signed-off-by: zyxing <xingzheyuan16@gmail.com>
@andrewzyxing
andrewzyxing temporarily deployed to external_collaborator November 5, 2026 10:51 — with GitHub Actions Inactive

This branch was previously deployed

1 inactive deployment
external_collaborator — ef340a91 Deployed Nov 5, 2026 by andrewzyxing via ok-to-test #46535
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation external-contribution Pull request is from an external contributor feat size/XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant