Skip to content

Fix docs Euler import and Downgrade (DiffEqBase rrule(numargs) floor); Windows fixed via SciML/.github#100#318

Draft
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:fix-master-ci-docs-downgrade
Draft

Fix docs Euler import and Downgrade (DiffEqBase rrule(numargs) floor); Windows fixed via SciML/.github#100#318
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:fix-master-ci-docs-downgrade

Conversation

@ChrisRackauckas-Claude

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

Copy link
Copy Markdown
Contributor

Three master-CI failures addressed.

1. Documentation build (UndefVarError: Euler not defined)

OrdinaryDiffEq v7 split out the low-order RK solvers and no longer re-exports Euler from the umbrella (verified: with OrdinaryDiffEq v7.0.1, isdefined(OrdinaryDiffEq, :Euler) == false; Euler now lives in OrdinaryDiffEqLowOrderRK). The docs @example blocks in integrating.md and uncertainty_quantification.md call Euler() with only using OrdinaryDiffEq, so they errored. Add OrdinaryDiffEqLowOrderRK to docs/Project.toml and using it in both pages. Higher-order solvers (Tsit5, Rodas5P, Rosenbrock23, Vern7) are still re-exported by the umbrella and need no change. (Documentation check is green on this branch.)

2. Downgrade (Core) — _initialize_dae! MethodError in the "fail gracefully" DAE test

The first attempt (raise the OrdinaryDiffEqBDF floor to 1.7.0) did not fix it — the job still failed with OrdinaryDiffEqBDF v1.8.0 resolved, so the BDF floor was not the real cause.

Real root cause (reproduced locally on Julia 1.10 against the CI-resolved downgrade stack): DiffEqBase v6.190.2's DiffEqBaseChainRulesCoreExt defines ChainRulesCore.rrule(::typeof(numargs), f), and SciMLBase v2.146.0's SciMLBaseChainRulesCoreExt defines the same rrule for SciMLBase.numargs. With both floors resolved together the duplicate raises "Method overwriting is not permitted during Module precompilation" while loading DiffEqBaseChainRulesCoreExt; that extension fails and cascades so OrdinaryDiffEqNonlinearSolve's _initialize_dae! methods for BrownFullBasicInit are never loaded — hence the MethodError (the listed candidates were only OrdinaryDiffEqCore's CheckInit/OverrideInit/NoInit).

DiffEqBase removed rrule(numargs) from its ext in v6.211.0 (verified: present in 6.210.0, absent from 6.211.0; SciMLBase owns it now). Raising the floor to 6.211.0 drops the double-defining range. Verified locally: with DiffEqBase 6.211.0 against the CI downgrade stack the bundle precompiles with no overwriting error and the "fail gracefully" testset passes 4/4. The BDF 1.7.0 floor bump is retained (harmless, downgrade-safe) though the actual fix is the DiffEqBase floor.

3. Windows Core tests (OrdinaryDiffEqCorePolyesterExt: _polyester_batch does not exist) — NOT fixed here

The tests / Core (julia 1|lts, windows-latest) reds are not a DiffEqCallbacks bug. They are caused by a bug in the centralized SciML/.github tests.yml: the "Set test group env" step writes GROUP=Core to $GITHUB_ENV with bash syntax but no shell: bash, so on the PowerShell-default Windows runners $GITHUB_ENV is not expanded and GROUP is never set. runtests.jl then falls back to the default group ("All"), which on Windows runs the AD group (SciMLSensitivity) inside the Core test env, upgrading already-loaded packages mid-session and breaking precompilation. Linux/macOS (bash default) are unaffected.

Fix: SciML/.github#100 (adds shell: bash). Once that lands and v1 is retagged, the Windows Core jobs here go green with no change to this repo. (Tracked separately because this repo pins the reusable workflow at @v1 and does not control its contents.)

Please ignore until reviewed by @ChrisRackauckas

ChrisRackauckas and others added 2 commits June 19, 2026 05:13
…fEqBDF downgrade floor

Two master-CI failures, two independent fixes:

