Skip to content

docs(customizer): align guides with current APIs and workflows#834

Merged
albcui merged 25 commits into
mainfrom
solu/doc-fixes
Jul 22, 2026
Merged

docs(customizer): align guides with current APIs and workflows#834
albcui merged 25 commits into
mainfrom
solu/doc-fixes

Conversation

@soluwalana

@soluwalana soluwalana commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Resolve accumulated Customizer documentation drift across API examples, tutorials, model references, and Fern rendering.

  • align FileSet, ModelSpec, job, metrics, and inference examples with current schemas
  • add tutorial failure guards and correct deployment readiness handling
  • update GPT-OSS, storage, Hugging Face, Unsloth, and CUDA 13 guidance
  • fix internal links, terminology, JSON examples, titles, and stale snippets
  • synchronize source notebooks and generated Fern artifacts
  • add validation for missing NotebookViewer artifacts Validation:
  • make docs-check
  • npm run broken-links

Summary by CodeRabbit

  • Documentation
    • Refreshed customization tutorials and notebooks (including DPO, LoRA, Full SFT, embedding) with clearer setup, public vs gated Hugging Face authentication, updated inference guidance, and standardized “Hugging Face” / “Fine-Tuning” wording.
    • Updated dataset format examples and clarified training options, parallelism constraints, and storage/disk budgeting.
  • Quality Improvements
    • Improved documentation validation/CI checks, including NotebookViewer artifact syncing and revised gated publishing rules.
    • Updated job metrics reporting and examples to use train_loss.
  • Hardware / Compatibility
    • Raised requirements to CUDA 13+ and updated related driver guidance.

@soluwalana
soluwalana requested review from a team as code owners July 21, 2026 20:31
@github-actions github-actions Bot added the docs label Jul 21, 2026
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Changes

Customizer documentation and tutorial updates

