@@ -1771,6 +1771,8 @@ <h3 style="color: rgb(248, 113, 113); font-size: 14px; font-weight: 600; margin-
17711771 var color = ciSeverityColor ( sev ) ;
17721772 var hasData = count > 0 ;
17731773 var meanWidth = hasData ? Math . max ( 0 , Math . min ( 100 , mean ) ) : 0 ;
1774+ var minSamples = ( cls && typeof cls . min_samples === 'number' ) ? cls . min_samples : 0 ;
1775+ var needed = ( cls && typeof cls . samples_needed === 'number' ) ? cls . samples_needed : 0 ;
17741776
17751777 var wrap = document . createElement ( 'div' ) ;
17761778 wrap . style . cssText = 'padding: 10px 12px; background: rgba(30, 41, 59, 0.4); border-radius: 6px; margin-bottom: 8px; border: 1px solid rgba(71, 85, 105, 0.5);' ;
@@ -1814,6 +1816,19 @@ <h3 style="color: rgb(248, 113, 113); font-size: 14px; font-weight: 600; margin-
18141816 countEl . textContent = '(' + count + ')' ;
18151817 summary . appendChild ( countEl ) ;
18161818
1819+ var detEl = document . createElement ( 'div' ) ;
1820+ detEl . style . cssText = 'min-width: 64px; text-align: right; font-size: 10px; font-weight: 600; font-family: \'JetBrains Mono\', monospace;' ;
1821+ if ( needed > 0 ) {
1822+ detEl . textContent = needed + ' to go' ;
1823+ detEl . style . color = 'rgb(251, 191, 36)' ;
1824+ detEl . title = 'Needs ' + needed + ' more sample(s) to reach ' + minSamples + ' before a determination can be made' ;
1825+ } else {
1826+ detEl . textContent = '✓ ready' ;
1827+ detEl . style . color = 'rgb(52, 211, 153)' ;
1828+ detEl . title = 'Reached ' + minSamples + ' samples; a determination can be made' ;
1829+ }
1830+ summary . appendChild ( detEl ) ;
1831+
18171832 wrap . appendChild ( summary ) ;
18181833
18191834 if ( rec . text ) {
@@ -1827,6 +1842,23 @@ <h3 style="color: rgb(248, 113, 113); font-size: 14px; font-weight: 600; margin-
18271842 detail . id = 'ci-detail-' + idx ;
18281843 detail . style . cssText = 'display: none; margin-top: 12px; margin-left: 16px;' ;
18291844
1845+ // Determination progress toward the minimum sample count.
1846+ var detWrap = document . createElement ( 'div' ) ;
1847+ detWrap . style . cssText = 'margin-bottom: 12px;' ;
1848+ var detLbl = document . createElement ( 'div' ) ;
1849+ detLbl . style . cssText = 'font-size: 11px; color: rgb(148, 163, 184); margin-bottom: 4px; font-family: \'JetBrains Mono\', monospace;' ;
1850+ detLbl . textContent = 'Samples toward determination: ' + Math . min ( count , minSamples ) + ' / ' + minSamples +
1851+ ( needed > 0 ? ' (' + needed + ' more needed)' : ' (reached)' ) ;
1852+ var detTrack = document . createElement ( 'div' ) ;
1853+ detTrack . style . cssText = 'height: 12px; background: rgba(30, 41, 59, 0.6); border-radius: 2px; overflow: hidden; border: 1px solid rgba(71, 85, 105, 0.5);' ;
1854+ var detFill = document . createElement ( 'div' ) ;
1855+ var detPct = minSamples > 0 ? Math . max ( 0 , Math . min ( 100 , ( count / minSamples ) * 100 ) ) : 100 ;
1856+ detFill . style . cssText = 'height: 100%; width: ' + detPct + '%; background: ' + ( needed > 0 ? 'rgb(251, 191, 36)' : 'rgb(52, 211, 153)' ) + '; opacity: 0.75;' ;
1857+ detTrack . appendChild ( detFill ) ;
1858+ detWrap . appendChild ( detLbl ) ;
1859+ detWrap . appendChild ( detTrack ) ;
1860+ detail . appendChild ( detWrap ) ;
1861+
18301862 if ( hasData ) {
18311863 var stats = document . createElement ( 'div' ) ;
18321864 stats . style . cssText = 'font-size: 11px; color: rgb(148, 163, 184); margin-bottom: 10px; font-family: \'JetBrains Mono\', monospace;' ;
0 commit comments