Skip to content

Guard the SciMLBase hook and restore released compat - #4253

Merged
ChrisRackauckas merged 5 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-diffeqbase-scimlbase-hook-compat
Aug 14, 2026
Merged

Guard the SciMLBase hook and restore released compat#4253
ChrisRackauckas merged 5 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-diffeqbase-scimlbase-hook-compat

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Aug 14, 2026

Copy link
Copy Markdown
Member

Ignore this PR until reviewed by @ChrisRackauckas.

What changed and why

DiffEqBase 7.15.1 currently extends SciMLBase.report_integrator_failure, but no released SciMLBase defines that hook. The normal resolver selects SciMLBase 3.47.0 and DiffEqBase fails while loading. The same change raised the SciMLBase compat floor to nonexistent version 3.46.2, which makes minimum-version resolution unsatisfiable.

This guards the method extension until SciMLBase provides the hook, restores the last released floor SciMLBase = "3.46", and adds a Core regression test for both dependency states. Released SciMLBase versions continue using their existing check_error diagnostics, while the DiffEqBase method is installed when the pending hook exists. There is no public API change.

Git bisect identified 0ed2615 as the first bad commit. The migration merged in #4153 ahead of its still-open prerequisite SciML/SciMLBase.jl#1504. The failure is also tracked at #4249.

Verification

Failing before

On unmodified upstream master with SciMLBase 3.47.0:

$ /home/crackauc/.juliaup/bin/julia +1.12 --project=. --startup-file=no --compiled-modules=no lib/DiffEqBase/test/check_error.jl
ERROR: LoadError: UndefVarError: `report_integrator_failure` not defined in `SciMLBase`
Suggestion: check for spelling errors or missing imports.
Stacktrace:
  [1] getproperty(x::Module, f::Symbol)
    @ Base ./Base_compiler.jl:47
  [2] top-level scope
    @ lib/DiffEqBase/src/check_error.jl:6
...
in expression starting at lib/DiffEqBase/test/check_error.jl:1

The unmodified root GROUP=AD run independently resolved:

[2b5f629d] + DiffEqBase v7.15.1 `lib/DiffEqBase`
[0bca4576] + SciMLBase v3.47.0
...
✗ DiffEqBase

The exact julia-downgrade-compat@v2 resolver passes on parent 9d92d1c722 and fails on 0ed2615804. Its current root CI failure is https://github.com/SciML/OrdinaryDiffEq.jl/actions/runs/31768146910/job/94668206969.

Passing after

$ /home/crackauc/.juliaup/bin/julia +1.12 --project=. --startup-file=no --compiled-modules=no lib/DiffEqBase/test/check_error.jl && echo "PASS: integrator failure hook compatibility test"
PASS: integrator failure hook compatibility test
$ GROUP=Core /home/crackauc/.juliaup/bin/julia +1.12 --project=lib/DiffEqBase -e "using Pkg; Pkg.test()"
Test Summary:           | Pass  Total  Time
Integrator Failure Hook |    1      1  0.0s
...
Testing DiffEqBase tests passed
$ GROUP=QA /home/crackauc/.juliaup/bin/julia +1.12 --project=lib/DiffEqBase -e "using Pkg; Pkg.test()"
Test Summary: | Pass  Total  Time
Aqua          |    9      9  8.0s
Testing DiffEqBase tests passed

The exact root minimum-version action now passes:

[ Info: Running resolver on merged project (extras) for . with --min=@deps
[ Info: Successfully resolved minimal versions for . (with extras)
[ Info: Updated project_hash in ./Manifest.toml to match ./Project.toml
# exit 0

A representative nested path, OrdinaryDiffEqRosenbrockTableaus → OrdinaryDiffEqRosenbrock → DiffEqBase, also passes:

[ Info: Running resolver on merged project (extras) for lib/OrdinaryDiffEqRosenbrockTableaus with --min=@alldeps
[ Info: Successfully resolved minimal versions for lib/OrdinaryDiffEqRosenbrockTableaus (with extras)
# exit 0

A fresh local environment validates the restored released floor:

loaded DiffEqBase 7.15.1 with SciMLBase 3.46.1; hook present = false

I also tested against the exact pending SciMLBase head Shreyas-Ekanathan/SciMLBase.jl@71e1a41:

DiffEqBase installed report_integrator_failure for SciMLBase PR 1504
$ /home/crackauc/.juliaup/bin/julia +1.12 --project=docs docs/make.jl
[ Info: Automatic `version="7.6.0"` for inventory from ../Project.toml
Warning: Documenter could not auto-detect the building environment. Skipping deployment.
# exit 0
$ /home/crackauc/.juliaup/bin/julia +1.12 --project=/home/crackauc/.julia/environments/runic -m Runic --check lib/DiffEqBase/src/check_error.jl lib/DiffEqBase/test/runtests.jl lib/DiffEqBase/test/check_error.jl
# exit 0, no output
$ typos lib/DiffEqBase/Project.toml lib/DiffEqBase/src/check_error.jl lib/DiffEqBase/test/runtests.jl lib/DiffEqBase/test/check_error.jl
# exit 0, no output
$ git diff --check
# exit 0, no output

Not verified

I did not run GROUP=Everything, GPU, or allowed-to-fail jobs locally. I stopped the full root GROUP=AD run after reproducing the dependency load failure; the focused DiffEqBase Core group exercises the repaired package load and regression test. GitHub's non-GPU matrix has settled; results and separately investigated failures are documented at #4253 (comment). Nine GPU jobs remained queued for hardware at the final poll.

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

Copy link
Copy Markdown
Member Author

CI triage update (matrix still running):

I will post a final CI update after the remaining jobs and clean-master investigations finish.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title Guard the SciMLBase integrator failure hook Guard the SciMLBase hook and restore released compat Aug 14, 2026
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Follow-up to the interim CI note: commit 52f3e62 restores SciMLBase = "3.46". The exact root julia-downgrade-compat@v2 --min=@deps action and a representative nested OrdinaryDiffEqRosenbrockTableaus --min=@alldeps action now both exit 0. A fresh environment also loads the guarded DiffEqBase with released SciMLBase 3.46.1.

This addresses the broad downgrade failure cluster from the previous head. The updated CI matrix is now running.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Final CI and clean-master triage update for head 52f3e62b07dfd490bf676f3cad706e92922d7503:

Patch-facing checks

The exact Julia 1.12 AD lane gets past the original DiffEqBase precompile failure and reaches test/AD/discrete_adjoints.jl; it then hits the separately bisected Mooncake CoDual regression: https://github.com/SciML/OrdinaryDiffEq.jl/actions/runs/31772115714/job/94680119387. Its focused fix already exists at #4242.

Unrelated failures investigated separately

At the final poll, all non-GPU jobs had settled: 228 successes, 31 failures, and 3 skipped checks. Nine GPU jobs remained queued for hardware. The remaining failures were left visible; no test was skipped, disabled, loosened, or silenced. This PR should remain a draft and be ignored until reviewed by @ChrisRackauckas.

Comment thread lib/DiffEqBase/test/runtests.jl Outdated
@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review August 14, 2026 08:18
@ChrisRackauckas
ChrisRackauckas merged commit 128ffe8 into SciML:master Aug 14, 2026
216 of 249 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