Skip to content

Align operator downgrade compatibility floors - #3918

Closed
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:codex/align-operator-downgrade-floors
Closed

Align operator downgrade compatibility floors#3918
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:codex/align-operator-downgrade-floors

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Summary

This draft depends on SciML/NonlinearSolve.jl#1079 publishing NonlinearSolve 4.21.1. Public CI cannot resolve that version until the prerequisite is merged and registered.

Ignore this PR until it has been reviewed by @ChrisRackauckas.

Root cause

The #3885 implementation uses a SciMLOperator as the nonlinear solve Jacobian. Its source package correctly requires SciMLOperators 1.24.3, but several source-tree consumers still advertised 1.23. The deployed downgrade action resolves registry packages before restoring path sources, so those consumer lanes could lock SciMLOperators 1.23 and only discover the incompatible path-source requirement later.

OrdinaryDiffEqNonlinearSolve also allowed NonlinearSolve 4.20.3. That permits a NonlinearSolveBase version without the operator-capable Jacobian cache path, producing MethodError: similar(::SciMLOperators.MatrixOperator) in the implicit solver tests. NonlinearSolve 4.21.1 from SciML/NonlinearSolve.jl#1079 requires NonlinearSolveBase 2.35 while retaining the tested LinearSolve 4.3/5 range.

The exact adjacent bisect identified #3885 (9a2f7e7b79141951df24a0f2191a8aa20e94f49a) as the first bad commit; its parent (3b799e583) passes the full OrdinaryDiffEqNonlinearSolve package tests.

Investigation process

  1. Reproduced the MatrixOperator error with the downgraded registered stack.
  2. Ran the full package tests on the exact pre-NonlinearSolveAlg: reuse the ODE WOperator matrix-free for Krylov linsolves #3885 parent and confirmed they pass.
  3. Isolated the first working registered combination: NonlinearSolveBase 2.35.0 with LinearSolve 4.3.0 and SciMLOperators 1.24.3.
  4. Verified the complete candidate package suite with that combination.
  5. Re-ran the deployed julia-downgrade-compat action for every consumer whose old floor caused resolution to stop at SciMLOperators 1.23.

Validation

  • full OrdinaryDiffEqNonlinearSolve candidate suite: passed
    • linear nonlinear-solver tests: 44/44
    • linear-solver tests: 113/113
    • split tests: 10/10
    • mass-matrix tests: 225 passed, 42 existing broken
    • W-operator prototype tests: 18/18
    • DAE initialization: 19/19
    • CheckInit: 4/4
    • nested AD: 5/5
    • Jacobian reuse: 8/8
    • homotopy: 25/25
    • sparse Jacobian: 11/11
    • matrix-free W-operator: 14/14
  • exact pre-NonlinearSolveAlg: reuse the ODE WOperator matrix-free for Krylov linsolves #3885 parent full package suite: passed, including homotopy 25/25
  • deployed downgrade resolution: Core, Differentiation, FIRK, and StochasticDiffEq all resolve successfully and each selects SciMLOperators 1.24.3
  • Runic: all 1,000 Julia files pass
  • all five Project.toml files parse and contain the asserted floors; no direct NonlinearSolveBase dependency remains

Affected CI evidence

The original failures appeared in:

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>

Copy link
Copy Markdown
Member Author

Superseded by the focused package fix in #3917 and the shared path-source resolver fix in SciML/.github#118.

This draft encoded transitive source-package requirements in four unrelated consumer projects and raised the umbrella NonlinearSolve floor. That appeared necessary only because the deployed downgrade action removed local [sources] before resolving their dependency constraints.

With #118's reconciler, the exact action sees those source constraints directly. Applying only #3917 then selects the coherent minimum stack (SciMLOperators 1.24.3, NonlinearSolveBase 2.34.1, LinearSolve 4.3.0, MuladdMacro 0.2.4), and both the locked Core replay and the complete locked OrdinaryDiffEqNonlinearSolve suite pass. Closing this larger workaround so the unrelated public floors are not raised unnecessarily.

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