Require all components to stall before resetting Broyden - #1184
Require all components to stall before resetting Broyden#1184ChrisRackauckas-Claude wants to merge 2 commits into
Conversation
|
The source-triggered macOS Core lanes have now provided the missing platform result: this reset-condition fix does not fix the separate Wood regression. It fails identically on Julia 1, LTS, and prerelease. That confirms the PR's local caveat: the one-component false-reset bug is real and fixes Helical, but Wood has an independent LinearSolve-selection regression. I am keeping that correction in a separate focused branch/PR. CI jobs: |
|
The source-triggered macOS Core matrix confirms that this reset-condition fix is separate from the Wood regression: all three macOS versions still fail Wood alg #2 with the exact clean-master residual. The inverse-Jacobian initialization fix is isolated in draft #1185 so the two behavior changes remain independently reviewable and bisectable. |
|
The full source-triggered IntegrationTest matrix has completed. Five downstream groups pass; the three failures are already independently bisected and mapped:
Run: https://github.com/SciML/NonlinearSolve.jl/actions/runs/32368371688. No failure in this integration workflow is caused by the reset-condition diff. |
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
7054b89 to
c4278a6
Compare
|
Rebased onto current master after #1186 merged. The exact rebased tree was revalidated locally: Runic, typos, and |
|
CI follow-up after rebasing onto current master and adding the deliberate
At this snapshot, only FirstOrder downgrade/Core and the CUDA lanes remain pending; all other NonlinearSolve-owned checks have completed successfully. |
What changed
NoChangeInStateResetnow resets Broyden only when every component of the state step or residual change has stalled. The previousanyreduction treated one unchanged component as evidence that the entire iteration had stalled, which could consume every reset and fail an otherwise convergent solve.The regression test uses only public APIs. The existing Helical problem contract is also tightened by removing problem 5 from the alg-3 broken list, and
NonlinearSolveQuasiNewtonreceives a patch version bump to 1.15.2.A behavior-neutral blank-line removal in
NonlinearSolveBase.jlis included deliberately so that this PR triggers the repository's complete source-dependent CI matrix.Failing before / passing after
The same new test was run against an unfixed clean worktree and this branch:
julia +1.12 --project=lib/NonlinearSolveQuasiNewton -e 'using Test; include("lib/NonlinearSolveQuasiNewton/test/core_tests__item13.jl")'Unfixed:
Fixed:
The existing Helical problem 5 with Broyden alg 3 discriminates the same failure mechanism:
Local verification
GROUP=Core julia +1.12 --project=. -e 'using Pkg; Pkg.test()'From
lib/NonlinearSolveQuasiNewton:From the repository root:
Not verified locally
The original Wood failure occurs on macOS after LinearSolve 5.6.0 → 5.7.0. On Linux, Wood succeeds both before and after this patch with zero resets, so local testing does not prove that this fix repairs that architecture-specific trajectory. The deliberate NonlinearSolveBase source touch is present so macOS and the complete downstream matrix can decide that directly.
No GPU tests were run locally. This PR does not change public API or documentation.
Links