NonlinearSolve.jl master downstream IntegrationTest has repeated ModelingToolkit failures on Julia 1.12 in the Optimization/dynamic optimization path. This was first noticed while checking SciML/NonlinearSolve.jl#1012, but it also occurs on the immediately preceding NonlinearSolve master commit, so it does not appear to be caused by that PR.
CI evidence:
Representative failures from the pre-#1012 master run logs:
InfiniteInterpolations extension precompile/load error:
ArgumentError: Package Interpolations [a98d9a8b-a2ab-59e6-89dd-64a1c18fca59] is required but does not seem to be installed
- source path:
~/.julia/packages/InfiniteOpt/aM7Wg/ext/InfiniteInterpolations.jl:5
- seen in InterfaceI, InterfaceII, and Initialization logs while running the ModelingToolkit downstream job.
- Dynamic optimization CasADi error:
TypeError: non-boolean (CasADi.MX) used in boolean context
- stack includes
Base.isequal(x::CasADi.MX, y::Int64), SymbolicUtils ... hashconsing.jl, WeakCacheSets ... WeakCacheSets.jl, and ModelingToolkitBase/src/systems/optimal_control_interface.jl:471 in add_cost_function!.
- failing test locations varied by shard, e.g.
lib/ModelingToolkitBase/test/optimization/dynamic_optimization.jl:434, :607.
Resolved versions in the failing CI logs included:
- Julia 1.12.6
- ModelingToolkit v11.31.0 from checkout, ModelingToolkitBase v1.51.0 from
lib/ModelingToolkitBase
- SymbolicUtils v4.38.1
- WeakCacheSets v0.1.0
- CasADi v1.2.0
- InfiniteOpt v0.6.3
- DataInterpolations v8.10.0
- Interpolations v0.16.3 was installed/precompiled earlier in the job, but the InfiniteOpt extension later reported it as missing.
Local reproduction attempt that did not reproduce:
# separate clean checkout, NonlinearSolve pre-#1012 master commit 978a718a
# ModelingToolkit checkout at 3239ad1184c38d26e62ce8f0e80b1c623e22574d
env JULIA_DEPOT_PATH=/home/crackauc/sandbox/tmp_20260708_073226_7642/julia-depot-repro \
JULIA_PKG_SERVER_REGISTRY_PREFERENCE=eager \
GROUP=Optimization \
timeout 3600 \
/home/crackauc/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/bin/julia \
--color=yes --project=downstream \
-e 'using Pkg; Pkg.develop(PackageSpec(path=".")); Pkg.update(); Pkg.test(coverage=false)'
Local result:
Test Summary: | Pass Broken Total Time
Optimization | 156 1 157 19m31.8s
Testing ModelingToolkit tests passed
So this may be CI-environment/order/cache sensitive rather than a straightforward deterministic failure from the NonlinearSolve source tree. A plain NonlinearSolve commit bisect is not valid because the same NonlinearSolve commit can resolve/run against changing downstream package state, and the targeted local reproduction did not fail even with the versions listed above.
What would help next:
- Check whether the downstream CI job is running a different group/order than
GROUP=Optimization despite the dynamic optimization failure appearing under InterfaceI/InterfaceII labels.
- Capture or preserve the exact temp test environment manifest from a failing CI job.
- Investigate why
InfiniteOpt's InfiniteInterpolations extension can be requested when Interpolations is not visible in the active environment.
- Investigate whether
SymbolicUtils/hashconsing should guard isequal on CasADi.MX values whose equality returns a symbolic MX rather than Bool.
NonlinearSolve.jl master downstream IntegrationTest has repeated ModelingToolkit failures on Julia 1.12 in the Optimization/dynamic optimization path. This was first noticed while checking SciML/NonlinearSolve.jl#1012, but it also occurs on the immediately preceding NonlinearSolve master commit, so it does not appear to be caused by that PR.
CI evidence:
Representative failures from the pre-#1012 master run logs:
InfiniteInterpolationsextension precompile/load error:ArgumentError: Package Interpolations [a98d9a8b-a2ab-59e6-89dd-64a1c18fca59] is required but does not seem to be installed~/.julia/packages/InfiniteOpt/aM7Wg/ext/InfiniteInterpolations.jl:5TypeError: non-boolean (CasADi.MX) used in boolean contextBase.isequal(x::CasADi.MX, y::Int64),SymbolicUtils ... hashconsing.jl,WeakCacheSets ... WeakCacheSets.jl, andModelingToolkitBase/src/systems/optimal_control_interface.jl:471inadd_cost_function!.lib/ModelingToolkitBase/test/optimization/dynamic_optimization.jl:434,:607.Resolved versions in the failing CI logs included:
lib/ModelingToolkitBaseLocal reproduction attempt that did not reproduce:
Local result:
So this may be CI-environment/order/cache sensitive rather than a straightforward deterministic failure from the NonlinearSolve source tree. A plain NonlinearSolve commit bisect is not valid because the same NonlinearSolve commit can resolve/run against changing downstream package state, and the targeted local reproduction did not fail even with the versions listed above.
What would help next:
GROUP=Optimizationdespite the dynamic optimization failure appearing under InterfaceI/InterfaceII labels.InfiniteOpt'sInfiniteInterpolationsextension can be requested whenInterpolationsis not visible in the active environment.SymbolicUtils/hashconsing should guardisequalonCasADi.MXvalues whose equality returns a symbolicMXrather thanBool.