Skip to content

ci: re-enable downgrade CI with corrected [compat] lower bounds#100

Draft
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:downgrade-reenable
Draft

ci: re-enable downgrade CI with corrected [compat] lower bounds#100
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:downgrade-reenable

Conversation

@ChrisRackauckas-Claude
Copy link
Copy Markdown
Contributor

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jun 5, 2026

Re-enables the disabled Downgrade workflow (removes the if: false guard) and replaces the previous, self-contradictory [compat] lower bounds with clean, minimal, verified ones.

What was wrong before

The earlier floors could not resolve on the downgrade run, and the "fixes" left comma-ranges that re-permitted versions below the intended floor (e.g. Compat = "4.18.1, 3.0, 4", SciMLBase = "2.155.1, 2, 3.1", Reexport = "1.2.2, 1.0", DataStructures = "0.19.5, 0.19"). Those lower ranges defeat the bump, and the floors were also raised to the latest patch rather than the lowest working version.

Corrected bounds (lowest that resolve + pass on Julia 1.10)

Compat:           "2.2, 3.0, 4"  -> "4.15"        # NonlinearSolveBase requires Compat >= 4.15
DataStructures:   "0.18, 0.19"   -> "0.19"        # 0.18 too old for the ModelingToolkit/SymbolicUtils stack
FunctionWrappers: "1.0"          -> "1.1.3"       # 1.1.1 fails to precompile ("Module IR does not contain specified entry function"); 1.1.3 fixes it
Reexport:         "0.2, 1.0"     -> "1.2.2"       # BracketingNonlinearSolve requires Reexport >= 1.2.2
SciMLBase:        "1.73, 2, 3.1" -> "2.154, 3.1"  # DiffEqBase 6.217 needs FunctionWrappersWrappers 1, which SciMLBase provides from 2.154

Why the lower ranges had to be dropped: DiffEqBase = "6.217, 7" (its existing floor) already forces SciMLBase >= 2.143 and FunctionWrappersWrappers = 1; SciMLBase 1.73/2.0 can never resolve against that, so the 1.73 and the < 2.154 part of the 2 range are dead. The disjoint upper 3.1 range (DiffEqBase 7 / SciMLBase 3 era) is kept since it is above the floor and genuinely declared.

DiffEqBase, ODEInterface, and SciMLLogging floors are unchanged. julia = "1.6" is kept, and the workflow julia-version stays 1.10.

Verification

Reproduced the downgrade locally on Julia 1.10.11 in an isolated depot by pinning every non-stdlib dep to its compat floor, then iterating to the lowest resolvable + test-passing set. Full Pkg.test() at the pinned floors:

Explicit Imports         | Pass 2/2
Algorithms               | ran (no assertions)
Saving                   | Pass 3/3
Mass Matrix              | Pass 4/4
Jacobian Tests           | Pass 1/1
Callback Tests           | Pass 2/2
Initialization Tests     | Pass 13/13
MTK Initialization Tests | Pass 55/55
Testing ODEInterfaceDiffEq tests passed

Local downgrade suite on Julia 1.10: PASS.

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

@ChrisRackauckas-Claude ChrisRackauckas-Claude force-pushed the downgrade-reenable branch 2 times, most recently from 3e6ca95 to e827a32 Compare June 6, 2026 07:53
Re-enable the disabled Downgrade workflow and raise the too-low/inconsistent
[compat] lower bounds to the lowest set that resolves and passes the test
suite on Julia 1.10. The previous floors could not resolve (DiffEqBase 6.217
requires SciMLBase >=2.143 and FunctionWrappersWrappers 1, etc.) and dropped
comma-ranges that re-permitted versions below the working floor.

  Compat:           2.2, 3.0, 4   -> 4.15      (NonlinearSolveBase needs >=4.15)
  DataStructures:   0.18, 0.19    -> 0.19       (0.18 too old for symbolic stack)
  FunctionWrappers: 1.0           -> 1.1.3      (<=1.1.1 fails to precompile)
  Reexport:         0.2, 1.0      -> 1.2.2      (BracketingNonlinearSolve needs 1.2.2)
  SciMLBase:        1.73, 2, 3.1  -> 2.154, 3.1 (FunctionWrappersWrappers 1 since 2.154)

DiffEqBase, ODEInterface, SciMLLogging floors unchanged. julia compat kept at
1.6 and the workflow julia-version kept at 1.10.

Downgrade suite run locally at these floors on Julia 1.10: PASS.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The reusable downgrade.yml on the @v1 tag (frozen at 251208d, pre-SciML#67)
passes mode: "${{ inputs.mode }}" with an empty default, which
julia-downgrade-compat rejects (mode in valid_modes || error()). Passing
mode:"deps" explicitly sidesteps the empty default until @v1 is retagged
to current master (where SciML#67 makes "deps" the default).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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