603d9da6

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Measure whether the fact layer is earning its keep

It is not, at this size, and the numbers say so three ways.

Facts are larger than the source they summarise: 1.22x to 1.88x across four
nix-ci packages. levels.md named that exact threshold in advance and said
crossing it means the serialisation is carrying the AST rather than a designed
summary.

Half of a fact file is spans, and a quarter of it is one path. nix-ci-leader's
facts hold 8,345 spans over 248 distinct files, and every span inside a module
writes out that module's own path again. That is 520 KB of 2,205 KB, and it is
also a representable disagreement: nothing stops a span in one module's facts
from naming another module's file.

The unit of caching costs more to produce than the whole uncached job. Checking
all of nix-ci in one process takes 4.1 seconds. Building one package's facts as
a derivation takes 5.4, for about a third of the work.

Written up in plan/corpus.md with the three things that could follow, since
which one is a decision rather than a measurement.
e2e-clean-hopinione2e-clean-hopinion-project-reporte2e-clean-hopinion-report-lonelye2e-clean-hopinion-report-thinge2e-clean-hopinion-report-thing-gene2e-dirty-package-is-judged-failinge2e-dirty-project-is-judged-failinge2e-dirty-report-is-readablee2e-discovers-every-packagee2e-no-packages-is-judged-failinge2e-no-store-paths-in-findingse2e-paths-are-repository-relativee2e-withheld-facts-faile2e-wrong-source-mapping-is-a-complainthlint-checkhopinionhopinion-project-reporthopinion-report-hopinionhopinion-report-hopinion-genplanpre-commitreleaseshellweeder-checkconfiguredevShelldefaultx86_64-linux