Skip to content

feat(aisimulate): move experimental Spica into Dynamo - #11923

Merged
tedzhouhk merged 23 commits into
mainfrom
hzhou-codex/move-spica-to-dynamo
Jul 28, 2026
Merged

feat(aisimulate): move experimental Spica into Dynamo#11923
tedzhouhk merged 23 commits into
mainfrom
hzhou-codex/move-spica-to-dynamo

Conversation

@tedzhouhk

@tedzhouhk tedzhouhk commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • move Spica source, tests, documentation, configs, images, and tools from ai-dynamo/aiconfigurator@111b093a2a516d6cb2eabac5ad601c95c14ebdbe into Dynamo
  • publish AI Simulate as an independent Python distribution with canonical import aisimulate.spica and module CLI python -m aisimulate.spica; do not expose a top-level spica alias, dynamo.profiler.spica alias, console script, or ai-dynamo[spica] extra
  • keep package source and tests under aisimulate/, and place runnable configs/tools under the repository-standard examples/aisimulate/spica/ path
  • keep Spica explicitly experimental in its package, CLI, examples, release note, and Fern documentation
  • build the aisimulate wheel from the same checkout as ai-dynamo, install it explicitly in the existing dynamo-planner image, and retain the required aic-forward-pass,mocker-kvbm-offload runtime features
  • route both /aisimulate/ and /examples/aisimulate/ ownership and CI selection to the Dynamo Planner team

Related to #9410.

AIC namespace-doc follow-up: ai-dynamo/aiconfigurator#1411. Earlier migration cleanup landed in ai-dynamo/aiconfigurator#1401 and ai-dynamo/aiconfigurator#1389.

