Skip to content

Re-enable downgrade CI with corrected compat floors#180

Merged
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:downgrade-reenable
Jun 7, 2026
Merged

Re-enable downgrade CI with corrected compat floors#180
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:downgrade-reenable

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Re-enables the Downgrade workflow (currently if: false, disabled per #149 due to PrecompileTools compatibility) and raises the [compat] lower bounds to the lowest versions that resolve and pass the full test suite on Julia 1.10 with the modern transitive SciML stack.

Uses the strict SciML default allow-reresolve: false on the downgrade.yml@v1 caller. With reresolve disabled, Pkg.test must instantiate the deps-floor + latest-transitive set produced by julia-downgrade-compat (mode deps) with no reconciliation — this genuinely enforces the declared [deps] floors against the latest transitive ecosystem, which is the rigorous downgrade contract. The floors below are strict-consistent: the pinned set resolves and the full suite passes with no relaxation.

Floor bumps (old -> new)

Dep Old New Why
CommonSolve 0.2 0.2.4 SciMLBase 2.153 requires CommonSolve >= 0.2.4
DiffEqBase 6 6.210.1 needs SciMLBase 2.143-2; coexists with latest NonlinearSolveBase
PrecompileTools 1 1.2.1 the #149 blocker — modern SciMLBase requires PrecompileTools >= 1.2.1
SciMLBase 2 2.153 lowest 2.x the latest NonlinearSolveBase accepts
StaticArrays 1 1.9.8 1.9.7 fails to precompile; DifferentiationInterface 0.7 StaticArrays ext needs >= 1.9.7
SymbolicIndexingInterface 0.3 0.3.43 latest NonlinearSolveBase requires SII >= 0.3.43

julia = "1.10" is unchanged; the downgrade workflow stays on julia-version: "1.10" (LTS).

Local verification (strict)

Reproduced CI's downgrade exactly: julia-downgrade-compat deps-mode =floor pins on the direct [deps], transitive deps at latest, then Pkg.test(; allow_reresolve=false) on Julia 1.10 in an isolated depot. Strict resolution succeeded at the floors (SciMLBase 2.153.0, DiffEqBase 6.210.1, CommonSolve 0.2.4, ConcreteStructs 0.2.3, PrecompileTools 1.2.1, StaticArrays 1.9.8, SymbolicIndexingInterface 0.3.43) with the latest transitive stack, and the full suite passed with allow_reresolve=false.

Local strict downgrade suite: PASS (Testing DifferenceEquations tests passed, 0 failures/errors).

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits June 6, 2026 15:24
Re-enables the Downgrade workflow (was `if: false`, disabled per SciML#149 for
PrecompileTools compatibility) and raises the [compat] lower bounds to the
lowest versions that resolve and pass the test suite on Julia 1.10 with the
modern transitive SciML stack.

Adds `allow-reresolve: true` to the downgrade.yml@v1 caller so Pkg picks a
consistent transitive set (latest NonlinearSolveBase/SciMLOperators/
DifferentiationInterface) instead of the broken floor-direct/latest-transitive
mix that `allow-reresolve: false` produces.

Floor bumps (old -> new):
- CommonSolve: 0.2   -> 0.2.4   (SciMLBase 2.153 requires CommonSolve >= 0.2.4)
- DiffEqBase:  6     -> 6.210.1 (needs SciMLBase 2.143-2; coexists w/ latest NLSBase)
- PrecompileTools: 1 -> 1.2.1   (SciMLBase >= 3.0/2.x stack requires >= 1.2.1; the SciML#149 blocker)
- SciMLBase:   2     -> 2.153   (lowest 2.x that the latest NonlinearSolveBase accepts)
- StaticArrays: 1    -> 1.9.8   (1.9.7 fails to precompile: UndefVarError require_one_based_indexing; DI 0.7 StaticArrays ext needs >= 1.9.7)
- SymbolicIndexingInterface: 0.3 -> 0.3.43 (latest NonlinearSolveBase requires SII >= 0.3.43)

Downgrade suite run locally at these floors (julia-downgrade-compat deps-mode
=floor pins + Pkg.test allow_reresolve=true, Julia 1.10): PASS.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Switch the Downgrade.yml caller from allow-reresolve: true to the strict
SciML default allow-reresolve: false. With reresolve disabled, Pkg.test must
instantiate the deps-floor + latest-transitive set produced by
julia-downgrade-compat (mode deps) with no reconciliation, genuinely enforcing
the declared [deps] floors against the latest transitive ecosystem.

The existing compat floors are already strict-consistent: the deps-mode
pinned set (SciMLBase 2.153, DiffEqBase 6.210.1, CommonSolve 0.2.4,
ConcreteStructs 0.2.3, PrecompileTools 1.2.1, StaticArrays 1.9.8,
SymbolicIndexingInterface 0.3.43; transitive deps at latest) resolves and
the full suite passes. No floor raises were needed.

Strict downgrade suite run locally on Julia 1.10 with [deps] pinned to floors
and Pkg.test(; allow_reresolve=false): PASS (Testing DifferenceEquations tests passed).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 7, 2026 05:55
@ChrisRackauckas ChrisRackauckas merged commit f923476 into SciML:main Jun 7, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants