Skip to content

Align source-tree downgrade dependency floors - #1070

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:codex/align-downgrade-path-source-floors
Jul 15, 2026
Merged

Align source-tree downgrade dependency floors#1070
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:codex/align-downgrade-path-source-floors

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Please ignore this PR until it has been reviewed by @ChrisRackauckas.

Summary

Make the root and local source-package compat bounds describe combinations that the current NonlinearSolve source tree can actually load:

  • require StaticArrays 1.9.8 rather than the broad 1.9 floor;
  • align NonlinearSolveFirstOrder's SciMLJacobianOperators floor with the source-tree stack at 0.1.1;
  • require LinearSolve 5 in the root, Base, FirstOrder, and QuasiNewton projects.

Why

The deployed downgrade action resolves the monorepo's [sources] projects together. The previous bounds admitted three incompatible endpoints:

  • StaticArrays 1.9.7 predates the API used by the current extensions; 1.9.8 is the first compatible 1.9 release.
  • NonlinearSolveFirstOrder allowed SciMLJacobianOperators 0.1.0 while the current local Base stack requires behavior available from 0.1.1.
  • LinearSolve 4.3 is the only 4.x endpoint admitted by the existing compat, but current NonlinearSolve caches use the LinearSolve 5 interface. At 4.3 the local FirstOrder and QuasiNewton packages fail to precompile because LinearSolveJLCache is not callable. There is no later 4.x release to raise to, so this removes an advertised combination that does not work rather than dropping a working endpoint.

Process

  1. Reproduced the exact lower-bound failures with deployed julia-downgrade-compat v2.6.1 (fab1def).
  2. Identified StaticArrays 1.9.8 as the first release containing the required API.
  3. Aligned the path-source SciMLJacobianOperators floors.
  4. Verified that LinearSolve has no compatible post-4.3 release in major 4, then selected the supported 5.x line.
  5. Re-resolved the exact floor environment and compared its real Core test result with a clean, latest-compatible checkout at the same master SHA.

Local verification

  • Exact deployed downgrade action completed successfully. Its root floor manifest selects LinearSolve 5.0.0, StaticArrays 1.9.8, and a mutually compatible SciMLJacobianOperators stack.
  • Julia 1.10 strict floor run, GROUP=Core, allow_reresolve=false: the downgrade-only StaticArrays and LinearSolve precompile errors are gone.
  • The remaining Core result is 94 passed, 1 failed, 1 errored, 19 broken in the Broyden robustness table.
  • A clean latest-compatible checkout at the exact same master SHA produces the identical 94 passed, 1 failed, 1 errored, 19 broken result, including the Generalized Rosenbrock algorithm-4 residual 4.4 > 0.001. This is an existing master failure, not introduced or hidden by this PR; an independent clean reproduction/bisection is in progress under the repository's testing policy.
  • The targeted SimpleNonlinearSolve strict Core floor test passed.
  • TOML parsing passed for all four edited projects.
  • Runic 1.7 check passed for all 373 Julia files.
  • git diff --check passed.

The strict comparison command was equivalent to:

GROUP=Core julia +1.10 --project=. -e \
  'using Pkg; Pkg.test(; coverage=true, force_latest_compatible_version=false, allow_reresolve=false)'

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

Copy link
Copy Markdown
Member Author

Added 34d336fc after reproducing both downgrade failures locally with Julia 1.10.11 and the deployed julia-downgrade-compat action at fab1defb76df9fd672f63c94df73ce131d32e134.

The action resolves registry dependencies while temporarily removing [sources] packages. SciMLOperators was therefore selected transitively at 1.22.0, and re-adding the local NonlinearSolveQuasiNewton / NonlinearSolveBase sources made the locked manifest invalid because those packages now require 1.24. Adding SciMLOperators = "1.24" as an explicit test extra/target in the root and SimpleNonlinearSolve projects makes the floor visible during the downgrade resolution itself.

The adjacent master bisect identifies 41681c5e40f92a517262cdb7c90d1cd95ed7f1cd (#1060) as the first bad commit; its parent 579761dd26f29ff8d22202e8ff955a8ea35f0ab8 resolves successfully under the same downgrade procedure.

Local verification:

  • Root deployed downgrade selected SciMLOperators 1.24.0 and strict GROUP=Core with allow_reresolve=false passed resolution/precompilation and all earlier Core files, then reached the separately known Broyden baseline failures (94 passed, 1 failed, 1 errored, 19 broken).
  • SimpleNonlinearSolve deployed alldeps downgrade selected SciMLOperators 1.24.0; strict NONLINEARSOLVE_TEST_GROUP=Core with allow_reresolve=false passed.
  • Root GROUP=QA: 15/15 passed.
  • SimpleNonlinearSolve QA: 16/16 passed.
  • Runic 1.7.0 --check, TOML parsing, and git diff --check passed.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 15, 2026 10:27
@ChrisRackauckas
ChrisRackauckas merged commit 6264446 into SciML:master Jul 15, 2026
23 of 25 checks passed
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI confirms this PR fixes the downgrade resolver failure: julia-downgrade-compat and build steps now pass, and the test job runs through the suite to the separately reproduced Broyden baseline (94 pass / 1 fail / 1 unexpected-pass / 19 broken). The remaining Generalized Rosenbrock failure is the #1039 regression addressed by #1057; the Brown platform-dependent Unexpected Pass is tracked by #1056. This PR does not suppress or relabel either test.

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