Repository navigation
Update MTKBase tests and compat floors for Symbolics 7.43-7.45 - #5281
Merged
ChrisRackauckas merged 4 commits intoOct 16, 2026
Merged
Conversation
Symbolics 7.43.0 (JuliaSymbolics/Symbolics.jl#2041) makes scalar `@variables x = [1, 2]` throw ArgumentError since the default no longer matches the scalar size. Declare x as a vector variable x[1:2] and assert the default via ModelingToolkitBase.getdefault. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Devin <noreply@cognition.ai> Agent-Harness: Devin CLI 3000.11.92 Agent-Model: fusion-claude-opus-5-5-high-sidekick-swe-2-medium Agent-Session: local headless Devin run (fleet master green lane; no session URL)
Symbolics 7.43.0 (JuliaSymbolics/Symbolics.jl#2042) drops \cdot after \mathrm{d}, and 7.45.0 (JuliaSymbolics/Symbolics.jl#2079) latexifies a Vector{Equation} with the align environment, rendering connect rows as `0 &= ...`. Update the 50.tex reference accordingly and raise the Symbolics compat floor to 7.45 since the new reference only matches Symbolics >= 7.45. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Devin <noreply@cognition.ai> Agent-Harness: Devin CLI 3000.11.92 Agent-Model: fusion-claude-opus-5-5-high-sidekick-swe-2-medium Agent-Session: local headless Devin run (fleet master green lane; no session URL)
The updated 50.tex reference uses `&=` align separators and `~` multiplication symbols. `&=` requires Latexify >= 0.16.5 and `mult_symbol` (which Symbolics 7.45's Latexify extension passes as `~`) only exists since Latexify 0.16.6 (korsbo/Latexify.jl#325); earlier versions ignore it and emit `\cdot`, so the reference mismatches. Verified: Symbolics 7.45.0 + Latexify 0.16.6 passes, Latexify 0.16.0 fails. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Devin <noreply@cognition.ai> Agent-Harness: Devin CLI 3000.11.92 Agent-Model: fusion-claude-opus-5-5-high-sidekick-swe-2-medium Agent-Session: local headless Devin run (fleet master green lane; no session URL)
The root Downgrade job pins Latexify to the root floor, which conflicts with the ModelingToolkitBase floor of 0.16.6. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Harness: Claude Code 2.1.300 Agent-Model: claude-opus-5-5 Claude-Session: https://claude.ai/code/session_01VZjwf7Ux9YtTzwHGHMqnsq
ChrisRackauckas
marked this pull request as ready for review
October 16, 2026 05:32
This was referenced Oct 16, 2026
This was referenced Oct 16, 2026
xtalax
added a commit
to xtalax/ModelingToolkit.jl
that referenced
this pull request
Oct 17, 2026
xtalax
added a commit
to xtalax/ModelingToolkit.jl
that referenced
this pull request
Oct 17, 2026
ChrisRackauckas
added a commit
that referenced
this pull request
Oct 17, 2026
…espacing Pulls in master's fixes for the Symbolics 7.43+ scalar-default check (variable_parsing.jl) and the Symbolics 7.45/Latexify 0.16.6 align output (latexify/50.tex) from #5281, which resolve the InterfaceI "Parsing Test" and RegressionI "Latexify recipes Test" failures seen on this branch's CI after those upstream releases. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Devin <noreply@cognition.ai> Agent-Harness: Devin CLI 3000.11.92 Agent-Model: swe-2-max Agent-Session: local Devin CLI session d2affd818d31733f9bd27d101eea94bd
ChrisRackauckas
added a commit
that referenced
this pull request
Oct 17, 2026
Brings in the Symbolics 7.45/Latexify 0.16.6 compat floors and the variable_parsing/latexify reference updates from #5281, which resolve the InterfaceI (variable_parsing.jl) and RegressionI (50.tex) failures seen on the previous CI run. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Devin <noreply@cognition.ai> Agent-Harness: Devin CLI 3000.11.92 Agent-Model: swe-2-max Agent-Session: local Devin CLI session misty-bergamot
ChrisRackauckas
referenced
this pull request
Oct 17, 2026
…5284) Bump versions: ModelingToolkitBase 1.77.5, ModelingToolkit 11.45.5 Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Agent-Harness: Claude Code 2.1.302 Agent-Model: claude-sonnet-5-5 Claude-Session: https://claude.ai/code/session_01VZjwf7Ux9YtTzwHGHMqnsq
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.
This fixes a failure on the default branch's CI. The diagnosis and the evidence below come from the investigating agent's report; "confirmed by running" and "read in logs" are kept apart there.
Four distinct failures across the three runs. Two come from Symbolics releases (fixed on the local branch), one is an MTK/SteadyStateDiffEq design issue already covered by a draft PR stack, and one is a non-deterministic segfault.
51a53cbceFix variable_parsing test for Symbolics 7.43 scalar default checkbc1ad01abUpdate latexify 50.tex for Symbolics 7.45 align output (also raisesSymbolicscompat floor to7.45)f497f76e5Raise Latexify compat floor to 0.16.6Files:
lib/ModelingToolkitBase/test/variable_parsing.jl,lib/ModelingToolkitBase/test/latexify/50.tex,lib/ModelingToolkitBase/Project.toml.1. Sublibrary CI, InterfaceI (Julia lts and 1):
Parsing TesterrorError (read in logs):
Cause: upstream release, Symbolics v7.43.0 (JuliaSymbolics/Symbolics.jl PR 2041, "Reject scalar @variables with array-shaped defaults"). The test declares a scalar
xwith default[1, 2], which Symbolics now rejects on purpose. That makes the old test expectation wrong: a scalar variable with a vector default is invalid input.collect_vars!change. The manifest diff shows Symbolics 7.42.0 -> 7.43.0, plus unrelated LazyArrays, Atomix and UnsafeAtomics bumps. Symbolics 7.43.0 was published 2026-10-05T21:45Z, between the two runs.julia +release1.13.2 and Symbolics 7.45.0,variable_parsing.jlfails with the same ArgumentError.Existing PR: #5247 by ChrisRackauckas-Claude, draft. It has the correct test change, but its CI is red: the latexify failure (section 2) is still present on it, and its last run had jobs timing out or cancelled. On its own it does not turn master green.
Fix (commit
51a53cbce, the same diff as PR 5247): both declarations becomex[1:2] = [1, 2]with the sameconnect/unitmetadata, and the assertions use the publicModelingToolkitBase.getdefault(x) == [1, 2]. The metadata coverage stays the same.LoadError: ArgumentError: Variable x must have default of matching size. Got [1, 2] with size (2,)., 0 passed, 1 errored.julia +release, Symbolics 7.45.0).julia +lts1.10.12, Symbolics pinned to 7.45.0).2. Sublibrary CI, RegressionI (Julia lts and 1):
Latexify recipes Testreference mismatchError (read in logs):
Cause: upstream releases. Symbolics v7.43.0 (JuliaSymbolics/Symbolics.jl PR 2042) stops leaking
mult_symbolafter\mathrm{d}. Symbolics v7.45.0 (JuliaSymbolics/Symbolics.jl PR 2079) renders everyVector{Equation}inalignand shows connect/AnalysisPoint rows as0 &= .... Both are deliberate rendering changes. The new output (aligned&=, no doubled\mathrm{\mathtt{..}}) is the intended form, so the old reference is stale.50.tex.Symbolics 7.41.1andLatexify 0.16.0, the floors. With those versions the old 50.tex passes, which is why downgrade RegressionI is green on master. Updating the reference therefore requires raising both floors. The PR 5250 and PR 5263 runs show downgrade RegressionI failing for exactly this reason.julia +lts, Symbolics 7.45.0 and Latexify 0.16.0, the new 50.tex fails (=&instead of&=,\cdotinstead of~). Latexify versions below 0.16.6 ignore themult_symbolkwarg that Symbolics' Latexify extension passes (korsbo/Latexify.jl PR 325, first released in 0.16.6). With Latexify 0.16.6 and Symbolics 7.45.0 on lts it passes.Existing PRs: #5250 (Symbolics PR 2042 refs) and #5263 (stacked on 5250; Symbolics PR 2079 refs), both by ChrisRackauckas-Claude, draft, CI red. The net 50.tex in PR 5263 is correct and is byte-identical to the CI "actual" output. Neither PR bumps compat, so with them the Downgrade RegressionI job would turn red. They do not fix master on their own.
Fix (commits
bc1ad01abandf497f76e5): 50.tex is set to the net content of PR 5263. Inlib/ModelingToolkitBase/Project.toml,Symbolics = "7.41.1"becomes"7.45"andLatexify = "0.16"becomes"0.16.6". Symbolics 7.45 needs SymbolicUtils >= 4.46.4, and the Downgrade resolver already picks 4.46.4 today, so the resolve still works.Reference Test for "50.tex" failed, 1 errored.julia +release, Symbolics 7.45.0, Latexify 0.16.12).julia +lts, Symbolics 7.45.0 + Latexify 0.16.6 pinned).Full-group verification of the branch (confirmed by running,
julia +release,Pkg.test()inlib/ModelingToolkitBase)GROUP=InterfaceI:InterfaceI | 1803 Pass, 5 Broken, 1808 Total, 10m29.8s, "tests passed". The 5 broken tests were already marked broken; none were added.GROUP=RegressionI:Latexify recipes Test | 5 5, "tests passed".--checkonvariable_parsing.jl: clean.typoson the changed files: clean.julia-downgrade-compatresolve), QA, other groups, andjulia pre. The floors were checked by pinning, not by the downgrade action.latexify/10.tex–40.texare not tracked in git, as on master. ReferenceTests creates them on each run, and they were deleted, not committed.3. IntegrationTest,
SciMLBase.jl/SymbolicIndexingInterface/1/: BoundsError on a steady-state solutionError (read in logs):
Cause: a bug in this repo's SteadyStateProblem SCC lowering combined with SteadyStateDiffEq (read in logs plus code reading; not reproduced locally). The failing object is the second
NonlinearSolutionin the list,sssol = solve(ssprob, DynamicSS(Tsit5()))on the 2-stateosys. Itsstate_valueshas length 1. That matches SciML/SteadyStateDiffEq.jl#171: since SteadyStateDiffEq 2.18 (PR 169) together with MTK 11.45 (MTK PRs 5155/5163, thelowered_problem/steady_state_sccprobpath insrc/problems/sccnonlinearproblem.jl),solve(::SteadyStateProblem)returns the solution of themtkcompiled lowered problem. That solution has reduced, reordered unknowns, not the original problem's layout.TypeError: expected ParameterBindingsGraph, got Nothingin_sccprob, thenFieldError: SCCNonlinearProblem has no field u0(through 2026-10-10, both errors frominit(ssprob, DynamicSS)). SciMLBase SciML/SciMLBase.jl@c8ea9caea (PR 1635, 2026-10-10) dropped thatinit, and since then the job gets further and fails with the BoundsError (first seen in run 38100651261, job 114355712788). It is not a flake: it fails on every master run.SCCSteadyStateProblem. A local patch would conflict with that, so I made no change on the branch.Existing PRs (a three-PR draft stack; CI cannot pass until the upstream PRs are released):
SCCSteadyStateProblem.I have not verified that the stack fixes this particular SII test. The stack's description says plain
SteadyStateProblemsolves no longer go through the lowering, which should restoresol.uto the problem's order.4. Downgrade Sublibraries,
downgrade-mtkbase (InterfaceI): segfault in Sundials KINSOLError (read in logs):
Cause: flaky (non-deterministic native segfault), read in logs, not reproduced locally.
downgrade-mtkbase (InterfaceI)job on 2026-10-14 15:50. That run merged into the same master and touched only50.tex. It resolved a byte-identical package set (284 entries,diffempty against the failing job), and it passed: https://github.com/SciML/ModelingToolkit.jl/actions/runs/38592893007/job/115952340831 .downgrade-mtkbase (Optimization). That job passes in the 2026-10-14 run, after aea9c2e.odesystem.jl'sprob4/prob5IDA solves with Sundials 6.5.0 on Julia 1.10.Links
Nothing was pushed, commented, or opened.
ghwas used read-only.🤖 Posted by an AI agent — harness: Devin CLI 3000.11.92 (fix), Claude Code 2.1.300 (PR) · model: fusion-claude-opus-5-5-high-sidekick-swe-2-medium / claude-opus-5-5
Conversation: https://claude.ai/code/session_01VZjwf7Ux9YtTzwHGHMqnsq (fleet master)
🤖 Generated with Claude Code
Independent review (added by the fleet master)
Risk assessment
🤖 Section added by an AI agent — harness: Claude Code 2.1.300 · model: claude-opus-5-5 (review by codex-cli, gpt-6.1-sol)
Conversation: https://claude.ai/code/session_01VZjwf7Ux9YtTzwHGHMqnsq