feat(studio): surface experiment metadata as dynamic columns - #412
Merged
Conversation
Union of metadata keys across loaded rows, sorted alphabetically, inserted after the Models column. Each key becomes a hideable column via the existing EditColumnsMenu. Cell rendering: null/undefined → '-', object/array → JSON.stringify, primitives → String(). Values over 50 chars truncate with a tooltip showing the full string. Signed-off-by: Nathan Walston <nwalston@nvidia.com>
'status' and 'Status' now produce a single column instead of two identically-labelled headers. The accessor finds the first key that lowercases to a match, so the value is still retrieved correctly regardless of how the producer cased the key. Signed-off-by: Nathan Walston <nwalston@nvidia.com>
Contributor
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthrough
ChangesDynamic metadata columns in ExperimentGroupDataView
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Signed-off-by: Nathan Walston <nwalston@nvidia.com>
Contributor
|
shanaiabuggy
approved these changes
Jun 23, 2026
crookedstorm
pushed a commit
that referenced
this pull request
Jun 24, 2026
* feat: surface experiment metadata as dynamic columns Union of metadata keys across loaded rows, sorted alphabetically, inserted after the Models column. Each key becomes a hideable column via the existing EditColumnsMenu. Cell rendering: null/undefined → '-', object/array → JSON.stringify, primitives → String(). Values over 50 chars truncate with a tooltip showing the full string. Signed-off-by: Nathan Walston <nwalston@nvidia.com> * fix: normalize metadata keys to lowercase to collapse case variants 'status' and 'Status' now produce a single column instead of two identically-labelled headers. The accessor finds the first key that lowercases to a match, so the value is still retrieved correctly regardless of how the producer cased the key. Signed-off-by: Nathan Walston <nwalston@nvidia.com> * style: fix prettier formatting in ExperimentGroupDataView Signed-off-by: Nathan Walston <nwalston@nvidia.com> --------- Signed-off-by: Nathan Walston <nwalston@nvidia.com>
steramae-nvidia
pushed a commit
that referenced
this pull request
Jun 25, 2026
* feat: surface experiment metadata as dynamic columns Union of metadata keys across loaded rows, sorted alphabetically, inserted after the Models column. Each key becomes a hideable column via the existing EditColumnsMenu. Cell rendering: null/undefined → '-', object/array → JSON.stringify, primitives → String(). Values over 50 chars truncate with a tooltip showing the full string. Signed-off-by: Nathan Walston <nwalston@nvidia.com> * fix: normalize metadata keys to lowercase to collapse case variants 'status' and 'Status' now produce a single column instead of two identically-labelled headers. The accessor finds the first key that lowercases to a match, so the value is still retrieved correctly regardless of how the producer cased the key. Signed-off-by: Nathan Walston <nwalston@nvidia.com> * style: fix prettier formatting in ExperimentGroupDataView Signed-off-by: Nathan Walston <nwalston@nvidia.com> --------- Signed-off-by: Nathan Walston <nwalston@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #ASE-286
Screen.Recording.2026-06-23.at.11.16.09.mov
Summary
Experiments carry free-form
metadata(producer-supplied key/value pairs) but there was no way to compare them side-by-side in the experiments table. This adds dynamic metadata columns that mirror the existing evaluator-score column pattern: auseMemocomputes the union of metadata keys across the loaded page, sorts them alphabetically, and maps each into a column accessor inserted after the Models column.Keys are normalized to lowercase when building the union so case variants (e.g.
statusandStatusfrom different producers) collapse into one column instead of producing duplicate headers. The accessor finds the first key that lowercases to a match, so values are still retrieved correctly regardless of producer casing. All metadata columns flow through the existingEditColumnsMenuso users can hide noisy keys. Cell rendering handles every value type:null/undefined→-, objects/arrays →JSON.stringify, primitives →String(). Values over 50 characters truncate with a tooltip showing the full string.Test plan
test-group-experiment-medadatain Studiomissing-key-brow shows-in the Environment column (key absent)object-valuerow shows stringified JSON in the Config columnlong-valuerow truncates Job Name at 50 chars with a tooltip containing the full stringprimitivesrow shows3andfalsefor Retries and Cached (not-)no-metadatarow renders without crashing; no extra columns from that rowcase-variant-lowerandcase-variant-uppershare a single Status column showingpassingandFAILINGSummary by CodeRabbit
Summary by CodeRabbit
-