New version: TestShards v0.3.37 - #165006
Conversation
JuliaRegistrator
commented
Aug 19, 2026
- Registering package: TestShards
- Repository: https://github.com/QAtlasHub/TestShards.jl
- Created by: @github-actions[bot]
- Version: v0.3.37
- Commit: 64e51fd3ee109590a47da38635e7d7e6f81c203b
- Reviewed by: @github-actions[bot]
- Reference: QAtlasHub/TestShards.jl@64e51fd#commitcomment-196771395
- Description: Balanced, timing-informed sharding of a Julia test suite across CI jobs — with a canonical test universe that cannot silently lose a directory.
UUID: acceef1d-f5e0-4fe4-a546-818dc56ce7b2 Repo: https://github.com/QAtlasHub/TestShards.jl.git Tree: 07a0368bc78274b40ab3a768d96a1624e6eea626 Registrator tree SHA: 50f504d641745716a5b3eabaf681d3a4937d2ae3
…#77) #76 stopped a full artifact storage quota from failing the label job, and the shards then ran — and all eight failed one step later: Unable to download artifact(s): Artifact not found for name: testshards-timings An upload that is allowed to fail has a consumer that is not. Both halves have to degrade together, and for `timings` the degradation is NOT free to make per shard: > The ONE history `labels` read, not one this shard fetched for itself. A per-shard > fetch let a single transient failure put one shard on a different assignment > function from the rest — which double-runs some units and skips others, with > every shard still green. So `continue-on-error` on the DOWNLOAD would reintroduce exactly that. Instead the label job publishes its upload's outcome as an output, and every shard gates on that one value: either the whole matrix has the history or none of it does. "None" is a state the package already defines — `load_timings` returns an empty table for a missing path, which is what the first run of any suite gets — so the fallback is the ordinary unweighted assignment, not a new code path. A `::warning::` says the balance may be worse and that the result is not. `prebuild` gets the same shape for the same reason, and it is an optimisation outright: a shard without the shared compiled cache precompiles for itself and computes the same answer. Its upload becomes non-fatal, its outcome an output, and both the download and the adopt step gate on it. What stays fatal is unchanged: `Every unit ran, exactly once`, and the refusal inside `restore_counters`.
|
Hello, I am an automated registration bot. I help manage the registration process by checking your registration against a set of AutoMerge guidelines. If all these guidelines are met, this pull request will be merged automatically, completing your registration. It is strongly recommended to follow the guidelines, since otherwise the pull request needs to be manually reviewed and merged by a human. 1. AutoMerge Guidelines which are not met ❌
2. Needs action: here's what to do next
If you need help fixing the AutoMerge issues, or want your pull request to be manually merged instead, please post a comment explaining what you need help with or why you would like this pull request to be manually merged. Then, send a message to the 3. To pause or stop registrationIf you want to prevent this pull request from being auto-merged, simply leave a comment. If you want to post a comment without blocking auto-merging, you must include the text Tip: You can edit blocking comments to add |