Skip to content

docs(experiments): document Experiments ingest flow + add nemo-experiments-upload skill#694

Merged
shanaiabuggy merged 3 commits into
mainfrom
sbuggy/experiments-agent-skill
Jul 16, 2026
Merged

docs(experiments): document Experiments ingest flow + add nemo-experiments-upload skill#694
shanaiabuggy merged 3 commits into
mainfrom
sbuggy/experiments-agent-skill

Conversation

@shanaiabuggy

@shanaiabuggy shanaiabuggy commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Documentation
    • Added an end-to-end nemo-experiments-upload skill guide (curl workflow) to create experiment groups/evaluations, ingest ATIF/chat-completions/OTLP, verify sessions/rollups, and view results in Studio.
    • Documented complete intake request/response formats for ingest endpoints and evaluator-results behavior, including how evaluator identity and identifiers are mapped.
    • Added Harbor quickstart/payload mapping examples and a troubleshooting guide with an identifier cheat-sheet and common remediation steps.
    • Expanded Intake Service API docs for experiment-group/evaluation endpoints and the overall Experiments workflow (including naming/visibility notes).
  • Tests
    • Added routing assertions for the nemo-experiments-upload skill (positive and negative control prompts).

@shanaiabuggy
shanaiabuggy requested review from a team as code owners July 15, 2026 02:31
@github-actions github-actions Bot added the docs label Jul 15, 2026
Base automatically changed from sb/ase-512 to main July 15, 2026 17:28
@shanaiabuggy shanaiabuggy changed the title docs(experiments): document Experiments ingest flow + add nemo-experi… docs(experiments): document Experiments ingest flow + add nemo-experiments-upload skill Jul 15, 2026
@coderabbitai

coderabbitai Bot commented Jul 15, 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

Experiments upload workflow

Layer / File(s) Summary
Experiment workflow and routing
packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md, services/intake/README.md, packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
Documents group and evaluation creation, ingestion, verification, Studio viewing, Intake endpoints, and skill-routing cases.
Ingest formats and troubleshooting
packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md, packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/troubleshooting.md
Defines evaluation context, ATIF, chat-completions, OTLP, evaluator-result, read-endpoint, validation, and troubleshooting details.
Harbor ATIF mapping
packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md
Maps Harbor runs and trials to NeMo entities and documents per-trial ATIF payload fields and identifier consistency rules.

Possibly related PRs

  • NVIDIA-NeMo/nemo-platform#612: Covers the Experiment-to-Evaluation API and schema renaming reflected in these workflow and troubleshooting documents.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Title matches the main change: documenting the Experiments ingest flow and adding the nemo-experiments-upload skill.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 sbuggy/experiments-agent-skill

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: 3

🧹 Nitpick comments (1)
services/intake/README.md (1)

26-40: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Keep the README focused on one documentation quadrant.

The new section adds a multi-step how-to to an API/reference and local-development README. Keep a short workflow summary and link here; move the procedural details to the dedicated skill or a separate how-to page.

As per coding guidelines, each documentation page should fit one Diátaxis quadrant.

🤖 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 `@services/intake/README.md` around lines 26 - 40, Shorten the “Logging
experiment data (end-to-end)” section in the README to a brief workflow summary
and link to the dedicated nemo-experiments-upload skill for procedural details.
Remove the multi-step instructions and endpoint-specific guidance from this
README while preserving the concise navigation link.

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
`@packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md`:
- Around line 9-14: Make both labeled JSON examples executable: in
ingest-formats.md, wrap the evaluation_context fragment in a complete object and
remove inline comments; in harbor-quickstart.md, replace the comment placeholder
with valid steps JSON. Ensure both examples parse as-is without altering their
documented meaning.

In
`@packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md`:
- Around line 35-55: Make the setup workflow fail closed by enabling strict Bash
behavior with set -euo pipefail, changing the readiness check to exit nonzero
when /health/ready fails, and validating that GROUP_ID is non-empty after the
experiment-group creation before proceeding to create the Evaluation.
- Around line 79-87: Update the “Log traces + evaluator results” guidance in
packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md
(lines 79-87) to apply evaluation_context only to ATIF and chat-completions, and
instruct OTLP users to provide identity through root-span attributes. Update
services/intake/README.md (lines 33-34) to document the OTLP attributes
nemo.experiment.id and nemo.test_case.id.

---

Nitpick comments:
In `@services/intake/README.md`:
- Around line 26-40: Shorten the “Logging experiment data (end-to-end)” section
in the README to a brief workflow summary and link to the dedicated
nemo-experiments-upload skill for procedural details. Remove the multi-step
instructions and endpoint-specific guidance from this README while preserving
the concise navigation link.
🪄 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: 34e15efb-0920-43b8-9982-fe56c6281276

📥 Commits

Reviewing files that changed from the base of the PR and between 518e771 and 2831663.

⛔ Files ignored due to path filters (4)
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/SKILL.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/harbor-quickstart.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/ingest-formats.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/troubleshooting.md is excluded by !sdk/**
📒 Files selected for processing (6)
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/troubleshooting.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
  • services/intake/README.md

@shanaiabuggy
shanaiabuggy force-pushed the sbuggy/experiments-agent-skill branch from 2831663 to 5a4321c Compare July 15, 2026 18:40
@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 25521/32723 78.0% 62.6%
Integration Tests 14722/31372 46.9% 19.2%

@shanaiabuggy
shanaiabuggy force-pushed the sbuggy/experiments-agent-skill branch from 5a4321c to 3ef003f Compare July 15, 2026 21:14

@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
`@packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md`:
- Around line 146-151: Add the OTLP traces protocol configuration next to the
endpoint example in the ingest-formats documentation, setting
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL or the global OTEL_EXPORTER_OTLP_PROTOCOL to
http/protobuf so SDKs use the required HTTP protobuf transport.

In
`@packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md`:
- Line 3: Update the SKILL.md frontmatter and shared ingest/troubleshooting
guidance to distinguish ATIF and chat-completions, which use evaluation_context,
from OTLP, which requires nemo.experiment.id and nemo.test_case.id on the root
span. Remove any wording that implies evaluation_context applies to every
endpoint, and ensure the OTLP troubleshooting entry explains these root-span
attributes for associating runs.
- Around line 105-107: Update the evaluator-results documentation near the
explicit POST payload to distinguish fields by data_type: use value for numeric
results, and document string_value for CATEGORICAL and TEXT results. Preserve
the existing span_id, session_id, name, and data_type fields and clarify that
payloads must use the field matching the declared type.
🪄 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: 9efb7f59-8fe3-49dc-98b6-18b34e67410d

📥 Commits

Reviewing files that changed from the base of the PR and between 5a4321c and 3ef003f.

⛔ Files ignored due to path filters (4)
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/SKILL.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/harbor-quickstart.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/ingest-formats.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/troubleshooting.md is excluded by !sdk/**
📒 Files selected for processing (6)
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/troubleshooting.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
  • services/intake/README.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/troubleshooting.md
  • services/intake/README.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md

@shanaiabuggy
shanaiabuggy force-pushed the sbuggy/experiments-agent-skill branch from 3ef003f to ecd8938 Compare July 15, 2026 21:31

@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: 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
`@packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md`:
- Around line 57-65: Update the group creation flow that assigns GROUP_ID so the
GET fallback runs only when the POST returns HTTP 409. Capture and inspect the
POST status separately, preserve the created group ID on success, invoke the
existing-name GET lookup for 409, and propagate validation, transport, and 5xx
failures instead of masking them.
- Around line 35-45: Make each executable workflow self-contained by
initializing or validating NMP_BASE_URL and WORKSPACE before use. In
packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md
lines 35-45, update the readiness-check block; apply the same initialization or
validation in
packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md
lines 149-152 before exporting the OTLP endpoint, preserving valid standalone
copy/paste execution.
🪄 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: 3e6a9b39-8923-4e3c-ae7e-1cd764243d7a

📥 Commits

Reviewing files that changed from the base of the PR and between 3ef003f and ecd8938.

⛔ Files ignored due to path filters (4)
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/SKILL.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/harbor-quickstart.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/ingest-formats.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/troubleshooting.md is excluded by !sdk/**
📒 Files selected for processing (6)
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/troubleshooting.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
  • services/intake/README.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
  • services/intake/README.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/troubleshooting.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md

@shanaiabuggy
shanaiabuggy force-pushed the sbuggy/experiments-agent-skill branch from ecd8938 to 917922c Compare July 15, 2026 23:12

@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
`@packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md`:
- Around line 3-7: Revise the ingest-formats documentation so it no longer
claims evaluation_context is shared by all endpoints. Move the
evaluation_context section under the ATIF/chat-completions guidance, and state
before the endpoint schemas that OTLP does not accept this JSON field and
instead requires evaluation identity in root-span attributes.

In
`@packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md`:
- Around line 83-91: Update the evaluation curl snippet to be independently
executable by initializing defaults for NMP_BASE_URL and WORKSPACE, then
explicitly validate that GROUP_ID is set before issuing the request. Keep the
existing payload and endpoint behavior unchanged, and fail with a clear message
when GROUP_ID is missing.
- Around line 102-103: Update the OTLP guidance in SKILL.md at lines 102-103 to
describe nemo.experiment.id and nemo.test_case.id as attributes on the root
span, not root-span resource attributes. In references/ingest-formats.md lines
3-7, remove the “shared by all” framing and explicitly scope evaluation_context
to ATIF and chat-completions JSON payloads only; keep OTLP identity represented
by root-span attributes.
🪄 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: d6ac2502-7489-41b5-bc38-4f37f6090ce9

📥 Commits

Reviewing files that changed from the base of the PR and between ecd8938 and 917922c.

⛔ Files ignored due to path filters (4)
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/SKILL.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/harbor-quickstart.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/ingest-formats.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/skills/nemo-experiments-upload/references/troubleshooting.md is excluded by !sdk/**
📒 Files selected for processing (6)
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/SKILL.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/ingest-formats.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/troubleshooting.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
  • services/intake/README.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/tests.json
  • packages/nemo_platform_ext/src/nemo_platform_ext/skills/nemo-experiments-upload/references/harbor-quickstart.md
  • services/intake/README.md

@shanaiabuggy
shanaiabuggy enabled auto-merge July 16, 2026 03:01
Signed-off-by: shanaiabuggy <[email protected]>
@shanaiabuggy
shanaiabuggy added this pull request to the merge queue Jul 16, 2026
Merged via the queue into main with commit 16cc47a Jul 16, 2026
55 checks passed
@shanaiabuggy
shanaiabuggy deleted the sbuggy/experiments-agent-skill branch July 16, 2026 15:39
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.

2 participants