Skip to content

Downgrade: raise OrdinaryDiffEqNonlinearSolve floor to 1.15#471

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:fix-downgrade-nonlinearsolve-floor
Jun 28, 2026
Merged

Downgrade: raise OrdinaryDiffEqNonlinearSolve floor to 1.15#471
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:fix-downgrade-nonlinearsolve-floor

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore this PR until reviewed by @ChrisRackauckas.

Problem

The Downgrade (lts) lane fails at precompile:

MethodError: no method matching init(::NonlinearProblem, ::NonlinearSolveFirstOrder.GeneralizedFirstOrderAlgorithm; abstol, verbose)

(seen reding OrdinaryDiffEqSDIRK/OrdinaryDiffEqNonlinearSolve/NonlinearSolve precompilation).

Root cause

OrdinaryDiffEqNonlinearSolve's compat floor of "1" lets the downgrade resolver pick 1.14.1, which pulls NonlinearSolve 4.10.0. NonlinearSolve 4.10's loose compat (NonlinearSolveBase = "1.4.0 - 1", NonlinearSolveFirstOrder = "1.2.0 - 1") permits the internally inconsistent pair:

  • NonlinearSolveFirstOrder 1.7.0 + NonlinearSolveBase 1.14.0

The init(::AbstractNonlinearProblem, ::AbstractNonlinearSolveAlgorithm) method that NonlinearSolveFirstOrder relies on only exists from NonlinearSolveBase 1.15.0 onward — NonlinearSolveFirstOrder 1.8 bumped its own NonlinearSolveBase floor to 1.15.0 for exactly this reason. With the downgrade-resolved NonlinearSolveBase 1.14.0, that method is absent, so precompile dies.

Fix

Raise the floor to OrdinaryDiffEqNonlinearSolve = "1.15, 2". ODENLS 1.15 requires NonlinearSolve "4.12.0 - 4"NonlinearSolveBase "2", which eliminates the broken combination. OrdinaryDiffEqNonlinearSolve is a test-only dep (used solely for NLNewton in test/isothermal_compressible.jl), and NLNewton is stable across the bumped range.

Verification

Ran the real julia-actions/julia-downgrade-compat@v2 action (mode=deps, julia=lts) against the patched Project.toml on Julia 1.10.11, then instantiated and precompiled the resulting manifest:

  • Resolved a consistent set: OrdinaryDiffEqNonlinearSolve 1.15.0, NonlinearSolve 4.12.0, NonlinearSolveBase 2.2.0, NonlinearSolveFirstOrder 1.11.1.
  • Full test environment (incl. ModelingToolkitStandardLibrary + the OrdinaryDiffEq/NonlinearSolve stack) precompiled cleanly — the MethodError is gone.

Note / out of scope

This fixes the precompile blocker on the Downgrade lane. The Downgrade.yml comment about being "expected RED until the fntype regression (#458/#452) is resolved" refers to Core test failures introduced by newer ModelingToolkit (11.25+). Under downgrade the resolver pins MTK to its floor (11.0.0), which predates that regression, so those failures should not trigger here — but this PR is scoped to the NonlinearSolve precompile floor and does not attempt to address the fntype-regression tracking items.

🤖 Generated with Claude Code

The Downgrade (lts) lane fails at precompile with:

    MethodError: no method matching init(::NonlinearProblem,
        ::NonlinearSolveFirstOrder.GeneralizedFirstOrderAlgorithm;
        abstol, verbose)

OrdinaryDiffEqNonlinearSolve's compat floor of "1" lets the downgrade
resolver pick 1.14.1, which pulls NonlinearSolve 4.10.0. NonlinearSolve
4.10's loose compat (NonlinearSolveBase = "1.4.0 - 1",
NonlinearSolveFirstOrder = "1.2.0 - 1") permits the inconsistent pair
NonlinearSolveFirstOrder 1.7.0 + NonlinearSolveBase 1.14.0. The
init(::AbstractNonlinearProblem, ::AbstractNonlinearSolveAlgorithm)
method NonlinearSolveFirstOrder relies on only exists from
NonlinearSolveBase 1.15.0 onward (NonlinearSolveFirstOrder 1.8 bumped its
own floor to 1.15.0 for exactly this reason), so the pair fails to
precompile.

OrdinaryDiffEqNonlinearSolve 1.15 requires NonlinearSolve "4.12.0 - 4",
which requires NonlinearSolveBase "2", eliminating the broken option.
Verified on Julia 1.10 LTS by running the real julia-downgrade-compat@v2
action against the patched Project.toml: it resolves a consistent set
(OrdinaryDiffEqNonlinearSolve 1.15.0, NonlinearSolve 4.12.0,
NonlinearSolveBase 2.2.0, NonlinearSolveFirstOrder 1.11.1) and the full
test environment precompiles cleanly.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 28, 2026 20:38
@ChrisRackauckas ChrisRackauckas merged commit 1c132e3 into SciML:main Jun 28, 2026
5 of 11 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