Skip to content

docs: standardize NeMo Fabric naming - #112

Merged
rapids-bot[bot] merged 5 commits into
release/0.1from
docs/nemo-fabric-terminology
Jul 27, 2026
Merged

docs: standardize NeMo Fabric naming#112
rapids-bot[bot] merged 5 commits into
release/0.1from
docs/nemo-fabric-terminology

Conversation

@zhongxuanwang-nv

@zhongxuanwang-nv zhongxuanwang-nv commented Jul 24, 2026

Copy link
Copy Markdown
Member

Overview

Standardize standalone product-name references from “Fabric” to “NeMo Fabric” only where end users can encounter them. Internal implementation comments, private/internal-only docstrings, maintainer guidance, and build-script status text remain unchanged. Preserve Fabric where it is the public Python class or another code identifier.

Details

  • Audited all tracked repository entries for standalone product-name usage.
  • Updated public Python SDK docstrings and public Rust documentation comments that feed the API reference and JSON Schema descriptions.
  • Regenerated the committed Python API reference, Rust API reference, and JSON Schema snapshots.
  • Updated user-visible CLI help, surfaced adapter and Harbor validation messages, the exported Harbor FabricAgent documentation, task metadata, and rendered SVG accessibility text.
  • Merged release/0.1, preserved its adapter-discovery and streaming changes, and updated the user-facing streaming terminology introduced on that branch.
  • Left regular implementation comments and internal-only docstrings unchanged.
  • Kept API symbols, imports, calls such as Fabric.run(...), repository URLs, paths, package/crate names, and the lowercase fabric CLI unchanged.
  • Breaking changes: none.

Validation

  • cargo run -p nemo-fabric-core --example generate-schemas -- schemas
  • just docs (passed; Fern reported the expected warning that the missing-redirects check was skipped without authentication)
  • just test-rust (41 tests passed, plus doc tests)
  • just build-python
  • cargo check -p fabric-python --locked
  • Focused adapter, Harbor, SDK-contract, and streaming tests (274 passed)
  • just test-python (468 passed, 44 skipped)
  • cargo fmt --all -- --check
  • uvx --from ruff==0.15.21 ruff check <changed Python files>
  • bash -n examples/harbor/prepare_swebench.sh scripts/generate_api_docs.sh
  • just --fmt --check
  • git diff --check

Where should the reviewer start?

Start with crates/fabric-core/src/config.rs and python/src/nemo_fabric/models.py for the public source-of-truth wording, then review the generated schema and API-reference diffs. The merge commit preserves the newer release/0.1 implementation while applying the same terminology to its public streaming surfaces.

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

  • Relates to: none

  • I confirm this contribution is my own work, or I have the right to submit it under this project's license.

  • I searched existing issues and open pull requests, and this does not duplicate existing work.

Summary by CodeRabbit

  • Documentation

    • Standardized user-facing terminology from “Fabric” to “NeMo Fabric” across CLI help, SDK/reference docs, generated API pages, JSON schemas, and other reference materials.
  • Bug Fixes

    • Updated validation, compatibility, and runtime/warning/help messages to consistently reference “NeMo Fabric”.
    • Refreshed some human-readable reasoning/origin text to match the revised “NeMo Fabric” wording.
  • Tests

    • Updated assertions to match the revised “NeMo Fabric” text in messages and schema metadata.

Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The pull request standardizes “Fabric” wording to “NeMo Fabric” across adapters, core runtime messages, Python and Rust API documentation, JSON schemas, examples, generated references, and affected tests. Runtime and validation behavior is otherwise unchanged.

Changes

NeMo Fabric terminology normalization

