The Downgrade Tests - Core job failed at the julia-downgrade-compat
resolution step with "Unsatisfiable": when every dependency is pinned to
its compat floor and resolved on Julia 1.10, several floors had drifted
out of mutual consistency:
- FiniteDiff floor 2.12 was incompatible with DifferentiationInterface
floor 0.7 (FiniteDiff < 2.27 caps DI at 0.6.x via its DI extension).
- ChainRulesCore floor 1.18 was below what Zygote 0.7 requires (>= 1.25.1).
- Zygote floor 0.6.69 was below what SciMLBase floor 2.104 requires (>= 0.7.10).
- DifferentiationInterface floor 0.7 only supports Mooncake 0.4.x, while the
Mooncake floor is 0.5.6; DI gained Mooncake 0.5.x support in 0.7.16.
- DifferentiationInterface 0.7.16's StaticArrays extension requires
StaticArrays >= 1.9.7, above the old 1.6.4 floor.
Raise the floors to the lowest mutually consistent set:
ChainRulesCore 1.18 -> 1.25.1
DifferentiationInterface 0.7 -> 0.7.16
FiniteDiff 2.12 -> 2.27
StaticArrays 1.6.4 -> 1.9.7
Zygote "0.6.69, 0.7" -> 0.7.10
Upper bounds are unchanged, so the regular CI (which uses the latest of
each) is unaffected. Verified locally on Julia 1.10: the merged
test-target project with every dep pinned to its floor now resolves
(previously Unsatisfiable), and each bumped dep resolves to exactly its
new floor, confirming these are minimal.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Raises several downgrade-compat floors to a mutually consistent set (upper bounds unchanged, so regular CI is unaffected). This is valid compat hygiene, but see the important note below: it does not by itself turn
Downgrade Tests - Coregreen — that red is an upstream Resolver.jl bug.1.181.25.10.70.7.162.122.271.6.41.9.70.6.69, 0.70.7.10These bumps remove genuine floor-vs-floor inconsistencies (FiniteDiff↔DifferentiationInterface, ChainRulesCore↔Zygote, Zygote↔SciMLBase, DI↔Mooncake, DI↔StaticArrays). Raising a floor never loosens anything for regular CI.
The
Downgrade Tests - Corered is an upstream Resolver.jl bug (not fixable here)Reproduced CI's downgrade resolution exactly (Resolver.jl at HEAD +
julia-downgrade-compat@v2'sdowngrade.jl,--julia=1.10). The blocker is Mooncake, and it is a resolver defect:>= 0.4.140(all0.5.x) declaresjulia = ["1.10.8 - 1.10", "1.11.6 - 1"]. The downgrade resolver minimizes julia to its floor1.10.0(because--min=@depsincludesJULIA_UUID), so it reports Mooncake0.5.6unsatisfiable.=floorand resolving with stockPkgon Julia 1.10.11 succeeds, andusing Mooncakeloads at0.5.6. So a valid all-floor solution exists.Mooncake = "0.5.6"+ julia with--julia=1.10.8(the exact supported patch) still returnsMooncake => nothing, even though1.10.8 ∈ specand every Mooncake dep has a compatible version.--julia=1.11(the"1.11.6 - 1"band) resolves Mooncake fine;--julia=1.10.8-1.10(the"1.10.8 - 1.10"band) does not. Resolver mishandles the bounded"1.10.8 - 1.10"sub-range of the multi-range julia compat vector.Repo-side workarounds do not help (verified end-to-end): raising the
juliafloor to1.10.8(resolver ignores project julia compat for julia selection, still offers1.10.0), andskip: Mooncake(the merged-extras path ignores the skip list). The only repo "fix" would be downgrading Mooncake into0.4.x, which loses real functionality and is not acceptable.Fix belongs upstream in
SciML/Resolver.jl(bounded"X - Y"julia sub-range handling) orjulia-actions/julia-downgrade-compat(honor skip in merged resolution).See the analysis comment for the full reproduction and commands.
Verification
Unsatisfiablelocally on Julia 1.10 via Resolver.jl + the downgrade action."1.10.8 - 1.10"julia sub-range (resolves on the1.11band, fails on the1.10band).Please ignore until reviewed by @ChrisRackauckas