Skip to content

feat(operator): add runtime feature gates - #12421

Merged
tmonty12 merged 6 commits into
ai-dynamo:mainfrom
xianlubird:codex/typed-runtime-compatibility-gates
Aug 4, 2026
Merged

feat(operator): add runtime feature gates#12421
tmonty12 merged 6 commits into
ai-dynamo:mainfrom
xianlubird:codex/typed-runtime-compatibility-gates

Conversation

@xianlubird

@xianlubird xianlubird commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Add explicit, per-feature gates whose rendered defaults depend only on the resolved Dynamo runtime compatibility version. This is the runtime-gate foundation for #11083.

Details

  • add internal/features/runtime with a small Gate type and centralized feature definitions
  • define CanaryHealthChecks as introduced by Dynamo runtime 1.4.0
  • add normalized runtime-version comparison through runtimeversion.Version.AtLeast
  • keep rendering stable across operator-only upgrades; changing runtime version is the trigger for adopting new defaults
  • keep explicit user configuration authoritative for older-runtime escape hatches
  • leave the existing origin-based vLLM compatibility gate unchanged and out of scope

Where should reviewers start?

  • deploy/operator/internal/features/runtime/gate.go
  • deploy/operator/internal/features/runtime/gates.go

Related Issues

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

copy-pr-bot Bot commented Jul 30, 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.

@xianlubird
xianlubird temporarily deployed to external_collaborator July 30, 2026 08:30 — with GitHub Actions Inactive
@xianlubird
xianlubird temporarily deployed to external_collaborator July 30, 2026 08:31 — with GitHub Actions Inactive
@github-actions

Copy link
Copy Markdown
Contributor

👋 Hi xianlubird! 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 deployment::k8s Relates to dynamo deployment in kubernetes refactor labels Jul 30, 2026
@xianlubird
xianlubird marked this pull request as ready for review July 30, 2026 08:31
@xianlubird
xianlubird requested a review from a team as a code owner July 30, 2026 08:31

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 3 potential issues.

Open in Devin Review

Comment thread deploy/operator/internal/features/compatibility/runtime.go Outdated
Comment thread deploy/operator/internal/features/compatibility/runtime_test.go
Comment thread deploy/operator/internal/features/compatibility/runtime.go Outdated
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Changes

The compatibility package renames origin-based gates to OriginGate and updates its declaration, documentation, and tests. It also adds RuntimeGate evaluation backed by a new semantic version comparison method and corresponding tests.

Compatibility gates