Layer / File(s) Summary
Adapter and relay messaging
adapters/*, python/src/nemo_fabric/integrations/harbor/*, examples/harbor/*
Validation errors, relay compatibility messages, Harbor failures, metadata, and example output consistently use “NeMo Fabric”.
Core contracts and runtime messages
crates/fabric-cli/*, crates/fabric-core/*, crates/fabric-python/*
Core documentation and selected capability-route, diagnostic, and interpreter-origin strings use updated terminology without changing public shapes.
Python SDK and API references
python/src/nemo_fabric/*, docs/reference/api/python-library-reference/*
SDK docstrings and generated Python references describe models, runtime APIs, errors, and identifiers as NeMo Fabric.
Schemas, Rust references, examples, and tests
schemas/*, docs/reference/api/rust-library-reference/*, tests/*
Schema descriptions, generated Rust references, example text, and expected error/schema descriptions are aligned with the terminology update.

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

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 57.58% 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 uses the required Conventional Commits docs: prefix and succinctly matches the PR’s terminology update.
Description check ✅ Passed The description includes the required Overview, reviewer start point, related issues, and validation details, and the checkboxes are filled.
✨ 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 docs/nemo-fabric-terminology

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

@github-actions

Copy link
Copy Markdown

Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@docs/reference/api/python-library-reference/nemo_fabric.client.md`:
- Line 4: Update the authoritative source descriptions so the first product
mention uses “NVIDIA NeMo Fabric,” then regenerate the references. Apply this to
the client page at
docs/reference/api/python-library-reference/nemo_fabric.client.md:4, models page
at docs/reference/api/python-library-reference/nemo_fabric.models.md:4, and
runtime page at
docs/reference/api/python-library-reference/nemo_fabric.runtime.md:10; retain
“NeMo Fabric” for subsequent mentions.

In `@tests/adapters/test_adapters_common_relay_gateway.py`:
- Line 83: Update the match pattern in the RelayGatewayError assertion to use a
raw regex and escape the dots in the NeMo Fabric version range, preserving the
expected >=0.6.0,<0.7.0 message while preventing wildcard matches.
🪄 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: ASSERTIVE

Plan: Enterprise

Run ID: 25275494-2150-40af-9fa8-9aebdd70deee

📥 Commits

Reviewing files that changed from the base of the PR and between e0c8d87 and 6eca163.

⛔ Files ignored due to path filters (2)
  • examples/notebooks/img/fabric-contract.svg is excluded by !**/*.svg
  • examples/notebooks/img/variations.svg is excluded by !**/*.svg
📒 Files selected for processing (82)
  • .agents/skills/contribute-adapter/SKILL.md
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • adapters/common/src/nemo_fabric_adapters/common/__init__.py
  • adapters/common/src/nemo_fabric_adapters/common/lifecycle.py
  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/common/src/nemo_fabric_adapters/common/utils.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/hermes/src/nemo_fabric_adapters/hermes/adapter.py
  • crates/fabric-cli/src/app.rs
  • crates/fabric-core/src/config.rs
  • crates/fabric-core/src/doctor.rs
  • crates/fabric-core/src/error.rs
  • crates/fabric-core/src/runtime.rs
  • crates/fabric-core/src/schema.rs
  • crates/fabric-python/src/lib.rs
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/nemo_fabric.errors.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.types.md
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterdescriptorsource.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-capabilitytarget.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-controllocation.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-environmentownership.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-mcpexposure.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/fn-resolve-run-plan-from-config.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterconfigsupport.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-capabilityplan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentconfig.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentplan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-mcpserverconfig.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-resolvecontext.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runplan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/doctor/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/type-result.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/enum-errorstage.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/fn-run-plan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-adapterinvocation.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-environmenthandle.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-errorinfo.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-fabricevent.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runrequest.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runresult.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimehandle.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimetelemetrycontext.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/schema/enum-schemaname.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/schema/index.mdx
  • examples/code_review_agent/config.py
  • examples/harbor/calculator/task/task.toml
  • examples/harbor/prepare_swebench.sh
  • justfile
  • python/src/nemo_fabric/client.py
  • python/src/nemo_fabric/errors.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • python/src/nemo_fabric/integrations/harbor/models.py
  • python/src/nemo_fabric/integrations/harbor/runner.py
  • python/src/nemo_fabric/integrations/harbor/telemetry.py
  • python/src/nemo_fabric/models.py
  • python/src/nemo_fabric/runtime.py
  • python/src/nemo_fabric/types.py
  • schemas/adapter-descriptor.schema.json
  • schemas/adapter-invocation.schema.json
  • schemas/agent.schema.json
  • schemas/environment-handle.schema.json
  • schemas/error-info.schema.json
  • schemas/fabric-event.schema.json
  • schemas/run-plan.schema.json
  • schemas/run-request.schema.json
  • schemas/run-result.schema.json
  • schemas/runtime-context.schema.json
  • schemas/runtime-handle.schema.json
  • tests/adapters/test_adapters_common_relay_gateway.py
  • tests/python/test_sdk_contract.py

Comment thread docs/reference/api/python-library-reference/nemo_fabric.client.md Outdated
Comment thread tests/adapters/test_adapters_common_relay_gateway.py Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
adapters/claude/src/nemo_fabric_adapters/claude/adapter.py (1)

4-4: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Complete the terminology normalization in changed prose.

These changed docstrings/comments still use standalone “Fabric”, while this PR’s objective is to use “NeMo Fabric” for product-name references. Replace those prose occurrences, while preserving identifiers such as fabric doctor, FABRIC_*, fabric metadata keys, package names, paths, and CLI names.

  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py#L4-L4: update the adapter-contract docstring.
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py#L124-L124: update the invocation-input docstring.
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py#L274-L276: update the shared-endpoint comment.
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py#L486-L487: update the artifact comment.
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py#L795-L796: update the runtime docstring.
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py#L5-L5: update the adapter-contract docstring.
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py#L121-L121: update the invocation-input docstring.
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py#L282-L283: update the skill-path compatibility comment.
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py#L669-L670: update the generated-hook comment.
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py#L1008-L1008: update the runtime docstring.
  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py#L43-L44: update the Relay contract docstring.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L5-L8: update the module docstring.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L44-L44: update the configuration comment.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L128-L132: update “Fabric core” but retain lowercase fabric doctor.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L178-L184: update the model-config docstring.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L231-L231: update the workspace-backend docstring.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L250-L250: update the MCP-tools docstring.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L398-L400: update “Fabric-owned” while preserving FABRIC_OWNED_AGENT_KEYS.
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py#L466-L466: update the runtime docstring.
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py#L4-L4: update the module docstring.
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py#L422-L422: update the provider docstring.
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py#L552-L552: update the telemetry-metadata docstring while preserving the fabric metadata key.
  • examples/harbor/prepare_swebench.sh#L5-L10: update bootstrap prose while preserving package/path identifiers.
  • crates/fabric-core/src/runtime.rs#L2352-L2354: update the new_id comment.

Based on PR objectives, standalone product-name references should use “NeMo Fabric” while code identifiers remain unchanged.

🤖 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 `@adapters/claude/src/nemo_fabric_adapters/claude/adapter.py` at line 4,
Normalize standalone product-name references to “NeMo Fabric” in the specified
docstrings and comments, using symbols such as the Claude/Codex/DeepAgents
adapter flows, Relay contract, Harbor fabric agent, prepare_swebench bootstrap,
and runtime new_id comment as anchors. Apply the wording updates at every listed
site: adapters/claude/src/nemo_fabric_adapters/claude/adapter.py lines 4, 124,
274-276, 486-487, and 795-796;
adapters/codex/src/nemo_fabric_adapters/codex/adapter.py lines 5, 121, 282-283,
669-670, and 1008;
adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py lines 43-44;
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py lines 5-8,
44, 128-132, 178-184, 231, 250, 398-400, and 466;
python/src/nemo_fabric/integrations/harbor/fabric_agent.py lines 4, 422, and
552; examples/harbor/prepare_swebench.sh lines 5-10; and
crates/fabric-core/src/runtime.rs lines 2352-2354. Preserve all identifiers and
literal names, including fabric doctor, FABRIC_* constants, fabric metadata
keys, package names, paths, CLI names, and FABRIC_OWNED_AGENT_KEYS.
🤖 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.

Outside diff comments:
In `@adapters/claude/src/nemo_fabric_adapters/claude/adapter.py`:
- Line 4: Normalize standalone product-name references to “NeMo Fabric” in the
specified docstrings and comments, using symbols such as the
Claude/Codex/DeepAgents adapter flows, Relay contract, Harbor fabric agent,
prepare_swebench bootstrap, and runtime new_id comment as anchors. Apply the
wording updates at every listed site:
adapters/claude/src/nemo_fabric_adapters/claude/adapter.py lines 4, 124,
274-276, 486-487, and 795-796;
adapters/codex/src/nemo_fabric_adapters/codex/adapter.py lines 5, 121, 282-283,
669-670, and 1008;
adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py lines 43-44;
adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py lines 5-8,
44, 128-132, 178-184, 231, 250, 398-400, and 466;
python/src/nemo_fabric/integrations/harbor/fabric_agent.py lines 4, 422, and
552; examples/harbor/prepare_swebench.sh lines 5-10; and
crates/fabric-core/src/runtime.rs lines 2352-2354. Preserve all identifiers and
literal names, including fabric doctor, FABRIC_* constants, fabric metadata
keys, package names, paths, CLI names, and FABRIC_OWNED_AGENT_KEYS.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 750a942b-c0f9-45b6-8b47-ae2537a15e84

📥 Commits

Reviewing files that changed from the base of the PR and between 6eca163 and 0b2a9bc.

📒 Files selected for processing (7)
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • crates/fabric-core/src/runtime.rs
  • examples/harbor/prepare_swebench.sh
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
📜 Review details
🧰 Additional context used
📓 Path-based instructions (19)
**/*.{rs,py,pyi,json,yaml,yml}

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Determine and update every affected public surface, including the CLI, PyO3 bindings, Python SDK, type stubs, schemas, and adapter contract, so they remain in parity.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • crates/fabric-core/src/runtime.rs
**/*

📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)

**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.

**/*: Always spell NVIDIA in all caps; do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol after NVIDIA when referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names with NVIDIA on first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • examples/harbor/prepare_swebench.sh
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • crates/fabric-core/src/runtime.rs
**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For native binding changes, run cargo check -p fabric-python --locked.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • crates/fabric-core/src/runtime.rs
**/*.{py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

If Python code or a Python-facing adapter changes, run just test-python.

Use type annotations for public Python APIs and keep native Python binding declarations synchronized with their Rust implementations.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
**/*.{rs,py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests in just test-rust pass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes under schemas/ and generated API references.

**/*.{rs,py,pyi}: Use snake_case for Rust and Python functions and variables; use PascalCase for Rust types and Python classes.
Keep native Python binding declarations synchronized with their Rust implementations when public contracts change.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • crates/fabric-core/src/runtime.rs
**/*.{py,pyi,rs}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For Python SDK or PyO3 binding changes, use python-tests, run focused pytest tests first, then just test-python; rebuild with just build-python when native code or packaging changes.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • crates/fabric-core/src/runtime.rs
**/*.{rs,py,toml}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

When editing version helpers, verify every nemo-fabric-* workspace package through Cargo metadata and reject a static version in python/pyproject.toml.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • crates/fabric-core/src/runtime.rs
**/*.{toml,rs,py}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

Avoid blind repository-wide replacement of version-like strings; distinguish package-version references from examples and unrelated dependency versions.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
  • crates/fabric-core/src/runtime.rs
{adapters/**,examples/**}

⚙️ CodeRabbit configuration file

{adapters/**,examples/**}: Review adapter and example changes for command correctness, config/schema consistency, artifact handling, and compatibility with the public NeMo Fabric contracts.

Files:

  • adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py
  • examples/harbor/prepare_swebench.sh
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
**/*.{toml,yml,yaml,sh,bash}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

TOML, YAML, and shell files must use the specified #-comment SPDX license header.

Files:

  • examples/harbor/prepare_swebench.sh
python/src/nemo_fabric/**

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Ensure the editable maturin build continues to produce the native extension at nemo_fabric._native, with generated artifacts placed where downstream consumers expect.

Files:

  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
python/src/nemo_fabric/**/*.py

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

For Python API reference changes, update source docstrings under python/src/nemo_fabric/ instead of editing generated reference output.

Files:

  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
python/src/nemo_fabric/**/*

⚙️ CodeRabbit configuration file

python/src/nemo_fabric/**/*: Review Python SDK changes for typed API consistency, import-time dependency neutrality, async/session behavior, and parity with the native extension.
Stubs and runtime implementations should stay aligned.

Files:

  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
**/*.rs

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Implement new runtime or binding behavior in the shared Rust core first.

Files:

  • crates/fabric-core/src/runtime.rs
**/*.{rs,toml}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For any Rust change, run just test-rust and cargo fmt --all -- --check.

For Rust core, CLI, or shared runtime semantic changes, run Rust formatting and tests, and add Python tests when behavior is exposed through the SDK.

Use Rust stable tooling; format Rust code with cargo fmt --all, check formatting with cargo fmt --all -- --check, and compile with cargo check --workspace --locked.

Files:

  • crates/fabric-core/src/runtime.rs
crates/fabric-core/**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

Changes under crates/fabric-core must run both the Rust and Python test suites.

Files:

  • crates/fabric-core/src/runtime.rs
crates/fabric-core/**/*.rs

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

For Rust API reference changes, update Rust documentation comments under crates/fabric-core/ instead of editing generated reference output.

If crates/fabric-core changes in a way exposed through Python, run both the Rust and Python suites.

Files:

  • crates/fabric-core/src/runtime.rs
**/*.{rs,rmeta}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

If Rust code changes, run cargo fmt --all -- --check and just test-rust.

Files:

  • crates/fabric-core/src/runtime.rs
crates/fabric-core/src/**/*.rs

⚙️ CodeRabbit configuration file

crates/fabric-core/src/**/*.rs: Review the Rust core for runtime lifecycle correctness, handle validation, capability routing accuracy, schema stability, and error semantics.
Public API changes should match committed schemas, tests, and documentation.

Files:

  • crates/fabric-core/src/runtime.rs
🧠 Learnings (2)
📚 Learning: 2026-07-09T22:28:51.689Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 43
File: adapters/claude-sdk/src/nemo_fabric_adapters/claude_sdk/adapter.py:164-168
Timestamp: 2026-07-09T22:28:51.689Z
Learning: In the NeMo-Fabric adapters, treat path values used in Fabric adapter configuration (including logic like `_resolve_path` in adapter.py) as config-root-relative. Do not apply `Path.expanduser()` (or otherwise apply `~`/home or shell-style expansion), because it will make the resolved paths normalize inconsistently across adapters. Also, do not rely on or add any resolution behavior that uses `harness.settings.cwd` as an override point for these adapter paths—`harness.settings.cwd` is explicitly unsupported in this adapter context.

Applied to files:

  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
  • adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
📚 Learning: 2026-06-28T04:03:32.877Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 26
File: python/tests/smoke_typed_config.py:163-177
Timestamp: 2026-06-28T04:03:32.877Z
Learning: In NVIDIA NeMo Fabric Python SDK serialization of `RuntimeCapabilities` (to satisfy the “parity contract” with Rust core and the CLI), do not emit metadata keys when the corresponding metadata is absent. Instead, omit those fields entirely so the produced JSON matches the Rust/CLI output (e.g., avoid `null`, empty objects, or placeholder metadata). During review, verify the serializer/builders follow this omission rule and that Python outputs/parity tests reflect the same shape.

Applied to files:

  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
🔇 Additional comments (7)
adapters/claude/src/nemo_fabric_adapters/claude/adapter.py (1)

176-177: LGTM!

Also applies to: 348-354

adapters/codex/src/nemo_fabric_adapters/codex/adapter.py (1)

167-168: LGTM!

Also applies to: 262-270

adapters/common/src/nemo_fabric_adapters/common/relay_gateway.py (1)

97-98: LGTM!

adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py (1)

407-411: LGTM!

python/src/nemo_fabric/integrations/harbor/fabric_agent.py (1)

179-179: LGTM!

Also applies to: 196-204, 234-234, 357-357

examples/harbor/prepare_swebench.sh (1)

71-71: LGTM!

crates/fabric-core/src/runtime.rs (1)

60-60: LGTM!

Also applies to: 88-88, 120-120, 143-157, 214-214, 237-245, 260-260, 312-312, 323-323, 454-454, 739-739, 756-756, 1861-1861

@zhongxuanwang-nv zhongxuanwang-nv self-assigned this Jul 24, 2026
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
@zhongxuanwang-nv
zhongxuanwang-nv marked this pull request as ready for review July 24, 2026 01:01
@zhongxuanwang-nv
zhongxuanwang-nv requested review from a team as code owners July 24, 2026 01:01

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In `@docs/reference/api/python-library-reference/index.md`:
- Around line 13-14: Update the first `nemo_fabric.client` description to use
“NVIDIA NeMo Fabric” instead of “NeMo Fabric”; retain “NeMo Fabric” in the
subsequent `nemo_fabric.runtime` description.
🪄 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: ASSERTIVE

Plan: Enterprise

Run ID: 52d3afeb-5868-415f-8778-41d9d232ceea

📥 Commits

Reviewing files that changed from the base of the PR and between 0b2a9bc and abf2be5.

📒 Files selected for processing (7)
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • python/src/nemo_fabric/runtime.py
  • scripts/generate_api_docs.sh
  • tests/adapters/test_adapters_common_relay_gateway.py
📜 Review details
⏰ Context from checks skipped due to timeout. (9)
  • GitHub Check: Test (Python 3.14, windows-amd64)
  • GitHub Check: Test (Python 3.12, macos-arm64)
  • GitHub Check: Test (Python 3.12, windows-amd64)
  • GitHub Check: Test (Python 3.13, windows-amd64)
  • GitHub Check: Test (Python 3.11, windows-amd64)
  • GitHub Check: Test (Python 3.11, macos-arm64)
  • GitHub Check: Test (Python 3.13, macos-arm64)
  • GitHub Check: Test (Python 3.14, macos-arm64)
  • GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (30)
**/*.{rs,py,pyi,json,yaml,yml}

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Determine and update every affected public surface, including the CLI, PyO3 bindings, Python SDK, type stubs, schemas, and adapter contract, so they remain in parity.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
**/*

📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)

**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.

**/*: Always spell NVIDIA in all caps; do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol after NVIDIA when referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names with NVIDIA on first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • scripts/generate_api_docs.sh
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For native binding changes, run cargo check -p fabric-python --locked.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
**/*.{py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

If Python code or a Python-facing adapter changes, run just test-python.

Use type annotations for public Python APIs and keep native Python binding declarations synchronized with their Rust implementations.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
**/*.{rs,py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests in just test-rust pass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes under schemas/ and generated API references.

**/*.{rs,py,pyi}: Use snake_case for Rust and Python functions and variables; use PascalCase for Rust types and Python classes.
Keep native Python binding declarations synchronized with their Rust implementations when public contracts change.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
tests/adapters/**/*.py

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

tests/adapters/**/*.py: If an adapter or integration changes, run its focused tests.
For adapter behavior changes, run focused adapter tests under tests/adapters, then run just test-python.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
**/*.{py,pyi,rs}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For Python SDK or PyO3 binding changes, use python-tests, run focused pytest tests first, then just test-python; rebuild with just build-python when native code or packaging changes.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
tests/**/*.{rs,py}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

When adding functionality, include tests in the corresponding Rust crate or the relevant area under tests/.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
tests/**/*.py

📄 CodeRabbit inference engine (.agents/skills/python-tests/SKILL.md)

tests/**/*.py: Use Pytest to run Python tests.
Do not add @pytest.mark.asyncio to tests; async tests are automatically detected and run by the async runner.
Do not add -> None return type annotations to test functions.
When mocking a class, use unittest.mock.MagicMock or unittest.mock.AsyncMock, using the spec argument when necessary, rather than defining a new class.
Prefix mocked class names with mock, not fake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files in conftest.py.
Define fixtures using @pytest.fixture(name="<fixture_name>"[, scope="<scope>"]) and a function named <fixture_name>_fixture; specify scope only when it is not function.
Prefer pytest.mark.parametrize over separate tests for different input types.
Use @pytest.mark.usefixtures when a fixture is needed but its return value is unused or it does not return a value.
Use the autouse restore_environ_fixture from tests/conftest.py to restore environment variables; modify variables with os.environ and do not use monkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as using results["data"] instead of results.get("data").

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
**/*.{rs,py,toml}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

When editing version helpers, verify every nemo-fabric-* workspace package through Cargo metadata and reject a static version in python/pyproject.toml.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
**/*.{toml,rs,py}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

Avoid blind repository-wide replacement of version-like strings; distinguish package-version references from examples and unrelated dependency versions.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
  • python/src/nemo_fabric/runtime.py
{tests/**,python/tests/**}

⚙️ CodeRabbit configuration file

{tests/**,python/tests/**}: Tests should cover the behavior promised by the changed API surface, including error paths, lifecycle cleanup, and SDK/native parity where relevant.

Files:

  • tests/adapters/test_adapters_common_relay_gateway.py
python/src/nemo_fabric/**

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Ensure the editable maturin build continues to produce the native extension at nemo_fabric._native, with generated artifacts placed where downstream consumers expect.

Files:

  • python/src/nemo_fabric/runtime.py
python/src/nemo_fabric/**/*.py

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

For Python API reference changes, update source docstrings under python/src/nemo_fabric/ instead of editing generated reference output.

Files:

  • python/src/nemo_fabric/runtime.py
python/src/nemo_fabric/**/*

⚙️ CodeRabbit configuration file

python/src/nemo_fabric/**/*: Review Python SDK changes for typed API consistency, import-time dependency neutrality, async/session behavior, and parity with the native extension.
Stubs and runtime implementations should stay aligned.

Files:

  • python/src/nemo_fabric/runtime.py
**/*.{md,rst}

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Update documentation and examples in the same branch as the public API change.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
{README.md,docs/**/*.{md,mdx,yml},examples/**/*.{md,mdx,yml}}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Keep package names, repository references, and build commands current in documentation and examples.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
{docs/**/*.{md,mdx,yml},examples/**/*.{md,mdx,yml}}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Update relevant getting-started, reference, adapter, and example documentation when the corresponding examples or adapters change.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
docs/**/*.{md,mdx,yml}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Run just docs when the documentation site changes.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.{md,mdx,rst}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-guide.md)

**/*.{md,mdx,rst}: For NeMo Fabric documentation, verify technical claims against the current repository, public API, or documented command before reviewing style.
Always spell NVIDIA in all caps; do not use Nvidia, nvidia, or NV.
Format commands, code elements, expressions, package names, file names, and paths as inline code.
Use descriptive link text; avoid raw URLs and weak anchors such as here or read more.
Use title case consistently for technical documentation headings.
Introduce code blocks, lists, tables, and images with complete sentences.
Write procedures as imperative, parallel steps; split long procedures into smaller tasks.
Prefer active voice, present tense, short sentences, contractions, and plain English while preserving necessary technical precision.
Use can for possibility and reserve may for permission.
Use after for temporal relationships instead of once, and prefer refer to over see when directing readers to another resource.
Avoid culture-specific idioms, unnecessary Latinisms, jokes, and marketing exaggeration in technical documentation.
Spell out months in body text, avoid ordinal dates, and use clear time zones.
Spell out whole numbers from zero through nine unless they are technical values, parameters, versions, or UI values; use numerals for 10 or greater and commas in thousands.
Do not add trademark symbols to learning-oriented documentation unless the source, platform, or legal guidance explicitly requires them.
Do not replace precise technical terms with simpler words when doing so would lose precision.
Do not flag passive voice when the actor is unknown or the action is the important part.
Do not rewrite API names, package names, command flags, or code literals for style.

**/*.{md,mdx,rst}: Use consistent title case for technical-document headings and table headers; avoid quotation marks, ampersands, and exclamation marks in headings, while preserving official product, event, research, and whitepaper title ...

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.{md,rst,txt,adoc}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-language-mechanics.md)

