Skip to content

fix(inference): serve Spark Qwen3.6 with qwen3_coder tool parser (#6457) - #6551

Merged
apurvvkumaria merged 4 commits into
mainfrom
fix/6457-spark-qwen-tool-calls
Jul 9, 2026
Merged

fix(inference): serve Spark Qwen3.6 with qwen3_coder tool parser (#6457)#6551
apurvvkumaria merged 4 commits into
mainfrom
fix/6457-spark-qwen-tool-calls

Conversation

@yimoj

@yimoj yimoj commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

On DGX Spark, the managed local-vLLM default model nvidia/Qwen3.6-35B-A3B-NVFP4 was served with --tool-call-parser qwen3_xml, which mis-parses this checkpoint's tool-call frames and makes LangChain Deep Agents Code (dcode -n) fail with HTTP 400 during tool calls. This switches the Spark recipe to --tool-call-parser qwen3_coder — the parser the other Qwen3.6-family recipes in this registry already use — validated end-to-end on real DGX Spark (GB10) hardware.

Related Issue

Fixes #6457

Changes

  • src/lib/inference/vllm-models.ts: change the DGX Spark nvidia/Qwen3.6-35B-A3B-NVFP4 serve recipe from --tool-call-parser qwen3_xml to --tool-call-parser qwen3_coder, with a comment documenting the failure mode and the on-hardware validation.
  • src/lib/inference/vllm-models.test.ts: update the Spark serve-command contract to pin qwen3_coder and assert qwen3_xml is absent.

Root cause

vLLM's qwen3_xml tool-call parser does not round-trip this checkpoint's tool-call output. The server logs WARNING [qwen3xml_tool_parser.py:303] Error when parsing XML elements: not well-formed (invalid token) and produces truncated / extra-} tool arguments, so Deep Agents Code tool calls intermittently return POST /v1/chat/completions 400 Bad Request (json.decoder.JSONDecodeError: Extra data), the agent reports tool.result ... has no correlated tool.use args; sending empty tool_args, and dcode exits 1. qwen3_coder matches this Qwen3.6-family checkpoint's emitted tool-call format (already used by the Qwen3.6-27B-FP8 and Nemotron-3-Nano-4B recipes here).

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: internal serve-flag correction; no user-facing doc/config surface changes (managed model/profile is auto-selected on Spark).
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: codex review --uncommitted — no discrete correctness issues; single serve-flag value change in the inference model registry, validated end-to-end on DGX Spark (see Verification).

Verification

E2E run on real DGX Spark (GB10, aarch64, Ubuntu; NVIDIA GB10 / compute cap 12.1) using the current worktree CLI (node ./bin/nemoclaw.js) and the reporter workflow. The managed vLLM container is launched by the fixed CLI code; post-fix the running container shows --tool-call-parser qwen3_coder.

Onboard (fixed worktree CLI), then the reporter command — both run via the worktree binary:

node ./bin/nemoclaw.js onboard --non-interactive --agent langchain-deepagents-code \
  --name dcode6457 --gpu --yes --yes-i-accept-third-party-software --fresh --recreate-sandbox
# (NEMOCLAW_PROVIDER=install-vllm → DGX Spark default nvidia/Qwen3.6-35B-A3B-NVFP4)

node ./bin/nemoclaw.js dcode6457 exec -- dcode -n "Work in /sandbox/work/deepagent-journey. Read task.md and complete it exactly. Run the requested tests before finishing."

Pre-fix (qwen3_xml, current main): 3 of 4 runs exit 1 with the reporter's exact failure:

🔧 Calling tool: read_file / ls
tool.result for chatcmpl-tool-... has no correlated tool.use args; sending empty tool_args
langgraph.pregel.remote.RemoteException: {'error': 'BadRequestError', 'message': 'An internal error occurred'}
# vLLM log:
WARNING [qwen3xml_tool_parser.py:303] Error when parsing XML elements: not well-formed (invalid token): line 6, column 1
json.decoder.JSONDecodeError: Extra data: line 1 column 44 (char 43)
POST /v1/chat/completions HTTP/1.1 400 Bad Request
DCODE_EXIT=1

Post-fix (qwen3_coder, this PR) — clean onboard via the fixed CLI, then reporter command 5×:

🔧 read_file → ls → edit_file → shell → execute → read_file
"The bug has been fixed ... changed return a - b to return a + b"
✓ Task completed   POSTFIX_DCODE_EXIT=0
RUN 1..4: exit=0 parse_or_400_delta=0 empty_tool_args=0 remote_exc=0 task_completed=1

5/5 post-fix runs completed with exit 0 and zero parser errors or HTTP 400s.

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result: npx vitest run src/lib/inference/vllm-models.test.ts src/lib/inference/vllm.test.ts → 56 passed; full --project cli lane green.
  • Applicable broad gate passed — command/result: npx vitest run --project cli passed (all files ✓); change is confined to the inference model registry.
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: Yimo Jiang yimoj@nvidia.com

Summary by CodeRabbit

  • Bug Fixes

    • Improved tool-call handling for the nvidia/Qwen3.6-35B-A3B-NVFP4 model by switching to the correct vLLM tool-call parser, preventing malformed/truncated tool-call arguments and reducing intermittent HTTP 400 failures.
  • Tests

    • Updated the DGX Spark serve-command regression coverage to confirm qwen3_xml is not used and that --tool-call-parser is present exactly once with the expected qwen3_coder setting.

The DGX Spark managed-vLLM default checkpoint nvidia/Qwen3.6-35B-A3B-NVFP4
was served with --tool-call-parser qwen3_xml. That parser mis-parses this
checkpoint's tool-call frames: vLLM logs "qwen3xml_tool_parser.py:303 Error
when parsing XML elements: not well-formed" and emits truncated/extra-} tool
arguments, so LangChain Deep Agents Code headless runs (dcode -n) fail
intermittently with POST /v1/chat/completions 400 Bad Request
(json.decoder.JSONDecodeError: Extra data) and dcode exits 1.

Switch the Spark recipe to --tool-call-parser qwen3_coder, matching this
Qwen3.6-family checkpoint's emitted tool-call format and the parser the other
Qwen3.6 recipes in this registry already use (Qwen3.6-27B-FP8,
Nemotron-3-Nano-4B). Validated end-to-end on real DGX Spark (GB10) hardware
via the reporter workflow (nemoclaw <name> exec -- dcode -n ...): pre-fix
3/4 runs exited 1 with HTTP 400; post-fix 5/5 runs completed with exit 0 and
zero parser errors or 400s.

Signed-off-by: Yimo Jiang <yimoj@nvidia.com>

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: aaa1ec79-6f8c-4cff-a5ba-f1bdee3de42d

📥 Commits

Reviewing files that changed from the base of the PR and between ae61e89 and 7e1c439.

📒 Files selected for processing (2)
  • src/lib/inference/vllm-models.test.ts
  • src/lib/inference/vllm-models.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/lib/inference/vllm-models.test.ts
  • src/lib/inference/vllm-models.ts

📝 Walkthrough

Walkthrough

The NVFP4 vllm serve configuration now uses --tool-call-parser qwen3_coder instead of qwen3_xml, and the related test now checks that qwen3_xml is absent while qwen3_coder appears once.

Changes

NVFP4 Tool-Call Parser Fix

Layer / File(s) Summary
Update NVFP4 modelArgs and regression test
src/lib/inference/vllm-models.ts, src/lib/inference/vllm-models.test.ts
Model args for nvidia/Qwen3.6-35B-A3B-NVFP4 now use qwen3_coder with inline context about the XML parsing failure mode; the test updates the expected parser, excludes qwen3_xml, and verifies the parser flag is emitted once, with #6457 referenced in the test description.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Suggested labels: provider: vllm

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly reflects the main change: switching the Spark Qwen3.6 serve recipe to qwen3_coder.
Linked Issues check ✅ Passed The PR updates the Spark default Qwen model parser and test coverage to address the reported HTTP 400 tool-call failure in #6457.
Out of Scope Changes check ✅ Passed The changes stay focused on the reported vLLM parser fix and its regression test, with no unrelated scope detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/6457-spark-qwen-tool-calls

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

@github-code-quality

github-code-quality Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage remains at 96%, unchanged from the main branch.

TypeScript / code-coverage/cli

The overall coverage in the fix/6457-spark-qwen-... branch is 77%. The coverage in the main branch is 76%.

Show a code coverage summary of the most impacted files.
File main b1e35df fix/6457-spark-qwen-... 7e1c439 +/-
src/lib/inferen.../vllm-models.ts 81% 66% -15%
src/lib/actions...-add-restart.ts 19% 14% -5%
src/lib/inference/config.ts 99% 94% -5%
src/lib/actions...estore-phase.ts 87% 93% +6%
src/lib/actions...lution-probe.ts 88% 94% +6%
src/lib/actions...de-preflight.ts 51% 60% +9%
src/lib/actions...e-validation.ts 81% 90% +9%
src/lib/actions...x/mcp-bridge.ts 35% 44% +9%
src/lib/actions...confirmation.ts 69% 81% +12%
src/lib/actions...light-guards.ts 71% 88% +17%

Updated July 09, 2026 09:06 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

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

🧹 Nitpick comments (1)
src/lib/inference/vllm-models.test.ts (1)

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

Add (#6457) issue-reference suffix to the test title.

This test now encodes a regression check for issue #6457 (added at Lines 230-235), but its title doesn't carry the issue suffix, unlike the analogous fix-regression test at Line 182 (...with auto tool-choice enabled (#6314)). As per coding guidelines, **/*.test.ts files should "Write behavior-oriented test titles, and put local issue references in a final (#1234) suffix."

✏️ Proposed fix
-  it("builds the NVFP4 serve command from the DGX Spark model-card recipe", () => {
+  it("builds the NVFP4 serve command from the DGX Spark model-card recipe (`#6457`)", () => {
🤖 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 `@src/lib/inference/vllm-models.test.ts` at line 212, Add the local issue
reference suffix to the behavior-oriented test title in the `it(...)` block for
the DGX Spark model-card recipe so it matches the test naming convention used
elsewhere in `vllm-models.test.ts`. Update the title string in that `it("builds
the NVFP4 serve command from the DGX Spark model-card recipe", ...)` test to end
with `(`#6457`)` and keep the rest of the test body unchanged.

Source: Coding guidelines

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

Nitpick comments:
In `@src/lib/inference/vllm-models.test.ts`:
- Line 212: Add the local issue reference suffix to the behavior-oriented test
title in the `it(...)` block for the DGX Spark model-card recipe so it matches
the test naming convention used elsewhere in `vllm-models.test.ts`. Update the
title string in that `it("builds the NVFP4 serve command from the DGX Spark
model-card recipe", ...)` test to end with `(`#6457`)` and keep the rest of the
test body unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: be3d4e67-403a-4dcf-9845-0aee5ff03033

📥 Commits

Reviewing files that changed from the base of the PR and between 815a587 and 28addf5.

📒 Files selected for processing (2)
  • src/lib/inference/vllm-models.test.ts
  • src/lib/inference/vllm-models.ts

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor (Nemotron Ultra) — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: Add or justify PRA-T1 and any related test follow-ups.
Open items: 0 required · 0 warnings · 0 suggestions · 4 test follow-ups
Since last review: 0 prior items resolved · 0 still apply · 0 new items found

Action checklist

  • PRA-T1 Add or justify test follow-up: Runtime validation
  • PRA-T2 Add or justify test follow-up: Runtime validation
  • PRA-T3 Add or justify test follow-up: Runtime validation
  • PRA-T4 Add or justify test follow-up: Runtime validation
Test follow-ups to resolve or justify

If these cover changed behavior, prefer adding them in this PR; otherwise state why existing coverage is enough or link the follow-up.

  • PRA-T1 Runtime validation — Run the `inference-routing` E2E job for Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary. Matched files: `src/lib/inference/vllm-models.ts`.. Deterministic regression risks require live validation: inference-policy. Unit regression coverage strong for the specific parser bug (three assertions at buildVllmServeCommand level). Risk plan inference-policy invariants require live validation of provider reachability, real health probes, and network policy agreement — covered by automatic CI jobs (inference-routing, network-policy), not unit tests.
  • PRA-T2 Runtime validation — Run the inference-routing E2E job for Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary. Matched files: src/lib/inference/vllm-models.ts.. Deterministic regression risks require live validation: inference-policy. Unit regression coverage strong for the specific parser bug (three assertions at buildVllmServeCommand level). Risk plan inference-policy invariants require live validation of provider reachability, real health probes, and network policy agreement — covered by automatic CI jobs (inference-routing, network-policy), not unit tests.
  • PRA-T3 Runtime validation — Run the `network-policy` E2E job for Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary. Matched files: `src/lib/inference/vllm-models.ts`.. Deterministic regression risks require live validation: inference-policy. Unit regression coverage strong for the specific parser bug (three assertions at buildVllmServeCommand level). Risk plan inference-policy invariants require live validation of provider reachability, real health probes, and network policy agreement — covered by automatic CI jobs (inference-routing, network-policy), not unit tests.
  • PRA-T4 Runtime validation — Run the network-policy E2E job for Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary. Matched files: src/lib/inference/vllm-models.ts.. Deterministic regression risks require live validation: inference-policy. Unit regression coverage strong for the specific parser bug (three assertions at buildVllmServeCommand level). Risk plan inference-policy invariants require live validation of provider reachability, real health probes, and network policy agreement — covered by automatic CI jobs (inference-routing, network-policy), not unit tests.

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: inference-routing, network-policy
Optional E2E: None

Dispatch hint: inference-routing,network-policy

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • inference-routing (timeout-minutes: 45): Required by the deterministic risk plan for inference registry changes. The changed vLLM serve flags can affect whether the selected provider accepts real assistant chat/tool-call requests through the expected inference route.
  • network-policy (timeout-minutes: 90): Required by the deterministic risk plan for inference-policy changes. Inference provider selection and reachability must remain aligned with live network allow/deny behavior at the sandbox boundary.

Optional E2E

  • None.

New E2E recommendations

  • managed-vllm-spark-tool-calls (high): This PR fixes a DGX Spark-specific qwen3.6-35B NVFP4 tool-call parser regression. Existing required jobs validate general inference routing and network policy, but may not exercise the real Spark managed-vLLM model-card recipe with a headless assistant tool-call turn against this checkpoint.
    • Suggested test: Add a live DGX Spark managed-vLLM E2E that launches the qwen3.6-35b-a3b-nvfp4 recipe and verifies a Deep Agents Code/headless assistant tool-call round trip succeeds without HTTP 400 parser failures.

Dispatch hint

  • Workflow: .github/workflows/e2e.yaml
  • jobs input: inference-routing,network-policy

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Recommendation

Required E2E targets: inference-routing, network-policy
Optional E2E targets: None

Dispatch required E2E targets:

  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=inference-routing
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=network-policy

Workflow run

Full E2E target advisor summary

E2E Target Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E targets

  • inference-routing: Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=inference-routing
  • network-policy: Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=network-policy

Optional E2E targets

  • None.

Relevant changed files

  • src/lib/inference/vllm-models.ts

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: Add or justify PRA-T1 and any related test follow-ups.
Open items: 0 required · 0 warnings · 0 suggestions · 8 test follow-ups

Action checklist

  • PRA-T1 Add or justify test follow-up: Runtime validation
  • PRA-T2 Add or justify test follow-up: Runtime validation
  • PRA-T3 Add or justify test follow-up: Runtime validation
  • PRA-T4 Add or justify test follow-up: Runtime validation
  • PRA-T5 Add or justify test follow-up: Acceptance clause
  • PRA-T6 Add or justify test follow-up: Acceptance clause
  • PRA-T7 Add or justify test follow-up: Acceptance clause
  • PRA-T8 Add or justify test follow-up: Acceptance clause
Test follow-ups to resolve or justify

If these cover changed behavior, prefer adding them in this PR; otherwise state why existing coverage is enough or link the follow-up.

  • PRA-T1 Runtime validation — Run the `inference-routing` E2E job for Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary. Matched files: `src/lib/inference/vllm-models.ts`.. Deterministic regression risks require live validation: inference-policy. Static/unit coverage is sufficient for the changed command-construction path: the affected Spark checkpoint command is tested for the new parser, absence of the old parser, and a single parser flag, while existing tests cover Spark default selection. The deterministic risk plan still marks inference-policy as requiring runtime validation at the real host-to-sandbox boundary.
  • PRA-T2 Runtime validation — Run or inspect the required `inference-routing` validation for the DGX Spark managed vLLM default issuing a tool-call request through the advertised agent route, verifying the request reaches the local vLLM service and no parser-related HTTP 400 occurs.. Deterministic regression risks require live validation: inference-policy. Static/unit coverage is sufficient for the changed command-construction path: the affected Spark checkpoint command is tested for the new parser, absence of the old parser, and a single parser flag, while existing tests cover Spark default selection. The deterministic risk plan still marks inference-policy as requiring runtime validation at the real host-to-sandbox boundary.
  • PRA-T3 Runtime validation — Run the `network-policy` E2E job for Inference selection, reachability, and network policy must agree at the real host-to-sandbox boundary. Matched files: `src/lib/inference/vllm-models.ts`.. Deterministic regression risks require live validation: inference-policy. Static/unit coverage is sufficient for the changed command-construction path: the affected Spark checkpoint command is tested for the new parser, absence of the old parser, and a single parser flag, while existing tests cover Spark default selection. The deterministic risk plan still marks inference-policy as requiring runtime validation at the real host-to-sandbox boundary.
  • PRA-T4 Runtime validation — Run or inspect the required `network-policy` validation for the same Spark managed vLLM route, verifying the intended inference route is allowed while unrelated egress remains denied.. Deterministic regression risks require live validation: inference-policy. Static/unit coverage is sufficient for the changed command-construction path: the affected Spark checkpoint command is tested for the new parser, absence of the old parser, and a single parser flag, while existing tests cover Spark default selection. The deterministic risk plan still marks inference-policy as requiring runtime validation at the real host-to-sandbox boundary.
  • PRA-T5 Acceptance clause — 2. In the sandbox, create a small controlled Python repository with a reproducible validation defect, visible unit tests, and a task file asking the agent to repair the defect and run the tests. — add test evidence or identify existing coverage. This is a runtime reproduction setup outside the static diff. The PR includes command-construction regression coverage but the review did not execute sandbox/E2E reproduction steps.
  • PRA-T6 Acceptance clause — 3. Run: ```bash nemoclaw [sandbox-name] exec -- dcode -n "Work in /sandbox/work/deepagent-journey. Read task.md and complete it exactly. Run the requested tests before finishing." ``` — add test evidence or identify existing coverage. The review did not execute commands. The static diff changes the parser flag that the managed vLLM command will use for the affected Spark default.
  • PRA-T7 Acceptance clause — 4. Observe the tool events, vLLM server log, and dcode process exit code. — add test evidence or identify existing coverage. Live tool events, vLLM logs, and process exit code require runtime validation; this read-only review did not inspect external E2E outcomes.
  • PRA-T8 Acceptance clause — 5. Repeat with a fresh task workspace. — add test evidence or identify existing coverage. Repeat runtime validation is outside the static diff review. The PR-provided E2E transcript was treated as untrusted supporting evidence only.

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

Address PR #6551 review: add a dedicated negative regression test asserting
the DGX Spark serve command uses --tool-call-parser qwen3_coder (not qwen3_xml)
with exactly one parser configured, and add the (#6457) issue-reference suffix
to the NVFP4 serve-command test title per the repo test-title convention.

Signed-off-by: Yimo Jiang <yimoj@nvidia.com>

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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

🧹 Nitpick comments (1)
src/lib/inference/vllm-models.test.ts (1)

247-262: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Overlapping assertions with the adjacent test.

This new regression test re-asserts qwen3_coder present / qwen3_xml absent, which is already covered by the test at Line 230-234. The only new assertion is the "exactly once" occurrence check at Line 261. Consider folding the occurrence check into the existing test (as was done for nemotron-3-nano-4b at Line 201-202) instead of duplicating the parser assertions in a second test block.

♻️ Proposed consolidation
     expect(cmd).toContain("--tool-call-parser qwen3_coder");
     expect(cmd).not.toContain("qwen3_xml");
+    expect(cmd.match(/--tool-call-parser/g)).toHaveLength(1);
     expect(cmd).toContain("--reasoning-parser qwen3");
     expect(cmd).toContain("--max-model-len 262144");
     ...
   });
-
-  it("does not regress the Spark tool-call parser to qwen3_xml (`#6457`)", () => {
-    ...
-  });
🤖 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 `@src/lib/inference/vllm-models.test.ts` around lines 247 - 262, The new Spark
regression test in vllm-models.test.ts duplicates the existing parser assertions
already covered by the adjacent qwen3_coder test. Move the unique "exactly one
--tool-call-parser" check into the existing test that builds the Spark vLLM
command, and keep this new test focused on the regression-specific behavior so
the parser presence/absence assertions are not repeated across both blocks.
🤖 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.

Nitpick comments:
In `@src/lib/inference/vllm-models.test.ts`:
- Around line 247-262: The new Spark regression test in vllm-models.test.ts
duplicates the existing parser assertions already covered by the adjacent
qwen3_coder test. Move the unique "exactly one --tool-call-parser" check into
the existing test that builds the Spark vLLM command, and keep this new test
focused on the regression-specific behavior so the parser presence/absence
assertions are not repeated across both blocks.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 88d04306-56fe-4c67-9806-deb367806de3

📥 Commits

Reviewing files that changed from the base of the PR and between 28addf5 and 4ae8911.

📒 Files selected for processing (1)
  • src/lib/inference/vllm-models.test.ts

yimoj and others added 2 commits July 9, 2026 08:25
Fold the single-tool-call-parser occurrence check into the existing (#6457)
NVFP4 serve-command test and drop the duplicate regression block per PR #6551
CodeRabbit review; the negative regression guard (qwen3_coder present, qwen3_xml
absent, exactly one parser) is preserved.

Signed-off-by: Yimo Jiang <yimoj@nvidia.com>

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Address PR #6551 advisor: remove the specific dcode run-count claims (3/4,
5/5) from the qwen3_coder parser comments in vllm-models.ts and its test; keep
the technical rationale and #6457 reference and point to the PR verification
notes for the transcript. Comment-only; no behavior or assertion change.

Signed-off-by: Yimo Jiang <yimoj@nvidia.com>

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@apurvvkumaria apurvvkumaria self-assigned this Jul 9, 2026
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ✅ All requested jobs passed

Run: 29031635887
Workflow ref: fix/6457-spark-qwen-tool-calls
Requested targets: (default — all supported)
Requested jobs: inference-routing
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
inference-routing ✅ success

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some jobs failed

Run: 29031635888
Workflow ref: fix/6457-spark-qwen-tool-calls
Requested targets: (default — all supported)
Requested jobs: network-policy
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
network-policy ❌ failure

Failed jobs: network-policy. Check run artifacts for logs.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some jobs failed

Run: 29032278382
Workflow ref: fix/6457-spark-qwen-tool-calls
Requested targets: (default — all supported)
Requested jobs: network-policy
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
network-policy ❌ failure

Failed jobs: network-policy. Check run artifacts for logs.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some jobs failed

Run: 29031635888
Workflow ref: fix/6457-spark-qwen-tool-calls
Requested targets: (default — all supported)
Requested jobs: network-policy
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
network-policy ❌ failure

Failed jobs: network-policy. Check run artifacts for logs.

@cjagwani cjagwani left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Exact-head maintainer audit on 7e1c439: the parser change, focused tests, DCO, four Verified commits, CodeRabbit, and all 46 standard checks pass. The qwen3_coder registry value is the correct narrow fix, and the advisor suggestion to assert JSON from vLLM /health is inapplicable because that endpoint is an empty liveness response rather than a tool-parser exercise.

Approval is still held on required live evidence. inference-routing run 29031635887 passed only its three negative paths; the four hosted paths were skipped. network-policy failed twice, including controlled retry 29032278382, with the same gateway trust-anchor cleanup error before the deny probe: the test received NemoClaw rejected a conflicting gateway trust anchor, and the ambient gateway token could not be cleared at network-policy.test.ts:575. This is deterministic integration-harness state outside this parser diff, so do not change the parser blindly. Repair or explicitly waive that harness blocker, preserve the PR-body real Spark tool-call evidence, then rerun the exact-head advisor before approval.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some jobs failed

Run: 29031635888
Workflow ref: fix/6457-spark-qwen-tool-calls
Requested targets: (default — all supported)
Requested jobs: network-policy
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
network-policy ❌ failure

Failed jobs: network-policy. Check run artifacts for logs.

1 similar comment
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some jobs failed

Run: 29031635888
Workflow ref: fix/6457-spark-qwen-tool-calls
Requested targets: (default — all supported)
Requested jobs: network-policy
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
network-policy ❌ failure

Failed jobs: network-policy. Check run artifacts for logs.

@apurvvkumaria

Copy link
Copy Markdown
Collaborator

Maintainer resolution for exact head 7e1c439b1557e2b758bc0ee4baa8526d2a8c7434

I accept the remaining Advisor runtime-evidence risk without another source change.

  • The PR changes only the Spark NVFP4 vLLM parser token from qwen3_xml to qwen3_coder; it does not change route selection, health handling, or network policy.
  • The PR description records the behavior-specific DGX Spark acceptance run on the actual nvidia/Qwen3.6-35B-A3B-NVFP4 path: the fixed worktree performed a clean onboard and five consecutive Deep Agents Code tool-use tasks completed with exit 0, structured tool calls, and no parser error, empty tool arguments, HTTP 400, or remote exception. That is stronger evidence for [DGX Spark][Inference] Deep Agents exits with HTTP 400 during tool calls on the default Qwen model #6457 than a generic vLLM health endpoint probe.
  • Exact-head inference-routing run 29031635887 passed.
  • The network-policy job was attempted four times. Attempts 1, 3, and 4 stopped in shared-runner setup on the ambient gateway trust-anchor/token conflict before reaching the policy assertions; attempt 2 stopped downloading OpenShell with HTTP 504. Repeating that unchanged failure cannot validate this parser-only change.
  • The static command contract remains covered: auto tool choice is enabled, qwen3_coder appears exactly once, and qwen3_xml is absent. All normal checks, DCO, signatures, and CodeRabbit are green.

The generic network-policy run is therefore waived for this exact head. The accepted residual risk is limited to the already-existing shared-runner setup failure, not the Spark parser behavior fixed by this PR.

@apurvvkumaria apurvvkumaria left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Exact head 7e1c439 is ready for final human merge. Normal CI, DCO, signatures, CodeRabbit, and inference-routing are green; both refreshed advisors recommend merge_as_is. The four network-policy attempts failed in shared-runner setup before exercising this parser-only change, and the accepted waiver is recorded with the behavior-specific DGX Spark 5/5 validation evidence.

@apurvvkumaria
apurvvkumaria merged commit 39de4bc into main Jul 9, 2026
511 of 516 checks passed
@apurvvkumaria
apurvvkumaria deleted the fix/6457-spark-qwen-tool-calls branch July 9, 2026 17:31
@jyaunches jyaunches mentioned this pull request Jul 9, 2026
21 tasks
cv pushed a commit that referenced this pull request Jul 9, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Adds the pre-tag v0.0.79 release notes entry to
`docs/about/release-notes.mdx` so the release plan can be generated
after docs merge.
The entry summarizes the merged v0.0.79 release train across inference,
diagnostics, runtime hardening, policies, onboarding recovery, and
release validation.

## Changes
- Added the v0.0.79 release notes section with linked follow-up
documentation for OpenRouter onboarding, managed vLLM changes,
completion and logging, Deep Agents runtime limits, policy updates,
onboarding recovery, and release validation.
- Source summary:
- #6461 -> `docs/about/release-notes.mdx`: Documents OpenRouter
onboarding support and links to inference/provider references.
- #6271 and #6272 -> `docs/about/release-notes.mdx`: Documents shell
completion and structured logging highlights.
- #6465, #6539, #6570, and #6528 -> `docs/about/release-notes.mdx`:
Documents status route-drift, orphaned sandbox, gateway cleanup, and DGX
Spark express-install diagnostics.
- #6523, #6551, #6484, #6488, #6324, and #6542 ->
`docs/about/release-notes.mdx`: Documents managed vLLM, Qwen3.6 tool
parser, compaction, and timeout/readiness improvements.
- #6559, #6538, #6560, #6568, #6552, #6567, and #6587 ->
`docs/about/release-notes.mdx`: Documents runtime, credential, proxy,
PID namespace, TOML, and provider-state hardening.
- #6541, #5415, #6246, #6496, and #6573 ->
`docs/about/release-notes.mdx`: Documents GitHub policy, Gmail policy,
MCP allowlist, WhatsApp, and messaging-variant updates.
- #6253, #6572, #6444, #6536, and #5860 ->
`docs/about/release-notes.mdx`: Documents onboarding resume and
create-step recovery improvements.
- #6508, #6527, #5506, #6588, #6446, #6447, #6582, #6296, #6367, #6397,
and #6505 -> `docs/about/release-notes.mdx`: Documents docs,
release-risk, and E2E validation updates.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [x] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Quality Gates
<!-- Check exactly one tests line and one docs line. Check other lines
when applicable. Add every requested justification or approval
reference. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: Release-note prose only.
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Verification
<!-- Check each applicable item only when supported by the requested
evidence. Run targeted tests once per relevant change set and rerun
after later edits or hook autofixes that can affect the tested behavior.
Do not rerun hook-covered checks. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: Tests
not applicable, release-note prose only.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

Docs validation note: `npm run docs:check-agent-variants && npm run
docs:check-routes && git diff --check` passed. Full `npm run docs` is
currently blocked before Fern validation because the pinned
`fern-api@5.65.2` package is unavailable from npm (`ETARGET No matching
version found`).

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Added release notes for v0.0.79 with a new summary of recent
improvements, including onboarding and inference options, operator/CLI
diagnostics, sandbox recovery hardening, runtime limits, network policy
behavior, and release validation updates.
  * Added updated references and links for the latest release.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
…DIA#6457) (NVIDIA#6551)

## Summary

On DGX Spark, the managed local-vLLM default model
`nvidia/Qwen3.6-35B-A3B-NVFP4` was served with `--tool-call-parser
qwen3_xml`, which mis-parses this checkpoint's tool-call frames and
makes LangChain Deep Agents Code (`dcode -n`) fail with HTTP 400 during
tool calls. This switches the Spark recipe to `--tool-call-parser
qwen3_coder` — the parser the other Qwen3.6-family recipes in this
registry already use — validated end-to-end on real DGX Spark (GB10)
hardware.

## Related Issue

Fixes NVIDIA#6457

## Changes

- `src/lib/inference/vllm-models.ts`: change the DGX Spark
`nvidia/Qwen3.6-35B-A3B-NVFP4` serve recipe from `--tool-call-parser
qwen3_xml` to `--tool-call-parser qwen3_coder`, with a comment
documenting the failure mode and the on-hardware validation.
- `src/lib/inference/vllm-models.test.ts`: update the Spark
serve-command contract to pin `qwen3_coder` and assert `qwen3_xml` is
absent.

## Root cause

vLLM's `qwen3_xml` tool-call parser does not round-trip this
checkpoint's tool-call output. The server logs `WARNING
[qwen3xml_tool_parser.py:303] Error when parsing XML elements: not
well-formed (invalid token)` and produces truncated / extra-`}` tool
arguments, so Deep Agents Code tool calls intermittently return `POST
/v1/chat/completions 400 Bad Request` (`json.decoder.JSONDecodeError:
Extra data`), the agent reports `tool.result ... has no correlated
tool.use args; sending empty tool_args`, and `dcode` exits 1.
`qwen3_coder` matches this Qwen3.6-family checkpoint's emitted tool-call
format (already used by the `Qwen3.6-27B-FP8` and `Nemotron-3-Nano-4B`
recipes here).

## Type of Change

- [x] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Quality Gates
- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: internal serve-flag
correction; no user-facing doc/config surface changes (managed
model/profile is auto-selected on Spark).
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: `codex review
--uncommitted` — no discrete correctness issues; single serve-flag value
change in the inference model registry, validated end-to-end on DGX
Spark (see Verification).

## Verification

E2E run on real DGX Spark (GB10, aarch64, Ubuntu; NVIDIA GB10 / compute
cap 12.1) using the current worktree CLI (`node ./bin/nemoclaw.js`) and
the reporter workflow. The managed vLLM container is launched by the
fixed CLI code; post-fix the running container shows `--tool-call-parser
qwen3_coder`.

Onboard (fixed worktree CLI), then the reporter command — both run via
the worktree binary:
```
node ./bin/nemoclaw.js onboard --non-interactive --agent langchain-deepagents-code \
  --name dcode6457 --gpu --yes --yes-i-accept-third-party-software --fresh --recreate-sandbox
# (NEMOCLAW_PROVIDER=install-vllm → DGX Spark default nvidia/Qwen3.6-35B-A3B-NVFP4)

node ./bin/nemoclaw.js dcode6457 exec -- dcode -n "Work in /sandbox/work/deepagent-journey. Read task.md and complete it exactly. Run the requested tests before finishing."
```

**Pre-fix (`qwen3_xml`, current main):** 3 of 4 runs exit 1 with the
reporter's exact failure:
```
🔧 Calling tool: read_file / ls
tool.result for chatcmpl-tool-... has no correlated tool.use args; sending empty tool_args
langgraph.pregel.remote.RemoteException: {'error': 'BadRequestError', 'message': 'An internal error occurred'}
# vLLM log:
WARNING [qwen3xml_tool_parser.py:303] Error when parsing XML elements: not well-formed (invalid token): line 6, column 1
json.decoder.JSONDecodeError: Extra data: line 1 column 44 (char 43)
POST /v1/chat/completions HTTP/1.1 400 Bad Request
DCODE_EXIT=1
```

**Post-fix (`qwen3_coder`, this PR) — clean onboard via the fixed CLI,
then reporter command 5×:**
```
🔧 read_file → ls → edit_file → shell → execute → read_file
"The bug has been fixed ... changed return a - b to return a + b"
✓ Task completed   POSTFIX_DCODE_EXIT=0
RUN 1..4: exit=0 parse_or_400_delta=0 empty_tool_args=0 remote_exc=0 task_completed=1
```
5/5 post-fix runs completed with exit 0 and zero parser errors or HTTP
400s.

- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result: `npx vitest run
src/lib/inference/vllm-models.test.ts src/lib/inference/vllm.test.ts` →
56 passed; full `--project cli` lane green.
- [x] Applicable broad gate passed — command/result: `npx vitest run
--project cli` passed (all files ✓); change is confined to the inference
model registry.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the style guide (doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Yimo Jiang <yimoj@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Improved tool-call handling for the `nvidia/Qwen3.6-35B-A3B-NVFP4`
model by switching to the correct vLLM tool-call parser, preventing
malformed/truncated tool-call arguments and reducing intermittent HTTP
400 failures.

* **Tests**
* Updated the DGX Spark serve-command regression coverage to confirm
`qwen3_xml` is not used and that `--tool-call-parser` is present exactly
once with the expected `qwen3_coder` setting.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Adds the pre-tag v0.0.79 release notes entry to
`docs/about/release-notes.mdx` so the release plan can be generated
after docs merge.
The entry summarizes the merged v0.0.79 release train across inference,
diagnostics, runtime hardening, policies, onboarding recovery, and
release validation.

## Changes
- Added the v0.0.79 release notes section with linked follow-up
documentation for OpenRouter onboarding, managed vLLM changes,
completion and logging, Deep Agents runtime limits, policy updates,
onboarding recovery, and release validation.
- Source summary:
- NVIDIA#6461 -> `docs/about/release-notes.mdx`: Documents OpenRouter
onboarding support and links to inference/provider references.
- NVIDIA#6271 and NVIDIA#6272 -> `docs/about/release-notes.mdx`: Documents shell
completion and structured logging highlights.
- NVIDIA#6465, NVIDIA#6539, NVIDIA#6570, and NVIDIA#6528 -> `docs/about/release-notes.mdx`:
Documents status route-drift, orphaned sandbox, gateway cleanup, and DGX
Spark express-install diagnostics.
- NVIDIA#6523, NVIDIA#6551, NVIDIA#6484, NVIDIA#6488, NVIDIA#6324, and NVIDIA#6542 ->
`docs/about/release-notes.mdx`: Documents managed vLLM, Qwen3.6 tool
parser, compaction, and timeout/readiness improvements.
- NVIDIA#6559, NVIDIA#6538, NVIDIA#6560, NVIDIA#6568, NVIDIA#6552, NVIDIA#6567, and NVIDIA#6587 ->
`docs/about/release-notes.mdx`: Documents runtime, credential, proxy,
PID namespace, TOML, and provider-state hardening.
- NVIDIA#6541, NVIDIA#5415, NVIDIA#6246, NVIDIA#6496, and NVIDIA#6573 ->
`docs/about/release-notes.mdx`: Documents GitHub policy, Gmail policy,
MCP allowlist, WhatsApp, and messaging-variant updates.
- NVIDIA#6253, NVIDIA#6572, NVIDIA#6444, NVIDIA#6536, and NVIDIA#5860 ->
`docs/about/release-notes.mdx`: Documents onboarding resume and
create-step recovery improvements.
- NVIDIA#6508, NVIDIA#6527, NVIDIA#5506, NVIDIA#6588, NVIDIA#6446, NVIDIA#6447, NVIDIA#6582, NVIDIA#6296, NVIDIA#6367, NVIDIA#6397,
and NVIDIA#6505 -> `docs/about/release-notes.mdx`: Documents docs,
release-risk, and E2E validation updates.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [x] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Quality Gates
<!-- Check exactly one tests line and one docs line. Check other lines
when applicable. Add every requested justification or approval
reference. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: Release-note prose only.
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Verification
<!-- Check each applicable item only when supported by the requested
evidence. Run targeted tests once per relevant change set and rerun
after later edits or hook autofixes that can affect the tested behavior.
Do not rerun hook-covered checks. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: Tests
not applicable, release-note prose only.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

Docs validation note: `npm run docs:check-agent-variants && npm run
docs:check-routes && git diff --check` passed. Full `npm run docs` is
currently blocked before Fern validation because the pinned
`fern-api@5.65.2` package is unavailable from npm (`ETARGET No matching
version found`).

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Added release notes for v0.0.79 with a new summary of recent
improvements, including onboarding and inference options, operator/CLI
diagnostics, sandbox recovery hardening, runtime limits, network policy
behavior, and release validation updates.
  * Added updated references and links for the latest release.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@wscurran wscurran added the area: inference Inference routing, serving, model selection, or outputs label Jul 12, 2026
@wscurran wscurran added bug-fix PR fixes a bug or regression integration: dcode LangChain Deep Code integration behavior platform: dgx-spark Affects DGX Spark hardware or workflows labels Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: inference Inference routing, serving, model selection, or outputs bug-fix PR fixes a bug or regression integration: dcode LangChain Deep Code integration behavior platform: dgx-spark Affects DGX Spark hardware or workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[DGX Spark][Inference] Deep Agents exits with HTTP 400 during tool calls on the default Qwen model

4 participants