Layer / File(s) Summary
Fern validation workflow
docs/fern/package.json, docs/fern/scripts/*, docs/AGENTS.md, docs/fern/README.md
Added NotebookViewer artifact validation to Fern checks, compared generated notebook artifacts with source notebooks, and updated publication and conversion guidance.
DPO customization tutorial
docs/fern/components/notebooks/dpo-customization-job.*, docs/customizer/tutorials/dpo-customization-job.ipynb
Added an end-to-end RL/DPO workflow covering preference data, model setup, job monitoring, output validation, deployment, and inference.
Tutorial execution updates
docs/customizer/tutorials/*, docs/fern/components/notebooks/*
Updated CUDA requirements, authentication behavior, nested training metrics, deployment gateway readiness, failure handling, and inference model names across customization tutorials.
Customizer reference content
docs/customizer/about.mdx, docs/customizer/manage-customization-jobs/*, docs/customizer/models/*
Updated backend capabilities, hyperparameter schemas, model contracts, dataset examples, API fields, model links, and GPT-OSS guidance.
Requirements and troubleshooting
docs/requirements.mdx, docs/support-matrix.mdx, docs/troubleshooting/customizer.mdx
Raised documented GPU support to CUDA 13/R580 and revised storage budgeting and Hugging Face troubleshooting guidance.

Possibly related PRs

Suggested labels: chore

Suggested reviewers: mckornfield, maxdubrinsky, svvarom

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the docs-heavy changes and accurately summarizes aligning guides with current APIs and workflows.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch solu/doc-fixes

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 11

Caution

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

⚠️ Outside diff range comments (2)
docs/customizer/tutorials/format-training-dataset.mdx (1)

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

Move this Next Steps section to the end of the page.

The page continues with ## Completion Models at Line 342, so this block prematurely ends the tutorial. Move it below the completion-model content or rename it as a transition section.

As per coding guidelines: “Include 'Next Steps' section at the end with cross-links to related documentation content.”

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

In `@docs/customizer/tutorials/format-training-dataset.mdx` around lines 333 -
338, Move the “## Next Steps” section from its current position before “##
Completion Models” to the end of the page, preserving its existing
customization-job links and wording.

Source: Coding guidelines

docs/customizer/tutorials/embedding-customization-job.mdx (1)

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

Move prerequisites before the tutorial content.

The page presents About and Dataset Format before ## Prerequisites. Move the prerequisites block near the top so users see environment requirements before following the tutorial.

As per coding guidelines: “Always list prerequisites at the top of documentation pages before other content.”

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

In `@docs/customizer/tutorials/embedding-customization-job.mdx` around lines 38 -
47, The tutorial’s “## Prerequisites” section currently appears after
introductory content such as About and Dataset Format. Move the entire
prerequisites block, including its requirements and model-token note, near the
top of the page before all other tutorial content while preserving its existing
wording and formatting.

Source: Coding guidelines

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

Inline comments:
In `@docs/customizer/manage-customization-jobs/hyperparameters.mdx`:
- Around line 239-243: Update the output.save_method documentation to cover
all_weights runs: specify the valid save_method value and/or default for
full-weight training, or explicitly state that the field is ignored for
all_weights. Keep the existing lora and merged_* behavior documented accurately.

In `@docs/customizer/tutorials/distillation-customization-job.mdx`:
- Around line 436-442: The deployment polling logic must honor the configured
timeout by passing the remaining time, rather than a fixed 60 seconds, to
wait_for_gateway in docs/customizer/tutorials/distillation-customization-job.mdx
lines 436-442 and docs/customizer/tutorials/distillation-customization-job.ipynb
lines 515-523. Calculate the remaining timeout from the configured timeout and
elapsed time, use it for the gateway wait, and apply the same change in both
synchronized tutorial representations.

In `@docs/customizer/tutorials/dpo-customization-job.ipynb`:
- Around line 491-500: Update the Conclusion section’s Next steps text to
replace the internal `nemo-customizer` skill reference with the public
`/documentation/customizer-reference/manage-customization-jobs/training-configuration`
documentation link, while preserving the surrounding hyperparameter guidance.
- Around line 216-231: Update the HF_TOKEN setup before create_or_get_secret and
any model FileSet provisioning to fail immediately when HF_TOKEN is absent,
rather than printing a skip message and returning None. Preserve the existing
create-or-retrieve behavior for valid tokens, and ensure provisioning only
proceeds with a token_secret.

In `@docs/customizer/tutorials/embedding-customization-job.mdx`:
- Around line 411-424: Update the HuggingfaceStorageConfigParam construction in
the embedding customization setup to pass the optional token_secret keyword
argument directly in the constructor, using hf_secret.name when available;
remove the subsequent storage mutation while preserving behavior when hf_secret
is absent.

In `@docs/customizer/tutorials/understand-configurations-and-models.mdx`:
- Around line 284-293: The MoE example contradicts the documented
tensor-parallel constraint. Update the example’s parallel-size values and
derived calculations to use tensor_parallel_size=1, or retain
tensor_parallel_size=2 while listing only expert_parallel_size=1 as valid;
ensure the valid and invalid value descriptions remain consistent with the rules
above.

In `@docs/fern/components/notebooks/distillation-customization-job.ts`:
- Around line 98-100: Ensure deployment readiness failures still execute
baseline-resource cleanup by wrapping the workflow around wait_for_deployment in
try/finally or an equivalent failure-cleanup path, while preserving existing
error propagation. Apply the same change to
docs/fern/components/notebooks/distillation-customization-job.ts lines 98-100
and docs/fern/components/notebooks/distillation-customization-job.json lines
93-95, keeping both notebook representations synchronized.
- Around line 98-100: Update wait_for_deployment so the overall timeout is
checked before invoking client.models.wait_for_gateway in the READY branch; if
the deadline has passed, raise the existing TimeoutError immediately. Apply the
equivalent change to
docs/fern/components/notebooks/distillation-customization-job.ts lines 98-100
and docs/fern/components/notebooks/distillation-customization-job.json lines
93-95.

In `@docs/fern/components/notebooks/sft-customization-job.json`:
- Around line 92-95: Update the create_or_get_secret and Hugging Face setup flow
so HF_TOKEN is optional: only create hf_secret and access hf_secret.name when
HF_TOKEN is set, and otherwise leave token_secret unset or omitted for public
models. Ensure downstream configuration does not unconditionally reference
hf_secret.name.

In `@docs/fern/README.md`:
- Line 117: Update the CI workflow description in the documentation table to
accurately reflect fern-docs-ci.yaml: remove npm run broken-links unless that
step is added to the workflow, while preserving the existing npm run check
description.

In `@docs/fern/scripts/validate-notebook-viewer.mjs`:
- Around line 88-108: The notebook validation flow must also cover the
NotebookViewer TypeScript artifact, not just the JSON artifact. Update the
validation logic around the sourceCells/artifactCells comparison to verify the
corresponding .ts file re-exports or reflects the same JSON content, ensuring
stale TypeScript artifacts cause validation failure while preserving the
existing stale-JSON check.

---

Outside diff comments:
In `@docs/customizer/tutorials/embedding-customization-job.mdx`:
- Around line 38-47: The tutorial’s “## Prerequisites” section currently appears
after introductory content such as About and Dataset Format. Move the entire
prerequisites block, including its requirements and model-token note, near the
top of the page before all other tutorial content while preserving its existing
wording and formatting.

In `@docs/customizer/tutorials/format-training-dataset.mdx`:
- Around line 333-338: Move the “## Next Steps” section from its current
position before “## Completion Models” to the end of the page, preserving its
existing customization-job links and wording.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 85cee324-e32c-476c-a2b1-9551945eac20

📥 Commits

Reviewing files that changed from the base of the PR and between 0968a21 and 38b6280.

📒 Files selected for processing (67)
  • docs/AGENTS.md
  • docs/customizer/about.mdx
  • docs/customizer/index.mdx
  • docs/customizer/manage-customization-jobs/create-job.mdx
  • docs/customizer/manage-customization-jobs/get-job-status.mdx
  • docs/customizer/manage-customization-jobs/hyperparameters.mdx
  • docs/customizer/manage-customization-jobs/index.mdx
  • docs/customizer/manage-customization-jobs/list-active-jobs.mdx
  • docs/customizer/manage-model-entities/create-fileset.mdx
  • docs/customizer/manage-model-entities/create-model-entity.mdx
  • docs/customizer/manage-model-entities/index.mdx
  • docs/customizer/models/data-format.mdx
  • docs/customizer/models/embedding.mdx
  • docs/customizer/models/gpt-oss.mdx
  • docs/customizer/models/index.mdx
  • docs/customizer/models/llama-nemotron.mdx
  • docs/customizer/models/llama.mdx
  • docs/customizer/models/mistral.mdx
  • docs/customizer/models/phi.mdx
  • docs/customizer/models/qwen.mdx
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/config-list-example.json
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/distillation-customization-job.ipynb
  • docs/customizer/tutorials/distillation-customization-job.mdx
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.mdx
  • docs/customizer/tutorials/format-training-dataset.mdx
  • docs/customizer/tutorials/import-hf-model.mdx
  • docs/customizer/tutorials/lora-customization-job.ipynb
  • docs/customizer/tutorials/lora-customization-job.mdx
  • docs/customizer/tutorials/metrics.mdx
  • docs/customizer/tutorials/optimize-throughput.ipynb
  • docs/customizer/tutorials/optimize-throughput.mdx
  • docs/customizer/tutorials/sft-customization-job.ipynb
  • docs/customizer/tutorials/sft-customization-job.mdx
  • docs/customizer/tutorials/understand-configurations-and-models.mdx
  • docs/fern/README.md
  • docs/fern/components/notebooks/distillation-customization-job.json
  • docs/fern/components/notebooks/distillation-customization-job.ts
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/components/notebooks/embedding-customization-job.json
  • docs/fern/components/notebooks/embedding-customization-job.ts
  • docs/fern/components/notebooks/lora-customization-job.json
  • docs/fern/components/notebooks/lora-customization-job.ts
  • docs/fern/components/notebooks/optimize-throughput.json
  • docs/fern/components/notebooks/optimize-throughput.ts
  • docs/fern/components/notebooks/sft-customization-job.json
  • docs/fern/components/notebooks/sft-customization-job.ts
  • docs/fern/package.json
  • docs/fern/scripts/README.md
  • docs/fern/scripts/ipynb-to-mdx.py
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/requirements.mdx
  • docs/support-matrix.mdx
  • docs/troubleshooting/customizer.mdx
💤 Files with no reviewable changes (12)
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/_snippets/output/config-list-example.json

Comment thread docs/customizer/manage-customization-jobs/hyperparameters.mdx
Comment thread docs/customizer/tutorials/distillation-customization-job.mdx Outdated
Comment thread docs/customizer/tutorials/dpo-customization-job.ipynb
Comment thread docs/customizer/tutorials/dpo-customization-job.ipynb
Comment thread docs/customizer/tutorials/embedding-customization-job.mdx Outdated
Comment thread docs/customizer/tutorials/understand-configurations-and-models.mdx Outdated
Comment thread docs/fern/components/notebooks/distillation-customization-job.ts Outdated
Comment thread docs/fern/components/notebooks/sft-customization-job.json Outdated
Comment thread docs/fern/README.md
Comment thread docs/fern/scripts/validate-notebook-viewer.mjs
@github-actions

github-actions Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 27114/34832 77.8% 62.1%
Integration Tests 15891/33443 47.5% 19.9%

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

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

⚠️ Outside diff range comments (1)
docs/customizer/tutorials/metrics.mdx (1)

61-66: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Read metrics from status_details.metrics.

details is already task.status_details; train_loss and val_loss are nested under details["metrics"], so the current example prints None. Apply the same nested lookup to both loss lines.

Proposed fix
             details = task.status_details or {}
+            metrics = details.get("metrics") or {}
             print(f"Training Phase: {details.get('phase')}")
             print(f"Step: {details.get('step')}/{details.get('max_steps')}")
             print(f"Epoch: {details.get('epoch')}/{details.get('num_epochs')}")
-            print(f"Training Loss: {details.get('train_loss')}")
-            print(f"Validation Loss: {details.get('val_loss')}")
+            print(f"Training Loss: {metrics.get('train_loss')}")
+            print(f"Validation Loss: {metrics.get('val_loss')}")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/customizer/tutorials/metrics.mdx` around lines 61 - 66, Update the
metrics example’s two loss print statements to read train_loss and val_loss from
the nested status_details.metrics object, while leaving the phase, step, and
epoch lookups on details unchanged.
♻️ Duplicate comments (1)
docs/customizer/tutorials/distillation-customization-job.mdx (1)

436-442: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Use the deployment-aware readiness helper and remaining timeout.

wait_for_gateway accepts a provider name, but this passes the deployment name. Use the existing wait_for_status(..., desired_status="READY", check_gateway=True) helper, which accepts deployment names. Also pass only the time remaining; the fixed 60-second wait can exceed timeout_minutes. The SDK documents wait_for_gateway as provider-based and wait_for_status as deployment-based. (docs.nvidia.com)

Suggested fix
         if dep.status == "READY":
             print("\nDeployment is ready!")
-            if not client.models.wait_for_gateway(deployment_name, workspace="default", timeout=60):
-                raise RuntimeError("Inference gateway did not become ready")
+            remaining = int(timeout - elapsed)
+            if remaining <= 0:
+                raise TimeoutError(f"Deployment timeout after {timeout_minutes} minutes")
+            if not client.models.wait_for_status(
+                deployment_name=deployment_name,
+                desired_status="READY",
+                workspace="default",
+                timeout=remaining,
+                check_gateway=True,
+            ):
+                raise TimeoutError("Inference gateway did not become ready")
             return dep
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/customizer/tutorials/distillation-customization-job.mdx` around lines
436 - 442, Replace the deployment-name call to client.models.wait_for_gateway in
the deployment polling flow with the deployment-aware wait_for_status helper,
passing desired_status="READY", check_gateway=True, and the remaining timeout
rather than a fixed 60 seconds. Preserve the existing RuntimeError when
readiness is not reached and the surrounding failure and timeout 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.

Outside diff comments:
In `@docs/customizer/tutorials/metrics.mdx`:
- Around line 61-66: Update the metrics example’s two loss print statements to
read train_loss and val_loss from the nested status_details.metrics object,
while leaving the phase, step, and epoch lookups on details unchanged.

---

Duplicate comments:
In `@docs/customizer/tutorials/distillation-customization-job.mdx`:
- Around line 436-442: Replace the deployment-name call to
client.models.wait_for_gateway in the deployment polling flow with the
deployment-aware wait_for_status helper, passing desired_status="READY",
check_gateway=True, and the remaining timeout rather than a fixed 60 seconds.
Preserve the existing RuntimeError when readiness is not reached and the
surrounding failure and timeout handling.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 7c012928-4c76-4307-be3e-9dd59f8cb476

📥 Commits

Reviewing files that changed from the base of the PR and between 38b6280 and 6c24fe9.

📒 Files selected for processing (67)
  • docs/AGENTS.md
  • docs/customizer/about.mdx
  • docs/customizer/index.mdx
  • docs/customizer/manage-customization-jobs/create-job.mdx
  • docs/customizer/manage-customization-jobs/get-job-status.mdx
  • docs/customizer/manage-customization-jobs/hyperparameters.mdx
  • docs/customizer/manage-customization-jobs/index.mdx
  • docs/customizer/manage-customization-jobs/list-active-jobs.mdx
  • docs/customizer/manage-model-entities/create-fileset.mdx
  • docs/customizer/manage-model-entities/create-model-entity.mdx
  • docs/customizer/manage-model-entities/index.mdx
  • docs/customizer/models/data-format.mdx
  • docs/customizer/models/embedding.mdx
  • docs/customizer/models/gpt-oss.mdx
  • docs/customizer/models/index.mdx
  • docs/customizer/models/llama-nemotron.mdx
  • docs/customizer/models/llama.mdx
  • docs/customizer/models/mistral.mdx
  • docs/customizer/models/phi.mdx
  • docs/customizer/models/qwen.mdx
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/config-list-example.json
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/distillation-customization-job.ipynb
  • docs/customizer/tutorials/distillation-customization-job.mdx
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.mdx
  • docs/customizer/tutorials/format-training-dataset.mdx
  • docs/customizer/tutorials/import-hf-model.mdx
  • docs/customizer/tutorials/lora-customization-job.ipynb
  • docs/customizer/tutorials/lora-customization-job.mdx
  • docs/customizer/tutorials/metrics.mdx
  • docs/customizer/tutorials/optimize-throughput.ipynb
  • docs/customizer/tutorials/optimize-throughput.mdx
  • docs/customizer/tutorials/sft-customization-job.ipynb
  • docs/customizer/tutorials/sft-customization-job.mdx
  • docs/customizer/tutorials/understand-configurations-and-models.mdx
  • docs/fern/README.md
  • docs/fern/components/notebooks/distillation-customization-job.json
  • docs/fern/components/notebooks/distillation-customization-job.ts
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/components/notebooks/embedding-customization-job.json
  • docs/fern/components/notebooks/embedding-customization-job.ts
  • docs/fern/components/notebooks/lora-customization-job.json
  • docs/fern/components/notebooks/lora-customization-job.ts
  • docs/fern/components/notebooks/optimize-throughput.json
  • docs/fern/components/notebooks/optimize-throughput.ts
  • docs/fern/components/notebooks/sft-customization-job.json
  • docs/fern/components/notebooks/sft-customization-job.ts
  • docs/fern/package.json
  • docs/fern/scripts/README.md
  • docs/fern/scripts/ipynb-to-mdx.py
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/requirements.mdx
  • docs/support-matrix.mdx
  • docs/troubleshooting/customizer.mdx
💤 Files with no reviewable changes (12)
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/config-list-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
🚧 Files skipped from review as they are similar to previous changes (49)
  • docs/customizer/models/phi.mdx
  • docs/customizer/models/qwen.mdx
  • docs/support-matrix.mdx
  • docs/fern/scripts/README.md
  • docs/customizer/models/llama.mdx
  • docs/customizer/models/gpt-oss.mdx
  • docs/requirements.mdx
  • docs/customizer/manage-model-entities/index.mdx
  • docs/customizer/index.mdx
  • docs/AGENTS.md
  • docs/troubleshooting/customizer.mdx
  • docs/customizer/models/llama-nemotron.mdx
  • docs/customizer/manage-customization-jobs/get-job-status.mdx
  • docs/customizer/manage-model-entities/create-model-entity.mdx
  • docs/fern/package.json
  • docs/customizer/manage-customization-jobs/index.mdx
  • docs/customizer/manage-customization-jobs/list-active-jobs.mdx
  • docs/customizer/models/index.mdx
  • docs/fern/README.md
  • docs/customizer/models/embedding.mdx
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/customizer/tutorials/lora-customization-job.mdx
  • docs/customizer/models/mistral.mdx
  • docs/customizer/manage-customization-jobs/create-job.mdx
  • docs/customizer/tutorials/lora-customization-job.ipynb
  • docs/fern/components/notebooks/lora-customization-job.ts
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/customizer/tutorials/format-training-dataset.mdx
  • docs/fern/components/notebooks/lora-customization-job.json
  • docs/customizer/models/data-format.mdx
  • docs/fern/components/notebooks/distillation-customization-job.json
  • docs/fern/components/notebooks/distillation-customization-job.ts
  • docs/customizer/tutorials/embedding-customization-job.mdx
  • docs/customizer/manage-customization-jobs/hyperparameters.mdx
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/customizer/tutorials/import-hf-model.mdx
  • docs/fern/scripts/ipynb-to-mdx.py
  • docs/fern/components/notebooks/embedding-customization-job.json
  • docs/customizer/tutorials/understand-configurations-and-models.mdx
  • docs/customizer/tutorials/sft-customization-job.ipynb
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/fern/components/notebooks/optimize-throughput.json
  • docs/fern/components/notebooks/optimize-throughput.ts
  • docs/fern/components/notebooks/sft-customization-job.json
  • docs/customizer/tutorials/distillation-customization-job.ipynb
  • docs/fern/components/notebooks/sft-customization-job.ts
  • docs/fern/components/notebooks/embedding-customization-job.ts
  • docs/customizer/tutorials/optimize-throughput.ipynb
  • docs/customizer/tutorials/embedding-customization-job.ipynb

Comment thread docs/customizer/models/gpt-oss.mdx Outdated
Comment thread docs/customizer/about.mdx Outdated
Comment thread docs/customizer/about.mdx Outdated
Comment thread docs/customizer/about.mdx Outdated
Comment thread docs/customizer/tutorials/optimize-throughput.mdx
@soluwalana
soluwalana force-pushed the solu/doc-fixes branch 3 times, most recently from 2a18865 to d8fa9a1 Compare July 21, 2026 21:27

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 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 `@docs/customizer/about.mdx`:
- Around line 248-256: Remove the TP sizing, multi-node, and performance
guidance from the Pipeline Parallelism section in the documentation. Relocate
that content under the Tensor Parallelism section, or replace it with guidance
describing actual PP constraints while keeping TP-specific details out of the PP
section.

In `@docs/customizer/tutorials/distillation-customization-job.mdx`:
- Around line 461-462: Update the cleanup sequence around
client.inference.deployments.delete and
client.inference.deployment_configs.delete to wait until the deployment reaches
the DELETED state before deleting BASELINE_DEPLOYMENT_CONFIG. Reuse the
tutorial’s existing deployment-deletion polling or wait mechanism, preserving
the current names and workspace.

In `@docs/customizer/tutorials/sft-customization-job.mdx`:
- Around line 243-248: Remove all direct hyperlinks to the gated
meta-llama/Llama-3.2-1B-Instruct checkpoint in the tutorial, including the
introductory reference and authentication example. Keep the model ID as plain
text and retain instructions telling users to request access and accept the
model terms.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 8832ffc6-fdfb-44b0-aa8f-97ee5d6cf94e

📥 Commits

Reviewing files that changed from the base of the PR and between 6c24fe9 and d8fa9a1.

📒 Files selected for processing (67)
  • docs/AGENTS.md
  • docs/customizer/about.mdx
  • docs/customizer/index.mdx
  • docs/customizer/manage-customization-jobs/create-job.mdx
  • docs/customizer/manage-customization-jobs/get-job-status.mdx
  • docs/customizer/manage-customization-jobs/hyperparameters.mdx
  • docs/customizer/manage-customization-jobs/index.mdx
  • docs/customizer/manage-customization-jobs/list-active-jobs.mdx
  • docs/customizer/manage-model-entities/create-fileset.mdx
  • docs/customizer/manage-model-entities/create-model-entity.mdx
  • docs/customizer/manage-model-entities/index.mdx
  • docs/customizer/models/data-format.mdx
  • docs/customizer/models/embedding.mdx
  • docs/customizer/models/gpt-oss.mdx
  • docs/customizer/models/index.mdx
  • docs/customizer/models/llama-nemotron.mdx
  • docs/customizer/models/llama.mdx
  • docs/customizer/models/mistral.mdx
  • docs/customizer/models/phi.mdx
  • docs/customizer/models/qwen.mdx
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/config-list-example.json
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/distillation-customization-job.ipynb
  • docs/customizer/tutorials/distillation-customization-job.mdx
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.mdx
  • docs/customizer/tutorials/format-training-dataset.mdx
  • docs/customizer/tutorials/import-hf-model.mdx
  • docs/customizer/tutorials/lora-customization-job.ipynb
  • docs/customizer/tutorials/lora-customization-job.mdx
  • docs/customizer/tutorials/metrics.mdx
  • docs/customizer/tutorials/optimize-throughput.ipynb
  • docs/customizer/tutorials/optimize-throughput.mdx
  • docs/customizer/tutorials/sft-customization-job.ipynb
  • docs/customizer/tutorials/sft-customization-job.mdx
  • docs/customizer/tutorials/understand-configurations-and-models.mdx
  • docs/fern/README.md
  • docs/fern/components/notebooks/distillation-customization-job.json
  • docs/fern/components/notebooks/distillation-customization-job.ts
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/components/notebooks/embedding-customization-job.json
  • docs/fern/components/notebooks/embedding-customization-job.ts
  • docs/fern/components/notebooks/lora-customization-job.json
  • docs/fern/components/notebooks/lora-customization-job.ts
  • docs/fern/components/notebooks/optimize-throughput.json
  • docs/fern/components/notebooks/optimize-throughput.ts
  • docs/fern/components/notebooks/sft-customization-job.json
  • docs/fern/components/notebooks/sft-customization-job.ts
  • docs/fern/package.json
  • docs/fern/scripts/README.md
  • docs/fern/scripts/ipynb-to-mdx.py
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/requirements.mdx
  • docs/support-matrix.mdx
  • docs/troubleshooting/customizer.mdx
💤 Files with no reviewable changes (12)
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/config-list-example.json
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
🚧 Files skipped from review as they are similar to previous changes (46)
  • docs/customizer/models/phi.mdx
  • docs/AGENTS.md
  • docs/customizer/models/llama.mdx
  • docs/support-matrix.mdx
  • docs/customizer/manage-customization-jobs/index.mdx
  • docs/requirements.mdx
  • docs/customizer/models/mistral.mdx
  • docs/fern/scripts/README.md
  • docs/customizer/manage-customization-jobs/get-job-status.mdx
  • docs/customizer/models/embedding.mdx
  • docs/customizer/manage-customization-jobs/list-active-jobs.mdx
  • docs/fern/README.md
  • docs/customizer/models/qwen.mdx
  • docs/fern/package.json
  • docs/customizer/models/llama-nemotron.mdx
  • docs/fern/components/notebooks/lora-customization-job.json
  • docs/customizer/models/gpt-oss.mdx
  • docs/troubleshooting/customizer.mdx
  • docs/customizer/index.mdx
  • docs/fern/scripts/ipynb-to-mdx.py
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/customizer/manage-model-entities/create-model-entity.mdx
  • docs/fern/components/notebooks/lora-customization-job.ts
  • docs/customizer/tutorials/import-hf-model.mdx
  • docs/customizer/tutorials/lora-customization-job.ipynb
  • docs/fern/components/notebooks/distillation-customization-job.ts
  • docs/customizer/tutorials/lora-customization-job.mdx
  • docs/customizer/manage-model-entities/index.mdx
  • docs/customizer/tutorials/format-training-dataset.mdx
  • docs/customizer/tutorials/distillation-customization-job.ipynb
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/customizer/tutorials/metrics.mdx
  • docs/customizer/manage-customization-jobs/hyperparameters.mdx
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/manage-customization-jobs/create-job.mdx
  • docs/fern/components/notebooks/embedding-customization-job.json
  • docs/fern/components/notebooks/sft-customization-job.ts
  • docs/customizer/tutorials/embedding-customization-job.mdx
  • docs/customizer/tutorials/optimize-throughput.ipynb
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/components/notebooks/embedding-customization-job.ts
  • docs/customizer/tutorials/understand-configurations-and-models.mdx
  • docs/customizer/tutorials/embedding-customization-job.ipynb
  • docs/fern/components/notebooks/distillation-customization-job.json
  • docs/fern/components/notebooks/optimize-throughput.ts
  • docs/fern/components/notebooks/optimize-throughput.json

Comment thread docs/customizer/about.mdx Outdated
Comment thread docs/customizer/tutorials/distillation-customization-job.mdx
Comment thread docs/customizer/tutorials/sft-customization-job.mdx
@albcui
albcui self-requested a review July 21, 2026 21:53
@albcui
albcui enabled auto-merge July 22, 2026 01:25
soluwalana and others added 14 commits July 22, 2026 14:55
Resolve accumulated Customizer documentation drift across API examples, tutorials, model references, and Fern rendering.

- align FileSet, ModelSpec, job, metrics, and inference examples with current schemas
- add tutorial failure guards and correct deployment readiness handling
- update GPT-OSS, storage, Hugging Face, Unsloth, and CUDA 13 guidance
- fix internal links, terminology, JSON examples, titles, and stale snippets
- synchronize source notebooks and generated Fern artifacts
- add validation for missing NotebookViewer artifacts
Validation:
- make docs-check
- npm run broken-links

Signed-off-by: Sam Oluwalana <[email protected]>
Co-authored-by: Albert Cui <[email protected]>

Signed-off-by: Sam Oluwalana <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* tests(auditor): E2E tests for Auditor

Signed-off-by: Paul A. Parkanzky <[email protected]>

* link async submit

Signed-off-by: Paul A. Parkanzky <[email protected]>

* re-add garak install to docker file

Signed-off-by: Paul A. Parkanzky <[email protected]>

* rm superfluous uv sync

Signed-off-by: Paul A. Parkanzky <[email protected]>

* switch back to default cpu/cpu provider/profile

Signed-off-by: Paul A. Parkanzky <[email protected]>

* skip tests that depend on future image

Signed-off-by: Paul A. Parkanzky <[email protected]>

---------

Signed-off-by: Paul A. Parkanzky <[email protected]>
Co-authored-by: Paul A. Parkanzky <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
Extracts the local services process lifecycle out of the CLI into a
standalone SDK module (local.services, local.process, local.transport)
so that Python callers can programmatically start, stop, connect to,
and manage NeMo Platform service instances without importing CLI internals.

The key addition is first-class Unix domain socket (UDS) transport support
across the entire stack — from the platform runner and uvicorn server
binding, through inter-service HTTP clients (auth, health checks,
SDK factory), to the jobs-launcher Go sidecar.

Signed-off-by: Ryan S <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* feat(studio): Dedicated Agent Details Page

Signed-off-by: Sean Teramae <[email protected]>

* fix agent suggestions route

Signed-off-by: Sean Teramae <[email protected]>

* Remove unused tabs

Signed-off-by: Sean Teramae <[email protected]>

* fix overflow

Signed-off-by: Sean Teramae <[email protected]>

* fix type error

Signed-off-by: Sean Teramae <[email protected]>

---------

Signed-off-by: Sean Teramae <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* fix(studio): Use RHF for render performance

Signed-off-by: Sean Teramae <[email protected]>

* controlled components

Signed-off-by: Sean Teramae <[email protected]>

* more controller fixes

Signed-off-by: Sean Teramae <[email protected]>

* fix width in toolbar

Signed-off-by: Sean Teramae <[email protected]>

* fix logs/add test

Signed-off-by: Sean Teramae <[email protected]>

---------

Signed-off-by: Sean Teramae <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* chore: enable volume extra test

* Also fix nss test

Signed-off-by: Matt Kornfield <[email protected]>

* chore: attempt to fix a flake in eval test

Signed-off-by: Matt Kornfield <[email protected]>

---------

Signed-off-by: Matt Kornfield <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
…nt groups (#759)

* feat(entities): add $contains array-membership filter operator

Adds a CONTAINS ("$contains") comparison operator to the entity-store filter
engine so callers can query "value is an element of a JSON array field" — the
prerequisite for modeling an experiment's group membership as a list (ASE-559).

- filter_ops.py: new FilterOperator.CONTAINS, a default contains() on the
  FilterRepository ABC (additive — existing repos need not implement it), and
  dispatch in ComparisonOperation.apply. The JSON filter parser is generic over
  the enum, so $contains parses with no parser change.
- SQLAlchemyFilterRepository.contains: portable across SQLite (JSON) and
  PostgreSQL (JSONB) via a quote-delimited match on the serialized array text;
  wildcard-escaped and prefix-collision-safe ("g1" never matches ["g10"]).
- InMemoryFilterRepository.contains: native membership, matching SQL semantics.
- Parity harness extended with $contains cases incl. a prefix near-miss.

Validated: 32 parity cases pass (SQLite + in-memory agree); 113 entities +
167 plugin filter tests pass; ruff + ty clean. The Postgres path is portable by
design; Docker-backed integration tests confirm it in CI.

Signed-off-by: shanaiabuggy <[email protected]>

* feat(intake): allow an evaluation to belong to multiple groups [ASE-559]

Relax the one-group-per-evaluation constraint to many-to-many. An evaluation's
single experiment_group_id becomes an experiment_ids list (>=1); everything that
renders a group's runs (list view, rollups, sort) now spans the membership set.

- Entity: Experiment.experiment_group_id -> experiment_ids: list[str] (min 1),
  with a model_validator(mode="before") coercing legacy single-id rows to
  [id] on read (no data migration). parent_experiment_id (lineage) untouched.
- Create/update API: EvaluationRequest accepts experiment_ids (>=1);
  experiment_group_id kept as a deprecated coalesced alias. EvaluationResponse
  exposes experiment_ids with experiment_group_id as a deprecated computed alias
  (= experiment_ids[0]). Each group id is validated to exist + be live.
- Membership queries: a shared _group_membership_filter() matches
  "$contains experiment_ids OR legacy scalar experiment_group_id", used by the
  list filter (rewriting the exposed experiment_group_id param), both count
  helpers, and the delete cascade — so un-migrated rows stay queryable.
- Delete cascade is now reference-counted: a member whose sole membership was the
  deleted group is soft-deleted; a member shared with another group just drops
  that membership and survives there.

Tests: multi-group create appears in both leaderboards; empty experiment_ids
rejected; reference-counted cascade (shared member survives, sole member gone);
existing single-group + deprecated-alias paths still pass. Full intake
experiment/evaluation suite green (SQLite).

Signed-off-by: shanaiabuggy <[email protected]>

* fix(intake): make experiment_ids additive, keep experiment_group_id [ASE-559]

Address review: the create request should not force the new field on clients.

- EvaluationRequest.experiment_ids is now optional (default_factory=list) rather
  than required, so the request stays purely additive; experiment_group_id
  remains an accepted (deprecated) field. A model_validator requires at least one
  of the two and coalesces the deprecated single id into experiment_ids.
- experiment_group_id is unchanged in the response body (a deprecated computed
  alias = experiment_ids[0]), consistent with the existing parent_experiment_id
  deprecation pattern.

Signed-off-by: shanaiabuggy <[email protected]>

* feat(intake): add evaluation-to-group membership endpoints [ASE-559]

Curate existing runs into comparison groups (e.g. an all-benchmarks board)
after creation:

- POST   /evaluations/{name}/groups/{group_id} — add a membership. Validates the
  group exists + is live; idempotent when already a member.
- DELETE /evaluations/{name}/groups/{group_id} — remove a membership. Rejects
  removing the evaluation's last group with 409 (>=1-group invariant; delete the
  evaluation instead); idempotent when not a member.

Modeled on the pin/unpin endpoints. Tests cover add (idempotent + appears on the
target board), add-to-unknown-group (400), remove (drops the membership), and
remove-last-group (409).

Signed-off-by: shanaiabuggy <[email protected]>

* chore(intake): regenerate OpenAPI spec for experiment_ids + membership [ASE-559]

Regenerated via `make refresh-openapi` after the many-to-many API changes:
- EvaluationRequest/EvaluationResponse gain experiment_ids; experiment_group_id
  retained as a deprecated field/alias.
- New POST/DELETE /evaluations/{name}/groups/{group_id} membership endpoints.

Signed-off-by: shanaiabuggy <[email protected]>

* feat(studio): add "Add to group" action to the evaluations list [ASE-559]

A per-row "Add to group" action (FolderPlus, next to the pin toggle) in the
ExperimentGroupDataView opens a modal with a searchable list of the workspace's
experiment groups — excluding the ones the evaluation already belongs to — and
adds the run to the selected group so it appears on that board too. Mirrors the
pin action's mutation + scoped query invalidation, with success/error toasts.

Lets users assemble a cross-benchmark ("all-benchmarks") board from existing
runs. Uses the generated useAddEvaluationToGroup / useListExperimentGroups hooks.

- AddToGroupModal.tsx (+ .test.tsx, 4 cases: lists/excludes members, filters by
  search, calls the add hook, empty state)
- ExperimentGroupDataView: row-action button + modal wiring (pin logic unchanged)

typecheck + component test + eslint clean.

Signed-off-by: shanaiabuggy <[email protected]>

* FE & endpoint renames

Signed-off-by: shanaiabuggy <[email protected]>

* pretty

Signed-off-by: shanaiabuggy <[email protected]>

* lint

Signed-off-by: shanaiabuggy <[email protected]>

* helper

Signed-off-by: shanaiabuggy <[email protected]>

* review comments

Signed-off-by: shanaiabuggy <[email protected]>

* invalidate query

Signed-off-by: shanaiabuggy <[email protected]>

* bunny

Signed-off-by: shanaiabuggy <[email protected]>

---------

Signed-off-by: shanaiabuggy <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* Fix RadioCard clicks

Signed-off-by: Henrique Tolentino <[email protected]>

* Small fixes

Signed-off-by: Henrique Tolentino <[email protected]>

---------

Signed-off-by: Henrique Tolentino <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* Use LogViewer on Customizer Job Details

Signed-off-by: Henrique Tolentino <[email protected]>

* Add a loading check

Signed-off-by: Henrique Tolentino <[email protected]>

---------

Signed-off-by: Henrique Tolentino <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* fix(guardrails): Fix type errors in plugins

Signed-off-by: Jash Gulabrai <[email protected]>

* Address CodeRabbit

Signed-off-by: Jash Gulabrai <[email protected]>

---------

Signed-off-by: Jash Gulabrai <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
…813)

* fix(guardrails): Propagate mutated text to proxied request/response

Signed-off-by: Jash Gulabrai <[email protected]>

* Minor fix

Signed-off-by: Jash Gulabrai <[email protected]>

* remove redundant resolver

Signed-off-by: Jash Gulabrai <[email protected]>

* Remove redundant param in test helper

Signed-off-by: Jash Gulabrai <[email protected]>

* fix lint

Signed-off-by: Jash Gulabrai <[email protected]>

---------

Signed-off-by: Jash Gulabrai <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
anastasia-nesterenko and others added 8 commits July 22, 2026 14:55
* sanitize Jobs and Auditor API error responses

Signed-off-by: anastasia-nesterenko <[email protected]>

* fb

Signed-off-by: anastasia-nesterenko <[email protected]>

* update test

Signed-off-by: anastasia-nesterenko <[email protected]>

* fb

Signed-off-by: anastasia-nesterenko <[email protected]>

---------

Signed-off-by: anastasia-nesterenko <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
…#842)

* fix(models): redirect LoRA sidecar XDG_DATA_HOME to a writable volume

Follow-up to #798, which redirected only $XDG_STATE_HOME. The adapters
sidecar's `nemo services run` also resolves its local data dir (SQLite DB,
encryption key) via nmp_user_data_dir(), which honors $XDG_DATA_HOME
(default ~/.local/share/nemo) -- a distinct XDG home from $XDG_STATE_HOME
(default ~/.local/state). The pod runs the sidecar as the vLLM uid (2000),
which does not own the nmp-api image's baked $HOME (/home/nvs, uid 1000),
so startup still crash-looped with `PermissionError: [Errno 13] Permission
denied: '/home/nvs/.local'` when mkdir'ing ~/.local/share/nemo.

Point both XDG homes at a single writable scratch base (/scratch/.local),
named for the ~/.local these homes normally live under. State lands under
.../nmp/ and data under .../nemo/, so one base holds both without collision,
and it stays outside the /scratch/loras subtree the adapters controller GCs.
Covered by the deployments_plugin compiler unit test.

Signed-off-by: Albert Cui <[email protected]>

* Make comments less verbose

Signed-off-by: Albert Cui <[email protected]>

---------

Signed-off-by: Albert Cui <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
Signed-off-by: Matt Kornfield <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
…sponse (#827)

* fix(guardrails): Ensure input rail logs are not dropped from final response

Signed-off-by: Jash Gulabrai <[email protected]>

* Address MR comment

Signed-off-by: Jash Gulabrai <[email protected]>

---------

Signed-off-by: Jash Gulabrai <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
…d agents (#838)

* adding fabric[runtime] dep

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* adding cli/api support for new agent config formats

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* adding deploy support and tests for fabric configs

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* add one-shot fabric invocation for agent configs

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* scope creep

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* add workspace creation

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* undo fabric-runtime dep

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* lint

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* nits

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* fix e2e test

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* update wording

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* e2e test patch

Signed-off-by: Manjesh Mogallapalli <[email protected]>

* addressing feedback

Signed-off-by: Manjesh Mogallapalli <[email protected]>

---------

Signed-off-by: Manjesh Mogallapalli <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* feat(studio): add experiment trace comparison view [ASE-186]

Side-by-side comparison of the same test case across two sibling
experiments on the experiment trace detail page.

- "Compare to..." selector in the page header lists same-dataset sibling
  experiments; picking one adds ?compareWith=<name> to the URL (preserving
  any active ?spanId= deep link) and splits into a two-column comparison
- Each column: heading row (experiment name, expand/collapse/close), a
  metrics card (Correctness, Latency, Tkns In/Out, Cached Tkns), and the
  trace in list mode; missing sessions show "Test case not available"
- TraceSpanAccordions is now controlled: single view binds selection to the
  URL, each compare column owns selection in local state keyed by traceId;
  expand/collapse surface to the column header via SlotHeaderRenderProp
- Refresh invalidation scoped to the specific trace's query key

Signed-off-by: Nathan Walston <[email protected]>

* feat(studio): compare test-case runs across a group [ASE-186]

Address Shanaia's review — the comparison axis is now runs of the same
test case, not experiments:

- Compare selector lists every run (session) of the test case across the
  group's evaluations (FE fan-out per evaluation via useTestCaseRuns),
  labeled '<evaluation-name> · Trial <session_id last 5>'; ?compareWith=
  now carries the selected run's trace_id
- Label above the selector: 'Compare against another run of this test case'
- Page header: 'Test case comparison — Test case <test_case_id>';
  subheader: 'See how this test case performed across different runs'
- Metrics card is now per-session (not experiment rollups): cost, latency,
  tokens in/out, cached tokens, and all evaluator scores
- Removed the per-column close buttons (kept the header Clear link)

Signed-off-by: Nathan Walston <[email protected]>

* feat(studio): grouped run selector for trace comparison [ASE-186]

Refine the compare selector per design feedback (Rob/Shanaia):

- Replace the flat single-select with a grouped Dropdown menu: a panel
  title, each evaluation run as a section heading, its trials listed as
  'Trial XXXXX' rows (no repeated evaluation name per row)
- Descriptive text lives in the trigger ('Compare against evaluation run');
  removed the separate label above the control
- Picking a trial swaps the comparison column (cap stays 1 compare run for
  now); the primary run is a fixed anchor and never an option
- Add a test covering open -> grouped runs -> select -> enters comparison

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): correct compare run selector styling and loading state [ASE-186]

- Rebuild the selector on the Select control (nv-input styling) instead of
  the Dropdown menu, keeping grouped runs via DropdownSection/DropdownHeading
  inside the listbox — matches the mockup and other grouped selects
- Fixed trigger label via renderValue + placeholder (does not echo the
  selected run)
- Loading now shows a disabled control with 'Loading other runs' across the
  whole group->evaluations->trace->runs chain; 'No runs to compare to' only
  once loaded with no siblings
- Add CompareRunSelect state tests (loading/empty/ready)

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): tighten compare run dropdown to match mockup [ASE-186]

- Drop DropdownSection (the source of the divider rules between runs) and
  use compact listbox density for a tighter list
- Show hierarchy the way the mockup does: bold evaluation-run heading with
  its trials indented beneath as 'Trial XXXXX'
- a11y: each option carries an aria-label of the full '<evaluation> · Trial
  XXXXX' so screen readers get self-describing options rather than relying
  on visual weight/indent alone

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): unclip run headings and collapse single-trial evals [ASE-186]

- Fix vertically clipped evaluation headings: the scroll container was a
  flex Stack, so overflowing children were shrunk and clipped; use a block
  div with overflow-y-auto so rows keep their height
- Collapse evaluations with a single trial onto one selectable line
  ('<evaluation> · Trial XXXXX'); evaluations with multiple trials keep the
  nested heading + indented trials (per Shanaia)
- Cover both paths in CompareRunSelect tests

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): center loading spinner in compare run trigger [ASE-186]

TextInputSpinner forces className=h-full, which stretched its wrapper and
pinned the fixed-size spinner to the top of the trigger. Use a plain
size=small Spinner so the trigger's centered slot aligns it vertically.

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): drop off-center loading spinner from compare trigger [ASE-186]

The loading affordance is the disabled control + 'Loading other runs'
placeholder; the extra slotEnd spinner sat off-center next to the chevron
and added nothing over the disabled state.

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): compare dropdown hierarchy — bold options, subdued labels, real indent [ASE-186]

- Clickable rows (collapsed lines + nested trials) are now bold; labels
  (panel title + evaluation group headings) are secondary/subdued, so weight
  reads as 'bold = actionable'
- Panel title gets extra bottom spacing to separate it from the list
- Fix trial indentation: SelectItem's own padding overrode a className on the
  item, so indent the content (inner Text) instead

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): use valid text-color-* utilities in compare dropdown [ASE-186]

text-content-*/text-status-* aren't produced by the Foundations tailwind
plugin (it namespaces semantic text colors as text-color-*), so those class
names were silent no-ops and never subdued anything.

