diff --git a/packages/exojs-bench/docs/harness.md b/packages/exojs-bench/docs/harness.md index 1e45c4f03..3fee35c0c 100644 --- a/packages/exojs-bench/docs/harness.md +++ b/packages/exojs-bench/docs/harness.md @@ -256,6 +256,7 @@ Rules the generator enforces rather than merely intends: - Every row names the mechanism behind its difference, drawn from the structural counters. A row whose mechanism cannot be evidenced is not published - it is listed under Omissions with the reason, so a dropped row stays auditable. - One column per competitor, no "best competitor" composite. Phaser occupies its own WebGL1 block, CPU time only, explicitly carrying no mechanism. - Cells where ExoJS loses are published exactly like the cells where it wins. +- A scenario whose arms turn out not to do the same work is repaired and re-measured. It is never published with a "not comparable" label in place of its comparison, and never hidden: a label would keep a known-unfair row on the page, and hiding it would let the choice of what to show depend on the outcome. ### Machine profiles diff --git a/site/src/components/BenchComparisonTable.astro b/site/src/components/BenchComparisonTable.astro index c12a6528c..071d2b158 100644 --- a/site/src/components/BenchComparisonTable.astro +++ b/site/src/components/BenchComparisonTable.astro @@ -53,7 +53,6 @@ import { pooledFactor, ratioBand, rungSide, - withheldScenario, type ProfileCell, type ProfileSpread, } from '../lib/bench-profiles'; @@ -219,15 +218,8 @@ const winnerOf = (cell: ProfileCell): string => { {row.load} )} - {/* - * A row whose arms are known not to do the same work - * publishes their times and no comparison: the factor, - * the bar and the winner all go, the same way they do - * for a pair the clock could not separate. - */} {row.entries.map((entry, column) => { const cell = entry.cell; - const withheld = withheldScenario(row.archetype) !== undefined; if (cell === null) { const reason = @@ -248,7 +240,7 @@ const winnerOf = (cell: ProfileCell): string => { const mixed = outcome === 'unstable'; const level = outcome === 'level'; // A pair the clock never separated publishes neither a figure nor a bar; only its two times survive. - const unresolved = withheld || outcome === 'timer-limited' || outcome === 'timer-unknown'; + const unresolved = outcome === 'timer-limited' || outcome === 'timer-unknown'; const band = mixed ? ratioBand(cell) : null; const factor = mixed ? pooledFactor(cell) : cell.verdict.factor; const ratio = cell.verdict.ratio; @@ -279,16 +271,8 @@ const winnerOf = (cell: ProfileCell): string => { {/* A pair inside the noise band is named, not scored: its factor is pinned to 1 by the ladder, so printing 1.00x beside two medians that differ would claim a precision the ladder never measured. */} {unresolved ? '-' : mixed ? (factor === null ? '-' : formatApproximate(factor)) : level ? 'similar' : formatFactor(factor)} {/* The word alone; what it means is stated once in the legend rather than in every cell that carries it. */} - - {withheld - ? 'not comparable' - : unresolved - ? OUTCOME_STATUS[outcome] - : mixed - ? OUTCOME_STATUS.unstable - : level - ? '' - : winnerOf(cell)} + + {unresolved ? OUTCOME_STATUS[outcome] : mixed ? OUTCOME_STATUS.unstable : level ? '' : winnerOf(cell)} @@ -308,7 +292,6 @@ const winnerOf = (cell: ProfileCell): string => {
{/* The row already names its archetype; the label repeats it only where a reader reaches the summary without that context. */} Measurement detail - {withheldScenario(row.archetype) !== undefined &&

{withheldScenario(row.archetype)}

}
{row.entries.map((entry, column) => { const cell = entry.cell; @@ -796,13 +779,6 @@ const winnerOf = (cell: ProfileCell): string => { border-bottom: 1px solid var(--line-soft); } - .row-withheld { - margin: 0.4rem 0 0.6rem; - font-size: 0.8rem; - line-height: 1.45; - color: var(--fg-muted); - } - .row-more summary { cursor: pointer; font-family: var(--f-mono); diff --git a/site/src/components/BenchResultCard.astro b/site/src/components/BenchResultCard.astro index d032476d1..77a3c3e85 100644 --- a/site/src/components/BenchResultCard.astro +++ b/site/src/components/BenchResultCard.astro @@ -172,23 +172,15 @@ const statesOf = (load: BenchCard['loads'][number]): readonly CellOutcome[] => [ {card.loads.map(load => (