**/*.{md,rst,txt,adoc}: For technical documentation, use professional, active, conversational, engaging, precise, and plain-English prose. Prefer active voice, present tense, short sentences, and scannable paragraphs. Avoid casual or imprecise language, swearing, threats, insults, jokes, puns, culture-specific idioms, marketing exaggeration, and unsupported third-party comparisons.
Use can for possibility and reserve may for permission; use after for temporal order; use refer to for cross-references; prefer short direct sentences and specific verbs; avoid unnecessary please in technical documentation.
Prefer active voice when the actor matters. Passive voice is acceptable when the actor is unknown or irrelevant, when the action or result is the focus, or in programmer documentation.
Use natural contractions in conversational technical prose, but do not force them in formal legal copy, API references, or generated text.
Prefer simpler English over Latinisms: use for example or such as instead of e.g., and so on instead of etc., that is instead of i.e., compared to instead of vs., and by, through, or using instead of via. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Use that without commas for essential clauses, and which with commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such as June 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space before a.m. or p.m.; use ET and PT for needed time zones; avoid 24/7; and prefer from 12:30 to 1:00 p.m. for prose ranges.
Format numbers consistently: spell out zero through nine in body text, use numerals for 10 or greater and for technical values, use commas in thousands, do not begin a sentence with a numeral, spell out ordinals, and use numerals consistently within a category wh...

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
docs/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Update Fern documentation under docs/ when public behavior, the nemo-fabric package, examples, or supported bindings change.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
docs/reference/api/**

📄 CodeRabbit inference engine (AGENTS.md)

Regenerate or update generated API references under docs/reference/api/ when the public API changes.

Treat all files under docs/reference/api/ as generated output and do not modify them directly.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.{md,mdx}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)

**/*.{md,mdx}: Use the full product name NVIDIA NeMo Fabric on its first usage, typically in the title or H1; use NeMo Fabric thereafter.
Use fabric by itself only when referring to the CLI tool, and surround those references with backticks.
Capitalize NVIDIA correctly in public documentation.
Format commands, code elements, expressions, file names, paths, and filenames as inline code where needed.
Use title case consistently for headings in technical documentation.
Introduce code blocks, tables, and lists with complete lead-in sentences.
Use descriptive anchor text instead of raw URLs or generic link text such as here.
Prefer active voice, present tense, short sentences, and plain English.
Use consistent terminology for the same concept throughout a document.
Write procedures as imperative, parallel, easy-to-scan steps, and split long sequences into smaller tasks.
Use after instead of once when expressing temporal sequence.
Use can instead of may when the intended meaning is possibility rather than permission.
Avoid ambiguous numeric dates and ordinal dates in body text.
For learning-oriented documentation, do not force trademark symbols unless the source document explicitly requires them.
Introduce examples' code blocks with full sentences and ensure examples match current APIs and build commands.

