Skip to content

Downgrade: raise Optim compat floor to 1.12 (ForwardDiff 1 incompatible below)#545

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:fix-downgrade-floor
Jun 15, 2026
Merged

Downgrade: raise Optim compat floor to 1.12 (ForwardDiff 1 incompatible below)#545
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:fix-downgrade-floor

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

The MINIMUM-VERSION (downgrade) job fails at the julia-downgrade-compat resolve step with a bare Unsatisfiable. Reproduced locally on Julia 1.10 (the LTS downgrade floor); the real conflict is:

Unsatisfiable requirements detected for package Optim [429524aa]:
 Optim [429524aa] log:
 ├─restricted to versions 1.7.5 by an explicit requirement, leaving only versions: 1.7.5
 └─restricted by compatibility requirements with ForwardDiff [f6369f11]
   to versions: [0.20.0-1.4.1, 1.12.0-2.1.0] or uninstalled — no versions left
     └─ForwardDiff [f6369f11] restricted to versions 1 (the package floor), leaving only versions: 1.0.0-1.4.1

Why the old floor was impossible

  • The package compat pins ForwardDiff = "1", so at the downgrade minimum ForwardDiff is in the 1.x band.
  • Optim releases 1.5 - 1.11 declare ForwardDiff = "0.10" (no ForwardDiff 1 support). Only Optim >= 1.12 declares ForwardDiff = ["0.10", "1"].
  • The old floor Optim = "1.7.5" therefore cannot co-install with ForwardDiff = 1: Optim 1.7.5 sits in the gap between the two ForwardDiff-compatible Optim bands and is dropped, leaving no Optim version.

Fix

Raise the lower bound: Optim = "1.7.5, 2" -> Optim = "1.12, 2". 1.12 is the smallest Optim release that supports ForwardDiff 1, i.e. the smallest co-installable floor. The upper bound is unchanged; no test logic or tolerances touched.

Resolve verification (local, Julia 1.10 LTS)

Mimicking julia-downgrade-compat --min on the merged test project (all [compat] entries pinned to their lower bounds):

  • floor Optim = 1.7.5 -> Unsatisfiable (reproduces CI).
  • floor Optim = 1.12.0 -> RESOLVE SUCCEEDED (full add/resolve completed, exit 0).

Resolution only — the full test suite was not run locally; PR CI confirms.

Ignore until reviewed by @ChrisRackauckas.

ChrisRackauckas and others added 2 commits June 13, 2026 07:00
…able at downgrade minimum)

At the downgrade minimum, ForwardDiff is pinned to its floor (1.x) while Optim
is pinned to its floor 1.7.5. Optim 1.5-1.11 declare `ForwardDiff = "0.10"`
(no ForwardDiff 1.x support); only Optim >= 1.12 declares
`ForwardDiff = ["0.10", "1"]`. So Optim 1.7.5 cannot co-install with
ForwardDiff 1, giving an Unsatisfiable in the merged downgrade test project.

Optim 1.12 is the first release compatible with ForwardDiff 1, so it is the
smallest co-installable floor. The upper bound (2) is unchanged.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 15, 2026 05:04
@ChrisRackauckas ChrisRackauckas merged commit 4d74209 into SciML:master Jun 15, 2026
4 checks passed
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