Parent: #478.
Flow/sklearn timings must expose representation differences rather than accidentally rewarding one side for cheaper inputs. Record source dtype, estimator internal dtype, row/column-major layout, contiguity/alignment, preprocessing/scaling, label encoding and every timed/untimed conversion or copy.
Where sklearn internally promotes or copies, distinguish API-realistic end-to-end timing from kernel-only equivalent-representation timing. Where Flow uses f32 and sklearn f64, make that a visible semantic/performance dimension with numerical-error evidence.
Acceptance: canonical and scaled artifacts contain representation/preprocessing metadata; hidden untimed conversion bytes = 0; equivalent-representation microbenchmarks exist for disputed gaps; Pages can distinguish end-to-end API wins from dtype/layout advantages.
Parent: #478.
Flow/sklearn timings must expose representation differences rather than accidentally rewarding one side for cheaper inputs. Record source dtype, estimator internal dtype, row/column-major layout, contiguity/alignment, preprocessing/scaling, label encoding and every timed/untimed conversion or copy.
Where sklearn internally promotes or copies, distinguish API-realistic end-to-end timing from kernel-only equivalent-representation timing. Where Flow uses f32 and sklearn f64, make that a visible semantic/performance dimension with numerical-error evidence.
Acceptance: canonical and scaled artifacts contain representation/preprocessing metadata; hidden untimed conversion bytes = 0; equivalent-representation microbenchmarks exist for disputed gaps; Pages can distinguish end-to-end API wins from dtype/layout advantages.