Validation

  • PR Planner test selection: 225 passed, 1 skipped across 226 selected tests (pre_merge and planner and gpu_0)
  • prior real Rust replay integration validation: 4 passed, including Planner bridge, static replay, KVBM offload, and smart search
  • clean wheel namespace smoke confirms aisimulate/spica/** is present and no top-level spica/** alias is published
  • installed-package metadata/CLI contract tests: 10 passed
  • python -m aisimulate.spica --help shows [EXPERIMENTAL]
  • amd64 and arm64 Python 3.12 dependency resolution
  • rendered Planner Dockerfile installs the AI Simulate wheel and copies only the test tree; runnable examples arrive through the existing top-level examples copy
  • all pre-commit hooks on changed files, including generated CODEOWNERS coverage and pytest marker validation
  • fern check: 0 errors; Fern navigation covers the AI Simulate landing page and all nine Spica pages
  • source/docs/examples audit finds no old python -m spica, aisimulate/examples/spica, or top-level-package references

Release note

Experimental: Spica is now available from Dynamo's standalone AI Simulate distribution as aisimulate.spica and can be invoked with python -m aisimulate.spica. Its APIs, configuration schema, search results, and deployment outputs may change without a standard deprecation period. It is not production-ready and provides no SLA, accuracy, or configuration-optimality guarantee.

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

@tedzhouhk
tedzhouhk marked this pull request as ready for review July 20, 2026 22:54
@tedzhouhk
tedzhouhk requested review from a team as code owners July 20, 2026 22:54
@datadog-official

datadog-official Bot commented Jul 20, 2026

Copy link
Copy Markdown

🎯 Code Coverage (details)
Patch Coverage: 32.14%
Overall Coverage: 43.37% (-6.84%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: e696c56 | Docs | Datadog PR Page | Give us feedback!

@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: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Changes

Spica smart search

Layer / File(s) Summary
Configuration and public API
components/src/dynamo/profiler/spica/{__init__.py,__main__.py,_quiet.py,config.py}
Adds the experimental package API, YAML schema, workload and goal validation, import quieting, and module CLI.
Deployment and replay evaluation
components/src/dynamo/profiler/spica/{deploy.py,evaluator.py}
Builds aggregated or disaggregated deployment plans and routes trace or synthetic workloads through compatible replay APIs.
KV and parallel configuration modeling
components/src/dynamo/profiler/spica/{kv_estimate.py,kv_load.py,model_hw.py,parallel_enum.py,parallel_projection.py}
Adds KV-capacity estimation, load-derived concurrency, hardware resolution, legal parallel enumeration, and configuration projection.
Planner, sampling, and search
components/src/dynamo/profiler/spica/{planner.py,load_predictor_sweep.py,sample.py,sampler.py,search.py,search_space.py,score.py}
Adds planner preset expansion, predictor sweeps, sample unrolling, Vizier sampling, cached evaluation, and scalar/Pareto candidate scoring.
Validation and integration coverage
components/src/dynamo/profiler/spica/tests/*
Adds unit, integration, replay, packaging, CLI, configuration, enumeration, sampler, scoring, and orchestration tests.
Replay compatibility and packaging
components/src/dynamo/replay/*, lib/bindings/python/rust/llm/*, pyproject.toml, container/*, tests/report_pytest_markers.py
Adds AIC estimator and compiled-SDK fallbacks, optional dependencies, runtime wheel features, and import stubs.
Documentation and examples
docs/components/profiler/spica/*, examples/profiler/spica/*, docs/index.yml
Documents configuration, traffic, search-space projection, scoring, replay setup, and reproducible sweep examples.

Estimated code review effort: 5 (Critical) | ~120 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% 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 captures the main change: moving experimental Spica into the Dynamo/AI Simulate workflow.
Description check ✅ Passed The description is detailed and relevant, but it does not follow the required template headings and omits a clear reviewer-start section.

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: 11

🧹 Nitpick comments (10)
components/src/dynamo/profiler/spica/sampler.py (1)

98-99: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

In-function imports flagged by path instructions. Path instructions ("Keep all imports at the top of each file; don't add import statements inside functions/classes") require top-level imports; both files instead import heavy optional deps inside function bodies. This appears intentional to keep import dynamo.profiler.spica light (and to let _quiet pin JAX before Vizier/JAX load), but since it hides dependencies please confirm the deferral is deliberate and, if kept, annotate/consolidate the repeated imports.

  • components/src/dynamo/profiler/spica/sampler.py#L98-L99: from vizier.service import clients / pyvizier is re-imported in __init__, _update_projection_metadata, observe, observe_infeasible (L224/233/243) — consolidate the repeated pyvizier as vz imports and confirm the lazy vizier import is intended (optional ai-dynamo[spica] dep).
  • components/src/dynamo/profiler/spica/load_predictor_sweep.py#L198-L212: from dynamo.planner.core.load.predictors import LOAD_PREDICTORS and from dynamo.planner.offline.trace_data import extract_metrics_from_mooncake are function-local — confirm the lazy dynamo-planner import is intended and document why (Rust runtime + prophet/pmdarima/filterpy).
🤖 Prompt for 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.

In `@components/src/dynamo/profiler/spica/sampler.py` around lines 98 - 99, The
lazy imports are intentional for optional, heavy dependencies, but the repeated
Vizier imports need consolidation. In
components/src/dynamo/profiler/spica/sampler.py:98-99, retain and document the
deferred Vizier import strategy, then reuse a single local/module-level import
across __init__, _update_projection_metadata, observe, and observe_infeasible.
In components/src/dynamo/profiler/spica/load_predictor_sweep.py:198-212, retain
the lazy dynamo-planner imports and document that deferral is required for Rust
runtime and prophet/pmdarima/filterpy dependency loading; no top-level import is
needed there.

Source: Path instructions

lib/bindings/python/rust/llm/aic_callback.rs (1)

32-39: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Redundant unsafe impl Send/SyncPy<PyAny> is already unconditionally Send + Sync.

PyAicCallback's only field is session: Py<PyAny>. Per pyo3's docs, Py<T> (including Py<PyAny>) implements Send and Sync unconditionally, so the struct would already auto-derive both without any unsafe block. The manual impls here are dead weight that adds unsafe-code audit surface without any functional benefit.

♻️ Proposed removal
-// PyAicCallback enters Python only through Python::with_gil.
-unsafe impl Send for PyAicCallback {}
-unsafe impl Sync for PyAicCallback {}
-
 impl PyAicCallback {
🤖 Prompt for 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.

In `@lib/bindings/python/rust/llm/aic_callback.rs` around lines 32 - 39, Remove
the redundant unsafe Send and Sync implementations for PyAicCallback; its
session: Py<PyAny> field already provides these auto traits. Leave the struct
definition and Python GIL access behavior unchanged.
pyproject.toml (1)

90-102: 🧹 Nitpick | 🔵 Trivial

LGTM! Versions are consistent with container/deps/requirements.planner.txt as the comment requires.

One operational note: tfp-nightly==0.26.0.dev20260626 pins an exact dated nightly build. Nightly/dev channels on PyPI are sometimes pruned after a retention window, which could eventually break fresh installs of ai-dynamo[spica] even though the extra is experimental. Worth keeping an eye on and re-pinning to a stable tensorflow-probability release once Vizier's tfp constraint allows it.

🤖 Prompt for 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.

In `@pyproject.toml` around lines 90 - 102, The dependency versions are
consistent; no code change is required. Monitor the exact tfp-nightly pin in the
spica dependency set and replace it with a stable tensorflow-probability release
when the google-vizier constraint permits.
lib/bindings/python/tests/replay/test_replay_aic_capacity.py (1)

203-207: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use a raw string for the pytest.raises(match=...) regex.

Ruff (RUF043) flags this: the pattern contains .* but isn't a raw/escaped string, which is ambiguous style even though it currently matches as intended.

🔧 Proposed fix
     with pytest.raises(
         Exception,
-        match="Failed to estimate AIC KV cache capacity.*invalid capacity request",
+        match=r"Failed to estimate AIC KV cache capacity.*invalid capacity request",
     ):
🤖 Prompt for 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.

In `@lib/bindings/python/tests/replay/test_replay_aic_capacity.py` around lines
203 - 207, Update the match pattern in the pytest.raises assertion surrounding
_run_direct_aic_replay to use a raw string literal, preserving the existing
regex and expected exception behavior.

Source: Linters/SAST tools

components/src/dynamo/profiler/spica/model_hw.py (1)

26-32: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Avoid depending on AIConfigurator private helpers
_estimate_model_weight_bytes and _get_system_config are internal aiconfigurator.generator.naive helpers, so this code is tied to a non-public API and can break on a minor AIConfigurator upgrade without a deprecation path. Add a small compatibility test here, or upstream a public accessor if one exists.

🤖 Prompt for 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.

In `@components/src/dynamo/profiler/spica/model_hw.py` around lines 26 - 32,
Remove the direct dependency on the private helpers _estimate_model_weight_bytes
and _get_system_config in the model hardware profiling flow, replacing them with
a supported public AIConfigurator accessor if available. If no public accessor
exists, add a focused compatibility test covering the required behavior and
isolate the private-helper usage behind that compatibility boundary.
components/src/dynamo/profiler/spica/search.py (1)

145-157: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Log before swallowing broad exceptions.

Both except Exception blocks catch and swallow errors, keeping only type(exc).__name__: exc — no traceback. This is a deliberate design (one bad candidate shouldn't abort the sweep), but it means a genuine bug in unroll_sample/build_deployment/evaluator.evaluate looks identical to an expected candidate failure and is essentially undebuggable after the fact (worker stdout is easy to lose). As per coding guidelines, "Prefer failing fast over hiding errors... always re-raise after logging if catching Exception broadly" — here re-raising isn't appropriate (by design), but logging with logger.exception(...) (lazy formatting) before returning would preserve the traceback for postmortem debugging without changing the resilience behavior.

♻️ Proposed fix
     except InfeasibleKVCapacity as exc:
         return None, None, "infeasible", f"candidate KV capacity infeasible: {exc}"
     except Exception as exc:
+        logger.exception("candidate build failed")
         return (
             None,
             None,
             "failed",
             f"candidate build failed: {type(exc).__name__}: {exc}",
         )
     ...
     try:
         report = evaluator.evaluate(plan, concurrency_override=concurrency)
     except Exception as exc:  # one candidate failing must not abort the sweep
+        logger.exception("replay failed")
         return None, None, "failed", f"replay failed: {type(exc).__name__}: {exc}"
🤖 Prompt for 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.

In `@components/src/dynamo/profiler/spica/search.py` around lines 145 - 157, Add
logger.exception calls in both broad Exception handlers surrounding candidate
construction and evaluator.evaluate, using lazy formatting and including the
relevant operation context and exception details before returning the existing
failed results. Preserve the current non-aborting sweep behavior and return
values.

Source: Coding guidelines

docs/components/profiler/spica/traffic.md (1)

114-116: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a language to the fenced code block.

markdownlint (MD040) flags this fence as missing a language, unlike the other math blocks in this doc which use text.

📝 Suggested fix
-```
+```text
 num_requests = max(1, round(num_request_ratio * load))
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @docs/components/profiler/spica/traffic.md around lines 114 - 116, Add the
text language identifier to the fenced code block documenting
resolved_request_count, changing the opening fence to use text while preserving
the existing formula and closing fence.


</details>

<!-- cr-comment:v1:a842e6be4aceaa02b1c529ca -->

_Source: Linters/SAST tools_

</blockquote></details>
<details>
<summary>components/src/dynamo/profiler/spica/tests/test_sampler.py (1)</summary><blockquote>

`274-274`: _📐 Maintainability & Code Quality_ | _🔵 Trivial_ | _💤 Low value_

**Minor: prefer `next(iter(...))` over single-element slice.**

Ruff RUF015 flags `list(sampler._study.optimal_trials())[0]`.



<details>
<summary>🧹 Proposed fix</summary>

```diff
-    best = list(sampler._study.optimal_trials())[0].materialize()
+    best = next(iter(sampler._study.optimal_trials())).materialize()
🤖 Prompt for 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.

In `@components/src/dynamo/profiler/spica/tests/test_sampler.py` at line 274,
Update the best-trial selection to use
next(iter(sampler._study.optimal_trials())) instead of materializing the full
collection and indexing its first element, then call materialize() on the
resulting trial.

Source: Linters/SAST tools

components/src/dynamo/profiler/spica/tests/test_evaluator.py (1)

33-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Hardcoded /tmp/t.jsonl trace paths across the Spica test suite. Both files hardcode a /tmp path as Workload/SmartSearchConfig trace_path in shared test fixtures instead of using tmp_path/tempfile; the path is never actually opened (replay calls are mocked), but this repeats the same guideline violation in both files.

  • components/src/dynamo/profiler/spica/tests/test_evaluator.py#L33-L34: replace the "/tmp/t.jsonl" literal in _wl() (and the other 7 occurrences at Lines 86, 152, 255, 273, 279, 469, 483) with a tmp_path-derived path.
  • components/src/dynamo/profiler/spica/tests/test_search.py#L21-L37: replace the "/tmp/t.jsonl" literal in _config() (and the other 2 occurrences at Lines 261, 346) with a tmp_path-derived path.

As per path instructions, "Don't hardcode temp paths; use tmp_path/tempfile."

🤖 Prompt for 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.

In `@components/src/dynamo/profiler/spica/tests/test_evaluator.py` around lines 33
- 34, Replace every hardcoded "/tmp/t.jsonl" trace_path in
components/src/dynamo/profiler/spica/tests/test_evaluator.py at lines 33-34, 86,
152, 255, 273, 279, 469, and 483 with paths derived from the relevant pytest
tmp_path fixture, updating _wl() and affected tests as needed. Apply the same
change in components/src/dynamo/profiler/spica/tests/test_search.py at lines
21-37, 261, and 346, including _config(); ensure each fixture or test receives
and uses tmp_path without changing the mocked replay behavior.

Source: Path instructions

components/src/dynamo/profiler/spica/tests/test_packaging.py (1)

13-27: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Prefer TOML parsing here

Use tomllib/tomli instead of regex + ast.literal_eval to read pyproject.toml; this is more robust to formatting changes, and the import needs a 3.10-compatible fallback because the repo’s minimum Python is 3.10.

🤖 Prompt for 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.

In `@components/src/dynamo/profiler/spica/tests/test_packaging.py` around lines 13
- 27, The test test_spica_extra_matches_planner_image_requirements should parse
pyproject.toml with tomllib, falling back to tomli for Python 3.10
compatibility, instead of regex and ast.literal_eval. Read the spica dependency
list from the parsed TOML structure while preserving the existing comparison
with planner_dependencies.
🤖 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 `@components/src/dynamo/profiler/spica/kv_load.py`:
- Around line 127-133: Validate expected_tokens_per_request immediately after
calculating it in the KV capacity flow, before the concurrency_capacity
division. Raise the existing InfeasibleKVCapacity domain error when the value is
less than or equal to zero, preserving the current capacity check for positive
values.
- Around line 71-87: Validate block_size immediately after parsing it in the
surrounding capacity calculation, rejecting values less than or equal to zero
before the floor-division in per_rank_usable_tokens. Use the existing function’s
established error-handling convention, and preserve the current calculation for
positive block sizes.

In `@components/src/dynamo/profiler/spica/search.py`:
- Around line 505-531: Replace the `assert` in the `_eval_batch`
result-processing loop with an explicit `if` check that validates both
`candidate` and `observe_metrics` are non-None, then raise a clear runtime
exception when the contract is violated. Preserve the existing sampling, cache,
and `_record` flow for valid results.
- Around line 513-522: Update the failed/infeasible branch in the search
processing flow to increment the appropriate tally counter for every entry in
duplicates, matching the feasible-path cache-hit accounting while retaining
observe_infeasible and failure-reason tracking.

In `@components/src/dynamo/profiler/spica/tests/conftest.py`:
- Around line 17-31: The test classification currently treats real
model-resolution coverage as unit tests. Update _INTEGRATION_TESTS in
conftest.py to include test_model_hw.py and test_kv_estimate.py; in
test_model_hw.py lines 36-54, annotate the affected tests with the appropriate
pytest.mark.model(...) markers; and in test_kv_estimate.py lines 174-211,
annotate only the real-estimate cases with pytest.mark.model(...), leaving
synthetic/unit cases unchanged.
- Around line 17-31: Update pytest_collection_modifyitems so integration tests
in _INTEGRATION_TESTS receive the post_merge marker instead of pre_merge, while
non-integration Spica tests retain pre_merge. Preserve the existing integration,
timeout, gpu_0, and planner markers.

In `@components/src/dynamo/profiler/spica/tests/test_cli.py`:
- Around line 19-25: Add explicit timeouts to every subprocess.run call in
test_cli_help_is_marked_experimental, test_cli_rejects_malformed_yaml, and
test_cli_rejects_invalid_config, and add the required pytest timeout marker to
each test. Use consistent bounded timeout values for both the subprocess calls
and test markers.

In `@components/src/dynamo/profiler/spica/tests/test_replay_integration.py`:
- Around line 148-162: Add a pytest timeout marker directly above
test_smart_search_returns_ranked_candidate, using the repository’s established
timeout value or convention for ProcessPool-driving tests. Keep the test body
and assertions unchanged.

In `@components/src/dynamo/profiler/spica/tests/test_search_space.py`:
- Around line 22-31: Update the _config test helper to stop hardcoding
"/tmp/t.jsonl"; require callers needing a real trace path to provide trace_path,
typically using pytest's tmp_path fixture and passing str(tmp_path / "t.jsonl")
through ss_overrides. Preserve the existing default configuration for all other
fields.

In
`@docs/components/profiler/spica/examples/glm5-disagg-pareto-frontier-sweep.md`:
- Around line 8-16: Update the adjacent [!WARNING] and [!IMPORTANT] blockquotes
in the markdown so the separating blank line is also prefixed with `>`,
preserving them as distinct admonitions for Markdown renderers.

In `@examples/profiler/spica/README.md`:
- Around line 76-77: Update the Spica documentation link in the README to
reference a URL that already exists on the target branch, or add the PR-only
path to the repository’s lychee ignore configuration so link checking does not
flag it.

---

Nitpick comments:
In `@components/src/dynamo/profiler/spica/model_hw.py`:
- Around line 26-32: Remove the direct dependency on the private helpers
_estimate_model_weight_bytes and _get_system_config in the model hardware
profiling flow, replacing them with a supported public AIConfigurator accessor
if available. If no public accessor exists, add a focused compatibility test
covering the required behavior and isolate the private-helper usage behind that
compatibility boundary.

In `@components/src/dynamo/profiler/spica/sampler.py`:
- Around line 98-99: The lazy imports are intentional for optional, heavy
dependencies, but the repeated Vizier imports need consolidation. In
components/src/dynamo/profiler/spica/sampler.py:98-99, retain and document the
deferred Vizier import strategy, then reuse a single local/module-level import
across __init__, _update_projection_metadata, observe, and observe_infeasible.
In components/src/dynamo/profiler/spica/load_predictor_sweep.py:198-212, retain
the lazy dynamo-planner imports and document that deferral is required for Rust
runtime and prophet/pmdarima/filterpy dependency loading; no top-level import is
needed there.

In `@components/src/dynamo/profiler/spica/search.py`:
- Around line 145-157: Add logger.exception calls in both broad Exception
handlers surrounding candidate construction and evaluator.evaluate, using lazy
formatting and including the relevant operation context and exception details
before returning the existing failed results. Preserve the current non-aborting
sweep behavior and return values.

In `@components/src/dynamo/profiler/spica/tests/test_evaluator.py`:
- Around line 33-34: Replace every hardcoded "/tmp/t.jsonl" trace_path in
components/src/dynamo/profiler/spica/tests/test_evaluator.py at lines 33-34, 86,
152, 255, 273, 279, 469, and 483 with paths derived from the relevant pytest
tmp_path fixture, updating _wl() and affected tests as needed. Apply the same
change in components/src/dynamo/profiler/spica/tests/test_search.py at lines
21-37, 261, and 346, including _config(); ensure each fixture or test receives
and uses tmp_path without changing the mocked replay behavior.

In `@components/src/dynamo/profiler/spica/tests/test_packaging.py`:
- Around line 13-27: The test
test_spica_extra_matches_planner_image_requirements should parse pyproject.toml
with tomllib, falling back to tomli for Python 3.10 compatibility, instead of
regex and ast.literal_eval. Read the spica dependency list from the parsed TOML
structure while preserving the existing comparison with planner_dependencies.

In `@components/src/dynamo/profiler/spica/tests/test_sampler.py`:
- Line 274: Update the best-trial selection to use
next(iter(sampler._study.optimal_trials())) instead of materializing the full
collection and indexing its first element, then call materialize() on the
resulting trial.

In `@docs/components/profiler/spica/traffic.md`:
- Around line 114-116: Add the text language identifier to the fenced code block
documenting resolved_request_count, changing the opening fence to use text while
preserving the existing formula and closing fence.

In `@lib/bindings/python/rust/llm/aic_callback.rs`:
- Around line 32-39: Remove the redundant unsafe Send and Sync implementations
for PyAicCallback; its session: Py<PyAny> field already provides these auto
traits. Leave the struct definition and Python GIL access behavior unchanged.

In `@lib/bindings/python/tests/replay/test_replay_aic_capacity.py`:
- Around line 203-207: Update the match pattern in the pytest.raises assertion
surrounding _run_direct_aic_replay to use a raw string literal, preserving the
existing regex and expected exception behavior.

In `@pyproject.toml`:
- Around line 90-102: The dependency versions are consistent; no code change is
required. Monitor the exact tfp-nightly pin in the spica dependency set and
replace it with a stable tensorflow-probability release when the google-vizier
constraint permits.
🪄 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: 98b58e38-c90f-419a-abc7-dd607b8e70ad

📥 Commits

Reviewing files that changed from the base of the PR and between 59dd504 and 22f608e.

⛔ Files ignored due to path filters (1)
  • docs/assets/img/spica-glm5-disagg-pareto-frontier-sweep.png is excluded by !**/*.png