- Group headings -> text-color-subtle (most muted, per feedback)
- Panel title + Clear link + not-found body -> text-color-secondary
- Not-found heading -> text-color-primary; warning icon -> text-color-feedback-warning

Signed-off-by: Nathan Walston <[email protected]>

* style(studio): compare group headings use text-color-secondary [ASE-186]

Signed-off-by: Nathan Walston <[email protected]>

* fix(studio): use real short-form text color utilities in compare view [ASE-186]

text-color-* is the CSS variable name (--text-color-*), not the generated
utility; Tailwind emits the short form (text-secondary, text-primary,
text-feedback-warning). Swap all compare-view text colors to those so they
actually apply — group headings + title + Clear link now text-secondary,
not-found heading text-primary, warning icon text-feedback-warning.

Signed-off-by: Nathan Walston <[email protected]>

* style(studio): add child marker to nested trial rows [ASE-186]

Prefix nested trial options with a muted, decorative (aria-hidden) '↳' so
their child relationship to the evaluation heading reads at a glance. The
option's aria-label still carries the full '<evaluation> · Trial XXXXX'.

Signed-off-by: Nathan Walston <[email protected]>

* test(studio): stabilize not-available compare test for slow CI [ASE-186]

The 'test case not available' branch is the terminal state, shown only
after the full group->evals->trace->run-fanout chain settles — the slowest
path. Anchor on the mounted compare view, then wait for the terminal text
with CI headroom, instead of relying on findByText's 1s default.

