e02e8e03

By: syd <syd@kronor.io>

Measure architecture D instead of arguing about it, and reject it

FINDINGS argued against deriving Nix derivations from Nx task graph from the
shape of the data, and said plainly it was never built. Measured now, by
comparing the unit-and-edge set each graph would generate rather than building
a parallel implementation. They are not isomorphic, and both differences favour
the project graph.

The task graph is missing 5 of the 38 units: build-chain-a, build-cli,
build-orphan, build-report and build-web, exactly the leaf projects nothing
depends on, so ^build never pulls their build task in. Deriving from the task
graph would not typecheck them, and Vitest does not typecheck either, so a type
error in any leaf package would be invisible. That is the hole closed by
putting the build derivations into nix flake check; architecture D reopens it by
construction.

It also adds 3 spurious edges: build-lexer, build-parser and build-runtime all
wait for build-test-utils, because ^build follows every edge and Nx graph does
not distinguish a dev dependency from a runtime one.

The earlier claim that the task graph is "very nearly the project graph
relabelled" was wrong in the direction that mattered.

Total

5m09s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 0s 2s 2s 2s 0s
Eval 1s 5m05s 5m05s 5m07s 0s
Build 5s 3s 5m04s 5m09s 0s
Suite 0s 5m11s 5m09s 5m09s 0s

Timeline

Config Eval Build
0s1m2m3m4m5m