Layer / File(s) Summary
Origin gate contract and wiring
deploy/operator/internal/features/compatibility/*
Renames Gate to OriginGate, updates VLLMMultiprocessing, refreshes package documentation, and updates origin-gate tests.
Runtime gate evaluation
deploy/operator/internal/runtimeversion/..., deploy/operator/internal/features/compatibility/runtime*
Adds Version.AtLeast and RuntimeGate.Enabled, with tests for threshold comparisons and unknown runtime versions.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the primary change: adding runtime-based feature gates for the operator.
Description check ✅ Passed The description covers the overview, implementation details, reviewer starting points, and related issue references.

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@deploy/operator/internal/features/compatibility/runtime_test.go`:
- Around line 14-53: Add test-story logging to TestRuntimeGateEnabled in
deploy/operator/internal/features/compatibility/runtime_test.go at lines 14-53:
log the gate setup before constructing it, and log each runtime-version
evaluation and assertion inside the table-driven subtest. Apply the same pattern
in deploy/operator/internal/runtimeversion/runtimeversion_test.go at lines 10-33
by logging minimum-version setup and each comparison/assertion; both sites
require direct changes using t.Log headings before each test step.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b473e5c5-48b4-48b2-879e-ad6447c46f81

📥 Commits

Reviewing files that changed from the base of the PR and between 69cdf53 and d44a19b.

📒 Files selected for processing (8)
  • deploy/operator/internal/features/compatibility/doc.go
  • deploy/operator/internal/features/compatibility/gates.go
  • deploy/operator/internal/features/compatibility/origin.go
  • deploy/operator/internal/features/compatibility/origin_test.go
  • deploy/operator/internal/features/compatibility/runtime.go
  • deploy/operator/internal/features/compatibility/runtime_test.go
  • deploy/operator/internal/runtimeversion/runtimeversion.go
  • deploy/operator/internal/runtimeversion/runtimeversion_test.go

Comment thread deploy/operator/internal/features/compatibility/runtime_test.go Outdated
Signed-off-by: xianlubird <xianlubird@gmail.com>
@xianlubird
xianlubird temporarily deployed to external_collaborator July 30, 2026 08:46 — with GitHub Actions Inactive
Signed-off-by: xianlubird <xianlubird@gmail.com>
@xianlubird
xianlubird temporarily deployed to external_collaborator July 30, 2026 09:14 — with GitHub Actions Inactive
@xianlubird xianlubird changed the title refactor(operator): type compatibility gates refactor(operator): unify compatibility gates Jul 30, 2026
Signed-off-by: xianlubird <xianlubird@gmail.com>
@xianlubird
xianlubird temporarily deployed to external_collaborator July 30, 2026 09:24 — with GitHub Actions Inactive
Signed-off-by: xianlubird <xianlubird@gmail.com>
@xianlubird
xianlubird temporarily deployed to external_collaborator July 31, 2026 00:33 — with GitHub Actions Inactive
@xianlubird xianlubird changed the title refactor(operator): unify compatibility gates feat(operator): add runtime feature gates Jul 31, 2026
@github-actions github-actions Bot added feat and removed refactor labels Jul 31, 2026
Comment thread deploy/operator/internal/features/runtime/gate.go Outdated
Comment thread deploy/operator/internal/runtimeversion/runtimeversion.go Outdated
Signed-off-by: xianlubird <xianlubird@gmail.com>
@xianlubird
xianlubird temporarily deployed to external_collaborator August 3, 2026 01:21 — with GitHub Actions Inactive
@sttts

sttts commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

/ok to test 8fa7ea8

@tmonty12
tmonty12 enabled auto-merge (squash) August 4, 2026 00:43
@tmonty12
tmonty12 merged commit d464b37 into ai-dynamo:main Aug 4, 2026
92 checks passed
hhzhang16 added a commit that referenced this pull request Aug 4, 2026
dyn-3691-extract-shared-target-pid-cuda-customstorage-operation-layer

* 'main' of https://github.com/ai-dynamo/dynamo: (50 commits)
  docs(cli): correct removed vLLM prefill-worker flag reference (#12581)
  docs(operator): reserve webhook Ignore for emergencies (#12563)
  ci(docs): make previews and checks match what actually publishes (#12339)
  refactor(vllm): organize custom encoder modules (#12416)
  feat(llm): Select reasoning output field via env var (#11464)
  feat(runtime): add TLS support to TCP request plane (#10921)
  fix: convert conditional disagg sglang warning to httperror 400 (#12578)
  feat(operator): add runtime feature gates (#12421)
  refactor(runtime): extract PushRouter transport seam behind StreamingDispatch trait (#12447)
  feat(replay): add deterministic canonical offline reports (#12363)
  build: bump ModelExpress to 0.5.0(OPS-7978) (#12455)
  fix(mocker): use logical KV tokens for decode timing (#12583)
  fix(examples): update Triton example for CUDA 13 + fix libdcgm copy (DYN-3697) (#12577)
  refactor(operator): implement composition-first DGD reconciliation (#12283)
  feat(frontend): add basetenkenizer backend (#12376)
  fix(profiler): configure rapid mocker without planner (#12573)
  docs(vllm): correct worker-role flags and document --kv-transfer-config (#12568)
  ci: add Kubernetes deploy test to nightly (#12090)
  fix(container): reuse pinned protoc in runtime image (#12535)
  feat(self-host): flip DYN_SELF_HOST_METADATA default to ON (gh-8749) (#11417)
  ...

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

Labels

deployment::k8s Relates to dynamo deployment in kubernetes external-contribution Pull request is from an external contributor feat size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants