e177e1f9

Created Started Finished

By: syd <syd@kronor.io>

Measure evaluation scaling: it is flat, so the architecture holds at size

The one open question that could have changed the verdict. Evaluation happens
on every invocation before any build, and it was the cost that plausibly grew
with the workspace.

It does not. From 24 to 389 projects, sixteen times the projects, median
evaluation goes from 107 ms to 148 ms: about 1.4x, or roughly 0.11 ms of
marginal cost per project. Per-project cost falls from 4.5 ms to 0.4 ms, which
is the signature of a fixed cost dominating.

Checked against the measurement errors this experiment has already made.
Forcing all 778 build and test derivation paths on a never-evaluated workspace
takes 150 ms cold against 148 ms warm, so no evaluation cache is being
measured. Forcing all 1950 attributes including the per-test-file variants
takes 144 ms, the same within noise, which confirms the cost is startup rather
than per-project work. The first-ever evaluation of a given content, which also
copies each project fileset into the store, is the max column: 179 ms at 389
projects.

So criterion two, evaluates quickly, is satisfied with a wide margin at the top
of the expected range.