e02e8e03

Created Started Finished

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.