fix: repair documented workflows and API references#115
fix: repair documented workflows and API references#115zhongxuanwang-nv wants to merge 4 commits into
Conversation
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
WalkthroughThe PR adds checkout-aware Rust scaffold dependencies and workspace manifests, introduces runtime-driven Python API reference enhancement and validation, updates generated API documentation, and revises CLI, SDK, installation, and Codex guidance. ChangesRust scaffold checkout integration
Python API reference generation
Documentation guidance updates
Estimated code review effort: 4 (Complex) | ~45 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
Fern docs preview: https://nvidia-preview-pull-request-115.docs.buildwithfern.com/nemo/fabric |
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 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 `@crates/fabric-cli/src/scaffold.rs`:
- Around line 114-129: Extract the dependency-resolution logic from
rust_core_dependency into a path-parameterized resolver, preserving the existing
local-path and version-only fallbacks when Cargo.toml is missing,
canonicalization fails, or the path is not valid UTF-8. Add tests covering both
a valid local core path producing the path-and-version manifest form and an
unavailable/invalid path producing the version-only form, while keeping
rust_core_dependency wired to the repository’s existing path.
In `@docs/reference/api/python-library-reference/nemo_fabric.client.md`:
- Line 4: Update the first user-facing description in
docs/reference/api/python-library-reference/nemo_fabric.client.md:4 and
docs/reference/api/python-library-reference/nemo_fabric.models.md:4 to use the
full product name “NVIDIA NeMo Fabric” instead of “NeMo Fabric”; no other
content changes are needed.
In `@docs/sdk/python.mdx`:
- Line 251: Update the Fabric.doctor entry in the API table to show base_dir as
a keyword-only argument, matching the method signature that places it after *.
Preserve the existing diagnostics description and call shape otherwise.
In `@tests/docs/test_python_api_docs.py`:
- Around line 162-182: Strengthen the signature assertions in the
rendered-signature loop by normalizing each member’s inspect.signature result
and comparing the complete expected signature against rendered, including
parameter names, annotations, defaults, return type, and all parameters. Keep
the existing async and keyword-only checks, and ensure the test covers every
exported member represented by rendered_signatures.
In `@tests/e2e/test_cli_scaffold.py`:
- Around line 70-74: Update the dependency version assertion in the scaffold
test to read crates/fabric-cli/Cargo.toml with tomllib and derive the expected
version from its [package].version, then compare core_dependency["version"]
against that value instead of hardcoding "0.1.0". Keep the existing manifest,
dependency path, and workspace assertions unchanged.
🪄 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: 8a8cd89f-319d-4295-aafb-57ab7d0441a4
⛔ Files ignored due to path filters (1)
uv.lockis excluded by!**/*.lock
📒 Files selected for processing (99)
crates/fabric-cli/src/scaffold.rscrates/fabric-cli/templates/rust/Cargo.toml.tmpldocs/experimentation/cli.mdxdocs/getting-started/install.mdxdocs/integrations/codex.mdxdocs/reference/api/python-library-reference/nemo_fabric.client.mddocs/reference/api/python-library-reference/nemo_fabric.errors.mddocs/reference/api/python-library-reference/nemo_fabric.models.mddocs/reference/api/python-library-reference/nemo_fabric.runtime.mddocs/reference/api/python-library-reference/nemo_fabric.types.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/constant-adapter-contract-version.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterdescriptorsource.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-adapterkind.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-capabilitykind.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-capabilitytarget.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-controllocation.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-environmentownership.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-mcpexposure.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-relayatifstorageconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-relayatofendpointfieldnamepolicy.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-relayatofendpointtransport.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-relayatofmode.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-relayotlptransport.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-relayunsupportedbehavior.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-resolutionstrategy.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/enum-telemetryprovider.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/fn-load-adapter-descriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterconfigsupport.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterrequirements.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adaptertelemetryprovidersupport.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adaptertelemetrysupport.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-capabilityplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-capabilityroute.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-capabilitytargetplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-environmentplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-fabricconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-harnessconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-mcpconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-mcpserverconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-mcpserverplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-metadataconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-modelconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relayatifconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relayatofconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relayatofendpointconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relaycomponentconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relayconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relayconfigpolicy.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relayobservabilityconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-relayotlpconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-resolvecontext.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-resolvedadapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runtimecapabilities.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-runtimeconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-skillconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-telemetryconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-telemetryplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-telemetryproviderconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-toolsconfig.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-toolsplan.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/doctor/enum-doctorstatus.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/doctor/struct-doctorcheck.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/doctor/struct-doctorreport.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/type-result.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/fn-version.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/enum-errorstage.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/enum-runstatus.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/fn-stop-runtime.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-adapterinvocation.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-artifactmanifest.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-artifactref.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-environmenthandle.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-errorinfo.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-fabricevent.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-invocationhandle.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runrequest.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runresult.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimecontext.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimehandle.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-runtimetelemetrycontext.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/runtime/struct-telemetryref.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/schema/enum-schemaname.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/schema/fn-generate-all-schemas.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/schema/fn-generate-schema-json.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/schema/fn-write-schema-snapshots.mdxdocs/sdk/python.mdxpyproject.tomlpython/src/nemo_fabric/types.pyscripts/docs/enhance_python_api_reference.pyscripts/docs/generate_rust_library_reference.pyscripts/generate_api_docs.shskills/nemo-fabric-integrate/references/sdk-api-inventory.mdtests/docs/test_python_api_docs.pytests/docs/test_rust_library_reference.pytests/e2e/test_cli_scaffold.py
| fn rust_core_dependency() -> String { | ||
| rust_string(env!("CARGO_PKG_VERSION")) | ||
| let version = rust_string(env!("CARGO_PKG_VERSION")); | ||
| let source_path = Path::new(env!("CARGO_MANIFEST_DIR")).join("../fabric-core"); | ||
| if !source_path.join("Cargo.toml").is_file() { | ||
| return version; | ||
| } | ||
| let Ok(source_path) = source_path.canonicalize() else { | ||
| return version; | ||
| }; | ||
| let Some(source_path) = source_path.to_str() else { | ||
| return version; | ||
| }; | ||
| format!( | ||
| "{{ path = {}, version = {version} }}", | ||
| rust_string(source_path) | ||
| ) |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Cover the version-only dependency fallback.
Every supplied test runs from a checkout with ../fabric-core, so regressions in the missing-path or canonicalization fallback are untested. Extract the resolver behind a path parameter and assert both local-path and version-only manifest forms.
As per path instructions, tests should cover behavior promised by the changed API surface.
🤖 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-cli/src/scaffold.rs` around lines 114 - 129, Extract the
dependency-resolution logic from rust_core_dependency into a path-parameterized
resolver, preserving the existing local-path and version-only fallbacks when
Cargo.toml is missing, canonicalization fails, or the path is not valid UTF-8.
Add tests covering both a valid local core path producing the path-and-version
manifest form and an unavailable/invalid path producing the version-only form,
while keeping rust_core_dependency wired to the repository’s existing path.
Source: Path instructions
| title: "Client" | ||
| slug: "/reference/api/python-library-reference/client" | ||
| description: "Resolve, plan, diagnose, and run agents with Fabric." | ||
| description: "Resolve, plan, diagnose, and run agents with NeMo Fabric." |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use the full product name on first mention.
docs/reference/api/python-library-reference/nemo_fabric.client.md#L4-L4: GenerateNVIDIA NeMo Fabricfor the first user-facing mention.docs/reference/api/python-library-reference/nemo_fabric.models.md#L4-L4: GenerateNVIDIA NeMo Fabricfor the first user-facing mention.
As per coding guidelines, use the full product name NVIDIA NeMo Fabric on first use.
📍 Affects 2 files
docs/reference/api/python-library-reference/nemo_fabric.client.md#L4-L4(this comment)docs/reference/api/python-library-reference/nemo_fabric.models.md#L4-L4
🤖 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/python-library-reference/nemo_fabric.client.md` at line 4,
Update the first user-facing description in
docs/reference/api/python-library-reference/nemo_fabric.client.md:4 and
docs/reference/api/python-library-reference/nemo_fabric.models.md:4 to use the
full product name “NVIDIA NeMo Fabric” instead of “NeMo Fabric”; no other
content changes are needed.
Sources: Coding guidelines, Path instructions
| | --- | --- | --- | --- | | ||
| | `Fabric.plan(config, base_dir=...)` | No | You need to inspect the selected adapter, capability mapping, and runtime capabilities before running. | Does not start a runtime. | | ||
| | `Fabric.doctor(config, base_dir=...)` | Yes | You need preflight diagnostics for adapter availability, config support, and environment assumptions. | Checks may touch runtime dependencies. | | ||
| | `Fabric.doctor(config, base_dir=...)` | Yes | You need preflight diagnostics for adapter resolution, capability routing, declared requirements, and environment assumptions. | Checks may inspect local binaries, environment variables, and files without starting a runtime. | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Document base_dir as keyword-only.
Fabric.doctor requires base_dir after *; this table currently advertises a positional call shape.
Proposed fix
-| `Fabric.doctor(config, base_dir=...)` | Yes | You need preflight diagnostics for adapter resolution, capability routing, declared requirements, and environment assumptions. | Checks may inspect local binaries, environment variables, and files without starting a runtime. |
+| `Fabric.doctor(config, *, base_dir=...)` | Yes | You need preflight diagnostics for adapter resolution, capability routing, declared requirements, and environment assumptions. | Checks may inspect local binaries, environment variables, and files without starting a runtime. |As per path instructions, documentation must be accurate against the current API.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| | `Fabric.doctor(config, base_dir=...)` | Yes | You need preflight diagnostics for adapter resolution, capability routing, declared requirements, and environment assumptions. | Checks may inspect local binaries, environment variables, and files without starting a runtime. | | |
| | `Fabric.doctor(config, *, base_dir=...)` | Yes | You need preflight diagnostics for adapter resolution, capability routing, declared requirements, and environment assumptions. | Checks may inspect local binaries, environment variables, and files without starting a 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 `@docs/sdk/python.mdx` at line 251, Update the Fabric.doctor entry in the API
table to show base_dir as a keyword-only argument, matching the method signature
that places it after *. Preserve the existing diagnostics description and call
shape otherwise.
Sources: Coding guidelines, Path instructions
| for match in rendered_signatures: | ||
| member_name, rendered = match.groups() | ||
| member = getattr(exported_class, member_name) | ||
| member_signature = signature(member) | ||
| signature_count += 1 | ||
| assert "→" not in rendered | ||
|
|
||
| is_async = iscoroutinefunction(member) | ||
| async_count += is_async | ||
| assert rendered.startswith("async ") is is_async | ||
|
|
||
| has_keyword_only = any( | ||
| parameter.kind is Parameter.KEYWORD_ONLY | ||
| for parameter in member_signature.parameters.values() | ||
| ) | ||
| has_var_positional = any( | ||
| parameter.kind is Parameter.VAR_POSITIONAL | ||
| for parameter in member_signature.parameters.values() | ||
| ) | ||
| if has_keyword_only and not has_var_positional: | ||
| assert re.search(r"(?:\(\*,|, \*,|\n \*,)", rendered) |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
Assert the complete rendered signature contract.
This only checks async status and whether * exists. Wrong parameter names, annotations, defaults, return types, or missing parameters still pass. Build an independent expected normalized signature from inspect.signature() and compare it to rendered.
As per path instructions, tests must cover the behavior promised by the changed API surface.
🤖 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/docs/test_python_api_docs.py` around lines 162 - 182, Strengthen the
signature assertions in the rendered-signature loop by normalizing each member’s
inspect.signature result and comparing the complete expected signature against
rendered, including parameter names, annotations, defaults, return type, and all
parameters. Keep the existing async and keyword-only checks, and ensure the test
covers every exported member represented by rendered_signatures.
Sources: Coding guidelines, Path instructions
| manifest = (destination / "Cargo.toml").read_text() | ||
| assert "[workspace]" in manifest | ||
| core_dependency = tomllib.loads(manifest)["dependencies"]["nemo-fabric-core"] | ||
| assert Path(core_dependency["path"]) == ROOT / "crates/fabric-core" | ||
| assert core_dependency["version"] == "0.1.0" |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
Derive the expected dependency version dynamically.
The scaffold uses the CLI package’s CARGO_PKG_VERSION, but this assertion pins 0.1.0. Future version bumps can leave generation correct while making this test fail. Read crates/fabric-cli/Cargo.toml and compare against its [package].version.
🤖 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/e2e/test_cli_scaffold.py` around lines 70 - 74, Update the dependency
version assertion in the scaffold test to read crates/fabric-cli/Cargo.toml with
tomllib and derive the expected version from its [package].version, then compare
core_dependency["version"] against that value instead of hardcoding "0.1.0".
Keep the existing manifest, dependency path, and workspace assertions unchanged.
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
…tions Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/reference/api/python-library-reference/nemo_fabric.models.md (1)
773-774: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winFix heading spacing in the generator. Both generated headings violate MD022 because their descriptions begin immediately after the
##heading. Update the generator and regenerate the reference page.
docs/reference/api/python-library-reference/nemo_fabric.models.md#L773-L774: insert a blank line afterRelayAtofFileSinkConfig.docs/reference/api/python-library-reference/nemo_fabric.models.md#L845-L846: insert a blank line afterRelayAtofStreamSinkConfig.As per coding guidelines, files under
docs/reference/api/**are generated output and must not be modified 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/python-library-reference/nemo_fabric.models.md` around lines 773 - 774, Update the documentation generator responsible for RelayAtofFileSinkConfig and RelayAtofStreamSinkConfig headings to emit a blank line between each heading and its description, then regenerate docs/reference/api/python-library-reference/nemo_fabric.models.md so both affected sections at lines 773-774 and 845-846 are corrected; do not edit the generated file directly.Sources: Coding guidelines, Linters/SAST tools
🤖 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 `@docs/reference/api/python-library-reference/nemo_fabric.models.md`:
- Around line 773-774: Update the documentation generator responsible for
RelayAtofFileSinkConfig and RelayAtofStreamSinkConfig headings to emit a blank
line between each heading and its description, then regenerate
docs/reference/api/python-library-reference/nemo_fabric.models.md so both
affected sections at lines 773-774 and 845-846 are corrected; do not edit the
generated file directly.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Enterprise
Run ID: dcb4f0e8-9bb1-40fd-9f3d-a5c38d34480b
📒 Files selected for processing (2)
docs/reference/api/python-library-reference/nemo_fabric.models.mddocs/sdk/python.mdx
📜 Review details
⏰ Context from checks skipped due to timeout. (6)
- GitHub Check: Preview docs
- GitHub Check: Test (Python 3.12, windows-amd64)
- GitHub Check: Test (Python 3.14, windows-amd64)
- GitHub Check: Test (Python 3.13, windows-amd64)
- GitHub Check: Test (Python 3.11, windows-amd64)
- GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (16)
{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/sdk/python.mdxdocs/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/sdk/python.mdxdocs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.mdx
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
In MDX files, use JSX comment delimiters (
{/*and*/}) for top-of-file comments, including SPDX headers; do not use HTML comments.Use
{/* ... */}delimiters for top-of-file MDX SPDX comments, not HTML comment delimiters.
**/*.mdx: For documentation-site changes, runjust docsto regenerate Python and Rust API references and validate Fern configuration.
MDX files must use the specified JSX-comment SPDX header format.
Files:
docs/sdk/python.mdx
docs/**/*.{md,mdx,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Run
just docswhen the documentation site changes.
Files:
docs/sdk/python.mdxdocs/reference/api/python-library-reference/nemo_fabric.models.md
**/*
📄 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 spellNVIDIAin all caps; do not useNvidia,nvidia,nVidia,nVIDIA, orNV.
Usean NVIDIAbefore a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol afterNVIDIAwhen 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 withNVIDIAon 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:
docs/sdk/python.mdxdocs/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 spellNVIDIAin all caps; do not useNvidia,nvidia, orNV.
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 ashereorread 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.
Usecanfor possibility and reservemayfor permission.
Useafterfor temporal relationships instead ofonce, and preferrefer tooverseewhen 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/sdk/python.mdxdocs/reference/api/python-library-reference/nemo_fabric.models.md
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Update Fern documentation under
docs/when public behavior, thenemo-fabricpackage, examples, or supported bindings change.
Files:
docs/sdk/python.mdxdocs/reference/api/python-library-reference/nemo_fabric.models.md
docs/sdk/python.mdx
📄 CodeRabbit inference engine (AGENTS.md)
Keep
docs/sdk/python.mdxcurrent when the public Python API changes.
Files:
docs/sdk/python.mdx
**/*.{md,mdx}
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
**/*.{md,mdx}: Use the full product nameNVIDIA NeMo Fabricon its first usage, typically in the title or H1; useNeMo Fabricthereafter.
Usefabricby itself only when referring to the CLI tool, and surround those references with backticks.
CapitalizeNVIDIAcorrectly 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 ashere.
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.
Useafterinstead ofoncewhen expressing temporal sequence.
Usecaninstead ofmaywhen 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.Update corresponding documentation when public behavior, adapters, examples, or workspace structure changes.
Files:
docs/sdk/python.mdxdocs/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/sdk/python.mdxdocs/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 lowercasefabricCLI command, package/import/crate names, code identifiers, API symbols, configuration keys, file paths, or unrelated generic uses of the word.
Files:
docs/sdk/python.mdxdocs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.{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.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.
Usecanfor possibility and reservemayfor permission; useafterfor temporal order; userefer tofor cross-references; prefer short direct sentences and specific verbs; avoid unnecessarypleasein 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: usefor exampleorsuch asinstead ofe.g.,and so oninstead ofetc.,that isinstead ofi.e.,compared toinstead ofvs., andby,through, orusinginstead ofvia. Use industry-standard terms such as in silico, in vitro, and in vivo when appropriate, and italicize them in running text.
Usethatwithout commas for essential clauses, andwhichwith commas for nonessential clauses.
Format dates and times clearly: spell out months in body text; use forms such asJune 12, 2025; avoid numeric or ordinal dates; capitalize days; use 12-hour time when appropriate; include a space beforea.m.orp.m.; useETandPTfor needed time zones; avoid24/7; and preferfrom 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.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.models.md
**/*.md
📄 CodeRabbit inference engine (CONTRIBUTING.md)
HTML/Markdown source files must use the specified HTML-comment SPDX header format.
Files:
docs/reference/api/python-library-reference/nemo_fabric.models.md
**/*.{py,toml,lock,json,md,yml,yaml}
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
Keep package wiring, descriptors, dependencies, installation, catalogs, CI enumerations, documentation, examples, fixtures, and generated artifacts consistent with the adapter implementation.
Files:
docs/reference/api/python-library-reference/nemo_fabric.models.md
🪛 markdownlint-cli2 (0.23.0)
docs/reference/api/python-library-reference/nemo_fabric.models.md
[warning] 773-773: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 845-845: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🔇 Additional comments (2)
docs/sdk/python.mdx (1)
215-246: LGTM!docs/reference/api/python-library-reference/nemo_fabric.models.md (1)
56-73: LGTM!Also applies to: 84-92, 650-663, 784-789, 822-839, 850-864, 898-915, 933-933, 1307-1312, 1629-1635, 1851-1864, 1919-1928
Overview
Correct verified documentation-audit failures in the generated Python API reference and executable workflows.
async, keyword-only markers, return types, model fields, constraints, enum values, and error inheritance.justsyntax, standalone Codex snippets, doctor behavior, and metadata semantics.There are no breaking changes. The Rust reference generator and generated Rust reference pages are intentionally unchanged, and notebooks were excluded from this audit.
Details
The generated Python reference was regenerated from the checked-in public code after correcting its postprocessor. Regression tests compare the rendered contracts directly to Python reflection.
The Rust scaffold now uses an absolute path plus the matching package version when the CLI is built in a source checkout; packaged CLI builds retain the version-only dependency. An empty
[workspace]keeps an in-repository generated scaffold independent of the parent workspace.Existing issues and open pull requests were searched before publishing. Harbor Relay and release/quickstart work covered elsewhere were left untouched.
Validation
just build-python— rebuilt the native extension after merging currentmain.just test-python— 418 passed, 44 skipped.just test-rust— all 41 Rust unit and documentation tests passed, including an offline build of the generated scaffold.uv run --no-sync pytest tests/docs/test_python_api_docs.py tests/e2e/test_cli_scaffold.py -q— 11 passed.just docs— Fern reported 0 errors; the only warning was the expected unauthenticated redirect check. Rust reference output from the local moving toolchain was discarded and is not part of this PR.cargo fmt --all -- --check, Ruff check/format,just --fmt --check, andgit diff --checkpassed.Where should the reviewer start?
Start with
scripts/docs/enhance_python_api_reference.pyfor the Python reference-contract fixes, then reviewcrates/fabric-cli/src/scaffold.rsand its Rust/Python regression tests for the source-checkout scaffold decision.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
New Features
Documentation
Bug Fixes