MarshallOfSound

#53737: build: keep CI test-shard weights per test job

Merged
Created: Sep 8, 2026, 3:37:27 AM
Merged: Sep 9, 2026, 9:16:16 AM
5 comments
Target: main

Description of Change

script/split-tests.js packed CI test shards from one weights table per platform, so a MAS job packed from darwin timings, an ASan job from plain Linux timings, and arm64 from x64. Those jobs differ by more than a constant factor, which left their shards uneven:

job longest shard, shared table own table
linux_x64_asan 14.0 min 11.3 min
mas_x64 14.5 min 12.4 min
darwin_x64 17.9 min 16.6 min
darwin_arm64 15.3 min 14.4 min
linux_x64_ubsan 7.3 min 6.0 min
mas_arm64 13.5 min 12.4 min

(median of the last three green push runs on main, test-step minutes)

  • One table per test job, keyed as the job names its test_artifacts_* upload (darwin_x64, mas_arm64, linux_x64_asan, win_arm64, ...). CI already exports that key as ARTIFACT_KEY before the shard step.
  • A job without a table falls back to the nearest one of its build type (same arch first; MAS to darwin), then to a legacy darwin/linux/win32 table, so nothing changes on a branch that has not regenerated yet.
  • spec/index.js records the sanitizer in spec-timings.json; gen-spec-weights.js keys tables the same way and skips the Wayland allowlist job.
  • Weights regenerated from every artifact of run 34181277552.

The tables will be kept fresh by a weekly roller (electron/roller) that regenerates each branch's file from its own recent runs and opens a PR when the packing has drifted.

Notes: none

Backports

42-x-y
Pending
Waiting for a manual backport
43-x-y
Pending
Waiting for a manual backport
44-x-y
Pending
Waiting for a manual backport
45-x-y
Pending
Waiting for a manual backport

Semver Impact

Major
Breaking changes
Minor
New features
Patch
Bug fixes
None
Docs, tests, etc.

Semantic Versioning helps users understand the impact of updates:

  • Major (X.y.z): Breaking changes that may require code modifications
  • Minor (x.Y.z): New features that maintain backward compatibility
  • Patch (x.y.Z): Bug fixes that don't change the API
  • None: Changes that don't affect using facing parts of Electron