Split AD tests into a dedicated off-downgrade group (Mooncake 0.5 needs >= 1.10.8)#617
Merged
ChrisRackauckas merged 3 commits intoJun 22, 2026
Conversation
The Downgrade (Core) job fails on master with `ERROR: LoadError: Unsatisfiable`. The downgrade resolver runs `--min=@deps` and minimizes the Julia version to the floor implied by the workflow's Julia channel. With the default `lts` channel that floor is 1.10.0, but every Mooncake 0.5.x release (used by RecursiveArrayToolsMooncakeExt) declares `julia = "1.10.8 - 1.10, 1.11.6 - 1"`, so no Mooncake version is installable at 1.10.0 and Mooncake gets no candidate version. Reproduced locally with the actual julia-actions/julia-downgrade-compat downgrade.jl driver against a checkout of this repo: julia_version=1.10 -> ERROR: LoadError: Unsatisfiable julia_version=1.11 -> "Successfully resolved minimal versions" Pin the downgrade job to Julia 1.11 (the same approach OrdinaryDiffEq.jl uses), where 1.10.8+ is satisfied and every declared floor is jointly installable. Core support for Julia 1.10 is unchanged and is still exercised by the normal lts test legs; this only affects which Julia the downgrade resolver minimizes against. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fixes the Spell Check with Typos CI failure flagging `tupe` in src/named_array_partition.jl. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move the Mooncake/Zygote/ForwardDiff/ReverseDiff test files out of the root Core group and into a dedicated `AD` group with its own sub-environment (test/AD/Project.toml, [sources] RecursiveArrayTools = path), modeled on the NoPre group. The AD group is marked in_all = false and is not run in the Downgrade lane (which runs only Core), so its deps are never fed to the downgrade resolver. This removes Mooncake (and the other AD backends) from the root [targets].test set. The downgrade workflow builds/tests with project: "@." (the repo root) and minimizes every direct dep plus the Julia version to the 1.10.0 LTS floor; Mooncake 0.5 requires Julia >= 1.10.8, so at the 1.10.0 floor it was Unsatisfiable. With Mooncake out of the root test target the resolver no longer sees it, fixing the wall at the source instead of pinning the downgrade Julia version. This reverts the Downgrade.yml julia-version: "1.11" approach from this branch in favor of the AD split. Mooncake/Zygote/ForwardDiff/ReverseDiff remain as [weakdeps]+[compat] for the AD extensions; the AD tests still run (in their own group on a normal Julia). The tupe->type spellcheck fix is kept. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (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.
Problem
The
Downgrade (Core)job is red onmasterwith:Root cause
The SciML downgrade workflow (
SciML/.githubdowngrade.yml) builds and tests withproject: "@."(the repo root) and runs the resolver with--min=@deps, minimizing every direct dependency and the Julia version to its floor. With the defaultltschannel the Julia floor is1.10.0. TheGROUPenv var only selects which tests run; the resolver still resolves the entire root[targets].testset.Mooncake
0.5.0(the floor ofMooncake = "0.5", used byRecursiveArrayToolsMooncakeExt) declaresjulia = "1.10.8 - 1.10, 1.11.6 - 1". So when Mooncake is in the root test target and the resolver minimizes Julia to1.10.0, Mooncake is uninstallable ->Unsatisfiable.Fix: split AD into a dedicated off-downgrade group
Instead of pinning the downgrade Julia version (the prior approach on this branch), this removes the AD backends from the downgrade resolver at the source, following the same pattern as FunctionWrappersWrappers #59:
adjoints.jl: Zygote/ForwardDiff/ReverseDiff;mooncake.jl: Mooncake) move fromtest/Core/into a new dedicatedADgroup with its own sub-environmenttest/AD/Project.toml(with[sources] RecursiveArrayTools = {path = "../.."}, modeled on the existingNoPregroup).test/test_groups.tomlgains an[AD]group within_all = false. TheDowngrade.ymlmatrix runs onlyCore, so AD is never fed to the downgrade resolver.[extras]and[targets].test. They remain[weakdeps]+[compat]for the extensions.Downgrade.ymlis reverted tomaster(thejulia-version: "1.11"pin is dropped).tupe->typespellcheck fix is kept.This dodges the Resolver<->Mooncake downgrade wall (StefanKarpinski/Resolver.jl#24 / the Mooncake
>= 1.10.8floor) by keeping Mooncake out of the resolution the downgrade lane performs, rather than working around it with a Julia-version pin.Local verification
Faithful reproduction on a real Julia
1.10.0binary (the exact patch the downgrade resolver minimizes to), resolving the merged root-test env with every non-stdlib dep pinned to its[compat]floor (=<floor>, mirroringjulia-downgrade-compat, stdlibs skipped):And the AD group still loads and runs Mooncake on a normal Julia (1.10.11, the lts patch >= 1.10.8):
Please ignore until reviewed by @ChrisRackauckas.