@@ -76,15 +76,11 @@ import {
7676 taskHasCancellableWork ,
7777} from "@/lib/job-status" ;
7878import {
79- ANALYSIS_CLASSIFICATION_LABELS ,
8079 formatPartialRewardBadgeValue ,
8180 formatRewardPercent ,
8281 formatRewardValue ,
8382 getMatrixStatus ,
84- getQaGlyphMatrixClass ,
8583 getRewardStyle ,
86- getVisibleAnalysisClassification ,
87- QA_TONE_MATRIX_CLASS ,
8884 STATUS_CONFIG ,
8985 STATUS_GLYPH_BOX ,
9086 type MatrixStatus ,
@@ -335,12 +331,12 @@ const ANALYSIS_LEGEND_ITEMS: Array<{
335331 } ,
336332 {
337333 key : "good" ,
338- label : "Good " ,
334+ label : "Pass " ,
339335 dotClass : ANALYSIS_CONFIG . GOOD_SUCCESS . dotClass ,
340336 } ,
341337 {
342338 key : "bad" ,
343- label : "Bad " ,
339+ label : "Fail " ,
344340 dotClass : ANALYSIS_CONFIG . BAD_SUCCESS . dotClass ,
345341 } ,
346342 {
@@ -1566,22 +1562,6 @@ export function ExperimentTrialsTable({
15661562 "analysis-failed" : "var(--paper-a-failed)" ,
15671563 } ;
15681564
1569- // Good/bad chips show the tone painted on both outcome shapes — a ✓✗
1570- // pair — so the legend teaches the cell semiotics (shape = outcome,
1571- // color = QA verdict) instead of implying green means "pass".
1572- const renderToneGlyphPair = ( tone : "good" | "bad" ) => (
1573- < span className = "inline-flex items-center gap-[2px]" >
1574- { ( [ "pass" , "fail" ] as const ) . map ( ( shape ) => (
1575- < span
1576- key = { shape }
1577- className = { `inline-flex h-[14px] w-[16px] items-center justify-center rounded-[3px] border ${ QA_TONE_MATRIX_CLASS [ tone ] } ` }
1578- >
1579- < StatusIcon status = { shape } className = "h-2 w-2" />
1580- </ span >
1581- ) ) }
1582- </ span >
1583- ) ;
1584-
15851565 const renderAnalyzerChip = ( item : ( typeof ANALYSIS_LEGEND_ITEMS ) [ number ] ) => {
15861566 const isDimmed = dimmedAnalysisKeys . has ( item . key ) ;
15871567 return (
@@ -1595,14 +1575,10 @@ export function ExperimentTrialsTable({
15951575 isDimmed ? "line-through opacity-[0.38]" : ""
15961576 } `}
15971577 >
1598- { item . key === "good" || item . key === "bad" ? (
1599- renderToneGlyphPair ( item . key )
1600- ) : (
1601- < span
1602- className = { `inline-block h-2 w-2 rounded-full ${ item . animate ? "animate-pulse" : "" } ` }
1603- style = { { background : ANALYZER_CHIP_COLOR [ item . key ] } }
1604- />
1605- ) }
1578+ < span
1579+ className = { `inline-block h-2 w-2 rounded-full ${ item . animate ? "animate-pulse" : "" } ` }
1580+ style = { { background : ANALYZER_CHIP_COLOR [ item . key ] } }
1581+ />
16061582 < span > { item . label } </ span >
16071583 </ Button >
16081584 </ TooltipTrigger >
@@ -1617,46 +1593,31 @@ export function ExperimentTrialsTable({
16171593 < Tooltip >
16181594 < TooltipTrigger asChild >
16191595 < div className = "flex items-center gap-2.5 border-r border-dashed border-[color:var(--paper-line)] pr-2.5 pl-1.5 font-mono text-[9.5px] leading-tight text-[color:var(--paper-ink-3)]" >
1620- < span className = "relative inline-flex gap-[3px] " >
1596+ < span className = "relative inline-flex" >
16211597 < span
16221598 className = { `flex items-center justify-center border-transparent bg-[color:var(--paper-pass)] text-white ${ STATUS_GLYPH_BOX } ` }
16231599 >
16241600 < StatusIcon status = "pass" />
16251601 </ span >
1626- < span
1627- className = { `flex items-center justify-center border-transparent text-white ${ STATUS_GLYPH_BOX } ${
1628- showAnalysis
1629- ? "bg-[color:var(--paper-pass)]"
1630- : "bg-[color:var(--paper-fail)]"
1631- } `}
1632- >
1633- < StatusIcon status = "fail" />
1634- </ span >
16351602 { showAnalysis && (
1636- < span className = "absolute -top-[2px] -right-[2px] h-[7px] w-[7px] animate-pulse rounded-full bg-[color:var(--paper-a-analyzing )] ring-[1.5px] ring-[color:var(--paper-surface)]" />
1603+ < span className = "absolute -top-[2px] -right-[2px] h-[7px] w-[7px] rounded-full bg-[color:var(--paper-a-good )] ring-[1.5px] ring-[color:var(--paper-surface)]" />
16371604 ) }
16381605 </ span >
16391606 < span className = "flex flex-col gap-0.5" >
16401607 < span className = "inline-flex items-center gap-1.5 whitespace-nowrap" >
1641- < StatusIcon status = "pass" className = "h-2.5 w-2.5" />
1642- < StatusIcon status = "fail" className = "h-2.5 w-2.5" />
1643- shape = trial result
1608+ < span className = "inline-block h-2.5 w-2.5 rounded-[2px] bg-[color:var(--paper-pass)]" />
1609+ trial result
16441610 </ span >
16451611 { showAnalysis && (
16461612 < span className = "inline-flex items-center gap-1.5 whitespace-nowrap" >
1647- < span className = "inline-block h-2.5 w-2.5 rounded-[2px] bg-[color:var(--paper-pass)]" />
1648- < span className = "inline-block h-2.5 w-2.5 rounded-[2px] bg-[color:var(--paper-fail)]" />
1649- color = QA verdict
1613+ < span className = "mx-[1px] inline-block h-2 w-2 rounded-full bg-[color:var(--paper-a-good)]" />
1614+ QA result
16501615 </ span >
16511616 ) }
16521617 </ span >
16531618 </ div >
16541619 </ TooltipTrigger >
1655- < TooltipContent >
1656- How to read a cell: ✓/✗ is the trial outcome; once QA classifies a
1657- trial, green means the outcome is good (expected) and red means bad — a
1658- green ✗ is a good failure. A pulsing dot means QA is still running.
1659- </ TooltipContent >
1620+ < TooltipContent > How to read a cell</ TooltipContent >
16601621 </ Tooltip >
16611622 ) ;
16621623
@@ -2474,26 +2435,6 @@ export function ExperimentTrialsTable({
24742435 dimmedAnalysisKeys . has ( analysisLegendKey )
24752436 ? "opacity-25"
24762437 : "" ;
2477- // A classified binary outcome takes its QA
2478- // tone as the glyph fill: shape = outcome,
2479- // color = QA verdict. A good failure is a
2480- // green ✗, a bad success a red ✓. The
2481- // classification (and with it the fill and
2482- // label) is null when QA is hidden.
2483- const classification =
2484- getVisibleAnalysisClassification (
2485- showAnalysis ,
2486- trial
2487- ) ;
2488- const qaGlyphClass = getQaGlyphMatrixClass (
2489- status ,
2490- classification
2491- ) ;
2492- const cellLabel = classification
2493- ? ANALYSIS_CLASSIFICATION_LABELS [
2494- classification
2495- ]
2496- : config . shortLabel ;
24972438 const baseTitle = getTrialTitle (
24982439 trial ,
24992440 status
@@ -2535,9 +2476,9 @@ export function ExperimentTrialsTable({
25352476 trialGroups,
25362477 } ) ;
25372478 } }
2538- className = { `relative grid place-items-center gap-0 p-0 leading-none transition-transform hover:-translate-y-px ${ STATUS_GLYPH_BOX } ${ qaGlyphClass ?? config . matrixClass } ${ isPartial ? "font-mono text-[9.5px] font-semibold tracking-[-0.02em] tabular-nums" : "" } ` }
2479+ className = { `relative grid place-items-center gap-0 p-0 leading-none transition-transform hover:-translate-y-px ${ STATUS_GLYPH_BOX } ${ config . matrixClass } ${ isPartial ? "font-mono text-[9.5px] font-semibold tracking-[-0.02em] tabular-nums" : "" } ` }
25392480 style = { getRewardStyle ( trial . reward ) }
2540- aria-label = { `Trial ${ trialIndex + 1 } ${ cellLabel } ` }
2481+ aria-label = { `Trial ${ trialIndex + 1 } ${ config . shortLabel } ` }
25412482 title = { fullTitle }
25422483 >
25432484 { isPartial ? (
@@ -2546,7 +2487,7 @@ export function ExperimentTrialsTable({
25462487 < StatusIcon status = { status } />
25472488 ) }
25482489 </ Button >
2549- { analysisIndicator && ! qaGlyphClass && (
2490+ { analysisIndicator && (
25502491 < span
25512492 aria-hidden = "true"
25522493 className = { `pointer-events-none absolute -top-[1px] -right-[1px] h-[4px] w-[4px] rounded-full ring-[1px] ring-[color:var(--paper-surface)] ${ analysisIndicator . dotClass } ${ analysisIndicator . animate ? "animate-pulse" : "" } ` }
0 commit comments