{{ message }}
Repository navigation
Conversation
Run the full suite without race on macOS and Windows. Balance Linux race and platform indexer shards with measured per-test durations. Restore the race cache everywhere; warm and save only on main pushes. Give rounded-zero tests a minimum scheduling weight and prefer fewer cases when predicted shard times tie. Keep exact census coverage and Windows command splitting, and reject POSIX -run arguments above 120 KiB before matcher or test execution. The timing files come from fork CI run 39516010765 on main's own tests.
Plan bounded shard counts from cached timings or committed fallback files without running Go. Share the exact inputs with every test job. Target 10-minute shards for every OS, with at most five macOS jobs and the previous counts on invalid input. On main pushes, collect completed shard PASS results and merge them against the timings used by that run. Average old and measured values, and retain old names when any expected family shard is missing. Cache the merged files and upload them for manual fallback refreshes. Linux race shard -v output feeds these measurements. Keep the partition unit-test job and the Windows verbose-output dependency. Rerun artifacts are not bound to plan inputs, so stale records can drop timing entries for one run without changing Go-checked test coverage.
3 of 7 tasks
peterkc
marked this pull request as ready for review
October 21, 2026 09:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Closes #938. CI on
mainruns the whole suite in one job per OS and takes about 43 minutes. This PR splits the large packages into shards balanced by measured test time and runs macOS and Windows without-raceand coverage. Aplanjob sets the shard counts on every run from timings saved by earliermainruns. On my fork the same CI took 12.4 minutes.Diagrams
Changes
scripts/ci-test-partition.py, its tests and itsci.ymllayout unchanged, so this does not wait for Improve incremental indexing and resumable contract analysis #806.internal/indexertests fail on Windows when they run in shards.-raceand coverage. Linux keeps both. Coverage was already uploaded only from Linux.planjob picks the counts (10 minutes of test time per shard, at most 5 macOS jobs) and passes them to the test matrices withfromJSON.mainpushes, shard jobs record per-test times and atimingsjob merges them into the Actions cache. PRs read the newest entry. The committed timing files are the fallback, then today's split by count.mainpushes. Atest-partitionjob runs the script's unit tests.Testing
All tests pass (
go test -race ./...)New tests added for new functionality
Benchmarks run if performance-relevant
Fork CI on this branch plus one fork-only commit that lets PR runs save timings, because my fork's
mainnever runs CI. Run 39523017380 passed every job.That run took 12.4 minutes and 150 runner-minutes.
main's own run 39482173339 took 42.8 minutes and 108 runner-minutes. More jobs repeat setup and build, so the cost is higher.python3 -m unittest scripts/test_ci_test_partition.pypasses, also withTEST_WINDOWS=true TEST_RACE=false. I did not rungo test -race ./...locally; CI runs the full suite.Upstream run 39542412520 on this PR started cold:
mainhas saved no timings or race build cache yet, so the plan used the committed timing files and every Linux job compiled from scratch. Every job that ran passed.That run took 37.9 minutes and 224 runner-minutes over 16 test jobs (Linux 8, macOS 4, Windows 4). Some test jobs waited up to 29.9 minutes for a runner. Steady-state numbers need the first
mainpush after merge.Not run on the fork: the
main-push path (timing merge, cache saves). The fork ran it on PR runs through the fork-only commit.Check names change when shard counts change. That is fine while
mainhas no required checks; with required checks, an aggregator job would be needed.Checklist
Meta["methods"]for interfaces (if applicable)EdgeMemberOfedges to their containing type (if applicable)