Only force latest compatible versions on the newest Julia - #3
Merged
Conversation
`julia-actions/julia-runtest` resolves `force_latest_compatible_version: auto` to `true` whenever the branch starts with `dependabot/julia` or `compathelper/`, which pins every `[compat]` entry to its newest range. On an older Julia that is unsatisfiable as soon as a dependency's newest range drops support for it, so every non-newest job in the matrix fails to resolve before running a test. Restrict it to `matrix.version == '1'`, matching how coverage is already gated, and expose `force-latest-compatible-version` so callers can override it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Every non-newest job in a
TestGroups.ymlmatrix fails to resolve — before running a single test — on any Dependabot or CompatHelper branch.Cause
julia-actions/julia-runtestdefaultsforce_latest_compatible_versiontoauto, andautois resolved purely by branch name (autodetect-dependabot.jl):On such a branch it becomes
true, which pins every[compat]entry to its newest range. That is fundamentally at odds with testing an older Julia: the newest release of a dependency routinely drops support for it, and the resolver then has nothing left to pick.TestGroups.ymlnever sets the input, so it inheritsautofor every entry in the matrix,minincluded.Observed
QuantumKitHub/TensorKit.jl#495 is a Dependabot PR bumping the JET compat entry. Result: 33
minjobs failed, 331jobs passed — the entireminhalf of the matrix, across all three operating systems and every test group.minthere is Julia 1.10.12, where JET is capped at 0.9.18, while JET 0.12 requires Julia ≥ 1.12.This is not specific to that compat entry, or to that PR. Checked against the registry on Julia 1.10.11:
So the same failure occurs with the compat entry already on
main; the two previous Dependabot PRs to that repo (#490, #445) show the identical all-minfailure pattern. Any repo using this workflow hits it the moment a test dependency's newest range stops supporting theminJulia.Change
Restrict the flag to the newest Julia, and let callers override it:
This keeps the signal the flag exists for — does this compat bump actually work against the newest dependencies? — on
1, and lets the other matrix entries resolve normally. Gating onmatrix.version == '1'matches howcoverageis already gated in the same step.The new
force-latest-compatible-versioninput defaults toauto, so behaviour on1is unchanged. Setting it tofalsedisables the flag everywhere; setting it totrueforces it on1only.Notes
Tests.ymlcallsjulia-runtestthe same way and has the same defect, but takes a scalarjulia-versionrather than a matrix, so the condition would differ. Left alone here — happy to fold it in if you'd like it fixed in one go.A && B || Cidiom is already used in this step fortest_args. Note'false'is a non-empty (truthy) string, so an explicitfalseinput propagates correctly rather than falling through to the fallback.🤖 Generated with Claude Code