For documentation-site changes, run just docs to regenerate Python and Rust API references and validate Fern configuration.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
**/{README.md,*.md,*.mdx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update relevant SDK, API, adapter, example, integration, and embedded documentation when public behavior or the corresponding surface changes.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.{html,md}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

HTML and Markdown files must use the specified HTML comment form for SPDX license headers.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
{docs/**,README.md,AGENTS.md}

⚙️ CodeRabbit configuration file

{docs/**,README.md,AGENTS.md}: Review documentation for technical accuracy against the current API, command correctness, and consistency with generated schemas.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
{*.md,**/*.md,**/*.mdx,**/*.ipynb}

⚙️ CodeRabbit configuration file

{*.md,**/*.md,**/*.mdx,**/*.ipynb}: Enforce the product name in user-facing prose: use "NVIDIA NeMo Fabric" on first use and "NeMo Fabric" thereafter. Flag standalone capitalized "Fabric" when it refers to the product. Do not flag the lowercase fabric CLI command, package/import/crate names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word.

Files:

  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
scripts/generate_api_docs.sh

📄 CodeRabbit inference engine (AGENTS.md)

Keep the stable public wrapper scripts/generate_api_docs.sh at the scripts/ root and reference it in docs and examples; use namespaced paths under scripts/docs/ only for internal maintenance documentation.

For Python API reference changes, update scripts/generate_api_docs.sh when the generator itself requires changes.

Files:

  • scripts/generate_api_docs.sh
**/*.{toml,yml,yaml,sh,bash}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

TOML, YAML, and shell files must use the specified #-comment SPDX license header.

Files:

  • scripts/generate_api_docs.sh
🧠 Learnings (1)
📚 Learning: 2026-06-28T04:03:32.877Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 26
File: python/tests/smoke_typed_config.py:163-177
Timestamp: 2026-06-28T04:03:32.877Z
Learning: In NVIDIA NeMo Fabric Python SDK serialization of `RuntimeCapabilities` (to satisfy the “parity contract” with Rust core and the CLI), do not emit metadata keys when the corresponding metadata is absent. Instead, omit those fields entirely so the produced JSON matches the Rust/CLI output (e.g., avoid `null`, empty objects, or placeholder metadata). During review, verify the serializer/builders follow this omission rule and that Python outputs/parity tests reflect the same shape.

Applied to files:

  • python/src/nemo_fabric/runtime.py
🔇 Additional comments (7)
docs/reference/api/python-library-reference/index.md (1)

26-26: LGTM!

Also applies to: 42-42, 57-63

docs/reference/api/python-library-reference/nemo_fabric.client.md (1)

4-4: LGTM!

Also applies to: 43-43, 115-115

docs/reference/api/python-library-reference/nemo_fabric.models.md (1)

4-4: LGTM!

Also applies to: 262-262, 1426-1426, 1564-1564

docs/reference/api/python-library-reference/nemo_fabric.runtime.md (1)

10-10: LGTM!

python/src/nemo_fabric/runtime.py (1)

4-4: LGTM!

scripts/generate_api_docs.sh (1)

70-70: LGTM!

Also applies to: 80-80

tests/adapters/test_adapters_common_relay_gateway.py (1)

82-85: LGTM!

Comment thread docs/reference/api/python-library-reference/index.md
@AnuradhaKaruppiah

Copy link
Copy Markdown
Collaborator

I don't have a strong opinion on this :) I will leave it to @dagardner-nv

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

Approved, assuming this is for 0.2? Otherwise change the target to release/0.1

Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
@zhongxuanwang-nv
zhongxuanwang-nv changed the base branch from main to release/0.1 July 27, 2026 19:49
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (12)
crates/fabric-core/src/config.rs (2)

4-4: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use NVIDIA NeMo Fabric on each affected page’s first mention.

These changed descriptions introduce NeMo Fabric before the required full product name. Update the authoritative source text, then regenerate generated API references.

  • crates/fabric-core/src/config.rs#L4-L4: use NVIDIA NeMo Fabric in the module-level first mention.
  • docs/reference/api/python-library-reference/index.md#L13-L13: use NVIDIA NeMo Fabric in the first API Overview entry.
  • docs/reference/api/python-library-reference/nemo_fabric.client.md#L4-L4: update the authoritative client description and regenerate the page.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterdescriptorsource.mdx#L4-L4: update the source enum documentation and regenerate the page.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-controllocation.mdx#L4-L4: update the source enum documentation and regenerate the page.

As per path instructions, user-facing prose must use the full product name on first use. Based on learnings, generated API references should be regenerated from their source documentation.

🤖 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 `@crates/fabric-core/src/config.rs` at line 4, Update the first user-facing
product mention to “NVIDIA NeMo Fabric” in crates/fabric-core/src/config.rs:4-4,
docs/reference/api/python-library-reference/index.md:13-13, and the
authoritative client and enum documentation sources; regenerate the affected
pages at docs/reference/api/python-library-reference/nemo_fabric.client.md:4-4,
docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterdescriptorsource.mdx:4-4,
and
docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-controllocation.mdx:4-4
so generated references match their sources.

Sources: Path instructions, Learnings


635-640: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Reject or migrate legacy endpoints in RelayAtofConfig
relay.observability.atof.endpoints still lands in extensions, so legacy payloads can deserialize with an empty sinks list and emit no ATOF data. Add a compatibility mapping or reject the legacy field, and cover it with a regression test.

🤖 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 `@crates/fabric-core/src/config.rs` around lines 635 - 640, Update
RelayAtofConfig deserialization to explicitly reject or migrate the legacy
endpoints field instead of silently storing it in extensions; if migrating,
populate sinks so legacy payloads continue emitting ATOF data. Add a regression
test covering relay.observability.atof.endpoints and the chosen compatibility
behavior.
docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx (1)

4-4: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use “NVIDIA NeMo Fabric” on first use across the generated API pages. Update the source descriptions, then regenerate the affected pages.

  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx#L4-L4: use the full product name in the page description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx#L14-L14: use the full product name in the rendered description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-mcpserverconfig.mdx#L28-L28: use the full product name in the field description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-resolvecontext.mdx#L4-L4: use the full product name in the page description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-resolvecontext.mdx#L20-L20: use the full product name in the field description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runplan.mdx#L4-L4: use the full product name in the page description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runplan.mdx#L14-L14: use the full product name in the rendered description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runplan.mdx#L24-L28: use the full product name in the field descriptions.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/doctor/index.mdx#L4-L12: use the full product name in the page description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx#L4-L4: use the full product name in the page description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx#L14-L14: use the full product name in the rendered description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/index.mdx#L4-L20: use the full product name in the error-module descriptions.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/type-result.mdx#L4-L4: use the full product name in the page description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/type-result.mdx#L14-L14: use the full product name in the rendered description.
  • docs/reference/api/rust-library-reference/nemo-fabric-core/index.mdx#L83-L87: use the full product name in the first module description.

As per coding guidelines and path instructions, use “NVIDIA NeMo Fabric” on first use and regenerate generated API output from its source.

🤖 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
`@docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx`
at line 4, Update the source descriptions that generate the Rust API
documentation so the first use consistently says “NVIDIA NeMo Fabric,” then
regenerate the affected output. Apply the change at
docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx
lines 4-4 and 14-14; config/struct-mcpserverconfig.mdx lines 28-28;
config/struct-resolvecontext.mdx lines 4-4 and 20-20; config/struct-runplan.mdx
lines 4-4, 14-14, and 24-28; doctor/index.mdx lines 4-12;
error/enum-fabricerror.mdx lines 4-4 and 14-14; error/index.mdx lines 4-20;
error/type-result.mdx lines 4-4 and 14-14; and index.mdx lines 83-87. Ensure the
generated page, rendered, field, module, and error descriptions all reflect the
source wording.

Sources: Coding guidelines, Path instructions

docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-environmentownership.mdx (1)

29-33: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use can in the source docstring. Change crates/fabric-core/src/config.rs:301 to “can release it,” then regenerate the API reference; docs/reference/api/** should not be edited directly.

🤖 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
`@docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-environmentownership.mdx`
around lines 29 - 33, Update the EnvironmentOwnership source docstring in
config.rs for FabricOwned to say NeMo Fabric “can release it,” then regenerate
the Rust API reference so the generated documentation reflects the change; do
not edit the generated docs directly.

Sources: Coding guidelines, Path instructions

adapters/README.md (1)

22-28: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Document the actual interpreter precedence.

crates/fabric-python/src/lib.rs now selects harness.settings.python, then harness.settings.python_env, then ADAPTER_PYTHON, and finally the current Python interpreter. This section still documents only ADAPTER_PYTHON versus the current interpreter.

Suggested wording
-   and queried from `ADAPTER_PYTHON` when set, otherwise from the current Python;
+   and queried from `harness.settings.python`, then `harness.settings.python_env`,
+   then `ADAPTER_PYTHON`, otherwise from the current Python;

As per path instructions, documentation must reflect public behavior changes.

🤖 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 `@adapters/README.md` around lines 22 - 28, Update the adapter interpreter
resolution documentation to reflect the precedence implemented in the fabric
Python logic: use harness.settings.python first, then
harness.settings.python_env, then ADAPTER_PYTHON, and finally the current Python
interpreter. Preserve the existing path-resolution details for ADAPTER_PYTHON
and ensure the documented order matches actual public behavior.

Source: Path instructions

python/src/nemo_fabric/streaming.py (1)

248-276: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Protect the ATOF listener when a non-loopback host is configured.

NEMO_FABRIC_STREAMING_HOST can expose the unauthenticated /atof endpoint on 0.0.0.0 or another reachable address, while records are accepted over cleartext HTTP. A network peer can flood the bounded queue or inject records if it knows a request ID or turn index; correlation is not authentication. Require loopback or an authenticated, encrypted channel for non-loopback deployments. The supplied static-analysis hint also flags this cleartext endpoint.

Also applies to: 398-429

🤖 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 `@python/src/nemo_fabric/streaming.py` around lines 248 - 276, Update the ATOF
listener initialization and startup flow around the host configuration and
endpoint binding to reject non-loopback hosts unless an authenticated, encrypted
transport is explicitly configured. Ensure /atof is never exposed over cleartext
HTTP on 0.0.0.0 or other reachable addresses; preserve loopback operation and
fail clearly before accepting connections when the security requirement is
unmet.

Source: Linters/SAST tools

tests/python/test_streaming.py (1)

549-550: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Bound polling loops to prevent hangs.

These loops wait indefinitely for listener state changes. A regression can therefore hang CI instead of producing a failure. Use a shared deadline-based helper or asyncio.wait_for around each wait. Ruff reports the same ASYNC110 pattern in these locations.

Also applies to: 570-571, 576-577, 596-597, 612-613, 619-620, 871-872, 942-943

🤖 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 `@tests/python/test_streaming.py` around lines 549 - 550, Bound every polling
loop in test_streaming.py, including the loop around
listener._active_atof_connections and the listed locations, with a finite
timeout using a shared deadline-based helper or asyncio.wait_for. Preserve the
existing state-wait behavior while ensuring stalled listener state changes fail
promptly instead of hanging CI, and resolve the corresponding Ruff ASYNC110
findings.

Source: Linters/SAST tools

python/src/nemo_fabric/models.py (1)

266-291: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Keep raw sink mappings from bypassing header pruning.
RelayAtofConfig.sinks still accepts dict[str, Any], so a mapping-shaped sink can serialize headers and header_env differently from RelayAtofStreamSinkConfig. Coerce mappings to the typed sink model before dumping, or add a regression test for the raw-dict path.

🤖 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 `@python/src/nemo_fabric/models.py` around lines 266 - 291, The
RelayAtofConfig.sinks serialization path allows raw mappings to bypass the
header-pruning behavior. Update the sink handling around RelayAtofConfig and
_omit_empty_header_maps to coerce mapping-shaped sinks into the appropriate
discriminated RelayAtofFileSinkConfig or RelayAtofStreamSinkConfig model before
serialization, preserving omission of empty headers and header_env for both
typed and raw sink inputs.

Source: Learnings

docs/sdk/python.mdx (1)

445-445: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use a repository-relative .mdx link for the Relay installation page.

This Fern site-root link does not satisfy the repository documentation-link contract.

As per path instructions, links between files under docs/ must use repository-relative paths with the target .mdx extension.

Proposed fix
- [NeMo Relay CLI installation instructions](/getting-started/install#nemo-relay-cli)
+ [NeMo Relay CLI installation instructions](../getting-started/install.mdx#nemo-relay-cli)
🤖 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 `@docs/sdk/python.mdx` at line 445, Update the NeMo Relay CLI installation link
in the surrounding documentation to use a repository-relative path targeting the
destination’s .mdx file, rather than the site-root URL. Preserve the existing
link text and anchor behavior.

Source: Path instructions

skills/integrations/consumer/nemo-fabric-integrate/SKILL.md (1)

47-48: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Quote the package extra in the installation command.

uv pip install nemo-fabric[runtime] can be expanded as a shell glob or rejected by shells with strict glob handling. Match the already-quoted hermes command, for example: uv pip install 'nemo-fabric[runtime]'.

🤖 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 `@skills/integrations/consumer/nemo-fabric-integrate/SKILL.md` around lines 47
- 48, Update the nemo-fabric installation command in the integration
instructions to quote the package extra, using the same quoting style as the
existing hermes command; preserve the runtime extra and surrounding installation
guidance.
scripts/generate_api_docs.sh (1)

103-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Restrict product-name normalization to prose.

The substitution rewrites every occurrence in each Markdown file, including fenced code, API names, literals, and link destinations. A later NVIDIA NeMo Relay occurrence in one of those contexts could be silently changed and break documented commands or links. Limit the replacement to prose or validate that generated code blocks and URLs remain unchanged. As per coding guidelines, do not rewrite API names, package names, command flags, or code literals for style.

🤖 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 `@scripts/generate_api_docs.sh` around lines 103 - 107, Update the substitution
in the generated-page loop to normalize “NVIDIA NeMo Relay” only in prose, while
leaving fenced code blocks, API/package names, literals, command flags, and link
destinations unchanged. Preserve the first-prose-occurrence behavior per file
and avoid rewriting occurrences in non-prose Markdown contexts.

Source: Coding guidelines

tests/python/test_sdk_contract.py (1)

327-329: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make empty-header cases assert the intended wire shape.

sink.get("headers", {}) and sink.get("header_env", {}) pass whether an empty field is omitted or serialized as {}, so the test does not lock down the contract. Assert presence or absence explicitly, and use direct indexing when a field must exist. As per coding guidelines, tests should access expected data directly so missing data produces a clear failure.

🤖 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 `@tests/python/test_sdk_contract.py` around lines 327 - 329, Update the
assertions around sink headers and header_env in the test to explicitly verify
the intended wire shape for empty fields, distinguishing omitted fields from
fields serialized as {}. Use direct dictionary indexing for fields that must be
present, while retaining get only when absence is the expected contract; keep
the RelayAtofConfig round-trip assertion 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.

Outside diff comments:
In `@adapters/README.md`:
- Around line 22-28: Update the adapter interpreter resolution documentation to
reflect the precedence implemented in the fabric Python logic: use
harness.settings.python first, then harness.settings.python_env, then
ADAPTER_PYTHON, and finally the current Python interpreter. Preserve the
existing path-resolution details for ADAPTER_PYTHON and ensure the documented
order matches actual public behavior.

In `@crates/fabric-core/src/config.rs`:
- Line 4: Update the first user-facing product mention to “NVIDIA NeMo Fabric”
in crates/fabric-core/src/config.rs:4-4,
docs/reference/api/python-library-reference/index.md:13-13, and the
authoritative client and enum documentation sources; regenerate the affected
pages at docs/reference/api/python-library-reference/nemo_fabric.client.md:4-4,
docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterdescriptorsource.mdx:4-4,
and
docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-controllocation.mdx:4-4
so generated references match their sources.
- Around line 635-640: Update RelayAtofConfig deserialization to explicitly
reject or migrate the legacy endpoints field instead of silently storing it in
extensions; if migrating, populate sinks so legacy payloads continue emitting
ATOF data. Add a regression test covering relay.observability.atof.endpoints and
the chosen compatibility behavior.

In
`@docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-environmentownership.mdx`:
- Around line 29-33: Update the EnvironmentOwnership source docstring in
config.rs for FabricOwned to say NeMo Fabric “can release it,” then regenerate
the Rust API reference so the generated documentation reflects the change; do
not edit the generated docs directly.

In
`@docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx`:
- Line 4: Update the source descriptions that generate the Rust API
documentation so the first use consistently says “NVIDIA NeMo Fabric,” then
regenerate the affected output. Apply the change at
docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx
lines 4-4 and 14-14; config/struct-mcpserverconfig.mdx lines 28-28;
config/struct-resolvecontext.mdx lines 4-4 and 20-20; config/struct-runplan.mdx
lines 4-4, 14-14, and 24-28; doctor/index.mdx lines 4-12;
error/enum-fabricerror.mdx lines 4-4 and 14-14; error/index.mdx lines 4-20;
error/type-result.mdx lines 4-4 and 14-14; and index.mdx lines 83-87. Ensure the
generated page, rendered, field, module, and error descriptions all reflect the
source wording.

In `@docs/sdk/python.mdx`:
- Line 445: Update the NeMo Relay CLI installation link in the surrounding
documentation to use a repository-relative path targeting the destination’s .mdx
file, rather than the site-root URL. Preserve the existing link text and anchor
behavior.

In `@python/src/nemo_fabric/models.py`:
- Around line 266-291: The RelayAtofConfig.sinks serialization path allows raw
mappings to bypass the header-pruning behavior. Update the sink handling around
RelayAtofConfig and _omit_empty_header_maps to coerce mapping-shaped sinks into
the appropriate discriminated RelayAtofFileSinkConfig or
RelayAtofStreamSinkConfig model before serialization, preserving omission of
empty headers and header_env for both typed and raw sink inputs.

In `@python/src/nemo_fabric/streaming.py`:
- Around line 248-276: Update the ATOF listener initialization and startup flow
around the host configuration and endpoint binding to reject non-loopback hosts
unless an authenticated, encrypted transport is explicitly configured. Ensure
/atof is never exposed over cleartext HTTP on 0.0.0.0 or other reachable
addresses; preserve loopback operation and fail clearly before accepting
connections when the security requirement is unmet.

In `@scripts/generate_api_docs.sh`:
- Around line 103-107: Update the substitution in the generated-page loop to
normalize “NVIDIA NeMo Relay” only in prose, while leaving fenced code blocks,
API/package names, literals, command flags, and link destinations unchanged.
Preserve the first-prose-occurrence behavior per file and avoid rewriting
occurrences in non-prose Markdown contexts.

In `@skills/integrations/consumer/nemo-fabric-integrate/SKILL.md`:
- Around line 47-48: Update the nemo-fabric installation command in the
integration instructions to quote the package extra, using the same quoting
style as the existing hermes command; preserve the runtime extra and surrounding
installation guidance.

In `@tests/python/test_sdk_contract.py`:
- Around line 327-329: Update the assertions around sink headers and header_env
in the test to explicitly verify the intended wire shape for empty fields,
distinguishing omitted fields from fields serialized as {}. Use direct
dictionary indexing for fields that must be present, while retaining get only
when absence is the expected contract; keep the RelayAtofConfig round-trip
assertion unchanged.

In `@tests/python/test_streaming.py`:
- Around line 549-550: Bound every polling loop in test_streaming.py, including
the loop around listener._active_atof_connections and the listed locations, with
a finite timeout using a shared deadline-based helper or asyncio.wait_for.
Preserve the existing state-wait behavior while ensuring stalled listener state
changes fail promptly instead of hanging CI, and resolve the corresponding Ruff
ASYNC110 findings.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 4f661537-5fb6-4cf0-8fe0-dfa012216368

📥 Commits

Reviewing files that changed from the base of the PR and between abf2be5 and c0ac54c.

📒 Files selected for processing (58)
  • adapters/README.md
  • adapters/deepagents/src/nemo_fabric_adapters/deepagents/adapter.py
  • crates/fabric-core/src/config.rs
  • crates/fabric-python/src/lib.rs
  • docs/reference/api/python-library-reference/index.md
  • docs/reference/api/python-library-reference/nemo_fabric.client.md
  • docs/reference/api/python-library-reference/nemo_fabric.errors.md
  • docs/reference/api/python-library-reference/nemo_fabric.models.md
  • docs/reference/api/python-library-reference/nemo_fabric.runtime.md
  • docs/reference/api/python-library-reference/nemo_fabric.types.md
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterdescriptorsource.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-capabilitytarget.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-controllocation.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-environmentownership.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-mcpexposure.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/fn-resolve-run-plan-from-config.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterconfigsupport.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-capabilityplan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentconfig.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentplan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-mcpserverconfig.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-resolvecontext.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runplan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/doctor/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/error/type-result.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/enum-errorstage.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/fn-run-plan.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/index.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-adapterinvocation.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-environmenthandle.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-errorinfo.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-fabricevent.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runrequest.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runresult.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimehandle.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimetelemetrycontext.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/schema/enum-schemaname.mdx
  • docs/reference/api/rust-library-reference/nemo-fabric-core/schema/index.mdx
  • docs/sdk/python.mdx
  • examples/harbor/prepare_swebench.sh
  • python/src/nemo_fabric/client.py
  • python/src/nemo_fabric/integrations/harbor/fabric_agent.py
  • python/src/nemo_fabric/models.py
  • python/src/nemo_fabric/runtime.py
  • python/src/nemo_fabric/streaming.py
  • python/src/nemo_fabric/types.py
  • schemas/agent.schema.json
  • schemas/run-plan.schema.json
  • scripts/generate_api_docs.sh
  • skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
  • tests/python/test_sdk_contract.py
  • tests/python/test_streaming.py

@dagardner-nv

Copy link
Copy Markdown
Collaborator

/merge

@rapids-bot
rapids-bot Bot merged commit fcc4ffa into release/0.1 Jul 27, 2026
31 checks passed
rapids-bot Bot pushed a commit that referenced this pull request Jul 28, 2026
#### Overview

Follow up on the `::r` documentation style review of #112 by clarifying the NeMo Relay streaming lifecycle guidance in the consumer integration skill.

##### Details

- Split a semicolon-linked statement into shorter sentences.
- Split a 31-word correlation sentence into three direct sentences.
- Preserve the terminology and behavior documented by #112.
- Leave generated API references unchanged.

##### Validation

- `git diff --check`
- `uvx --from rust-just just docs` (passes with the existing Fern warning for the generated Python API index and skipped redirects check)

##### Breaking changes

None.

#### Where should the reviewer start?

Review `skills/integrations/consumer/nemo-fabric-integrate/SKILL.md`, especially the NeMo Relay streaming lifecycle bullet.

#### Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

- Relates to #112

- [x] I confirm this contribution is my own work, or I have the right to submit it under this project's license.
- [x] I searched existing issues and open pull requests, and this does not duplicate existing work.



## Summary by CodeRabbit

- **Documentation**
  - Clarified NeMo Relay “Choose A Lifecycle” streaming behavior, including how listener output is limited to the matched scope tree.
  - Explained record correlation differences between in-process harnesses and gateway harnesses.
  - Reworded the lifecycle guidance around ATOF record/queue limits and confirmed that earlier-turn records are not carried over.

Authors:
  - Lawrence Lane (https://github.com/lbliii)
  - Zhongxuan (Daniel) Wang (https://github.com/zhongxuanwang-nv)

Approvers:
  - Zhongxuan (Daniel) Wang (https://github.com/zhongxuanwang-nv)

URL: #132
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants