Fix DataDrivenLux Downgrade lane: raise IntervalArithmetic (0.22.10) and Optim (2) floors#629
Draft
ChrisRackauckas-Claude wants to merge 1 commit into
Conversation
…oors The Downgrade Sublibraries / test (lib/DataDrivenLux) lane is red on master (run 28267588245, commit eb11901): the main Downgrade lane is green, only the DataDrivenLux sublibrary fails, and only at minimum compat versions. It resolves and builds, then fails at runtime with 5 errors. Two distinct root causes, both gated by [compat] lower bounds: 1. IntervalArithmetic floor 0.22.0 (4 errors). safe_sin/safe_cos in src/utils.jl evaluate real(<f>(Complex(x))) on x::Interval{Float64} during path-interval propagation. Base's sin(::Complex) does `zr == 0`, which dispatches to ==(::Interval, ::Interval). IntervalArithmetic 0.22.0-0.22.9 throw ArgumentError("== is purposely not supported for intervals"); 0.22.10 added the thin-interval fallback so the comparison returns a value and sin(Complex{Interval}) works. Raise floor to 0.22.10. 2. Optim floor 1.7.6 (1 BoundsError). BoundsError: attempt to access Float64 at index [2] in LineSearches.var"#phidphi#2". LineSearches <= 7.5.x make_phidphi does `f, g = value_gradient!(df, x_new)` and fails to unpack the scalar return of ManifoldObjective.value_gradient!. LineSearches 7.6.0 switched to value_jvp!(df, x_new, s) (a 2-tuple) and requires NLSolversBase 8. No Optim 1.x admits NLSolversBase 8 (all cap 7.9.0), so at the Optim 1.7 floor LineSearches stays <= 7.5.x and the BoundsError persists. Optim 2.0.0 pulls LineSearches 7.6+ / NLSolversBase 8. Require Optim = "2". Verified locally on Julia 1.10 LTS by pinning the new floors to their minimums (IntervalArithmetic v0.22.10, Optim v2.0.0): resolver co-installs IntervalArithmetic 0.22.10, Optim 2.0.0, LineSearches 7.7.1, NLSolversBase 8.0.0; DataDrivenLux Core test group is 96/96 pass, 0 fail, 0 error (was 0 pass / 5 errored on the old floors). Co-Authored-By: Chris Rackauckas <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix DataDrivenLux Downgrade Sublibraries lane (raise IntervalArithmetic and Optim floors)
The
Downgrade Sublibraries / test (lib/DataDrivenLux)lane is red on master (run 28267588245, commit eb11901). The mainDowngradelane is green; only the DataDrivenLux sublibrary fails, and only at minimum compat versions. It resolves and builds, then fails at runtime with 5 errors. Two distinct root causes, both gated by[compat]lower bounds inlib/DataDrivenLux/Project.toml:1.
IntervalArithmeticfloor0.22→0.22.10(4 errors)src/utils.jlgeneratessafe_sin/safe_cos/etc. asf(x) = real(<f>(Complex(x))). During path-interval propagation,xis anInterval{Float64}, so this callssin(::Complex{Interval}). Base'ssin(::Complex)evaluateszr == 0, which dispatches to==(::Interval, ::Interval). IntervalArithmetic0.22.0–0.22.9throwArgumentError("== is purposely not supported for intervals").0.22.10added the thin-interval fallback so the comparison returns a value andsin(Complex{Interval})works. Raise the floor to0.22.10.2.
Optimfloor1.7, 2→2(1BoundsError)BoundsError: attempt to access Float64 at index [2]inLineSearches.var"#ϕdϕ#2". LineSearches ≤ 7.5.xmake_ϕdϕdoesf, g = value_gradient!(df, x_new)and fails to unpack the scalar return ofManifoldObjective.value_gradient!. LineSearches 7.6.0 switched tovalue_jvp!(df, x_new, s)(a 2-tuple) and requires NLSolversBase 8. No Optim 1.x admits NLSolversBase 8 (all cap7.9.0), so at the Optim 1.7 floor LineSearches stays ≤ 7.5.x and the BoundsError persists. Optim 2.0.0 pulls LineSearches 7.6+ / NLSolversBase 8. Drop the1.7floor; requireOptim = "2".Also bumps
DataDrivenLux0.2.4→0.2.5.Verification (Julia 1.10 LTS, floors pinned to their minimums)
Resolved with
IntervalArithmeticpinned tov0.22.10andOptimpinned tov2.0.0. The resolver co-installs IntervalArithmetic 0.22.10, Optim 2.0.0, LineSearches 7.7.1, NLSolversBase 8.0.0, then ran theDataDrivenLuxCore test group:96/96 pass, 0 fail, 0 error (was 0 pass / 5 errored on the old floors).
This PR only touches
lib/DataDrivenLux/Project.toml. Please ignore until reviewed by @ChrisRackauckas.