Signed-off-by: Nathan Walston <[email protected]>

---------

Signed-off-by: Nathan Walston <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
* Replace hand rolled types in customizer

Signed-off-by: Henrique Tolentino <[email protected]>

* Comment cleanup

Signed-off-by: Henrique Tolentino <[email protected]>

* More comments cleanup

Signed-off-by: Henrique Tolentino <[email protected]>

* Fix CI issues

Signed-off-by: Henrique Tolentino <[email protected]>

---------

Signed-off-by: Henrique Tolentino <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
Add VITE_PLATFORM_PROXY_DOMAIN to route same-origin /apis requests through
the Vite dev server. When VITE_PLATFORM_BASE_URL is empty and the proxy
domain is set, the browser only talks to the HTTPS dev server and Vite
forwards to the plain-HTTP platform server-side. This avoids Safari's
mixed-content block on an HTTPS (mkcert) page calling http://localhost.

Document the new var in the sample env file.

Signed-off-by: Alex Ray <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

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

⚠️ Outside diff range comments (2)
docs/customizer/tutorials/optimize-throughput.mdx (1)

208-245: 📐 Maintainability & Code Quality | 🟠 Major | 🏗️ Heavy lift

Add CLI equivalents in tab sets.

  • docs/customizer/tutorials/optimize-throughput.mdx#L208-L245: provide CLI alternatives for secret and Hugging Face FileSet creation.
  • docs/customizer/tutorials/sft-customization-job.mdx#L273-L318: provide CLI alternatives for conditional authentication and FileSet creation.