Documentation build (UndefVarError: `Euler` not defined): OrdinaryDiffEq
v7 split out the low-order RK solvers and no longer re-exports `Euler`
from the umbrella (verified: with OrdinaryDiffEq v7.0.1,
isdefined(OrdinaryDiffEq, :Euler) == false; `Euler` now lives in
OrdinaryDiffEqLowOrderRK). The docs examples in integrating.md and
uncertainty_quantification.md call `Euler()` with only `using
OrdinaryDiffEq`, so the @example blocks errored. Add
OrdinaryDiffEqLowOrderRK to docs/Project.toml and `using` it in both
pages. Higher-order solvers (Tsit5, Rodas5P, Rosenbrock23, Vern7) are
still re-exported by the umbrella and need no change.

Downgrade (Core) (MethodError: no method matching _initialize_dae! for
the NonlinearSolve-backed BrownFullBasicInit in saving_tests.jl's "fail
gracefully" DAE test): the `_initialize_dae!(..., BrownFullBasicInit{...,
GeneralizedFirstOrderAlgorithm})` dispatch is implemented in
OrdinaryDiffEqBDF and first appears in v1.7.0. The previous compat floor
"1.3.0" let the downgrade resolve OrdinaryDiffEqBDF v1.3.0, which lacks
the method, so the test errored instead of returning
ReturnCode.InitialFailure. Bisected locally on Julia 1.10: BDF 1.6.0
errors, BDF 1.7.0 passes; raise the floor to 1.7.0 (a lower-bound raise
is downgrade-safe and the repo already allows BDF v2). Verified locally
on Julia 1.10 that the fail-gracefully test returns InitialFailure with
the bumped floor, and on Julia 1.12 that the integrating.md example runs
with the docs env.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The strict Downgrade (Core) job still failed after the OrdinaryDiffEqBDF
floor bump: the "fail gracefully" DAE test in saving_tests.jl errored with a
MethodError for _initialize_dae!(..., BrownFullBasicInit{..., GeneralizedFirstOrderAlgorithm}, ::Val{false}) even with OrdinaryDiffEqBDF
v1.8.0 resolved -- so the BDF floor was not the real cause.

Root cause (reproduced locally on Julia 1.10 with the CI-resolved downgrade
stack): DiffEqBase v6.190.2's DiffEqBaseChainRulesCoreExt defines
ChainRulesCore.rrule(::typeof(numargs), f), and SciMLBase v2.146.0's
SciMLBaseChainRulesCoreExt defines the same rrule for SciMLBase.numargs. With
both floors resolved together the duplicate definition raises "Method
overwriting is not permitted during Module precompilation" while loading
DiffEqBaseChainRulesCoreExt, which fails the extension and cascades so the
OrdinaryDiffEqNonlinearSolve _initialize_dae! methods for BrownFullBasicInit
are never available -- hence the MethodError (the listed candidates were only
the OrdinaryDiffEqCore CheckInit/OverrideInit/NoInit methods).

DiffEqBase removed rrule(numargs) from its ext in v6.211.0 (verified: present
in 6.210.0, absent from 6.211.0; SciMLBase owns it now). Raising the floor to
6.211.0 drops the version range that double-defines it; SciMLBase 2.146.0 still
provides the rrule, so nothing is lost. A lower-bound raise is downgrade-safe.

Verified locally on Julia 1.10: with DiffEqBase pinned to 6.211.0 against the
CI downgrade stack (SciMLBase 2.146.0, OrdinaryDiffEqBDF 1.8.0,
OrdinaryDiffEqNonlinearSolve 1.12.0, NonlinearSolveFirstOrder 1.9.0) the stack
precompiles with no method-overwriting error and the "fail gracefully"
testset passes 4/4 (sol.retcode == ReturnCode.InitialFailure).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title Fix docs Euler import (OrdinaryDiffEq v7 split) and raise OrdinaryDiffEqBDF downgrade floor Fix docs Euler import and Downgrade (DiffEqBase rrule(numargs) floor); Windows fixed via SciML/.github#100 Jun 20, 2026
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