📒 Files selected for processing (65)
  • components/src/dynamo/profiler/spica/__init__.py
  • components/src/dynamo/profiler/spica/__main__.py
  • components/src/dynamo/profiler/spica/_quiet.py
  • components/src/dynamo/profiler/spica/config.py
  • components/src/dynamo/profiler/spica/deploy.py
  • components/src/dynamo/profiler/spica/evaluator.py
  • components/src/dynamo/profiler/spica/kv_estimate.py
  • components/src/dynamo/profiler/spica/kv_load.py
  • components/src/dynamo/profiler/spica/load_predictor_sweep.py
  • components/src/dynamo/profiler/spica/model_hw.py
  • components/src/dynamo/profiler/spica/parallel_enum.py
  • components/src/dynamo/profiler/spica/parallel_projection.py
  • components/src/dynamo/profiler/spica/planner.py
  • components/src/dynamo/profiler/spica/sample.py
  • components/src/dynamo/profiler/spica/sampler.py
  • components/src/dynamo/profiler/spica/score.py
  • components/src/dynamo/profiler/spica/search.py
  • components/src/dynamo/profiler/spica/search_space.py
  • components/src/dynamo/profiler/spica/tests/conftest.py
  • components/src/dynamo/profiler/spica/tests/data/mooncake_tiny.jsonl
  • components/src/dynamo/profiler/spica/tests/data/spica_native_features.yaml
  • components/src/dynamo/profiler/spica/tests/test_cli.py
  • components/src/dynamo/profiler/spica/tests/test_config.py
  • components/src/dynamo/profiler/spica/tests/test_deploy.py
  • components/src/dynamo/profiler/spica/tests/test_evaluator.py
  • components/src/dynamo/profiler/spica/tests/test_kv_estimate.py
  • components/src/dynamo/profiler/spica/tests/test_kv_load.py
  • components/src/dynamo/profiler/spica/tests/test_load_predictor_sweep.py
  • components/src/dynamo/profiler/spica/tests/test_load_predictor_sweep_integration.py
  • components/src/dynamo/profiler/spica/tests/test_model_hw.py
  • components/src/dynamo/profiler/spica/tests/test_packaging.py
  • components/src/dynamo/profiler/spica/tests/test_parallel_enum.py
  • components/src/dynamo/profiler/spica/tests/test_parallel_projection.py
  • components/src/dynamo/profiler/spica/tests/test_planner.py
  • components/src/dynamo/profiler/spica/tests/test_quiet.py
  • components/src/dynamo/profiler/spica/tests/test_replay_integration.py
  • components/src/dynamo/profiler/spica/tests/test_sample.py
  • components/src/dynamo/profiler/spica/tests/test_sampler.py
  • components/src/dynamo/profiler/spica/tests/test_score.py
  • components/src/dynamo/profiler/spica/tests/test_search.py
  • components/src/dynamo/profiler/spica/tests/test_search_space.py
  • components/src/dynamo/replay/main.py
  • container/deps/requirements.planner.txt
  • container/templates/wheel_builder.Dockerfile
  • docs/components/profiler/README.md
  • docs/components/profiler/spica/README.md
  • docs/components/profiler/spica/examples/glm5-disagg-pareto-frontier-sweep.md
  • docs/components/profiler/spica/examples/planner-goodput-per-gpu-sweep.md
  • docs/components/profiler/spica/examples/router-e2e-latency-sweep.md
  • docs/components/profiler/spica/optimization-goal.md
  • docs/components/profiler/spica/overview.md
  • docs/components/profiler/spica/sample.md
  • docs/components/profiler/spica/search-space.md
  • docs/components/profiler/spica/traffic.md
  • docs/index.yml
  • examples/profiler/spica/README.md
  • examples/profiler/spica/configs/glm5-disagg-pareto-frontier.yaml
  • examples/profiler/spica/configs/smart_sweep.yaml
  • examples/profiler/spica/tools/gen_sine_trace.py
  • examples/profiler/spica/tools/run_load_predictor_sweep.py
  • lib/bindings/python/rust/llm/aic_callback.rs
  • lib/bindings/python/rust/llm/replay.rs
  • lib/bindings/python/tests/replay/test_replay_aic_capacity.py
  • pyproject.toml
  • tests/report_pytest_markers.py

Comment thread aisimulate/src/aisimulate/spica/kv_load.py
Comment thread aisimulate/src/aisimulate/spica/kv_load.py
Comment thread aisimulate/src/aisimulate/spica/search.py
Comment thread aisimulate/src/aisimulate/spica/search.py
Comment thread aisimulate/tests/spica/conftest.py
Comment thread aisimulate/tests/spica/test_cli.py
Comment thread aisimulate/tests/spica/test_replay_integration.py
Comment thread components/src/dynamo/profiler/spica/tests/test_search_space.py Outdated
Comment thread docs/components/profiler/spica/examples/glm5-disagg-pareto-frontier-sweep.md Outdated
Comment thread examples/profiler/spica/README.md Outdated
Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
@tedzhouhk
tedzhouhk requested a review from a team as a code owner July 20, 2026 23:17
Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
@tedzhouhk

Copy link
Copy Markdown
Contributor Author

Addressed the remaining CodeRabbit review summary items in bb0f21fa9f (plus the earlier unsafe Send/Sync cleanup already present in d5b299a4b4): isolated and tested the AIC 0.9 private-helper boundary; consolidated and documented deferred Vizier/Planner imports; logged broad worker failures with tracebacks; removed shared /tmp test paths; bounded subprocess and ProcessPool tests; corrected integration/model scheduling; used iterator-based best-trial selection; labeled the text fence; separated adjacent admonitions; and made the regex raw. The packaging TOML nit was superseded by the installed-package contract test and scripts/check_spica_packaging.py. The exact tfp-nightly pin remains intentionally monitored until Vizier permits a stable TFP release. Validation: full Spica suite 246 passed, 6 skipped; pre-commit passed; packaging contract passed; Fern check reported 0 errors; CI filter matching passed.

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
…a-to-dynamo

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
@tedzhouhk

Copy link
Copy Markdown
Contributor Author

/ok to test f261132

@tedzhouhk

Copy link
Copy Markdown
Contributor Author

CI infrastructure note: deploy-operator has failed twice on this SHA at the Helm Docker Hub registry login with unauthorized: incorrect username or password. The same failure is affecting concurrent PR workflows (for example, run 29875480844/job/88785629256), while this PR's remaining 71 checks pass. I am monitoring for the repository Docker Hub credentials to recover and will rerun the deploy job and dependent status gate.

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
@jasonqinzhou

Copy link
Copy Markdown
Contributor

as discussed, we can merge this first, then have a small PR for libs/mocker updates after dynamo aic version bump.

Comment thread .github/workflows/docs-link-check.yml Outdated
Comment thread examples/aisimulate/spica/configs/glm5-disagg-pareto-frontier.yaml
Comment thread aisimulate/examples/spica/README.md Outdated
Comment thread aisimulate/tests/spica/test_deploy.py Outdated
Comment thread aisimulate/README.md
Comment thread container/templates/planner.Dockerfile Outdated
Comment thread aisimulate/tests/conftest.py Outdated
Comment thread aisimulate/scripts/check_packaging.py Outdated
Signed-off-by: hongkuanz <hongkuanz@nvidia.com>

@nv-anants nv-anants left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

reviewed .github, overall structure and packaging changes - lgtm!

…a-to-dynamo

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>

# Conflicts:
#	docs/fern/assets/img/spica-glm5-disagg-pareto-frontier-sweep.png
#	docs/index.yml
Signed-off-by: hongkuanz <hongkuanz@nvidia.com>

Copy link
Copy Markdown
Contributor Author

/ok to test d08260a

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
@tedzhouhk
tedzhouhk requested a review from a team as a code owner July 27, 2026 19:31
@github-actions github-actions Bot added the deployment::k8s Relates to dynamo deployment in kubernetes label Jul 27, 2026
Comment thread examples/aisimulate/spica/configs/smart_sweep.yaml Outdated
Comment thread examples/aisimulate/spica/configs/glm5-disagg-pareto-frontier.yaml Outdated
Comment thread examples/aisimulate/spica/tools/gen_sine_trace.py Outdated
Comment thread examples/aisimulate/spica/tools/run_load_predictor_sweep.py Outdated
Comment thread .github/workflows/docs-link-check.yml Outdated
Comment thread aisimulate/scripts/check_packaging.py Outdated
tedzhouhk and others added 5 commits July 27, 2026 12:55
Co-authored-by: Harrison Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Hongkuan Zhou <tedzhouhk@gmail.com>
…yaml

Co-authored-by: Harrison Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Hongkuan Zhou <tedzhouhk@gmail.com>
Co-authored-by: Harrison Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Hongkuan Zhou <tedzhouhk@gmail.com>
Co-authored-by: Harrison Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Hongkuan Zhou <tedzhouhk@gmail.com>
…eto-frontier-sweep.md

Co-authored-by: Harrison Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Hongkuan Zhou <tedzhouhk@gmail.com>

@jthomson04 jthomson04 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.

Approving changes in dynamo operator comments.

…a-to-dynamo

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>

# Conflicts:
#	components/src/dynamo/profiler/utils/dgdr_v1beta1_types.py
#	deploy/operator/api/v1beta1/dynamographdeploymentrequest_types.go
#	deploy/operator/config/crd/bases/nvidia.com_dynamographdeploymentrequests.yaml
#	docs/fern/kubernetes/api-reference.md
@tedzhouhk
tedzhouhk enabled auto-merge (squash) July 27, 2026 22:08
@tedzhouhk
tedzhouhk merged commit 0f68534 into main Jul 28, 2026
115 checks passed
@tedzhouhk
tedzhouhk deleted the hzhou-codex/move-spica-to-dynamo branch July 28, 2026 01:06
pvijayakrish added a commit that referenced this pull request Jul 30, 2026
…FA variants

