Vitest's --shard gives each shard the same number of files by path
hash, so the Linux unit shards ran 3-14 minutes and the no-AK
integration shards 3-8. A sequencer for the cli, core and integration
configs now places files by the per-file times recorded in
test-durations.json and starts each shard's longest files first; the
plan depends only on paths and durations, so every shard computes the
same one. update-test-durations.mjs refreshes the data from recent
pull-request job logs.
The integration shard 1 type-check now runs beside its tests instead of
before them, and classify_pr publishes build_runner: when the repository
variable BUILD_RUNNER_LABELS is set, test_build runs on those hosts
instead of the whole x64 pool, whose ARM64 hosts build it at about half
the speed. Empty, it keeps ubuntu_runner.