Skip to content

Fix v7 CI: eachindex(sol.u) in dense_tests; path-source DiffEqDevTools in DelayDiffEq#3446

Merged
ChrisRackauckas merged 1 commit intoSciML:v7from
ChrisRackauckas-Claude:fix-v7-dense-iter-and-dde-devtools-source
Apr 16, 2026
Merged

Fix v7 CI: eachindex(sol.u) in dense_tests; path-source DiffEqDevTools in DelayDiffEq#3446
ChrisRackauckas merged 1 commit intoSciML:v7from
ChrisRackauckas-Claude:fix-v7-dense-iter-and-dde-devtools-source

Conversation

@ChrisRackauckas-Claude
Copy link
Copy Markdown
Contributor

Summary

Two real (non-runner-flake) v7 failures on 329b3cec36.

test/regression/ode_dense_tests.jl (fixes Regression_I 1 / 1.11 / pre)

Under RecursiveArrayTools v4 eachindex(sol2) returns CartesianIndices over the full solution tensor (u_dims..., nsteps), not 1:nsteps as it did under v3. The follow-up sol2.u[i] / interpolation_results_2d[i] then tries a 3-index lookup into Vector{Matrix{Float64}} and throws:

BoundsError: attempt to access 17-element Vector{Matrix{Float64}} at index [1, 2, 1]

Iterate eachindex(sol2.u) — that still gives Base.OneTo(nsteps), which is what the per-timestep test actually wants. Locally reproduced on v7 HEAD with RAT v4:

eachindex(sol2)    = CartesianIndices((4, 2, 17))
eachindex(sol2.u)  = Base.OneTo(17)

lib/DelayDiffEq/Project.toml (fixes DelayDiffEq_{Integrators,Interface,QA,Regression} on 1 / 1.11 / pre)

The DelayDiffEq test target develops StochasticDiffEqLowOrder from path, which now pins RecursiveArrayTools = "4". Every registered DiffEqDevTools version declares RecursiveArrayTools < 4, so Pkg errors with:

Unsatisfiable requirements detected for package DiffEqDevTools [f3b72e0c]:
  ├─restricted to versions 2.44.4 - 2 by project
  └─restricted by compatibility requirements with RecursiveArrayTools to versions: uninstalled

Add DiffEqDevTools = {path = "../DiffEqDevTools"} to lib/DelayDiffEq/Project.toml's [sources]. The in-repo lib/DiffEqDevTools already declares RecursiveArrayTools = "4" and SciMLBase = "3", so path-sourcing unblocks the resolve.

Scope intentionally narrow: 38 other sublibraries list DiffEqDevTools in [extras] without a path source and are still passing CI because their test envs don't pull in a path package that forces RAT v4. Those can migrate as needed when registered SciMLBase-v3 DiffEqDevTools lands.

Out of scope / upstream-blocked on this v7 tip

  • test (DiffEqBase_Downstream{,2}), DiffEqBase_ModelingToolkit, DiffEqBase_SundialsUnsatisfiable on MultiScaleArrays / ModelingToolkit / Sundials / OrdinaryDiffEq restricted by RAT v4; waiting on upstream bumps.
  • benchmark (1/lts) — AirspeedVelocity-can't-resolve-unregistered-subpackages.
  • test (AD, 1.11 / lts) — pre-existing Mooncake / DifferentiationInterface conflict.
  • lts-only failures — ignoring per discussion.
  • InterfaceIV, pre, and most of the scattered *, pre failures — self-hosted runner registry corruption (rm General: ENOTEMPTY, missing Package.toml); retry clears.

Test plan

  • Regression_I passes on 1 / 1.11 / pre
  • DelayDiffEq_* groups resolve and run on 1 / 1.11 / pre

🤖 Generated with Claude Code

…ools in DelayDiffEq

- test/regression/ode_dense_tests.jl

  Under RecursiveArrayTools v4 `eachindex(sol2)` returns the
  CartesianIndices over the full solution tensor (u_dims..., nsteps),
  not the 1:nsteps range it returned under v3. `sol2.u[i]` /
  `interpolation_results_2d[i]` then tried a 3-index lookup into
  `Vector{Matrix{Float64}}` and threw `BoundsError [i, j, k]`. Iterate
  `eachindex(sol2.u)` instead to drive the per-timestep comparison the
  test actually means. Fixes the Dense Tests errors in Regression_I on
  1/1.11/pre.