As per coding guidelines, “Provide both Python SDK and CLI examples in tab-sets for consistency and to support multiple user workflows.”

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

In `@docs/customizer/tutorials/optimize-throughput.mdx` around lines 208 - 245,
Add tab-set alternatives at docs/customizer/tutorials/optimize-throughput.mdx
lines 208-245 for the Hugging Face and optional NGC secret creation plus Hugging
Face FileSet creation, retaining the existing Python SDK examples and adding
equivalent CLI commands. Also update
docs/customizer/tutorials/sft-customization-job.mdx lines 273-318 with CLI tabs
for conditional authentication and FileSet creation, ensuring both tutorials
consistently provide Python and CLI workflows.

Source: Coding guidelines

docs/customizer/tutorials/distillation-customization-job.mdx (1)

421-474: 📐 Maintainability & Code Quality | 🟠 Major | 🏗️ Heavy lift

Add a CLI alternative for this workflow.

This updated deployment path is Python-only. Add equivalent CLI commands in a Fern tab set for creation, readiness checks, and cleanup.

As per coding guidelines, “Provide both Python SDK and CLI examples in tab-sets for consistency and to support multiple user workflows.”

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

In `@docs/customizer/tutorials/distillation-customization-job.mdx` around lines
421 - 474, Add a Fern CLI tab set alongside the Python deployment workflow
covering deployment creation, polling until the deployment and gateway are
READY, and cleanup on readiness failure. Use CLI equivalents for the existing
symbols and operations—BASELINE_DEPLOYMENT_NAME, BASELINE_DEPLOYMENT_CONFIG,
deployment retrieval/deletion, and status waits—while preserving the same
timeout, failure-status handling, and GPU cleanup behavior.