Extends the operator/planner nightly pattern (#11443) to the remaining
container images, with the same invariants:

- nightly-ci builds each image itself (frontend via shared-build-image
  target=frontend; snapshot agent via build-deploy-component with the
  artifact_tag input; vllm/sglang/trtllm EFA via make_efa: true) so the
  compliance-<sha>-<token> artifacts land on the nightly run id that
  GitLab's OSRB attach resolves, and the -nightly ECR tag suffix keeps a
  failed build from ever falling through to a post-merge image.
- All five jobs are ORDERING-ONLY needs of the release job — outside its
  success gate, so a flake in any optional image cannot block the runtime
  nightly — and are added to clean-k8s-builder so the shared builder
  outlives them.
- release.yml: the per-image copy blocks are refactored into a generic
  stage_optional() helper (result gate -> crane probe -> copy -> floating
  tag) now covering seven optional images. New workflow_call string inputs
  frontend/snapshot/vllm_efa/sglang_efa/trtllm_efa_build_result forward
  needs.<job>.result; empty (direct dispatch) falls back to probe-only,
  matching the runtimes.
- NGC layout: dynamo-frontend-nightly / snapshot-agent-nightly get their
  own -nightly staging repos (dated tag + :nightly floating alias on the
  stable repo); EFA variants stage into the existing runtime -nightly repos
  as <dated>-efa plus a <stable>:nightly-efa floating alias, mirroring the
  RC convention vllm-runtime:<ver>-efa.
- Step summary lists all seven optional images and their floating tags with
  per-image NOT-staged annotations.

Snapshot agent stays amd64-only (cuda-checkpoint has no arm64 binary); the
EFA and frontend images are multi-arch.

Also: ALL eight shared-build-image nightly jobs (vllm/sglang/trtllm base +
EFA, planner, frontend) now take dev_version_suffix from compute-dev-version
— previously only dynamo-pipeline did. apply_dev_version.py stamps the
checkout before the build, so the wheels (and Cargo versions) embedded in
every nightly image report X.Y.Z.devYYYYMMDD, matching the
Artifactory-published nightly wheels and the dynamo-runtime image. This
closes the "nightly image contains stable-versioned packages" gap for the
entire image set at once; stamping only one image would have created skew.
Operator and snapshot agent are excluded by nature (Go-only, wheel-free,
built via build-deploy-component which has no such input). Note: OSRB CSV
diffs will now show first-party version churn night-over-night — the same
behavior dynamo-pipeline's image already has.

Depends on #11443 (artifact_tag input, stage-optional structure). Pairs
with the release-automation branch of the same name (probe/nSpect/scan/
bundle wiring).

feat(release): mutable :nightly floating tags for operator and planner

Runtime parity: every nightly repushes vllm-runtime:nightly /
sglang-runtime:nightly / tensorrtllm-runtime:nightly floating aliases on the
stable staging repos, but the operator and planner images only received the
dated immutable tag in their -nightly repos. Consumers pulling from staging
could compose the runtimes by floating tag but had to scrape the newest
date-sha tag for the operator that manages them.

Push kubernetes-operator:nightly and dynamo-planner:nightly onto the stable
staging repos after each successful dated copy, mirroring the runtime
pattern (no cuda alias — neither image has cuda variants). The pushes are
guarded by the staged-success branch, so a skipped night leaves the floating
tag pointing at the last successfully staged nightly instead of going stale
silently — same semantics as a runtime-build failure night, where the whole
release job is gated off and the runtime floating tags also stay put.
`|| true` keeps a floating-tag miss non-fatal (recorded in FAILED_COPIES by
copy_image) so it cannot abort the copy step under set -e.

Step summary lists the two new floating tags with the same NOT-staged
annotation used for their dated tags.

The published (prod NGC) side already had parity: the nightly bundle MR
publishes <image>-nightly:latest alongside the dated tag for all five
images.

Merge branch 'main' into pvijayakrish/support-planner-operator-nightly
rework(release): build operator + planner in nightly-ci for OSRB from day one

The previous approach reused the post-merge images at the same SHA. That
left the compliance-<sha>-operator / -dynamo-planner artifacts on the
post-merge run id, while GitLab's nvbug:attach-compliance resolves artifacts
on the GITHUB_RUN_ID this workflow forwards — the nightly run — so the OSRB
NVBugs (5329715 / 6123727) would never receive their CSVs. It also broke the
nightly tag-isolation invariant (a stale post-merge image could be staged).

- nightly-ci.yml: add operator-build (build-deploy-component, multi-arch,
  image <sha>-operator-nightly) and planner-build (shared-build-image,
  framework dynamo / target planner, image_tag_suffix -nightly,
  inline_compliance) with diff_event_context: nightly. Both are
  ORDERING-ONLY needs of the release job — deliberately outside its success
  gate, so a flake in either cannot block the runtime nightly. Added to
  clean-k8s-builder needs so the shared builder outlives them.
- build-deploy-component: new optional artifact_tag input so the suffixed
  nightly image tag keeps the canonical compliance-<sha>-operator artifact
  name that OSRB tokens and diff-baseline lookups key on (planner needs no
  equivalent: shared-build-image already names its artifact from
  target_tag_plain, which excludes the tag suffix).
- release.yml: nightly copy sources switch to the -nightly ECR tags built by
  this run; warn-skip messages now point at the build jobs, not post-merge
  timing.
- release.yml gains operator_build_result / planner_build_result
  workflow_call string inputs, forwarded from nightly-ci as
  needs.<job>.result. The copy step gates on the result BEFORE the crane
  probe: non-success -> skip (SHA-keyed tags alone can't tell tonight's
  build from yesterday's on a quiet-repo day, and a failed build must never
  republish a previous run's image); empty -> direct workflow_dispatch with
  no builds in this run, so the probe alone decides — a manual nightly
  re-stage copies whatever nightly-built -nightly tags exist for the SHA,
  matching the runtimes.

Wheel versioning note: like the vllm/sglang/trtllm image builds, the planner
build takes no dev_version_suffix (only dynamo-pipeline's published wheels
are dev-versioned), so embedded wheel versions stay consistent across all
five nightly images.

test(operator): add Kind-backed controller manifest tests (#12009)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
chore: bump trtllm to v1.3.0rc22 (#12071)

Signed-off-by: dynamo-ops <170655669+dynamo-ops@users.noreply.github.com>
Signed-off-by: Anant Sharma <anants@nvidia.com>
Co-authored-by: Anant Sharma <anants@nvidia.com>
fix: recreate allocation export handles after CUDA restore (#12216)

Signed-off-by: Hannah Zhang <hannahz@nvidia.com>
fix(protocols): preserve media in tool results (#12180)
feat(skills): add visual review dashboard (#11602)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
fix(kv-router): restore multinode SGLang KV events (#12185)

Signed-off-by: Ryan McCormick <rmccormick@nvidia.com>
perf(mocker): drive only ready offline worker groups (#12242)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
docs(mocker): document eager replay execution (#12245)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
Merge branch 'main' into pvijayakrish/support-planner-operator-nightly
docs(release): correct the operator/planner nightly reuse comment

"Operator and planner carry no dev-versioned wheels" was wrong for the
planner: its image bundles the dynamo wheels from the wheel_builder stage,
and post-merge passes no dev_version_suffix — so the planner nightly's
embedded wheels are plain-versioned while the runtime nightlies at the same
tag carry dev-versioned wheels. State that explicitly; only the operator
(Go-only) is wheel-free.

Merge origin/main into pvijayakrish/support-planner-operator-nightly

Refresh the 19-day-old branch: main has not touched release.yml since the
merge-base, so the merge is clean — this re-bases CI on current main and
re-runs the stale checks.

perf(mocker): avoid cloning offline worker groups (#12240)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
feat(aisimulate): move experimental Spica into Dynamo (#11923)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
Signed-off-by: Hongkuan Zhou <tedzhouhk@gmail.com>
Co-authored-by: Harrison Saturley-Hall <hsaturleyhal@nvidia.com>
fix(ci): provision the model cache PVC on post-merge (#12114)

Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
fix(container): workaround for devtools repo error (404) on nsight-systems (#12232)

Co-authored-by: Claude <noreply@anthropic.com>
recipes: publish Kimi-K3 to main (#12228)

Signed-off-by: Ben Hamm <ben.hamm@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
docs: add Kimi-K3 recipe page (#12210)

Signed-off-by: Ben Hamm <ben.hamm@gmail.com>
Signed-off-by: Yogendra Pandey <ypandey@nvidia.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Yogendra Pandey <ypandey@nvidia.com>
Co-authored-by: Yogendra Pandey <20666257+ynpandey-nv@users.noreply.github.com>
fix(docs): deliver site CSS from CustomFooter so it survives the global theme (#12212)

Signed-off-by: Dan Gil <dagil@nvidia.com>
ci(nightly): add H100 test lanes for vLLM and TensorRT-LLM (#12045)

Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docs: restructure docs site into tab-based navigation (#10855)

Signed-off-by: Jont828 <jt572@cornell.edu>
Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: alimaazamat <alima.azamat2003@gmail.com>
Co-authored-by: akshatha-k <akshutk@gmail.com>
Co-authored-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Ben Hamm <ben.hamm@gmail.com>
Co-authored-by: Harry Kim <harryk@nvidia.com>
perf(tokens): remove redundant inner DashMap sharding (#12161)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
fix(operator): preserve DGDSA-owned replica counts (#12087)
feat(epp): reconcile standalone worker topology with the embedded selector (#11074)

Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
Signed-off-by: Thomas Montfort <tjmontfort12@gmail.com>
Co-authored-by: Thomas Montfort <tjmontfort12@gmail.com>
docs: add KV router offloading support matrix and vLLM native offloading guide (#11973)

Signed-off-by: Change72 <changg@nvidia.com>
Signed-off-by: Chang Guo <changg@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
build(deps): Change parser for performance dependency (#12147)

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
feat(router): add active-request decode cost (#12158)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
docs(dynosim): clarify offline and live simulation workflows (#12172)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
docs: update Fern CLI link (#12173)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(runtime): restrict event publisher IDs to 63 bits (#12170)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
fix(snapshot): disable service-mesh sidecar injection on checkpoint Job pods (#11396)

Signed-off-by: Ron Kahn <rkahn@nvidia.com>
feat(frontend): add image-token count metrics (#12065)

Signed-off-by: Krishnan Prashanth <kprashanth@nvidia.com>
Signed-off-by: Krishnan Prashanth <140860868+KrishnanPrash@users.noreply.github.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
feat(router): warn on missing KV event publishers (#12095)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(trtllm): preserve unset KV cache config fields (#12117)

Signed-off-by: Alec Flowers <aflowers@nvidia.com>
fix(mocker): model SGLang KV allocation by page (#12108)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(profiler): fail closed on interpolation errors (#12118)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
chore(vllm): remove deprecated worker role flags (#12089)

Signed-off-by: Alec Flowers <aflowers@nvidia.com>
ci: run dynamo_llm rust-gpu tests single-threaded to fix teardown SIGSEGV (OPS-7753) (#11853)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
feat(mocker): add selectable native G1 manager (#12033)

Signed-off-by: Yongming Ding <yongmingd@nvidia.com>
perf(benchmarks): restore local prefix hashing (#12104)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix: count only generate workers in kv router bench (#12086)

Signed-off-by: Olga Andreeva <oandreeva@nvidia.com>
feat(container/AWS): Update to EFA Installer 1.49.0 (#12010)

Signed-off-by: Erez Zarum <erezz@amazon.com>
fix(recipes): make gpt-oss-120b disagg + perf run as shipped (#12070)

Signed-off-by: Roman Ageev <rageev@nvidia.com>
feat(vllm): add custom encoder adapter (#11847)

Signed-off-by: furionw <qiwa@nvidia.com>
refactor(planner): decouple global planner decision logic from K8s and drt (#12061)

Signed-off-by: Sachal Malick <s@chal.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
fix(codeowners): assign squeeze-evolve to router (#12101)

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
feat(vllm): add mock gRPC server for sidecar tests (#11873)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
feat(operator): support Recreate strategy for managed rolling updates (#11909)
build(grove): bump dependency to v0.1.0-alpha.12-rc1 (#11994)
fix(vllm): publish configured KV events from decode workers (#12084)

Signed-off-by: Alec Flowers <aflowers@nvidia.com>
fix(mocker): bound offline replay memory growth (#12049)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(llm): return 400 for max_tokens: 0 on chat completions (#11394)

Signed-off-by: AmeenP <ameenp360@gmail.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
perf(trtllm): batch worker KV event drains (#11783)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
feat: experimental squeeze_evolve (multi-model evolutionary test-time scaling) (#10785)

Signed-off-by: Monishwaran Maheswaran <monishwaran@berkeley.edu>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
feat(deploy-test): optionally mount a shared model cache on worker pods (#11786)

Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
perf(logging): warn when dynamic filters disable fast path (#11974)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
feat(trtllm): native multimodal KV routing on rc21 (#11737)

Signed-off-by: Krishnan Prashanth <kprashanth@nvidia.com>
feat(router): add provider-keyed tracking hashes (#11548)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
Signed-off-by: PeaBrane <yanrpei@gmail.com>
Co-authored-by: Yan Ru Pei <yanrpei@gmail.com>
fix(mocker): preserve Mooncake hash identities (#12046)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
chore: bump version 10 1.4.0 post 1.3.0 (#12040)

Signed-off-by: pvijayakrish <pvijayakrish@nvidia.com>
feat(frontend): pass multimodal UUIDs through to vLLM Part 3 (#11958)

Signed-off-by: Zhuangcheng(Jesse) Gu <zcgu@connect.hku.hk>
feat: add batch API skeleton (#11707)

Signed-off-by: Hannah Zhang <hannahz@nvidia.com>
feat(runtime): configure worker inhibition with direct-routing bypass (#11993)

Signed-off-by: Jacky <18255193+kthui@users.noreply.github.com>
fix(sglang): warm every prefill DP rank before serving (#11526)

Signed-off-by: weireweire <20922698+weireweire@users.noreply.github.com>
Co-authored-by: weireweire <20922698+weireweire@users.noreply.github.com>
feat(replay): add Poisson synthetic arrivals (#12062)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(mocker): restore KVBM test imports (#12075)

Signed-off-by: Hannah Zhang <hannahz@nvidia.com>
fix(profiler): honor requested replay router mode (#12044)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
ci(nightly): run GitLab trigger in parallel with tests (#11798)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: add Get Dynamo install-command selector to docs  (#11950)

Signed-off-by: Anant Sharma <anants@nvidia.com>
feat(operator): make Tilt target architecture configurable (#12008)

Signed-off-by: carlory <baofa.fan@daocloud.io>
feat(ext-proc): embed SelectionService in standalone EPP (#11541)

Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
Signed-off-by: Thomas Montfort <tjmontfort12@gmail.com>
Co-authored-by: Thomas Montfort <tjmontfort12@gmail.com>
fix(operator): cap k8s discovery RBAC label values to 63 chars (#11709)

Signed-off-by: Sameer Kulkarni <skulkarni@coreweave.com>
Signed-off-by: Sameer Kulkarni <kulkarnisameer7@gmail.com>
fix(router): serialize active sequence publishing (#11992)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
fix(frontend): Force streaming usage behind toggle (#12017)

Signed-off-by: Ace Eldeib <aeldeib@coreweave.com>
feat: update dynamo protocols to 3.1.0 (#11978)

Signed-off-by: Hannah Zhang <hannahz@nvidia.com>
perf(mocker): streamline SGLang radix scheduling (#12043)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(planner): discover MDC for truncated Grove names (#12047)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
refactor(mocker): isolate offline replay policies (#11942)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
feat(mocker): add live request engine (#11917)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
feat: add GMS shadow-failover observability (metrics + dashboard) (#11664)

Signed-off-by: mohammedabdulwahhab <furkhan324@berkeley.edu>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
perf(operator): reduce memory retained by the shared Pod cache (#12014)

Signed-off-by: Julien Mancuso <jmancuso@nvidia.com>
chore(deps): bump helm.sh/helm/v3 from 3.17.3 to 3.20.2 in /deploy/operator (#11956)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fix(sglang): register all sidecar DP ranks (#12039)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix(operator): wait for JobComplete before DynamoCheckpoint Ready (#11901)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
fix(mocker): repair replay request lifecycles (#12025)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
Signed-off-by: PeaBrane <yanrpei@gmail.com>
Co-authored-by: Yan Ru Pei <yanrpei@gmail.com>
fix(backends): reject unsupported multimodal UUIDs Part 2 (#11944)

Signed-off-by: Zhuangcheng(Jesse) Gu <zcgu@connect.hku.hk>
feat(gms): surface scratch-KV engagement in shadow worker logs (#11724)

Signed-off-by: mohammedabdulwahhab <furkhan324@berkeley.edu>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(trtllm): publish KV cache capacity (#12023)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
feat: PR 3 Worker Pod Discovery for the EPP and standalone Selector Router Integration (#11072)

Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
Co-authored-by: Thomas Montfort <tjmontfort12@gmail.com>
fix: use SGLang host for bootstrap discovery (#12026)
feat(ext-proc): add vLLM render client for standalone EPP (#11827)

Signed-off-by: Thomas Montfort <tjmontfort12@gmail.com>
Signed-off-by: Thomas Montfort <61255722+tmonty12@users.noreply.github.com>
Co-authored-by: Dmitry Tokarev <dtokarev@nvidia.com>
test: allocate dynamic ports for disaggregated vllm tests (#11819)

Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
feat(mocker): add targeted request cancellation (#11964)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix: TRT-LLM backend skips SSRF validation for video_url (#12002)

Signed-off-by: weizhoublue <weizhou.lan@daocloud.io>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
fix: relay CPATH and TRITON_PTXAS_PATH to multi-node TRTLLM launch (#11999)

Signed-off-by: Yunzhou Liu <232973175+yunzhoul-nv@users.noreply.github.com>
feat(vllm): support cached multimodal UUID passthrough Part 1 (#11943)

Signed-off-by: Zhuangcheng(Jesse) Gu <zcgu@connect.hku.hk>
feat(operator): scaffold DGD placement score status wiring (#11057)

Signed-off-by: ashnamehrotra <ashnamehrotra@gmail.com>
docs: add Model Early Access Builds reference page (#11898)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chore: bump version references to v1.3.0 (#11897)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
docs(xpu): add XPU paths to getting-started and Kubernetes docs (#11894)

Signed-off-by: Yi Yao <yi.a.yao@intel.com>
Signed-off-by: Yi Yao <joshua.yao.sh@gmail.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
fix(docs): restore NVIDIA global theme via SiteStyles component (#11952)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
fix(global-planner): read v1beta1 DGD components (#11990)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
perf(replay): defer Dynamo prompt materialization (#11989)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
feat(skills): add KV replay parity workflow (#11959)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
perf(router): ingest active sequence updates concurrently (#11967)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(router): use prefill EAGLE mode for KV routing (#11764)
fix(helm): disable bundled NATS by default (#11951)

Signed-off-by: Julien Mancuso <jmancuso@nvidia.com>
docs: add vLLM agentic targets to GPT-OSS-120B recipe (#11980)

Signed-off-by: shwetha-krishnamurthy <shwetha.krishnamurthy27@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(gms): reduce footprint of scratch KV during failover (#11911)

Signed-off-by: mohammedabdulwahhab <furkhan324@berkeley.edu>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(trtllm): support video_url multimodal inputs (#11896)

Signed-off-by: Krishnan Prashanth <kprashanth@nvidia.com>
feat(vllm): support multiple served model names (#11611)

Signed-off-by: Fengyu Li <fengyul@nvidia.com>
Co-authored-by: Fengyu Li <fengyul@nvidia.com>
docs: add GLM-5.2 recipe page (#11972)

Signed-off-by: shwetha-krishnamurthy <shwetha.krishnamurthy27@gmail.com>
Co-authored-by: shwetha-krishnamurthy <shwetha.krishnamurthy27@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
refactor(mocker): share live scheduler loop (#11960)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
feat(http): Python-loadable frontend route extensions (#11626)

Signed-off-by: Anish Kumar <aniskumar@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(trtllm): add TensorRT-LLM native gRPC sidecar backend (#11840)

Signed-off-by: tanmayv25 <tanmay2592@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(multimodal): force vLLM V1 model runner in disaggregated EPD encode worker (OPS-7720) (#11913)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
fix: DYN-3361: Update ray documentation to recommend mp instead (#11259)

Signed-off-by: Dillon Cullinan <dcullinan@nvidia.com>
feat(router): add conditional disagg policy kernel (#11718)

Signed-off-by: Karen Chung <karenc@nvidia.com>
perf(router): batch active sequence replica events (#11920)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
perf(bench): slim dependencies and complete CKF integration (#11900)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
test(operatorenv): exercise operator admission through envtest (#11237)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
feat: PR 1: EPP config for the EPP and standalone Selector Router Integration (#11070)

Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
Signed-off-by: Thomas Montfort <tjmontfort12@gmail.com>
Co-authored-by: Thomas Montfort <tjmontfort12@gmail.com>
fix(snapshot): write rootfs-diff.tar atomically, handle empty archive (#11883)

Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
refactor(snapshot): run restore FD cleanup after cuda unlock (#11777)

Signed-off-by: dfeigin-nv <dfeigin@nvidia.com>
perf(kv-router): ingest direct ZMQ events concurrently (#11938)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
docs: make translation snapshots survive commits and dev syncs

Independent review of the release flow found the snapshot's persistence
path broken end to end:

- the release commit staged only the base artifacts, so the snapshot
  published once from the working tree and was never pushed to
  docs-website
- the dev sync replaced fern/translations wholesale, so even a
  committed snapshot was deleted (and the deletion committed) on the
  next docs change to main

The release commit now stages fern/translations/*/pages-<tag>, and the
dev sync replaces only each locale's pages-dev mirror, preserving
versioned snapshots (retiring a locale still drops its dev mirror).
Also capability-gate the release resolver invocation so
workflow_dispatch rebuilds of tags whose resolver predates --pages-dir
skip link resolution with a warning instead of failing, and document
the release invocation in the script usage.

Verified with a git-backed persistence test: snapshot present in the
release commit, survives a subsequent dev sync (which still refreshes
the dev mirror and deletes nothing), and locale retirement keeps
snapshots. Dev-flow replica regression unchanged (87 links + 2
fallbacks, fern check 0 errors).

Signed-off-by: Dan Gil <dagil@nvidia.com>

docs: pin GitHub-fallback links to the tag explicitly

GITHUB_SHA is only the tag commit on tag-push triggers; on a
workflow_dispatch rebuild it is the dispatching branch head, so
fallback links would pin to an arbitrary main commit. Pass the ref
explicitly: the resolver gains --github-ref (defaulting to GITHUB_SHA,
dev sync unchanged) and the release job passes the tag.

Signed-off-by: Dan Gil <dagil@nvidia.com>

docs: note versioned translation snapshots in the dynamo-docs skill

Signed-off-by: Dan Gil <dagil@nvidia.com>

docs: snapshot zh-CN translations at version cut

Translations were structurally dev-only: the release-version job built
pages-<tag> solely from the tagged docs/ tree while the language picker
renders on every version, so the first tag cut after native localization
would ship a Latest whose 简体中文 toggle silently re-renders English,
and the dev translations would keep drifting instead of being frozen.

The release job now snapshots fern/translations/<lang>/pages-dev into
fern/translations/<lang>/pages-<tag> (the mirror-path convention Fern
pairs per version), includes the snapshot in GitHub-link pinning and
callout conversion, and runs resolve_translation_links.py with the
tag's version slug via a new --pages-dir argument (default pages-dev,
so the dev sync is unchanged). GITHUB_SHA at the tag ref pins
GitHub-fallback links to the release commit.

Fixes #11195

Signed-off-by: Dan Gil <dagil@nvidia.com>

fix(recipes): use public GLM-5.2 SGLang image

Point all GLM-5.2 SGLang deployment profiles at the public NGC
registry so the release recipes do not require nvstaging access.

Signed-off-by: Yogendra Pandey <ypandey@nvidia.com>

feat(recipes): DSV4 Flash/Pro vLLM agentic recipes (#11429)

Signed-off-by: Sungsoo Ha <sungsooh@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
feat(recipes): Add GLM-5.2 SGLang agg/disagg h200/b200 recipes + review fixes (#11926)

Signed-off-by: Alexandre Milesi <milesial@users.noreply.github.com>
Signed-off-by: milesial <milesial@users.noreply.github.com>
Signed-off-by: Roman Ageev <rageev@nvidia.com>
Signed-off-by: Yogendra Pandey <ypandey@nvidia.com>
Co-authored-by: milesial <milesial@users.noreply.github.com>
Co-authored-by: Roman Ageev <rageev@nvidia.com>
Co-authored-by: Yogendra Pandey <ypandey@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
feat: add gpt-oss-120b vLLM recipes (agg + disagg, B200/H200) (#11506)

Signed-off-by: Roman Ageev <rageev@nvidia.com>
Signed-off-by: Yogendra Pandey <ypandey@nvidia.com>
Co-authored-by: Roman Ageev <rageev@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Yogendra Pandey <ypandey@nvidia.com>
Co-authored-by: Yogendra Pandey <20666257+ynpandey-nv@users.noreply.github.com>
feat(vLLM): support benchmark grid override in vLLM selfbenchmarking (#11713)
fix(frontend): disable tokenizer.json baked-in truncation (#11792)

Signed-off-by: Chanh Nguyen <chanhnguyen@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(mocker): stop zeroing cache hits between prefills [DYN-3449] (#11893)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
docs(router): fix stale router user documentation [DYN-3476] (#11892)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
feat: inline license/SBOM compliance for frontend and snapshot image (#11533)

Signed-off-by: Anant Sharma <anants@nvidia.com>
fix(mocker): make replay outputs deterministic (#11902)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(llm): normalize disabled top-k sentinels [DYN-3579] (#11871)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
feat: preserve eager-tail samples and reorder prefill sweep (#11824)

Signed-off-by: YZLi <yuanli@nvidia.com>
fix(mocker): publish native ZMQ KV batches (#11860)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
refactor(router): make policy-class admission class-local (#11787)
feat(global-router): route aggregate pools by input sequence length (#11835)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
fix(gms): make gpu_memory_service logs visible in the vLLM worker (#11809)

Signed-off-by: mohammedabdulwahhab <furkhan324@berkeley.edu>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
refactor(sidecars): extract shared gRPC infrastructure (#11844)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
refactor(operator): extract webhook setup (#11907)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
chore: bump trtllm to v1.3.0rc21 (#11763)

Signed-off-by: dynamo-ops <170655669+dynamo-ops@users.noreply.github.com>
Signed-off-by: Anant Sharma <anants@nvidia.com>
Co-authored-by: Anant Sharma <anants@nvidia.com>
refactor(operator): extract reconciler setup functions (#11828)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
feat(kv-router): add sequenced DC Relay and domain-scoped CKF consumer [DYN-3586] (#11793)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(vllm): register LoRA MDCs with the main-attention KV block size (#11867)

Signed-off-by: AmeenP <ameenp360@gmail.com>
feat(runtime): add endpoint-scoped event transport (#11841)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
refactor(vllm): derive prompt usage from request output (#11861)
refactor(backends): remove experimental unified backend engines (#11831)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
test(bindings): fix flaky test_chat_completion_success readiness race (#11810)
feat(planner): support Dynamo traces for load predictor warmup (#11842)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(preprocessor): preserve special tokens for Inkling parsers (#11823)
feat(kv-router): configure active request expiry (#11303)

Signed-off-by: inf-yasong <yasong.wang@inferact.ai>
Signed-off-by: PeaBrane <yanrpei@gmail.com>
Co-authored-by: PeaBrane <yanrpei@gmail.com>
feat(vllm): add minimal grpc sidecar (#11754)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix(lora): make disaggregated prefill lifecycle-aware (#11520)

Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
perf(logging): avoid dynamic filter span locks (#11820)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
fix(kv-router): scrub lookup entry when a remove can't resolve its node (#11785)

Signed-off-by: Shang-Pin <shang-pin@deepinfra.com>
Co-authored-by: Shang-Pin <shang-pin@deepinfra.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
refactor(operator): complete structural validation migration (#11788)

Signed-off-by: Julien Mancuso <jmancuso@nvidia.com>
chore: add Community Events section with Google Calendar auto-sync (#11757)

Signed-off-by: Harry Kim <harryk@nvidia.com>
Signed-off-by: Harry Kim <harry_kim@live.com>
Co-authored-by: Harry Kim <harryk@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
test(fault-tolerance): make cancellation max_tokens configurable (#11716)

Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
test(llm): cover non-streaming force_nonempty_content aggregation (DYN-3525) (#11717)

Signed-off-by: Tzu-Ling <tzulingk@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(operator): enforce checkpoint feature gate (#11765)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
refactor(planner): Clean up planner core, abstract out peripheral logic (#10767)

Signed-off-by: Sachal Malick <s@chal.ai>
fix(llm): propagate chat completion token details (#11027)

Signed-off-by: aishwaryabandapelly-ai <aishwaryabandapelly@gmail.com>
fix(frontend): apply --default-chat-template-kwargs in vLLM processor (#11731)

Signed-off-by: Krishnan Prashanth <kprashanth@nvidia.com>
refactor(sglang): use Rust executable for sidecar (#11636)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
feat(lora): support Hugging Face Hub sources for LoRA (#11431)

Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
refactor(router): remove durable KV events (#11805)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(router): warn on deprecated enforce-disagg inputs (#11800)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
chore(kv-router): slim dependencies and localize features (#11795)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(profiler): enable TRT-LLM chunked prefill in generated configs (#11780)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(frontend): preserve SGLang reasoning delimiters (#11748)

Signed-off-by: Alexandre Milesi <milesial@users.noreply.github.com>
docs(operator): document structural validation (#11771)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
perf(kv-router): batch event-plane KV events (#11776)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
test(serve): de-flake test_sample_deployment CPU timeout (OPS-7728) (#11727)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
fix(planner): share tick timestamp for observation scheduling (#11784)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(frontend): reject nested chat_template in chat_template_args (#11755)
fix(sglang): forward multimodal config and audio inputs (#11747)

Signed-off-by: Alexandre Milesi <milesial@users.noreply.github.com>
Signed-off-by: milesial <milesial@users.noreply.github.com>
fix(event-plane): stop retired ZMQ subscriber pumps (#11730)

Signed-off-by: zhongdaor <zhongdaor@nvidia.com>
test(serve): add aggregated_spec_decoding launch scenario (#11440)

Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
feat(router): sync session affinity across replicas (#11750)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
docs(recipes): Inkling NVFP4 day-0 recipe page [DYN-3523] (#11749)

Signed-off-by: Ben Hamm <ben.hamm@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
chore: bump cudarc version to support CUDA 13.2 build environment (#11758)

Signed-off-by: Guan Luo <41310872+GuanLuo@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(trtllm): update how to pull engine arg default for TRTLLM API change (#11741)

Signed-off-by: Guan Luo <41310872+GuanLuo@users.noreply.github.com>
feat(recipes): add Inkling (thinkingmachines/Inkling-NVFP4) SGLang agg B200 recipe (#11743)

Signed-off-by: Vanshil Shah <vanshils@nvidia.com>
Signed-off-by: Fadi Saady <fsaady@nvidia.com>
Co-authored-by: Fadi Saady <fsaady@nvidia.com>
chore(runtime): consolidate truthy/bool flag parsing into one helper (#11683)

Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
Co-authored-by: Keiven Chang <keivenchang@users.noreply.github.com>
refactor(operator): centralize feature gates (#11672)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
fix(benchmarks): drop synthetic-only flag from trace runs [DYN-3379] (#11733)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(trtllm): expose env var to force engine side conversation dp assignment (#11705)

Signed-off-by: Guan Luo <41310872+GuanLuo@users.noreply.github.com>
Co-authored-by: Pei Li <peili@nvidia.com>
fix(frontend): forward request chat_template_kwargs to vLLM template (#11729)

Signed-off-by: Krishnan Prashanth <kprashanth@nvidia.com>
fix(profiler): defer aiconfigurator import in replay bench (#11732)

Signed-off-by: Krishnan Prashanth <kprashanth@nvidia.com>
refactor(operator): retire legacy DGDR annotation readers (#11663)
test(sglang): cover aggregated OTLP tracing (#11675)

Signed-off-by: Kavita Narang <knarang@nvidia.com>
feat(router): add live admission request progress (#11615)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
feat(kv-router): allow amplified overlap credit (#11714)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(profiler): restore vLLM disaggregation flags in DGDR output (#11710)

Signed-off-by: Julien Mancuso <jmancuso@nvidia.com>
fix(operator): stop bundling CRDs in the Helm subchart (#11689)
fix: Fix multi-turn reasoning in Kimi (#11653)

Signed-off-by: Indrajit Bhosale <iamindrajitb@gmail.com>
docs(disaggregated-serving): fix broken aiconfigurator support-matrix link (OPS-7722) (#11711)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(planner): use admitted router demand (#11693)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
feat(multimodal): ThreadedMicroBatcher + batcher-backed AsyncVisionEncoder (cross-request batching) (#11037)

Signed-off-by: Qi Wang <qiwa@nvidia.com>
fix(frontend): honor reasoning effort in templates (#11691)

Signed-off-by: Ace Eldeib <aeldeib@coreweave.com>
Co-authored-by: Krishnan Prashanth <140860868+KrishnanPrash@users.noreply.github.com>
fix(trtllm): handle visible stop tokens in unified backend (#11671)

Signed-off-by: Zhuangcheng(Jesse) Gu <zcgu@connect.hku.hk>
fix: make EPP eviction-resistant under node DiskPressure (#11550)

Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
test(vllm): re-enable agg-router and agg-router-approx serve tests (#11681)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix: add AgentHeaderMapping lookup in session_affinity_header_value() (#11677)

Signed-off-by: Guan Luo <41310872+GuanLuo@users.noreply.github.com>
Co-authored-by: Dmitry Tokarev <dtokarev@nvidia.com>
test(trtllm): cap mm_overlap KV pool with token lever, not byte budget (OPS-7716) (#11688)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
fix(vllm): update Qwen3-TTS prompt estimator (#11595)

Signed-off-by: Piotr Tarasiewicz <ptarasiewicz@nvidia.com>
refactor(codeowners): decouple CODEOWNERS emission from the live tree (#11614)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Signed-off-by: Daniel Gil <dagil@nvidia.com>
fix(trtllm): size omitted max_tokens for multimodal via expanded prompt length (#11513)

Signed-off-by: Brian Westphal <bwestphal@nvidia.com>
Signed-off-by: Krishnan Prashanth <140860868+KrishnanPrash@users.noreply.github.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
Co-authored-by: Krishnan Prashanth <140860868+KrishnanPrash@users.noreply.github.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Dmitry Tokarev <dtokarev@nvidia.com>
fix(trtllm): log deprecation notices so operators see them (#11694)

Signed-off-by: tanmayv25 <tanmay2592@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
test: lower cancellation max_tokens for xpu fault tolerance (#11592)

Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
fix(mocker): model MTP prefix block recomputation (#11558)

Signed-off-by: Neal Vaidya <nealv@nvidia.com>
test(replay): focus AIC capacity coverage on config layer (#11686)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
perf(kv-router): compress block tracker prompt paths (#11644)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
feat(bindings): expose Client.instances() with instance/transport snapshot (#11617)

Generalize #11540 into an object model: Client.instances() returns a read-only snapshot of an endpoint's registered instances, each with instance_id, namespace, component, endpoint, transport (kind + address), and device_type. Covers all transports (TCP and NATS); frozen/read-only, value-comparable. Tests cover both the tcp and nats request planes.

Builds on the approach and use case from #11540 by @jyizheng.

Co-authored-by: Yizheng Jiao <jyizheng@gmail.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(vllm): bound RL weight-update initialization (#11418)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
ci: Split Dynamo CI port ranges by workload (#11587)

Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
ci: disable Datadog ITR/code-coverage for subprocess-based tests (#11553)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(mocker): model offline attention DP per rank (#11153)

Signed-off-by: Yongming Ding <yongmingd@nvidia.com>
Co-authored-by: hongkuanz <hongkuanz@nvidia.com>
chore(deps): vllm bump to 0.25.1 (#11606)

Signed-off-by: Karen Chung <karenc@nvidia.com>
chore: update aggregated examples for vllm xpu 0.24.0 (#11229)

Signed-off-by: Yi Yao <yi.a.yao@intel.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
docs(snapshot): update support matrix (#11674)

Signed-off-by: Anish Maddipoti <amaddipoti@nvidia.com>
Co-authored-by: Anish Maddipoti <amaddipoti@nvidia.com>
chore: upgrade azure/setup-helm from 4.3.0 to 5.0.1 (OPS-7670) (#11676)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
feat(sglang): add Python sidecar entrypoint (#11623)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
Signed-off-by: ishandhanani <82981111+ishandhanani@users.noreply.github.com>
Co-authored-by: Dmitry Tokarev <dtokarev@nvidia.com>
feat: support sglang with global router. (#7897)

Signed-off-by: baihuitian <baihuitian.bht@gmail.com>
fix(observability): migrate Grafana dashboards from deprecated frontend gauges to replacements (#11497)
fix(kvbm): disable HMA for incompatible PdConnector children (#11608)

Signed-off-by: Karen Chung <karenc@nvidia.com>
fix(snapshot): preserve NCCL P2P setting (#11639)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
Signed-off-by: Schwinn Saereesitthipitak <17022745+galletas1712@users.noreply.github.com>
fix(snapshot): pin CRIU revision (#11659)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
chore(codeowners): assign snapshot common code to GMS (#11660)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
feat(trtllm): engine-owned conversation-aware ADP routing (#11609)

Signed-off-by: Yuewei Na <nv-yna@users.noreply.github.com>
Signed-off-by: krishung5 <krish@nvidia.com>
Co-authored-by: Yuewei Na <nv-yna@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(profiler): auto-inject --trust-remote-code for custom-code HF models (#10372)

Signed-off-by: Ashna Mehrotra <ashnamehrotra@gmail.com>
Signed-off-by: ashnamehrotra <ashnamehrotra@gmail.com>
feat: inline license/SBOM compliance for planner and operator images (#11328)

Signed-off-by: Anant Sharma <anants@nvidia.com>
docs(sglang): fix broken lychee link in sglang-diffusion.md (#11658)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
refactor(operator): isolate legacy DGDR read compatibility (#11598)

Signed-off-by: Julien Mancuso <jmancuso@nvidia.com>
fix(bindings): restore trace context across the Python chat-processor boundary (#11480)

Signed-off-by: Renan Florez <florez.renan@gmail.com>
fix(operator): isolate namespaced admission and CRD ownership (#11597)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
Co-authored-by: Julien Mancuso <161955438+julienmancuso@users.noreply.github.com>
feat(gms): introduce VMMDevice abstraction for XPU (Phase 1) (#9788)

Signed-off-by: Zhan Xue <zhan.xue@intel.com>
fix(profiler): remove invalid AIPerf nvext input (#11629)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
feat(vllm): make self-benchmark sampling graph aware (#11509)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(planner): remove ineffective prefill SLA floor (#11624)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(replay): honor planner replay concurrency (#11633)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
revert(vllm): remove worker-side max-token budget rejection (#11564)

Signed-off-by: Ryan McCormick <rmccormick@nvidia.com>
fix(tokenspeed): align FlashInfer JIT cache version (#11465)

Signed-off-by: William Arnold <7565007+Aphoh@users.noreply.github.com>
chore(sglang): bump to 0.5.15 (#11596)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
fix(llm): route structured JSON responses to content with reasoning parser (#11512)

Signed-off-by: Zhuangcheng(Jesse) Gu <zcgu@connect.hku.hk>
fix: Fix MiniMax M2 forced/named tool calling when reasoning is enabled. (#11554)

Signed-off-by: Indrajit Bhosale <iamindrajitb@gmail.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
perf(kv-router): streamline block release cleanup (#11568)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
test(serve): add sglang disaggregated_router launch scenario (#11442)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(tests): prevent port-forward EADDRINUSE flake in TRTLLM checkpoint test (#11560)

Signed-off-by: Rini Gupta <rinig@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
feat(selection): cache `select()` booking inputs so `create_reservation` replays by id (#11416)

Cache bounded selection booking inputs by selection ID so reservations can replay without resending or rehashing prompt data.
feat(snapshot): capture checkpoints via PodSnapshot + node agent (#10951)

Signed-off-by: Ron Kahn <rkahn@nvidia.com>
docs(planner): align configuration descriptions with behavior (#11613)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
perf(trtllm): skip duplicate text prompt metadata (#11202)

Signed-off-by: Ryan McCormick <rmccormick@nvidia.com>
docs(profiler): clarify infeasible SLA behavior (#11612)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(router): disable queueing by default (#11599)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
perf(runtime): avoid copying received ZMQ frames (#11574)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
feat(sglang): support multiple served model names (#11141)

Signed-off-by: Fengyu Li <fengyul@nvidia.com>
Co-authored-by: Fengyu Li <fengyul@nvidia.com>
docs(kubernetes): document DGD scale-to-zero limitation (#11536)
fix: cover root CLAUDE.md in codeowners and match main/pr triggers (#11603)

Signed-off-by: Anant Sharma <anants@nvidia.com>
feat(compliance): add OSRB CSV diffs to compliance artifacts (#11240)

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: DGD status observability from Grove fields - status reasons fine grained (#11131)

Signed-off-by: devivasudevan <49675305+devivasudevan@users.noreply.github.com>
feat(router): define queue admission strategy API (#11434)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
ci: await PR reminder comment creation (#11545)

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
refactor(operator): lazily converge worker hashes to v2 (#11529)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
fix(frontend): map backend invalid arguments to HTTP 400 (#11453)

Signed-off-by: Ryan McCormick <rmccormick@nvidia.com>
chore: Support XPU in multimodal embedding cache connector (#9938)

Signed-off-by: Yi Yao <yi.a.yao@intel.com>
feat: add CODEOWNERS generated as Infrastructure-as-Code (#10715)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Signed-off-by: Daniel Gil <dagil@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
perf(llm): reduce ITL metrics overhead (#11569)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
fix(router): make rejection thresholds independently opt-in (#11276)

Signed-off-by: Jie Hao <jihao@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
feat(multimodal): pluggable vision encoder interface for custom VLMs (#10832)

Signed-off-by: Qi Wang <qiwa@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
refactor(selection): use `selection_id` as the single reservation id (#11561)

Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
feat(sglang): add native gRPC sidecar (#11408)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
Co-authored-by: ishandhanani <82981111+ishandhanani@users.noreply.github.com>
test(sglang): add diffusion_llada scenario on a new nightly H100 lane (#11441)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(vllm): support unified KV block clearing (#11451)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix: XPU marker composition for post-merge and nightly (#11519)

Signed-off-by: wenxin.zhang <wenxin.zhang@intel.com>
Co-authored-by: Rini Gupta <rinig@nvidia.com>
perf(kv-router): remove prompt membership hash lookup (#11515)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
perf(runtime): avoid copying MessagePack event payloads (#11539)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
ci(checkpoint): add TRTLLM DynamoCheckpoint coverage (#10918)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
Signed-off-by: Hannah Zhang <hannahz@nvidia.com>
Co-authored-by: Hannah Zhang <hannahz@nvidia.com>
feat(llm): route requests through encode workers (#11460)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
perf(kv-router): use arena block ownership counts (#11508)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
ci: restore PR reminder write permission (#11538)

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
fix(ci): reserve VRAM for CUDA-stream logits adapter test (#11209)

Signed-off-by: zhongdaor <zhongdaor@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
chore(deps): bump golang.org/x/crypto from 0.50.0 to 0.52.0 in /deploy/operator (#11413)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
chore(frontend): update parser and renderer crates (#11535)

Signed-off-by: Ryan McCormick <rmccormick@nvidia.com>
feat(request-trace): sink-agnostic HTTP request-header capture via allowlist (#11386)

Signed-off-by: Yuting Wu (DLAlgo) <yutwu@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
refactor(operator): stop emitting legacy DGDR conversion annotations (#11531)
fix(deps): cap mpmath<1.4 in trtllm extra (DYN-3348) (#11402)

Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
fix(planner): read worker runtime namespace from DGD status (#11352)

Signed-off-by: Thomas Montfort <tjmontfort12@gmail.com>
docs: require KV events for cache-aware routing (#11505)
feat(frontend): enable tokenizer cache for tiktoken (#11499)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
fix(vllm): reject over-budget max tokens (#11384)

Signed-off-by: Tianhe Zhang <tianhez@nvidia.com>
fix(runtime): resync etcd watchers after reconnect (#11146)

Signed-off-by: Michael Feil <63565275+michaelfeil@users.noreply.github.com>
feat: enable XPU 2-card serve tests with dedicated runner and device assignment (#10917)

Signed-off-by: Wenxin Zhang <wenxinz@nvidia.com>
Signed-off-by: VincyZhang <wenxin.zhang@intel.com>
Signed-off-by: Zhang, Wenxin <wenxin.zhang@intel.com>
Signed-off-by: wenxin.zhang <wenxin.zhang@intel.com>
fix(llm): parse config.json with JSON5 when deriving max context length (#11445)

Signed-off-by: ssojrani@nvidia.com <ssojrani@nvidia.com>
docs(kubernetes): align installation examples with v1.2.1 (#11486)

Signed-off-by: 구명수 <audtn256699@gmail.com>
perf(kv-router): preserve native KV event batches (#11466)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
perf(frontend): reduce generate request copies (#11483)

Signed-off-by: jthomson04 <64760228+jthomson04@users.noreply.github.com>
Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
fix: refresh vllm xpu baseline sbom and drop stale entry (#11488)

Signed-off-by: Anant Sharma <anants@nvidia.com>
feat(kv-router): add relay-shaped transposed CKF indexer (#11435)

Co-authored-by: Nikita Sukharev <kaonael@gmail.com>
docs(dgdr): document versioned DGD override semantics (#11487)
fix(mocker): fall back when AIC memory estimator is unavailable (#11490)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(trtllm): complete unified guided decoding parity (#11423)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
perf(router): avoid rebuilding blocked lane index (#11484)

Signed-off-by: jthomson04 <64760228+jthomson04@users.noreply.github.com>
Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
feat(kv-router): rename worker tenancy to routing groups (#11471)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
feat(snapshot): add CRIU imageIoMode (O_DIRECT) knob (#11476)

Signed-off-by: Dan Feigin <dfeigin@nvidia.com>
feat(kv-router): inline sparse CRTC children (#11459)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
ci: enforce .agents/skills SKILL.md frontmatter conventions in pre-commit (#11230)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
docs(trtllm): clarify NVENC requirement for MP4 video output (#11457)

Signed-off-by: Zhuangcheng(Jesse) Gu <zcgu@connect.hku.hk>
refactor(validation): make DCD validation structural (#11479)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
fix(operator): generate Helm RBAC from controller markers (#11322)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
fix(operator): emit Grove alpha.11 topology constraints (#11405)
feat(trace): convert request traces to SATF (#11375)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
test(validation): unify DCD admission coverage (#11234)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
feat(frontend): dispatch forward-compatible /inference/v1/generate requests (#11167)

Signed-off-by: Qi Wang <qiwa@nvidia.com>
fix(tests): close gRPC streaming clients (#11446)

Signed-off-by: Jie Hao <jihao@nvidia.com>
ci: grant actions: read to notify-slack caller jobs (fix reusable-workflow permission error) (#11456)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
feat(planner): Add kv reads dimension to self-benchmarking grid (#11150)

Signed-off-by: Sachal Malick <s@chal.ai>
test(vllm): cover unified guided decoding (#11424)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix(kv-router): scope KvRouter cancellation to a child token (#11390)

Signed-off-by: davilu-nvidia <134493379+davilu-nvidia@users.noreply.github.com>
Signed-off-by: PeaBrane <yanrpei@gmail.com>
Co-authored-by: PeaBrane <yanrpei@gmail.com>
ci: extract shared Slack notifier into a reusable workflow (#11365)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
fix: fix the needs_nixl flag to true when multimodal disagg is enabled (#11373)
fix(sglang): complete unified guided decoding parity (#11422)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
docs: point DEP references to issue-based workflow on ai-dynamo/dynamo (#11232)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
fix(ci): redirect CARGO_HOME to writable path in rust-gpu job (#11433)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
docs: add DynoSim Apple Silicon and trace-format notes (#11430)

Signed-off-by: Yongming Ding <yongmingd@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
fix(benchmarks): run the in-cluster benchmark Job on the frontend image (DYN-3395) (#11368)

Signed-off-by: Daniel Gil <dagil@nvidia.com>
feat(release): stage nightly kubernetes-operator and dynamo-planner containers to NGC

Signed-off-by: pvijayakrish <pvijayakrish@nvidia.com>

perf: Optimize request path on TCP request plane (#10519)

Signed-off-by: Jacky <18255193+kthui@users.noreply.github.com>
perf(kv-router): strengthen trace replay benchmarks (#11415)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix:  Fix guided decoding for force-reasoning parsers (#11205)

Signed-off-by: Indrajit Bhosale <iamindrajitb@gmail.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
feat(frontend): make overload rejection status code configurable (#11249)

Signed-off-by: nnshah1 <neelays@nvidia.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(router): add exact-worker policy queue lanes (#11363)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
feat(power-agent): add DCGM dual actuator (opt-in; NVML remains default) (#9790)

Adds an opt-in DCGM dual actuator to the Power Agent (NVML remains the default), with fail-closed GPU identity verification, durable orphan recovery, and a bounded pod-listing path during SIGTERM shutdown.

Signed-off-by: Kai Ma <kaim@nvidia.com>
chore: update vllm-omni version to 0.24 to match with vllm version (#11248)

Signed-off-by: Thanaji Rao Thakkalapelli <thanaji.rao.thakkalapelli@intel.com>
test(lora): add allocation simulation harness (#8192)

Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
feat(profiler): apply DGD overrides with the shared Go engine (#11187)

Signed-off-by: Julien Mancuso <jmancuso@nvidia.com>
fix(gms): defer vLLM publication until after memory profiling (#11302)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
fix(planner): gate predicted-load & engine-capacity gauges on throughput ticks (#10804)

Signed-off-by: jooe0824 <jooe0824@sk.com>
Co-authored-by: jooe0824 <jooe0824@sk.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
test(trtllm): fix multimodal encoder test stub (#11383)

Signed-off-by: Kavita Narang <knarang@nvidia.com>
chore: bump trtllm to v1.3.0rc20 (#11086)

Signed-off-by: dynamo-ops <170655669+dynamo-ops@users.noreply.github.com>
Signed-off-by: Anant Sharma <anants@nvidia.com>
Co-authored-by: Anant Sharma <anants@nvidia.com>
feat(omni): Enable NIXL connector for vllm OMNI AR/DIT (#10071)

Signed-off-by: Thanaji Rao Thakkalapelli <thanaji.rao.thakkalapelli@intel.com>
Signed-off-by: Daniel Socek <daniel.socek@intel.com>
Co-authored-by: Daniel Socek <daniel.socek@intel.com>
fix(global-planner): reject scaling when dgd is not ready (#10526)

Signed-off-by: Yu Huang <yuhuang@nvidia.com>
feat: integrate cache_salt with KV routing for multi-tenant isolation [DYN-3178] (#8197)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
docs(observability): update OTLP export docs for endpoint fallback and HTTP protocol (#11337)

Signed-off-by: Jie Hao <jihao@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
feat(vllm): support unified multimodal prefill decode (#11270)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
test: add TRT-LLM Qwen3-VL dtype regression coverage (#11292)

Signed-off-by: Kavita Narang <knarang@nvidia.com>
fix(container): install zstandard in sglang runtime image (DYN-3398) (#11362)

Signed-off-by: Daniel Gil <dagil@nvidia.com>
feat(vllm): support unified frontend multimodal processing (#11269)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix(test): use matching 2B model for trtllm disagg multimodal test (#10891)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chore(ci): ignore intermittent Bitnami Helm repository 503s (#11370)
feat(frontend): expose tokenizer cache token metrics (#11353)

Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
feat(vllm): enable unified multimodal embedding cache (#11268)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix(snapshot): preserve CUDA ordinal mapping for DRA GPUs (#11325)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
ci: skip sequential GPU tests cleanly when checkout/container init fails (#11346)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
ci: harden Slack notifier against null jobs payload (#11335)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
fix(profiler): remove deprecated AIC WebApp integration (#11342)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(operator): preserve Grove component kinds before creation (#11314)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
feat(frontend): add per-request image/video/audio count metrics (#11166)
perf: small improvement to local monitor performance and hidden-tab traffic (#11336)

Signed-off-by: Keiven Chang <keivenchang@users.noreply.github.com>
fix(operator): fix linter (#11354)
fix(multimodal): thread trust_remote_code from engine config instead of hardcoding True (#10738)

Signed-off-by: nnshah1 <neelays@nvidia.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
feat(router): expose native offloading capacity (#11321)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
fix(profiler): warn when fallback cannot verify SLA (#11338)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
perf(gms): share CUDA initialization across tags (#11285)

Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
fix(multimodal): return 4xx for SSRF-blocked media URLs instead of 500 (#11312)

Signed-off-by: Krishnan Prashanth <kprashanth@nvidia.com>
fix(vllm): propagate embedding prompt truncation (#11099)

Signed-off-by: Praateek <praateekm@gmail.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
feat(request-trace): unify payload logging (#11180)

Signed-off-by: Thomas Montfort <tjmontfort12@gmail.com>
Signed-off-by: Thomas Montfort <61255722+tmonty12@users.noreply.github.com>
Co-authored-by: Neelay Shah <neelays@nvidia.com>
feat(vllm): support unified aggregated multimodal (#11267)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
feat(operator): add volcano scheduler support for grove (#8225)

Signed-off-by: xianlubird <xianlubird@gmail.com>
Co-authored-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
perf(python): intern request-plane envelope keys (#11331)

Signed-off-by: Codex Performance Agent <codex@openai.com>
Co-authored-by: Codex Performance Agent <codex@openai.com>
fix(operator): preserve service volume mounts during conversion (#11263)
docs: fix GitHub stars links that 404 for anonymous readers (#11334)

Signed-off-by: Dan Gil <dagil@nvidia.com>
fix(operator): avoid duplicate compilation cache mounts (#11264)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
Co-authored-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
fix(operator): prevent DGDR stalls after profiling (#11250)

Signed-off-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
Co-authored-by: Dr. Stefan Schimanski <sschimanski@nvidia.com>
fix: kvbm ci test failure (#11307)

Signed-off-by: Lavanya <lvijayakrish@nvidia.com>
refactor(vllm): extract multimodal request processor (#11266)

Signed-off-by: Connor Carpenter <connorc@nvidia.com>
fix(event-plane): share one ZMQ context across all sockets (#11246)

Signed-off-by: joeltg <joel@reflection.ai>
chore: rewrite AGENTS.md, fix skill frontmatter, drop gh-issue-bug (#11231)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
fix(recipes): add build tools for ARM recipes on aiperf>=0.8.0 (#11278)

Signed-off-by: Karen Chung <karenc@nvidia.com>
ci: trust maintainer updates to fork PRs (#11122)
feat(operator): support Grove OnDelete update strategy (#11085)

Signed-off-by: xianlubird <xianlubird@gmail.com>
fix(router): disclose selected worker in non-KV modes (#11245)

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
refactor(router): unify selection service lifecycle (#11298)

Signed-off-by: PeaBrane <yanrpei@gmail.com>
fix(planner): handle zero-traffic metrics (#11294)

Signed-off-by: hongkuanz <hongkuanz@nvidia.com>
fix(sglang): support tensor image sizes for multimodal P/D (#11255)

Signed-off-by: Zhuangcheng(Jesse…
dagil-nvidia added a commit that referenced this pull request Aug 7, 2026
areas.yaml auto-merged; only the generated CODEOWNERS conflicted. Resolved
by regenerating from the merged areas.yaml rather than hand-merging, so the
committed artifact is reproducible and the workflow's regenerate-and-diff
step passes.

Main gained ownership entries from #12488, #12012, #11874 and #11923 while
this branch was in review, plus #12361, which co-owns the docs publish
workflow and the link-checker config with docs. All survive: fern-docs.yml
and .lycheeignore still resolve to ops and docs.

This branch's own additions survive too: CODEOWNERS carries all 23 areas and
areas.yaml carries ops and process.

Validation: strict full-tree gate exits 0 at 5200/5200 owned with no stale
globs; 150 tests pass.

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

Labels

actions container deployment::k8s Relates to dynamo deployment in kubernetes documentation Improvements or additions to documentation feat planner size/XXL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants