Skip to content

feat(studio): v0 experiment detail page - #260

Merged
walston merged 10 commits into
mainfrom
nwalston/experiment-details
Jun 11, 2026
Merged

feat(studio): v0 experiment detail page#260
walston merged 10 commits into
mainfrom
nwalston/experiment-details

Conversation

@walston

@walston walston commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Closes FP-184

Screen.Recording.2026-06-10.at.15.02.33.mov

Summary

Studio had no detail view for individual experiments — clicking an experiment row in the group detail table had no destination. This adds the v0 `ExperimentDetailRoute` at `/workspaces/:workspace/experiment/:experimentGroupName/:experimentName`, along with the route constant, utility function, and lazy-loaded registration.

The detail page shows a metadata bar (Agent Name, Created, Updated, Avg Cost, Avg Latency) sourced from `useGetExperiment`, and a paginated test cases table via `useListExperimentSessions` with columns: Case, Input, Started at, Ended at, Latency, Status, Tokens, Cost, and Evaluator scores. Long Case, Input, and Evaluator score values truncate with a tooltip. The `success` span status is mapped to the `completed` badge style. Row clicks in `ExperimentGroupDataView` now navigate to the new route.

Test plan

  • Navigate to Experiments → open any experiment group → click an experiment row → confirm you land on the detail page with the correct breadcrumb trail (Experiments > group name > experiment name)
  • Confirm the metadata bar shows Agent Name, Created, Updated, Avg Cost, and Avg Latency populated from the experiment
  • Confirm the test cases table renders rows with Case, Input, Started at, Ended at, Latency, Status, Tokens, Cost, and Evaluator scores columns
  • Hover a truncated Case or Input cell → confirm the full value appears in a tooltip
  • Navigate to an experiment with no sessions → confirm the flask icon empty state renders with "No test cases" heading and subtext

Summary by CodeRabbit

  • New Features

    • Experiment detail page with metrics (avg cost, avg latency, agent, created/updated) and breadcrumbed route.
    • Paginated experiment sessions view showing inputs, timestamps, latency, status, token usage, costs, and evaluator scores.
    • Clickable experiment rows navigate to experiment detail pages.
    • Empty sessions view with CLI command and code snippet tab.
  • Documentation

    • Added CLI docs link for Experiments.
  • Tests

    • Updated test routing to include experiment name.

@walston
walston requested review from a team as code owners June 10, 2026 17:20
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Adds an experiment detail route and page at /workspaces/:workspace/experiment/:experimentGroupName/:experimentName with a metrics header and a paginated sessions table; enables row-click navigation from the experiment group list and provides an empty-state CLI/tab component, route helpers, docs link, and test update.

Changes

Experiment Detail Page

Layer / File(s) Summary
Route contracts and utilities
web/packages/studio/src/constants/routes.ts, web/packages/studio/src/routes/utils.ts
Add experimentName route param, ROUTES.workspace.experimentDetail, and getExperimentDetailRoute helper.
Route registration
web/packages/studio/src/routes/index.tsx
Lazy-load and register ExperimentDetailRoute under the workspace experiment routes with an ErrorPanel.
Experiment detail page component
web/packages/studio/src/routes/ExperimentDetailRoute/index.tsx
Create page component extracting params, setting breadcrumbs, rendering title, metrics component, and sessions view.
Experiment metrics display
web/packages/studio/src/routes/ExperimentDetailRoute/ExperimentDetailMetrics.tsx
Fetch experiment and render KV pairs for agent name, created/updated timestamps, avg cost (3 decimals), and avg latency (ms).
Experiment sessions data view
web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx
Add ExperimentSessionsDataView with types, status/score helpers, paging state, paginated fetch, deterministic row ids, column definitions (case, timestamps, latency, status, tokens, cost, evaluator scores), and empty-state wiring.
Sessions empty-state UI
web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/Empty.tsx
Add Empty component that renders tabbed content including a generated nemo exp run CLI command and docs link.
Experiment group row navigation
web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx
Wire useNavigate and onRowClick to navigate to experiment detail route on row click.
Docs link and test update
web/packages/studio/src/constants/links.ts, web/packages/studio/src/tests/title-change.spec.tsx
Add LINK_DOCS_EXPERIMENTS_CLI constant; include experimentName in test path params.

Possibly related PRs

Suggested reviewers

  • nakolean
🚥 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 clearly identifies the main change: adding an experiment detail page to the studio. It's concise, specific, and directly reflects the changeset's primary purpose.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch nwalston/experiment-details

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

@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: 1

🧹 Nitpick comments (1)
web/packages/studio/src/routes/utils.ts (1)

324-334: 💤 Low value

Add explicit return type.

Public route utilities should have explicit return types per TypeScript guidelines.

📝 Proposed fix
-export const getExperimentDetailRoute = (
+export const getExperimentDetailRoute = (
   workspace: string,
   experimentGroupName: string,
   experimentName: string
-) => {
+): string => {
   return generatePath(ROUTES.workspace.experimentDetail, {
🤖 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 `@web/packages/studio/src/routes/utils.ts` around lines 324 - 334, The
getExperimentDetailRoute function lacks an explicit return type; update its
signature to declare the return type string (i.e., make
getExperimentDetailRoute(...) : string) so callers and the compiler have an
explicit type for the value produced by
generatePath(ROUTES.workspace.experimentDetail, ...). Keep the implementation
unchanged and ensure TypeScript infers the returned value matches string.

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
`@web/packages/studio/src/routes/ExperimentDetailRoute/ExperimentDetailMetrics.tsx`:
- Around line 36-50: The Created and Updated KVPair components are missing the
loading prop, causing inconsistent skeletons; update the two KVPair instances
(the ones with label="Created" and label="Updated" that render RelativeTime) to
include the same loading prop used by the other fields (e.g., loading={loading}
or loading={isLoading} depending on the surrounding variable) so they show
skeletons during load, keeping the existing value logic (experiment?.created_at
/ experiment?.updated_at ? <RelativeTime .../> : undefined).

---

Nitpick comments:
In `@web/packages/studio/src/routes/utils.ts`:
- Around line 324-334: The getExperimentDetailRoute function lacks an explicit
return type; update its signature to declare the return type string (i.e., make
getExperimentDetailRoute(...) : string) so callers and the compiler have an
explicit type for the value produced by
generatePath(ROUTES.workspace.experimentDetail, ...). Keep the implementation
unchanged and ensure TypeScript infers the returned value matches string.
🪄 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: 08c215d1-df04-41f5-b5a1-4279ec1e90ec

📥 Commits

Reviewing files that changed from the base of the PR and between eae5aa1 and 4c75f14.

📒 Files selected for processing (8)
  • web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx
  • web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx
  • web/packages/studio/src/constants/routes.ts
  • web/packages/studio/src/routes/ExperimentDetailRoute/ExperimentDetailMetrics.tsx
  • web/packages/studio/src/routes/ExperimentDetailRoute/index.tsx
  • web/packages/studio/src/routes/index.tsx
  • web/packages/studio/src/routes/utils.ts
  • web/packages/studio/src/tests/title-change.spec.tsx

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 19124/25199 75.9% 62.4%
Integration Tests 12194/23971 50.9% 26.2%

@github-actions github-actions Bot added the feat label Jun 10, 2026
@walston
walston force-pushed the nwalston/experiment-details branch from 4c75f14 to 0360a77 Compare June 10, 2026 20:54

@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
`@web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx`:
- Around line 59-63: The columnVisibility includes updated_at but the
filter/columns in makeColumns only define created_by; remove updated_at from the
columnVisibility object used in useStudioDataViewState<ExperimentFilter> (and
update the adjacent comment to only mention created_by as filter-only) so the
visibility config matches the actual columns, or alternatively if updated_at is
intended to be filter-only, add its filter-only column id to makeColumns; update
the comment to reflect whichever choice you make.

In
`@web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx`:
- Around line 57-62: The data-fetch call using useListExperimentSessions
currently ignores the error flag, so failures render as empty UI; update the
code that builds requestStatus for StudioDataView to include isError from
useListExperimentSessions (alongside isLoading and data) so error state is
propagated to StudioDataView; locate the useListExperimentSessions hook
invocation (const { data: sessionsResponse, isLoading } =
useListExperimentSessions(...)) and add isError to the destructure, then pass
that isError into the requestStatus object used when rendering StudioDataView
(also update the other occurrence at the second use of useListExperimentSessions
around the referenced lines 184-185).
🪄 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: 22353dbe-c0ab-4eba-be1d-84af9a7d55d8

📥 Commits

Reviewing files that changed from the base of the PR and between 4c75f14 and 0360a77.

📒 Files selected for processing (9)
  • web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx
  • web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx
  • web/packages/studio/src/constants/links.ts
  • web/packages/studio/src/constants/routes.ts
  • web/packages/studio/src/routes/ExperimentDetailRoute/ExperimentDetailMetrics.tsx
  • web/packages/studio/src/routes/ExperimentDetailRoute/index.tsx
  • web/packages/studio/src/routes/index.tsx
  • web/packages/studio/src/routes/utils.ts
  • web/packages/studio/src/tests/title-change.spec.tsx
✅ Files skipped from review due to trivial changes (1)
  • web/packages/studio/src/constants/links.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • web/packages/studio/src/constants/routes.ts
  • web/packages/studio/src/routes/index.tsx
  • web/packages/studio/src/routes/ExperimentDetailRoute/index.tsx
  • web/packages/studio/src/routes/utils.ts
  • web/packages/studio/src/routes/ExperimentDetailRoute/ExperimentDetailMetrics.tsx

@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

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

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
`@web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx`:
- Around line 59-63: The columnVisibility includes updated_at but the
filter/columns in makeColumns only define created_by; remove updated_at from the
columnVisibility object used in useStudioDataViewState<ExperimentFilter> (and
update the adjacent comment to only mention created_by as filter-only) so the
visibility config matches the actual columns, or alternatively if updated_at is
intended to be filter-only, add its filter-only column id to makeColumns; update
the comment to reflect whichever choice you make.

In
`@web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx`:
- Around line 57-62: The data-fetch call using useListExperimentSessions
currently ignores the error flag, so failures render as empty UI; update the
code that builds requestStatus for StudioDataView to include isError from
useListExperimentSessions (alongside isLoading and data) so error state is
propagated to StudioDataView; locate the useListExperimentSessions hook
invocation (const { data: sessionsResponse, isLoading } =
useListExperimentSessions(...)) and add isError to the destructure, then pass
that isError into the requestStatus object used when rendering StudioDataView
(also update the other occurrence at the second use of useListExperimentSessions
around the referenced lines 184-185).
🪄 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: 22353dbe-c0ab-4eba-be1d-84af9a7d55d8

📥 Commits

Reviewing files that changed from the base of the PR and between 4c75f14 and 0360a77.

📒 Files selected for processing (9)
  • web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx
  • web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx
  • web/packages/studio/src/constants/links.ts
  • web/packages/studio/src/constants/routes.ts
  • web/packages/studio/src/routes/ExperimentDetailRoute/ExperimentDetailMetrics.tsx
  • web/packages/studio/src/routes/ExperimentDetailRoute/index.tsx
  • web/packages/studio/src/routes/index.tsx
  • web/packages/studio/src/routes/utils.ts
  • web/packages/studio/src/tests/title-change.spec.tsx
✅ Files skipped from review due to trivial changes (1)
  • web/packages/studio/src/constants/links.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • web/packages/studio/src/constants/routes.ts
  • web/packages/studio/src/routes/index.tsx
  • web/packages/studio/src/routes/ExperimentDetailRoute/index.tsx
  • web/packages/studio/src/routes/utils.ts
  • web/packages/studio/src/routes/ExperimentDetailRoute/ExperimentDetailMetrics.tsx
🛑 Comments failed to post (2)
web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx (1)

59-63: ⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if updated_at is referenced or used elsewhere in experiment-related code.
rg -nC3 'updated_at' --type=ts --type=tsx -g '!node_modules' -g '**/experiment**'

Repository: NVIDIA-NeMo/nemo-platform

Length of output: 97


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx"

echo "=== Grep for updated_at in target file ==="
rg -n --hidden --no-ignore-vcs 'updated_at' "$FILE" || true

echo
echo "=== Show surrounding makeColumns definition (updated_at context) ==="
# Print around any makeColumns usage if present
rg -n 'makeColumns' "$FILE" || true
rg -n -C 5 'columnVisibility' "$FILE" || true

echo
echo "=== Locate created_by column definition area ==="
rg -n -C 5 'created_by' "$FILE" || true

Repository: NVIDIA-NeMo/nemo-platform

Length of output: 2482


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx"

echo "=== Grep for updated_at in target file ==="
rg -n --hidden --no-ignore-vcs 'updated_at' "$FILE" || true

echo
echo "=== Show surrounding makeColumns definition (updated_at context) ==="
rg -n 'makeColumns' "$FILE" || true
rg -n -C 5 'columnVisibility' "$FILE" || true

echo
echo "=== Locate created_by column definition area ==="
rg -n -C 5 'created_by' "$FILE" || true

echo
echo "=== Dump nearby lines around the reported snippet (lines 45-90) ==="
nl -ba "$FILE" | sed -n '45,90p'

Repository: NVIDIA-NeMo/nemo-platform

Length of output: 2613


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx"

echo "=== Grep for updated_at in target file ==="
rg -n --hidden --no-ignore-vcs 'updated_at' "$FILE" || true

echo
echo "=== Show surrounding makeColumns definition (updated_at context) ==="
rg -n 'makeColumns' "$FILE" || true
rg -n -C 5 'columnVisibility' "$FILE" || true

echo
echo "=== Locate created_by column definition area ==="
rg -n -C 5 'created_by' "$FILE" || true

echo
echo "=== Dump nearby lines around the reported snippet (lines 45-90) ==="
nl -ba "$FILE" | sed -n '45,90p'

Repository: NVIDIA-NeMo/nemo-platform

Length of output: 2613


🏁 Script executed:

#!/bin/bash
set -euo pipefail
FILE="web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx"

rg -n "id:\\s*'updated_at'|updatedAt|UPDATED_AT|updated-at|updated at" "$FILE" || true

Repository: NVIDIA-NeMo/nemo-platform

Length of output: 51


Fix updated_at visibility/comment mismatch.
columnVisibility includes { updated_at: false } and the comment says updated_at is filter-only, but makeColumns only defines the filter-only column created_by (no updated_at column/filter id). Remove updated_at from columnVisibility and adjust the comment, or add the missing updated_at filter-only column.

🤖 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
`@web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx`
around lines 59 - 63, The columnVisibility includes updated_at but the
filter/columns in makeColumns only define created_by; remove updated_at from the
columnVisibility object used in useStudioDataViewState<ExperimentFilter> (and
update the adjacent comment to only mention created_by as filter-only) so the
visibility config matches the actual columns, or alternatively if updated_at is
intended to be filter-only, add its filter-only column id to makeColumns; update
the comment to reflect whichever choice you make.
web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx (1)

57-62: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Propagate query error state to StudioDataView.

Failed session fetches are currently treated as non-error UI states, so users can see “No test cases” instead of an error panel. Pass isError through requestStatus.

Suggested fix
-  const { data: sessionsResponse, isLoading } = useListExperimentSessions(
+  const { data: sessionsResponse, isLoading, isError } = useListExperimentSessions(
     workspace,
     experimentName,
     { page, page_size: pageSize },
     { query: { placeholderData: keepPreviousData } }
   );
...
-          requestStatus: isLoading && !sessionsData ? 'loading' : undefined,
+          requestStatus: isError ? 'error' : isLoading && !sessionsData ? 'loading' : undefined,

Also applies to: 184-185

🤖 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
`@web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx`
around lines 57 - 62, The data-fetch call using useListExperimentSessions
currently ignores the error flag, so failures render as empty UI; update the
code that builds requestStatus for StudioDataView to include isError from
useListExperimentSessions (alongside isLoading and data) so error state is
propagated to StudioDataView; locate the useListExperimentSessions hook
invocation (const { data: sessionsResponse, isLoading } =
useListExperimentSessions(...)) and add isError to the destructure, then pass
that isError into the requestStatus object used when rendering StudioDataView
(also update the other occurrence at the second use of useListExperimentSessions
around the referenced lines 184-185).

Comment thread web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx Outdated
Comment thread web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx Outdated
@walston
walston requested a review from nakolean June 11, 2026 16:16

@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: 1

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

Inline comments:
In
`@web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/Empty.tsx`:
- Around line 4-15: Reorder the import block so all external third-party
packages come first and internal project modules follow: move the
`@nvidia/foundations-react-core` imports (Button, CodeSnippet, TabsContent,
TabsList, TabsRoot, TabsTrigger, Text) and the lucide-react icon imports (Bot,
ChevronRight, File, FlaskConical, Terminal) above the internal imports; keep the
`@nemo/common` TableEmptyState and the `@studio/constants/links`
LINK_DOCS_EXPERIMENTS_CLI imports after those external imports; preserve
existing named imports and spacing while applying this ordering.
🪄 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: 4d0d3f46-9b66-4edf-8235-4392c7af914f

📥 Commits

Reviewing files that changed from the base of the PR and between 9f712c6 and 2de4656.

📒 Files selected for processing (3)
  • web/packages/studio/src/components/dataViews/ExperimentGroupDataView/index.tsx
  • web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/Empty.tsx
  • web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • web/packages/studio/src/components/dataViews/ExperimentSessionsDataView/index.tsx

walston added 10 commits June 11, 2026 09:31
Signed-off-by: Nathan Walston <nwalston@nvidia.com>
…, and ExperimentSessionsDataView

Signed-off-by: Nathan Walston <nwalston@nvidia.com>
…p view

Signed-off-by: Nathan Walston <nwalston@nvidia.com>
Signed-off-by: Nathan Walston <nwalston@nvidia.com>
…ExperimentDetailMetrics

Signed-off-by: Nathan Walston <nwalston@nvidia.com>
…e with dynamic group and dataset

Signed-off-by: Nathan Walston <nwalston@nvidia.com>
…tate

- Remove leftover conflict marker from ExperimentGroupDataView
- Add tabbed CLI/coding-agent empty state to ExperimentSessionsDataView
- Add LINK_DOCS_EXPERIMENTS_CLI constant

Signed-off-by: Nathan Walston <nwalston@nvidia.com>
Signed-off-by: Nathan Walston <nwalston@nvidia.com>
Signed-off-by: Nathan Walston <nwalston@nvidia.com>
…wClick

Signed-off-by: Nathan Walston <nwalston@nvidia.com>
@walston
walston force-pushed the nwalston/experiment-details branch from 2de4656 to 531c967 Compare June 11, 2026 16:52
@walston
walston enabled auto-merge June 11, 2026 16:52
@walston
walston added this pull request to the merge queue Jun 11, 2026
Merged via the queue into main with commit ddd6156 Jun 11, 2026
42 checks passed
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