Source: Coding guidelines

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

Inline comments:
In `@docs/customizer/about.mdx`:
- Around line 239-263: Append a “Next Steps” section after the Parallelism
content in docs/customizer/about.mdx at lines 239-263, linking to the training
configuration and customization tutorials. Also append a “Next Steps” section
after the result comparisons in
docs/customizer/tutorials/optimize-throughput.mdx at lines 814-819, linking to
metrics and related customization tutorials.

In `@docs/customizer/tutorials/sft-customization-job.ipynb`:
- Around line 361-368: Update the notebook’s default model flow so the gated
meta-llama/Llama-3.2-1B-Instruct path requires HF_TOKEN: fail fast before
creating the job when HF_TOKEN is absent, ensuring token_secret is always
provided. Alternatively, change the default model to a public model and keep the
optional-token behavior consistent with that choice.

In `@docs/customizer/tutorials/sft-customization-job.mdx`:
- Around line 273-280: Update the HF_TOKEN handling around create_or_get_secret
so the tutorial’s default gated Llama model cannot proceed without a
token_secret. Require HF_TOKEN and fail clearly when it is unset, or change the
documented default model to an explicitly public model before retaining the
optional-secret path.

In `@docs/fern/scripts/validate-notebook-viewer.mjs`:
- Around line 67-68: Update the validation flow around the imported and
registered name collection to detect every imported notebook absent from the
registry and fail explicitly before artifact checks. Keep the registry-derived
names for subsequent validation, but do not use a union that allows unregistered
imports to pass.

