Created Started Finished
By: syd <syd@kronor.io>
Amortise evaluation, and stop claiming a precise atomization penalty The per-unit breakdown is now measured: of 1177 ms for one leaf test derivation, 816 ms is Nix evaluation, 292 ms is Vitest, and 69 ms is stdenv plus assembling the tree. Two consequences. Evaluation is a fixed cost per invocation, not per unit, and the scaling section shows it barely moves with workspace size. Amortised across a 19-unit invocation, Nix costs 156 ms per unit of work against Nx 341 ms: about twice as fast, not slower. It looks slower only when building a single unit, where one invocation fixed cost lands on one unit. That also finishes off the shared-skeleton plan this document once called the first thing to do. It could only ever have recovered the 69 ms line: 6% of one unit, 2% of a nineteen-unit run, in exchange for a shared derivation holding the sources that would become an input to every test. The atomization penalty for Nix is withdrawn as a number. Two runs of the same measurement gave +18% and +2%, so "small" is all the data supports. The case against per-test-file granularity does not need it: the invalidation gain is proportionally worse, 22/27 against 14/19, and the enumeration hazard is real.