- lib/DelayDiffEq/Project.toml

  Add `DiffEqDevTools = {path = "../DiffEqDevTools"}` to `[sources]`.
  DelayDiffEq's test target pulls in path-sourced StochasticDiffEqLowOrder
  which now pins RecursiveArrayTools v4 (via the v7 SciMLBase/RAT bump).
  All currently-registered DiffEqDevTools versions restrict RAT to < 4, so
  the env fails to resolve with ``Unsatisfiable requirements detected for
  package DiffEqDevTools [f3b72e0c]: restricted by compatibility
  requirements with RecursiveArrayTools to versions: uninstalled``. The
  local lib/DiffEqDevTools already declares RAT 4 and SciMLBase 3, so
  path-sourcing it unblocks the resolve on all four DelayDiffEq test
  groups (Integrators / Interface / QA / Regression).

Scope intentionally narrow: other sublibraries that list DiffEqDevTools
in [extras] without [sources] still pass CI because their test envs
don't pull in a path package that forces RAT 4; they can be migrated
later as the registered SciMLBase-v3 DiffEqDevTools lands.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude force-pushed the fix-v7-dense-iter-and-dde-devtools-source branch from 4c6868a to 29cd4e2 Compare April 16, 2026 04:12
@ChrisRackauckas ChrisRackauckas merged commit c542269 into SciML:v7 Apr 16, 2026
21 of 97 checks passed
ChrisRackauckas added a commit that referenced this pull request Apr 16, 2026
…ools in DelayDiffEq (#3446)

- test/regression/ode_dense_tests.jl

  Under RecursiveArrayTools v4 `eachindex(sol2)` returns the
  CartesianIndices over the full solution tensor (u_dims..., nsteps),
  not the 1:nsteps range it returned under v3. `sol2.u[i]` /
  `interpolation_results_2d[i]` then tried a 3-index lookup into
  `Vector{Matrix{Float64}}` and threw `BoundsError [i, j, k]`. Iterate
  `eachindex(sol2.u)` instead to drive the per-timestep comparison the
  test actually means. Fixes the Dense Tests errors in Regression_I on
  1/1.11/pre.

- lib/DelayDiffEq/Project.toml

  Add `DiffEqDevTools = {path = "../DiffEqDevTools"}` to `[sources]`.
  DelayDiffEq's test target pulls in path-sourced StochasticDiffEqLowOrder
  which now pins RecursiveArrayTools v4 (via the v7 SciMLBase/RAT bump).
  All currently-registered DiffEqDevTools versions restrict RAT to < 4, so
  the env fails to resolve with ``Unsatisfiable requirements detected for
  package DiffEqDevTools [f3b72e0c]: restricted by compatibility
  requirements with RecursiveArrayTools to versions: uninstalled``. The
  local lib/DiffEqDevTools already declares RAT 4 and SciMLBase 3, so
  path-sourcing it unblocks the resolve on all four DelayDiffEq test
  groups (Integrators / Interface / QA / Regression).

Scope intentionally narrow: other sublibraries that list DiffEqDevTools
in [extras] without [sources] still pass CI because their test envs
don't pull in a path package that forces RAT 4; they can be migrated
later as the registered SciMLBase-v3 DiffEqDevTools lands.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ChrisRackauckas added a commit that referenced this pull request Apr 16, 2026
…ools in DelayDiffEq (#3446)

- test/regression/ode_dense_tests.jl

  Under RecursiveArrayTools v4 `eachindex(sol2)` returns the
  CartesianIndices over the full solution tensor (u_dims..., nsteps),
  not the 1:nsteps range it returned under v3. `sol2.u[i]` /
  `interpolation_results_2d[i]` then tried a 3-index lookup into
  `Vector{Matrix{Float64}}` and threw `BoundsError [i, j, k]`. Iterate
  `eachindex(sol2.u)` instead to drive the per-timestep comparison the
  test actually means. Fixes the Dense Tests errors in Regression_I on
  1/1.11/pre.

- lib/DelayDiffEq/Project.toml

  Add `DiffEqDevTools = {path = "../DiffEqDevTools"}` to `[sources]`.
  DelayDiffEq's test target pulls in path-sourced StochasticDiffEqLowOrder
  which now pins RecursiveArrayTools v4 (via the v7 SciMLBase/RAT bump).
  All currently-registered DiffEqDevTools versions restrict RAT to < 4, so
  the env fails to resolve with ``Unsatisfiable requirements detected for
  package DiffEqDevTools [f3b72e0c]: restricted by compatibility
  requirements with RecursiveArrayTools to versions: uninstalled``. The
  local lib/DiffEqDevTools already declares RAT 4 and SciMLBase 3, so
  path-sourcing it unblocks the resolve on all four DelayDiffEq test
  groups (Integrators / Interface / QA / Regression).

Scope intentionally narrow: other sublibraries that list DiffEqDevTools
in [extras] without [sources] still pass CI because their test envs
don't pull in a path package that forces RAT 4; they can be migrated
later as the registered SciMLBase-v3 DiffEqDevTools lands.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ChrisRackauckas added a commit that referenced this pull request Apr 16, 2026
…ools in DelayDiffEq (#3446)

- test/regression/ode_dense_tests.jl

  Under RecursiveArrayTools v4 `eachindex(sol2)` returns the
  CartesianIndices over the full solution tensor (u_dims..., nsteps),
  not the 1:nsteps range it returned under v3. `sol2.u[i]` /
  `interpolation_results_2d[i]` then tried a 3-index lookup into
  `Vector{Matrix{Float64}}` and threw `BoundsError [i, j, k]`. Iterate
  `eachindex(sol2.u)` instead to drive the per-timestep comparison the
  test actually means. Fixes the Dense Tests errors in Regression_I on
  1/1.11/pre.

- lib/DelayDiffEq/Project.toml

  Add `DiffEqDevTools = {path = "../DiffEqDevTools"}` to `[sources]`.
  DelayDiffEq's test target pulls in path-sourced StochasticDiffEqLowOrder
  which now pins RecursiveArrayTools v4 (via the v7 SciMLBase/RAT bump).
  All currently-registered DiffEqDevTools versions restrict RAT to < 4, so
  the env fails to resolve with ``Unsatisfiable requirements detected for
  package DiffEqDevTools [f3b72e0c]: restricted by compatibility
  requirements with RecursiveArrayTools to versions: uninstalled``. The
  local lib/DiffEqDevTools already declares RAT 4 and SciMLBase 3, so
  path-sourcing it unblocks the resolve on all four DelayDiffEq test
  groups (Integrators / Interface / QA / Regression).

Scope intentionally narrow: other sublibraries that list DiffEqDevTools
in [extras] without [sources] still pass CI because their test envs
don't pull in a path package that forces RAT 4; they can be migrated
later as the registered SciMLBase-v3 DiffEqDevTools lands.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ChrisRackauckas-Claude pushed a commit to ChrisRackauckas-Claude/OrdinaryDiffEq.jl that referenced this pull request Apr 16, 2026
- test/regression/ode_dense_tests.jl line 69: second `eachindex(sol2)`
  instance (1D linear problem loop) that was missed by SciML#3446. Same RAT v4
  issue — `eachindex(sol)` now returns CartesianIndices, use
  `eachindex(sol2.u)` for the per-timestep iteration.

- lib/OrdinaryDiffEqStabilizedRK/src/rkc_perform_step.jl lines 1191 and
  1323: `integrator.EEst = ...` throws `FieldError` since SciML#3422 moved
  EEst from the integrator struct to the controller cache. Replace with
  `OrdinaryDiffEqCore.set_EEst!(integrator, ...)` matching every other
  sublibrary.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ChrisRackauckas added a commit that referenced this pull request Apr 16, 2026
…3457)

- test/regression/ode_dense_tests.jl line 69: second `eachindex(sol2)`
  instance (1D linear problem loop) that was missed by #3446. Same RAT v4
  issue — `eachindex(sol)` now returns CartesianIndices, use
  `eachindex(sol2.u)` for the per-timestep iteration.

- lib/OrdinaryDiffEqStabilizedRK/src/rkc_perform_step.jl lines 1191 and
  1323: `integrator.EEst = ...` throws `FieldError` since #3422 moved
  EEst from the integrator struct to the controller cache. Replace with
  `OrdinaryDiffEqCore.set_EEst!(integrator, ...)` matching every other
  sublibrary.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.6 (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