---

Outside diff comments:
In `@docs/customizer/tutorials/distillation-customization-job.mdx`:
- Around line 421-474: Add a Fern CLI tab set alongside the Python deployment
workflow covering deployment creation, polling until the deployment and gateway
are READY, and cleanup on readiness failure. Use CLI equivalents for the
existing symbols and operations—BASELINE_DEPLOYMENT_NAME,
BASELINE_DEPLOYMENT_CONFIG, deployment retrieval/deletion, and status
waits—while preserving the same timeout, failure-status handling, and GPU
cleanup behavior.

In `@docs/customizer/tutorials/optimize-throughput.mdx`:
- Around line 208-245: Add tab-set alternatives at
docs/customizer/tutorials/optimize-throughput.mdx lines 208-245 for the Hugging
Face and optional NGC secret creation plus Hugging Face FileSet creation,
retaining the existing Python SDK examples and adding equivalent CLI commands.
Also update docs/customizer/tutorials/sft-customization-job.mdx lines 273-318
with CLI tabs for conditional authentication and FileSet creation, ensuring both
tutorials consistently provide Python and CLI workflows.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6e0114cb-6c5f-4947-82d0-1104e304f30e

📥 Commits

Reviewing files that changed from the base of the PR and between d8fa9a1 and 66e3cf7.

