9efb0d79

Drop NixCI dependency edges to doNotBuild jobs

## Problem

The newer NixCI validates build-dependency edges and rejects any edge whose
endpoint is a job it does not build (i.e. a job listed in `doNotBuild`). The
manual dependency graph in `nix-ci.nix` referenced **35** such jobs, so NixCI
now shows a `build-dependency configuration error`:

- `checks.x86_64-linux.gammaloop-doctest`, `checks.x86_64-linux.gammaloop-nextest-binaries`
- every `crate-*` and `crate-deps-*` artifact (all `doNotBuild`)
- `packages.x86_64-linux.default`, `workspaceBuildArtifacts`,
  `workspaceDoctestCargoArtifacts`, `gammaloop-llvm-coverage`,
  `nix-ci-check-gammaloop-nextest`

These jobs exist in the flake but are excluded from CI via `doNotBuild`, so
ordering edges to/from them are meaningless — NixCI never schedules them.

## Fix

Keep constructing the full crate/artifact DAG (so the drift and cycle asserts
stay meaningful), then run the emitted graph through a new
`buildableDependencies` filter that drops every edge touching a `doNotBuild`
job. Only ordering between jobs NixCI actually builds survives.

Result: **162** meaningless edges dropped, **96** edges between built jobs kept
(workspace-hack cache root, the test-support DAG, and nextest-archive ordering
— all correctness-neutral scheduling hints).

## Testing

- `nix eval` of `nix-ci.nix` succeeds.
- An assertion over the emitted graph confirms **0** remaining edges reference
  a `doNotBuild` job (down from 35 endpoints / 162 edges).
gammaloopgammaloop-clippygammaloop-docgammaloop-fmtgammaloop-guppy-workspace-graphgammaloop-nextest-binaries-clinnetgammaloop-nextest-binaries-coregammaloop-nextest-binaries-integrationgammaloop-nextest-binaries-linnetgammaloop-nextest-binaries-python-apigammaloop-nextest-binaries-spensogammaloop-nextest-binaries-vakintlinnest-wasmconfiguredeploy:nix-ci-passeddevShellcargoArtifactsci-workspace-graph-jsonclinnet-clicrate-deps-gammaloop-workspace-hackcrate-gammaloop-workspace-hackcrate-test-support-clinnetcrate-test-support-gammaloop-apicrate-test-support-gammaloop-integration-testscrate-test-support-gammaloop-tracing-filtercrate-test-support-gammaloop-tracing-filter-macroscrate-test-support-gammalooprscrate-test-support-idensocrate-test-support-linnestcrate-test-support-linnet-pycrate-test-support-spensocrate-test-support-spenso-hep-libcrate-test-support-spynso3crate-test-support-vakintgammaloopgammaloop-python-modulegammaloopApiPackageArtifactslinnest-wasmlinnestWasmCargoArtifactsnix-ci-check-gammaloop-doctestnix-ci-check-gammaloop-nextest-clinnetnix-ci-check-gammaloop-nextest-corenix-ci-check-gammaloop-nextest-integrationnix-ci-check-gammaloop-nextest-linnetnix-ci-check-gammaloop-nextest-python-apinix-ci-check-gammaloop-nextest-spensonix-ci-check-gammaloop-nextest-vakintnix-ci-passedworkspaceCheckCargoArtifactsworkspaceClippyCargoArtifactsworkspaceDocCargoArtifactsx86_64-linuxtest:nix-ci-check-gammaloop-doctesttest:nix-ci-check-gammaloop-nextest-clinnettest:nix-ci-check-gammaloop-nextest-coretest:nix-ci-check-gammaloop-nextest-integrationtest:nix-ci-check-gammaloop-nextest-linnettest:nix-ci-check-gammaloop-nextest-python-apitest:nix-ci-check-gammaloop-nextest-spensotest:nix-ci-check-gammaloop-nextest-vakint