Commit 9c11a85
Fix downgrade CI: split the AD test group out of the downgrade lane (#59)
* Raise FunctionWrappers compat floor to 1.1.3 to fix downgrade CI
The Downgrade (Core) job was failing with an Unsatisfiable resolution on
Julia lts (1.10). When julia-downgrade-compat pins every dep to its lowest
allowed version, FunctionWrappers was pinned to 1.0.0 (floor of "1"), but
Mooncake (a tested weakdep/extension target) requires FunctionWrappers
>= 1.1.3. That made the merged test environment unsatisfiable.
Raising the FunctionWrappers compat floor from "1" to "1.1.3" matches the
version actually exercised by the test extras and makes the minimum-version
resolution satisfiable. Verified locally on Julia 1.10: the merged test
project now resolves at minimum versions, the package loads, and basictests
pass with FunctionWrappers 1.1.3.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Fix downgrade CI: run downgrade leg on Julia 1.11 + raise PrecompileTools/TruncatedStacktraces floors
The Downgrade (Core) job was red on lts (Julia 1.10). Three distinct, genuine
problems, fixed at their causes:
1. Unsatisfiable resolution. The resolver (julia-downgrade-compat -> Resolver.jl)
minimizes Julia to the floor of its --julia range; on lts that range (1.10)
admits 1.10.0. But every Mooncake 0.5.x test extra requires julia >= 1.10.8,
so Mooncake can never be placed -> Unsatisfiable. Even at 1.10.8 the
Enzyme 0.13 + EnzymeCore 0.8 + Mooncake 0.5 minimum-version set has no
solution on the 1.10 LTS stdlib line; it resolves only once Julia reaches
1.11.6 (Mooncake 0.5's 1.11 floor). Resolver.jl ignores the project's
[compat] julia for the Julia version itself, so no Project.toml change can
force julia >= 1.10.8 -- the caller must request it. Fix: pin the Downgrade
caller to julia-version "1.11" (resolver picks 1.11.6). Core 1.10 support is
still exercised by the regular Tests workflow.
2. PrecompileTools floor too low. With resolution fixed, the minimum
PrecompileTools 1.0.0 fails to precompile GPUCompiler (pulled transitively by
Enzyme) on Julia 1.11: "UndefVarError: PrecompileTools not defined in
GPUCompiler". GPUCompiler's compat says PrecompileTools "1", but 1.0.0 does
not actually provide the API GPUCompiler uses; 1.1.0 does. Raise the floor
to "1.1".
3. TruncatedStacktraces floor too low. src uses
TruncatedStacktraces.@truncate_stacktrace, which does not exist before v1.1.0
("UndefVarError: @truncate_stacktrace not defined in TruncatedStacktraces" at
the v1.0.0 floor). Raise the floor to "1.1".
Also reverts the earlier misdiagnosed FunctionWrappers floor raise (1 -> 1.1.3):
no registered test dep constrains FunctionWrappers and the source only uses the
FunctionWrapper{R,A} constructor available since 1.0.0. Version bumped to 1.9.2
for the compat-floor changes.
Local verification on Julia 1.11 (the new downgrade leg): the actual
julia-downgrade-compat downgrade.jl resolves the merged test project (exit 0,
"Successfully resolved minimal versions"); the downgraded manifest (Enzyme
0.13.0 / GPUCompiler 0.27.5 / PrecompileTools 1.1.0 / TruncatedStacktraces 1.1.0
/ Mooncake 0.5.0) precompiles cleanly; and Pkg.test GROUP=Core passes
(FunctionWrappersWrappers.jl 48/48, BigFloat + UnionAll 7/7).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Split AD test group out of the downgrade lane
The Downgrade (Core) red was caused by the AD test extras (Enzyme,
EnzymeCore, Mooncake) being part of the root test target. The downgrade
resolver (julia-downgrade-compat -> Resolver.jl) minimizes Julia to the
floor of its --julia range, but every Mooncake 0.5.x requires
julia >= 1.10.8 and the Enzyme 0.13 + EnzymeCore 0.8 + Mooncake 0.5 floor
set has no minimum-version solution on the 1.10 LTS line, so the merged
test env was Unsatisfiable (the Resolver.jl <-> Mooncake wall,
StefanKarpinski/Resolver.jl#24). The AD deps shouldn't gate the downgrade
lane.
Fix: move the AD test deps into their own per-group sub-environments
(test/Enzyme/Project.toml, test/Mooncake/Project.toml) and drop them from
the root [extras]/[targets].test. SciMLTesting's run_tests already supports
per-group sub-envs (the `env = ...` group form, as the nopre group uses);
the Enzyme/Mooncake groups now declare their own env. The downgrade job
runs GROUP=Core, which resolves only the root test target -- now AD-free --
so it is satisfiable on lts (Julia 1.10) again. The AD groups are added to
test/test_groups.toml so they run as their own jobs in normal CI (lts, 1);
previously they were declared in runtests.jl but had no matrix entry and so
never ran.
Reverts the #59 accommodations that masked the AD-resolution problem:
- .github/workflows/Downgrade.yml: julia-version back to "lts" (no longer
needs to be pinned to 1.11 to dodge the AD floor set).
- PrecompileTools compat floor back to "1": the 1.0.0 GPUCompiler
precompile failure only arose because Enzyme pulled GPUCompiler into the
downgrade env; with AD out of that env it no longer applies.
Kept, because they are genuine minimum-version bugs independent of AD
(both verified locally on Julia 1.10):
- TruncatedStacktraces = "1.1": src uses @truncate_stacktrace, which does
not exist before v1.1.0 (1.0.0 is a 25-line stub).
- FunctionWrappers = "1.1.2": 1.0.0 / 1.1.0 / 1.1.1 fail to build the
FunctionWrapper cfunction ("Module IR does not contain specified entry
function") on Julia 1.10; 1.1.2 is the lowest that builds and runs. This
is exercised by the package's own PrecompileTools @compile_workload, so
it is a real floor regardless of the AD split.
Local verification (Julia 1.10/lts, the actual downgrade leg):
- julia-downgrade-compat downgrade.jl: exit 0, "Successfully resolved
minimal versions for . (with extras)"; downgraded manifest contains no
Enzyme/Mooncake/GPUCompiler (FunctionWrappers 1.1.2, PrecompileTools
1.0.0, TruncatedStacktraces 1.1.0, SafeTestsets 0.1.0, SciMLTesting
1.0.0).
- Pkg.test GROUP=Core with allow_reresolve=false,
force_latest_compatible_version=false (the julia-runtest CI settings):
precompiles cleanly and passes (FunctionWrappersWrappers.jl 48/48,
BigFloat + UnionAll 7/7).
- The AD groups still run via their sub-envs: GROUP=Enzyme 65/65,
GROUP=Mooncake 13/13 (Julia 1.11), with the Enzyme/Mooncake extensions
precompiling in-group.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent afd0fe9 commit 9c11a85
5 files changed
Lines changed: 46 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | 32 | | |
36 | 33 | | |
37 | 34 | | |
38 | 35 | | |
39 | 36 | | |
40 | | - | |
| 37 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
26 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
27 | 33 | | |
28 | 34 | | |
29 | 35 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
0 commit comments