📒 Files selected for processing (67)
  • docs/AGENTS.md
  • docs/customizer/about.mdx
  • docs/customizer/index.mdx
  • docs/customizer/manage-customization-jobs/create-job.mdx
  • docs/customizer/manage-customization-jobs/get-job-status.mdx
  • docs/customizer/manage-customization-jobs/hyperparameters.mdx
  • docs/customizer/manage-customization-jobs/index.mdx
  • docs/customizer/manage-customization-jobs/list-active-jobs.mdx
  • docs/customizer/manage-model-entities/create-fileset.mdx
  • docs/customizer/manage-model-entities/create-model-entity.mdx
  • docs/customizer/manage-model-entities/index.mdx
  • docs/customizer/models/data-format.mdx
  • docs/customizer/models/embedding.mdx
  • docs/customizer/models/gpt-oss.mdx
  • docs/customizer/models/index.mdx
  • docs/customizer/models/llama-nemotron.mdx
  • docs/customizer/models/llama.mdx
  • docs/customizer/models/mistral.mdx
  • docs/customizer/models/phi.mdx
  • docs/customizer/models/qwen.mdx
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/config-list-example.json
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/distillation-customization-job.ipynb
  • docs/customizer/tutorials/distillation-customization-job.mdx
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.ipynb
  • docs/customizer/tutorials/embedding-customization-job.mdx
  • docs/customizer/tutorials/format-training-dataset.mdx
  • docs/customizer/tutorials/import-hf-model.mdx
  • docs/customizer/tutorials/lora-customization-job.ipynb
  • docs/customizer/tutorials/lora-customization-job.mdx
  • docs/customizer/tutorials/metrics.mdx
  • docs/customizer/tutorials/optimize-throughput.ipynb
  • docs/customizer/tutorials/optimize-throughput.mdx
  • docs/customizer/tutorials/sft-customization-job.ipynb
  • docs/customizer/tutorials/sft-customization-job.mdx
  • docs/customizer/tutorials/understand-configurations-and-models.mdx
  • docs/fern/README.md
  • docs/fern/components/notebooks/distillation-customization-job.json
  • docs/fern/components/notebooks/distillation-customization-job.ts
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/fern/components/notebooks/embedding-customization-job.json
  • docs/fern/components/notebooks/embedding-customization-job.ts
  • docs/fern/components/notebooks/lora-customization-job.json
  • docs/fern/components/notebooks/lora-customization-job.ts
  • docs/fern/components/notebooks/optimize-throughput.json
  • docs/fern/components/notebooks/optimize-throughput.ts
  • docs/fern/components/notebooks/sft-customization-job.json
  • docs/fern/components/notebooks/sft-customization-job.ts
  • docs/fern/package.json
  • docs/fern/scripts/README.md
  • docs/fern/scripts/ipynb-to-mdx.py
  • docs/fern/scripts/validate-notebook-viewer.mjs
  • docs/requirements.mdx
  • docs/support-matrix.mdx
  • docs/troubleshooting/customizer.mdx
💤 Files with no reviewable changes (12)
  • docs/customizer/tutorials/_snippets/output/chat-thinking-off-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-expanded-format-example.json
  • docs/customizer/tutorials/_snippets/output/completion-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-basic-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-basic-format-example.jsonl
  • docs/customizer/tutorials/_snippets/output/lora-training-data-example.jsonl
  • docs/customizer/tutorials/_snippets/output/version-error-example.json
  • docs/customizer/tutorials/_snippets/output/chat-thinking-on-example.jsonl
  • docs/customizer/tutorials/_snippets/output/chat-tool-calling-expanded-example.json
  • docs/customizer/tutorials/_snippets/output/config-list-example.json
  • docs/customizer/tutorials/_snippets/output/lora-hyperparameters-example.json
  • docs/customizer/tutorials/_snippets/output/job-creation-response.json
🚧 Files skipped from review as they are similar to previous changes (42)
  • docs/customizer/models/mistral.mdx
  • docs/requirements.mdx
  • docs/customizer/models/qwen.mdx
  • docs/customizer/manage-customization-jobs/get-job-status.mdx
  • docs/fern/scripts/README.md
  • docs/customizer/models/phi.mdx
  • docs/fern/package.json
  • docs/customizer/models/llama.mdx
  • docs/customizer/manage-model-entities/index.mdx
  • docs/customizer/manage-customization-jobs/index.mdx
  • docs/customizer/manage-model-entities/create-model-entity.mdx
  • docs/customizer/tutorials/metrics.mdx
  • docs/customizer/models/llama-nemotron.mdx
  • docs/fern/scripts/ipynb-to-mdx.py
  • docs/troubleshooting/customizer.mdx
  • docs/fern/README.md
  • docs/customizer/index.mdx
  • docs/customizer/manage-customization-jobs/list-active-jobs.mdx
  • docs/fern/components/notebooks/lora-customization-job.ts
  • docs/customizer/models/embedding.mdx
  • docs/customizer/tutorials/lora-customization-job.ipynb
  • docs/customizer/models/index.mdx
  • docs/fern/components/notebooks/lora-customization-job.json
  • docs/customizer/tutorials/format-training-dataset.mdx
  • docs/customizer/models/data-format.mdx
  • docs/fern/components/notebooks/sft-customization-job.ts
  • docs/fern/components/notebooks/distillation-customization-job.ts
  • docs/customizer/tutorials/embedding-customization-job.mdx
  • docs/customizer/tutorials/lora-customization-job.mdx
  • docs/fern/components/notebooks/dpo-customization-job.json
  • docs/fern/components/notebooks/dpo-customization-job.ts
  • docs/customizer/tutorials/optimize-throughput.ipynb
  • docs/customizer/tutorials/dpo-customization-job.ipynb
  • docs/customizer/tutorials/import-hf-model.mdx
  • docs/fern/components/notebooks/sft-customization-job.json
  • docs/customizer/tutorials/embedding-customization-job.ipynb
  • docs/fern/components/notebooks/distillation-customization-job.json
  • docs/customizer/tutorials/understand-configurations-and-models.mdx
  • docs/fern/components/notebooks/optimize-throughput.ts
  • docs/customizer/manage-customization-jobs/hyperparameters.mdx
  • docs/fern/components/notebooks/optimize-throughput.json
  • docs/fern/components/notebooks/embedding-customization-job.json

Comment thread docs/customizer/about.mdx
Comment thread docs/customizer/tutorials/sft-customization-job.ipynb Outdated
Comment thread docs/customizer/tutorials/sft-customization-job.mdx Outdated
Comment thread docs/fern/scripts/validate-notebook-viewer.mjs Outdated
Signed-off-by: Sam Oluwalana <[email protected]>
Signed-off-by: Sam Oluwalana <[email protected]>
@albcui
albcui added this pull request to the merge queue Jul 22, 2026
Merged via the queue into main with commit 3805213 Jul 22, 2026
59 checks passed
@albcui
albcui deleted the solu/doc-fixes branch July 22, 2026 21:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.