Skip to content

Align downgrade floors with LinearSolve 4.3 - #1059

Merged
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/align-linearsolve-downgrade-floors
Jul 13, 2026
Merged

Align downgrade floors with LinearSolve 4.3#1059
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/align-linearsolve-downgrade-floors

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Important

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

Summary

  • Raise the root, FirstOrder, and QuasiNewton LinearSolve floors to 4.3, matching NonlinearSolveBase's current requirement.
  • Raise HomotopyContinuation's SciMLBase floor to 3.32, the first SciMLBase release compatible with LinearSolve 4.3.
  • Restore coherent minimum-version resolution in the root and sublibrary downgrade workflows.

Root cause

Commit 6a7687f (#1039) raised NonlinearSolveBase's LinearSolve floor to 4.3, but the aggregate root and sublibrary compatibility entries still admitted older LinearSolve releases. The downgrade workflow therefore selected LinearSolve 3.75.0 and failed when Pkg.test merged the in-tree NonlinearSolveBase 2.34.1 source, which requires LinearSolve 4.3.

HomotopyContinuation does not depend on LinearSolve directly. Its downgraded environment selected SciMLBase 3.19.0; General registry metadata constrains LinearSolve 4.3-5 to SciMLBase 3.32 or later. Raising HomotopyContinuation's direct SciMLBase floor is therefore the minimal aligned constraint.

Verification

All commands were run locally on the final compatibility diff with Julia 1.10.11.

  • Exact julia-actions/julia-downgrade-compat@v2 script at fab1defb76df9fd672f63c94df73ce131d32e134 resolved successfully for the root, FirstOrder, QuasiNewton, and HomotopyContinuation environments.
  • The root manifest selected LinearSolve 4.3.0, SciMLBase 3.34.0, and NonlinearSolveBase 2.34.1.
  • FirstOrder and QuasiNewton selected LinearSolve 4.3.0, SciMLBase 3.33.0, and NonlinearSolveBase 2.34.1.
  • HomotopyContinuation selected SciMLBase 3.33.0 and NonlinearSolveBase 2.34.1.
  • HomotopyContinuation Core passed: AllRoots 169/169 and Single Root 50/50.
  • QuasiNewton Core passed: Broyden 810/810, Klement 297/297, LimitedMemoryBroyden 135/135, plus all iterator and termination-condition checks.
  • FirstOrder Core passed, including NewtonRaphson 435/435, PseudoTransient 72/72, TrustRegion 1596/1596, LevenbergMarquardt 45/45, and all iterator, termination-condition, sparsity, and operator-Jacobian checks.
  • The exact immediate-parent control, d616cd9, resolved LinearSolve 3.75.0 and passed the complete root Core group. The introducing commit 6a7687f failed before tests on the LinearSolve 3.75 versus 4.3 resolver conflict, confirming the boundary.
  • Patched root Core reached the tests and then reproduced only the independently audited Broyden failures: the generalized-Rosenbrock regression fixed by Preserve triangular solves for Broyden Jacobian inversion #1057 and the environment-sensitive Brown broken marker documented in Brown bad-Broyden broken test is environment-sensitive #1056. This PR does not alter or silence either test.
  • Full-repository Runic check passed.
  • git diff --check passed.

The existing downgrade jobs are the regression coverage for these compatibility constraints; no assertions were loosened, and no tests were skipped, disabled, silenced, or converted to broken.

Investigation/process log

The task was to investigate the confirmed clean-master downgrade compatibility cluster separately from the downstream-workflow change. I inspected root run 29217402054 and sublibrary run 29217402006, reproduced each resolver failure with the exact downgrade action implementation, inspected prior compatibility fixes (#856 and #1043), and compared the introducing commit with its immediate parent. I then tested the smallest constraint changes independently in all four affected environments, ran their Core suites, ran the parent control, and ran Runic across the repository.

This PR is complementary to #1057: that PR fixes the Broyden behavior exposed after dependency resolution, while this PR fixes the downgrade resolver failures that currently prevent those tests from starting.

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

Copy link
Copy Markdown
Member Author

Investigation scratchpad / command log:

  1. Synced fork master with upstream/master at b491a4e and created agent/align-linearsolve-downgrade-floors.
  2. Checked out the exact julia-actions/julia-downgrade-compat@v2 implementation used by CI (fab1defb76df9fd672f63c94df73ce131d32e134).
  3. Reproduced root, FirstOrder, and QuasiNewton selecting LinearSolve 3.75.0 and failing against in-tree NonlinearSolveBase's 4.3 floor; reproduced HomotopyContinuation selecting SciMLBase 3.19.0 and becoming incompatible with LinearSolve 4.3.
  4. Compared 6a7687f with parent d616cd9. The parent downgraded root environment completed Core green; the introducing commit failed at dependency resolution.
  5. Applied the four compatibility-floor changes in commit 254bfe0.
  6. Re-ran the exact downgrade action for all four affected environments, then ran the corresponding Julia 1.10 Core tests with allow_reresolve=false. FirstOrder, QuasiNewton, and HomotopyContinuation passed. Root reached tests and reproduced only the separately tracked Preserve triangular solves for Broyden Jacobian inversion #1057/Brown bad-Broyden broken test is environment-sensitive #1056 Broyden results.
  7. Ran whole-repository Runic and git diff --check; both passed.

No test was skipped, disabled, silenced, marked broken, or loosened.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI classification: the root downgrade job now resolves and runs Core, confirming this PR clears the LinearSolve compat-floor resolver failure. Its sole test failure is the separately tracked true-Jacobian Broyden Generalized Rosenbrock case: algorithm #4 returns residual 4.3999999999999995 against 0.001 at test/Core/setup_robustnesstesting.jl:25. That clean-master Broyden regression is fixed by draft #1057; it is independent of this compat-only patch. Job: https://github.com/SciML/NonlinearSolve.jl/actions/runs/29255457294/job/86834475138.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

The normal LTS Core lane is also independent of this compat-only patch. It repeats two clean-master Broyden-test clusters: (1) the true-Jacobian Generalized Rosenbrock residual 4.3999999999999995 ≤ 0.001, fixed by draft #1057; and (2) the environment-sensitive Brown alg #4 unexpected pass already documented in issue #1056. Job: https://github.com/SciML/NonlinearSolve.jl/actions/runs/29255457819/job/86835047016. No downgrade resolver failure remains in this lane.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Further CI classification: root Core on Julia current and pre repeats the same #1057 Generalized Rosenbrock residual failure and #1056 Brown unexpected-pass cluster already linked above. The affected Homotopy sublibrary pre-release lane is a distinct issue: on Julia 1.13.0-rc1 with HomotopyContinuation 2.21.0 and SciMLBase 3.35.2, all four some invalid solutions variants fail length(sol3.u) == length(sol2.u) - 1 as 3 == 2 at lib/NonlinearSolveHomotopyContinuation/test/allroots.jl:197. This is a normal latest-dependency lane, not downgrade resolution; the compat-floor patch does not change its selected SciMLBase version. Per the clean-main rule, an exact clean-base reproduce/bisect/fix audit is queued rather than expanding this PR. Job: https://github.com/SciML/NonlinearSolve.jl/actions/runs/29255457815/job/86835208398.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 13, 2026 14:29
@ChrisRackauckas
ChrisRackauckas merged commit 579761d into SciML:master Jul 13, 2026
73 of 82 checks passed

Copy link
Copy Markdown
Member Author

Homotopy pre-release audit complete: the 3 == 2 failures are an upstream randomized-path flake, not a regression from this compat-floor PR. On the exact CI graph, the equivalent native HomotopyContinuation system drops a genuine real root for 1/259 tested polyhedral seeds; the behavior reproduces across HC 2.12.0, 2.20.0, and 2.21.0 and Julia 1.12/1.13. Conservative tracking, torus-only, total-degree, and total-degree with max_steps = 100_000 each still failed at least one seed. A fixed seed would mask incomplete root coverage, so no test was weakened or seed-pinned. Full evidence and reproduction are tracked in #1064: #1064.

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