Repository navigation
Raise SymbolicIndexingInterface compat lower bound to 0.3.47 - #5153
Merged
ChrisRackauckas merged 1 commit intoSep 14, 2026
Merged
ChrisRackauckas merged 1 commit into
ChrisRackauckas merged 1 commit into
Conversation
Indexing an array unknown on a `complete`d system (`prob[x]`, `sol[x]`)
goes through `SymbolicIndexingInterface._getsym(::ArraySymbolic)`. Before
SymbolicIndexingInterface 0.3.47 that path recursed into
`getsym(sys, ::Vector{Int})`, which calls `is_observed(sys, ::Int)` for each
index and ends in `parameter_index(::IndexCache, ::Int)`, a method that does
not exist, so the fallback errors with
`MethodError: no method matching symbolic_container(::IndexCache)`.
0.3.47 builds `GetStateIndex(idx)` directly and never takes that path.
This only shows on the downgrade jobs, which resolve the lowest allowed
version (0.3.46).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Agent-Harness: Claude Code
Agent-Model: claude-fable-5-1
Agent-Session: https://claude.ai/code/session_01VorhgJYhDasyVLpGNrviga
Claude-Session: https://claude.ai/code/session_01VorhgJYhDasyVLpGNrviga
ChrisRackauckas
marked this pull request as ready for review
September 14, 2026 10:20
ChrisRackauckas
added a commit
that referenced
this pull request
Sep 14, 2026
- Document the PDE solution interface shared by discretizers (#5149) - Point the docs `ModelingToolkit` source at the repository root (#5152) - Unify array-equation support behind a capability trait; fold in #5101 ODE support and MultiObjectiveOptimizationFunction (#5148) - Raise SymbolicIndexingInterface compat lower bound to 0.3.47 (#5153) - Compare `complete` and `mtkcompile` array-unknown problems through symbolic indices (#5154) Agent-Harness: Claude Code Agent-Model: claude-opus-5[1m] Claude-Session: https://claude.ai/code/session_014FEzNTLFutCmTEAZ3zBg5R Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed and why
Raises the
SymbolicIndexingInterfacecompat lower bound to0.3.47inlib/ModelingToolkitBase/Project.toml(was0.3.39) and the rootProject.toml(was0.3.46). Nothing else changes.#5131 added the testsets "Array unknowns on a
completed system" tolib/ModelingToolkitBase/test/odesystem.jlandtest/sdesystem.jl. They index an array unknown on acompleted (non-scalarized) system (prob[x],sol[x]). With SymbolicIndexingInterface ≤ 0.3.46,_getsym(sys, ::ArraySymbolic, ...)recurses intogetsym(sys, idx::Vector{Int}), which callsis_observed(sys, ::Int)for every index.variable_symbols(csys)on acompleted system is[x, w](length 2), so index 3 is not "a variable",is_observedcontinues toparameter_index(sys, 3)→parameter_index(::IndexCache, ::Int), which has no method, and the SII fallback fails withMethodError: no method matching symbolic_container(::ModelingToolkitBase.IndexCache). SymbolicIndexingInterface 0.3.47 (SciML/SymbolicIndexingInterface.jl@373e18ee9, "Avoid recursive getsym call") returnsGetStateIndex(idx)directly and never takes that path. Regular CI resolves 0.3.55 and passes; only the downgrade jobs, which resolve the floor (0.3.46), hit it.Noticed on #5148, which does not touch these tests. It is a master failure:
Downgrade Sublibrariesrun for 444ccfb (https://github.com/SciML/ModelingToolkit.jl/actions/runs/34779646406):downgrade-mtkbase (InterfaceII)(https://github.com/SciML/ModelingToolkit.jl/actions/runs/34779646406/job/103820901951) errors atsdesystem.jl:1239,1249;downgrade-mtkbase (InterfaceI)(https://github.com/SciML/ModelingToolkit.jl/actions/runs/34779646406/job/103820890316) errors atodesystem.jl:1788,1793,1803,1820, all with thisMethodError.Downgrade / Downgrade Tests - InterfaceIfor 444ccfb (https://github.com/SciML/ModelingToolkit.jl/actions/runs/34779646422/job/103784179636): same fourodesystem.jlerrors.Verification (Julia 1.10.11, local
Pkg.developoflib/ModelingToolkitBasewith the downgrade job's versions pinned: SciMLBase 3.54.0, SymbolicUtils 4.37.0, Symbolics 7.37.0, DiffEqBase 7.18.1, StochasticDiffEq 7.1.3, OrdinaryDiffEq 7.8.1)The scripts are the "Array unknowns on a
completed system" testsets extracted verbatim fromtest/sdesystem.jlandtest/odesystem.jl(plus apkgversionprint).Before (master
444ccfb0,SymbolicIndexingInterfacepinned to0.3.46):After (this branch;
Pkg.free+Pkg.add(name="SymbolicIndexingInterface", version="0.3.47")+Pkg.pin, everything else unchanged):The whole
lib/ModelingToolkitBase/test/sdesystem.jlalso passes in the same after-environment (included directly; 16 top-level testsets, no failures, no errors):typosand Runic report nothing on the two changed files.Not verified
Downgrade/Downgrade Sublibrariesworkflows locally, only the affected testsets andsdesystem.jlwith the job's pinned versions.odesystem.jlfile with SII 0.3.47 (only its "Array unknowns on acompleted system" testset, 24/24).Downgrade Sublibraries (InterfaceI)job for 444ccfb also has two unrelated errors intest/array_equation_dae.jl:60,118(a parameter-despecialization barrier requires exactly one parameter wrapper, thrown in DiffEqBase 7.18.1solve.jl:842). They are not touched by this PR; that file is unchanged since 2026-08-17 and the previous green master run resolved DiffEqBase 7.15.0, so it looks like a DiffEqBase-floor issue that surfaced when the resolver moved to 7.18.1.mprob.u0 ≈ prob.u0/mprob.f(...) ≈ prob.f(...)comparisons in the same testsets fail on the regulartests / InterfaceIandInterfaceIIjobs for 444ccfb (https://github.com/SciML/ModelingToolkit.jl/actions/runs/34779646543). That is a separate regression from Support array unknowns on acompleted system for every problem type #5131 (unknown order aftermtkcompile), handled in Compare complete/mtkcompile array-unknown problems through symbolic indices #5154.🤖 Generated with Claude Code (model: claude-fable-5-1)
https://claude.ai/code/session_01VorhgJYhDasyVLpGNrviga