SciML / SciML/PDESystemLibrary.jl

[CI Broken] Dependency resolution failures and MethodError in MethodOfLines tests

Open
#39 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Julia
Stars
26
Forks
6
Avg merge
4h 21m
Merged PRs (30d)
11

Description

CI Status: BROKEN

The master branch is currently failing CI checks. This was detected during an automated CI health check.

Test PR: #38
Failed CI Run: https://github.com/SciML/PDESystemLibrary.jl/actions/runs/20799079910


Summary

CI is broken due to two distinct issues:

  1. Dependency resolution failure in the alldeps test (Julia 1.10)
  2. MethodError in all MethodOfLines tests across all Julia versions (1, lts, pre)

Issue 1: Dependency Resolution Failure (alldeps test)

Failed Job: test (alldeps, 1.10)
Duration: 51 seconds
Log: https://github.com/SciML/PDESystemLibrary.jl/actions/runs/20799079912/job/59739857080

Error Details
ERROR: LoadError: Unsatisfiable requirements detected for package MethodOfLines [94925ecb]:
 MethodOfLines [94925ecb] log:
 ├─possible versions are: 0.1.0-0.11.9 or uninstalled
 ├─restricted to versions * by project [427c309f], leaving only versions: 0.1.0-0.11.9
 ├─restricted by compatibility requirements with Symbolics [0c5d862f] to versions: [0.8.3-0.8.4, 0.9.0-0.11.0] or uninstalled
 │ └─Symbolics [0c5d862f] log:
 │   ├─possible versions are: 0.1.0-7.5.0 or uninstalled
 │   └─restricted to versions 5.25.2 by an explicit requirement, leaving only versions: 5.25.2
 └─restricted by compatibility requirements with ModelingToolkit [961ee093] to versions: uninstalled — no versions left
   └─ModelingToolkit [961ee093] log:
     ├─possible versions are: 0.0.1-11.5.1 or uninstalled
     ├─restricted to versions 9-11 by project [427c309f], leaving only versions: 9.0.0-11.5.1
     └─restricted to versions 9.0.0 by an explicit requirement, leaving only versions: 9.0.0
Root Cause

The alldeps downgrade test is attempting to find the minimum compatible versions but encounters an unsatisfiable dependency constraint:

  • The downgrade resolver selected Symbolics 5.25.2 and ModelingToolkit 9.0.0
  • These versions are incompatible with any version of MethodOfLines
  • MethodOfLines compatible with Symbolics 5.25.2 requires a newer ModelingToolkit (>9.0.0)
  • This indicates the compat bounds in Project.toml may be too loose or there's a gap in the dependency graph

Issue 2: MethodError in MethodOfLines Tests

Failed Jobs:

Duration: ~28 minutes each

Error Details

All MOL examples are failing with the same error pattern:

Example: heat_1d1: Error During Test at /home/runner/work/PDESystemLibrary.jl/PDESystemLibrary.jl/test/mol_test.jl:10
  Got exception outside of a @test
  MethodError: Cannot `convert` an object of type 
    Pair{Symbolics.Num, Float64} to an object of type 
    SymbolicUtils.Symbolic
  The function `convert` exists, but no method is defined for this combination of argument types.
  
  Stacktrace:
    [1] setindex!(h::Dict{SymbolicUtils.Symbolic, Nothing}, v0::Nothing, key0::Pair{Symbolics.Num, Float64})
      @ Base ./dict.jl:346
    [2] push!(s::Set{SymbolicUtils.Symbolic}, x::Pair{Symbolics.Num, Float64})
      @ Base ./set.jl:137
    [3] ModelingToolkit.TearingState(sys::ModelingToolkit.System; quick_cancel::Bool, check::Bool, sort_eqs::Bool)
      @ ModelingToolkit ~/.julia/packages/ModelingToolkit/Ay2JZ/src/systems/systemstructure.jl:377
Root Cause

This appears to be a type incompatibility introduced by recent changes in ModelingToolkit or Symbolics:

  • The code is trying to insert a Pair{Symbolics.Num, Float64} into a Set{SymbolicUtils.Symbolic}
  • The conversion from Pair{Symbolics.Num, Float64} to SymbolicUtils.Symbolic is not defined
  • This is happening during the TearingState construction in ModelingToolkit's structural transformation

This suggests either:

  1. An upstream breaking change in ModelingToolkit or Symbolics that PDESystemLibrary hasn't adapted to
  2. The systems in this library are passing parameters in a format that's no longer supported

Affected Tests

Passing:

  • ✅ test (NeuralPDE, 1)
  • ✅ test (NeuralPDE, lts)
  • ✅ test (NeuralPDE, pre)
  • ✅ Spell Check with Typos
  • ✅ build

Failing:

  • ❌ test (MOL, 1)
  • ❌ test (MOL, lts)
  • ❌ test (MOL, pre)
  • ❌ test (alldeps, 1.10)

Suggested Fix Approach

For Issue 1 (alldeps):
  1. Review the compat bounds in Project.toml for ModelingToolkit, Symbolics, and MethodOfLines
  2. Tighten the lower bounds if necessary to ensure a valid dependency resolution exists
  3. Consider whether the minimum versions are actually being tested in practice
For Issue 2 (MethodError):
  1. Check recent releases of ModelingToolkit and Symbolics for breaking changes
  2. Review how PDESystem parameters are being passed (look for D => 1.0 style pairs)
  3. May need to update the parameter specification format in the library systems
  4. Coordinate with ModelingToolkit team if this is an upstream issue

Additional Information

  • Detection Date: 2026-01-07
  • All failures are reproducible across multiple Julia versions
  • NeuralPDE tests pass, suggesting the issue is specific to MethodOfLines integration

cc @ChrisRackauckas

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review Project.toml compatibility bounds and rerun the alldeps job; then inspect test/mol_test.jl and the reported TearingState stack trace while reproducing the MOL jobs across Julia versions. Done means dependency resolution succeeds and all MOL tests pass in the affected matrix, with the local-versus-upstream cause established.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, julia
Domain
build-system, ci-cd, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.