feat: validate adapter harness settings - #149
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughAdapter descriptors now support JSON Schema validation for ChangesAdapter settings validation
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant Caller
participant FabricPlan
participant AdapterDescriptor
participant SettingsValidator
participant Runtime
Caller->>FabricPlan: plan configuration
FabricPlan->>AdapterDescriptor: resolve winning descriptor
AdapterDescriptor-->>FabricPlan: runner metadata and settings_schema
FabricPlan->>SettingsValidator: validate harness.settings
SettingsValidator-->>FabricPlan: preserve settings or return InvalidHarnessSettings
Caller->>Runtime: start_runtime(plan)
Runtime->>SettingsValidator: revalidate harness.settings
SettingsValidator-->>Runtime: validated settings or startup error
Possibly related PRs
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Fern docs preview: https://nvidia-preview-pull-request-149.docs.buildwithfern.com/nemo/fabric |
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
examples/notebooks/02_variations.ipynb (1)
287-304: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winHandle planning failures per harness.
blocker()does not validate descriptor discovery or settings. Afabric.plan(...)failure currently escapes the inner handler and stops all remaining variants, unlike runtime failures. Catch and record planning errors in the same per-harness 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 `@examples/notebooks/02_variations.ipynb` around lines 287 - 304, The per-harness flow currently leaves failures from fabric.plan outside the exception handler. Extend the handler around the planning steps in the harness loop, including for_harness, fabric.plan, and dependent plan configuration access, so planning exceptions are reported and appended to run_failures with the harness name, then processing continues with remaining variants; preserve the existing runtime failure handling.
🤖 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 `@tests/e2e/test_claude.py`:
- Around line 35-37: Update the _use_current_python_for_adapter_discovery
fixture declaration to remove the unused restore_environ parameter and declare
the fixture using the required named-fixture convention, while retaining autouse
behavior and the ADAPTER_PYTHON assignment.
In `@tests/python/test_installed_adapter_discovery.py`:
- Around line 122-139: Update the subprocess calls in the installed adapter
discovery test to resolve the uv executable via shutil.which() instead of
relying on PATH lookup, and add narrowly scoped # noqa: S603 suppressions to
those fixed-input invocations with a repository-controlled-input rationale.
Preserve the existing build and install arguments and behavior.
In `@tests/python/test_notebook_examples.py`:
- Around line 122-161: Add a runnable-harness test alongside
test_variations_notebook_skips_blocked_harness_before_planning that sets an
existing ADAPTER_PYTHON value, captures the environment observed by fabric.plan,
and verifies the value is set appropriately before planning. After notebook
execution, assert the original environment value is restored, while preserving
the existing assertions for planning and execution behavior.
---
Outside diff comments:
In `@examples/notebooks/02_variations.ipynb`:
- Around line 287-304: The per-harness flow currently leaves failures from
fabric.plan outside the exception handler. Extend the handler around the
planning steps in the harness loop, including for_harness, fabric.plan, and
dependent plan configuration access, so planning exceptions are reported and
appended to run_failures with the harness name, then processing continues with
remaining variants; preserve the existing runtime failure handling.
🪄 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: ed6c9cc2-92f5-465c-ba3e-19157f6effc9
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (45)
ATTRIBUTIONS-Rust.mdCargo.tomlREADME.mdadapters/README.mdadapters/claude/README.mdadapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/codex/README.mdadapters/deepagents/README.mdadapters/hermes/README.mdcrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsoncrates/fabric-cli/src/presets.rscrates/fabric-core/Cargo.tomlcrates/fabric-core/src/config.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/schema.rscrates/fabric-python/src/lib.rsdocs/integrations/harness/claude.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/sdk/python.mdxexamples/code_review_agent/config.pyexamples/harbor/README.mdexamples/harbor/calculator/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonexamples/notebooks/01_quickstart.ipynbexamples/notebooks/02_variations.ipynbpython/src/nemo_fabric/integrations/harbor/fabric_agent.pyschemas/SCHEMA.mdschemas/adapter-descriptor.schema.jsonschemas/run-plan.schema.jsonskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdtests/adapters/test_claude_adapter.pytests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/integrations/test_harbor_runner.pytests/python/test_harness_settings_validation.pytests/python/test_installed_adapter_discovery.pytests/python/test_notebook_examples.py
💤 Files with no reviewable changes (2)
- python/src/nemo_fabric/integrations/harbor/fabric_agent.py
- examples/harbor/calculator/README.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (57)
**/*.rs
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Implement new runtime or binding behavior in the shared Rust core first.
**/*.rs: Format Rust code withcargo fmt --all; Rust formatting checks must pass withcargo fmt --all -- --check.
Rust workspace changes must passcargo check --workspace --locked.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rs
**/*.{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:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonschemas/adapter-descriptor.schema.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pyadapters/claude/fabric-adapter.jsoncrates/fabric-core/src/runtime.rsschemas/run-plan.schema.jsontests/e2e/test_claude.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.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 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:
crates/fabric-core/src/schema.rsadapters/hermes/README.mdREADME.mdexamples/harbor/README.mdtests/adapters/test_codex_adapter.pycrates/fabric-core/Cargo.tomldocs/integrations/harness/hermes.mdxadapters/codex/README.mdtests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsonCargo.tomlcrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/notebooks/01_quickstart.ipynbskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsondocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxschemas/adapter-descriptor.schema.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdtests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pyadapters/README.mdadapters/claude/fabric-adapter.jsondocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxcrates/fabric-core/src/runtime.rsschemas/run-plan.schema.jsontests/e2e/test_claude.pycrates/fabric-cli/src/presets.rsschemas/SCHEMA.mddocs/sdk/python.mdxcrates/fabric-core/src/error.rsdocs/integrations/harness/codex.mdxtests/python/test_notebook_examples.pyadapters/deepagents/README.mdtests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pyexamples/notebooks/02_variations.ipynbcrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.pyATTRIBUTIONS-Rust.md
**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For any Rust change, run
just test-rustandcargo 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.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/Cargo.tomlCargo.tomlcrates/fabric-core/src/runtime.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rs
**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For native binding changes, run
cargo check -p fabric-python --locked.
**/*.{rs,py}: When changing the Rust core or public schemas, run both the Rust and Python test suites.
When adding functionality, include tests in the corresponding Rust crate or the relevant area undertests/.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pycrates/fabric-core/src/runtime.rstests/e2e/test_claude.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.py
crates/fabric-core/**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Changes under
crates/fabric-coremust run both the Rust and Python test suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.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-corechanges in a way exposed through Python, run both the Rust and Python suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/*.{rs,rmeta}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Rust code changes, run
cargo fmt --all -- --checkandjust test-rust.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rs
**/*.{rs,py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests injust test-rustpass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes underschemas/and generated API references.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pycrates/fabric-core/src/runtime.rstests/e2e/test_claude.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.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, thenjust test-python; rebuild withjust build-pythonwhen native code or packaging changes.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pycrates/fabric-core/src/runtime.rstests/e2e/test_claude.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.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 inpython/pyproject.toml.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-core/Cargo.tomlCargo.tomladapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pycrates/fabric-core/src/runtime.rstests/e2e/test_claude.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.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:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-core/Cargo.tomlCargo.tomladapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pycrates/fabric-core/src/runtime.rstests/e2e/test_claude.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.py
**/*.{rs,py,html,md,mdx,toml,yml,yaml,sh,bash}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
All Rust, Python, HTML, Markdown, MDX, TOML, YAML, and shell source files must include the project SPDX copyright and Apache-2.0 license headers using the comment syntax appropriate to each file type.
Files:
crates/fabric-core/src/schema.rsadapters/hermes/README.mdREADME.mdexamples/harbor/README.mdtests/adapters/test_codex_adapter.pycrates/fabric-core/Cargo.tomldocs/integrations/harness/hermes.mdxadapters/codex/README.mdCargo.tomlskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdtests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pyadapters/README.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxcrates/fabric-core/src/runtime.rstests/e2e/test_claude.pycrates/fabric-cli/src/presets.rsschemas/SCHEMA.mddocs/sdk/python.mdxcrates/fabric-core/src/error.rsdocs/integrations/harness/codex.mdxtests/python/test_notebook_examples.pyadapters/deepagents/README.mdtests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.pyATTRIBUTIONS-Rust.md
**/*.{py,rs}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
**/*.{py,rs}: Keep native Python binding declarations synchronized with their Rust implementations.
Usesnake_casefor functions and variables; usePascalCasefor Rust types and Python classes.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pycrates/fabric-core/src/runtime.rstests/e2e/test_claude.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pycrates/fabric-core/src/config.rscrates/fabric-python/src/lib.rstests/python/test_installed_adapter_discovery.py
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/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/*.{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:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mdadapters/codex/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/README.mdschemas/SCHEMA.mdadapters/deepagents/README.mdATTRIBUTIONS-Rust.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:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mddocs/integrations/harness/hermes.mdxadapters/codex/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/README.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/sdk/python.mdxdocs/integrations/harness/codex.mdxadapters/deepagents/README.mdATTRIBUTIONS-Rust.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:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mdadapters/codex/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/README.mdschemas/SCHEMA.mdadapters/deepagents/README.mdATTRIBUTIONS-Rust.md
adapters/*/README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update adapter README files when public behavior, examples, or supported bindings change.
Files:
adapters/hermes/README.mdadapters/codex/README.mdadapters/claude/README.mdadapters/deepagents/README.md
**/README.md
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update relevant package, crate, adapter, and integration README files when public behavior or entry-point documentation changes.
Files:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mdadapters/codex/README.mdadapters/claude/README.mdadapters/README.mdadapters/deepagents/README.md
**/*.{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.For docs site changes, run
just docsto regenerate Python and Rust API references and validate the Fern configuration.
Files:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mddocs/integrations/harness/hermes.mdxadapters/codex/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/README.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/sdk/python.mdxdocs/integrations/harness/codex.mdxadapters/deepagents/README.mdATTRIBUTIONS-Rust.md
**/{README.md,*.md,*.mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Update relevant documentation when changes affect public behavior, adapters, examples, or workspace structure.
Files:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mddocs/integrations/harness/hermes.mdxadapters/codex/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/README.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/sdk/python.mdxdocs/integrations/harness/codex.mdxadapters/deepagents/README.mdATTRIBUTIONS-Rust.md
**/*.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
Documentation and examples must be updated consistently with changes to public behavior and reviewed for NVIDIA technical-writing style.
Files:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mdadapters/codex/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/README.mdschemas/SCHEMA.mdadapters/deepagents/README.mdATTRIBUTIONS-Rust.md
{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/hermes/README.mdexamples/harbor/README.mdadapters/codex/README.mdexamples/notebooks/01_quickstart.ipynbadapters/claude/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyexamples/code_review_agent/config.pyadapters/README.mdadapters/claude/fabric-adapter.jsonadapters/deepagents/README.mdexamples/notebooks/02_variations.ipynb
{*.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:
adapters/hermes/README.mdREADME.mdexamples/harbor/README.mddocs/integrations/harness/hermes.mdxadapters/codex/README.mdexamples/notebooks/01_quickstart.ipynbskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/claude/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/README.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/sdk/python.mdxdocs/integrations/harness/codex.mdxadapters/deepagents/README.mdexamples/notebooks/02_variations.ipynbATTRIBUTIONS-Rust.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:
README.mdexamples/harbor/README.mddocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdx
{README.md,docs/index.yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update
README.mdordocs/index.ymlwhen documentation entry points or example reading paths change.
Files:
README.md
README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update the root
README.mdwhen public behavior, thenemo-fabricpackage, examples, or supported bindings change.Update the top-level
README.mdwhen changed behavior affects an entry point users would naturally consult.
Files:
README.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.
For links between files under docs/, require paths relative to the source file with the target file's .mdx extension so they work in both Fern builds and repository browsers. Flag Fern site-root links such as NeMo Fabric overview; use the repository-relative equivalent, such as NeMo Fabric overview.
Files:
README.mddocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdx
{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:
examples/harbor/README.mddocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdx
**/*.{py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Python code or a Python-facing adapter changes, run
just test-python.
Files:
tests/adapters/test_codex_adapter.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.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 undertests/adapters, then runjust test-python.
Files:
tests/adapters/test_codex_adapter.pytests/adapters/test_claude_adapter.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.asyncioto tests; async tests are automatically detected and run by the async runner.
Do not add-> Nonereturn type annotations to test functions.
When mocking a class, useunittest.mock.MagicMockorunittest.mock.AsyncMock, using thespecargument when necessary, rather than defining a new class.
Prefix mocked class names withmock, notfake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files inconftest.py.
Define fixtures using@pytest.fixture(name="<fixture_name>"[, scope="<scope>"])and a function named<fixture_name>_fixture; specifyscopeonly when it is notfunction.
Preferpytest.mark.parametrizeover separate tests for different input types.
Use@pytest.mark.usefixtureswhen a fixture is needed but its return value is unused or it does not return a value.
Use the autouserestore_environ_fixturefromtests/conftest.pyto restore environment variables; modify variables withos.environand do not usemonkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as usingresults["data"]instead ofresults.get("data").
Files:
tests/adapters/test_codex_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.py
**/*.py
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Use type annotations for public Python APIs.
Files:
tests/adapters/test_codex_adapter.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/python/test_harness_settings_validation.pyexamples/code_review_agent/config.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.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_codex_adapter.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/integrations/test_harbor_runner.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.py
**/{Cargo.toml,Cargo.lock,pyproject.toml,package.json}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For new or updated dependencies, document the functional need, alternatives considered, and why the selected dependency is the narrowest fit.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If a manifest or lockfile changes, run the license-diff script against
origin/main, review transitive license changes, and run theattributions-rustandattributions-pythonpre-commit hooks.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{yml,yaml,toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For CI or packaging changes, use
maintain-ciormaintain-packaging, then run recipes and checks whose behavior changed.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.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.
Files:
docs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdx
docs/**/*.{md,mdx,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Run
just docswhen the documentation site changes.
Files:
docs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdx
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Update Fern documentation under
docs/when public behavior, thenemo-fabricpackage, examples, or supported bindings change.
Files:
docs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdx
**/*.{json,jsonschema}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Public contract changes must keep checked-in JSON Schema snapshots synchronized.
Files:
tests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonschemas/adapter-descriptor.schema.jsonadapters/claude/fabric-adapter.jsonschemas/run-plan.schema.json
{Cargo.toml,python/pyproject.toml,pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Keep Rust workspace/package metadata and Python/maturin package metadata internally consistent, including package names, versions, import paths, and module names.
Files:
Cargo.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}: Keep workspace, Python, and lockfile dependency versions aligned where required, and review both direct and transitive dependency changes from resolved lockfiles.
Inspect resolved transitive licenses, explicitly surface UNKNOWN, non-SPDX/custom, proprietary, source-available, copyleft, or network-copyleft terms, and route unresolved licensing questions to dependency approvers with distribution and linkage context.
Document the functional need, alternatives considered, rationale for the selected dependency, and any unresolved licensing question when introducing dependencies.
Files:
Cargo.toml
{Cargo.toml,pyproject.toml,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Before adding a dependency, prefer the standard library, an existing dependency, or a small local implementation when appropriate; otherwise select a maintained, narrow-fit dependency with clear SPDX metadata and a permissive license where possible.
Files:
Cargo.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
After updating manifests or lockfiles, run
uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/mainand review added packages and license changes.
Files:
Cargo.toml
{pyproject.toml,python/pyproject.toml,Cargo.toml,docs/package.json,.github/workflows/*.yml,justfile}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Reflect public packaging changes in release-facing documentation and ensure CI references the same package names and commands used by local workflows.
Files:
Cargo.toml
Cargo.toml
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
Cargo.toml: UseCargo.toml[workspace.package].versionas the source of truth for Rust workspace and Python build versioning.
KeepCargo.toml[workspace.dependencies].nemo-fabric-core.versionaligned with the workspace version.
Use valid Cargo SemVer in Cargo metadata and equivalent PEP 440 syntax in explicit Python metadata for prerelease or build-metadata versions.
Files:
Cargo.toml
skills/**
📄 CodeRabbit inference engine (AGENTS.md)
skills/**: Keep consumer skills underskills/self-contained and dependent only on supported public Python SDK contracts and published documentation; do not add repository-internal contribution guidance.
Keep consumer skills in parity with the public SDK guide, model, and type details when the Python/Rust binding contract changes.
Files:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.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/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx
schemas/**/*
⚙️ CodeRabbit configuration file
schemas/**/*: Schemas are generated public contract snapshots. Check that schema diffs correspond to intentional Rust type changes and are covered by core tests.
Files:
schemas/adapter-descriptor.schema.jsonschemas/run-plan.schema.jsonschemas/SCHEMA.md
**/SKILL.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
**/SKILL.md: Maintainer skills must begin with YAML frontmatter containing at leastnameanddescription.
Maintainer skills may reference repository internals, build and test commands, and contribution workflows, but external usage guidance must remain in the top-levelskills/directory.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
⚙️ CodeRabbit configuration file
**/SKILL.md: Do not flag SKILL.md files for missing SPDX headers. Skill entrypoints intentionally start with YAML frontmatter instead.
Verify that every SKILL.md keeps valid YAML frontmatter with at least name and description fields before the Markdown body.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
schemas/SCHEMA.md
📄 CodeRabbit inference engine (AGENTS.md)
Keep the JSON Schema notes in
schemas/SCHEMA.mdcurrent when the public API or Python/Rust binding contract changes.
Files:
schemas/SCHEMA.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
crates/fabric-python/**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If the PyO3 bridge or package metadata changes, run
just build-pythonandcargo check -p fabric-python --locked.
Files:
crates/fabric-python/src/lib.rs
crates/fabric-python/**/*
⚙️ CodeRabbit configuration file
crates/fabric-python/**/*: Treat native binding changes as public API changes. Check JSON/type conversion, error propagation, GIL/thread behavior, and parity with the Python SDK.
Files:
crates/fabric-python/src/lib.rs
**/ATTRIBUTIONS-*.md
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Regenerate and include changed
ATTRIBUTIONS-*.mdfiles.
Files:
ATTRIBUTIONS-Rust.md
🧠 Learnings (3)
📚 Learning: 2026-06-29T22:34:52.407Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 27
File: adapters/codex-cli/fabric-adapter.json:13-15
Timestamp: 2026-06-29T22:34:52.407Z
Learning: In NeMo-Fabric adapter manifest files (e.g., `*/fabric-adapter.json`), keep `config.accepts` limited to the top-level Fabric capability sections that `resolve_capability_plan` consumes (such as `models`, `tools`, `mcp`, `skills`, `telemetry`). Do not add adapter-owned `harness.settings` keys to `config.accepts`; `harness.settings` should remain adapter-owned and be passed through unchanged.
Applied to files:
tests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonadapters/claude/fabric-adapter.json
📚 Learning: 2026-07-24T16:07:22.255Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 118
File: docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx:5-5
Timestamp: 2026-07-24T16:07:22.255Z
Learning: In this repo, files generated under `docs/reference/api/**` are NVIDIA NeMo Fabric API reference output. When reviewing changes to these generated pages, do not treat sidebar `position`/ordering updates as direct manual edits—these can be regenerated by running `just docs` after adding public types. Only flag substantive content changes that are not explained by generation.
Applied to files:
docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx
📚 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/claude/src/nemo_fabric_adapters/claude/adapter.py
🪛 ast-grep (0.45.0)
tests/python/test_notebook_examples.py
[warning] 41-41: The use of compile can be insecure
Context: compile(source, str(QUICKSTART_NOTEBOOK), "exec")
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[error] 41-41: The use of exec can be insecure
Context: exec(compile(source, str(QUICKSTART_NOTEBOOK), "exec"), namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-exec)
[warning] 147-152: The use of compile can be insecure
Context: compile(
source,
str(VARIATIONS_NOTEBOOK),
"exec",
flags=ast.PyCF_ALLOW_TOP_LEVEL_AWAIT,
)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[info] 154-154: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
tests/python/test_installed_adapter_discovery.py
[info] 51-51: use jsonify instead of json.dumps for JSON output
Context: json.dumps(data)
Note: [CWE-116] Improper Encoding or Escaping of Output.
(use-jsonify)
[error] 121-131: Command coming from incoming request
Context: subprocess.run(
[
"uv",
"build",
"--wheel",
"--out-dir",
str(wheelhouse),
str(ROOT / "adapters" / "claude"),
],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
[error] 136-139: Command coming from incoming request
Context: subprocess.run(
["uv", "pip", "install", "--python", str(python), "--no-deps", str(wheel)],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
🪛 Ruff (0.16.0)
tests/e2e/test_claude.py
[warning] 36-36: Unused function argument: restore_environ
(ARG001)
examples/notebooks/02_variations.ipynb
[warning] 279-279: Abstract raise to an inner function
(TRY301)
[warning] 279-279: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 283-283: Abstract raise to an inner function
(TRY301)
[warning] 283-283: Avoid specifying long messages outside the exception class
(TRY003)
tests/python/test_installed_adapter_discovery.py
[error] 122-122: subprocess call: check for execution of untrusted input
(S603)
[error] 123-130: Starting a process with a partial executable path
(S607)
[error] 137-137: subprocess call: check for execution of untrusted input
(S603)
[error] 138-138: Starting a process with a partial executable path
(S607)
d202f6c to
a47b68d
Compare
a47b68d to
afd4a27
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 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 `@tests/adapters/test_claude_adapter.py`:
- Around line 248-259: The test around adapter.build_options must also cover a
non-“dontAsk” permission mode such as “default”. Add a regression case asserting
tools.enabled remains in options.tools but does not populate
options.allowed_tools, while preserving the existing hook assertions for the
“dontAsk” path.
In `@tests/e2e/test_deepagents.py`:
- Around line 208-210: Update the deepagents test around the delegation prompt
and its assertions to verify that the task tool was invoked or that a
child-agent artifact was produced, rather than only checking the echoed
response. Preserve the existing FABRIC_DEEPAGENTS_SUBAGENT_OK result assertion
while requiring evidence that delegation actually occurred.
In `@tests/python/test_harness_settings_validation.py`:
- Around line 23-37: Move the duplicated FabricConfig builder into a shared
pytest fixture or factory in tests/python/conftest.py, parameterized for
adapter_id, resolution, and settings. In
tests/python/test_harness_settings_validation.py:23-37, remove the local _config
helper and use the shared factory with its existing defaults; in
tests/python/test_installed_adapter_discovery.py:57-69, remove its local _config
helper and use the same factory with that file’s adapter_id while omitting
resolution when unnecessary.
🪄 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: 8c105f21-74e7-4970-96c4-3377f8bc2c63
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (47)
ATTRIBUTIONS-Rust.mdCargo.tomlREADME.mdadapters/README.mdadapters/claude/README.mdadapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/codex/README.mdadapters/deepagents/README.mdadapters/hermes/README.mdcrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsoncrates/fabric-cli/src/presets.rscrates/fabric-core/Cargo.tomlcrates/fabric-core/src/config.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/schema.rscrates/fabric-python/src/lib.rsdocs/getting-started/install.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/sdk/python.mdxexamples/code_review_agent/config.pyexamples/harbor/README.mdexamples/harbor/calculator/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonexamples/notebooks/01_quickstart.ipynbexamples/notebooks/02_variations.ipynbpython/src/nemo_fabric/integrations/harbor/fabric_agent.pyschemas/SCHEMA.mdschemas/adapter-descriptor.schema.jsonschemas/run-plan.schema.jsonskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdtests/adapters/test_claude_adapter.pytests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/integrations/test_harbor_runner.pytests/python/test_harness_settings_validation.pytests/python/test_installed_adapter_discovery.pytests/python/test_notebook_examples.py
💤 Files with no reviewable changes (1)
- python/src/nemo_fabric/integrations/harbor/fabric_agent.py
📜 Review details
⏰ Context from checks skipped due to timeout. (11)
- GitHub Check: Preview docs
- GitHub Check: Test (Python 3.14, macos-arm64)
- GitHub Check: Test (Python 3.13, windows-amd64)
- GitHub Check: Test (Python 3.12, windows-amd64)
- GitHub Check: Test (Python 3.13, macos-arm64)
- GitHub Check: Test (Python 3.11, macos-arm64)
- GitHub Check: Test (Python 3.14, windows-amd64)
- GitHub Check: Test (Python 3.11, windows-amd64)
- GitHub Check: Test (Python 3.12, macos-arm64)
- GitHub Check: Test (Python 3.13, linux-arm64)
- GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (57)
**/*.{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/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonadapters/claude/fabric-adapter.jsoncrates/fabric-core/src/schema.rsschemas/adapter-descriptor.schema.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsontests/adapters/test_codex_adapter.pycrates/fabric-cli/src/presets.rsschemas/run-plan.schema.jsonexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pycrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.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 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:
tests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsonCargo.tomlREADME.mddocs/integrations/harness/hermes.mdxcrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonadapters/claude/fabric-adapter.jsonexamples/harbor/README.mdcrates/fabric-core/Cargo.tomlcrates/fabric-core/src/schema.rsdocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/adapter-descriptor.schema.jsonschemas/SCHEMA.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsontests/adapters/test_codex_adapter.pydocs/integrations/harness/claude.mdxcrates/fabric-cli/src/presets.rsschemas/run-plan.schema.jsondocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mdexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyexamples/notebooks/01_quickstart.ipynbskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mddocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxtests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pyexamples/notebooks/02_variations.ipynbtests/e2e/test_claude.pyadapters/codex/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdtests/e2e/test_deepagents.pyskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdcrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rsexamples/harbor/calculator/README.mdadapters/claude/README.mdcrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.pyATTRIBUTIONS-Rust.md
**/*.{json,jsonschema}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Public contract changes must keep checked-in JSON Schema snapshots synchronized.
Files:
tests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonadapters/claude/fabric-adapter.jsonschemas/adapter-descriptor.schema.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonschemas/run-plan.schema.json
{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/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/adapters/test_codex_adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pytests/integrations/test_harbor_runner.pytests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.py
{Cargo.toml,python/pyproject.toml,pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Keep Rust workspace/package metadata and Python/maturin package metadata internally consistent, including package names, versions, import paths, and module names.
Files:
Cargo.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}: Keep workspace, Python, and lockfile dependency versions aligned where required, and review both direct and transitive dependency changes from resolved lockfiles.
Inspect resolved transitive licenses, explicitly surface UNKNOWN, non-SPDX/custom, proprietary, source-available, copyleft, or network-copyleft terms, and route unresolved licensing questions to dependency approvers with distribution and linkage context.
Document the functional need, alternatives considered, rationale for the selected dependency, and any unresolved licensing question when introducing dependencies.
Files:
Cargo.toml
{Cargo.toml,pyproject.toml,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Before adding a dependency, prefer the standard library, an existing dependency, or a small local implementation when appropriate; otherwise select a maintained, narrow-fit dependency with clear SPDX metadata and a permissive license where possible.
Files:
Cargo.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
After updating manifests or lockfiles, run
uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/mainand review added packages and license changes.
Files:
Cargo.toml
{pyproject.toml,python/pyproject.toml,Cargo.toml,docs/package.json,.github/workflows/*.yml,justfile}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Reflect public packaging changes in release-facing documentation and ensure CI references the same package names and commands used by local workflows.
Files:
Cargo.toml
**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For any Rust change, run
just test-rustandcargo 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.
Files:
Cargo.tomlcrates/fabric-core/Cargo.tomlcrates/fabric-core/src/schema.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/{Cargo.toml,Cargo.lock,pyproject.toml,package.json}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For new or updated dependencies, document the functional need, alternatives considered, and why the selected dependency is the narrowest fit.
Files:
Cargo.tomlcrates/fabric-core/Cargo.toml
**/*.{toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If a manifest or lockfile changes, run the license-diff script against
origin/main, review transitive license changes, and run theattributions-rustandattributions-pythonpre-commit hooks.
Files:
Cargo.tomlcrates/fabric-core/Cargo.toml
**/*.{yml,yaml,toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For CI or packaging changes, use
maintain-ciormaintain-packaging, then run recipes and checks whose behavior changed.
Files:
Cargo.tomlcrates/fabric-core/Cargo.toml
Cargo.toml
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
Cargo.toml: UseCargo.toml[workspace.package].versionas the source of truth for Rust workspace and Python build versioning.
KeepCargo.toml[workspace.dependencies].nemo-fabric-core.versionaligned with the workspace version.
Use valid Cargo SemVer in Cargo metadata and equivalent PEP 440 syntax in explicit Python metadata for prerelease or build-metadata versions.
Files:
Cargo.toml
**/*.{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 inpython/pyproject.toml.
Files:
Cargo.tomlcrates/fabric-core/Cargo.tomlcrates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-cli/src/presets.rsexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pycrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.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:
Cargo.tomlcrates/fabric-core/Cargo.tomlcrates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-cli/src/presets.rsexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pycrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.py
**/*.{rs,py,html,md,mdx,toml,yml,yaml,sh,bash}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
All Rust, Python, HTML, Markdown, MDX, TOML, YAML, and shell source files must include the project SPDX copyright and Apache-2.0 license headers using the comment syntax appropriate to each file type.
Files:
Cargo.tomlREADME.mddocs/integrations/harness/hermes.mdxexamples/harbor/README.mdcrates/fabric-core/Cargo.tomlcrates/fabric-core/src/schema.rsdocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mdtests/adapters/test_codex_adapter.pydocs/integrations/harness/claude.mdxcrates/fabric-cli/src/presets.rsdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mdexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mddocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxtests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pyadapters/codex/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdtests/e2e/test_deepagents.pyskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdcrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rsexamples/harbor/calculator/README.mdadapters/claude/README.mdcrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.pyATTRIBUTIONS-Rust.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:
README.mdexamples/harbor/README.mdschemas/SCHEMA.mdadapters/hermes/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mdadapters/codex/README.mdadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdexamples/harbor/calculator/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.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:
README.mddocs/integrations/harness/hermes.mdxexamples/harbor/README.mddocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdxexamples/harbor/calculator/README.md
{README.md,docs/index.yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update
README.mdordocs/index.ymlwhen documentation entry points or example reading paths change.
Files:
README.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:
README.mddocs/integrations/harness/hermes.mdxexamples/harbor/README.mddocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mddocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxadapters/codex/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdexamples/harbor/calculator/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.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:
README.mdexamples/harbor/README.mdschemas/SCHEMA.mdadapters/hermes/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mdadapters/codex/README.mdadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdexamples/harbor/calculator/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.md
README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update the root
README.mdwhen public behavior, thenemo-fabricpackage, examples, or supported bindings change.Update the top-level
README.mdwhen changed behavior affects an entry point users would naturally consult.
Files:
README.md
**/README.md
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update relevant package, crate, adapter, and integration README files when public behavior or entry-point documentation changes.
Files:
README.mdexamples/harbor/README.mdadapters/hermes/README.mdadapters/README.mdadapters/codex/README.mdadapters/deepagents/README.mdexamples/harbor/calculator/README.mdadapters/claude/README.md
**/*.{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.For docs site changes, run
just docsto regenerate Python and Rust API references and validate the Fern configuration.
Files:
README.mddocs/integrations/harness/hermes.mdxexamples/harbor/README.mddocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mddocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxadapters/codex/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdexamples/harbor/calculator/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.md
**/{README.md,*.md,*.mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Update relevant documentation when changes affect public behavior, adapters, examples, or workspace structure.
Files:
README.mddocs/integrations/harness/hermes.mdxexamples/harbor/README.mddocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mddocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxadapters/codex/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdexamples/harbor/calculator/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.md
**/*.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
Documentation and examples must be updated consistently with changes to public behavior and reviewed for NVIDIA technical-writing style.
Files:
README.mdexamples/harbor/README.mdschemas/SCHEMA.mdadapters/hermes/README.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mdadapters/codex/README.mdadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdexamples/harbor/calculator/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.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.
For links between files under docs/, require paths relative to the source file with the target file's .mdx extension so they work in both Fern builds and repository browsers. Flag Fern site-root links such as NeMo Fabric overview; use the repository-relative equivalent, such as NeMo Fabric overview.
Files:
README.mddocs/integrations/harness/hermes.mdxdocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdx
{*.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:
README.mddocs/integrations/harness/hermes.mdxexamples/harbor/README.mddocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxschemas/SCHEMA.mddocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mdexamples/notebooks/01_quickstart.ipynbskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdadapters/README.mddocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxexamples/notebooks/02_variations.ipynbadapters/codex/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdexamples/harbor/calculator/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.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/integrations/harness/hermes.mdxexamples/harbor/README.mddocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdxexamples/harbor/calculator/README.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.
Files:
docs/integrations/harness/hermes.mdxdocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/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/integrations/harness/hermes.mdxdocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdx
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Update Fern documentation under
docs/when public behavior, thenemo-fabricpackage, examples, or supported bindings change.
Files:
docs/integrations/harness/hermes.mdxdocs/getting-started/install.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/integrations/harness/claude.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdx
{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/claude/fabric-adapter.jsonexamples/harbor/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonadapters/hermes/README.mdexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyexamples/notebooks/01_quickstart.ipynbadapters/README.mdexamples/notebooks/02_variations.ipynbadapters/codex/README.mdadapters/deepagents/README.mdexamples/harbor/calculator/README.mdadapters/claude/README.md
**/*.rs
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Implement new runtime or binding behavior in the shared Rust core first.
**/*.rs: Format Rust code withcargo fmt --all; Rust formatting checks must pass withcargo fmt --all -- --check.
Rust workspace changes must passcargo check --workspace --locked.
Files:
crates/fabric-core/src/schema.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For native binding changes, run
cargo check -p fabric-python --locked.
**/*.{rs,py}: When changing the Rust core or public schemas, run both the Rust and Python test suites.
When adding functionality, include tests in the corresponding Rust crate or the relevant area undertests/.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-cli/src/presets.rsexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pycrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.py
crates/fabric-core/**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Changes under
crates/fabric-coremust run both the Rust and Python test suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.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-corechanges in a way exposed through Python, run both the Rust and Python suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/*.{rs,rmeta}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Rust code changes, run
cargo fmt --all -- --checkandjust test-rust.
Files:
crates/fabric-core/src/schema.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/*.{rs,py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests injust test-rustpass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes underschemas/and generated API references.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-cli/src/presets.rsexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pycrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.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, thenjust test-python; rebuild withjust build-pythonwhen native code or packaging changes.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-cli/src/presets.rsexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pycrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.py
**/*.{py,rs}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
**/*.{py,rs}: Keep native Python binding declarations synchronized with their Rust implementations.
Usesnake_casefor functions and variables; usePascalCasefor Rust types and Python classes.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pycrates/fabric-cli/src/presets.rsexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pycrates/fabric-core/src/runtime.rstests/integrations/test_harbor_runner.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rstests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.py
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/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
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/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx
schemas/**/*
⚙️ CodeRabbit configuration file
schemas/**/*: Schemas are generated public contract snapshots. Check that schema diffs correspond to intentional Rust type changes and are covered by core tests.
Files:
schemas/adapter-descriptor.schema.jsonschemas/SCHEMA.mdschemas/run-plan.schema.json
schemas/SCHEMA.md
📄 CodeRabbit inference engine (AGENTS.md)
Keep the JSON Schema notes in
schemas/SCHEMA.mdcurrent when the public API or Python/Rust binding contract changes.
Files:
schemas/SCHEMA.md
**/*.{py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Python code or a Python-facing adapter changes, run
just test-python.
Files:
tests/adapters/test_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pytests/integrations/test_harbor_runner.pytests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.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 undertests/adapters, then runjust test-python.
Files:
tests/adapters/test_codex_adapter.pytests/adapters/test_claude_adapter.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.asyncioto tests; async tests are automatically detected and run by the async runner.
Do not add-> Nonereturn type annotations to test functions.
When mocking a class, useunittest.mock.MagicMockorunittest.mock.AsyncMock, using thespecargument when necessary, rather than defining a new class.
Prefix mocked class names withmock, notfake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files inconftest.py.
Define fixtures using@pytest.fixture(name="<fixture_name>"[, scope="<scope>"])and a function named<fixture_name>_fixture; specifyscopeonly when it is notfunction.
Preferpytest.mark.parametrizeover separate tests for different input types.
Use@pytest.mark.usefixtureswhen a fixture is needed but its return value is unused or it does not return a value.
Use the autouserestore_environ_fixturefromtests/conftest.pyto restore environment variables; modify variables withos.environand do not usemonkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as usingresults["data"]instead ofresults.get("data").
Files:
tests/adapters/test_codex_adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pytests/integrations/test_harbor_runner.pytests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.py
**/*.py
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Use type annotations for public Python APIs.
Files:
tests/adapters/test_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/adapters/test_claude_adapter.pytests/python/test_harness_settings_validation.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pytests/integrations/test_harbor_runner.pytests/python/test_notebook_examples.pytests/python/test_installed_adapter_discovery.py
adapters/*/README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update adapter README files when public behavior, examples, or supported bindings change.
Files:
adapters/hermes/README.mdadapters/codex/README.mdadapters/deepagents/README.mdadapters/claude/README.md
skills/**
📄 CodeRabbit inference engine (AGENTS.md)
skills/**: Keep consumer skills underskills/self-contained and dependent only on supported public Python SDK contracts and published documentation; do not add repository-internal contribution guidance.
Keep consumer skills in parity with the public SDK guide, model, and type details when the Python/Rust binding contract changes.
Files:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.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
**/SKILL.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
**/SKILL.md: Maintainer skills must begin with YAML frontmatter containing at leastnameanddescription.
Maintainer skills may reference repository internals, build and test commands, and contribution workflows, but external usage guidance must remain in the top-levelskills/directory.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
⚙️ CodeRabbit configuration file
**/SKILL.md: Do not flag SKILL.md files for missing SPDX headers. Skill entrypoints intentionally start with YAML frontmatter instead.
Verify that every SKILL.md keeps valid YAML frontmatter with at least name and description fields before the Markdown body.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
crates/fabric-python/**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If the PyO3 bridge or package metadata changes, run
just build-pythonandcargo check -p fabric-python --locked.
Files:
crates/fabric-python/src/lib.rs
crates/fabric-python/**/*
⚙️ CodeRabbit configuration file
crates/fabric-python/**/*: Treat native binding changes as public API changes. Check JSON/type conversion, error propagation, GIL/thread behavior, and parity with the Python SDK.
Files:
crates/fabric-python/src/lib.rs
**/ATTRIBUTIONS-*.md
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Regenerate and include changed
ATTRIBUTIONS-*.mdfiles.
Files:
ATTRIBUTIONS-Rust.md
🧠 Learnings (3)
📚 Learning: 2026-06-29T22:34:52.407Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 27
File: adapters/codex-cli/fabric-adapter.json:13-15
Timestamp: 2026-06-29T22:34:52.407Z
Learning: In NeMo-Fabric adapter manifest files (e.g., `*/fabric-adapter.json`), keep `config.accepts` limited to the top-level Fabric capability sections that `resolve_capability_plan` consumes (such as `models`, `tools`, `mcp`, `skills`, `telemetry`). Do not add adapter-owned `harness.settings` keys to `config.accepts`; `harness.settings` should remain adapter-owned and be passed through unchanged.
Applied to files:
tests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonadapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.json
📚 Learning: 2026-07-24T16:07:22.255Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 118
File: docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx:5-5
Timestamp: 2026-07-24T16:07:22.255Z
Learning: In this repo, files generated under `docs/reference/api/**` are NVIDIA NeMo Fabric API reference output. When reviewing changes to these generated pages, do not treat sidebar `position`/ordering updates as direct manual edits—these can be regenerated by running `just docs` after adding public types. Only flag substantive content changes that are not explained by generation.
Applied to files:
docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx
📚 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/claude/src/nemo_fabric_adapters/claude/adapter.py
🪛 ast-grep (0.45.0)
tests/python/test_notebook_examples.py
[error] 41-41: The use of exec can be insecure
Context: exec(compile(source, str(QUICKSTART_NOTEBOOK), "exec"), namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-exec)
[warning] 41-41: The use of compile can be insecure
Context: compile(source, str(QUICKSTART_NOTEBOOK), "exec")
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[info] 154-154: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
[info] 215-215: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
[warning] 147-152: The use of compile can be insecure
Context: compile(
source,
str(VARIATIONS_NOTEBOOK),
"exec",
flags=ast.PyCF_ALLOW_TOP_LEVEL_AWAIT,
)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[warning] 207-212: The use of compile can be insecure
Context: compile(
source,
str(VARIATIONS_NOTEBOOK),
"exec",
flags=ast.PyCF_ALLOW_TOP_LEVEL_AWAIT,
)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
tests/python/test_installed_adapter_discovery.py
[info] 52-52: use jsonify instead of json.dumps for JSON output
Context: json.dumps(data)
Note: [CWE-116] Improper Encoding or Escaping of Output.
(use-jsonify)
[error] 125-135: Command coming from incoming request
Context: subprocess.run( # noqa: S603 - uv and all inputs are controlled by this test
[
uv,
"build",
"--wheel",
"--out-dir",
str(wheelhouse),
str(ROOT / "adapters" / "claude"),
],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
[error] 140-143: Command coming from incoming request
Context: subprocess.run( # noqa: S603 - uv and all inputs are controlled by this test
[uv, "pip", "install", "--python", str(python), "--no-deps", str(wheel)],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
🪛 Ruff (0.16.0)
examples/notebooks/02_variations.ipynb
[warning] 279-279: Abstract raise to an inner function
(TRY301)
[warning] 279-279: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 284-284: Abstract raise to an inner function
(TRY301)
[warning] 284-284: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 288-288: Abstract raise to an inner function
(TRY301)
[warning] 288-288: Avoid specifying long messages outside the exception class
(TRY003)
tests/integrations/test_harbor_runner.py
[warning] 326-326: Consider f-string instead of string join
Replace with f-string
(FLY002)
tests/python/test_notebook_examples.py
[warning] 183-183: Missing return type annotation for private function plan_side_effect
(ANN202)
[warning] 183-183: Missing type annotation for *_args
(ANN002)
[warning] 183-183: Missing type annotation for **_kwargs
(ANN003)
[warning] 186-186: Avoid specifying long messages outside the exception class
(TRY003)
afd4a27 to
d76a22f
Compare
There was a problem hiding this comment.
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 `@examples/notebooks/02_variations.ipynb`:
- Around line 305-315: Apply the same ADAPTER_PYTHON save, Relay-specific
assignment, and finally-based restoration pattern around the later Deep Agents
Relay fabric.run invocation. Use the existing interpreter configuration and
preserve the original environment value, including removing the variable when it
was initially unset.
In `@tests/python/test_notebook_examples.py`:
- Around line 183-187: Annotate the plan_side_effect callback’s variadic
positional and keyword parameters and its return type to satisfy Ruff ANN002,
ANN003, and ANN202. Preserve the existing environment capture, first-call
RuntimeError, and subsequent plan return behavior.
🪄 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: 510360e2-7151-452c-90fa-d097aad824f5
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (48)
ATTRIBUTIONS-Rust.mdCargo.tomlREADME.mdadapters/README.mdadapters/claude/README.mdadapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/codex/README.mdadapters/deepagents/README.mdadapters/hermes/README.mdcrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsoncrates/fabric-cli/src/presets.rscrates/fabric-core/Cargo.tomlcrates/fabric-core/src/config.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/schema.rscrates/fabric-python/src/lib.rsdocs/getting-started/install.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/sdk/python.mdxexamples/code_review_agent/config.pyexamples/harbor/README.mdexamples/harbor/calculator/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonexamples/notebooks/01_quickstart.ipynbexamples/notebooks/02_variations.ipynbpython/src/nemo_fabric/integrations/harbor/fabric_agent.pyschemas/SCHEMA.mdschemas/adapter-descriptor.schema.jsonschemas/run-plan.schema.jsonskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdtests/_utils/configs.pytests/adapters/test_claude_adapter.pytests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/integrations/test_harbor_runner.pytests/python/test_harness_settings_validation.pytests/python/test_installed_adapter_discovery.pytests/python/test_notebook_examples.py
💤 Files with no reviewable changes (2)
- python/src/nemo_fabric/integrations/harbor/fabric_agent.py
- examples/harbor/calculator/README.md
📜 Review details
⏰ Context from checks skipped due to timeout. (8)
- GitHub Check: Test (Python 3.14, windows-amd64)
- GitHub Check: Test (Python 3.12, windows-amd64)
- GitHub Check: Test (Python 3.11, windows-amd64)
- GitHub Check: Test (Python 3.13, windows-amd64)
- GitHub Check: Test (Python 3.13, macos-arm64)
- GitHub Check: Test (Python 3.13, linux-amd64)
- GitHub Check: Test (Python 3.11, macos-arm64)
- GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (57)
{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/getting-started/install.mdxdocs/integrations/harness/hermes.mdxexamples/harbor/README.mdREADME.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdx
{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/getting-started/install.mdxdocs/integrations/harness/hermes.mdxexamples/harbor/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdx
**/*.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.
Files:
docs/getting-started/install.mdxdocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/deepagents.mdxdocs/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/getting-started/install.mdxdocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdx
**/*
📄 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/getting-started/install.mdxtests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsondocs/integrations/harness/hermes.mdxcrates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pyexamples/notebooks/01_quickstart.ipynbcrates/fabric-core/src/schema.rsCargo.tomlexamples/harbor/README.mdschemas/run-plan.schema.jsonskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsondocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxtests/e2e/test_claude.pyschemas/adapter-descriptor.schema.jsondocs/integrations/harness/claude.mdxtests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonschemas/SCHEMA.mdadapters/hermes/README.mdcrates/fabric-core/src/runtime.rsdocs/integrations/harness/deepagents.mdxadapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/deepagents/README.mdadapters/README.mdtests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pyadapters/codex/README.mdcrates/fabric-python/src/lib.rsadapters/claude/README.mdcrates/fabric-core/src/error.rstests/python/test_notebook_examples.pydocs/sdk/python.mdxtests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pyexamples/notebooks/02_variations.ipynbcrates/fabric-core/src/config.rsATTRIBUTIONS-Rust.mdtests/python/test_installed_adapter_discovery.py
**/*.{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/getting-started/install.mdxdocs/integrations/harness/hermes.mdxexamples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxschemas/SCHEMA.mdadapters/hermes/README.mddocs/integrations/harness/deepagents.mdxadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.mddocs/sdk/python.mdxATTRIBUTIONS-Rust.md
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Update Fern documentation under
docs/when public behavior, thenemo-fabricpackage, examples, or supported bindings change.
Files:
docs/getting-started/install.mdxdocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/deepagents.mdxdocs/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.For docs site changes, run
just docsto regenerate Python and Rust API references and validate the Fern configuration.
Files:
docs/getting-started/install.mdxdocs/integrations/harness/hermes.mdxexamples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxschemas/SCHEMA.mdadapters/hermes/README.mddocs/integrations/harness/deepagents.mdxadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.mddocs/sdk/python.mdxATTRIBUTIONS-Rust.md
**/*.{rs,py,html,md,mdx,toml,yml,yaml,sh,bash}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
All Rust, Python, HTML, Markdown, MDX, TOML, YAML, and shell source files must include the project SPDX copyright and Apache-2.0 license headers using the comment syntax appropriate to each file type.
Files:
docs/getting-started/install.mdxdocs/integrations/harness/hermes.mdxcrates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rsCargo.tomlexamples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxtests/e2e/test_claude.pydocs/integrations/harness/claude.mdxtests/_utils/configs.pycrates/fabric-cli/src/presets.rsschemas/SCHEMA.mdadapters/hermes/README.mdcrates/fabric-core/src/runtime.rsdocs/integrations/harness/deepagents.mdxadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/deepagents/README.mdadapters/README.mdtests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pyadapters/codex/README.mdcrates/fabric-python/src/lib.rsadapters/claude/README.mdcrates/fabric-core/src/error.rstests/python/test_notebook_examples.pydocs/sdk/python.mdxtests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rsATTRIBUTIONS-Rust.mdtests/python/test_installed_adapter_discovery.py
**/{README.md,*.md,*.mdx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Update relevant documentation when changes affect public behavior, adapters, examples, or workspace structure.
Files:
docs/getting-started/install.mdxdocs/integrations/harness/hermes.mdxexamples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxschemas/SCHEMA.mdadapters/hermes/README.mddocs/integrations/harness/deepagents.mdxadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.mddocs/sdk/python.mdxATTRIBUTIONS-Rust.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.
For links between files under docs/, require paths relative to the source file with the target file's .mdx extension so they work in both Fern builds and repository browsers. Flag Fern site-root links such as NeMo Fabric overview; use the repository-relative equivalent, such as NeMo Fabric overview.
Files:
docs/getting-started/install.mdxdocs/integrations/harness/hermes.mdxREADME.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/deepagents.mdxdocs/sdk/python.mdx
{*.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/getting-started/install.mdxdocs/integrations/harness/hermes.mdxexamples/notebooks/01_quickstart.ipynbexamples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/claude.mdxschemas/SCHEMA.mdadapters/hermes/README.mddocs/integrations/harness/deepagents.mdxadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.mddocs/sdk/python.mdxexamples/notebooks/02_variations.ipynbATTRIBUTIONS-Rust.md
**/*.{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/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rsschemas/run-plan.schema.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsontests/e2e/test_claude.pyschemas/adapter-descriptor.schema.jsontests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsoncrates/fabric-core/src/runtime.rsadapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rstests/python/test_installed_adapter_discovery.py
**/*.{json,jsonschema}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Public contract changes must keep checked-in JSON Schema snapshots synchronized.
Files:
tests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsonschemas/run-plan.schema.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonschemas/adapter-descriptor.schema.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonadapters/claude/fabric-adapter.json
{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/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/_utils/configs.pytests/e2e/test_deepagents.pytests/adapters/test_claude_adapter.pytests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pytests/python/test_installed_adapter_discovery.py
**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For any Rust change, run
just test-rustandcargo 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.
Files:
crates/fabric-core/Cargo.tomlcrates/fabric-core/src/schema.rsCargo.tomlcrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/{Cargo.toml,Cargo.lock,pyproject.toml,package.json}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For new or updated dependencies, document the functional need, alternatives considered, and why the selected dependency is the narrowest fit.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If a manifest or lockfile changes, run the license-diff script against
origin/main, review transitive license changes, and run theattributions-rustandattributions-pythonpre-commit hooks.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{yml,yaml,toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For CI or packaging changes, use
maintain-ciormaintain-packaging, then run recipes and checks whose behavior changed.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{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 inpython/pyproject.toml.
Files:
crates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rsCargo.tomltests/e2e/test_claude.pytests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rsadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rstests/python/test_installed_adapter_discovery.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:
crates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rsCargo.tomltests/e2e/test_claude.pytests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rsadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rstests/python/test_installed_adapter_discovery.py
**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For native binding changes, run
cargo check -p fabric-python --locked.
**/*.{rs,py}: When changing the Rust core or public schemas, run both the Rust and Python test suites.
When adding functionality, include tests in the corresponding Rust crate or the relevant area undertests/.
Files:
tests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rstests/e2e/test_claude.pytests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rsadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rstests/python/test_installed_adapter_discovery.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.
Files:
tests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/_utils/configs.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pytests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pytests/python/test_installed_adapter_discovery.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 injust test-rustpass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes underschemas/and generated API references.
Files:
tests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rstests/e2e/test_claude.pytests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rsadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rstests/python/test_installed_adapter_discovery.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 undertests/adapters, then runjust test-python.
Files:
tests/adapters/test_codex_adapter.pytests/adapters/test_claude_adapter.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, thenjust test-python; rebuild withjust build-pythonwhen native code or packaging changes.
Files:
tests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rstests/e2e/test_claude.pytests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rsadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rstests/python/test_installed_adapter_discovery.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.asyncioto tests; async tests are automatically detected and run by the async runner.
Do not add-> Nonereturn type annotations to test functions.
When mocking a class, useunittest.mock.MagicMockorunittest.mock.AsyncMock, using thespecargument when necessary, rather than defining a new class.
Prefix mocked class names withmock, notfake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files inconftest.py.
Define fixtures using@pytest.fixture(name="<fixture_name>"[, scope="<scope>"])and a function named<fixture_name>_fixture; specifyscopeonly when it is notfunction.
Preferpytest.mark.parametrizeover separate tests for different input types.
Use@pytest.mark.usefixtureswhen a fixture is needed but its return value is unused or it does not return a value.
Use the autouserestore_environ_fixturefromtests/conftest.pyto restore environment variables; modify variables withos.environand do not usemonkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as usingresults["data"]instead ofresults.get("data").
Files:
tests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/_utils/configs.pytests/e2e/test_deepagents.pytests/adapters/test_claude_adapter.pytests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pytests/python/test_installed_adapter_discovery.py
**/*.py
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Use type annotations for public Python APIs.
Files:
tests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/_utils/configs.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pytests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pytests/python/test_installed_adapter_discovery.py
**/*.{py,rs}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
**/*.{py,rs}: Keep native Python binding declarations synchronized with their Rust implementations.
Usesnake_casefor functions and variables; usePascalCasefor Rust types and Python classes.
Files:
tests/adapters/test_codex_adapter.pycrates/fabric-core/src/schema.rstests/e2e/test_claude.pytests/_utils/configs.pycrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rsadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pyexamples/code_review_agent/config.pytests/adapters/test_claude_adapter.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/python/test_notebook_examples.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rstests/python/test_installed_adapter_discovery.py
{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:
examples/notebooks/01_quickstart.ipynbexamples/harbor/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonadapters/hermes/README.mdadapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/deepagents/README.mdadapters/README.mdexamples/code_review_agent/config.pyadapters/codex/README.mdadapters/claude/README.mdexamples/notebooks/02_variations.ipynb
**/*.rs
📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)
Implement new runtime or binding behavior in the shared Rust core first.
**/*.rs: Format Rust code withcargo fmt --all; Rust formatting checks must pass withcargo fmt --all -- --check.
Rust workspace changes must passcargo check --workspace --locked.
Files:
crates/fabric-core/src/schema.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
crates/fabric-core/**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Changes under
crates/fabric-coremust run both the Rust and Python test suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.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-corechanges in a way exposed through Python, run both the Rust and Python suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
**/*.{rs,rmeta}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Rust code changes, run
cargo fmt --all -- --checkandjust test-rust.
Files:
crates/fabric-core/src/schema.rscrates/fabric-cli/src/presets.rscrates/fabric-core/src/runtime.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.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/schema.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/error.rscrates/fabric-core/src/config.rs
{Cargo.toml,python/pyproject.toml,pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Keep Rust workspace/package metadata and Python/maturin package metadata internally consistent, including package names, versions, import paths, and module names.
Files:
Cargo.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock,python/pyproject.toml}: Keep workspace, Python, and lockfile dependency versions aligned where required, and review both direct and transitive dependency changes from resolved lockfiles.
Inspect resolved transitive licenses, explicitly surface UNKNOWN, non-SPDX/custom, proprietary, source-available, copyleft, or network-copyleft terms, and route unresolved licensing questions to dependency approvers with distribution and linkage context.
Document the functional need, alternatives considered, rationale for the selected dependency, and any unresolved licensing question when introducing dependencies.
Files:
Cargo.toml
{Cargo.toml,pyproject.toml,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Before adding a dependency, prefer the standard library, an existing dependency, or a small local implementation when appropriate; otherwise select a maintained, narrow-fit dependency with clear SPDX metadata and a permissive license where possible.
Files:
Cargo.toml
{Cargo.toml,Cargo.lock,pyproject.toml,uv.lock}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
After updating manifests or lockfiles, run
uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/mainand review added packages and license changes.
Files:
Cargo.toml
{pyproject.toml,python/pyproject.toml,Cargo.toml,docs/package.json,.github/workflows/*.yml,justfile}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
Reflect public packaging changes in release-facing documentation and ensure CI references the same package names and commands used by local workflows.
Files:
Cargo.toml
Cargo.toml
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
Cargo.toml: UseCargo.toml[workspace.package].versionas the source of truth for Rust workspace and Python build versioning.
KeepCargo.toml[workspace.dependencies].nemo-fabric-core.versionaligned with the workspace version.
Use valid Cargo SemVer in Cargo metadata and equivalent PEP 440 syntax in explicit Python metadata for prerelease or build-metadata versions.
Files:
Cargo.toml
**/*.{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:
examples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mdschemas/SCHEMA.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.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:
examples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mdschemas/SCHEMA.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.md
**/README.md
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update relevant package, crate, adapter, and integration README files when public behavior or entry-point documentation changes.
Files:
examples/harbor/README.mdREADME.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.md
**/*.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
Documentation and examples must be updated consistently with changes to public behavior and reviewed for NVIDIA technical-writing style.
Files:
examples/harbor/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdREADME.mdschemas/SCHEMA.mdadapters/hermes/README.mdadapters/deepagents/README.mdadapters/README.mdadapters/codex/README.mdadapters/claude/README.mdATTRIBUTIONS-Rust.md
schemas/**/*
⚙️ CodeRabbit configuration file
schemas/**/*: Schemas are generated public contract snapshots. Check that schema diffs correspond to intentional Rust type changes and are covered by core tests.
Files:
schemas/run-plan.schema.jsonschemas/adapter-descriptor.schema.jsonschemas/SCHEMA.md
skills/**
📄 CodeRabbit inference engine (AGENTS.md)
skills/**: Keep consumer skills underskills/self-contained and dependent only on supported public Python SDK contracts and published documentation; do not add repository-internal contribution guidance.
Keep consumer skills in parity with the public SDK guide, model, and type details when the Python/Rust binding contract changes.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.md
**/SKILL.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
**/SKILL.md: Maintainer skills must begin with YAML frontmatter containing at leastnameanddescription.
Maintainer skills may reference repository internals, build and test commands, and contribution workflows, but external usage guidance must remain in the top-levelskills/directory.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
⚙️ CodeRabbit configuration file
**/SKILL.md: Do not flag SKILL.md files for missing SPDX headers. Skill entrypoints intentionally start with YAML frontmatter instead.
Verify that every SKILL.md keeps valid YAML frontmatter with at least name and description fields before the Markdown body.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
{README.md,docs/index.yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update
README.mdordocs/index.ymlwhen documentation entry points or example reading paths change.
Files:
README.md
README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update the root
README.mdwhen public behavior, thenemo-fabricpackage, examples, or supported bindings change.Update the top-level
README.mdwhen changed behavior affects an entry point users would naturally consult.
Files:
README.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/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx
schemas/SCHEMA.md
📄 CodeRabbit inference engine (AGENTS.md)
Keep the JSON Schema notes in
schemas/SCHEMA.mdcurrent when the public API or Python/Rust binding contract changes.
Files:
schemas/SCHEMA.md
adapters/*/README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update adapter README files when public behavior, examples, or supported bindings change.
Files:
adapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.md
crates/fabric-python/**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If the PyO3 bridge or package metadata changes, run
just build-pythonandcargo check -p fabric-python --locked.
Files:
crates/fabric-python/src/lib.rs
crates/fabric-python/**/*
⚙️ CodeRabbit configuration file
crates/fabric-python/**/*: Treat native binding changes as public API changes. Check JSON/type conversion, error propagation, GIL/thread behavior, and parity with the Python SDK.
Files:
crates/fabric-python/src/lib.rs
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
**/ATTRIBUTIONS-*.md
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Regenerate and include changed
ATTRIBUTIONS-*.mdfiles.
Files:
ATTRIBUTIONS-Rust.md
🧠 Learnings (3)
📚 Learning: 2026-06-29T22:34:52.407Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 27
File: adapters/codex-cli/fabric-adapter.json:13-15
Timestamp: 2026-06-29T22:34:52.407Z
Learning: In NeMo-Fabric adapter manifest files (e.g., `*/fabric-adapter.json`), keep `config.accepts` limited to the top-level Fabric capability sections that `resolve_capability_plan` consumes (such as `models`, `tools`, `mcp`, `skills`, `telemetry`). Do not add adapter-owned `harness.settings` keys to `config.accepts`; `harness.settings` should remain adapter-owned and be passed through unchanged.
Applied to files:
tests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonadapters/claude/fabric-adapter.json
📚 Learning: 2026-07-24T16:07:22.255Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 118
File: docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx:5-5
Timestamp: 2026-07-24T16:07:22.255Z
Learning: In this repo, files generated under `docs/reference/api/**` are NVIDIA NeMo Fabric API reference output. When reviewing changes to these generated pages, do not treat sidebar `position`/ordering updates as direct manual edits—these can be regenerated by running `just docs` after adding public types. Only flag substantive content changes that are not explained by generation.
Applied to files:
docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdx
📚 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/claude/src/nemo_fabric_adapters/claude/adapter.py
🪛 ast-grep (0.45.0)
tests/python/test_notebook_examples.py
[error] 41-41: The use of exec can be insecure
Context: exec(compile(source, str(QUICKSTART_NOTEBOOK), "exec"), namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-exec)
[warning] 41-41: The use of compile can be insecure
Context: compile(source, str(QUICKSTART_NOTEBOOK), "exec")
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[warning] 147-152: The use of compile can be insecure
Context: compile(
source,
str(VARIATIONS_NOTEBOOK),
"exec",
flags=ast.PyCF_ALLOW_TOP_LEVEL_AWAIT,
)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[warning] 207-212: The use of compile can be insecure
Context: compile(
source,
str(VARIATIONS_NOTEBOOK),
"exec",
flags=ast.PyCF_ALLOW_TOP_LEVEL_AWAIT,
)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[info] 154-154: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
[info] 215-215: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
tests/python/test_installed_adapter_discovery.py
[info] 53-53: use jsonify instead of json.dumps for JSON output
Context: json.dumps(data)
Note: [CWE-116] Improper Encoding or Escaping of Output.
(use-jsonify)
[error] 118-128: Command coming from incoming request
Context: subprocess.run( # noqa: S603 - uv and all inputs are controlled by this test
[
uv,
"build",
"--wheel",
"--out-dir",
str(wheelhouse),
str(ROOT / "adapters" / "claude"),
],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
[error] 133-136: Command coming from incoming request
Context: subprocess.run( # noqa: S603 - uv and all inputs are controlled by this test
[uv, "pip", "install", "--python", str(python), "--no-deps", str(wheel)],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
🪛 Ruff (0.16.0)
tests/python/test_notebook_examples.py
[warning] 183-183: Missing return type annotation for private function plan_side_effect
(ANN202)
[warning] 183-183: Missing type annotation for *_args
(ANN002)
[warning] 183-183: Missing type annotation for **_kwargs
(ANN003)
[warning] 186-186: Avoid specifying long messages outside the exception class
(TRY003)
examples/notebooks/02_variations.ipynb
[warning] 279-279: Abstract raise to an inner function
(TRY301)
[warning] 279-279: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 284-284: Abstract raise to an inner function
(TRY301)
[warning] 284-284: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 288-288: Abstract raise to an inner function
(TRY301)
[warning] 288-288: Avoid specifying long messages outside the exception class
(TRY003)
d76a22f to
10e1f40
Compare
|
@coderabbitai full review |
✅ Action performedFull review finished. |
d0621a2 to
557b629
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 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 `@Cargo.toml`:
- Around line 26-27: Expand the comment above the jsonschema dependency to
document its functional need for validating adapter schemas, the alternatives
considered, and why jsonschema is the narrowest suitable dependency; retain the
existing security rationale and dependency configuration.
In `@schemas/adapter-descriptor.schema.json`:
- Around line 256-263: Restrict the embedded settings-schema type to object or
null in the Rust core validation, and add a regression test rejecting schemas
declaring strings or arrays. Regenerate
schemas/adapter-descriptor.schema.json:256-263 and
schemas/run-plan.schema.json:122-129 from the updated source; both snapshot
sites require regeneration only.
In `@tests/python/test_installed_adapter_discovery.py`:
- Around line 226-251: Replace direct ADAPTER_PYTHON environment mutations with
pytest monkeypatching in tests/python/test_installed_adapter_discovery.py at
lines 226-251 and 275-318: add a monkeypatch: pytest.MonkeyPatch parameter to
test_adapter_python_data_directory_replaces_current_data_directory and
test_installed_claude_wheel_supplies_metadata_and_settings_schema, then use
monkeypatch.setenv("ADAPTER_PYTHON", ...) in both tests so the variable is
restored after each test.
In `@tests/python/test_notebook_examples.py`:
- Around line 164-226: Update both affected tests, including
test_variations_notebook_continues_after_planning_failure_and_restores_env and
the test covering lines 228-278, to accept the pytest monkeypatch fixture and
replace direct os.environ assignment with monkeypatch.setenv("ADAPTER_PYTHON",
"original-python"). Preserve the existing assertions and test behavior while
ensuring environment changes are automatically reverted after each test.
🪄 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: 29b3a44b-cd68-46e3-a6b3-d08a30c42a16
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (48)
ATTRIBUTIONS-Rust.mdCargo.tomlREADME.mdadapters/README.mdadapters/claude/README.mdadapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/codex/README.mdadapters/deepagents/README.mdadapters/hermes/README.mdcrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsoncrates/fabric-cli/src/presets.rscrates/fabric-core/Cargo.tomlcrates/fabric-core/src/config.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/schema.rscrates/fabric-python/src/lib.rsdocs/getting-started/install.mdxdocs/integrations/harness/claude.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/hermes.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/sdk/python.mdxexamples/code_review_agent/config.pyexamples/harbor/README.mdexamples/harbor/calculator/README.mdexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonexamples/notebooks/01_quickstart.ipynbexamples/notebooks/02_variations.ipynbpython/src/nemo_fabric/integrations/harbor/fabric_agent.pyschemas/SCHEMA.mdschemas/adapter-descriptor.schema.jsonschemas/run-plan.schema.jsonskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdtests/_utils/configs.pytests/adapters/test_claude_adapter.pytests/adapters/test_codex_adapter.pytests/e2e/test_claude.pytests/e2e/test_deepagents.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/integrations/test_harbor_runner.pytests/python/test_harness_settings_validation.pytests/python/test_installed_adapter_discovery.pytests/python/test_notebook_examples.py
💤 Files with no reviewable changes (2)
- python/src/nemo_fabric/integrations/harbor/fabric_agent.py
- examples/harbor/calculator/README.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (55)
**/*.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/schema.rscrates/fabric-cli/src/presets.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/config.rs
**/*.{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:
crates/fabric-core/src/schema.rsadapters/claude/fabric-adapter.jsontests/adapters/test_codex_adapter.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsonexamples/code_review_agent/config.pycrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonschemas/adapter-descriptor.schema.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pycrates/fabric-cli/src/presets.rsschemas/run-plan.schema.jsontests/e2e/test_deepagents.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.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 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:
crates/fabric-core/src/schema.rsadapters/claude/fabric-adapter.jsoncrates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsonskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdexamples/code_review_agent/config.pyexamples/notebooks/01_quickstart.ipynbschemas/SCHEMA.mdcrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonschemas/adapter-descriptor.schema.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pydocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxcrates/fabric-cli/src/presets.rsschemas/run-plan.schema.jsonexamples/harbor/README.mdtests/e2e/test_deepagents.pydocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mddocs/integrations/harness/codex.mdxadapters/codex/README.mdadapters/claude/README.mdCargo.tomldocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxcrates/fabric-python/src/lib.rsexamples/notebooks/02_variations.ipynbadapters/README.mdcrates/fabric-core/src/error.rsREADME.mdtests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pyATTRIBUTIONS-Rust.mddocs/integrations/harness/claude.mdxdocs/getting-started/install.mdxcrates/fabric-core/src/config.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For any Rust change, run
just test-rustandcargo 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.
Rust source and Cargo configuration changes must pass
cargo fmt --all -- --checkandcargo check --workspace --locked.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/Cargo.tomlcrates/fabric-cli/src/presets.rsCargo.tomlcrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/config.rs
**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For native binding changes, run
cargo check -p fabric-python --locked.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pycrates/fabric-cli/src/presets.rstests/e2e/test_deepagents.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rs
crates/fabric-core/**/*.{rs,py}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Changes under
crates/fabric-coremust run both the Rust and Python test suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/config.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-corechanges in a way exposed through Python, run both the Rust and Python suites.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/config.rs
**/*.{rs,rmeta}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If Rust code changes, run
cargo fmt --all -- --checkandjust test-rust.
Files:
crates/fabric-core/src/schema.rscrates/fabric-cli/src/presets.rscrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/config.rs
**/*.{rs,py,pyi}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests injust test-rustpass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes underschemas/and generated API references.Use
snake_casefor Rust and Python functions and variables; usePascalCasefor Rust types and Python classes.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pycrates/fabric-cli/src/presets.rstests/e2e/test_deepagents.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.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, thenjust test-python; rebuild withjust build-pythonwhen native code or packaging changes.
Files:
crates/fabric-core/src/schema.rstests/adapters/test_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pycrates/fabric-cli/src/presets.rstests/e2e/test_deepagents.pycrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.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 inpython/pyproject.toml.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pycrates/fabric-cli/src/presets.rstests/e2e/test_deepagents.pyCargo.tomlcrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.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:
crates/fabric-core/src/schema.rscrates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pycrates/fabric-cli/src/presets.rstests/e2e/test_deepagents.pyCargo.tomlcrates/fabric-python/src/lib.rscrates/fabric-core/src/error.rstests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pycrates/fabric-core/src/config.rs
**/*.{rs,py,html,md,mdx,toml,yaml,yml,sh,bash}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
All source files must include the appropriate SPDX license header and comment syntax for their file type.
Files:
crates/fabric-core/src/schema.rscrates/fabric-core/Cargo.tomltests/adapters/test_codex_adapter.pyskills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdexamples/code_review_agent/config.pyschemas/SCHEMA.mdadapters/claude/src/nemo_fabric_adapters/claude/adapter.pydocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxcrates/fabric-cli/src/presets.rsexamples/harbor/README.mdtests/e2e/test_deepagents.pydocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mddocs/integrations/harness/codex.mdxadapters/codex/README.mdadapters/claude/README.mdCargo.tomldocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxcrates/fabric-python/src/lib.rsadapters/README.mdcrates/fabric-core/src/error.rsREADME.mdtests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pycrates/fabric-core/src/runtime.rstests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.pyATTRIBUTIONS-Rust.mddocs/integrations/harness/claude.mdxdocs/getting-started/install.mdxcrates/fabric-core/src/config.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/schema.rscrates/fabric-core/src/error.rscrates/fabric-core/src/runtime.rscrates/fabric-core/src/config.rs
adapters/*/fabric-adapter.json
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
Define the narrowest truthful adapter descriptor; keep config.accepts, config.generates, requirements, telemetry declarations, lifecycle capabilities, and advertised capability claims synchronized with implementation and tests.
Files:
adapters/claude/fabric-adapter.json
adapters/*/{README.md,fabric-adapter.json,src/**/*.py,tests/**/*.py}
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
Keep descriptor claims, implementation, documentation, fixtures, tests, package metadata, generated artifacts, and CI/catalog wiring consistent without contract drift or unrelated changes.
Files:
adapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.md
**/*.{json,json5}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Public contract changes must keep checked-in JSON Schema snapshots synchronized with the implementation.
Files:
adapters/claude/fabric-adapter.jsontests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonschemas/adapter-descriptor.schema.jsonschemas/run-plan.schema.json
{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/claude/fabric-adapter.jsonexamples/code_review_agent/config.pyexamples/notebooks/01_quickstart.ipynbexamples/harbor/swebench/adapters/claude/fabric-adapter.jsonadapters/claude/src/nemo_fabric_adapters/claude/adapter.pyadapters/hermes/README.mdexamples/harbor/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdexamples/notebooks/02_variations.ipynbadapters/README.md
**/{Cargo.toml,Cargo.lock,pyproject.toml,package.json}
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
For new or updated dependencies, document the functional need, alternatives considered, and why the selected dependency is the narrowest fit.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If a manifest or lockfile changes, run the license-diff script against
origin/main, review transitive license changes, and run theattributions-rustandattributions-pythonpre-commit hooks.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{yml,yaml,toml,lock}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
For CI or packaging changes, use
maintain-ciormaintain-packaging, then run recipes and checks whose behavior changed.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/{Cargo.toml,pyproject.toml,python/pyproject.toml}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
**/{Cargo.toml,pyproject.toml,python/pyproject.toml}: Keepnemo-fabricas a metapackage that unconditionally installs the exact-versionnemo-fabric-runtimedistribution.
Treat every direct dependency as a long-lived API, supply-chain, and licensing commitment; select the narrowest maintained dependency with clear SPDX metadata and a small permissive transitive graph.
Regenerate attribution files with theattributions-rustandattributions-pythonpre-commit hooks instead of editing generated output manually.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/{Cargo.toml,pyproject.toml,python/pyproject.toml,Cargo.lock,uv.lock}
📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)
**/{Cargo.toml,pyproject.toml,python/pyproject.toml,Cargo.lock,uv.lock}: Do not silently accept or rejectUNKNOWN, non-SPDX/custom, proprietary, source-available, copyleft, or network-copyleft licenses; route them to dependency approvers with distribution and linkage context.
Keep package names, import paths, module names, and workspace, Python, and lockfile versions internally consistent where required.
Files:
crates/fabric-core/Cargo.tomlCargo.toml
**/*.{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_codex_adapter.pyexamples/code_review_agent/config.pyadapters/claude/src/nemo_fabric_adapters/claude/adapter.pytests/e2e/test_deepagents.pytests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.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 undertests/adapters, then runjust test-python.
Files:
tests/adapters/test_codex_adapter.pytests/adapters/test_claude_adapter.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.asyncioto tests; async tests are automatically detected by the async runner.
Do not add-> Nonereturn annotations to test functions.
When mocking a class, useunittest.mock.MagicMockorAsyncMock, usingspecwhen necessary; do not define a replacement class.
Prefix mocked class names withmock, notfake.
Prefer pytest fixtures over helper methods.
Place fixtures needed by multiple test files inconftest.pyinstead of repeating them.
Define fixtures using@pytest.fixture(name="<fixture_name>")and a<fixture_name>_fixturefunction; specifyscopeonly when it is notfunction.
Preferpytest.mark.parametrizeover separate tests for different input types.
Use@pytest.mark.usefixtureswhen a fixture is needed but its returned value is unused.
Avoid defensive programming in tests; access expected values directly so missing data fails loudly and clearly.
Files:
tests/adapters/test_codex_adapter.pytests/e2e/test_deepagents.pytests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.py
**/tests/**/*.{rs,py}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
When adding functionality, include tests in the corresponding Rust crate or in the relevant
tests/area.
Files:
tests/adapters/test_codex_adapter.pytests/e2e/test_deepagents.pytests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.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_codex_adapter.pytests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsontests/e2e/test_deepagents.pytests/_utils/configs.pytests/e2e/test_claude.pytests/python/test_notebook_examples.pytests/adapters/test_claude_adapter.pytests/python/test_installed_adapter_discovery.pytests/python/test_harness_settings_validation.pytests/integrations/test_harbor_runner.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.
Reflect public packaging changes in release-facing documentation, and ensure documentation and examples use current install, import, and build commands.
Files:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdschemas/SCHEMA.mdadapters/hermes/README.mdexamples/harbor/README.mdadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/codex/README.mdadapters/claude/README.mdadapters/README.mdREADME.mdATTRIBUTIONS-Rust.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:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdschemas/SCHEMA.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxexamples/harbor/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mddocs/integrations/harness/codex.mdxadapters/codex/README.mdadapters/claude/README.mddocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxadapters/README.mdREADME.mdATTRIBUTIONS-Rust.mddocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
**/*.{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:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdschemas/SCHEMA.mdadapters/hermes/README.mdexamples/harbor/README.mdadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/codex/README.mdadapters/claude/README.mdadapters/README.mdREADME.mdATTRIBUTIONS-Rust.md
skills/**
📄 CodeRabbit inference engine (AGENTS.md)
skills/**: Keep consumer skills underskills/self-contained and dependent only on supported public Python SDK contracts and published documentation; do not add repository-internal contribution guidance.
Keep consumer skills in parity with the public SDK guide, model, and type details when the Python/Rust binding contract changes.
Files:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.md
**/*.{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.
Files:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdschemas/SCHEMA.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxexamples/harbor/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mddocs/integrations/harness/codex.mdxadapters/codex/README.mdadapters/claude/README.mddocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxadapters/README.mdREADME.mdATTRIBUTIONS-Rust.mddocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
**/*.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
Documentation and examples must be updated consistently with changes to public behavior and reviewed for NVIDIA technical-writing style.
Files:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdschemas/SCHEMA.mdadapters/hermes/README.mdexamples/harbor/README.mdadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mdadapters/codex/README.mdadapters/claude/README.mdadapters/README.mdREADME.mdATTRIBUTIONS-Rust.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:
skills/integrations/consumer/nemo-fabric-integrate/references/config-mapping.mdexamples/notebooks/01_quickstart.ipynbschemas/SCHEMA.mddocs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxadapters/hermes/README.mddocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxexamples/harbor/README.mddocs/sdk/python.mdxadapters/deepagents/README.mdskills/integrations/consumer/nemo-fabric-integrate/SKILL.mddocs/integrations/harness/codex.mdxadapters/codex/README.mdadapters/claude/README.mddocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxexamples/notebooks/02_variations.ipynbadapters/README.mdREADME.mdATTRIBUTIONS-Rust.mddocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
schemas/SCHEMA.md
📄 CodeRabbit inference engine (AGENTS.md)
Keep the JSON Schema notes in
schemas/SCHEMA.mdcurrent when the public API or Python/Rust binding contract changes.
Files:
schemas/SCHEMA.md
schemas/**/*
⚙️ CodeRabbit configuration file
schemas/**/*: Schemas are generated public contract snapshots. Check that schema diffs correspond to intentional Rust type changes and are covered by core tests.
Files:
schemas/SCHEMA.mdschemas/adapter-descriptor.schema.jsonschemas/run-plan.schema.json
adapters/*/src/**/*.py
📄 CodeRabbit inference engine (.agents/skills/contribute-adapter/SKILL.md)
adapters/*/src/**/*.py: Use the existing Fabric python or process runner and normalized request/result contracts; do not add a new runner or one-adapter abstraction.
Consume the complete Fabric invocation and treat config, capability_plan, telemetry_plan, and runtime_context as authoritative; reserve harness.settings for harness-specific behavior.
Apply configuration precedence in this order: normalized config, Fabric-resolved plans and runtime context, harness-specific settings, then descriptor and adapter defaults. Reject conflicting duplicates or unsupported behavior with actionable errors instead of silently dropping configuration.
Validate fixed dependencies, selected versions, hooks, and credentials before invoking the harness; never expose credential values in output, errors, events, logs, or fixtures.
Forward only required system variables, selected credential variables, telemetry variables, and documented harness-specific environment; never forward or log unrelated environment values.
Run one local adapter host per Fabric runtime across ordered start, repeated invoke, and stop operations; emit exactly one JSON lifecycle response per request on stdout and diagnostics on stderr.
Return harness-level invocation failures as successful lifecycle responses containing response:null, failed:true, and structured error fields code, message, retryable, and optional metadata.
Do not emit NeMo Relay stream records on adapter stdout; return exactly one terminal lifecycle response while Relay sends raw records through the SDK-owned out-of-band NDJSON endpoint.
Scope workspace, generated configuration, state, sessions, and artifacts to resolved runtime context, and isolate stateful adapter data by Fabric runtime ID.
Expose only response and adapter-specific extensions such as error, harness events, usage, and session IDs on stdout; do not duplicate top-level identity, lifecycle, status, artifacts, telemetry, or Fabric metadata supplied by Fabric.
Claim tools.blocked, MCP...
Files:
adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
{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/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxexamples/harbor/README.mddocs/sdk/python.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxREADME.mddocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
{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/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxexamples/harbor/README.mddocs/sdk/python.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
**/*.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.
Files:
docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
docs/**/*.{md,mdx,yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Run
just docswhen the documentation site changes.
Files:
docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Update Fern documentation under
docs/when public behavior, thenemo-fabricpackage, examples, or supported bindings change.
Files:
docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxdocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
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/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx
{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.
For links between files under docs/, require paths relative to the source file with the target file's .mdx extension so they work in both Fern builds and repository browsers. Flag Fern site-root links such as NeMo Fabric overview; use the repository-relative equivalent, such as NeMo Fabric overview.
Files:
docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdxdocs/sdk/python.mdxdocs/integrations/harness/codex.mdxdocs/integrations/harness/hermes.mdxdocs/integrations/harness/deepagents.mdxREADME.mddocs/integrations/harness/claude.mdxdocs/getting-started/install.mdx
adapters/*/README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update adapter README files when public behavior, examples, or supported bindings change.
Document installation, supported configuration, harness-only settings, credentials, lifecycle, telemetry, artifacts, limitations, focused test commands, and canonical typed SDK or harness-native YAML examples where applicable.
Files:
adapters/hermes/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.md
**/README.md
📄 CodeRabbit inference engine (.agents/skills/review-doc-style/SKILL.md)
Update relevant package, crate, adapter, and integration README files when public behavior or entry-point documentation changes.
Files:
adapters/hermes/README.mdexamples/harbor/README.mdadapters/deepagents/README.mdadapters/codex/README.mdadapters/claude/README.mdadapters/README.mdREADME.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
**/SKILL.md
📄 CodeRabbit inference engine (.agents/skills/README.md)
**/SKILL.md: Maintainer skills must begin with YAML frontmatter containing at leastnameanddescription.
Maintainer skills may reference repository internals, build and test commands, and contribution workflows, but external usage guidance must remain in the top-levelskills/directory.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
⚙️ CodeRabbit configuration file
**/SKILL.md: Do not flag SKILL.md files for missing SPDX headers. Skill entrypoints intentionally start with YAML frontmatter instead.
Verify that every SKILL.md keeps valid YAML frontmatter with at least name and description fields before the Markdown body.
Files:
skills/integrations/consumer/nemo-fabric-integrate/SKILL.md
Cargo.toml
📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)
Cargo.toml: UseCargo.toml[workspace.package].versionas the source of truth for Rust workspace and Python build versioning.
KeepCargo.toml[workspace.dependencies].nemo-fabric-core.versionaligned with the workspace version.
Use valid Cargo SemVer in Cargo metadata and equivalent PEP 440 syntax in explicit Python metadata for prerelease or build-metadata versions.
Files:
Cargo.toml
crates/fabric-python/**/*.{rs,toml}
📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)
If the PyO3 bridge or package metadata changes, run
just build-pythonandcargo check -p fabric-python --locked.
Files:
crates/fabric-python/src/lib.rs
crates/fabric-python/**/*
⚙️ CodeRabbit configuration file
crates/fabric-python/**/*: Treat native binding changes as public API changes. Check JSON/type conversion, error propagation, GIL/thread behavior, and parity with the Python SDK.
Files:
crates/fabric-python/src/lib.rs
{README.md,docs/index.yml}
📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)
Update
README.mdordocs/index.ymlwhen documentation entry points or example reading paths change.
Files:
README.md
README.md
📄 CodeRabbit inference engine (AGENTS.md)
Update the root
README.mdwhen public behavior, thenemo-fabricpackage, examples, or supported bindings change.Update the top-level
README.mdwhen changed behavior affects an entry point users would naturally consult.
Files:
README.md
**/ATTRIBUTIONS-*.md
📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)
Regenerate and include changed
ATTRIBUTIONS-*.mdfiles.
Files:
ATTRIBUTIONS-Rust.md
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:38.673Z
Learning: Read the authoritative descriptor, configuration, runtime, planning, doctor, model, type, and shared-pattern references before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:38.673Z
Learning: Run the applicable validation matrix, including adapter tests, Python tests, packaging and wheel checks for package changes, Rust checks for Rust changes, documentation generation for docs changes, pre-commit, and git diff validation.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:53.770Z
Learning: Use `uv run pytest -k "<pattern>"` for focused tests and `uv run pytest` to run the full test suite.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:59.589Z
Learning: Run tests for every language surface affected by a change; changes to the Rust core or public schemas require both Rust and Python test suites.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:59.589Z
Learning: If a change affects public behavior, adapters, examples, or workspace structure, update the corresponding documentation in the same branch.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:59.589Z
Learning: Versioned release tags must use raw Rust-compatible SemVer without a leading `v`, such as `0.1.0` or `0.1.0-rc.1`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:59.589Z
Learning: All contributors must sign off commits using `git commit -s`; commits without DCO sign-off will not be accepted.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:59.589Z
Learning: Before submitting a pull request, run relevant tests, verify affected packages compile, update documentation, and rebase on the latest `main`.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:59.589Z
Learning: Pull requests require at least one approving review, passing CI, and addressing review feedback without force-pushing during review.
Learnt from: CR
Repo: NVIDIA/NeMo-Fabric
Timestamp: 2026-07-29T17:27:59.589Z
Learning: Use the commit message format `type: short description`, with one of `feat`, `fix`, `docs`, `test`, `refactor`, `chore`, or `perf`, and keep the first line under 72 characters.
📚 Learning: 2026-06-29T22:34:52.407Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 27
File: adapters/codex-cli/fabric-adapter.json:13-15
Timestamp: 2026-06-29T22:34:52.407Z
Learning: In NeMo-Fabric adapter manifest files (e.g., `*/fabric-adapter.json`), keep `config.accepts` limited to the top-level Fabric capability sections that `resolve_capability_plan` consumes (such as `models`, `tools`, `mcp`, `skills`, `telemetry`). Do not add adapter-owned `harness.settings` keys to `config.accepts`; `harness.settings` should remain adapter-owned and be passed through unchanged.
Applied to files:
adapters/claude/fabric-adapter.jsontests/fixtures/hermes-shim-agent/adapters/hermes-shim/fabric-adapter.jsoncrates/fabric-cli/assets/adapters/claude/fabric-adapter.jsonexamples/harbor/swebench/adapters/claude/fabric-adapter.json
📚 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/claude/src/nemo_fabric_adapters/claude/adapter.py
📚 Learning: 2026-07-24T16:07:22.255Z
Learnt from: AjayThorve
Repo: NVIDIA/NeMo-Fabric PR: 118
File: docs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx:5-5
Timestamp: 2026-07-24T16:07:22.255Z
Learning: In this repo, files generated under `docs/reference/api/**` are NVIDIA NeMo Fabric API reference output. When reviewing changes to these generated pages, do not treat sidebar `position`/ordering updates as direct manual edits—these can be regenerated by running `just docs` after adding public types. Only flag substantive content changes that are not explained by generation.
Applied to files:
docs/reference/api/rust-library-reference/nemo-fabric-core/error/enum-fabricerror.mdxdocs/reference/api/rust-library-reference/nemo-fabric-core/config/struct-adapterdescriptor.mdx
🪛 ast-grep (0.45.0)
tests/python/test_notebook_examples.py
[error] 41-41: The use of exec can be insecure
Context: exec(compile(source, str(QUICKSTART_NOTEBOOK), "exec"), namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-exec)
[warning] 41-41: The use of compile can be insecure
Context: compile(source, str(QUICKSTART_NOTEBOOK), "exec")
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[warning] 147-152: The use of compile can be insecure
Context: compile(
source,
str(VARIATIONS_NOTEBOOK),
"exec",
flags=ast.PyCF_ALLOW_TOP_LEVEL_AWAIT,
)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[warning] 207-212: The use of compile can be insecure
Context: compile(
source,
str(VARIATIONS_NOTEBOOK),
"exec",
flags=ast.PyCF_ALLOW_TOP_LEVEL_AWAIT,
)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-compile)
[info] 154-154: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
[info] 215-215: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
[info] 273-273: use of eval can be insecure
Context: eval(code, namespace)
Note: [CWE-94] Improper Control of Generation of Code ('Code Injection').
(no-eval-python)
tests/python/test_installed_adapter_discovery.py
[info] 53-53: use jsonify instead of json.dumps for JSON output
Context: json.dumps(data)
Note: [CWE-116] Improper Encoding or Escaping of Output.
(use-jsonify)
[error] 118-128: Command coming from incoming request
Context: subprocess.run( # noqa: S603 - uv and all inputs are controlled by this test
[
uv,
"build",
"--wheel",
"--out-dir",
str(wheelhouse),
str(ROOT / "adapters" / "claude"),
],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
[error] 133-136: Command coming from incoming request
Context: subprocess.run( # noqa: S603 - uv and all inputs are controlled by this test
[uv, "pip", "install", "--python", str(python), "--no-deps", str(wheel)],
check=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(subprocess-from-request)
🪛 Ruff (0.16.0)
examples/notebooks/02_variations.ipynb
[warning] 281-281: Abstract raise to an inner function
(TRY301)
[warning] 281-281: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 286-286: Abstract raise to an inner function
(TRY301)
[warning] 286-286: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 290-290: Abstract raise to an inner function
(TRY301)
[warning] 290-290: Avoid specifying long messages outside the exception class
(TRY003)
tests/python/test_notebook_examples.py
[warning] 186-186: Avoid specifying long messages outside the exception class
(TRY003)
[warning] 239-239: Avoid specifying long messages outside the exception class
(TRY003)
AjayThorve
left a comment
There was a problem hiding this comment.
The core descriptor-owned validation direction is sound, and the focused Rust/Python tests and license diff pass. I am requesting changes for two release-readiness issues.
- Do not ship
release/0.1with the non-Claude adapter settings regression. FABRIC-132 permits phased schema implementation, but this PR disables existing Codex, Deep Agents, and Hermes settings and I could not find tracked follow-up issues for those schemas. Either include the remaining schemas or create explicit follow-ups and gate the release on them; this PR should not be treated as release-complete by itself. - Enforce the object-instance invariant when loading descriptor schemas. An explicitly string- or array-typed schema is syntactically valid today but can never validate
harness.settings, which Fabric always supplies as an object.
Before re-review, also:
- Rebase the single feature commit onto current
release/0.1(d438ac3) and rerun CI. The parent tree is identical, so this should be mechanical. - Add
Relates to FABRIC-132to the PR body and update the stale statement that the commit parent is the current release head. - Expand the manifest-local
jsonschemarationale as requested by CodeRabbit. The dependency choice itself is reasonable; the full license diff passed with 87 Rust additions and no Python changes.
The two CodeRabbit environment-leak comments are false positives: tests/conftest.py has an autouse restore_environ fixture that restores direct os.environ changes after every test, and the repository test guidance explicitly prefers that pattern over monkeypatch.setenv.
Validation at 10e1f404: cargo fmt --all -- --check; 44 core Rust tests; 91 affected Python tests; and scripts/licensing/license_diff.py --base-ref upstream/release/0.1 all passed.
10e1f40 to
3778da6
Compare
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
3778da6 to
d1310c1
Compare
Signed-off-by: Zhongxuan Wang <daniewang@nvidia.com>
AjayThorve
left a comment
There was a problem hiding this comment.
Validated the descriptor-owned harness settings schemas for Claude, Codex, Deep Agents, and Hermes at this head. Valid settings are preserved, unknown or invalid settings fail with precise paths, schema defaults are not injected, and the real adapter plus Relay paths were exercised successfully. All review threads are resolved and completed CI checks are green.
AnuradhaKaruppiah
left a comment
There was a problem hiding this comment.
Directionally this is a great change!
Salonijain27
left a comment
There was a problem hiding this comment.
Approved from a dependency point of view
|
/merge |
Overview
Validate
harness.settingsduringFabric.plan()against JSON Schema owned by the exact resolved adapter descriptor.settings_schema.RunPlancannot bypass planning invariants.RunPlan; JSON Schema defaults are documentation only and are never applied.The bundled schemas cover every setting the current adapters consume:
setting_sources,max_budget_usd, andpermission_mode.sandbox,approval_mode,developer_instructions,personality,reasoning_effort,service_tier,output_schema, and the intentional openconfig_overridesescape hatch.deepagentsobject with JSON-safeinterrupt_onand declarative or Agent Protocolsubagentsdefinitions.reasoning_config,plugins_enabled,save_trajectories,max_tokens, andterminal_timeout.Post-normalization fields remain canonical:
instructions.systemsupplies Codex base instructions, andruntime.max_turnssupplies HermesAIAgent.max_iterations. The schemas do not reintroduce the staleharness.settings.base_instructionsorharness.settings.max_iterationsnames.Details
ADAPTER_PYTHON, installed-wheel, and agent-local descriptors atomically with their settings schema.ResolvedAdapterDescriptor; there is no adapter-to-schema table, separate schema search, harness-name inference, or adapter Python import.UnknownAdapterprecedence over settings validation.The Rust core uses released
jsonschema0.49.2 with default features disabled.schemarsgenerates schemas but does not validate arbitrary instances, and invoking Python would cross the language-neutral core boundary. A smaller Rust validator was evaluated and rejected because its released version reports the wrong array index afterprefixItems; this change includes a regression for that diagnostic path. With default features disabled, remote schema retrieval is unavailable, so adapter schemas must be self-contained while local$defsreferences remain supported.No NeMo Fabric package, workspace, internal dependency pin, or release version changes in this PR. The manifest adds the new
jsonschemadependency;Cargo.lockonly adds its resolved dependency graph and changes no existing dependency version. No Python manifest or lockfile changes.Breaking behavior and migration
harness.settingsmust addsettings_schema; schema-less descriptors now accept only an empty settings map.harness.settings.pythonandharness.settings.python_envare not accepted by bundled schemas or descriptor discovery. UseADAPTER_PYTHONfor split-interpreter selection.allowed_toolssetting is not accepted. Use normalizedtools.enabled; indontAskmode those explicitly enabled tools are pre-approved.harness.settings.base_instructionsis not accepted; useinstructions.system.harness.settings.max_iterationsis not accepted; useruntime.max_turns.AdapterDescriptorstruct literals must addsettings_schema: Nonewhen they do not declare a schema.FabricErrormust handle the newInvalidHarnessSettingsvariant.Validation
cargo fmt --all -- --checkjust --fmt --checkcargo check -p fabric-python --lockedjust build-pythonjust test-rust: 22 CLI, 1 frontier, and 45 core tests passed; Rust doc tests passedjust test-python: 574 passed, 15 skippedjust docs: all checks passed; only the expected unauthenticated Fern redirect check was skippedcargo-about0.9.0scripts/licensing/license_diff.py --base-ref upstream/release/0.1: 87 Rust additions, no removals or updates; no Python additions, removals, or updatesrelease/0.1Where should the reviewer start?
Start with
validate_harness_settingsand descriptor loading incrates/fabric-core/src/config.rs, then the runtime-start defense incrates/fabric-core/src/runtime.rs. Review the four canonicaladapters/*/fabric-adapter.jsonfiles andtests/python/test_harness_settings_validation.pyfor the adapter contracts. Installed-wheel, split-interpreter,ADAPTER_PYTHON, and override coverage is intests/python/test_installed_adapter_discovery.py.Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)
Closes FABRIC-132
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.